From f83bb38a24e0d856a8709208d8f88a6790b43458 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@gmail.com> Date: Mon, 13 May 2024 17:51:04 +0200 Subject: [PATCH 01/44] setup project (react & bootstrap & openAPI & eslint) --- react-ui/.gitignore | 26 + react-ui/README.md | 11 + react-ui/eslint.config.js | 40 + react-ui/package.json | 47 + react-ui/public/favicon.ico | Bin 0 -> 3870 bytes react-ui/public/index.html | 43 + react-ui/public/logo192.png | Bin 0 -> 5347 bytes react-ui/public/logo512.png | Bin 0 -> 9664 bytes react-ui/public/manifest.json | 25 + react-ui/public/robots.txt | 3 + react-ui/scripts/build-api.sh | 10 + react-ui/src/App.css | 40 + react-ui/src/App.js | 27 + react-ui/src/App.test.js | 9 + react-ui/src/index.css | 13 + react-ui/src/index.js | 18 + react-ui/src/logo.svg | 1 + react-ui/src/reportWebVitals.js | 13 + react-ui/src/setupTests.js | 5 + react-ui/yarn.lock | 10081 ++++++++++++++++++++++++++++++ 20 files changed, 10412 insertions(+) create mode 100644 react-ui/.gitignore create mode 100644 react-ui/README.md create mode 100644 react-ui/eslint.config.js create mode 100644 react-ui/package.json create mode 100644 react-ui/public/favicon.ico create mode 100644 react-ui/public/index.html create mode 100644 react-ui/public/logo192.png create mode 100644 react-ui/public/logo512.png create mode 100644 react-ui/public/manifest.json create mode 100644 react-ui/public/robots.txt create mode 100755 react-ui/scripts/build-api.sh create mode 100644 react-ui/src/App.css create mode 100644 react-ui/src/App.js create mode 100644 react-ui/src/App.test.js create mode 100644 react-ui/src/index.css create mode 100644 react-ui/src/index.js create mode 100644 react-ui/src/logo.svg create mode 100644 react-ui/src/reportWebVitals.js create mode 100644 react-ui/src/setupTests.js create mode 100644 react-ui/yarn.lock diff --git a/react-ui/.gitignore b/react-ui/.gitignore new file mode 100644 index 000000000..bccd6e591 --- /dev/null +++ b/react-ui/.gitignore @@ -0,0 +1,26 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# api +/src/api + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/react-ui/README.md b/react-ui/README.md new file mode 100644 index 000000000..6426c57c6 --- /dev/null +++ b/react-ui/README.md @@ -0,0 +1,11 @@ +# React - UI +This is the UI for the goSDN project. It's a webapp written in rust + +### Getting started + + +### Requirements +- Docker + +### Author +Matthias Feyll \ No newline at end of file diff --git a/react-ui/eslint.config.js b/react-ui/eslint.config.js new file mode 100644 index 000000000..d48899f21 --- /dev/null +++ b/react-ui/eslint.config.js @@ -0,0 +1,40 @@ +const react = require("eslint-plugin-react"); +const globals = require("globals"); +const jest = require("eslint-plugin-jest"); + +const reactRecommended = require("eslint-plugin-react/configs/recommended"); + +module.exports = [ + { + files: ["**/*.{js,jsx,mjs,cjs,ts,tsx}"], + ignores: ["src/api/**/*", "eslint.config.js"], + + rules: { + ...reactRecommended.rules, + "no-unused-vars": "warn", + "no-undef": "warn", + "max-len": ["warn", { "comments": 65 }] + }, + + plugins: { + jest, + react, + }, + + languageOptions: { + ...reactRecommended.languageOptions, + globals: { + ...globals.browser, + test: true, + expect: true, + }, + }, + settings: { + react: { + pragma: "React", // Pragma to use, default to "React" + version: "detect", // React version. "detect" automatically picks the version you have installed. + flowVersion: "0.53", // Flow version + }, + }, + }, +]; diff --git a/react-ui/package.json b/react-ui/package.json new file mode 100644 index 000000000..13c386f25 --- /dev/null +++ b/react-ui/package.json @@ -0,0 +1,47 @@ +{ + "name": "react-ui", + "version": "0.1.0", + "private": true, + "dependencies": { + "@testing-library/jest-dom": "^5.17.0", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^13.5.0", + "bootstrap": "^5.3.3", + "react": "^18.3.1", + "react-bootstrap": "^2.10.2", + "react-dom": "^18.3.1", + "react-scripts": "5.0.1", + "web-vitals": "^2.1.4" + }, + "scripts": { + "start": "react-scripts start", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject", + "build::api": "./scripts/build-api.sh" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "devDependencies": { + "eslint": "^8.0.0", + "eslint-plugin-jest": "^28.5.0", + "eslint-plugin-react": "^7.34.1", + "globals": "^15.2.0" + } +} diff --git a/react-ui/public/favicon.ico b/react-ui/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a GIT binary patch literal 3870 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 ZtMWJ#1p_C<F-T5Hu2|;y@Dg%;1puB)gNgtE literal 0 HcmV?d00001 diff --git a/react-ui/public/index.html b/react-ui/public/index.html new file mode 100644 index 000000000..aa069f27c --- /dev/null +++ b/react-ui/public/index.html @@ -0,0 +1,43 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <link rel="icon" href="%PUBLIC_URL%/favicon.ico" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <meta name="theme-color" content="#000000" /> + <meta + name="description" + content="Web site created using create-react-app" + /> + <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" /> + <!-- + manifest.json provides metadata used when your web app is installed on a + user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/ + --> + <link rel="manifest" href="%PUBLIC_URL%/manifest.json" /> + <!-- + Notice the use of %PUBLIC_URL% in the tags above. + It will be replaced with the URL of the `public` folder during the build. + Only files inside the `public` folder can be referenced from the HTML. + + Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will + work correctly both with client-side routing and a non-root public URL. + Learn how to configure a non-root public URL by running `npm run build`. + --> + <title>React App</title> + </head> + <body> + <noscript>You need to enable JavaScript to run this app.</noscript> + <div id="root"></div> + <!-- + This HTML file is a template. + If you open it directly in the browser, you will see an empty page. + + You can add webfonts, meta tags, or analytics to this file. + The build step will place the bundled scripts into the <body> tag. + + To begin the development, run `npm start` or `yarn start`. + To create a production bundle, use `npm run build` or `yarn build`. + --> + </body> +</html> diff --git a/react-ui/public/logo192.png b/react-ui/public/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..fc44b0a3796c0e0a64c3d858ca038bd4570465d9 GIT binary patch literal 5347 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 literal 0 HcmV?d00001 diff --git a/react-ui/public/logo512.png b/react-ui/public/logo512.png new file mode 100644 index 0000000000000000000000000000000000000000..a4e47a6545bc15971f8f63fba70e4013df88a664 GIT binary patch literal 9664 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 Q-2sVvy85}Sb4q9e0RM_kJ^%m! literal 0 HcmV?d00001 diff --git a/react-ui/public/manifest.json b/react-ui/public/manifest.json new file mode 100644 index 000000000..080d6c77a --- /dev/null +++ b/react-ui/public/manifest.json @@ -0,0 +1,25 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/react-ui/public/robots.txt b/react-ui/public/robots.txt new file mode 100644 index 000000000..e9e57dc4d --- /dev/null +++ b/react-ui/public/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/react-ui/scripts/build-api.sh b/react-ui/scripts/build-api.sh new file mode 100755 index 000000000..5716ba969 --- /dev/null +++ b/react-ui/scripts/build-api.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env sh + +PROJECT_NAME=react-ui +PROJECT_ROOT=$(git rev-parse --show-toplevel) +API_PATH=/api/openapiv2 + +OUTPUT=${PROJECT_NAME}/src/api + +docker run -it --rm \ + -v ${PROJECT_ROOT}:/local openapitools/openapi-generator-cli generate -i /local${API_PATH}/gosdn_northbound.swagger.json -g typescript -o /local/${OUTPUT} \ No newline at end of file diff --git a/react-ui/src/App.css b/react-ui/src/App.css new file mode 100644 index 000000000..bd7fb253b --- /dev/null +++ b/react-ui/src/App.css @@ -0,0 +1,40 @@ +@import 'bootstrap/dist/css/bootstrap.min.css'; + +.App { + text-align: center; +} + +.App-logo { + height: 40vmin; + pointer-events: none; +} + +@media (prefers-reduced-motion: no-preference) { + .App-logo { + animation: App-logo-spin infinite 20s linear; + } +} + +.App-header { + background-color: #282c34; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: calc(10px + 2vmin); + color: white; +} + +.App-link { + color: #61dafb; +} + +@keyframes App-logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} diff --git a/react-ui/src/App.js b/react-ui/src/App.js new file mode 100644 index 000000000..09ab5e99d --- /dev/null +++ b/react-ui/src/App.js @@ -0,0 +1,27 @@ +import "./App.css"; +import logo from "./logo.svg"; + +import React from "react"; + +function App() { + return ( + <div className="App"> + <header className="App-header"> + <img src={logo} className="App-logo" alt="logo" /> + <p> + Edit <code>src/App.js</code> and save to reload. + </p> + <a + className="App-link" + href="https://reactjs.org" + target="_blank" + rel="noopener noreferrer" + > + Learn React + </a> + </header> + </div> + ); +} + +export default App; diff --git a/react-ui/src/App.test.js b/react-ui/src/App.test.js new file mode 100644 index 000000000..8ed0a9e0b --- /dev/null +++ b/react-ui/src/App.test.js @@ -0,0 +1,9 @@ +import { render, screen } from '@testing-library/react'; +import App from './App'; +import React from 'react'; + +test('renders learn react link', () => { + render(<App />); + const linkElement = screen.getByText(/learn react/i); + expect(linkElement).toBeInTheDocument(); +}); diff --git a/react-ui/src/index.css b/react-ui/src/index.css new file mode 100644 index 000000000..ec2585e8c --- /dev/null +++ b/react-ui/src/index.css @@ -0,0 +1,13 @@ +body { + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', + 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +code { + font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + monospace; +} diff --git a/react-ui/src/index.js b/react-ui/src/index.js new file mode 100644 index 000000000..8086ab778 --- /dev/null +++ b/react-ui/src/index.js @@ -0,0 +1,18 @@ +import React from "react"; +import ReactDOM from "react-dom/client"; +import "./index.css"; +import App from "./App"; +import reportWebVitals from "./reportWebVitals"; + +const root = ReactDOM.createRoot(document.getElementById("root")); + +root.render( + <React.StrictMode> + <App /> + </React.StrictMode> +); + +// If you want to start measuring performance in your app, pass a function +// to log results (for example: reportWebVitals(console.log)) +// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals +reportWebVitals(); diff --git a/react-ui/src/logo.svg b/react-ui/src/logo.svg new file mode 100644 index 000000000..9dfc1c058 --- /dev/null +++ b/react-ui/src/logo.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3"><g fill="#61DAFB"><path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/><circle cx="420.9" cy="296.5" r="45.7"/><path d="M520.5 78.1z"/></g></svg> \ No newline at end of file diff --git a/react-ui/src/reportWebVitals.js b/react-ui/src/reportWebVitals.js new file mode 100644 index 000000000..5253d3ad9 --- /dev/null +++ b/react-ui/src/reportWebVitals.js @@ -0,0 +1,13 @@ +const reportWebVitals = onPerfEntry => { + if (onPerfEntry && onPerfEntry instanceof Function) { + import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { + getCLS(onPerfEntry); + getFID(onPerfEntry); + getFCP(onPerfEntry); + getLCP(onPerfEntry); + getTTFB(onPerfEntry); + }); + } +}; + +export default reportWebVitals; diff --git a/react-ui/src/setupTests.js b/react-ui/src/setupTests.js new file mode 100644 index 000000000..8f2609b7b --- /dev/null +++ b/react-ui/src/setupTests.js @@ -0,0 +1,5 @@ +// jest-dom adds custom jest matchers for asserting on DOM nodes. +// allows you to do things like: +// expect(element).toHaveTextContent(/react/i) +// learn more: https://github.com/testing-library/jest-dom +import '@testing-library/jest-dom'; diff --git a/react-ui/yarn.lock b/react-ui/yarn.lock new file mode 100644 index 000000000..6da56475a --- /dev/null +++ b/react-ui/yarn.lock @@ -0,0 +1,10081 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@adobe/css-tools@^4.0.1": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.3.tgz#90749bde8b89cd41764224f5aac29cd4138f75ff" + integrity sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ== + +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + +"@ampproject/remapping@^2.2.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@apideck/better-ajv-errors@^0.3.1": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz#957d4c28e886a64a8141f7522783be65733ff097" + integrity sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA== + dependencies: + json-schema "^0.4.0" + jsonpointer "^5.0.0" + leven "^3.1.0" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2", "@babel/code-frame@^7.8.3": + version "7.24.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" + integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== + dependencies: + "@babel/highlight" "^7.24.2" + picocolors "^1.0.0" + +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" + integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== + +"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" + integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.24.2" + "@babel/generator" "^7.24.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.24.5" + "@babel/helpers" "^7.24.5" + "@babel/parser" "^7.24.5" + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.5" + "@babel/types" "^7.24.5" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/eslint-parser@^7.16.3": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.24.5.tgz#3b0f7d383a540329a30a6a9937cfc89461d26217" + integrity sha512-gsUcqS/fPlgAw1kOtpss7uhY6E9SFFANQ6EFX5GTvzUwaV0+sGaZWk6xq22MOdeT9wfxyokW3ceCUvOiRtZciQ== + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.1" + +"@babel/generator@^7.24.5", "@babel/generator@^7.7.2": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3" + integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA== + dependencies: + "@babel/types" "^7.24.5" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== + dependencies: + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.1", "@babel/helper-create-class-features-plugin@^7.24.4", "@babel/helper-create-class-features-plugin@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz#7d19da92c7e0cd8d11c09af2ce1b8e7512a6e723" + integrity sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-member-expression-to-functions" "^7.24.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.24.5" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.2": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" + integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-member-expression-to-functions@^7.23.0", "@babel/helper-member-expression-to-functions@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz#5981e131d5c7003c7d1fa1ad49e86c9b097ec475" + integrity sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA== + dependencies: + "@babel/types" "^7.24.5" + +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.24.1", "@babel/helper-module-imports@^7.24.3": + version "7.24.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" + integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== + dependencies: + "@babel/types" "^7.24.0" + +"@babel/helper-module-transforms@^7.23.3", "@babel/helper-module-transforms@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545" + integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.24.3" + "@babel/helper-simple-access" "^7.24.5" + "@babel/helper-split-export-declaration" "^7.24.5" + "@babel/helper-validator-identifier" "^7.24.5" + +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" + integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.24.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a" + integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ== + +"@babel/helper-remap-async-to-generator@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" + integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" + +"@babel/helper-replace-supers@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz#7085bd19d4a0b7ed8f405c1ed73ccb70f323abc1" + integrity sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + +"@babel/helper-simple-access@^7.22.5", "@babel/helper-simple-access@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz#50da5b72f58c16b07fbd992810be6049478e85ba" + integrity sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ== + dependencies: + "@babel/types" "^7.24.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6" + integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q== + dependencies: + "@babel/types" "^7.24.5" + +"@babel/helper-string-parser@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" + integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== + +"@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62" + integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== + +"@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + +"@babel/helper-wrap-function@^7.22.20": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.5.tgz#335f934c0962e2c1ed1fb9d79e06a56115067c09" + integrity sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw== + dependencies: + "@babel/helper-function-name" "^7.23.0" + "@babel/template" "^7.24.0" + "@babel/types" "^7.24.5" + +"@babel/helpers@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a" + integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q== + dependencies: + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.5" + "@babel/types" "^7.24.5" + +"@babel/highlight@^7.24.2": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e" + integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.5" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" + integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz#4c3685eb9cd790bcad2843900fe0250c91ccf895" + integrity sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.5" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz#b645d9ba8c2bc5b7af50f0fe949f9edbeb07c8cf" + integrity sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz#da8261f2697f0f41b0855b91d3a20a1fbfd271d3" + integrity sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.24.1" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz#1181d9685984c91d657b8ddf14f0487a6bab2988" + integrity sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-proposal-class-properties@^7.16.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-decorators@^7.16.4": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.1.tgz#bab2b9e174a2680f0a80f341f3ec70f809f8bb4b" + integrity sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-decorators" "^7.24.1" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.16.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-optional-chaining@^7.16.0": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" + integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.16.0": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-decorators@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.1.tgz#71d9ad06063a6ac5430db126b5df48c70ee885fa" + integrity sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-flow@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.1.tgz#875c25e3428d7896c87589765fc8b9d32f24bd8d" + integrity sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-import-assertions@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz#db3aad724153a00eaac115a3fb898de544e34971" + integrity sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-import-attributes@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz#c66b966c63b714c4eec508fcf5763b1f2d381093" + integrity sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" + integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.24.1", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz#b3bcc51f396d15f3591683f90239de143c076844" + integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz#2bf263617060c9cc45bcdbf492b8cc805082bf27" + integrity sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-async-generator-functions@^7.24.3": + version "7.24.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz#8fa7ae481b100768cc9842c8617808c5352b8b89" + integrity sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-transform-async-to-generator@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz#0e220703b89f2216800ce7b1c53cb0cf521c37f4" + integrity sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw== + dependencies: + "@babel/helper-module-imports" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-remap-async-to-generator" "^7.22.20" + +"@babel/plugin-transform-block-scoped-functions@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz#1c94799e20fcd5c4d4589523bbc57b7692979380" + integrity sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-block-scoping@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz#89574191397f85661d6f748d4b89ee4d9ee69a2a" + integrity sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + +"@babel/plugin-transform-class-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz#bcbf1aef6ba6085cfddec9fc8d58871cf011fc29" + integrity sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-class-static-block@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz#1a4653c0cf8ac46441ec406dece6e9bc590356a4" + integrity sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.4" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz#05e04a09df49a46348299a0e24bfd7e901129339" + integrity sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-split-export-declaration" "^7.24.5" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz#bc7e787f8e021eccfb677af5f13c29a9934ed8a7" + integrity sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/template" "^7.24.0" + +"@babel/plugin-transform-destructuring@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz#80843ee6a520f7362686d1a97a7b53544ede453c" + integrity sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + +"@babel/plugin-transform-dotall-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz#d56913d2f12795cc9930801b84c6f8c47513ac13" + integrity sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-duplicate-keys@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz#5347a797fe82b8d09749d10e9f5b83665adbca88" + integrity sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-dynamic-import@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz#2a5a49959201970dd09a5fca856cb651e44439dd" + integrity sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz#6650ebeb5bd5c012d5f5f90a26613a08162e8ba4" + integrity sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-export-namespace-from@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz#f033541fc036e3efb2dcb58eedafd4f6b8078acd" + integrity sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-transform-flow-strip-types@^7.16.0": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.1.tgz#fa8d0a146506ea195da1671d38eed459242b2dcc" + integrity sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-flow" "^7.24.1" + +"@babel/plugin-transform-for-of@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz#67448446b67ab6c091360ce3717e7d3a59e202fd" + integrity sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-function-name@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz#8cba6f7730626cc4dfe4ca2fa516215a0592b361" + integrity sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA== + dependencies: + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-json-strings@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz#08e6369b62ab3e8a7b61089151b161180c8299f7" + integrity sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-transform-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz#0a1982297af83e6b3c94972686067df588c5c096" + integrity sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-logical-assignment-operators@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz#719d8aded1aa94b8fb34e3a785ae8518e24cfa40" + integrity sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz#896d23601c92f437af8b01371ad34beb75df4489" + integrity sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-modules-amd@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz#b6d829ed15258536977e9c7cc6437814871ffa39" + integrity sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-modules-commonjs@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz#e71ba1d0d69e049a22bf90b3867e263823d3f1b9" + integrity sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-simple-access" "^7.22.5" + +"@babel/plugin-transform-modules-systemjs@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz#2b9625a3d4e445babac9788daec39094e6b11e3e" + integrity sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA== + dependencies: + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/plugin-transform-modules-umd@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz#69220c66653a19cf2c0872b9c762b9a48b8bebef" + integrity sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" + integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-new-target@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz#29c59988fa3d0157de1c871a28cd83096363cc34" + integrity sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-nullish-coalescing-operator@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz#0cd494bb97cb07d428bd651632cb9d4140513988" + integrity sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-transform-numeric-separator@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz#5bc019ce5b3435c1cadf37215e55e433d674d4e8" + integrity sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-transform-object-rest-spread@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz#f91bbcb092ff957c54b4091c86bda8372f0b10ef" + integrity sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA== + dependencies: + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.24.5" + +"@babel/plugin-transform-object-super@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz#e71d6ab13483cca89ed95a474f542bbfc20a0520" + integrity sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-replace-supers" "^7.24.1" + +"@babel/plugin-transform-optional-catch-binding@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz#92a3d0efe847ba722f1a4508669b23134669e2da" + integrity sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-transform-optional-chaining@^7.24.1", "@babel/plugin-transform-optional-chaining@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz#a6334bebd7f9dd3df37447880d0bd64b778e600f" + integrity sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz#5c3b23f3a6b8fed090f9b98f2926896d3153cc62" + integrity sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + +"@babel/plugin-transform-private-methods@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz#a0faa1ae87eff077e1e47a5ec81c3aef383dc15a" + integrity sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-private-property-in-object@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz#f5d1fcad36e30c960134cb479f1ca98a5b06eda5" + integrity sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz#d6a9aeab96f03749f4eebeb0b6ea8e90ec958825" + integrity sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-react-constant-elements@^7.12.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.24.1.tgz#d493a0918b9fdad7540f5afd9b5eb5c52500d18d" + integrity sha512-QXp1U9x0R7tkiGB0FOk8o74jhnap0FlZ5gNkRIWdG3eP+SvMFg118e1zaWewDzgABb106QSKpVsD3Wgd8t6ifA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz#554e3e1a25d181f040cf698b93fd289a03bfdcdb" + integrity sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-react-jsx-development@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" + integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.22.5" + +"@babel/plugin-transform-react-jsx@^7.22.5", "@babel/plugin-transform-react-jsx@^7.23.4": + version "7.23.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" + integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.23.3" + "@babel/types" "^7.23.4" + +"@babel/plugin-transform-react-pure-annotations@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz#c86bce22a53956331210d268e49a0ff06e392470" + integrity sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-regenerator@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz#625b7545bae52363bdc1fbbdc7252b5046409c8c" + integrity sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + regenerator-transform "^0.15.2" + +"@babel/plugin-transform-reserved-words@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz#8de729f5ecbaaf5cf83b67de13bad38a21be57c1" + integrity sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-runtime@^7.16.4": + version "7.24.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz#dc58ad4a31810a890550365cc922e1ff5acb5d7f" + integrity sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ== + dependencies: + "@babel/helper-module-imports" "^7.24.3" + "@babel/helper-plugin-utils" "^7.24.0" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.1" + babel-plugin-polyfill-regenerator "^0.6.1" + semver "^6.3.1" + +"@babel/plugin-transform-shorthand-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz#ba9a09144cf55d35ec6b93a32253becad8ee5b55" + integrity sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-spread@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz#a1acf9152cbf690e4da0ba10790b3ac7d2b2b391" + integrity sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz#f03e672912c6e203ed8d6e0271d9c2113dc031b9" + integrity sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-template-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz#15e2166873a30d8617e3e2ccadb86643d327aab7" + integrity sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-typeof-symbol@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz#703cace5ef74155fb5eecab63cbfc39bdd25fe12" + integrity sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + +"@babel/plugin-transform-typescript@^7.24.1": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz#bcba979e462120dc06a75bd34c473a04781931b8" + integrity sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/plugin-syntax-typescript" "^7.24.1" + +"@babel/plugin-transform-unicode-escapes@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz#fb3fa16676549ac7c7449db9b342614985c2a3a4" + integrity sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-unicode-property-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz#56704fd4d99da81e5e9f0c0c93cabd91dbc4889e" + integrity sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-unicode-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz#57c3c191d68f998ac46b708380c1ce4d13536385" + integrity sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-unicode-sets-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz#c1ea175b02afcffc9cf57a9c4658326625165b7f" + integrity sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.5.tgz#6a9ac90bd5a5a9dae502af60dfc58c190551bbcd" + integrity sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ== + dependencies: + "@babel/compat-data" "^7.24.4" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.24.1" + "@babel/plugin-syntax-import-attributes" "^7.24.1" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.24.1" + "@babel/plugin-transform-async-generator-functions" "^7.24.3" + "@babel/plugin-transform-async-to-generator" "^7.24.1" + "@babel/plugin-transform-block-scoped-functions" "^7.24.1" + "@babel/plugin-transform-block-scoping" "^7.24.5" + "@babel/plugin-transform-class-properties" "^7.24.1" + "@babel/plugin-transform-class-static-block" "^7.24.4" + "@babel/plugin-transform-classes" "^7.24.5" + "@babel/plugin-transform-computed-properties" "^7.24.1" + "@babel/plugin-transform-destructuring" "^7.24.5" + "@babel/plugin-transform-dotall-regex" "^7.24.1" + "@babel/plugin-transform-duplicate-keys" "^7.24.1" + "@babel/plugin-transform-dynamic-import" "^7.24.1" + "@babel/plugin-transform-exponentiation-operator" "^7.24.1" + "@babel/plugin-transform-export-namespace-from" "^7.24.1" + "@babel/plugin-transform-for-of" "^7.24.1" + "@babel/plugin-transform-function-name" "^7.24.1" + "@babel/plugin-transform-json-strings" "^7.24.1" + "@babel/plugin-transform-literals" "^7.24.1" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.1" + "@babel/plugin-transform-member-expression-literals" "^7.24.1" + "@babel/plugin-transform-modules-amd" "^7.24.1" + "@babel/plugin-transform-modules-commonjs" "^7.24.1" + "@babel/plugin-transform-modules-systemjs" "^7.24.1" + "@babel/plugin-transform-modules-umd" "^7.24.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.24.1" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1" + "@babel/plugin-transform-numeric-separator" "^7.24.1" + "@babel/plugin-transform-object-rest-spread" "^7.24.5" + "@babel/plugin-transform-object-super" "^7.24.1" + "@babel/plugin-transform-optional-catch-binding" "^7.24.1" + "@babel/plugin-transform-optional-chaining" "^7.24.5" + "@babel/plugin-transform-parameters" "^7.24.5" + "@babel/plugin-transform-private-methods" "^7.24.1" + "@babel/plugin-transform-private-property-in-object" "^7.24.5" + "@babel/plugin-transform-property-literals" "^7.24.1" + "@babel/plugin-transform-regenerator" "^7.24.1" + "@babel/plugin-transform-reserved-words" "^7.24.1" + "@babel/plugin-transform-shorthand-properties" "^7.24.1" + "@babel/plugin-transform-spread" "^7.24.1" + "@babel/plugin-transform-sticky-regex" "^7.24.1" + "@babel/plugin-transform-template-literals" "^7.24.1" + "@babel/plugin-transform-typeof-symbol" "^7.24.5" + "@babel/plugin-transform-unicode-escapes" "^7.24.1" + "@babel/plugin-transform-unicode-property-regex" "^7.24.1" + "@babel/plugin-transform-unicode-regex" "^7.24.1" + "@babel/plugin-transform-unicode-sets-regex" "^7.24.1" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.4" + babel-plugin-polyfill-regenerator "^0.6.1" + core-js-compat "^3.31.0" + semver "^6.3.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.1.tgz#2450c2ac5cc498ef6101a6ca5474de251e33aa95" + integrity sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-transform-react-display-name" "^7.24.1" + "@babel/plugin-transform-react-jsx" "^7.23.4" + "@babel/plugin-transform-react-jsx-development" "^7.22.5" + "@babel/plugin-transform-react-pure-annotations" "^7.24.1" + +"@babel/preset-typescript@^7.16.0": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz#89bdf13a3149a17b3b2a2c9c62547f06db8845ec" + integrity sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-syntax-jsx" "^7.24.1" + "@babel/plugin-transform-modules-commonjs" "^7.24.1" + "@babel/plugin-transform-typescript" "^7.24.1" + +"@babel/regjsgen@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== + +"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.5.tgz#230946857c053a36ccc66e1dd03b17dd0c4ed02c" + integrity sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/template@^7.22.15", "@babel/template@^7.24.0", "@babel/template@^7.3.3": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" + integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.24.0" + "@babel/types" "^7.24.0" + +"@babel/traverse@^7.24.5", "@babel/traverse@^7.7.2": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8" + integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA== + dependencies: + "@babel/code-frame" "^7.24.2" + "@babel/generator" "^7.24.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.24.5" + "@babel/parser" "^7.24.5" + "@babel/types" "^7.24.5" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7" + integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ== + dependencies: + "@babel/helper-string-parser" "^7.24.1" + "@babel/helper-validator-identifier" "^7.24.5" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@csstools/normalize.css@*": + version "12.1.1" + resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-12.1.1.tgz#f0ad221b7280f3fc814689786fd9ee092776ef8f" + integrity sha512-YAYeJ+Xqh7fUou1d1j9XHl44BmsuThiTr4iNrgCQ3J27IbhXsxXDGZ1cXv8Qvs99d4rBbLiSKy3+WZiet32PcQ== + +"@csstools/postcss-cascade-layers@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz#8a997edf97d34071dd2e37ea6022447dd9e795ad" + integrity sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA== + dependencies: + "@csstools/selector-specificity" "^2.0.2" + postcss-selector-parser "^6.0.10" + +"@csstools/postcss-color-function@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz#2bd36ab34f82d0497cfacdc9b18d34b5e6f64b6b" + integrity sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-font-format-keywords@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz#677b34e9e88ae997a67283311657973150e8b16a" + integrity sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-hwb-function@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz#ab54a9fce0ac102c754854769962f2422ae8aa8b" + integrity sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-ic-unit@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz#28237d812a124d1a16a5acc5c3832b040b303e58" + integrity sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-is-pseudo-class@^2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz#846ae6c0d5a1eaa878fce352c544f9c295509cd1" + integrity sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA== + dependencies: + "@csstools/selector-specificity" "^2.0.0" + postcss-selector-parser "^6.0.10" + +"@csstools/postcss-nested-calc@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz#d7e9d1d0d3d15cf5ac891b16028af2a1044d0c26" + integrity sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-normalize-display-values@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz#15da54a36e867b3ac5163ee12c1d7f82d4d612c3" + integrity sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-oklab-function@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz#88cee0fbc8d6df27079ebd2fa016ee261eecf844" + integrity sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-progressive-custom-properties@^1.1.0", "@csstools/postcss-progressive-custom-properties@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz#542292558384361776b45c85226b9a3a34f276fa" + integrity sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-stepped-value-functions@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz#f8772c3681cc2befed695e2b0b1d68e22f08c4f4" + integrity sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-text-decoration-shorthand@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz#ea96cfbc87d921eca914d3ad29340d9bcc4c953f" + integrity sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-trigonometric-functions@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz#94d3e4774c36d35dcdc88ce091336cb770d32756" + integrity sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-unset-value@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz#c99bb70e2cdc7312948d1eb41df2412330b81f77" + integrity sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g== + +"@csstools/selector-specificity@^2.0.0", "@csstools/selector-specificity@^2.0.2": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz#2cbcf822bf3764c9658c4d2e568bd0c0cb748016" + integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.57.0": + version "8.57.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" + integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== + +"@humanwhocodes/config-array@^0.11.14": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== + dependencies: + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" + integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + +"@jest/console@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df" + integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== + dependencies: + "@jest/types" "^28.1.3" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^28.1.3" + jest-util "^28.1.3" + slash "^3.0.0" + +"@jest/core@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" + integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== + dependencies: + "@jest/console" "^27.5.1" + "@jest/reporters" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.8.1" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^27.5.1" + jest-config "^27.5.1" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-resolve-dependencies "^27.5.1" + jest-runner "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + jest-watcher "^27.5.1" + micromatch "^4.0.4" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" + integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== + dependencies: + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== + dependencies: + jest-get-type "^29.6.3" + +"@jest/fake-timers@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" + integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== + dependencies: + "@jest/types" "^27.5.1" + "@sinonjs/fake-timers" "^8.0.1" + "@types/node" "*" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-util "^27.5.1" + +"@jest/globals@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" + integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/types" "^27.5.1" + expect "^27.5.1" + +"@jest/reporters@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" + integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-haste-map "^27.5.1" + jest-resolve "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^8.1.0" + +"@jest/schemas@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" + integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== + dependencies: + "@sinclair/typebox" "^0.24.1" + +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== + dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/source-map@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" + integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.9" + source-map "^0.6.0" + +"@jest/test-result@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" + integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== + dependencies: + "@jest/console" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-result@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5" + integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== + dependencies: + "@jest/console" "^28.1.3" + "@jest/types" "^28.1.3" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" + integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== + dependencies: + "@jest/test-result" "^27.5.1" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-runtime "^27.5.1" + +"@jest/transform@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" + integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^27.5.1" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-regex-util "^27.5.1" + jest-util "^27.5.1" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + +"@jest/types@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" + integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + +"@jest/types@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" + integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== + dependencies: + "@jest/schemas" "^28.1.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== + dependencies: + "@jest/schemas" "^29.6.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/source-map@^0.3.3": + version "0.3.6" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" + integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" + integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== + +"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": + version "5.1.1-v1" + resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== + dependencies: + eslint-scope "5.1.1" + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@pmmmwh/react-refresh-webpack-plugin@^0.5.3": + version "0.5.13" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.13.tgz#02338a92a92f541a5189b97e922caf3215221e49" + integrity sha512-odZVYXly+JwzYri9rKqqUAk0cY6zLpv4dxoKinhoJNShV36Gpxf+CyDIILJ4tYsJ1ZxIWs233Y39iVnynvDA/g== + dependencies: + ansi-html-community "^0.0.8" + core-js-pure "^3.23.3" + error-stack-parser "^2.0.6" + html-entities "^2.1.0" + loader-utils "^2.0.4" + schema-utils "^3.0.0" + source-map "^0.7.3" + +"@popperjs/core@^2.11.6": + version "2.11.8" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" + integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== + +"@react-aria/ssr@^3.5.0": + version "3.9.3" + resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.9.3.tgz#9e7d4e019965aaf86cec3da2411a392be49ac2b3" + integrity sha512-5bUZ93dmvHFcmfUcEN7qzYe8yQQ8JY+nHN6m9/iSDCQ/QmCiE0kWXYwhurjw5ch6I8WokQzx66xKIMHBAa4NNA== + dependencies: + "@swc/helpers" "^0.5.0" + +"@restart/hooks@^0.4.9": + version "0.4.16" + resolved "https://registry.yarnpkg.com/@restart/hooks/-/hooks-0.4.16.tgz#95ae8ac1cc7e2bd4fed5e39800ff85604c6d59fb" + integrity sha512-f7aCv7c+nU/3mF7NWLtVVr0Ra80RqsO89hO72r+Y/nvQr5+q0UFGkocElTH6MJApvReVh6JHUFYn2cw1WdHF3w== + dependencies: + dequal "^2.0.3" + +"@restart/ui@^1.6.8": + version "1.6.9" + resolved "https://registry.yarnpkg.com/@restart/ui/-/ui-1.6.9.tgz#05ec905a56486fa39b62f29c09b3917e57acd62f" + integrity sha512-mUbygUsJcRurjZCt1f77gg4DpheD1D+Sc7J3JjAkysUj7t8m4EBJVOqWC9788Qtbc69cJ+HlJc6jBguKwS8Mcw== + dependencies: + "@babel/runtime" "^7.21.0" + "@popperjs/core" "^2.11.6" + "@react-aria/ssr" "^3.5.0" + "@restart/hooks" "^0.4.9" + "@types/warning" "^3.0.0" + dequal "^2.0.3" + dom-helpers "^5.2.0" + uncontrollable "^8.0.1" + warning "^4.0.3" + +"@rollup/plugin-babel@^5.2.0": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" + integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@rollup/pluginutils" "^3.1.0" + +"@rollup/plugin-node-resolve@^11.2.1": + version "11.2.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" + integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.19.0" + +"@rollup/plugin-replace@^2.4.1": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" + integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + magic-string "^0.25.7" + +"@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@rushstack/eslint-patch@^1.1.0": + version "1.10.2" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.2.tgz#053f1540703faa81dea2966b768ee5581c66aeda" + integrity sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw== + +"@sinclair/typebox@^0.24.1": + version "0.24.51" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" + integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== + +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sinonjs/commons@^1.7.0": + version "1.8.6" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" + integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^8.0.1": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" + integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@surma/rollup-plugin-off-main-thread@^2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" + integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== + dependencies: + ejs "^3.1.6" + json5 "^2.2.0" + magic-string "^0.25.0" + string.prototype.matchall "^4.0.6" + +"@svgr/babel-plugin-add-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" + integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== + +"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" + integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== + +"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" + integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" + integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== + +"@svgr/babel-plugin-svg-dynamic-title@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" + integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== + +"@svgr/babel-plugin-svg-em-dimensions@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" + integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== + +"@svgr/babel-plugin-transform-react-native-svg@^5.4.0": + version "5.4.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" + integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== + +"@svgr/babel-plugin-transform-svg-component@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" + integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== + +"@svgr/babel-preset@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" + integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1" + "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0" + "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0" + "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0" + "@svgr/babel-plugin-transform-svg-component" "^5.5.0" + +"@svgr/core@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" + integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== + dependencies: + "@svgr/plugin-jsx" "^5.5.0" + camelcase "^6.2.0" + cosmiconfig "^7.0.0" + +"@svgr/hast-util-to-babel-ast@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" + integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== + dependencies: + "@babel/types" "^7.12.6" + +"@svgr/plugin-jsx@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" + integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== + dependencies: + "@babel/core" "^7.12.3" + "@svgr/babel-preset" "^5.5.0" + "@svgr/hast-util-to-babel-ast" "^5.5.0" + svg-parser "^2.0.2" + +"@svgr/plugin-svgo@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" + integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== + dependencies: + cosmiconfig "^7.0.0" + deepmerge "^4.2.2" + svgo "^1.2.2" + +"@svgr/webpack@^5.5.0": + version "5.5.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" + integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== + dependencies: + "@babel/core" "^7.12.3" + "@babel/plugin-transform-react-constant-elements" "^7.12.1" + "@babel/preset-env" "^7.12.1" + "@babel/preset-react" "^7.12.5" + "@svgr/core" "^5.5.0" + "@svgr/plugin-jsx" "^5.5.0" + "@svgr/plugin-svgo" "^5.5.0" + loader-utils "^2.0.0" + +"@swc/helpers@^0.5.0": + version "0.5.11" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.11.tgz#5bab8c660a6e23c13b2d23fcd1ee44a2db1b0cb7" + integrity sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A== + dependencies: + tslib "^2.4.0" + +"@testing-library/dom@^8.5.0": + version "8.20.1" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.20.1.tgz#2e52a32e46fc88369eef7eef634ac2a192decd9f" + integrity sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.12.5" + "@types/aria-query" "^5.0.1" + aria-query "5.1.3" + chalk "^4.1.0" + dom-accessibility-api "^0.5.9" + lz-string "^1.5.0" + pretty-format "^27.0.2" + +"@testing-library/jest-dom@^5.17.0": + version "5.17.0" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz#5e97c8f9a15ccf4656da00fecab505728de81e0c" + integrity sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg== + dependencies: + "@adobe/css-tools" "^4.0.1" + "@babel/runtime" "^7.9.2" + "@types/testing-library__jest-dom" "^5.9.1" + aria-query "^5.0.0" + chalk "^3.0.0" + css.escape "^1.5.1" + dom-accessibility-api "^0.5.6" + lodash "^4.17.15" + redent "^3.0.0" + +"@testing-library/react@^13.4.0": + version "13.4.0" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-13.4.0.tgz#6a31e3bf5951615593ad984e96b9e5e2d9380966" + integrity sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw== + dependencies: + "@babel/runtime" "^7.12.5" + "@testing-library/dom" "^8.5.0" + "@types/react-dom" "^18.0.0" + +"@testing-library/user-event@^13.5.0": + version "13.5.0" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-13.5.0.tgz#69d77007f1e124d55314a2b73fd204b333b13295" + integrity sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg== + dependencies: + "@babel/runtime" "^7.12.5" + +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + +"@types/aria-query@^5.0.1": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.4.tgz#1a31c3d378850d2778dabb6374d036dcba4ba708" + integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== + +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.8" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" + integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" + integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== + dependencies: + "@babel/types" "^7.20.7" + +"@types/body-parser@*": + version "1.19.5" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" + integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.9": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" + integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== + dependencies: + "@types/node" "*" + +"@types/connect-history-api-fallback@^1.3.5": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" + integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/eslint-scope@^3.7.3": + version "3.7.7" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1": + version "8.56.10" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.10.tgz#eb2370a73bf04a901eeba8f22595c7ee0f7eb58d" + integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": + version "4.19.0" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz#3ae8ab3767d98d0b682cda063c3339e1e86ccfaa" + integrity sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*", "@types/express@^4.17.13": + version "4.17.21" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" + integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/graceful-fs@^4.1.2": + version "4.1.9" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" + integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== + dependencies: + "@types/node" "*" + +"@types/html-minifier-terser@^6.0.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" + integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== + +"@types/http-errors@*": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" + integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== + +"@types/http-proxy@^1.17.8": + version "1.17.14" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.14.tgz#57f8ccaa1c1c3780644f8a94f9c6b5000b5e2eec" + integrity sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + +"@types/istanbul-lib-report@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@*": + version "29.5.12" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.12.tgz#7f7dc6eb4cf246d2474ed78744b05d06ce025544" + integrity sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + +"@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/mime@^1": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== + +"@types/node-forge@^1.3.0": + version "1.3.11" + resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" + integrity sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ== + dependencies: + "@types/node" "*" + +"@types/node@*": + version "20.12.11" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.11.tgz#c4ef00d3507000d17690643278a60dc55a9dc9be" + integrity sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw== + dependencies: + undici-types "~5.26.4" + +"@types/parse-json@^4.0.0": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== + +"@types/prettier@^2.1.5": + version "2.7.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== + +"@types/prop-types@*": + version "15.7.12" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" + integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== + +"@types/q@^1.5.1": + version "1.5.8" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.8.tgz#95f6c6a08f2ad868ba230ead1d2d7f7be3db3837" + integrity sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw== + +"@types/qs@*": + version "6.9.15" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" + integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== + +"@types/range-parser@*": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + +"@types/react-dom@^18.0.0": + version "18.3.0" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.0.tgz#0cbc818755d87066ab6ca74fbedb2547d74a82b0" + integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg== + dependencies: + "@types/react" "*" + +"@types/react-transition-group@^4.4.6": + version "4.4.10" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.10.tgz#6ee71127bdab1f18f11ad8fb3322c6da27c327ac" + integrity sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@>=16.9.11": + version "18.3.2" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.2.tgz#462ae4904973bc212fa910424d901e3d137dbfcd" + integrity sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + +"@types/retry@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== + +"@types/semver@^7.3.12", "@types/semver@^7.5.8": + version "7.5.8" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== + +"@types/send@*": + version "0.17.4" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" + integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-index@^1.9.1": + version "1.9.4" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" + integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== + dependencies: + "@types/express" "*" + +"@types/serve-static@*", "@types/serve-static@^1.13.10": + version "1.15.7" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" + integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/send" "*" + +"@types/sockjs@^0.3.33": + version "0.3.36" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" + integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== + dependencies: + "@types/node" "*" + +"@types/stack-utils@^2.0.0": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + +"@types/testing-library__jest-dom@^5.9.1": + version "5.14.9" + resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz#0fb1e6a0278d87b6737db55af5967570b67cb466" + integrity sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw== + dependencies: + "@types/jest" "*" + +"@types/trusted-types@^2.0.2": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" + integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== + +"@types/warning@^3.0.0": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/warning/-/warning-3.0.3.tgz#d1884c8cc4a426d1ac117ca2611bf333834c6798" + integrity sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q== + +"@types/ws@^8.5.5": + version "8.5.10" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" + integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^16.0.0": + version "16.0.9" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.9.tgz#ba506215e45f7707e6cbcaf386981155b7ab956e" + integrity sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^17.0.8": + version "17.0.32" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" + integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^5.5.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" + integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/experimental-utils@^5.0.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz#14559bf73383a308026b427a4a6129bae2146741" + integrity sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw== + dependencies: + "@typescript-eslint/utils" "5.62.0" + +"@typescript-eslint/parser@^5.5.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== + dependencies: + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + +"@typescript-eslint/scope-manager@7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz#bb19096d11ec6b87fb6640d921df19b813e02047" + integrity sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g== + dependencies: + "@typescript-eslint/types" "7.8.0" + "@typescript-eslint/visitor-keys" "7.8.0" + +"@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" + integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== + dependencies: + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== + +"@typescript-eslint/types@7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.8.0.tgz#1fd2577b3ad883b769546e2d1ef379f929a7091d" + integrity sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw== + +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/typescript-estree@7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz#b028a9226860b66e623c1ee55cc2464b95d2987c" + integrity sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg== + dependencies: + "@typescript-eslint/types" "7.8.0" + "@typescript-eslint/visitor-keys" "7.8.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^1.3.0" + +"@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.58.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + eslint-scope "^5.1.1" + semver "^7.3.7" + +"@typescript-eslint/utils@^6.0.0 || ^7.0.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.8.0.tgz#57a79f9c0c0740ead2f622e444cfaeeb9fd047cd" + integrity sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.15" + "@types/semver" "^7.5.8" + "@typescript-eslint/scope-manager" "7.8.0" + "@typescript-eslint/types" "7.8.0" + "@typescript-eslint/typescript-estree" "7.8.0" + semver "^7.6.0" + +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== + dependencies: + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" + +"@typescript-eslint/visitor-keys@7.8.0": + version "7.8.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz#7285aab991da8bee411a42edbd5db760d22fdd91" + integrity sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA== + dependencies: + "@typescript-eslint/types" "7.8.0" + eslint-visitor-keys "^3.4.3" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" + integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + +"@webassemblyjs/floating-point-hex-parser@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" + integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== + +"@webassemblyjs/helper-api-error@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" + integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== + +"@webassemblyjs/helper-buffer@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" + integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== + +"@webassemblyjs/helper-numbers@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" + integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" + integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== + +"@webassemblyjs/helper-wasm-section@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" + integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.12.1" + +"@webassemblyjs/ieee754@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" + integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" + integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" + integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== + +"@webassemblyjs/wasm-edit@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" + integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.12.1" + "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/wasm-opt" "1.12.1" + "@webassemblyjs/wasm-parser" "1.12.1" + "@webassemblyjs/wast-printer" "1.12.1" + +"@webassemblyjs/wasm-gen@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" + integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wasm-opt@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" + integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-buffer" "1.12.1" + "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/wasm-parser" "1.12.1" + +"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" + integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wast-printer@1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" + integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== + dependencies: + "@webassemblyjs/ast" "1.12.1" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.3, abab@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + +acorn-import-assertions@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + +address@^1.0.1, address@^1.1.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== + +adjust-sourcemap-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99" + integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== + dependencies: + loader-utils "^2.0.0" + regex-parser "^2.2.11" + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.6.0, ajv@^8.9.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.13.0.tgz#a3939eaec9fb80d217ddf0c3376948c023f28c91" + integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA== + dependencies: + fast-deep-equal "^3.1.3" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.4.1" + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@^3.0.3, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +aria-query@5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + dependencies: + deep-equal "^2.0.5" + +aria-query@^5.0.0, aria-query@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" + integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== + dependencies: + dequal "^2.0.3" + +array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" + integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== + dependencies: + call-bind "^1.0.5" + is-array-buffer "^3.0.4" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-includes@^3.1.6, array-includes@^3.1.7: + version "3.1.8" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" + integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.4" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.findlast@^1.2.4: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" + integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-shim-unscopables "^1.0.2" + +array.prototype.findlastindex@^1.2.3: + version "1.2.5" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" + integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-shim-unscopables "^1.0.2" + +array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.reduce@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.7.tgz#6aadc2f995af29cb887eb866d981dc85ab6f7dc7" + integrity sha512-mzmiUCVwtiD4lgxYP8g7IYy8El8p2CSMePvIbTS7gchKir/L1fgJrk0yDKmAX6mnRQFKNADYIk8nNlTris5H1Q== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-array-method-boxes-properly "^1.0.0" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + is-string "^1.0.7" + +array.prototype.toreversed@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz#b989a6bf35c4c5051e1dc0325151bf8088954eba" + integrity sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.tosorted@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz#c8c89348337e51b8a3c48a9227f9ce93ceedcba8" + integrity sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.1.0" + es-shim-unscopables "^1.0.2" + +arraybuffer.prototype.slice@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" + integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.2.1" + get-intrinsic "^1.2.3" + is-array-buffer "^3.0.4" + is-shared-array-buffer "^1.0.2" + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +ast-types-flow@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6" + integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== + +async@^3.2.3: + version "3.2.5" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" + integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +autoprefixer@^10.4.13: + version "10.4.19" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.19.tgz#ad25a856e82ee9d7898c59583c1afeb3fa65f89f" + integrity sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew== + dependencies: + browserslist "^4.23.0" + caniuse-lite "^1.0.30001599" + fraction.js "^4.3.7" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + +axe-core@=4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" + integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== + +axobject-query@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" + integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== + dependencies: + dequal "^2.0.3" + +babel-jest@^27.4.2, babel-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" + integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== + dependencies: + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-loader@^8.2.3: + version "8.3.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" + integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== + dependencies: + find-cache-dir "^3.3.1" + loader-utils "^2.0.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" + integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== + dependencies: + "@babel/runtime" "^7.12.5" + cosmiconfig "^7.0.0" + resolve "^1.19.0" + +babel-plugin-named-asset-import@^0.3.8: + version "0.3.8" + resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz#6b7fa43c59229685368683c28bc9734f24524cc2" + integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== + +babel-plugin-polyfill-corejs2@^0.4.10: + version "0.4.11" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" + integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.6.2" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: + version "0.10.4" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz#789ac82405ad664c20476d0233b485281deb9c77" + integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.1" + core-js-compat "^3.36.1" + +babel-plugin-polyfill-regenerator@^0.6.1: + version "0.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e" + integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.2" + +babel-plugin-transform-react-remove-prop-types@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" + integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== + dependencies: + babel-plugin-jest-hoist "^27.5.1" + babel-preset-current-node-syntax "^1.0.0" + +babel-preset-react-app@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz#ed6005a20a24f2c88521809fa9aea99903751584" + integrity sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg== + dependencies: + "@babel/core" "^7.16.0" + "@babel/plugin-proposal-class-properties" "^7.16.0" + "@babel/plugin-proposal-decorators" "^7.16.4" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0" + "@babel/plugin-proposal-numeric-separator" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.16.0" + "@babel/plugin-proposal-private-methods" "^7.16.0" + "@babel/plugin-transform-flow-strip-types" "^7.16.0" + "@babel/plugin-transform-react-display-name" "^7.16.0" + "@babel/plugin-transform-runtime" "^7.16.4" + "@babel/preset-env" "^7.16.4" + "@babel/preset-react" "^7.16.0" + "@babel/preset-typescript" "^7.16.0" + "@babel/runtime" "^7.16.3" + babel-plugin-macros "^3.1.0" + babel-plugin-transform-react-remove-prop-types "^0.4.24" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== + +bfj@^7.0.2: + version "7.1.0" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.1.0.tgz#c5177d522103f9040e1b12980fe8c38cf41d3f8b" + integrity sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw== + dependencies: + bluebird "^3.7.2" + check-types "^11.2.3" + hoopy "^0.1.4" + jsonpath "^1.1.1" + tryer "^1.0.1" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +bluebird@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +body-parser@1.20.2: + version "1.20.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" + integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +bonjour-service@^1.0.11: + version "1.2.1" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.2.1.tgz#eb41b3085183df3321da1264719fbada12478d02" + integrity sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw== + dependencies: + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.5" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +bootstrap@^5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.3.tgz#de35e1a765c897ac940021900fcbb831602bac38" + integrity sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0: + version "4.23.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== + dependencies: + caniuse-lite "^1.0.30001587" + electron-to-chromium "^1.4.668" + node-releases "^2.0.14" + update-browserslist-db "^1.0.13" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +builtin-modules@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0, camelcase@^6.2.1: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001599: + version "1.0.30001617" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001617.tgz#809bc25f3f5027ceb33142a7d6c40759d7a901eb" + integrity sha512-mLyjzNI9I+Pix8zwcrpxEbGlfqOkF9kM3ptzmKNw5tizSyYwMe+nGLTqMK9cO+0E+Bh6TsBxNAaHWEM8xwSsmA== + +case-sensitive-paths-webpack-plugin@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" + integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== + +chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +char-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.1.tgz#6dafdb25f9d3349914079f010ba8d0e6ff9cd01e" + integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw== + +check-types@^11.2.3: + version "11.2.3" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.2.3.tgz#1ffdf68faae4e941fce252840b1787b8edc93b71" + integrity sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg== + +chokidar@^3.4.2, chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +cjs-module-lexer@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz#c485341ae8fd999ca4ee5af2d7a1c9ae01e0099c" + integrity sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q== + +classnames@^2.3.2: + version "2.5.1" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" + integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== + +clean-css@^5.2.2: + version "5.3.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd" + integrity sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== + dependencies: + source-map "~0.6.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +collect-v8-coverage@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colord@^2.9.1: + version "2.9.3" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== + +colorette@^2.0.10: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +common-tags@^1.8.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" + integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +confusing-browser-globals@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" + integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== + +connect-history-api-fallback@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" + integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" + integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== + +core-js-compat@^3.31.0, core-js-compat@^3.36.1: + version "3.37.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.0.tgz#d9570e544163779bb4dff1031c7972f44918dc73" + integrity sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA== + dependencies: + browserslist "^4.23.0" + +core-js-pure@^3.23.3: + version "3.37.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.37.0.tgz#ce99fb4a7cec023fdbbe5b5bd1f06bbcba83316e" + integrity sha512-d3BrpyFr5eD4KcbRvQ3FTUx/KWmaDesr7+a3+1+P46IUnNoEt+oiLijPINZMEon7w9oGkIINWxrBAU9DEciwFQ== + +core-js@^3.19.2: + version "3.37.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.37.0.tgz#d8dde58e91d156b2547c19d8a4efd5c7f6c426bb" + integrity sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +cosmiconfig@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + +css-blank-pseudo@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz#36523b01c12a25d812df343a32c322d2a2324561" + integrity sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ== + dependencies: + postcss-selector-parser "^6.0.9" + +css-declaration-sorter@^6.3.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" + integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== + +css-has-pseudo@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz#57f6be91ca242d5c9020ee3e51bbb5b89fc7af73" + integrity sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw== + dependencies: + postcss-selector-parser "^6.0.9" + +css-loader@^6.5.1: + version "6.11.0" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.11.0.tgz#33bae3bf6363d0a7c2cf9031c96c744ff54d85ba" + integrity sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g== + dependencies: + icss-utils "^5.1.0" + postcss "^8.4.33" + postcss-modules-extract-imports "^3.1.0" + postcss-modules-local-by-default "^4.0.5" + postcss-modules-scope "^3.2.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.2.0" + semver "^7.5.4" + +css-minimizer-webpack-plugin@^3.2.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f" + integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== + dependencies: + cssnano "^5.0.6" + jest-worker "^27.0.2" + postcss "^8.3.5" + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" + source-map "^0.6.1" + +css-prefers-color-scheme@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz#ca8a22e5992c10a5b9d315155e7caee625903349" + integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +css.escape@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== + +cssdb@^7.1.0: + version "7.11.2" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-7.11.2.tgz#127a2f5b946ee653361a5af5333ea85a39df5ae5" + integrity sha512-lhQ32TFkc1X4eTefGfYPvgovRSzIMofHkigfH8nWtyRL4XJLsRhJFreRvEgKzept7x1rjBuy3J/MurXLaFxW/A== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^5.2.14: + version "5.2.14" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" + integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== + dependencies: + css-declaration-sorter "^6.3.1" + cssnano-utils "^3.1.0" + postcss-calc "^8.2.3" + postcss-colormin "^5.3.1" + postcss-convert-values "^5.1.3" + postcss-discard-comments "^5.1.2" + postcss-discard-duplicates "^5.1.0" + postcss-discard-empty "^5.1.1" + postcss-discard-overridden "^5.1.0" + postcss-merge-longhand "^5.1.7" + postcss-merge-rules "^5.1.4" + postcss-minify-font-values "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.4" + postcss-minify-selectors "^5.2.1" + postcss-normalize-charset "^5.1.0" + postcss-normalize-display-values "^5.1.0" + postcss-normalize-positions "^5.1.1" + postcss-normalize-repeat-style "^5.1.1" + postcss-normalize-string "^5.1.0" + postcss-normalize-timing-functions "^5.1.0" + postcss-normalize-unicode "^5.1.1" + postcss-normalize-url "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.3" + postcss-reduce-initial "^5.1.2" + postcss-reduce-transforms "^5.1.0" + postcss-svgo "^5.1.0" + postcss-unique-selectors "^5.1.1" + +cssnano-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" + integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== + +cssnano@^5.0.6: + version "5.1.15" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" + integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== + dependencies: + cssnano-preset-default "^5.2.14" + lilconfig "^2.0.3" + yaml "^1.10.2" + +csso@^4.0.2, csso@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +csstype@^3.0.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +damerau-levenshtein@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +data-view-buffer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" + integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" + integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" + integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +debug@2.6.9, debug@^2.6.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +decimal.js@^10.2.1: + version "10.4.3" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + +deep-equal@^2.0.5: + version "2.2.3" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" + integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.5" + es-get-iterator "^1.1.3" + get-intrinsic "^1.2.2" + is-arguments "^1.1.1" + is-array-buffer "^3.0.2" + is-date-object "^1.0.5" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + isarray "^2.0.5" + object-is "^1.1.5" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.13" + +deep-is@^0.1.3, deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +default-gateway@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== + dependencies: + execa "^5.0.0" + +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +dequal@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +detect-port-alt@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +diff-sequences@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== + +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +dns-packet@^5.2.2: + version "5.6.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: + version "0.5.16" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" + integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== + +dom-converter@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-helpers@^5.0.1, dom-helpers@^5.2.0, dom-helpers@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" + +domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^2.5.2, domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + +duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +ejs@^3.1.6: + version "3.1.10" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" + integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== + dependencies: + jake "^10.8.5" + +electron-to-chromium@^1.4.668: + version "1.4.763" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.763.tgz#64f2041ed496fd6fc710b9be806fe91da9334f91" + integrity sha512-k4J8NrtJ9QrvHLRo8Q18OncqBCB7tIUyqxRcJnlonQ0ioHKYB988GcDFF3ZePmnb8eHEopDs/wPHR/iGAFgoUQ== + +emittery@^0.10.2: + version "0.10.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" + integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== + +emittery@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" + integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +enhanced-resolve@^5.16.0: + version "5.16.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz#e8bc63d51b826d6f1cbc0a150ecb5a8b0c62e567" + integrity sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.6: + version "2.1.4" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" + integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== + dependencies: + stackframe "^1.3.4" + +es-abstract@^1.17.2, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: + version "1.23.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" + integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== + dependencies: + array-buffer-byte-length "^1.0.1" + arraybuffer.prototype.slice "^1.0.3" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + data-view-buffer "^1.0.1" + data-view-byte-length "^1.0.1" + data-view-byte-offset "^1.0.0" + es-define-property "^1.0.0" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + es-set-tostringtag "^2.0.3" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.4" + get-symbol-description "^1.0.2" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + has-proto "^1.0.3" + has-symbols "^1.0.3" + hasown "^2.0.2" + internal-slot "^1.0.7" + is-array-buffer "^3.0.4" + is-callable "^1.2.7" + is-data-view "^1.0.1" + is-negative-zero "^2.0.3" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.3" + is-string "^1.0.7" + is-typed-array "^1.1.13" + is-weakref "^1.0.2" + object-inspect "^1.13.1" + object-keys "^1.1.1" + object.assign "^4.1.5" + regexp.prototype.flags "^1.5.2" + safe-array-concat "^1.1.2" + safe-regex-test "^1.0.3" + string.prototype.trim "^1.2.9" + string.prototype.trimend "^1.0.8" + string.prototype.trimstart "^1.0.8" + typed-array-buffer "^1.0.2" + typed-array-byte-length "^1.0.1" + typed-array-byte-offset "^1.0.2" + typed-array-length "^1.0.6" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.15" + +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.1.0, es-errors@^1.2.1, es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-get-iterator@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + is-arguments "^1.1.1" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.7" + isarray "^2.0.5" + stop-iteration-iterator "^1.0.0" + +es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.17: + version "1.0.19" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#117003d0e5fec237b4b5c08aded722e0c6d50ca8" + integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.3" + es-errors "^1.3.0" + es-set-tostringtag "^2.0.3" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + globalthis "^1.0.3" + has-property-descriptors "^1.0.2" + has-proto "^1.0.3" + has-symbols "^1.0.3" + internal-slot "^1.0.7" + iterator.prototype "^1.1.2" + safe-array-concat "^1.1.2" + +es-module-lexer@^1.2.1: + version "1.5.2" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.2.tgz#00b423304f2500ac59359cc9b6844951f372d497" + integrity sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA== + +es-object-atoms@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" + integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" + integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== + dependencies: + get-intrinsic "^1.2.4" + has-tostringtag "^1.0.2" + hasown "^2.0.1" + +es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== + dependencies: + hasown "^2.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escalade@^3.1.1, escalade@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@^1.8.1: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +escodegen@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-react-app@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz#73ba3929978001c5c86274c017ea57eb5fa644b4" + integrity sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA== + dependencies: + "@babel/core" "^7.16.0" + "@babel/eslint-parser" "^7.16.3" + "@rushstack/eslint-patch" "^1.1.0" + "@typescript-eslint/eslint-plugin" "^5.5.0" + "@typescript-eslint/parser" "^5.5.0" + babel-preset-react-app "^10.0.1" + confusing-browser-globals "^1.0.11" + eslint-plugin-flowtype "^8.0.3" + eslint-plugin-import "^2.25.3" + eslint-plugin-jest "^25.3.0" + eslint-plugin-jsx-a11y "^6.5.1" + eslint-plugin-react "^7.27.1" + eslint-plugin-react-hooks "^4.3.0" + eslint-plugin-testing-library "^5.0.1" + +eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-module-utils@^2.8.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" + integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== + dependencies: + debug "^3.2.7" + +eslint-plugin-flowtype@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz#e1557e37118f24734aa3122e7536a038d34a4912" + integrity sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ== + dependencies: + lodash "^4.17.21" + string-natural-compare "^3.0.1" + +eslint-plugin-import@^2.25.3: + version "2.29.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" + integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== + dependencies: + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.8.0" + hasown "^2.0.0" + is-core-module "^2.13.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" + semver "^6.3.1" + tsconfig-paths "^3.15.0" + +eslint-plugin-jest@^25.3.0: + version "25.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a" + integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== + dependencies: + "@typescript-eslint/experimental-utils" "^5.0.0" + +eslint-plugin-jest@^28.5.0: + version "28.5.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-28.5.0.tgz#b497b795de37f671eaccd38bd83030186ff5dc8d" + integrity sha512-6np6DGdmNq/eBbA7HOUNV8fkfL86PYwBfwyb8n23FXgJNTR8+ot3smRHjza9LGsBBZRypK3qyF79vMjohIL8eQ== + dependencies: + "@typescript-eslint/utils" "^6.0.0 || ^7.0.0" + +eslint-plugin-jsx-a11y@^6.5.1: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" + integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== + dependencies: + "@babel/runtime" "^7.23.2" + aria-query "^5.3.0" + array-includes "^3.1.7" + array.prototype.flatmap "^1.3.2" + ast-types-flow "^0.0.8" + axe-core "=4.7.0" + axobject-query "^3.2.1" + damerau-levenshtein "^1.0.8" + emoji-regex "^9.2.2" + es-iterator-helpers "^1.0.15" + hasown "^2.0.0" + jsx-ast-utils "^3.3.5" + language-tags "^1.0.9" + minimatch "^3.1.2" + object.entries "^1.1.7" + object.fromentries "^2.0.7" + +eslint-plugin-react-hooks@^4.3.0: + version "4.6.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596" + integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== + +eslint-plugin-react@^7.27.1, eslint-plugin-react@^7.34.1: + version "7.34.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz#6806b70c97796f5bbfb235a5d3379ece5f4da997" + integrity sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw== + dependencies: + array-includes "^3.1.7" + array.prototype.findlast "^1.2.4" + array.prototype.flatmap "^1.3.2" + array.prototype.toreversed "^1.1.2" + array.prototype.tosorted "^1.1.3" + doctrine "^2.1.0" + es-iterator-helpers "^1.0.17" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.7" + object.fromentries "^2.0.7" + object.hasown "^1.1.3" + object.values "^1.1.7" + prop-types "^15.8.1" + resolve "^2.0.0-next.5" + semver "^6.3.1" + string.prototype.matchall "^4.0.10" + +eslint-plugin-testing-library@^5.0.1: + version "5.11.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz#5b46cdae96d4a78918711c0b4792f90088e62d20" + integrity sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw== + dependencies: + "@typescript-eslint/utils" "^5.58.0" + +eslint-scope@5.1.1, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint-webpack-plugin@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz#1978cdb9edc461e4b0195a20da950cf57988347c" + integrity sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w== + dependencies: + "@types/eslint" "^7.29.0 || ^8.4.1" + jest-worker "^28.0.2" + micromatch "^4.0.5" + normalize-path "^3.0.0" + schema-utils "^4.0.0" + +eslint@^8.0.0, eslint@^8.3.0: + version "8.57.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" + integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.0" + "@humanwhocodes/config-array" "^0.11.14" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esprima@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.2.2.tgz#76a0fd66fcfe154fd292667dc264019750b1657b" + integrity sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A== + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1, estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" + integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== + dependencies: + "@jest/types" "^27.5.1" + jest-get-type "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + +expect@^29.0.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== + dependencies: + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + +express@^4.17.3: + version "4.19.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" + integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.2" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.6.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.2.9, fast-glob@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.11.3: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +filelist@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + +filesize@^8.0.6: + version "8.0.7" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" + integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.9: + version "3.3.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== + +follow-redirects@^1.0.0: + version "1.15.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +fork-ts-checker-webpack-plugin@^6.5.0: + version "6.5.3" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz#eda2eff6e22476a2688d10661688c47f611b37f3" + integrity sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ== + dependencies: + "@babel/code-frame" "^7.8.3" + "@types/json-schema" "^7.0.5" + chalk "^4.1.0" + chokidar "^3.4.2" + cosmiconfig "^6.0.0" + deepmerge "^4.2.2" + fs-extra "^9.0.0" + glob "^7.1.6" + memfs "^3.1.2" + minimatch "^3.0.4" + schema-utils "2.7.0" + semver "^7.3.2" + tapable "^1.0.0" + +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fraction.js@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^9.0.0, fs-extra@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-monkey@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.6.tgz#8ead082953e88d992cf3ff844faa907b26756da2" + integrity sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2, fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" + integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== + dependencies: + call-bind "^1.0.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^10.3.10: + version "10.3.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.15.tgz#e72bc61bc3038c90605f5dd48543dc67aaf3b50d" + integrity sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.3.6" + minimatch "^9.0.1" + minipass "^7.0.4" + path-scurry "^1.11.0" + +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globals@^15.2.0: + version "15.2.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.2.0.tgz#fbcea7f8964a71d8c6e6867ddadb9788ae1083d8" + integrity sha512-FQ5YwCHZM3nCmtb5FzEWwdUc9K5d3V/w9mzcz8iGD1gC/aOTHc6PouYu0kkKipNJqHAT7m51sqzQjEjIP+cK0A== + +globalthis@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== + dependencies: + define-properties "^1.2.1" + gopd "^1.0.1" + +globby@^11.0.4, globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +harmony-reflect@^1.4.6: + version "1.6.2" + resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" + integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1, has-proto@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== + +has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + dependencies: + whatwg-encoding "^1.0.5" + +html-entities@^2.1.0, html-entities@^2.3.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f" + integrity sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +html-minifier-terser@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== + dependencies: + camel-case "^4.1.2" + clean-css "^5.2.2" + commander "^8.3.0" + he "^1.2.0" + param-case "^3.0.4" + relateurl "^0.2.7" + terser "^5.10.0" + +html-webpack-plugin@^5.5.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz#50a8fa6709245608cb00e811eacecb8e0d7b7ea0" + integrity sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw== + dependencies: + "@types/html-minifier-terser" "^6.0.0" + html-minifier-terser "^6.0.2" + lodash "^4.17.21" + pretty-error "^4.0.0" + tapable "^2.0.0" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.5.1: + version "0.5.8" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" + integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== + +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + +http-proxy-middleware@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" + integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== + dependencies: + "@types/http-proxy" "^1.17.8" + http-proxy "^1.18.1" + is-glob "^4.0.1" + is-plain-obj "^3.0.0" + micromatch "^4.0.2" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +idb@^7.0.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b" + integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== + +identity-obj-proxy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== + dependencies: + harmony-reflect "^1.4.6" + +ignore@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + +immer@^9.0.7: + version "9.0.21" + resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" + integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== + +import-fresh@^3.1.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +internal-slot@^1.0.4, internal-slot@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" + integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== + dependencies: + es-errors "^1.3.0" + hasown "^2.0.0" + side-channel "^1.0.4" + +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +ipaddr.js@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" + integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== + +is-arguments@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-array-buffer@^3.0.2, is-array-buffer@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.13.0, is-core-module@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-data-view@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" + integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w== + dependencies: + is-typed-array "^1.1.13" + +is-date-object@^1.0.1, is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-generator-function@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-map@^2.0.2, is-map@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" + integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== + +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== + +is-root@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== + +is-set@^2.0.2, is-set@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" + integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== + +is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" + integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== + dependencies: + call-bind "^1.0.7" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== + dependencies: + which-typed-array "^1.1.14" + +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-weakmap@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" + integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-weakset@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.3.tgz#e801519df8c0c43e12ff2834eead84ec9e624007" + integrity sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ== + dependencies: + call-bind "^1.0.7" + get-intrinsic "^1.2.4" + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== + +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" + integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +iterator.prototype@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" + integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== + dependencies: + define-properties "^1.2.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" + +jackspeak@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jake@^10.8.5: + version "10.9.1" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.1.tgz#8dc96b7fcc41cb19aa502af506da4e1d56f5e62b" + integrity sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" + +jest-changed-files@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" + integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== + dependencies: + "@jest/types" "^27.5.1" + execa "^5.0.0" + throat "^6.0.1" + +jest-circus@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" + integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + throat "^6.0.1" + +jest-cli@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" + integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== + dependencies: + "@jest/core" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + prompts "^2.0.1" + yargs "^16.2.0" + +jest-config@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" + integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== + dependencies: + "@babel/core" "^7.8.0" + "@jest/test-sequencer" "^27.5.1" + "@jest/types" "^27.5.1" + babel-jest "^27.5.1" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.9" + jest-circus "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-get-type "^27.5.1" + jest-jasmine2 "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runner "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^27.5.1" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== + dependencies: + chalk "^4.0.0" + diff-sequences "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-docblock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" + integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== + dependencies: + detect-newline "^3.0.0" + +jest-each@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" + integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== + dependencies: + "@jest/types" "^27.5.1" + chalk "^4.0.0" + jest-get-type "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + +jest-environment-jsdom@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" + integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + jest-util "^27.5.1" + jsdom "^16.6.0" + +jest-environment-node@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" + integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + jest-util "^27.5.1" + +jest-get-type@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" + integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== + +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-haste-map@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" + integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== + dependencies: + "@jest/types" "^27.5.1" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^27.5.1" + jest-serializer "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + micromatch "^4.0.4" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +jest-jasmine2@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" + integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + throat "^6.0.1" + +jest-leak-detector@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" + integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== + dependencies: + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-matcher-utils@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" + integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== + dependencies: + chalk "^4.0.0" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== + dependencies: + chalk "^4.0.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-message-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" + integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^27.5.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-message-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" + integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^28.1.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^28.1.3" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.7.0" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" + integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-regex-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" + integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== + +jest-regex-util@^28.0.0: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" + integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== + +jest-resolve-dependencies@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" + integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== + dependencies: + "@jest/types" "^27.5.1" + jest-regex-util "^27.5.1" + jest-snapshot "^27.5.1" + +jest-resolve@^27.4.2, jest-resolve@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" + integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== + dependencies: + "@jest/types" "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-pnp-resolver "^1.2.2" + jest-util "^27.5.1" + jest-validate "^27.5.1" + resolve "^1.20.0" + resolve.exports "^1.1.0" + slash "^3.0.0" + +jest-runner@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" + integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== + dependencies: + "@jest/console" "^27.5.1" + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.8.1" + graceful-fs "^4.2.9" + jest-docblock "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-haste-map "^27.5.1" + jest-leak-detector "^27.5.1" + jest-message-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runtime "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + source-map-support "^0.5.6" + throat "^6.0.1" + +jest-runtime@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" + integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/globals" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + execa "^5.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-serializer@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" + integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.9" + +jest-snapshot@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" + integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== + dependencies: + "@babel/core" "^7.7.2" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.0.0" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^27.5.1" + graceful-fs "^4.2.9" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + jest-haste-map "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + natural-compare "^1.4.0" + pretty-format "^27.5.1" + semver "^7.3.2" + +jest-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" + integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" + integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== + dependencies: + "@jest/types" "^28.1.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== + dependencies: + "@jest/types" "^29.6.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" + integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== + dependencies: + "@jest/types" "^27.5.1" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^27.5.1" + leven "^3.1.0" + pretty-format "^27.5.1" + +jest-watch-typeahead@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz#b4a6826dfb9c9420da2f7bc900de59dad11266a9" + integrity sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw== + dependencies: + ansi-escapes "^4.3.1" + chalk "^4.0.0" + jest-regex-util "^28.0.0" + jest-watcher "^28.0.0" + slash "^4.0.0" + string-length "^5.0.1" + strip-ansi "^7.0.1" + +jest-watcher@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" + integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== + dependencies: + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^27.5.1" + string-length "^4.0.1" + +jest-watcher@^28.0.0: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4" + integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== + dependencies: + "@jest/test-result" "^28.1.3" + "@jest/types" "^28.1.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.10.2" + jest-util "^28.1.3" + string-length "^4.0.1" + +jest-worker@^26.2.1: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^7.0.0" + +jest-worker@^27.0.2, jest-worker@^27.4.5, jest-worker@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest-worker@^28.0.2: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" + integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^27.4.3: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" + integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== + dependencies: + "@jest/core" "^27.5.1" + import-local "^3.0.2" + jest-cli "^27.5.1" + +jiti@^1.21.0: + version "1.21.0" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" + integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsdom@^16.6.0: + version "16.7.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" + integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== + dependencies: + abab "^2.0.5" + acorn "^8.2.4" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + form-data "^3.0.0" + html-encoding-sniffer "^2.0.1" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.5.0" + ws "^7.4.6" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2, json5@^2.2.0, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonpath@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/jsonpath/-/jsonpath-1.1.1.tgz#0ca1ed8fb65bb3309248cc9d5466d12d5b0b9901" + integrity sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w== + dependencies: + esprima "1.2.2" + static-eval "2.0.2" + underscore "1.12.1" + +jsonpointer@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" + integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5: + version "3.3.5" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +klona@^2.0.4, klona@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" + integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== + +language-subtag-registry@^0.3.20: + version "0.3.22" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" + integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== + +language-tags@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.9.tgz#1ffdcd0ec0fafb4b1be7f8b11f306ad0f9c08777" + integrity sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA== + dependencies: + language-subtag-registry "^0.3.20" + +launch-editor@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" + integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== + dependencies: + picocolors "^1.0.0" + shell-quote "^1.8.1" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lilconfig@^2.0.3, lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lilconfig@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.1.tgz#9d8a246fa753106cfc205fd2d77042faca56e5e3" + integrity sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +loader-utils@^2.0.0, loader-utils@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +loader-utils@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" + integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lru-cache@^10.2.0: + version "10.2.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" + integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lz-string@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" + integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== + +magic-string@^0.25.0, magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + +make-dir@^3.0.2, make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memfs@^3.1.2, memfs@^3.4.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" + integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== + dependencies: + fs-monkey "^1.0.4" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +mini-css-extract-plugin@^2.4.5: + version "2.9.0" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz#c73a1327ccf466f69026ac22a8e8fd707b78a235" + integrity sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA== + dependencies: + schema-utils "^4.0.0" + tapable "^2.2.1" + +minimalistic-assert@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.1, minimatch@^9.0.4: + version "9.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" + integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4: + version "7.1.1" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.1.tgz#f7f85aff59aa22f110b20e27692465cf3bf89481" + integrity sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA== + +mkdirp@~0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== + dependencies: + dns-packet "^5.2.2" + thunky "^1.0.2" + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-forge@^1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +nwsapi@^2.2.0: + version "2.2.10" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.10.tgz#0b77a68e21a0b483db70b11fad055906e867cda8" + integrity sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ== + +object-assign@^4.0.1, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +object-inspect@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + +object-is@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" + integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4, object.assign@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.entries@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" + integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +object.fromentries@^2.0.7: + version "2.0.8" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" + integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + +object.getownpropertydescriptors@^2.1.0: + version "2.1.8" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.8.tgz#2f1fe0606ec1a7658154ccd4f728504f69667923" + integrity sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A== + dependencies: + array.prototype.reduce "^1.0.6" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + gopd "^1.0.1" + safe-array-concat "^1.1.2" + +object.groupby@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" + integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + +object.hasown@^1.1.3: + version "1.1.4" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.4.tgz#e270ae377e4c120cdcb7656ce66884a6218283dc" + integrity sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg== + dependencies: + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + +object.values@^1.1.0, object.values@^1.1.6, object.values@^1.1.7: + version "1.2.0" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" + integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^8.0.9, open@^8.4.0: + version "8.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-retry@^4.5.0: + version "4.6.2" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== + dependencies: + "@types/retry" "0.12.0" + retry "^0.13.1" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.0.0, parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.11.0: + version "1.11.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + +picocolors@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" + integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pirates@^4.0.1, pirates@^4.0.4: + version "4.0.6" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + +postcss-attribute-case-insensitive@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz#03d761b24afc04c09e757e92ff53716ae8ea2741" + integrity sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-browser-comments@^4: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz#bcfc86134df5807f5d3c0eefa191d42136b5e72a" + integrity sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg== + +postcss-calc@^8.2.3: + version "8.2.4" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== + dependencies: + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" + +postcss-clamp@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-clamp/-/postcss-clamp-4.1.0.tgz#7263e95abadd8c2ba1bd911b0b5a5c9c93e02363" + integrity sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-functional-notation@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz#21a909e8d7454d3612d1659e471ce4696f28caec" + integrity sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-hex-alpha@^8.0.4: + version "8.0.4" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz#c66e2980f2fbc1a63f5b079663340ce8b55f25a5" + integrity sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-rebeccapurple@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz#63fdab91d878ebc4dd4b7c02619a0c3d6a56ced0" + integrity sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-colormin@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" + integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" + +postcss-convert-values@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" + integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-custom-media@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz#c8f9637edf45fef761b014c024cee013f80529ea" + integrity sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-custom-properties@^12.1.10: + version "12.1.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz#d14bb9b3989ac4d40aaa0e110b43be67ac7845cf" + integrity sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-custom-selectors@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz#1ab4684d65f30fed175520f82d223db0337239d9" + integrity sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-dir-pseudo-class@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz#2bf31de5de76added44e0a25ecf60ae9f7c7c26c" + integrity sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-discard-comments@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" + integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== + +postcss-discard-duplicates@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" + integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== + +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== + +postcss-discard-overridden@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" + integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== + +postcss-double-position-gradients@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz#b96318fdb477be95997e86edd29c6e3557a49b91" + integrity sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +postcss-env-function@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-4.0.6.tgz#7b2d24c812f540ed6eda4c81f6090416722a8e7a" + integrity sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-flexbugs-fixes@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz#2028e145313074fc9abe276cb7ca14e5401eb49d" + integrity sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ== + +postcss-focus-visible@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz#50c9ea9afa0ee657fb75635fabad25e18d76bf9e" + integrity sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw== + dependencies: + postcss-selector-parser "^6.0.9" + +postcss-focus-within@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz#5b1d2ec603195f3344b716c0b75f61e44e8d2e20" + integrity sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ== + dependencies: + postcss-selector-parser "^6.0.9" + +postcss-font-variant@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz#efd59b4b7ea8bb06127f2d031bfbb7f24d32fa66" + integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== + +postcss-gap-properties@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz#f7e3cddcf73ee19e94ccf7cb77773f9560aa2fff" + integrity sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg== + +postcss-image-set-function@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz#08353bd756f1cbfb3b6e93182c7829879114481f" + integrity sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-initial@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-4.0.1.tgz#529f735f72c5724a0fb30527df6fb7ac54d7de42" + integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== + +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + +postcss-lab-function@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz#6fe4c015102ff7cd27d1bd5385582f67ebdbdc98" + integrity sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +postcss-load-config@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" + integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== + dependencies: + lilconfig "^3.0.0" + yaml "^2.3.4" + +postcss-loader@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" + integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== + dependencies: + cosmiconfig "^7.0.0" + klona "^2.0.5" + semver "^7.3.5" + +postcss-logical@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-5.0.4.tgz#ec75b1ee54421acc04d5921576b7d8db6b0e6f73" + integrity sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g== + +postcss-media-minmax@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz#7140bddec173e2d6d657edbd8554a55794e2a5b5" + integrity sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ== + +postcss-merge-longhand@^5.1.7: + version "5.1.7" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" + integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^5.1.1" + +postcss-merge-rules@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" + integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + cssnano-utils "^3.1.0" + postcss-selector-parser "^6.0.5" + +postcss-minify-font-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" + integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== + dependencies: + colord "^2.9.1" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-params@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" + integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== + dependencies: + browserslist "^4.21.4" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-selectors@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" + integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-modules-extract-imports@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" + integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== + +postcss-modules-local-by-default@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz#f1b9bd757a8edf4d8556e8d0f4f894260e3df78f" + integrity sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz#a43d28289a169ce2c15c00c4e64c0858e43457d5" + integrity sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" + integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== + dependencies: + postcss-selector-parser "^6.0.11" + +postcss-nesting@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-10.2.0.tgz#0b12ce0db8edfd2d8ae0aaf86427370b898890be" + integrity sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA== + dependencies: + "@csstools/selector-specificity" "^2.0.0" + postcss-selector-parser "^6.0.10" + +postcss-normalize-charset@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" + integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== + +postcss-normalize-display-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" + integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-positions@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" + integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-repeat-style@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" + integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-string@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" + integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-timing-functions@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" + integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-unicode@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" + integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-normalize-url@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" + integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== + dependencies: + normalize-url "^6.0.1" + postcss-value-parser "^4.2.0" + +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-10.0.1.tgz#464692676b52792a06b06880a176279216540dd7" + integrity sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA== + dependencies: + "@csstools/normalize.css" "*" + postcss-browser-comments "^4" + sanitize.css "*" + +postcss-opacity-percentage@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz#5b89b35551a556e20c5d23eb5260fbfcf5245da6" + integrity sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A== + +postcss-ordered-values@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" + integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== + dependencies: + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-overflow-shorthand@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz#7ed6486fec44b76f0eab15aa4866cda5d55d893e" + integrity sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-page-break@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-3.0.4.tgz#7fbf741c233621622b68d435babfb70dd8c1ee5f" + integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== + +postcss-place@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-7.0.5.tgz#95dbf85fd9656a3a6e60e832b5809914236986c4" + integrity sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-preset-env@^7.0.1: + version "7.8.3" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz#2a50f5e612c3149cc7af75634e202a5b2ad4f1e2" + integrity sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag== + dependencies: + "@csstools/postcss-cascade-layers" "^1.1.1" + "@csstools/postcss-color-function" "^1.1.1" + "@csstools/postcss-font-format-keywords" "^1.0.1" + "@csstools/postcss-hwb-function" "^1.0.2" + "@csstools/postcss-ic-unit" "^1.0.1" + "@csstools/postcss-is-pseudo-class" "^2.0.7" + "@csstools/postcss-nested-calc" "^1.0.0" + "@csstools/postcss-normalize-display-values" "^1.0.1" + "@csstools/postcss-oklab-function" "^1.1.1" + "@csstools/postcss-progressive-custom-properties" "^1.3.0" + "@csstools/postcss-stepped-value-functions" "^1.0.1" + "@csstools/postcss-text-decoration-shorthand" "^1.0.0" + "@csstools/postcss-trigonometric-functions" "^1.0.2" + "@csstools/postcss-unset-value" "^1.0.2" + autoprefixer "^10.4.13" + browserslist "^4.21.4" + css-blank-pseudo "^3.0.3" + css-has-pseudo "^3.0.4" + css-prefers-color-scheme "^6.0.3" + cssdb "^7.1.0" + postcss-attribute-case-insensitive "^5.0.2" + postcss-clamp "^4.1.0" + postcss-color-functional-notation "^4.2.4" + postcss-color-hex-alpha "^8.0.4" + postcss-color-rebeccapurple "^7.1.1" + postcss-custom-media "^8.0.2" + postcss-custom-properties "^12.1.10" + postcss-custom-selectors "^6.0.3" + postcss-dir-pseudo-class "^6.0.5" + postcss-double-position-gradients "^3.1.2" + postcss-env-function "^4.0.6" + postcss-focus-visible "^6.0.4" + postcss-focus-within "^5.0.4" + postcss-font-variant "^5.0.0" + postcss-gap-properties "^3.0.5" + postcss-image-set-function "^4.0.7" + postcss-initial "^4.0.1" + postcss-lab-function "^4.2.1" + postcss-logical "^5.0.4" + postcss-media-minmax "^5.0.0" + postcss-nesting "^10.2.0" + postcss-opacity-percentage "^1.1.2" + postcss-overflow-shorthand "^3.0.4" + postcss-page-break "^3.0.4" + postcss-place "^7.0.5" + postcss-pseudo-class-any-link "^7.1.6" + postcss-replace-overflow-wrap "^4.0.0" + postcss-selector-not "^6.0.1" + postcss-value-parser "^4.2.0" + +postcss-pseudo-class-any-link@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz#2693b221902da772c278def85a4d9a64b6e617ab" + integrity sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-reduce-initial@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" + integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + +postcss-reduce-transforms@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" + integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-replace-overflow-wrap@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319" + integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== + +postcss-selector-not@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz#8f0a709bf7d4b45222793fc34409be407537556d" + integrity sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: + version "6.0.16" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz#3b88b9f5c5abd989ef4e2fc9ec8eedd34b20fb04" + integrity sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" + integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== + dependencies: + postcss-value-parser "^4.2.0" + svgo "^2.7.0" + +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^7.0.35: + version "7.0.39" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== + dependencies: + picocolors "^0.2.1" + source-map "^0.6.1" + +postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.33, postcss@^8.4.4: + version "8.4.38" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" + integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.2.0" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + +pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + +pretty-error@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== + dependencies: + lodash "^4.17.20" + renderkid "^3.0.0" + +pretty-format@^27.0.2, pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== + dependencies: + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + +pretty-format@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" + integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== + dependencies: + "@jest/schemas" "^28.1.3" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +pretty-format@^29.0.0, pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +promise@^8.1.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== + dependencies: + asap "~2.0.6" + +prompts@^2.0.1, prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types-extra@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/prop-types-extra/-/prop-types-extra-1.1.1.tgz#58c3b74cbfbb95d304625975aa2f0848329a010b" + integrity sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew== + dependencies: + react-is "^16.3.2" + warning "^4.0.0" + +prop-types@^15.6.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +psl@^1.1.33: + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +raf@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-app-polyfill@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz#95221e0a9bd259e5ca6b177c7bb1cb6768f68fd7" + integrity sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w== + dependencies: + core-js "^3.19.2" + object-assign "^4.1.1" + promise "^8.1.0" + raf "^3.4.1" + regenerator-runtime "^0.13.9" + whatwg-fetch "^3.6.2" + +react-bootstrap@^2.10.2: + version "2.10.2" + resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-2.10.2.tgz#3b609eb0170e31b3d9ace297d3a016c202a42642" + integrity sha512-UvB7mRqQjivdZNxJNEA2yOQRB7L9N43nBnKc33K47+cH90/ujmnMwatTCwQLu83gLhrzAl8fsa6Lqig/KLghaA== + dependencies: + "@babel/runtime" "^7.22.5" + "@restart/hooks" "^0.4.9" + "@restart/ui" "^1.6.8" + "@types/react-transition-group" "^4.4.6" + classnames "^2.3.2" + dom-helpers "^5.2.1" + invariant "^2.2.4" + prop-types "^15.8.1" + prop-types-extra "^1.1.0" + react-transition-group "^4.4.5" + uncontrollable "^7.2.1" + warning "^4.0.3" + +react-dev-utils@^12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" + integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== + dependencies: + "@babel/code-frame" "^7.16.0" + address "^1.1.2" + browserslist "^4.18.1" + chalk "^4.1.2" + cross-spawn "^7.0.3" + detect-port-alt "^1.1.6" + escape-string-regexp "^4.0.0" + filesize "^8.0.6" + find-up "^5.0.0" + fork-ts-checker-webpack-plugin "^6.5.0" + global-modules "^2.0.0" + globby "^11.0.4" + gzip-size "^6.0.0" + immer "^9.0.7" + is-root "^2.1.0" + loader-utils "^3.2.0" + open "^8.4.0" + pkg-up "^3.1.0" + prompts "^2.4.2" + react-error-overlay "^6.0.11" + recursive-readdir "^2.2.2" + shell-quote "^1.7.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +react-dom@^18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" + integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.23.2" + +react-error-overlay@^6.0.11: + version "6.0.11" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" + integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== + +react-is@^16.13.1, react-is@^16.3.2: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-is@^18.0.0: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + +react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + +react-refresh@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" + integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== + +react-scripts@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-5.0.1.tgz#6285dbd65a8ba6e49ca8d651ce30645a6d980003" + integrity sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ== + dependencies: + "@babel/core" "^7.16.0" + "@pmmmwh/react-refresh-webpack-plugin" "^0.5.3" + "@svgr/webpack" "^5.5.0" + babel-jest "^27.4.2" + babel-loader "^8.2.3" + babel-plugin-named-asset-import "^0.3.8" + babel-preset-react-app "^10.0.1" + bfj "^7.0.2" + browserslist "^4.18.1" + camelcase "^6.2.1" + case-sensitive-paths-webpack-plugin "^2.4.0" + css-loader "^6.5.1" + css-minimizer-webpack-plugin "^3.2.0" + dotenv "^10.0.0" + dotenv-expand "^5.1.0" + eslint "^8.3.0" + eslint-config-react-app "^7.0.1" + eslint-webpack-plugin "^3.1.1" + file-loader "^6.2.0" + fs-extra "^10.0.0" + html-webpack-plugin "^5.5.0" + identity-obj-proxy "^3.0.0" + jest "^27.4.3" + jest-resolve "^27.4.2" + jest-watch-typeahead "^1.0.0" + mini-css-extract-plugin "^2.4.5" + postcss "^8.4.4" + postcss-flexbugs-fixes "^5.0.2" + postcss-loader "^6.2.1" + postcss-normalize "^10.0.1" + postcss-preset-env "^7.0.1" + prompts "^2.4.2" + react-app-polyfill "^3.0.0" + react-dev-utils "^12.0.1" + react-refresh "^0.11.0" + resolve "^1.20.0" + resolve-url-loader "^4.0.0" + sass-loader "^12.3.0" + semver "^7.3.5" + source-map-loader "^3.0.0" + style-loader "^3.3.1" + tailwindcss "^3.0.2" + terser-webpack-plugin "^5.2.5" + webpack "^5.64.4" + webpack-dev-server "^4.6.0" + webpack-manifest-plugin "^4.0.2" + workbox-webpack-plugin "^6.4.1" + optionalDependencies: + fsevents "^2.3.2" + +react-transition-group@^4.4.5: + version "4.4.5" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" + integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + +react@^18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react/-/react-18.3.1.tgz#49ab892009c53933625bd16b2533fc754cab2891" + integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== + dependencies: + loose-envify "^1.1.0" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +readable-stream@^2.0.1: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +recursive-readdir@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" + integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== + dependencies: + minimatch "^3.0.5" + +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.0.0" + +reflect.getprototypeof@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#3ab04c32a8390b770712b7a8633972702d278859" + integrity sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.1" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" + +regenerate-unicode-properties@^10.1.0: + version "10.1.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.13.9: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-parser@^2.2.11: + version "2.3.0" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.3.0.tgz#4bb61461b1a19b8b913f3960364bb57887f920ee" + integrity sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg== + +regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" + integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== + dependencies: + call-bind "^1.0.6" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.1" + +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== + dependencies: + "@babel/regjsgen" "^0.8.0" + regenerate "^1.4.2" + regenerate-unicode-properties "^10.1.0" + regjsparser "^0.9.1" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regjsparser@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== + dependencies: + jsesc "~0.5.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== + +renderkid@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== + dependencies: + css-select "^4.1.3" + dom-converter "^0.2.0" + htmlparser2 "^6.1.0" + lodash "^4.17.21" + strip-ansi "^6.0.1" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-url-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz#d50d4ddc746bb10468443167acf800dcd6c3ad57" + integrity sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA== + dependencies: + adjust-sourcemap-loader "^4.0.0" + convert-source-map "^1.7.0" + loader-utils "^2.0.0" + postcss "^7.0.35" + source-map "0.6.1" + +resolve.exports@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" + integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== + +resolve@^1.1.7, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.2, resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.5: + version "2.0.0-next.5" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rollup-plugin-terser@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" + integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== + dependencies: + "@babel/code-frame" "^7.10.4" + jest-worker "^26.2.1" + serialize-javascript "^4.0.0" + terser "^5.0.0" + +rollup@^2.43.1: + version "2.79.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" + integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== + optionalDependencies: + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-array-concat@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" + integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== + dependencies: + call-bind "^1.0.7" + get-intrinsic "^1.2.4" + has-symbols "^1.0.3" + isarray "^2.0.5" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex-test@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" + integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-regex "^1.1.4" + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sanitize.css@*: + version "13.0.0" + resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-13.0.0.tgz#2675553974b27964c75562ade3bd85d79879f173" + integrity sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA== + +sass-loader@^12.3.0: + version "12.6.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.6.0.tgz#5148362c8e2cdd4b950f3c63ac5d16dbfed37bcb" + integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== + dependencies: + klona "^2.0.4" + neo-async "^2.6.2" + +sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +scheduler@^0.23.2: + version "0.23.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" + integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== + dependencies: + loose-envify "^1.1.0" + +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" + +schema-utils@^2.6.5: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" + integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== + +selfsigned@^2.1.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" + integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== + dependencies: + "@types/node-forge" "^1.3.0" + node-forge "^1" + +semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0: + version "7.6.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +set-function-length@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +set-function-name@^2.0.1, set-function-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.7.3, shell-quote@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +side-channel@^1.0.4, side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + +signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + +sockjs@^0.3.24: + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + +source-list-map@^2.0.0, source-list-map@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-js@^1.0.1, source-map-js@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" + integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== + +source-map-loader@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.2.tgz#af23192f9b344daa729f6772933194cc5fa54fee" + integrity sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg== + dependencies: + abab "^2.0.5" + iconv-lite "^0.6.3" + source-map-js "^1.0.1" + +source-map-support@^0.5.6, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +source-map@^0.8.0-beta.0: + version "0.8.0-beta.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" + integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== + dependencies: + whatwg-url "^7.0.0" + +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +stackframe@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" + integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== + +static-eval@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.0.2.tgz#2d1759306b1befa688938454c546b7871f806a42" + integrity sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg== + dependencies: + escodegen "^1.8.1" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.4.0 < 2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +stop-iteration-iterator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" + integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== + dependencies: + internal-slot "^1.0.4" + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-length@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-5.0.1.tgz#3d647f497b6e8e8d41e422f7e0b23bc536c8381e" + integrity sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow== + dependencies: + char-regex "^2.0.0" + strip-ansi "^7.0.1" + +string-natural-compare@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" + integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== + +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string.prototype.matchall@^4.0.10, string.prototype.matchall@^4.0.6: + version "4.0.11" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a" + integrity sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.7" + regexp.prototype.flags "^1.5.2" + set-function-name "^2.0.2" + side-channel "^1.0.6" + +string.prototype.trim@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" + integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.0" + es-object-atoms "^1.0.0" + +string.prototype.trimend@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229" + integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +string.prototype.trimstart@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" + integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-comments@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" + integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +style-loader@^3.3.1: + version "3.3.4" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.4.tgz#f30f786c36db03a45cbd55b6a70d930c479090e7" + integrity sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w== + +stylehacks@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" + integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== + dependencies: + browserslist "^4.21.4" + postcss-selector-parser "^6.0.4" + +sucrase@^3.32.0: + version "3.35.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" + integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.2" + commander "^4.0.0" + glob "^10.3.10" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" + integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svg-parser@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +svgo@^2.7.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +tailwindcss@^3.0.2: + version "3.4.3" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.3.tgz#be48f5283df77dfced705451319a5dffb8621519" + integrity sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.5.3" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.3.0" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.21.0" + lilconfig "^2.1.0" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.0.0" + postcss "^8.4.23" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.1" + postcss-nested "^6.0.1" + postcss-selector-parser "^6.0.11" + resolve "^1.22.2" + sucrase "^3.32.0" + +tapable@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +temp-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== + +tempy@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3" + integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== + dependencies: + is-stream "^2.0.0" + temp-dir "^2.0.0" + type-fest "^0.16.0" + unique-string "^2.0.0" + +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.10: + version "5.3.10" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" + integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== + dependencies: + "@jridgewell/trace-mapping" "^0.3.20" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.1" + terser "^5.26.0" + +terser@^5.0.0, terser@^5.10.0, terser@^5.26.0: + version "5.31.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.0.tgz#06eef86f17007dbad4593f11a574c7f5eb02c6a1" + integrity sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +throat@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.2.tgz#51a3fbb5e11ae72e2cf74861ed5c8020f89f29fe" + integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ== + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tough-cookie@^4.0.0: + version "4.1.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" + integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== + dependencies: + punycode "^2.1.0" + +tr46@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== + dependencies: + punycode "^2.1.1" + +tryer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== + +ts-api-utils@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" + integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== + +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + +tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.3, tslib@^2.4.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== + dependencies: + prelude-ls "~1.1.2" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.16.0: + version "0.16.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" + integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typed-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" + integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-typed-array "^1.1.13" + +typed-array-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" + integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-byte-offset@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" + integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-length@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" + integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +uncontrollable@^7.2.1: + version "7.2.1" + resolved "https://registry.yarnpkg.com/uncontrollable/-/uncontrollable-7.2.1.tgz#1fa70ba0c57a14d5f78905d533cf63916dc75738" + integrity sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ== + dependencies: + "@babel/runtime" "^7.6.3" + "@types/react" ">=16.9.11" + invariant "^2.2.4" + react-lifecycles-compat "^3.0.4" + +uncontrollable@^8.0.1: + version "8.0.4" + resolved "https://registry.yarnpkg.com/uncontrollable/-/uncontrollable-8.0.4.tgz#a0a8307f638795162fafd0550f4a1efa0f8c5eb6" + integrity sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ== + +underscore@1.12.1: + version "1.12.1" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e" + integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg== + +upath@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +update-browserslist-db@^1.0.13: + version "1.0.15" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.15.tgz#60ed9f8cba4a728b7ecf7356f641a31e3a691d97" + integrity sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA== + dependencies: + escalade "^3.1.2" + picocolors "^1.0.0" + +uri-js@^4.2.2, uri-js@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-to-istanbul@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" + integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + +walker@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +warning@^4.0.0, warning@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + +watchpack@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.1.tgz#29308f2cac150fa8e4c92f90e0ec954a9fed7fff" + integrity sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +web-vitals@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-2.1.4.tgz#76563175a475a5e835264d373704f9dde718290c" + integrity sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg== + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +webpack-dev-middleware@^5.3.4: + version "5.3.4" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz#eb7b39281cbce10e104eb2b8bf2b63fce49a3517" + integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== + dependencies: + colorette "^2.0.10" + memfs "^3.4.3" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-server@^4.6.0: + version "4.15.2" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz#9e0c70a42a012560860adb186986da1248333173" + integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g== + dependencies: + "@types/bonjour" "^3.5.9" + "@types/connect-history-api-fallback" "^1.3.5" + "@types/express" "^4.17.13" + "@types/serve-index" "^1.9.1" + "@types/serve-static" "^1.13.10" + "@types/sockjs" "^0.3.33" + "@types/ws" "^8.5.5" + ansi-html-community "^0.0.8" + bonjour-service "^1.0.11" + chokidar "^3.5.3" + colorette "^2.0.10" + compression "^1.7.4" + connect-history-api-fallback "^2.0.0" + default-gateway "^6.0.3" + express "^4.17.3" + graceful-fs "^4.2.6" + html-entities "^2.3.2" + http-proxy-middleware "^2.0.3" + ipaddr.js "^2.0.1" + launch-editor "^2.6.0" + open "^8.0.9" + p-retry "^4.5.0" + rimraf "^3.0.2" + schema-utils "^4.0.0" + selfsigned "^2.1.1" + serve-index "^1.9.1" + sockjs "^0.3.24" + spdy "^4.0.2" + webpack-dev-middleware "^5.3.4" + ws "^8.13.0" + +webpack-manifest-plugin@^4.0.2: + version "4.1.1" + resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz#10f8dbf4714ff93a215d5a45bcc416d80506f94f" + integrity sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow== + dependencies: + tapable "^2.0.0" + webpack-sources "^2.2.0" + +webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack-sources@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.3.1.tgz#570de0af163949fe272233c2cefe1b56f74511fd" + integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== + dependencies: + source-list-map "^2.0.1" + source-map "^0.6.1" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@^5.64.4: + version "5.91.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.91.0.tgz#ffa92c1c618d18c878f06892bbdc3373c71a01d9" + integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^1.0.5" + "@webassemblyjs/ast" "^1.12.1" + "@webassemblyjs/wasm-edit" "^1.12.1" + "@webassemblyjs/wasm-parser" "^1.12.1" + acorn "^8.7.1" + acorn-import-assertions "^1.9.0" + browserslist "^4.21.10" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.16.0" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.11" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.2.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.10" + watchpack "^2.4.1" + webpack-sources "^3.2.3" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@^3.6.2: + version "3.6.20" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz#580ce6d791facec91d37c72890995a0b48d31c70" + integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg== + +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +whatwg-url@^8.0.0, whatwg-url@^8.5.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== + dependencies: + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-builtin-type@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + dependencies: + function.prototype.name "^1.1.5" + has-tostringtag "^1.0.0" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +which-collection@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" + integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== + dependencies: + is-map "^2.0.3" + is-set "^2.0.3" + is-weakmap "^2.0.2" + is-weakset "^2.0.3" + +which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9: + version "1.1.15" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" + integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.2" + +which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.5, word-wrap@~1.2.3: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +workbox-background-sync@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.6.1.tgz#08d603a33717ce663e718c30cc336f74909aff2f" + integrity sha512-trJd3ovpWCvzu4sW0E8rV3FUyIcC0W8G+AZ+VcqzzA890AsWZlUGOTSxIMmIHVusUw/FDq1HFWfy/kC/WTRqSg== + dependencies: + idb "^7.0.1" + workbox-core "6.6.1" + +workbox-broadcast-update@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.6.1.tgz#0fad9454cf8e4ace0c293e5617c64c75d8a8c61e" + integrity sha512-fBhffRdaANdeQ1V8s692R9l/gzvjjRtydBOvR6WCSB0BNE2BacA29Z4r9/RHd9KaXCPl6JTdI9q0bR25YKP8TQ== + dependencies: + workbox-core "6.6.1" + +workbox-build@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.6.1.tgz#6010e9ce550910156761448f2dbea8cfcf759cb0" + integrity sha512-INPgDx6aRycAugUixbKgiEQBWD0MPZqU5r0jyr24CehvNuLPSXp/wGOpdRJmts656lNiXwqV7dC2nzyrzWEDnw== + dependencies: + "@apideck/better-ajv-errors" "^0.3.1" + "@babel/core" "^7.11.1" + "@babel/preset-env" "^7.11.0" + "@babel/runtime" "^7.11.2" + "@rollup/plugin-babel" "^5.2.0" + "@rollup/plugin-node-resolve" "^11.2.1" + "@rollup/plugin-replace" "^2.4.1" + "@surma/rollup-plugin-off-main-thread" "^2.2.3" + ajv "^8.6.0" + common-tags "^1.8.0" + fast-json-stable-stringify "^2.1.0" + fs-extra "^9.0.1" + glob "^7.1.6" + lodash "^4.17.20" + pretty-bytes "^5.3.0" + rollup "^2.43.1" + rollup-plugin-terser "^7.0.0" + source-map "^0.8.0-beta.0" + stringify-object "^3.3.0" + strip-comments "^2.0.1" + tempy "^0.6.0" + upath "^1.2.0" + workbox-background-sync "6.6.1" + workbox-broadcast-update "6.6.1" + workbox-cacheable-response "6.6.1" + workbox-core "6.6.1" + workbox-expiration "6.6.1" + workbox-google-analytics "6.6.1" + workbox-navigation-preload "6.6.1" + workbox-precaching "6.6.1" + workbox-range-requests "6.6.1" + workbox-recipes "6.6.1" + workbox-routing "6.6.1" + workbox-strategies "6.6.1" + workbox-streams "6.6.1" + workbox-sw "6.6.1" + workbox-window "6.6.1" + +workbox-cacheable-response@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.6.1.tgz#284c2b86be3f4fd191970ace8c8e99797bcf58e9" + integrity sha512-85LY4veT2CnTCDxaVG7ft3NKaFbH6i4urZXgLiU4AiwvKqS2ChL6/eILiGRYXfZ6gAwDnh5RkuDbr/GMS4KSag== + dependencies: + workbox-core "6.6.1" + +workbox-core@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.6.1.tgz#7184776d4134c5ed2f086878c882728fc9084265" + integrity sha512-ZrGBXjjaJLqzVothoE12qTbVnOAjFrHDXpZe7coCb6q65qI/59rDLwuFMO4PcZ7jcbxY+0+NhUVztzR/CbjEFw== + +workbox-expiration@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.6.1.tgz#a841fa36676104426dbfb9da1ef6a630b4f93739" + integrity sha512-qFiNeeINndiOxaCrd2DeL1Xh1RFug3JonzjxUHc5WkvkD2u5abY3gZL1xSUNt3vZKsFFGGORItSjVTVnWAZO4A== + dependencies: + idb "^7.0.1" + workbox-core "6.6.1" + +workbox-google-analytics@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.6.1.tgz#a07a6655ab33d89d1b0b0a935ffa5dea88618c5d" + integrity sha512-1TjSvbFSLmkpqLcBsF7FuGqqeDsf+uAXO/pjiINQKg3b1GN0nBngnxLcXDYo1n/XxK4N7RaRrpRlkwjY/3ocuA== + dependencies: + workbox-background-sync "6.6.1" + workbox-core "6.6.1" + workbox-routing "6.6.1" + workbox-strategies "6.6.1" + +workbox-navigation-preload@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.6.1.tgz#61a34fe125558dd88cf09237f11bd966504ea059" + integrity sha512-DQCZowCecO+wRoIxJI2V6bXWK6/53ff+hEXLGlQL4Rp9ZaPDLrgV/32nxwWIP7QpWDkVEtllTAK5h6cnhxNxDA== + dependencies: + workbox-core "6.6.1" + +workbox-precaching@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.6.1.tgz#dedeeba10a2d163d990bf99f1c2066ac0d1a19e2" + integrity sha512-K4znSJ7IKxCnCYEdhNkMr7X1kNh8cz+mFgx9v5jFdz1MfI84pq8C2zG+oAoeE5kFrUf7YkT5x4uLWBNg0DVZ5A== + dependencies: + workbox-core "6.6.1" + workbox-routing "6.6.1" + workbox-strategies "6.6.1" + +workbox-range-requests@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.6.1.tgz#ddaf7e73af11d362fbb2f136a9063a4c7f507a39" + integrity sha512-4BDzk28govqzg2ZpX0IFkthdRmCKgAKreontYRC5YsAPB2jDtPNxqx3WtTXgHw1NZalXpcH/E4LqUa9+2xbv1g== + dependencies: + workbox-core "6.6.1" + +workbox-recipes@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.6.1.tgz#ea70d2b2b0b0bce8de0a9d94f274d4a688e69fae" + integrity sha512-/oy8vCSzromXokDA+X+VgpeZJvtuf8SkQ8KL0xmRivMgJZrjwM3c2tpKTJn6PZA6TsbxGs3Sc7KwMoZVamcV2g== + dependencies: + workbox-cacheable-response "6.6.1" + workbox-core "6.6.1" + workbox-expiration "6.6.1" + workbox-precaching "6.6.1" + workbox-routing "6.6.1" + workbox-strategies "6.6.1" + +workbox-routing@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.6.1.tgz#cba9a1c7e0d1ea11e24b6f8c518840efdc94f581" + integrity sha512-j4ohlQvfpVdoR8vDYxTY9rA9VvxTHogkIDwGdJ+rb2VRZQ5vt1CWwUUZBeD/WGFAni12jD1HlMXvJ8JS7aBWTg== + dependencies: + workbox-core "6.6.1" + +workbox-strategies@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.6.1.tgz#38d0f0fbdddba97bd92e0c6418d0b1a2ccd5b8bf" + integrity sha512-WQLXkRnsk4L81fVPkkgon1rZNxnpdO5LsO+ws7tYBC6QQQFJVI6v98klrJEjFtZwzw/mB/HT5yVp7CcX0O+mrw== + dependencies: + workbox-core "6.6.1" + +workbox-streams@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.6.1.tgz#b2f7ba7b315c27a6e3a96a476593f99c5d227d26" + integrity sha512-maKG65FUq9e4BLotSKWSTzeF0sgctQdYyTMq529piEN24Dlu9b6WhrAfRpHdCncRS89Zi2QVpW5V33NX8PgH3Q== + dependencies: + workbox-core "6.6.1" + workbox-routing "6.6.1" + +workbox-sw@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.6.1.tgz#d4c4ca3125088e8b9fd7a748ed537fa0247bd72c" + integrity sha512-R7whwjvU2abHH/lR6kQTTXLHDFU2izht9kJOvBRYK65FbwutT4VvnUAJIgHvfWZ/fokrOPhfoWYoPCMpSgUKHQ== + +workbox-webpack-plugin@^6.4.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.1.tgz#4f81cc1ad4e5d2cd7477a86ba83c84ee2d187531" + integrity sha512-zpZ+ExFj9NmiI66cFEApyjk7hGsfJ1YMOaLXGXBoZf0v7Iu6hL0ZBe+83mnDq3YYWAfA3fnyFejritjOHkFcrA== + dependencies: + fast-json-stable-stringify "^2.1.0" + pretty-bytes "^5.4.1" + upath "^1.2.0" + webpack-sources "^1.4.3" + workbox-build "6.6.1" + +workbox-window@6.6.1: + version "6.6.1" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.6.1.tgz#f22a394cbac36240d0dadcbdebc35f711bb7b89e" + integrity sha512-wil4nwOY58nTdCvif/KEZjQ2NP8uk3gGeRNy2jPBbzypU4BT4D9L8xiwbmDBpZlSgJd2xsT9FvSNU0gsxV51JQ== + dependencies: + "@types/trusted-types" "^2.0.2" + workbox-core "6.6.1" + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +ws@^7.4.6: + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +ws@^8.13.0: + version "8.17.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea" + integrity sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow== + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yaml@^2.3.4: + version "2.4.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.2.tgz#7a2b30f2243a5fc299e1f14ca58d475ed4bc5362" + integrity sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -- GitLab From 137e6914a96a899f03073a40cc43463f46a7adc7 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Mon, 27 May 2024 00:30:24 +0200 Subject: [PATCH 02/44] added vite --- react-ui/.eslintrc.cjs | 18 + react-ui/.prettierrc | 6 + react-ui/{src => assets}/logo.svg | 0 react-ui/eslint.config.js | 40 - react-ui/{public => }/index.html | 7 +- react-ui/package.json | 109 ++- react-ui/src/App.test.js | 9 - react-ui/src/index.js | 18 - react-ui/src/index.tsx | 16 + react-ui/src/{ => pages/landingpage}/App.css | 0 react-ui/src/pages/landingpage/App.test.tsx | 9 + .../src/{App.js => pages/landingpage/App.tsx} | 10 +- react-ui/src/reportWebVitals.js | 13 - react-ui/src/setupTests.js | 2 +- react-ui/src/stores/api.store.ts | 26 + .../enhancer/monitorReducer.enhancer.ts | 19 + .../stores/middleware/logger.middleware.ts | 10 + react-ui/src/stores/slices/example.reducer.ts | 13 + react-ui/tsconfig.eslint.json | 8 + react-ui/tsconfig.json | 30 + react-ui/tsconfig.node.json | 11 + react-ui/vite.config.mjs | 18 + react-ui/yarn.lock | 896 +++++++++++++++--- 23 files changed, 1022 insertions(+), 266 deletions(-) create mode 100644 react-ui/.eslintrc.cjs create mode 100644 react-ui/.prettierrc rename react-ui/{src => assets}/logo.svg (100%) delete mode 100644 react-ui/eslint.config.js rename react-ui/{public => }/index.html (88%) delete mode 100644 react-ui/src/App.test.js delete mode 100644 react-ui/src/index.js create mode 100644 react-ui/src/index.tsx rename react-ui/src/{ => pages/landingpage}/App.css (100%) create mode 100644 react-ui/src/pages/landingpage/App.test.tsx rename react-ui/src/{App.js => pages/landingpage/App.tsx} (84%) delete mode 100644 react-ui/src/reportWebVitals.js create mode 100644 react-ui/src/stores/api.store.ts create mode 100644 react-ui/src/stores/enhancer/monitorReducer.enhancer.ts create mode 100644 react-ui/src/stores/middleware/logger.middleware.ts create mode 100644 react-ui/src/stores/slices/example.reducer.ts create mode 100644 react-ui/tsconfig.eslint.json create mode 100644 react-ui/tsconfig.json create mode 100644 react-ui/tsconfig.node.json create mode 100644 react-ui/vite.config.mjs diff --git a/react-ui/.eslintrc.cjs b/react-ui/.eslintrc.cjs new file mode 100644 index 000000000..d6c953795 --- /dev/null +++ b/react-ui/.eslintrc.cjs @@ -0,0 +1,18 @@ +module.exports = { + root: true, + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:react-hooks/recommended', + ], + ignorePatterns: ['dist', '.eslintrc.cjs'], + parser: '@typescript-eslint/parser', + plugins: ['react-refresh'], + rules: { + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, +} diff --git a/react-ui/.prettierrc b/react-ui/.prettierrc new file mode 100644 index 000000000..ced76ac70 --- /dev/null +++ b/react-ui/.prettierrc @@ -0,0 +1,6 @@ +{ + "semi": false, + "singleQuote": true, + "trailingComma": "es5", + "tabWidth": 4 +} diff --git a/react-ui/src/logo.svg b/react-ui/assets/logo.svg similarity index 100% rename from react-ui/src/logo.svg rename to react-ui/assets/logo.svg diff --git a/react-ui/eslint.config.js b/react-ui/eslint.config.js deleted file mode 100644 index d48899f21..000000000 --- a/react-ui/eslint.config.js +++ /dev/null @@ -1,40 +0,0 @@ -const react = require("eslint-plugin-react"); -const globals = require("globals"); -const jest = require("eslint-plugin-jest"); - -const reactRecommended = require("eslint-plugin-react/configs/recommended"); - -module.exports = [ - { - files: ["**/*.{js,jsx,mjs,cjs,ts,tsx}"], - ignores: ["src/api/**/*", "eslint.config.js"], - - rules: { - ...reactRecommended.rules, - "no-unused-vars": "warn", - "no-undef": "warn", - "max-len": ["warn", { "comments": 65 }] - }, - - plugins: { - jest, - react, - }, - - languageOptions: { - ...reactRecommended.languageOptions, - globals: { - ...globals.browser, - test: true, - expect: true, - }, - }, - settings: { - react: { - pragma: "React", // Pragma to use, default to "React" - version: "detect", // React version. "detect" automatically picks the version you have installed. - flowVersion: "0.53", // Flow version - }, - }, - }, -]; diff --git a/react-ui/public/index.html b/react-ui/index.html similarity index 88% rename from react-ui/public/index.html rename to react-ui/index.html index aa069f27c..e444585a7 100644 --- a/react-ui/public/index.html +++ b/react-ui/index.html @@ -2,19 +2,19 @@ <html lang="en"> <head> <meta charset="utf-8" /> - <link rel="icon" href="%PUBLIC_URL%/favicon.ico" /> + <link rel="icon" href="favicon.ico" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="theme-color" content="#000000" /> <meta name="description" content="Web site created using create-react-app" /> - <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" /> + <link rel="apple-touch-icon" href="logo192.png" /> <!-- manifest.json provides metadata used when your web app is installed on a user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/ --> - <link rel="manifest" href="%PUBLIC_URL%/manifest.json" /> + <link rel="manifest" href="manifest.json" /> <!-- Notice the use of %PUBLIC_URL% in the tags above. It will be replaced with the URL of the `public` folder during the build. @@ -29,6 +29,7 @@ <body> <noscript>You need to enable JavaScript to run this app.</noscript> <div id="root"></div> + <script type="module" src="/src/index.tsx"></script> <!-- This HTML file is a template. If you open it directly in the browser, you will see an empty page. diff --git a/react-ui/package.json b/react-ui/package.json index 13c386f25..13bfaba15 100644 --- a/react-ui/package.json +++ b/react-ui/package.json @@ -1,47 +1,66 @@ { - "name": "react-ui", - "version": "0.1.0", - "private": true, - "dependencies": { - "@testing-library/jest-dom": "^5.17.0", - "@testing-library/react": "^13.4.0", - "@testing-library/user-event": "^13.5.0", - "bootstrap": "^5.3.3", - "react": "^18.3.1", - "react-bootstrap": "^2.10.2", - "react-dom": "^18.3.1", - "react-scripts": "5.0.1", - "web-vitals": "^2.1.4" - }, - "scripts": { - "start": "react-scripts start", - "build": "react-scripts build", - "test": "react-scripts test", - "eject": "react-scripts eject", - "build::api": "./scripts/build-api.sh" - }, - "eslintConfig": { - "extends": [ - "react-app", - "react-app/jest" - ] - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, - "devDependencies": { - "eslint": "^8.0.0", - "eslint-plugin-jest": "^28.5.0", - "eslint-plugin-react": "^7.34.1", - "globals": "^15.2.0" - } + "name": "react-ui", + "version": "0.1.0", + "private": true, + "dependencies": { + "@reduxjs/toolkit": "^2.2.4", + "@testing-library/jest-dom": "^5.17.0", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^13.5.0", + "bootstrap": "^5.3.3", + "react": "^18.3.1", + "react-bootstrap": "^2.10.2", + "react-dom": "^18.3.1", + "react-redux": "^9.1.2", + "react-scripts": "5.0.1", + "redux": "^5.0.1", + "web-vitals": "^2.1.4" + }, + "scripts": { + "start": "vite", + "build": "tsc && vite build", + "test": "react-scripts test", + "build::api": "./scripts/build-api.sh", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "lint::fix": "eslint src --ext .js,.jsx,.ts,.tsx --fix" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "devDependencies": { + "@babel/runtime": "^7.21.5", + "eslint-config-airbnb-typescript": "^16.1.0", + "eslint-config-prettier": "^8.0.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-react": "^7.32.2", + "prettier": "^2.0.0", + + "@types/react": "^18.2.66", + "@types/react-dom": "^18.2.22", + "@typescript-eslint/eslint-plugin": "^7.2.0", + "@typescript-eslint/parser": "^7.2.0", + "@vitejs/plugin-react": "^4.2.1", + "eslint": "^8.57.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.6", + "typescript": "^5.2.2", + "vite": "^5.2.0" + } } diff --git a/react-ui/src/App.test.js b/react-ui/src/App.test.js deleted file mode 100644 index 8ed0a9e0b..000000000 --- a/react-ui/src/App.test.js +++ /dev/null @@ -1,9 +0,0 @@ -import { render, screen } from '@testing-library/react'; -import App from './App'; -import React from 'react'; - -test('renders learn react link', () => { - render(<App />); - const linkElement = screen.getByText(/learn react/i); - expect(linkElement).toBeInTheDocument(); -}); diff --git a/react-ui/src/index.js b/react-ui/src/index.js deleted file mode 100644 index 8086ab778..000000000 --- a/react-ui/src/index.js +++ /dev/null @@ -1,18 +0,0 @@ -import React from "react"; -import ReactDOM from "react-dom/client"; -import "./index.css"; -import App from "./App"; -import reportWebVitals from "./reportWebVitals"; - -const root = ReactDOM.createRoot(document.getElementById("root")); - -root.render( - <React.StrictMode> - <App /> - </React.StrictMode> -); - -// If you want to start measuring performance in your app, pass a function -// to log results (for example: reportWebVitals(console.log)) -// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals -reportWebVitals(); diff --git a/react-ui/src/index.tsx b/react-ui/src/index.tsx new file mode 100644 index 000000000..4d179a46b --- /dev/null +++ b/react-ui/src/index.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import ReactDOM, { Container } from 'react-dom/client' +import './index.css' +import App from './pages/landingpage/App' +import initStore from './stores/api.store' + +initStore({}) + +const root = ReactDOM.createRoot(document.getElementById('root') as Container) + +root.render( + <React.StrictMode> + <App /> + </React.StrictMode> +) + diff --git a/react-ui/src/App.css b/react-ui/src/pages/landingpage/App.css similarity index 100% rename from react-ui/src/App.css rename to react-ui/src/pages/landingpage/App.css diff --git a/react-ui/src/pages/landingpage/App.test.tsx b/react-ui/src/pages/landingpage/App.test.tsx new file mode 100644 index 000000000..103072bab --- /dev/null +++ b/react-ui/src/pages/landingpage/App.test.tsx @@ -0,0 +1,9 @@ +import { render, screen } from '@testing-library/react' +import App from './App' +import React from 'react' + +test('renders learn react link', () => { + render(<App />) + const linkElement = screen.getByText(/learn react/i) + expect(linkElement).toBeInTheDocument() +}) diff --git a/react-ui/src/App.js b/react-ui/src/pages/landingpage/App.tsx similarity index 84% rename from react-ui/src/App.js rename to react-ui/src/pages/landingpage/App.tsx index 09ab5e99d..77f66b4bc 100644 --- a/react-ui/src/App.js +++ b/react-ui/src/pages/landingpage/App.tsx @@ -1,7 +1,7 @@ -import "./App.css"; -import logo from "./logo.svg"; +import './App.css' +import logo from '@assets/logo.svg' -import React from "react"; +import React from 'react' function App() { return ( @@ -21,7 +21,7 @@ function App() { </a> </header> </div> - ); + ) } -export default App; +export default App diff --git a/react-ui/src/reportWebVitals.js b/react-ui/src/reportWebVitals.js deleted file mode 100644 index 5253d3ad9..000000000 --- a/react-ui/src/reportWebVitals.js +++ /dev/null @@ -1,13 +0,0 @@ -const reportWebVitals = onPerfEntry => { - if (onPerfEntry && onPerfEntry instanceof Function) { - import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { - getCLS(onPerfEntry); - getFID(onPerfEntry); - getFCP(onPerfEntry); - getLCP(onPerfEntry); - getTTFB(onPerfEntry); - }); - } -}; - -export default reportWebVitals; diff --git a/react-ui/src/setupTests.js b/react-ui/src/setupTests.js index 8f2609b7b..52aaef1d2 100644 --- a/react-ui/src/setupTests.js +++ b/react-ui/src/setupTests.js @@ -2,4 +2,4 @@ // allows you to do things like: // expect(element).toHaveTextContent(/react/i) // learn more: https://github.com/testing-library/jest-dom -import '@testing-library/jest-dom'; +import '@testing-library/jest-dom' diff --git a/react-ui/src/stores/api.store.ts b/react-ui/src/stores/api.store.ts new file mode 100644 index 000000000..942865e23 --- /dev/null +++ b/react-ui/src/stores/api.store.ts @@ -0,0 +1,26 @@ +import { combineReducers } from 'redux' +import monitorReducerEnhancer from './enhancer/monitorReducer.enhancer' +import loggerMiddleware from './middleware/logger.middleware' +import mneReducer from './slices/example.reducer' +import { configureStore } from '@reduxjs/toolkit' + +const getReducers = () => { + return combineReducers({ + mneReducer, + }) +} + +const init = (preloadedState: any) => { + const store: any = configureStore({ + reducer: getReducers(), + middleware: (getDefaultMiddleware: any) => + getDefaultMiddleware().concat(loggerMiddleware), + preloadedState, + enhancers: (getDefaultEnhancers: any) => + getDefaultEnhancers().concat(monitorReducerEnhancer), + }) + + return store +} + +export default init diff --git a/react-ui/src/stores/enhancer/monitorReducer.enhancer.ts b/react-ui/src/stores/enhancer/monitorReducer.enhancer.ts new file mode 100644 index 000000000..0b51c8efd --- /dev/null +++ b/react-ui/src/stores/enhancer/monitorReducer.enhancer.ts @@ -0,0 +1,19 @@ +const round = (number: number) => Math.round(number * 100) / 100 + +const monitorReducerEnhancer = + (createStore: any) => (reducer: any, initialState: any, enhancer: any) => { + const monitoredReducer = (state: any, action: any) => { + const start = performance.now() + const newState = reducer(state, action) + const end = performance.now() + const diff = round(end - start) + + console.log('reducer process time:', diff) + + return newState + } + + return createStore(monitoredReducer, initialState, enhancer) + } + +export default monitorReducerEnhancer diff --git a/react-ui/src/stores/middleware/logger.middleware.ts b/react-ui/src/stores/middleware/logger.middleware.ts new file mode 100644 index 000000000..f1dd0d42b --- /dev/null +++ b/react-ui/src/stores/middleware/logger.middleware.ts @@ -0,0 +1,10 @@ +const logger = (store: any) => (next: any) => (action: any) => { + console.group(action.type) + console.info('dispatching', action) + const result = next(action) + console.log('next state', store.getState()) + console.groupEnd() + return result +} + +export default logger diff --git a/react-ui/src/stores/slices/example.reducer.ts b/react-ui/src/stores/slices/example.reducer.ts new file mode 100644 index 000000000..5a343e4a2 --- /dev/null +++ b/react-ui/src/stores/slices/example.reducer.ts @@ -0,0 +1,13 @@ +import { PayloadAction, createSlice } from '@reduxjs/toolkit' + +const mneSlice = createSlice({ + name: 'test', + initialState: 0, + reducers: { + increment: (state, action: PayloadAction<number>) => + state + action.payload, + }, +}) + +const mneReducer = mneSlice.reducer +export default mneReducer diff --git a/react-ui/tsconfig.eslint.json b/react-ui/tsconfig.eslint.json new file mode 100644 index 000000000..40086b5ba --- /dev/null +++ b/react-ui/tsconfig.eslint.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "allowJs": true, + "types": ["jest"] + }, + "include": ["src", "tests"] +} diff --git a/react-ui/tsconfig.json b/react-ui/tsconfig.json new file mode 100644 index 000000000..1d185143f --- /dev/null +++ b/react-ui/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + + "baseUrl": ".", + "paths": { + "@assets/*": ["assets/*"], + } + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] + } \ No newline at end of file diff --git a/react-ui/tsconfig.node.json b/react-ui/tsconfig.node.json new file mode 100644 index 000000000..97ede7ee6 --- /dev/null +++ b/react-ui/tsconfig.node.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true + }, + "include": ["vite.config.ts"] +} diff --git a/react-ui/vite.config.mjs b/react-ui/vite.config.mjs new file mode 100644 index 000000000..3454c14e0 --- /dev/null +++ b/react-ui/vite.config.mjs @@ -0,0 +1,18 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +export default defineConfig({ + plugins: [react()], + server: { + port: 3000, // Standardmäßig wird Port 3000 verwendet, kann aber angepasst werden + }, + resolve: { + alias: { + '@assets': '/assets', + }, + }, + // build: { + // outDir: 'dist', // Standardmäßiger Ausgabepfad für den Build + // sourcemap: true, // Source Maps für den Build aktivieren + // }, +}); \ No newline at end of file diff --git a/react-ui/yarn.lock b/react-ui/yarn.lock index 6da56475a..788a45858 100644 --- a/react-ui/yarn.lock +++ b/react-ui/yarn.lock @@ -37,11 +37,24 @@ "@babel/highlight" "^7.24.2" picocolors "^1.0.0" +"@babel/code-frame@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.6.tgz#ab88da19344445c3d8889af2216606d3329f3ef2" + integrity sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA== + dependencies: + "@babel/highlight" "^7.24.6" + picocolors "^1.0.0" + "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.4": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== +"@babel/compat-data@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.6.tgz#b3600217688cabb26e25f8e467019e66d71b7ae2" + integrity sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ== + "@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" @@ -63,6 +76,27 @@ json5 "^2.2.3" semver "^6.3.1" +"@babel/core@^7.24.5": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.6.tgz#8650e0e4b03589ebe886c4e4a60398db0a7ec787" + integrity sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.24.6" + "@babel/generator" "^7.24.6" + "@babel/helper-compilation-targets" "^7.24.6" + "@babel/helper-module-transforms" "^7.24.6" + "@babel/helpers" "^7.24.6" + "@babel/parser" "^7.24.6" + "@babel/template" "^7.24.6" + "@babel/traverse" "^7.24.6" + "@babel/types" "^7.24.6" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + "@babel/eslint-parser@^7.16.3": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.24.5.tgz#3b0f7d383a540329a30a6a9937cfc89461d26217" @@ -82,6 +116,16 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" +"@babel/generator@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.6.tgz#dfac82a228582a9d30c959fe50ad28951d4737a7" + integrity sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg== + dependencies: + "@babel/types" "^7.24.6" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" @@ -107,6 +151,17 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-compilation-targets@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz#4a51d681f7680043d38e212715e2a7b1ad29cb51" + integrity sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg== + dependencies: + "@babel/compat-data" "^7.24.6" + "@babel/helper-validator-option" "^7.24.6" + browserslist "^4.22.2" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.1", "@babel/helper-create-class-features-plugin@^7.24.4", "@babel/helper-create-class-features-plugin@^7.24.5": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz#7d19da92c7e0cd8d11c09af2ce1b8e7512a6e723" @@ -147,6 +202,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== +"@babel/helper-environment-visitor@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz#ac7ad5517821641550f6698dd5468f8cef78620d" + integrity sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g== + "@babel/helper-function-name@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" @@ -155,6 +215,14 @@ "@babel/template" "^7.22.15" "@babel/types" "^7.23.0" +"@babel/helper-function-name@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz#cebdd063386fdb95d511d84b117e51fc68fec0c8" + integrity sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w== + dependencies: + "@babel/template" "^7.24.6" + "@babel/types" "^7.24.6" + "@babel/helper-hoist-variables@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" @@ -162,6 +230,13 @@ dependencies: "@babel/types" "^7.22.5" +"@babel/helper-hoist-variables@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz#8a7ece8c26756826b6ffcdd0e3cf65de275af7f9" + integrity sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA== + dependencies: + "@babel/types" "^7.24.6" + "@babel/helper-member-expression-to-functions@^7.23.0", "@babel/helper-member-expression-to-functions@^7.24.5": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz#5981e131d5c7003c7d1fa1ad49e86c9b097ec475" @@ -176,6 +251,13 @@ dependencies: "@babel/types" "^7.24.0" +"@babel/helper-module-imports@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz#65e54ffceed6a268dc4ce11f0433b82cfff57852" + integrity sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g== + dependencies: + "@babel/types" "^7.24.6" + "@babel/helper-module-transforms@^7.23.3", "@babel/helper-module-transforms@^7.24.5": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545" @@ -187,6 +269,17 @@ "@babel/helper-split-export-declaration" "^7.24.5" "@babel/helper-validator-identifier" "^7.24.5" +"@babel/helper-module-transforms@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.6.tgz#22346ed9df44ce84dee850d7433c5b73fab1fe4e" + integrity sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA== + dependencies: + "@babel/helper-environment-visitor" "^7.24.6" + "@babel/helper-module-imports" "^7.24.6" + "@babel/helper-simple-access" "^7.24.6" + "@babel/helper-split-export-declaration" "^7.24.6" + "@babel/helper-validator-identifier" "^7.24.6" + "@babel/helper-optimise-call-expression@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" @@ -199,6 +292,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a" integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ== +"@babel/helper-plugin-utils@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.6.tgz#fa02a32410a15a6e8f8185bcbf608f10528d2a24" + integrity sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg== + "@babel/helper-remap-async-to-generator@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" @@ -224,6 +322,13 @@ dependencies: "@babel/types" "^7.24.5" +"@babel/helper-simple-access@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.6.tgz#1d6e04d468bba4fc963b4906f6dac6286cfedff1" + integrity sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g== + dependencies: + "@babel/types" "^7.24.6" + "@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" @@ -238,21 +343,43 @@ dependencies: "@babel/types" "^7.24.5" +"@babel/helper-split-export-declaration@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz#e830068f7ba8861c53b7421c284da30ae656d7a3" + integrity sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw== + dependencies: + "@babel/types" "^7.24.6" + "@babel/helper-string-parser@^7.24.1": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== +"@babel/helper-string-parser@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz#28583c28b15f2a3339cfafafeaad42f9a0e828df" + integrity sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q== + "@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.24.5": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62" integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== +"@babel/helper-validator-identifier@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz#08bb6612b11bdec78f3feed3db196da682454a5e" + integrity sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw== + "@babel/helper-validator-option@^7.23.5": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== +"@babel/helper-validator-option@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz#59d8e81c40b7d9109ab7e74457393442177f460a" + integrity sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ== + "@babel/helper-wrap-function@^7.22.20": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.5.tgz#335f934c0962e2c1ed1fb9d79e06a56115067c09" @@ -271,6 +398,14 @@ "@babel/traverse" "^7.24.5" "@babel/types" "^7.24.5" +"@babel/helpers@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.6.tgz#cd124245299e494bd4e00edda0e4ea3545c2c176" + integrity sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA== + dependencies: + "@babel/template" "^7.24.6" + "@babel/types" "^7.24.6" + "@babel/highlight@^7.24.2": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e" @@ -281,11 +416,26 @@ js-tokens "^4.0.0" picocolors "^1.0.0" +"@babel/highlight@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.6.tgz#6d610c1ebd2c6e061cade0153bf69b0590b7b3df" + integrity sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ== + dependencies: + "@babel/helper-validator-identifier" "^7.24.6" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== +"@babel/parser@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.6.tgz#5e030f440c3c6c78d195528c3b688b101a365328" + integrity sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q== + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.5": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz#4c3685eb9cd790bcad2843900fe0250c91ccf895" @@ -869,6 +1019,20 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.22.5" +"@babel/plugin-transform-react-jsx-self@^7.24.5": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.6.tgz#4fa4870d594d6840d724d2006d0f98b19be6f502" + integrity sha512-FfZfHXtQ5jYPQsCRyLpOv2GeLIIJhs8aydpNh39vRDjhD411XcfWDni5i7OjP/Rs8GAtTn7sWFFELJSHqkIxYg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.6" + +"@babel/plugin-transform-react-jsx-source@^7.24.1": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.6.tgz#4e1503f24ca5fccb1fc7f20c57426899d5ce5c1f" + integrity sha512-BQTBCXmFRreU3oTUXcGKuPOfXAGb1liNY4AvvFKsOBAJ89RKcTsIrSsnMYkj59fNa66OFKnSa4AJZfy5Y4B9WA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.6" + "@babel/plugin-transform-react-jsx@^7.22.5", "@babel/plugin-transform-react-jsx@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" @@ -1116,7 +1280,7 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.21.5", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.5.tgz#230946857c053a36ccc66e1dd03b17dd0c4ed02c" integrity sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g== @@ -1132,6 +1296,15 @@ "@babel/parser" "^7.24.0" "@babel/types" "^7.24.0" +"@babel/template@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.6.tgz#048c347b2787a6072b24c723664c8d02b67a44f9" + integrity sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw== + dependencies: + "@babel/code-frame" "^7.24.6" + "@babel/parser" "^7.24.6" + "@babel/types" "^7.24.6" + "@babel/traverse@^7.24.5", "@babel/traverse@^7.7.2": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8" @@ -1148,6 +1321,22 @@ debug "^4.3.1" globals "^11.1.0" +"@babel/traverse@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.6.tgz#0941ec50cdeaeacad0911eb67ae227a4f8424edc" + integrity sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw== + dependencies: + "@babel/code-frame" "^7.24.6" + "@babel/generator" "^7.24.6" + "@babel/helper-environment-visitor" "^7.24.6" + "@babel/helper-function-name" "^7.24.6" + "@babel/helper-hoist-variables" "^7.24.6" + "@babel/helper-split-export-declaration" "^7.24.6" + "@babel/parser" "^7.24.6" + "@babel/types" "^7.24.6" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7" @@ -1157,6 +1346,15 @@ "@babel/helper-validator-identifier" "^7.24.5" to-fast-properties "^2.0.0" +"@babel/types@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.6.tgz#ba4e1f59870c10dc2fa95a274ac4feec23b21912" + integrity sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ== + dependencies: + "@babel/helper-string-parser" "^7.24.6" + "@babel/helper-validator-identifier" "^7.24.6" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -1273,6 +1471,121 @@ resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz#2cbcf822bf3764c9658c4d2e568bd0c0cb748016" integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== +"@esbuild/aix-ppc64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537" + integrity sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g== + +"@esbuild/android-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9" + integrity sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg== + +"@esbuild/android-arm@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995" + integrity sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w== + +"@esbuild/android-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98" + integrity sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg== + +"@esbuild/darwin-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz#6e8517a045ddd86ae30c6608c8475ebc0c4000bb" + integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA== + +"@esbuild/darwin-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz#90ed098e1f9dd8a9381695b207e1cff45540a0d0" + integrity sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA== + +"@esbuild/freebsd-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911" + integrity sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw== + +"@esbuild/freebsd-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c" + integrity sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw== + +"@esbuild/linux-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5" + integrity sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A== + +"@esbuild/linux-arm@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c" + integrity sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg== + +"@esbuild/linux-ia32@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa" + integrity sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig== + +"@esbuild/linux-loong64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5" + integrity sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ== + +"@esbuild/linux-mips64el@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa" + integrity sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA== + +"@esbuild/linux-ppc64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20" + integrity sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg== + +"@esbuild/linux-riscv64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300" + integrity sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg== + +"@esbuild/linux-s390x@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685" + integrity sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ== + +"@esbuild/linux-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz#86eca35203afc0d9de0694c64ec0ab0a378f6fff" + integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== + +"@esbuild/netbsd-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6" + integrity sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ== + +"@esbuild/openbsd-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf" + integrity sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ== + +"@esbuild/sunos-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f" + integrity sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w== + +"@esbuild/win32-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90" + integrity sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ== + +"@esbuild/win32-ia32@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23" + integrity sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ== + +"@esbuild/win32-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc" + integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== + "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -1280,7 +1593,7 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": version "4.10.0" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== @@ -1685,12 +1998,22 @@ integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== "@react-aria/ssr@^3.5.0": - version "3.9.3" - resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.9.3.tgz#9e7d4e019965aaf86cec3da2411a392be49ac2b3" - integrity sha512-5bUZ93dmvHFcmfUcEN7qzYe8yQQ8JY+nHN6m9/iSDCQ/QmCiE0kWXYwhurjw5ch6I8WokQzx66xKIMHBAa4NNA== + version "3.9.4" + resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.9.4.tgz#9da8b10342c156e816dbfa4c9e713b21f274d7ab" + integrity sha512-4jmAigVq409qcJvQyuorsmBR4+9r3+JEC60wC+Y0MZV0HCtTmm8D9guYXlJMdx0SSkgj0hHAyFm/HvPNFofCoQ== dependencies: "@swc/helpers" "^0.5.0" +"@reduxjs/toolkit@^2.2.4": + version "2.2.5" + resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-2.2.5.tgz#c0d2d8482ef80722bebe015ff05b06c34bfb6e0d" + integrity sha512-aeFA/s5NCG7NoJe/MhmwREJxRkDs0ZaSqt0MxhWUrwCf1UQXpwR87RROJEql0uAkLI6U7snBOYOcKw83ew3FPg== + dependencies: + immer "^10.0.3" + redux "^5.0.1" + redux-thunk "^3.1.0" + reselect "^5.1.0" + "@restart/hooks@^0.4.9": version "0.4.16" resolved "https://registry.yarnpkg.com/@restart/hooks/-/hooks-0.4.16.tgz#95ae8ac1cc7e2bd4fed5e39800ff85604c6d59fb" @@ -1750,10 +2073,90 @@ estree-walker "^1.0.1" picomatch "^2.2.2" +"@rollup/rollup-android-arm-eabi@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz#bbd0e616b2078cd2d68afc9824d1fadb2f2ffd27" + integrity sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ== + +"@rollup/rollup-android-arm64@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz#97255ef6384c5f73f4800c0de91f5f6518e21203" + integrity sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA== + +"@rollup/rollup-darwin-arm64@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz#b6dd74e117510dfe94541646067b0545b42ff096" + integrity sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w== + +"@rollup/rollup-darwin-x64@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz#e07d76de1cec987673e7f3d48ccb8e106d42c05c" + integrity sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA== + +"@rollup/rollup-linux-arm-gnueabihf@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz#9f1a6d218b560c9d75185af4b8bb42f9f24736b8" + integrity sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA== + +"@rollup/rollup-linux-arm-musleabihf@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz#53618b92e6ffb642c7b620e6e528446511330549" + integrity sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A== + +"@rollup/rollup-linux-arm64-gnu@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz#99a7ba5e719d4f053761a698f7b52291cefba577" + integrity sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw== + +"@rollup/rollup-linux-arm64-musl@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz#f53db99a45d9bc00ce94db8a35efa7c3c144a58c" + integrity sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ== + +"@rollup/rollup-linux-powerpc64le-gnu@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz#cbb0837408fe081ce3435cf3730e090febafc9bf" + integrity sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA== + +"@rollup/rollup-linux-riscv64-gnu@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz#8ed09c1d1262ada4c38d791a28ae0fea28b80cc9" + integrity sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg== + +"@rollup/rollup-linux-s390x-gnu@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz#938138d3c8e0c96f022252a28441dcfb17afd7ec" + integrity sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg== + +"@rollup/rollup-linux-x64-gnu@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz#1a7481137a54740bee1ded4ae5752450f155d942" + integrity sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w== + +"@rollup/rollup-linux-x64-musl@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz#f1186afc601ac4f4fc25fac4ca15ecbee3a1874d" + integrity sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg== + +"@rollup/rollup-win32-arm64-msvc@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz#ed6603e93636a96203c6915be4117245c1bd2daf" + integrity sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA== + +"@rollup/rollup-win32-ia32-msvc@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz#14e0b404b1c25ebe6157a15edb9c46959ba74c54" + integrity sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg== + +"@rollup/rollup-win32-x64-msvc@4.18.0": + version "4.18.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz#5d694d345ce36b6ecf657349e03eb87297e68da4" + integrity sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g== + "@rushstack/eslint-patch@^1.1.0": - version "1.10.2" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.2.tgz#053f1540703faa81dea2966b768ee5581c66aeda" - integrity sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw== + version "1.10.3" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz#391d528054f758f81e53210f1a1eebcf1a8b1d20" + integrity sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg== "@sinclair/typebox@^0.24.1": version "0.24.51" @@ -1959,7 +2362,7 @@ resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.4.tgz#1a31c3d378850d2778dabb6374d036dcba4ba708" integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.20.5": version "7.20.5" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== @@ -1986,9 +2389,9 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" - integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== + version "7.20.6" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" + integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== dependencies: "@babel/types" "^7.20.7" @@ -2038,7 +2441,7 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^1.0.5": +"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== @@ -2049,9 +2452,9 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.19.0" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz#3ae8ab3767d98d0b682cda063c3339e1e86ccfaa" - integrity sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ== + version "4.19.1" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.1.tgz#57d34698bb580720fd6e3c360d4b2fdef579b979" + integrity sha512-ej0phymbFLoCB26dbbq5PGScsf2JAJ4IJHjG10LalgUV36XKTmA4GdA+PVllKvRk0sEKt64X8975qFnkSi0hqA== dependencies: "@types/node" "*" "@types/qs" "*" @@ -2119,7 +2522,7 @@ expect "^29.0.0" pretty-format "^29.0.0" -"@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -2142,9 +2545,9 @@ "@types/node" "*" "@types/node@*": - version "20.12.11" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.11.tgz#c4ef00d3507000d17690643278a60dc55a9dc9be" - integrity sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw== + version "20.12.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.12.tgz#7cbecdf902085cec634fdb362172dfe12b8f2050" + integrity sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw== dependencies: undici-types "~5.26.4" @@ -2178,7 +2581,7 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== -"@types/react-dom@^18.0.0": +"@types/react-dom@^18.0.0", "@types/react-dom@^18.2.22": version "18.3.0" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.0.tgz#0cbc818755d87066ab6ca74fbedb2547d74a82b0" integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg== @@ -2200,6 +2603,14 @@ "@types/prop-types" "*" csstype "^3.0.2" +"@types/react@^18.2.66": + version "18.3.3" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.3.tgz#9679020895318b0915d7a3ab004d92d33375c45f" + integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" @@ -2212,7 +2623,7 @@ resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== -"@types/semver@^7.3.12", "@types/semver@^7.5.8": +"@types/semver@^7.3.12": version "7.5.8" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== @@ -2265,6 +2676,11 @@ resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== +"@types/use-sync-external-store@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43" + integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== + "@types/warning@^3.0.0": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/warning/-/warning-3.0.3.tgz#d1884c8cc4a426d1ac117ca2611bf333834c6798" @@ -2312,6 +2728,21 @@ semver "^7.3.7" tsutils "^3.21.0" +"@typescript-eslint/eslint-plugin@^7.2.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.10.0.tgz#07854a236f107bb45cbf4f62b89474cbea617f50" + integrity sha512-PzCr+a/KAef5ZawX7nbyNwBDtM1HdLIT53aSA2DDlxmxMngZ43O8SIePOeX8H5S+FHXeI6t97mTt/dDdzY4Fyw== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "7.10.0" + "@typescript-eslint/type-utils" "7.10.0" + "@typescript-eslint/utils" "7.10.0" + "@typescript-eslint/visitor-keys" "7.10.0" + graphemer "^1.4.0" + ignore "^5.3.1" + natural-compare "^1.4.0" + ts-api-utils "^1.3.0" + "@typescript-eslint/experimental-utils@^5.0.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz#14559bf73383a308026b427a4a6129bae2146741" @@ -2329,6 +2760,17 @@ "@typescript-eslint/typescript-estree" "5.62.0" debug "^4.3.4" +"@typescript-eslint/parser@^7.2.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.10.0.tgz#e6ac1cba7bc0400a4459e7eb5b23115bd71accfb" + integrity sha512-2EjZMA0LUW5V5tGQiaa2Gys+nKdfrn2xiTIBLR4fxmPmVSvgPcKNW+AE/ln9k0A4zDUti0J/GZXMDupQoI+e1w== + dependencies: + "@typescript-eslint/scope-manager" "7.10.0" + "@typescript-eslint/types" "7.10.0" + "@typescript-eslint/typescript-estree" "7.10.0" + "@typescript-eslint/visitor-keys" "7.10.0" + debug "^4.3.4" + "@typescript-eslint/scope-manager@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" @@ -2337,13 +2779,13 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/scope-manager@7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz#bb19096d11ec6b87fb6640d921df19b813e02047" - integrity sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g== +"@typescript-eslint/scope-manager@7.10.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.10.0.tgz#054a27b1090199337a39cf755f83d9f2ce26546b" + integrity sha512-7L01/K8W/VGl7noe2mgH0K7BE29Sq6KAbVmxurj8GGaPDZXPr8EEQ2seOeAS+mEV9DnzxBQB6ax6qQQ5C6P4xg== dependencies: - "@typescript-eslint/types" "7.8.0" - "@typescript-eslint/visitor-keys" "7.8.0" + "@typescript-eslint/types" "7.10.0" + "@typescript-eslint/visitor-keys" "7.10.0" "@typescript-eslint/type-utils@5.62.0": version "5.62.0" @@ -2355,15 +2797,25 @@ debug "^4.3.4" tsutils "^3.21.0" +"@typescript-eslint/type-utils@7.10.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.10.0.tgz#8a75accce851d0a331aa9331268ef64e9b300270" + integrity sha512-D7tS4WDkJWrVkuzgm90qYw9RdgBcrWmbbRkrLA4d7Pg3w0ttVGDsvYGV19SH8gPR5L7OtcN5J1hTtyenO9xE9g== + dependencies: + "@typescript-eslint/typescript-estree" "7.10.0" + "@typescript-eslint/utils" "7.10.0" + debug "^4.3.4" + ts-api-utils "^1.3.0" + "@typescript-eslint/types@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/types@7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.8.0.tgz#1fd2577b3ad883b769546e2d1ef379f929a7091d" - integrity sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw== +"@typescript-eslint/types@7.10.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.10.0.tgz#da92309c97932a3a033762fd5faa8b067de84e3b" + integrity sha512-7fNj+Ya35aNyhuqrA1E/VayQX9Elwr8NKZ4WueClR3KwJ7Xx9jcCdOrLW04h51de/+gNbyFMs+IDxh5xIwfbNg== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" @@ -2378,13 +2830,13 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz#b028a9226860b66e623c1ee55cc2464b95d2987c" - integrity sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg== +"@typescript-eslint/typescript-estree@7.10.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.10.0.tgz#6dcdc5de3149916a6a599fa89dde5c471b88b8bb" + integrity sha512-LXFnQJjL9XIcxeVfqmNj60YhatpRLt6UhdlFwAkjNc6jSUlK8zQOl1oktAP8PlWFzPQC1jny/8Bai3/HPuvN5g== dependencies: - "@typescript-eslint/types" "7.8.0" - "@typescript-eslint/visitor-keys" "7.8.0" + "@typescript-eslint/types" "7.10.0" + "@typescript-eslint/visitor-keys" "7.10.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -2406,18 +2858,15 @@ eslint-scope "^5.1.1" semver "^7.3.7" -"@typescript-eslint/utils@^6.0.0 || ^7.0.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.8.0.tgz#57a79f9c0c0740ead2f622e444cfaeeb9fd047cd" - integrity sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ== +"@typescript-eslint/utils@7.10.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.10.0.tgz#8ee43e5608c9f439524eaaea8de5b358b15c51b3" + integrity sha512-olzif1Fuo8R8m/qKkzJqT7qwy16CzPRWBvERS0uvyc+DHd8AKbO4Jb7kpAvVzMmZm8TrHnI7hvjN4I05zow+tg== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.15" - "@types/semver" "^7.5.8" - "@typescript-eslint/scope-manager" "7.8.0" - "@typescript-eslint/types" "7.8.0" - "@typescript-eslint/typescript-estree" "7.8.0" - semver "^7.6.0" + "@typescript-eslint/scope-manager" "7.10.0" + "@typescript-eslint/types" "7.10.0" + "@typescript-eslint/typescript-estree" "7.10.0" "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" @@ -2427,12 +2876,12 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@7.8.0": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz#7285aab991da8bee411a42edbd5db760d22fdd91" - integrity sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA== +"@typescript-eslint/visitor-keys@7.10.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.10.0.tgz#2af2e91e73a75dd6b70b4486c48ae9d38a485a78" + integrity sha512-9ntIVgsi6gg6FIq9xjEO4VQJvwOqA3jaBFQJ/6TK5AvEup2+cECI6Fh7QiBxmfMHXU0V0J4RyPeOU1VDNzl9cg== dependencies: - "@typescript-eslint/types" "7.8.0" + "@typescript-eslint/types" "7.10.0" eslint-visitor-keys "^3.4.3" "@ungap/structured-clone@^1.2.0": @@ -2440,6 +2889,17 @@ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== +"@vitejs/plugin-react@^4.2.1": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.3.0.tgz#f20ec2369a92d8abaaefa60da8b7157819d20481" + integrity sha512-KcEbMsn4Dpk+LIbHMj7gDPRKaTMStxxWRkRmxsg/jVdFdJCZWt1SchZcf0M4t8lIKdwwMsEyzhrcOXRrDPtOBw== + dependencies: + "@babel/core" "^7.24.5" + "@babel/plugin-transform-react-jsx-self" "^7.24.5" + "@babel/plugin-transform-react-jsx-source" "^7.24.1" + "@types/babel__core" "^7.20.5" + react-refresh "^0.14.2" + "@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": version "1.12.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" @@ -3167,12 +3627,12 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== dependencies: - fill-range "^7.0.1" + fill-range "^7.1.1" browser-process-hrtime@^1.0.0: version "1.0.0" @@ -3266,9 +3726,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001599: - version "1.0.30001617" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001617.tgz#809bc25f3f5027ceb33142a7d6c40759d7a901eb" - integrity sha512-mLyjzNI9I+Pix8zwcrpxEbGlfqOkF9kM3ptzmKNw5tizSyYwMe+nGLTqMK9cO+0E+Bh6TsBxNAaHWEM8xwSsmA== + version "1.0.30001621" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001621.tgz#4adcb443c8b9c8303e04498318f987616b8fea2e" + integrity sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA== case-sensitive-paths-webpack-plugin@^2.4.0: version "2.4.0" @@ -3481,7 +3941,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -confusing-browser-globals@^1.0.11: +confusing-browser-globals@^1.0.10, confusing-browser-globals@^1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== @@ -3524,21 +3984,21 @@ cookie@0.6.0: integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== core-js-compat@^3.31.0, core-js-compat@^3.36.1: - version "3.37.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.0.tgz#d9570e544163779bb4dff1031c7972f44918dc73" - integrity sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA== + version "3.37.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.1.tgz#c844310c7852f4bdf49b8d339730b97e17ff09ee" + integrity sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg== dependencies: browserslist "^4.23.0" core-js-pure@^3.23.3: - version "3.37.0" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.37.0.tgz#ce99fb4a7cec023fdbbe5b5bd1f06bbcba83316e" - integrity sha512-d3BrpyFr5eD4KcbRvQ3FTUx/KWmaDesr7+a3+1+P46IUnNoEt+oiLijPINZMEon7w9oGkIINWxrBAU9DEciwFQ== + version "3.37.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.37.1.tgz#2b4b34281f54db06c9a9a5bd60105046900553bd" + integrity sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA== core-js@^3.19.2: - version "3.37.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.37.0.tgz#d8dde58e91d156b2547c19d8a4efd5c7f6c426bb" - integrity sha512-fu5vHevQ8ZG4og+LXug8ulUtVxjOcEYvifJr7L5Bfq9GOztVqsKd9/59hUk2ZSbCrS3BqUr3EpaYGIYzq7g3Ug== + version "3.37.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.37.1.tgz#d21751ddb756518ac5a00e4d66499df981a62db9" + integrity sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw== core-util-is@~1.0.0: version "1.0.3" @@ -4122,9 +4582,9 @@ ejs@^3.1.6: jake "^10.8.5" electron-to-chromium@^1.4.668: - version "1.4.763" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.763.tgz#64f2041ed496fd6fc710b9be806fe91da9334f91" - integrity sha512-k4J8NrtJ9QrvHLRo8Q18OncqBCB7tIUyqxRcJnlonQ0ioHKYB988GcDFF3ZePmnb8eHEopDs/wPHR/iGAFgoUQ== + version "1.4.779" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.779.tgz#bb6f08b93092a564421adcadcc4b92c5055c7a77" + integrity sha512-oaTiIcszNfySXVJzKcjxd2YjPxziAd+GmXyb2HbidCeFo6Z88ygOT7EimlrEQhM2U08VhSrbKhLOXP0kKUCZ6g== emittery@^0.10.2: version "0.10.2" @@ -4288,9 +4748,9 @@ es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.17: safe-array-concat "^1.1.2" es-module-lexer@^1.2.1: - version "1.5.2" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.2.tgz#00b423304f2500ac59359cc9b6844951f372d497" - integrity sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA== + version "1.5.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.3.tgz#25969419de9c0b1fbe54279789023e8a9a788412" + integrity sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg== es-object-atoms@^1.0.0: version "1.0.0" @@ -4324,6 +4784,35 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +esbuild@^0.20.1: + version "0.20.2" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.2.tgz#9d6b2386561766ee6b5a55196c6d766d28c87ea1" + integrity sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g== + optionalDependencies: + "@esbuild/aix-ppc64" "0.20.2" + "@esbuild/android-arm" "0.20.2" + "@esbuild/android-arm64" "0.20.2" + "@esbuild/android-x64" "0.20.2" + "@esbuild/darwin-arm64" "0.20.2" + "@esbuild/darwin-x64" "0.20.2" + "@esbuild/freebsd-arm64" "0.20.2" + "@esbuild/freebsd-x64" "0.20.2" + "@esbuild/linux-arm" "0.20.2" + "@esbuild/linux-arm64" "0.20.2" + "@esbuild/linux-ia32" "0.20.2" + "@esbuild/linux-loong64" "0.20.2" + "@esbuild/linux-mips64el" "0.20.2" + "@esbuild/linux-ppc64" "0.20.2" + "@esbuild/linux-riscv64" "0.20.2" + "@esbuild/linux-s390x" "0.20.2" + "@esbuild/linux-x64" "0.20.2" + "@esbuild/netbsd-x64" "0.20.2" + "@esbuild/openbsd-x64" "0.20.2" + "@esbuild/sunos-x64" "0.20.2" + "@esbuild/win32-arm64" "0.20.2" + "@esbuild/win32-ia32" "0.20.2" + "@esbuild/win32-x64" "0.20.2" + escalade@^3.1.1, escalade@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" @@ -4372,6 +4861,28 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" +eslint-config-airbnb-base@^15.0.0: + version "15.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz#6b09add90ac79c2f8d723a2580e07f3925afd236" + integrity sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig== + dependencies: + confusing-browser-globals "^1.0.10" + object.assign "^4.1.2" + object.entries "^1.1.5" + semver "^6.3.0" + +eslint-config-airbnb-typescript@^16.1.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-16.2.0.tgz#9193fafd62f1cbf444895f4495eae334baf3265b" + integrity sha512-OUaMPZpTOZGKd5tXOjJ9PRU4iYNW/Z5DoHIynjsVK/FpkWdiY5+nxQW6TiJAlLwVI1l53xUOrnlZWtVBVQzuWA== + dependencies: + eslint-config-airbnb-base "^15.0.0" + +eslint-config-prettier@^8.0.0: + version "8.10.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11" + integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== + eslint-config-react-app@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz#73ba3929978001c5c86274c017ea57eb5fa644b4" @@ -4416,7 +4927,7 @@ eslint-plugin-flowtype@^8.0.3: lodash "^4.17.21" string-natural-compare "^3.0.1" -eslint-plugin-import@^2.25.3: +eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.27.5: version "2.29.1" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== @@ -4446,14 +4957,7 @@ eslint-plugin-jest@^25.3.0: dependencies: "@typescript-eslint/experimental-utils" "^5.0.0" -eslint-plugin-jest@^28.5.0: - version "28.5.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-28.5.0.tgz#b497b795de37f671eaccd38bd83030186ff5dc8d" - integrity sha512-6np6DGdmNq/eBbA7HOUNV8fkfL86PYwBfwyb8n23FXgJNTR8+ot3smRHjza9LGsBBZRypK3qyF79vMjohIL8eQ== - dependencies: - "@typescript-eslint/utils" "^6.0.0 || ^7.0.0" - -eslint-plugin-jsx-a11y@^6.5.1: +eslint-plugin-jsx-a11y@^6.5.1, eslint-plugin-jsx-a11y@^6.7.1: version "6.8.0" resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== @@ -4475,12 +4979,24 @@ eslint-plugin-jsx-a11y@^6.5.1: object.entries "^1.1.7" object.fromentries "^2.0.7" -eslint-plugin-react-hooks@^4.3.0: +eslint-plugin-prettier@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" + integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-react-hooks@^4.3.0, eslint-plugin-react-hooks@^4.6.0: version "4.6.2" resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596" integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== -eslint-plugin-react@^7.27.1, eslint-plugin-react@^7.34.1: +eslint-plugin-react-refresh@^0.4.6: + version "0.4.7" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.7.tgz#1f597f9093b254f10ee0961c139a749acb19af7d" + integrity sha512-yrj+KInFmwuQS2UQcg1SF83ha1tuHC1jMQbRNyuWtlEzzKRDgAl7L4Yp4NlDUZTZNlWvHEzOtJhMi40R7JxcSw== + +eslint-plugin-react@^7.27.1, eslint-plugin-react@^7.32.2: version "7.34.1" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz#6806b70c97796f5bbfb235a5d3379ece5f4da997" integrity sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw== @@ -4548,7 +5064,7 @@ eslint-webpack-plugin@^3.1.1: normalize-path "^3.0.0" schema-utils "^4.0.0" -eslint@^8.0.0, eslint@^8.3.0: +eslint@^8.3.0, eslint@^8.57.0: version "8.57.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== @@ -4743,6 +5259,11 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-diff@^1.1.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + fast-glob@^3.2.9, fast-glob@^3.3.0: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" @@ -4812,10 +5333,10 @@ filesize@^8.0.6: resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: to-regex-range "^5.0.1" @@ -4970,7 +5491,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^2.3.2, fsevents@~2.3.2: +fsevents@^2.3.2, fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== @@ -5060,12 +5581,12 @@ glob-to-regexp@^0.4.1: integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== glob@^10.3.10: - version "10.3.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.15.tgz#e72bc61bc3038c90605f5dd48543dc67aaf3b50d" - integrity sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw== + version "10.3.16" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.16.tgz#bf6679d5d51279c8cfae4febe0d051d2a4bf4c6f" + integrity sha512-JDKXl1DiuuHJ6fVS2FXjownaavciiHNUU4mOvV/B793RLh05vZL1rcPnCSaOgv1hDT6RDlY7AB7ZUvFYAtPgAw== dependencies: foreground-child "^3.1.0" - jackspeak "^2.3.6" + jackspeak "^3.1.2" minimatch "^9.0.1" minipass "^7.0.4" path-scurry "^1.11.0" @@ -5110,11 +5631,6 @@ globals@^13.19.0: dependencies: type-fest "^0.20.2" -globals@^15.2.0: - version "15.2.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-15.2.0.tgz#fbcea7f8964a71d8c6e6867ddadb9788ae1083d8" - integrity sha512-FQ5YwCHZM3nCmtb5FzEWwdUc9K5d3V/w9mzcz8iGD1gC/aOTHc6PouYu0kkKipNJqHAT7m51sqzQjEjIP+cK0A== - globalthis@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" @@ -5390,11 +5906,16 @@ identity-obj-proxy@^3.0.0: dependencies: harmony-reflect "^1.4.6" -ignore@^5.2.0: +ignore@^5.2.0, ignore@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== +immer@^10.0.3: + version "10.1.1" + resolved "https://registry.yarnpkg.com/immer/-/immer-10.1.1.tgz#206f344ea372d8ea176891545ee53ccc062db7bc" + integrity sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw== + immer@^9.0.7: version "9.0.21" resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" @@ -5795,10 +6316,10 @@ iterator.prototype@^1.1.2: reflect.getprototypeof "^1.0.4" set-function-name "^2.0.1" -jackspeak@^2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" - integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== +jackspeak@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.1.2.tgz#eada67ea949c6b71de50f1b09c92a961897b90ab" + integrity sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ== dependencies: "@isaacs/cliui" "^8.0.2" optionalDependencies: @@ -6514,9 +7035,9 @@ klona@^2.0.4, klona@^2.0.5: integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== language-subtag-registry@^0.3.20: - version "0.3.22" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" - integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== + version "0.3.23" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#23529e04d9e3b74679d70142df3fd2eb6ec572e7" + integrity sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ== language-tags@^1.0.9: version "1.0.9" @@ -6742,11 +7263,11 @@ methods@~1.1.2: integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + version "4.0.7" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" + integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== dependencies: - braces "^3.0.2" + braces "^3.0.3" picomatch "^2.3.1" mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": @@ -6976,7 +7497,7 @@ object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.4, object.assign@^4.1.5: +object.assign@^4.1.2, object.assign@^4.1.4, object.assign@^4.1.5: version "4.1.5" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== @@ -6986,7 +7507,7 @@ object.assign@^4.1.4, object.assign@^4.1.5: has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.7: +object.entries@^1.1.5, object.entries@^1.1.7: version "1.1.8" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== @@ -7253,10 +7774,10 @@ picocolors@^0.2.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.0.0, picocolors@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" + integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" @@ -7800,9 +8321,9 @@ postcss-selector-not@^6.0.1: postcss-selector-parser "^6.0.10" postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: - version "6.0.16" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz#3b88b9f5c5abd989ef4e2fc9ec8eedd34b20fb04" - integrity sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw== + version "6.1.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz#49694cb4e7c649299fea510a29fa6577104bcf53" + integrity sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -7835,7 +8356,7 @@ postcss@^7.0.35: picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.33, postcss@^8.4.4: +postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.33, postcss@^8.4.38, postcss@^8.4.4: version "8.4.38" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== @@ -7854,6 +8375,18 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^2.0.0: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: version "5.6.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" @@ -8094,11 +8627,24 @@ react-lifecycles-compat@^3.0.4: resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== +react-redux@^9.1.2: + version "9.1.2" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-9.1.2.tgz#deba38c64c3403e9abd0c3fbeab69ffd9d8a7e4b" + integrity sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w== + dependencies: + "@types/use-sync-external-store" "^0.0.3" + use-sync-external-store "^1.0.0" + react-refresh@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== +react-refresh@^0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9" + integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== + react-scripts@5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-5.0.1.tgz#6285dbd65a8ba6e49ca8d651ce30645a6d980003" @@ -8222,6 +8768,16 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" +redux-thunk@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-3.1.0.tgz#94aa6e04977c30e14e892eae84978c1af6058ff3" + integrity sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw== + +redux@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/redux/-/redux-5.0.1.tgz#97fa26881ce5746500125585d5642c77b6e9447b" + integrity sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w== + reflect.getprototypeof@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#3ab04c32a8390b770712b7a8633972702d278859" @@ -8329,6 +8885,11 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== +reselect@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-5.1.0.tgz#c479139ab9dd91be4d9c764a7f3868210ef8cd21" + integrity sha512-aw7jcGLDpSgNDyWBQLv2cedml85qd95/iszJjN988zX1t7AVRJi19d9kto5+W7oCfQ94gyo40dVbT6g2k4/kXg== + resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -8414,6 +8975,31 @@ rollup@^2.43.1: optionalDependencies: fsevents "~2.3.2" +rollup@^4.13.0: + version "4.18.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.18.0.tgz#497f60f0c5308e4602cf41136339fbf87d5f5dda" + integrity sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg== + dependencies: + "@types/estree" "1.0.5" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.18.0" + "@rollup/rollup-android-arm64" "4.18.0" + "@rollup/rollup-darwin-arm64" "4.18.0" + "@rollup/rollup-darwin-x64" "4.18.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.18.0" + "@rollup/rollup-linux-arm-musleabihf" "4.18.0" + "@rollup/rollup-linux-arm64-gnu" "4.18.0" + "@rollup/rollup-linux-arm64-musl" "4.18.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.18.0" + "@rollup/rollup-linux-riscv64-gnu" "4.18.0" + "@rollup/rollup-linux-s390x-gnu" "4.18.0" + "@rollup/rollup-linux-x64-gnu" "4.18.0" + "@rollup/rollup-linux-x64-musl" "4.18.0" + "@rollup/rollup-win32-arm64-msvc" "4.18.0" + "@rollup/rollup-win32-ia32-msvc" "4.18.0" + "@rollup/rollup-win32-x64-msvc" "4.18.0" + fsevents "~2.3.2" + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -8835,7 +9421,16 @@ string-natural-compare@^3.0.1: resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -8922,7 +9517,14 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -9371,6 +9973,11 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" +typescript@^5.2.2: + version "5.4.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" + integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== + unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" @@ -9462,12 +10069,12 @@ upath@^1.2.0: integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== update-browserslist-db@^1.0.13: - version "1.0.15" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.15.tgz#60ed9f8cba4a728b7ecf7356f641a31e3a691d97" - integrity sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA== + version "1.0.16" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz#f6d489ed90fb2f07d67784eb3f53d7891f736356" + integrity sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ== dependencies: escalade "^3.1.2" - picocolors "^1.0.0" + picocolors "^1.0.1" uri-js@^4.2.2, uri-js@^4.4.1: version "4.4.1" @@ -9484,6 +10091,11 @@ url-parse@^1.5.3: querystringify "^2.1.1" requires-port "^1.0.0" +use-sync-external-store@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz#c3b6390f3a30eba13200d2302dcdf1e7b57b2ef9" + integrity sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw== + util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -9528,6 +10140,17 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== +vite@^5.2.0: + version "5.2.11" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.11.tgz#726ec05555431735853417c3c0bfb36003ca0cbd" + integrity sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ== + dependencies: + esbuild "^0.20.1" + postcss "^8.4.38" + rollup "^4.13.0" + optionalDependencies: + fsevents "~2.3.3" + w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -9984,7 +10607,16 @@ workbox-window@6.6.1: "@types/trusted-types" "^2.0.2" workbox-core "6.6.1" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== -- GitLab From c2d37614ad0f5adefbf60397b0631cd8afc771bc Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Mon, 27 May 2024 01:00:29 +0200 Subject: [PATCH 03/44] transform redux into typescript --- react-ui/.eslintrc.cjs | 2 +- react-ui/src/stores/api.store.ts | 21 ++++++------------- .../enhancer/monitorReducer.enhancer.ts | 19 ----------------- .../stores/middleware/logger.middleware.ts | 10 --------- 4 files changed, 7 insertions(+), 45 deletions(-) delete mode 100644 react-ui/src/stores/enhancer/monitorReducer.enhancer.ts delete mode 100644 react-ui/src/stores/middleware/logger.middleware.ts diff --git a/react-ui/.eslintrc.cjs b/react-ui/.eslintrc.cjs index d6c953795..5dfef877d 100644 --- a/react-ui/.eslintrc.cjs +++ b/react-ui/.eslintrc.cjs @@ -6,7 +6,7 @@ module.exports = { 'plugin:@typescript-eslint/recommended', 'plugin:react-hooks/recommended', ], - ignorePatterns: ['dist', '.eslintrc.cjs'], + ignorePatterns: ['dist', '.eslintrc.cjs', 'src/api/*'], parser: '@typescript-eslint/parser', plugins: ['react-refresh'], rules: { diff --git a/react-ui/src/stores/api.store.ts b/react-ui/src/stores/api.store.ts index 942865e23..bc400dfae 100644 --- a/react-ui/src/stores/api.store.ts +++ b/react-ui/src/stores/api.store.ts @@ -1,7 +1,6 @@ import { combineReducers } from 'redux' -import monitorReducerEnhancer from './enhancer/monitorReducer.enhancer' -import loggerMiddleware from './middleware/logger.middleware' import mneReducer from './slices/example.reducer' + import { configureStore } from '@reduxjs/toolkit' const getReducers = () => { @@ -10,17 +9,9 @@ const getReducers = () => { }) } -const init = (preloadedState: any) => { - const store: any = configureStore({ - reducer: getReducers(), - middleware: (getDefaultMiddleware: any) => - getDefaultMiddleware().concat(loggerMiddleware), - preloadedState, - enhancers: (getDefaultEnhancers: any) => - getDefaultEnhancers().concat(monitorReducerEnhancer), - }) - - return store -} +const store = configureStore({ + reducer: getReducers(), +}) -export default init +export type RootState = ReturnType<typeof store.getState> +export default store diff --git a/react-ui/src/stores/enhancer/monitorReducer.enhancer.ts b/react-ui/src/stores/enhancer/monitorReducer.enhancer.ts deleted file mode 100644 index 0b51c8efd..000000000 --- a/react-ui/src/stores/enhancer/monitorReducer.enhancer.ts +++ /dev/null @@ -1,19 +0,0 @@ -const round = (number: number) => Math.round(number * 100) / 100 - -const monitorReducerEnhancer = - (createStore: any) => (reducer: any, initialState: any, enhancer: any) => { - const monitoredReducer = (state: any, action: any) => { - const start = performance.now() - const newState = reducer(state, action) - const end = performance.now() - const diff = round(end - start) - - console.log('reducer process time:', diff) - - return newState - } - - return createStore(monitoredReducer, initialState, enhancer) - } - -export default monitorReducerEnhancer diff --git a/react-ui/src/stores/middleware/logger.middleware.ts b/react-ui/src/stores/middleware/logger.middleware.ts deleted file mode 100644 index f1dd0d42b..000000000 --- a/react-ui/src/stores/middleware/logger.middleware.ts +++ /dev/null @@ -1,10 +0,0 @@ -const logger = (store: any) => (next: any) => (action: any) => { - console.group(action.type) - console.info('dispatching', action) - const result = next(action) - console.log('next state', store.getState()) - console.groupEnd() - return result -} - -export default logger -- GitLab From 281ff0981e5b7dacad58a3fb7fcd2adbe4d6cbf4 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Tue, 28 May 2024 14:23:13 +0200 Subject: [PATCH 04/44] implement login ui --- .gitlab/ci/.react-ui.yml | 3 + react-ui/.eslintrc.cjs | 2 +- react-ui/README.md | 2 +- react-ui/assets/logo.svg | 18 +- react-ui/docs/design.md | 8 + react-ui/index.html | 27 +-- react-ui/package.json | 19 +- react-ui/public/logo.png | Bin 0 -> 66912 bytes react-ui/public/logo.svg | 17 ++ react-ui/public/logo192.png | Bin 5347 -> 0 bytes react-ui/public/logo512.png | Bin 9664 -> 0 bytes react-ui/public/manifest.json | 9 +- react-ui/src/i18n/config.js | 13 ++ .../src/i18n/locales/en/translations.json | 14 ++ react-ui/src/{index.css => index.scss} | 8 +- react-ui/src/index.tsx | 35 +++- .../landingpage/{App.css => landingpage.scss} | 1 - .../pages/landingpage/landingpage.test.tsx | 9 + .../landingpage/{App.tsx => landingpage.tsx} | 8 +- react-ui/src/pages/login/login.scss | 8 + .../App.test.tsx => login/login.test.tsx} | 2 +- react-ui/src/pages/login/login.tsx | 76 ++++++++ react-ui/src/router.tsx | 169 ++++++++++++++++++ react-ui/src/stores/api.store.ts | 17 +- react-ui/src/stores/slices/example.reducer.ts | 13 -- react-ui/src/stores/slices/user.reducer.ts | 31 ++++ react-ui/src/style/box.scss | 8 + react-ui/src/style/style.scss | 10 ++ react-ui/src/style/utils.scss | 3 + react-ui/tsconfig.json | 8 +- react-ui/vite.config.mjs | 2 + react-ui/yarn.lock | 103 +++++++---- 32 files changed, 532 insertions(+), 111 deletions(-) create mode 100644 .gitlab/ci/.react-ui.yml create mode 100644 react-ui/docs/design.md create mode 100644 react-ui/public/logo.png create mode 100644 react-ui/public/logo.svg delete mode 100644 react-ui/public/logo192.png delete mode 100644 react-ui/public/logo512.png create mode 100644 react-ui/src/i18n/config.js create mode 100644 react-ui/src/i18n/locales/en/translations.json rename react-ui/src/{index.css => index.scss} (73%) rename react-ui/src/pages/landingpage/{App.css => landingpage.scss} (92%) create mode 100644 react-ui/src/pages/landingpage/landingpage.test.tsx rename react-ui/src/pages/landingpage/{App.tsx => landingpage.tsx} (88%) create mode 100644 react-ui/src/pages/login/login.scss rename react-ui/src/pages/{landingpage/App.test.tsx => login/login.test.tsx} (90%) create mode 100644 react-ui/src/pages/login/login.tsx create mode 100644 react-ui/src/router.tsx delete mode 100644 react-ui/src/stores/slices/example.reducer.ts create mode 100644 react-ui/src/stores/slices/user.reducer.ts create mode 100644 react-ui/src/style/box.scss create mode 100644 react-ui/src/style/style.scss create mode 100644 react-ui/src/style/utils.scss diff --git a/.gitlab/ci/.react-ui.yml b/.gitlab/ci/.react-ui.yml new file mode 100644 index 000000000..873b694c8 --- /dev/null +++ b/.gitlab/ci/.react-ui.yml @@ -0,0 +1,3 @@ +build-react-ui: + stage: build + \ No newline at end of file diff --git a/react-ui/.eslintrc.cjs b/react-ui/.eslintrc.cjs index 5dfef877d..c4290113a 100644 --- a/react-ui/.eslintrc.cjs +++ b/react-ui/.eslintrc.cjs @@ -6,7 +6,7 @@ module.exports = { 'plugin:@typescript-eslint/recommended', 'plugin:react-hooks/recommended', ], - ignorePatterns: ['dist', '.eslintrc.cjs', 'src/api/*'], + ignorePatterns: ['dist', '.eslintrc.cjs', './src/i18n/config.js', 'src/api/*'], parser: '@typescript-eslint/parser', plugins: ['react-refresh'], rules: { diff --git a/react-ui/README.md b/react-ui/README.md index 6426c57c6..b6c8b0ba1 100644 --- a/react-ui/README.md +++ b/react-ui/README.md @@ -1,5 +1,5 @@ # React - UI -This is the UI for the goSDN project. It's a webapp written in rust +This is the UI for the goSDN project. It's a webapp written in react ### Getting started diff --git a/react-ui/assets/logo.svg b/react-ui/assets/logo.svg index 9dfc1c058..b7f71bd90 100644 --- a/react-ui/assets/logo.svg +++ b/react-ui/assets/logo.svg @@ -1 +1,17 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 841.9 595.3"><g fill="#61DAFB"><path d="M666.3 296.5c0-32.5-40.7-63.3-103.1-82.4 14.4-63.6 8-114.2-20.2-130.4-6.5-3.8-14.1-5.6-22.4-5.6v22.3c4.6 0 8.3.9 11.4 2.6 13.6 7.8 19.5 37.5 14.9 75.7-1.1 9.4-2.9 19.3-5.1 29.4-19.6-4.8-41-8.5-63.5-10.9-13.5-18.5-27.5-35.3-41.6-50 32.6-30.3 63.2-46.9 84-46.9V78c-27.5 0-63.5 19.6-99.9 53.6-36.4-33.8-72.4-53.2-99.9-53.2v22.3c20.7 0 51.4 16.5 84 46.6-14 14.7-28 31.4-41.3 49.9-22.6 2.4-44 6.1-63.6 11-2.3-10-4-19.7-5.2-29-4.7-38.2 1.1-67.9 14.6-75.8 3-1.8 6.9-2.6 11.5-2.6V78.5c-8.4 0-16 1.8-22.6 5.6-28.1 16.2-34.4 66.7-19.9 130.1-62.2 19.2-102.7 49.9-102.7 82.3 0 32.5 40.7 63.3 103.1 82.4-14.4 63.6-8 114.2 20.2 130.4 6.5 3.8 14.1 5.6 22.5 5.6 27.5 0 63.5-19.6 99.9-53.6 36.4 33.8 72.4 53.2 99.9 53.2 8.4 0 16-1.8 22.6-5.6 28.1-16.2 34.4-66.7 19.9-130.1 62-19.1 102.5-49.9 102.5-82.3zm-130.2-66.7c-3.7 12.9-8.3 26.2-13.5 39.5-4.1-8-8.4-16-13.1-24-4.6-8-9.5-15.8-14.4-23.4 14.2 2.1 27.9 4.7 41 7.9zm-45.8 106.5c-7.8 13.5-15.8 26.3-24.1 38.2-14.9 1.3-30 2-45.2 2-15.1 0-30.2-.7-45-1.9-8.3-11.9-16.4-24.6-24.2-38-7.6-13.1-14.5-26.4-20.8-39.8 6.2-13.4 13.2-26.8 20.7-39.9 7.8-13.5 15.8-26.3 24.1-38.2 14.9-1.3 30-2 45.2-2 15.1 0 30.2.7 45 1.9 8.3 11.9 16.4 24.6 24.2 38 7.6 13.1 14.5 26.4 20.8 39.8-6.3 13.4-13.2 26.8-20.7 39.9zm32.3-13c5.4 13.4 10 26.8 13.8 39.8-13.1 3.2-26.9 5.9-41.2 8 4.9-7.7 9.8-15.6 14.4-23.7 4.6-8 8.9-16.1 13-24.1zM421.2 430c-9.3-9.6-18.6-20.3-27.8-32 9 .4 18.2.7 27.5.7 9.4 0 18.7-.2 27.8-.7-9 11.7-18.3 22.4-27.5 32zm-74.4-58.9c-14.2-2.1-27.9-4.7-41-7.9 3.7-12.9 8.3-26.2 13.5-39.5 4.1 8 8.4 16 13.1 24 4.7 8 9.5 15.8 14.4 23.4zM420.7 163c9.3 9.6 18.6 20.3 27.8 32-9-.4-18.2-.7-27.5-.7-9.4 0-18.7.2-27.8.7 9-11.7 18.3-22.4 27.5-32zm-74 58.9c-4.9 7.7-9.8 15.6-14.4 23.7-4.6 8-8.9 16-13 24-5.4-13.4-10-26.8-13.8-39.8 13.1-3.1 26.9-5.8 41.2-7.9zm-90.5 125.2c-35.4-15.1-58.3-34.9-58.3-50.6 0-15.7 22.9-35.6 58.3-50.6 8.6-3.7 18-7 27.7-10.1 5.7 19.6 13.2 40 22.5 60.9-9.2 20.8-16.6 41.1-22.2 60.6-9.9-3.1-19.3-6.5-28-10.2zM310 490c-13.6-7.8-19.5-37.5-14.9-75.7 1.1-9.4 2.9-19.3 5.1-29.4 19.6 4.8 41 8.5 63.5 10.9 13.5 18.5 27.5 35.3 41.6 50-32.6 30.3-63.2 46.9-84 46.9-4.5-.1-8.3-1-11.3-2.7zm237.2-76.2c4.7 38.2-1.1 67.9-14.6 75.8-3 1.8-6.9 2.6-11.5 2.6-20.7 0-51.4-16.5-84-46.6 14-14.7 28-31.4 41.3-49.9 22.6-2.4 44-6.1 63.6-11 2.3 10.1 4.1 19.8 5.2 29.1zm38.5-66.7c-8.6 3.7-18 7-27.7 10.1-5.7-19.6-13.2-40-22.5-60.9 9.2-20.8 16.6-41.1 22.2-60.6 9.9 3.1 19.3 6.5 28.1 10.2 35.4 15.1 58.3 34.9 58.3 50.6-.1 15.7-23 35.6-58.4 50.6zM320.8 78.4z"/><circle cx="420.9" cy="296.5" r="45.7"/><path d="M520.5 78.1z"/></g></svg> \ No newline at end of file +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Created with Vectornator (http://vectornator.io/) --> +<svg height="100%" stroke-miterlimit="10" style="fill-rule:nonzero;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;" version="1.1" viewBox="0 0 113.4 212.625" width="100%" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:vectornator="http://vectornator.io" xmlns:xlink="http://www.w3.org/1999/xlink"> +<defs> +<radialGradient cx="170.235" cy="146.046" gradientTransform="matrix(1.00001 -8.65109e-05 8.65119e-05 1 -115.465 -116.986)" gradientUnits="userSpaceOnUse" id="RadialGradient" r="217.591"> +<stop offset="0" stop-color="#c456f7"/> +<stop offset="1" stop-color="#34054a"/> +</radialGradient> +<filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="209.692" id="Filter" width="111.957" x="0.722269" y="2.46642"> +<feDropShadow dx="-4.37114e-08" dy="1" flood-color="#050505" flood-opacity="1" in="SourceGraphic" result="Shadow" stdDeviation="1"/> +</filter> +</defs> +<g id="Layer-1" vectornator:layerName="Layer 1"> +<path d="M35.1413 3.47016L35.1416 6.93891L27.1415 6.93961L27.1464 63.3771C21.6096 65.0011 16.4869 67.0445 12.2717 69.6596C-9.35807 83.0789 12.5182 123.232 12.5264 123.222C12.5341 123.213 12.5498 123.2 12.5576 123.191C13.1518 124.609 14.5144 125.761 16.5579 126.534C18.7737 127.372 21.8204 127.855 26.8082 128.408C25.0644 132.318 24.4639 137.732 25.3409 144.846C26.0816 150.854 28.2327 155.309 32.5924 161.533C32.9615 162.06 34.1761 163.796 34.3427 164.033C35.013 164.984 35.5416 165.705 35.9991 166.408C38.1084 169.647 39.1319 172.149 39.3124 174.814C39.3701 175.665 39.3355 180.513 39.251 187.751C39.2362 189.024 39.0999 200.614 39.0959 200.907C37.7122 201.653 36.7523 203.069 36.7525 204.751C36.7527 207.19 38.7205 209.157 41.1591 209.157C43.5978 209.157 45.5653 207.189 45.5651 204.751C45.5649 203.019 44.5477 201.568 43.096 200.844C43.1023 200.341 43.2363 189.045 43.2511 187.782C43.3388 180.268 43.3816 175.583 43.3124 174.563C43.0775 171.096 41.7912 168.012 39.3427 164.251C38.854 163.5 38.3197 162.708 37.6237 161.72C37.4507 161.474 36.2342 159.766 35.8735 159.251C31.8564 153.517 29.9529 149.563 29.3096 144.346C28.2621 135.848 29.4895 130.5 32.027 127.533C32.6413 126.815 33.2789 126.306 33.9019 125.97C34.2334 125.792 34.4442 125.7 34.4956 125.689C35.5735 125.448 36.2365 124.392 35.9954 123.314C35.7543 122.236 34.6982 121.542 33.6202 121.783C33.2264 121.871 32.6655 122.078 31.9953 122.439C31.0669 122.939 30.1635 123.734 29.3079 124.658C23.0392 124.019 20.0922 123.577 17.9951 122.784C16.1482 122.086 15.9773 121.63 16.7137 120.347C25.511 115.923 43.9287 113.157 55.0885 113.156C63.8081 113.155 79.7952 116.873 90.4333 119.622C93.9977 120.542 94.7294 120.755 96.621 121.277C94.2649 123.034 89.4439 124.738 83.3087 125.247C83.0835 125.266 82.9434 125.443 82.7462 125.529C82.6074 125.348 82.5171 125.106 82.3711 124.935C81.4271 123.831 80.3863 122.999 79.3396 122.435C78.6693 122.074 78.1085 121.867 77.7145 121.779C76.6365 121.538 75.5805 122.233 75.3396 123.31C75.0987 124.388 75.7619 125.444 76.8399 125.685C76.8913 125.697 77.1021 125.788 77.4337 125.967C78.0567 126.302 78.6942 126.81 79.3088 127.529C81.8468 130.496 83.0751 135.844 82.029 144.341C81.3867 149.559 79.4839 153.513 75.4678 159.248C75.1071 159.763 73.8909 161.471 73.7179 161.717C73.0221 162.705 72.488 163.498 71.9994 164.248C69.5516 168.009 68.2658 171.094 68.0315 174.561C67.9625 175.581 68.0061 180.266 68.0951 187.78C68.1102 189.055 68.2793 200.673 68.2838 200.967C66.9421 201.725 66.0027 203.098 66.0028 204.749C66.0031 207.187 67.9709 209.155 70.4095 209.155C72.8481 209.154 74.8156 207.187 74.8154 204.748C74.8153 202.975 73.7598 201.482 72.2526 200.779C72.2461 200.277 72.1101 189.009 72.0952 187.748C72.0095 180.511 71.974 175.662 72.0316 174.811C72.2116 172.146 73.2659 169.644 75.3746 166.404C75.8321 165.701 76.3292 164.981 76.9994 164.029C77.1659 163.793 78.3803 162.056 78.7492 161.529C83.1079 155.305 85.2582 150.849 85.9979 144.841C86.8306 138.077 86.2654 132.917 84.7153 129.06C93.073 128.178 99.944 125.471 101.777 121.527C105.258 116.592 120.674 81.4184 100.46 69.1833C96.4145 66.7344 91.6503 64.7196 86.3971 63.1845L86.3922 6.93448L78.3609 6.93517L78.3606 3.46642L35.1413 3.47016ZM31.1419 10.9393L39.1107 10.9386L39.3309 27.9386C39.3406 28.6841 39.9605 29.2606 40.7061 29.2509C41.4516 29.2413 42.0593 28.6214 42.0497 27.8758L41.7983 10.9383L44.517 10.9381L44.7998 27.9381C44.8108 28.6836 45.3981 29.2615 46.1436 29.2505C46.8892 29.2394 47.4983 28.6209 47.4873 27.8753L47.2358 10.9379L49.9546 10.9376L50.2061 27.9376C50.2169 28.6831 50.8357 29.2608 51.5812 29.25C52.3267 29.2392 52.9044 28.6203 52.8936 27.8749L52.6421 10.9374L55.3609 10.9372L55.6124 27.9371C55.623 28.6827 56.242 29.2601 56.9875 29.2495C57.733 29.2389 58.3418 28.6199 58.3312 27.8744L58.0797 10.9369L60.8297 10.9367L61.05 27.9367C61.0546 28.3094 61.2147 28.6381 61.4563 28.8741C61.6979 29.1102 62.0211 29.2537 62.3938 29.2491C63.1394 29.2398 63.7468 28.6194 63.7375 27.8739L63.5173 10.9365L66.2986 10.9362L66.4875 27.905C66.4957 28.6505 67.1171 29.2568 67.8627 29.2486C68.6082 29.2404 69.1834 28.6503 69.1751 27.9047L68.9861 10.936L71.7674 10.9357L71.9564 27.9357C71.9605 28.3085 72.1132 28.6372 72.3627 28.8732C72.6122 29.1091 72.9587 29.2523 73.3315 29.2481C74.077 29.2398 74.6833 28.6498 74.6751 27.9042L74.4862 10.9355L82.3925 10.9348L82.3969 62.2473C78.1953 61.2363 73.8195 60.4151 69.2716 59.936L69.0841 59.936L69.0846 65.9672L62.3352 73.3116L62.211 82.5928L62.212 94.7803L56.5244 94.7808L50.3056 94.7814L50.2733 82.9376L50.1163 73.3126L43.1468 65.8132L43.1463 60.0945L31.1463 62.3455L31.1419 10.9393ZM46.0197 41.188L45.9904 64.3755L52.9599 71.8749L53.1492 91.9374L59.368 91.9368L59.5225 71.8743L66.2407 64.5612L66.2387 41.3425L46.0197 41.188ZM45.5578 121.282C45.0484 121.232 44.5158 121.369 44.0891 121.719C43.2356 122.421 43.1382 123.71 43.8394 124.563C43.8712 124.602 43.9181 124.67 44.0269 124.813C44.2163 125.062 44.4521 125.354 44.6832 125.688C45.3494 126.65 45.998 127.755 46.621 128.938C48.9603 133.379 50.0248 137.836 49.1222 141.875C48.4351 144.95 46.6061 147.711 43.4353 150.126C43.1568 150.338 42.1644 150.942 40.7792 151.751C40.6905 151.803 37.4839 153.662 37.4356 153.689C36.4728 154.23 36.1131 155.445 36.6545 156.408C37.1959 157.37 38.4106 157.699 39.3734 157.157C39.4251 157.128 42.7199 155.272 42.8108 155.22C44.3781 154.304 45.4057 153.669 45.8731 153.313C49.7829 150.336 52.1324 146.76 53.0285 142.75C54.1746 137.622 52.9238 132.266 50.1834 127.063C49.4811 125.729 48.7181 124.526 47.9643 123.438C47.5056 122.775 47.1244 122.271 46.9017 122C46.5511 121.574 46.0673 121.332 45.5578 121.282ZM65.7769 121.28C65.2675 121.33 64.7837 121.572 64.4331 121.999C64.2105 122.27 63.8293 122.774 63.3708 123.436C62.6172 124.525 61.8858 125.728 61.1835 127.062C58.444 132.265 57.163 137.621 58.3099 142.749C59.2067 146.759 61.5569 150.335 65.4671 153.311C65.9346 153.667 66.9935 154.302 68.5611 155.217C68.6519 155.27 71.9158 157.125 71.9675 157.154C72.9304 157.696 74.145 157.367 74.6862 156.404C75.2275 155.441 74.8676 154.227 73.9048 153.686C73.8565 153.658 70.6495 151.8 70.5608 151.748C69.1754 150.939 68.1829 150.336 67.9044 150.124C64.7332 147.71 62.9036 144.948 62.2161 141.874C61.3128 137.835 62.3766 133.378 64.715 128.936C65.3378 127.753 65.9862 126.649 66.6522 125.686C66.8833 125.352 67.1191 125.06 67.3084 124.811C67.4172 124.668 67.4953 124.6 67.5272 124.561C68.2282 123.708 68.0992 122.418 67.2457 121.717C66.8189 121.367 66.2862 121.23 65.7769 121.28ZM28.3735 160.064C27.8641 160.114 27.3492 160.357 26.9985 160.783C24.0604 164.358 22.5881 168.723 22.5621 174.253C22.5614 174.404 22.6311 200.839 22.627 200.877C21.1966 201.608 20.1896 203.036 20.1898 204.753C20.19 207.191 22.1578 209.159 24.5964 209.159C27.0351 209.158 29.0026 207.191 29.0024 204.752C29.0022 203.061 28.0235 201.65 26.627 200.908C26.6562 200.425 26.6538 197.055 26.6259 187.658C26.6229 186.662 26.5615 174.385 26.5622 174.252C26.584 169.618 27.7563 166.157 30.0925 163.314C30.7939 162.461 30.6644 161.203 29.811 160.502C29.3844 160.151 28.8829 160.015 28.3735 160.064ZM82.9679 160.06C82.4585 160.01 81.9571 160.147 81.5304 160.497C80.6772 161.199 80.5479 162.457 81.2494 163.31C83.5862 166.152 84.7591 169.613 84.7817 174.247C84.7823 174.378 84.7241 199.67 84.7527 200.841C83.3011 201.564 82.2529 203.015 82.253 204.747C82.2533 207.186 84.2524 209.153 86.691 209.153C89.1295 209.153 91.0971 207.185 91.0969 204.747C91.0967 203.049 90.1265 201.611 88.7215 200.872C88.7173 200.833 88.7318 194.753 88.7516 187.684C88.7544 186.688 88.7824 174.398 88.7817 174.247C88.7548 168.717 87.2817 164.353 84.343 160.778C83.9922 160.352 83.4774 160.109 82.9679 160.06Z" fill="url(#RadialGradient)" fill-rule="nonzero" filter="url(#Filter)" stroke="none" vectornator:shadowAngle="1.5708" vectornator:shadowColor="#050505" vectornator:shadowOffset="1" vectornator:shadowOpacity="1" vectornator:shadowRadius="2"/> +</g> +</svg> diff --git a/react-ui/docs/design.md b/react-ui/docs/design.md new file mode 100644 index 000000000..e35e46ac7 --- /dev/null +++ b/react-ui/docs/design.md @@ -0,0 +1,8 @@ +## Design +Global styles for predefined components can be found in `./src/styles`. There are definitinos for the following components: +- box for content (c-box) + + +#### Colors +- Primary: #b551e1 +- Secondary: \ No newline at end of file diff --git a/react-ui/index.html b/react-ui/index.html index e444585a7..91d50a11c 100644 --- a/react-ui/index.html +++ b/react-ui/index.html @@ -9,36 +9,13 @@ name="description" content="Web site created using create-react-app" /> - <link rel="apple-touch-icon" href="logo192.png" /> - <!-- - manifest.json provides metadata used when your web app is installed on a - user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/ - --> + <link rel="apple-touch-icon" href="logo.png" /> <link rel="manifest" href="manifest.json" /> - <!-- - Notice the use of %PUBLIC_URL% in the tags above. - It will be replaced with the URL of the `public` folder during the build. - Only files inside the `public` folder can be referenced from the HTML. - - Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will - work correctly both with client-side routing and a non-root public URL. - Learn how to configure a non-root public URL by running `npm run build`. - --> - <title>React App</title> + <title>goSDN</title> </head> <body> <noscript>You need to enable JavaScript to run this app.</noscript> <div id="root"></div> <script type="module" src="/src/index.tsx"></script> - <!-- - This HTML file is a template. - If you open it directly in the browser, you will see an empty page. - - You can add webfonts, meta tags, or analytics to this file. - The build step will place the bundled scripts into the <body> tag. - - To begin the development, run `npm start` or `yarn start`. - To create a production bundle, use `npm run build` or `yarn build`. - --> </body> </html> diff --git a/react-ui/package.json b/react-ui/package.json index 13bfaba15..16a92a477 100644 --- a/react-ui/package.json +++ b/react-ui/package.json @@ -8,10 +8,13 @@ "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", "bootstrap": "^5.3.3", + "i18next": "^23.11.5", "react": "^18.3.1", "react-bootstrap": "^2.10.2", "react-dom": "^18.3.1", + "react-i18next": "^14.1.2", "react-redux": "^9.1.2", + "react-router-dom": "^6.23.1", "react-scripts": "5.0.1", "redux": "^5.0.1", "web-vitals": "^2.1.4" @@ -44,22 +47,22 @@ }, "devDependencies": { "@babel/runtime": "^7.21.5", - "eslint-config-airbnb-typescript": "^16.1.0", - "eslint-config-prettier": "^8.0.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-react": "^7.32.2", - "prettier": "^2.0.0", - "@types/react": "^18.2.66", "@types/react-dom": "^18.2.22", "@typescript-eslint/eslint-plugin": "^7.2.0", "@typescript-eslint/parser": "^7.2.0", "@vitejs/plugin-react": "^4.2.1", "eslint": "^8.57.0", + "eslint-config-airbnb-typescript": "^16.1.0", + "eslint-config-prettier": "^8.0.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.6", + "prettier": "^2.0.0", + "sass": "^1.77.2", "typescript": "^5.2.2", "vite": "^5.2.0" } diff --git a/react-ui/public/logo.png b/react-ui/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ad4ee061e519860d12b8fb8bb044b1df4359f20d GIT binary patch literal 66912 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 literal 0 HcmV?d00001 diff --git a/react-ui/public/logo.svg b/react-ui/public/logo.svg new file mode 100644 index 000000000..b7f71bd90 --- /dev/null +++ b/react-ui/public/logo.svg @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Created with Vectornator (http://vectornator.io/) --> +<svg height="100%" stroke-miterlimit="10" style="fill-rule:nonzero;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;" version="1.1" viewBox="0 0 113.4 212.625" width="100%" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:vectornator="http://vectornator.io" xmlns:xlink="http://www.w3.org/1999/xlink"> +<defs> +<radialGradient cx="170.235" cy="146.046" gradientTransform="matrix(1.00001 -8.65109e-05 8.65119e-05 1 -115.465 -116.986)" gradientUnits="userSpaceOnUse" id="RadialGradient" r="217.591"> +<stop offset="0" stop-color="#c456f7"/> +<stop offset="1" stop-color="#34054a"/> +</radialGradient> +<filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="209.692" id="Filter" width="111.957" x="0.722269" y="2.46642"> +<feDropShadow dx="-4.37114e-08" dy="1" flood-color="#050505" flood-opacity="1" in="SourceGraphic" result="Shadow" stdDeviation="1"/> +</filter> +</defs> +<g id="Layer-1" vectornator:layerName="Layer 1"> +<path d="M35.1413 3.47016L35.1416 6.93891L27.1415 6.93961L27.1464 63.3771C21.6096 65.0011 16.4869 67.0445 12.2717 69.6596C-9.35807 83.0789 12.5182 123.232 12.5264 123.222C12.5341 123.213 12.5498 123.2 12.5576 123.191C13.1518 124.609 14.5144 125.761 16.5579 126.534C18.7737 127.372 21.8204 127.855 26.8082 128.408C25.0644 132.318 24.4639 137.732 25.3409 144.846C26.0816 150.854 28.2327 155.309 32.5924 161.533C32.9615 162.06 34.1761 163.796 34.3427 164.033C35.013 164.984 35.5416 165.705 35.9991 166.408C38.1084 169.647 39.1319 172.149 39.3124 174.814C39.3701 175.665 39.3355 180.513 39.251 187.751C39.2362 189.024 39.0999 200.614 39.0959 200.907C37.7122 201.653 36.7523 203.069 36.7525 204.751C36.7527 207.19 38.7205 209.157 41.1591 209.157C43.5978 209.157 45.5653 207.189 45.5651 204.751C45.5649 203.019 44.5477 201.568 43.096 200.844C43.1023 200.341 43.2363 189.045 43.2511 187.782C43.3388 180.268 43.3816 175.583 43.3124 174.563C43.0775 171.096 41.7912 168.012 39.3427 164.251C38.854 163.5 38.3197 162.708 37.6237 161.72C37.4507 161.474 36.2342 159.766 35.8735 159.251C31.8564 153.517 29.9529 149.563 29.3096 144.346C28.2621 135.848 29.4895 130.5 32.027 127.533C32.6413 126.815 33.2789 126.306 33.9019 125.97C34.2334 125.792 34.4442 125.7 34.4956 125.689C35.5735 125.448 36.2365 124.392 35.9954 123.314C35.7543 122.236 34.6982 121.542 33.6202 121.783C33.2264 121.871 32.6655 122.078 31.9953 122.439C31.0669 122.939 30.1635 123.734 29.3079 124.658C23.0392 124.019 20.0922 123.577 17.9951 122.784C16.1482 122.086 15.9773 121.63 16.7137 120.347C25.511 115.923 43.9287 113.157 55.0885 113.156C63.8081 113.155 79.7952 116.873 90.4333 119.622C93.9977 120.542 94.7294 120.755 96.621 121.277C94.2649 123.034 89.4439 124.738 83.3087 125.247C83.0835 125.266 82.9434 125.443 82.7462 125.529C82.6074 125.348 82.5171 125.106 82.3711 124.935C81.4271 123.831 80.3863 122.999 79.3396 122.435C78.6693 122.074 78.1085 121.867 77.7145 121.779C76.6365 121.538 75.5805 122.233 75.3396 123.31C75.0987 124.388 75.7619 125.444 76.8399 125.685C76.8913 125.697 77.1021 125.788 77.4337 125.967C78.0567 126.302 78.6942 126.81 79.3088 127.529C81.8468 130.496 83.0751 135.844 82.029 144.341C81.3867 149.559 79.4839 153.513 75.4678 159.248C75.1071 159.763 73.8909 161.471 73.7179 161.717C73.0221 162.705 72.488 163.498 71.9994 164.248C69.5516 168.009 68.2658 171.094 68.0315 174.561C67.9625 175.581 68.0061 180.266 68.0951 187.78C68.1102 189.055 68.2793 200.673 68.2838 200.967C66.9421 201.725 66.0027 203.098 66.0028 204.749C66.0031 207.187 67.9709 209.155 70.4095 209.155C72.8481 209.154 74.8156 207.187 74.8154 204.748C74.8153 202.975 73.7598 201.482 72.2526 200.779C72.2461 200.277 72.1101 189.009 72.0952 187.748C72.0095 180.511 71.974 175.662 72.0316 174.811C72.2116 172.146 73.2659 169.644 75.3746 166.404C75.8321 165.701 76.3292 164.981 76.9994 164.029C77.1659 163.793 78.3803 162.056 78.7492 161.529C83.1079 155.305 85.2582 150.849 85.9979 144.841C86.8306 138.077 86.2654 132.917 84.7153 129.06C93.073 128.178 99.944 125.471 101.777 121.527C105.258 116.592 120.674 81.4184 100.46 69.1833C96.4145 66.7344 91.6503 64.7196 86.3971 63.1845L86.3922 6.93448L78.3609 6.93517L78.3606 3.46642L35.1413 3.47016ZM31.1419 10.9393L39.1107 10.9386L39.3309 27.9386C39.3406 28.6841 39.9605 29.2606 40.7061 29.2509C41.4516 29.2413 42.0593 28.6214 42.0497 27.8758L41.7983 10.9383L44.517 10.9381L44.7998 27.9381C44.8108 28.6836 45.3981 29.2615 46.1436 29.2505C46.8892 29.2394 47.4983 28.6209 47.4873 27.8753L47.2358 10.9379L49.9546 10.9376L50.2061 27.9376C50.2169 28.6831 50.8357 29.2608 51.5812 29.25C52.3267 29.2392 52.9044 28.6203 52.8936 27.8749L52.6421 10.9374L55.3609 10.9372L55.6124 27.9371C55.623 28.6827 56.242 29.2601 56.9875 29.2495C57.733 29.2389 58.3418 28.6199 58.3312 27.8744L58.0797 10.9369L60.8297 10.9367L61.05 27.9367C61.0546 28.3094 61.2147 28.6381 61.4563 28.8741C61.6979 29.1102 62.0211 29.2537 62.3938 29.2491C63.1394 29.2398 63.7468 28.6194 63.7375 27.8739L63.5173 10.9365L66.2986 10.9362L66.4875 27.905C66.4957 28.6505 67.1171 29.2568 67.8627 29.2486C68.6082 29.2404 69.1834 28.6503 69.1751 27.9047L68.9861 10.936L71.7674 10.9357L71.9564 27.9357C71.9605 28.3085 72.1132 28.6372 72.3627 28.8732C72.6122 29.1091 72.9587 29.2523 73.3315 29.2481C74.077 29.2398 74.6833 28.6498 74.6751 27.9042L74.4862 10.9355L82.3925 10.9348L82.3969 62.2473C78.1953 61.2363 73.8195 60.4151 69.2716 59.936L69.0841 59.936L69.0846 65.9672L62.3352 73.3116L62.211 82.5928L62.212 94.7803L56.5244 94.7808L50.3056 94.7814L50.2733 82.9376L50.1163 73.3126L43.1468 65.8132L43.1463 60.0945L31.1463 62.3455L31.1419 10.9393ZM46.0197 41.188L45.9904 64.3755L52.9599 71.8749L53.1492 91.9374L59.368 91.9368L59.5225 71.8743L66.2407 64.5612L66.2387 41.3425L46.0197 41.188ZM45.5578 121.282C45.0484 121.232 44.5158 121.369 44.0891 121.719C43.2356 122.421 43.1382 123.71 43.8394 124.563C43.8712 124.602 43.9181 124.67 44.0269 124.813C44.2163 125.062 44.4521 125.354 44.6832 125.688C45.3494 126.65 45.998 127.755 46.621 128.938C48.9603 133.379 50.0248 137.836 49.1222 141.875C48.4351 144.95 46.6061 147.711 43.4353 150.126C43.1568 150.338 42.1644 150.942 40.7792 151.751C40.6905 151.803 37.4839 153.662 37.4356 153.689C36.4728 154.23 36.1131 155.445 36.6545 156.408C37.1959 157.37 38.4106 157.699 39.3734 157.157C39.4251 157.128 42.7199 155.272 42.8108 155.22C44.3781 154.304 45.4057 153.669 45.8731 153.313C49.7829 150.336 52.1324 146.76 53.0285 142.75C54.1746 137.622 52.9238 132.266 50.1834 127.063C49.4811 125.729 48.7181 124.526 47.9643 123.438C47.5056 122.775 47.1244 122.271 46.9017 122C46.5511 121.574 46.0673 121.332 45.5578 121.282ZM65.7769 121.28C65.2675 121.33 64.7837 121.572 64.4331 121.999C64.2105 122.27 63.8293 122.774 63.3708 123.436C62.6172 124.525 61.8858 125.728 61.1835 127.062C58.444 132.265 57.163 137.621 58.3099 142.749C59.2067 146.759 61.5569 150.335 65.4671 153.311C65.9346 153.667 66.9935 154.302 68.5611 155.217C68.6519 155.27 71.9158 157.125 71.9675 157.154C72.9304 157.696 74.145 157.367 74.6862 156.404C75.2275 155.441 74.8676 154.227 73.9048 153.686C73.8565 153.658 70.6495 151.8 70.5608 151.748C69.1754 150.939 68.1829 150.336 67.9044 150.124C64.7332 147.71 62.9036 144.948 62.2161 141.874C61.3128 137.835 62.3766 133.378 64.715 128.936C65.3378 127.753 65.9862 126.649 66.6522 125.686C66.8833 125.352 67.1191 125.06 67.3084 124.811C67.4172 124.668 67.4953 124.6 67.5272 124.561C68.2282 123.708 68.0992 122.418 67.2457 121.717C66.8189 121.367 66.2862 121.23 65.7769 121.28ZM28.3735 160.064C27.8641 160.114 27.3492 160.357 26.9985 160.783C24.0604 164.358 22.5881 168.723 22.5621 174.253C22.5614 174.404 22.6311 200.839 22.627 200.877C21.1966 201.608 20.1896 203.036 20.1898 204.753C20.19 207.191 22.1578 209.159 24.5964 209.159C27.0351 209.158 29.0026 207.191 29.0024 204.752C29.0022 203.061 28.0235 201.65 26.627 200.908C26.6562 200.425 26.6538 197.055 26.6259 187.658C26.6229 186.662 26.5615 174.385 26.5622 174.252C26.584 169.618 27.7563 166.157 30.0925 163.314C30.7939 162.461 30.6644 161.203 29.811 160.502C29.3844 160.151 28.8829 160.015 28.3735 160.064ZM82.9679 160.06C82.4585 160.01 81.9571 160.147 81.5304 160.497C80.6772 161.199 80.5479 162.457 81.2494 163.31C83.5862 166.152 84.7591 169.613 84.7817 174.247C84.7823 174.378 84.7241 199.67 84.7527 200.841C83.3011 201.564 82.2529 203.015 82.253 204.747C82.2533 207.186 84.2524 209.153 86.691 209.153C89.1295 209.153 91.0971 207.185 91.0969 204.747C91.0967 203.049 90.1265 201.611 88.7215 200.872C88.7173 200.833 88.7318 194.753 88.7516 187.684C88.7544 186.688 88.7824 174.398 88.7817 174.247C88.7548 168.717 87.2817 164.353 84.343 160.778C83.9922 160.352 83.4774 160.109 82.9679 160.06Z" fill="url(#RadialGradient)" fill-rule="nonzero" filter="url(#Filter)" stroke="none" vectornator:shadowAngle="1.5708" vectornator:shadowColor="#050505" vectornator:shadowOffset="1" vectornator:shadowOpacity="1" vectornator:shadowRadius="2"/> +</g> +</svg> diff --git a/react-ui/public/logo192.png b/react-ui/public/logo192.png deleted file mode 100644 index fc44b0a3796c0e0a64c3d858ca038bd4570465d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5347 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 diff --git a/react-ui/public/logo512.png b/react-ui/public/logo512.png deleted file mode 100644 index a4e47a6545bc15971f8f63fba70e4013df88a664..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9664 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 Q-2sVvy85}Sb4q9e0RM_kJ^%m! diff --git a/react-ui/public/manifest.json b/react-ui/public/manifest.json index 080d6c77a..641e73d58 100644 --- a/react-ui/public/manifest.json +++ b/react-ui/public/manifest.json @@ -8,14 +8,9 @@ "type": "image/x-icon" }, { - "src": "logo192.png", + "src": "logo.png", "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" + "sizes": "400x400" } ], "start_url": ".", diff --git a/react-ui/src/i18n/config.js b/react-ui/src/i18n/config.js new file mode 100644 index 000000000..d43d93d47 --- /dev/null +++ b/react-ui/src/i18n/config.js @@ -0,0 +1,13 @@ +import i18next from "i18next"; + +import common_en from "./locales/en/translations.json"; + +i18next.init({ + interpolation: { escapeValue: false }, // React already does escaping + lng: 'en', // language to use + resources: { + en: { + common: common_en // 'common' is our custom namespace + }, + }, +}); \ No newline at end of file diff --git a/react-ui/src/i18n/locales/en/translations.json b/react-ui/src/i18n/locales/en/translations.json new file mode 100644 index 000000000..0cc55e9af --- /dev/null +++ b/react-ui/src/i18n/locales/en/translations.json @@ -0,0 +1,14 @@ +{ + "global": { + "form": { + "submit": "Submit" + } + }, + + "login": { + "form": { + "username": "Username", + "password": "Password" + } + } +} \ No newline at end of file diff --git a/react-ui/src/index.css b/react-ui/src/index.scss similarity index 73% rename from react-ui/src/index.css rename to react-ui/src/index.scss index ec2585e8c..cdcaaa281 100644 --- a/react-ui/src/index.css +++ b/react-ui/src/index.scss @@ -1,3 +1,5 @@ +@import './style/style.scss'; + body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', @@ -5,9 +7,7 @@ body { sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; -} -code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', - monospace; + + background-color: map-get($theme-colors, bg-primary) !important; } diff --git a/react-ui/src/index.tsx b/react-ui/src/index.tsx index 4d179a46b..db0b82766 100644 --- a/react-ui/src/index.tsx +++ b/react-ui/src/index.tsx @@ -1,16 +1,41 @@ import React from 'react' import ReactDOM, { Container } from 'react-dom/client' -import './index.css' -import App from './pages/landingpage/App' +import { + Outlet, + Route, + RouterProvider, + createBrowserRouter, + createRoutesFromElements, +} from 'react-router-dom' +import './index.scss' +import Landingpage from './pages/landingpage/landingpage' +import LoginPage from './pages/login/login' import initStore from './stores/api.store' -initStore({}) +import './i18n/config' +import { I18nextProvider } from 'react-i18next' +import i18next from 'i18next' + +initStore() const root = ReactDOM.createRoot(document.getElementById('root') as Container) +// create a proper routing +const router = createBrowserRouter( + createRoutesFromElements( + <> + <Route element={<Outlet />}> + <Route path="/" element={<Landingpage />} /> + <Route path="/login" element={<LoginPage />} /> + </Route> + </> + ) +) + root.render( <React.StrictMode> - <App /> + <I18nextProvider i18n={i18next}> + <RouterProvider router={router} /> + </I18nextProvider> </React.StrictMode> ) - diff --git a/react-ui/src/pages/landingpage/App.css b/react-ui/src/pages/landingpage/landingpage.scss similarity index 92% rename from react-ui/src/pages/landingpage/App.css rename to react-ui/src/pages/landingpage/landingpage.scss index bd7fb253b..a46d992e7 100644 --- a/react-ui/src/pages/landingpage/App.css +++ b/react-ui/src/pages/landingpage/landingpage.scss @@ -1,4 +1,3 @@ -@import 'bootstrap/dist/css/bootstrap.min.css'; .App { text-align: center; diff --git a/react-ui/src/pages/landingpage/landingpage.test.tsx b/react-ui/src/pages/landingpage/landingpage.test.tsx new file mode 100644 index 000000000..b3f1713e2 --- /dev/null +++ b/react-ui/src/pages/landingpage/landingpage.test.tsx @@ -0,0 +1,9 @@ +import { render, screen } from '@testing-library/react' +import Landingpage from './landingpage' +import React from 'react' + +test('renders learn react link', () => { + render(<Landingpage />) + const linkElement = screen.getByText(/learn react/i) + expect(linkElement).toBeInTheDocument() +}) diff --git a/react-ui/src/pages/landingpage/App.tsx b/react-ui/src/pages/landingpage/landingpage.tsx similarity index 88% rename from react-ui/src/pages/landingpage/App.tsx rename to react-ui/src/pages/landingpage/landingpage.tsx index 77f66b4bc..b8cb71bc0 100644 --- a/react-ui/src/pages/landingpage/App.tsx +++ b/react-ui/src/pages/landingpage/landingpage.tsx @@ -1,9 +1,7 @@ -import './App.css' +import './landingpage.scss' import logo from '@assets/logo.svg' -import React from 'react' - -function App() { +function Landingpage() { return ( <div className="App"> <header className="App-header"> @@ -24,4 +22,4 @@ function App() { ) } -export default App +export default Landingpage diff --git a/react-ui/src/pages/login/login.scss b/react-ui/src/pages/login/login.scss new file mode 100644 index 000000000..27295346c --- /dev/null +++ b/react-ui/src/pages/login/login.scss @@ -0,0 +1,8 @@ +@import '/node_modules/bootstrap/scss/bootstrap-grid.scss'; + +@include media-breakpoint-up(md) { + .login-container { + padding-bottom: 15em; + } + +} \ No newline at end of file diff --git a/react-ui/src/pages/landingpage/App.test.tsx b/react-ui/src/pages/login/login.test.tsx similarity index 90% rename from react-ui/src/pages/landingpage/App.test.tsx rename to react-ui/src/pages/login/login.test.tsx index 103072bab..7bdf84514 100644 --- a/react-ui/src/pages/landingpage/App.test.tsx +++ b/react-ui/src/pages/login/login.test.tsx @@ -1,5 +1,5 @@ import { render, screen } from '@testing-library/react' -import App from './App' +import App from './login' import React from 'react' test('renders learn react link', () => { diff --git a/react-ui/src/pages/login/login.tsx b/react-ui/src/pages/login/login.tsx new file mode 100644 index 000000000..69d411b62 --- /dev/null +++ b/react-ui/src/pages/login/login.tsx @@ -0,0 +1,76 @@ +import { Button, Col, Container, Form, Image, Row } from 'react-bootstrap' +import { useTranslation } from 'react-i18next' +import './login.scss' + +import logo from '@assets/logo.svg' +import React, { useRef } from 'react' +import { RbacLoginRequest } from '@api' +import { AuthServiceApiRequestFactory } from '@api/apis/AuthServiceApi' +import { createConfiguration } from '@api/configuration'; + +const LoginPage = () => { + const { t } = useTranslation('common') + const usernameRef = useRef<HTMLInputElement>(null) + const passwordRef = useRef<HTMLInputElement>(null) + + const login = (event: React.FormEvent<HTMLFormElement>) => { + event.preventDefault() + + const username = usernameRef.current?.value + const password = passwordRef.current?.value + + const configuration = createConfiguration() + const client = new AuthServiceApiRequestFactory(configuration) + + const payload: RbacLoginRequest = { + username: username, + pwd: password, + timestamp: new Date().toString(), + } + + client.authServiceLogin(payload).then(response => { + console.log(response) + }); + } + + return ( + <Container className="vh-100 d-flex flex-column justify-content-center login-container"> + <Row className="align-items-center"> + <Image src={logo} alt="logo" height={150} /> + </Row> + <Row className="mt-2 justify-content-center"> + <Col md={6} sm={10} className="c-box p-4"> + <h1 className="text-center h2">goSDN - Web</h1> + <Form className="mt-4" onSubmit={login}> + <Form.Group + className="mb-3" + controlId="loginForm.username" + > + <Form.Label>{t('login.form.username')}</Form.Label> + <Form.Control + type="text" + ref={usernameRef} + /> + </Form.Group> + <Form.Group + className="mb-3" + controlId="loginForm.pasword" + > + <Form.Label>{t('login.form.password')}</Form.Label> + <Form.Control type="password" ref={passwordRef} /> + </Form.Group> + <Button + variant="primary" + type="submit" + className="w-100 mt-3" + > + {t('global.form.submit')} + </Button> + </Form> + </Col> + </Row> + </Container> + ) +} + +export default LoginPage diff --git a/react-ui/src/router.tsx b/react-ui/src/router.tsx new file mode 100644 index 000000000..b67113bd7 --- /dev/null +++ b/react-ui/src/router.tsx @@ -0,0 +1,169 @@ +import { + BrowserRouter as Router, + Route, + Link, + useLocation, + Routes +} from "react-router-dom"; + +// This example has 3 pages: a public page, a protected +// page, and a login screen. In order to see the protected +// page, you must first login. Pretty standard stuff. +// +// First, visit the public page. Then, visit the protected +// page. You're not yet logged in, so you are redirected +// to the login page. After you login, you are redirected +// back to the protected page. +// +// Notice the URL change each time. If you click the back +// button at this point, would you expect to go back to the +// login page? No! You're already logged in. Try it out, +// and you'll see you go back to the page you visited +// just *before* logging in, the public page. + +export default function AuthExample() { + return ( + <ProvideAuth> + <Router> + <div> + <AuthButton /> + + <ul> + <li> + <Link to="/public">Public Page</Link> + </li> + <li> + <Link to="/protected">Protected Page</Link> + </li> + </ul> + + <Routes> + <Route path="/public"> + <PublicPage /> + </Route> + <Route path="/login"> + <LoginPage /> + </Route> + <PrivateRoute path="/protected"> + <ProtectedPage /> + </PrivateRoute> + </Routes> + </div> + </Router> + </ProvideAuth> + ); +} + +/** For more details on + * `authContext`, `ProvideAuth`, `useAuth` and `useProvideAuth` + * refer to: https://usehooks.com/useAuth/ + */ +const authContext = createContext(); + +function ProvideAuth({ children }) { + const auth = useProvideAuth(); + return ( + <authContext.Provider value={auth}> + {children} + </authContext.Provider> + ); +} + +function useAuth() { + return useContext(authContext); +} + +function useProvideAuth() { + const [user, setUser] = useState(null); + + const signin = cb => { + return fakeAuth.signin(() => { + setUser("user"); + cb(); + }); + }; + + const signout = cb => { + return fakeAuth.signout(() => { + setUser(null); + cb(); + }); + }; + + return { + user, + signin, + signout + }; +} + +function AuthButton() { + let history = useHistory(); + let auth = useAuth(); + + return auth.user ? ( + <p> + Welcome!{" "} + <button + onClick={() => { + auth.signout(() => history.push("/")); + }} + > + Sign out + </button> + </p> + ) : ( + <p>You are not logged in.</p> + ); +} + +// A wrapper for <Route> that redirects to the login +// screen if you're not yet authenticated. +function PrivateRoute({ children, ...rest }) { + let auth = useAuth(); + return ( + <Route + {...rest} + render={({ location }) => + auth.user ? ( + children + ) : ( + <Redirect + to={{ + pathname: "/login", + state: { from: location } + }} + /> + ) + } + /> + ); +} + +function PublicPage() { + return <h3>Public</h3>; +} + +function ProtectedPage() { + return <h3>Protected</h3>; +} + +function LoginPage() { + let history = useHistory(); + let location = useLocation(); + let auth = useAuth(); + + let { from } = location.state || { from: { pathname: "/" } }; + let login = () => { + auth.signin(() => { + history.replace(from); + }); + }; + + return ( + <div> + <p>You must log in to view the page at {from.pathname}</p> + <button onClick={login}>Log in</button> + </div> + ); +} \ No newline at end of file diff --git a/react-ui/src/stores/api.store.ts b/react-ui/src/stores/api.store.ts index bc400dfae..2ae49c724 100644 --- a/react-ui/src/stores/api.store.ts +++ b/react-ui/src/stores/api.store.ts @@ -1,17 +1,18 @@ import { combineReducers } from 'redux' -import mneReducer from './slices/example.reducer' - +import userReducer from './slices/user.reducer' import { configureStore } from '@reduxjs/toolkit' const getReducers = () => { return combineReducers({ - mneReducer, + userReducer, }) } -const store = configureStore({ - reducer: getReducers(), -}) +const initStore = () => { + return configureStore({ + reducer: getReducers(), + }) +} -export type RootState = ReturnType<typeof store.getState> -export default store +//export type RootState = ReturnType<typeof store.getState> +export default initStore diff --git a/react-ui/src/stores/slices/example.reducer.ts b/react-ui/src/stores/slices/example.reducer.ts deleted file mode 100644 index 5a343e4a2..000000000 --- a/react-ui/src/stores/slices/example.reducer.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { PayloadAction, createSlice } from '@reduxjs/toolkit' - -const mneSlice = createSlice({ - name: 'test', - initialState: 0, - reducers: { - increment: (state, action: PayloadAction<number>) => - state + action.payload, - }, -}) - -const mneReducer = mneSlice.reducer -export default mneReducer diff --git a/react-ui/src/stores/slices/user.reducer.ts b/react-ui/src/stores/slices/user.reducer.ts new file mode 100644 index 000000000..8f0b49812 --- /dev/null +++ b/react-ui/src/stores/slices/user.reducer.ts @@ -0,0 +1,31 @@ +import { PayloadAction, createSlice } from '@reduxjs/toolkit' +import { RootState } from '@reduxjs/toolkit/query'; +import { RbacUser } from 'src/api' + +export type UserType = RbacUser; + + +interface UserState { + user: UserType | undefined +} + + +const initialState: UserState = { + user: undefined +} + + +const userSlice = createSlice({ + name: 'user', + initialState, + reducers: { + set: (state, action: PayloadAction<UserType>) => + {state.user = action.payload}, + }, +}) + +export const { set } = userSlice.actions + +//export const getUser = (state: RootState) => state.counter.value + +export default userSlice.reducer diff --git a/react-ui/src/style/box.scss b/react-ui/src/style/box.scss new file mode 100644 index 000000000..e2782bca2 --- /dev/null +++ b/react-ui/src/style/box.scss @@ -0,0 +1,8 @@ +.c-box { + background-color: white; + + border-radius: 10px; + box-shadow: 0px 4px 4px rgba(0,0,0, .35); + + padding: 5px; +} \ No newline at end of file diff --git a/react-ui/src/style/style.scss b/react-ui/src/style/style.scss new file mode 100644 index 000000000..2d8649fd4 --- /dev/null +++ b/react-ui/src/style/style.scss @@ -0,0 +1,10 @@ +@import './box.scss'; +@import './utils.scss'; + + +$theme-colors: ( + 'primary': #b350e0, + 'bg-primary': #E1E1E1 + ); + + @import '/node_modules/bootstrap/scss/bootstrap'; \ No newline at end of file diff --git a/react-ui/src/style/utils.scss b/react-ui/src/style/utils.scss new file mode 100644 index 000000000..9485a52c6 --- /dev/null +++ b/react-ui/src/style/utils.scss @@ -0,0 +1,3 @@ +.vh-100 { + height: 100vh !important; +} \ No newline at end of file diff --git a/react-ui/tsconfig.json b/react-ui/tsconfig.json index 1d185143f..aa7289071 100644 --- a/react-ui/tsconfig.json +++ b/react-ui/tsconfig.json @@ -23,8 +23,14 @@ "baseUrl": ".", "paths": { "@assets/*": ["assets/*"], + "@api/*": ["src/api/*"], + "@api": ["src/api"], } }, - "include": ["src"], + "include": [ + "src/**/*.d.ts", + "src/**/*.ts", + "src/**/*.tsx", + ], "references": [{ "path": "./tsconfig.node.json" }] } \ No newline at end of file diff --git a/react-ui/vite.config.mjs b/react-ui/vite.config.mjs index 3454c14e0..bf2ad319d 100644 --- a/react-ui/vite.config.mjs +++ b/react-ui/vite.config.mjs @@ -1,6 +1,7 @@ import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' + export default defineConfig({ plugins: [react()], server: { @@ -9,6 +10,7 @@ export default defineConfig({ resolve: { alias: { '@assets': '/assets', + '@api': '/src/api', }, }, // build: { diff --git a/react-ui/yarn.lock b/react-ui/yarn.lock index 788a45858..e37ab2bee 100644 --- a/react-ui/yarn.lock +++ b/react-ui/yarn.lock @@ -1287,6 +1287,13 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.23.9": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.6.tgz#5b76eb89ad45e2e4a0a8db54c456251469a3358e" + integrity sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.22.15", "@babel/template@^7.24.0", "@babel/template@^7.3.3": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" @@ -2014,6 +2021,11 @@ redux-thunk "^3.1.0" reselect "^5.1.0" +"@remix-run/router@1.16.1": + version "1.16.1" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.16.1.tgz#73db3c48b975eeb06d0006481bde4f5f2d17d1cd" + integrity sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig== + "@restart/hooks@^0.4.9": version "0.4.16" resolved "https://registry.yarnpkg.com/@restart/hooks/-/hooks-0.4.16.tgz#95ae8ac1cc7e2bd4fed5e39800ff85604c6d59fb" @@ -3775,7 +3787,7 @@ check-types@^11.2.3: resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.2.3.tgz#1ffdf68faae4e941fce252840b1787b8edc93b71" integrity sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg== -chokidar@^3.4.2, chokidar@^3.5.3: +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.2, chokidar@^3.5.3: version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -5781,6 +5793,13 @@ html-minifier-terser@^6.0.2: relateurl "^0.2.7" terser "^5.10.0" +html-parse-stringify@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz#dfc1017347ce9f77c8141a507f233040c59c55d2" + integrity sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg== + dependencies: + void-elements "3.1.0" + html-webpack-plugin@^5.5.0: version "5.6.0" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz#50a8fa6709245608cb00e811eacecb8e0d7b7ea0" @@ -5875,6 +5894,13 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +i18next@^23.11.5: + version "23.11.5" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.11.5.tgz#d71eb717a7e65498d87d0594f2664237f9e361ef" + integrity sha512-41pvpVbW9rhZPk5xjCX2TPJi2861LEig/YRhUkY+1FQ2IQPS0bKUDYnEqY8XPPbB48h1uIwLnP9iiEfuSl20CA== + dependencies: + "@babel/runtime" "^7.23.2" + iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -5921,6 +5947,11 @@ immer@^9.0.7: resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== +immutable@^4.0.0: + version "4.3.6" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.6.tgz#6a05f7858213238e587fb83586ffa3b4b27f0447" + integrity sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ== + import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -8607,6 +8638,14 @@ react-error-overlay@^6.0.11: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== +react-i18next@^14.1.2: + version "14.1.2" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-14.1.2.tgz#cd57a755f25a32a5fcc3dbe546cf3cc62b4f3ebd" + integrity sha512-FSIcJy6oauJbGEXfhUgVeLzvWBhIBIS+/9c6Lj4niwKZyGaGb4V4vUbATXSlsHJDXXB+ociNxqFNiFuV1gmoqg== + dependencies: + "@babel/runtime" "^7.23.9" + html-parse-stringify "^3.0.1" + react-is@^16.13.1, react-is@^16.3.2: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -8645,6 +8684,21 @@ react-refresh@^0.14.2: resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9" integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== +react-router-dom@^6.23.1: + version "6.23.1" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.23.1.tgz#30cbf266669693e9492aa4fc0dde2541ab02322f" + integrity sha512-utP+K+aSTtEdbWpC+4gxhdlPFwuEfDKq8ZrPFU65bbRJY+l706qjR7yaidBpo3MSeA/fzwbXWbKBI6ftOnP3OQ== + dependencies: + "@remix-run/router" "1.16.1" + react-router "6.23.1" + +react-router@6.23.1: + version "6.23.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.23.1.tgz#d08cbdbd9d6aedc13eea6e94bc6d9b29cb1c4be9" + integrity sha512-fzcOaRF69uvqbbM7OhvQyBTFDVrrGlsFdS3AL+1KfIBtGETibHzi3FkoTRyiDJnWNc2VxrfvR+657ROHjaNjqQ== + dependencies: + "@remix-run/router" "1.16.1" + react-scripts@5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-5.0.1.tgz#6285dbd65a8ba6e49ca8d651ce30645a6d980003" @@ -9054,6 +9108,15 @@ sass-loader@^12.3.0: klona "^2.0.4" neo-async "^2.6.2" +sass@^1.77.2: + version "1.77.2" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.2.tgz#18d4ed2eefc260cdc8099c5439ec1303fd5863aa" + integrity sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -9287,7 +9350,7 @@ source-list-map@^2.0.0, source-list-map@^2.0.1: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -source-map-js@^1.0.1, source-map-js@^1.2.0: +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== @@ -9421,16 +9484,7 @@ string-natural-compare@^3.0.1: resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.1.0, string-width@^4.2.0: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -9517,14 +9571,7 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -10151,6 +10198,11 @@ vite@^5.2.0: optionalDependencies: fsevents "~2.3.3" +void-elements@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" + integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== + w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -10607,16 +10659,7 @@ workbox-window@6.6.1: "@types/trusted-types" "^2.0.2" workbox-core "6.6.1" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== -- GitLab From 437608e16748a2ea94bec1ce6d53a687859ae721 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Tue, 28 May 2024 14:58:47 +0200 Subject: [PATCH 05/44] add german as language --- react-ui/README.md | 2 ++ react-ui/docs/development.md | 25 +++++++++++++++++++ react-ui/src/i18n/config.js | 10 +++++--- .../src/i18n/locales/de/translations.json | 14 +++++++++++ react-ui/src/pages/login/login.tsx | 25 +++++++++++-------- 5 files changed, 63 insertions(+), 13 deletions(-) create mode 100644 react-ui/docs/development.md create mode 100644 react-ui/src/i18n/locales/de/translations.json diff --git a/react-ui/README.md b/react-ui/README.md index b6c8b0ba1..c9208ec09 100644 --- a/react-ui/README.md +++ b/react-ui/README.md @@ -7,5 +7,7 @@ This is the UI for the goSDN project. It's a webapp written in react ### Requirements - Docker + + ### Author Matthias Feyll \ No newline at end of file diff --git a/react-ui/docs/development.md b/react-ui/docs/development.md new file mode 100644 index 000000000..819b1dfd7 --- /dev/null +++ b/react-ui/docs/development.md @@ -0,0 +1,25 @@ +## Development +### Technologies +The web app uses several technologies: +* JS-Framework: **React js** +* State management: **Redux** +* Component Libray: **React-Bootstrap** +* CSS-Framework: **Bootstrap** +* Bundler: **Vite** + +Additionally the web app has several core features that should be considered: +* multi languages (i18n): + * English + * German + + +### API +The API to communicate is getting generated with: + +``` +yarn build::api +``` + +It generates a restful API in the `/src/api/` folder. + +We need to proxy the incoming request to the API-Gateway from goSDN. \ No newline at end of file diff --git a/react-ui/src/i18n/config.js b/react-ui/src/i18n/config.js index d43d93d47..398603ff7 100644 --- a/react-ui/src/i18n/config.js +++ b/react-ui/src/i18n/config.js @@ -1,13 +1,17 @@ import i18next from "i18next"; import common_en from "./locales/en/translations.json"; +import common_de from "./locales/de/translations.json"; i18next.init({ - interpolation: { escapeValue: false }, // React already does escaping - lng: 'en', // language to use + interpolation: { escapeValue: false }, + lng: 'en', resources: { en: { - common: common_en // 'common' is our custom namespace + common: common_en }, + de: { + common: common_de + } }, }); \ No newline at end of file diff --git a/react-ui/src/i18n/locales/de/translations.json b/react-ui/src/i18n/locales/de/translations.json new file mode 100644 index 000000000..0c6599156 --- /dev/null +++ b/react-ui/src/i18n/locales/de/translations.json @@ -0,0 +1,14 @@ +{ + "global": { + "form": { + "submit": "Abschicken" + } + }, + + "login": { + "form": { + "username": "Benutzername", + "password": "Passwort" + } + } +} \ No newline at end of file diff --git a/react-ui/src/pages/login/login.tsx b/react-ui/src/pages/login/login.tsx index 69d411b62..66b78b546 100644 --- a/react-ui/src/pages/login/login.tsx +++ b/react-ui/src/pages/login/login.tsx @@ -2,11 +2,11 @@ import { Button, Col, Container, Form, Image, Row } from 'react-bootstrap' import { useTranslation } from 'react-i18next' import './login.scss' +import { AuthServiceApiAuthServiceLoginRequest } from '@api/types/ObjectParamAPI' +import { PromiseAuthServiceApi } from '@api/types/PromiseAPI' import logo from '@assets/logo.svg' import React, { useRef } from 'react' -import { RbacLoginRequest } from '@api' -import { AuthServiceApiRequestFactory } from '@api/apis/AuthServiceApi' -import { createConfiguration } from '@api/configuration'; +import { createConfiguration } from '../../api/configuration' const LoginPage = () => { const { t } = useTranslation('common') @@ -19,18 +19,23 @@ const LoginPage = () => { const username = usernameRef.current?.value const password = passwordRef.current?.value - const configuration = createConfiguration() - const client = new AuthServiceApiRequestFactory(configuration) - const payload: RbacLoginRequest = { + const configuration = createConfiguration(); + const apiInstance = new PromiseAuthServiceApi(configuration); + + // TODO check values + const body: AuthServiceApiAuthServiceLoginRequest = { + body: { username: username, pwd: password, timestamp: new Date().toString(), - } + }, + }; + + apiInstance.authServiceLogin(body).then((data:any) => { + console.log('API called successfully. Returned data: ' + data); + }).catch((error:any) => console.error(error)); - client.authServiceLogin(payload).then(response => { - console.log(response) - }); } return ( -- GitLab From 155a21ee2a3dd5ad0f9acc364521e99fdb3d927d Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Tue, 4 Jun 2024 11:57:35 +0200 Subject: [PATCH 06/44] wip cors implementation --- react-ui/package.json | 1 + react-ui/scripts/build-api.sh | 2 +- react-ui/scripts/openapitools.json | 27 +++++++++++++++++++++++ react-ui/src/pages/login/login.tsx | 35 ++++++++++++++++-------------- react-ui/src/setupProxy.js | 11 ++++++++++ react-ui/tsconfig.json | 5 ++--- react-ui/tsconfig.node.json | 6 +++-- react-ui/vite.config.mjs | 29 ++++++++++++++++++++----- 8 files changed, 89 insertions(+), 27 deletions(-) create mode 100644 react-ui/scripts/openapitools.json create mode 100644 react-ui/src/setupProxy.js diff --git a/react-ui/package.json b/react-ui/package.json index 16a92a477..5d920f15f 100644 --- a/react-ui/package.json +++ b/react-ui/package.json @@ -45,6 +45,7 @@ "last 1 safari version" ] }, + "proxy": "http://localhost:55055", "devDependencies": { "@babel/runtime": "^7.21.5", "@types/react": "^18.2.66", diff --git a/react-ui/scripts/build-api.sh b/react-ui/scripts/build-api.sh index 5716ba969..76454bb06 100755 --- a/react-ui/scripts/build-api.sh +++ b/react-ui/scripts/build-api.sh @@ -6,5 +6,5 @@ API_PATH=/api/openapiv2 OUTPUT=${PROJECT_NAME}/src/api -docker run -it --rm \ +docker run -i --rm \ -v ${PROJECT_ROOT}:/local openapitools/openapi-generator-cli generate -i /local${API_PATH}/gosdn_northbound.swagger.json -g typescript -o /local/${OUTPUT} \ No newline at end of file diff --git a/react-ui/scripts/openapitools.json b/react-ui/scripts/openapitools.json new file mode 100644 index 000000000..33e1ba3d4 --- /dev/null +++ b/react-ui/scripts/openapitools.json @@ -0,0 +1,27 @@ +{ + "$schema": "../node_modules/@openapitools/openapi-generator-cli/config.schema.json", + "spaces": 2, + "generator-cli": { + "version": "4.3.1", + "storageDir": "~/my/custom/storage/dir", // optional + "generators": { // optional + "v2.0": { // any name you like (just printed to the console log or reference it using --generator-key) + "generatorName": "typescript-angular", + "output": "#{cwd}/output/v2.0/#{ext}/#{name}", + "glob": "examples/v2.0/{json,yaml}/*.{json,yaml}", + "additionalProperties": { + "ngVersion": "6.1.7", + "npmName": "restClient", + "supportsES6": "true", + "npmVersion": "6.9.0", + "withInterfaces": true + } + }, + "v3.0": { // any name you like (just printed to the console log or reference it using --generator-key) + "generatorName": "typescript-fetch", + "output": "#{cwd}/output/v3.0/#{ext}/#{name}", + "glob": "examples/v3.0/petstore.{json,yaml}" + } + } + } + } \ No newline at end of file diff --git a/react-ui/src/pages/login/login.tsx b/react-ui/src/pages/login/login.tsx index 66b78b546..7eb213e78 100644 --- a/react-ui/src/pages/login/login.tsx +++ b/react-ui/src/pages/login/login.tsx @@ -3,37 +3,40 @@ import { useTranslation } from 'react-i18next' import './login.scss' import { AuthServiceApiAuthServiceLoginRequest } from '@api/types/ObjectParamAPI' -import { PromiseAuthServiceApi } from '@api/types/PromiseAPI' import logo from '@assets/logo.svg' import React, { useRef } from 'react' -import { createConfiguration } from '../../api/configuration' +import { AuthServiceApi, RbacLoginRequest, RbacLoginResponse, createConfiguration } from '@api/index' const LoginPage = () => { const { t } = useTranslation('common') const usernameRef = useRef<HTMLInputElement>(null) const passwordRef = useRef<HTMLInputElement>(null) - const login = (event: React.FormEvent<HTMLFormElement>) => { - event.preventDefault() - + const getAuthPayload = (): RbacLoginRequest => { const username = usernameRef.current?.value const password = passwordRef.current?.value - - const configuration = createConfiguration(); - const apiInstance = new PromiseAuthServiceApi(configuration); - - // TODO check values - const body: AuthServiceApiAuthServiceLoginRequest = { - body: { + // TODO check values + const payload: RbacLoginRequest = { username: username, pwd: password, timestamp: new Date().toString(), - }, - }; + } + + return payload; + } + + const login = (event: React.FormEvent<HTMLFormElement>) => { + event.preventDefault() + + const configuration = createConfiguration(); + const apiInstance = new AuthServiceApi(configuration); + + const payload = getAuthPayload(); + - apiInstance.authServiceLogin(body).then((data:any) => { - console.log('API called successfully. Returned data: ' + data); + apiInstance.authServiceLogin(payload).then((response:RbacLoginResponse) => { + console.log('API called successfully. Returned data: ' + response); }).catch((error:any) => console.error(error)); } diff --git a/react-ui/src/setupProxy.js b/react-ui/src/setupProxy.js new file mode 100644 index 000000000..afeb740de --- /dev/null +++ b/react-ui/src/setupProxy.js @@ -0,0 +1,11 @@ +const { createProxyMiddleware } = require('http-proxy-middleware'); + +module.exports = function(app) { + app.use( + '/api', + createProxyMiddleware({ + target: 'http://127.0.0.1:8089', + changeOrigin: true, + }) + ); +}; \ No newline at end of file diff --git a/react-ui/tsconfig.json b/react-ui/tsconfig.json index aa7289071..977976c0f 100644 --- a/react-ui/tsconfig.json +++ b/react-ui/tsconfig.json @@ -24,7 +24,6 @@ "paths": { "@assets/*": ["assets/*"], "@api/*": ["src/api/*"], - "@api": ["src/api"], } }, "include": [ @@ -32,5 +31,5 @@ "src/**/*.ts", "src/**/*.tsx", ], - "references": [{ "path": "./tsconfig.node.json" }] - } \ No newline at end of file + //"references": [{ "path": "./tsconfig.node.json" }] +} \ No newline at end of file diff --git a/react-ui/tsconfig.node.json b/react-ui/tsconfig.node.json index 97ede7ee6..d5ed4eaa8 100644 --- a/react-ui/tsconfig.node.json +++ b/react-ui/tsconfig.node.json @@ -7,5 +7,7 @@ "allowSyntheticDefaultImports": true, "strict": true }, - "include": ["vite.config.ts"] -} + "include": [ + "vite.config.ts" + ] +} \ No newline at end of file diff --git a/react-ui/vite.config.mjs b/react-ui/vite.config.mjs index bf2ad319d..7aa8ebc5a 100644 --- a/react-ui/vite.config.mjs +++ b/react-ui/vite.config.mjs @@ -5,7 +5,26 @@ import react from '@vitejs/plugin-react' export default defineConfig({ plugins: [react()], server: { - port: 3000, // Standardmäßig wird Port 3000 verwendet, kann aber angepasst werden + port: 3000, + proxy: { + '/api': { + target: 'https://localhost:8089', + changeOrigin: true, + secure: false, + ws: true, + configure: (proxy, _options) => { + proxy.on('error', (err, _req, _res) => { + console.log('proxy error', err); + }); + proxy.on('proxyReq', (proxyReq, req, _res) => { + console.log('Sending Request to the Target:', req.method, req.url); + }); + proxy.on('proxyRes', (proxyRes, req, _res) => { + console.log('Received Response from the Target:', proxyRes.statusCode, req.url); + }); + }, + } + } }, resolve: { alias: { @@ -13,8 +32,8 @@ export default defineConfig({ '@api': '/src/api', }, }, - // build: { - // outDir: 'dist', // Standardmäßiger Ausgabepfad für den Build - // sourcemap: true, // Source Maps für den Build aktivieren - // }, + + build: { + sourcemap: true, // Source Maps für den Build aktivieren + }, }); \ No newline at end of file -- GitLab From f0d19da8104ef4f6ed6185941e89275b4e05ba8d Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Tue, 4 Jun 2024 17:34:01 +0200 Subject: [PATCH 07/44] added rtx query to redux --- react-ui/.gitignore | 2 +- react-ui/package.json | 4 +- react-ui/scripts/build-api.sh | 2 +- react-ui/scripts/openapi-config.json | 8 + react-ui/scripts/openapitools.json | 27 - react-ui/scripts/test.ts | 1208 ++++++++++++++++++++++++++ react-ui/src/index.tsx | 13 +- react-ui/src/pages/login/login.tsx | 31 +- react-ui/src/setupProxy.js | 11 - react-ui/src/stores/api.store.ts | 23 +- react-ui/src/stores/index.ts | 23 + react-ui/tsconfig.json | 2 +- react-ui/tsconfig.node.json | 2 +- react-ui/vite.config.mjs | 6 +- react-ui/yarn.lock | 297 ++++++- 15 files changed, 1570 insertions(+), 89 deletions(-) create mode 100644 react-ui/scripts/openapi-config.json delete mode 100644 react-ui/scripts/openapitools.json create mode 100644 react-ui/scripts/test.ts delete mode 100644 react-ui/src/setupProxy.js create mode 100644 react-ui/src/stores/index.ts diff --git a/react-ui/.gitignore b/react-ui/.gitignore index bccd6e591..e7d84c03a 100644 --- a/react-ui/.gitignore +++ b/react-ui/.gitignore @@ -9,7 +9,7 @@ /coverage # api -/src/api +/src/api/** # production /build diff --git a/react-ui/package.json b/react-ui/package.json index 5d920f15f..f2d15cd7c 100644 --- a/react-ui/package.json +++ b/react-ui/package.json @@ -23,7 +23,8 @@ "start": "vite", "build": "tsc && vite build", "test": "react-scripts test", - "build::api": "./scripts/build-api.sh", + "build::api_old": "./scripts/build-api.sh", + "build::api": "npx @rtk-query/codegen-openapi ./scripts/openapi-config.json", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "lint::fix": "eslint src --ext .js,.jsx,.ts,.tsx --fix" }, @@ -48,6 +49,7 @@ "proxy": "http://localhost:55055", "devDependencies": { "@babel/runtime": "^7.21.5", + "@rtk-query/codegen-openapi": "^1.2.0", "@types/react": "^18.2.66", "@types/react-dom": "^18.2.22", "@typescript-eslint/eslint-plugin": "^7.2.0", diff --git a/react-ui/scripts/build-api.sh b/react-ui/scripts/build-api.sh index 76454bb06..710affc43 100755 --- a/react-ui/scripts/build-api.sh +++ b/react-ui/scripts/build-api.sh @@ -7,4 +7,4 @@ API_PATH=/api/openapiv2 OUTPUT=${PROJECT_NAME}/src/api docker run -i --rm \ - -v ${PROJECT_ROOT}:/local openapitools/openapi-generator-cli generate -i /local${API_PATH}/gosdn_northbound.swagger.json -g typescript -o /local/${OUTPUT} \ No newline at end of file + -v ${PROJECT_ROOT}:/local openapitools/openapi-generator-cli generate -i /local${API_PATH}/gosdn_northbound.swagger.json -g typescript-redux-query -o /local/${OUTPUT} \ No newline at end of file diff --git a/react-ui/scripts/openapi-config.json b/react-ui/scripts/openapi-config.json new file mode 100644 index 000000000..1aa05ba6e --- /dev/null +++ b/react-ui/scripts/openapi-config.json @@ -0,0 +1,8 @@ +{ + "schemaFile": "../../api/openapiv2/gosdn_northbound.swagger.json", + "apiFile": "../src/stores/api.store.ts", + "apiImport": "emptySplitApi", + "outputFile": "../src/api/api.ts", + "exportName": "api", + "hooks": true +} \ No newline at end of file diff --git a/react-ui/scripts/openapitools.json b/react-ui/scripts/openapitools.json deleted file mode 100644 index 33e1ba3d4..000000000 --- a/react-ui/scripts/openapitools.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "$schema": "../node_modules/@openapitools/openapi-generator-cli/config.schema.json", - "spaces": 2, - "generator-cli": { - "version": "4.3.1", - "storageDir": "~/my/custom/storage/dir", // optional - "generators": { // optional - "v2.0": { // any name you like (just printed to the console log or reference it using --generator-key) - "generatorName": "typescript-angular", - "output": "#{cwd}/output/v2.0/#{ext}/#{name}", - "glob": "examples/v2.0/{json,yaml}/*.{json,yaml}", - "additionalProperties": { - "ngVersion": "6.1.7", - "npmName": "restClient", - "supportsES6": "true", - "npmVersion": "6.9.0", - "withInterfaces": true - } - }, - "v3.0": { // any name you like (just printed to the console log or reference it using --generator-key) - "generatorName": "typescript-fetch", - "output": "#{cwd}/output/v3.0/#{ext}/#{name}", - "glob": "examples/v3.0/petstore.{json,yaml}" - } - } - } - } \ No newline at end of file diff --git a/react-ui/scripts/test.ts b/react-ui/scripts/test.ts new file mode 100644 index 000000000..775438e48 --- /dev/null +++ b/react-ui/scripts/test.ts @@ -0,0 +1,1208 @@ +import { emptySplitApi as api } from '../src/stores/api.store' +const injectedRtkApi = api.injectEndpoints({ + endpoints: (build) => ({ + appServiceDeregister: build.mutation< + AppServiceDeregisterApiResponse, + AppServiceDeregisterApiArg + >({ + query: (queryArg) => ({ + url: `/deregister`, + method: 'POST', + body: queryArg.appAppDeregisterRequest, + }), + }), + configurationManagementServiceExportSdnConfig: build.query< + ConfigurationManagementServiceExportSdnConfigApiResponse, + ConfigurationManagementServiceExportSdnConfigApiArg + >({ + query: (queryArg) => ({ + url: `/export/${queryArg.pid}`, + params: { timestamp: queryArg.timestamp }, + }), + }), + configurationManagementServiceImportSdnConfig: build.mutation< + ConfigurationManagementServiceImportSdnConfigApiResponse, + ConfigurationManagementServiceImportSdnConfigApiArg + >({ + query: (queryArg) => ({ + url: `/import/${queryArg.pid}`, + method: 'POST', + params: { + timestamp: queryArg.timestamp, + sdnConfigData: queryArg.sdnConfigData, + }, + }), + }), + authServiceLogin: build.mutation< + AuthServiceLoginApiResponse, + AuthServiceLoginApiArg + >({ + query: (queryArg) => ({ + url: `/login`, + method: 'POST', + body: queryArg.rbacLoginRequest, + }), + }), + authServiceLogout: build.mutation< + AuthServiceLogoutApiResponse, + AuthServiceLogoutApiArg + >({ + query: (queryArg) => ({ + url: `/logout/${queryArg.username}`, + method: 'POST', + params: { timestamp: queryArg.timestamp }, + }), + }), + networkElementServiceUpdate: build.mutation< + NetworkElementServiceUpdateApiResponse, + NetworkElementServiceUpdateApiArg + >({ + query: (queryArg) => ({ + url: `/network-element/update`, + method: 'POST', + body: queryArg.networkelementUpdateNetworkElementRequest, + }), + }), + pndServiceGetPnd: build.query< + PndServiceGetPndApiResponse, + PndServiceGetPndApiArg + >({ + query: (queryArg) => ({ + url: `/pnd/${queryArg.pid}`, + params: { timestamp: queryArg.timestamp }, + }), + }), + pndServiceGetPndList: build.query< + PndServiceGetPndListApiResponse, + PndServiceGetPndListApiArg + >({ + query: (queryArg) => ({ + url: `/pnds`, + params: { timestamp: queryArg.timestamp }, + }), + }), + pndServiceCreatePndList: build.mutation< + PndServiceCreatePndListApiResponse, + PndServiceCreatePndListApiArg + >({ + query: (queryArg) => ({ + url: `/pnds`, + method: 'POST', + body: queryArg.pndCreatePndListRequest, + }), + }), + pndServiceDeletePnd: build.mutation< + PndServiceDeletePndApiResponse, + PndServiceDeletePndApiArg + >({ + query: (queryArg) => ({ + url: `/pnds/${queryArg.pid}`, + method: 'DELETE', + params: { timestamp: queryArg.timestamp }, + }), + }), + networkElementServiceGetChangeList: build.query< + NetworkElementServiceGetChangeListApiResponse, + NetworkElementServiceGetChangeListApiArg + >({ + query: (queryArg) => ({ + url: `/pnds/${queryArg.pid}/changes`, + params: { timestamp: queryArg.timestamp }, + }), + }), + networkElementServiceSetChangeList: build.mutation< + NetworkElementServiceSetChangeListApiResponse, + NetworkElementServiceSetChangeListApiArg + >({ + query: (queryArg) => ({ + url: `/pnds/${queryArg.pid}/changes`, + method: 'POST', + body: queryArg.networkElementServiceSetChangeListBody, + }), + }), + networkElementServiceGetChange: build.query< + NetworkElementServiceGetChangeApiResponse, + NetworkElementServiceGetChangeApiArg + >({ + query: (queryArg) => ({ + url: `/pnds/${queryArg.pid}/changes/${queryArg.cuid}`, + params: { timestamp: queryArg.timestamp }, + }), + }), + networkElementServiceGet: build.query< + NetworkElementServiceGetApiResponse, + NetworkElementServiceGetApiArg + >({ + query: (queryArg) => ({ + url: `/pnds/${queryArg.pid}/mne/${queryArg.mneid}`, + params: { timestamp: queryArg.timestamp }, + }), + }), + networkElementServiceGetAllFlattened: build.query< + NetworkElementServiceGetAllFlattenedApiResponse, + NetworkElementServiceGetAllFlattenedApiArg + >({ + query: (queryArg) => ({ + url: `/pnds/${queryArg.pid}/mnes`, + params: { timestamp: queryArg.timestamp }, + }), + }), + networkElementServiceAddList: build.mutation< + NetworkElementServiceAddListApiResponse, + NetworkElementServiceAddListApiArg + >({ + query: (queryArg) => ({ + url: `/pnds/${queryArg.pid}/mnes`, + method: 'POST', + body: queryArg.networkElementServiceAddListBody, + }), + }), + networkElementServiceSetPathList: build.mutation< + NetworkElementServiceSetPathListApiResponse, + NetworkElementServiceSetPathListApiArg + >({ + query: (queryArg) => ({ + url: `/pnds/${queryArg.pid}/mnes/paths`, + method: 'POST', + body: queryArg.networkElementServiceSetPathListBody, + }), + }), + networkElementServiceDelete: build.mutation< + NetworkElementServiceDeleteApiResponse, + NetworkElementServiceDeleteApiArg + >({ + query: (queryArg) => ({ + url: `/pnds/${queryArg.pid}/mnes/${queryArg.mneid}`, + method: 'DELETE', + params: { timestamp: queryArg.timestamp }, + }), + }), + networkElementServiceGetIntendedPath: build.query< + NetworkElementServiceGetIntendedPathApiResponse, + NetworkElementServiceGetIntendedPathApiArg + >({ + query: (queryArg) => ({ + url: `/pnds/${queryArg.pid}/mnes/${queryArg.mneid}/intendedpaths/${queryArg.intendedPath}`, + params: { timestamp: queryArg.timestamp }, + }), + }), + networkElementServiceGetPath: build.query< + NetworkElementServiceGetPathApiResponse, + NetworkElementServiceGetPathApiArg + >({ + query: (queryArg) => ({ + url: `/pnds/${queryArg.pid}/mnes/${queryArg.mneid}/paths/${queryArg.path}`, + params: { timestamp: queryArg.timestamp }, + }), + }), + appServiceRegister: build.mutation< + AppServiceRegisterApiResponse, + AppServiceRegisterApiArg + >({ + query: (queryArg) => ({ + url: `/register`, + method: 'POST', + body: queryArg.appAppRegisterRequest, + }), + }), + roleServiceGetRoles: build.query< + RoleServiceGetRolesApiResponse, + RoleServiceGetRolesApiArg + >({ + query: (queryArg) => ({ + url: `/roles`, + params: { timestamp: queryArg.timestamp }, + }), + }), + roleServiceCreateRoles: build.mutation< + RoleServiceCreateRolesApiResponse, + RoleServiceCreateRolesApiArg + >({ + query: (queryArg) => ({ + url: `/roles/create`, + method: 'POST', + body: queryArg.rbacCreateRolesRequest, + }), + }), + roleServiceDeleteRoles: build.mutation< + RoleServiceDeleteRolesApiResponse, + RoleServiceDeleteRolesApiArg + >({ + query: (queryArg) => ({ + url: `/roles/delete`, + method: 'DELETE', + params: { + timestamp: queryArg.timestamp, + roleName: queryArg.roleName, + }, + }), + }), + roleServiceDeletePermissionsForRole: build.mutation< + RoleServiceDeletePermissionsForRoleApiResponse, + RoleServiceDeletePermissionsForRoleApiArg + >({ + query: (queryArg) => ({ + url: `/roles/delete/permissions`, + method: 'DELETE', + params: { + timestamp: queryArg.timestamp, + roleName: queryArg.roleName, + permissionsToDelete: queryArg.permissionsToDelete, + }, + }), + }), + roleServiceGetRole: build.query< + RoleServiceGetRoleApiResponse, + RoleServiceGetRoleApiArg + >({ + query: (queryArg) => ({ + url: `/roles/get`, + params: { + timestamp: queryArg.timestamp, + roleName: queryArg.roleName, + id: queryArg.id, + }, + }), + }), + roleServiceUpdateRoles: build.mutation< + RoleServiceUpdateRolesApiResponse, + RoleServiceUpdateRolesApiArg + >({ + query: (queryArg) => ({ + url: `/roles/update`, + method: 'POST', + body: queryArg.rbacUpdateRolesRequest, + }), + }), + routingTableServiceGetRoutes: build.query< + RoutingTableServiceGetRoutesApiResponse, + RoutingTableServiceGetRoutesApiArg + >({ + query: (queryArg) => ({ + url: `/routing`, + params: { timestamp: queryArg.timestamp }, + }), + }), + routingTableServiceAddRoutingTable: build.mutation< + RoutingTableServiceAddRoutingTableApiResponse, + RoutingTableServiceAddRoutingTableApiArg + >({ + query: (queryArg) => ({ + url: `/routing/create`, + method: 'POST', + body: queryArg.topologyAddRoutingTableRequest, + }), + }), + routingTableServiceDeleteRoute: build.mutation< + RoutingTableServiceDeleteRouteApiResponse, + RoutingTableServiceDeleteRouteApiArg + >({ + query: (queryArg) => ({ + url: `/routing/delete`, + method: 'DELETE', + params: { timestamp: queryArg.timestamp, id: queryArg.id }, + }), + }), + topologyServiceGetTopology: build.query< + TopologyServiceGetTopologyApiResponse, + TopologyServiceGetTopologyApiArg + >({ + query: (queryArg) => ({ + url: `/topology`, + params: { timestamp: queryArg.timestamp }, + }), + }), + topologyServiceAddLink: build.mutation< + TopologyServiceAddLinkApiResponse, + TopologyServiceAddLinkApiArg + >({ + query: (queryArg) => ({ + url: `/topology/create`, + method: 'POST', + body: queryArg.topologyAddLinkRequest, + }), + }), + topologyServiceDeleteLink: build.mutation< + TopologyServiceDeleteLinkApiResponse, + TopologyServiceDeleteLinkApiArg + >({ + query: (queryArg) => ({ + url: `/topology/delete`, + method: 'DELETE', + params: { timestamp: queryArg.timestamp, id: queryArg.id }, + }), + }), + topologyServiceUpdateLink: build.mutation< + TopologyServiceUpdateLinkApiResponse, + TopologyServiceUpdateLinkApiArg + >({ + query: (queryArg) => ({ + url: `/topology/update`, + method: 'POST', + body: queryArg.topologyUpdateLinkRequest, + }), + }), + userServiceGetUsers: build.query< + UserServiceGetUsersApiResponse, + UserServiceGetUsersApiArg + >({ + query: (queryArg) => ({ + url: `/users`, + params: { timestamp: queryArg.timestamp }, + }), + }), + userServiceCreateUsers: build.mutation< + UserServiceCreateUsersApiResponse, + UserServiceCreateUsersApiArg + >({ + query: (queryArg) => ({ + url: `/users/create`, + method: 'POST', + body: queryArg.rbacCreateUsersRequest, + }), + }), + userServiceDeleteUsers: build.mutation< + UserServiceDeleteUsersApiResponse, + UserServiceDeleteUsersApiArg + >({ + query: (queryArg) => ({ + url: `/users/delete`, + method: 'DELETE', + params: { + timestamp: queryArg.timestamp, + username: queryArg.username, + }, + }), + }), + userServiceGetUser: build.query< + UserServiceGetUserApiResponse, + UserServiceGetUserApiArg + >({ + query: (queryArg) => ({ + url: `/users/get`, + params: { + timestamp: queryArg.timestamp, + name: queryArg.name, + id: queryArg.id, + }, + }), + }), + userServiceUpdateUsers: build.mutation< + UserServiceUpdateUsersApiResponse, + UserServiceUpdateUsersApiArg + >({ + query: (queryArg) => ({ + url: `/users/update`, + method: 'POST', + body: queryArg.rbacUpdateUsersRequest, + }), + }), + }), + overrideExisting: false, +}) +export { injectedRtkApi as api } +export type AppServiceDeregisterApiResponse = + /** status 200 A successful response. */ AppAppDeregisterResponse +export type AppServiceDeregisterApiArg = { + appAppDeregisterRequest: AppAppDeregisterRequest +} +export type ConfigurationManagementServiceExportSdnConfigApiResponse = + /** status 200 A successful response. */ ConfigurationmanagementExportSdnConfigResponse +export type ConfigurationManagementServiceExportSdnConfigApiArg = { + pid: string + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string +} +export type ConfigurationManagementServiceImportSdnConfigApiResponse = + /** status 200 A successful response. */ ConfigurationmanagementImportSdnConfigResponse +export type ConfigurationManagementServiceImportSdnConfigApiArg = { + pid: string + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + sdnConfigData?: string +} +export type AuthServiceLoginApiResponse = + /** status 200 A successful response. */ RbacLoginResponse +export type AuthServiceLoginApiArg = { + rbacLoginRequest: Login +} +export type AuthServiceLogoutApiResponse = + /** status 200 A successful response. */ RbacLogoutResponse +export type AuthServiceLogoutApiArg = { + username: string + timestamp?: string +} +export type NetworkElementServiceUpdateApiResponse = + /** status 200 A successful response. */ NetworkelementUpdateNetworkElementResponse +export type NetworkElementServiceUpdateApiArg = { + networkelementUpdateNetworkElementRequest: TodoChangeNameToFitTheRest +} +export type PndServiceGetPndApiResponse = + /** status 200 A successful response. */ PndGetPndResponse +export type PndServiceGetPndApiArg = { + pid: string + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string +} +export type PndServiceGetPndListApiResponse = + /** status 200 A successful response. */ PndGetPndListResponse +export type PndServiceGetPndListApiArg = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string +} +export type PndServiceCreatePndListApiResponse = + /** status 200 A successful response. */ PndCreatePndListResponse +export type PndServiceCreatePndListApiArg = { + pndCreatePndListRequest: PndCreatePndListRequest +} +export type PndServiceDeletePndApiResponse = + /** status 200 A successful response. */ PndDeletePndResponse +export type PndServiceDeletePndApiArg = { + pid: string + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string +} +export type NetworkElementServiceGetChangeListApiResponse = + /** status 200 A successful response. */ NetworkelementGetChangeListResponse +export type NetworkElementServiceGetChangeListApiArg = { + pid: string + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string +} +export type NetworkElementServiceSetChangeListApiResponse = + /** status 200 A successful response. */ NetworkelementSetChangeListResponse +export type NetworkElementServiceSetChangeListApiArg = { + pid: string + networkElementServiceSetChangeListBody: NetworkElementServiceSetChangeListBody +} +export type NetworkElementServiceGetChangeApiResponse = + /** status 200 A successful response. */ NetworkelementGetChangeResponse +export type NetworkElementServiceGetChangeApiArg = { + pid: string + cuid: string[] + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string +} +export type NetworkElementServiceGetApiResponse = + /** status 200 A successful response. */ GosdnnetworkelementGetResponse +export type NetworkElementServiceGetApiArg = { + pid: string + mneid: string + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string +} +export type NetworkElementServiceGetAllFlattenedApiResponse = + /** status 200 A successful response. */ NetworkelementGetAllFlattenedResponse +export type NetworkElementServiceGetAllFlattenedApiArg = { + pid: string + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string +} +export type NetworkElementServiceAddListApiResponse = + /** status 200 A successful response. */ NetworkelementAddListResponse +export type NetworkElementServiceAddListApiArg = { + pid: string + networkElementServiceAddListBody: NetworkElementServiceAddListBody +} +export type NetworkElementServiceSetPathListApiResponse = + /** status 200 A successful response. */ NetworkelementSetPathListResponse +export type NetworkElementServiceSetPathListApiArg = { + pid: string + networkElementServiceSetPathListBody: NetworkElementServiceSetPathListBody +} +export type NetworkElementServiceDeleteApiResponse = + /** status 200 A successful response. */ GosdnnetworkelementDeleteResponse +export type NetworkElementServiceDeleteApiArg = { + pid: string + mneid: string + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string +} +export type NetworkElementServiceGetIntendedPathApiResponse = + /** status 200 A successful response. */ NetworkelementGetIntendedPathResponse +export type NetworkElementServiceGetIntendedPathApiArg = { + pid: string + mneid: string + intendedPath: string + timestamp?: string +} +export type NetworkElementServiceGetPathApiResponse = + /** status 200 A successful response. */ NetworkelementGetPathResponse +export type NetworkElementServiceGetPathApiArg = { + pid: string + mneid: string + path: string + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string +} +export type AppServiceRegisterApiResponse = + /** status 200 A successful response. */ AppAppRegisterResponse +export type AppServiceRegisterApiArg = { + appAppRegisterRequest: AppAppRegisterRequest +} +export type RoleServiceGetRolesApiResponse = + /** status 200 A successful response. */ RbacGetRolesResponse +export type RoleServiceGetRolesApiArg = { + timestamp?: string +} +export type RoleServiceCreateRolesApiResponse = + /** status 200 A successful response. */ RbacCreateRolesResponse +export type RoleServiceCreateRolesApiArg = { + rbacCreateRolesRequest: CreateRoles +} +export type RoleServiceDeleteRolesApiResponse = + /** status 200 A successful response. */ RbacDeleteRolesResponse +export type RoleServiceDeleteRolesApiArg = { + timestamp?: string + roleName?: string[] +} +export type RoleServiceDeletePermissionsForRoleApiResponse = + /** status 200 A successful response. */ RbacDeletePermissionsForRoleResponse +export type RoleServiceDeletePermissionsForRoleApiArg = { + timestamp?: string + roleName?: string + permissionsToDelete?: string[] +} +export type RoleServiceGetRoleApiResponse = + /** status 200 A successful response. */ RbacGetRoleResponse +export type RoleServiceGetRoleApiArg = { + timestamp?: string + roleName?: string + id?: string +} +export type RoleServiceUpdateRolesApiResponse = + /** status 200 A successful response. */ RbacUpdateRolesResponse +export type RoleServiceUpdateRolesApiArg = { + rbacUpdateRolesRequest: UpdateRoles +} +export type RoutingTableServiceGetRoutesApiResponse = + /** status 200 A successful response. */ TopologyGetRoutesResponse +export type RoutingTableServiceGetRoutesApiArg = { + timestamp?: string +} +export type RoutingTableServiceAddRoutingTableApiResponse = + /** status 200 A successful response. */ TopologyAddRoutingTableResponse +export type RoutingTableServiceAddRoutingTableApiArg = { + topologyAddRoutingTableRequest: TopologyAddRoutingTableRequest +} +export type RoutingTableServiceDeleteRouteApiResponse = + /** status 200 A successful response. */ TopologyDeleteRoutesResponse +export type RoutingTableServiceDeleteRouteApiArg = { + timestamp?: string + id?: string +} +export type TopologyServiceGetTopologyApiResponse = + /** status 200 A successful response. */ TopologyGetTopologyResponse +export type TopologyServiceGetTopologyApiArg = { + timestamp?: string +} +export type TopologyServiceAddLinkApiResponse = + /** status 200 A successful response. */ TopologyAddLinkResponse +export type TopologyServiceAddLinkApiArg = { + topologyAddLinkRequest: TopologyAddLinkRequest +} +export type TopologyServiceDeleteLinkApiResponse = + /** status 200 A successful response. */ TopologyDeleteLinkResponse +export type TopologyServiceDeleteLinkApiArg = { + timestamp?: string + id?: string +} +export type TopologyServiceUpdateLinkApiResponse = + /** status 200 A successful response. */ TopologyUpdateLinkResponse +export type TopologyServiceUpdateLinkApiArg = { + topologyUpdateLinkRequest: TopologyUpdateLinkRequest +} +export type UserServiceGetUsersApiResponse = + /** status 200 A successful response. */ RbacGetUsersResponse +export type UserServiceGetUsersApiArg = { + timestamp?: string +} +export type UserServiceCreateUsersApiResponse = + /** status 200 A successful response. */ RbacCreateUsersResponse +export type UserServiceCreateUsersApiArg = { + rbacCreateUsersRequest: CreateUsers +} +export type UserServiceDeleteUsersApiResponse = + /** status 200 A successful response. */ RbacDeleteUsersResponse +export type UserServiceDeleteUsersApiArg = { + timestamp?: string + username?: string[] +} +export type UserServiceGetUserApiResponse = + /** status 200 A successful response. */ RbacGetUserResponse +export type UserServiceGetUserApiArg = { + timestamp?: string + /** TODO(faseid): reconsider if this is necessary as required, but id is not? */ + name?: string + id?: string +} +export type UserServiceUpdateUsersApiResponse = + /** status 200 A successful response. */ RbacUpdateUsersResponse +export type UserServiceUpdateUsersApiArg = { + rbacUpdateUsersRequest: UpdateUsers +} +export type AppAppDeregisterResponse = { + timestamp?: string +} +export type ProtobufAny = { + /** A URL/resource name that uniquely identifies the type of the serialized + protocol buffer message. This string must contain at least + one "/" character. The last segment of the URL's path must represent + the fully qualified name of the type (as in + `path/google.protobuf.Duration`). The name should be in a canonical form + (e.g., leading "." is not accepted). + + In practice, teams usually precompile into the binary all types that they + expect it to use in the context of Any. However, for URLs which use the + scheme `http`, `https`, or no scheme, one can optionally set up a type + server that maps type URLs to message definitions as follows: + + * If no scheme is provided, `https` is assumed. + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the official + protobuf release, and it is not used for type URLs beginning with + type.googleapis.com. As of May 2023, there are no widely used type server + implementations and no plans to implement one. + + Schemes other than `http`, `https` (or the empty scheme) might be + used with implementation specific semantics. */ + '@type'?: string + [key: string]: any +} +export type GooglerpcStatus = { + code?: number + message?: string + details?: ProtobufAny[] +} +export type AppAppDeregisterRequest = { + timestamp?: string + appname?: string +} +export type ConfigurationmanagementExportSdnConfigResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + sdnConfigData?: string +} +export type ConfigurationmanagementImportSdnConfigResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string +} +export type RbacLoginResponse = { + timestamp?: string + token?: string +} +export type Login = { + timestamp?: string + username?: string + pwd?: string +} +export type RbacLogoutResponse = { + timestamp?: string +} +export type NetworkelementUpdateNetworkElementResponse = { + timestamp?: string +} +export type PluginRegistryManifest = { + name?: string + firmware?: string + author?: string + version?: string +} +export type PluginRegistryPlugin = { + id?: string + manifest?: PluginRegistryManifest +} +export type GnmiPathElem = { + /** The name of the element in the path. */ + name?: string + /** Map of key (attribute) name to value. */ + key?: { + [key: string]: string + } +} +export type GnmiPath = { + /** Elements of the path are no longer encoded as a string, but rather within + the elem field as a PathElem message. */ + element?: string[] + /** Label to disambiguate path. */ + origin?: string + /** Elements of the path. */ + elem?: GnmiPathElem[] + target?: string +} +export type EncodingDefinesTheValueEncodingFormatsThatAreSupportedByTheGNmiProtocolTheseEncodingsAreUsedByBothTheClientWhenSendingSetMessagesToModifyTheStateOfTheTargetAndTheTargetWhenSerializingDataToBeReturnedToTheClientInBothSubscribeAndGetRpCsReferenceGNmiSpecificationSection23 = + 'JSON' | 'BYTES' | 'PROTO' | 'ASCII' | 'JSON_IETF' +export type GnmiValue = { + /** Value of the variable being transmitted. */ + value?: string + type?: EncodingDefinesTheValueEncodingFormatsThatAreSupportedByTheGNmiProtocolTheseEncodingsAreUsedByBothTheClientWhenSendingSetMessagesToModifyTheStateOfTheTargetAndTheTargetWhenSerializingDataToBeReturnedToTheClientInBothSubscribeAndGetRpCsReferenceGNmiSpecificationSection23 +} +export type GnmiDecimal64 = { + /** Set of digits. */ + digits?: string + /** Number of digits following the decimal point. */ + precision?: number +} +export type GnmiScalarArray = { + /** The set of elements within the array. Each TypedValue message should + specify only elements that have a field identifier of 1-7 (i.e., the + values are scalar values). */ + element?: GnmiTypedValue[] +} +export type GnmiTypedValue = { + /** String value. */ + stringVal?: string + /** Integer value. */ + intVal?: string + /** Unsigned integer value. */ + uintVal?: string + /** Bool value. */ + boolVal?: boolean + /** Arbitrary byte sequence value. */ + bytesVal?: string + /** Floating point value. */ + floatVal?: number + decimalVal?: GnmiDecimal64 + leaflistVal?: GnmiScalarArray + anyVal?: ProtobufAny + /** JSON-encoded text. */ + jsonVal?: string + /** JSON-encoded text per RFC7951. */ + jsonIetfVal?: string + /** Arbitrary ASCII text. */ + asciiVal?: string + /** Protobuf binary encoded bytes. The message type is not included. + See the specification at + github.com/openconfig/reference/blob/master/rpc/gnmi/protobuf-vals.md + for a complete specification. */ + protoBytes?: string +} +export type UpdateIsAReUsableMessageThatIsUsedToStoreAParticularPathValuePairReferenceGNmiSpecificationSection21 = + { + path?: GnmiPath + value?: GnmiValue + val?: GnmiTypedValue + /** Number of coalesced duplicates. */ + duplicates?: number + } +export type NotificationIsAReUsableMessageThatIsUsedToEncodeDataFromTheTargetToTheClientANotificationCarriesTwoTypesOfChangesToTheDataTreeDeletedValuesDeleteASetOfPathsThatHaveBeenRemovedFromTheDataTreeUpdatedValuesUpdateASetOfPathValuePairsIndicatingThePathWhoseValueHasChangedInTheDataTreeReferenceGNmiSpecificationSection21 = + { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + prefix?: GnmiPath + alias?: string + /** Data elements that have changed values. */ + update?: UpdateIsAReUsableMessageThatIsUsedToStoreAParticularPathValuePairReferenceGNmiSpecificationSection21[] + /** Data elements that have been deleted. */ + delete?: GnmiPath[] + /** This notification contains a set of paths that are always updated together + referenced by a globally unique prefix. */ + atomic?: boolean + } +export type TransportGnmiTransportOption = { + compression?: string + grpcDialOptions?: { + [key: string]: string + } + token?: string + encoding?: EncodingDefinesTheValueEncodingFormatsThatAreSupportedByTheGNmiProtocolTheseEncodingsAreUsedByBothTheClientWhenSendingSetMessagesToModifyTheStateOfTheTargetAndTheTargetWhenSerializingDataToBeReturnedToTheClientInBothSubscribeAndGetRpCsReferenceGNmiSpecificationSection23 +} +export type TransportRestconfTransportOption = object +export type ChangedAccordingToStyleGuideHttpsDocsBufBuildBestPracticesStyleGuideEnums = + + | 'TYPE_UNSPECIFIED' + | 'TYPE_OPENCONFIG' + | 'TYPE_CONTAINERISED' + | 'TYPE_PLUGIN' +export type TransportTransportOption = { + address?: string + username?: string + password?: string + tls?: boolean + gnmiTransportOption?: TransportGnmiTransportOption + restconfTransportOption?: TransportRestconfTransportOption + type?: ChangedAccordingToStyleGuideHttpsDocsBufBuildBestPracticesStyleGuideEnums +} +export type ConflictMetadata = { + resourceVersion?: string +} +export type NetworkelementManagedNetworkElement = { + id?: string + name?: string + model?: string + plugin?: PluginRegistryPlugin + mneNotification?: NotificationIsAReUsableMessageThatIsUsedToEncodeDataFromTheTargetToTheClientANotificationCarriesTwoTypesOfChangesToTheDataTreeDeletedValuesDeleteASetOfPathsThatHaveBeenRemovedFromTheDataTreeUpdatedValuesUpdateASetOfPathValuePairsIndicatingThePathWhoseValueHasChangedInTheDataTreeReferenceGNmiSpecificationSection21[] + transportAddress?: string + transportOption?: TransportTransportOption + metadata?: ConflictMetadata + associatedPnd?: string + gnmiSubscribePaths?: string[] +} +export type TodoChangeNameToFitTheRest = { + timestamp?: string + networkElement?: NetworkelementManagedNetworkElement +} +export type PndPrincipalNetworkDomain = { + id?: string + name?: string + description?: string +} +export type PndGetPndResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + pnd?: PndPrincipalNetworkDomain +} +export type PndGetPndListResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + pnd?: PndPrincipalNetworkDomain[] +} +export type PndCreatePndListResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string +} +export type PndPndCreateProperties = { + name?: string + description?: string +} +export type PndCreatePndListRequest = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + pnd?: PndPndCreateProperties[] +} +export type PndDeletePndResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string +} +export type NetworkelementChangeState = + | 'CHANGE_STATE_UNSPECIFIED' + | 'CHANGE_STATE_PENDING' + | 'CHANGE_STATE_COMMITTED' + | 'CHANGE_STATE_CONFIRMED' + | 'CHANGE_STATE_INCONSISTENT' +export type NetworkelementChange = { + id?: string + age?: string + state?: NetworkelementChangeState + diff?: NotificationIsAReUsableMessageThatIsUsedToEncodeDataFromTheTargetToTheClientANotificationCarriesTwoTypesOfChangesToTheDataTreeDeletedValuesDeleteASetOfPathsThatHaveBeenRemovedFromTheDataTreeUpdatedValuesUpdateASetOfPathValuePairsIndicatingThePathWhoseValueHasChangedInTheDataTreeReferenceGNmiSpecificationSection21 +} +export type NetworkelementGetChangeListResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + pnd?: PndPrincipalNetworkDomain + change?: NetworkelementChange[] +} +export type GosdnnetworkelementSetResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + id?: string +} +export type NetworkelementSetChangeListResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + responses?: GosdnnetworkelementSetResponse[] +} +export type GosdnnetworkelementOperation = + | 'OPERATION_UNSPECIFIED' + | 'OPERATION_CREATE' + | 'OPERATION_COMMIT' + | 'OPERATION_CONFIRM' +export type NetworkelementSetChange = { + cuid?: string + op?: GosdnnetworkelementOperation +} +export type NetworkElementServiceSetChangeListBody = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + change?: NetworkelementSetChange[] +} +export type NetworkelementGetChangeResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + pnd?: PndPrincipalNetworkDomain + change?: NetworkelementChange[] +} +export type GosdnnetworkelementGetResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + pnd?: PndPrincipalNetworkDomain + mne?: NetworkelementManagedNetworkElement +} +export type NetworkelementFlattenedManagedNetworkElement = { + id?: string + name?: string + pid?: string + pluginid?: string +} +export type NetworkelementGetAllFlattenedResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + pnd?: PndPrincipalNetworkDomain + mne?: NetworkelementFlattenedManagedNetworkElement[] +} +export type NetworkelementAddListResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + responses?: GosdnnetworkelementSetResponse[] +} +export type NetworkelementSetMne = { + address?: string + pid?: string + pluginId?: string + mneName?: string + transportOption?: TransportTransportOption + gnmiSubscribePaths?: string[] + mneId?: string +} +export type NetworkElementServiceAddListBody = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + mne?: NetworkelementSetMne[] +} +export type NetworkelementSetPathListResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + responses?: GosdnnetworkelementSetResponse[] +} +export type NetworkelementApiOperation = + | 'API_OPERATION_UNSPECIFIED' + | 'API_OPERATION_UPDATE' + | 'API_OPERATION_REPLACE' + | 'API_OPERATION_DELETE' +export type NetworkelementChangeRequest = { + mneid?: string + path?: GnmiPath + value?: GnmiTypedValue + apiOp?: NetworkelementApiOperation +} +export type NetworkElementServiceSetPathListBody = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + changeRequest?: NetworkelementChangeRequest[] +} +export type GosdnnetworkelementDeleteResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string +} +export type NetworkelementGetIntendedPathResponse = { + timestamp?: string + pnd?: PndPrincipalNetworkDomain + mneNotification?: NotificationIsAReUsableMessageThatIsUsedToEncodeDataFromTheTargetToTheClientANotificationCarriesTwoTypesOfChangesToTheDataTreeDeletedValuesDeleteASetOfPathsThatHaveBeenRemovedFromTheDataTreeUpdatedValuesUpdateASetOfPathValuePairsIndicatingThePathWhoseValueHasChangedInTheDataTreeReferenceGNmiSpecificationSection21[] +} +export type NetworkelementGetPathResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + pnd?: PndPrincipalNetworkDomain + mneNotification?: NotificationIsAReUsableMessageThatIsUsedToEncodeDataFromTheTargetToTheClientANotificationCarriesTwoTypesOfChangesToTheDataTreeDeletedValuesDeleteASetOfPathsThatHaveBeenRemovedFromTheDataTreeUpdatedValuesUpdateASetOfPathValuePairsIndicatingThePathWhoseValueHasChangedInTheDataTreeReferenceGNmiSpecificationSection21[] +} +export type AppAppRegisterResponse = { + timestamp?: string + queueconnection?: string +} +export type AppAppRegisterRequest = { + timestamp?: string + appname?: string + token?: string +} +export type GosdnrbacRole = { + id?: string + name?: string + description?: string + permissions?: string[] +} +export type RbacGetRolesResponse = { + timestamp?: string + roles?: GosdnrbacRole[] +} +export type RbacCreateRolesResponse = { + timestamp?: string +} +export type CreateRoles = { + timestamp?: string + roles?: GosdnrbacRole[] +} +export type RbacDeleteRolesResponse = { + timestamp?: string +} +export type RbacDeletePermissionsForRoleResponse = { + timestamp?: string +} +export type RbacGetRoleResponse = { + timestamp?: string + role?: GosdnrbacRole +} +export type RbacUpdateRolesResponse = { + timestamp?: string +} +export type UpdateRoles = { + timestamp?: string + roles?: GosdnrbacRole[] +} +export type TopologyRoute = { + id?: string + targetIPRange?: string + nextHopIP?: string + portID?: string + metric?: string +} +export type TopologyRoutingTable = { + id?: string + nodeID?: string + routes?: TopologyRoute[] + metadata?: ConflictMetadata +} +export type TopologyGetRoutesResponse = { + timestamp?: string + routingTables?: TopologyRoutingTable[] +} +export type TopologyAddRoutingTableResponse = { + timestamp?: string +} +export type TopologyAddRoutingTableRequest = { + timestamp?: string + routingTable?: TopologyRoutingTable +} +export type TopologyDeleteRoutesResponse = { + timestamp?: string +} +export type TopologyNode = { + id?: string + name?: string + metadata?: ConflictMetadata +} +export type GosdntopologyConfiguration = { + ip?: string + prefixLength?: string +} +export type TopologyPort = { + id?: string + name?: string + configuration?: GosdntopologyConfiguration + metadata?: ConflictMetadata +} +export type TopologyLink = { + id?: string + name?: string + sourceNode?: TopologyNode + targetNode?: TopologyNode + sourcePort?: TopologyPort + targetPort?: TopologyPort + metadata?: ConflictMetadata +} +export type TopologyTopology = { + links?: TopologyLink[] +} +export type TopologyGetTopologyResponse = { + timestamp?: string + toplogy?: TopologyTopology +} +export type TopologyAddLinkResponse = { + timestamp?: string +} +export type TopologyAddLinkRequest = { + timestamp?: string + link?: TopologyLink +} +export type TopologyDeleteLinkResponse = { + timestamp?: string +} +export type TopologyUpdateLinkResponse = { + timestamp?: string +} +export type TopologyUpdateLinkRequest = { + timestamp?: string + link?: TopologyLink +} +export type RbacUser = { + id?: string + name?: string + roles?: { + [key: string]: string + } + password?: string + token?: string + metadata?: ConflictMetadata +} +export type RbacGetUsersResponse = { + timestamp?: string + user?: RbacUser[] +} +export type RbacCreateUsersResponse = { + timestamp?: string +} +export type CreateUsers = { + timestamp?: string + user?: RbacUser[] +} +export type RbacDeleteUsersResponse = { + timestamp?: string +} +export type RbacGetUserResponse = { + timestamp?: string + user?: RbacUser +} +export type RbacUpdateUsersResponse = { + timestamp?: string +} +export type RbacUpdateUser = { + id?: string + name?: string + roles?: { + [key: string]: string + } + password?: string + token?: string + metadata?: ConflictMetadata +} +export type UpdateUsers = { + timestamp?: string + user?: RbacUpdateUser[] +} +export const { + useAppServiceDeregisterMutation, + useConfigurationManagementServiceExportSdnConfigQuery, + useConfigurationManagementServiceImportSdnConfigMutation, + useAuthServiceLoginMutation, + useAuthServiceLogoutMutation, + useNetworkElementServiceUpdateMutation, + usePndServiceGetPndQuery, + usePndServiceGetPndListQuery, + usePndServiceCreatePndListMutation, + usePndServiceDeletePndMutation, + useNetworkElementServiceGetChangeListQuery, + useNetworkElementServiceSetChangeListMutation, + useNetworkElementServiceGetChangeQuery, + useNetworkElementServiceGetQuery, + useNetworkElementServiceGetAllFlattenedQuery, + useNetworkElementServiceAddListMutation, + useNetworkElementServiceSetPathListMutation, + useNetworkElementServiceDeleteMutation, + useNetworkElementServiceGetIntendedPathQuery, + useNetworkElementServiceGetPathQuery, + useAppServiceRegisterMutation, + useRoleServiceGetRolesQuery, + useRoleServiceCreateRolesMutation, + useRoleServiceDeleteRolesMutation, + useRoleServiceDeletePermissionsForRoleMutation, + useRoleServiceGetRoleQuery, + useRoleServiceUpdateRolesMutation, + useRoutingTableServiceGetRoutesQuery, + useRoutingTableServiceAddRoutingTableMutation, + useRoutingTableServiceDeleteRouteMutation, + useTopologyServiceGetTopologyQuery, + useTopologyServiceAddLinkMutation, + useTopologyServiceDeleteLinkMutation, + useTopologyServiceUpdateLinkMutation, + useUserServiceGetUsersQuery, + useUserServiceCreateUsersMutation, + useUserServiceDeleteUsersMutation, + useUserServiceGetUserQuery, + useUserServiceUpdateUsersMutation, +} = injectedRtkApi diff --git a/react-ui/src/index.tsx b/react-ui/src/index.tsx index db0b82766..6c95d80aa 100644 --- a/react-ui/src/index.tsx +++ b/react-ui/src/index.tsx @@ -10,13 +10,12 @@ import { import './index.scss' import Landingpage from './pages/landingpage/landingpage' import LoginPage from './pages/login/login' -import initStore from './stores/api.store' import './i18n/config' import { I18nextProvider } from 'react-i18next' import i18next from 'i18next' - -initStore() +import { Provider } from 'react-redux' +import { store } from './stores' const root = ReactDOM.createRoot(document.getElementById('root') as Container) @@ -34,8 +33,10 @@ const router = createBrowserRouter( root.render( <React.StrictMode> - <I18nextProvider i18n={i18next}> - <RouterProvider router={router} /> - </I18nextProvider> + <Provider store={store}> + <I18nextProvider i18n={i18next}> + <RouterProvider router={router} /> + </I18nextProvider> + </Provider> </React.StrictMode> ) diff --git a/react-ui/src/pages/login/login.tsx b/react-ui/src/pages/login/login.tsx index 7eb213e78..ffe8928e3 100644 --- a/react-ui/src/pages/login/login.tsx +++ b/react-ui/src/pages/login/login.tsx @@ -2,43 +2,42 @@ import { Button, Col, Container, Form, Image, Row } from 'react-bootstrap' import { useTranslation } from 'react-i18next' import './login.scss' -import { AuthServiceApiAuthServiceLoginRequest } from '@api/types/ObjectParamAPI' import logo from '@assets/logo.svg' import React, { useRef } from 'react' -import { AuthServiceApi, RbacLoginRequest, RbacLoginResponse, createConfiguration } from '@api/index' +import { AuthServiceLoginApiArg, useAuthServiceLoginMutation } from '@api/api' const LoginPage = () => { const { t } = useTranslation('common') const usernameRef = useRef<HTMLInputElement>(null) const passwordRef = useRef<HTMLInputElement>(null) - const getAuthPayload = (): RbacLoginRequest => { + const getAuthPayload = (): AuthServiceLoginApiArg => { const username = usernameRef.current?.value const password = passwordRef.current?.value // TODO check values - const payload: RbacLoginRequest = { - username: username, - pwd: password, - timestamp: new Date().toString(), + const payload: AuthServiceLoginApiArg = { + rbacLoginRequest: { + username: username, + pwd: password, + timestamp: new Date().getTime().toString(), + } } return payload; } + const [ + sendLogin, + ] = useAuthServiceLoginMutation() + const login = (event: React.FormEvent<HTMLFormElement>) => { event.preventDefault() - const configuration = createConfiguration(); - const apiInstance = new AuthServiceApi(configuration); - const payload = getAuthPayload(); - - - apiInstance.authServiceLogin(payload).then((response:RbacLoginResponse) => { - console.log('API called successfully. Returned data: ' + response); - }).catch((error:any) => console.error(error)); - + sendLogin(payload).unwrap() + .then((payload) => console.log('fulfilled', payload)) + .catch((error) => console.error('rejected', error)); } return ( diff --git a/react-ui/src/setupProxy.js b/react-ui/src/setupProxy.js deleted file mode 100644 index afeb740de..000000000 --- a/react-ui/src/setupProxy.js +++ /dev/null @@ -1,11 +0,0 @@ -const { createProxyMiddleware } = require('http-proxy-middleware'); - -module.exports = function(app) { - app.use( - '/api', - createProxyMiddleware({ - target: 'http://127.0.0.1:8089', - changeOrigin: true, - }) - ); -}; \ No newline at end of file diff --git a/react-ui/src/stores/api.store.ts b/react-ui/src/stores/api.store.ts index 2ae49c724..5f9077aee 100644 --- a/react-ui/src/stores/api.store.ts +++ b/react-ui/src/stores/api.store.ts @@ -1,18 +1,7 @@ -import { combineReducers } from 'redux' -import userReducer from './slices/user.reducer' -import { configureStore } from '@reduxjs/toolkit' +import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react' -const getReducers = () => { - return combineReducers({ - userReducer, - }) -} - -const initStore = () => { - return configureStore({ - reducer: getReducers(), - }) -} - -//export type RootState = ReturnType<typeof store.getState> -export default initStore +// initialize an empty api service that we'll inject endpoints into later as needed +export const emptySplitApi = createApi({ + baseQuery: fetchBaseQuery({ baseUrl: '/api' }), + endpoints: () => ({}), +}) \ No newline at end of file diff --git a/react-ui/src/stores/index.ts b/react-ui/src/stores/index.ts new file mode 100644 index 000000000..299595f18 --- /dev/null +++ b/react-ui/src/stores/index.ts @@ -0,0 +1,23 @@ +import { combineReducers } from 'redux' +import userReducer from './slices/user.reducer' +import { configureStore } from '@reduxjs/toolkit' +import { emptySplitApi } from './api.store' +import { setupListeners } from '@reduxjs/toolkit/query' + +const getReducers = () => { + return combineReducers({ + userReducer, + [emptySplitApi.reducerPath]: emptySplitApi.reducer + }) +} + + +export const store = configureStore({ + reducer: getReducers(), + middleware: (getDefaultMiddleware) => + getDefaultMiddleware().concat(emptySplitApi.middleware), +}) + +setupListeners(store.dispatch) + +//export type RootState = ReturnType<typeof store.getState> \ No newline at end of file diff --git a/react-ui/tsconfig.json b/react-ui/tsconfig.json index 977976c0f..4230ee19f 100644 --- a/react-ui/tsconfig.json +++ b/react-ui/tsconfig.json @@ -29,7 +29,7 @@ "include": [ "src/**/*.d.ts", "src/**/*.ts", - "src/**/*.tsx", + "src/**/*.tsx", "src/stores/api.store.ts", "scripts/test.ts", ], //"references": [{ "path": "./tsconfig.node.json" }] } \ No newline at end of file diff --git a/react-ui/tsconfig.node.json b/react-ui/tsconfig.node.json index d5ed4eaa8..9357c44f3 100644 --- a/react-ui/tsconfig.node.json +++ b/react-ui/tsconfig.node.json @@ -2,7 +2,7 @@ "compilerOptions": { "composite": true, "skipLibCheck": true, - "module": "ESNext", + "module": "ES2020", "moduleResolution": "bundler", "allowSyntheticDefaultImports": true, "strict": true diff --git a/react-ui/vite.config.mjs b/react-ui/vite.config.mjs index 7aa8ebc5a..4d70f80f3 100644 --- a/react-ui/vite.config.mjs +++ b/react-ui/vite.config.mjs @@ -8,10 +8,10 @@ export default defineConfig({ port: 3000, proxy: { '/api': { - target: 'https://localhost:8089', + target: 'http://127.0.0.1:8080', changeOrigin: true, - secure: false, - ws: true, + secure: false, + rewrite: (path) => path.replace(/^\/api/, ''), configure: (proxy, _options) => { proxy.on('error', (err, _req, _res) => { console.log('proxy error', err); diff --git a/react-ui/yarn.lock b/react-ui/yarn.lock index e37ab2bee..914516cda 100644 --- a/react-ui/yarn.lock +++ b/react-ui/yarn.lock @@ -29,6 +29,38 @@ jsonpointer "^5.0.0" leven "^3.1.0" +"@apidevtools/json-schema-ref-parser@9.0.6": + version "9.0.6" + resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.6.tgz#5d9000a3ac1fd25404da886da6b266adcd99cf1c" + integrity sha512-M3YgsLjI0lZxvrpeGVk9Ap032W6TPQkH6pRAZz81Ac3WUNF79VQooAFnp8umjvVzUmD93NkogxEwbSce7qMsUg== + dependencies: + "@jsdevtools/ono" "^7.1.3" + call-me-maybe "^1.0.1" + js-yaml "^3.13.1" + +"@apidevtools/openapi-schemas@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz#9fa08017fb59d80538812f03fc7cac5992caaa17" + integrity sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ== + +"@apidevtools/swagger-methods@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz#b789a362e055b0340d04712eafe7027ddc1ac267" + integrity sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg== + +"@apidevtools/swagger-parser@^10.0.2", "@apidevtools/swagger-parser@^10.1.0": + version "10.1.0" + resolved "https://registry.yarnpkg.com/@apidevtools/swagger-parser/-/swagger-parser-10.1.0.tgz#a987d71e5be61feb623203be0c96e5985b192ab6" + integrity sha512-9Kt7EuS/7WbMAUv2gSziqjvxwDbFSg3Xeyfuj5laUODX8o/k/CpsAKiQ8W7/R88eXFTMbJYg6+7uAmOWNKmwnw== + dependencies: + "@apidevtools/json-schema-ref-parser" "9.0.6" + "@apidevtools/openapi-schemas" "^2.1.0" + "@apidevtools/swagger-methods" "^3.0.2" + "@jsdevtools/ono" "^7.1.3" + ajv "^8.6.3" + ajv-draft-04 "^1.0.0" + call-me-maybe "^1.0.1" + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2", "@babel/code-frame@^7.8.3": version "7.24.2" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" @@ -1625,6 +1657,11 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== +"@exodus/schemasafe@^1.0.0-rc.2": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@exodus/schemasafe/-/schemasafe-1.3.0.tgz#731656abe21e8e769a7f70a4d833e6312fe59b7f" + integrity sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw== + "@humanwhocodes/config-array@^0.11.14": version "0.11.14" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" @@ -1948,6 +1985,11 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@jsdevtools/ono@^7.1.3": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" + integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== + "@leichtgewicht/ip-codec@^2.0.1": version "2.0.5" resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" @@ -2165,6 +2207,19 @@ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz#5d694d345ce36b6ecf657349e03eb87297e68da4" integrity sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g== +"@rtk-query/codegen-openapi@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@rtk-query/codegen-openapi/-/codegen-openapi-1.2.0.tgz#2c63cbbd80382c4ba6c9fab5e9004efb43637de3" + integrity sha512-Sru3aPHyFC0Tb7jeFh/kVMGBdQUcofb9frrHhjNSRLEoJWsG9fjaioUx3nPT5HZVbdAvAFF4xMWFQNfgJBrAGw== + dependencies: + "@apidevtools/swagger-parser" "^10.0.2" + commander "^6.2.0" + oazapfts "^4.8.0" + prettier "^2.2.1" + semver "^7.3.5" + swagger2openapi "^7.0.4" + typescript "^5.0.0" + "@rushstack/eslint-patch@^1.1.0": version "1.10.3" resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz#391d528054f758f81e53210f1a1eebcf1a8b1d20" @@ -3109,6 +3164,11 @@ agent-base@6: dependencies: debug "4" +ajv-draft-04@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz#3b64761b268ba0b9e668f0b41ba53fce0ad77fc8" + integrity sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw== + ajv-formats@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" @@ -3148,6 +3208,16 @@ ajv@^8.0.0, ajv@^8.6.0, ajv@^8.9.0: require-from-string "^2.0.2" uri-js "^4.4.1" +ajv@^8.6.3: + version "8.15.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.15.0.tgz#d918c661e3e820bbbc65a320e182ee56a1aa978a" + integrity sha512-15BTtQUOsSrmHCy+B4VnAiJAJxJ8IFgu6fcjFQF3jQYZ78nLSQthlFg4ehp+NLIyfvFgOlxNsjKIEhydtFPVHQ== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^2.3.0" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -3699,6 +3769,11 @@ call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: get-intrinsic "^1.2.4" set-function-length "^1.2.1" +call-me-maybe@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" + integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ== + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -3838,6 +3913,15 @@ cliui@^7.0.2: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -3908,6 +3992,11 @@ commander@^4.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +commander@^6.2.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== + commander@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" @@ -4796,6 +4885,11 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es6-promise@^3.2.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" + integrity sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg== + esbuild@^0.20.1: version "0.20.2" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.2.tgz#9d6b2386561766ee6b5a55196c6d766d28c87ea1" @@ -5297,6 +5391,16 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-safe-stringify@^2.0.7: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fast-uri@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-2.3.0.tgz#bdae493942483d299e7285dcb4627767d42e2793" + integrity sha512-eel5UKGn369gGEWOqBShmFJWfq/xSJvsgDzgLYC845GneayWvXBf0lJCBn5qTABfewy1ZDPoaR5OZCP+kssfuw== + fastq@^1.6.0: version "1.17.1" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" @@ -5881,6 +5985,11 @@ http-proxy@^1.18.1: follow-redirects "^1.0.0" requires-port "^1.0.0" +http2-client@^1.2.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/http2-client/-/http2-client-1.3.5.tgz#20c9dc909e3cc98284dd20af2432c524086df181" + integrity sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA== + https-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" @@ -7362,7 +7471,7 @@ minimatch@^9.0.1, minimatch@^9.0.4: dependencies: brace-expansion "^2.0.1" -minimist@^1.2.0, minimist@^1.2.6: +minimist@^1.2.0, minimist@^1.2.6, minimist@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -7444,6 +7553,20 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" +node-fetch-h2@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz#c6188325f9bd3d834020bf0f2d6dc17ced2241ac" + integrity sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg== + dependencies: + http2-client "^1.2.5" + +node-fetch@^2.6.1: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + node-forge@^1: version "1.3.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" @@ -7454,6 +7577,13 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== +node-readfiles@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/node-readfiles/-/node-readfiles-0.2.0.tgz#dbbd4af12134e2e635c245ef93ffcf6f60673a5d" + integrity sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA== + dependencies: + es6-promise "^3.2.1" + node-releases@^2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" @@ -7500,6 +7630,63 @@ nwsapi@^2.2.0: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.10.tgz#0b77a68e21a0b483db70b11fad055906e867cda8" integrity sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ== +oas-kit-common@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/oas-kit-common/-/oas-kit-common-1.0.8.tgz#6d8cacf6e9097967a4c7ea8bcbcbd77018e1f535" + integrity sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ== + dependencies: + fast-safe-stringify "^2.0.7" + +oas-linter@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/oas-linter/-/oas-linter-3.2.2.tgz#ab6a33736313490659035ca6802dc4b35d48aa1e" + integrity sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ== + dependencies: + "@exodus/schemasafe" "^1.0.0-rc.2" + should "^13.2.1" + yaml "^1.10.0" + +oas-resolver@^2.5.6: + version "2.5.6" + resolved "https://registry.yarnpkg.com/oas-resolver/-/oas-resolver-2.5.6.tgz#10430569cb7daca56115c915e611ebc5515c561b" + integrity sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ== + dependencies: + node-fetch-h2 "^2.3.0" + oas-kit-common "^1.0.8" + reftools "^1.1.9" + yaml "^1.10.0" + yargs "^17.0.1" + +oas-schema-walker@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz#74c3cd47b70ff8e0b19adada14455b5d3ac38a22" + integrity sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ== + +oas-validator@^5.0.8: + version "5.0.8" + resolved "https://registry.yarnpkg.com/oas-validator/-/oas-validator-5.0.8.tgz#387e90df7cafa2d3ffc83b5fb976052b87e73c28" + integrity sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw== + dependencies: + call-me-maybe "^1.0.1" + oas-kit-common "^1.0.8" + oas-linter "^3.2.2" + oas-resolver "^2.5.6" + oas-schema-walker "^1.1.5" + reftools "^1.1.9" + should "^13.2.1" + yaml "^1.10.0" + +oazapfts@^4.8.0: + version "4.12.0" + resolved "https://registry.yarnpkg.com/oazapfts/-/oazapfts-4.12.0.tgz#8a86c5fe5a1237b16b05d06d05815cffa2a2b949" + integrity sha512-hNKRG4eLYceuJuqDDx7Uqsi8p3j5k83gNKSo2qnUOTiiU03sCQOjXxOqCXDbzRcuDFyK94+1PBIpotK4NoxIjw== + dependencies: + "@apidevtools/swagger-parser" "^10.1.0" + lodash "^4.17.21" + minimist "^1.2.8" + swagger2openapi "^7.0.8" + typescript "^5.2.2" + object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -8413,7 +8600,7 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.0.0: +prettier@^2.0.0, prettier@^2.2.1: version "2.8.8" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== @@ -8845,6 +9032,11 @@ reflect.getprototypeof@^1.0.4: globalthis "^1.0.3" which-builtin-type "^1.1.3" +reftools@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/reftools/-/reftools-1.1.9.tgz#e16e19f662ccd4648605312c06d34e5da3a2b77e" + integrity sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w== + regenerate-unicode-properties@^10.1.0: version "10.1.1" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" @@ -9301,6 +9493,50 @@ shell-quote@^1.7.3, shell-quote@^1.8.1: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== +should-equal@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/should-equal/-/should-equal-2.0.0.tgz#6072cf83047360867e68e98b09d71143d04ee0c3" + integrity sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA== + dependencies: + should-type "^1.4.0" + +should-format@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/should-format/-/should-format-3.0.3.tgz#9bfc8f74fa39205c53d38c34d717303e277124f1" + integrity sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q== + dependencies: + should-type "^1.3.0" + should-type-adaptors "^1.0.1" + +should-type-adaptors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz#401e7f33b5533033944d5cd8bf2b65027792e27a" + integrity sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA== + dependencies: + should-type "^1.3.0" + should-util "^1.0.0" + +should-type@^1.3.0, should-type@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/should-type/-/should-type-1.4.0.tgz#0756d8ce846dfd09843a6947719dfa0d4cff5cf3" + integrity sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ== + +should-util@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/should-util/-/should-util-1.0.1.tgz#fb0d71338f532a3a149213639e2d32cbea8bcb28" + integrity sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g== + +should@^13.2.1: + version "13.2.3" + resolved "https://registry.yarnpkg.com/should/-/should-13.2.3.tgz#96d8e5acf3e97b49d89b51feaa5ae8d07ef58f10" + integrity sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ== + dependencies: + should-equal "^2.0.0" + should-format "^3.0.3" + should-type "^1.4.0" + should-type-adaptors "^1.0.1" + should-util "^1.0.0" + side-channel@^1.0.4, side-channel@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" @@ -9484,7 +9720,7 @@ string-natural-compare@^3.0.1: resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -9714,6 +9950,23 @@ svgo@^2.7.0: picocolors "^1.0.0" stable "^0.1.8" +swagger2openapi@^7.0.4, swagger2openapi@^7.0.8: + version "7.0.8" + resolved "https://registry.yarnpkg.com/swagger2openapi/-/swagger2openapi-7.0.8.tgz#12c88d5de776cb1cbba758994930f40ad0afac59" + integrity sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g== + dependencies: + call-me-maybe "^1.0.1" + node-fetch "^2.6.1" + node-fetch-h2 "^2.3.0" + node-readfiles "^0.2.0" + oas-kit-common "^1.0.8" + oas-resolver "^2.5.6" + oas-schema-walker "^1.1.5" + oas-validator "^5.0.8" + reftools "^1.1.9" + yaml "^1.10.0" + yargs "^17.0.1" + symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -9885,6 +10138,11 @@ tr46@^2.1.0: dependencies: punycode "^2.1.1" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + tryer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" @@ -10020,7 +10278,7 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^5.2.2: +typescript@^5.0.0, typescript@^5.2.2: version "5.4.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== @@ -10251,6 +10509,11 @@ web-vitals@^2.1.4: resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-2.1.4.tgz#76563175a475a5e835264d373704f9dde718290c" integrity sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg== +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" @@ -10403,6 +10666,14 @@ whatwg-mimetype@^2.3.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + whatwg-url@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" @@ -10737,6 +11008,11 @@ yargs-parser@^20.2.2: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + yargs@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" @@ -10750,6 +11026,19 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" +yargs@^17.0.1: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" -- GitLab From 27202ed5f72a06e57f9d8f7330f7b9ea34a67d9f Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Mon, 1 Jul 2024 13:27:20 +0200 Subject: [PATCH 08/44] add translations --- .../src/i18n/locales/de/translations.json | 11 ++- .../src/i18n/locales/en/translations.json | 26 ++++--- react-ui/src/pages/login/login.tsx | 67 ++++++++++++++----- 3 files changed, 73 insertions(+), 31 deletions(-) diff --git a/react-ui/src/i18n/locales/de/translations.json b/react-ui/src/i18n/locales/de/translations.json index 0c6599156..c12a0b2e9 100644 --- a/react-ui/src/i18n/locales/de/translations.json +++ b/react-ui/src/i18n/locales/de/translations.json @@ -1,14 +1,19 @@ { "global": { "form": { - "submit": "Abschicken" + "submit": "Abshcicken", + "empty_field": "Das Feld darf nicht leer sein" } }, "login": { "form": { - "username": "Benutzername", - "password": "Passwort" + "username": { + "label": "Benutzername" + }, + "password": { + "label": "Passwort" + } } } } \ No newline at end of file diff --git a/react-ui/src/i18n/locales/en/translations.json b/react-ui/src/i18n/locales/en/translations.json index 0cc55e9af..4170131a1 100644 --- a/react-ui/src/i18n/locales/en/translations.json +++ b/react-ui/src/i18n/locales/en/translations.json @@ -1,14 +1,20 @@ { - "global": { - "form": { - "submit": "Submit" - } - }, - - "login": { - "form": { - "username": "Username", - "password": "Password" + "common": { + "global": { + "form": { + "submit": "Submit", + "empty_field": "This field can´t be empty" + } + }, + "login": { + "form": { + "username": { + "label": "Username" + }, + "password": { + "label": "Password" + } + } } } } \ No newline at end of file diff --git a/react-ui/src/pages/login/login.tsx b/react-ui/src/pages/login/login.tsx index ffe8928e3..800e7295f 100644 --- a/react-ui/src/pages/login/login.tsx +++ b/react-ui/src/pages/login/login.tsx @@ -2,20 +2,34 @@ import { Button, Col, Container, Form, Image, Row } from 'react-bootstrap' import { useTranslation } from 'react-i18next' import './login.scss' -import logo from '@assets/logo.svg' -import React, { useRef } from 'react' import { AuthServiceLoginApiArg, useAuthServiceLoginMutation } from '@api/api' +import logo from '@assets/logo.svg' +import React, { useRef, useState } from 'react' +/** + * The `/login` page. It renders the login form with all the encapsulated business logic + * + * @description The store is getting mutated by a successful login + */ const LoginPage = () => { const { t } = useTranslation('common') const usernameRef = useRef<HTMLInputElement>(null) const passwordRef = useRef<HTMLInputElement>(null) - const getAuthPayload = (): AuthServiceLoginApiArg => { - const username = usernameRef.current?.value - const password = passwordRef.current?.value + const [validated, setValidated] = useState(false); + const [ + sendLogin, + ] = useAuthServiceLoginMutation() + + + const isInputValid = (username: string | undefined, password: string | undefined): boolean => { + return !!username && !!password; + } - // TODO check values + /** + * Returns the /login payload + */ + const getAuthPayload = (username: string, password: string): AuthServiceLoginApiArg => { const payload: AuthServiceLoginApiArg = { rbacLoginRequest: { username: username, @@ -27,17 +41,27 @@ const LoginPage = () => { return payload; } - const [ - sendLogin, - ] = useAuthServiceLoginMutation() - + /** + * Tries to `/login` by using the input fields. + * + * @description The fields are getting validated against null values + * @param event Submit event + */ const login = (event: React.FormEvent<HTMLFormElement>) => { event.preventDefault() + const username = usernameRef.current?.value + const password = passwordRef.current?.value + + setValidated(true); + const inputInvalid = !isInputValid(username, password); + if (inputInvalid) { + return; + } - const payload = getAuthPayload(); - sendLogin(payload).unwrap() - .then((payload) => console.log('fulfilled', payload)) - .catch((error) => console.error('rejected', error)); + const authPayload = getAuthPayload(username!, password!); + sendLogin(authPayload).unwrap() + .then((payload) => console.log('fulfilled', payload)) + .catch((error) => console.error('rejected', error)); } return ( @@ -48,23 +72,30 @@ const LoginPage = () => { <Row className="mt-2 justify-content-center"> <Col md={6} sm={10} className="c-box p-4"> <h1 className="text-center h2">goSDN - Web</h1> - <Form className="mt-4" onSubmit={login}> + <Form className="mt-4" noValidate validated={validated} onSubmit={login}> <Form.Group className="mb-3" controlId="loginForm.username" > - <Form.Label>{t('login.form.username')}</Form.Label> + <Form.Label>{t('login.form.username.label')}</Form.Label> <Form.Control type="text" ref={usernameRef} + required /> + <Form.Control.Feedback type="invalid"> + {t('global.form.empty_field')} + </Form.Control.Feedback> </Form.Group> <Form.Group className="mb-3" controlId="loginForm.pasword" > - <Form.Label>{t('login.form.password')}</Form.Label> - <Form.Control type="password" ref={passwordRef} /> + <Form.Label>{t('login.form.password.label')}</Form.Label> + <Form.Control type="password" ref={passwordRef} required /> + <Form.Control.Feedback type="invalid"> + {t('global.form.empty_field')} + </Form.Control.Feedback> </Form.Group> <Button variant="primary" -- GitLab From bac97dbe98f8fd5f9850c004507f19d3445e1479 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Tue, 2 Jul 2024 12:50:11 +0200 Subject: [PATCH 09/44] added font and some styles --- react-ui/public/fonts/Inter.ttf | Bin 0 -> 804612 bytes react-ui/src/i18n/config.js | 4 +-- .../src/i18n/locales/de/translations.json | 29 ++++++++-------- .../src/i18n/locales/en/translations.json | 1 + react-ui/src/index.scss | 2 +- react-ui/src/pages/login/login.tsx | 10 ++++++ react-ui/src/stores/index.ts | 7 ++-- react-ui/src/stores/slices/login.reducer.ts | 26 +++++++++++++++ react-ui/src/stores/slices/user.reducer.ts | 31 ------------------ react-ui/src/style/box.scss | 18 ++++++++-- react-ui/src/style/colors.scss | 7 ++++ react-ui/src/style/fonts.scss | 8 +++++ react-ui/src/style/index.scss | 4 +++ react-ui/src/style/style.scss | 10 ------ 14 files changed, 93 insertions(+), 64 deletions(-) create mode 100644 react-ui/public/fonts/Inter.ttf create mode 100644 react-ui/src/stores/slices/login.reducer.ts delete mode 100644 react-ui/src/stores/slices/user.reducer.ts create mode 100644 react-ui/src/style/colors.scss create mode 100644 react-ui/src/style/fonts.scss create mode 100644 react-ui/src/style/index.scss delete mode 100644 react-ui/src/style/style.scss diff --git a/react-ui/public/fonts/Inter.ttf b/react-ui/public/fonts/Inter.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e72470871b8fc198da424b1e17ed729c202829cf GIT binary patch literal 804612 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%0Ax6j{ZP3#Ka=%E2kFnV}3!H!zffX;7aA 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�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%0A&7R<ezA4~-nJxGL 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 literal 0 HcmV?d00001 diff --git a/react-ui/src/i18n/config.js b/react-ui/src/i18n/config.js index 398603ff7..3946a8db2 100644 --- a/react-ui/src/i18n/config.js +++ b/react-ui/src/i18n/config.js @@ -8,10 +8,10 @@ i18next.init({ lng: 'en', resources: { en: { - common: common_en + ...common_en }, de: { - common: common_de + ...common_de } }, }); \ No newline at end of file diff --git a/react-ui/src/i18n/locales/de/translations.json b/react-ui/src/i18n/locales/de/translations.json index c12a0b2e9..e7d425b7b 100644 --- a/react-ui/src/i18n/locales/de/translations.json +++ b/react-ui/src/i18n/locales/de/translations.json @@ -1,18 +1,19 @@ { - "global": { - "form": { - "submit": "Abshcicken", - "empty_field": "Das Feld darf nicht leer sein" - } - }, - - "login": { - "form": { - "username": { - "label": "Benutzername" - }, - "password": { - "label": "Passwort" + "common": { + "global": { + "form": { + "submit": "Abshcicken", + "empty_field": "Das Feld darf nicht leer sein" + } + }, + "login": { + "form": { + "username": { + "label": "Benutzername" + }, + "password": { + "label": "Passwort" + } } } } diff --git a/react-ui/src/i18n/locales/en/translations.json b/react-ui/src/i18n/locales/en/translations.json index 4170131a1..d03dd572d 100644 --- a/react-ui/src/i18n/locales/en/translations.json +++ b/react-ui/src/i18n/locales/en/translations.json @@ -8,6 +8,7 @@ }, "login": { "form": { + "failed": "The username or password is invalid", "username": { "label": "Username" }, diff --git a/react-ui/src/index.scss b/react-ui/src/index.scss index cdcaaa281..9774d5bd6 100644 --- a/react-ui/src/index.scss +++ b/react-ui/src/index.scss @@ -1,4 +1,4 @@ -@import './style/style.scss'; +@import './style/index.scss'; body { margin: 0; diff --git a/react-ui/src/pages/login/login.tsx b/react-ui/src/pages/login/login.tsx index 800e7295f..24842bab1 100644 --- a/react-ui/src/pages/login/login.tsx +++ b/react-ui/src/pages/login/login.tsx @@ -5,6 +5,9 @@ import './login.scss' import { AuthServiceLoginApiArg, useAuthServiceLoginMutation } from '@api/api' import logo from '@assets/logo.svg' import React, { useRef, useState } from 'react' +import { PageLoginState } from 'src/stores/slices/login.reducer' +import { useDispatch, useSelector } from 'react-redux' +import { AppDispatch } from 'src/stores' /** * The `/login` page. It renders the login form with all the encapsulated business logic @@ -17,6 +20,9 @@ const LoginPage = () => { const passwordRef = useRef<HTMLInputElement>(null) const [validated, setValidated] = useState(false); + const [valid, checked] = useSelector((state: PageLoginState) => state); + const {setLoginFormValidity} = useDispatch<AppDispatch>(); + const [ sendLogin, ] = useAuthServiceLoginMutation() @@ -54,6 +60,7 @@ const LoginPage = () => { setValidated(true); const inputInvalid = !isInputValid(username, password); + setLoginFormValidity(inputInvalid) if (inputInvalid) { return; } @@ -72,6 +79,9 @@ const LoginPage = () => { <Row className="mt-2 justify-content-center"> <Col md={6} sm={10} className="c-box p-4"> <h1 className="text-center h2">goSDN - Web</h1> + + <div className="danger-box">{t('login.form.failed')}</div> + <Form className="mt-4" noValidate validated={validated} onSubmit={login}> <Form.Group className="mb-3" diff --git a/react-ui/src/stores/index.ts b/react-ui/src/stores/index.ts index 299595f18..28a3e5300 100644 --- a/react-ui/src/stores/index.ts +++ b/react-ui/src/stores/index.ts @@ -1,12 +1,12 @@ import { combineReducers } from 'redux' -import userReducer from './slices/user.reducer' +import loginPageReducer from './slices/login.reducer' import { configureStore } from '@reduxjs/toolkit' import { emptySplitApi } from './api.store' import { setupListeners } from '@reduxjs/toolkit/query' const getReducers = () => { return combineReducers({ - userReducer, + loginPageReducer, [emptySplitApi.reducerPath]: emptySplitApi.reducer }) } @@ -20,4 +20,5 @@ export const store = configureStore({ setupListeners(store.dispatch) -//export type RootState = ReturnType<typeof store.getState> \ No newline at end of file +export type RootState = ReturnType<typeof store.getState>; +export type AppDispatch = typeof store.dispatch; \ No newline at end of file diff --git a/react-ui/src/stores/slices/login.reducer.ts b/react-ui/src/stores/slices/login.reducer.ts new file mode 100644 index 000000000..87b11357b --- /dev/null +++ b/react-ui/src/stores/slices/login.reducer.ts @@ -0,0 +1,26 @@ +import { PayloadAction, createSlice } from '@reduxjs/toolkit'; + +export interface PageLoginState { + valid: boolean, + checked: boolean +} + + +const initialState: PageLoginState = { + valid: false, + checked: false, +} + + +const loginSlice = createSlice({ + name: 'page_login', + initialState, + reducers: { + setValidity: (state, action: PayloadAction<boolean>) => + {state.valid = action.payload, state.checked = true}, + }, +}) + +export const { setValidity: setLoginFormValidity } = loginSlice.actions + +export default loginSlice.reducer diff --git a/react-ui/src/stores/slices/user.reducer.ts b/react-ui/src/stores/slices/user.reducer.ts deleted file mode 100644 index 8f0b49812..000000000 --- a/react-ui/src/stores/slices/user.reducer.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { PayloadAction, createSlice } from '@reduxjs/toolkit' -import { RootState } from '@reduxjs/toolkit/query'; -import { RbacUser } from 'src/api' - -export type UserType = RbacUser; - - -interface UserState { - user: UserType | undefined -} - - -const initialState: UserState = { - user: undefined -} - - -const userSlice = createSlice({ - name: 'user', - initialState, - reducers: { - set: (state, action: PayloadAction<UserType>) => - {state.user = action.payload}, - }, -}) - -export const { set } = userSlice.actions - -//export const getUser = (state: RootState) => state.counter.value - -export default userSlice.reducer diff --git a/react-ui/src/style/box.scss b/react-ui/src/style/box.scss index e2782bca2..e705404c9 100644 --- a/react-ui/src/style/box.scss +++ b/react-ui/src/style/box.scss @@ -1,8 +1,20 @@ +@import './colors.scss'; + +$box-padding: 10px; +$border-radius: 10px; + + .c-box { + padding: $box-padding; background-color: white; - - border-radius: 10px; box-shadow: 0px 4px 4px rgba(0,0,0, .35); + border-radius: $border-radius; +} + +.danger-box { + background-color: map-get($theme-colors, 'danger') !important; + border-radius: calc($border-radius / 2); - padding: 5px; + padding: 16px $box-padding; + font-size: .90em; } \ No newline at end of file diff --git a/react-ui/src/style/colors.scss b/react-ui/src/style/colors.scss new file mode 100644 index 000000000..1f11a48f3 --- /dev/null +++ b/react-ui/src/style/colors.scss @@ -0,0 +1,7 @@ +$theme-colors: ( + 'primary': #b350e0, + 'bg-primary': #E1E1E1, + 'danger': #ffdcdc, +); + +@import '/node_modules/bootstrap/scss/bootstrap'; diff --git a/react-ui/src/style/fonts.scss b/react-ui/src/style/fonts.scss new file mode 100644 index 000000000..b5f7ec4e6 --- /dev/null +++ b/react-ui/src/style/fonts.scss @@ -0,0 +1,8 @@ +@font-face { + font-family: inter_font; + src: url("./fonts/Inter.ttf"); +} + +* { + font-family: inter_font; +} \ No newline at end of file diff --git a/react-ui/src/style/index.scss b/react-ui/src/style/index.scss new file mode 100644 index 000000000..47dd70b60 --- /dev/null +++ b/react-ui/src/style/index.scss @@ -0,0 +1,4 @@ +@import "./fonts.scss"; +@import './colors.scss'; +@import './utils.scss'; +@import './box.scss'; diff --git a/react-ui/src/style/style.scss b/react-ui/src/style/style.scss deleted file mode 100644 index 2d8649fd4..000000000 --- a/react-ui/src/style/style.scss +++ /dev/null @@ -1,10 +0,0 @@ -@import './box.scss'; -@import './utils.scss'; - - -$theme-colors: ( - 'primary': #b350e0, - 'bg-primary': #E1E1E1 - ); - - @import '/node_modules/bootstrap/scss/bootstrap'; \ No newline at end of file -- GitLab From ab7af48591452a72b2cb2bd4045665dbd3a18e9e Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Mon, 8 Jul 2024 12:05:32 +0200 Subject: [PATCH 10/44] added mvvm pattern --- .../view}/landingpage/landingpage.scss | 0 .../view}/landingpage/landingpage.tsx | 0 .../view}/login/login.scss | 0 .../view}/login/login.tsx | 74 +++++-------------- .../components/view_model/login.viewmodel.ts | 58 +++++++++++++++ react-ui/src/index.scss | 3 - react-ui/src/index.tsx | 4 +- .../pages/landingpage/landingpage.test.tsx | 9 --- react-ui/src/pages/login/login.test.tsx | 9 --- react-ui/src/stores/index.ts | 2 +- .../{slices => reducer}/login.reducer.ts | 4 +- react-ui/tsconfig.json | 3 + react-ui/vite.config.mjs | 3 + 13 files changed, 88 insertions(+), 81 deletions(-) rename react-ui/src/{pages => components/view}/landingpage/landingpage.scss (100%) rename react-ui/src/{pages => components/view}/landingpage/landingpage.tsx (100%) rename react-ui/src/{pages => components/view}/login/login.scss (100%) rename react-ui/src/{pages => components/view}/login/login.tsx (54%) create mode 100644 react-ui/src/components/view_model/login.viewmodel.ts delete mode 100644 react-ui/src/pages/landingpage/landingpage.test.tsx delete mode 100644 react-ui/src/pages/login/login.test.tsx rename react-ui/src/stores/{slices => reducer}/login.reducer.ts (75%) diff --git a/react-ui/src/pages/landingpage/landingpage.scss b/react-ui/src/components/view/landingpage/landingpage.scss similarity index 100% rename from react-ui/src/pages/landingpage/landingpage.scss rename to react-ui/src/components/view/landingpage/landingpage.scss diff --git a/react-ui/src/pages/landingpage/landingpage.tsx b/react-ui/src/components/view/landingpage/landingpage.tsx similarity index 100% rename from react-ui/src/pages/landingpage/landingpage.tsx rename to react-ui/src/components/view/landingpage/landingpage.tsx diff --git a/react-ui/src/pages/login/login.scss b/react-ui/src/components/view/login/login.scss similarity index 100% rename from react-ui/src/pages/login/login.scss rename to react-ui/src/components/view/login/login.scss diff --git a/react-ui/src/pages/login/login.tsx b/react-ui/src/components/view/login/login.tsx similarity index 54% rename from react-ui/src/pages/login/login.tsx rename to react-ui/src/components/view/login/login.tsx index 24842bab1..d86ed0819 100644 --- a/react-ui/src/pages/login/login.tsx +++ b/react-ui/src/components/view/login/login.tsx @@ -2,73 +2,37 @@ import { Button, Col, Container, Form, Image, Row } from 'react-bootstrap' import { useTranslation } from 'react-i18next' import './login.scss' -import { AuthServiceLoginApiArg, useAuthServiceLoginMutation } from '@api/api' import logo from '@assets/logo.svg' -import React, { useRef, useState } from 'react' -import { PageLoginState } from 'src/stores/slices/login.reducer' -import { useDispatch, useSelector } from 'react-redux' -import { AppDispatch } from 'src/stores' +import React, { useRef } from 'react' +import useLoginViewModel from '@viewmodel/login.viewmodel' -/** - * The `/login` page. It renders the login form with all the encapsulated business logic - * - * @description The store is getting mutated by a successful login - */ const LoginPage = () => { const { t } = useTranslation('common') + const { checked, valid, login } = useLoginViewModel(); + const usernameRef = useRef<HTMLInputElement>(null) const passwordRef = useRef<HTMLInputElement>(null) - const [validated, setValidated] = useState(false); - const [valid, checked] = useSelector((state: PageLoginState) => state); - const {setLoginFormValidity} = useDispatch<AppDispatch>(); - - const [ - sendLogin, - ] = useAuthServiceLoginMutation() - - - const isInputValid = (username: string | undefined, password: string | undefined): boolean => { - return !!username && !!password; - } + const triggerLogin = (event: React.FormEvent<HTMLFormElement>) => { + event.preventDefault(); + const username = usernameRef.current?.value; + const password = passwordRef.current?.value; - /** - * Returns the /login payload - */ - const getAuthPayload = (username: string, password: string): AuthServiceLoginApiArg => { - const payload: AuthServiceLoginApiArg = { - rbacLoginRequest: { - username: username, - pwd: password, - timestamp: new Date().getTime().toString(), - } + if (!username || !password) { + return; } - return payload; + login(username, password); } - /** - * Tries to `/login` by using the input fields. - * - * @description The fields are getting validated against null values - * @param event Submit event - */ - const login = (event: React.FormEvent<HTMLFormElement>) => { - event.preventDefault() - const username = usernameRef.current?.value - const password = passwordRef.current?.value - - setValidated(true); - const inputInvalid = !isInputValid(username, password); - setLoginFormValidity(inputInvalid) - if (inputInvalid) { + const handleErrorMessageRendering = () => { + if (!checked || valid) { return; } - - const authPayload = getAuthPayload(username!, password!); - sendLogin(authPayload).unwrap() - .then((payload) => console.log('fulfilled', payload)) - .catch((error) => console.error('rejected', error)); + + return ( + <div className="danger-box">{t('login.form.failed')}</div> + ) } return ( @@ -80,9 +44,9 @@ const LoginPage = () => { <Col md={6} sm={10} className="c-box p-4"> <h1 className="text-center h2">goSDN - Web</h1> - <div className="danger-box">{t('login.form.failed')}</div> + {handleErrorMessageRendering()} - <Form className="mt-4" noValidate validated={validated} onSubmit={login}> + <Form className="mt-4" noValidate validated={checked} onSubmit={triggerLogin}> <Form.Group className="mb-3" controlId="loginForm.username" diff --git a/react-ui/src/components/view_model/login.viewmodel.ts b/react-ui/src/components/view_model/login.viewmodel.ts new file mode 100644 index 000000000..d69fa98d6 --- /dev/null +++ b/react-ui/src/components/view_model/login.viewmodel.ts @@ -0,0 +1,58 @@ +import { AuthServiceLoginApiArg, useAuthServiceLoginMutation } from "@api/api"; +import { setLoginFormValidity } from "@reducer/login.reducer"; +import { useDispatch, useSelector } from "react-redux"; +import { AppDispatch, RootState } from "src/stores"; + +export default function useLoginViewModel() { + const {valid, checked} = useSelector((state: RootState) => state.loginPageReducer); + const dispatch = useDispatch<AppDispatch>(); + + const [ + sendLogin, + ] = useAuthServiceLoginMutation() + + + const isInputValid = (username: string | undefined, password: string | undefined): boolean => { + return !!username && !!password; + } + + /** + * Returns the /login payload + */ + const getAuthPayload = (username: string, password: string): AuthServiceLoginApiArg => { + const payload: AuthServiceLoginApiArg = { + rbacLoginRequest: { + username: username, + pwd: password, + timestamp: new Date().getTime().toString(), + } + } + + return payload; + } + + /** + * Tries to `/login` by using the input fields. + * + * @description The fields are getting validated against null values + * @param event Submit event + */ + const login = (username: string, password: string) => { + const inputInvalid = !isInputValid(username, password); + dispatch(setLoginFormValidity(inputInvalid)) + if (inputInvalid) { + return; + } + + const authPayload = getAuthPayload(username!, password!); + sendLogin(authPayload).unwrap() + .then((payload) => console.log('fulfilled', payload)) + .catch((error) => console.error('rejected', error)); + } + + return { + login, + valid, + checked + } +} diff --git a/react-ui/src/index.scss b/react-ui/src/index.scss index 9774d5bd6..3526e18bc 100644 --- a/react-ui/src/index.scss +++ b/react-ui/src/index.scss @@ -2,9 +2,6 @@ body { margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', - sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; diff --git a/react-ui/src/index.tsx b/react-ui/src/index.tsx index 6c95d80aa..0bd142250 100644 --- a/react-ui/src/index.tsx +++ b/react-ui/src/index.tsx @@ -8,8 +8,8 @@ import { createRoutesFromElements, } from 'react-router-dom' import './index.scss' -import Landingpage from './pages/landingpage/landingpage' -import LoginPage from './pages/login/login' +import Landingpage from './components/view/landingpage/landingpage' +import LoginPage from './components/view/login/login' import './i18n/config' import { I18nextProvider } from 'react-i18next' diff --git a/react-ui/src/pages/landingpage/landingpage.test.tsx b/react-ui/src/pages/landingpage/landingpage.test.tsx deleted file mode 100644 index b3f1713e2..000000000 --- a/react-ui/src/pages/landingpage/landingpage.test.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { render, screen } from '@testing-library/react' -import Landingpage from './landingpage' -import React from 'react' - -test('renders learn react link', () => { - render(<Landingpage />) - const linkElement = screen.getByText(/learn react/i) - expect(linkElement).toBeInTheDocument() -}) diff --git a/react-ui/src/pages/login/login.test.tsx b/react-ui/src/pages/login/login.test.tsx deleted file mode 100644 index 7bdf84514..000000000 --- a/react-ui/src/pages/login/login.test.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { render, screen } from '@testing-library/react' -import App from './login' -import React from 'react' - -test('renders learn react link', () => { - render(<App />) - const linkElement = screen.getByText(/learn react/i) - expect(linkElement).toBeInTheDocument() -}) diff --git a/react-ui/src/stores/index.ts b/react-ui/src/stores/index.ts index 28a3e5300..26d3cde46 100644 --- a/react-ui/src/stores/index.ts +++ b/react-ui/src/stores/index.ts @@ -1,5 +1,5 @@ import { combineReducers } from 'redux' -import loginPageReducer from './slices/login.reducer' +import loginPageReducer from './reducer/login.reducer' import { configureStore } from '@reduxjs/toolkit' import { emptySplitApi } from './api.store' import { setupListeners } from '@reduxjs/toolkit/query' diff --git a/react-ui/src/stores/slices/login.reducer.ts b/react-ui/src/stores/reducer/login.reducer.ts similarity index 75% rename from react-ui/src/stores/slices/login.reducer.ts rename to react-ui/src/stores/reducer/login.reducer.ts index 87b11357b..ec41bd1a3 100644 --- a/react-ui/src/stores/slices/login.reducer.ts +++ b/react-ui/src/stores/reducer/login.reducer.ts @@ -16,11 +16,11 @@ const loginSlice = createSlice({ name: 'page_login', initialState, reducers: { - setValidity: (state, action: PayloadAction<boolean>) => + setLoginFormValidity: (state, action: PayloadAction<boolean>) => {state.valid = action.payload, state.checked = true}, }, }) -export const { setValidity: setLoginFormValidity } = loginSlice.actions +export const { setLoginFormValidity } = loginSlice.actions export default loginSlice.reducer diff --git a/react-ui/tsconfig.json b/react-ui/tsconfig.json index 4230ee19f..17feecac2 100644 --- a/react-ui/tsconfig.json +++ b/react-ui/tsconfig.json @@ -24,6 +24,9 @@ "paths": { "@assets/*": ["assets/*"], "@api/*": ["src/api/*"], + "@viewmodel/*": ["src/components/view_model/*"], + "@view/*": ["src/components/view/*"], + "@reducer/*": ["src/stores/reducer/*"], } }, "include": [ diff --git a/react-ui/vite.config.mjs b/react-ui/vite.config.mjs index 4d70f80f3..0e2caf6fd 100644 --- a/react-ui/vite.config.mjs +++ b/react-ui/vite.config.mjs @@ -30,6 +30,9 @@ export default defineConfig({ alias: { '@assets': '/assets', '@api': '/src/api', + "@viewmodel": "/src/components/view_model", + "@view": "/src/components/view", + "@reducer": "/src/stores/reducer", }, }, -- GitLab From beba646e351dc54c3a8d3aa87bf6cd6637837731 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Tue, 6 Aug 2024 14:32:08 +0200 Subject: [PATCH 11/44] move error logic to viewmodel --- react-ui/package.json | 2 + react-ui/scripts/openapi-config.json | 4 +- react-ui/scripts/test.ts | 1208 ----------------- react-ui/src/components/view/login/login.tsx | 26 +- .../components/view_model/login.viewmodel.ts | 58 +- react-ui/src/index.tsx | 19 +- react-ui/src/router.tsx | 169 --- react-ui/src/stores/api.store.ts | 13 +- react-ui/src/stores/index.ts | 31 +- .../middleware/devLogging.middleware.ts | 24 + react-ui/src/stores/persist.store.ts | 25 + react-ui/src/stores/reducer/login.reducer.ts | 44 +- react-ui/src/stores/reducer/user.reducer.ts | 24 + react-ui/src/style/index.scss | 1 + react-ui/src/style/toast.scss | 1 + react-ui/yarn.lock | 17 + 16 files changed, 223 insertions(+), 1443 deletions(-) delete mode 100644 react-ui/scripts/test.ts delete mode 100644 react-ui/src/router.tsx create mode 100644 react-ui/src/stores/middleware/devLogging.middleware.ts create mode 100644 react-ui/src/stores/persist.store.ts create mode 100644 react-ui/src/stores/reducer/user.reducer.ts create mode 100644 react-ui/src/style/toast.scss diff --git a/react-ui/package.json b/react-ui/package.json index f2d15cd7c..0484b6822 100644 --- a/react-ui/package.json +++ b/react-ui/package.json @@ -16,7 +16,9 @@ "react-redux": "^9.1.2", "react-router-dom": "^6.23.1", "react-scripts": "5.0.1", + "react-toastify": "^10.0.5", "redux": "^5.0.1", + "redux-persist": "^6.0.0", "web-vitals": "^2.1.4" }, "scripts": { diff --git a/react-ui/scripts/openapi-config.json b/react-ui/scripts/openapi-config.json index 1aa05ba6e..f4246e548 100644 --- a/react-ui/scripts/openapi-config.json +++ b/react-ui/scripts/openapi-config.json @@ -4,5 +4,7 @@ "apiImport": "emptySplitApi", "outputFile": "../src/api/api.ts", "exportName": "api", - "hooks": true + "hooks": true, + "nullSafeAdditionalProps": true, + "withInterfaces": true } \ No newline at end of file diff --git a/react-ui/scripts/test.ts b/react-ui/scripts/test.ts deleted file mode 100644 index 775438e48..000000000 --- a/react-ui/scripts/test.ts +++ /dev/null @@ -1,1208 +0,0 @@ -import { emptySplitApi as api } from '../src/stores/api.store' -const injectedRtkApi = api.injectEndpoints({ - endpoints: (build) => ({ - appServiceDeregister: build.mutation< - AppServiceDeregisterApiResponse, - AppServiceDeregisterApiArg - >({ - query: (queryArg) => ({ - url: `/deregister`, - method: 'POST', - body: queryArg.appAppDeregisterRequest, - }), - }), - configurationManagementServiceExportSdnConfig: build.query< - ConfigurationManagementServiceExportSdnConfigApiResponse, - ConfigurationManagementServiceExportSdnConfigApiArg - >({ - query: (queryArg) => ({ - url: `/export/${queryArg.pid}`, - params: { timestamp: queryArg.timestamp }, - }), - }), - configurationManagementServiceImportSdnConfig: build.mutation< - ConfigurationManagementServiceImportSdnConfigApiResponse, - ConfigurationManagementServiceImportSdnConfigApiArg - >({ - query: (queryArg) => ({ - url: `/import/${queryArg.pid}`, - method: 'POST', - params: { - timestamp: queryArg.timestamp, - sdnConfigData: queryArg.sdnConfigData, - }, - }), - }), - authServiceLogin: build.mutation< - AuthServiceLoginApiResponse, - AuthServiceLoginApiArg - >({ - query: (queryArg) => ({ - url: `/login`, - method: 'POST', - body: queryArg.rbacLoginRequest, - }), - }), - authServiceLogout: build.mutation< - AuthServiceLogoutApiResponse, - AuthServiceLogoutApiArg - >({ - query: (queryArg) => ({ - url: `/logout/${queryArg.username}`, - method: 'POST', - params: { timestamp: queryArg.timestamp }, - }), - }), - networkElementServiceUpdate: build.mutation< - NetworkElementServiceUpdateApiResponse, - NetworkElementServiceUpdateApiArg - >({ - query: (queryArg) => ({ - url: `/network-element/update`, - method: 'POST', - body: queryArg.networkelementUpdateNetworkElementRequest, - }), - }), - pndServiceGetPnd: build.query< - PndServiceGetPndApiResponse, - PndServiceGetPndApiArg - >({ - query: (queryArg) => ({ - url: `/pnd/${queryArg.pid}`, - params: { timestamp: queryArg.timestamp }, - }), - }), - pndServiceGetPndList: build.query< - PndServiceGetPndListApiResponse, - PndServiceGetPndListApiArg - >({ - query: (queryArg) => ({ - url: `/pnds`, - params: { timestamp: queryArg.timestamp }, - }), - }), - pndServiceCreatePndList: build.mutation< - PndServiceCreatePndListApiResponse, - PndServiceCreatePndListApiArg - >({ - query: (queryArg) => ({ - url: `/pnds`, - method: 'POST', - body: queryArg.pndCreatePndListRequest, - }), - }), - pndServiceDeletePnd: build.mutation< - PndServiceDeletePndApiResponse, - PndServiceDeletePndApiArg - >({ - query: (queryArg) => ({ - url: `/pnds/${queryArg.pid}`, - method: 'DELETE', - params: { timestamp: queryArg.timestamp }, - }), - }), - networkElementServiceGetChangeList: build.query< - NetworkElementServiceGetChangeListApiResponse, - NetworkElementServiceGetChangeListApiArg - >({ - query: (queryArg) => ({ - url: `/pnds/${queryArg.pid}/changes`, - params: { timestamp: queryArg.timestamp }, - }), - }), - networkElementServiceSetChangeList: build.mutation< - NetworkElementServiceSetChangeListApiResponse, - NetworkElementServiceSetChangeListApiArg - >({ - query: (queryArg) => ({ - url: `/pnds/${queryArg.pid}/changes`, - method: 'POST', - body: queryArg.networkElementServiceSetChangeListBody, - }), - }), - networkElementServiceGetChange: build.query< - NetworkElementServiceGetChangeApiResponse, - NetworkElementServiceGetChangeApiArg - >({ - query: (queryArg) => ({ - url: `/pnds/${queryArg.pid}/changes/${queryArg.cuid}`, - params: { timestamp: queryArg.timestamp }, - }), - }), - networkElementServiceGet: build.query< - NetworkElementServiceGetApiResponse, - NetworkElementServiceGetApiArg - >({ - query: (queryArg) => ({ - url: `/pnds/${queryArg.pid}/mne/${queryArg.mneid}`, - params: { timestamp: queryArg.timestamp }, - }), - }), - networkElementServiceGetAllFlattened: build.query< - NetworkElementServiceGetAllFlattenedApiResponse, - NetworkElementServiceGetAllFlattenedApiArg - >({ - query: (queryArg) => ({ - url: `/pnds/${queryArg.pid}/mnes`, - params: { timestamp: queryArg.timestamp }, - }), - }), - networkElementServiceAddList: build.mutation< - NetworkElementServiceAddListApiResponse, - NetworkElementServiceAddListApiArg - >({ - query: (queryArg) => ({ - url: `/pnds/${queryArg.pid}/mnes`, - method: 'POST', - body: queryArg.networkElementServiceAddListBody, - }), - }), - networkElementServiceSetPathList: build.mutation< - NetworkElementServiceSetPathListApiResponse, - NetworkElementServiceSetPathListApiArg - >({ - query: (queryArg) => ({ - url: `/pnds/${queryArg.pid}/mnes/paths`, - method: 'POST', - body: queryArg.networkElementServiceSetPathListBody, - }), - }), - networkElementServiceDelete: build.mutation< - NetworkElementServiceDeleteApiResponse, - NetworkElementServiceDeleteApiArg - >({ - query: (queryArg) => ({ - url: `/pnds/${queryArg.pid}/mnes/${queryArg.mneid}`, - method: 'DELETE', - params: { timestamp: queryArg.timestamp }, - }), - }), - networkElementServiceGetIntendedPath: build.query< - NetworkElementServiceGetIntendedPathApiResponse, - NetworkElementServiceGetIntendedPathApiArg - >({ - query: (queryArg) => ({ - url: `/pnds/${queryArg.pid}/mnes/${queryArg.mneid}/intendedpaths/${queryArg.intendedPath}`, - params: { timestamp: queryArg.timestamp }, - }), - }), - networkElementServiceGetPath: build.query< - NetworkElementServiceGetPathApiResponse, - NetworkElementServiceGetPathApiArg - >({ - query: (queryArg) => ({ - url: `/pnds/${queryArg.pid}/mnes/${queryArg.mneid}/paths/${queryArg.path}`, - params: { timestamp: queryArg.timestamp }, - }), - }), - appServiceRegister: build.mutation< - AppServiceRegisterApiResponse, - AppServiceRegisterApiArg - >({ - query: (queryArg) => ({ - url: `/register`, - method: 'POST', - body: queryArg.appAppRegisterRequest, - }), - }), - roleServiceGetRoles: build.query< - RoleServiceGetRolesApiResponse, - RoleServiceGetRolesApiArg - >({ - query: (queryArg) => ({ - url: `/roles`, - params: { timestamp: queryArg.timestamp }, - }), - }), - roleServiceCreateRoles: build.mutation< - RoleServiceCreateRolesApiResponse, - RoleServiceCreateRolesApiArg - >({ - query: (queryArg) => ({ - url: `/roles/create`, - method: 'POST', - body: queryArg.rbacCreateRolesRequest, - }), - }), - roleServiceDeleteRoles: build.mutation< - RoleServiceDeleteRolesApiResponse, - RoleServiceDeleteRolesApiArg - >({ - query: (queryArg) => ({ - url: `/roles/delete`, - method: 'DELETE', - params: { - timestamp: queryArg.timestamp, - roleName: queryArg.roleName, - }, - }), - }), - roleServiceDeletePermissionsForRole: build.mutation< - RoleServiceDeletePermissionsForRoleApiResponse, - RoleServiceDeletePermissionsForRoleApiArg - >({ - query: (queryArg) => ({ - url: `/roles/delete/permissions`, - method: 'DELETE', - params: { - timestamp: queryArg.timestamp, - roleName: queryArg.roleName, - permissionsToDelete: queryArg.permissionsToDelete, - }, - }), - }), - roleServiceGetRole: build.query< - RoleServiceGetRoleApiResponse, - RoleServiceGetRoleApiArg - >({ - query: (queryArg) => ({ - url: `/roles/get`, - params: { - timestamp: queryArg.timestamp, - roleName: queryArg.roleName, - id: queryArg.id, - }, - }), - }), - roleServiceUpdateRoles: build.mutation< - RoleServiceUpdateRolesApiResponse, - RoleServiceUpdateRolesApiArg - >({ - query: (queryArg) => ({ - url: `/roles/update`, - method: 'POST', - body: queryArg.rbacUpdateRolesRequest, - }), - }), - routingTableServiceGetRoutes: build.query< - RoutingTableServiceGetRoutesApiResponse, - RoutingTableServiceGetRoutesApiArg - >({ - query: (queryArg) => ({ - url: `/routing`, - params: { timestamp: queryArg.timestamp }, - }), - }), - routingTableServiceAddRoutingTable: build.mutation< - RoutingTableServiceAddRoutingTableApiResponse, - RoutingTableServiceAddRoutingTableApiArg - >({ - query: (queryArg) => ({ - url: `/routing/create`, - method: 'POST', - body: queryArg.topologyAddRoutingTableRequest, - }), - }), - routingTableServiceDeleteRoute: build.mutation< - RoutingTableServiceDeleteRouteApiResponse, - RoutingTableServiceDeleteRouteApiArg - >({ - query: (queryArg) => ({ - url: `/routing/delete`, - method: 'DELETE', - params: { timestamp: queryArg.timestamp, id: queryArg.id }, - }), - }), - topologyServiceGetTopology: build.query< - TopologyServiceGetTopologyApiResponse, - TopologyServiceGetTopologyApiArg - >({ - query: (queryArg) => ({ - url: `/topology`, - params: { timestamp: queryArg.timestamp }, - }), - }), - topologyServiceAddLink: build.mutation< - TopologyServiceAddLinkApiResponse, - TopologyServiceAddLinkApiArg - >({ - query: (queryArg) => ({ - url: `/topology/create`, - method: 'POST', - body: queryArg.topologyAddLinkRequest, - }), - }), - topologyServiceDeleteLink: build.mutation< - TopologyServiceDeleteLinkApiResponse, - TopologyServiceDeleteLinkApiArg - >({ - query: (queryArg) => ({ - url: `/topology/delete`, - method: 'DELETE', - params: { timestamp: queryArg.timestamp, id: queryArg.id }, - }), - }), - topologyServiceUpdateLink: build.mutation< - TopologyServiceUpdateLinkApiResponse, - TopologyServiceUpdateLinkApiArg - >({ - query: (queryArg) => ({ - url: `/topology/update`, - method: 'POST', - body: queryArg.topologyUpdateLinkRequest, - }), - }), - userServiceGetUsers: build.query< - UserServiceGetUsersApiResponse, - UserServiceGetUsersApiArg - >({ - query: (queryArg) => ({ - url: `/users`, - params: { timestamp: queryArg.timestamp }, - }), - }), - userServiceCreateUsers: build.mutation< - UserServiceCreateUsersApiResponse, - UserServiceCreateUsersApiArg - >({ - query: (queryArg) => ({ - url: `/users/create`, - method: 'POST', - body: queryArg.rbacCreateUsersRequest, - }), - }), - userServiceDeleteUsers: build.mutation< - UserServiceDeleteUsersApiResponse, - UserServiceDeleteUsersApiArg - >({ - query: (queryArg) => ({ - url: `/users/delete`, - method: 'DELETE', - params: { - timestamp: queryArg.timestamp, - username: queryArg.username, - }, - }), - }), - userServiceGetUser: build.query< - UserServiceGetUserApiResponse, - UserServiceGetUserApiArg - >({ - query: (queryArg) => ({ - url: `/users/get`, - params: { - timestamp: queryArg.timestamp, - name: queryArg.name, - id: queryArg.id, - }, - }), - }), - userServiceUpdateUsers: build.mutation< - UserServiceUpdateUsersApiResponse, - UserServiceUpdateUsersApiArg - >({ - query: (queryArg) => ({ - url: `/users/update`, - method: 'POST', - body: queryArg.rbacUpdateUsersRequest, - }), - }), - }), - overrideExisting: false, -}) -export { injectedRtkApi as api } -export type AppServiceDeregisterApiResponse = - /** status 200 A successful response. */ AppAppDeregisterResponse -export type AppServiceDeregisterApiArg = { - appAppDeregisterRequest: AppAppDeregisterRequest -} -export type ConfigurationManagementServiceExportSdnConfigApiResponse = - /** status 200 A successful response. */ ConfigurationmanagementExportSdnConfigResponse -export type ConfigurationManagementServiceExportSdnConfigApiArg = { - pid: string - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string -} -export type ConfigurationManagementServiceImportSdnConfigApiResponse = - /** status 200 A successful response. */ ConfigurationmanagementImportSdnConfigResponse -export type ConfigurationManagementServiceImportSdnConfigApiArg = { - pid: string - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string - sdnConfigData?: string -} -export type AuthServiceLoginApiResponse = - /** status 200 A successful response. */ RbacLoginResponse -export type AuthServiceLoginApiArg = { - rbacLoginRequest: Login -} -export type AuthServiceLogoutApiResponse = - /** status 200 A successful response. */ RbacLogoutResponse -export type AuthServiceLogoutApiArg = { - username: string - timestamp?: string -} -export type NetworkElementServiceUpdateApiResponse = - /** status 200 A successful response. */ NetworkelementUpdateNetworkElementResponse -export type NetworkElementServiceUpdateApiArg = { - networkelementUpdateNetworkElementRequest: TodoChangeNameToFitTheRest -} -export type PndServiceGetPndApiResponse = - /** status 200 A successful response. */ PndGetPndResponse -export type PndServiceGetPndApiArg = { - pid: string - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string -} -export type PndServiceGetPndListApiResponse = - /** status 200 A successful response. */ PndGetPndListResponse -export type PndServiceGetPndListApiArg = { - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string -} -export type PndServiceCreatePndListApiResponse = - /** status 200 A successful response. */ PndCreatePndListResponse -export type PndServiceCreatePndListApiArg = { - pndCreatePndListRequest: PndCreatePndListRequest -} -export type PndServiceDeletePndApiResponse = - /** status 200 A successful response. */ PndDeletePndResponse -export type PndServiceDeletePndApiArg = { - pid: string - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string -} -export type NetworkElementServiceGetChangeListApiResponse = - /** status 200 A successful response. */ NetworkelementGetChangeListResponse -export type NetworkElementServiceGetChangeListApiArg = { - pid: string - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string -} -export type NetworkElementServiceSetChangeListApiResponse = - /** status 200 A successful response. */ NetworkelementSetChangeListResponse -export type NetworkElementServiceSetChangeListApiArg = { - pid: string - networkElementServiceSetChangeListBody: NetworkElementServiceSetChangeListBody -} -export type NetworkElementServiceGetChangeApiResponse = - /** status 200 A successful response. */ NetworkelementGetChangeResponse -export type NetworkElementServiceGetChangeApiArg = { - pid: string - cuid: string[] - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string -} -export type NetworkElementServiceGetApiResponse = - /** status 200 A successful response. */ GosdnnetworkelementGetResponse -export type NetworkElementServiceGetApiArg = { - pid: string - mneid: string - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string -} -export type NetworkElementServiceGetAllFlattenedApiResponse = - /** status 200 A successful response. */ NetworkelementGetAllFlattenedResponse -export type NetworkElementServiceGetAllFlattenedApiArg = { - pid: string - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string -} -export type NetworkElementServiceAddListApiResponse = - /** status 200 A successful response. */ NetworkelementAddListResponse -export type NetworkElementServiceAddListApiArg = { - pid: string - networkElementServiceAddListBody: NetworkElementServiceAddListBody -} -export type NetworkElementServiceSetPathListApiResponse = - /** status 200 A successful response. */ NetworkelementSetPathListResponse -export type NetworkElementServiceSetPathListApiArg = { - pid: string - networkElementServiceSetPathListBody: NetworkElementServiceSetPathListBody -} -export type NetworkElementServiceDeleteApiResponse = - /** status 200 A successful response. */ GosdnnetworkelementDeleteResponse -export type NetworkElementServiceDeleteApiArg = { - pid: string - mneid: string - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string -} -export type NetworkElementServiceGetIntendedPathApiResponse = - /** status 200 A successful response. */ NetworkelementGetIntendedPathResponse -export type NetworkElementServiceGetIntendedPathApiArg = { - pid: string - mneid: string - intendedPath: string - timestamp?: string -} -export type NetworkElementServiceGetPathApiResponse = - /** status 200 A successful response. */ NetworkelementGetPathResponse -export type NetworkElementServiceGetPathApiArg = { - pid: string - mneid: string - path: string - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string -} -export type AppServiceRegisterApiResponse = - /** status 200 A successful response. */ AppAppRegisterResponse -export type AppServiceRegisterApiArg = { - appAppRegisterRequest: AppAppRegisterRequest -} -export type RoleServiceGetRolesApiResponse = - /** status 200 A successful response. */ RbacGetRolesResponse -export type RoleServiceGetRolesApiArg = { - timestamp?: string -} -export type RoleServiceCreateRolesApiResponse = - /** status 200 A successful response. */ RbacCreateRolesResponse -export type RoleServiceCreateRolesApiArg = { - rbacCreateRolesRequest: CreateRoles -} -export type RoleServiceDeleteRolesApiResponse = - /** status 200 A successful response. */ RbacDeleteRolesResponse -export type RoleServiceDeleteRolesApiArg = { - timestamp?: string - roleName?: string[] -} -export type RoleServiceDeletePermissionsForRoleApiResponse = - /** status 200 A successful response. */ RbacDeletePermissionsForRoleResponse -export type RoleServiceDeletePermissionsForRoleApiArg = { - timestamp?: string - roleName?: string - permissionsToDelete?: string[] -} -export type RoleServiceGetRoleApiResponse = - /** status 200 A successful response. */ RbacGetRoleResponse -export type RoleServiceGetRoleApiArg = { - timestamp?: string - roleName?: string - id?: string -} -export type RoleServiceUpdateRolesApiResponse = - /** status 200 A successful response. */ RbacUpdateRolesResponse -export type RoleServiceUpdateRolesApiArg = { - rbacUpdateRolesRequest: UpdateRoles -} -export type RoutingTableServiceGetRoutesApiResponse = - /** status 200 A successful response. */ TopologyGetRoutesResponse -export type RoutingTableServiceGetRoutesApiArg = { - timestamp?: string -} -export type RoutingTableServiceAddRoutingTableApiResponse = - /** status 200 A successful response. */ TopologyAddRoutingTableResponse -export type RoutingTableServiceAddRoutingTableApiArg = { - topologyAddRoutingTableRequest: TopologyAddRoutingTableRequest -} -export type RoutingTableServiceDeleteRouteApiResponse = - /** status 200 A successful response. */ TopologyDeleteRoutesResponse -export type RoutingTableServiceDeleteRouteApiArg = { - timestamp?: string - id?: string -} -export type TopologyServiceGetTopologyApiResponse = - /** status 200 A successful response. */ TopologyGetTopologyResponse -export type TopologyServiceGetTopologyApiArg = { - timestamp?: string -} -export type TopologyServiceAddLinkApiResponse = - /** status 200 A successful response. */ TopologyAddLinkResponse -export type TopologyServiceAddLinkApiArg = { - topologyAddLinkRequest: TopologyAddLinkRequest -} -export type TopologyServiceDeleteLinkApiResponse = - /** status 200 A successful response. */ TopologyDeleteLinkResponse -export type TopologyServiceDeleteLinkApiArg = { - timestamp?: string - id?: string -} -export type TopologyServiceUpdateLinkApiResponse = - /** status 200 A successful response. */ TopologyUpdateLinkResponse -export type TopologyServiceUpdateLinkApiArg = { - topologyUpdateLinkRequest: TopologyUpdateLinkRequest -} -export type UserServiceGetUsersApiResponse = - /** status 200 A successful response. */ RbacGetUsersResponse -export type UserServiceGetUsersApiArg = { - timestamp?: string -} -export type UserServiceCreateUsersApiResponse = - /** status 200 A successful response. */ RbacCreateUsersResponse -export type UserServiceCreateUsersApiArg = { - rbacCreateUsersRequest: CreateUsers -} -export type UserServiceDeleteUsersApiResponse = - /** status 200 A successful response. */ RbacDeleteUsersResponse -export type UserServiceDeleteUsersApiArg = { - timestamp?: string - username?: string[] -} -export type UserServiceGetUserApiResponse = - /** status 200 A successful response. */ RbacGetUserResponse -export type UserServiceGetUserApiArg = { - timestamp?: string - /** TODO(faseid): reconsider if this is necessary as required, but id is not? */ - name?: string - id?: string -} -export type UserServiceUpdateUsersApiResponse = - /** status 200 A successful response. */ RbacUpdateUsersResponse -export type UserServiceUpdateUsersApiArg = { - rbacUpdateUsersRequest: UpdateUsers -} -export type AppAppDeregisterResponse = { - timestamp?: string -} -export type ProtobufAny = { - /** A URL/resource name that uniquely identifies the type of the serialized - protocol buffer message. This string must contain at least - one "/" character. The last segment of the URL's path must represent - the fully qualified name of the type (as in - `path/google.protobuf.Duration`). The name should be in a canonical form - (e.g., leading "." is not accepted). - - In practice, teams usually precompile into the binary all types that they - expect it to use in the context of Any. However, for URLs which use the - scheme `http`, `https`, or no scheme, one can optionally set up a type - server that maps type URLs to message definitions as follows: - - * If no scheme is provided, `https` is assumed. - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the official - protobuf release, and it is not used for type URLs beginning with - type.googleapis.com. As of May 2023, there are no widely used type server - implementations and no plans to implement one. - - Schemes other than `http`, `https` (or the empty scheme) might be - used with implementation specific semantics. */ - '@type'?: string - [key: string]: any -} -export type GooglerpcStatus = { - code?: number - message?: string - details?: ProtobufAny[] -} -export type AppAppDeregisterRequest = { - timestamp?: string - appname?: string -} -export type ConfigurationmanagementExportSdnConfigResponse = { - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string - sdnConfigData?: string -} -export type ConfigurationmanagementImportSdnConfigResponse = { - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string -} -export type RbacLoginResponse = { - timestamp?: string - token?: string -} -export type Login = { - timestamp?: string - username?: string - pwd?: string -} -export type RbacLogoutResponse = { - timestamp?: string -} -export type NetworkelementUpdateNetworkElementResponse = { - timestamp?: string -} -export type PluginRegistryManifest = { - name?: string - firmware?: string - author?: string - version?: string -} -export type PluginRegistryPlugin = { - id?: string - manifest?: PluginRegistryManifest -} -export type GnmiPathElem = { - /** The name of the element in the path. */ - name?: string - /** Map of key (attribute) name to value. */ - key?: { - [key: string]: string - } -} -export type GnmiPath = { - /** Elements of the path are no longer encoded as a string, but rather within - the elem field as a PathElem message. */ - element?: string[] - /** Label to disambiguate path. */ - origin?: string - /** Elements of the path. */ - elem?: GnmiPathElem[] - target?: string -} -export type EncodingDefinesTheValueEncodingFormatsThatAreSupportedByTheGNmiProtocolTheseEncodingsAreUsedByBothTheClientWhenSendingSetMessagesToModifyTheStateOfTheTargetAndTheTargetWhenSerializingDataToBeReturnedToTheClientInBothSubscribeAndGetRpCsReferenceGNmiSpecificationSection23 = - 'JSON' | 'BYTES' | 'PROTO' | 'ASCII' | 'JSON_IETF' -export type GnmiValue = { - /** Value of the variable being transmitted. */ - value?: string - type?: EncodingDefinesTheValueEncodingFormatsThatAreSupportedByTheGNmiProtocolTheseEncodingsAreUsedByBothTheClientWhenSendingSetMessagesToModifyTheStateOfTheTargetAndTheTargetWhenSerializingDataToBeReturnedToTheClientInBothSubscribeAndGetRpCsReferenceGNmiSpecificationSection23 -} -export type GnmiDecimal64 = { - /** Set of digits. */ - digits?: string - /** Number of digits following the decimal point. */ - precision?: number -} -export type GnmiScalarArray = { - /** The set of elements within the array. Each TypedValue message should - specify only elements that have a field identifier of 1-7 (i.e., the - values are scalar values). */ - element?: GnmiTypedValue[] -} -export type GnmiTypedValue = { - /** String value. */ - stringVal?: string - /** Integer value. */ - intVal?: string - /** Unsigned integer value. */ - uintVal?: string - /** Bool value. */ - boolVal?: boolean - /** Arbitrary byte sequence value. */ - bytesVal?: string - /** Floating point value. */ - floatVal?: number - decimalVal?: GnmiDecimal64 - leaflistVal?: GnmiScalarArray - anyVal?: ProtobufAny - /** JSON-encoded text. */ - jsonVal?: string - /** JSON-encoded text per RFC7951. */ - jsonIetfVal?: string - /** Arbitrary ASCII text. */ - asciiVal?: string - /** Protobuf binary encoded bytes. The message type is not included. - See the specification at - github.com/openconfig/reference/blob/master/rpc/gnmi/protobuf-vals.md - for a complete specification. */ - protoBytes?: string -} -export type UpdateIsAReUsableMessageThatIsUsedToStoreAParticularPathValuePairReferenceGNmiSpecificationSection21 = - { - path?: GnmiPath - value?: GnmiValue - val?: GnmiTypedValue - /** Number of coalesced duplicates. */ - duplicates?: number - } -export type NotificationIsAReUsableMessageThatIsUsedToEncodeDataFromTheTargetToTheClientANotificationCarriesTwoTypesOfChangesToTheDataTreeDeletedValuesDeleteASetOfPathsThatHaveBeenRemovedFromTheDataTreeUpdatedValuesUpdateASetOfPathValuePairsIndicatingThePathWhoseValueHasChangedInTheDataTreeReferenceGNmiSpecificationSection21 = - { - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string - prefix?: GnmiPath - alias?: string - /** Data elements that have changed values. */ - update?: UpdateIsAReUsableMessageThatIsUsedToStoreAParticularPathValuePairReferenceGNmiSpecificationSection21[] - /** Data elements that have been deleted. */ - delete?: GnmiPath[] - /** This notification contains a set of paths that are always updated together - referenced by a globally unique prefix. */ - atomic?: boolean - } -export type TransportGnmiTransportOption = { - compression?: string - grpcDialOptions?: { - [key: string]: string - } - token?: string - encoding?: EncodingDefinesTheValueEncodingFormatsThatAreSupportedByTheGNmiProtocolTheseEncodingsAreUsedByBothTheClientWhenSendingSetMessagesToModifyTheStateOfTheTargetAndTheTargetWhenSerializingDataToBeReturnedToTheClientInBothSubscribeAndGetRpCsReferenceGNmiSpecificationSection23 -} -export type TransportRestconfTransportOption = object -export type ChangedAccordingToStyleGuideHttpsDocsBufBuildBestPracticesStyleGuideEnums = - - | 'TYPE_UNSPECIFIED' - | 'TYPE_OPENCONFIG' - | 'TYPE_CONTAINERISED' - | 'TYPE_PLUGIN' -export type TransportTransportOption = { - address?: string - username?: string - password?: string - tls?: boolean - gnmiTransportOption?: TransportGnmiTransportOption - restconfTransportOption?: TransportRestconfTransportOption - type?: ChangedAccordingToStyleGuideHttpsDocsBufBuildBestPracticesStyleGuideEnums -} -export type ConflictMetadata = { - resourceVersion?: string -} -export type NetworkelementManagedNetworkElement = { - id?: string - name?: string - model?: string - plugin?: PluginRegistryPlugin - mneNotification?: NotificationIsAReUsableMessageThatIsUsedToEncodeDataFromTheTargetToTheClientANotificationCarriesTwoTypesOfChangesToTheDataTreeDeletedValuesDeleteASetOfPathsThatHaveBeenRemovedFromTheDataTreeUpdatedValuesUpdateASetOfPathValuePairsIndicatingThePathWhoseValueHasChangedInTheDataTreeReferenceGNmiSpecificationSection21[] - transportAddress?: string - transportOption?: TransportTransportOption - metadata?: ConflictMetadata - associatedPnd?: string - gnmiSubscribePaths?: string[] -} -export type TodoChangeNameToFitTheRest = { - timestamp?: string - networkElement?: NetworkelementManagedNetworkElement -} -export type PndPrincipalNetworkDomain = { - id?: string - name?: string - description?: string -} -export type PndGetPndResponse = { - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string - pnd?: PndPrincipalNetworkDomain -} -export type PndGetPndListResponse = { - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string - pnd?: PndPrincipalNetworkDomain[] -} -export type PndCreatePndListResponse = { - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string -} -export type PndPndCreateProperties = { - name?: string - description?: string -} -export type PndCreatePndListRequest = { - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string - pnd?: PndPndCreateProperties[] -} -export type PndDeletePndResponse = { - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string -} -export type NetworkelementChangeState = - | 'CHANGE_STATE_UNSPECIFIED' - | 'CHANGE_STATE_PENDING' - | 'CHANGE_STATE_COMMITTED' - | 'CHANGE_STATE_CONFIRMED' - | 'CHANGE_STATE_INCONSISTENT' -export type NetworkelementChange = { - id?: string - age?: string - state?: NetworkelementChangeState - diff?: NotificationIsAReUsableMessageThatIsUsedToEncodeDataFromTheTargetToTheClientANotificationCarriesTwoTypesOfChangesToTheDataTreeDeletedValuesDeleteASetOfPathsThatHaveBeenRemovedFromTheDataTreeUpdatedValuesUpdateASetOfPathValuePairsIndicatingThePathWhoseValueHasChangedInTheDataTreeReferenceGNmiSpecificationSection21 -} -export type NetworkelementGetChangeListResponse = { - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string - pnd?: PndPrincipalNetworkDomain - change?: NetworkelementChange[] -} -export type GosdnnetworkelementSetResponse = { - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string - id?: string -} -export type NetworkelementSetChangeListResponse = { - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string - responses?: GosdnnetworkelementSetResponse[] -} -export type GosdnnetworkelementOperation = - | 'OPERATION_UNSPECIFIED' - | 'OPERATION_CREATE' - | 'OPERATION_COMMIT' - | 'OPERATION_CONFIRM' -export type NetworkelementSetChange = { - cuid?: string - op?: GosdnnetworkelementOperation -} -export type NetworkElementServiceSetChangeListBody = { - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string - change?: NetworkelementSetChange[] -} -export type NetworkelementGetChangeResponse = { - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string - pnd?: PndPrincipalNetworkDomain - change?: NetworkelementChange[] -} -export type GosdnnetworkelementGetResponse = { - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string - pnd?: PndPrincipalNetworkDomain - mne?: NetworkelementManagedNetworkElement -} -export type NetworkelementFlattenedManagedNetworkElement = { - id?: string - name?: string - pid?: string - pluginid?: string -} -export type NetworkelementGetAllFlattenedResponse = { - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string - pnd?: PndPrincipalNetworkDomain - mne?: NetworkelementFlattenedManagedNetworkElement[] -} -export type NetworkelementAddListResponse = { - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string - responses?: GosdnnetworkelementSetResponse[] -} -export type NetworkelementSetMne = { - address?: string - pid?: string - pluginId?: string - mneName?: string - transportOption?: TransportTransportOption - gnmiSubscribePaths?: string[] - mneId?: string -} -export type NetworkElementServiceAddListBody = { - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string - mne?: NetworkelementSetMne[] -} -export type NetworkelementSetPathListResponse = { - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string - responses?: GosdnnetworkelementSetResponse[] -} -export type NetworkelementApiOperation = - | 'API_OPERATION_UNSPECIFIED' - | 'API_OPERATION_UPDATE' - | 'API_OPERATION_REPLACE' - | 'API_OPERATION_DELETE' -export type NetworkelementChangeRequest = { - mneid?: string - path?: GnmiPath - value?: GnmiTypedValue - apiOp?: NetworkelementApiOperation -} -export type NetworkElementServiceSetPathListBody = { - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string - changeRequest?: NetworkelementChangeRequest[] -} -export type GosdnnetworkelementDeleteResponse = { - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string -} -export type NetworkelementGetIntendedPathResponse = { - timestamp?: string - pnd?: PndPrincipalNetworkDomain - mneNotification?: NotificationIsAReUsableMessageThatIsUsedToEncodeDataFromTheTargetToTheClientANotificationCarriesTwoTypesOfChangesToTheDataTreeDeletedValuesDeleteASetOfPathsThatHaveBeenRemovedFromTheDataTreeUpdatedValuesUpdateASetOfPathValuePairsIndicatingThePathWhoseValueHasChangedInTheDataTreeReferenceGNmiSpecificationSection21[] -} -export type NetworkelementGetPathResponse = { - /** Timestamp in nanoseconds since Epoch. */ - timestamp?: string - pnd?: PndPrincipalNetworkDomain - mneNotification?: NotificationIsAReUsableMessageThatIsUsedToEncodeDataFromTheTargetToTheClientANotificationCarriesTwoTypesOfChangesToTheDataTreeDeletedValuesDeleteASetOfPathsThatHaveBeenRemovedFromTheDataTreeUpdatedValuesUpdateASetOfPathValuePairsIndicatingThePathWhoseValueHasChangedInTheDataTreeReferenceGNmiSpecificationSection21[] -} -export type AppAppRegisterResponse = { - timestamp?: string - queueconnection?: string -} -export type AppAppRegisterRequest = { - timestamp?: string - appname?: string - token?: string -} -export type GosdnrbacRole = { - id?: string - name?: string - description?: string - permissions?: string[] -} -export type RbacGetRolesResponse = { - timestamp?: string - roles?: GosdnrbacRole[] -} -export type RbacCreateRolesResponse = { - timestamp?: string -} -export type CreateRoles = { - timestamp?: string - roles?: GosdnrbacRole[] -} -export type RbacDeleteRolesResponse = { - timestamp?: string -} -export type RbacDeletePermissionsForRoleResponse = { - timestamp?: string -} -export type RbacGetRoleResponse = { - timestamp?: string - role?: GosdnrbacRole -} -export type RbacUpdateRolesResponse = { - timestamp?: string -} -export type UpdateRoles = { - timestamp?: string - roles?: GosdnrbacRole[] -} -export type TopologyRoute = { - id?: string - targetIPRange?: string - nextHopIP?: string - portID?: string - metric?: string -} -export type TopologyRoutingTable = { - id?: string - nodeID?: string - routes?: TopologyRoute[] - metadata?: ConflictMetadata -} -export type TopologyGetRoutesResponse = { - timestamp?: string - routingTables?: TopologyRoutingTable[] -} -export type TopologyAddRoutingTableResponse = { - timestamp?: string -} -export type TopologyAddRoutingTableRequest = { - timestamp?: string - routingTable?: TopologyRoutingTable -} -export type TopologyDeleteRoutesResponse = { - timestamp?: string -} -export type TopologyNode = { - id?: string - name?: string - metadata?: ConflictMetadata -} -export type GosdntopologyConfiguration = { - ip?: string - prefixLength?: string -} -export type TopologyPort = { - id?: string - name?: string - configuration?: GosdntopologyConfiguration - metadata?: ConflictMetadata -} -export type TopologyLink = { - id?: string - name?: string - sourceNode?: TopologyNode - targetNode?: TopologyNode - sourcePort?: TopologyPort - targetPort?: TopologyPort - metadata?: ConflictMetadata -} -export type TopologyTopology = { - links?: TopologyLink[] -} -export type TopologyGetTopologyResponse = { - timestamp?: string - toplogy?: TopologyTopology -} -export type TopologyAddLinkResponse = { - timestamp?: string -} -export type TopologyAddLinkRequest = { - timestamp?: string - link?: TopologyLink -} -export type TopologyDeleteLinkResponse = { - timestamp?: string -} -export type TopologyUpdateLinkResponse = { - timestamp?: string -} -export type TopologyUpdateLinkRequest = { - timestamp?: string - link?: TopologyLink -} -export type RbacUser = { - id?: string - name?: string - roles?: { - [key: string]: string - } - password?: string - token?: string - metadata?: ConflictMetadata -} -export type RbacGetUsersResponse = { - timestamp?: string - user?: RbacUser[] -} -export type RbacCreateUsersResponse = { - timestamp?: string -} -export type CreateUsers = { - timestamp?: string - user?: RbacUser[] -} -export type RbacDeleteUsersResponse = { - timestamp?: string -} -export type RbacGetUserResponse = { - timestamp?: string - user?: RbacUser -} -export type RbacUpdateUsersResponse = { - timestamp?: string -} -export type RbacUpdateUser = { - id?: string - name?: string - roles?: { - [key: string]: string - } - password?: string - token?: string - metadata?: ConflictMetadata -} -export type UpdateUsers = { - timestamp?: string - user?: RbacUpdateUser[] -} -export const { - useAppServiceDeregisterMutation, - useConfigurationManagementServiceExportSdnConfigQuery, - useConfigurationManagementServiceImportSdnConfigMutation, - useAuthServiceLoginMutation, - useAuthServiceLogoutMutation, - useNetworkElementServiceUpdateMutation, - usePndServiceGetPndQuery, - usePndServiceGetPndListQuery, - usePndServiceCreatePndListMutation, - usePndServiceDeletePndMutation, - useNetworkElementServiceGetChangeListQuery, - useNetworkElementServiceSetChangeListMutation, - useNetworkElementServiceGetChangeQuery, - useNetworkElementServiceGetQuery, - useNetworkElementServiceGetAllFlattenedQuery, - useNetworkElementServiceAddListMutation, - useNetworkElementServiceSetPathListMutation, - useNetworkElementServiceDeleteMutation, - useNetworkElementServiceGetIntendedPathQuery, - useNetworkElementServiceGetPathQuery, - useAppServiceRegisterMutation, - useRoleServiceGetRolesQuery, - useRoleServiceCreateRolesMutation, - useRoleServiceDeleteRolesMutation, - useRoleServiceDeletePermissionsForRoleMutation, - useRoleServiceGetRoleQuery, - useRoleServiceUpdateRolesMutation, - useRoutingTableServiceGetRoutesQuery, - useRoutingTableServiceAddRoutingTableMutation, - useRoutingTableServiceDeleteRouteMutation, - useTopologyServiceGetTopologyQuery, - useTopologyServiceAddLinkMutation, - useTopologyServiceDeleteLinkMutation, - useTopologyServiceUpdateLinkMutation, - useUserServiceGetUsersQuery, - useUserServiceCreateUsersMutation, - useUserServiceDeleteUsersMutation, - useUserServiceGetUserQuery, - useUserServiceUpdateUsersMutation, -} = injectedRtkApi diff --git a/react-ui/src/components/view/login/login.tsx b/react-ui/src/components/view/login/login.tsx index d86ed0819..919aa4401 100644 --- a/react-ui/src/components/view/login/login.tsx +++ b/react-ui/src/components/view/login/login.tsx @@ -8,32 +8,21 @@ import useLoginViewModel from '@viewmodel/login.viewmodel' const LoginPage = () => { const { t } = useTranslation('common') - const { checked, valid, login } = useLoginViewModel(); + const { valid, login, handleErrorMessageRendering } = useLoginViewModel(); + const usernameRef = useRef<HTMLInputElement>(null) const passwordRef = useRef<HTMLInputElement>(null) const triggerLogin = (event: React.FormEvent<HTMLFormElement>) => { event.preventDefault(); - const username = usernameRef.current?.value; - const password = passwordRef.current?.value; - - if (!username || !password) { - return; - } + const username = usernameRef.current!.value; + const password = passwordRef.current!.value; login(username, password); } - const handleErrorMessageRendering = () => { - if (!checked || valid) { - return; - } - - return ( - <div className="danger-box">{t('login.form.failed')}</div> - ) - } + const invalidCredentials = (<div className="danger-box">{t('login.form.failed')}</div>) return ( <Container className="vh-100 d-flex flex-column justify-content-center login-container"> @@ -44,9 +33,9 @@ const LoginPage = () => { <Col md={6} sm={10} className="c-box p-4"> <h1 className="text-center h2">goSDN - Web</h1> - {handleErrorMessageRendering()} + {handleErrorMessageRendering(invalidCredentials)} - <Form className="mt-4" noValidate validated={checked} onSubmit={triggerLogin}> + <Form className="mt-4" noValidate validated={valid} onSubmit={triggerLogin}> <Form.Group className="mb-3" controlId="loginForm.username" @@ -56,6 +45,7 @@ const LoginPage = () => { type="text" ref={usernameRef} required + autoComplete='on' /> <Form.Control.Feedback type="invalid"> {t('global.form.empty_field')} diff --git a/react-ui/src/components/view_model/login.viewmodel.ts b/react-ui/src/components/view_model/login.viewmodel.ts index d69fa98d6..341c9933f 100644 --- a/react-ui/src/components/view_model/login.viewmodel.ts +++ b/react-ui/src/components/view_model/login.viewmodel.ts @@ -1,10 +1,11 @@ -import { AuthServiceLoginApiArg, useAuthServiceLoginMutation } from "@api/api"; -import { setLoginFormValidity } from "@reducer/login.reducer"; +import { AuthServiceLoginApiArg, AuthServiceLoginApiResponse, useAuthServiceLoginMutation } from "@api/api"; +import { LoginFormFields, setLoginFormFields, test } from '@reducer/login.reducer'; +import { setToken } from "@reducer/user.reducer"; import { useDispatch, useSelector } from "react-redux"; import { AppDispatch, RootState } from "src/stores"; export default function useLoginViewModel() { - const {valid, checked} = useSelector((state: RootState) => state.loginPageReducer); + const { form, backendResponse } = useSelector((state: RootState) => state.loginPageReducer); const dispatch = useDispatch<AppDispatch>(); const [ @@ -12,8 +13,12 @@ export default function useLoginViewModel() { ] = useAuthServiceLoginMutation() - const isInputValid = (username: string | undefined, password: string | undefined): boolean => { - return !!username && !!password; + const handleErrorMessageRendering = (renderError: JSX.Element): JSX.Element | null => { + if (form.valid && !backendResponse.valid) { + return renderError; + } + + return null; } /** @@ -22,10 +27,10 @@ export default function useLoginViewModel() { const getAuthPayload = (username: string, password: string): AuthServiceLoginApiArg => { const payload: AuthServiceLoginApiArg = { rbacLoginRequest: { - username: username, + username, pwd: password, timestamp: new Date().getTime().toString(), - } + }, } return payload; @@ -37,22 +42,37 @@ export default function useLoginViewModel() { * @description The fields are getting validated against null values * @param event Submit event */ - const login = (username: string, password: string) => { - const inputInvalid = !isInputValid(username, password); - dispatch(setLoginFormValidity(inputInvalid)) - if (inputInvalid) { - return; + const loginHandler = (username: string | undefined, password: string | undefined) => { + const loginFormFields: LoginFormFields = { + username: username, + password: password } + + dispatch(setLoginFormFields(loginFormFields)); + + // don´t execute it here, execute it by subscribing to the store + //executeLogin(username!, password!); + } - const authPayload = getAuthPayload(username!, password!); - sendLogin(authPayload).unwrap() - .then((payload) => console.log('fulfilled', payload)) - .catch((error) => console.error('rejected', error)); + const executeLogin = (username: string, password: string) => { + const authPayload = getAuthPayload(username, password); + + sendLogin(authPayload).unwrap().then((response: AuthServiceLoginApiResponse) => { + if (!response.token) { + // reset the action by calling the reset hook + throw Error("Response is successful but no token was provided. Expected response {token: '<jwt-token>'}"); + } + + dispatch(setToken(response.token)); + }).catch((error) => { + // determine whether 500 or 401 err + }); } + return { - login, - valid, - checked + login: loginHandler, + valid: backendResponse.valid, + handleErrorMessageRendering } } diff --git a/react-ui/src/index.tsx b/react-ui/src/index.tsx index 0bd142250..89858eea3 100644 --- a/react-ui/src/index.tsx +++ b/react-ui/src/index.tsx @@ -15,7 +15,9 @@ import './i18n/config' import { I18nextProvider } from 'react-i18next' import i18next from 'i18next' import { Provider } from 'react-redux' -import { store } from './stores' +import { persistor, store } from './stores' +import { ToastContainer } from 'react-toastify' +import { PersistGate } from 'redux-persist/integration/react' const root = ReactDOM.createRoot(document.getElementById('root') as Container) @@ -31,12 +33,21 @@ const router = createBrowserRouter( ) ) +const installToastify = () => { + return ( + <ToastContainer /> + ) +} + root.render( <React.StrictMode> <Provider store={store}> - <I18nextProvider i18n={i18next}> - <RouterProvider router={router} /> - </I18nextProvider> + <PersistGate loading={null} persistor={persistor}> + <I18nextProvider i18n={i18next}> + {installToastify()} + <RouterProvider router={router} /> + </I18nextProvider> + </PersistGate> </Provider> </React.StrictMode> ) diff --git a/react-ui/src/router.tsx b/react-ui/src/router.tsx deleted file mode 100644 index b67113bd7..000000000 --- a/react-ui/src/router.tsx +++ /dev/null @@ -1,169 +0,0 @@ -import { - BrowserRouter as Router, - Route, - Link, - useLocation, - Routes -} from "react-router-dom"; - -// This example has 3 pages: a public page, a protected -// page, and a login screen. In order to see the protected -// page, you must first login. Pretty standard stuff. -// -// First, visit the public page. Then, visit the protected -// page. You're not yet logged in, so you are redirected -// to the login page. After you login, you are redirected -// back to the protected page. -// -// Notice the URL change each time. If you click the back -// button at this point, would you expect to go back to the -// login page? No! You're already logged in. Try it out, -// and you'll see you go back to the page you visited -// just *before* logging in, the public page. - -export default function AuthExample() { - return ( - <ProvideAuth> - <Router> - <div> - <AuthButton /> - - <ul> - <li> - <Link to="/public">Public Page</Link> - </li> - <li> - <Link to="/protected">Protected Page</Link> - </li> - </ul> - - <Routes> - <Route path="/public"> - <PublicPage /> - </Route> - <Route path="/login"> - <LoginPage /> - </Route> - <PrivateRoute path="/protected"> - <ProtectedPage /> - </PrivateRoute> - </Routes> - </div> - </Router> - </ProvideAuth> - ); -} - -/** For more details on - * `authContext`, `ProvideAuth`, `useAuth` and `useProvideAuth` - * refer to: https://usehooks.com/useAuth/ - */ -const authContext = createContext(); - -function ProvideAuth({ children }) { - const auth = useProvideAuth(); - return ( - <authContext.Provider value={auth}> - {children} - </authContext.Provider> - ); -} - -function useAuth() { - return useContext(authContext); -} - -function useProvideAuth() { - const [user, setUser] = useState(null); - - const signin = cb => { - return fakeAuth.signin(() => { - setUser("user"); - cb(); - }); - }; - - const signout = cb => { - return fakeAuth.signout(() => { - setUser(null); - cb(); - }); - }; - - return { - user, - signin, - signout - }; -} - -function AuthButton() { - let history = useHistory(); - let auth = useAuth(); - - return auth.user ? ( - <p> - Welcome!{" "} - <button - onClick={() => { - auth.signout(() => history.push("/")); - }} - > - Sign out - </button> - </p> - ) : ( - <p>You are not logged in.</p> - ); -} - -// A wrapper for <Route> that redirects to the login -// screen if you're not yet authenticated. -function PrivateRoute({ children, ...rest }) { - let auth = useAuth(); - return ( - <Route - {...rest} - render={({ location }) => - auth.user ? ( - children - ) : ( - <Redirect - to={{ - pathname: "/login", - state: { from: location } - }} - /> - ) - } - /> - ); -} - -function PublicPage() { - return <h3>Public</h3>; -} - -function ProtectedPage() { - return <h3>Protected</h3>; -} - -function LoginPage() { - let history = useHistory(); - let location = useLocation(); - let auth = useAuth(); - - let { from } = location.state || { from: { pathname: "/" } }; - let login = () => { - auth.signin(() => { - history.replace(from); - }); - }; - - return ( - <div> - <p>You must log in to view the page at {from.pathname}</p> - <button onClick={login}>Log in</button> - </div> - ); -} \ No newline at end of file diff --git a/react-ui/src/stores/api.store.ts b/react-ui/src/stores/api.store.ts index 5f9077aee..a63a9d772 100644 --- a/react-ui/src/stores/api.store.ts +++ b/react-ui/src/stores/api.store.ts @@ -1,7 +1,18 @@ import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react' +import { RootState } from '.' // initialize an empty api service that we'll inject endpoints into later as needed export const emptySplitApi = createApi({ - baseQuery: fetchBaseQuery({ baseUrl: '/api' }), + baseQuery: fetchBaseQuery({ + baseUrl: '/api', prepareHeaders: (headers, { getState }) => { + const token = (getState() as RootState).userReducer.token + + if (token) { + headers.set('authorization', `Bearer ${token}`) + } + + return headers + }, + }), endpoints: () => ({}), }) \ No newline at end of file diff --git a/react-ui/src/stores/index.ts b/react-ui/src/stores/index.ts index 26d3cde46..ae1890f35 100644 --- a/react-ui/src/stores/index.ts +++ b/react-ui/src/stores/index.ts @@ -1,24 +1,27 @@ -import { combineReducers } from 'redux' -import loginPageReducer from './reducer/login.reducer' import { configureStore } from '@reduxjs/toolkit' -import { emptySplitApi } from './api.store' import { setupListeners } from '@reduxjs/toolkit/query' - -const getReducers = () => { - return combineReducers({ - loginPageReducer, - [emptySplitApi.reducerPath]: emptySplitApi.reducer - }) -} +import { FLUSH, PAUSE, PERSIST, PURGE, REGISTER, REHYDRATE } from 'redux-persist' +import persistStore from 'redux-persist/es/persistStore' +import { emptySplitApi } from './api.store' +import { rtkQueryErrorLogger } from './middleware/devLogging.middleware' +import persistedReducer from './persist.store' -export const store = configureStore({ - reducer: getReducers(), - middleware: (getDefaultMiddleware) => - getDefaultMiddleware().concat(emptySplitApi.middleware), +export const store = configureStore({ + reducer: persistedReducer, + middleware: (getDefaultMiddleware) => + getDefaultMiddleware({ + serializableCheck: { + ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER], + }, + }).concat(emptySplitApi.middleware, rtkQueryErrorLogger), }) +export const persistor = persistStore(store) + +// TODO setupListeners(store.dispatch) export type RootState = ReturnType<typeof store.getState>; +export type MyState = ReturnType<typeof persistedReducer>; export type AppDispatch = typeof store.dispatch; \ No newline at end of file diff --git a/react-ui/src/stores/middleware/devLogging.middleware.ts b/react-ui/src/stores/middleware/devLogging.middleware.ts new file mode 100644 index 000000000..2e58a2ea5 --- /dev/null +++ b/react-ui/src/stores/middleware/devLogging.middleware.ts @@ -0,0 +1,24 @@ +import { isRejectedWithValue } from "@reduxjs/toolkit" +import { toast } from "react-toastify" +import { Middleware, MiddlewareAPI } from "redux" + +const environment = process.env.NODE_ENV || 'prod'; + +// TODO check env before creation of this middleware + +/** + * Log a warning and show a toast! + */ +export const rtkQueryErrorLogger: Middleware = (api: MiddlewareAPI) => (next) => (action) => { + // RTK Query uses `createAsyncThunk` from redux-toolkit under the hood, so we're able to utilize these matchers! + if (environment !== 'prod' && isRejectedWithValue(action)) { + console.warn(action.error) + toast.warn('data' in action.error + ? (action.error.data as { message: string }).message + : action.error.message, { + + }) + } + + return next(action) +} \ No newline at end of file diff --git a/react-ui/src/stores/persist.store.ts b/react-ui/src/stores/persist.store.ts new file mode 100644 index 000000000..53e17bffd --- /dev/null +++ b/react-ui/src/stores/persist.store.ts @@ -0,0 +1,25 @@ +import loginReducer from "@reducer/login.reducer"; +import userReducer from "@reducer/user.reducer"; +import { combineReducers } from "redux"; +import { persistReducer } from "redux-persist"; +import storage from "redux-persist/es/storage"; +import { emptySplitApi } from "./api.store"; + + +/** local storage config */ +const rootPersistConfig = { + key: 'root', + storage, + blacklist: [emptySplitApi.reducerPath], +} + + +const rootReducer = combineReducers({ + userReducer: userReducer, + loginPageReducer: loginReducer, + [emptySplitApi.reducerPath]: emptySplitApi.reducer, +}) + +const persistedReducer = persistReducer(rootPersistConfig, rootReducer) + +export default persistedReducer; \ No newline at end of file diff --git a/react-ui/src/stores/reducer/login.reducer.ts b/react-ui/src/stores/reducer/login.reducer.ts index ec41bd1a3..f0e35cdb1 100644 --- a/react-ui/src/stores/reducer/login.reducer.ts +++ b/react-ui/src/stores/reducer/login.reducer.ts @@ -1,26 +1,52 @@ import { PayloadAction, createSlice } from '@reduxjs/toolkit'; -export interface PageLoginState { - valid: boolean, - checked: boolean +export interface LoginFormFields { + username?: string, + password?: string } +export interface PageLoginState { + form: { + valid: boolean, + fields: LoginFormFields + }, + backendResponse: { + valid: boolean, + send: boolean + } +} const initialState: PageLoginState = { - valid: false, - checked: false, + backendResponse: { + valid: false, + send: false + }, + form: { + valid: false, + fields: { + username: '', + password: '' + } + } } - const loginSlice = createSlice({ name: 'page_login', initialState, reducers: { - setLoginFormValidity: (state, action: PayloadAction<boolean>) => - {state.valid = action.payload, state.checked = true}, + setLoginBackendCheck: (state, action: PayloadAction<boolean>) => { state.backendResponse.send = action.payload }, + setLoginFormFields: (state, action: PayloadAction<LoginFormFields>) => { + const valid = !!action.payload.username && !!action.payload.password; + state.form.valid = valid; + + if (valid) { + state.form.fields = action.payload + } + }, }, }) -export const { setLoginFormValidity } = loginSlice.actions +export const { setLoginBackendCheck } = loginSlice.actions +export const { setLoginFormFields } = loginSlice.actions export default loginSlice.reducer diff --git a/react-ui/src/stores/reducer/user.reducer.ts b/react-ui/src/stores/reducer/user.reducer.ts new file mode 100644 index 000000000..ef540c334 --- /dev/null +++ b/react-ui/src/stores/reducer/user.reducer.ts @@ -0,0 +1,24 @@ +import { PayloadAction, createSlice } from '@reduxjs/toolkit'; + +export interface UserSliceState { + token: string, +} + + +const initialState: UserSliceState = { + token: '' +} + + +const userSlice = createSlice({ + name: 'user', + initialState, + reducers: { + setToken: (state, action: PayloadAction<string>) => { state.token = action.payload }, + }, +}) + +export const { setToken } = userSlice.actions + +export default userSlice.reducer +export const userReducerPath = userSlice.reducerPath; \ No newline at end of file diff --git a/react-ui/src/style/index.scss b/react-ui/src/style/index.scss index 47dd70b60..e210c8415 100644 --- a/react-ui/src/style/index.scss +++ b/react-ui/src/style/index.scss @@ -2,3 +2,4 @@ @import './colors.scss'; @import './utils.scss'; @import './box.scss'; +@import './toast.scss'; diff --git a/react-ui/src/style/toast.scss b/react-ui/src/style/toast.scss new file mode 100644 index 000000000..6b6ba4d67 --- /dev/null +++ b/react-ui/src/style/toast.scss @@ -0,0 +1 @@ +@import 'react-toastify/dist/ReactToastify.css'; \ No newline at end of file diff --git a/react-ui/yarn.lock b/react-ui/yarn.lock index 914516cda..e2d8790dc 100644 --- a/react-ui/yarn.lock +++ b/react-ui/yarn.lock @@ -3922,6 +3922,11 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" +clsx@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" + integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -8941,6 +8946,13 @@ react-scripts@5.0.1: optionalDependencies: fsevents "^2.3.2" +react-toastify@^10.0.5: + version "10.0.5" + resolved "https://registry.yarnpkg.com/react-toastify/-/react-toastify-10.0.5.tgz#6b8f8386060c5c856239f3036d1e76874ce3bd1e" + integrity sha512-mNKt2jBXJg4O7pSdbNUfDdTsK9FIdikfsIE/yUCxbAEXl4HMyJaivrVFcn3Elvt5xvCQYhUZm+hqTIu1UXM3Pw== + dependencies: + clsx "^2.1.0" + react-transition-group@^4.4.5: version "4.4.5" resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" @@ -9009,6 +9021,11 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" +redux-persist@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/redux-persist/-/redux-persist-6.0.0.tgz#b4d2972f9859597c130d40d4b146fecdab51b3a8" + integrity sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ== + redux-thunk@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-3.1.0.tgz#94aa6e04977c30e14e892eae84978c1af6058ff3" -- GitLab From dda15ff17492ec9a9f16482212ea38fdb444a805 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Tue, 6 Aug 2024 14:44:00 +0200 Subject: [PATCH 12/44] minor update dependencies --- react-ui/package.json | 1 + react-ui/yarn.lock | 2916 +++++++++++++++++++---------------------- 2 files changed, 1362 insertions(+), 1555 deletions(-) diff --git a/react-ui/package.json b/react-ui/package.json index 0484b6822..4338429b3 100644 --- a/react-ui/package.json +++ b/react-ui/package.json @@ -18,6 +18,7 @@ "react-scripts": "5.0.1", "react-toastify": "^10.0.5", "redux": "^5.0.1", + "redux-observable": "^3.0.0-rc.2", "redux-persist": "^6.0.0", "web-vitals": "^2.1.4" }, diff --git a/react-ui/yarn.lock b/react-ui/yarn.lock index e2d8790dc..5bfb5210f 100644 --- a/react-ui/yarn.lock +++ b/react-ui/yarn.lock @@ -3,9 +3,9 @@ "@adobe/css-tools@^4.0.1": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.3.tgz#90749bde8b89cd41764224f5aac29cd4138f75ff" - integrity sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ== + version "4.4.0" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.4.0.tgz#728c484f4e10df03d5a3acd0d8adcbbebff8ad63" + integrity sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ== "@alloc/quick-lru@^5.2.0": version "5.2.0" @@ -61,68 +61,34 @@ ajv-draft-04 "^1.0.0" call-me-maybe "^1.0.1" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2", "@babel/code-frame@^7.8.3": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" - integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== - dependencies: - "@babel/highlight" "^7.24.2" - picocolors "^1.0.0" - -"@babel/code-frame@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.6.tgz#ab88da19344445c3d8889af2216606d3329f3ef2" - integrity sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.8.3": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" + integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== dependencies: - "@babel/highlight" "^7.24.6" + "@babel/highlight" "^7.24.7" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" - integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== - -"@babel/compat-data@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.6.tgz#b3600217688cabb26e25f8e467019e66d71b7ae2" - integrity sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ== - -"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" - integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.24.5" - "@babel/helpers" "^7.24.5" - "@babel/parser" "^7.24.5" - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.5" - "@babel/types" "^7.24.5" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.2.tgz#e41928bd33475305c586f6acbbb7e3ade7a6f7f5" + integrity sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ== -"@babel/core@^7.24.5": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.6.tgz#8650e0e4b03589ebe886c4e4a60398db0a7ec787" - integrity sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ== +"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.24.5", "@babel/core@^7.7.2", "@babel/core@^7.8.0": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.2.tgz#ed8eec275118d7613e77a352894cd12ded8eba77" + integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.6" - "@babel/generator" "^7.24.6" - "@babel/helper-compilation-targets" "^7.24.6" - "@babel/helper-module-transforms" "^7.24.6" - "@babel/helpers" "^7.24.6" - "@babel/parser" "^7.24.6" - "@babel/template" "^7.24.6" - "@babel/traverse" "^7.24.6" - "@babel/types" "^7.24.6" + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.0" + "@babel/helper-compilation-targets" "^7.25.2" + "@babel/helper-module-transforms" "^7.25.2" + "@babel/helpers" "^7.25.0" + "@babel/parser" "^7.25.0" + "@babel/template" "^7.25.0" + "@babel/traverse" "^7.25.2" + "@babel/types" "^7.25.2" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -130,95 +96,73 @@ semver "^6.3.1" "@babel/eslint-parser@^7.16.3": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.24.5.tgz#3b0f7d383a540329a30a6a9937cfc89461d26217" - integrity sha512-gsUcqS/fPlgAw1kOtpss7uhY6E9SFFANQ6EFX5GTvzUwaV0+sGaZWk6xq22MOdeT9wfxyokW3ceCUvOiRtZciQ== + version "7.25.1" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.25.1.tgz#469cee4bd18a88ff3edbdfbd227bd20e82aa9b82" + integrity sha512-Y956ghgTT4j7rKesabkh5WeqgSFZVFwaPR0IWFm7KFHFmmJ4afbG49SmfW4S+GyRPx0Dy5jxEWA5t0rpxfElWg== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.24.5", "@babel/generator@^7.7.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3" - integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA== - dependencies: - "@babel/types" "^7.24.5" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^2.5.1" - -"@babel/generator@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.6.tgz#dfac82a228582a9d30c959fe50ad28951d4737a7" - integrity sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg== +"@babel/generator@^7.25.0", "@babel/generator@^7.7.2": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.0.tgz#f858ddfa984350bc3d3b7f125073c9af6988f18e" + integrity sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw== dependencies: - "@babel/types" "^7.24.6" + "@babel/types" "^7.25.0" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" - integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== +"@babel/helper-annotate-as-pure@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz#5373c7bc8366b12a033b4be1ac13a206c6656aab" + integrity sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.24.7" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" - integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz#37d66feb012024f2422b762b9b2a7cfe27c7fba3" + integrity sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA== dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== - dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" - browserslist "^4.22.2" - lru-cache "^5.1.1" - semver "^6.3.1" + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" -"@babel/helper-compilation-targets@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz#4a51d681f7680043d38e212715e2a7b1ad29cb51" - integrity sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg== +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7", "@babel/helper-compilation-targets@^7.24.8", "@babel/helper-compilation-targets@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz#e1d9410a90974a3a5a66e84ff55ef62e3c02d06c" + integrity sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw== dependencies: - "@babel/compat-data" "^7.24.6" - "@babel/helper-validator-option" "^7.24.6" - browserslist "^4.22.2" + "@babel/compat-data" "^7.25.2" + "@babel/helper-validator-option" "^7.24.8" + browserslist "^4.23.1" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.1", "@babel/helper-create-class-features-plugin@^7.24.4", "@babel/helper-create-class-features-plugin@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz#7d19da92c7e0cd8d11c09af2ce1b8e7512a6e723" - integrity sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-member-expression-to-functions" "^7.24.5" - "@babel/helper-optimise-call-expression" "^7.22.5" - "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.24.5" +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.7", "@babel/helper-create-class-features-plugin@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz#a109bf9c3d58dfed83aaf42e85633c89f43a6253" + integrity sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-member-expression-to-functions" "^7.24.8" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/helper-replace-supers" "^7.25.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/traverse" "^7.25.0" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" - integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.24.7", "@babel/helper-create-regexp-features-plugin@^7.25.0": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz#24c75974ed74183797ffd5f134169316cd1808d9" + integrity sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-annotate-as-pure" "^7.24.7" regexpu-core "^5.3.1" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.2": +"@babel/helper-define-polyfill-provider@^0.6.2": version "0.6.2" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== @@ -229,276 +173,165 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-environment-visitor@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz#ac7ad5517821641550f6698dd5468f8cef78620d" - integrity sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g== - -"@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-function-name@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz#cebdd063386fdb95d511d84b117e51fc68fec0c8" - integrity sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w== - dependencies: - "@babel/template" "^7.24.6" - "@babel/types" "^7.24.6" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-hoist-variables@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz#8a7ece8c26756826b6ffcdd0e3cf65de275af7f9" - integrity sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA== - dependencies: - "@babel/types" "^7.24.6" - -"@babel/helper-member-expression-to-functions@^7.23.0", "@babel/helper-member-expression-to-functions@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz#5981e131d5c7003c7d1fa1ad49e86c9b097ec475" - integrity sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA== - dependencies: - "@babel/types" "^7.24.5" - -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.24.1", "@babel/helper-module-imports@^7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" - integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== - dependencies: - "@babel/types" "^7.24.0" - -"@babel/helper-module-imports@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz#65e54ffceed6a268dc4ce11f0433b82cfff57852" - integrity sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g== - dependencies: - "@babel/types" "^7.24.6" - -"@babel/helper-module-transforms@^7.23.3", "@babel/helper-module-transforms@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545" - integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.24.3" - "@babel/helper-simple-access" "^7.24.5" - "@babel/helper-split-export-declaration" "^7.24.5" - "@babel/helper-validator-identifier" "^7.24.5" - -"@babel/helper-module-transforms@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.6.tgz#22346ed9df44ce84dee850d7433c5b73fab1fe4e" - integrity sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA== - dependencies: - "@babel/helper-environment-visitor" "^7.24.6" - "@babel/helper-module-imports" "^7.24.6" - "@babel/helper-simple-access" "^7.24.6" - "@babel/helper-split-export-declaration" "^7.24.6" - "@babel/helper-validator-identifier" "^7.24.6" - -"@babel/helper-optimise-call-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" - integrity sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.24.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a" - integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ== - -"@babel/helper-plugin-utils@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.6.tgz#fa02a32410a15a6e8f8185bcbf608f10528d2a24" - integrity sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg== - -"@babel/helper-remap-async-to-generator@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" - integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-wrap-function" "^7.22.20" - -"@babel/helper-replace-supers@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz#7085bd19d4a0b7ed8f405c1ed73ccb70f323abc1" - integrity sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-member-expression-to-functions" "^7.23.0" - "@babel/helper-optimise-call-expression" "^7.22.5" - -"@babel/helper-simple-access@^7.22.5", "@babel/helper-simple-access@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz#50da5b72f58c16b07fbd992810be6049478e85ba" - integrity sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ== - dependencies: - "@babel/types" "^7.24.5" - -"@babel/helper-simple-access@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.6.tgz#1d6e04d468bba4fc963b4906f6dac6286cfedff1" - integrity sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g== - dependencies: - "@babel/types" "^7.24.6" - -"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" - integrity sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6" - integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q== - dependencies: - "@babel/types" "^7.24.5" - -"@babel/helper-split-export-declaration@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz#e830068f7ba8861c53b7421c284da30ae656d7a3" - integrity sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw== - dependencies: - "@babel/types" "^7.24.6" - -"@babel/helper-string-parser@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" - integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== - -"@babel/helper-string-parser@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz#28583c28b15f2a3339cfafafeaad42f9a0e828df" - integrity sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q== - -"@babel/helper-validator-identifier@^7.22.20", "@babel/helper-validator-identifier@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62" - integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== - -"@babel/helper-validator-identifier@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz#08bb6612b11bdec78f3feed3db196da682454a5e" - integrity sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw== - -"@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helper-validator-option@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz#59d8e81c40b7d9109ab7e74457393442177f460a" - integrity sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ== - -"@babel/helper-wrap-function@^7.22.20": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.24.5.tgz#335f934c0962e2c1ed1fb9d79e06a56115067c09" - integrity sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw== - dependencies: - "@babel/helper-function-name" "^7.23.0" - "@babel/template" "^7.24.0" - "@babel/types" "^7.24.5" - -"@babel/helpers@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a" - integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q== - dependencies: - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.5" - "@babel/types" "^7.24.5" - -"@babel/helpers@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.6.tgz#cd124245299e494bd4e00edda0e4ea3545c2c176" - integrity sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA== - dependencies: - "@babel/template" "^7.24.6" - "@babel/types" "^7.24.6" - -"@babel/highlight@^7.24.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e" - integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.5" +"@babel/helper-member-expression-to-functions@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz#6155e079c913357d24a4c20480db7c712a5c3fb6" + integrity sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA== + dependencies: + "@babel/traverse" "^7.24.8" + "@babel/types" "^7.24.8" + +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" + integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-module-transforms@^7.24.7", "@babel/helper-module-transforms@^7.24.8", "@babel/helper-module-transforms@^7.25.0", "@babel/helper-module-transforms@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz#ee713c29768100f2776edf04d4eb23b8d27a66e6" + integrity sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== + dependencies: + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/traverse" "^7.25.2" + +"@babel/helper-optimise-call-expression@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz#8b0a0456c92f6b323d27cfd00d1d664e76692a0f" + integrity sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A== + dependencies: + "@babel/types" "^7.24.7" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.24.8", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878" + integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== + +"@babel/helper-remap-async-to-generator@^7.24.7", "@babel/helper-remap-async-to-generator@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz#d2f0fbba059a42d68e5e378feaf181ef6055365e" + integrity sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-wrap-function" "^7.25.0" + "@babel/traverse" "^7.25.0" + +"@babel/helper-replace-supers@^7.24.7", "@babel/helper-replace-supers@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz#ff44deac1c9f619523fe2ca1fd650773792000a9" + integrity sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.24.8" + "@babel/helper-optimise-call-expression" "^7.24.7" + "@babel/traverse" "^7.25.0" + +"@babel/helper-simple-access@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" + integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz#5f8fa83b69ed5c27adc56044f8be2b3ea96669d9" + integrity sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ== + dependencies: + "@babel/traverse" "^7.24.7" + "@babel/types" "^7.24.7" + +"@babel/helper-string-parser@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" + integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== + +"@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== + +"@babel/helper-validator-option@^7.24.7", "@babel/helper-validator-option@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" + integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== + +"@babel/helper-wrap-function@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz#dab12f0f593d6ca48c0062c28bcfb14ebe812f81" + integrity sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ== + dependencies: + "@babel/template" "^7.25.0" + "@babel/traverse" "^7.25.0" + "@babel/types" "^7.25.0" + +"@babel/helpers@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.0.tgz#e69beb7841cb93a6505531ede34f34e6a073650a" + integrity sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw== + dependencies: + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.0" + +"@babel/highlight@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" + integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.7" chalk "^2.4.2" js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/highlight@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.6.tgz#6d610c1ebd2c6e061cade0153bf69b0590b7b3df" - integrity sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.25.0", "@babel/parser@^7.25.3": + version "7.25.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.3.tgz#91fb126768d944966263f0657ab222a642b82065" + integrity sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw== dependencies: - "@babel/helper-validator-identifier" "^7.24.6" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" - integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== + "@babel/types" "^7.25.2" -"@babel/parser@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.6.tgz#5e030f440c3c6c78d195528c3b688b101a365328" - integrity sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.3": + version "7.25.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz#dca427b45a6c0f5c095a1c639dfe2476a3daba7f" + integrity sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/traverse" "^7.25.3" -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz#4c3685eb9cd790bcad2843900fe0250c91ccf895" - integrity sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw== +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz#cd0c583e01369ef51676bdb3d7b603e17d2b3f73" + integrity sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz#b645d9ba8c2bc5b7af50f0fe949f9edbeb07c8cf" - integrity sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz#749bde80356b295390954643de7635e0dffabe73" + integrity sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz#da8261f2697f0f41b0855b91d3a20a1fbfd271d3" - integrity sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz#e4eabdd5109acc399b38d7999b2ef66fc2022f89" + integrity sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.7" -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz#1181d9685984c91d657b8ddf14f0487a6bab2988" - integrity sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw== +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz#3a82a70e7cb7294ad2559465ebcb871dfbf078fb" + integrity sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/traverse" "^7.25.0" "@babel/plugin-proposal-class-properties@^7.16.0": version "7.18.6" @@ -509,13 +342,13 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-decorators@^7.16.4": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.1.tgz#bab2b9e174a2680f0a80f341f3ec70f809f8bb4b" - integrity sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.7.tgz#7e2dcfeda4a42596b57c4c9de1f5176bbfc532e3" + integrity sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-decorators" "^7.24.1" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-decorators" "^7.24.7" "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": version "7.18.6" @@ -583,12 +416,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-decorators@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.1.tgz#71d9ad06063a6ac5430db126b5df48c70ee885fa" - integrity sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw== +"@babel/plugin-syntax-decorators@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.7.tgz#e4f8a0a8778ccec669611cd5aed1ed8e6e3a6fcf" + integrity sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" @@ -604,26 +437,26 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.1.tgz#875c25e3428d7896c87589765fc8b9d32f24bd8d" - integrity sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA== +"@babel/plugin-syntax-flow@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz#d1759e84dd4b437cf9fae69b4c06c41d7625bfb7" + integrity sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-import-assertions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz#db3aad724153a00eaac115a3fb898de544e34971" - integrity sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ== +"@babel/plugin-syntax-import-assertions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz#2a0b406b5871a20a841240586b1300ce2088a778" + integrity sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-import-attributes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz#c66b966c63b714c4eec508fcf5763b1f2d381093" - integrity sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA== +"@babel/plugin-syntax-import-attributes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz#b4f9ea95a79e6912480c4b626739f86a076624ca" + integrity sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" @@ -639,12 +472,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" - integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== +"@babel/plugin-syntax-jsx@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz#39a1fa4a7e3d3d7f34e2acc6be585b718d30e02d" + integrity sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" @@ -702,12 +535,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.24.1", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz#b3bcc51f396d15f3591683f90239de143c076844" - integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== +"@babel/plugin-syntax-typescript@^7.24.7", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz#58d458271b4d3b6bb27ee6ac9525acbb259bad1c" + integrity sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" @@ -717,498 +550,506 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz#2bf263617060c9cc45bcdbf492b8cc805082bf27" - integrity sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw== +"@babel/plugin-transform-arrow-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz#4f6886c11e423bd69f3ce51dbf42424a5f275514" + integrity sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-async-generator-functions@^7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz#8fa7ae481b100768cc9842c8617808c5352b8b89" - integrity sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg== +"@babel/plugin-transform-async-generator-functions@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz#b785cf35d73437f6276b1e30439a57a50747bddf" + integrity sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-remap-async-to-generator" "^7.25.0" "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/traverse" "^7.25.0" -"@babel/plugin-transform-async-to-generator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz#0e220703b89f2216800ce7b1c53cb0cf521c37f4" - integrity sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw== +"@babel/plugin-transform-async-to-generator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz#72a3af6c451d575842a7e9b5a02863414355bdcc" + integrity sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA== dependencies: - "@babel/helper-module-imports" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-remap-async-to-generator" "^7.24.7" -"@babel/plugin-transform-block-scoped-functions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz#1c94799e20fcd5c4d4589523bbc57b7692979380" - integrity sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg== +"@babel/plugin-transform-block-scoped-functions@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz#a4251d98ea0c0f399dafe1a35801eaba455bbf1f" + integrity sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-block-scoping@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz#89574191397f85661d6f748d4b89ee4d9ee69a2a" - integrity sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw== +"@babel/plugin-transform-block-scoping@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz#23a6ed92e6b006d26b1869b1c91d1b917c2ea2ac" + integrity sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-transform-class-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz#bcbf1aef6ba6085cfddec9fc8d58871cf011fc29" - integrity sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g== +"@babel/plugin-transform-class-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz#256879467b57b0b68c7ddfc5b76584f398cd6834" + integrity sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-class-static-block@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz#1a4653c0cf8ac46441ec406dece6e9bc590356a4" - integrity sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg== +"@babel/plugin-transform-class-static-block@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz#c82027ebb7010bc33c116d4b5044fbbf8c05484d" + integrity sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.4" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz#05e04a09df49a46348299a0e24bfd7e901129339" - integrity sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.5" - "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-split-export-declaration" "^7.24.5" +"@babel/plugin-transform-classes@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz#63122366527d88e0ef61b612554fe3f8c793991e" + integrity sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-compilation-targets" "^7.24.8" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-replace-supers" "^7.25.0" + "@babel/traverse" "^7.25.0" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz#bc7e787f8e021eccfb677af5f13c29a9934ed8a7" - integrity sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw== +"@babel/plugin-transform-computed-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz#4cab3214e80bc71fae3853238d13d097b004c707" + integrity sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/template" "^7.24.7" + +"@babel/plugin-transform-destructuring@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz#c828e814dbe42a2718a838c2a2e16a408e055550" + integrity sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/template" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-transform-destructuring@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz#80843ee6a520f7362686d1a97a7b53544ede453c" - integrity sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg== +"@babel/plugin-transform-dotall-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz#5f8bf8a680f2116a7207e16288a5f974ad47a7a0" + integrity sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw== dependencies: - "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-dotall-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz#d56913d2f12795cc9930801b84c6f8c47513ac13" - integrity sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw== +"@babel/plugin-transform-duplicate-keys@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz#dd20102897c9a2324e5adfffb67ff3610359a8ee" + integrity sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-duplicate-keys@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz#5347a797fe82b8d09749d10e9f5b83665adbca88" - integrity sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz#809af7e3339466b49c034c683964ee8afb3e2604" + integrity sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-regexp-features-plugin" "^7.25.0" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-transform-dynamic-import@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz#2a5a49959201970dd09a5fca856cb651e44439dd" - integrity sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA== +"@babel/plugin-transform-dynamic-import@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz#4d8b95e3bae2b037673091aa09cd33fecd6419f4" + integrity sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-transform-exponentiation-operator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz#6650ebeb5bd5c012d5f5f90a26613a08162e8ba4" - integrity sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw== +"@babel/plugin-transform-exponentiation-operator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz#b629ee22645f412024297d5245bce425c31f9b0d" + integrity sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-export-namespace-from@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz#f033541fc036e3efb2dcb58eedafd4f6b8078acd" - integrity sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ== +"@babel/plugin-transform-export-namespace-from@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz#176d52d8d8ed516aeae7013ee9556d540c53f197" + integrity sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-transform-flow-strip-types@^7.16.0": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.1.tgz#fa8d0a146506ea195da1671d38eed459242b2dcc" - integrity sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ== + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.2.tgz#b3aa251db44959b7a7c82abcd6b4225dec7d2258" + integrity sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-flow" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/plugin-syntax-flow" "^7.24.7" -"@babel/plugin-transform-for-of@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz#67448446b67ab6c091360ce3717e7d3a59e202fd" - integrity sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg== +"@babel/plugin-transform-for-of@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz#f25b33f72df1d8be76399e1b8f3f9d366eb5bc70" + integrity sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-function-name@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz#8cba6f7730626cc4dfe4ca2fa516215a0592b361" - integrity sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA== +"@babel/plugin-transform-function-name@^7.25.1": + version "7.25.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz#b85e773097526c1a4fc4ba27322748643f26fc37" + integrity sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA== dependencies: - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-compilation-targets" "^7.24.8" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/traverse" "^7.25.1" -"@babel/plugin-transform-json-strings@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz#08e6369b62ab3e8a7b61089151b161180c8299f7" - integrity sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ== +"@babel/plugin-transform-json-strings@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz#f3e9c37c0a373fee86e36880d45b3664cedaf73a" + integrity sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-transform-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz#0a1982297af83e6b3c94972686067df588c5c096" - integrity sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g== +"@babel/plugin-transform-literals@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz#deb1ad14fc5490b9a65ed830e025bca849d8b5f3" + integrity sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-transform-logical-assignment-operators@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz#719d8aded1aa94b8fb34e3a785ae8518e24cfa40" - integrity sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w== +"@babel/plugin-transform-logical-assignment-operators@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz#a58fb6eda16c9dc8f9ff1c7b1ba6deb7f4694cb0" + integrity sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-transform-member-expression-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz#896d23601c92f437af8b01371ad34beb75df4489" - integrity sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg== +"@babel/plugin-transform-member-expression-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz#3b4454fb0e302e18ba4945ba3246acb1248315df" + integrity sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-modules-amd@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz#b6d829ed15258536977e9c7cc6437814871ffa39" - integrity sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ== +"@babel/plugin-transform-modules-amd@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz#65090ed493c4a834976a3ca1cde776e6ccff32d7" + integrity sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg== dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-modules-commonjs@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz#e71ba1d0d69e049a22bf90b3867e263823d3f1b9" - integrity sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw== +"@babel/plugin-transform-modules-commonjs@^7.24.7", "@babel/plugin-transform-modules-commonjs@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz#ab6421e564b717cb475d6fff70ae7f103536ea3c" + integrity sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA== dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-module-transforms" "^7.24.8" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-simple-access" "^7.24.7" -"@babel/plugin-transform-modules-systemjs@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz#2b9625a3d4e445babac9788daec39094e6b11e3e" - integrity sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA== +"@babel/plugin-transform-modules-systemjs@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz#8f46cdc5f9e5af74f3bd019485a6cbe59685ea33" + integrity sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw== dependencies: - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-module-transforms" "^7.25.0" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/traverse" "^7.25.0" -"@babel/plugin-transform-modules-umd@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz#69220c66653a19cf2c0872b9c762b9a48b8bebef" - integrity sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg== +"@babel/plugin-transform-modules-umd@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz#edd9f43ec549099620df7df24e7ba13b5c76efc8" + integrity sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A== dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-module-transforms" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" - integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== +"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz#9042e9b856bc6b3688c0c2e4060e9e10b1460923" + integrity sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-new-target@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz#29c59988fa3d0157de1c871a28cd83096363cc34" - integrity sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug== +"@babel/plugin-transform-new-target@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz#31ff54c4e0555cc549d5816e4ab39241dfb6ab00" + integrity sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-nullish-coalescing-operator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz#0cd494bb97cb07d428bd651632cb9d4140513988" - integrity sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw== +"@babel/plugin-transform-nullish-coalescing-operator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz#1de4534c590af9596f53d67f52a92f12db984120" + integrity sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-numeric-separator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz#5bc019ce5b3435c1cadf37215e55e433d674d4e8" - integrity sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw== +"@babel/plugin-transform-numeric-separator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz#bea62b538c80605d8a0fac9b40f48e97efa7de63" + integrity sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-object-rest-spread@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz#f91bbcb092ff957c54b4091c86bda8372f0b10ef" - integrity sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA== +"@babel/plugin-transform-object-rest-spread@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz#d13a2b93435aeb8a197e115221cab266ba6e55d6" + integrity sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q== dependencies: - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-compilation-targets" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.24.5" + "@babel/plugin-transform-parameters" "^7.24.7" -"@babel/plugin-transform-object-super@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz#e71d6ab13483cca89ed95a474f542bbfc20a0520" - integrity sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ== +"@babel/plugin-transform-object-super@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz#66eeaff7830bba945dd8989b632a40c04ed625be" + integrity sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-replace-supers" "^7.24.7" -"@babel/plugin-transform-optional-catch-binding@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz#92a3d0efe847ba722f1a4508669b23134669e2da" - integrity sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA== +"@babel/plugin-transform-optional-catch-binding@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz#00eabd883d0dd6a60c1c557548785919b6e717b4" + integrity sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.24.1", "@babel/plugin-transform-optional-chaining@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz#a6334bebd7f9dd3df37447880d0bd64b778e600f" - integrity sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg== +"@babel/plugin-transform-optional-chaining@^7.24.7", "@babel/plugin-transform-optional-chaining@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz#bb02a67b60ff0406085c13d104c99a835cdf365d" + integrity sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw== dependencies: - "@babel/helper-plugin-utils" "^7.24.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz#5c3b23f3a6b8fed090f9b98f2926896d3153cc62" - integrity sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA== +"@babel/plugin-transform-parameters@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz#5881f0ae21018400e320fc7eb817e529d1254b68" + integrity sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA== dependencies: - "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-methods@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz#a0faa1ae87eff077e1e47a5ec81c3aef383dc15a" - integrity sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw== +"@babel/plugin-transform-private-methods@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz#e6318746b2ae70a59d023d5cc1344a2ba7a75f5e" + integrity sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-property-in-object@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz#f5d1fcad36e30c960134cb479f1ca98a5b06eda5" - integrity sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ== +"@babel/plugin-transform-private-property-in-object@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz#4eec6bc701288c1fab5f72e6a4bbc9d67faca061" + integrity sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.24.5" - "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-transform-property-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz#d6a9aeab96f03749f4eebeb0b6ea8e90ec958825" - integrity sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA== +"@babel/plugin-transform-property-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz#f0d2ed8380dfbed949c42d4d790266525d63bbdc" + integrity sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-transform-react-constant-elements@^7.12.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.24.1.tgz#d493a0918b9fdad7540f5afd9b5eb5c52500d18d" - integrity sha512-QXp1U9x0R7tkiGB0FOk8o74jhnap0FlZ5gNkRIWdG3eP+SvMFg118e1zaWewDzgABb106QSKpVsD3Wgd8t6ifA== + version "7.25.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.1.tgz#71a665ed16ce618067d05f4a98130207349d82ae" + integrity sha512-SLV/giH/V4SmloZ6Dt40HjTGTAIkxn33TVIHxNGNvo8ezMhrxBkzisj4op1KZYPIOHFLqhv60OHvX+YRu4xbmQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz#554e3e1a25d181f040cf698b93fd289a03bfdcdb" - integrity sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw== +"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz#9caff79836803bc666bcfe210aeb6626230c293b" + integrity sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-react-jsx-development@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" - integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== +"@babel/plugin-transform-react-jsx-development@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz#eaee12f15a93f6496d852509a850085e6361470b" + integrity sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ== dependencies: - "@babel/plugin-transform-react-jsx" "^7.22.5" + "@babel/plugin-transform-react-jsx" "^7.24.7" "@babel/plugin-transform-react-jsx-self@^7.24.5": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.6.tgz#4fa4870d594d6840d724d2006d0f98b19be6f502" - integrity sha512-FfZfHXtQ5jYPQsCRyLpOv2GeLIIJhs8aydpNh39vRDjhD411XcfWDni5i7OjP/Rs8GAtTn7sWFFELJSHqkIxYg== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz#66bff0248ea0b549972e733516ffad577477bdab" + integrity sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-transform-react-jsx-source@^7.24.1": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.6.tgz#4e1503f24ca5fccb1fc7f20c57426899d5ce5c1f" - integrity sha512-BQTBCXmFRreU3oTUXcGKuPOfXAGb1liNY4AvvFKsOBAJ89RKcTsIrSsnMYkj59fNa66OFKnSa4AJZfy5Y4B9WA== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz#1198aab2548ad19582013815c938d3ebd8291ee3" + integrity sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-react-jsx@^7.22.5", "@babel/plugin-transform-react-jsx@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" - integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== +"@babel/plugin-transform-react-jsx@^7.24.7": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz#e37e8ebfa77e9f0b16ba07fadcb6adb47412227a" + integrity sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-jsx" "^7.23.3" - "@babel/types" "^7.23.4" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/plugin-syntax-jsx" "^7.24.7" + "@babel/types" "^7.25.2" -"@babel/plugin-transform-react-pure-annotations@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz#c86bce22a53956331210d268e49a0ff06e392470" - integrity sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA== +"@babel/plugin-transform-react-pure-annotations@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz#bdd9d140d1c318b4f28b29a00fb94f97ecab1595" + integrity sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-regenerator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz#625b7545bae52363bdc1fbbdc7252b5046409c8c" - integrity sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw== +"@babel/plugin-transform-regenerator@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz#021562de4534d8b4b1851759fd7af4e05d2c47f8" + integrity sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" regenerator-transform "^0.15.2" -"@babel/plugin-transform-reserved-words@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz#8de729f5ecbaaf5cf83b67de13bad38a21be57c1" - integrity sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg== +"@babel/plugin-transform-reserved-words@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz#80037fe4fbf031fc1125022178ff3938bb3743a4" + integrity sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-transform-runtime@^7.16.4": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz#dc58ad4a31810a890550365cc922e1ff5acb5d7f" - integrity sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz#00a5bfaf8c43cf5c8703a8a6e82b59d9c58f38ca" + integrity sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw== dependencies: - "@babel/helper-module-imports" "^7.24.3" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" babel-plugin-polyfill-corejs2 "^0.4.10" babel-plugin-polyfill-corejs3 "^0.10.1" babel-plugin-polyfill-regenerator "^0.6.1" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz#ba9a09144cf55d35ec6b93a32253becad8ee5b55" - integrity sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA== +"@babel/plugin-transform-shorthand-properties@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz#85448c6b996e122fa9e289746140aaa99da64e73" + integrity sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-spread@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz#a1acf9152cbf690e4da0ba10790b3ac7d2b2b391" - integrity sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g== +"@babel/plugin-transform-spread@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz#e8a38c0fde7882e0fb8f160378f74bd885cc7bb3" + integrity sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" -"@babel/plugin-transform-sticky-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz#f03e672912c6e203ed8d6e0271d9c2113dc031b9" - integrity sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw== +"@babel/plugin-transform-sticky-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz#96ae80d7a7e5251f657b5cf18f1ea6bf926f5feb" + integrity sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-template-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz#15e2166873a30d8617e3e2ccadb86643d327aab7" - integrity sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g== +"@babel/plugin-transform-template-literals@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz#a05debb4a9072ae8f985bcf77f3f215434c8f8c8" + integrity sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-typeof-symbol@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz#703cace5ef74155fb5eecab63cbfc39bdd25fe12" - integrity sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg== +"@babel/plugin-transform-typeof-symbol@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz#383dab37fb073f5bfe6e60c654caac309f92ba1c" + integrity sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw== dependencies: - "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.8" -"@babel/plugin-transform-typescript@^7.24.1": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz#bcba979e462120dc06a75bd34c473a04781931b8" - integrity sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw== +"@babel/plugin-transform-typescript@^7.24.7": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz#237c5d10de6d493be31637c6b9fa30b6c5461add" + integrity sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.24.5" - "@babel/helper-plugin-utils" "^7.24.5" - "@babel/plugin-syntax-typescript" "^7.24.1" + "@babel/helper-annotate-as-pure" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.25.0" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/plugin-syntax-typescript" "^7.24.7" -"@babel/plugin-transform-unicode-escapes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz#fb3fa16676549ac7c7449db9b342614985c2a3a4" - integrity sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw== +"@babel/plugin-transform-unicode-escapes@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz#2023a82ced1fb4971630a2e079764502c4148e0e" + integrity sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-property-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz#56704fd4d99da81e5e9f0c0c93cabd91dbc4889e" - integrity sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng== +"@babel/plugin-transform-unicode-property-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz#9073a4cd13b86ea71c3264659590ac086605bbcd" + integrity sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz#57c3c191d68f998ac46b708380c1ce4d13536385" - integrity sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g== +"@babel/plugin-transform-unicode-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz#dfc3d4a51127108099b19817c0963be6a2adf19f" + integrity sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-sets-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz#c1ea175b02afcffc9cf57a9c4658326625165b7f" - integrity sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA== +"@babel/plugin-transform-unicode-sets-regex@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz#d40705d67523803a576e29c63cef6e516b858ed9" + integrity sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-regexp-features-plugin" "^7.24.7" + "@babel/helper-plugin-utils" "^7.24.7" "@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.5.tgz#6a9ac90bd5a5a9dae502af60dfc58c190551bbcd" - integrity sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ== - dependencies: - "@babel/compat-data" "^7.24.4" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.5" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" + version "7.25.3" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.3.tgz#0bf4769d84ac51d1073ab4a86f00f30a3a83c67c" + integrity sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g== + dependencies: + "@babel/compat-data" "^7.25.2" + "@babel/helper-compilation-targets" "^7.25.2" + "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-validator-option" "^7.24.8" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.3" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.0" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.0" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.7" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.0" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.24.1" - "@babel/plugin-syntax-import-attributes" "^7.24.1" + "@babel/plugin-syntax-import-assertions" "^7.24.7" + "@babel/plugin-syntax-import-attributes" "^7.24.7" "@babel/plugin-syntax-import-meta" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" @@ -1220,59 +1061,60 @@ "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.24.1" - "@babel/plugin-transform-async-generator-functions" "^7.24.3" - "@babel/plugin-transform-async-to-generator" "^7.24.1" - "@babel/plugin-transform-block-scoped-functions" "^7.24.1" - "@babel/plugin-transform-block-scoping" "^7.24.5" - "@babel/plugin-transform-class-properties" "^7.24.1" - "@babel/plugin-transform-class-static-block" "^7.24.4" - "@babel/plugin-transform-classes" "^7.24.5" - "@babel/plugin-transform-computed-properties" "^7.24.1" - "@babel/plugin-transform-destructuring" "^7.24.5" - "@babel/plugin-transform-dotall-regex" "^7.24.1" - "@babel/plugin-transform-duplicate-keys" "^7.24.1" - "@babel/plugin-transform-dynamic-import" "^7.24.1" - "@babel/plugin-transform-exponentiation-operator" "^7.24.1" - "@babel/plugin-transform-export-namespace-from" "^7.24.1" - "@babel/plugin-transform-for-of" "^7.24.1" - "@babel/plugin-transform-function-name" "^7.24.1" - "@babel/plugin-transform-json-strings" "^7.24.1" - "@babel/plugin-transform-literals" "^7.24.1" - "@babel/plugin-transform-logical-assignment-operators" "^7.24.1" - "@babel/plugin-transform-member-expression-literals" "^7.24.1" - "@babel/plugin-transform-modules-amd" "^7.24.1" - "@babel/plugin-transform-modules-commonjs" "^7.24.1" - "@babel/plugin-transform-modules-systemjs" "^7.24.1" - "@babel/plugin-transform-modules-umd" "^7.24.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.24.1" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1" - "@babel/plugin-transform-numeric-separator" "^7.24.1" - "@babel/plugin-transform-object-rest-spread" "^7.24.5" - "@babel/plugin-transform-object-super" "^7.24.1" - "@babel/plugin-transform-optional-catch-binding" "^7.24.1" - "@babel/plugin-transform-optional-chaining" "^7.24.5" - "@babel/plugin-transform-parameters" "^7.24.5" - "@babel/plugin-transform-private-methods" "^7.24.1" - "@babel/plugin-transform-private-property-in-object" "^7.24.5" - "@babel/plugin-transform-property-literals" "^7.24.1" - "@babel/plugin-transform-regenerator" "^7.24.1" - "@babel/plugin-transform-reserved-words" "^7.24.1" - "@babel/plugin-transform-shorthand-properties" "^7.24.1" - "@babel/plugin-transform-spread" "^7.24.1" - "@babel/plugin-transform-sticky-regex" "^7.24.1" - "@babel/plugin-transform-template-literals" "^7.24.1" - "@babel/plugin-transform-typeof-symbol" "^7.24.5" - "@babel/plugin-transform-unicode-escapes" "^7.24.1" - "@babel/plugin-transform-unicode-property-regex" "^7.24.1" - "@babel/plugin-transform-unicode-regex" "^7.24.1" - "@babel/plugin-transform-unicode-sets-regex" "^7.24.1" + "@babel/plugin-transform-arrow-functions" "^7.24.7" + "@babel/plugin-transform-async-generator-functions" "^7.25.0" + "@babel/plugin-transform-async-to-generator" "^7.24.7" + "@babel/plugin-transform-block-scoped-functions" "^7.24.7" + "@babel/plugin-transform-block-scoping" "^7.25.0" + "@babel/plugin-transform-class-properties" "^7.24.7" + "@babel/plugin-transform-class-static-block" "^7.24.7" + "@babel/plugin-transform-classes" "^7.25.0" + "@babel/plugin-transform-computed-properties" "^7.24.7" + "@babel/plugin-transform-destructuring" "^7.24.8" + "@babel/plugin-transform-dotall-regex" "^7.24.7" + "@babel/plugin-transform-duplicate-keys" "^7.24.7" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.0" + "@babel/plugin-transform-dynamic-import" "^7.24.7" + "@babel/plugin-transform-exponentiation-operator" "^7.24.7" + "@babel/plugin-transform-export-namespace-from" "^7.24.7" + "@babel/plugin-transform-for-of" "^7.24.7" + "@babel/plugin-transform-function-name" "^7.25.1" + "@babel/plugin-transform-json-strings" "^7.24.7" + "@babel/plugin-transform-literals" "^7.25.2" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.7" + "@babel/plugin-transform-member-expression-literals" "^7.24.7" + "@babel/plugin-transform-modules-amd" "^7.24.7" + "@babel/plugin-transform-modules-commonjs" "^7.24.8" + "@babel/plugin-transform-modules-systemjs" "^7.25.0" + "@babel/plugin-transform-modules-umd" "^7.24.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7" + "@babel/plugin-transform-new-target" "^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7" + "@babel/plugin-transform-numeric-separator" "^7.24.7" + "@babel/plugin-transform-object-rest-spread" "^7.24.7" + "@babel/plugin-transform-object-super" "^7.24.7" + "@babel/plugin-transform-optional-catch-binding" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.8" + "@babel/plugin-transform-parameters" "^7.24.7" + "@babel/plugin-transform-private-methods" "^7.24.7" + "@babel/plugin-transform-private-property-in-object" "^7.24.7" + "@babel/plugin-transform-property-literals" "^7.24.7" + "@babel/plugin-transform-regenerator" "^7.24.7" + "@babel/plugin-transform-reserved-words" "^7.24.7" + "@babel/plugin-transform-shorthand-properties" "^7.24.7" + "@babel/plugin-transform-spread" "^7.24.7" + "@babel/plugin-transform-sticky-regex" "^7.24.7" + "@babel/plugin-transform-template-literals" "^7.24.7" + "@babel/plugin-transform-typeof-symbol" "^7.24.8" + "@babel/plugin-transform-unicode-escapes" "^7.24.7" + "@babel/plugin-transform-unicode-property-regex" "^7.24.7" + "@babel/plugin-transform-unicode-regex" "^7.24.7" + "@babel/plugin-transform-unicode-sets-regex" "^7.24.7" "@babel/preset-modules" "0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2 "^0.4.10" babel-plugin-polyfill-corejs3 "^0.10.4" babel-plugin-polyfill-regenerator "^0.6.1" - core-js-compat "^3.31.0" + core-js-compat "^3.37.1" semver "^6.3.1" "@babel/preset-modules@0.1.6-no-external-plugins": @@ -1285,113 +1127,69 @@ esutils "^2.0.2" "@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.1.tgz#2450c2ac5cc498ef6101a6ca5474de251e33aa95" - integrity sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.7.tgz#480aeb389b2a798880bf1f889199e3641cbb22dc" + integrity sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-transform-react-display-name" "^7.24.1" - "@babel/plugin-transform-react-jsx" "^7.23.4" - "@babel/plugin-transform-react-jsx-development" "^7.22.5" - "@babel/plugin-transform-react-pure-annotations" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-transform-react-display-name" "^7.24.7" + "@babel/plugin-transform-react-jsx" "^7.24.7" + "@babel/plugin-transform-react-jsx-development" "^7.24.7" + "@babel/plugin-transform-react-pure-annotations" "^7.24.7" "@babel/preset-typescript@^7.16.0": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz#89bdf13a3149a17b3b2a2c9c62547f06db8845ec" - integrity sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ== + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz#66cd86ea8f8c014855671d5ea9a737139cbbfef1" + integrity sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-syntax-jsx" "^7.24.1" - "@babel/plugin-transform-modules-commonjs" "^7.24.1" - "@babel/plugin-transform-typescript" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-validator-option" "^7.24.7" + "@babel/plugin-syntax-jsx" "^7.24.7" + "@babel/plugin-transform-modules-commonjs" "^7.24.7" + "@babel/plugin-transform-typescript" "^7.24.7" "@babel/regjsgen@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.21.5", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.5.tgz#230946857c053a36ccc66e1dd03b17dd0c4ed02c" - integrity sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/runtime@^7.23.9": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.6.tgz#5b76eb89ad45e2e4a0a8db54c456251469a3358e" - integrity sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw== +"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.21.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.9", "@babel/runtime@^7.24.7", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.0.tgz#3af9a91c1b739c569d5d80cc917280919c544ecb" + integrity sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.22.15", "@babel/template@^7.24.0", "@babel/template@^7.3.3": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" - integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.24.0" - "@babel/types" "^7.24.0" - -"@babel/template@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.6.tgz#048c347b2787a6072b24c723664c8d02b67a44f9" - integrity sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw== - dependencies: - "@babel/code-frame" "^7.24.6" - "@babel/parser" "^7.24.6" - "@babel/types" "^7.24.6" - -"@babel/traverse@^7.24.5", "@babel/traverse@^7.7.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8" - integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA== - dependencies: - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.24.5" - "@babel/parser" "^7.24.5" - "@babel/types" "^7.24.5" +"@babel/template@^7.24.7", "@babel/template@^7.25.0", "@babel/template@^7.3.3": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a" + integrity sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/parser" "^7.25.0" + "@babel/types" "^7.25.0" + +"@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.3", "@babel/traverse@^7.7.2": + version "7.25.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.3.tgz#f1b901951c83eda2f3e29450ce92743783373490" + integrity sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.0" + "@babel/parser" "^7.25.3" + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.2" debug "^4.3.1" globals "^11.1.0" -"@babel/traverse@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.6.tgz#0941ec50cdeaeacad0911eb67ae227a4f8424edc" - integrity sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw== - dependencies: - "@babel/code-frame" "^7.24.6" - "@babel/generator" "^7.24.6" - "@babel/helper-environment-visitor" "^7.24.6" - "@babel/helper-function-name" "^7.24.6" - "@babel/helper-hoist-variables" "^7.24.6" - "@babel/helper-split-export-declaration" "^7.24.6" - "@babel/parser" "^7.24.6" - "@babel/types" "^7.24.6" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7" - integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ== - dependencies: - "@babel/helper-string-parser" "^7.24.1" - "@babel/helper-validator-identifier" "^7.24.5" - to-fast-properties "^2.0.0" - -"@babel/types@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.6.tgz#ba4e1f59870c10dc2fa95a274ac4feec23b21912" - integrity sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ== +"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.2.tgz#55fb231f7dc958cd69ea141a4c2997e819646125" + integrity sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q== dependencies: - "@babel/helper-string-parser" "^7.24.6" - "@babel/helper-validator-identifier" "^7.24.6" + "@babel/helper-string-parser" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -1510,120 +1308,120 @@ resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz#2cbcf822bf3764c9658c4d2e568bd0c0cb748016" integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== -"@esbuild/aix-ppc64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537" - integrity sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g== - -"@esbuild/android-arm64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9" - integrity sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg== - -"@esbuild/android-arm@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995" - integrity sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w== - -"@esbuild/android-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98" - integrity sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg== - -"@esbuild/darwin-arm64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz#6e8517a045ddd86ae30c6608c8475ebc0c4000bb" - integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA== - -"@esbuild/darwin-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz#90ed098e1f9dd8a9381695b207e1cff45540a0d0" - integrity sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA== - -"@esbuild/freebsd-arm64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911" - integrity sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw== - -"@esbuild/freebsd-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c" - integrity sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw== - -"@esbuild/linux-arm64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5" - integrity sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A== - -"@esbuild/linux-arm@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c" - integrity sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg== - -"@esbuild/linux-ia32@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa" - integrity sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig== - -"@esbuild/linux-loong64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5" - integrity sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ== - -"@esbuild/linux-mips64el@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa" - integrity sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA== - -"@esbuild/linux-ppc64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20" - integrity sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg== - -"@esbuild/linux-riscv64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300" - integrity sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg== - -"@esbuild/linux-s390x@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685" - integrity sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ== - -"@esbuild/linux-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz#86eca35203afc0d9de0694c64ec0ab0a378f6fff" - integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== - -"@esbuild/netbsd-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6" - integrity sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ== - -"@esbuild/openbsd-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf" - integrity sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ== - -"@esbuild/sunos-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f" - integrity sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w== - -"@esbuild/win32-arm64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90" - integrity sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ== - -"@esbuild/win32-ia32@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23" - integrity sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ== - -"@esbuild/win32-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc" - integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== +"@esbuild/aix-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" + integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== + +"@esbuild/android-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" + integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== + +"@esbuild/android-arm@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" + integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== + +"@esbuild/android-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" + integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== + +"@esbuild/darwin-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" + integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== + +"@esbuild/darwin-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" + integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== + +"@esbuild/freebsd-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" + integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== + +"@esbuild/freebsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" + integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== + +"@esbuild/linux-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" + integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== + +"@esbuild/linux-arm@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" + integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== + +"@esbuild/linux-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" + integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== + +"@esbuild/linux-loong64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" + integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== + +"@esbuild/linux-mips64el@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" + integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== + +"@esbuild/linux-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" + integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== + +"@esbuild/linux-riscv64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" + integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== + +"@esbuild/linux-s390x@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" + integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== + +"@esbuild/linux-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" + integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== + +"@esbuild/netbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" + integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== + +"@esbuild/openbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" + integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== + +"@esbuild/sunos-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" + integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== + +"@esbuild/win32-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" + integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== + +"@esbuild/win32-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" + integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== + +"@esbuild/win32-x64@0.21.5": + version "0.21.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" + integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" @@ -1633,9 +1431,9 @@ eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" - integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + version "4.11.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae" + integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== "@eslint/eslintrc@^2.1.4": version "2.1.4" @@ -1973,9 +1771,9 @@ "@jridgewell/trace-mapping" "^0.3.25" "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" @@ -2029,16 +1827,16 @@ integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== "@pmmmwh/react-refresh-webpack-plugin@^0.5.3": - version "0.5.13" - resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.13.tgz#02338a92a92f541a5189b97e922caf3215221e49" - integrity sha512-odZVYXly+JwzYri9rKqqUAk0cY6zLpv4dxoKinhoJNShV36Gpxf+CyDIILJ4tYsJ1ZxIWs233Y39iVnynvDA/g== + version "0.5.15" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.15.tgz#f126be97c30b83ed777e2aeabd518bc592e6e7c4" + integrity sha512-LFWllMA55pzB9D34w/wXUCf8+c+IYKuJDgxiZ3qMhl64KRMBHYM1I3VdGaD2BV5FNPV2/S2596bppxHbv2ZydQ== dependencies: - ansi-html-community "^0.0.8" + ansi-html "^0.0.9" core-js-pure "^3.23.3" error-stack-parser "^2.0.6" html-entities "^2.1.0" loader-utils "^2.0.4" - schema-utils "^3.0.0" + schema-utils "^4.2.0" source-map "^0.7.3" "@popperjs/core@^2.11.6": @@ -2047,26 +1845,26 @@ integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== "@react-aria/ssr@^3.5.0": - version "3.9.4" - resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.9.4.tgz#9da8b10342c156e816dbfa4c9e713b21f274d7ab" - integrity sha512-4jmAigVq409qcJvQyuorsmBR4+9r3+JEC60wC+Y0MZV0HCtTmm8D9guYXlJMdx0SSkgj0hHAyFm/HvPNFofCoQ== + version "3.9.5" + resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.9.5.tgz#775d84f51f90934ff51ae74eeba3728daac1a381" + integrity sha512-xEwGKoysu+oXulibNUSkXf8itW0npHHTa6c4AyYeZIJyRoegeteYuFpZUBPtIDE8RfHdNsSmE1ssOkxRnwbkuQ== dependencies: "@swc/helpers" "^0.5.0" "@reduxjs/toolkit@^2.2.4": - version "2.2.5" - resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-2.2.5.tgz#c0d2d8482ef80722bebe015ff05b06c34bfb6e0d" - integrity sha512-aeFA/s5NCG7NoJe/MhmwREJxRkDs0ZaSqt0MxhWUrwCf1UQXpwR87RROJEql0uAkLI6U7snBOYOcKw83ew3FPg== + version "2.2.7" + resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-2.2.7.tgz#199e3d10ccb39267cb5aee92c0262fd9da7fdfb2" + integrity sha512-faI3cZbSdFb8yv9dhDTmGwclW0vk0z5o1cia+kf7gCbaCwHI5e+7tP57mJUv22pNcNbeA62GSrPpfrUfdXcQ6g== dependencies: immer "^10.0.3" redux "^5.0.1" redux-thunk "^3.1.0" reselect "^5.1.0" -"@remix-run/router@1.16.1": - version "1.16.1" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.16.1.tgz#73db3c48b975eeb06d0006481bde4f5f2d17d1cd" - integrity sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig== +"@remix-run/router@1.19.0": + version "1.19.0" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.19.0.tgz#745dbffbce67f05386d57ca22c51dfd85c979593" + integrity sha512-zDICCLKEwbVYTS6TjYaWtHXxkdoUvD/QXvyVZjGCsWz5vyH7aFeONlPffPdW+Y/t6KT0MgXb2Mfjun9YpWN1dA== "@restart/hooks@^0.4.9": version "0.4.16" @@ -2075,10 +1873,10 @@ dependencies: dequal "^2.0.3" -"@restart/ui@^1.6.8": - version "1.6.9" - resolved "https://registry.yarnpkg.com/@restart/ui/-/ui-1.6.9.tgz#05ec905a56486fa39b62f29c09b3917e57acd62f" - integrity sha512-mUbygUsJcRurjZCt1f77gg4DpheD1D+Sc7J3JjAkysUj7t8m4EBJVOqWC9788Qtbc69cJ+HlJc6jBguKwS8Mcw== +"@restart/ui@^1.6.9": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@restart/ui/-/ui-1.8.0.tgz#3e8d80822b5fbef0576f94acda51d7da9e79e005" + integrity sha512-xJEOXUOTmT4FngTmhdjKFRrVVF0hwCLNPdatLCHkyS4dkiSK12cEu1Y0fjxktjJrdst9jJIc5J6ihMJCoWEN/g== dependencies: "@babel/runtime" "^7.21.0" "@popperjs/core" "^2.11.6" @@ -2127,85 +1925,85 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@rollup/rollup-android-arm-eabi@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz#bbd0e616b2078cd2d68afc9824d1fadb2f2ffd27" - integrity sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ== - -"@rollup/rollup-android-arm64@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz#97255ef6384c5f73f4800c0de91f5f6518e21203" - integrity sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA== - -"@rollup/rollup-darwin-arm64@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz#b6dd74e117510dfe94541646067b0545b42ff096" - integrity sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w== - -"@rollup/rollup-darwin-x64@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz#e07d76de1cec987673e7f3d48ccb8e106d42c05c" - integrity sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA== - -"@rollup/rollup-linux-arm-gnueabihf@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz#9f1a6d218b560c9d75185af4b8bb42f9f24736b8" - integrity sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA== - -"@rollup/rollup-linux-arm-musleabihf@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz#53618b92e6ffb642c7b620e6e528446511330549" - integrity sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A== - -"@rollup/rollup-linux-arm64-gnu@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz#99a7ba5e719d4f053761a698f7b52291cefba577" - integrity sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw== - -"@rollup/rollup-linux-arm64-musl@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz#f53db99a45d9bc00ce94db8a35efa7c3c144a58c" - integrity sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ== - -"@rollup/rollup-linux-powerpc64le-gnu@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz#cbb0837408fe081ce3435cf3730e090febafc9bf" - integrity sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA== - -"@rollup/rollup-linux-riscv64-gnu@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz#8ed09c1d1262ada4c38d791a28ae0fea28b80cc9" - integrity sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg== - -"@rollup/rollup-linux-s390x-gnu@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz#938138d3c8e0c96f022252a28441dcfb17afd7ec" - integrity sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg== - -"@rollup/rollup-linux-x64-gnu@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz#1a7481137a54740bee1ded4ae5752450f155d942" - integrity sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w== - -"@rollup/rollup-linux-x64-musl@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz#f1186afc601ac4f4fc25fac4ca15ecbee3a1874d" - integrity sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg== - -"@rollup/rollup-win32-arm64-msvc@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz#ed6603e93636a96203c6915be4117245c1bd2daf" - integrity sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA== - -"@rollup/rollup-win32-ia32-msvc@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz#14e0b404b1c25ebe6157a15edb9c46959ba74c54" - integrity sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg== - -"@rollup/rollup-win32-x64-msvc@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz#5d694d345ce36b6ecf657349e03eb87297e68da4" - integrity sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g== +"@rollup/rollup-android-arm-eabi@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz#c3f5660f67030c493a981ac1d34ee9dfe1d8ec0f" + integrity sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA== + +"@rollup/rollup-android-arm64@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.20.0.tgz#64161f0b67050023a3859e723570af54a82cff5c" + integrity sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ== + +"@rollup/rollup-darwin-arm64@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz#25f3d57b1da433097cfebc89341b355901615763" + integrity sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q== + +"@rollup/rollup-darwin-x64@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.20.0.tgz#d8ddaffb636cc2f59222c50316e27771e48966df" + integrity sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ== + +"@rollup/rollup-linux-arm-gnueabihf@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.20.0.tgz#41bd4fcffa20fb84f3dbac6c5071638f46151885" + integrity sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA== + +"@rollup/rollup-linux-arm-musleabihf@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.20.0.tgz#842077c5113a747eb5686f19f2f18c33ecc0acc8" + integrity sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw== + +"@rollup/rollup-linux-arm64-gnu@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz#65d1d5b6778848f55b7823958044bf3e8737e5b7" + integrity sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ== + +"@rollup/rollup-linux-arm64-musl@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.20.0.tgz#50eef7d6e24d0fe3332200bb666cad2be8afcf86" + integrity sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q== + +"@rollup/rollup-linux-powerpc64le-gnu@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.20.0.tgz#8837e858f53c84607f05ad0602943e96d104c6b4" + integrity sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw== + +"@rollup/rollup-linux-riscv64-gnu@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.20.0.tgz#c894ade2300caa447757ddf45787cca246e816a4" + integrity sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA== + +"@rollup/rollup-linux-s390x-gnu@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.20.0.tgz#5841e5390d4c82dd5cdf7b2c95a830e3c2f47dd3" + integrity sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg== + +"@rollup/rollup-linux-x64-gnu@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz#cc1f26398bf777807a99226dc13f47eb0f6c720d" + integrity sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew== + +"@rollup/rollup-linux-x64-musl@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz#1507465d9056e0502a590d4c1a00b4d7b1fda370" + integrity sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg== + +"@rollup/rollup-win32-arm64-msvc@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.20.0.tgz#86a221f01a2c248104dd0defb4da119f2a73642e" + integrity sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA== + +"@rollup/rollup-win32-ia32-msvc@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.20.0.tgz#8bc8f77e02760aa664694b4286d6fbea7f1331c5" + integrity sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A== + +"@rollup/rollup-win32-x64-msvc@4.20.0": + version "4.20.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.20.0.tgz#601fffee719a1e8447f908aca97864eec23b2784" + integrity sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg== "@rtk-query/codegen-openapi@^1.2.0": version "1.2.0" @@ -2221,9 +2019,9 @@ typescript "^5.0.0" "@rushstack/eslint-patch@^1.1.0": - version "1.10.3" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.3.tgz#391d528054f758f81e53210f1a1eebcf1a8b1d20" - integrity sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg== + version "1.10.4" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz#427d5549943a9c6fce808e39ea64dbe60d4047f1" + integrity sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA== "@sinclair/typebox@^0.24.1": version "0.24.51" @@ -2363,9 +2161,9 @@ loader-utils "^2.0.0" "@swc/helpers@^0.5.0": - version "0.5.11" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.11.tgz#5bab8c660a6e23c13b2d23fcd1ee44a2db1b0cb7" - integrity sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A== + version "0.5.12" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.12.tgz#37aaca95284019eb5d2207101249435659709f4b" + integrity sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g== dependencies: tslib "^2.4.0" @@ -2500,10 +2298,18 @@ "@types/eslint" "*" "@types/estree" "*" -"@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1": - version "8.56.10" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.10.tgz#eb2370a73bf04a901eeba8f22595c7ee0f7eb58d" - integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ== +"@types/eslint@*": + version "9.6.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.0.tgz#51d4fe4d0316da9e9f2c80884f2c20ed5fb022ff" + integrity sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/eslint@^7.29.0 || ^8.4.1": + version "8.56.11" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.11.tgz#e2ff61510a3b9454b3329fe7731e3b4c6f780041" + integrity sha512-sVBpJMf7UPo/wGecYOpk2aQya2VUGeHhe38WG7/mN5FufNSubf5VT9Uh9Uyp8/eLJpu1/tuhJ/qTo4mhSB4V4Q== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -2519,9 +2325,9 @@ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.19.1" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.1.tgz#57d34698bb580720fd6e3c360d4b2fdef579b979" - integrity sha512-ej0phymbFLoCB26dbbq5PGScsf2JAJ4IJHjG10LalgUV36XKTmA4GdA+PVllKvRk0sEKt64X8975qFnkSi0hqA== + version "4.19.5" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz#218064e321126fcf9048d1ca25dd2465da55d9c6" + integrity sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg== dependencies: "@types/node" "*" "@types/qs" "*" @@ -2612,11 +2418,11 @@ "@types/node" "*" "@types/node@*": - version "20.12.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.12.tgz#7cbecdf902085cec634fdb362172dfe12b8f2050" - integrity sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw== + version "22.1.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.1.0.tgz#6d6adc648b5e03f0e83c78dc788c2b037d0ad94b" + integrity sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw== dependencies: - undici-types "~5.26.4" + undici-types "~6.13.0" "@types/parse-json@^4.0.0": version "4.0.2" @@ -2662,15 +2468,7 @@ dependencies: "@types/react" "*" -"@types/react@*", "@types/react@>=16.9.11": - version "18.3.2" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.2.tgz#462ae4904973bc212fa910424d901e3d137dbfcd" - integrity sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w== - dependencies: - "@types/prop-types" "*" - csstype "^3.0.2" - -"@types/react@^18.2.66": +"@types/react@*", "@types/react@>=16.9.11", "@types/react@^18.2.66": version "18.3.3" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.3.tgz#9679020895318b0915d7a3ab004d92d33375c45f" integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw== @@ -2754,9 +2552,9 @@ integrity sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q== "@types/ws@^8.5.5": - version "8.5.10" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" - integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== + version "8.5.12" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.12.tgz#619475fe98f35ccca2a2f6c137702d85ec247b7e" + integrity sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ== dependencies: "@types/node" "*" @@ -2796,15 +2594,15 @@ tsutils "^3.21.0" "@typescript-eslint/eslint-plugin@^7.2.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.10.0.tgz#07854a236f107bb45cbf4f62b89474cbea617f50" - integrity sha512-PzCr+a/KAef5ZawX7nbyNwBDtM1HdLIT53aSA2DDlxmxMngZ43O8SIePOeX8H5S+FHXeI6t97mTt/dDdzY4Fyw== + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz#b16d3cf3ee76bf572fdf511e79c248bdec619ea3" + integrity sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "7.10.0" - "@typescript-eslint/type-utils" "7.10.0" - "@typescript-eslint/utils" "7.10.0" - "@typescript-eslint/visitor-keys" "7.10.0" + "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/type-utils" "7.18.0" + "@typescript-eslint/utils" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" @@ -2828,14 +2626,14 @@ debug "^4.3.4" "@typescript-eslint/parser@^7.2.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.10.0.tgz#e6ac1cba7bc0400a4459e7eb5b23115bd71accfb" - integrity sha512-2EjZMA0LUW5V5tGQiaa2Gys+nKdfrn2xiTIBLR4fxmPmVSvgPcKNW+AE/ln9k0A4zDUti0J/GZXMDupQoI+e1w== - dependencies: - "@typescript-eslint/scope-manager" "7.10.0" - "@typescript-eslint/types" "7.10.0" - "@typescript-eslint/typescript-estree" "7.10.0" - "@typescript-eslint/visitor-keys" "7.10.0" + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.18.0.tgz#83928d0f1b7f4afa974098c64b5ce6f9051f96a0" + integrity sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg== + dependencies: + "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/typescript-estree" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" debug "^4.3.4" "@typescript-eslint/scope-manager@5.62.0": @@ -2846,13 +2644,13 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/scope-manager@7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.10.0.tgz#054a27b1090199337a39cf755f83d9f2ce26546b" - integrity sha512-7L01/K8W/VGl7noe2mgH0K7BE29Sq6KAbVmxurj8GGaPDZXPr8EEQ2seOeAS+mEV9DnzxBQB6ax6qQQ5C6P4xg== +"@typescript-eslint/scope-manager@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz#c928e7a9fc2c0b3ed92ab3112c614d6bd9951c83" + integrity sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA== dependencies: - "@typescript-eslint/types" "7.10.0" - "@typescript-eslint/visitor-keys" "7.10.0" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" "@typescript-eslint/type-utils@5.62.0": version "5.62.0" @@ -2864,13 +2662,13 @@ debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/type-utils@7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.10.0.tgz#8a75accce851d0a331aa9331268ef64e9b300270" - integrity sha512-D7tS4WDkJWrVkuzgm90qYw9RdgBcrWmbbRkrLA4d7Pg3w0ttVGDsvYGV19SH8gPR5L7OtcN5J1hTtyenO9xE9g== +"@typescript-eslint/type-utils@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz#2165ffaee00b1fbbdd2d40aa85232dab6998f53b" + integrity sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA== dependencies: - "@typescript-eslint/typescript-estree" "7.10.0" - "@typescript-eslint/utils" "7.10.0" + "@typescript-eslint/typescript-estree" "7.18.0" + "@typescript-eslint/utils" "7.18.0" debug "^4.3.4" ts-api-utils "^1.3.0" @@ -2879,10 +2677,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/types@7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.10.0.tgz#da92309c97932a3a033762fd5faa8b067de84e3b" - integrity sha512-7fNj+Ya35aNyhuqrA1E/VayQX9Elwr8NKZ4WueClR3KwJ7Xx9jcCdOrLW04h51de/+gNbyFMs+IDxh5xIwfbNg== +"@typescript-eslint/types@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.18.0.tgz#b90a57ccdea71797ffffa0321e744f379ec838c9" + integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" @@ -2897,13 +2695,13 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.10.0.tgz#6dcdc5de3149916a6a599fa89dde5c471b88b8bb" - integrity sha512-LXFnQJjL9XIcxeVfqmNj60YhatpRLt6UhdlFwAkjNc6jSUlK8zQOl1oktAP8PlWFzPQC1jny/8Bai3/HPuvN5g== +"@typescript-eslint/typescript-estree@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz#b5868d486c51ce8f312309ba79bdb9f331b37931" + integrity sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA== dependencies: - "@typescript-eslint/types" "7.10.0" - "@typescript-eslint/visitor-keys" "7.10.0" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/visitor-keys" "7.18.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -2925,15 +2723,15 @@ eslint-scope "^5.1.1" semver "^7.3.7" -"@typescript-eslint/utils@7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.10.0.tgz#8ee43e5608c9f439524eaaea8de5b358b15c51b3" - integrity sha512-olzif1Fuo8R8m/qKkzJqT7qwy16CzPRWBvERS0uvyc+DHd8AKbO4Jb7kpAvVzMmZm8TrHnI7hvjN4I05zow+tg== +"@typescript-eslint/utils@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.18.0.tgz#bca01cde77f95fc6a8d5b0dbcbfb3d6ca4be451f" + integrity sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "7.10.0" - "@typescript-eslint/types" "7.10.0" - "@typescript-eslint/typescript-estree" "7.10.0" + "@typescript-eslint/scope-manager" "7.18.0" + "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/typescript-estree" "7.18.0" "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" @@ -2943,12 +2741,12 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@7.10.0": - version "7.10.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.10.0.tgz#2af2e91e73a75dd6b70b4486c48ae9d38a485a78" - integrity sha512-9ntIVgsi6gg6FIq9xjEO4VQJvwOqA3jaBFQJ/6TK5AvEup2+cECI6Fh7QiBxmfMHXU0V0J4RyPeOU1VDNzl9cg== +"@typescript-eslint/visitor-keys@7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz#0564629b6124d67607378d0f0332a0495b25e7d7" + integrity sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg== dependencies: - "@typescript-eslint/types" "7.10.0" + "@typescript-eslint/types" "7.18.0" eslint-visitor-keys "^3.4.3" "@ungap/structured-clone@^1.2.0": @@ -2957,9 +2755,9 @@ integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== "@vitejs/plugin-react@^4.2.1": - version "4.3.0" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.3.0.tgz#f20ec2369a92d8abaaefa60da8b7157819d20481" - integrity sha512-KcEbMsn4Dpk+LIbHMj7gDPRKaTMStxxWRkRmxsg/jVdFdJCZWt1SchZcf0M4t8lIKdwwMsEyzhrcOXRrDPtOBw== + version "4.3.1" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz#d0be6594051ded8957df555ff07a991fb618b48e" + integrity sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg== dependencies: "@babel/core" "^7.24.5" "@babel/plugin-transform-react-jsx-self" "^7.24.5" @@ -3119,10 +2917,10 @@ acorn-globals@^6.0.0: acorn "^7.1.1" acorn-walk "^7.1.1" -acorn-import-assertions@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" - integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== +acorn-import-attributes@^1.9.5: + version "1.9.5" + resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" + integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== acorn-jsx@^5.3.2: version "5.3.2" @@ -3140,9 +2938,9 @@ acorn@^7.1.1: integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.11.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + version "8.12.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" + integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== address@^1.0.1, address@^1.1.2: version "1.2.2" @@ -3198,23 +2996,13 @@ ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.6.0, ajv@^8.9.0: - version "8.13.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.13.0.tgz#a3939eaec9fb80d217ddf0c3376948c023f28c91" - integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA== - dependencies: - fast-deep-equal "^3.1.3" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.4.1" - -ajv@^8.6.3: - version "8.15.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.15.0.tgz#d918c661e3e820bbbc65a320e182ee56a1aa978a" - integrity sha512-15BTtQUOsSrmHCy+B4VnAiJAJxJ8IFgu6fcjFQF3jQYZ78nLSQthlFg4ehp+NLIyfvFgOlxNsjKIEhydtFPVHQ== +ajv@^8.0.0, ajv@^8.6.0, ajv@^8.6.3, ajv@^8.9.0: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== dependencies: fast-deep-equal "^3.1.3" - fast-uri "^2.3.0" + fast-uri "^3.0.1" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" @@ -3230,6 +3018,11 @@ ansi-html-community@^0.0.8: resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== +ansi-html@^0.0.9: + version "0.0.9" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.9.tgz#6512d02342ae2cc68131952644a129cb734cd3f0" + integrity sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg== + ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -3294,14 +3087,14 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@5.1.3: +aria-query@5.1.3, aria-query@~5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== dependencies: deep-equal "^2.0.5" -aria-query@^5.0.0, aria-query@^5.3.0: +aria-query@^5.0.0: version "5.3.0" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== @@ -3321,7 +3114,7 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -array-includes@^3.1.6, array-includes@^3.1.7: +array-includes@^3.1.6, array-includes@^3.1.7, array-includes@^3.1.8: version "3.1.8" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== @@ -3338,7 +3131,7 @@ array-union@^2.1.0: resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -array.prototype.findlast@^1.2.4: +array.prototype.findlast@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904" integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ== @@ -3395,25 +3188,15 @@ array.prototype.reduce@^1.0.6: es-object-atoms "^1.0.0" is-string "^1.0.7" -array.prototype.toreversed@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz#b989a6bf35c4c5051e1dc0325151bf8088954eba" - integrity sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.tosorted@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz#c8c89348337e51b8a3c48a9227f9ce93ceedcba8" - integrity sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg== +array.prototype.tosorted@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz#fe954678ff53034e717ea3352a03f0b0b86f7ffc" + integrity sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA== dependencies: - call-bind "^1.0.5" + call-bind "^1.0.7" define-properties "^1.2.1" - es-abstract "^1.22.3" - es-errors "^1.1.0" + es-abstract "^1.23.3" + es-errors "^1.3.0" es-shim-unscopables "^1.0.2" arraybuffer.prototype.slice@^1.0.3: @@ -3456,15 +3239,15 @@ at-least-node@^1.0.0: integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== autoprefixer@^10.4.13: - version "10.4.19" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.19.tgz#ad25a856e82ee9d7898c59583c1afeb3fa65f89f" - integrity sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew== + version "10.4.20" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b" + integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g== dependencies: - browserslist "^4.23.0" - caniuse-lite "^1.0.30001599" + browserslist "^4.23.3" + caniuse-lite "^1.0.30001646" fraction.js "^4.3.7" normalize-range "^0.1.2" - picocolors "^1.0.0" + picocolors "^1.0.1" postcss-value-parser "^4.2.0" available-typed-arrays@^1.0.7: @@ -3474,17 +3257,17 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" -axe-core@=4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" - integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== +axe-core@^4.9.1: + version "4.10.0" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.0.tgz#d9e56ab0147278272739a000880196cdfe113b59" + integrity sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g== -axobject-query@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" - integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== +axobject-query@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1" + integrity sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg== dependencies: - dequal "^2.0.3" + deep-equal "^2.0.5" babel-jest@^27.4.2, babel-jest@^27.5.1: version "27.5.1" @@ -3555,12 +3338,12 @@ babel-plugin-polyfill-corejs2@^0.4.10: semver "^6.3.1" babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: - version "0.10.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz#789ac82405ad664c20476d0233b485281deb9c77" - integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== + version "0.10.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz#2deda57caef50f59c525aeb4964d3b2f867710c7" + integrity sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA== dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.1" - core-js-compat "^3.36.1" + "@babel/helper-define-polyfill-provider" "^0.6.2" + core-js-compat "^3.38.0" babel-plugin-polyfill-regenerator@^0.6.1: version "0.6.2" @@ -3721,15 +3504,15 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.22.2, browserslist@^4.23.0: - version "4.23.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" - integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== +browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.23.1, browserslist@^4.23.3: + version "4.23.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" + integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== dependencies: - caniuse-lite "^1.0.30001587" - electron-to-chromium "^1.4.668" - node-releases "^2.0.14" - update-browserslist-db "^1.0.13" + caniuse-lite "^1.0.30001646" + electron-to-chromium "^1.5.4" + node-releases "^2.0.18" + update-browserslist-db "^1.1.0" bser@2.1.1: version "2.1.1" @@ -3812,10 +3595,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001599: - version "1.0.30001621" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001621.tgz#4adcb443c8b9c8303e04498318f987616b8fea2e" - integrity sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646: + version "1.0.30001649" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001649.tgz#3ec700309ca0da2b0d3d5fb03c411b191761c992" + integrity sha512-fJegqZZ0ZX8HOWr6rcafGr72+xcgJKI9oWfDW5DrD7ExUtgZC7a7R7ZYmZqplh7XDocFdGeIFn7roAxhOeYrPQ== case-sensitive-paths-webpack-plugin@^2.4.0: version "2.4.0" @@ -3878,9 +3661,9 @@ check-types@^11.2.3: fsevents "~2.3.2" chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + version "1.0.4" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" + integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== ci-info@^3.2.0: version "3.9.0" @@ -4089,22 +3872,22 @@ cookie@0.6.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== -core-js-compat@^3.31.0, core-js-compat@^3.36.1: - version "3.37.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.1.tgz#c844310c7852f4bdf49b8d339730b97e17ff09ee" - integrity sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg== +core-js-compat@^3.37.1, core-js-compat@^3.38.0: + version "3.38.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.38.0.tgz#d93393b1aa346b6ee683377b0c31172ccfe607aa" + integrity sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A== dependencies: - browserslist "^4.23.0" + browserslist "^4.23.3" core-js-pure@^3.23.3: - version "3.37.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.37.1.tgz#2b4b34281f54db06c9a9a5bd60105046900553bd" - integrity sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA== + version "3.38.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.38.0.tgz#bc802cd152e33d5b0ec733b656c71cb847cac701" + integrity sha512-8balb/HAXo06aHP58mZMtXgD8vcnXz9tUDePgqBgJgKdmTlMt+jw3ujqniuBDQXMvTzxnMpxHFeuSM3g1jWQuQ== core-js@^3.19.2: - version "3.37.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.37.1.tgz#d21751ddb756518ac5a00e4d66499df981a62db9" - integrity sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw== + version "3.38.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.38.0.tgz#8acb7c050bf2ccbb35f938c0d040132f6110f636" + integrity sha512-XPpwqEodRljce9KswjZShh95qJ1URisBeKCjUdq27YdenkslVe7OO0ZJhlYXAChW7OhXaRLl8AAba7IBfoIHug== core-util-is@~1.0.0: version "1.0.3" @@ -4391,9 +4174,9 @@ debug@2.6.9, debug@^2.6.0: ms "2.0.0" debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + version "4.3.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" + integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== dependencies: ms "2.1.2" @@ -4687,10 +4470,10 @@ ejs@^3.1.6: dependencies: jake "^10.8.5" -electron-to-chromium@^1.4.668: - version "1.4.779" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.779.tgz#bb6f08b93092a564421adcadcc4b92c5055c7a77" - integrity sha512-oaTiIcszNfySXVJzKcjxd2YjPxziAd+GmXyb2HbidCeFo6Z88ygOT7EimlrEQhM2U08VhSrbKhLOXP0kKUCZ6g== +electron-to-chromium@^1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.5.tgz#03bfdf422bdd2c05ee2657efedde21264a1a566b" + integrity sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA== emittery@^0.10.2: version "0.10.2" @@ -4722,10 +4505,10 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -enhanced-resolve@^5.16.0: - version "5.16.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.16.1.tgz#e8bc63d51b826d6f1cbc0a150ecb5a8b0c62e567" - integrity sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw== +enhanced-resolve@^5.17.0: + version "5.17.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15" + integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -4749,7 +4532,7 @@ error-stack-parser@^2.0.6: dependencies: stackframe "^1.3.4" -es-abstract@^1.17.2, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: +es-abstract@^1.17.2, es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: version "1.23.3" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== @@ -4813,7 +4596,7 @@ es-define-property@^1.0.0: dependencies: get-intrinsic "^1.2.4" -es-errors@^1.1.0, es-errors@^1.2.1, es-errors@^1.3.0: +es-errors@^1.2.1, es-errors@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== @@ -4833,7 +4616,7 @@ es-get-iterator@^1.1.3: isarray "^2.0.5" stop-iteration-iterator "^1.0.0" -es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.17: +es-iterator-helpers@^1.0.19: version "1.0.19" resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#117003d0e5fec237b4b5c08aded722e0c6d50ca8" integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw== @@ -4854,9 +4637,9 @@ es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.17: safe-array-concat "^1.1.2" es-module-lexer@^1.2.1: - version "1.5.3" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.3.tgz#25969419de9c0b1fbe54279789023e8a9a788412" - integrity sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg== + version "1.5.4" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz#a8efec3a3da991e60efa6b633a7cad6ab8d26b78" + integrity sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw== es-object-atoms@^1.0.0: version "1.0.0" @@ -4895,34 +4678,34 @@ es6-promise@^3.2.1: resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" integrity sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg== -esbuild@^0.20.1: - version "0.20.2" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.2.tgz#9d6b2386561766ee6b5a55196c6d766d28c87ea1" - integrity sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g== +esbuild@^0.21.3: + version "0.21.5" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d" + integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== optionalDependencies: - "@esbuild/aix-ppc64" "0.20.2" - "@esbuild/android-arm" "0.20.2" - "@esbuild/android-arm64" "0.20.2" - "@esbuild/android-x64" "0.20.2" - "@esbuild/darwin-arm64" "0.20.2" - "@esbuild/darwin-x64" "0.20.2" - "@esbuild/freebsd-arm64" "0.20.2" - "@esbuild/freebsd-x64" "0.20.2" - "@esbuild/linux-arm" "0.20.2" - "@esbuild/linux-arm64" "0.20.2" - "@esbuild/linux-ia32" "0.20.2" - "@esbuild/linux-loong64" "0.20.2" - "@esbuild/linux-mips64el" "0.20.2" - "@esbuild/linux-ppc64" "0.20.2" - "@esbuild/linux-riscv64" "0.20.2" - "@esbuild/linux-s390x" "0.20.2" - "@esbuild/linux-x64" "0.20.2" - "@esbuild/netbsd-x64" "0.20.2" - "@esbuild/openbsd-x64" "0.20.2" - "@esbuild/sunos-x64" "0.20.2" - "@esbuild/win32-arm64" "0.20.2" - "@esbuild/win32-ia32" "0.20.2" - "@esbuild/win32-x64" "0.20.2" + "@esbuild/aix-ppc64" "0.21.5" + "@esbuild/android-arm" "0.21.5" + "@esbuild/android-arm64" "0.21.5" + "@esbuild/android-x64" "0.21.5" + "@esbuild/darwin-arm64" "0.21.5" + "@esbuild/darwin-x64" "0.21.5" + "@esbuild/freebsd-arm64" "0.21.5" + "@esbuild/freebsd-x64" "0.21.5" + "@esbuild/linux-arm" "0.21.5" + "@esbuild/linux-arm64" "0.21.5" + "@esbuild/linux-ia32" "0.21.5" + "@esbuild/linux-loong64" "0.21.5" + "@esbuild/linux-mips64el" "0.21.5" + "@esbuild/linux-ppc64" "0.21.5" + "@esbuild/linux-riscv64" "0.21.5" + "@esbuild/linux-s390x" "0.21.5" + "@esbuild/linux-x64" "0.21.5" + "@esbuild/netbsd-x64" "0.21.5" + "@esbuild/openbsd-x64" "0.21.5" + "@esbuild/sunos-x64" "0.21.5" + "@esbuild/win32-arm64" "0.21.5" + "@esbuild/win32-ia32" "0.21.5" + "@esbuild/win32-x64" "0.21.5" escalade@^3.1.1, escalade@^3.1.2: version "3.1.2" @@ -5069,26 +4852,26 @@ eslint-plugin-jest@^25.3.0: "@typescript-eslint/experimental-utils" "^5.0.0" eslint-plugin-jsx-a11y@^6.5.1, eslint-plugin-jsx-a11y@^6.7.1: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" - integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== + version "6.9.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz#67ab8ff460d4d3d6a0b4a570e9c1670a0a8245c8" + integrity sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g== dependencies: - "@babel/runtime" "^7.23.2" - aria-query "^5.3.0" - array-includes "^3.1.7" + aria-query "~5.1.3" + array-includes "^3.1.8" array.prototype.flatmap "^1.3.2" ast-types-flow "^0.0.8" - axe-core "=4.7.0" - axobject-query "^3.2.1" + axe-core "^4.9.1" + axobject-query "~3.1.1" damerau-levenshtein "^1.0.8" emoji-regex "^9.2.2" - es-iterator-helpers "^1.0.15" - hasown "^2.0.0" + es-iterator-helpers "^1.0.19" + hasown "^2.0.2" jsx-ast-utils "^3.3.5" language-tags "^1.0.9" minimatch "^3.1.2" - object.entries "^1.1.7" - object.fromentries "^2.0.7" + object.fromentries "^2.0.8" + safe-regex-test "^1.0.3" + string.prototype.includes "^2.0.0" eslint-plugin-prettier@^4.0.0: version "4.2.1" @@ -5103,33 +4886,33 @@ eslint-plugin-react-hooks@^4.3.0, eslint-plugin-react-hooks@^4.6.0: integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== eslint-plugin-react-refresh@^0.4.6: - version "0.4.7" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.7.tgz#1f597f9093b254f10ee0961c139a749acb19af7d" - integrity sha512-yrj+KInFmwuQS2UQcg1SF83ha1tuHC1jMQbRNyuWtlEzzKRDgAl7L4Yp4NlDUZTZNlWvHEzOtJhMi40R7JxcSw== + version "0.4.9" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.9.tgz#bf870372b353b12e1e6fb7fc41b282d9cbc8d93d" + integrity sha512-QK49YrBAo5CLNLseZ7sZgvgTy21E6NEw22eZqc4teZfH8pxV3yXc9XXOYfUI6JNpw7mfHNkAeWtBxrTyykB6HA== eslint-plugin-react@^7.27.1, eslint-plugin-react@^7.32.2: - version "7.34.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz#6806b70c97796f5bbfb235a5d3379ece5f4da997" - integrity sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw== + version "7.35.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz#00b1e4559896710e58af6358898f2ff917ea4c41" + integrity sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA== dependencies: - array-includes "^3.1.7" - array.prototype.findlast "^1.2.4" + array-includes "^3.1.8" + array.prototype.findlast "^1.2.5" array.prototype.flatmap "^1.3.2" - array.prototype.toreversed "^1.1.2" - array.prototype.tosorted "^1.1.3" + array.prototype.tosorted "^1.1.4" doctrine "^2.1.0" - es-iterator-helpers "^1.0.17" + es-iterator-helpers "^1.0.19" estraverse "^5.3.0" + hasown "^2.0.2" jsx-ast-utils "^2.4.1 || ^3.0.0" minimatch "^3.1.2" - object.entries "^1.1.7" - object.fromentries "^2.0.7" - object.hasown "^1.1.3" - object.values "^1.1.7" + object.entries "^1.1.8" + object.fromentries "^2.0.8" + object.values "^1.2.0" prop-types "^15.8.1" resolve "^2.0.0-next.5" semver "^6.3.1" - string.prototype.matchall "^4.0.10" + string.prototype.matchall "^4.0.11" + string.prototype.repeat "^1.0.0" eslint-plugin-testing-library@^5.0.1: version "5.11.1" @@ -5239,9 +5022,9 @@ esprima@^4.0.0, esprima@^4.0.1: integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== dependencies: estraverse "^5.1.0" @@ -5401,10 +5184,10 @@ fast-safe-stringify@^2.0.7: resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== -fast-uri@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-2.3.0.tgz#bdae493942483d299e7285dcb4627767d42e2793" - integrity sha512-eel5UKGn369gGEWOqBShmFJWfq/xSJvsgDzgLYC845GneayWvXBf0lJCBn5qTABfewy1ZDPoaR5OZCP+kssfuw== +fast-uri@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.1.tgz#cddd2eecfc83a71c1be2cc2ef2061331be8a7134" + integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw== fastq@^1.6.0: version "1.17.1" @@ -5533,9 +5316,9 @@ for-each@^0.3.3: is-callable "^1.1.3" foreground-child@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" - integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + version "3.2.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.2.1.tgz#767004ccf3a5b30df39bed90718bab43fe0a59f7" + integrity sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA== dependencies: cross-spawn "^7.0.0" signal-exit "^4.0.1" @@ -5622,7 +5405,7 @@ function-bind@^1.1.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: +function.prototype.name@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== @@ -5702,15 +5485,16 @@ glob-to-regexp@^0.4.1: integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== glob@^10.3.10: - version "10.3.16" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.16.tgz#bf6679d5d51279c8cfae4febe0d051d2a4bf4c6f" - integrity sha512-JDKXl1DiuuHJ6fVS2FXjownaavciiHNUU4mOvV/B793RLh05vZL1rcPnCSaOgv1hDT6RDlY7AB7ZUvFYAtPgAw== + version "10.4.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== dependencies: foreground-child "^3.1.0" jackspeak "^3.1.2" - minimatch "^9.0.1" - minipass "^7.0.4" - path-scurry "^1.11.0" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" @@ -6009,9 +5793,9 @@ human-signals@^2.1.0: integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== i18next@^23.11.5: - version "23.11.5" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.11.5.tgz#d71eb717a7e65498d87d0594f2664237f9e361ef" - integrity sha512-41pvpVbW9rhZPk5xjCX2TPJi2861LEig/YRhUkY+1FQ2IQPS0bKUDYnEqY8XPPbB48h1uIwLnP9iiEfuSl20CA== + version "23.12.2" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.12.2.tgz#c5b44bb95e4d4a5908a51577fa06c63dc2f650a4" + integrity sha512-XIeh5V+bi8SJSWGL3jqbTEBW5oD6rbP5L+E7dVQh1MNTxxYef0x15rhJVcRb7oiuq4jLtgy2SD8eFlf6P2cmqg== dependencies: "@babel/runtime" "^7.23.2" @@ -6062,9 +5846,9 @@ immer@^9.0.7: integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== immutable@^4.0.0: - version "4.3.6" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.6.tgz#6a05f7858213238e587fb83586ffa3b4b27f0447" - integrity sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ== + version "4.3.7" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.7.tgz#c70145fc90d89fb02021e65c84eb0226e4e5a381" + integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw== import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" @@ -6075,9 +5859,9 @@ import-fresh@^3.1.0, import-fresh@^3.2.1: resolve-from "^4.0.0" import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + version "3.2.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" + integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== dependencies: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" @@ -6197,11 +5981,11 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-core-module@^2.13.0, is-core-module@^2.13.1: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + version "2.15.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.0.tgz#71c72ec5442ace7e76b306e9d48db361f22699ea" + integrity sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA== dependencies: - hasown "^2.0.0" + hasown "^2.0.2" is-data-view@^1.0.1: version "1.0.1" @@ -6462,18 +6246,18 @@ iterator.prototype@^1.1.2: set-function-name "^2.0.1" jackspeak@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.1.2.tgz#eada67ea949c6b71de50f1b09c92a961897b90ab" - integrity sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ== + version "3.4.3" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== dependencies: "@isaacs/cliui" "^8.0.2" optionalDependencies: "@pkgjs/parseargs" "^0.11.0" jake@^10.8.5: - version "10.9.1" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.1.tgz#8dc96b7fcc41cb19aa502af506da4e1d56f5e62b" - integrity sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w== + version "10.9.2" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f" + integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA== dependencies: async "^3.2.3" chalk "^4.0.2" @@ -7015,9 +6799,9 @@ jest@^27.4.3: jest-cli "^27.5.1" jiti@^1.21.0: - version "1.21.0" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" - integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== + version "1.21.6" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" + integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -7192,9 +6976,9 @@ language-tags@^1.0.9: language-subtag-registry "^0.3.20" launch-editor@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" - integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== + version "2.8.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.8.1.tgz#3bda72af213ec9b46b170e39661916ec66c2f463" + integrity sha512-elBx2l/tp9z99X5H/qev8uyDywVh0VXAwEbjk8kJhnc5grOFkGh7aW6q55me9xnYbss261XtnUrysZ+XvGbhQA== dependencies: picocolors "^1.0.0" shell-quote "^1.8.1" @@ -7226,9 +7010,9 @@ lilconfig@^2.0.3, lilconfig@^2.1.0: integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== lilconfig@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.1.tgz#9d8a246fa753106cfc205fd2d77042faca56e5e3" - integrity sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ== + version "3.1.2" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.2.tgz#e4a7c3cb549e3a606c8dcc32e5ae1005e62c05cb" + integrity sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow== lines-and-columns@^1.1.6: version "1.2.4" @@ -7250,9 +7034,9 @@ loader-utils@^2.0.0, loader-utils@^2.0.4: json5 "^2.1.2" loader-utils@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" - integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== + version "3.3.1" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.3.1.tgz#735b9a19fd63648ca7adbd31c2327dfe281304e5" + integrity sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg== locate-path@^3.0.0: version "3.0.0" @@ -7321,9 +7105,9 @@ lower-case@^2.0.2: tslib "^2.0.3" lru-cache@^10.2.0: - version "10.2.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" - integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== lru-cache@^5.1.1: version "5.1.1" @@ -7415,11 +7199,16 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.3" picomatch "^2.3.1" -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": +mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== +"mime-db@>= 1.43.0 < 2": + version "1.53.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.53.0.tgz#3cb63cd820fc29896d9d4e8c32ab4fcd74ccb447" + integrity sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg== + mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" @@ -7469,10 +7258,10 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" -minimatch@^9.0.1, minimatch@^9.0.4: - version "9.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" - integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== dependencies: brace-expansion "^2.0.1" @@ -7481,10 +7270,10 @@ minimist@^1.2.0, minimist@^1.2.6, minimist@^1.2.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4: - version "7.1.1" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.1.tgz#f7f85aff59aa22f110b20e27692465cf3bf89481" - integrity sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== mkdirp@~0.5.1: version "0.5.6" @@ -7589,10 +7378,10 @@ node-readfiles@^0.2.0: dependencies: es6-promise "^3.2.1" -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -7631,9 +7420,9 @@ nth-check@^2.0.1: boolbase "^1.0.0" nwsapi@^2.2.0: - version "2.2.10" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.10.tgz#0b77a68e21a0b483db70b11fad055906e867cda8" - integrity sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ== + version "2.2.12" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.12.tgz#fb6af5c0ec35b27b4581eb3bbad34ec9e5c696f8" + integrity sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w== oas-kit-common@^1.0.8: version "1.0.8" @@ -7703,9 +7492,9 @@ object-hash@^3.0.0: integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== object-inspect@^1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + version "1.13.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" + integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== object-is@^1.1.5: version "1.1.6" @@ -7730,7 +7519,7 @@ object.assign@^4.1.2, object.assign@^4.1.4, object.assign@^4.1.5: has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.5, object.entries@^1.1.7: +object.entries@^1.1.5, object.entries@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== @@ -7739,7 +7528,7 @@ object.entries@^1.1.5, object.entries@^1.1.7: define-properties "^1.2.1" es-object-atoms "^1.0.0" -object.fromentries@^2.0.7: +object.fromentries@^2.0.7, object.fromentries@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== @@ -7771,16 +7560,7 @@ object.groupby@^1.0.1: define-properties "^1.2.1" es-abstract "^1.23.2" -object.hasown@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.4.tgz#e270ae377e4c120cdcb7656ce66884a6218283dc" - integrity sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg== - dependencies: - define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - -object.values@^1.1.0, object.values@^1.1.6, object.values@^1.1.7: +object.values@^1.1.0, object.values@^1.1.6, object.values@^1.1.7, object.values@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== @@ -7901,6 +7681,11 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +package-json-from-dist@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00" + integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== + param-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" @@ -7969,7 +7754,7 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.11.0: +path-scurry@^1.11.1: version "1.11.1" resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== @@ -8336,11 +8121,11 @@ postcss-modules-values@^4.0.0: icss-utils "^5.0.0" postcss-nested@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" - integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== + version "6.2.0" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.2.0.tgz#4c2d22ab5f20b9cb61e2c5c5915950784d068131" + integrity sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ== dependencies: - postcss-selector-parser "^6.0.11" + postcss-selector-parser "^6.1.1" postcss-nesting@^10.2.0: version "10.2.0" @@ -8543,10 +8328,10 @@ postcss-selector-not@^6.0.1: dependencies: postcss-selector-parser "^6.0.10" -postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: - version "6.1.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz#49694cb4e7c649299fea510a29fa6577104bcf53" - integrity sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ== +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9, postcss-selector-parser@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz#5be94b277b8955904476a2400260002ce6c56e38" + integrity sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -8579,13 +8364,13 @@ postcss@^7.0.35: picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.33, postcss@^8.4.38, postcss@^8.4.4: - version "8.4.38" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" - integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== +postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.33, postcss@^8.4.39, postcss@^8.4.4: + version "8.4.41" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.41.tgz#d6104d3ba272d882fe18fc07d15dc2da62fa2681" + integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ== dependencies: nanoid "^3.3.7" - picocolors "^1.0.0" + picocolors "^1.0.1" source-map-js "^1.2.0" prelude-ls@^1.2.1: @@ -8770,13 +8555,13 @@ react-app-polyfill@^3.0.0: whatwg-fetch "^3.6.2" react-bootstrap@^2.10.2: - version "2.10.2" - resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-2.10.2.tgz#3b609eb0170e31b3d9ace297d3a016c202a42642" - integrity sha512-UvB7mRqQjivdZNxJNEA2yOQRB7L9N43nBnKc33K47+cH90/ujmnMwatTCwQLu83gLhrzAl8fsa6Lqig/KLghaA== + version "2.10.4" + resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-2.10.4.tgz#ed92f5f8225a44919a7707829bac879558b71b70" + integrity sha512-W3398nBM2CBfmGP2evneEO3ZZwEMPtHs72q++eNw60uDGDAdiGn0f9yNys91eo7/y8CTF5Ke1C0QO8JFVPU40Q== dependencies: - "@babel/runtime" "^7.22.5" + "@babel/runtime" "^7.24.7" "@restart/hooks" "^0.4.9" - "@restart/ui" "^1.6.8" + "@restart/ui" "^1.6.9" "@types/react-transition-group" "^4.4.6" classnames "^2.3.2" dom-helpers "^5.2.1" @@ -8831,9 +8616,9 @@ react-error-overlay@^6.0.11: integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== react-i18next@^14.1.2: - version "14.1.2" - resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-14.1.2.tgz#cd57a755f25a32a5fcc3dbe546cf3cc62b4f3ebd" - integrity sha512-FSIcJy6oauJbGEXfhUgVeLzvWBhIBIS+/9c6Lj4niwKZyGaGb4V4vUbATXSlsHJDXXB+ociNxqFNiFuV1gmoqg== + version "14.1.3" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-14.1.3.tgz#85525c4294ef870ddd3f5d184e793cae362f47cb" + integrity sha512-wZnpfunU6UIAiJ+bxwOiTmBOAaB14ha97MjOEnLGac2RJ+h/maIYXZuTHlmyqQVX1UVHmU1YDTQ5vxLmwfXTjw== dependencies: "@babel/runtime" "^7.23.9" html-parse-stringify "^3.0.1" @@ -8877,19 +8662,19 @@ react-refresh@^0.14.2: integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== react-router-dom@^6.23.1: - version "6.23.1" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.23.1.tgz#30cbf266669693e9492aa4fc0dde2541ab02322f" - integrity sha512-utP+K+aSTtEdbWpC+4gxhdlPFwuEfDKq8ZrPFU65bbRJY+l706qjR7yaidBpo3MSeA/fzwbXWbKBI6ftOnP3OQ== + version "6.26.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.26.0.tgz#8debe13295c58605c04f93018d659a763245e58c" + integrity sha512-RRGUIiDtLrkX3uYcFiCIxKFWMcWQGMojpYZfcstc63A1+sSnVgILGIm9gNUA6na3Fm1QuPGSBQH2EMbAZOnMsQ== dependencies: - "@remix-run/router" "1.16.1" - react-router "6.23.1" + "@remix-run/router" "1.19.0" + react-router "6.26.0" -react-router@6.23.1: - version "6.23.1" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.23.1.tgz#d08cbdbd9d6aedc13eea6e94bc6d9b29cb1c4be9" - integrity sha512-fzcOaRF69uvqbbM7OhvQyBTFDVrrGlsFdS3AL+1KfIBtGETibHzi3FkoTRyiDJnWNc2VxrfvR+657ROHjaNjqQ== +react-router@6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.26.0.tgz#d5af4c46835b202348ef2b7ddacd32a2db539fde" + integrity sha512-wVQq0/iFYd3iZ9H2l3N3k4PL8EEHcb0XlU2Na8nEwmiXgIUElEH6gaJDtUQxJ+JFzmIXaQjfdpcGWaM6IoQGxg== dependencies: - "@remix-run/router" "1.16.1" + "@remix-run/router" "1.19.0" react-scripts@5.0.1: version "5.0.1" @@ -9021,6 +8806,11 @@ redent@^3.0.0: indent-string "^4.0.0" strip-indent "^3.0.0" +redux-observable@^3.0.0-rc.2: + version "3.0.0-rc.2" + resolved "https://registry.yarnpkg.com/redux-observable/-/redux-observable-3.0.0-rc.2.tgz#baef603781c5dabd9ddd70526357076cd5c128a2" + integrity sha512-gG/pWIKgSrcTyyavm2so5tc7tuyCQ47p3VdCAG6wt+CV0WGhDr50cMQHLcYKxFZSGgTm19a8ZmyfJGndmGDpYg== + redux-persist@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/redux-persist/-/redux-persist-6.0.0.tgz#b4d2972f9859597c130d40d4b146fecdab51b3a8" @@ -9149,9 +8939,9 @@ requires-port@^1.0.0: integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== reselect@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-5.1.0.tgz#c479139ab9dd91be4d9c764a7f3868210ef8cd21" - integrity sha512-aw7jcGLDpSgNDyWBQLv2cedml85qd95/iszJjN988zX1t7AVRJi19d9kto5+W7oCfQ94gyo40dVbT6g2k4/kXg== + version "5.1.1" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-5.1.1.tgz#c766b1eb5d558291e5e550298adb0becc24bb72e" + integrity sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w== resolve-cwd@^3.0.0: version "3.0.0" @@ -9239,28 +9029,28 @@ rollup@^2.43.1: fsevents "~2.3.2" rollup@^4.13.0: - version "4.18.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.18.0.tgz#497f60f0c5308e4602cf41136339fbf87d5f5dda" - integrity sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg== + version "4.20.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.20.0.tgz#f9d602161d29e178f0bf1d9f35f0a26f83939492" + integrity sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw== dependencies: "@types/estree" "1.0.5" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.18.0" - "@rollup/rollup-android-arm64" "4.18.0" - "@rollup/rollup-darwin-arm64" "4.18.0" - "@rollup/rollup-darwin-x64" "4.18.0" - "@rollup/rollup-linux-arm-gnueabihf" "4.18.0" - "@rollup/rollup-linux-arm-musleabihf" "4.18.0" - "@rollup/rollup-linux-arm64-gnu" "4.18.0" - "@rollup/rollup-linux-arm64-musl" "4.18.0" - "@rollup/rollup-linux-powerpc64le-gnu" "4.18.0" - "@rollup/rollup-linux-riscv64-gnu" "4.18.0" - "@rollup/rollup-linux-s390x-gnu" "4.18.0" - "@rollup/rollup-linux-x64-gnu" "4.18.0" - "@rollup/rollup-linux-x64-musl" "4.18.0" - "@rollup/rollup-win32-arm64-msvc" "4.18.0" - "@rollup/rollup-win32-ia32-msvc" "4.18.0" - "@rollup/rollup-win32-x64-msvc" "4.18.0" + "@rollup/rollup-android-arm-eabi" "4.20.0" + "@rollup/rollup-android-arm64" "4.20.0" + "@rollup/rollup-darwin-arm64" "4.20.0" + "@rollup/rollup-darwin-x64" "4.20.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.20.0" + "@rollup/rollup-linux-arm-musleabihf" "4.20.0" + "@rollup/rollup-linux-arm64-gnu" "4.20.0" + "@rollup/rollup-linux-arm64-musl" "4.20.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.20.0" + "@rollup/rollup-linux-riscv64-gnu" "4.20.0" + "@rollup/rollup-linux-s390x-gnu" "4.20.0" + "@rollup/rollup-linux-x64-gnu" "4.20.0" + "@rollup/rollup-linux-x64-musl" "4.20.0" + "@rollup/rollup-win32-arm64-msvc" "4.20.0" + "@rollup/rollup-win32-ia32-msvc" "4.20.0" + "@rollup/rollup-win32-x64-msvc" "4.20.0" fsevents "~2.3.2" run-parallel@^1.1.9: @@ -9318,9 +9108,9 @@ sass-loader@^12.3.0: neo-async "^2.6.2" sass@^1.77.2: - version "1.77.2" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.2.tgz#18d4ed2eefc260cdc8099c5439ec1303fd5863aa" - integrity sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA== + version "1.77.8" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.8.tgz#9f18b449ea401759ef7ec1752a16373e296b52bd" + integrity sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -9372,7 +9162,7 @@ schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: ajv "^6.12.5" ajv-keywords "^3.5.2" -schema-utils@^4.0.0: +schema-utils@^4.0.0, schema-utils@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== @@ -9401,9 +9191,9 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0: - version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== send@0.18.0: version "0.18.0" @@ -9755,7 +9545,15 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string.prototype.matchall@^4.0.10, string.prototype.matchall@^4.0.6: +string.prototype.includes@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz#8986d57aee66d5460c144620a6d873778ad7289f" + integrity sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string.prototype.matchall@^4.0.11, string.prototype.matchall@^4.0.6: version "4.0.11" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a" integrity sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg== @@ -9773,6 +9571,14 @@ string.prototype.matchall@^4.0.10, string.prototype.matchall@^4.0.6: set-function-name "^2.0.2" side-channel "^1.0.6" +string.prototype.repeat@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz#e90872ee0308b29435aa26275f6e1b762daee01a" + integrity sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string.prototype.trim@^1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4" @@ -9990,9 +9796,9 @@ symbol-tree@^3.2.4: integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== tailwindcss@^3.0.2: - version "3.4.3" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.3.tgz#be48f5283df77dfced705451319a5dffb8621519" - integrity sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A== + version "3.4.7" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.7.tgz#6092f18767f5933f59375b9afe558e592fc77201" + integrity sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ== dependencies: "@alloc/quick-lru" "^5.2.0" arg "^5.0.2" @@ -10062,9 +9868,9 @@ terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.10: terser "^5.26.0" terser@^5.0.0, terser@^5.10.0, terser@^5.26.0: - version "5.31.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.0.tgz#06eef86f17007dbad4593f11a574c7f5eb02c6a1" - integrity sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg== + version "5.31.3" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.3.tgz#b24b7beb46062f4653f049eea4f0cd165d0f0c38" + integrity sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -10191,9 +9997,9 @@ tslib@^1.8.1: integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.0.3, tslib@^2.4.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + version "2.6.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== tsutils@^3.21.0: version "3.21.0" @@ -10296,9 +10102,9 @@ typedarray-to-buffer@^3.1.5: is-typedarray "^1.0.0" typescript@^5.0.0, typescript@^5.2.2: - version "5.4.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" - integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== + version "5.5.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" + integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== unbox-primitive@^1.0.2: version "1.0.2" @@ -10330,10 +10136,10 @@ underscore@1.12.1: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e" integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== +undici-types@~6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.13.0.tgz#e3e79220ab8c81ed1496b5812471afd7cf075ea5" + integrity sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" @@ -10390,15 +10196,15 @@ upath@^1.2.0: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-browserslist-db@^1.0.13: - version "1.0.16" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz#f6d489ed90fb2f07d67784eb3f53d7891f736356" - integrity sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ== +update-browserslist-db@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" + integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== dependencies: escalade "^3.1.2" picocolors "^1.0.1" -uri-js@^4.2.2, uri-js@^4.4.1: +uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== @@ -10463,12 +10269,12 @@ vary@~1.1.2: integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== vite@^5.2.0: - version "5.2.11" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.11.tgz#726ec05555431735853417c3c0bfb36003ca0cbd" - integrity sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ== + version "5.3.5" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.3.5.tgz#b847f846fb2b6cb6f6f4ed50a830186138cb83d8" + integrity sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA== dependencies: - esbuild "^0.20.1" - postcss "^8.4.38" + esbuild "^0.21.3" + postcss "^8.4.39" rollup "^4.13.0" optionalDependencies: fsevents "~2.3.3" @@ -10623,9 +10429,9 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.64.4: - version "5.91.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.91.0.tgz#ffa92c1c618d18c878f06892bbdc3373c71a01d9" - integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw== + version "5.93.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.93.0.tgz#2e89ec7035579bdfba9760d26c63ac5c3462a5e5" + integrity sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^1.0.5" @@ -10633,10 +10439,10 @@ webpack@^5.64.4: "@webassemblyjs/wasm-edit" "^1.12.1" "@webassemblyjs/wasm-parser" "^1.12.1" acorn "^8.7.1" - acorn-import-assertions "^1.9.0" + acorn-import-attributes "^1.9.5" browserslist "^4.21.10" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.16.0" + enhanced-resolve "^5.17.0" es-module-lexer "^1.2.1" eslint-scope "5.1.1" events "^3.2.0" @@ -10721,12 +10527,12 @@ which-boxed-primitive@^1.0.2: is-symbol "^1.0.3" which-builtin-type@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" - integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + version "1.1.4" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.4.tgz#592796260602fc3514a1b5ee7fa29319b72380c3" + integrity sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w== dependencies: - function.prototype.name "^1.1.5" - has-tostringtag "^1.0.0" + function.prototype.name "^1.1.6" + has-tostringtag "^1.0.2" is-async-function "^2.0.0" is-date-object "^1.0.5" is-finalizationregistry "^1.0.2" @@ -10735,10 +10541,10 @@ which-builtin-type@^1.1.3: is-weakref "^1.0.2" isarray "^2.0.5" which-boxed-primitive "^1.0.2" - which-collection "^1.0.1" - which-typed-array "^1.1.9" + which-collection "^1.0.2" + which-typed-array "^1.1.15" -which-collection@^1.0.1: +which-collection@^1.0.1, which-collection@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== @@ -10748,7 +10554,7 @@ which-collection@^1.0.1: is-weakmap "^2.0.2" is-weakset "^2.0.3" -which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9: +which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15: version "1.1.15" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== @@ -10981,14 +10787,14 @@ write-file-atomic@^3.0.0: typedarray-to-buffer "^3.1.5" ws@^7.4.6: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== ws@^8.13.0: - version "8.17.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea" - integrity sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow== + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== xml-name-validator@^3.0.0: version "3.0.0" @@ -11016,9 +10822,9 @@ yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yaml@^2.3.4: - version "2.4.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.2.tgz#7a2b30f2243a5fc299e1f14ca58d475ed4bc5362" - integrity sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA== + version "2.5.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.0.tgz#c6165a721cf8000e91c36490a41d7be25176cf5d" + integrity sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw== yargs-parser@^20.2.2: version "20.2.9" -- GitLab From 18df8b3f6800b98385190d1e3e9372a8425ab6c1 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Tue, 6 Aug 2024 14:58:41 +0200 Subject: [PATCH 13/44] update major versions --- react-ui/package.json | 26 +- react-ui/yarn.lock | 549 +++++++++++++++++++++--------------------- 2 files changed, 294 insertions(+), 281 deletions(-) diff --git a/react-ui/package.json b/react-ui/package.json index 4338429b3..c178d3acb 100644 --- a/react-ui/package.json +++ b/react-ui/package.json @@ -4,15 +4,15 @@ "private": true, "dependencies": { "@reduxjs/toolkit": "^2.2.4", - "@testing-library/jest-dom": "^5.17.0", - "@testing-library/react": "^13.4.0", - "@testing-library/user-event": "^13.5.0", + "@testing-library/jest-dom": "^6.4.8", + "@testing-library/react": "^16.0.0", + "@testing-library/user-event": "^14.5.2", "bootstrap": "^5.3.3", "i18next": "^23.11.5", "react": "^18.3.1", "react-bootstrap": "^2.10.2", "react-dom": "^18.3.1", - "react-i18next": "^14.1.2", + "react-i18next": "^15.0.0", "react-redux": "^9.1.2", "react-router-dom": "^6.23.1", "react-scripts": "5.0.1", @@ -20,7 +20,7 @@ "redux": "^5.0.1", "redux-observable": "^3.0.0-rc.2", "redux-persist": "^6.0.0", - "web-vitals": "^2.1.4" + "web-vitals": "^4.2.2" }, "scripts": { "start": "vite", @@ -55,20 +55,20 @@ "@rtk-query/codegen-openapi": "^1.2.0", "@types/react": "^18.2.66", "@types/react-dom": "^18.2.22", - "@typescript-eslint/eslint-plugin": "^7.2.0", - "@typescript-eslint/parser": "^7.2.0", + "@typescript-eslint/eslint-plugin": "^8.0.1", + "@typescript-eslint/parser": "^8.0.1", "@vitejs/plugin-react": "^4.2.1", - "eslint": "^8.57.0", - "eslint-config-airbnb-typescript": "^16.1.0", - "eslint-config-prettier": "^8.0.0", + "eslint": "^9.8.0", + "eslint-config-airbnb-typescript": "^18.0.0", + "eslint-config-prettier": "^9.1.0", "eslint-plugin-import": "^2.27.5", "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.6", - "prettier": "^2.0.0", - "sass": "^1.77.2", + "prettier": "^3.3.3", + "sass": "1.77.6", "typescript": "^5.2.2", "vite": "^5.2.0" } diff --git a/react-ui/yarn.lock b/react-ui/yarn.lock index 5bfb5210f..b08ab4c98 100644 --- a/react-ui/yarn.lock +++ b/react-ui/yarn.lock @@ -2,7 +2,7 @@ # yarn lockfile v1 -"@adobe/css-tools@^4.0.1": +"@adobe/css-tools@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.4.0.tgz#728c484f4e10df03d5a3acd0d8adcbbebff8ad63" integrity sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ== @@ -1154,7 +1154,7 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.21.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.9", "@babel/runtime@^7.24.7", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.21.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.24.7", "@babel/runtime@^7.24.8", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.25.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.0.tgz#3af9a91c1b739c569d5d80cc917280919c544ecb" integrity sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw== @@ -1430,11 +1430,20 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.11.0", "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": version "4.11.0" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae" integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== +"@eslint/config-array@^0.17.1": + version "0.17.1" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.17.1.tgz#d9b8b8b6b946f47388f32bedfd3adf29ca8f8910" + integrity sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA== + dependencies: + "@eslint/object-schema" "^2.1.4" + debug "^4.3.1" + minimatch "^3.1.2" + "@eslint/eslintrc@^2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" @@ -1450,11 +1459,36 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" +"@eslint/eslintrc@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.1.0.tgz#dbd3482bfd91efa663cbe7aa1f506839868207b6" + integrity sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^10.0.1" + globals "^14.0.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + "@eslint/js@8.57.0": version "8.57.0" resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== +"@eslint/js@9.8.0": + version "9.8.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.8.0.tgz#ae9bc14bb839713c5056f5018bcefa955556d3a4" + integrity sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA== + +"@eslint/object-schema@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.4.tgz#9e69f8bb4031e11df79e03db09f9dbbae1740843" + integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ== + "@exodus/schemasafe@^1.0.0-rc.2": version "1.3.0" resolved "https://registry.yarnpkg.com/@exodus/schemasafe/-/schemasafe-1.3.0.tgz#731656abe21e8e769a7f70a4d833e6312fe59b7f" @@ -1479,6 +1513,11 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== +"@humanwhocodes/retry@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.0.tgz#6d86b8cb322660f03d3f0aa94b99bdd8e172d570" + integrity sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew== + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -1575,13 +1614,6 @@ "@types/node" "*" jest-mock "^27.5.1" -"@jest/expect-utils@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" - integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== - dependencies: - jest-get-type "^29.6.3" - "@jest/fake-timers@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" @@ -1641,13 +1673,6 @@ dependencies: "@sinclair/typebox" "^0.24.1" -"@jest/schemas@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" - integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== - dependencies: - "@sinclair/typebox" "^0.27.8" - "@jest/source-map@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" @@ -1731,18 +1756,6 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" -"@jest/types@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" - integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== - dependencies: - "@jest/schemas" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - "@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": version "0.3.5" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" @@ -1826,6 +1839,11 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== +"@pkgr/core@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" + integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== + "@pmmmwh/react-refresh-webpack-plugin@^0.5.3": version "0.5.15" resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.15.tgz#f126be97c30b83ed777e2aeabd518bc592e6e7c4" @@ -2028,11 +2046,6 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== -"@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== - "@sinonjs/commons@^1.7.0": version "1.8.6" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" @@ -2167,50 +2180,31 @@ dependencies: tslib "^2.4.0" -"@testing-library/dom@^8.5.0": - version "8.20.1" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.20.1.tgz#2e52a32e46fc88369eef7eef634ac2a192decd9f" - integrity sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/runtime" "^7.12.5" - "@types/aria-query" "^5.0.1" - aria-query "5.1.3" - chalk "^4.1.0" - dom-accessibility-api "^0.5.9" - lz-string "^1.5.0" - pretty-format "^27.0.2" - -"@testing-library/jest-dom@^5.17.0": - version "5.17.0" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz#5e97c8f9a15ccf4656da00fecab505728de81e0c" - integrity sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg== +"@testing-library/jest-dom@^6.4.8": + version "6.4.8" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.4.8.tgz#9c435742b20c6183d4e7034f2b329d562c079daa" + integrity sha512-JD0G+Zc38f5MBHA4NgxQMR5XtO5Jx9g86jqturNTt2WUfRmLDIY7iKkWHDCCTiDuFMre6nxAD5wHw9W5kI4rGw== dependencies: - "@adobe/css-tools" "^4.0.1" + "@adobe/css-tools" "^4.4.0" "@babel/runtime" "^7.9.2" - "@types/testing-library__jest-dom" "^5.9.1" aria-query "^5.0.0" chalk "^3.0.0" css.escape "^1.5.1" - dom-accessibility-api "^0.5.6" - lodash "^4.17.15" + dom-accessibility-api "^0.6.3" + lodash "^4.17.21" redent "^3.0.0" -"@testing-library/react@^13.4.0": - version "13.4.0" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-13.4.0.tgz#6a31e3bf5951615593ad984e96b9e5e2d9380966" - integrity sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw== +"@testing-library/react@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-16.0.0.tgz#0a1e0c7a3de25841c3591b8cb7fb0cf0c0a27321" + integrity sha512-guuxUKRWQ+FgNX0h0NS0FIq3Q3uLtWVpBzcLOggmfMoUpgBnzBzvLLd4fbm6yS8ydJd94cIfY4yP9qUQjM2KwQ== dependencies: "@babel/runtime" "^7.12.5" - "@testing-library/dom" "^8.5.0" - "@types/react-dom" "^18.0.0" -"@testing-library/user-event@^13.5.0": - version "13.5.0" - resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-13.5.0.tgz#69d77007f1e124d55314a2b73fd204b333b13295" - integrity sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg== - dependencies: - "@babel/runtime" "^7.12.5" +"@testing-library/user-event@^14.5.2": + version "14.5.2" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.5.2.tgz#db7257d727c891905947bd1c1a99da20e03c2ebd" + integrity sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ== "@tootallnate/once@1": version "1.1.2" @@ -2222,11 +2216,6 @@ resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== -"@types/aria-query@^5.0.1": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.4.tgz#1a31c3d378850d2778dabb6374d036dcba4ba708" - integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw== - "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.20.5": version "7.20.5" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" @@ -2387,14 +2376,6 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@*": - version "29.5.12" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.12.tgz#7f7dc6eb4cf246d2474ed78744b05d06ce025544" - integrity sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw== - dependencies: - expect "^29.0.0" - pretty-format "^29.0.0" - "@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" @@ -2454,7 +2435,7 @@ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== -"@types/react-dom@^18.0.0", "@types/react-dom@^18.2.22": +"@types/react-dom@^18.2.22": version "18.3.0" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.0.tgz#0cbc818755d87066ab6ca74fbedb2547d74a82b0" integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg== @@ -2529,13 +2510,6 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== -"@types/testing-library__jest-dom@^5.9.1": - version "5.14.9" - resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz#0fb1e6a0278d87b6737db55af5967570b67cb466" - integrity sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw== - dependencies: - "@types/jest" "*" - "@types/trusted-types@^2.0.2": version "2.0.7" resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" @@ -2593,16 +2567,16 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/eslint-plugin@^7.2.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz#b16d3cf3ee76bf572fdf511e79c248bdec619ea3" - integrity sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw== +"@typescript-eslint/eslint-plugin@^8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.1.tgz#5dbd1b498fdea83a16d292322d27d293ce156f94" + integrity sha512-5g3Y7GDFsJAnY4Yhvk8sZtFfV6YNF2caLzjrRPUBzewjPCaj0yokePB4LJSobyCzGMzjZZYFbwuzbfDHlimXbQ== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "7.18.0" - "@typescript-eslint/type-utils" "7.18.0" - "@typescript-eslint/utils" "7.18.0" - "@typescript-eslint/visitor-keys" "7.18.0" + "@typescript-eslint/scope-manager" "8.0.1" + "@typescript-eslint/type-utils" "8.0.1" + "@typescript-eslint/utils" "8.0.1" + "@typescript-eslint/visitor-keys" "8.0.1" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" @@ -2625,15 +2599,15 @@ "@typescript-eslint/typescript-estree" "5.62.0" debug "^4.3.4" -"@typescript-eslint/parser@^7.2.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.18.0.tgz#83928d0f1b7f4afa974098c64b5ce6f9051f96a0" - integrity sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg== +"@typescript-eslint/parser@^8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.0.1.tgz#eb0728147a3a79edf43dde84c797f117213bbfdb" + integrity sha512-5IgYJ9EO/12pOUwiBKFkpU7rS3IU21mtXzB81TNwq2xEybcmAZrE9qwDtsb5uQd9aVO9o0fdabFyAmKveXyujg== dependencies: - "@typescript-eslint/scope-manager" "7.18.0" - "@typescript-eslint/types" "7.18.0" - "@typescript-eslint/typescript-estree" "7.18.0" - "@typescript-eslint/visitor-keys" "7.18.0" + "@typescript-eslint/scope-manager" "8.0.1" + "@typescript-eslint/types" "8.0.1" + "@typescript-eslint/typescript-estree" "8.0.1" + "@typescript-eslint/visitor-keys" "8.0.1" debug "^4.3.4" "@typescript-eslint/scope-manager@5.62.0": @@ -2644,13 +2618,13 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/scope-manager@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz#c928e7a9fc2c0b3ed92ab3112c614d6bd9951c83" - integrity sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA== +"@typescript-eslint/scope-manager@8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.0.1.tgz#544259c29e1ebf65d30b6e99a9f420d98795a54e" + integrity sha512-NpixInP5dm7uukMiRyiHjRKkom5RIFA4dfiHvalanD2cF0CLUuQqxfg8PtEUo9yqJI2bBhF+pcSafqnG3UBnRQ== dependencies: - "@typescript-eslint/types" "7.18.0" - "@typescript-eslint/visitor-keys" "7.18.0" + "@typescript-eslint/types" "8.0.1" + "@typescript-eslint/visitor-keys" "8.0.1" "@typescript-eslint/type-utils@5.62.0": version "5.62.0" @@ -2662,13 +2636,13 @@ debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/type-utils@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz#2165ffaee00b1fbbdd2d40aa85232dab6998f53b" - integrity sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA== +"@typescript-eslint/type-utils@8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.0.1.tgz#a613ee2dfeed4a9781300b5d326ec7cf946eed92" + integrity sha512-+/UT25MWvXeDX9YaHv1IS6KI1fiuTto43WprE7pgSMswHbn1Jm9GEM4Txp+X74ifOWV8emu2AWcbLhpJAvD5Ng== dependencies: - "@typescript-eslint/typescript-estree" "7.18.0" - "@typescript-eslint/utils" "7.18.0" + "@typescript-eslint/typescript-estree" "8.0.1" + "@typescript-eslint/utils" "8.0.1" debug "^4.3.4" ts-api-utils "^1.3.0" @@ -2677,10 +2651,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/types@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.18.0.tgz#b90a57ccdea71797ffffa0321e744f379ec838c9" - integrity sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ== +"@typescript-eslint/types@8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.0.1.tgz#333e2f4c158952dbc8181a4ddcc6e49898a28918" + integrity sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" @@ -2695,13 +2669,13 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz#b5868d486c51ce8f312309ba79bdb9f331b37931" - integrity sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA== +"@typescript-eslint/typescript-estree@8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.1.tgz#64575ec7b77aedfe497acdfb2779ec942bb8d866" + integrity sha512-8V9hriRvZQXPWU3bbiUV4Epo7EvgM6RTs+sUmxp5G//dBGy402S7Fx0W0QkB2fb4obCF8SInoUzvTYtc3bkb5w== dependencies: - "@typescript-eslint/types" "7.18.0" - "@typescript-eslint/visitor-keys" "7.18.0" + "@typescript-eslint/types" "8.0.1" + "@typescript-eslint/visitor-keys" "8.0.1" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -2723,15 +2697,15 @@ eslint-scope "^5.1.1" semver "^7.3.7" -"@typescript-eslint/utils@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.18.0.tgz#bca01cde77f95fc6a8d5b0dbcbfb3d6ca4be451f" - integrity sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw== +"@typescript-eslint/utils@8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.0.1.tgz#b48e3320c4f9011f97d25e0588b8c143adc38d2a" + integrity sha512-CBFR0G0sCt0+fzfnKaciu9IBsKvEKYwN9UZ+eeogK1fYHg4Qxk1yf/wLQkLXlq8wbU2dFlgAesxt8Gi76E8RTA== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "7.18.0" - "@typescript-eslint/types" "7.18.0" - "@typescript-eslint/typescript-estree" "7.18.0" + "@typescript-eslint/scope-manager" "8.0.1" + "@typescript-eslint/types" "8.0.1" + "@typescript-eslint/typescript-estree" "8.0.1" "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" @@ -2741,12 +2715,12 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz#0564629b6124d67607378d0f0332a0495b25e7d7" - integrity sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg== +"@typescript-eslint/visitor-keys@8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.1.tgz#e5816803b4dad1de5e97f00df8dc15d0bcb49778" + integrity sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ== dependencies: - "@typescript-eslint/types" "7.18.0" + "@typescript-eslint/types" "8.0.1" eslint-visitor-keys "^3.4.3" "@ungap/structured-clone@^1.2.0": @@ -2937,7 +2911,7 @@ acorn@^7.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.12.0, acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: version "8.12.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== @@ -3087,13 +3061,6 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@5.1.3, aria-query@~5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" - integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== - dependencies: - deep-equal "^2.0.5" - aria-query@^5.0.0: version "5.3.0" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" @@ -3101,6 +3068,13 @@ aria-query@^5.0.0: dependencies: dequal "^2.0.3" +aria-query@~5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + dependencies: + deep-equal "^2.0.5" + array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" @@ -4314,11 +4288,6 @@ diff-sequences@^27.5.1: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== -diff-sequences@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" - integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -4352,10 +4321,10 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: - version "0.5.16" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" - integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== +dom-accessibility-api@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz#993e925cc1d73f2c662e7d75dd5a5445259a8fd8" + integrity sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w== dom-converter@^0.2.0: version "0.2.0" @@ -4765,17 +4734,17 @@ eslint-config-airbnb-base@^15.0.0: object.entries "^1.1.5" semver "^6.3.0" -eslint-config-airbnb-typescript@^16.1.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-16.2.0.tgz#9193fafd62f1cbf444895f4495eae334baf3265b" - integrity sha512-OUaMPZpTOZGKd5tXOjJ9PRU4iYNW/Z5DoHIynjsVK/FpkWdiY5+nxQW6TiJAlLwVI1l53xUOrnlZWtVBVQzuWA== +eslint-config-airbnb-typescript@^18.0.0: + version "18.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-18.0.0.tgz#b1646db4134858d704b1d2bee47e1d72c180315f" + integrity sha512-oc+Lxzgzsu8FQyFVa4QFaVKiitTYiiW3frB9KYW5OWdPrqFc7FzxgB20hP4cHMlr+MBzGcLl3jnCOVOydL9mIg== dependencies: eslint-config-airbnb-base "^15.0.0" -eslint-config-prettier@^8.0.0: - version "8.10.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz#3a06a662130807e2502fc3ff8b4143d8a0658e11" - integrity sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg== +eslint-config-prettier@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" + integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== eslint-config-react-app@^7.0.1: version "7.0.1" @@ -4873,12 +4842,13 @@ eslint-plugin-jsx-a11y@^6.5.1, eslint-plugin-jsx-a11y@^6.7.1: safe-regex-test "^1.0.3" string.prototype.includes "^2.0.0" -eslint-plugin-prettier@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" - integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== +eslint-plugin-prettier@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz#d1c8f972d8f60e414c25465c163d16f209411f95" + integrity sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw== dependencies: prettier-linter-helpers "^1.0.0" + synckit "^0.9.1" eslint-plugin-react-hooks@^4.3.0, eslint-plugin-react-hooks@^4.6.0: version "4.6.2" @@ -4937,6 +4907,14 @@ eslint-scope@^7.2.2: esrecurse "^4.3.0" estraverse "^5.2.0" +eslint-scope@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.0.2.tgz#5cbb33d4384c9136083a71190d548158fe128f94" + integrity sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + eslint-visitor-keys@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" @@ -4947,6 +4925,11 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== +eslint-visitor-keys@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb" + integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw== + eslint-webpack-plugin@^3.1.1: version "3.2.0" resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz#1978cdb9edc461e4b0195a20da950cf57988347c" @@ -4958,7 +4941,7 @@ eslint-webpack-plugin@^3.1.1: normalize-path "^3.0.0" schema-utils "^4.0.0" -eslint@^8.3.0, eslint@^8.57.0: +eslint@^8.3.0: version "8.57.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== @@ -5002,6 +4985,55 @@ eslint@^8.3.0, eslint@^8.57.0: strip-ansi "^6.0.1" text-table "^0.2.0" +eslint@^9.8.0: + version "9.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.8.0.tgz#a4f4a090c8ea2d10864d89a6603e02ce9f649f0f" + integrity sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.11.0" + "@eslint/config-array" "^0.17.1" + "@eslint/eslintrc" "^3.1.0" + "@eslint/js" "9.8.0" + "@humanwhocodes/module-importer" "^1.0.1" + "@humanwhocodes/retry" "^0.3.0" + "@nodelib/fs.walk" "^1.2.8" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + escape-string-regexp "^4.0.0" + eslint-scope "^8.0.2" + eslint-visitor-keys "^4.0.0" + espree "^10.1.0" + esquery "^1.5.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^8.0.0" + find-up "^5.0.0" + glob-parent "^6.0.2" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^10.0.1, espree@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.1.0.tgz#8788dae611574c0f070691f522e4116c5a11fc56" + integrity sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA== + dependencies: + acorn "^8.12.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.0.0" + espree@^9.6.0, espree@^9.6.1: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" @@ -5021,7 +5053,7 @@ esprima@^4.0.0, esprima@^4.0.1: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.2: +esquery@^1.4.2, esquery@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== @@ -5100,17 +5132,6 @@ expect@^27.5.1: jest-matcher-utils "^27.5.1" jest-message-util "^27.5.1" -expect@^29.0.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" - integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== - dependencies: - "@jest/expect-utils" "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - express@^4.17.3: version "4.19.2" resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" @@ -5217,6 +5238,13 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== + dependencies: + flat-cache "^4.0.0" + file-loader@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" @@ -5298,6 +5326,14 @@ flat-cache@^3.0.4: keyv "^4.5.3" rimraf "^3.0.2" +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.4" + flatted@^3.2.9: version "3.3.1" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" @@ -5536,6 +5572,11 @@ globals@^13.19.0: dependencies: type-fest "^0.20.2" +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== + globalthis@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" @@ -6356,16 +6397,6 @@ jest-diff@^27.5.1: jest-get-type "^27.5.1" pretty-format "^27.5.1" -jest-diff@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" - integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== - dependencies: - chalk "^4.0.0" - diff-sequences "^29.6.3" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - jest-docblock@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" @@ -6414,11 +6445,6 @@ jest-get-type@^27.5.1: resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== -jest-get-type@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" - integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== - jest-haste-map@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" @@ -6480,16 +6506,6 @@ jest-matcher-utils@^27.5.1: jest-get-type "^27.5.1" pretty-format "^27.5.1" -jest-matcher-utils@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" - integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== - dependencies: - chalk "^4.0.0" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - jest-message-util@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" @@ -6520,21 +6536,6 @@ jest-message-util@^28.1.3: slash "^3.0.0" stack-utils "^2.0.3" -jest-message-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" - integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.6.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - stack-utils "^2.0.3" - jest-mock@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" @@ -6698,18 +6699,6 @@ jest-util@^28.1.3: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" - integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - jest-validate@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" @@ -6941,7 +6930,7 @@ jsonpointer@^5.0.0: object.assign "^4.1.4" object.values "^1.1.6" -keyv@^4.5.3: +keyv@^4.5.3, keyv@^4.5.4: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== @@ -7085,7 +7074,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== -lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: +lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -7116,11 +7105,6 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" -lz-string@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" - integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== - magic-string@^0.25.0, magic-string@^0.25.7: version "0.25.9" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" @@ -8390,11 +8374,16 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.0.0, prettier@^2.2.1: +prettier@^2.2.1: version "2.8.8" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== +prettier@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" + integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== + pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: version "5.6.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" @@ -8408,7 +8397,7 @@ pretty-error@^4.0.0: lodash "^4.17.20" renderkid "^3.0.0" -pretty-format@^27.0.2, pretty-format@^27.5.1: +pretty-format@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== @@ -8427,15 +8416,6 @@ pretty-format@^28.1.3: ansi-styles "^5.0.0" react-is "^18.0.0" -pretty-format@^29.0.0, pretty-format@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" - integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== - dependencies: - "@jest/schemas" "^29.6.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -8615,12 +8595,12 @@ react-error-overlay@^6.0.11: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== -react-i18next@^14.1.2: - version "14.1.3" - resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-14.1.3.tgz#85525c4294ef870ddd3f5d184e793cae362f47cb" - integrity sha512-wZnpfunU6UIAiJ+bxwOiTmBOAaB14ha97MjOEnLGac2RJ+h/maIYXZuTHlmyqQVX1UVHmU1YDTQ5vxLmwfXTjw== +react-i18next@^15.0.0: + version "15.0.0" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-15.0.0.tgz#4980f8edf85b9df6573d6b12d95aca5b8f0cc8b0" + integrity sha512-2O3IgF4zivg57Q6p6i+ChDgJ371IDcEWbuWC6gvoh5NbkDMs0Q+O7RPr4v61+Se32E0V+LmtwePAeqWZW0bi6g== dependencies: - "@babel/runtime" "^7.23.9" + "@babel/runtime" "^7.24.8" html-parse-stringify "^3.0.1" react-is@^16.13.1, react-is@^16.3.2: @@ -9107,10 +9087,10 @@ sass-loader@^12.3.0: klona "^2.0.4" neo-async "^2.6.2" -sass@^1.77.2: - version "1.77.8" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.8.tgz#9f18b449ea401759ef7ec1752a16373e296b52bd" - integrity sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ== +sass@1.77.6: + version "1.77.6" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.6.tgz#898845c1348078c2e6d1b64f9ee06b3f8bd489e4" + integrity sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -9527,7 +9507,16 @@ string-natural-compare@^3.0.1: resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -9630,7 +9619,14 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -9795,6 +9791,14 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +synckit@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.1.tgz#febbfbb6649979450131f64735aa3f6c14575c88" + integrity sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A== + dependencies: + "@pkgr/core" "^0.1.0" + tslib "^2.6.2" + tailwindcss@^3.0.2: version "3.4.7" resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.7.tgz#6092f18767f5933f59375b9afe558e592fc77201" @@ -9996,7 +10000,7 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.3, tslib@^2.4.0: +tslib@^2.0.3, tslib@^2.4.0, tslib@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== @@ -10327,10 +10331,10 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -web-vitals@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-2.1.4.tgz#76563175a475a5e835264d373704f9dde718290c" - integrity sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg== +web-vitals@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-4.2.2.tgz#e883245180b95e175eb75a5ca8903b1a11597d7a" + integrity sha512-nYfoOqb4EmElljyXU2qdeE76KsvoHdftQKY4DzA9Aw8DervCg2bG634pHLrJ/d6+B4mE3nWTSJv8Mo7B2mbZkw== webidl-conversions@^3.0.0: version "3.0.1" @@ -10753,7 +10757,16 @@ workbox-window@6.6.1: "@types/trusted-types" "^2.0.2" workbox-core "6.6.1" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== -- GitLab From 96f63b2851bd5bc3dfd365fc2eb366c4decd5fdf Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Tue, 6 Aug 2024 16:57:38 +0200 Subject: [PATCH 14/44] add redux listener --- react-ui/src/hooks.ts | 5 +++++ react-ui/src/stores/index.ts | 3 ++- .../src/stores/middleware/listener.middleware.ts | 5 +++++ react-ui/src/stores/reducer/login.reducer.ts | 12 ++++++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 react-ui/src/hooks.ts create mode 100644 react-ui/src/stores/middleware/listener.middleware.ts diff --git a/react-ui/src/hooks.ts b/react-ui/src/hooks.ts new file mode 100644 index 000000000..aa20e122d --- /dev/null +++ b/react-ui/src/hooks.ts @@ -0,0 +1,5 @@ +import { useDispatch, useSelector } from "react-redux" +import { AppDispatch, RootState } from "./stores" + +export const useAppDispatch = useDispatch.withTypes<AppDispatch>() +export const useAppSelector = useSelector.withTypes<RootState>() \ No newline at end of file diff --git a/react-ui/src/stores/index.ts b/react-ui/src/stores/index.ts index ae1890f35..e00e33f48 100644 --- a/react-ui/src/stores/index.ts +++ b/react-ui/src/stores/index.ts @@ -5,6 +5,7 @@ import persistStore from 'redux-persist/es/persistStore' import { emptySplitApi } from './api.store' import { rtkQueryErrorLogger } from './middleware/devLogging.middleware' import persistedReducer from './persist.store' +import { listenerMiddleware } from './middleware/listener.middleware' export const store = configureStore({ @@ -14,7 +15,7 @@ export const store = configureStore({ serializableCheck: { ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER], }, - }).concat(emptySplitApi.middleware, rtkQueryErrorLogger), + }).prepend(listenerMiddleware.middleware).concat(emptySplitApi.middleware, rtkQueryErrorLogger), }) export const persistor = persistStore(store) diff --git a/react-ui/src/stores/middleware/listener.middleware.ts b/react-ui/src/stores/middleware/listener.middleware.ts new file mode 100644 index 000000000..3802e575c --- /dev/null +++ b/react-ui/src/stores/middleware/listener.middleware.ts @@ -0,0 +1,5 @@ +import { createListenerMiddleware } from "@reduxjs/toolkit"; + +export const listenerMiddleware = createListenerMiddleware() + +export const { startListening, stopListening } = listenerMiddleware \ No newline at end of file diff --git a/react-ui/src/stores/reducer/login.reducer.ts b/react-ui/src/stores/reducer/login.reducer.ts index f0e35cdb1..aba386576 100644 --- a/react-ui/src/stores/reducer/login.reducer.ts +++ b/react-ui/src/stores/reducer/login.reducer.ts @@ -1,4 +1,6 @@ import { PayloadAction, createSlice } from '@reduxjs/toolkit'; +import { startListening } from '../middleware/listener.middleware'; +import { useAuthServiceLoginMutation } from '@api/api'; export interface LoginFormFields { username?: string, @@ -50,3 +52,13 @@ export const { setLoginBackendCheck } = loginSlice.actions export const { setLoginFormFields } = loginSlice.actions export default loginSlice.reducer + + +startListening({ + actionCreator: setLoginFormFields, + + effect: async (action, listenerApi) => { + console.log('oh baby'); + + }, +}) \ No newline at end of file -- GitLab From 5bace0842048a16954b4fe42ff681c96239742e0 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Mon, 19 Aug 2024 00:59:12 +0200 Subject: [PATCH 15/44] finished visualization of login page --- react-ui/docs/README.md | 21 + react-ui/package.json | 4 + react-ui/scripts/openapi-config.json | 3 +- react-ui/src/components/view/login/login.tsx | 20 +- .../components/view_model/login.viewmodel.ts | 62 +- .../src/i18n/locales/en/translations.json | 1 + react-ui/src/index.tsx | 4 +- react-ui/src/stores/reducer/login.reducer.ts | 53 +- react-ui/src/stores/reducer/user.reducer.ts | 5 +- react-ui/src/style/box.scss | 16 +- react-ui/src/style/colors.scss | 1 + react-ui/src/utils/api/api.ts | 1283 +++++++++++++++++ react-ui/src/utils/icons/icons.ts | 4 + react-ui/tsconfig.json | 2 +- react-ui/vite.config.mjs | 2 +- react-ui/yarn.lock | 33 + 16 files changed, 1448 insertions(+), 66 deletions(-) create mode 100644 react-ui/docs/README.md create mode 100644 react-ui/src/utils/api/api.ts create mode 100644 react-ui/src/utils/icons/icons.ts diff --git a/react-ui/docs/README.md b/react-ui/docs/README.md new file mode 100644 index 000000000..df992548a --- /dev/null +++ b/react-ui/docs/README.md @@ -0,0 +1,21 @@ +# goSDN - react ui +The goSDN project is currently managed by a cli. With increased complexity it's getting harder and harder to manage, observe and debug this networks. This subproject provides an UI that keep large projects handable + + +## Getting started +Install all dependencies +``` +yarn install +yarn build::api +``` + +Run the local development server +``` +yarn start +``` +The ui is now accessible by `localhost:3000` + + + +## Development notes +The ui can run independently from goSDN. But to actually get in touch with the ui, log in and start working with it you need a running goSDN instance on your local maschine. \ No newline at end of file diff --git a/react-ui/package.json b/react-ui/package.json index c178d3acb..f1941701c 100644 --- a/react-ui/package.json +++ b/react-ui/package.json @@ -3,6 +3,10 @@ "version": "0.1.0", "private": true, "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.6.0", + "@fortawesome/free-regular-svg-icons": "^6.6.0", + "@fortawesome/free-solid-svg-icons": "^6.6.0", + "@fortawesome/react-fontawesome": "^0.2.2", "@reduxjs/toolkit": "^2.2.4", "@testing-library/jest-dom": "^6.4.8", "@testing-library/react": "^16.0.0", diff --git a/react-ui/scripts/openapi-config.json b/react-ui/scripts/openapi-config.json index f4246e548..dbb9a84af 100644 --- a/react-ui/scripts/openapi-config.json +++ b/react-ui/scripts/openapi-config.json @@ -6,5 +6,6 @@ "exportName": "api", "hooks": true, "nullSafeAdditionalProps": true, - "withInterfaces": true + "withInterfaces": true, + "tag": true } \ No newline at end of file diff --git a/react-ui/src/components/view/login/login.tsx b/react-ui/src/components/view/login/login.tsx index 919aa4401..fe3b6369c 100644 --- a/react-ui/src/components/view/login/login.tsx +++ b/react-ui/src/components/view/login/login.tsx @@ -1,14 +1,14 @@ -import { Button, Col, Container, Form, Image, Row } from 'react-bootstrap' +import { Alert, Button, Col, Container, Form, Image, Row, Spinner } from 'react-bootstrap' import { useTranslation } from 'react-i18next' import './login.scss' import logo from '@assets/logo.svg' -import React, { useRef } from 'react' import useLoginViewModel from '@viewmodel/login.viewmodel' +import React, { useRef } from 'react' const LoginPage = () => { const { t } = useTranslation('common') - const { valid, login, handleErrorMessageRendering } = useLoginViewModel(); + const { login, handleErrorMessageRendering, displayFormFieldChecks, loginLoading } = useLoginViewModel(); const usernameRef = useRef<HTMLInputElement>(null) @@ -22,7 +22,9 @@ const LoginPage = () => { login(username, password); } - const invalidCredentials = (<div className="danger-box">{t('login.form.failed')}</div>) + const invalidForm = (<Alert variant="warning">{t('login.form.invalid')}</Alert>) + const invalidCredentials = (<Alert variant="danger">{t('login.form.failed')}</Alert>) + return ( <Container className="vh-100 d-flex flex-column justify-content-center login-container"> @@ -33,9 +35,9 @@ const LoginPage = () => { <Col md={6} sm={10} className="c-box p-4"> <h1 className="text-center h2">goSDN - Web</h1> - {handleErrorMessageRendering(invalidCredentials)} + {handleErrorMessageRendering(invalidForm, invalidCredentials)} - <Form className="mt-4" noValidate validated={valid} onSubmit={triggerLogin}> + <Form className="mt-4" noValidate validated={displayFormFieldChecks()} onSubmit={triggerLogin}> <Form.Group className="mb-3" controlId="loginForm.username" @@ -65,8 +67,14 @@ const LoginPage = () => { variant="primary" type="submit" className="w-100 mt-3" + disabled={loginLoading} > {t('global.form.submit')} + {loginLoading && + <Spinner animation="border" size="sm" role="status"> + <span className="visually-hidden">Loading...</span> + </Spinner> + } </Button> </Form> </Col> diff --git a/react-ui/src/components/view_model/login.viewmodel.ts b/react-ui/src/components/view_model/login.viewmodel.ts index 341c9933f..110507a65 100644 --- a/react-ui/src/components/view_model/login.viewmodel.ts +++ b/react-ui/src/components/view_model/login.viewmodel.ts @@ -1,21 +1,43 @@ import { AuthServiceLoginApiArg, AuthServiceLoginApiResponse, useAuthServiceLoginMutation } from "@api/api"; -import { LoginFormFields, setLoginFormFields, test } from '@reducer/login.reducer'; import { setToken } from "@reducer/user.reducer"; -import { useDispatch, useSelector } from "react-redux"; -import { AppDispatch, RootState } from "src/stores"; +import { useCallback, useEffect, useMemo, useRef, useState } from "react"; +import { useDispatch } from "react-redux"; +import { AppDispatch } from "src/stores"; + +export interface PageLoginState { + submitted: boolean, + valid: boolean, +} export default function useLoginViewModel() { - const { form, backendResponse } = useSelector((state: RootState) => state.loginPageReducer); const dispatch = useDispatch<AppDispatch>(); const [ sendLogin, + { data: loginResponse, error: loginError, isLoading: loginLoading, reset: resetLogin } ] = useAuthServiceLoginMutation() - const handleErrorMessageRendering = (renderError: JSX.Element): JSX.Element | null => { - if (form.valid && !backendResponse.valid) { - return renderError; + const [localFormState, updateLocalFormState] = useState({ + submitted: false, + valid: false, + }); + + + useEffect(() => { + console.log('loginREsponse:' + loginResponse); + }, [loginResponse]) + + const handleErrorMessageRendering = (formInvalidError: JSX.Element, backendResponseError: JSX.Element): JSX.Element | null => { + // backend response check + console.log('loginError:' + loginError); + if (!!loginError) { + return backendResponseError; + } + + // form invalid check + if (localFormState.submitted && !localFormState.valid) { + return formInvalidError; } return null; @@ -36,6 +58,10 @@ export default function useLoginViewModel() { return payload; } + const isFormValid = (username: string | undefined, password: string | undefined): boolean => { + return !!username && !!password; + } + /** * Tries to `/login` by using the input fields. * @@ -43,15 +69,14 @@ export default function useLoginViewModel() { * @param event Submit event */ const loginHandler = (username: string | undefined, password: string | undefined) => { - const loginFormFields: LoginFormFields = { - username: username, - password: password - } + resetLogin(); + const valid = isFormValid(username, password); - dispatch(setLoginFormFields(loginFormFields)); + updateLocalFormState({ ...localFormState, valid, submitted: true }) - // don´t execute it here, execute it by subscribing to the store - //executeLogin(username!, password!); + if (valid) { + executeLogin(username!, password!); + } } const executeLogin = (username: string, password: string) => { @@ -69,10 +94,15 @@ export default function useLoginViewModel() { }); } + const displayFormFieldChecks = (): boolean => { + return localFormState.submitted && !loginError; + } + return { + displayFormFieldChecks, login: loginHandler, - valid: backendResponse.valid, - handleErrorMessageRendering + handleErrorMessageRendering: handleErrorMessageRendering, + loginLoading, } } diff --git a/react-ui/src/i18n/locales/en/translations.json b/react-ui/src/i18n/locales/en/translations.json index d03dd572d..12ffef164 100644 --- a/react-ui/src/i18n/locales/en/translations.json +++ b/react-ui/src/i18n/locales/en/translations.json @@ -9,6 +9,7 @@ "login": { "form": { "failed": "The username or password is invalid", + "invalid": "Please type a username and password", "username": { "label": "Username" }, diff --git a/react-ui/src/index.tsx b/react-ui/src/index.tsx index 89858eea3..8441405d0 100644 --- a/react-ui/src/index.tsx +++ b/react-ui/src/index.tsx @@ -1,3 +1,4 @@ +import './index.scss' import React from 'react' import ReactDOM, { Container } from 'react-dom/client' import { @@ -7,7 +8,6 @@ import { createBrowserRouter, createRoutesFromElements, } from 'react-router-dom' -import './index.scss' import Landingpage from './components/view/landingpage/landingpage' import LoginPage from './components/view/login/login' @@ -18,6 +18,8 @@ import { Provider } from 'react-redux' import { persistor, store } from './stores' import { ToastContainer } from 'react-toastify' import { PersistGate } from 'redux-persist/integration/react' +import './utils/icons/icons'; + const root = ReactDOM.createRoot(document.getElementById('root') as Container) diff --git a/react-ui/src/stores/reducer/login.reducer.ts b/react-ui/src/stores/reducer/login.reducer.ts index aba386576..7016aa723 100644 --- a/react-ui/src/stores/reducer/login.reducer.ts +++ b/react-ui/src/stores/reducer/login.reducer.ts @@ -1,24 +1,8 @@ import { PayloadAction, createSlice } from '@reduxjs/toolkit'; import { startListening } from '../middleware/listener.middleware'; -import { useAuthServiceLoginMutation } from '@api/api'; +import { AuthServiceLoginApiArg, RbacUser, api, useAuthServiceLoginMutation } from '@api/api'; -export interface LoginFormFields { - username?: string, - password?: string -} - -export interface PageLoginState { - form: { - valid: boolean, - fields: LoginFormFields - }, - backendResponse: { - valid: boolean, - send: boolean - } -} - -const initialState: PageLoginState = { +const initialState = { backendResponse: { valid: false, send: false @@ -37,28 +21,29 @@ const loginSlice = createSlice({ initialState, reducers: { setLoginBackendCheck: (state, action: PayloadAction<boolean>) => { state.backendResponse.send = action.payload }, - setLoginFormFields: (state, action: PayloadAction<LoginFormFields>) => { - const valid = !!action.payload.username && !!action.payload.password; - state.form.valid = valid; - if (valid) { - state.form.fields = action.payload - } - }, + loginSuccess: (state, action: PayloadAction<string>) => { + state.backendResponse.valid = true; + } }, }) export const { setLoginBackendCheck } = loginSlice.actions -export const { setLoginFormFields } = loginSlice.actions export default loginSlice.reducer -startListening({ - actionCreator: setLoginFormFields, - - effect: async (action, listenerApi) => { - console.log('oh baby'); - - }, -}) \ No newline at end of file +// startListening({ +// actionCreator: setLoginFormFields, + +// effect: async (action, listenerApi) => { +// const payload: AuthServiceLoginApiArg = { +// rbacLoginRequest: { +// username: action.payload.username, +// pwd: action.payload.password, +// timestamp: new Date().getTime().toString(), +// }, +// } +// listenerApi.dispatch(api.endpoints.authServiceLogin.initiate(payload)); +// }, +// }) \ No newline at end of file diff --git a/react-ui/src/stores/reducer/user.reducer.ts b/react-ui/src/stores/reducer/user.reducer.ts index ef540c334..d1a3c99ca 100644 --- a/react-ui/src/stores/reducer/user.reducer.ts +++ b/react-ui/src/stores/reducer/user.reducer.ts @@ -1,12 +1,15 @@ import { PayloadAction, createSlice } from '@reduxjs/toolkit'; +import { RbacUser } from '../../utils/api/api'; export interface UserSliceState { token: string, + user: RbacUser | null, } const initialState: UserSliceState = { - token: '' + token: '', + user: null } diff --git a/react-ui/src/style/box.scss b/react-ui/src/style/box.scss index e705404c9..e7a3ca7d3 100644 --- a/react-ui/src/style/box.scss +++ b/react-ui/src/style/box.scss @@ -11,10 +11,16 @@ $border-radius: 10px; border-radius: $border-radius; } -.danger-box { - background-color: map-get($theme-colors, 'danger') !important; - border-radius: calc($border-radius / 2); - +.abstract-box { padding: 16px $box-padding; font-size: .90em; -} \ No newline at end of file + border-radius: calc($border-radius / 2); +} + + +// @each $color, $value in $theme-colors { +// .#{$color}-box { +// @extend .abstract-box; +// background-color: $value !important; +// } +// } diff --git a/react-ui/src/style/colors.scss b/react-ui/src/style/colors.scss index 1f11a48f3..a10e9eafe 100644 --- a/react-ui/src/style/colors.scss +++ b/react-ui/src/style/colors.scss @@ -2,6 +2,7 @@ $theme-colors: ( 'primary': #b350e0, 'bg-primary': #E1E1E1, 'danger': #ffdcdc, + 'warning': #dbd116, ); @import '/node_modules/bootstrap/scss/bootstrap'; diff --git a/react-ui/src/utils/api/api.ts b/react-ui/src/utils/api/api.ts new file mode 100644 index 000000000..a5d1ebd6b --- /dev/null +++ b/react-ui/src/utils/api/api.ts @@ -0,0 +1,1283 @@ +import { emptySplitApi as api } from '../../stores/api.store' +export const addTagTypes = [ + 'AppService', + 'ConfigurationManagementService', + 'AuthService', + 'NetworkElementService', + 'PndService', + 'RoleService', + 'RoutingTableService', + 'TopologyService', + 'UserService', +] as const +const injectedRtkApi = api + .enhanceEndpoints({ + addTagTypes, + }) + .injectEndpoints({ + endpoints: (build) => ({ + appServiceDeregister: build.mutation< + AppServiceDeregisterApiResponse, + AppServiceDeregisterApiArg + >({ + query: (queryArg) => ({ + url: `/deregister`, + method: 'POST', + body: queryArg.appAppDeregisterRequest, + }), + invalidatesTags: ['AppService'], + }), + configurationManagementServiceExportSdnConfig: build.query< + ConfigurationManagementServiceExportSdnConfigApiResponse, + ConfigurationManagementServiceExportSdnConfigApiArg + >({ + query: (queryArg) => ({ + url: `/export/${queryArg.pid}`, + params: { timestamp: queryArg.timestamp }, + }), + providesTags: ['ConfigurationManagementService'], + }), + configurationManagementServiceImportSdnConfig: build.mutation< + ConfigurationManagementServiceImportSdnConfigApiResponse, + ConfigurationManagementServiceImportSdnConfigApiArg + >({ + query: (queryArg) => ({ + url: `/import/${queryArg.pid}`, + method: 'POST', + params: { + timestamp: queryArg.timestamp, + sdnConfigData: queryArg.sdnConfigData, + }, + }), + invalidatesTags: ['ConfigurationManagementService'], + }), + authServiceLogin: build.mutation< + AuthServiceLoginApiResponse, + AuthServiceLoginApiArg + >({ + query: (queryArg) => ({ + url: `/login`, + method: 'POST', + body: queryArg.rbacLoginRequest, + }), + invalidatesTags: ['AuthService'], + }), + authServiceLogout: build.mutation< + AuthServiceLogoutApiResponse, + AuthServiceLogoutApiArg + >({ + query: (queryArg) => ({ + url: `/logout/${queryArg.username}`, + method: 'POST', + params: { timestamp: queryArg.timestamp }, + }), + invalidatesTags: ['AuthService'], + }), + networkElementServiceGetAllFlattened: build.query< + NetworkElementServiceGetAllFlattenedApiResponse, + NetworkElementServiceGetAllFlattenedApiArg + >({ + query: (queryArg) => ({ + url: `/mnes`, + params: { + timestamp: queryArg.timestamp, + pid: queryArg.pid, + }, + }), + providesTags: ['NetworkElementService'], + }), + networkElementServiceAddList: build.mutation< + NetworkElementServiceAddListApiResponse, + NetworkElementServiceAddListApiArg + >({ + query: (queryArg) => ({ + url: `/mnes`, + method: 'POST', + body: queryArg.networkelementAddListRequest, + }), + invalidatesTags: ['NetworkElementService'], + }), + networkElementServiceGetChangeList: build.query< + NetworkElementServiceGetChangeListApiResponse, + NetworkElementServiceGetChangeListApiArg + >({ + query: (queryArg) => ({ + url: `/mnes/changes`, + params: { + timestamp: queryArg.timestamp, + pid: queryArg.pid, + }, + }), + providesTags: ['NetworkElementService'], + }), + networkElementServiceSetChangeList: build.mutation< + NetworkElementServiceSetChangeListApiResponse, + NetworkElementServiceSetChangeListApiArg + >({ + query: (queryArg) => ({ + url: `/mnes/changes`, + method: 'POST', + body: queryArg.networkelementSetChangeListRequest, + }), + invalidatesTags: ['NetworkElementService'], + }), + networkElementServiceGetChange: build.query< + NetworkElementServiceGetChangeApiResponse, + NetworkElementServiceGetChangeApiArg + >({ + query: (queryArg) => ({ + url: `/mnes/changes/${queryArg.cuid}`, + params: { + timestamp: queryArg.timestamp, + pid: queryArg.pid, + }, + }), + providesTags: ['NetworkElementService'], + }), + networkElementServiceSetPathList: build.mutation< + NetworkElementServiceSetPathListApiResponse, + NetworkElementServiceSetPathListApiArg + >({ + query: (queryArg) => ({ + url: `/mnes/paths`, + method: 'POST', + body: queryArg.networkelementSetPathListRequest, + }), + invalidatesTags: ['NetworkElementService'], + }), + networkElementServiceGet: build.query< + NetworkElementServiceGetApiResponse, + NetworkElementServiceGetApiArg + >({ + query: (queryArg) => ({ + url: `/mnes/${queryArg.mneid}`, + params: { + timestamp: queryArg.timestamp, + pid: queryArg.pid, + }, + }), + providesTags: ['NetworkElementService'], + }), + networkElementServiceDelete: build.mutation< + NetworkElementServiceDeleteApiResponse, + NetworkElementServiceDeleteApiArg + >({ + query: (queryArg) => ({ + url: `/mnes/${queryArg.mneid}`, + method: 'DELETE', + params: { + timestamp: queryArg.timestamp, + pid: queryArg.pid, + }, + }), + invalidatesTags: ['NetworkElementService'], + }), + networkElementServiceGetIntendedPath: build.query< + NetworkElementServiceGetIntendedPathApiResponse, + NetworkElementServiceGetIntendedPathApiArg + >({ + query: (queryArg) => ({ + url: `/mnes/${queryArg.mneid}/intendedpaths/${queryArg.intendedPath}`, + params: { + timestamp: queryArg.timestamp, + pid: queryArg.pid, + }, + }), + providesTags: ['NetworkElementService'], + }), + networkElementServiceGetPath: build.query< + NetworkElementServiceGetPathApiResponse, + NetworkElementServiceGetPathApiArg + >({ + query: (queryArg) => ({ + url: `/mnes/${queryArg.mneid}/paths/${queryArg.path}`, + params: { + timestamp: queryArg.timestamp, + pid: queryArg.pid, + }, + }), + providesTags: ['NetworkElementService'], + }), + networkElementServiceUpdate: build.mutation< + NetworkElementServiceUpdateApiResponse, + NetworkElementServiceUpdateApiArg + >({ + query: (queryArg) => ({ + url: `/network-element/update`, + method: 'POST', + body: queryArg.networkelementUpdateNetworkElementRequest, + }), + invalidatesTags: ['NetworkElementService'], + }), + pndServiceGetPnd: build.query< + PndServiceGetPndApiResponse, + PndServiceGetPndApiArg + >({ + query: (queryArg) => ({ + url: `/pnd/${queryArg.pid}`, + params: { timestamp: queryArg.timestamp }, + }), + providesTags: ['PndService'], + }), + pndServiceGetPndList: build.query< + PndServiceGetPndListApiResponse, + PndServiceGetPndListApiArg + >({ + query: (queryArg) => ({ + url: `/pnds`, + params: { timestamp: queryArg.timestamp }, + }), + providesTags: ['PndService'], + }), + pndServiceCreatePndList: build.mutation< + PndServiceCreatePndListApiResponse, + PndServiceCreatePndListApiArg + >({ + query: (queryArg) => ({ + url: `/pnds`, + method: 'POST', + body: queryArg.pndCreatePndListRequest, + }), + invalidatesTags: ['PndService'], + }), + pndServiceDeletePnd: build.mutation< + PndServiceDeletePndApiResponse, + PndServiceDeletePndApiArg + >({ + query: (queryArg) => ({ + url: `/pnds/${queryArg.pid}`, + method: 'DELETE', + params: { timestamp: queryArg.timestamp }, + }), + invalidatesTags: ['PndService'], + }), + appServiceRegister: build.mutation< + AppServiceRegisterApiResponse, + AppServiceRegisterApiArg + >({ + query: (queryArg) => ({ + url: `/register`, + method: 'POST', + body: queryArg.appAppRegisterRequest, + }), + invalidatesTags: ['AppService'], + }), + roleServiceGetRoles: build.query< + RoleServiceGetRolesApiResponse, + RoleServiceGetRolesApiArg + >({ + query: (queryArg) => ({ + url: `/roles`, + params: { timestamp: queryArg.timestamp }, + }), + providesTags: ['RoleService'], + }), + roleServiceCreateRoles: build.mutation< + RoleServiceCreateRolesApiResponse, + RoleServiceCreateRolesApiArg + >({ + query: (queryArg) => ({ + url: `/roles/create`, + method: 'POST', + body: queryArg.rbacCreateRolesRequest, + }), + invalidatesTags: ['RoleService'], + }), + roleServiceDeleteRoles: build.mutation< + RoleServiceDeleteRolesApiResponse, + RoleServiceDeleteRolesApiArg + >({ + query: (queryArg) => ({ + url: `/roles/delete`, + method: 'DELETE', + params: { + timestamp: queryArg.timestamp, + roleName: queryArg.roleName, + }, + }), + invalidatesTags: ['RoleService'], + }), + roleServiceDeletePermissionsForRole: build.mutation< + RoleServiceDeletePermissionsForRoleApiResponse, + RoleServiceDeletePermissionsForRoleApiArg + >({ + query: (queryArg) => ({ + url: `/roles/delete/permissions`, + method: 'DELETE', + params: { + timestamp: queryArg.timestamp, + roleName: queryArg.roleName, + permissionsToDelete: queryArg.permissionsToDelete, + }, + }), + invalidatesTags: ['RoleService'], + }), + roleServiceGetRole: build.query< + RoleServiceGetRoleApiResponse, + RoleServiceGetRoleApiArg + >({ + query: (queryArg) => ({ + url: `/roles/get`, + params: { + timestamp: queryArg.timestamp, + roleName: queryArg.roleName, + id: queryArg.id, + }, + }), + providesTags: ['RoleService'], + }), + roleServiceUpdateRoles: build.mutation< + RoleServiceUpdateRolesApiResponse, + RoleServiceUpdateRolesApiArg + >({ + query: (queryArg) => ({ + url: `/roles/update`, + method: 'POST', + body: queryArg.rbacUpdateRolesRequest, + }), + invalidatesTags: ['RoleService'], + }), + routingTableServiceGetRoutes: build.query< + RoutingTableServiceGetRoutesApiResponse, + RoutingTableServiceGetRoutesApiArg + >({ + query: (queryArg) => ({ + url: `/routing`, + params: { timestamp: queryArg.timestamp }, + }), + providesTags: ['RoutingTableService'], + }), + routingTableServiceAddRoutingTable: build.mutation< + RoutingTableServiceAddRoutingTableApiResponse, + RoutingTableServiceAddRoutingTableApiArg + >({ + query: (queryArg) => ({ + url: `/routing/create`, + method: 'POST', + body: queryArg.topologyAddRoutingTableRequest, + }), + invalidatesTags: ['RoutingTableService'], + }), + routingTableServiceDeleteRoute: build.mutation< + RoutingTableServiceDeleteRouteApiResponse, + RoutingTableServiceDeleteRouteApiArg + >({ + query: (queryArg) => ({ + url: `/routing/delete`, + method: 'DELETE', + params: { timestamp: queryArg.timestamp, id: queryArg.id }, + }), + invalidatesTags: ['RoutingTableService'], + }), + topologyServiceGetTopology: build.query< + TopologyServiceGetTopologyApiResponse, + TopologyServiceGetTopologyApiArg + >({ + query: (queryArg) => ({ + url: `/topology`, + params: { timestamp: queryArg.timestamp }, + }), + providesTags: ['TopologyService'], + }), + topologyServiceAddLink: build.mutation< + TopologyServiceAddLinkApiResponse, + TopologyServiceAddLinkApiArg + >({ + query: (queryArg) => ({ + url: `/topology/create`, + method: 'POST', + body: queryArg.topologyAddLinkRequest, + }), + invalidatesTags: ['TopologyService'], + }), + topologyServiceDeleteLink: build.mutation< + TopologyServiceDeleteLinkApiResponse, + TopologyServiceDeleteLinkApiArg + >({ + query: (queryArg) => ({ + url: `/topology/delete`, + method: 'DELETE', + params: { timestamp: queryArg.timestamp, id: queryArg.id }, + }), + invalidatesTags: ['TopologyService'], + }), + topologyServiceUpdateLink: build.mutation< + TopologyServiceUpdateLinkApiResponse, + TopologyServiceUpdateLinkApiArg + >({ + query: (queryArg) => ({ + url: `/topology/update`, + method: 'POST', + body: queryArg.topologyUpdateLinkRequest, + }), + invalidatesTags: ['TopologyService'], + }), + userServiceGetUsers: build.query< + UserServiceGetUsersApiResponse, + UserServiceGetUsersApiArg + >({ + query: (queryArg) => ({ + url: `/users`, + params: { timestamp: queryArg.timestamp }, + }), + providesTags: ['UserService'], + }), + userServiceCreateUsers: build.mutation< + UserServiceCreateUsersApiResponse, + UserServiceCreateUsersApiArg + >({ + query: (queryArg) => ({ + url: `/users/create`, + method: 'POST', + body: queryArg.rbacCreateUsersRequest, + }), + invalidatesTags: ['UserService'], + }), + userServiceDeleteUsers: build.mutation< + UserServiceDeleteUsersApiResponse, + UserServiceDeleteUsersApiArg + >({ + query: (queryArg) => ({ + url: `/users/delete`, + method: 'DELETE', + params: { + timestamp: queryArg.timestamp, + username: queryArg.username, + }, + }), + invalidatesTags: ['UserService'], + }), + userServiceGetUser: build.query< + UserServiceGetUserApiResponse, + UserServiceGetUserApiArg + >({ + query: (queryArg) => ({ + url: `/users/get`, + params: { + timestamp: queryArg.timestamp, + name: queryArg.name, + id: queryArg.id, + }, + }), + providesTags: ['UserService'], + }), + userServiceUpdateUsers: build.mutation< + UserServiceUpdateUsersApiResponse, + UserServiceUpdateUsersApiArg + >({ + query: (queryArg) => ({ + url: `/users/update`, + method: 'POST', + body: queryArg.rbacUpdateUsersRequest, + }), + invalidatesTags: ['UserService'], + }), + }), + overrideExisting: false, + }) +export { injectedRtkApi as api } +export type AppServiceDeregisterApiResponse = + /** status 200 A successful response. */ AppAppDeregisterResponse +export type AppServiceDeregisterApiArg = { + appAppDeregisterRequest: AppAppDeregisterRequest +} +export type ConfigurationManagementServiceExportSdnConfigApiResponse = + /** status 200 A successful response. */ ConfigurationmanagementExportSdnConfigResponse +export type ConfigurationManagementServiceExportSdnConfigApiArg = { + pid: string + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string +} +export type ConfigurationManagementServiceImportSdnConfigApiResponse = + /** status 200 A successful response. */ ConfigurationmanagementImportSdnConfigResponse +export type ConfigurationManagementServiceImportSdnConfigApiArg = { + pid: string + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + sdnConfigData?: string +} +export type AuthServiceLoginApiResponse = + /** status 200 A successful response. */ RbacLoginResponse +export type AuthServiceLoginApiArg = { + rbacLoginRequest: Login +} +export type AuthServiceLogoutApiResponse = + /** status 200 A successful response. */ RbacLogoutResponse +export type AuthServiceLogoutApiArg = { + username: string + timestamp?: string +} +export type NetworkElementServiceGetAllFlattenedApiResponse = + /** status 200 A successful response. */ NetworkelementGetAllFlattenedResponse +export type NetworkElementServiceGetAllFlattenedApiArg = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + pid?: string +} +export type NetworkElementServiceAddListApiResponse = + /** status 200 A successful response. */ NetworkelementAddListResponse +export type NetworkElementServiceAddListApiArg = { + networkelementAddListRequest: NetworkelementAddListRequest +} +export type NetworkElementServiceGetChangeListApiResponse = + /** status 200 A successful response. */ NetworkelementGetChangeListResponse +export type NetworkElementServiceGetChangeListApiArg = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + pid?: string +} +export type NetworkElementServiceSetChangeListApiResponse = + /** status 200 A successful response. */ NetworkelementSetChangeListResponse +export type NetworkElementServiceSetChangeListApiArg = { + networkelementSetChangeListRequest: NetworkelementSetChangeListRequest +} +export type NetworkElementServiceGetChangeApiResponse = + /** status 200 A successful response. */ NetworkelementGetChangeResponse +export type NetworkElementServiceGetChangeApiArg = { + cuid: string[] + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + pid?: string +} +export type NetworkElementServiceSetPathListApiResponse = + /** status 200 A successful response. */ NetworkelementSetPathListResponse +export type NetworkElementServiceSetPathListApiArg = { + networkelementSetPathListRequest: NetworkelementSetPathListRequest +} +export type NetworkElementServiceGetApiResponse = + /** status 200 A successful response. */ GosdnnetworkelementGetResponse +export type NetworkElementServiceGetApiArg = { + mneid: string + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + pid?: string +} +export type NetworkElementServiceDeleteApiResponse = + /** status 200 A successful response. */ GosdnnetworkelementDeleteResponse +export type NetworkElementServiceDeleteApiArg = { + mneid: string + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + pid?: string +} +export type NetworkElementServiceGetIntendedPathApiResponse = + /** status 200 A successful response. */ NetworkelementGetIntendedPathResponse +export type NetworkElementServiceGetIntendedPathApiArg = { + mneid: string + intendedPath: string + timestamp?: string + pid?: string +} +export type NetworkElementServiceGetPathApiResponse = + /** status 200 A successful response. */ NetworkelementGetPathResponse +export type NetworkElementServiceGetPathApiArg = { + mneid: string + path: string + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + pid?: string +} +export type NetworkElementServiceUpdateApiResponse = + /** status 200 A successful response. */ NetworkelementUpdateNetworkElementResponse +export type NetworkElementServiceUpdateApiArg = { + networkelementUpdateNetworkElementRequest: TodoChangeNameToFitTheRest +} +export type PndServiceGetPndApiResponse = + /** status 200 A successful response. */ PndGetPndResponse +export type PndServiceGetPndApiArg = { + pid: string + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string +} +export type PndServiceGetPndListApiResponse = + /** status 200 A successful response. */ PndGetPndListResponse +export type PndServiceGetPndListApiArg = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string +} +export type PndServiceCreatePndListApiResponse = + /** status 200 A successful response. */ PndCreatePndListResponse +export type PndServiceCreatePndListApiArg = { + pndCreatePndListRequest: PndCreatePndListRequest +} +export type PndServiceDeletePndApiResponse = + /** status 200 A successful response. */ PndDeletePndResponse +export type PndServiceDeletePndApiArg = { + pid: string + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string +} +export type AppServiceRegisterApiResponse = + /** status 200 A successful response. */ AppAppRegisterResponse +export type AppServiceRegisterApiArg = { + appAppRegisterRequest: AppAppRegisterRequest +} +export type RoleServiceGetRolesApiResponse = + /** status 200 A successful response. */ RbacGetRolesResponse +export type RoleServiceGetRolesApiArg = { + timestamp?: string +} +export type RoleServiceCreateRolesApiResponse = + /** status 200 A successful response. */ RbacCreateRolesResponse +export type RoleServiceCreateRolesApiArg = { + rbacCreateRolesRequest: CreateRoles +} +export type RoleServiceDeleteRolesApiResponse = + /** status 200 A successful response. */ RbacDeleteRolesResponse +export type RoleServiceDeleteRolesApiArg = { + timestamp?: string + roleName?: string[] +} +export type RoleServiceDeletePermissionsForRoleApiResponse = + /** status 200 A successful response. */ RbacDeletePermissionsForRoleResponse +export type RoleServiceDeletePermissionsForRoleApiArg = { + timestamp?: string + roleName?: string + permissionsToDelete?: string[] +} +export type RoleServiceGetRoleApiResponse = + /** status 200 A successful response. */ RbacGetRoleResponse +export type RoleServiceGetRoleApiArg = { + timestamp?: string + roleName?: string + id?: string +} +export type RoleServiceUpdateRolesApiResponse = + /** status 200 A successful response. */ RbacUpdateRolesResponse +export type RoleServiceUpdateRolesApiArg = { + rbacUpdateRolesRequest: UpdateRoles +} +export type RoutingTableServiceGetRoutesApiResponse = + /** status 200 A successful response. */ TopologyGetRoutesResponse +export type RoutingTableServiceGetRoutesApiArg = { + timestamp?: string +} +export type RoutingTableServiceAddRoutingTableApiResponse = + /** status 200 A successful response. */ TopologyAddRoutingTableResponse +export type RoutingTableServiceAddRoutingTableApiArg = { + topologyAddRoutingTableRequest: TopologyAddRoutingTableRequest +} +export type RoutingTableServiceDeleteRouteApiResponse = + /** status 200 A successful response. */ TopologyDeleteRoutesResponse +export type RoutingTableServiceDeleteRouteApiArg = { + timestamp?: string + id?: string +} +export type TopologyServiceGetTopologyApiResponse = + /** status 200 A successful response. */ TopologyGetTopologyResponse +export type TopologyServiceGetTopologyApiArg = { + timestamp?: string +} +export type TopologyServiceAddLinkApiResponse = + /** status 200 A successful response. */ TopologyAddLinkResponse +export type TopologyServiceAddLinkApiArg = { + topologyAddLinkRequest: TopologyAddLinkRequest +} +export type TopologyServiceDeleteLinkApiResponse = + /** status 200 A successful response. */ TopologyDeleteLinkResponse +export type TopologyServiceDeleteLinkApiArg = { + timestamp?: string + id?: string +} +export type TopologyServiceUpdateLinkApiResponse = + /** status 200 A successful response. */ TopologyUpdateLinkResponse +export type TopologyServiceUpdateLinkApiArg = { + topologyUpdateLinkRequest: TopologyUpdateLinkRequest +} +export type UserServiceGetUsersApiResponse = + /** status 200 A successful response. */ RbacGetUsersResponse +export type UserServiceGetUsersApiArg = { + timestamp?: string +} +export type UserServiceCreateUsersApiResponse = + /** status 200 A successful response. */ RbacCreateUsersResponse +export type UserServiceCreateUsersApiArg = { + rbacCreateUsersRequest: CreateUsers +} +export type UserServiceDeleteUsersApiResponse = + /** status 200 A successful response. */ RbacDeleteUsersResponse +export type UserServiceDeleteUsersApiArg = { + timestamp?: string + username?: string[] +} +export type UserServiceGetUserApiResponse = + /** status 200 A successful response. */ RbacGetUserResponse +export type UserServiceGetUserApiArg = { + timestamp?: string + /** TODO(faseid): reconsider if this is necessary as required, but id is not? */ + name?: string + id?: string +} +export type UserServiceUpdateUsersApiResponse = + /** status 200 A successful response. */ RbacUpdateUsersResponse +export type UserServiceUpdateUsersApiArg = { + rbacUpdateUsersRequest: UpdateUsers +} +export type AppAppDeregisterResponse = { + timestamp?: string +} +export type ProtobufAny = { + /** A URL/resource name that uniquely identifies the type of the serialized + protocol buffer message. This string must contain at least + one "/" character. The last segment of the URL's path must represent + the fully qualified name of the type (as in + `path/google.protobuf.Duration`). The name should be in a canonical form + (e.g., leading "." is not accepted). + + In practice, teams usually precompile into the binary all types that they + expect it to use in the context of Any. However, for URLs which use the + scheme `http`, `https`, or no scheme, one can optionally set up a type + server that maps type URLs to message definitions as follows: + + * If no scheme is provided, `https` is assumed. + * An HTTP GET on the URL must yield a [google.protobuf.Type][] + value in binary format, or produce an error. + * Applications are allowed to cache lookup results based on the + URL, or have them precompiled into a binary to avoid any + lookup. Therefore, binary compatibility needs to be preserved + on changes to types. (Use versioned type names to manage + breaking changes.) + + Note: this functionality is not currently available in the official + protobuf release, and it is not used for type URLs beginning with + type.googleapis.com. As of May 2023, there are no widely used type server + implementations and no plans to implement one. + + Schemes other than `http`, `https` (or the empty scheme) might be + used with implementation specific semantics. */ + '@type'?: string + [key: string]: any +} +export type GooglerpcStatus = { + code?: number + message?: string + details?: ProtobufAny[] +} +export type AppAppDeregisterRequest = { + timestamp?: string + appname?: string +} +export type ConfigurationmanagementExportSdnConfigResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + sdnConfigData?: string +} +export type ConfigurationmanagementImportSdnConfigResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string +} +export type RbacLoginResponse = { + timestamp?: string + token?: string +} +export type Login = { + timestamp?: string + username?: string + pwd?: string +} +export type RbacLogoutResponse = { + timestamp?: string +} +export type PndPrincipalNetworkDomain = { + id?: string + name?: string + description?: string +} +export type NetworkelementFlattenedManagedNetworkElement = { + id?: string + name?: string + pid?: string + pluginid?: string +} +export type NetworkelementGetAllFlattenedResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + pnd?: PndPrincipalNetworkDomain + mne?: NetworkelementFlattenedManagedNetworkElement[] +} +export type GosdnnetworkelementSetResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + id?: string +} +export type NetworkelementAddListResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + responses?: GosdnnetworkelementSetResponse[] +} +export type EncodingDefinesTheValueEncodingFormatsThatAreSupportedByTheGNmiProtocolTheseEncodingsAreUsedByBothTheClientWhenSendingSetMessagesToModifyTheStateOfTheTargetAndTheTargetWhenSerializingDataToBeReturnedToTheClientInBothSubscribeAndGetRpCsReferenceGNmiSpecificationSection23 = + 'JSON' | 'BYTES' | 'PROTO' | 'ASCII' | 'JSON_IETF' +export type TransportGnmiTransportOption = { + compression?: string + grpcDialOptions?: { + [key: string]: string + } + token?: string + encoding?: EncodingDefinesTheValueEncodingFormatsThatAreSupportedByTheGNmiProtocolTheseEncodingsAreUsedByBothTheClientWhenSendingSetMessagesToModifyTheStateOfTheTargetAndTheTargetWhenSerializingDataToBeReturnedToTheClientInBothSubscribeAndGetRpCsReferenceGNmiSpecificationSection23 +} +export type TransportRestconfTransportOption = object +export type ChangedAccordingToStyleGuideHttpsDocsBufBuildBestPracticesStyleGuideEnums = + + | 'TYPE_UNSPECIFIED' + | 'TYPE_OPENCONFIG' + | 'TYPE_CONTAINERISED' + | 'TYPE_PLUGIN' +export type TransportTransportOption = { + address?: string + username?: string + password?: string + tls?: boolean + gnmiTransportOption?: TransportGnmiTransportOption + restconfTransportOption?: TransportRestconfTransportOption + type?: ChangedAccordingToStyleGuideHttpsDocsBufBuildBestPracticesStyleGuideEnums +} +export type NetworkelementSetMne = { + address?: string + pid?: string + pluginId?: string + mneName?: string + transportOption?: TransportTransportOption + gnmiSubscribePaths?: string[] + mneId?: string +} +export type NetworkelementAddListRequest = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + mne?: NetworkelementSetMne[] + pid?: string +} +export type NetworkelementChangeState = + | 'CHANGE_STATE_UNSPECIFIED' + | 'CHANGE_STATE_PENDING' + | 'CHANGE_STATE_COMMITTED' + | 'CHANGE_STATE_CONFIRMED' + | 'CHANGE_STATE_INCONSISTENT' +export type GnmiPathElem = { + /** The name of the element in the path. */ + name?: string + /** Map of key (attribute) name to value. */ + key?: { + [key: string]: string + } +} +export type GnmiPath = { + /** Elements of the path are no longer encoded as a string, but rather within + the elem field as a PathElem message. */ + element?: string[] + /** Label to disambiguate path. */ + origin?: string + /** Elements of the path. */ + elem?: GnmiPathElem[] + target?: string +} +export type GnmiValue = { + /** Value of the variable being transmitted. */ + value?: string + type?: EncodingDefinesTheValueEncodingFormatsThatAreSupportedByTheGNmiProtocolTheseEncodingsAreUsedByBothTheClientWhenSendingSetMessagesToModifyTheStateOfTheTargetAndTheTargetWhenSerializingDataToBeReturnedToTheClientInBothSubscribeAndGetRpCsReferenceGNmiSpecificationSection23 +} +export type GnmiDecimal64 = { + /** Set of digits. */ + digits?: string + /** Number of digits following the decimal point. */ + precision?: number +} +export type GnmiScalarArray = { + /** The set of elements within the array. Each TypedValue message should + specify only elements that have a field identifier of 1-7 (i.e., the + values are scalar values). */ + element?: GnmiTypedValue[] +} +export type GnmiTypedValue = { + /** String value. */ + stringVal?: string + /** Integer value. */ + intVal?: string + /** Unsigned integer value. */ + uintVal?: string + /** Bool value. */ + boolVal?: boolean + /** Arbitrary byte sequence value. */ + bytesVal?: string + /** Floating point value. */ + floatVal?: number + decimalVal?: GnmiDecimal64 + leaflistVal?: GnmiScalarArray + anyVal?: ProtobufAny + /** JSON-encoded text. */ + jsonVal?: string + /** JSON-encoded text per RFC7951. */ + jsonIetfVal?: string + /** Arbitrary ASCII text. */ + asciiVal?: string + /** Protobuf binary encoded bytes. The message type is not included. + See the specification at + github.com/openconfig/reference/blob/master/rpc/gnmi/protobuf-vals.md + for a complete specification. */ + protoBytes?: string +} +export type UpdateIsAReUsableMessageThatIsUsedToStoreAParticularPathValuePairReferenceGNmiSpecificationSection21 = + { + path?: GnmiPath + value?: GnmiValue + val?: GnmiTypedValue + /** Number of coalesced duplicates. */ + duplicates?: number + } +export type NotificationIsAReUsableMessageThatIsUsedToEncodeDataFromTheTargetToTheClientANotificationCarriesTwoTypesOfChangesToTheDataTreeDeletedValuesDeleteASetOfPathsThatHaveBeenRemovedFromTheDataTreeUpdatedValuesUpdateASetOfPathValuePairsIndicatingThePathWhoseValueHasChangedInTheDataTreeReferenceGNmiSpecificationSection21 = + { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + prefix?: GnmiPath + alias?: string + /** Data elements that have changed values. */ + update?: UpdateIsAReUsableMessageThatIsUsedToStoreAParticularPathValuePairReferenceGNmiSpecificationSection21[] + /** Data elements that have been deleted. */ + delete?: GnmiPath[] + /** This notification contains a set of paths that are always updated together + referenced by a globally unique prefix. */ + atomic?: boolean + } +export type NetworkelementChange = { + id?: string + age?: string + state?: NetworkelementChangeState + diff?: NotificationIsAReUsableMessageThatIsUsedToEncodeDataFromTheTargetToTheClientANotificationCarriesTwoTypesOfChangesToTheDataTreeDeletedValuesDeleteASetOfPathsThatHaveBeenRemovedFromTheDataTreeUpdatedValuesUpdateASetOfPathValuePairsIndicatingThePathWhoseValueHasChangedInTheDataTreeReferenceGNmiSpecificationSection21 +} +export type NetworkelementGetChangeListResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + pnd?: PndPrincipalNetworkDomain + change?: NetworkelementChange[] +} +export type NetworkelementSetChangeListResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + responses?: GosdnnetworkelementSetResponse[] +} +export type GosdnnetworkelementOperation = + | 'OPERATION_UNSPECIFIED' + | 'OPERATION_CREATE' + | 'OPERATION_COMMIT' + | 'OPERATION_CONFIRM' +export type NetworkelementSetChange = { + cuid?: string + op?: GosdnnetworkelementOperation +} +export type NetworkelementSetChangeListRequest = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + change?: NetworkelementSetChange[] + pid?: string +} +export type NetworkelementGetChangeResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + pnd?: PndPrincipalNetworkDomain + change?: NetworkelementChange[] +} +export type NetworkelementSetPathListResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + responses?: GosdnnetworkelementSetResponse[] +} +export type NetworkelementApiOperation = + | 'API_OPERATION_UNSPECIFIED' + | 'API_OPERATION_UPDATE' + | 'API_OPERATION_REPLACE' + | 'API_OPERATION_DELETE' +export type NetworkelementChangeRequest = { + mneid?: string + path?: GnmiPath + value?: GnmiTypedValue + apiOp?: NetworkelementApiOperation +} +export type NetworkelementSetPathListRequest = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + changeRequest?: NetworkelementChangeRequest[] + pid?: string +} +export type PluginRegistryManifest = { + name?: string + firmware?: string + author?: string + version?: string +} +export type PluginRegistryPlugin = { + id?: string + manifest?: PluginRegistryManifest +} +export type ConflictMetadata = { + resourceVersion?: string +} +export type NetworkelementManagedNetworkElement = { + id?: string + name?: string + model?: string + plugin?: PluginRegistryPlugin + mneNotification?: NotificationIsAReUsableMessageThatIsUsedToEncodeDataFromTheTargetToTheClientANotificationCarriesTwoTypesOfChangesToTheDataTreeDeletedValuesDeleteASetOfPathsThatHaveBeenRemovedFromTheDataTreeUpdatedValuesUpdateASetOfPathValuePairsIndicatingThePathWhoseValueHasChangedInTheDataTreeReferenceGNmiSpecificationSection21[] + transportAddress?: string + transportOption?: TransportTransportOption + metadata?: ConflictMetadata + associatedPnd?: string + gnmiSubscribePaths?: string[] +} +export type GosdnnetworkelementGetResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + pnd?: PndPrincipalNetworkDomain + mne?: NetworkelementManagedNetworkElement +} +export type GosdnnetworkelementDeleteResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string +} +export type NetworkelementGetIntendedPathResponse = { + timestamp?: string + pnd?: PndPrincipalNetworkDomain + mneNotification?: NotificationIsAReUsableMessageThatIsUsedToEncodeDataFromTheTargetToTheClientANotificationCarriesTwoTypesOfChangesToTheDataTreeDeletedValuesDeleteASetOfPathsThatHaveBeenRemovedFromTheDataTreeUpdatedValuesUpdateASetOfPathValuePairsIndicatingThePathWhoseValueHasChangedInTheDataTreeReferenceGNmiSpecificationSection21[] +} +export type NetworkelementGetPathResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + pnd?: PndPrincipalNetworkDomain + mneNotification?: NotificationIsAReUsableMessageThatIsUsedToEncodeDataFromTheTargetToTheClientANotificationCarriesTwoTypesOfChangesToTheDataTreeDeletedValuesDeleteASetOfPathsThatHaveBeenRemovedFromTheDataTreeUpdatedValuesUpdateASetOfPathValuePairsIndicatingThePathWhoseValueHasChangedInTheDataTreeReferenceGNmiSpecificationSection21[] +} +export type NetworkelementUpdateNetworkElementResponse = { + timestamp?: string +} +export type TodoChangeNameToFitTheRest = { + timestamp?: string + networkElement?: NetworkelementManagedNetworkElement +} +export type PndGetPndResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + pnd?: PndPrincipalNetworkDomain +} +export type PndGetPndListResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + pnd?: PndPrincipalNetworkDomain[] +} +export type PndCreatePndListResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string +} +export type PndPndCreateProperties = { + name?: string + description?: string +} +export type PndCreatePndListRequest = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + pnd?: PndPndCreateProperties[] +} +export type PndDeletePndResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string +} +export type AppAppRegisterResponse = { + timestamp?: string + queueconnection?: string +} +export type AppAppRegisterRequest = { + timestamp?: string + appname?: string + token?: string +} +export type GosdnrbacRole = { + id?: string + name?: string + description?: string + permissions?: string[] +} +export type RbacGetRolesResponse = { + timestamp?: string + roles?: GosdnrbacRole[] +} +export type RbacCreateRolesResponse = { + timestamp?: string +} +export type CreateRoles = { + timestamp?: string + roles?: GosdnrbacRole[] +} +export type RbacDeleteRolesResponse = { + timestamp?: string +} +export type RbacDeletePermissionsForRoleResponse = { + timestamp?: string +} +export type RbacGetRoleResponse = { + timestamp?: string + role?: GosdnrbacRole +} +export type RbacUpdateRolesResponse = { + timestamp?: string +} +export type UpdateRoles = { + timestamp?: string + roles?: GosdnrbacRole[] +} +export type TopologyRoute = { + id?: string + targetIPRange?: string + nextHopIP?: string + portID?: string + metric?: string +} +export type TopologyRoutingTable = { + id?: string + nodeID?: string + routes?: TopologyRoute[] + metadata?: ConflictMetadata +} +export type TopologyGetRoutesResponse = { + timestamp?: string + routingTables?: TopologyRoutingTable[] +} +export type TopologyAddRoutingTableResponse = { + timestamp?: string +} +export type TopologyAddRoutingTableRequest = { + timestamp?: string + routingTable?: TopologyRoutingTable +} +export type TopologyDeleteRoutesResponse = { + timestamp?: string +} +export type TopologyNode = { + id?: string + name?: string + metadata?: ConflictMetadata +} +export type GosdntopologyConfiguration = { + ip?: string + prefixLength?: string +} +export type TopologyPort = { + id?: string + name?: string + configuration?: GosdntopologyConfiguration + metadata?: ConflictMetadata +} +export type TopologyLink = { + id?: string + name?: string + sourceNode?: TopologyNode + targetNode?: TopologyNode + sourcePort?: TopologyPort + targetPort?: TopologyPort + metadata?: ConflictMetadata +} +export type TopologyTopology = { + links?: TopologyLink[] +} +export type TopologyGetTopologyResponse = { + timestamp?: string + toplogy?: TopologyTopology +} +export type TopologyAddLinkResponse = { + timestamp?: string +} +export type TopologyAddLinkRequest = { + timestamp?: string + link?: TopologyLink +} +export type TopologyDeleteLinkResponse = { + timestamp?: string +} +export type TopologyUpdateLinkResponse = { + timestamp?: string +} +export type TopologyUpdateLinkRequest = { + timestamp?: string + link?: TopologyLink +} +export type RbacUser = { + id?: string + name?: string + roles?: { + [key: string]: string + } + password?: string + token?: string + metadata?: ConflictMetadata +} +export type RbacGetUsersResponse = { + timestamp?: string + user?: RbacUser[] +} +export type RbacCreateUsersResponse = { + timestamp?: string +} +export type CreateUsers = { + timestamp?: string + user?: RbacUser[] +} +export type RbacDeleteUsersResponse = { + timestamp?: string +} +export type RbacGetUserResponse = { + timestamp?: string + user?: RbacUser +} +export type RbacUpdateUsersResponse = { + timestamp?: string +} +export type RbacUpdateUser = { + id?: string + name?: string + roles?: { + [key: string]: string + } + password?: string + token?: string + metadata?: ConflictMetadata +} +export type UpdateUsers = { + timestamp?: string + user?: RbacUpdateUser[] +} +export const { + useAppServiceDeregisterMutation, + useConfigurationManagementServiceExportSdnConfigQuery, + useConfigurationManagementServiceImportSdnConfigMutation, + useAuthServiceLoginMutation, + useAuthServiceLogoutMutation, + useNetworkElementServiceGetAllFlattenedQuery, + useNetworkElementServiceAddListMutation, + useNetworkElementServiceGetChangeListQuery, + useNetworkElementServiceSetChangeListMutation, + useNetworkElementServiceGetChangeQuery, + useNetworkElementServiceSetPathListMutation, + useNetworkElementServiceGetQuery, + useNetworkElementServiceDeleteMutation, + useNetworkElementServiceGetIntendedPathQuery, + useNetworkElementServiceGetPathQuery, + useNetworkElementServiceUpdateMutation, + usePndServiceGetPndQuery, + usePndServiceGetPndListQuery, + usePndServiceCreatePndListMutation, + usePndServiceDeletePndMutation, + useAppServiceRegisterMutation, + useRoleServiceGetRolesQuery, + useRoleServiceCreateRolesMutation, + useRoleServiceDeleteRolesMutation, + useRoleServiceDeletePermissionsForRoleMutation, + useRoleServiceGetRoleQuery, + useRoleServiceUpdateRolesMutation, + useRoutingTableServiceGetRoutesQuery, + useRoutingTableServiceAddRoutingTableMutation, + useRoutingTableServiceDeleteRouteMutation, + useTopologyServiceGetTopologyQuery, + useTopologyServiceAddLinkMutation, + useTopologyServiceDeleteLinkMutation, + useTopologyServiceUpdateLinkMutation, + useUserServiceGetUsersQuery, + useUserServiceCreateUsersMutation, + useUserServiceDeleteUsersMutation, + useUserServiceGetUserQuery, + useUserServiceUpdateUsersMutation, +} = injectedRtkApi diff --git a/react-ui/src/utils/icons/icons.ts b/react-ui/src/utils/icons/icons.ts new file mode 100644 index 000000000..00021aa11 --- /dev/null +++ b/react-ui/src/utils/icons/icons.ts @@ -0,0 +1,4 @@ +import { library } from '@fortawesome/fontawesome-svg-core' +import { faSpinner, fas } from '@fortawesome/free-solid-svg-icons' + +library.add(fas, faSpinner) \ No newline at end of file diff --git a/react-ui/tsconfig.json b/react-ui/tsconfig.json index 17feecac2..761bbe683 100644 --- a/react-ui/tsconfig.json +++ b/react-ui/tsconfig.json @@ -23,7 +23,7 @@ "baseUrl": ".", "paths": { "@assets/*": ["assets/*"], - "@api/*": ["src/api/*"], + "@api/*": ["src/utils/api/*"], "@viewmodel/*": ["src/components/view_model/*"], "@view/*": ["src/components/view/*"], "@reducer/*": ["src/stores/reducer/*"], diff --git a/react-ui/vite.config.mjs b/react-ui/vite.config.mjs index 0e2caf6fd..d5f7d6a21 100644 --- a/react-ui/vite.config.mjs +++ b/react-ui/vite.config.mjs @@ -29,7 +29,7 @@ export default defineConfig({ resolve: { alias: { '@assets': '/assets', - '@api': '/src/api', + '@api': '/src/utils/api', "@viewmodel": "/src/components/view_model", "@view": "/src/components/view", "@reducer": "/src/stores/reducer", diff --git a/react-ui/yarn.lock b/react-ui/yarn.lock index b08ab4c98..307e75062 100644 --- a/react-ui/yarn.lock +++ b/react-ui/yarn.lock @@ -1494,6 +1494,39 @@ resolved "https://registry.yarnpkg.com/@exodus/schemasafe/-/schemasafe-1.3.0.tgz#731656abe21e8e769a7f70a4d833e6312fe59b7f" integrity sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw== +"@fortawesome/fontawesome-common-types@6.6.0": + version "6.6.0" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.6.0.tgz#31ab07ca6a06358c5de4d295d4711b675006163f" + integrity sha512-xyX0X9mc0kyz9plIyryrRbl7ngsA9jz77mCZJsUkLl+ZKs0KWObgaEBoSgQiYWAsSmjz/yjl0F++Got0Mdp4Rw== + +"@fortawesome/fontawesome-svg-core@^6.6.0": + version "6.6.0" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.6.0.tgz#2a24c32ef92136e98eae2ff334a27145188295ff" + integrity sha512-KHwPkCk6oRT4HADE7smhfsKudt9N/9lm6EJ5BVg0tD1yPA5hht837fB87F8pn15D8JfTqQOjhKTktwmLMiD7Kg== + dependencies: + "@fortawesome/fontawesome-common-types" "6.6.0" + +"@fortawesome/free-regular-svg-icons@^6.6.0": + version "6.6.0" + resolved "https://registry.yarnpkg.com/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.6.0.tgz#fc49a947ac8dfd20403c9ea5f37f0919425bdf04" + integrity sha512-Yv9hDzL4aI73BEwSEh20clrY8q/uLxawaQ98lekBx6t9dQKDHcDzzV1p2YtBGTtolYtNqcWdniOnhzB+JPnQEQ== + dependencies: + "@fortawesome/fontawesome-common-types" "6.6.0" + +"@fortawesome/free-solid-svg-icons@^6.6.0": + version "6.6.0" + resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.6.0.tgz#061751ca43be4c4d814f0adbda8f006164ec9f3b" + integrity sha512-IYv/2skhEDFc2WGUcqvFJkeK39Q+HyPf5GHUrT/l2pKbtgEIv1al1TKd6qStR5OIwQdN1GZP54ci3y4mroJWjA== + dependencies: + "@fortawesome/fontawesome-common-types" "6.6.0" + +"@fortawesome/react-fontawesome@^0.2.2": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.2.tgz#68b058f9132b46c8599875f6a636dad231af78d4" + integrity sha512-EnkrprPNqI6SXJl//m29hpaNzOp1bruISWaOiRtkMi/xSvHJlzc2j2JAYS7egxt/EbjSNV/k6Xy0AQI6vB2+1g== + dependencies: + prop-types "^15.8.1" + "@humanwhocodes/config-array@^0.11.14": version "0.11.14" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" -- GitLab From 98dd8dce04ebd2e1fb5a65fdb9e12c5d80e02677 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Tue, 20 Aug 2024 13:39:43 +0200 Subject: [PATCH 16/44] add navigation logic for redirecting if user is logged in --- .../view/login/{login.tsx => login.view.tsx} | 3 +- .../src/components/view/splash/splash.view.ts | 0 .../components/view_model/login.viewmodel.ts | 61 ++--------- react-ui/src/index.tsx | 25 ++--- react-ui/src/stores/api.store.ts | 2 +- react-ui/src/stores/persist.store.ts | 4 +- react-ui/src/stores/reducer/login.reducer.ts | 49 --------- react-ui/src/stores/reducer/user.reducer.ts | 22 +++- react-ui/src/utils/layouts/auth.layout.tsx | 10 ++ react-ui/src/utils/layouts/login.layout.tsx | 23 ++++ .../src/utils/layouts/protected.layout.tsx | 20 ++++ react-ui/src/utils/provider/auth.provider.tsx | 100 ++++++++++++++++++ react-ui/tsconfig.json | 3 + react-ui/vite.config.mjs | 3 + 14 files changed, 207 insertions(+), 118 deletions(-) rename react-ui/src/components/view/login/{login.tsx => login.view.tsx} (98%) create mode 100644 react-ui/src/components/view/splash/splash.view.ts delete mode 100644 react-ui/src/stores/reducer/login.reducer.ts create mode 100644 react-ui/src/utils/layouts/auth.layout.tsx create mode 100644 react-ui/src/utils/layouts/login.layout.tsx create mode 100644 react-ui/src/utils/layouts/protected.layout.tsx create mode 100644 react-ui/src/utils/provider/auth.provider.tsx diff --git a/react-ui/src/components/view/login/login.tsx b/react-ui/src/components/view/login/login.view.tsx similarity index 98% rename from react-ui/src/components/view/login/login.tsx rename to react-ui/src/components/view/login/login.view.tsx index fe3b6369c..ba8da826e 100644 --- a/react-ui/src/components/view/login/login.tsx +++ b/react-ui/src/components/view/login/login.view.tsx @@ -6,11 +6,10 @@ import logo from '@assets/logo.svg' import useLoginViewModel from '@viewmodel/login.viewmodel' import React, { useRef } from 'react' -const LoginPage = () => { +const LoginPage = ({ children }) => { const { t } = useTranslation('common') const { login, handleErrorMessageRendering, displayFormFieldChecks, loginLoading } = useLoginViewModel(); - const usernameRef = useRef<HTMLInputElement>(null) const passwordRef = useRef<HTMLInputElement>(null) diff --git a/react-ui/src/components/view/splash/splash.view.ts b/react-ui/src/components/view/splash/splash.view.ts new file mode 100644 index 000000000..e69de29bb diff --git a/react-ui/src/components/view_model/login.viewmodel.ts b/react-ui/src/components/view_model/login.viewmodel.ts index 110507a65..ed666d401 100644 --- a/react-ui/src/components/view_model/login.viewmodel.ts +++ b/react-ui/src/components/view_model/login.viewmodel.ts @@ -1,8 +1,7 @@ -import { AuthServiceLoginApiArg, AuthServiceLoginApiResponse, useAuthServiceLoginMutation } from "@api/api"; -import { setToken } from "@reducer/user.reducer"; -import { useCallback, useEffect, useMemo, useRef, useState } from "react"; -import { useDispatch } from "react-redux"; -import { AppDispatch } from "src/stores"; +import { useAppSelector } from "@hooks"; +import { useAuth } from "@provider/auth.provider"; +import { useState } from "react"; +import { useNavigate } from "react-router-dom"; export interface PageLoginState { submitted: boolean, @@ -10,24 +9,15 @@ export interface PageLoginState { } export default function useLoginViewModel() { - const dispatch = useDispatch<AppDispatch>(); - - const [ - sendLogin, - { data: loginResponse, error: loginError, isLoading: loginLoading, reset: resetLogin } - ] = useAuthServiceLoginMutation() - + const {login, loginProperties} = useAuth(); + const {isLoading: loginLoading, error: loginError, reset: resetLogin} = loginProperties!; + const [localFormState, updateLocalFormState] = useState({ submitted: false, valid: false, }); - - useEffect(() => { - console.log('loginREsponse:' + loginResponse); - }, [loginResponse]) - const handleErrorMessageRendering = (formInvalidError: JSX.Element, backendResponseError: JSX.Element): JSX.Element | null => { // backend response check console.log('loginError:' + loginError); @@ -43,21 +33,6 @@ export default function useLoginViewModel() { return null; } - /** - * Returns the /login payload - */ - const getAuthPayload = (username: string, password: string): AuthServiceLoginApiArg => { - const payload: AuthServiceLoginApiArg = { - rbacLoginRequest: { - username, - pwd: password, - timestamp: new Date().getTime().toString(), - }, - } - - return payload; - } - const isFormValid = (username: string | undefined, password: string | undefined): boolean => { return !!username && !!password; } @@ -71,29 +46,15 @@ export default function useLoginViewModel() { const loginHandler = (username: string | undefined, password: string | undefined) => { resetLogin(); const valid = isFormValid(username, password); - + updateLocalFormState({ ...localFormState, valid, submitted: true }) - + if (valid) { - executeLogin(username!, password!); + //executeLogin(username!, password!); + login(username!, password!); } } - const executeLogin = (username: string, password: string) => { - const authPayload = getAuthPayload(username, password); - - sendLogin(authPayload).unwrap().then((response: AuthServiceLoginApiResponse) => { - if (!response.token) { - // reset the action by calling the reset hook - throw Error("Response is successful but no token was provided. Expected response {token: '<jwt-token>'}"); - } - - dispatch(setToken(response.token)); - }).catch((error) => { - // determine whether 500 or 401 err - }); - } - const displayFormFieldChecks = (): boolean => { return localFormState.submitted && !loginError; } diff --git a/react-ui/src/index.tsx b/react-ui/src/index.tsx index 8441405d0..42d968e8c 100644 --- a/react-ui/src/index.tsx +++ b/react-ui/src/index.tsx @@ -1,24 +1,25 @@ -import './index.scss' import React from 'react' import ReactDOM, { Container } from 'react-dom/client' import { - Outlet, Route, RouterProvider, createBrowserRouter, - createRoutesFromElements, + createRoutesFromElements } from 'react-router-dom' import Landingpage from './components/view/landingpage/landingpage' -import LoginPage from './components/view/login/login' +import './index.scss' -import './i18n/config' -import { I18nextProvider } from 'react-i18next' import i18next from 'i18next' +import { I18nextProvider } from 'react-i18next' import { Provider } from 'react-redux' -import { persistor, store } from './stores' import { ToastContainer } from 'react-toastify' import { PersistGate } from 'redux-persist/integration/react' -import './utils/icons/icons'; +import './i18n/config' +import { persistor, store } from './stores' +import './utils/icons/icons' +import { AuthLayout } from '@layout/auth.layout' +import { ProtectedLayout } from '@layout/protected.layout' +import { LoginLayout } from '@layout/login.layout' const root = ReactDOM.createRoot(document.getElementById('root') as Container) @@ -26,12 +27,12 @@ const root = ReactDOM.createRoot(document.getElementById('root') as Container) // create a proper routing const router = createBrowserRouter( createRoutesFromElements( - <> - <Route element={<Outlet />}> + <Route element={<AuthLayout />}> + <Route path="/login" element={<LoginLayout />} /> + <Route element={<ProtectedLayout/>}> <Route path="/" element={<Landingpage />} /> - <Route path="/login" element={<LoginPage />} /> </Route> - </> + </Route> ) ) diff --git a/react-ui/src/stores/api.store.ts b/react-ui/src/stores/api.store.ts index a63a9d772..9f9df0e52 100644 --- a/react-ui/src/stores/api.store.ts +++ b/react-ui/src/stores/api.store.ts @@ -5,7 +5,7 @@ import { RootState } from '.' export const emptySplitApi = createApi({ baseQuery: fetchBaseQuery({ baseUrl: '/api', prepareHeaders: (headers, { getState }) => { - const token = (getState() as RootState).userReducer.token + const token = (getState() as RootState).user.token if (token) { headers.set('authorization', `Bearer ${token}`) diff --git a/react-ui/src/stores/persist.store.ts b/react-ui/src/stores/persist.store.ts index 53e17bffd..39f70ea2f 100644 --- a/react-ui/src/stores/persist.store.ts +++ b/react-ui/src/stores/persist.store.ts @@ -1,4 +1,3 @@ -import loginReducer from "@reducer/login.reducer"; import userReducer from "@reducer/user.reducer"; import { combineReducers } from "redux"; import { persistReducer } from "redux-persist"; @@ -15,8 +14,7 @@ const rootPersistConfig = { const rootReducer = combineReducers({ - userReducer: userReducer, - loginPageReducer: loginReducer, + user: userReducer, [emptySplitApi.reducerPath]: emptySplitApi.reducer, }) diff --git a/react-ui/src/stores/reducer/login.reducer.ts b/react-ui/src/stores/reducer/login.reducer.ts deleted file mode 100644 index 7016aa723..000000000 --- a/react-ui/src/stores/reducer/login.reducer.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { PayloadAction, createSlice } from '@reduxjs/toolkit'; -import { startListening } from '../middleware/listener.middleware'; -import { AuthServiceLoginApiArg, RbacUser, api, useAuthServiceLoginMutation } from '@api/api'; - -const initialState = { - backendResponse: { - valid: false, - send: false - }, - form: { - valid: false, - fields: { - username: '', - password: '' - } - } -} - -const loginSlice = createSlice({ - name: 'page_login', - initialState, - reducers: { - setLoginBackendCheck: (state, action: PayloadAction<boolean>) => { state.backendResponse.send = action.payload }, - - loginSuccess: (state, action: PayloadAction<string>) => { - state.backendResponse.valid = true; - } - }, -}) - -export const { setLoginBackendCheck } = loginSlice.actions - -export default loginSlice.reducer - - -// startListening({ -// actionCreator: setLoginFormFields, - -// effect: async (action, listenerApi) => { -// const payload: AuthServiceLoginApiArg = { -// rbacLoginRequest: { -// username: action.payload.username, -// pwd: action.payload.password, -// timestamp: new Date().getTime().toString(), -// }, -// } -// listenerApi.dispatch(api.endpoints.authServiceLogin.initiate(payload)); -// }, -// }) \ No newline at end of file diff --git a/react-ui/src/stores/reducer/user.reducer.ts b/react-ui/src/stores/reducer/user.reducer.ts index d1a3c99ca..478acb1c3 100644 --- a/react-ui/src/stores/reducer/user.reducer.ts +++ b/react-ui/src/stores/reducer/user.reducer.ts @@ -1,5 +1,6 @@ import { PayloadAction, createSlice } from '@reduxjs/toolkit'; import { RbacUser } from '../../utils/api/api'; +import { startListening } from '../middleware/listener.middleware'; export interface UserSliceState { token: string, @@ -24,4 +25,23 @@ const userSlice = createSlice({ export const { setToken } = userSlice.actions export default userSlice.reducer -export const userReducerPath = userSlice.reducerPath; \ No newline at end of file +export const userReducerPath = userSlice.reducerPath; + + + +startListening({ + actionCreator: setToken, + + effect: async (action, listenerApi) => { + + + // const payload: AuthServiceLoginApiArg = { + // rbacLoginRequest: { + // username: action.payload.username, + // pwd: action.payload.password, + // timestamp: new Date().getTime().toString(), + // }, + // } + // listenerApi.dispatch(api.endpoints.authServiceLogin.initiate(payload)); + }, +}) \ No newline at end of file diff --git a/react-ui/src/utils/layouts/auth.layout.tsx b/react-ui/src/utils/layouts/auth.layout.tsx new file mode 100644 index 000000000..84c717264 --- /dev/null +++ b/react-ui/src/utils/layouts/auth.layout.tsx @@ -0,0 +1,10 @@ +import { AuthProvider } from "@provider/auth.provider"; +import { useOutlet } from "react-router-dom" + +export const AuthLayout = () => { + const outlet = useOutlet(); + + return ( + <AuthProvider>{outlet}</AuthProvider> + ) +} \ No newline at end of file diff --git a/react-ui/src/utils/layouts/login.layout.tsx b/react-ui/src/utils/layouts/login.layout.tsx new file mode 100644 index 000000000..e2c9b4a12 --- /dev/null +++ b/react-ui/src/utils/layouts/login.layout.tsx @@ -0,0 +1,23 @@ +import { useAppSelector } from "@hooks"; +import LoginPage from "@view/login/login.view"; +import { useEffect } from "react"; +import { useNavigate, useOutlet } from "react-router-dom"; + + +// if user is already logged in then redirect to home page +export const LoginLayout = ({ children }) => { + const outlet = useOutlet(); + const { token } = useAppSelector(state => state.user); + const navigate = useNavigate(); + + useEffect(() => { + if (!!token) { + navigate('/'); + return; + } + }); + + return ( + <LoginPage>{outlet}</LoginPage> + ) +} \ No newline at end of file diff --git a/react-ui/src/utils/layouts/protected.layout.tsx b/react-ui/src/utils/layouts/protected.layout.tsx new file mode 100644 index 000000000..e938c2f19 --- /dev/null +++ b/react-ui/src/utils/layouts/protected.layout.tsx @@ -0,0 +1,20 @@ +import { Link, Navigate, Outlet } from "react-router-dom"; +import { useAppSelector } from '../../hooks'; + +export const ProtectedLayout = () => { + const { token } = useAppSelector(state => state.user); + + if (!!!token) { + return <Navigate to="/login" />; + } + + return ( + <div> + <nav> + <Link to="/settings">Settings</Link> + <Link to="/profile">Profile</Link> + </nav> + <Outlet /> + </div> + ) +}; \ No newline at end of file diff --git a/react-ui/src/utils/provider/auth.provider.tsx b/react-ui/src/utils/provider/auth.provider.tsx new file mode 100644 index 000000000..9e1e09c5c --- /dev/null +++ b/react-ui/src/utils/provider/auth.provider.tsx @@ -0,0 +1,100 @@ +import { AuthServiceLoginApiArg, AuthServiceLoginApiResponse, useAuthServiceLoginMutation } from "@api/api"; +import { setToken } from "@reducer/user.reducer"; +import { createContext, useContext, useMemo } from "react"; +import { useDispatch } from "react-redux"; +import { redirect, useNavigate } from "react-router-dom"; +import { AppDispatch } from "src/stores"; + +interface AuthProviderType { + login: (username: string, password: string) => void, + logout: () => void, + // todo figure out the type of loginProperties + loginProperties: { + isLoading: boolean, + isSuccess: boolean, + isError: boolean, + error: object, + data: object, + reset: () => void + } | undefined +} + + +const AuthContext = createContext<AuthProviderType>({ + login: () => { throw new Error("login function not implemented"); }, + logout: () => { throw new Error("logout function not implemented"); }, + loginProperties: undefined, +}); + +export const AuthProvider = ({ children }) => { + + const dispatch = useDispatch<AppDispatch>(); + const navigate = useNavigate(); + + const [ + sendLogin, + loginProperties, + ] = useAuthServiceLoginMutation() + + + /** + * Returns the /login payload + */ + const getAuthPayload = (username: string, password: string): AuthServiceLoginApiArg => { + const payload: AuthServiceLoginApiArg = { + rbacLoginRequest: { + username, + pwd: password, + timestamp: new Date().getTime().toString(), + }, + } + + return payload; + } + + const executeLogin = (username: string, password: string) => { + const authPayload = getAuthPayload(username, password); + + sendLogin(authPayload).unwrap().then((response: AuthServiceLoginApiResponse) => { + if (!response.token) { + // reset the action by calling the reset hook + throw Error("Response is successful but no token was provided. Expected response {token: '<jwt-token>'}"); + } + + dispatch(setToken(response.token)); + + + navigate('/'); + }).catch((error) => { + // determine whether 500 or 401 err + }); + } + + const login = (username: string, password: string) => { + executeLogin(username, password); + } + + const logout = () => { + // TODO + } + + const value = useMemo( + () => ({ + login, + logout, + loginProperties + }), + [] + ); + + return ( + <AuthContext.Provider value={value}> + {children} + </AuthContext.Provider> + ) +} + + +export const useAuth = () => { + return useContext(AuthContext); +} diff --git a/react-ui/tsconfig.json b/react-ui/tsconfig.json index 761bbe683..b8c8c0625 100644 --- a/react-ui/tsconfig.json +++ b/react-ui/tsconfig.json @@ -27,6 +27,9 @@ "@viewmodel/*": ["src/components/view_model/*"], "@view/*": ["src/components/view/*"], "@reducer/*": ["src/stores/reducer/*"], + "@provider/*": ["src/utils/provider/*"], + "@layout/*": ["src/utils/layouts/*"], + "@hooks": ["src/hooks"], } }, "include": [ diff --git a/react-ui/vite.config.mjs b/react-ui/vite.config.mjs index d5f7d6a21..c52ee47ca 100644 --- a/react-ui/vite.config.mjs +++ b/react-ui/vite.config.mjs @@ -33,6 +33,9 @@ export default defineConfig({ "@viewmodel": "/src/components/view_model", "@view": "/src/components/view", "@reducer": "/src/stores/reducer", + "@provider": "/src/utils/provider", + "@layout": "/src/utils/layouts", + "@hooks": "/src/hooks.ts", }, }, -- GitLab From d8ce376ff38f07d850f29d3f4579f392da7ba88c Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Fri, 23 Aug 2024 13:57:37 +0200 Subject: [PATCH 17/44] [feat] implement scheduler --- react-ui/package.json | 1 + .../components/view_model/login.viewmodel.ts | 3 - react-ui/src/index.tsx | 10 +-- react-ui/src/stores/persist.store.ts | 2 + .../src/stores/reducer/schedule.reducer.ts | 70 +++++++++++++++++++ react-ui/src/stores/reducer/user.reducer.ts | 8 ++- react-ui/src/utils/layouts/auth.layout.tsx | 17 +++-- react-ui/src/utils/layouts/login.layout.tsx | 10 +-- .../src/utils/layouts/protected.layout.tsx | 20 ++++-- react-ui/src/utils/provider/auth.provider.tsx | 52 ++++++++++---- .../src/utils/provider/fetch.provider.tsx | 21 ++++++ react-ui/src/utils/scheduler.tsx | 20 ++++++ react-ui/yarn.lock | 5 ++ 13 files changed, 199 insertions(+), 40 deletions(-) create mode 100644 react-ui/src/stores/reducer/schedule.reducer.ts create mode 100644 react-ui/src/utils/provider/fetch.provider.tsx create mode 100644 react-ui/src/utils/scheduler.tsx diff --git a/react-ui/package.json b/react-ui/package.json index f1941701c..966d60eec 100644 --- a/react-ui/package.json +++ b/react-ui/package.json @@ -13,6 +13,7 @@ "@testing-library/user-event": "^14.5.2", "bootstrap": "^5.3.3", "i18next": "^23.11.5", + "jwt-decode": "^4.0.0", "react": "^18.3.1", "react-bootstrap": "^2.10.2", "react-dom": "^18.3.1", diff --git a/react-ui/src/components/view_model/login.viewmodel.ts b/react-ui/src/components/view_model/login.viewmodel.ts index ed666d401..93f4c33f2 100644 --- a/react-ui/src/components/view_model/login.viewmodel.ts +++ b/react-ui/src/components/view_model/login.viewmodel.ts @@ -1,7 +1,5 @@ -import { useAppSelector } from "@hooks"; import { useAuth } from "@provider/auth.provider"; import { useState } from "react"; -import { useNavigate } from "react-router-dom"; export interface PageLoginState { submitted: boolean, @@ -20,7 +18,6 @@ export default function useLoginViewModel() { const handleErrorMessageRendering = (formInvalidError: JSX.Element, backendResponseError: JSX.Element): JSX.Element | null => { // backend response check - console.log('loginError:' + loginError); if (!!loginError) { return backendResponseError; } diff --git a/react-ui/src/index.tsx b/react-ui/src/index.tsx index 42d968e8c..899630387 100644 --- a/react-ui/src/index.tsx +++ b/react-ui/src/index.tsx @@ -9,6 +9,9 @@ import { import Landingpage from './components/view/landingpage/landingpage' import './index.scss' +import { BasicLayout } from '@layout/auth.layout' +import { LoginLayout } from '@layout/login.layout' +import { ProtectedLayout } from '@layout/protected.layout' import i18next from 'i18next' import { I18nextProvider } from 'react-i18next' import { Provider } from 'react-redux' @@ -17,9 +20,6 @@ import { PersistGate } from 'redux-persist/integration/react' import './i18n/config' import { persistor, store } from './stores' import './utils/icons/icons' -import { AuthLayout } from '@layout/auth.layout' -import { ProtectedLayout } from '@layout/protected.layout' -import { LoginLayout } from '@layout/login.layout' const root = ReactDOM.createRoot(document.getElementById('root') as Container) @@ -27,9 +27,9 @@ const root = ReactDOM.createRoot(document.getElementById('root') as Container) // create a proper routing const router = createBrowserRouter( createRoutesFromElements( - <Route element={<AuthLayout />}> + <Route element={<BasicLayout />}> <Route path="/login" element={<LoginLayout />} /> - <Route element={<ProtectedLayout/>}> + <Route element={<ProtectedLayout />}> <Route path="/" element={<Landingpage />} /> </Route> </Route> diff --git a/react-ui/src/stores/persist.store.ts b/react-ui/src/stores/persist.store.ts index 39f70ea2f..806b6e2e1 100644 --- a/react-ui/src/stores/persist.store.ts +++ b/react-ui/src/stores/persist.store.ts @@ -3,6 +3,7 @@ import { combineReducers } from "redux"; import { persistReducer } from "redux-persist"; import storage from "redux-persist/es/storage"; import { emptySplitApi } from "./api.store"; +import scheduleReducer from "@reducer/schedule.reducer"; /** local storage config */ @@ -15,6 +16,7 @@ const rootPersistConfig = { const rootReducer = combineReducers({ user: userReducer, + scheduler: scheduleReducer, [emptySplitApi.reducerPath]: emptySplitApi.reducer, }) diff --git a/react-ui/src/stores/reducer/schedule.reducer.ts b/react-ui/src/stores/reducer/schedule.reducer.ts new file mode 100644 index 000000000..345b26bf2 --- /dev/null +++ b/react-ui/src/stores/reducer/schedule.reducer.ts @@ -0,0 +1,70 @@ +import { PayloadAction, createSlice } from '@reduxjs/toolkit'; +import { startListening } from '../middleware/listener.middleware'; + +export enum ScheduleState { INIT, RUNNING, STOPPED } + +type Task<T> = (options: T) => void; + +interface Schedule<T> { + f: Task<T>, + interval: number, + id: number, + state: ScheduleState, + intervalId: NodeJS.Timeout | undefined +} + +export interface ScheduleReducerState { + schedules: Schedule<any>[] +} + +const initialState: ScheduleReducerState = { + schedules: [] +} + +const ScheduleSlice = createSlice({ + name: 'schedule', + initialState, + reducers: { + addSchedule: (state, action: PayloadAction<{ task: Task<any>, interval: number }>) => { + const newSchedule = { + f: action.payload.task, + interval: action.payload.interval, + id: state.schedules.length, + state: ScheduleState.INIT, + intervalId: undefined + } + + state.schedules = [...state.schedules, newSchedule] + }, + startSchedule: (state, action: PayloadAction<Schedule<any>>) => { + const schedule = action.payload; + schedule.intervalId = setInterval(schedule.f, schedule.interval); + schedule.state = ScheduleState.RUNNING; + + state.schedules[schedule.id] = schedule; + }, + }, +}) + +export const { addSchedule } = ScheduleSlice.actions +export const { startSchedule } = ScheduleSlice.actions + +export default ScheduleSlice.reducer + + +startListening({ + actionCreator: addSchedule, + + effect: (action, listenerApi) => { + const newState = listenerApi.getState() as ScheduleReducerState; + const originalState = listenerApi.getOriginalState() as ScheduleReducerState; + + // get the added schedule + const schedule = newState.schedules.filter(s => !originalState.schedules.includes(s)).at(0); + if (!schedule) { + throw new Error("Added schedule not found in store"); + } + + listenerApi.dispatch(startSchedule(schedule)) + }, +}) \ No newline at end of file diff --git a/react-ui/src/stores/reducer/user.reducer.ts b/react-ui/src/stores/reducer/user.reducer.ts index 478acb1c3..e1071968b 100644 --- a/react-ui/src/stores/reducer/user.reducer.ts +++ b/react-ui/src/stores/reducer/user.reducer.ts @@ -1,6 +1,7 @@ -import { PayloadAction, createSlice } from '@reduxjs/toolkit'; +import { PayloadAction, createAsyncThunk, createSlice } from '@reduxjs/toolkit'; import { RbacUser } from '../../utils/api/api'; import { startListening } from '../middleware/listener.middleware'; +import { useNavigate } from 'react-router-dom'; export interface UserSliceState { token: string, @@ -13,12 +14,13 @@ const initialState: UserSliceState = { user: null } - const userSlice = createSlice({ name: 'user', initialState, reducers: { - setToken: (state, action: PayloadAction<string>) => { state.token = action.payload }, + setToken: (state, action: PayloadAction<string>) => { + state.token = action.payload + }, }, }) diff --git a/react-ui/src/utils/layouts/auth.layout.tsx b/react-ui/src/utils/layouts/auth.layout.tsx index 84c717264..a38da03a9 100644 --- a/react-ui/src/utils/layouts/auth.layout.tsx +++ b/react-ui/src/utils/layouts/auth.layout.tsx @@ -1,10 +1,19 @@ import { AuthProvider } from "@provider/auth.provider"; -import { useOutlet } from "react-router-dom" +import { useEffect } from "react"; +import { useOutlet } from "react-router-dom"; +import { ScheduleProvider } from "../scheduler"; -export const AuthLayout = () => { +export const BasicLayout = () => { const outlet = useOutlet(); - + const { initSchedules } = ScheduleProvider(); + + useEffect(() => { + initSchedules(); + }, []) + return ( - <AuthProvider>{outlet}</AuthProvider> + <AuthProvider> + {outlet} + </AuthProvider> ) } \ No newline at end of file diff --git a/react-ui/src/utils/layouts/login.layout.tsx b/react-ui/src/utils/layouts/login.layout.tsx index e2c9b4a12..08a875f75 100644 --- a/react-ui/src/utils/layouts/login.layout.tsx +++ b/react-ui/src/utils/layouts/login.layout.tsx @@ -1,21 +1,21 @@ -import { useAppSelector } from "@hooks"; +import { useAuth } from "@provider/auth.provider"; import LoginPage from "@view/login/login.view"; import { useEffect } from "react"; import { useNavigate, useOutlet } from "react-router-dom"; -// if user is already logged in then redirect to home page export const LoginLayout = ({ children }) => { const outlet = useOutlet(); - const { token } = useAppSelector(state => state.user); const navigate = useNavigate(); + const { isAuthenticated } = useAuth(); + // if user is already logged in then redirect to home page useEffect(() => { - if (!!token) { + if (isAuthenticated()) { navigate('/'); return; } - }); + }, []); return ( <LoginPage>{outlet}</LoginPage> diff --git a/react-ui/src/utils/layouts/protected.layout.tsx b/react-ui/src/utils/layouts/protected.layout.tsx index e938c2f19..4c774b733 100644 --- a/react-ui/src/utils/layouts/protected.layout.tsx +++ b/react-ui/src/utils/layouts/protected.layout.tsx @@ -1,18 +1,24 @@ -import { Link, Navigate, Outlet } from "react-router-dom"; -import { useAppSelector } from '../../hooks'; +import { useAuth } from "@provider/auth.provider"; +import { useEffect } from "react"; +import { Button } from "react-bootstrap"; +import { Link, Outlet, useNavigate } from "react-router-dom"; export const ProtectedLayout = () => { - const { token } = useAppSelector(state => state.user); - - if (!!!token) { - return <Navigate to="/login" />; - } + const { isAuthenticated, logout } = useAuth(); + const navigate = useNavigate(); + useEffect(() => { + if (!isAuthenticated()) { + navigate('/login') + } + }, []); + return ( <div> <nav> <Link to="/settings">Settings</Link> <Link to="/profile">Profile</Link> + <Button onClick={logout}>logout</Button> </nav> <Outlet /> </div> diff --git a/react-ui/src/utils/provider/auth.provider.tsx b/react-ui/src/utils/provider/auth.provider.tsx index 9e1e09c5c..a741ef708 100644 --- a/react-ui/src/utils/provider/auth.provider.tsx +++ b/react-ui/src/utils/provider/auth.provider.tsx @@ -1,9 +1,9 @@ import { AuthServiceLoginApiArg, AuthServiceLoginApiResponse, useAuthServiceLoginMutation } from "@api/api"; +import { useAppDispatch, useAppSelector } from "@hooks"; import { setToken } from "@reducer/user.reducer"; -import { createContext, useContext, useMemo } from "react"; -import { useDispatch } from "react-redux"; -import { redirect, useNavigate } from "react-router-dom"; -import { AppDispatch } from "src/stores"; +import { jwtDecode } from "jwt-decode"; +import { createContext, useContext, useEffect, useMemo } from "react"; +import { useNavigate } from "react-router-dom"; interface AuthProviderType { login: (username: string, password: string) => void, @@ -16,26 +16,37 @@ interface AuthProviderType { error: object, data: object, reset: () => void - } | undefined + } | undefined, + isAuthenticated: () => boolean } - const AuthContext = createContext<AuthProviderType>({ login: () => { throw new Error("login function not implemented"); }, logout: () => { throw new Error("logout function not implemented"); }, loginProperties: undefined, + isAuthenticated: () => { throw new Error("login function not implemented"); }, }); export const AuthProvider = ({ children }) => { - - const dispatch = useDispatch<AppDispatch>(); + const dispatch = useAppDispatch();; const navigate = useNavigate(); + const { token } = useAppSelector(state => state.user); + + useEffect(() => { + console.log('auth provider init'); + + if (isAuthenticated()) { + navigate('/') + }else { + navigate('/login') + } + }, []); const [ sendLogin, loginProperties, ] = useAuthServiceLoginMutation() - + /** * Returns the /login payload @@ -62,8 +73,6 @@ export const AuthProvider = ({ children }) => { } dispatch(setToken(response.token)); - - navigate('/'); }).catch((error) => { // determine whether 500 or 401 err @@ -74,14 +83,32 @@ export const AuthProvider = ({ children }) => { executeLogin(username, password); } + const isAuthenticated = () => { + if (!token) { + return false; + } + + const { exp } = jwtDecode(token); + const currentTime = new Date().getTime() / 1000; + + // TODO this is currently a workaround for the never expiring token + if (process.env.NODE_ENV === 'development') { + return !!token; + }else { + return !!token && exp! > currentTime; + } + } + const logout = () => { - // TODO + dispatch(setToken("")); + // TODO: purge other information } const value = useMemo( () => ({ login, logout, + isAuthenticated, loginProperties }), [] @@ -94,7 +121,6 @@ export const AuthProvider = ({ children }) => { ) } - export const useAuth = () => { return useContext(AuthContext); } diff --git a/react-ui/src/utils/provider/fetch.provider.tsx b/react-ui/src/utils/provider/fetch.provider.tsx new file mode 100644 index 000000000..9db4e121c --- /dev/null +++ b/react-ui/src/utils/provider/fetch.provider.tsx @@ -0,0 +1,21 @@ +import { useAppSelector } from "@hooks"; +import { useAuth } from "./auth.provider" + + +// seconds before token expire to trigger a refetch +const REFETCH_TOKEN_TIME = 43200; + +const FetchProvider = () => { + const { isAuthenticated: isAuthed } = useAuth(); + const { token } = useAppSelector((root) => root.user); + + + const checkFetch = (): boolean => { + const { exp } = jwtDecode(token); + const currentTime = new Date().getTime() / 1000; + + return exp + } + + return +} \ No newline at end of file diff --git a/react-ui/src/utils/scheduler.tsx b/react-ui/src/utils/scheduler.tsx new file mode 100644 index 000000000..51bf94de3 --- /dev/null +++ b/react-ui/src/utils/scheduler.tsx @@ -0,0 +1,20 @@ +import { useAppSelector } from "@hooks"; +import { startSchedule } from "@reducer/schedule.reducer"; +import { useDispatch } from "react-redux"; +import { AppDispatch } from "src/stores"; + +export const ScheduleProvider = () => { + const dispatch = useDispatch<AppDispatch>(); + const { schedules } = useAppSelector(state => state.scheduler); + + + const initSchedules = () => { + schedules.forEach(schedule => { + dispatch(startSchedule(schedule)); + }) + } + + return { + initSchedules + } +} diff --git a/react-ui/yarn.lock b/react-ui/yarn.lock index 307e75062..a43298625 100644 --- a/react-ui/yarn.lock +++ b/react-ui/yarn.lock @@ -6963,6 +6963,11 @@ jsonpointer@^5.0.0: object.assign "^4.1.4" object.values "^1.1.6" +jwt-decode@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-4.0.0.tgz#2270352425fd413785b2faf11f6e755c5151bd4b" + integrity sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA== + keyv@^4.5.3, keyv@^4.5.4: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" -- GitLab From dfa73f493b324c27d50097204c79024db91ca6b6 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Sun, 25 Aug 2024 23:29:34 +0200 Subject: [PATCH 18/44] (feat) add generic navigation bar --- .../view/landingpage/landingpage.scss | 39 ------- .../view/landingpage/landingpage.tsx | 16 +-- .../src/i18n/locales/en/translations.json | 8 ++ react-ui/src/index.tsx | 2 +- react-ui/src/style/colors.scss | 2 + react-ui/src/style/utils.scss | 10 ++ .../src/utils/layouts/protected.layout.tsx | 26 ----- .../protected.layout/protected.layout.scss | 23 ++++ .../protected.layout/protected.layout.tsx | 107 ++++++++++++++++++ 9 files changed, 152 insertions(+), 81 deletions(-) delete mode 100644 react-ui/src/utils/layouts/protected.layout.tsx create mode 100644 react-ui/src/utils/layouts/protected.layout/protected.layout.scss create mode 100644 react-ui/src/utils/layouts/protected.layout/protected.layout.tsx diff --git a/react-ui/src/components/view/landingpage/landingpage.scss b/react-ui/src/components/view/landingpage/landingpage.scss index a46d992e7..e69de29bb 100644 --- a/react-ui/src/components/view/landingpage/landingpage.scss +++ b/react-ui/src/components/view/landingpage/landingpage.scss @@ -1,39 +0,0 @@ - -.App { - text-align: center; -} - -.App-logo { - height: 40vmin; - pointer-events: none; -} - -@media (prefers-reduced-motion: no-preference) { - .App-logo { - animation: App-logo-spin infinite 20s linear; - } -} - -.App-header { - background-color: #282c34; - min-height: 100vh; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - font-size: calc(10px + 2vmin); - color: white; -} - -.App-link { - color: #61dafb; -} - -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} diff --git a/react-ui/src/components/view/landingpage/landingpage.tsx b/react-ui/src/components/view/landingpage/landingpage.tsx index b8cb71bc0..62c358639 100644 --- a/react-ui/src/components/view/landingpage/landingpage.tsx +++ b/react-ui/src/components/view/landingpage/landingpage.tsx @@ -1,23 +1,9 @@ import './landingpage.scss' -import logo from '@assets/logo.svg' function Landingpage() { return ( <div className="App"> - <header className="App-header"> - <img src={logo} className="App-logo" alt="logo" /> - <p> - Edit <code>src/App.js</code> and save to reload. - </p> - <a - className="App-link" - href="https://reactjs.org" - target="_blank" - rel="noopener noreferrer" - > - Learn React - </a> - </header> + </div> ) } diff --git a/react-ui/src/i18n/locales/en/translations.json b/react-ui/src/i18n/locales/en/translations.json index 12ffef164..d46896a8c 100644 --- a/react-ui/src/i18n/locales/en/translations.json +++ b/react-ui/src/i18n/locales/en/translations.json @@ -17,6 +17,14 @@ "label": "Password" } } + }, + "protected": { + "link": { + "device_list": "Device List", + "map": "Map", + "configuration_mgmt": "Configuration Management", + "settings": "Settings" + } } } } \ No newline at end of file diff --git a/react-ui/src/index.tsx b/react-ui/src/index.tsx index 899630387..50f9c3509 100644 --- a/react-ui/src/index.tsx +++ b/react-ui/src/index.tsx @@ -11,7 +11,7 @@ import './index.scss' import { BasicLayout } from '@layout/auth.layout' import { LoginLayout } from '@layout/login.layout' -import { ProtectedLayout } from '@layout/protected.layout' +import { ProtectedLayout } from '@layout/protected.layout/protected.layout' import i18next from 'i18next' import { I18nextProvider } from 'react-i18next' import { Provider } from 'react-redux' diff --git a/react-ui/src/style/colors.scss b/react-ui/src/style/colors.scss index a10e9eafe..80e75f8b7 100644 --- a/react-ui/src/style/colors.scss +++ b/react-ui/src/style/colors.scss @@ -3,6 +3,8 @@ $theme-colors: ( 'bg-primary': #E1E1E1, 'danger': #ffdcdc, 'warning': #dbd116, + 'dark': #595959, + 'black': #000000, ); @import '/node_modules/bootstrap/scss/bootstrap'; diff --git a/react-ui/src/style/utils.scss b/react-ui/src/style/utils.scss index 9485a52c6..9dd71c4b8 100644 --- a/react-ui/src/style/utils.scss +++ b/react-ui/src/style/utils.scss @@ -1,3 +1,13 @@ .vh-100 { height: 100vh !important; +} + +.clickable { + &:hover { + cursor: pointer; + } +} + +.icon { + font-size: 1.75em; } \ No newline at end of file diff --git a/react-ui/src/utils/layouts/protected.layout.tsx b/react-ui/src/utils/layouts/protected.layout.tsx deleted file mode 100644 index 4c774b733..000000000 --- a/react-ui/src/utils/layouts/protected.layout.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { useAuth } from "@provider/auth.provider"; -import { useEffect } from "react"; -import { Button } from "react-bootstrap"; -import { Link, Outlet, useNavigate } from "react-router-dom"; - -export const ProtectedLayout = () => { - const { isAuthenticated, logout } = useAuth(); - const navigate = useNavigate(); - - useEffect(() => { - if (!isAuthenticated()) { - navigate('/login') - } - }, []); - - return ( - <div> - <nav> - <Link to="/settings">Settings</Link> - <Link to="/profile">Profile</Link> - <Button onClick={logout}>logout</Button> - </nav> - <Outlet /> - </div> - ) -}; \ No newline at end of file diff --git a/react-ui/src/utils/layouts/protected.layout/protected.layout.scss b/react-ui/src/utils/layouts/protected.layout/protected.layout.scss new file mode 100644 index 000000000..eb713fa7a --- /dev/null +++ b/react-ui/src/utils/layouts/protected.layout/protected.layout.scss @@ -0,0 +1,23 @@ +@import "/src/style/colors.scss"; + +.head-links { + text-decoration: none; + color: map-get($theme-colors, dark); + font-weight: 500; + margin-right: 20px; + + &:hover { + color: map-get($theme-colors, primary); + font-weight: 600; + } + + &.active { + color: map-get($theme-colors, primary); + font-weight: 600; + } +} + +.sidebar { + width: 4.5em; + height: 100vh; +} diff --git a/react-ui/src/utils/layouts/protected.layout/protected.layout.tsx b/react-ui/src/utils/layouts/protected.layout/protected.layout.tsx new file mode 100644 index 000000000..43ac08f2d --- /dev/null +++ b/react-ui/src/utils/layouts/protected.layout/protected.layout.tsx @@ -0,0 +1,107 @@ +import { useAuth } from "@provider/auth.provider"; +import { useEffect, useState } from "react"; +import { Button, Dropdown, DropdownButton, Form } from "react-bootstrap"; +import { Link, Outlet, useNavigate } from "react-router-dom"; +import logo from '@assets/logo.svg'; +import "./protected.layout.scss"; +import { useTranslation } from "react-i18next"; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import { faCircleUser, faRightFromBracket, faUser } from "@fortawesome/free-solid-svg-icons"; +import React from "react"; + + + + +export const ProtectedLayout = () => { + const { isAuthenticated, logout } = useAuth(); + const navigate = useNavigate(); + const { t } = useTranslation('common') + + useEffect(() => { + if (!isAuthenticated()) { + navigate('/login') + } + }, []); + + /** + * Applies active css class to link if the link is active + */ + const handleActiveLink = (targetPath: string): string => { + const href = window.location.href; + console.log(href); + + + return href.includes(targetPath) ? ' active' : ''; + } + + function UserDropDown() { + return ( + <DropdownButton id="dropdown-basic-button" title="Dropdown button"> + <Dropdown.Item href="#/action-1">Action</Dropdown.Item> + <Dropdown.Item href="#/action-2">Another action</Dropdown.Item> + <Dropdown.Item href="#/action-3">Something else</Dropdown.Item> + </DropdownButton> + ); + } + + const UserIconToggle = React.forwardRef(({ children, onClick }, ref) => ( + <div + href="" + ref={ref} + onClick={(e) => { + e.preventDefault(); + onClick(e); + }} + > + {children} + </div> + )); + + const UserIconMenu = React.forwardRef( + ({ children, style, className, 'aria-labelledby': labeledBy }, ref) => { + return ( + <div + ref={ref} + style={style} + className={className} + aria-labelledby={labeledBy} + > + <ul className="list-unstyled"> + {React.Children.toArray(children)} + </ul> + </div> + ); + } + ); + + + return ( + <div> + <nav className="bg-white border-bottom border-dark py-2 d-flex align-items-center"> + <Link to="/"><img src={logo} className="mx-4 me-5" width={25} alt="logo" /></Link> + <Link className={"head-links" + handleActiveLink('/')} to="/">{t('protected.link.device_list')}</Link> + <Link className={"head-links" + handleActiveLink('/map')} to="/">{t('protected.link.map')}</Link> + <Link className={"head-links" + handleActiveLink('/configuration_management')} to="/">{t('protected.link.configuration_mgmt')}</Link> + + <Dropdown className="ms-auto px-3"> + <Dropdown.Toggle as={UserIconToggle}> + <FontAwesomeIcon icon={faCircleUser} className="icon clickable" /> + </Dropdown.Toggle> + + <Dropdown.Menu as={UserIconMenu}> + <Dropdown.Item eventKey="1">matthias.feyll@stud.h-da.de</Dropdown.Item> + <Dropdown.Item eventKey="1"> + <Link className="text-decoration-none text-reset" to="/">{t('protected.link.settings')}</Link> + </Dropdown.Item> + </Dropdown.Menu> + </Dropdown> + + + </nav> + <div className="d-flex fixed-top z-n1 flex-column flex-shrink-0 bg-white sidebar justify-content-end border-end border-dark py-3"> + <FontAwesomeIcon className="clickable icon" icon={faRightFromBracket} onClick={logout} size="2x" /> + </div> + <Outlet /> + </div> + ) +}; \ No newline at end of file -- GitLab From 14fe3ff3a0c8188569fc66bef58ad75c80b9268c Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Sun, 25 Aug 2024 23:42:02 +0200 Subject: [PATCH 19/44] (refactor) cleanup generic header and sidebar navigation --- .../protected.layout/protected.layout.tsx | 57 +++++++++---------- 1 file changed, 27 insertions(+), 30 deletions(-) diff --git a/react-ui/src/utils/layouts/protected.layout/protected.layout.tsx b/react-ui/src/utils/layouts/protected.layout/protected.layout.tsx index 43ac08f2d..c0ef7d1a4 100644 --- a/react-ui/src/utils/layouts/protected.layout/protected.layout.tsx +++ b/react-ui/src/utils/layouts/protected.layout/protected.layout.tsx @@ -1,15 +1,12 @@ +import logo from '@assets/logo.svg'; +import { faCircleUser, faRightFromBracket } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { useAuth } from "@provider/auth.provider"; -import { useEffect, useState } from "react"; -import { Button, Dropdown, DropdownButton, Form } from "react-bootstrap"; +import React, { useEffect } from "react"; +import { Dropdown } from "react-bootstrap"; +import { useTranslation } from "react-i18next"; import { Link, Outlet, useNavigate } from "react-router-dom"; -import logo from '@assets/logo.svg'; import "./protected.layout.scss"; -import { useTranslation } from "react-i18next"; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' -import { faCircleUser, faRightFromBracket, faUser } from "@fortawesome/free-solid-svg-icons"; -import React from "react"; - - export const ProtectedLayout = () => { @@ -34,31 +31,22 @@ export const ProtectedLayout = () => { return href.includes(targetPath) ? ' active' : ''; } - function UserDropDown() { - return ( - <DropdownButton id="dropdown-basic-button" title="Dropdown button"> - <Dropdown.Item href="#/action-1">Action</Dropdown.Item> - <Dropdown.Item href="#/action-2">Another action</Dropdown.Item> - <Dropdown.Item href="#/action-3">Something else</Dropdown.Item> - </DropdownButton> - ); - } - - const UserIconToggle = React.forwardRef(({ children, onClick }, ref) => ( + /** renders the corpus for the user icon dropdown */ + const UserIconToggle = React.forwardRef(({ children, onClick }: React.LinkHTMLAttributes<any>, ref: any) => ( <div - href="" ref={ref} onClick={(e) => { e.preventDefault(); - onClick(e); + onClick!(e); }} > {children} </div> )); + /** renders the single items inside the user dropdown corpus */ const UserIconMenu = React.forwardRef( - ({ children, style, className, 'aria-labelledby': labeledBy }, ref) => { + ({ children, style, className, 'aria-labelledby': labeledBy }: React.LinkHTMLAttributes<any>, ref: any) => { return ( <div ref={ref} @@ -74,9 +62,16 @@ export const ProtectedLayout = () => { } ); + const VerticalSidebar = () => { + return ( + <div className="d-flex fixed-top z-n1 flex-column flex-shrink-0 bg-white sidebar justify-content-end border-end border-dark py-3"> + <FontAwesomeIcon className="clickable icon" icon={faRightFromBracket} onClick={logout} size="2x" /> + </div> + ) + } - return ( - <div> + const HorizontalNavbar = () => { + return ( <nav className="bg-white border-bottom border-dark py-2 d-flex align-items-center"> <Link to="/"><img src={logo} className="mx-4 me-5" width={25} alt="logo" /></Link> <Link className={"head-links" + handleActiveLink('/')} to="/">{t('protected.link.device_list')}</Link> @@ -95,12 +90,14 @@ export const ProtectedLayout = () => { </Dropdown.Item> </Dropdown.Menu> </Dropdown> - - </nav> - <div className="d-flex fixed-top z-n1 flex-column flex-shrink-0 bg-white sidebar justify-content-end border-end border-dark py-3"> - <FontAwesomeIcon className="clickable icon" icon={faRightFromBracket} onClick={logout} size="2x" /> - </div> + ) + } + + return ( + <div> + {HorizontalNavbar()} + {VerticalSidebar()} <Outlet /> </div> ) -- GitLab From 2c12fe51ed3e5706ba76776edabe6f827264ed61 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Mon, 26 Aug 2024 01:50:43 +0200 Subject: [PATCH 20/44] (feat) fetch user in background --- react-ui/src/stores/api.store.ts | 2 +- react-ui/src/stores/reducer/user.reducer.ts | 51 +++++++++++++------ .../protected.layout/protected.layout.tsx | 5 +- react-ui/src/utils/provider/auth.provider.tsx | 18 +++---- 4 files changed, 47 insertions(+), 29 deletions(-) diff --git a/react-ui/src/stores/api.store.ts b/react-ui/src/stores/api.store.ts index 9f9df0e52..bd36b8227 100644 --- a/react-ui/src/stores/api.store.ts +++ b/react-ui/src/stores/api.store.ts @@ -8,7 +8,7 @@ export const emptySplitApi = createApi({ const token = (getState() as RootState).user.token if (token) { - headers.set('authorization', `Bearer ${token}`) + headers.set('authorize', `${token}`) } return headers diff --git a/react-ui/src/stores/reducer/user.reducer.ts b/react-ui/src/stores/reducer/user.reducer.ts index e1071968b..b1d5f99cd 100644 --- a/react-ui/src/stores/reducer/user.reducer.ts +++ b/react-ui/src/stores/reducer/user.reducer.ts @@ -1,30 +1,36 @@ -import { PayloadAction, createAsyncThunk, createSlice } from '@reduxjs/toolkit'; -import { RbacUser } from '../../utils/api/api'; +import { api, RbacUser, UserServiceGetUsersApiArg } from '@api/api'; +import { createSlice, PayloadAction } from '@reduxjs/toolkit'; import { startListening } from '../middleware/listener.middleware'; -import { useNavigate } from 'react-router-dom'; +import { RootState } from '..'; export interface UserSliceState { token: string, + // defined by the frontend user input. This value is getting compared with the backend response + username: string, user: RbacUser | null, } const initialState: UserSliceState = { token: '', - user: null + username: '', + user: null, } const userSlice = createSlice({ name: 'user', initialState, reducers: { - setToken: (state, action: PayloadAction<string>) => { - state.token = action.payload + setToken: (state, action: PayloadAction<{ token: string, username: string }>) => { + state.token = action.payload.token; + state.username = action.payload.username }, + setUser: (state, action: PayloadAction<RbacUser>) => { state.user = action.payload }, }, }) export const { setToken } = userSlice.actions +export const { setUser } = userSlice.actions export default userSlice.reducer export const userReducerPath = userSlice.reducerPath; @@ -32,18 +38,31 @@ export const userReducerPath = userSlice.reducerPath; startListening({ - actionCreator: setToken, + predicate: (action, { user }: any) => { + return setToken.match(action) && !!user.token; + }, + + effect: async (_, listenerApi) => { + const payload: UserServiceGetUsersApiArg = {}; + + listenerApi.dispatch(api.endpoints.userServiceGetUsers.initiate(payload)).then((response) => { + if (response.error || !response.data?.user?.length) { + // TODO proper error handling + throw new Error('Fetching the pnd list after successful login failed'); + } + + const {user} = listenerApi.getState() as RootState; + + // TODO ask if this is the correct approach + const matchedUser = response.data.user.find((_user) => _user.name === user.username); - effect: async (action, listenerApi) => { + if (!matchedUser) { + // TODO proper error handling + throw new Error('No user found with the provided username'); + } - // const payload: AuthServiceLoginApiArg = { - // rbacLoginRequest: { - // username: action.payload.username, - // pwd: action.payload.password, - // timestamp: new Date().getTime().toString(), - // }, - // } - // listenerApi.dispatch(api.endpoints.authServiceLogin.initiate(payload)); + listenerApi.dispatch(setUser(matchedUser)); + }); }, }) \ No newline at end of file diff --git a/react-ui/src/utils/layouts/protected.layout/protected.layout.tsx b/react-ui/src/utils/layouts/protected.layout/protected.layout.tsx index c0ef7d1a4..3993a0383 100644 --- a/react-ui/src/utils/layouts/protected.layout/protected.layout.tsx +++ b/react-ui/src/utils/layouts/protected.layout/protected.layout.tsx @@ -7,10 +7,12 @@ import { Dropdown } from "react-bootstrap"; import { useTranslation } from "react-i18next"; import { Link, Outlet, useNavigate } from "react-router-dom"; import "./protected.layout.scss"; +import { useAppSelector } from '@hooks'; export const ProtectedLayout = () => { const { isAuthenticated, logout } = useAuth(); + const { user } = useAppSelector(state => state.user); const navigate = useNavigate(); const { t } = useTranslation('common') @@ -84,7 +86,8 @@ export const ProtectedLayout = () => { </Dropdown.Toggle> <Dropdown.Menu as={UserIconMenu}> - <Dropdown.Item eventKey="1">matthias.feyll@stud.h-da.de</Dropdown.Item> + <Dropdown.Item eventKey="1">{user?.name}</Dropdown.Item> + <hr /> <Dropdown.Item eventKey="1"> <Link className="text-decoration-none text-reset" to="/">{t('protected.link.settings')}</Link> </Dropdown.Item> diff --git a/react-ui/src/utils/provider/auth.provider.tsx b/react-ui/src/utils/provider/auth.provider.tsx index a741ef708..d583d4116 100644 --- a/react-ui/src/utils/provider/auth.provider.tsx +++ b/react-ui/src/utils/provider/auth.provider.tsx @@ -34,10 +34,10 @@ export const AuthProvider = ({ children }) => { useEffect(() => { console.log('auth provider init'); - + if (isAuthenticated()) { navigate('/') - }else { + } else { navigate('/login') } }, []); @@ -72,29 +72,25 @@ export const AuthProvider = ({ children }) => { throw Error("Response is successful but no token was provided. Expected response {token: '<jwt-token>'}"); } - dispatch(setToken(response.token)); + dispatch(setToken({ token: response.token, username })); navigate('/'); }).catch((error) => { // determine whether 500 or 401 err }); } - const login = (username: string, password: string) => { - executeLogin(username, password); - } - const isAuthenticated = () => { if (!token) { return false; } - + const { exp } = jwtDecode(token); const currentTime = new Date().getTime() / 1000; - + // TODO this is currently a workaround for the never expiring token if (process.env.NODE_ENV === 'development') { return !!token; - }else { + } else { return !!token && exp! > currentTime; } } @@ -106,7 +102,7 @@ export const AuthProvider = ({ children }) => { const value = useMemo( () => ({ - login, + login: executeLogin, logout, isAuthenticated, loginProperties -- GitLab From 4cca26efdb0388d63a58c842fb0645bc793a00bb Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Tue, 27 Aug 2024 10:43:13 +0200 Subject: [PATCH 21/44] wip --- react-ui/scripts/modify-api.sh | 32 ++++++++++++++++++++++++++++++++ react-ui/scripts/template.js | 18 ++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100755 react-ui/scripts/modify-api.sh create mode 100644 react-ui/scripts/template.js diff --git a/react-ui/scripts/modify-api.sh b/react-ui/scripts/modify-api.sh new file mode 100755 index 000000000..d5b9fdf5b --- /dev/null +++ b/react-ui/scripts/modify-api.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env sh + +# Verzeichnis mit den generierten Dateien +GENERATED_DIR="../src/utils/api/" + +# Template-Datei +TEMPLATE_FILE="./template.js" + +# Stelle sicher, dass das Template existiert +if [[ ! -f "$TEMPLATE_FILE" ]]; then + echo "Template file not found: $TEMPLATE_FILE" + exit 1 +fi + +# Füge den Inhalt des Templates in jede Query-Funktion ein +for file in "$GENERATED_DIR"/*.ts; do + if grep -q 'builder.query' "$file"; then + echo "Processing $file..." + + # Überprüfen, ob onCacheEntryAdded bereits vorhanden ist + if ! grep -q 'onCacheEntryAdded' "$file"; then + # Füge das Template in die Query-Funktion ein + sed -i.bak '/builder.query.*{/r '"$TEMPLATE_FILE" "$file" + + echo "Extended $file with onCacheEntryAdded." + else + echo "$file already contains onCacheEntryAdded, skipping." + fi + fi +done + +echo "All applicable files processed." \ No newline at end of file diff --git a/react-ui/scripts/template.js b/react-ui/scripts/template.js new file mode 100644 index 000000000..2fa7b2993 --- /dev/null +++ b/react-ui/scripts/template.js @@ -0,0 +1,18 @@ +onCacheEntryAdded: async (arg, { updateCachedData, cacheDataLoaded, cacheEntryRemoved }) => { + try { + // Warte, bis der Cache geladen ist + await cacheDataLoaded; + + // Beobachte kontinuierlich Änderungen am Cache + const unsubscribe = updateCachedData((draft) => { + console.log('Updated data:', draft); + // Hier kannst du auf die Daten zugreifen und z.B. weitere Aktionen auslösen + }); + + // Aufräumen, wenn der Cache entfernt wird + await cacheEntryRemoved; + unsubscribe(); + } catch (err) { + console.error('Error in onCacheEntryAdded:', err); + } + }, \ No newline at end of file -- GitLab From 5ab2f9de620988703a382063aad77920ebd1f0f3 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Tue, 27 Aug 2024 10:43:23 +0200 Subject: [PATCH 22/44] (fix) fix race conidtion on login | refetching persist in store now --- react-ui/scripts/modify-api.sh | 32 -------- react-ui/scripts/template.js | 18 ----- .../landingpage.scss => device/device.scss} | 0 .../components/view/device/device.view.tsx | 50 +++++++++++++ .../view/landingpage/landingpage.tsx | 11 --- .../src/components/view/login/login.view.tsx | 4 +- .../src/components/view/splash/splash.view.ts | 0 .../components/view_model/device.viewmodel.ts | 48 ++++++++++++ .../components/view_model/login.viewmodel.ts | 1 - react-ui/src/index.tsx | 29 +------- react-ui/src/routes.tsx | 16 ++++ react-ui/src/stores/api.store.ts | 8 +- react-ui/src/stores/persist.store.ts | 2 + react-ui/src/stores/reducer/device.reducer.ts | 74 +++++++++++++++++++ .../src/stores/reducer/schedule.reducer.ts | 50 +++++++------ react-ui/src/stores/reducer/user.reducer.ts | 57 +++++++------- react-ui/src/utils/helper/coookie.ts | 14 ++++ .../{auth.layout.tsx => basic.layout.tsx} | 9 +-- react-ui/src/utils/layouts/login.layout.tsx | 4 +- .../protected.layout/protected.layout.scss | 8 +- .../protected.layout/protected.layout.tsx | 14 ++-- react-ui/src/utils/provider/auth.provider.tsx | 16 ++-- .../src/utils/provider/fetch.provider.tsx | 21 ------ react-ui/src/utils/scheduler.tsx | 20 ----- react-ui/tsconfig.json | 4 +- react-ui/tsconfig.node.json | 2 +- react-ui/vite.config.mjs | 2 + 27 files changed, 302 insertions(+), 212 deletions(-) delete mode 100755 react-ui/scripts/modify-api.sh delete mode 100644 react-ui/scripts/template.js rename react-ui/src/components/view/{landingpage/landingpage.scss => device/device.scss} (100%) create mode 100644 react-ui/src/components/view/device/device.view.tsx delete mode 100644 react-ui/src/components/view/landingpage/landingpage.tsx delete mode 100644 react-ui/src/components/view/splash/splash.view.ts create mode 100644 react-ui/src/components/view_model/device.viewmodel.ts create mode 100644 react-ui/src/routes.tsx create mode 100644 react-ui/src/stores/reducer/device.reducer.ts create mode 100644 react-ui/src/utils/helper/coookie.ts rename react-ui/src/utils/layouts/{auth.layout.tsx => basic.layout.tsx} (52%) delete mode 100644 react-ui/src/utils/provider/fetch.provider.tsx delete mode 100644 react-ui/src/utils/scheduler.tsx diff --git a/react-ui/scripts/modify-api.sh b/react-ui/scripts/modify-api.sh deleted file mode 100755 index d5b9fdf5b..000000000 --- a/react-ui/scripts/modify-api.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env sh - -# Verzeichnis mit den generierten Dateien -GENERATED_DIR="../src/utils/api/" - -# Template-Datei -TEMPLATE_FILE="./template.js" - -# Stelle sicher, dass das Template existiert -if [[ ! -f "$TEMPLATE_FILE" ]]; then - echo "Template file not found: $TEMPLATE_FILE" - exit 1 -fi - -# Füge den Inhalt des Templates in jede Query-Funktion ein -for file in "$GENERATED_DIR"/*.ts; do - if grep -q 'builder.query' "$file"; then - echo "Processing $file..." - - # Überprüfen, ob onCacheEntryAdded bereits vorhanden ist - if ! grep -q 'onCacheEntryAdded' "$file"; then - # Füge das Template in die Query-Funktion ein - sed -i.bak '/builder.query.*{/r '"$TEMPLATE_FILE" "$file" - - echo "Extended $file with onCacheEntryAdded." - else - echo "$file already contains onCacheEntryAdded, skipping." - fi - fi -done - -echo "All applicable files processed." \ No newline at end of file diff --git a/react-ui/scripts/template.js b/react-ui/scripts/template.js deleted file mode 100644 index 2fa7b2993..000000000 --- a/react-ui/scripts/template.js +++ /dev/null @@ -1,18 +0,0 @@ -onCacheEntryAdded: async (arg, { updateCachedData, cacheDataLoaded, cacheEntryRemoved }) => { - try { - // Warte, bis der Cache geladen ist - await cacheDataLoaded; - - // Beobachte kontinuierlich Änderungen am Cache - const unsubscribe = updateCachedData((draft) => { - console.log('Updated data:', draft); - // Hier kannst du auf die Daten zugreifen und z.B. weitere Aktionen auslösen - }); - - // Aufräumen, wenn der Cache entfernt wird - await cacheEntryRemoved; - unsubscribe(); - } catch (err) { - console.error('Error in onCacheEntryAdded:', err); - } - }, \ No newline at end of file diff --git a/react-ui/src/components/view/landingpage/landingpage.scss b/react-ui/src/components/view/device/device.scss similarity index 100% rename from react-ui/src/components/view/landingpage/landingpage.scss rename to react-ui/src/components/view/device/device.scss diff --git a/react-ui/src/components/view/device/device.view.tsx b/react-ui/src/components/view/device/device.view.tsx new file mode 100644 index 000000000..8a664c4d8 --- /dev/null +++ b/react-ui/src/components/view/device/device.view.tsx @@ -0,0 +1,50 @@ +import { useAppSelector } from '@hooks'; +import { Col, Container, Row, Table } from 'react-bootstrap'; +import './device.scss'; +import { useDeviceViewModel } from '@viewmodel/device.viewmodel'; + +function DeviceView() { + const { devices } = useAppSelector(state => state.device); + useDeviceViewModel(); + + + const getDeviceTable = () => { + return devices.map((device, index) => ( + <tr key={index}> + <td>{device.name}</td> + <td>{device.id}</td> + <td>{device.pid}</td> + </tr> + )) + } + + return ( + <div className='m-4 pt-4'> + <Container className="bg-white rounded c-box"> + <Row > + <Col><h3>Device list</h3></Col> + </Row> + + <Row className='mt-2'> + <Col> + <Table striped bordered hover className='table-primary'> + <thead> + <tr> + <th>Name</th> + <th>UUID</th> + <th>User</th> + <th>Last updated</th> + </tr> + </thead> + <tbody> + {getDeviceTable()} + </tbody> + </Table> + </Col> + </Row> + </Container> + </div> + ) +} + +export default DeviceView diff --git a/react-ui/src/components/view/landingpage/landingpage.tsx b/react-ui/src/components/view/landingpage/landingpage.tsx deleted file mode 100644 index 62c358639..000000000 --- a/react-ui/src/components/view/landingpage/landingpage.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import './landingpage.scss' - -function Landingpage() { - return ( - <div className="App"> - - </div> - ) -} - -export default Landingpage diff --git a/react-ui/src/components/view/login/login.view.tsx b/react-ui/src/components/view/login/login.view.tsx index ba8da826e..405a42f84 100644 --- a/react-ui/src/components/view/login/login.view.tsx +++ b/react-ui/src/components/view/login/login.view.tsx @@ -6,7 +6,7 @@ import logo from '@assets/logo.svg' import useLoginViewModel from '@viewmodel/login.viewmodel' import React, { useRef } from 'react' -const LoginPage = ({ children }) => { +const LoginView = ({ children }) => { const { t } = useTranslation('common') const { login, handleErrorMessageRendering, displayFormFieldChecks, loginLoading } = useLoginViewModel(); @@ -82,4 +82,4 @@ const LoginPage = ({ children }) => { ) } -export default LoginPage +export default LoginView diff --git a/react-ui/src/components/view/splash/splash.view.ts b/react-ui/src/components/view/splash/splash.view.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/react-ui/src/components/view_model/device.viewmodel.ts b/react-ui/src/components/view_model/device.viewmodel.ts new file mode 100644 index 000000000..7ceb78809 --- /dev/null +++ b/react-ui/src/components/view_model/device.viewmodel.ts @@ -0,0 +1,48 @@ +import { api, NetworkelementFlattenedManagedNetworkElement, NetworkelementGetAllFlattenedResponse, NetworkElementServiceGetAllFlattenedApiArg } from "@api/api"; +import { useAppSelector } from "@hooks"; +import { setDevices } from "@reducer/device.reducer"; +import { QueryActionCreatorResult } from "@reduxjs/toolkit/query"; +import { useEffect } from "react"; +import { useDispatch } from "react-redux"; +import { AppDispatch } from "src/stores"; + +const FETCH_DEVICES_INTERVAL = 15000; // in ms + + +export const useDeviceViewModel = () => { + const { user } = useAppSelector(state => state.user); + const [triggerFetchDevices] = api.endpoints.networkElementServiceGetAllFlattened.useLazyQuerySubscription({ + pollingInterval: FETCH_DEVICES_INTERVAL, + skipPollingIfUnfocused: true + }); + const dispatch = useDispatch<AppDispatch>(); + + + // TODO figure out how we get the proper response type here + let fetchDevicesSubscription: QueryActionCreatorResult<any> | undefined; + + + useEffect(() => { + fetchDevices(); + + return () => { + fetchDevicesSubscription?.unsubscribe(); + } + }, []) + + const fetchDevices = () => { + const payload: NetworkElementServiceGetAllFlattenedApiArg = { + pid: Object.keys(user?.roles)[0], + timestamp: new Date().getTime().toString(), + } + + fetchDevicesSubscription = triggerFetchDevices(payload); + fetchDevicesSubscription.then((response) => { + const { mne } = response.data as NetworkelementGetAllFlattenedResponse; + dispatch(setDevices(mne)); + }); + } + + return { + } +} \ No newline at end of file diff --git a/react-ui/src/components/view_model/login.viewmodel.ts b/react-ui/src/components/view_model/login.viewmodel.ts index 93f4c33f2..370834a0c 100644 --- a/react-ui/src/components/view_model/login.viewmodel.ts +++ b/react-ui/src/components/view_model/login.viewmodel.ts @@ -9,7 +9,6 @@ export interface PageLoginState { export default function useLoginViewModel() { const {login, loginProperties} = useAuth(); const {isLoading: loginLoading, error: loginError, reset: resetLogin} = loginProperties!; - const [localFormState, updateLocalFormState] = useState({ submitted: false, diff --git a/react-ui/src/index.tsx b/react-ui/src/index.tsx index 50f9c3509..3eb8a604f 100644 --- a/react-ui/src/index.tsx +++ b/react-ui/src/index.tsx @@ -1,48 +1,27 @@ import React from 'react' import ReactDOM, { Container } from 'react-dom/client' import { - Route, - RouterProvider, - createBrowserRouter, - createRoutesFromElements + RouterProvider } from 'react-router-dom' -import Landingpage from './components/view/landingpage/landingpage' import './index.scss' -import { BasicLayout } from '@layout/auth.layout' -import { LoginLayout } from '@layout/login.layout' -import { ProtectedLayout } from '@layout/protected.layout/protected.layout' import i18next from 'i18next' import { I18nextProvider } from 'react-i18next' import { Provider } from 'react-redux' import { ToastContainer } from 'react-toastify' import { PersistGate } from 'redux-persist/integration/react' import './i18n/config' +import { router } from './routes' import { persistor, store } from './stores' import './utils/icons/icons' - -const root = ReactDOM.createRoot(document.getElementById('root') as Container) - -// create a proper routing -const router = createBrowserRouter( - createRoutesFromElements( - <Route element={<BasicLayout />}> - <Route path="/login" element={<LoginLayout />} /> - <Route element={<ProtectedLayout />}> - <Route path="/" element={<Landingpage />} /> - </Route> - </Route> - ) -) - const installToastify = () => { return ( <ToastContainer /> ) } -root.render( +ReactDOM.createRoot(document.getElementById("root")).render( <React.StrictMode> <Provider store={store}> <PersistGate loading={null} persistor={persistor}> @@ -53,4 +32,4 @@ root.render( </PersistGate> </Provider> </React.StrictMode> -) +); \ No newline at end of file diff --git a/react-ui/src/routes.tsx b/react-ui/src/routes.tsx new file mode 100644 index 000000000..28a06cbfb --- /dev/null +++ b/react-ui/src/routes.tsx @@ -0,0 +1,16 @@ +import { BasicLayout } from "@layout/basic.layout" +import { LoginLayout } from "@layout/login.layout" +import { ProtectedLayout } from "@layout/protected.layout/protected.layout" +import DeviceView from "@view/device/device.view" +import { createBrowserRouter, createRoutesFromElements, Route } from "react-router-dom" + +export const router = createBrowserRouter( + createRoutesFromElements( + <Route element={<BasicLayout />}> + <Route path="/login" element={<LoginLayout />} /> + <Route element={<ProtectedLayout />}> + <Route path="/" element={<DeviceView />} /> + </Route> + </Route> + ) +) \ No newline at end of file diff --git a/react-ui/src/stores/api.store.ts b/react-ui/src/stores/api.store.ts index bd36b8227..fd894e97b 100644 --- a/react-ui/src/stores/api.store.ts +++ b/react-ui/src/stores/api.store.ts @@ -1,11 +1,11 @@ -import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react' -import { RootState } from '.' +import { getCookieValue } from '@helper/coookie'; +import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'; // initialize an empty api service that we'll inject endpoints into later as needed export const emptySplitApi = createApi({ baseQuery: fetchBaseQuery({ - baseUrl: '/api', prepareHeaders: (headers, { getState }) => { - const token = (getState() as RootState).user.token + baseUrl: '/api', prepareHeaders: (headers) => { + const token = getCookieValue('token'); if (token) { headers.set('authorize', `${token}`) diff --git a/react-ui/src/stores/persist.store.ts b/react-ui/src/stores/persist.store.ts index 806b6e2e1..feb5241a8 100644 --- a/react-ui/src/stores/persist.store.ts +++ b/react-ui/src/stores/persist.store.ts @@ -4,6 +4,7 @@ import { persistReducer } from "redux-persist"; import storage from "redux-persist/es/storage"; import { emptySplitApi } from "./api.store"; import scheduleReducer from "@reducer/schedule.reducer"; +import deviceReducer from "@reducer/device.reducer"; /** local storage config */ @@ -16,6 +17,7 @@ const rootPersistConfig = { const rootReducer = combineReducers({ user: userReducer, + device: deviceReducer, scheduler: scheduleReducer, [emptySplitApi.reducerPath]: emptySplitApi.reducer, }) diff --git a/react-ui/src/stores/reducer/device.reducer.ts b/react-ui/src/stores/reducer/device.reducer.ts new file mode 100644 index 000000000..ec47ff1f8 --- /dev/null +++ b/react-ui/src/stores/reducer/device.reducer.ts @@ -0,0 +1,74 @@ +import { api, NetworkelementFlattenedManagedNetworkElement, NetworkElementServiceGetAllFlattenedApiArg } from '@api/api'; +import { createSlice, PayloadAction } from '@reduxjs/toolkit'; +import { QueryActionCreatorResult } from '@reduxjs/toolkit/query'; +import { RootState } from '..'; +import { startListening } from '../middleware/listener.middleware'; +import { setUser } from './user.reducer'; + +type Device = NetworkelementFlattenedManagedNetworkElement; + + +export interface DeviceSliceState { + devices: Device[], +} + +const initialState: DeviceSliceState = { + devices: [], +} + + + + +const deviceSlice = createSlice({ + name: 'device', + initialState, + reducers: { + setDevices: (state, action: PayloadAction<Device[]>) => { state.devices = action.payload }, + }, +}) + +export const { setDevices } = deviceSlice.actions + +export default deviceSlice.reducer +export const deviceReducerPath = deviceSlice.reducerPath; + + + +let fetchSubscription: QueryActionCreatorResult<any>[] = []; +export const abortFetching = () => { + fetchSubscription.forEach((subscription) => { + subscription.unsubscribe(); + }); + fetchSubscription = []; +} + +// continously fetch devices +const FETCH_DEVICES_INTERVAL = 5000; // in ms +startListening({ + actionCreator: setUser, + effect: async (_, listenerApi) => { + const { user } = listenerApi.getState() as RootState; + + const payload: NetworkElementServiceGetAllFlattenedApiArg = { + pid: Object.keys(user?.user.roles)[0], + timestamp: new Date().getTime().toString(), + } + + const subscription = listenerApi.dispatch(api.endpoints.networkElementServiceGetAllFlattened.initiate(payload, { + subscriptionOptions: { + pollingInterval: FETCH_DEVICES_INTERVAL, + skipPollingIfUnfocused: true, + } + })); + + fetchSubscription = [...fetchSubscription, subscription]; + }, +}) + +// save fetched devices +startListening({ + predicate: (action) => api.endpoints.networkElementServiceGetAllFlattened.matchFulfilled(action), + effect: async (action, listenerApi) => { + listenerApi.dispatch(setDevices(action.payload.mne)); + }, +}) \ No newline at end of file diff --git a/react-ui/src/stores/reducer/schedule.reducer.ts b/react-ui/src/stores/reducer/schedule.reducer.ts index 345b26bf2..2e2bbe36b 100644 --- a/react-ui/src/stores/reducer/schedule.reducer.ts +++ b/react-ui/src/stores/reducer/schedule.reducer.ts @@ -3,18 +3,21 @@ import { startListening } from '../middleware/listener.middleware'; export enum ScheduleState { INIT, RUNNING, STOPPED } -type Task<T> = (options: T) => void; - -interface Schedule<T> { - f: Task<T>, +export type Task = { + job: (options: object) => void, interval: number, + type: string +}; + +interface Schedule { + task: Task, id: number, state: ScheduleState, intervalId: NodeJS.Timeout | undefined } export interface ScheduleReducerState { - schedules: Schedule<any>[] + schedules: Schedule[] } const initialState: ScheduleReducerState = { @@ -25,10 +28,9 @@ const ScheduleSlice = createSlice({ name: 'schedule', initialState, reducers: { - addSchedule: (state, action: PayloadAction<{ task: Task<any>, interval: number }>) => { + registerTask: (state, action: PayloadAction<Task>) => { const newSchedule = { - f: action.payload.task, - interval: action.payload.interval, + task: action.payload.task, id: state.schedules.length, state: ScheduleState.INIT, intervalId: undefined @@ -36,9 +38,9 @@ const ScheduleSlice = createSlice({ state.schedules = [...state.schedules, newSchedule] }, - startSchedule: (state, action: PayloadAction<Schedule<any>>) => { + startSchedule: (state, action: PayloadAction<Schedule>) => { const schedule = action.payload; - schedule.intervalId = setInterval(schedule.f, schedule.interval); + schedule.intervalId = setInterval(schedule.task.job, schedule.task.interval); schedule.state = ScheduleState.RUNNING; state.schedules[schedule.id] = schedule; @@ -46,25 +48,25 @@ const ScheduleSlice = createSlice({ }, }) -export const { addSchedule } = ScheduleSlice.actions +export const { registerTask } = ScheduleSlice.actions export const { startSchedule } = ScheduleSlice.actions export default ScheduleSlice.reducer -startListening({ - actionCreator: addSchedule, +// startListening({ +// actionCreator: addSchedule, - effect: (action, listenerApi) => { - const newState = listenerApi.getState() as ScheduleReducerState; - const originalState = listenerApi.getOriginalState() as ScheduleReducerState; +// effect: (action, listenerApi) => { +// const newState = listenerApi.getState() as ScheduleReducerState; +// const originalState = listenerApi.getOriginalState() as ScheduleReducerState; - // get the added schedule - const schedule = newState.schedules.filter(s => !originalState.schedules.includes(s)).at(0); - if (!schedule) { - throw new Error("Added schedule not found in store"); - } +// // get the added schedule +// const schedule = newState.schedules.filter(s => !originalState.schedules.includes(s)).at(0); +// if (!schedule) { +// throw new Error("Added schedule not found in store"); +// } - listenerApi.dispatch(startSchedule(schedule)) - }, -}) \ No newline at end of file +// listenerApi.dispatch(startSchedule(schedule)) +// }, +// }) \ No newline at end of file diff --git a/react-ui/src/stores/reducer/user.reducer.ts b/react-ui/src/stores/reducer/user.reducer.ts index b1d5f99cd..797626db0 100644 --- a/react-ui/src/stores/reducer/user.reducer.ts +++ b/react-ui/src/stores/reducer/user.reducer.ts @@ -1,10 +1,10 @@ import { api, RbacUser, UserServiceGetUsersApiArg } from '@api/api'; -import { createSlice, PayloadAction } from '@reduxjs/toolkit'; -import { startListening } from '../middleware/listener.middleware'; +import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit'; import { RootState } from '..'; +import { startListening } from '../middleware/listener.middleware'; +import { getCookieValue, setCookieValue } from '@helper/coookie'; export interface UserSliceState { - token: string, // defined by the frontend user input. This value is getting compared with the backend response username: string, user: RbacUser | null, @@ -12,7 +12,6 @@ export interface UserSliceState { const initialState: UserSliceState = { - token: '', username: '', user: null, } @@ -22,8 +21,10 @@ const userSlice = createSlice({ initialState, reducers: { setToken: (state, action: PayloadAction<{ token: string, username: string }>) => { - state.token = action.payload.token; - state.username = action.payload.username + const token = action.payload?.token || ''; + setCookieValue('token', token); + + state.username = action.payload?.username || '' }, setUser: (state, action: PayloadAction<RbacUser>) => { state.user = action.payload }, }, @@ -36,33 +37,27 @@ export default userSlice.reducer export const userReducerPath = userSlice.reducerPath; +export const fetchUser = createAsyncThunk( + 'user/fetchUser', + (_, thunkAPI) => { + const payload: UserServiceGetUsersApiArg = {}; -startListening({ - predicate: (action, { user }: any) => { - return setToken.match(action) && !!user.token; - }, - - effect: async (_, listenerApi) => { - const payload: UserServiceGetUsersApiArg = {}; + thunkAPI.dispatch(api.endpoints.userServiceGetUsers.initiate(payload)).then((response) => { + if (response.error || !response.data?.user?.length) { + // TODO proper error handling + throw new Error('Fetching the pnd list after successful login failed'); + } - listenerApi.dispatch(api.endpoints.userServiceGetUsers.initiate(payload)).then((response) => { - if (response.error || !response.data?.user?.length) { - // TODO proper error handling - throw new Error('Fetching the pnd list after successful login failed'); - } + const { user } = thunkAPI.getState() as RootState; - const {user} = listenerApi.getState() as RootState; + // TODO ask if this is the correct approach + const matchedUser = response.data.user.find((_user) => _user.name === user.username); - // TODO ask if this is the correct approach - const matchedUser = response.data.user.find((_user) => _user.name === user.username); + if (!matchedUser) { + // TODO proper error handling + throw new Error('No user found with the provided username'); + } - if (!matchedUser) { - // TODO proper error handling - throw new Error('No user found with the provided username'); - } - - - listenerApi.dispatch(setUser(matchedUser)); - }); - }, -}) \ No newline at end of file + thunkAPI.dispatch(setUser(matchedUser)); + }); +}); \ No newline at end of file diff --git a/react-ui/src/utils/helper/coookie.ts b/react-ui/src/utils/helper/coookie.ts new file mode 100644 index 000000000..75cba2dc8 --- /dev/null +++ b/react-ui/src/utils/helper/coookie.ts @@ -0,0 +1,14 @@ +export const getCookieValue = (name: string): string => { + const regex = new RegExp(`(^| )${name}=([^;]+)`) + const match = document.cookie.match(regex) + + if (match) { + return match[2]; + } + + return ''; +} + +export const setCookieValue = (key: string, value: string): void => { + document.cookie = `${key}=${value}; Secure; SameSite=Lax`; +} \ No newline at end of file diff --git a/react-ui/src/utils/layouts/auth.layout.tsx b/react-ui/src/utils/layouts/basic.layout.tsx similarity index 52% rename from react-ui/src/utils/layouts/auth.layout.tsx rename to react-ui/src/utils/layouts/basic.layout.tsx index a38da03a9..7b7f2b11c 100644 --- a/react-ui/src/utils/layouts/auth.layout.tsx +++ b/react-ui/src/utils/layouts/basic.layout.tsx @@ -1,19 +1,14 @@ import { AuthProvider } from "@provider/auth.provider"; -import { useEffect } from "react"; import { useOutlet } from "react-router-dom"; -import { ScheduleProvider } from "../scheduler"; export const BasicLayout = () => { const outlet = useOutlet(); - const { initSchedules } = ScheduleProvider(); - useEffect(() => { - initSchedules(); - }, []) + return ( <AuthProvider> - {outlet} + {outlet} </AuthProvider> ) } \ No newline at end of file diff --git a/react-ui/src/utils/layouts/login.layout.tsx b/react-ui/src/utils/layouts/login.layout.tsx index 08a875f75..43e40aa30 100644 --- a/react-ui/src/utils/layouts/login.layout.tsx +++ b/react-ui/src/utils/layouts/login.layout.tsx @@ -1,5 +1,5 @@ import { useAuth } from "@provider/auth.provider"; -import LoginPage from "@view/login/login.view"; +import LoginView from "@view/login/login.view"; import { useEffect } from "react"; import { useNavigate, useOutlet } from "react-router-dom"; @@ -18,6 +18,6 @@ export const LoginLayout = ({ children }) => { }, []); return ( - <LoginPage>{outlet}</LoginPage> + <LoginView>{outlet}</LoginView> ) } \ No newline at end of file diff --git a/react-ui/src/utils/layouts/protected.layout/protected.layout.scss b/react-ui/src/utils/layouts/protected.layout/protected.layout.scss index eb713fa7a..47561615d 100644 --- a/react-ui/src/utils/layouts/protected.layout/protected.layout.scss +++ b/react-ui/src/utils/layouts/protected.layout/protected.layout.scss @@ -1,5 +1,7 @@ @import "/src/style/colors.scss"; +$sidebar-width: 4.5em; + .head-links { text-decoration: none; color: map-get($theme-colors, dark); @@ -18,6 +20,10 @@ } .sidebar { - width: 4.5em; + width: $sidebar-width; height: 100vh; } + +.main-content { + margin-left: $sidebar-width; +} \ No newline at end of file diff --git a/react-ui/src/utils/layouts/protected.layout/protected.layout.tsx b/react-ui/src/utils/layouts/protected.layout/protected.layout.tsx index 3993a0383..834b2ac5f 100644 --- a/react-ui/src/utils/layouts/protected.layout/protected.layout.tsx +++ b/react-ui/src/utils/layouts/protected.layout/protected.layout.tsx @@ -7,7 +7,8 @@ import { Dropdown } from "react-bootstrap"; import { useTranslation } from "react-i18next"; import { Link, Outlet, useNavigate } from "react-router-dom"; import "./protected.layout.scss"; -import { useAppSelector } from '@hooks'; +import { useAppDispatch, useAppSelector } from '@hooks'; +import { fetchUser } from '@reducer/user.reducer'; export const ProtectedLayout = () => { @@ -15,11 +16,15 @@ export const ProtectedLayout = () => { const { user } = useAppSelector(state => state.user); const navigate = useNavigate(); const { t } = useTranslation('common') + const dispatch = useAppDispatch(); useEffect(() => { if (!isAuthenticated()) { navigate('/login') + return; } + + dispatch(fetchUser()); }, []); /** @@ -27,9 +32,6 @@ export const ProtectedLayout = () => { */ const handleActiveLink = (targetPath: string): string => { const href = window.location.href; - console.log(href); - - return href.includes(targetPath) ? ' active' : ''; } @@ -101,7 +103,9 @@ export const ProtectedLayout = () => { <div> {HorizontalNavbar()} {VerticalSidebar()} - <Outlet /> + <div className='main-content'> + <Outlet /> + </div> </div> ) }; \ No newline at end of file diff --git a/react-ui/src/utils/provider/auth.provider.tsx b/react-ui/src/utils/provider/auth.provider.tsx index d583d4116..638d9b408 100644 --- a/react-ui/src/utils/provider/auth.provider.tsx +++ b/react-ui/src/utils/provider/auth.provider.tsx @@ -1,5 +1,7 @@ import { AuthServiceLoginApiArg, AuthServiceLoginApiResponse, useAuthServiceLoginMutation } from "@api/api"; +import { getCookieValue } from "@helper/coookie"; import { useAppDispatch, useAppSelector } from "@hooks"; +import { abortFetching } from "@reducer/device.reducer"; import { setToken } from "@reducer/user.reducer"; import { jwtDecode } from "jwt-decode"; import { createContext, useContext, useEffect, useMemo } from "react"; @@ -30,17 +32,17 @@ const AuthContext = createContext<AuthProviderType>({ export const AuthProvider = ({ children }) => { const dispatch = useAppDispatch();; const navigate = useNavigate(); - const { token } = useAppSelector(state => state.user); + const { username } = useAppSelector(state => state.user); useEffect(() => { - console.log('auth provider init'); - - if (isAuthenticated()) { + const token = getCookieValue('token'); + + if (token) { navigate('/') } else { navigate('/login') } - }, []); + }, [username]); const [ sendLogin, @@ -80,6 +82,7 @@ export const AuthProvider = ({ children }) => { } const isAuthenticated = () => { + const token = getCookieValue('token'); if (!token) { return false; } @@ -96,7 +99,8 @@ export const AuthProvider = ({ children }) => { } const logout = () => { - dispatch(setToken("")); + abortFetching(); + dispatch(setToken(null)); // TODO: purge other information } diff --git a/react-ui/src/utils/provider/fetch.provider.tsx b/react-ui/src/utils/provider/fetch.provider.tsx deleted file mode 100644 index 9db4e121c..000000000 --- a/react-ui/src/utils/provider/fetch.provider.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { useAppSelector } from "@hooks"; -import { useAuth } from "./auth.provider" - - -// seconds before token expire to trigger a refetch -const REFETCH_TOKEN_TIME = 43200; - -const FetchProvider = () => { - const { isAuthenticated: isAuthed } = useAuth(); - const { token } = useAppSelector((root) => root.user); - - - const checkFetch = (): boolean => { - const { exp } = jwtDecode(token); - const currentTime = new Date().getTime() / 1000; - - return exp - } - - return -} \ No newline at end of file diff --git a/react-ui/src/utils/scheduler.tsx b/react-ui/src/utils/scheduler.tsx deleted file mode 100644 index 51bf94de3..000000000 --- a/react-ui/src/utils/scheduler.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import { useAppSelector } from "@hooks"; -import { startSchedule } from "@reducer/schedule.reducer"; -import { useDispatch } from "react-redux"; -import { AppDispatch } from "src/stores"; - -export const ScheduleProvider = () => { - const dispatch = useDispatch<AppDispatch>(); - const { schedules } = useAppSelector(state => state.scheduler); - - - const initSchedules = () => { - schedules.forEach(schedule => { - dispatch(startSchedule(schedule)); - }) - } - - return { - initSchedules - } -} diff --git a/react-ui/tsconfig.json b/react-ui/tsconfig.json index b8c8c0625..cc5d30818 100644 --- a/react-ui/tsconfig.json +++ b/react-ui/tsconfig.json @@ -15,7 +15,7 @@ "jsx": "react-jsx", /* Linting */ - "strict": true, + "strict": false, "noUnusedLocals": true, "noUnusedParameters": true, "noFallthroughCasesInSwitch": true, @@ -30,6 +30,8 @@ "@provider/*": ["src/utils/provider/*"], "@layout/*": ["src/utils/layouts/*"], "@hooks": ["src/hooks"], + "@task/*": ["src/utils/tasks/*"], + "@helper/*": ["src/utils/helper/*"], } }, "include": [ diff --git a/react-ui/tsconfig.node.json b/react-ui/tsconfig.node.json index 9357c44f3..3a29b0309 100644 --- a/react-ui/tsconfig.node.json +++ b/react-ui/tsconfig.node.json @@ -5,7 +5,7 @@ "module": "ES2020", "moduleResolution": "bundler", "allowSyntheticDefaultImports": true, - "strict": true + "strict": false }, "include": [ "vite.config.ts" diff --git a/react-ui/vite.config.mjs b/react-ui/vite.config.mjs index c52ee47ca..dee436d2a 100644 --- a/react-ui/vite.config.mjs +++ b/react-ui/vite.config.mjs @@ -36,6 +36,8 @@ export default defineConfig({ "@provider": "/src/utils/provider", "@layout": "/src/utils/layouts", "@hooks": "/src/hooks.ts", + "@task": "/src/utils/tasks", + "@helper": "/src/utils/helper", }, }, -- GitLab From 67fd4d92ae9866d5930a937ae80667da29fcb053 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Fri, 13 Sep 2024 10:59:46 +0200 Subject: [PATCH 23/44] add metadata & yang model tabs --- .../view/device/deivce.view.tabs.tsx | 28 +++++++ .../src/components/view/device/device.scss | 13 ++++ .../view/device/device.view.table.tsx | 58 +++++++++++++++ .../components/view/device/device.view.tsx | 73 ++++++++++--------- .../view_model/device.table.viewmodel.ts | 29 ++++++++ .../components/view_model/device.viewmodel.ts | 55 ++++---------- .../src/i18n/locales/en/translations.json | 25 ++++++- react-ui/src/routes.tsx | 11 ++- react-ui/src/stores/reducer/device.reducer.ts | 35 ++++++--- react-ui/src/stores/reducer/user.reducer.ts | 3 +- react-ui/src/style/box.scss | 2 +- react-ui/src/style/utils.scss | 2 +- react-ui/src/utils/helper/coookie.ts | 2 +- .../protected.layout/protected.layout.tsx | 7 +- react-ui/src/utils/provider/auth.provider.tsx | 7 +- react-ui/tsconfig.json | 1 + react-ui/vite.config.mjs | 1 + 17 files changed, 256 insertions(+), 96 deletions(-) create mode 100644 react-ui/src/components/view/device/deivce.view.tabs.tsx create mode 100644 react-ui/src/components/view/device/device.view.table.tsx create mode 100644 react-ui/src/components/view_model/device.table.viewmodel.ts diff --git a/react-ui/src/components/view/device/deivce.view.tabs.tsx b/react-ui/src/components/view/device/deivce.view.tabs.tsx new file mode 100644 index 000000000..a49c7616b --- /dev/null +++ b/react-ui/src/components/view/device/deivce.view.tabs.tsx @@ -0,0 +1,28 @@ + +export enum DeviceViewTabValues { + METADATA = 'metadata', + YANGMODEL = 'yang_model' +} + +export const DeviceViewTabs = (activeTab: DeviceViewTabValues) => { + + const metadataTab = () => { + return ( + <div>test</div> + ) + } + + const yangModelTab = () => { + return ( + <div>asdf</div> + ) + } + + + return ( + <> + {(activeTab === DeviceViewTabValues.METADATA) && metadataTab()} + {(activeTab === DeviceViewTabValues.YANGMODEL) && yangModelTab()} + </> + ); +} diff --git a/react-ui/src/components/view/device/device.scss b/react-ui/src/components/view/device/device.scss index e69de29bb..826b7c293 100644 --- a/react-ui/src/components/view/device/device.scss +++ b/react-ui/src/components/view/device/device.scss @@ -0,0 +1,13 @@ +@import '../../../style/colors.scss'; + +thead { + font-size: 0.9em; +} + +tr:hover > td { + background-color: lighten(map-get($theme-colors, primary), 30%) !important; +} + +tr:nth-child(2n+1) > td { + background-color: lighten(map-get($theme-colors, primary) , 38%) +} \ No newline at end of file diff --git a/react-ui/src/components/view/device/device.view.table.tsx b/react-ui/src/components/view/device/device.view.table.tsx new file mode 100644 index 000000000..e2e6c4db5 --- /dev/null +++ b/react-ui/src/components/view/device/device.view.table.tsx @@ -0,0 +1,58 @@ +import { useAppSelector } from "@hooks"; +import { useDeviceTableViewModel } from "@viewmodel/device.table.viewmodel"; +import { MutableRefObject, useCallback } from "react"; +import { OverlayTrigger, Table, Tooltip } from "react-bootstrap"; +import { useTranslation } from "react-i18next"; + +export const DeviceViewTable = (searchRef: MutableRefObject<HTMLInputElement>) => { + const { devices, pnds } = useAppSelector(state => state.device); + const { t } = useTranslation('common'); + const { searchTerm } = useDeviceTableViewModel(searchRef); + + const cropUUID = (uuid: string): string => { + return uuid.substring(0, 3) + "..." + uuid.substring(uuid.length - 3, uuid.length); + } + + const getDeviceTable = useCallback(() => { + return devices.filter((device) => { + if (!searchRef.current?.value) { + return true; + } + + const searchInput = searchRef.current!.value; + const user = pnds.find(pnd => pnd.id === device.pid); + + return device.id.includes(searchInput) || device.name.includes(searchInput) || user?.name.includes(searchInput); + }).map((device, index) => { + const user = pnds.find(pnd => pnd.id === device.pid); + + return ( + <tr key={index}> + <td>{device.name}</td> + <OverlayTrigger overlay={<Tooltip id={device.id}>{device.id}</Tooltip>}> + <td>{cropUUID(device.id)}</td> + </OverlayTrigger> + <td>{user?.name || ''}</td> + <td></td> + </tr> + ) + }) + }, [searchTerm, devices, pnds]); + + + return ( + <Table striped responsive> + <thead> + <tr> + <th>{t('device.table.header.name')}</th> + <th>{t('device.table.header.uuid')}</th> + <th>{t('device.table.header.user')}</th> + <th>{t('device.table.header.last_updated')}</th> + </tr> + </thead> + <tbody> + {getDeviceTable()} + </tbody> + </Table> + ) +} \ No newline at end of file diff --git a/react-ui/src/components/view/device/device.view.tsx b/react-ui/src/components/view/device/device.view.tsx index 8a664c4d8..64a5cb93f 100644 --- a/react-ui/src/components/view/device/device.view.tsx +++ b/react-ui/src/components/view/device/device.view.tsx @@ -1,45 +1,52 @@ -import { useAppSelector } from '@hooks'; -import { Col, Container, Row, Table } from 'react-bootstrap'; -import './device.scss'; import { useDeviceViewModel } from '@viewmodel/device.viewmodel'; +import { useRef } from 'react'; +import { Button, Col, Container, FloatingLabel, Form, Nav, NavLink, Row } from 'react-bootstrap'; +import { useTranslation } from 'react-i18next'; +import { DeviceViewTabs, DeviceViewTabValues } from './deivce.view.tabs'; +import './device.scss'; +import { DeviceViewTable } from './device.view.table'; +import { useParams } from 'react-router-dom'; function DeviceView() { - const { devices } = useAppSelector(state => state.device); - useDeviceViewModel(); - - - const getDeviceTable = () => { - return devices.map((device, index) => ( - <tr key={index}> - <td>{device.name}</td> - <td>{device.id}</td> - <td>{device.pid}</td> - </tr> - )) - } + const { t } = useTranslation('common'); + const searchRef = useRef<HTMLInputElement>(null); + const { activeTab, setActiveTab, handleActiveTabLink } = useDeviceViewModel(); return ( <div className='m-4 pt-4'> - <Container className="bg-white rounded c-box"> - <Row > - <Col><h3>Device list</h3></Col> + <Container className="bg-white rounded c-box" fluid> + <Row className='my-2'> + <Col sm={7}><h3 className='text-black-50'>{t('device.title')}</h3></Col> + <Col sm={5}> + <Nav className='justify-content-around'> + <NavLink className={handleActiveTabLink(DeviceViewTabValues.METADATA)} onClick={() => setActiveTab(DeviceViewTabValues.METADATA)}>{t('device.tabs.metadata.title')}</NavLink> + <NavLink className={handleActiveTabLink(DeviceViewTabValues.YANGMODEL)} onClick={() => setActiveTab(DeviceViewTabValues.YANGMODEL)}>{t('device.tabs.yang_model.title')}</NavLink> + </Nav> + </Col> + + </Row> + + <Row> + <Col sm={3}> + <FloatingLabel + controlId="device.search" + label={t('device.search.placeholder')} + className='p-0 mx-2' + > + <Form.Control type="text" placeholder="name@example.com" ref={searchRef} /> + </FloatingLabel> + </Col> + <Col sm={{ span: 2, offset: 2 }}> + <Button variant='primary' className='w-100 my-auto'>{t('device.add_device_button')}</Button> + </Col> </Row> <Row className='mt-2'> - <Col> - <Table striped bordered hover className='table-primary'> - <thead> - <tr> - <th>Name</th> - <th>UUID</th> - <th>User</th> - <th>Last updated</th> - </tr> - </thead> - <tbody> - {getDeviceTable()} - </tbody> - </Table> + <Col sm={7}> + {DeviceViewTable(searchRef)} + </Col> + <Col sm={5} className='border-left border-primary'> + {DeviceViewTabs(activeTab)} </Col> </Row> </Container> diff --git a/react-ui/src/components/view_model/device.table.viewmodel.ts b/react-ui/src/components/view_model/device.table.viewmodel.ts new file mode 100644 index 000000000..224904699 --- /dev/null +++ b/react-ui/src/components/view_model/device.table.viewmodel.ts @@ -0,0 +1,29 @@ +import { useEffect, useState } from "react"; + +export const useDeviceTableViewModel = (searchRef) => { + const [searchTerm, setSearchTerm] = useState(''); + + useEffect(() => { + const handleSearchChange = () => { + if (searchRef.current) { + setSearchTerm(searchRef.current.value); + } + }; + + if (searchRef.current) { + searchRef.current.addEventListener('input', handleSearchChange); + } + + return () => { + if (searchRef.current) { + searchRef.current.removeEventListener('input', handleSearchChange); + } + }; + }, []); + + + + return { + searchTerm + } +} \ No newline at end of file diff --git a/react-ui/src/components/view_model/device.viewmodel.ts b/react-ui/src/components/view_model/device.viewmodel.ts index 7ceb78809..b7b46cd6a 100644 --- a/react-ui/src/components/view_model/device.viewmodel.ts +++ b/react-ui/src/components/view_model/device.viewmodel.ts @@ -1,48 +1,23 @@ -import { api, NetworkelementFlattenedManagedNetworkElement, NetworkelementGetAllFlattenedResponse, NetworkElementServiceGetAllFlattenedApiArg } from "@api/api"; -import { useAppSelector } from "@hooks"; -import { setDevices } from "@reducer/device.reducer"; -import { QueryActionCreatorResult } from "@reduxjs/toolkit/query"; -import { useEffect } from "react"; -import { useDispatch } from "react-redux"; -import { AppDispatch } from "src/stores"; - -const FETCH_DEVICES_INTERVAL = 15000; // in ms - +import { useAppDispatch, useAppSelector } from "@hooks"; +import { setActiveTab as setActiveTabState } from "@reducer/device.reducer"; +import { DeviceViewTabValues } from "@view/device/deivce.view.tabs"; export const useDeviceViewModel = () => { - const { user } = useAppSelector(state => state.user); - const [triggerFetchDevices] = api.endpoints.networkElementServiceGetAllFlattened.useLazyQuerySubscription({ - pollingInterval: FETCH_DEVICES_INTERVAL, - skipPollingIfUnfocused: true - }); - const dispatch = useDispatch<AppDispatch>(); - - - // TODO figure out how we get the proper response type here - let fetchDevicesSubscription: QueryActionCreatorResult<any> | undefined; - - - useEffect(() => { - fetchDevices(); - - return () => { - fetchDevicesSubscription?.unsubscribe(); - } - }, []) - - const fetchDevices = () => { - const payload: NetworkElementServiceGetAllFlattenedApiArg = { - pid: Object.keys(user?.roles)[0], - timestamp: new Date().getTime().toString(), - } + const {activeTab} = useAppSelector(state => state.device); + const dispatch = useAppDispatch(); + + const handleActiveTabLink = (tabLink: DeviceViewTabValues) => { + return activeTab === tabLink ? 'active' : ''; + } - fetchDevicesSubscription = triggerFetchDevices(payload); - fetchDevicesSubscription.then((response) => { - const { mne } = response.data as NetworkelementGetAllFlattenedResponse; - dispatch(setDevices(mne)); - }); + const setActiveTab = (tab: DeviceViewTabValues) => { + dispatch(setActiveTabState(tab)); } + return { + activeTab, + setActiveTab, + handleActiveTabLink } } \ No newline at end of file diff --git a/react-ui/src/i18n/locales/en/translations.json b/react-ui/src/i18n/locales/en/translations.json index d46896a8c..b58b299b1 100644 --- a/react-ui/src/i18n/locales/en/translations.json +++ b/react-ui/src/i18n/locales/en/translations.json @@ -18,10 +18,33 @@ } } }, + "device": { + "title": "Device list", + "table": { + "header": { + "name": "Name", + "uuid": "UUID", + "user": "User", + "last_updated": "Last updated" + } + }, + "search": { + "placeholder": "Search" + }, + "add_device_button": "Add device", + "tabs": { + "metadata": { + "title": "Metadata" + }, + "yang_model": { + "title": "YANG Model" + } + } + }, "protected": { "link": { "device_list": "Device List", - "map": "Map", + "map": "Map", "configuration_mgmt": "Configuration Management", "settings": "Settings" } diff --git a/react-ui/src/routes.tsx b/react-ui/src/routes.tsx index 28a06cbfb..b273246d9 100644 --- a/react-ui/src/routes.tsx +++ b/react-ui/src/routes.tsx @@ -2,14 +2,19 @@ import { BasicLayout } from "@layout/basic.layout" import { LoginLayout } from "@layout/login.layout" import { ProtectedLayout } from "@layout/protected.layout/protected.layout" import DeviceView from "@view/device/device.view" -import { createBrowserRouter, createRoutesFromElements, Route } from "react-router-dom" +import { createBrowserRouter, createRoutesFromElements, Navigate, Route } from "react-router-dom" + +export const DEVICE_URL = '/device/'; +export const LOGIN_URL = '/login'; + export const router = createBrowserRouter( createRoutesFromElements( <Route element={<BasicLayout />}> - <Route path="/login" element={<LoginLayout />} /> + <Route path={LOGIN_URL} element={<LoginLayout />} /> <Route element={<ProtectedLayout />}> - <Route path="/" element={<DeviceView />} /> + <Route path={DEVICE_URL} element={<DeviceView />} /> + <Route path="/" element={<Navigate to={DEVICE_URL} replace={true} />} /> </Route> </Route> ) diff --git a/react-ui/src/stores/reducer/device.reducer.ts b/react-ui/src/stores/reducer/device.reducer.ts index ec47ff1f8..3252fd8c7 100644 --- a/react-ui/src/stores/reducer/device.reducer.ts +++ b/react-ui/src/stores/reducer/device.reducer.ts @@ -1,40 +1,46 @@ -import { api, NetworkelementFlattenedManagedNetworkElement, NetworkElementServiceGetAllFlattenedApiArg } from '@api/api'; -import { createSlice, PayloadAction } from '@reduxjs/toolkit'; +import { api, NetworkelementFlattenedManagedNetworkElement, NetworkElementServiceGetAllFlattenedApiArg, PndPrincipalNetworkDomain, PndServiceGetPndListApiArg } from '@api/api'; +import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit'; import { QueryActionCreatorResult } from '@reduxjs/toolkit/query'; import { RootState } from '..'; import { startListening } from '../middleware/listener.middleware'; import { setUser } from './user.reducer'; +import { DeviceViewTabValues } from '@view/device/deivce.view.tabs'; type Device = NetworkelementFlattenedManagedNetworkElement; export interface DeviceSliceState { devices: Device[], + pnds: PndPrincipalNetworkDomain[], + + activeTab: DeviceViewTabValues } const initialState: DeviceSliceState = { devices: [], + pnds: [], + activeTab: DeviceViewTabValues.METADATA } - - - const deviceSlice = createSlice({ name: 'device', initialState, reducers: { setDevices: (state, action: PayloadAction<Device[]>) => { state.devices = action.payload }, + setPnds: (state, action: PayloadAction<PndPrincipalNetworkDomain[]>) => { state.pnds = action.payload }, + setActiveTab: (state, action: PayloadAction<DeviceViewTabValues>) => { state.activeTab = action.payload }, }, }) -export const { setDevices } = deviceSlice.actions +export const { setDevices, setActiveTab } = deviceSlice.actions +const { setPnds } = deviceSlice.actions export default deviceSlice.reducer export const deviceReducerPath = deviceSlice.reducerPath; -let fetchSubscription: QueryActionCreatorResult<any>[] = []; +let fetchSubscription: QueryActionCreatorResult<any>[] = []; export const abortFetching = () => { fetchSubscription.forEach((subscription) => { subscription.unsubscribe(); @@ -43,7 +49,7 @@ export const abortFetching = () => { } // continously fetch devices -const FETCH_DEVICES_INTERVAL = 5000; // in ms +const FETCH_DEVICES_INTERVAL = 15000; // in ms startListening({ actionCreator: setUser, effect: async (_, listenerApi) => { @@ -71,4 +77,15 @@ startListening({ effect: async (action, listenerApi) => { listenerApi.dispatch(setDevices(action.payload.mne)); }, -}) \ No newline at end of file +}) + +export const fetchPnds = createAsyncThunk('device/fetchPnds', (_, thunkApi) => { + const payload: PndServiceGetPndListApiArg = { + timestamp: new Date().getTime().toString(), + } + + const subscription = thunkApi.dispatch(api.endpoints.pndServiceGetPndList.initiate(payload)); + subscription.unwrap().then((response) => { + thunkApi.dispatch(setPnds(response.pnd)); + }); +}); diff --git a/react-ui/src/stores/reducer/user.reducer.ts b/react-ui/src/stores/reducer/user.reducer.ts index 797626db0..ce9f2b502 100644 --- a/react-ui/src/stores/reducer/user.reducer.ts +++ b/react-ui/src/stores/reducer/user.reducer.ts @@ -1,8 +1,7 @@ import { api, RbacUser, UserServiceGetUsersApiArg } from '@api/api'; +import { setCookieValue } from '@helper/coookie'; import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit'; import { RootState } from '..'; -import { startListening } from '../middleware/listener.middleware'; -import { getCookieValue, setCookieValue } from '@helper/coookie'; export interface UserSliceState { // defined by the frontend user input. This value is getting compared with the backend response diff --git a/react-ui/src/style/box.scss b/react-ui/src/style/box.scss index e7a3ca7d3..bd75fb00a 100644 --- a/react-ui/src/style/box.scss +++ b/react-ui/src/style/box.scss @@ -1,7 +1,7 @@ @import './colors.scss'; $box-padding: 10px; -$border-radius: 10px; +$border-radius: 20px; .c-box { diff --git a/react-ui/src/style/utils.scss b/react-ui/src/style/utils.scss index 9dd71c4b8..d8be654f7 100644 --- a/react-ui/src/style/utils.scss +++ b/react-ui/src/style/utils.scss @@ -10,4 +10,4 @@ .icon { font-size: 1.75em; -} \ No newline at end of file +} diff --git a/react-ui/src/utils/helper/coookie.ts b/react-ui/src/utils/helper/coookie.ts index 75cba2dc8..d15e2702c 100644 --- a/react-ui/src/utils/helper/coookie.ts +++ b/react-ui/src/utils/helper/coookie.ts @@ -10,5 +10,5 @@ export const getCookieValue = (name: string): string => { } export const setCookieValue = (key: string, value: string): void => { - document.cookie = `${key}=${value}; Secure; SameSite=Lax`; + document.cookie = `${key}=${value}; Secure; SameSite=Lax; path=/`; } \ No newline at end of file diff --git a/react-ui/src/utils/layouts/protected.layout/protected.layout.tsx b/react-ui/src/utils/layouts/protected.layout/protected.layout.tsx index 834b2ac5f..588491230 100644 --- a/react-ui/src/utils/layouts/protected.layout/protected.layout.tsx +++ b/react-ui/src/utils/layouts/protected.layout/protected.layout.tsx @@ -9,6 +9,8 @@ import { Link, Outlet, useNavigate } from "react-router-dom"; import "./protected.layout.scss"; import { useAppDispatch, useAppSelector } from '@hooks'; import { fetchUser } from '@reducer/user.reducer'; +import { fetchPnds } from '@reducer/device.reducer'; +import { DEVICE_URL, LOGIN_URL } from '@routes'; export const ProtectedLayout = () => { @@ -20,11 +22,12 @@ export const ProtectedLayout = () => { useEffect(() => { if (!isAuthenticated()) { - navigate('/login') + navigate(LOGIN_URL) return; } dispatch(fetchUser()); + dispatch(fetchPnds()); }, []); /** @@ -78,7 +81,7 @@ export const ProtectedLayout = () => { return ( <nav className="bg-white border-bottom border-dark py-2 d-flex align-items-center"> <Link to="/"><img src={logo} className="mx-4 me-5" width={25} alt="logo" /></Link> - <Link className={"head-links" + handleActiveLink('/')} to="/">{t('protected.link.device_list')}</Link> + <Link className={"head-links" + handleActiveLink(DEVICE_URL)} to="/">{t('protected.link.device_list')}</Link> <Link className={"head-links" + handleActiveLink('/map')} to="/">{t('protected.link.map')}</Link> <Link className={"head-links" + handleActiveLink('/configuration_management')} to="/">{t('protected.link.configuration_mgmt')}</Link> diff --git a/react-ui/src/utils/provider/auth.provider.tsx b/react-ui/src/utils/provider/auth.provider.tsx index 638d9b408..e3a90d711 100644 --- a/react-ui/src/utils/provider/auth.provider.tsx +++ b/react-ui/src/utils/provider/auth.provider.tsx @@ -3,6 +3,7 @@ import { getCookieValue } from "@helper/coookie"; import { useAppDispatch, useAppSelector } from "@hooks"; import { abortFetching } from "@reducer/device.reducer"; import { setToken } from "@reducer/user.reducer"; +import { DEVICE_URL, LOGIN_URL } from "@routes"; import { jwtDecode } from "jwt-decode"; import { createContext, useContext, useEffect, useMemo } from "react"; import { useNavigate } from "react-router-dom"; @@ -38,9 +39,9 @@ export const AuthProvider = ({ children }) => { const token = getCookieValue('token'); if (token) { - navigate('/') + navigate(DEVICE_URL) } else { - navigate('/login') + navigate(LOGIN_URL) } }, [username]); @@ -75,7 +76,7 @@ export const AuthProvider = ({ children }) => { } dispatch(setToken({ token: response.token, username })); - navigate('/'); + navigate(DEVICE_URL); }).catch((error) => { // determine whether 500 or 401 err }); diff --git a/react-ui/tsconfig.json b/react-ui/tsconfig.json index cc5d30818..32b67b0d1 100644 --- a/react-ui/tsconfig.json +++ b/react-ui/tsconfig.json @@ -30,6 +30,7 @@ "@provider/*": ["src/utils/provider/*"], "@layout/*": ["src/utils/layouts/*"], "@hooks": ["src/hooks"], + "@routes": ["src/routes.tsx"], "@task/*": ["src/utils/tasks/*"], "@helper/*": ["src/utils/helper/*"], } diff --git a/react-ui/vite.config.mjs b/react-ui/vite.config.mjs index dee436d2a..c5073c14e 100644 --- a/react-ui/vite.config.mjs +++ b/react-ui/vite.config.mjs @@ -38,6 +38,7 @@ export default defineConfig({ "@hooks": "/src/hooks.ts", "@task": "/src/utils/tasks", "@helper": "/src/utils/helper", + "@routes": "/src/routes.tsx", }, }, -- GitLab From 7d1371ff4f3a33ab8a86db68f827a916f689b422 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Mon, 16 Sep 2024 13:45:45 +0200 Subject: [PATCH 24/44] apply some styles to device page --- .../src/components/view/device/device.scss | 39 +++++++++++++++++++ .../components/view/device/device.view.tsx | 31 +++++++-------- react-ui/src/style/fonts.scss | 7 ++-- 3 files changed, 56 insertions(+), 21 deletions(-) diff --git a/react-ui/src/components/view/device/device.scss b/react-ui/src/components/view/device/device.scss index 826b7c293..d24b08084 100644 --- a/react-ui/src/components/view/device/device.scss +++ b/react-ui/src/components/view/device/device.scss @@ -10,4 +10,43 @@ tr:hover > td { tr:nth-child(2n+1) > td { background-color: lighten(map-get($theme-colors, primary) , 38%) +} + +.c-box { + padding: 2em !important; + padding-top: 1em !important; + +} + + + +.border-right { + $border-padding: 2em; + + border-right: 1px solid lighten(map-get($theme-colors, dark), 35%); + padding-right: $border-padding; + + & ~ div { + padding-left: $border-padding; + } +} + +.tab-links { + font-size: 1.5em; + text-decoration: none; + color: map-get($theme-colors, dark); + + &:hover { + color: lighten(map-get($theme-colors, primary), 10%); + } + + &:focus { + border: none !important; + color: lighten(map-get($theme-colors, primary), 10%); + } + + &.active { + color: map-get($theme-colors, primary); + font-weight: 500; + } } \ No newline at end of file diff --git a/react-ui/src/components/view/device/device.view.tsx b/react-ui/src/components/view/device/device.view.tsx index 64a5cb93f..d4955d4b3 100644 --- a/react-ui/src/components/view/device/device.view.tsx +++ b/react-ui/src/components/view/device/device.view.tsx @@ -5,7 +5,6 @@ import { useTranslation } from 'react-i18next'; import { DeviceViewTabs, DeviceViewTabValues } from './deivce.view.tabs'; import './device.scss'; import { DeviceViewTable } from './device.view.table'; -import { useParams } from 'react-router-dom'; function DeviceView() { const { t } = useTranslation('common'); @@ -15,37 +14,33 @@ function DeviceView() { return ( <div className='m-4 pt-4'> <Container className="bg-white rounded c-box" fluid> - <Row className='my-2'> - <Col sm={7}><h3 className='text-black-50'>{t('device.title')}</h3></Col> - <Col sm={5}> + <Row> + <Col sm={7} className='border-right mt-4'><h3 className='text-black-50'>{t('device.title')}</h3></Col> + <Col sm={5} className='mt-4'> <Nav className='justify-content-around'> - <NavLink className={handleActiveTabLink(DeviceViewTabValues.METADATA)} onClick={() => setActiveTab(DeviceViewTabValues.METADATA)}>{t('device.tabs.metadata.title')}</NavLink> - <NavLink className={handleActiveTabLink(DeviceViewTabValues.YANGMODEL)} onClick={() => setActiveTab(DeviceViewTabValues.YANGMODEL)}>{t('device.tabs.yang_model.title')}</NavLink> + <NavLink className={handleActiveTabLink(DeviceViewTabValues.METADATA) + " tab-links"} onClick={() => setActiveTab(DeviceViewTabValues.METADATA)}>{t('device.tabs.metadata.title')}</NavLink> + <NavLink className={handleActiveTabLink(DeviceViewTabValues.YANGMODEL) + " tab-links"} onClick={() => setActiveTab(DeviceViewTabValues.YANGMODEL)}>{t('device.tabs.yang_model.title')}</NavLink> </Nav> </Col> </Row> - <Row> + <Row className='align-items-center'> <Col sm={3}> - <FloatingLabel - controlId="device.search" - label={t('device.search.placeholder')} - className='p-0 mx-2' - > - <Form.Control type="text" placeholder="name@example.com" ref={searchRef} /> - </FloatingLabel> + <Form.Group controlId='device.search' className='p-0 mx-1 pt-2'> + <Form.Control type="text" placeholder={t('device.search.placeholder')} ref={searchRef} /> + </Form.Group> </Col> - <Col sm={{ span: 2, offset: 2 }}> + <Col sm={{ span: 2, offset: 2 }} className='border-right pt-2'> <Button variant='primary' className='w-100 my-auto'>{t('device.add_device_button')}</Button> </Col> </Row> - <Row className='mt-2'> - <Col sm={7}> + <Row className='align-items-start'> + <Col sm={7} className='pt-2 border-right'> {DeviceViewTable(searchRef)} </Col> - <Col sm={5} className='border-left border-primary'> + <Col sm={5} className='pt-2'> {DeviceViewTabs(activeTab)} </Col> </Row> diff --git a/react-ui/src/style/fonts.scss b/react-ui/src/style/fonts.scss index b5f7ec4e6..c47d1a52f 100644 --- a/react-ui/src/style/fonts.scss +++ b/react-ui/src/style/fonts.scss @@ -1,8 +1,9 @@ @font-face { - font-family: inter_font; - src: url("./fonts/Inter.ttf"); + font-family: Inter; + src: url("/fonts/Inter.ttf"); } + * { - font-family: inter_font; + font-family: Inter; } \ No newline at end of file -- GitLab From e8f6afc9d381f57ccdcccd7a220c2fcf40213971 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Wed, 25 Sep 2024 14:36:37 +0200 Subject: [PATCH 25/44] ui: add subscription pattern --- .../subscriptions/action.subscription.ts | 2 + .../subscriptions/device.subscription.ts | 43 +++++++ .../src/components/subscriptions/index.ts | 26 +++++ .../subscriptions/mne.subscription.ts | 45 ++++++++ .../view/device/deivce.view.tabs.tsx | 28 ----- .../view/device/device.view.table.tsx | 5 +- .../view/device/device.view.tabs.tsx | 57 ++++++++++ .../components/view/device/device.view.tsx | 2 +- .../view_model/device.table.viewmodel.ts | 10 +- .../components/view_model/device.viewmodel.ts | 2 +- react-ui/src/index.tsx | 4 +- react-ui/src/stores/index.ts | 5 +- react-ui/src/stores/persist.store.ts | 8 +- react-ui/src/stores/reducer/device.reducer.ts | 72 ++++-------- .../src/stores/reducer/schedule.reducer.ts | 72 ------------ .../stores/reducer/subscription.reducer.ts | 105 ++++++++++++++++++ .../src/utils/api/subscription.handler.ts | 65 +++++++++++ react-ui/src/utils/provider/auth.provider.tsx | 7 +- react-ui/tsconfig.json | 79 ++++++------- react-ui/vite.config.mjs | 92 ++++++++------- 20 files changed, 486 insertions(+), 243 deletions(-) create mode 100644 react-ui/src/components/subscriptions/action.subscription.ts create mode 100644 react-ui/src/components/subscriptions/device.subscription.ts create mode 100644 react-ui/src/components/subscriptions/index.ts create mode 100644 react-ui/src/components/subscriptions/mne.subscription.ts delete mode 100644 react-ui/src/components/view/device/deivce.view.tabs.tsx create mode 100644 react-ui/src/components/view/device/device.view.tabs.tsx delete mode 100644 react-ui/src/stores/reducer/schedule.reducer.ts create mode 100644 react-ui/src/stores/reducer/subscription.reducer.ts create mode 100644 react-ui/src/utils/api/subscription.handler.ts diff --git a/react-ui/src/components/subscriptions/action.subscription.ts b/react-ui/src/components/subscriptions/action.subscription.ts new file mode 100644 index 000000000..746e3df36 --- /dev/null +++ b/react-ui/src/components/subscriptions/action.subscription.ts @@ -0,0 +1,2 @@ +export const FETCH_MNE_ACTION = 'subscription/device/fetchSelectedMNE'; +export const FETCH_DEVICE_ACTION = 'subscription/device/fetchDevices' \ No newline at end of file diff --git a/react-ui/src/components/subscriptions/device.subscription.ts b/react-ui/src/components/subscriptions/device.subscription.ts new file mode 100644 index 000000000..5afcc7c68 --- /dev/null +++ b/react-ui/src/components/subscriptions/device.subscription.ts @@ -0,0 +1,43 @@ +import { NetworkElementServiceGetAllFlattenedApiArg, api } from "@api/api"; +import { setDevices } from "@reducer/device.reducer"; +import { setUser } from "@reducer/user.reducer"; +import { createAsyncThunk } from "@reduxjs/toolkit"; +import { RootState } from "src/stores"; +import { startListening } from "../../../src/stores/middleware/listener.middleware"; +import { FETCH_DEVICE_ACTION } from "./action.subscription"; + +// continously fetch devices +const FETCH_DEVICES_INTERVAL = 15000; // in ms +startListening({ + actionCreator: setUser, + effect: async (_, listenerApi) => { + listenerApi.dispatch(fetchDevicesThunk()); + }, +}) + +export const fetchDevicesThunk = createAsyncThunk(FETCH_DEVICE_ACTION, (_, thunkApi) => { + const { user } = thunkApi.getState() as RootState; + + const payload: NetworkElementServiceGetAllFlattenedApiArg = { + pid: Object.keys(user?.user.roles)[0], + timestamp: new Date().getTime().toString(), + } + + const subscription = thunkApi.dispatch(api.endpoints.networkElementServiceGetAllFlattened.initiate(payload, { + subscriptionOptions: { + pollingInterval: FETCH_DEVICES_INTERVAL, + skipPollingIfUnfocused: true, + } + })); + + return subscription; +}); + + +// save fetched devices +startListening({ + predicate: (action) => api.endpoints.networkElementServiceGetAllFlattened.matchFulfilled(action), + effect: async (action, listenerApi) => { + listenerApi.dispatch(setDevices(action.payload.mne)); + }, +}) \ No newline at end of file diff --git a/react-ui/src/components/subscriptions/index.ts b/react-ui/src/components/subscriptions/index.ts new file mode 100644 index 000000000..2a3e02f20 --- /dev/null +++ b/react-ui/src/components/subscriptions/index.ts @@ -0,0 +1,26 @@ +import { AsyncThunk } from '@reduxjs/toolkit'; +import { fetchDevicesThunk } from './device.subscription'; +import { fetchSelectedMneThunk } from './mne.subscription'; + + +export enum THUNK_TYPE { + MNE = 'device/fetch', + DEVICE = 'mne/fetch', +} + +export interface SubscriptionThunkModule { + thunkFn?: AsyncThunk<any, any, {}> + type: THUNK_TYPE, +} + +export const SubscriptionThunks: SubscriptionThunkModule[] = [ + { + thunkFn: fetchDevicesThunk, + type: THUNK_TYPE.DEVICE + }, { + + thunkFn: fetchSelectedMneThunk, + type: THUNK_TYPE.MNE + } +] + diff --git a/react-ui/src/components/subscriptions/mne.subscription.ts b/react-ui/src/components/subscriptions/mne.subscription.ts new file mode 100644 index 000000000..b2b036007 --- /dev/null +++ b/react-ui/src/components/subscriptions/mne.subscription.ts @@ -0,0 +1,45 @@ +import { api, NetworkElementServiceGetApiArg } from "@api/api"; +import { Device, setSelectedDevice, setSelectedMne } from "@reducer/device.reducer"; +import { CATEGORIES, triggerSubscription } from "@reducer/subscription.reducer"; +import { createAsyncThunk } from "@reduxjs/toolkit"; +import { RootState } from "src/stores"; +import { THUNK_TYPE } from "."; +import { startListening } from "../../../src/stores/middleware/listener.middleware"; +import { FETCH_MNE_ACTION } from "./action.subscription"; + +// fetch mne if selected device is set +startListening({ + predicate: (action) => setSelectedDevice.match(action) && !!action.payload, + effect: async (action, listenerApi) => { + listenerApi.dispatch(triggerSubscription({category: CATEGORIES.TAB, thunkType: THUNK_TYPE.MNE, payload: action.payload})); + }, +}) + + +const FETCH_MNE_INTERVAL = 5000; // in ms +export const fetchSelectedMneThunk = createAsyncThunk(FETCH_MNE_ACTION, async (device: Device, thunkApi) => { + const { user } = thunkApi.getState() as RootState; + + const payload: NetworkElementServiceGetApiArg = { + pid: Object.keys(user?.user.roles)[0], + timestamp: new Date().getTime().toString(), + mneid: device.id, + } + + const subscription = thunkApi.dispatch(api.endpoints.networkElementServiceGet.initiate(payload, { + subscriptionOptions: { + pollingInterval: FETCH_MNE_INTERVAL, + skipPollingIfUnfocused: true, + } + })); + + return {...subscription}; +}); + +// save fetched mne +startListening({ + predicate: (action) => api.endpoints.networkElementServiceGet.matchFulfilled(action), + effect: async (action, listenerApi) => { + listenerApi.dispatch(setSelectedMne(action.payload.mne)); + }, +}) \ No newline at end of file diff --git a/react-ui/src/components/view/device/deivce.view.tabs.tsx b/react-ui/src/components/view/device/deivce.view.tabs.tsx deleted file mode 100644 index a49c7616b..000000000 --- a/react-ui/src/components/view/device/deivce.view.tabs.tsx +++ /dev/null @@ -1,28 +0,0 @@ - -export enum DeviceViewTabValues { - METADATA = 'metadata', - YANGMODEL = 'yang_model' -} - -export const DeviceViewTabs = (activeTab: DeviceViewTabValues) => { - - const metadataTab = () => { - return ( - <div>test</div> - ) - } - - const yangModelTab = () => { - return ( - <div>asdf</div> - ) - } - - - return ( - <> - {(activeTab === DeviceViewTabValues.METADATA) && metadataTab()} - {(activeTab === DeviceViewTabValues.YANGMODEL) && yangModelTab()} - </> - ); -} diff --git a/react-ui/src/components/view/device/device.view.table.tsx b/react-ui/src/components/view/device/device.view.table.tsx index e2e6c4db5..17d4bfd25 100644 --- a/react-ui/src/components/view/device/device.view.table.tsx +++ b/react-ui/src/components/view/device/device.view.table.tsx @@ -7,7 +7,8 @@ import { useTranslation } from "react-i18next"; export const DeviceViewTable = (searchRef: MutableRefObject<HTMLInputElement>) => { const { devices, pnds } = useAppSelector(state => state.device); const { t } = useTranslation('common'); - const { searchTerm } = useDeviceTableViewModel(searchRef); + const { searchTerm, trClickHandler } = useDeviceTableViewModel(searchRef); + const cropUUID = (uuid: string): string => { return uuid.substring(0, 3) + "..." + uuid.substring(uuid.length - 3, uuid.length); @@ -27,7 +28,7 @@ export const DeviceViewTable = (searchRef: MutableRefObject<HTMLInputElement>) = const user = pnds.find(pnd => pnd.id === device.pid); return ( - <tr key={index}> + <tr key={index} onClick={() => trClickHandler(device)}> <td>{device.name}</td> <OverlayTrigger overlay={<Tooltip id={device.id}>{device.id}</Tooltip>}> <td>{cropUUID(device.id)}</td> diff --git a/react-ui/src/components/view/device/device.view.tabs.tsx b/react-ui/src/components/view/device/device.view.tabs.tsx new file mode 100644 index 000000000..cc096b147 --- /dev/null +++ b/react-ui/src/components/view/device/device.view.tabs.tsx @@ -0,0 +1,57 @@ +import { useAppSelector } from "@hooks"; + +export enum DeviceViewTabValues { + METADATA = 'metadata', + YANGMODEL = 'yang_model' +} + +export const DeviceViewTabs = (activeTab: DeviceViewTabValues) => { + const { selectedDevice } = useAppSelector(state => state.device); + + + const metadataTab = () => { + return ( + <div> + {selectedDevice.mne.name} + </div> + ) + } + + const yangModelTab = () => { + return ( + <div>asdf</div> + ) + } + + const renderLoading = () => { + return ( + <div> + Loading... + </div> + ) + } + + const renderNoDeviceSelected = () => { + + return ( + <div> + No device selected + </div> + ) + } + + + return ( + <> + {selectedDevice?.mne ? ( + <> + {activeTab === DeviceViewTabValues.METADATA && metadataTab()} + {activeTab === DeviceViewTabValues.YANGMODEL && yangModelTab()} + </> + ) : + selectedDevice ? renderLoading() : renderNoDeviceSelected() + } + + </> + ); +} diff --git a/react-ui/src/components/view/device/device.view.tsx b/react-ui/src/components/view/device/device.view.tsx index d4955d4b3..0ef5c05b9 100644 --- a/react-ui/src/components/view/device/device.view.tsx +++ b/react-ui/src/components/view/device/device.view.tsx @@ -2,7 +2,7 @@ import { useDeviceViewModel } from '@viewmodel/device.viewmodel'; import { useRef } from 'react'; import { Button, Col, Container, FloatingLabel, Form, Nav, NavLink, Row } from 'react-bootstrap'; import { useTranslation } from 'react-i18next'; -import { DeviceViewTabs, DeviceViewTabValues } from './deivce.view.tabs'; +import { DeviceViewTabs, DeviceViewTabValues } from './device.view.tabs'; import './device.scss'; import { DeviceViewTable } from './device.view.table'; diff --git a/react-ui/src/components/view_model/device.table.viewmodel.ts b/react-ui/src/components/view_model/device.table.viewmodel.ts index 224904699..22d8ae9e0 100644 --- a/react-ui/src/components/view_model/device.table.viewmodel.ts +++ b/react-ui/src/components/view_model/device.table.viewmodel.ts @@ -1,7 +1,11 @@ +import { useAppDispatch } from "@hooks"; +import { Device, setSelectedDevice } from "@reducer/device.reducer"; import { useEffect, useState } from "react"; export const useDeviceTableViewModel = (searchRef) => { const [searchTerm, setSearchTerm] = useState(''); + const dispatch = useAppDispatch(); + useEffect(() => { const handleSearchChange = () => { @@ -21,9 +25,13 @@ export const useDeviceTableViewModel = (searchRef) => { }; }, []); + const trClickHandler = (device: Device) => { + dispatch(setSelectedDevice(device)); + } return { - searchTerm + searchTerm, + trClickHandler } } \ No newline at end of file diff --git a/react-ui/src/components/view_model/device.viewmodel.ts b/react-ui/src/components/view_model/device.viewmodel.ts index b7b46cd6a..ec75927f0 100644 --- a/react-ui/src/components/view_model/device.viewmodel.ts +++ b/react-ui/src/components/view_model/device.viewmodel.ts @@ -1,6 +1,6 @@ import { useAppDispatch, useAppSelector } from "@hooks"; import { setActiveTab as setActiveTabState } from "@reducer/device.reducer"; -import { DeviceViewTabValues } from "@view/device/deivce.view.tabs"; +import { DeviceViewTabValues } from "@view/device/device.view.tabs"; export const useDeviceViewModel = () => { const {activeTab} = useAppSelector(state => state.device); diff --git a/react-ui/src/index.tsx b/react-ui/src/index.tsx index 3eb8a604f..a2ddc81a9 100644 --- a/react-ui/src/index.tsx +++ b/react-ui/src/index.tsx @@ -32,4 +32,6 @@ ReactDOM.createRoot(document.getElementById("root")).render( </PersistGate> </Provider> </React.StrictMode> -); \ No newline at end of file +); + +import './components/subscriptions' \ No newline at end of file diff --git a/react-ui/src/stores/index.ts b/react-ui/src/stores/index.ts index e00e33f48..8d2be362f 100644 --- a/react-ui/src/stores/index.ts +++ b/react-ui/src/stores/index.ts @@ -1,11 +1,12 @@ import { configureStore } from '@reduxjs/toolkit' import { setupListeners } from '@reduxjs/toolkit/query' +import { FETCH_DEVICE_ACTION, FETCH_MNE_ACTION } from '@subscription/action.subscription' import { FLUSH, PAUSE, PERSIST, PURGE, REGISTER, REHYDRATE } from 'redux-persist' import persistStore from 'redux-persist/es/persistStore' import { emptySplitApi } from './api.store' import { rtkQueryErrorLogger } from './middleware/devLogging.middleware' -import persistedReducer from './persist.store' import { listenerMiddleware } from './middleware/listener.middleware' +import persistedReducer from './persist.store' export const store = configureStore({ @@ -13,7 +14,7 @@ export const store = configureStore({ middleware: (getDefaultMiddleware) => getDefaultMiddleware({ serializableCheck: { - ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER], + ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER, FETCH_DEVICE_ACTION + '/fulfilled', FETCH_MNE_ACTION + '/fulfilled'], }, }).prepend(listenerMiddleware.middleware).concat(emptySplitApi.middleware, rtkQueryErrorLogger), }) diff --git a/react-ui/src/stores/persist.store.ts b/react-ui/src/stores/persist.store.ts index feb5241a8..f14de1bd7 100644 --- a/react-ui/src/stores/persist.store.ts +++ b/react-ui/src/stores/persist.store.ts @@ -1,24 +1,24 @@ +import deviceReducer from "@reducer/device.reducer"; +import subscriptionReducer from "@reducer/subscription.reducer"; import userReducer from "@reducer/user.reducer"; import { combineReducers } from "redux"; import { persistReducer } from "redux-persist"; import storage from "redux-persist/es/storage"; import { emptySplitApi } from "./api.store"; -import scheduleReducer from "@reducer/schedule.reducer"; -import deviceReducer from "@reducer/device.reducer"; /** local storage config */ const rootPersistConfig = { key: 'root', storage, - blacklist: [emptySplitApi.reducerPath], + blacklist: [emptySplitApi.reducerPath, ], } const rootReducer = combineReducers({ user: userReducer, device: deviceReducer, - scheduler: scheduleReducer, + subscription: subscriptionReducer, [emptySplitApi.reducerPath]: emptySplitApi.reducer, }) diff --git a/react-ui/src/stores/reducer/device.reducer.ts b/react-ui/src/stores/reducer/device.reducer.ts index 3252fd8c7..5919062d2 100644 --- a/react-ui/src/stores/reducer/device.reducer.ts +++ b/react-ui/src/stores/reducer/device.reducer.ts @@ -1,25 +1,30 @@ -import { api, NetworkelementFlattenedManagedNetworkElement, NetworkElementServiceGetAllFlattenedApiArg, PndPrincipalNetworkDomain, PndServiceGetPndListApiArg } from '@api/api'; +import { api, NetworkelementFlattenedManagedNetworkElement, NetworkelementManagedNetworkElement, PndPrincipalNetworkDomain, PndServiceGetPndListApiArg } from '@api/api'; import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit'; -import { QueryActionCreatorResult } from '@reduxjs/toolkit/query'; -import { RootState } from '..'; +import { DeviceViewTabValues } from '@view/device/device.view.tabs'; import { startListening } from '../middleware/listener.middleware'; -import { setUser } from './user.reducer'; -import { DeviceViewTabValues } from '@view/device/deivce.view.tabs'; -type Device = NetworkelementFlattenedManagedNetworkElement; +export type Device = NetworkelementFlattenedManagedNetworkElement; +interface SelectedDeviceInterface { + device: Device, + mne: NetworkelementManagedNetworkElement | null +} + +type SelectedDeviceType = SelectedDeviceInterface | undefined; export interface DeviceSliceState { devices: Device[], pnds: PndPrincipalNetworkDomain[], - + activeTab: DeviceViewTabValues + selectedDevice: SelectedDeviceType } const initialState: DeviceSliceState = { devices: [], pnds: [], - activeTab: DeviceViewTabValues.METADATA + activeTab: DeviceViewTabValues.METADATA, + selectedDevice: null } const deviceSlice = createSlice({ @@ -29,10 +34,19 @@ const deviceSlice = createSlice({ setDevices: (state, action: PayloadAction<Device[]>) => { state.devices = action.payload }, setPnds: (state, action: PayloadAction<PndPrincipalNetworkDomain[]>) => { state.pnds = action.payload }, setActiveTab: (state, action: PayloadAction<DeviceViewTabValues>) => { state.activeTab = action.payload }, + setSelectedDevice: (state, action: PayloadAction<Device | null>) => { + let selectedDevice: SelectedDeviceType; + if (action.payload) { + selectedDevice = {device: action.payload, mne: null}; + } + + state.selectedDevice = selectedDevice; + }, + setSelectedMne: (state, action: PayloadAction<NetworkelementManagedNetworkElement>) => { state.selectedDevice.mne = action.payload }, }, }) -export const { setDevices, setActiveTab } = deviceSlice.actions +export const { setDevices, setActiveTab, setSelectedDevice, setSelectedMne } = deviceSlice.actions const { setPnds } = deviceSlice.actions export default deviceSlice.reducer @@ -40,45 +54,6 @@ export const deviceReducerPath = deviceSlice.reducerPath; -let fetchSubscription: QueryActionCreatorResult<any>[] = []; -export const abortFetching = () => { - fetchSubscription.forEach((subscription) => { - subscription.unsubscribe(); - }); - fetchSubscription = []; -} - -// continously fetch devices -const FETCH_DEVICES_INTERVAL = 15000; // in ms -startListening({ - actionCreator: setUser, - effect: async (_, listenerApi) => { - const { user } = listenerApi.getState() as RootState; - - const payload: NetworkElementServiceGetAllFlattenedApiArg = { - pid: Object.keys(user?.user.roles)[0], - timestamp: new Date().getTime().toString(), - } - - const subscription = listenerApi.dispatch(api.endpoints.networkElementServiceGetAllFlattened.initiate(payload, { - subscriptionOptions: { - pollingInterval: FETCH_DEVICES_INTERVAL, - skipPollingIfUnfocused: true, - } - })); - - fetchSubscription = [...fetchSubscription, subscription]; - }, -}) - -// save fetched devices -startListening({ - predicate: (action) => api.endpoints.networkElementServiceGetAllFlattened.matchFulfilled(action), - effect: async (action, listenerApi) => { - listenerApi.dispatch(setDevices(action.payload.mne)); - }, -}) - export const fetchPnds = createAsyncThunk('device/fetchPnds', (_, thunkApi) => { const payload: PndServiceGetPndListApiArg = { timestamp: new Date().getTime().toString(), @@ -89,3 +64,4 @@ export const fetchPnds = createAsyncThunk('device/fetchPnds', (_, thunkApi) => { thunkApi.dispatch(setPnds(response.pnd)); }); }); + diff --git a/react-ui/src/stores/reducer/schedule.reducer.ts b/react-ui/src/stores/reducer/schedule.reducer.ts deleted file mode 100644 index 2e2bbe36b..000000000 --- a/react-ui/src/stores/reducer/schedule.reducer.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { PayloadAction, createSlice } from '@reduxjs/toolkit'; -import { startListening } from '../middleware/listener.middleware'; - -export enum ScheduleState { INIT, RUNNING, STOPPED } - -export type Task = { - job: (options: object) => void, - interval: number, - type: string -}; - -interface Schedule { - task: Task, - id: number, - state: ScheduleState, - intervalId: NodeJS.Timeout | undefined -} - -export interface ScheduleReducerState { - schedules: Schedule[] -} - -const initialState: ScheduleReducerState = { - schedules: [] -} - -const ScheduleSlice = createSlice({ - name: 'schedule', - initialState, - reducers: { - registerTask: (state, action: PayloadAction<Task>) => { - const newSchedule = { - task: action.payload.task, - id: state.schedules.length, - state: ScheduleState.INIT, - intervalId: undefined - } - - state.schedules = [...state.schedules, newSchedule] - }, - startSchedule: (state, action: PayloadAction<Schedule>) => { - const schedule = action.payload; - schedule.intervalId = setInterval(schedule.task.job, schedule.task.interval); - schedule.state = ScheduleState.RUNNING; - - state.schedules[schedule.id] = schedule; - }, - }, -}) - -export const { registerTask } = ScheduleSlice.actions -export const { startSchedule } = ScheduleSlice.actions - -export default ScheduleSlice.reducer - - -// startListening({ -// actionCreator: addSchedule, - -// effect: (action, listenerApi) => { -// const newState = listenerApi.getState() as ScheduleReducerState; -// const originalState = listenerApi.getOriginalState() as ScheduleReducerState; - -// // get the added schedule -// const schedule = newState.schedules.filter(s => !originalState.schedules.includes(s)).at(0); -// if (!schedule) { -// throw new Error("Added schedule not found in store"); -// } - -// listenerApi.dispatch(startSchedule(schedule)) -// }, -// }) \ No newline at end of file diff --git a/react-ui/src/stores/reducer/subscription.reducer.ts b/react-ui/src/stores/reducer/subscription.reducer.ts new file mode 100644 index 000000000..a21024eab --- /dev/null +++ b/react-ui/src/stores/reducer/subscription.reducer.ts @@ -0,0 +1,105 @@ +import { PayloadAction, createSlice, current } from '@reduxjs/toolkit'; +import { SubscriptionThunks, THUNK_TYPE } from '@subscription/index'; +import { RootState } from '..'; +import { addSubscription, unsubscribe, unsubscribeAll } from '../../utils/api/subscription.handler'; +import { startListening } from '../middleware/listener.middleware'; + + + +interface ThunkEntityDTO { + thunkType: THUNK_TYPE, + payload: any + + /** + * Only one subscription per category is allowed. New subscription will unsubscribe and overwrite the old one + */ + category: CATEGORIES, +} + +interface ThunkEntity extends ThunkEntityDTO { + id?: number, + locked: boolean +} + + +export interface SubscriptionReducerState { + thunks: {[key in keyof typeof CATEGORIES]: ThunkEntity | null} +} + +export enum CATEGORIES { + TABLE, + TAB +} + +const initialState: SubscriptionReducerState = { + thunks: { + TABLE: null, + TAB: null + } +} + +const SubscriptionSlice = createSlice({ + name: 'subscription', + initialState, + reducers: { + triggerSubscription: (state, {payload}: PayloadAction<ThunkEntityDTO>) => { + // overwrite old subscription if it exists + const currentState = current(state) + const currentThunk = currentState.thunks[CATEGORIES[payload.category]]; + + const newThunk: ThunkEntity = {...payload, locked: true}; + + state.thunks[CATEGORIES[payload.category]] = newThunk; + }, + + setThunkId: (state, {payload}: PayloadAction<{id: number, category: CATEGORIES}>) => { + let thunk = state.thunks[CATEGORIES[payload.category]]; + + if (!thunk) { + // TODO + throw new Error('Thunk not found'); + } + + state.thunks[CATEGORIES[payload.category]] = {...thunk, id: payload.id, locked: false}; + }, + + stopAllSubscriptions: (state) => { + unsubscribeAll() + state.thunks = initialState.thunks; + }, + }, +}) + +export const { triggerSubscription, stopAllSubscriptions } = SubscriptionSlice.actions + +// unsubscribe old subscription +startListening({ + predicate: (action) => triggerSubscription.match(action), + effect: async (action, listenerApi) => { + const {subscription} = listenerApi.getOriginalState() as RootState; + const lastThunk = subscription.thunks[CATEGORIES[action.payload.category]]; + unsubscribe(lastThunk.id); + }, +}) + +// add new subscription +startListening({ + predicate: (action) => triggerSubscription.match(action), + effect: async (action, listenerApi) => { + const {thunkType} = action.payload as ThunkEntity; + + const {thunkFn} = SubscriptionThunks.find(({type}) => type === thunkType); + if (!thunkFn) { + // TODO + throw new Error('Thunk not found'); + } + + const subscription = await listenerApi.dispatch(thunkFn(action.payload.payload)); + const thunkId = await addSubscription(subscription.payload); + listenerApi.dispatch(SubscriptionSlice.actions.setThunkId({id: thunkId, category: action.payload.category})); + + }, +}) + + +export default SubscriptionSlice.reducer diff --git a/react-ui/src/utils/api/subscription.handler.ts b/react-ui/src/utils/api/subscription.handler.ts new file mode 100644 index 000000000..e288a4a6f --- /dev/null +++ b/react-ui/src/utils/api/subscription.handler.ts @@ -0,0 +1,65 @@ +import { QueryActionCreatorResult } from '@reduxjs/toolkit/query'; + +type SubscriptionType = QueryActionCreatorResult<any>; + +interface SubscriptionEntity { + subscription: SubscriptionType, + id: number +} + +interface SubscriptionReducerState { + subscriptions: SubscriptionEntity[] +} + + +const initialState: SubscriptionReducerState = { + subscriptions: [] +} + +let state = initialState; + + +export const addSubscription = (subscription: SubscriptionType): number => { + const id = state.subscriptions.length; + + const subscriptionEntity: SubscriptionEntity = { + subscription, + id + } + + state.subscriptions = [...state.subscriptions, subscriptionEntity]; + + return id; +} + + +export const unsubscribeAll = () => { + state.subscriptions.forEach(({ subscription }) => { + unsubscribeAction(subscription) + }); + + state.subscriptions = initialState.subscriptions; +} + +/** + * @param id + * @returns returns true if the subscription was stopped, false if it was not found + */ +export const unsubscribe = (id: number): boolean => { + const subscription = state.subscriptions.find(({ id: subscriptionId }) => subscriptionId === id); + + if (subscription) { + unsubscribeAction(subscription.subscription); + } + + return !!subscription; +} + +/** + * Actual unsubscribe action + * + * @param subscription + */ +const unsubscribeAction = (subscription: SubscriptionType) => { + subscription.unsubscribe(); +} \ No newline at end of file diff --git a/react-ui/src/utils/provider/auth.provider.tsx b/react-ui/src/utils/provider/auth.provider.tsx index e3a90d711..44901c66f 100644 --- a/react-ui/src/utils/provider/auth.provider.tsx +++ b/react-ui/src/utils/provider/auth.provider.tsx @@ -1,7 +1,7 @@ import { AuthServiceLoginApiArg, AuthServiceLoginApiResponse, useAuthServiceLoginMutation } from "@api/api"; +import { unsubscribeAll } from "@api/subscription.handler"; import { getCookieValue } from "@helper/coookie"; import { useAppDispatch, useAppSelector } from "@hooks"; -import { abortFetching } from "@reducer/device.reducer"; import { setToken } from "@reducer/user.reducer"; import { DEVICE_URL, LOGIN_URL } from "@routes"; import { jwtDecode } from "jwt-decode"; @@ -37,7 +37,7 @@ export const AuthProvider = ({ children }) => { useEffect(() => { const token = getCookieValue('token'); - + if (token) { navigate(DEVICE_URL) } else { @@ -100,7 +100,7 @@ export const AuthProvider = ({ children }) => { } const logout = () => { - abortFetching(); + unsubscribeAll(); dispatch(setToken(null)); // TODO: purge other information } @@ -125,3 +125,4 @@ export const AuthProvider = ({ children }) => { export const useAuth = () => { return useContext(AuthContext); } + diff --git a/react-ui/tsconfig.json b/react-ui/tsconfig.json index 32b67b0d1..41c9c8f66 100644 --- a/react-ui/tsconfig.json +++ b/react-ui/tsconfig.json @@ -1,44 +1,47 @@ { "compilerOptions": { - "target": "ES2020", - "useDefineForClassFields": true, - "lib": ["ES2020", "DOM", "DOM.Iterable"], - "module": "ESNext", - "skipLibCheck": true, - - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx", - - /* Linting */ - "strict": false, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true, + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, - "baseUrl": ".", - "paths": { - "@assets/*": ["assets/*"], - "@api/*": ["src/utils/api/*"], - "@viewmodel/*": ["src/components/view_model/*"], - "@view/*": ["src/components/view/*"], - "@reducer/*": ["src/stores/reducer/*"], - "@provider/*": ["src/utils/provider/*"], - "@layout/*": ["src/utils/layouts/*"], - "@hooks": ["src/hooks"], - "@routes": ["src/routes.tsx"], - "@task/*": ["src/utils/tasks/*"], - "@helper/*": ["src/utils/helper/*"], - } + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": false, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + + "baseUrl": ".", + "paths": { + "@assets/*": ["assets/*"], + "@api/*": ["src/utils/api/*"], + "@viewmodel/*": ["src/components/view_model/*"], + "@view/*": ["src/components/view/*"], + "@reducer/*": ["src/stores/reducer/*"], + "@provider/*": ["src/utils/provider/*"], + "@layout/*": ["src/utils/layouts/*"], + "@hooks": ["src/hooks"], + "@routes": ["src/routes.tsx"], + "@task/*": ["src/utils/tasks/*"], + "@helper/*": ["src/utils/helper/*"], + "@subscription/*": ["src/components/subscriptions/*"] + } }, "include": [ - "src/**/*.d.ts", - "src/**/*.ts", - "src/**/*.tsx", "src/stores/api.store.ts", "scripts/test.ts", - ], + "src/**/*.d.ts", + "src/**/*.ts", + "src/**/*.tsx", + "src/stores/api.store.ts", + "scripts/test.ts" + ] //"references": [{ "path": "./tsconfig.node.json" }] -} \ No newline at end of file +} diff --git a/react-ui/vite.config.mjs b/react-ui/vite.config.mjs index c5073c14e..96be1c844 100644 --- a/react-ui/vite.config.mjs +++ b/react-ui/vite.config.mjs @@ -1,48 +1,56 @@ -import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' - +import { defineConfig } from 'vite' export default defineConfig({ - plugins: [react()], - server: { - port: 3000, - proxy: { - '/api': { - target: 'http://127.0.0.1:8080', - changeOrigin: true, - secure: false, - rewrite: (path) => path.replace(/^\/api/, ''), - configure: (proxy, _options) => { - proxy.on('error', (err, _req, _res) => { - console.log('proxy error', err); - }); - proxy.on('proxyReq', (proxyReq, req, _res) => { - console.log('Sending Request to the Target:', req.method, req.url); - }); - proxy.on('proxyRes', (proxyRes, req, _res) => { - console.log('Received Response from the Target:', proxyRes.statusCode, req.url); - }); + plugins: [react()], + server: { + port: 3000, + proxy: { + '/api': { + target: 'http://127.0.0.1:8080', + changeOrigin: true, + secure: false, + rewrite: (path) => path.replace(/^\/api/, ''), + configure: (proxy, _options) => { + proxy.on('error', (err, _req, _res) => { + console.log('proxy error', err) + }) + proxy.on('proxyReq', (proxyReq, req, _res) => { + console.log( + 'Sending Request to the Target:', + req.method, + req.url + ) + }) + proxy.on('proxyRes', (proxyRes, req, _res) => { + console.log( + 'Received Response from the Target:', + proxyRes.statusCode, + req.url + ) + }) + }, + }, + }, + }, + resolve: { + alias: { + '@assets': '/assets', + '@api': '/src/utils/api', + '@viewmodel': '/src/components/view_model', + '@view': '/src/components/view', + '@reducer': '/src/stores/reducer', + '@provider': '/src/utils/provider', + '@layout': '/src/utils/layouts', + '@hooks': '/src/hooks.ts', + '@task': '/src/utils/tasks', + '@helper': '/src/utils/helper', + '@routes': '/src/routes.tsx', + '@subscription': '/src/components/subscriptions', }, - } - } - }, - resolve: { - alias: { - '@assets': '/assets', - '@api': '/src/utils/api', - "@viewmodel": "/src/components/view_model", - "@view": "/src/components/view", - "@reducer": "/src/stores/reducer", - "@provider": "/src/utils/provider", - "@layout": "/src/utils/layouts", - "@hooks": "/src/hooks.ts", - "@task": "/src/utils/tasks", - "@helper": "/src/utils/helper", - "@routes": "/src/routes.tsx", }, - }, - build: { - sourcemap: true, // Source Maps für den Build aktivieren - }, -}); \ No newline at end of file + build: { + sourcemap: true, // Source Maps für den Build aktivieren + }, +}) -- GitLab From 0b6947979ab5bab758ff30a152febde2c43c4ce8 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Wed, 25 Sep 2024 14:54:47 +0200 Subject: [PATCH 26/44] ui: refactor SubscriptionHandler --- .../stores/reducer/subscription.reducer.ts | 29 ++++--- .../src/utils/api/subscription.handler.ts | 87 ++++++++++--------- react-ui/src/utils/provider/auth.provider.tsx | 2 - 3 files changed, 62 insertions(+), 56 deletions(-) diff --git a/react-ui/src/stores/reducer/subscription.reducer.ts b/react-ui/src/stores/reducer/subscription.reducer.ts index a21024eab..344b42d25 100644 --- a/react-ui/src/stores/reducer/subscription.reducer.ts +++ b/react-ui/src/stores/reducer/subscription.reducer.ts @@ -1,8 +1,9 @@ -import { PayloadAction, createSlice, current } from '@reduxjs/toolkit'; +import { PayloadAction, createSlice } from '@reduxjs/toolkit'; import { SubscriptionThunks, THUNK_TYPE } from '@subscription/index'; import { RootState } from '..'; -import { addSubscription, unsubscribe, unsubscribeAll } from '../../utils/api/subscription.handler'; +import { SubscriptionHandler } from '../../utils/api/subscription.handler'; import { startListening } from '../middleware/listener.middleware'; +import { setToken } from './user.reducer'; @@ -43,12 +44,7 @@ const SubscriptionSlice = createSlice({ initialState, reducers: { triggerSubscription: (state, {payload}: PayloadAction<ThunkEntityDTO>) => { - // overwrite old subscription if it exists - const currentState = current(state) - const currentThunk = currentState.thunks[CATEGORIES[payload.category]]; - const newThunk: ThunkEntity = {...payload, locked: true}; - state.thunks[CATEGORIES[payload.category]] = newThunk; }, @@ -63,14 +59,23 @@ const SubscriptionSlice = createSlice({ state.thunks[CATEGORIES[payload.category]] = {...thunk, id: payload.id, locked: false}; }, - stopAllSubscriptions: (state) => { - unsubscribeAll() + removeAll: (state) => { + SubscriptionHandler.unsubscribeAll() state.thunks = initialState.thunks; }, }, }) -export const { triggerSubscription, stopAllSubscriptions } = SubscriptionSlice.actions +export const { triggerSubscription } = SubscriptionSlice.actions + +// on logout remove all subscriptions +startListening({ + predicate: (action) => setToken.match(action) && action.payload.token === null, + effect: async (_, listenerApi) => { + listenerApi.dispatch(SubscriptionSlice.actions.removeAll()); + }, +}) + // unsubscribe old subscription startListening({ @@ -78,7 +83,7 @@ startListening({ effect: async (action, listenerApi) => { const {subscription} = listenerApi.getOriginalState() as RootState; const lastThunk = subscription.thunks[CATEGORIES[action.payload.category]]; - unsubscribe(lastThunk.id); + SubscriptionHandler.unsubscribe(lastThunk.id); }, }) @@ -95,7 +100,7 @@ startListening({ } const subscription = await listenerApi.dispatch(thunkFn(action.payload.payload)); - const thunkId = await addSubscription(subscription.payload); + const thunkId = await SubscriptionHandler.add(subscription.payload); listenerApi.dispatch(SubscriptionSlice.actions.setThunkId({id: thunkId, category: action.payload.category})); }, diff --git a/react-ui/src/utils/api/subscription.handler.ts b/react-ui/src/utils/api/subscription.handler.ts index e288a4a6f..e065879f0 100644 --- a/react-ui/src/utils/api/subscription.handler.ts +++ b/react-ui/src/utils/api/subscription.handler.ts @@ -1,65 +1,68 @@ import { QueryActionCreatorResult } from '@reduxjs/toolkit/query'; -type SubscriptionType = QueryActionCreatorResult<any>; +type Subscription = QueryActionCreatorResult<any>; -interface SubscriptionEntity { - subscription: SubscriptionType, +interface Entity { + subscription: Subscription, id: number } -interface SubscriptionReducerState { - subscriptions: SubscriptionEntity[] -} - -const initialState: SubscriptionReducerState = { - subscriptions: [] +const initialState = { + subscriptions: [] as Entity[] } -let state = initialState; +export const SubscriptionHandler = (() => { + let state = initialState; + const add = (subscription: Subscription): number => { + const id = state.subscriptions.length; + const subscriptionEntity: Entity = { + subscription, + id + } -export const addSubscription = (subscription: SubscriptionType): number => { - const id = state.subscriptions.length; + state.subscriptions = [...state.subscriptions, subscriptionEntity]; - const subscriptionEntity: SubscriptionEntity = { - subscription, - id + return id; } - state.subscriptions = [...state.subscriptions, subscriptionEntity]; - return id; -} + const unsubscribeAll = () => { + state.subscriptions.forEach(({ subscription }) => { + unsubscribeAction(subscription) + }); + state.subscriptions = initialState.subscriptions; + } -export const unsubscribeAll = () => { - state.subscriptions.forEach(({ subscription }) => { - unsubscribeAction(subscription) - }); + /** + * @param id + * @returns returns true if the subscription was stopped, false if it was not found + */ + const unsubscribe = (id: number): boolean => { + const subscription = state.subscriptions.find(({ id: subscriptionId }) => subscriptionId === id); - state.subscriptions = initialState.subscriptions; -} + if (subscription) { + unsubscribeAction(subscription.subscription); + } -/** - * @param id - * @returns returns true if the subscription was stopped, false if it was not found - */ -export const unsubscribe = (id: number): boolean => { - const subscription = state.subscriptions.find(({ id: subscriptionId }) => subscriptionId === id); + return !!subscription; + } - if (subscription) { - unsubscribeAction(subscription.subscription); + /** + * Actual unsubscribe action + * + * @param subscription + */ + const unsubscribeAction = (subscription: Subscription) => { + subscription.unsubscribe(); } - return !!subscription; -} -/** - * Actual unsubscribe action - * - * @param subscription - */ -const unsubscribeAction = (subscription: SubscriptionType) => { - subscription.unsubscribe(); -} \ No newline at end of file + return { + add, + unsubscribe, + unsubscribeAll + } +})(); \ No newline at end of file diff --git a/react-ui/src/utils/provider/auth.provider.tsx b/react-ui/src/utils/provider/auth.provider.tsx index 44901c66f..d1f472cc7 100644 --- a/react-ui/src/utils/provider/auth.provider.tsx +++ b/react-ui/src/utils/provider/auth.provider.tsx @@ -1,5 +1,4 @@ import { AuthServiceLoginApiArg, AuthServiceLoginApiResponse, useAuthServiceLoginMutation } from "@api/api"; -import { unsubscribeAll } from "@api/subscription.handler"; import { getCookieValue } from "@helper/coookie"; import { useAppDispatch, useAppSelector } from "@hooks"; import { setToken } from "@reducer/user.reducer"; @@ -100,7 +99,6 @@ export const AuthProvider = ({ children }) => { } const logout = () => { - unsubscribeAll(); dispatch(setToken(null)); // TODO: purge other information } -- GitLab From 4f81552d57b118546f0ae07735e21cbc4ca709b4 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Wed, 25 Sep 2024 15:09:56 +0200 Subject: [PATCH 27/44] ui: refactor utils path --- react-ui/docs/routine_pattern.md | 18 ++++ react-ui/docs/routine_pattern.png | Bin 0 -> 102971 bytes .../action.routine.ts} | 0 .../device.routine.ts} | 6 +- .../src/components/subscriptions/index.ts | 26 ------ .../components/view/device/device.view.tsx | 10 +- .../view_model/device.table.viewmodel.ts | 2 +- .../components/view_model/device.viewmodel.ts | 2 +- react-ui/src/index.tsx | 5 +- react-ui/src/routes.tsx | 10 +- react-ui/src/{utils => shared}/api/api.ts | 0 .../src/{utils => shared}/helper/coookie.ts | 0 react-ui/src/{utils => shared}/icons/icons.ts | 0 .../layouts/basic.layout.tsx | 4 +- .../layouts/login.layout.tsx | 0 .../protected.layout/protected.layout.scss | 0 .../protected.layout/protected.layout.tsx | 8 +- .../provider/auth.provider.tsx | 0 react-ui/src/shared/utils/routine.manager.ts | 88 ++++++++++++++++++ react-ui/src/stores/index.ts | 4 +- react-ui/src/stores/persist.store.ts | 6 +- .../{ => device.reducer}/device.reducer.ts | 1 - .../device.reducer}/mne.subscription.ts | 12 +-- ...cription.reducer.ts => routine.reducer.ts} | 68 ++++++++------ .../src/utils/api/subscription.handler.ts | 68 -------------- react-ui/tsconfig.json | 13 +-- react-ui/vite.config.mjs | 13 +-- 27 files changed, 196 insertions(+), 168 deletions(-) create mode 100644 react-ui/docs/routine_pattern.md create mode 100644 react-ui/docs/routine_pattern.png rename react-ui/src/components/{subscriptions/action.subscription.ts => routines/action.routine.ts} (100%) rename react-ui/src/components/{subscriptions/device.subscription.ts => routines/device.routine.ts} (86%) delete mode 100644 react-ui/src/components/subscriptions/index.ts rename react-ui/src/{utils => shared}/api/api.ts (100%) rename react-ui/src/{utils => shared}/helper/coookie.ts (100%) rename react-ui/src/{utils => shared}/icons/icons.ts (100%) rename react-ui/src/{utils => shared}/layouts/basic.layout.tsx (88%) rename react-ui/src/{utils => shared}/layouts/login.layout.tsx (100%) rename react-ui/src/{utils => shared}/layouts/protected.layout/protected.layout.scss (100%) rename react-ui/src/{utils => shared}/layouts/protected.layout/protected.layout.tsx (98%) rename react-ui/src/{utils => shared}/provider/auth.provider.tsx (100%) create mode 100644 react-ui/src/shared/utils/routine.manager.ts rename react-ui/src/stores/reducer/{ => device.reducer}/device.reducer.ts (97%) rename react-ui/src/{components/subscriptions => stores/reducer/device.reducer}/mne.subscription.ts (75%) rename react-ui/src/stores/reducer/{subscription.reducer.ts => routine.reducer.ts} (51%) delete mode 100644 react-ui/src/utils/api/subscription.handler.ts diff --git a/react-ui/docs/routine_pattern.md b/react-ui/docs/routine_pattern.md new file mode 100644 index 000000000..97a29da31 --- /dev/null +++ b/react-ui/docs/routine_pattern.md @@ -0,0 +1,18 @@ +## Routine pattern +The goal is to get a generic architecture to invoke persist and rerun asynchronous actions (thunks). + + +### Goals +* Invoke asyncronous actions +* Rerun actions after page reload by persisting +* Ability to access and manipulate the redux state +* Give a simple interface to the outside world by abstracting the task to achive the upper goals + + +### Usage +Add + + +### Description +The image displays the whole workflow starting by the user that clicks a button. The actual routine pattern takes place within the red border. + diff --git a/react-ui/docs/routine_pattern.png b/react-ui/docs/routine_pattern.png new file mode 100644 index 0000000000000000000000000000000000000000..86b582398523ed51922d8ebad316c15be59265db GIT binary patch literal 102971 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	TXYl1Gq9K%>XO|KO^NnfVX9 z_C(LHwt9U6))bg~l*9k0I;fGPjNVA%<?uN03{q(&ab$EaFk#x;I_Wg%c=;*bpfS$9 zexaas(|)#1kpc}4Pr-{r3zHl`KF;!M=sG=%o#Ajh=+=r0YYt^ySm5XwzyIgi{6{mx zp4^R@`27A1a5u`eHT2&{=Wc-p2R2YdI-kD-Y63Dase+b5b<SyBDbUbR4H_4`=M;Ll z;?uffbEE~lFF+F^$t6c^GNxp78_tVc!)Z{zmh-Y5xM}IYz*MSoL0}CVznsm!MXUN` zylm4z3+_T!E@pas+6~mQlQYIrh=Dq=7uXnUH7s&&Y}oO&fAtc`aHnc7`x!lTM$lG) zv?;`G6;O=8vl!S^0exkNLWE^GJ7`}-s7gaZsOx$oHBfJ5Cn!l<2T6eja4)Dcep>gL z0kjKY%?9!sa^d0O;ciZM*cktVs-)T!G_Qbs59!x{m(Ui0uEYsle`DR{49(Qice!Y3 z1XN{%vy1?2{r9T4d8u1U!DTAOx_De`IlyaYaqRHG+(*I3qW%2c0nk$0E*60`t6qd2 z11*(NC}+}{Q{?W|3`%~#R6v_Y6x?2GXsrRQqE}#OWCCpmU~+c|2gxf0FfeNAaX0vg zgLqW}pow;NP}-PUygwPo96lsaK<Z&@*B|LNe(ic|)jKUH40BmOs5%6PC44FF7tONr z^722gUcFj1eX(TjQt&eFIJ5x8vy9udb?WDYBYXNdCuCT=g`a75>)a;s_~p@A44<#h zGI;B}z=lO&!|BJ`I;{*WtH8^v`@sbzWO+44Yd_&(2y~q>H~5@kP;>e8+Q;uDjZ!=+ zem<QZZFf2TUTo&lsZCt*w|2hU^?IE_&5sXdau4r?L9#=O45-_{#<<vpI{}nT1y+bL zYU!<h>hH$P$nnJg!69ya9?-GHLam!(gyyKoZM70wv3}3$`JQXCmg|3Qj+lDXSn|Cg zsOOXV<b1BciDriV51u(*+`zloB|F2=SKOoFXS6~Nq|pr8J@kd;m+-<WzJSokUH_Z7 z^)kFYCIu{g9x`{S*4lsT%8su6ckA)<|MS7i<hwYU9U57FX{YL55ZRUGc0l7I({3r2 z8T+q(P+km<6OeflOuT|#Q~e{4sD!3^2E5A7PRKv48kV|t+N2#@&zjxda<$HIiPnW~ zP%W{FY2!hGQ_c;n>x<*jS1)EcG<2PovX}|l6tGhuqda>7i)!quEw3s~Pwy65t<v&! z-}b2wt-@E|<yse`aAlz&xJwM$B%!$IwWV9#!BX_CVa*P_91027A?5aoUI)2o=IZBn z%T_PFCAz&xx+Yc%wEjzE%@)Yw{Iz_stGn+@s$<!C)sPU%kg^MOftmAyyK5WIzI#8n z{OkKQ`9HJ6@2ukap~Rj9?%o9^hNh%k6lYN|09{Vf3c2|qq?<u>`qfYBiyJ}LIBeN% zy5al77neAs^1o(pPx6jt+}suYO-1WgGq?y34HP%h;W*;VvQnx<hQqD%+Q$yVwY*Gc z?n4L8AO*w=*9EZ)J)cK<E_t=HE-U;;)^dLtGX~J8D9dWbA1&^R7xWmn32gCR^Wb-{ zQ0~FS3#^ry&crKkFyV&iZ*b7%DA{GYp)g?Ay!_=+tIDT_=_)LjS^|n7t*Op0w@(92 zW|Z$n?{_0jW+XT*xXYz^cl{jDFfMzj_sUzVHkxkGXWrTx@cp&rUe5`qA=@lY-N-lL zZ=A>SgY|l)4f--H<Q;I5jb+<kzWjG=>E;!iV%~N{N8WlouMRSP&;ecxir6lw5TMJ% z5e5y?F4YS!uQ`Nzr|wh<Te-?BnsX-?XukqvIZjhkSDpexBPZx`2?Ox0GY(rpdpmUN zjifjn7F003&Eq|jwQviI?6rBJcTU~X`~DSl&BxQA4VUy8L1Wq7=Bo@%SGhFA7tF0j zUx@@O#T?i`#=Kd7vW!3V{d(KFdu))laTnKWGp6QfZ`TH0mUDMgaa0Zp%#CH+*}h#* zxyKYy|M%l(IZ%<H$Eq#E-?&N$v}$TI%HY?X*sB?@VQT@{8l^zZE655e2St`ox1?6= zS#xOmn)XfNMmwxZlRyg+R|N|gUVFmwgVlT|_b)T_ZWHoyDlTP%3#T+VL$jQphrQfT zx{d|p6pk>?8qeth4GqDdyD(m67=lKg7+9=S8WOH5TF8NVnipCQIBaM0T65{<^~3G_ z?fF`elo-OdG@irZfIR3@lKce`pqhn&iCNL%=u?LmA9X+_UMFYCF4KT~mMIU8h8;K( z2tH%n>rMEs_2P`6+?<bApu=lOS%Dd#nRQn2m<c<BR(%XRQ26**=>_TjCti?Qyhpl? zJKOkrEtL+4F}a`1Nb5pN$P7#Z1r83Dv$>hXSOna4R<vEnY@KQsFr`3sVYjv-B=)=< zuY=YaZxNr$%@nE#>er}a>(?x;SD(E3@9z~oVnX3&aoHhWr9~OL=3U)(V4|{nTi{~1 zn-U(Y|AO{M?i5+GV#6zYxgCq=fHK3*`<Sa+4=lR6fAYtP_3~3MIz2jdEZfSYR-x&# z1Ap#z$<VV=ki9Ee&!XD6K{uCzcIxu*TPuK4p@KY<PSodz88^A?HZ6(1zpZoipW6E` z!w%e=wnDac#|kZ70#WI3G`0N!R}D|%LWdisuex@ex_*=SCfAKKLZMl_@^*8QTR)Ws zZ@UH_AG`UXSe&Iu@qqr0oe5jAk7!)HCFyh8RVd+~nCI+$Ajk0ZFdRB`;K#?3Vx}XZ z`z9J*Slh67ZRVWxrNtXmV+ut*ApQ6S{4cqf{-{5<VM7lFfrbWVrYAY<ek&Gm9to}U zJDaVYkl%enYR3HjTUjST?eweD#CJ$CF)JUaFJgY2{%=d*BGc`&`M4Ah{Ly7Gp6jqc z1hhBmy;{*WNI+`IuP@ysS}?Ej8E5(3(r^i*6p#IG8t$w6x%GA|xL>_fQ5}?A!S~Lc z(agv=CJRb?&nI#6q7TenX<+CM`|o$m{a<Z}8+YgGnmyOvg*n{4ze6SJYq{w?sTFG* z7rXVodS6yIj~$wZx|`m;d-r3h!eda=KLE7WAiCpi38YotDwuFFO5#<Y^&xlJ#g7l# zaR`Jn^Y@o+XEJ*izV(XP?VQO!1HQIpOx>!L{XltjB{#SQA}ShY%3s#T-xvZK`d#(# zf<Cx?enVivqf2es^VTZqJn@{oO^T&sb>mT|-O-HF-@QvNDZb(r^m-IJ&H3uo)k}3# zR-Tf&aiYQsvRrnDG*hVR0sS54Y_l;7C>a5Vh=K<#T(cZvc+aeyo5Lz&S@eYE_ODx( zA$vbwbLfnIb4O~%`(L%Uz|o>#nb+V@$MVBp&wiSkuB2*|aCGLD0;V(f4^6zR2+Hn# zoD()%yB%+?6;N1b1@`K<P+8T7+N(LP=7okmS6=gTGN=!@de(8#!}`-0{+|>DZ@d-C zy<PU9!JFw!{Peto8XPK$4o6dk-sF~goy+4EH&0h_h)HF+`g&X0cBU-p`7SF9|F7R` z-MDY@3L*QteuoZ$xeXeOf)f*Ov`IQR9G3g$%fiNVVqK12vw}+@%k#a;Ev{jnZ3>R; zE|D@N1rEI(25%N@YI7Cy43IeJ80mLI_>=wi8OQ%m{}BCZZ{7A^Wmmt?{cP=UY5nhO z&%?sYV^{q)um87z{mq&=mqLRL``OAiYpvcc_DNTca|yq~ghmGQ9p@%{96VLo^oqCt z^Y*y<zP<)^Mzyu`HW^mvJULO{H%mhC@2c%<N`GrSaJTy;DEZPhH0sKw=^M_^GS$}7 zxEp4_E8dQc$?da7ScK%0u2`i82WQqEwp(pk0%lAc3JnJYn0%uCmh%=pv3K|FnNWAN z_S&vmk$~=K&`mQTiJt${7p>dYrRnrBBjNkb*RQ1AK5I;8)vohS2#;;<6?9k-&*a9O zyZ=zKJ%>UA1Ct#~MBz(i{==@0i3g!h+r8%NCyfO2)yu5<+4TM-eOtKb&6-n}?n|w3 zHMFZ0F_`7PQzzo3ufy)UeD-_J?(d)55qnkd0B_z~O$j@O#f{f0S99tIHGDP~>N+dn zz`)4PBqAoGqIg)~MfhFSt+U-3t&i&JsvX@keU-3h`qPjc!K@wAca~qb+7{<<AVcoy zri7zh+E(@Jm|~vHNxzn{p!8nWp>B}}e|lSzj9CO64m2_(Z);Xbkzo3(Ww&y#4VT34 z+5g4*7R^=)Ne>NMf4oavBgcDj<&@J+p@}P(?quaGm{>e72hCL)4h^Ey|4lwK<E=e7 z1VyKBJ(sm|$J+b1ytqAfd99l6zno(!cYKol-0vx+n`dd4-FMAPH|bxL5So&|=wc~n zL38x<nkR+5Y`0D<-aNCI@m&0KP9+-_AufYV-;TSF7oG_0FR00lVEiR2%hIUG((^1( zWX+304uu8>_X8OVSS1))1RNCf8P(SQ`|R2G=lP0G!At9B%`i>!Q%V5YGF7EohJ}$u zN-@FYg4v?CES(HY90~%u2f9vYth!~kWJ7>-?KSpg@u_p;q{3YfWXQQ5T;&z?Lyswz ztDyO|YQ(Fvy==FxoPAJX#x!TY*}6BPj4T2h1Qu*aSa{0rW%w6HmNo%M9Da;uvg9oi zeW3K*X0sdf+RtIaaZ4DU=c|a!R%~Ek;$xB6EDMP@NwukJU)>?Gv-H3C?z?&I^TSqO zm3R2o)WFQBSHw5TAch0Ygn$MHZN0zhGYxM;Q&nfA@-r1ss-DiO9TuVbGDv0#8)IHU zw!`~p6Wo|{%@sGSjb}U;zkjEq5laxaL8h<ny}ut%1b$DeNlsz>b@hZ>PT-1$i#DfH z53af(ayf@ZU`6zSj0J0VN6N^9!gIlXCZDL^uQNBA7p0(hG;qVB;~@XYGA?cuOJEUj zU})R}O7r&feYJGX%(V^|i_S6p`AB@f#{FN{w%<Fp_tPour-!)pMgA_on*Qa*#YM-j zpWjpYIc1`&80Y_e=d510B<Jt{`|Z<{$^PG-e)xW;xc|+@<8q&FB=>(!tuKAE#Pjbe zKKZ`L4GkA<x|%`{)^;shF8+Ycd~apAyNOiB?ykn(yIckTcKPx)f?V}pAj2s!@!6S~ zpI)tAe`?q3b=vQ1-&d!;xv{b6?bhq3W@WFFyft}I!qvvhN|&Ot*NQ%RS@UlH|9>j1 ztMC8&w%sV}ipJ05^?%&I+wSE2d&*Xc@tGzh38j}W4E1B(al+EqM_mUk`GYg%yyI_P zuiNeCXZ_Zs^4H7dslUFwOf<b*eebiJ<?lC}pB}gWw-K~sOkzudY2~Msoj)FRyWZY* zH7xq%%=CGh^M9U6PdU`WS#(0N{e<y(8|BBxdM9VE+v&FLW}5WQ*XwpaS<uWk>G!+c z`A2$qLO0y1d_MQ-gJ%9|?`xi0C#qg!6^~K4ox6SRoT5{jM%CYPEZ^_>d}ts0zwbfb zx}yJnyW9Vo2s#-^@fhe{0i%M}tJ3*<1e5L*9+yphy>>g_$Nm5RzMrmN|MT?2{d?<d zzH6^fI}+Lf32()}?P<RR9w<Fm=67~WG`V1vZ~D-ctKgrT(?&@qR*nsiF4a%k+j}$W z&CmY-Kl%e!T$&mZ|MOJ%p;xMZU)<mO`|kT`*W;>v?S5VCKV`n}Bk#{A>h?PiaIK#I z=ZX5l7sapFZa)QD-@UjrI%lKnkME$3QX*48%P%+l2W><9v+Zl~IZOAnv$Isw=aydU z;FMmKu=U@s*X@gL{rml1|M~p-eV|#8hZToK*G!8{leGNv;jk-rj=$~KDWF4}KHVuk ze^R;M=F>Oj#`(YRJa^h%dVg-e*eyTXuOUBQ$N$%wtmZpu@3&jtpqVVeWdEIw+v}!o zdMm@-n8@1mEKrX-?9Vg@zqT0G9S2M2MWV&JhC_qr>i;U$rzeV4FY}qH1e&$di(--b zaq*Dv^VlFOeycARoS!zb%S`~ysps!M>=mxLcH6D2BG69P_5Z#sx1W01-#&KV@4N3$ z`B}eJ;kWy-K&JA^#7+0AUbluu?EmvrKlQxr_bJSL77lhFJN<iRY*@$@CY`%wB53{k z!{57tyu)K`KOPZQ7F+Y>$FCKO>!!t3W$yfZ&iZMqcpL|-wys-dVeYXW$!4)7CDFO- z#rE3$|9QS&qWTo?p0BH?<UWt!2-xt;o^h_oi~ph*=7+6zJ@3H4$a0AzV1w7=Gl8Id z-NtQ@`E|ZSzU8Ik54SKZ)(^kFXtLNu6Su!SIuS4H-|zeV?$gHpS{;!UR{F8m--2@S zhDBcXznZ?JPLB=y^4EV?lV`Wh?Y!M<Up#J;&fBpNG)ejJ{8!t^Uv+CH+8MszAoas< z^~A7<%r)S{xz?=Paq0g&<Mh6qO()eJ9(}i~$%i|e+5YqM^Zczl^6Ng&ei$3|YsbQM z7N5U-ytdxvrhxZDQ27@YA$o6ph8+_JkAQ(xhM^k+Ba6TZZ%~c&`Q_FP1&@2p+olHo z%2SWc-12_k@3uo%58S`Dy#HhEpU3k2{Z}#>-Q)MIdtY&B`Xc$#D}nD1{Qt7tURF;3 z%5lc64O_q8t3G|CQ}}6*@i~rufnznhbR%AF{9+9%D-OTww|-~w^K|?_p)Q}fOji?F zwQKFC?u+*Rzq0@T+ikb=7QNrR>&YZ<r#<rjKD0NVel|N_PPpt-?w)U}p9shZG`2#M zSc-fj_5=nlR_<|ggQoX1F7(LT+u3Y0-;l7h=GVSeAR`xgEM;B&|JVBeT<^E-`uFSg zVeVUB1)cw%t@;)86;$XM<=)!z!Q#P{mBEL1uh!fDr|4$UY2BwS!hRj6+_tl7>l)0h zez&ve^I7xLpqu2vN;9L~v?5+AH&*G?@=yD>+b(TIzul|4KFenkk+om1E`GE&TlxLp zReIum-3=0F7i&aZ+%Djuallniu}r_+NGhY6v-SNC;Rk=dP8U{kVqj!x6Uw+WWA6v$ z##?H&HGcA(cM_U;oep~0gC;*KUhZ7y5mkCM^ziT1)8gwYe?FG~uc5teM^ePnFDw0P zz3M*CzTe``_4T7etzq?<<+q!zp4Q*5v-{1aZkyk4Hb1-pI#K*bd2Q#f0_`<ctlGUV zUo7sQX8-3Q|HIla-=8Kc<4uoFu`m`inB^Y0;nb4)3q5HZ1rv+ssbgkgly=M2BWnbU zg%}rCim<L$x%pUuV~^?q-gTenC18|$pnQ=6Z!n^3Q@FsvxVUkfV6M6cxPHuFR9ky7 zWNWTR-@QfG%Tr(G%gVf2{JuNu(&LJ)rOO!Em&I3}U^3hRZ3_PVUjKjlor1%>54St} z%rH2ZYRAFF$YLa7AeCV}WsxVS*>jO;&5keg>$tf86<;~R@iN@^jFh1|$h(M^<k~Rp zPJMPqg;oah9hy_LWe#U7SSuhHU#fE8=W7kgmL>)!jvfVv#74a&MTh;H0#fHka!8zA z93!?SB5|tg^reE$pb)#K+rt+1e689Z55{x%Jv7Xm85mh)I1JLPJ)GJUFRVB6(ei!O z4{b!)C%s{1tY?aO^5<zvV+WeP1q_T~F~9tclDGYrF*S7h6)L>h?Tja+B{wOhzggkK zG*C0Yy6K|B>pfRn#5E86l;%8|#v!6`V9C|`Nhc@b(AMCf%+kYl%WcbC1wl~hwTN}b z7PsK5+Y~KV_1e8=zPx^upMLLZNHZ{0RkKE%k>!(+fmFt4r$wgV=K7i)U+%MO==?Yz zD6G6B-qbMr$Q&1N6Hv?Zn*|3`K4(Gm>pkicyj#vi`&LY3nzMgmKu#M26NiPsf(;K8 zI3?R0_Mb9XX|mEDR1!hD1@*spsz0h9a6K3AC)RNSZ;Sizl1oeeLBsva|D^4=-+s89 zwe=VCi8z4*g#)hV9EIAr52BgCC6I7*>3<dDwBKlM1~>IrtHgFSUr{)~o5%a&uFR#3 z1#i_@wtdw;@bk5~xl5Zv7NgqQl}C5m%UQm<*OT9)<FH@qW`{19D5L=^IxA^bF9TC4 zw*>E&QuFS|$_)%m9ACm4JhSU<b-%gw>4e-=|J!8;>M^-}*5C^JV!<Ndus}J%<N{L< zs7*a#I;f5MeDa|t9MOd%mK7Qrm>Ida`6f+B<oL3hXR_DiU&`QS*VXx7Hi)w<V%c%R z)$r=}i5DHB<C`st>{%`9f3G~b57ZlqW;~V?eLv{C-+nFA&s(ZpAemS2=}m^lf1Cvq zU(a89a$XNx)Z~bpnMI7}?mu}VBfz+wY0Zw3*|WAYC!hH?f3cdI$NsFOYaN!Ikc8ZI zUueb>@4^XEEISUaW!yX4S&Dbd-IfE}>R2u6|2}IwA>g5VV2SD0itopj-S5u+*gKK+ zMYyu`M%RVV6fjq03nUu3&RU#xV`zK=>K=Y7D{uf61&qOrYHOG6sl91w`HEZFI?|(| z&ULy&0tX|wizTYP#)4PCVSyN^^q97-AONhzm@zD7*2QnR$3?_`xt;7|<G8T?1s_Mi zhDH1e6V`%qO|Umg=a_+sqeR&uaiO&CwqDT%@khNj#ukFzroE=iTaQ=It)Y9)=MZTu zNjl+7*@PAz=LPYpGeTxvk%xrkza{N^6$DfdxaxJS+}GQ~cI%hak%_-G5B$9C@B6LQ zVKZw);Y<7ao}1`JQQ!uzNw$1V2cntoJg|DtiP@c*9QNN+%^im}2Buz6Z7zMWtjPsb zp?8QST$1t)z1{X?h1st){670nS?x7h*9DKVh^5Ov#Igvyh&+(7;H{<Hz79}&d=S(i zI$iJbCWinKG4yU>QRIe8vm45G%hpA$4HJszYjWUX%qs}i2)Agv=n$=_wC|Ni!{_UP zMjWh+ECLda4&2-|0viNo*w^nnns-y3>8uze%WOQf>SpcK7wuvX{-3gVFN@|&Q2sIT zYIq&J_>$`ejvvqh{^uEnK*fOA2I;0(ZOf_+q%wSy)1IGXv8bOMSggQuhkL`LOSN4b z8@L(Q<;Ny$)MVn|(F5lO*LG)xg$(99I5$>XPPyoC+gqdN_<V-v>-WzQ5M(OlG&s24 zd*0(Hj)L0F0jcvjMAX2VLL=-K?c`7}=xMm<&}|7C?{J7?5?S-<l=@mnP{6LxfG9K6 zuaRYBF#;8i#zKoU!G)vJp)QeKj37M>Ow5qN`b8>-ipT>ta~zevzzV$sU)SzZtaeyX z0Zr5URX6;2H&2(LU%<kDEn4vo8ZhY<dhqMoiV{H`COc@0DC%kc_S+AaU(NdI!x5-> zp_##)#dg8cKV26cW^dw@Iqlc*`TDtOw#pYw7{ivB=q4Yrp2Kk6{1-bDM+hQPipmq& z{Xp&ZSu^}1&|)Q^fkF5W)1;UH;hp<Lr{v7)YM2U1N2g9r_^Z^wz;u{Pf_KXbQ0cdn z^G@mY*iA=-yidGZy<QJ=qeO)1{*!96Ly|21{dk=E=Eg>&%u7qk-=u$fa?&X4ipEdS z;<&!b8;R|qR@Xe@mnE1^5~%M7CB}d$kRDaw-i~8R4GgT>zd)i1`X8>YuM0iaFR#D* z-LBP@2Vd>`{ciGMe*2ib-EYk*ANQK4%q_h(asK~5&o@2l(w=2HMN~6w%Ny{J$AV5K zku{)k4z~nH#=L^L-#Heej23l?@A&y_cIu-eoty3yoj$p8`8=t*EfuB5Wy?>1mR4=J z^{RoHkE6cqUgh&vrpuH4?KFked?p;1tM>U4Q~m4Z@~3Cb?@w`;t8}>*k<4rP{Z4V} z1FqF8gO_*hb9&Tn|7W30#e>F8pU+vJ1|3NBX1UKyrOoN*rx~BKSo|Y~p~0bt;rez7 z)oqRpklxgq4U6t8P6%jl=MYNzUZk<OaohBOAAR<W=i=)v6_xfgRlnc6{e^#e>s2=C z90m3HHJk3#e!sive%<erpjGiH2VWf#_7~BuIy=MA`Ptdo;$dE(^O-)a&9BwA5&E&c z{`dBU4W(bNhM#`at*-~_KDWzNc}$DSTFJ1;b=}?a`>|=~=DZZ|I3ZA=a^UM(P`++l z#szN2nr?L#C|73Pp;$1_3^f1+1UQebYGhsgxX;>e+l?gd%6~tfAMVnuy?!M?d(D;v z)ADzBHVAp!?_zrW>9qdzZvA}`b>Da2KdHO@juOB9pACDy?|skP&!D&YjM1k<-1>Xo z{=1dE{v_yJr@qv$iLPB!b$+jPZg?Fn`$|T*@eC+`fqR?>&RFT6t&DDvj(I*8z4B+% zj3|xUwa!(gR&$r#C(sVaQ(H1GJ2`sEKfFAB^K0eCs129;?U-(8M#PrgO#SrteZBpf zUB4c%+iT3u-8NIE_>AGFU$57nX1Dv$$l4XG$ra}F;pH<+&Vt(0nzOgCHqL@N!Yboc zZ|}b?QEO)%vD9JW5K&Jsxghr3qgl{lK}BQjx0~)|H&exLf>xDPy!>^b>1v<#I}LZ) z(kVH+-)>vPs;L{$8?xb&I}^X<6M>&Mj@zkCkE>d_X8XOWhp~~rJQn<$TUR3gOXJbs z@Avbkv2%qXrDw?4YFLEn#&#iNCP@wn-Yt?RF0g=_8QP66FE2mMsXj+x`P{NuFZT0q zJLDDa{c>?rR7q6j)2X1H?bDCT*Vo(-4U3vG%Oo?X;`r6Xc3HLk|Gut&`g#8U8jZe} z)vLcOUcF7O_Di7U=QGB;yLQg*jhuL?SL`+@*K?%kCz$jXMQ%7{H`8Q81Sm%>zlYZN z65<B+VL!F%*C>i?{Bk$^^}5}86^g$ndFx5u%RkD_$kHbM;FlY}BSYgUP?gISHr4nr zpFoHB1Hq<>)lu6_q%yKIx!K?DW_X@|-}7eTGA7VQv5M;<tIq%V`8gF@hEzVAnVteV zy=wJ(v%4k1J6|rF9n^ZTP@q6_!O<0G&F{yk`OGj#sfoECv#f7{K*lskxw3f|<3+QW z25F|}oF-BkbGOg>pu}oXue|WanvBNE&(BVRijXC2zxY-kv;z$_tl4%eYtsp(?k~1- zVN1Tuogyp6=`+V7aNUkaT#=wt!Sip)tSLD9^(@EyyGj9*AXa$J?bvn=*U+?vLjz|W zqvyFLopYO}nt?|89va?k<qnUzZ{%rq)?tAkq&Z<V`P4>1hXd0aE;_tkJ<+8ZR0sxy zHZ+BXI_{hAm5^|7Rq>gHT;VH|9$9cGOjrmhm_co_MD}H#943wjG8W`IUG6MQVVt|* z6SxL*P*7*Ab@}k?_4@NGJ-4tjvb=(h$G+SY^7rfUUzfACzIyO%2FDDJ4Nq>hY^}F8 zmCE=nu28)yxZ(45zuLZDkP|L+A4t$%bF4>F`B(AFrPJHWqY7(ZyH0zr&~ShW6qDdV z){8%jMIQ(<J)dcc62Ls5@zMjm2M#n{J=D6&Z$ixdJ4?D91Txk^9KUL3q*4(mVYD5n z<Tpgs*~r8aF)_$tl5u9z@&wQoxZA@+bnlp~%b%$-J53>AIV9ZYdOp2z6x0*3d5XO% zo8u|`_14y(&t|u~|8M(MP<vYCrU`SS6{tQHS@X(A>$n>OBWRjp?RqyMUQm7R5X#6E z7Rvh54$KJy`H(9t@~e<kGXv99P>;&X@M9{t^;yoe#-nh$5EH0NFR&sQ+&5ZvZb{Lb zM=YRGu_Ck*6VwTlQa$i>ZQx6#2$mX92^%A}=7(;h-EW1!P*6U=*5&~XHnlLt+!snJ z)?g`u_C_+N?!TJ{8W^9N?Ufnc$aF`*!haW9142aMK-Uy(Re6_aSlHf<zt?mR@aEl> zlz8|9d%(p62&b@mTEf->5Nr={JW+KxsI|W4k`yR#8oM9?C;Iu&bwLNvPQperWyM*b zzO{ma(i)G2(x3(ohk^lUCdTz(S6rKe6JuV1FqZlcY}_lRnER`wH?gyHiGznOwDzSl zP6%pn=LpLBUZAtMaa+5`k1l7%bMft-iYj0or<h{yYYA^+W&tJnzzvJCK{c#&Q_GFL zGN&>Yyj2z1_t?MT^YwVY4vxlMprkh4=J-~D2fxx5p0X3v@PSN09L?v{SyL>2B_^+6 zuKI1X5|2wDp();B5_gu;_3cfQe1ioy2tiuDFBja*+kV)8_0>&Esry0GXiZFR%(`d5 z4aZ8(fDNa#=Wk&H<%|W3Ao-w6G)&Z*JKmk4@g69J-D`Rn4OSe-8Zq&asqv9kP(BRk zhA3VomcZBLzyt~{g>cK3iw@DMD*Il$H+;VCuh+rC2&xe3nPTq$N<TSIKqCy2DsRZS z9)2zGK(NW`%5IBg7aeZ9vgEvqX!v}+u!w^ftR<asUB2z*kFG2NFF?I+jfjg!L1S3F zj!tjl_)<+Sd=uij|55$G&)53uE-enROlv$=;%ZWV<tk{7UjM(t-CQce-9}H^#Hr!) zcEL;~50*(B1_%8QopBW6EU5KnIh!bOA`<LAt>=Euw*?#)Sc7_ZyA^Ioft++;Hv_Bo zdr2ibaC9yKr6<TJ!liXb4`Ot#gHW68D18`L%YA(f@{D-}f1e~>@IV`X0k!lqrZ8OJ z?zXf$LGS};QlltxLsIM1^L8E~S6M4s7VKL1Qm%(B>hg@6l}3!`?x$Rl;Q+Z$VIjly z?JYNCxEf<XrHLMQ*v@AY$`lXqHh#849~M*Q08RfK>yy<kes<>N?5n)ycN8u!^PPNJ zZ+Fg#+Iz?i>B;K;)As+Iy?<i;zvuPuG}->nUoEWW^Wx?18cxQ1rkMMCQd=qnG8RCJ zKjz;|iss=Bs@KmIr=yL;b#jO0@B6uI&+FLtQWyWOj{m!=N8UcJ>~86G!R@k{%*UE1 zw*2_5#(81>>?yiQt_N0v4V-$pMp%rA<BCFp$%Shdg!n-7fhwXF@ArIu0-C3aUAghe zB=1wI(_@r&E%N;T=alw(o{gZ5x{0Be?p43n_153JMW*nGVA1W|?I(-R+p3GlmP`a~ z%lLHjd|jAa)eFVSmrJLo{QY`;I_RpZMAd0^-&Zc5H_7~7h4VR^&ptOZ7Wby?d^(N$ z=<=VRpM!^&-)ufVZT0$nQQ({3zx&&KZ29xCzkbT%J}WP~FAMowbH7+GpI5c&MVC(O zQ`5{#OFrzolD&R!m{@E{U?gZuve(+c#cn5e6h1!0wZ>h(Hssy@|8+mlmG4sq?bFQQ z7XGv3Zg(?idW@q2QnGxSSMkW1p|J!sHnEGX092SPkYm(+_vc;ter{I<-G6)D*S?<& z+6aH5>1tB9t{Q05ZR&B^a-P-&tJm%F^0WJyax;B??UQ%A-}Cieu)p4P<;u!n=Y^m~ z`jp%G`(u~+&zJj`_wlIsbkOX_rmJDmt;uCvVW5-$ZoI#~@0;n*`Tu{)gEwy5f4^IP zKS1YlEoc{p;<c~WqWw#rUe(=xM~Exz*Y{ofo%wA|{(Sc}zbnF(5Ow6zqO1G=-rnDO zqe5lFyt-q7;9<Wxpn66l!t$(n;#187|0kBt3rDS&x<oEa^|~HgJ{L5%xaoG@?vqm4 zYZQ&s&PZ%ZSbB8X_4xW&vB(s`${!Egp9;_a(PH!A0Q07!V$mmpymeKr-);%MasBuG z|8+O(e!qP>Be`#4?zWq0jM2JPd;feoz36|;j)c-vn#()H)_vK0h)eqf=yvIE8w(D4 z-CzFo5Vw9y(#*ON*XiqcF4t%EfKCUhxDycG8C&=BY0=B2)5T`SOU>QRaDDrp&)%;E zJV0ZWMUfjGZD&z~OzFmDMKV{Jw}a+7IU95Tauxjhb(VMHPk|Yx+0*{~d2T;lGk96c z^jWVLH|{c8`Pt)vBfG2$sGq7K)hlOfwPx0(&tCF7FEd>Q9c&`^{&LgAb^CTbXySfy zOgeuGsGr$q_bcNj=<>CU74IHj4Ugxo-&Sz&)so46lg^sm*7-Bnj%~&7KbNNO`_k7m z_1K3;-TM1tH(YX;c)$1iJ%R5B{$@*mX?=Hi@0GjmVjWD4?^t*2E6qP<F5r-$2<iV% z4f}cfZP|~D-?=_GDu^@Yam-1-gi^(9e#G*nHuzVZX6+fj^TM?z?@y}FpJMy{j`1G* zSJ$HRr-It9x3bsE%I&}0G<99qrKBs%X6H%Wi(mSF-mhQR_sey;{(ir|-r$P+_b+!t zK|9PNSeG8J_;8T@>5b%m-hKhT@C}y^&A8{DCFpxUed+uCxAOP@O_?5BHgWH_Td&`` zGnwB=XcoA9*8ILqSoO>5btPM`H?qrF<Q(jBXX<|aEYf_&>*#AQmlkp?5roux8xLvu z&VQuwk~N}e?!7&$m8E#M#2!6xERWTq{_e8212P;L8(+=JUN_M&`B;nli;~hSpiMJe zE>RqpLjCH0o{o1i^x$>_?F5RjG%bF1=EFK|-Kdw{7q<p1`M>u5#rLo4zFa)m%y0MO z?eul?ORq(40v+NTz2TDhw%4b0bwe^0bH3j#=YPM?>S2rU6VP6^<8Swr#BxXfvRJ%t zvzL6T4d`UpkL}TkM=KsIxGd;&pXJ5*+QljE98<I*y&Em_(_3U1S+Yb8q%yK|h1uO1 z7+JW4FO-MB)Y8|DimaXSAo}E{cyM*(2FX^Yo6H4Fm^fyDdShxEHwA|?ZB9SWr|nYF zb2l`KV_86>2&=Xnr_Pq*i#cFz2SGK3$eI@gprNAwC)AF-dm7-zoU6a^gKRxh^W6P& zou=9aEs?KHG?53XXJnbBa^P>~<V~(?I4nSIzrYPev+@s}3T~JlWp#cvti@;W;ZN+2 zfU7rISyy}bfM+5E3X~80T{$~MfP?8QL|<0kbcIiBTm{Y#Y%*aDzJ_`Ge@P$za&iB; zu2rr3y$)&#O+G7-v4f$X#muI$Wq$+1_vIxVECMTZAi?u!J4@I*y*CF|GI+0>tF}yd z8qEF=OZ96t_ne5VpM2xa&f@kz*A6V2>c{lu@ccvv`xCEYBxd-ZD;DILmAl}-a9g>7 z+dZBQlF*SmP&Mtjmv0Wwyg9ra3KK#OWGwK##m1MWb)ixObT9*d>uS&rqsGS@51pDa zf3ETaw+2zoydXyfaPvqG+9zML;nRi39gK}kptVa(s+;pa1+;2&h22~}k4;H{CBo3x z9n|&~a7buq0I%xkI-)#bHE4L)I2%@J@_dhGDm{92j%D!=-NuR2z!Mn?58NAm2ixyd z5Mq%6rI1AlS8vEUKJXO*b#x+)rJy~@HtTw8?R6FG9x7_!)hrx41Rwmn;;Y5M()bLT zO166oR5G)IhEYsV3ts`y`XEhKm7NRJifXkrZkmWPYJ)q2+N)bO#<Q>qK480Ex!nL} z6}Z#N)5yd!<AL~uCrz_Xd|kUB<#Gti8c;xptXU&;tWMBjK_#f_`mE3a9tlgZVB`w> z!VgJJY@ntcq|;GS%ObGC6|}5nsjiF&s6BJQrvYUE4Km=cmosDg?T78+H_SF}7y2B) z1RAlHh9w}x5*`lBvD}S^PNmDMta`;{;}mfBLJ7Yc^V-ZaZ)|2VJkK}E;%fmlX(t3U zypDFt;cInR2Wj4|jw$xoE%2c2K&3pUr@`GpwAOauhD}})zg-gqKw}c++?b&Y>Uis| z=#06~<z?pUdcX_Z-aMt1_(q(OWfo}g#*DwI16)(K2`@-+{g0GVx|&4yf;zA-K)IU% zH0H_iMD;+|ls%t3vq2LqELxE04L!ph@4i5qF|T0v#Z`&XiyODKO)KzVW;_?q98v~q zK`8|6X1KonR<HvDhe<rVW06x=zm&C^`vXVg=XvPMM?f=~i&=K;Gu4V^>2B~xsV_3O zM%f8Fg>ZaPIKb=3pP{)w$>hSa9H!%&gdhCbx;gbchly{4sHX2}iI05h2fp_HYh+-W z3MzK=xWm?LSam1%Mq@B2u#ht_VoH%^e}jtn6_<7Stg5q@DJ7^va{eZxl>MN7%mz?D z<`p>aVfJIXnnI86`B2ItaKht2#)7jR9m~L7ybccSpcialJ)mU>pn2y-)4_eQJJ|YS zpp>{^7sK`KuiD-)Ha-G5Tx3nx`$&c*A`b+crrffXIi0cKt)kGrM*$6=uO|j^aDsJg zVz|EjRLdI%Mo3P05d|t>+Z3>k#V^of3|n$V^?ac&%Z`1KD>nJFa0x@|uaD78+^_Gj znogIFd4AH2s7$BF9cGoW4Kk~>#^a_w6Nkcv1q~M+xQ)TX2bl8-;J!uZ(Q}|~@d9&D ze`kBb4>6G9hH%EPB^76R3Kc<fBUhlUomH$enw2IvG)UiJIT6a2XmTNpv-ABg!3Tf7 zPUcnu5AwX2&v1SFzsODMEM1VIUTd5C#Sd026)g++zUuX5np`LoWSng!_TW$H92qCj zJhi}!$cER^=Syk?8Ck4A8ILQh#E?aZtH61J!0zeJlDu2?wj3(|!&&g}*J(~c#enGy z+Ci@-J>Mb56muUm(aF@x2_7C6z1E+Rx0mV8gKMwtA6@KayCv9vnypvh!Jk~0SsX%* zDoj2fCL0t_Z~+ZpI2KE=6oDoo0ymu6dHI4Fi@*y%(1es8$2Rb?ln;6i2TxVEb?}3t zQvuW)IhA@4G`O`TyU+mKDdpXQGY`gyt@)z105T*J8rZj9`GI?bbd3E@2@@f-5&@LG zF$ZBH5}$777YZ$9lv7-hm$8d|apN_Uw6b|V4WG>=P1(WYJ02PbzUnHPwL2+<Lvmy2 zI?E-o90kq~_VA<4fjclVt?|%QILT@{@pZK0$z>}!A|T-vsoL{b$)E#N^XzVgRi1eB z-lBxmsRrM=8JNxr8%Sl$W_LUS&Pazj12!zG2WKy&5fla{juMt0wx|YharQ|l!PP77 z=Mu<dz9=LkX+3LQuY94G!F<QvjH?^gUUZ0d_O@8k$nbnUV;2AJKX20QwI3hvpWe)8 zmC=|VUv@LqDES!A&JTyU56}0XXA|kxE2SF$@6+_%R;Scv=P0Gmuidt0|G!_cwfQ@G z%WovITmF19IdyL7HOZpQ-g-M-zTHfh-}$gjI_1`u%tdcsKKuOZ_4;nP=b&>>zggUU zGdWk#VF3^0y8P59GsBb;v>;{8qwOrS%2dnZ7Bln<T<MT6&RE=N_UuB=<M@Wp*WLS) zxWc~QEuSw__v0a`lUXWTvY$Kb^YioKZ><m4#?}2yy;*YE_vtz7_iwE3HO7OE?*UEn z6kU%kKe_wf*L7aMAD!k<2<T(DzP+f(*IUp4n)BfUYN=_b`UE|65AZr>ebnnuH@Q$I z$vWFw^ueF4zGwDSes<{&1dR~y`T1=2rh{zKCoG@OQU3KDbYaEQ@B9DnU9;m+*QZO~ z`X}xGUbb%)4g2*Sbi`ij)X=br-}k<+{d6mPeXD5L@Av!ngYI(J^n70Rsrmo^q~FZn z|JNm4!S?%|;!iuz*Xqf*hiA?$zgL-PdI@>zX-mS=`tKK<`CF6!z25&XJK|@_Y2EE7 z!uNfe8o*KYbZYpajpny9ly`nQrG5C7=HD0l&e?vCx%hjA{oj}VMc?n1pZ@uLzJC0l zN8*Q9t(E`#!u`{gVE<0B75{!+-+$^>_Ilm)xuszp-_`AZc7hKpyI*>H_4<8QM?Qc@ z^!LQoehsz!ctkk0TX!3WJ!s0r=JOfjPqXj;aqF}B<YD=sf!T>?_xpX-8!mqPyiqv8 zwQH_!wV(chuey6J-CY!{A(=*0d(EcT`%GT^XW4PE^qwg4P|ONB^UIG;f8YPV*7Dhm z<a>JmGCq2Cdq!RPd3AlAXqQ?2|L^ts@&A8acXmwcHND2+y7c>==eC>P@B4i!sasc! zE9~*HUhbpwmQIV(vWfeCLb<=CHp9`oJ0$9X<hq2Vtt;~DKF?mHJ?+c=`E|cu25h-B zKep_qs>rqy(d*Zu^L4?iroJzo9v8)D_ang)v^?=v_IlorapiYQ7v8uMxpnE$wIIuj z&YE6tS#-z#&tdx${B<9gC2gy=yxIHxUeS5m?=9~^z4-inJAG!EXl@C;z4>n0?UTa( zHj1}%Hur*#<NBok|C9d1^WSeI^H)A-WN(@+b|UTE9L?ZmJ}(W0YjoWjIO}?ZZkxC^ zyp9ewa-G9r0V*zc>O@%jF)vhXa5x8Q)}2e)!rNHKd1kJ)`I@v#OlKZ->&xAHTJrIz z_-RnrI!xuI^~x`cwL7=nDf0fgd;jm<8y<Ov+r4xTkGfm&xYwxmS4m{r%+x2KWsvpj zT$jJyem`!@kH!D5G);b2zoTjDx|B<z;lCpDc0PTwegEIJcj|t>eOMc@YghL2xn*3d z=X^Q8<-oPhg~<!=zhBdF$zD2Q!=*=8J|35sH@iAD{@1;gU#~^Kmt|cI8U~pbk;Dm_ z6m;G*H{wg7eQfK}-xnmlzTaA~Tzl7-&)xBVl-7K@BpO}whD9Ud=FLs%payCq8>B&H zx<OySh>1gjQ-XJk+r>@MESrROfcoX2mBJYd(?H9kwP%A5id!_nuIajF#7i%&*u*9M zjB?d)Hs*_WZwXl1svMj6rIEizL8Qn^J~nbGtHIs<c23J#HSX?Tx9`&NA8F_3$%c8C z%5h$C|MO*T(665l*zG0uZT|D=bo=oibw5wXw=J5nuJ4jNALt(I@;%z#++n|7iY#Lj zTl2;BL)47R=a<`k)dVfs)qK5f_qzqGt5v7R7}*@Vp&9Y=)JD*eYiralUsrokw{<S) zT)GI>Ynl<6yGu;P<*gaRmfXPN-=bpBl>9tv<oasW@w0wbFPCia@{muxTyFnTORF}< zuiH0xxgT%;jhDYymzYiz+f*`j^1t6}A~zpWZv6F5?eB6sp%tqal`OpmI&Hgpaacqm z>(3v@?d9&ZFLj-NT)sZ$+pTPU%U3HFr`*on&bxo2f4BGCrm1#S%ll<tfo?~6{2}5I z=ql2C^-KFDUoEa~mnrh7c#^;MY8dy&S9M?SMo6`<<C0#LPzpMRWZR1_quM<m?f-wa zKfJhS*C+2}xgQ=2);+ou8f*P-$KpHn|NkaR*Rlk4XFH3o+45oe$CZ+xeyxIA!|UiC zq1y@#2R1;OA789lgt$I%pbs`@&lZk-x}^X1%iRmEMP;wuu*p-N^U8PI%tX&__o#|X zSKXpE{5+Fxrwp3*ta)F3fAZ9@D9^Ci($Jsx|Np)J;r_213&hH|R4maiw12bVaLPqj zabEqn`=A?m7PlCuotXf-I>n}M`=?Xd?NcM8PTVRu%zOBi*57j7giJ;6`+}uMMZ-_5 zTs}_=v^o0s#n7Or8<(c~?E2;XyM3Qa?EQ&XD>;8BXs_8aSAXA+B#m<~t5<9hSk}*9 z_hqsC)YR#*W=BjuEPd@RQ|J;=xa{_eZBq9OShaPJyyVh}-3giy73dIr@Jnp*5i<@2 zhl5>q4Gz!16FCN~+Rr&xncJL;x2})PUBbGwuJ+4D%fD}{K)37eFS|MYZw8}xc<syX zE4p^OetC75{F=8qeSWQ(jnv8Gpzg8Rx;I<p7}w>0-BBFEvPlTkw2etTn$LM=)$2<$ z7{MJlKI9Hu2><MtuNIc?|9#iCruf79GxP23*Hm5l?)p->)JpR6hl^K(=Qf4zPreiy z|BLDSWq*6yJ=4AAi?7_bIkCK&(f0aR)xUGa-}7%{SNm~y_b1-{OfmQWfYyR#^gue> zUhKZL=FOlP^J7ms90VN}JOq_vheJ8!8H*WfUHtC*UtQn7?{L<G<)5X${M!0I?z^$U zy1L_A3TA)Z8}-Ym-0m*7&m0Rw8>UtL3tlC!Y!+Ro5mEa7lsUKuW&|xFHy+Y@+~;#y z;Db(r$%U#sqmAG;w2sCF&4`!t`{Zn+rbVXBEEic9G0|x~xY3MnEC9NMpI2NWV#6zw z)D?$956|}c!NJ0~F295YIvlbnA=J|N4MSrEqnu*L_Eo9giyOC1+g5O4ANQBvbDeAX zC&(%_I0!)}U;T@8_&|%O-uVY>6!WkcK?a&n?YV!!CZ6ezz>ibMtrwxseztM*Y&(>7 zW`^M+`{{92nH9@LwS%PQr5uWPXm~9x%f!f{#SLzQho0lHc2J0GkiLUu7G04^kCjbq zjhJ3YDN|b0d!tg8tBV<~Z<l-cLyC#xPd#L$!Ag>eL*as;fm8+~xFw#^=YW`Sm9b@A z{p`tP4{(!G2r+!XX(iI`z|dF@S`HKd?i!o8JA}^$-4p%r;{JtpYdkXj>^i~Y3JQ(T zgpkj4>uuSO%&k$JC6+8qnJhaF`aZt%Ik1QA*1X3LyVtQ;)W<GuP5{U2FO>sd*ZNO* z!`3(n)NloNUA1;De}1=2PO)HKJaQok+4{wT*{H8cYghqVbj9mf>U`N&f_KX@!_A*l znC9$1xx!L_=^bcl&CZqOMk~Yh?Rpz-h%mCSLE>f6Vcfmb#$7Bk9$d%hI|gphS|fik zhDAWa?LfwYqcY$=j6Ne*Smo2n*TBv65YPg*zzwTri0|uTV3GvYY?7Q8ML@M4qhO*d z*Im#wlmkN}BeXm;0(HllXJhM*fqI7_;tzg>-JM{o5U>XlxLx;!B5KOdi#51&%vp}P zmyMy(jkBOOJ7gD!7~_1971LR@*M5R7s;yCLSt0Pku|c{??m|%A(ToMYH(B~p)erp4 zPCq?QFk=>jcF?S8hL2?Z8eU8PWrn6a@N($Tox3+MF9#JVSoZ!vS3RH&zC7KOkeYg; zPS63o_K7X(3OHqb5?YWjHQX)}G6U}lPME8^Dj&Y)P?#{W;iALri2}aheEVQK%O!Sj z5)p_90FUK#^?|02r^TqFjHS-m|F6i&1>9M>%DQ7;sCf!MhX`m9%c6wPn)6HwOBwnF zmRx!FFv5*Fmw)01(RQXe`}rn2d4P3H1?f;rVdqc)F93AC?gUy~$bw^W;RdCpdX;_I ziU+=)b(&hM6fgr3BN5N_R_wg<z{-CcQN2CTXsF|6NH;ds^%OXeSXq16qGsR-q$#JH zM77swm5G58)m~7d+RJ))J2-guaBWaJnw{3c4N8lkWwYRoin<46L>gI`?mSR)SXacc zxN)18N6qzqhUe?&#|UtO1|b~&v+UUS_537T#eg*p7eU*~HrjTzT~|DC=+e%03=9IF zJzX3_lvzqwlo$FeZrs+*apTHHhUe=aKM{}uYd_BvbH8fY<8E+?0v_w>2InSH=G|Qn zuG&!NQv6!<0o(St|APH_CKviDV$3pH7@p@VUvinip(2>jG{0qLvx?AzU(+~d9afmI z8RFJ+bKABlHaL`nYM64z4W>*S6+%0p9nhkisnc}@u3h%G*9CQPZ*ESn=9(TM#2K)` z3p5iA8W@<Rm|y~0<@9Jfi`im-AyuZEpdh_zc~OByK!7VOwVWwz$&|VEQQ$?38zw;F z*$ZB*ePLzU1Rk)}>P6Zbu;Pr_?r*oUpTZ_G^LD*dvwYN{{N%9wzYXBI(PsHS4WeN) zpU!@!5U_~h`gWnsezOH%fV>160uc?XeP{FLTrWevzz)x&4;oPh8)oL3Z2)ikIt|(@ z2kMpi%(shG^PlH)P-}C|Wf>MPkq5uRlCEVMGu1+?%C9r~?kYZTYmjC#U%4RRsg0=I z;m3cz&Jg`Q!wS-Jck7qaEq-=p;!&|^AG!KJg*S^%>uN^aTz=rGV8p~nM!INq2v^t_ zHkMiXpxq!cQphW(A#VHesQWbNTtlv~e!E{QayFke6Io+)x;&?N#)IQt8)Jn*gPe-q zM>-mcL785A&79|RKL|J|ECglx4XiR;j4Z!&3_eUeu=RRe^fI5BLUNqoX`IK6f2JL< zYc@|Q7g-}UN#hWBCA0@*Y5Y{RS{YVGmRX=lY_o+gk906FHFNXmMErdfzJHQ(zfBNm z;`rn->3ki~F1bGs`Rg0jIWUGT5t&gk3%pq0U<)`oiO%I~YyssJ;z}0C)TG$`yPH`- z69g;aE1|5OueW0=yXY!@vXNa*1GIJe$@ZI|fn^5<#`#Ql=Kngw9jJIg1JXl=P6}pj zjp{umd{D_?4ud(%x!>)u@?*jC{O7lp#LqO%7GquQVQuEDV9pq}<jJ&)n{FTen|br+ z@~<3UKpS--J0A9xNR~YcXpoL+_mq^F1Tn+B$syf!s@Q7KVubVd|M&Dr8oQ;Po8x(~ z>t3_NLMERN+`cu-&OZBRa{0(59hM+ak1R%PP0+3)9TowH2f3iFtq;?<c*0h^+S1Y# zYFzAfh2x8NLsRH}m7DzFB0vmOzi@>`e&Lg9WMHZVH7tG$Nn3krEjYTWzvhXuvs^HD zSn;znkq<UH+>P6B{vpuupHGvrp2U+&{8r6O+Ch`}PRf9T=fG}oJWTz5L^wVSRLl4; zhx(z#A-(nLm6gFyL9?=~tIoBHhLuQzD$~XomL2wIRVQy@Zj=JG97NV+ozZO9^9R+7 z&+kBHSEU^j9xQI0J2g~f%?mSdfxnZZpnjIOS|&S_DagMX5m#pf^To~s1$}WIY>KF) z&U?YS9aZ0MrvKD!oS2u>=FrEq#^a>n>ZjW}e_t*t_CGE7Vm72q=(;a-V|(7=zB!<k zX*!DB?a6RM&fP!PwVIjVX2N|TiOl0^98c5^u-I?!nRZw1o&V``_G{f2=!3#<I;*y< z$=B=cul-kFebp^*4XXUyK>M6P3u?eE3KOq}rcm(Wc@Xy+R8v?)<af1i{R~Xapq5z% zxMhZA(jrD|jaJadQkFYh1<kL`O!HaOU=D;felaH?L|C=wzf@c0!&=dDpfU-$goA8; z5<pu-vnb)I@m-gxD?x!M44-F%8qdnHL1`(*OapYZ^MC><uHTCxcTz-VD`H=p-qkcU z^w14`CJqyS(E3L?7D2F|dDI;ac7dioK+_fskgO%TUv<K|eg>wkp!uAwTUwjJOIv4f zZcsYfGfft(%_I;qJ+suD@oky)pDj^q)s}V75R?c3EjgAw3`svoX9QqtSA|9VeADa_ z8r$H`u}XT@yMq}EOnYa}RTqBn$Jgy_Be-%F;wq^1?l`+p;6y0IzNy)Knc|?{-+N|E zUuy?(c@#PNKKT_EuqjiE3A!XPj5B#Z2agh{+|5IuK4RrCIH-?n0J_29GiZ_7Ge-eK zP<}m7z$CKfg*-SPaPUAE%S{LMpHR24Pn?9ceO97;fH%)P$}}e%vSKJx;lR)AhEsar z7E2bWnOe=o!O-{&)LVhfJf3~OeoI0Dqnu*FJ!9knK<vo~)F#rZ2OR*hHtck|QwLY0 z9Lo;H7mT`3!+Y3nP4RsYQN}c9f7!M-l8wtaHz+O5lvKX=kY&fdi}nHz3pPQsqiERF z-Q3m%S_gR7T|QEB$cWgfov=30G@*b**nx}%uCkz(lmh))^<7P&A8olCrZCw!O$gfE zo-E0`#n$CexC~dpKPw+DMNkZJgor)(6*hB%tO96eyQ@hwmK#)K38-MJv95sTE_Xe# zT-VBQ-JCo0Tc<-Jw9u&YPDq@)d%?4;`|}JEog8)ZB7%F_ZnbF&yc1xWv%iEFH2q?5 zaJl{yl>=XOm*-p(W61&!E9gYL{J%A8J9tCNRh4szf({ETKr>nv?oyz7G)2$hpw?%W z%QoPG`5kCxPLDfmbNYF)zmb_sryk-5j|FvtYI>D2KJe1e37|P>aQ_Tc00~32_?}=l zRBCW&12yZ~f=s|OevtkWBa1+VH>4ZD2ikjxH2(q4XrR@zIgol_(_2Fm9!8d3Vg^zf zyZf5;L8T@n(SumNpd~DU8?wCE75rEPHi#QYWxQp6&Vf(>a*r=4ytu+lpH4ok)X?C} zxVZ6JqBke1b6)g=>#WfFONZkG92D3Y7dM)*OWgu>+CcU|4CDdLbu3D7tq0A<S%D^1 z4?rZKN*uO9Y`XbPLaL2{DHgQrF!uOCahRV#DUqRZ8K^t15n;NNSwNkM;|564x5i@7 zjsSSzI4n>DHLF-x&-!#SQPAN4s9E)T!_pS;>^s~|UqA<LxE@?(|1wdZLt#QQC`Ooh zb3sjFgpF*F$;CzcK?x60G=QA~A{3$_Hsw_F@H#Uzt^=*bSoin=H>$^iK~XBQX4WOf z4q--?H=xeV?*o=hpn?drAOP&7fXR>`^!@o{1Bb$cfCCu|N^b-?fv4f%ZbI1xDR2U` z`2B2Sn;A3!p=LEhYV(WtLFu3mG%ag@V$+1R5SzBywzVlXI9vxMu<L~%SV0LE<R@@A zF3^NThVM&;Bb^LP-<aH(*VaCeVT3CHsaoL)PKB$M)f7dr2oz|57J%kxLNY1bO@9T! zYnNa7SKZ)d;&=jTpFVSNmPUjz$eE6i<oY5Xl;RMFxPUAHd;SDuNw3yzIp@Oy4hynD z8Sb^k57Z#MAOeYuWhD%cTo@RuK}prFpbs3paN>#zxO*EKYzNxOVgYJh$Znf50o6I+ zJ-8YXU)62jurjg~fp#7iFIdQn5~~LmKtkw?IcV`QV$&<!rWDBXnW?$`3lljME^KYM z=y1DKrUo?#GeBDwyP86Str!ZG8XEQ<IM8_QUj|w@pKyL~TfIxBZqJE_$G@(%6<Gt? z_bK48;3L!ArqIXIPRyvTKf)xkMyR>if<-{X-GMu-21S;UrAj!VH8el32HZ)8hcGyp z9S-bg=x6zLUQiI+N`S{9*yFC80UNZm?wW|9qyezL5Bd%VPu2Hz2w+NSfLd&UFPCiu zn}I?!)H8C0{VR59K@kO~VuwH`ku_aj=Dn_H4rE|t`NJKs;nRF&C2;QtY(1Rl5?YWD z8nP=>2PMISW8^`6L(|m%GJ=YjQUOyKSXVE)<eLnxzEMN#Ka<FsKhHZjFr^w7v1mky zPR*0*2D=!A_#wU^;i<j53wYNl*m^i2qUvyP)rykK5h&RW?8^iD8CbRdTPitWN-fY} v<O*|LIvcc85Zwd+ST!PkQa8#T{AVnEX@CEJXXtbW1_lOCS3j3^P6<r_!M6*g literal 0 HcmV?d00001 diff --git a/react-ui/src/components/subscriptions/action.subscription.ts b/react-ui/src/components/routines/action.routine.ts similarity index 100% rename from react-ui/src/components/subscriptions/action.subscription.ts rename to react-ui/src/components/routines/action.routine.ts diff --git a/react-ui/src/components/subscriptions/device.subscription.ts b/react-ui/src/components/routines/device.routine.ts similarity index 86% rename from react-ui/src/components/subscriptions/device.subscription.ts rename to react-ui/src/components/routines/device.routine.ts index 5afcc7c68..0290f637d 100644 --- a/react-ui/src/components/subscriptions/device.subscription.ts +++ b/react-ui/src/components/routines/device.routine.ts @@ -1,10 +1,10 @@ import { NetworkElementServiceGetAllFlattenedApiArg, api } from "@api/api"; -import { setDevices } from "@reducer/device.reducer"; +import { setDevices } from "@reducer/device.reducer/device.reducer"; import { setUser } from "@reducer/user.reducer"; import { createAsyncThunk } from "@reduxjs/toolkit"; import { RootState } from "src/stores"; -import { startListening } from "../../../src/stores/middleware/listener.middleware"; -import { FETCH_DEVICE_ACTION } from "./action.subscription"; +import { startListening } from "../../stores/middleware/listener.middleware"; +import { FETCH_DEVICE_ACTION } from "./action.routine"; // continously fetch devices const FETCH_DEVICES_INTERVAL = 15000; // in ms diff --git a/react-ui/src/components/subscriptions/index.ts b/react-ui/src/components/subscriptions/index.ts deleted file mode 100644 index 2a3e02f20..000000000 --- a/react-ui/src/components/subscriptions/index.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { AsyncThunk } from '@reduxjs/toolkit'; -import { fetchDevicesThunk } from './device.subscription'; -import { fetchSelectedMneThunk } from './mne.subscription'; - - -export enum THUNK_TYPE { - MNE = 'device/fetch', - DEVICE = 'mne/fetch', -} - -export interface SubscriptionThunkModule { - thunkFn?: AsyncThunk<any, any, {}> - type: THUNK_TYPE, -} - -export const SubscriptionThunks: SubscriptionThunkModule[] = [ - { - thunkFn: fetchDevicesThunk, - type: THUNK_TYPE.DEVICE - }, { - - thunkFn: fetchSelectedMneThunk, - type: THUNK_TYPE.MNE - } -] - diff --git a/react-ui/src/components/view/device/device.view.tsx b/react-ui/src/components/view/device/device.view.tsx index 0ef5c05b9..c85ce6be6 100644 --- a/react-ui/src/components/view/device/device.view.tsx +++ b/react-ui/src/components/view/device/device.view.tsx @@ -1,10 +1,10 @@ import { useDeviceViewModel } from '@viewmodel/device.viewmodel'; import { useRef } from 'react'; -import { Button, Col, Container, FloatingLabel, Form, Nav, NavLink, Row } from 'react-bootstrap'; +import { Button, Col, Container, Form, Nav, NavLink, Row } from 'react-bootstrap'; import { useTranslation } from 'react-i18next'; -import { DeviceViewTabs, DeviceViewTabValues } from './device.view.tabs'; import './device.scss'; import { DeviceViewTable } from './device.view.table'; +import { DeviceViewTabs, DeviceViewTabValues } from './device.view.tabs'; function DeviceView() { const { t } = useTranslation('common'); @@ -27,9 +27,9 @@ function DeviceView() { <Row className='align-items-center'> <Col sm={3}> - <Form.Group controlId='device.search' className='p-0 mx-1 pt-2'> - <Form.Control type="text" placeholder={t('device.search.placeholder')} ref={searchRef} /> - </Form.Group> + <Form.Group controlId='device.search' className='p-0 mx-1 pt-2'> + <Form.Control type="text" placeholder={t('device.search.placeholder')} ref={searchRef} /> + </Form.Group> </Col> <Col sm={{ span: 2, offset: 2 }} className='border-right pt-2'> <Button variant='primary' className='w-100 my-auto'>{t('device.add_device_button')}</Button> diff --git a/react-ui/src/components/view_model/device.table.viewmodel.ts b/react-ui/src/components/view_model/device.table.viewmodel.ts index 22d8ae9e0..0802d6b57 100644 --- a/react-ui/src/components/view_model/device.table.viewmodel.ts +++ b/react-ui/src/components/view_model/device.table.viewmodel.ts @@ -1,5 +1,5 @@ import { useAppDispatch } from "@hooks"; -import { Device, setSelectedDevice } from "@reducer/device.reducer"; +import { Device, setSelectedDevice } from "@reducer/device.reducer/device.reducer"; import { useEffect, useState } from "react"; export const useDeviceTableViewModel = (searchRef) => { diff --git a/react-ui/src/components/view_model/device.viewmodel.ts b/react-ui/src/components/view_model/device.viewmodel.ts index ec75927f0..6dd01d07e 100644 --- a/react-ui/src/components/view_model/device.viewmodel.ts +++ b/react-ui/src/components/view_model/device.viewmodel.ts @@ -1,5 +1,5 @@ import { useAppDispatch, useAppSelector } from "@hooks"; -import { setActiveTab as setActiveTabState } from "@reducer/device.reducer"; +import { setActiveTab as setActiveTabState } from "@reducer/device.reducer/device.reducer"; import { DeviceViewTabValues } from "@view/device/device.view.tabs"; export const useDeviceViewModel = () => { diff --git a/react-ui/src/index.tsx b/react-ui/src/index.tsx index a2ddc81a9..dddcf5c07 100644 --- a/react-ui/src/index.tsx +++ b/react-ui/src/index.tsx @@ -1,5 +1,5 @@ import React from 'react' -import ReactDOM, { Container } from 'react-dom/client' +import ReactDOM from 'react-dom/client' import { RouterProvider } from 'react-router-dom' @@ -12,8 +12,8 @@ import { ToastContainer } from 'react-toastify' import { PersistGate } from 'redux-persist/integration/react' import './i18n/config' import { router } from './routes' +import './shared/icons/icons' import { persistor, store } from './stores' -import './utils/icons/icons' const installToastify = () => { return ( @@ -34,4 +34,3 @@ ReactDOM.createRoot(document.getElementById("root")).render( </React.StrictMode> ); -import './components/subscriptions' \ No newline at end of file diff --git a/react-ui/src/routes.tsx b/react-ui/src/routes.tsx index b273246d9..a63d6d875 100644 --- a/react-ui/src/routes.tsx +++ b/react-ui/src/routes.tsx @@ -1,8 +1,8 @@ -import { BasicLayout } from "@layout/basic.layout" -import { LoginLayout } from "@layout/login.layout" -import { ProtectedLayout } from "@layout/protected.layout/protected.layout" -import DeviceView from "@view/device/device.view" -import { createBrowserRouter, createRoutesFromElements, Navigate, Route } from "react-router-dom" +import { BasicLayout } from "@layout/basic.layout"; +import { LoginLayout } from "@layout/login.layout"; +import { ProtectedLayout } from "@layout/protected.layout/protected.layout"; +import DeviceView from "@view/device/device.view"; +import { createBrowserRouter, createRoutesFromElements, Navigate, Route } from "react-router-dom"; export const DEVICE_URL = '/device/'; export const LOGIN_URL = '/login'; diff --git a/react-ui/src/utils/api/api.ts b/react-ui/src/shared/api/api.ts similarity index 100% rename from react-ui/src/utils/api/api.ts rename to react-ui/src/shared/api/api.ts diff --git a/react-ui/src/utils/helper/coookie.ts b/react-ui/src/shared/helper/coookie.ts similarity index 100% rename from react-ui/src/utils/helper/coookie.ts rename to react-ui/src/shared/helper/coookie.ts diff --git a/react-ui/src/utils/icons/icons.ts b/react-ui/src/shared/icons/icons.ts similarity index 100% rename from react-ui/src/utils/icons/icons.ts rename to react-ui/src/shared/icons/icons.ts diff --git a/react-ui/src/utils/layouts/basic.layout.tsx b/react-ui/src/shared/layouts/basic.layout.tsx similarity index 88% rename from react-ui/src/utils/layouts/basic.layout.tsx rename to react-ui/src/shared/layouts/basic.layout.tsx index 7b7f2b11c..640af3e1b 100644 --- a/react-ui/src/utils/layouts/basic.layout.tsx +++ b/react-ui/src/shared/layouts/basic.layout.tsx @@ -4,11 +4,11 @@ import { useOutlet } from "react-router-dom"; export const BasicLayout = () => { const outlet = useOutlet(); - + return ( <AuthProvider> - {outlet} + {outlet} </AuthProvider> ) } \ No newline at end of file diff --git a/react-ui/src/utils/layouts/login.layout.tsx b/react-ui/src/shared/layouts/login.layout.tsx similarity index 100% rename from react-ui/src/utils/layouts/login.layout.tsx rename to react-ui/src/shared/layouts/login.layout.tsx diff --git a/react-ui/src/utils/layouts/protected.layout/protected.layout.scss b/react-ui/src/shared/layouts/protected.layout/protected.layout.scss similarity index 100% rename from react-ui/src/utils/layouts/protected.layout/protected.layout.scss rename to react-ui/src/shared/layouts/protected.layout/protected.layout.scss diff --git a/react-ui/src/utils/layouts/protected.layout/protected.layout.tsx b/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx similarity index 98% rename from react-ui/src/utils/layouts/protected.layout/protected.layout.tsx rename to react-ui/src/shared/layouts/protected.layout/protected.layout.tsx index 588491230..faff61c40 100644 --- a/react-ui/src/utils/layouts/protected.layout/protected.layout.tsx +++ b/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx @@ -1,16 +1,16 @@ import logo from '@assets/logo.svg'; import { faCircleUser, faRightFromBracket } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { useAppDispatch, useAppSelector } from '@hooks'; import { useAuth } from "@provider/auth.provider"; +import { fetchPnds } from '@reducer/device.reducer/device.reducer'; +import { fetchUser } from '@reducer/user.reducer'; +import { DEVICE_URL, LOGIN_URL } from '@routes'; import React, { useEffect } from "react"; import { Dropdown } from "react-bootstrap"; import { useTranslation } from "react-i18next"; import { Link, Outlet, useNavigate } from "react-router-dom"; import "./protected.layout.scss"; -import { useAppDispatch, useAppSelector } from '@hooks'; -import { fetchUser } from '@reducer/user.reducer'; -import { fetchPnds } from '@reducer/device.reducer'; -import { DEVICE_URL, LOGIN_URL } from '@routes'; export const ProtectedLayout = () => { diff --git a/react-ui/src/utils/provider/auth.provider.tsx b/react-ui/src/shared/provider/auth.provider.tsx similarity index 100% rename from react-ui/src/utils/provider/auth.provider.tsx rename to react-ui/src/shared/provider/auth.provider.tsx diff --git a/react-ui/src/shared/utils/routine.manager.ts b/react-ui/src/shared/utils/routine.manager.ts new file mode 100644 index 000000000..c86e30d4a --- /dev/null +++ b/react-ui/src/shared/utils/routine.manager.ts @@ -0,0 +1,88 @@ +import { fetchSelectedMneThunk } from '@reducer/device.reducer/mne.subscription'; +import { AsyncThunk } from '@reduxjs/toolkit'; +import { QueryActionCreatorResult } from '@reduxjs/toolkit/query'; +import { fetchDevicesThunk } from '@routine/device.routine'; + +type Routine = QueryActionCreatorResult<any>; + +interface Entity { + routine: Routine, + id: number +} + +const initialState = { + routines: [] as Entity[] +} + +export enum THUNK_KEY { + MNE = 'device/fetch', + DEVICE = 'mne/fetch', +} + +export const RoutineDictionary = new Map<THUNK_KEY,AsyncThunk<any, any, {}>>([ + [THUNK_KEY.DEVICE, fetchDevicesThunk], + [THUNK_KEY.MNE, fetchSelectedMneThunk] +]) + + +/** + * Routine manager is a singleton that holds all running routines. + * The redux store holds any persistable information about the routines. + * The routines objects itself are stored in the RoutineManager. + */ +export const RoutineManager = (() => { + let state = initialState; + const add = (routine: Routine): number => { + const id = state.routines.length; + + const newEntity: Entity = { + routine: routine, + id + } + + state.routines = [...state.routines, newEntity]; + + return id; + } + + + const unsubscribeAll = () => { + state.routines.forEach(({ routine: subscription }) => { + _unsubscribe(subscription) + }); + + state.routines = initialState.routines; + } + + /** + * @param id + * @returns returns true if the routine was stopped, false if it was not found + */ + const unsubscribe = (id: number): boolean => { + const routine = state.routines.find(({ id: routineId }) => routineId === id); + + if (routine) { + _unsubscribe(routine.routine); + } + + return !!routine; + } + + /** + * Actual unsubscribe process. + * This process is extracted to have a single process of unsubscribing. + * + * @param subscription + */ + const _unsubscribe = (subscription: Routine) => { + subscription.unsubscribe(); + // TODO remove from state + } + + + return { + add, + unsubscribe, + unsubscribeAll + } +})(); \ No newline at end of file diff --git a/react-ui/src/stores/index.ts b/react-ui/src/stores/index.ts index 8d2be362f..1b3c3335e 100644 --- a/react-ui/src/stores/index.ts +++ b/react-ui/src/stores/index.ts @@ -1,6 +1,6 @@ import { configureStore } from '@reduxjs/toolkit' import { setupListeners } from '@reduxjs/toolkit/query' -import { FETCH_DEVICE_ACTION, FETCH_MNE_ACTION } from '@subscription/action.subscription' +import { FETCH_DEVICE_ACTION, FETCH_MNE_ACTION } from '@routine/action.routine' import { FLUSH, PAUSE, PERSIST, PURGE, REGISTER, REHYDRATE } from 'redux-persist' import persistStore from 'redux-persist/es/persistStore' import { emptySplitApi } from './api.store' @@ -14,7 +14,7 @@ export const store = configureStore({ middleware: (getDefaultMiddleware) => getDefaultMiddleware({ serializableCheck: { - ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER, FETCH_DEVICE_ACTION + '/fulfilled', FETCH_MNE_ACTION + '/fulfilled'], + ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER, FETCH_DEVICE_ACTION + '/fulfilled', FETCH_MNE_ACTION + '/fulfilled', 'routine/addRoutine'], }, }).prepend(listenerMiddleware.middleware).concat(emptySplitApi.middleware, rtkQueryErrorLogger), }) diff --git a/react-ui/src/stores/persist.store.ts b/react-ui/src/stores/persist.store.ts index f14de1bd7..65ade7d3e 100644 --- a/react-ui/src/stores/persist.store.ts +++ b/react-ui/src/stores/persist.store.ts @@ -1,5 +1,5 @@ -import deviceReducer from "@reducer/device.reducer"; -import subscriptionReducer from "@reducer/subscription.reducer"; +import deviceReducer from "@reducer/device.reducer/device.reducer"; +import routineReducer from "@reducer/routine.reducer"; import userReducer from "@reducer/user.reducer"; import { combineReducers } from "redux"; import { persistReducer } from "redux-persist"; @@ -18,7 +18,7 @@ const rootPersistConfig = { const rootReducer = combineReducers({ user: userReducer, device: deviceReducer, - subscription: subscriptionReducer, + routine: routineReducer, [emptySplitApi.reducerPath]: emptySplitApi.reducer, }) diff --git a/react-ui/src/stores/reducer/device.reducer.ts b/react-ui/src/stores/reducer/device.reducer/device.reducer.ts similarity index 97% rename from react-ui/src/stores/reducer/device.reducer.ts rename to react-ui/src/stores/reducer/device.reducer/device.reducer.ts index 5919062d2..9f21bcbeb 100644 --- a/react-ui/src/stores/reducer/device.reducer.ts +++ b/react-ui/src/stores/reducer/device.reducer/device.reducer.ts @@ -1,7 +1,6 @@ import { api, NetworkelementFlattenedManagedNetworkElement, NetworkelementManagedNetworkElement, PndPrincipalNetworkDomain, PndServiceGetPndListApiArg } from '@api/api'; import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit'; import { DeviceViewTabValues } from '@view/device/device.view.tabs'; -import { startListening } from '../middleware/listener.middleware'; export type Device = NetworkelementFlattenedManagedNetworkElement; diff --git a/react-ui/src/components/subscriptions/mne.subscription.ts b/react-ui/src/stores/reducer/device.reducer/mne.subscription.ts similarity index 75% rename from react-ui/src/components/subscriptions/mne.subscription.ts rename to react-ui/src/stores/reducer/device.reducer/mne.subscription.ts index b2b036007..d84e7c5a5 100644 --- a/react-ui/src/components/subscriptions/mne.subscription.ts +++ b/react-ui/src/stores/reducer/device.reducer/mne.subscription.ts @@ -1,17 +1,17 @@ import { api, NetworkElementServiceGetApiArg } from "@api/api"; -import { Device, setSelectedDevice, setSelectedMne } from "@reducer/device.reducer"; -import { CATEGORIES, triggerSubscription } from "@reducer/subscription.reducer"; +import { Device, setSelectedDevice, setSelectedMne } from "@reducer/device.reducer/device.reducer"; +import { addRoutine, CATEGORIES } from "@reducer/routine.reducer"; import { createAsyncThunk } from "@reduxjs/toolkit"; +import { THUNK_KEY } from "@utils/routine.manager"; import { RootState } from "src/stores"; -import { THUNK_TYPE } from "."; -import { startListening } from "../../../src/stores/middleware/listener.middleware"; -import { FETCH_MNE_ACTION } from "./action.subscription"; +import { FETCH_MNE_ACTION } from "../../../components/routines/action.routine"; +import { startListening } from "../../middleware/listener.middleware"; // fetch mne if selected device is set startListening({ predicate: (action) => setSelectedDevice.match(action) && !!action.payload, effect: async (action, listenerApi) => { - listenerApi.dispatch(triggerSubscription({category: CATEGORIES.TAB, thunkType: THUNK_TYPE.MNE, payload: action.payload})); + listenerApi.dispatch(addRoutine({category: CATEGORIES.TAB, thunkKey: THUNK_KEY.MNE, payload: action.payload})); }, }) diff --git a/react-ui/src/stores/reducer/subscription.reducer.ts b/react-ui/src/stores/reducer/routine.reducer.ts similarity index 51% rename from react-ui/src/stores/reducer/subscription.reducer.ts rename to react-ui/src/stores/reducer/routine.reducer.ts index 344b42d25..85ddd7b2b 100644 --- a/react-ui/src/stores/reducer/subscription.reducer.ts +++ b/react-ui/src/stores/reducer/routine.reducer.ts @@ -1,14 +1,14 @@ import { PayloadAction, createSlice } from '@reduxjs/toolkit'; -import { SubscriptionThunks, THUNK_TYPE } from '@subscription/index'; +import { RoutineDictionary, RoutineManager, THUNK_KEY } from '@utils/routine.manager'; +import { REHYDRATE } from 'redux-persist'; import { RootState } from '..'; -import { SubscriptionHandler } from '../../utils/api/subscription.handler'; import { startListening } from '../middleware/listener.middleware'; import { setToken } from './user.reducer'; interface ThunkEntityDTO { - thunkType: THUNK_TYPE, + thunkKey: THUNK_KEY, payload: any /** @@ -19,11 +19,11 @@ interface ThunkEntityDTO { interface ThunkEntity extends ThunkEntityDTO { id?: number, - locked: boolean + locked: boolean, } -export interface SubscriptionReducerState { +export interface ReducerState { thunks: {[key in keyof typeof CATEGORIES]: ThunkEntity | null} } @@ -32,18 +32,18 @@ export enum CATEGORIES { TAB } -const initialState: SubscriptionReducerState = { +const initialState: ReducerState = { thunks: { TABLE: null, TAB: null } } -const SubscriptionSlice = createSlice({ - name: 'subscription', +const RoutineSlice = createSlice({ + name: 'routine', initialState, reducers: { - triggerSubscription: (state, {payload}: PayloadAction<ThunkEntityDTO>) => { + addRoutine: (state, {payload}: PayloadAction<ThunkEntityDTO>) => { const newThunk: ThunkEntity = {...payload, locked: true}; state.thunks[CATEGORIES[payload.category]] = newThunk; }, @@ -60,51 +60,67 @@ const SubscriptionSlice = createSlice({ }, removeAll: (state) => { - SubscriptionHandler.unsubscribeAll() + RoutineManager.unsubscribeAll() state.thunks = initialState.thunks; }, }, }) -export const { triggerSubscription } = SubscriptionSlice.actions +export const { addRoutine } = RoutineSlice.actions -// on logout remove all subscriptions +// on logout remove all routine startListening({ predicate: (action) => setToken.match(action) && action.payload.token === null, effect: async (_, listenerApi) => { - listenerApi.dispatch(SubscriptionSlice.actions.removeAll()); + listenerApi.dispatch(RoutineSlice.actions.removeAll()); }, }) +// on rehydrate add all persistet routines +startListening({ + predicate: ({type}) => type === REHYDRATE, + effect: async (_, listenerApi) => { + const {routine} = listenerApi.getState() as RootState; + for (const [_,thunk] of Object.entries<ThunkEntity>(routine.thunks)) { + if (!thunk) { + return; + } + + const dto: ThunkEntityDTO = thunk; + listenerApi.dispatch(addRoutine(dto)); + } + }, +}) -// unsubscribe old subscription +// unsubscribe old routine startListening({ - predicate: (action) => triggerSubscription.match(action), + predicate: (action) => addRoutine.match(action), effect: async (action, listenerApi) => { - const {subscription} = listenerApi.getOriginalState() as RootState; - const lastThunk = subscription.thunks[CATEGORIES[action.payload.category]]; - SubscriptionHandler.unsubscribe(lastThunk.id); + const {routine} = listenerApi.getOriginalState() as RootState; + const lastThunk = routine.thunks[CATEGORIES[action.payload.category]]; + if (lastThunk) { + RoutineManager.unsubscribe(lastThunk.id); + } }, }) -// add new subscription +// add new routine startListening({ - predicate: (action) => triggerSubscription.match(action), + predicate: (action) => addRoutine.match(action), effect: async (action, listenerApi) => { - const {thunkType} = action.payload as ThunkEntity; + const {thunkKey} = action.payload as ThunkEntity; - const {thunkFn} = SubscriptionThunks.find(({type}) => type === thunkType); + const thunkFn = RoutineDictionary.get(thunkKey); if (!thunkFn) { // TODO throw new Error('Thunk not found'); } const subscription = await listenerApi.dispatch(thunkFn(action.payload.payload)); - const thunkId = await SubscriptionHandler.add(subscription.payload); - listenerApi.dispatch(SubscriptionSlice.actions.setThunkId({id: thunkId, category: action.payload.category})); - + const thunkId = await RoutineManager.add(subscription.payload); + listenerApi.dispatch(RoutineSlice.actions.setThunkId({id: thunkId, category: action.payload.category})); }, }) -export default SubscriptionSlice.reducer +export default RoutineSlice.reducer diff --git a/react-ui/src/utils/api/subscription.handler.ts b/react-ui/src/utils/api/subscription.handler.ts deleted file mode 100644 index e065879f0..000000000 --- a/react-ui/src/utils/api/subscription.handler.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { QueryActionCreatorResult } from '@reduxjs/toolkit/query'; - -type Subscription = QueryActionCreatorResult<any>; - -interface Entity { - subscription: Subscription, - id: number -} - - -const initialState = { - subscriptions: [] as Entity[] -} - -export const SubscriptionHandler = (() => { - let state = initialState; - const add = (subscription: Subscription): number => { - const id = state.subscriptions.length; - - const subscriptionEntity: Entity = { - subscription, - id - } - - state.subscriptions = [...state.subscriptions, subscriptionEntity]; - - return id; - } - - - const unsubscribeAll = () => { - state.subscriptions.forEach(({ subscription }) => { - unsubscribeAction(subscription) - }); - - state.subscriptions = initialState.subscriptions; - } - - /** - * @param id - * @returns returns true if the subscription was stopped, false if it was not found - */ - const unsubscribe = (id: number): boolean => { - const subscription = state.subscriptions.find(({ id: subscriptionId }) => subscriptionId === id); - - if (subscription) { - unsubscribeAction(subscription.subscription); - } - - return !!subscription; - } - - /** - * Actual unsubscribe action - * - * @param subscription - */ - const unsubscribeAction = (subscription: Subscription) => { - subscription.unsubscribe(); - } - - - return { - add, - unsubscribe, - unsubscribeAll - } -})(); \ No newline at end of file diff --git a/react-ui/tsconfig.json b/react-ui/tsconfig.json index 41c9c8f66..6bd0a18b7 100644 --- a/react-ui/tsconfig.json +++ b/react-ui/tsconfig.json @@ -23,17 +23,18 @@ "baseUrl": ".", "paths": { "@assets/*": ["assets/*"], - "@api/*": ["src/utils/api/*"], + "@api/*": ["src/shared/api/*"], "@viewmodel/*": ["src/components/view_model/*"], "@view/*": ["src/components/view/*"], "@reducer/*": ["src/stores/reducer/*"], - "@provider/*": ["src/utils/provider/*"], - "@layout/*": ["src/utils/layouts/*"], + "@provider/*": ["src/shared/provider/*"], + "@layout/*": ["src/shared/layouts/*"], "@hooks": ["src/hooks"], "@routes": ["src/routes.tsx"], - "@task/*": ["src/utils/tasks/*"], - "@helper/*": ["src/utils/helper/*"], - "@subscription/*": ["src/components/subscriptions/*"] + "@task/*": ["src/shared/tasks/*"], + "@helper/*": ["src/shared/helper/*"], + "@routine/*": ["src/components/routines/*"], + "@utils/*": ["src/shared/utils/*"] } }, "include": [ diff --git a/react-ui/vite.config.mjs b/react-ui/vite.config.mjs index 96be1c844..d36e8cf3a 100644 --- a/react-ui/vite.config.mjs +++ b/react-ui/vite.config.mjs @@ -36,17 +36,18 @@ export default defineConfig({ resolve: { alias: { '@assets': '/assets', - '@api': '/src/utils/api', + '@api': '/src/shared/api', '@viewmodel': '/src/components/view_model', '@view': '/src/components/view', '@reducer': '/src/stores/reducer', - '@provider': '/src/utils/provider', - '@layout': '/src/utils/layouts', + '@provider': '/src/shared/provider', + '@layout': '/src/shared/layouts', '@hooks': '/src/hooks.ts', - '@task': '/src/utils/tasks', - '@helper': '/src/utils/helper', + '@task': '/src/shared/tasks', + '@helper': '/src/shared/helper', '@routes': '/src/routes.tsx', - '@subscription': '/src/components/subscriptions', + '@routine': '/src/components/routines', + '@utils': '/src/shared/utils', }, }, -- GitLab From 357cbb557eedbc925f7e2f5e08d294608e63b13b Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Tue, 1 Oct 2024 13:11:05 +0200 Subject: [PATCH 28/44] refactor login to component --- .../login}/layouts/login.layout.tsx | 2 +- .../{view/login => login/view}/login.scss | 0 .../{view/login => login/view}/login.view.tsx | 2 +- .../viewmodel}/login.viewmodel.ts | 0 .../src/components/routines/device.routine.ts | 2 +- react-ui/src/components/view/device/device.scss | 15 ++++++--------- .../components/view/device/device.view.table.tsx | 2 +- .../src/components/view/device/device.view.tsx | 2 +- react-ui/src/index.scss | 11 +++++------ react-ui/src/routes.tsx | 4 ++-- .../protected.layout/protected.layout.scss | 6 +++--- .../layouts/protected.layout/protected.layout.tsx | 2 +- react-ui/src/shared/provider/auth.provider.tsx | 2 +- .../reducer => shared/store}/user.reducer.ts | 0 react-ui/src/{ => shared}/style/box.scss | 0 react-ui/src/{ => shared}/style/colors.scss | 0 react-ui/src/{ => shared}/style/fonts.scss | 0 react-ui/src/{ => shared}/style/index.scss | 0 react-ui/src/{ => shared}/style/toast.scss | 0 react-ui/src/{ => shared}/style/utils.scss | 0 react-ui/src/shared/utils/routine.manager.ts | 2 +- react-ui/src/stores/index.ts | 2 +- react-ui/src/stores/persist.store.ts | 2 +- .../reducer/device.reducer/device.reducer.ts | 2 +- react-ui/src/stores/reducer/routine.reducer.ts | 2 +- react-ui/tsconfig.json | 7 +++---- react-ui/vite.config.mjs | 5 ++--- 27 files changed, 33 insertions(+), 39 deletions(-) rename react-ui/src/{shared => components/login}/layouts/login.layout.tsx (92%) rename react-ui/src/components/{view/login => login/view}/login.scss (100%) rename react-ui/src/components/{view/login => login/view}/login.view.tsx (98%) rename react-ui/src/components/{view_model => login/viewmodel}/login.viewmodel.ts (100%) rename react-ui/src/{stores/reducer => shared/store}/user.reducer.ts (100%) rename react-ui/src/{ => shared}/style/box.scss (100%) rename react-ui/src/{ => shared}/style/colors.scss (100%) rename react-ui/src/{ => shared}/style/fonts.scss (100%) rename react-ui/src/{ => shared}/style/index.scss (100%) rename react-ui/src/{ => shared}/style/toast.scss (100%) rename react-ui/src/{ => shared}/style/utils.scss (100%) diff --git a/react-ui/src/shared/layouts/login.layout.tsx b/react-ui/src/components/login/layouts/login.layout.tsx similarity index 92% rename from react-ui/src/shared/layouts/login.layout.tsx rename to react-ui/src/components/login/layouts/login.layout.tsx index 43e40aa30..323941a67 100644 --- a/react-ui/src/shared/layouts/login.layout.tsx +++ b/react-ui/src/components/login/layouts/login.layout.tsx @@ -1,7 +1,7 @@ import { useAuth } from "@provider/auth.provider"; -import LoginView from "@view/login/login.view"; import { useEffect } from "react"; import { useNavigate, useOutlet } from "react-router-dom"; +import LoginView from "../view/login.view"; export const LoginLayout = ({ children }) => { diff --git a/react-ui/src/components/view/login/login.scss b/react-ui/src/components/login/view/login.scss similarity index 100% rename from react-ui/src/components/view/login/login.scss rename to react-ui/src/components/login/view/login.scss diff --git a/react-ui/src/components/view/login/login.view.tsx b/react-ui/src/components/login/view/login.view.tsx similarity index 98% rename from react-ui/src/components/view/login/login.view.tsx rename to react-ui/src/components/login/view/login.view.tsx index 405a42f84..0db0ea206 100644 --- a/react-ui/src/components/view/login/login.view.tsx +++ b/react-ui/src/components/login/view/login.view.tsx @@ -3,8 +3,8 @@ import { useTranslation } from 'react-i18next' import './login.scss' import logo from '@assets/logo.svg' -import useLoginViewModel from '@viewmodel/login.viewmodel' import React, { useRef } from 'react' +import useLoginViewModel from '../viewmodel/login.viewmodel' const LoginView = ({ children }) => { const { t } = useTranslation('common') diff --git a/react-ui/src/components/view_model/login.viewmodel.ts b/react-ui/src/components/login/viewmodel/login.viewmodel.ts similarity index 100% rename from react-ui/src/components/view_model/login.viewmodel.ts rename to react-ui/src/components/login/viewmodel/login.viewmodel.ts diff --git a/react-ui/src/components/routines/device.routine.ts b/react-ui/src/components/routines/device.routine.ts index 0290f637d..7cafd91b7 100644 --- a/react-ui/src/components/routines/device.routine.ts +++ b/react-ui/src/components/routines/device.routine.ts @@ -1,7 +1,7 @@ import { NetworkElementServiceGetAllFlattenedApiArg, api } from "@api/api"; import { setDevices } from "@reducer/device.reducer/device.reducer"; -import { setUser } from "@reducer/user.reducer"; import { createAsyncThunk } from "@reduxjs/toolkit"; +import { setUser } from "@shared/store/user.reducer"; import { RootState } from "src/stores"; import { startListening } from "../../stores/middleware/listener.middleware"; import { FETCH_DEVICE_ACTION } from "./action.routine"; diff --git a/react-ui/src/components/view/device/device.scss b/react-ui/src/components/view/device/device.scss index d24b08084..0890fc928 100644 --- a/react-ui/src/components/view/device/device.scss +++ b/react-ui/src/components/view/device/device.scss @@ -1,25 +1,22 @@ -@import '../../../style/colors.scss'; +@import '/src/shared/style/colors.scss'; thead { font-size: 0.9em; } -tr:hover > td { +tr:hover > td { background-color: lighten(map-get($theme-colors, primary), 30%) !important; } -tr:nth-child(2n+1) > td { - background-color: lighten(map-get($theme-colors, primary) , 38%) +tr:nth-child(2n + 1) > td { + background-color: lighten(map-get($theme-colors, primary), 38%); } .c-box { padding: 2em !important; padding-top: 1em !important; - } - - .border-right { $border-padding: 2em; @@ -39,7 +36,7 @@ tr:nth-child(2n+1) > td { &:hover { color: lighten(map-get($theme-colors, primary), 10%); } - + &:focus { border: none !important; color: lighten(map-get($theme-colors, primary), 10%); @@ -49,4 +46,4 @@ tr:nth-child(2n+1) > td { color: map-get($theme-colors, primary); font-weight: 500; } -} \ No newline at end of file +} diff --git a/react-ui/src/components/view/device/device.view.table.tsx b/react-ui/src/components/view/device/device.view.table.tsx index 17d4bfd25..16c9c7730 100644 --- a/react-ui/src/components/view/device/device.view.table.tsx +++ b/react-ui/src/components/view/device/device.view.table.tsx @@ -1,8 +1,8 @@ import { useAppSelector } from "@hooks"; -import { useDeviceTableViewModel } from "@viewmodel/device.table.viewmodel"; import { MutableRefObject, useCallback } from "react"; import { OverlayTrigger, Table, Tooltip } from "react-bootstrap"; import { useTranslation } from "react-i18next"; +import { useDeviceTableViewModel } from "../../view_model/device.table.viewmodel"; export const DeviceViewTable = (searchRef: MutableRefObject<HTMLInputElement>) => { const { devices, pnds } = useAppSelector(state => state.device); diff --git a/react-ui/src/components/view/device/device.view.tsx b/react-ui/src/components/view/device/device.view.tsx index c85ce6be6..c620636bf 100644 --- a/react-ui/src/components/view/device/device.view.tsx +++ b/react-ui/src/components/view/device/device.view.tsx @@ -1,10 +1,10 @@ -import { useDeviceViewModel } from '@viewmodel/device.viewmodel'; import { useRef } from 'react'; import { Button, Col, Container, Form, Nav, NavLink, Row } from 'react-bootstrap'; import { useTranslation } from 'react-i18next'; import './device.scss'; import { DeviceViewTable } from './device.view.table'; import { DeviceViewTabs, DeviceViewTabValues } from './device.view.tabs'; +import { useDeviceViewModel } from '/src/components/view_model/device.viewmodel'; function DeviceView() { const { t } = useTranslation('common'); diff --git a/react-ui/src/index.scss b/react-ui/src/index.scss index 3526e18bc..8dd280e64 100644 --- a/react-ui/src/index.scss +++ b/react-ui/src/index.scss @@ -1,10 +1,9 @@ -@import './style/index.scss'; +@import './shared/style/index.scss'; body { - margin: 0; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; + margin: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; - - background-color: map-get($theme-colors, bg-primary) !important; + background-color: map-get($theme-colors, bg-primary) !important; } diff --git a/react-ui/src/routes.tsx b/react-ui/src/routes.tsx index a63d6d875..1015d87af 100644 --- a/react-ui/src/routes.tsx +++ b/react-ui/src/routes.tsx @@ -1,8 +1,8 @@ import { BasicLayout } from "@layout/basic.layout"; -import { LoginLayout } from "@layout/login.layout"; import { ProtectedLayout } from "@layout/protected.layout/protected.layout"; -import DeviceView from "@view/device/device.view"; import { createBrowserRouter, createRoutesFromElements, Navigate, Route } from "react-router-dom"; +import { LoginLayout } from "./components/login/layouts/login.layout"; +import DeviceView from "./components/view/device/device.view"; export const DEVICE_URL = '/device/'; export const LOGIN_URL = '/login'; diff --git a/react-ui/src/shared/layouts/protected.layout/protected.layout.scss b/react-ui/src/shared/layouts/protected.layout/protected.layout.scss index 47561615d..ffc4acf0d 100644 --- a/react-ui/src/shared/layouts/protected.layout/protected.layout.scss +++ b/react-ui/src/shared/layouts/protected.layout/protected.layout.scss @@ -1,4 +1,4 @@ -@import "/src/style/colors.scss"; +@import '/src/shared/style/colors.scss'; $sidebar-width: 4.5em; @@ -12,7 +12,7 @@ $sidebar-width: 4.5em; color: map-get($theme-colors, primary); font-weight: 600; } - + &.active { color: map-get($theme-colors, primary); font-weight: 600; @@ -26,4 +26,4 @@ $sidebar-width: 4.5em; .main-content { margin-left: $sidebar-width; -} \ No newline at end of file +} diff --git a/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx b/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx index faff61c40..020389984 100644 --- a/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx +++ b/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx @@ -4,8 +4,8 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { useAppDispatch, useAppSelector } from '@hooks'; import { useAuth } from "@provider/auth.provider"; import { fetchPnds } from '@reducer/device.reducer/device.reducer'; -import { fetchUser } from '@reducer/user.reducer'; import { DEVICE_URL, LOGIN_URL } from '@routes'; +import { fetchUser } from '@shared/store/user.reducer'; import React, { useEffect } from "react"; import { Dropdown } from "react-bootstrap"; import { useTranslation } from "react-i18next"; diff --git a/react-ui/src/shared/provider/auth.provider.tsx b/react-ui/src/shared/provider/auth.provider.tsx index d1f472cc7..b6bde9262 100644 --- a/react-ui/src/shared/provider/auth.provider.tsx +++ b/react-ui/src/shared/provider/auth.provider.tsx @@ -1,11 +1,11 @@ import { AuthServiceLoginApiArg, AuthServiceLoginApiResponse, useAuthServiceLoginMutation } from "@api/api"; import { getCookieValue } from "@helper/coookie"; import { useAppDispatch, useAppSelector } from "@hooks"; -import { setToken } from "@reducer/user.reducer"; import { DEVICE_URL, LOGIN_URL } from "@routes"; import { jwtDecode } from "jwt-decode"; import { createContext, useContext, useEffect, useMemo } from "react"; import { useNavigate } from "react-router-dom"; +import { setToken } from "../store/user.reducer"; interface AuthProviderType { login: (username: string, password: string) => void, diff --git a/react-ui/src/stores/reducer/user.reducer.ts b/react-ui/src/shared/store/user.reducer.ts similarity index 100% rename from react-ui/src/stores/reducer/user.reducer.ts rename to react-ui/src/shared/store/user.reducer.ts diff --git a/react-ui/src/style/box.scss b/react-ui/src/shared/style/box.scss similarity index 100% rename from react-ui/src/style/box.scss rename to react-ui/src/shared/style/box.scss diff --git a/react-ui/src/style/colors.scss b/react-ui/src/shared/style/colors.scss similarity index 100% rename from react-ui/src/style/colors.scss rename to react-ui/src/shared/style/colors.scss diff --git a/react-ui/src/style/fonts.scss b/react-ui/src/shared/style/fonts.scss similarity index 100% rename from react-ui/src/style/fonts.scss rename to react-ui/src/shared/style/fonts.scss diff --git a/react-ui/src/style/index.scss b/react-ui/src/shared/style/index.scss similarity index 100% rename from react-ui/src/style/index.scss rename to react-ui/src/shared/style/index.scss diff --git a/react-ui/src/style/toast.scss b/react-ui/src/shared/style/toast.scss similarity index 100% rename from react-ui/src/style/toast.scss rename to react-ui/src/shared/style/toast.scss diff --git a/react-ui/src/style/utils.scss b/react-ui/src/shared/style/utils.scss similarity index 100% rename from react-ui/src/style/utils.scss rename to react-ui/src/shared/style/utils.scss diff --git a/react-ui/src/shared/utils/routine.manager.ts b/react-ui/src/shared/utils/routine.manager.ts index c86e30d4a..449e2c690 100644 --- a/react-ui/src/shared/utils/routine.manager.ts +++ b/react-ui/src/shared/utils/routine.manager.ts @@ -1,7 +1,7 @@ +import { fetchDevicesThunk } from '@component/routines/device.routine'; import { fetchSelectedMneThunk } from '@reducer/device.reducer/mne.subscription'; import { AsyncThunk } from '@reduxjs/toolkit'; import { QueryActionCreatorResult } from '@reduxjs/toolkit/query'; -import { fetchDevicesThunk } from '@routine/device.routine'; type Routine = QueryActionCreatorResult<any>; diff --git a/react-ui/src/stores/index.ts b/react-ui/src/stores/index.ts index 1b3c3335e..f620923b5 100644 --- a/react-ui/src/stores/index.ts +++ b/react-ui/src/stores/index.ts @@ -1,12 +1,12 @@ import { configureStore } from '@reduxjs/toolkit' import { setupListeners } from '@reduxjs/toolkit/query' -import { FETCH_DEVICE_ACTION, FETCH_MNE_ACTION } from '@routine/action.routine' import { FLUSH, PAUSE, PERSIST, PURGE, REGISTER, REHYDRATE } from 'redux-persist' import persistStore from 'redux-persist/es/persistStore' import { emptySplitApi } from './api.store' import { rtkQueryErrorLogger } from './middleware/devLogging.middleware' import { listenerMiddleware } from './middleware/listener.middleware' import persistedReducer from './persist.store' +import { FETCH_DEVICE_ACTION, FETCH_MNE_ACTION } from '/src/components/routines/action.routine' export const store = configureStore({ diff --git a/react-ui/src/stores/persist.store.ts b/react-ui/src/stores/persist.store.ts index 65ade7d3e..d66bcf930 100644 --- a/react-ui/src/stores/persist.store.ts +++ b/react-ui/src/stores/persist.store.ts @@ -1,10 +1,10 @@ import deviceReducer from "@reducer/device.reducer/device.reducer"; import routineReducer from "@reducer/routine.reducer"; -import userReducer from "@reducer/user.reducer"; import { combineReducers } from "redux"; import { persistReducer } from "redux-persist"; import storage from "redux-persist/es/storage"; import { emptySplitApi } from "./api.store"; +import userReducer from "/src/shared/store/user.reducer"; /** local storage config */ diff --git a/react-ui/src/stores/reducer/device.reducer/device.reducer.ts b/react-ui/src/stores/reducer/device.reducer/device.reducer.ts index 9f21bcbeb..c9388adc5 100644 --- a/react-ui/src/stores/reducer/device.reducer/device.reducer.ts +++ b/react-ui/src/stores/reducer/device.reducer/device.reducer.ts @@ -1,6 +1,6 @@ import { api, NetworkelementFlattenedManagedNetworkElement, NetworkelementManagedNetworkElement, PndPrincipalNetworkDomain, PndServiceGetPndListApiArg } from '@api/api'; +import { DeviceViewTabValues } from '@component/view/device/device.view.tabs'; import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit'; -import { DeviceViewTabValues } from '@view/device/device.view.tabs'; export type Device = NetworkelementFlattenedManagedNetworkElement; diff --git a/react-ui/src/stores/reducer/routine.reducer.ts b/react-ui/src/stores/reducer/routine.reducer.ts index 85ddd7b2b..79e7c8683 100644 --- a/react-ui/src/stores/reducer/routine.reducer.ts +++ b/react-ui/src/stores/reducer/routine.reducer.ts @@ -1,9 +1,9 @@ import { PayloadAction, createSlice } from '@reduxjs/toolkit'; +import { setToken } from '@shared/store/user.reducer'; import { RoutineDictionary, RoutineManager, THUNK_KEY } from '@utils/routine.manager'; import { REHYDRATE } from 'redux-persist'; import { RootState } from '..'; import { startListening } from '../middleware/listener.middleware'; -import { setToken } from './user.reducer'; diff --git a/react-ui/tsconfig.json b/react-ui/tsconfig.json index 6bd0a18b7..6cfd61712 100644 --- a/react-ui/tsconfig.json +++ b/react-ui/tsconfig.json @@ -24,8 +24,6 @@ "paths": { "@assets/*": ["assets/*"], "@api/*": ["src/shared/api/*"], - "@viewmodel/*": ["src/components/view_model/*"], - "@view/*": ["src/components/view/*"], "@reducer/*": ["src/stores/reducer/*"], "@provider/*": ["src/shared/provider/*"], "@layout/*": ["src/shared/layouts/*"], @@ -33,8 +31,9 @@ "@routes": ["src/routes.tsx"], "@task/*": ["src/shared/tasks/*"], "@helper/*": ["src/shared/helper/*"], - "@routine/*": ["src/components/routines/*"], - "@utils/*": ["src/shared/utils/*"] + "@utils/*": ["src/shared/utils/*"], + "@shared/*": ["src/shared/*"], + "@component/*": ["src/components/*"] } }, "include": [ diff --git a/react-ui/vite.config.mjs b/react-ui/vite.config.mjs index d36e8cf3a..bdff7502a 100644 --- a/react-ui/vite.config.mjs +++ b/react-ui/vite.config.mjs @@ -37,8 +37,6 @@ export default defineConfig({ alias: { '@assets': '/assets', '@api': '/src/shared/api', - '@viewmodel': '/src/components/view_model', - '@view': '/src/components/view', '@reducer': '/src/stores/reducer', '@provider': '/src/shared/provider', '@layout': '/src/shared/layouts', @@ -46,8 +44,9 @@ export default defineConfig({ '@task': '/src/shared/tasks', '@helper': '/src/shared/helper', '@routes': '/src/routes.tsx', - '@routine': '/src/components/routines', '@utils': '/src/shared/utils', + '@shared': '/src/shared', + '@component': '/src/components', }, }, -- GitLab From 6713240aec6f8fb06eb84bb36cde72f6b9825a38 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Tue, 1 Oct 2024 13:23:28 +0200 Subject: [PATCH 29/44] refactor device to component --- .../devices/reducer}/device.reducer.ts | 2 +- .../devices/reducer}/mne.subscription.ts | 8 ++++---- .../components/{ => devices}/routines/action.routine.ts | 0 .../components/{ => devices}/routines/device.routine.ts | 6 +++--- .../components/{view/device => devices/view}/device.scss | 0 .../{view/device => devices/view}/device.view.table.tsx | 2 +- .../{view/device => devices/view}/device.view.tabs.tsx | 0 .../{view/device => devices/view}/device.view.tsx | 2 +- .../{ => devices}/view_model/device.table.viewmodel.ts | 2 +- .../{ => devices}/view_model/device.viewmodel.ts | 2 +- react-ui/src/routes.tsx | 2 +- .../shared/layouts/protected.layout/protected.layout.tsx | 4 ++-- react-ui/src/shared/provider/auth.provider.tsx | 2 +- .../src/{stores => shared}/reducer/routine.reducer.ts | 7 +++---- react-ui/src/shared/{store => reducer}/user.reducer.ts | 0 react-ui/src/shared/utils/routine.manager.ts | 4 ++-- react-ui/src/stores/index.ts | 2 +- react-ui/src/stores/persist.store.ts | 6 +++--- 18 files changed, 25 insertions(+), 26 deletions(-) rename react-ui/src/{stores/reducer/device.reducer => components/devices/reducer}/device.reducer.ts (96%) rename react-ui/src/{stores/reducer/device.reducer => components/devices/reducer}/mne.subscription.ts (81%) rename react-ui/src/components/{ => devices}/routines/action.routine.ts (100%) rename react-ui/src/components/{ => devices}/routines/device.routine.ts (86%) rename react-ui/src/components/{view/device => devices/view}/device.scss (100%) rename react-ui/src/components/{view/device => devices/view}/device.view.table.tsx (96%) rename react-ui/src/components/{view/device => devices/view}/device.view.tabs.tsx (100%) rename react-ui/src/components/{view/device => devices/view}/device.view.tsx (96%) rename react-ui/src/components/{ => devices}/view_model/device.table.viewmodel.ts (91%) rename react-ui/src/components/{ => devices}/view_model/device.viewmodel.ts (86%) rename react-ui/src/{stores => shared}/reducer/routine.reducer.ts (95%) rename react-ui/src/shared/{store => reducer}/user.reducer.ts (100%) diff --git a/react-ui/src/stores/reducer/device.reducer/device.reducer.ts b/react-ui/src/components/devices/reducer/device.reducer.ts similarity index 96% rename from react-ui/src/stores/reducer/device.reducer/device.reducer.ts rename to react-ui/src/components/devices/reducer/device.reducer.ts index c9388adc5..ad702310b 100644 --- a/react-ui/src/stores/reducer/device.reducer/device.reducer.ts +++ b/react-ui/src/components/devices/reducer/device.reducer.ts @@ -1,5 +1,5 @@ import { api, NetworkelementFlattenedManagedNetworkElement, NetworkelementManagedNetworkElement, PndPrincipalNetworkDomain, PndServiceGetPndListApiArg } from '@api/api'; -import { DeviceViewTabValues } from '@component/view/device/device.view.tabs'; +import { DeviceViewTabValues } from '@component/devices/view/device.view.tabs'; import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit'; export type Device = NetworkelementFlattenedManagedNetworkElement; diff --git a/react-ui/src/stores/reducer/device.reducer/mne.subscription.ts b/react-ui/src/components/devices/reducer/mne.subscription.ts similarity index 81% rename from react-ui/src/stores/reducer/device.reducer/mne.subscription.ts rename to react-ui/src/components/devices/reducer/mne.subscription.ts index d84e7c5a5..fec8a0b21 100644 --- a/react-ui/src/stores/reducer/device.reducer/mne.subscription.ts +++ b/react-ui/src/components/devices/reducer/mne.subscription.ts @@ -1,11 +1,11 @@ import { api, NetworkElementServiceGetApiArg } from "@api/api"; -import { Device, setSelectedDevice, setSelectedMne } from "@reducer/device.reducer/device.reducer"; -import { addRoutine, CATEGORIES } from "@reducer/routine.reducer"; +import { Device, setSelectedDevice, setSelectedMne } from "@component/devices/reducer/device.reducer"; import { createAsyncThunk } from "@reduxjs/toolkit"; +import { addRoutine, CATEGORIES } from "@shared/reducer/routine.reducer"; import { THUNK_KEY } from "@utils/routine.manager"; import { RootState } from "src/stores"; -import { FETCH_MNE_ACTION } from "../../../components/routines/action.routine"; -import { startListening } from "../../middleware/listener.middleware"; +import { startListening } from "../../../stores/middleware/listener.middleware"; +import { FETCH_MNE_ACTION } from "../routines/action.routine"; // fetch mne if selected device is set startListening({ diff --git a/react-ui/src/components/routines/action.routine.ts b/react-ui/src/components/devices/routines/action.routine.ts similarity index 100% rename from react-ui/src/components/routines/action.routine.ts rename to react-ui/src/components/devices/routines/action.routine.ts diff --git a/react-ui/src/components/routines/device.routine.ts b/react-ui/src/components/devices/routines/device.routine.ts similarity index 86% rename from react-ui/src/components/routines/device.routine.ts rename to react-ui/src/components/devices/routines/device.routine.ts index 7cafd91b7..2d14e4bf5 100644 --- a/react-ui/src/components/routines/device.routine.ts +++ b/react-ui/src/components/devices/routines/device.routine.ts @@ -1,9 +1,9 @@ import { NetworkElementServiceGetAllFlattenedApiArg, api } from "@api/api"; -import { setDevices } from "@reducer/device.reducer/device.reducer"; +import { setDevices } from "@component/devices/reducer/device.reducer"; import { createAsyncThunk } from "@reduxjs/toolkit"; -import { setUser } from "@shared/store/user.reducer"; +import { setUser } from "@shared/reducer/user.reducer"; import { RootState } from "src/stores"; -import { startListening } from "../../stores/middleware/listener.middleware"; +import { startListening } from "../../../stores/middleware/listener.middleware"; import { FETCH_DEVICE_ACTION } from "./action.routine"; // continously fetch devices diff --git a/react-ui/src/components/view/device/device.scss b/react-ui/src/components/devices/view/device.scss similarity index 100% rename from react-ui/src/components/view/device/device.scss rename to react-ui/src/components/devices/view/device.scss diff --git a/react-ui/src/components/view/device/device.view.table.tsx b/react-ui/src/components/devices/view/device.view.table.tsx similarity index 96% rename from react-ui/src/components/view/device/device.view.table.tsx rename to react-ui/src/components/devices/view/device.view.table.tsx index 16c9c7730..9ef441f17 100644 --- a/react-ui/src/components/view/device/device.view.table.tsx +++ b/react-ui/src/components/devices/view/device.view.table.tsx @@ -2,7 +2,7 @@ import { useAppSelector } from "@hooks"; import { MutableRefObject, useCallback } from "react"; import { OverlayTrigger, Table, Tooltip } from "react-bootstrap"; import { useTranslation } from "react-i18next"; -import { useDeviceTableViewModel } from "../../view_model/device.table.viewmodel"; +import { useDeviceTableViewModel } from "../view_model/device.table.viewmodel"; export const DeviceViewTable = (searchRef: MutableRefObject<HTMLInputElement>) => { const { devices, pnds } = useAppSelector(state => state.device); diff --git a/react-ui/src/components/view/device/device.view.tabs.tsx b/react-ui/src/components/devices/view/device.view.tabs.tsx similarity index 100% rename from react-ui/src/components/view/device/device.view.tabs.tsx rename to react-ui/src/components/devices/view/device.view.tabs.tsx diff --git a/react-ui/src/components/view/device/device.view.tsx b/react-ui/src/components/devices/view/device.view.tsx similarity index 96% rename from react-ui/src/components/view/device/device.view.tsx rename to react-ui/src/components/devices/view/device.view.tsx index c620636bf..9e176ae66 100644 --- a/react-ui/src/components/view/device/device.view.tsx +++ b/react-ui/src/components/devices/view/device.view.tsx @@ -1,10 +1,10 @@ import { useRef } from 'react'; import { Button, Col, Container, Form, Nav, NavLink, Row } from 'react-bootstrap'; import { useTranslation } from 'react-i18next'; +import { useDeviceViewModel } from '../view_model/device.viewmodel'; import './device.scss'; import { DeviceViewTable } from './device.view.table'; import { DeviceViewTabs, DeviceViewTabValues } from './device.view.tabs'; -import { useDeviceViewModel } from '/src/components/view_model/device.viewmodel'; function DeviceView() { const { t } = useTranslation('common'); diff --git a/react-ui/src/components/view_model/device.table.viewmodel.ts b/react-ui/src/components/devices/view_model/device.table.viewmodel.ts similarity index 91% rename from react-ui/src/components/view_model/device.table.viewmodel.ts rename to react-ui/src/components/devices/view_model/device.table.viewmodel.ts index 0802d6b57..df7595328 100644 --- a/react-ui/src/components/view_model/device.table.viewmodel.ts +++ b/react-ui/src/components/devices/view_model/device.table.viewmodel.ts @@ -1,5 +1,5 @@ +import { Device, setSelectedDevice } from "@component/devices/reducer/device.reducer"; import { useAppDispatch } from "@hooks"; -import { Device, setSelectedDevice } from "@reducer/device.reducer/device.reducer"; import { useEffect, useState } from "react"; export const useDeviceTableViewModel = (searchRef) => { diff --git a/react-ui/src/components/view_model/device.viewmodel.ts b/react-ui/src/components/devices/view_model/device.viewmodel.ts similarity index 86% rename from react-ui/src/components/view_model/device.viewmodel.ts rename to react-ui/src/components/devices/view_model/device.viewmodel.ts index 6dd01d07e..cfff6cf9a 100644 --- a/react-ui/src/components/view_model/device.viewmodel.ts +++ b/react-ui/src/components/devices/view_model/device.viewmodel.ts @@ -1,5 +1,5 @@ +import { setActiveTab as setActiveTabState } from "@component/devices/reducer/device.reducer"; import { useAppDispatch, useAppSelector } from "@hooks"; -import { setActiveTab as setActiveTabState } from "@reducer/device.reducer/device.reducer"; import { DeviceViewTabValues } from "@view/device/device.view.tabs"; export const useDeviceViewModel = () => { diff --git a/react-ui/src/routes.tsx b/react-ui/src/routes.tsx index 1015d87af..368df55a4 100644 --- a/react-ui/src/routes.tsx +++ b/react-ui/src/routes.tsx @@ -1,8 +1,8 @@ import { BasicLayout } from "@layout/basic.layout"; import { ProtectedLayout } from "@layout/protected.layout/protected.layout"; import { createBrowserRouter, createRoutesFromElements, Navigate, Route } from "react-router-dom"; +import DeviceView from "./components/devices/view/device.view"; import { LoginLayout } from "./components/login/layouts/login.layout"; -import DeviceView from "./components/view/device/device.view"; export const DEVICE_URL = '/device/'; export const LOGIN_URL = '/login'; diff --git a/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx b/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx index 020389984..03a188796 100644 --- a/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx +++ b/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx @@ -1,11 +1,11 @@ import logo from '@assets/logo.svg'; +import { fetchPnds } from '@component/devices/reducer/device.reducer'; import { faCircleUser, faRightFromBracket } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { useAppDispatch, useAppSelector } from '@hooks'; import { useAuth } from "@provider/auth.provider"; -import { fetchPnds } from '@reducer/device.reducer/device.reducer'; import { DEVICE_URL, LOGIN_URL } from '@routes'; -import { fetchUser } from '@shared/store/user.reducer'; +import { fetchUser } from '@shared/reducer/user.reducer'; import React, { useEffect } from "react"; import { Dropdown } from "react-bootstrap"; import { useTranslation } from "react-i18next"; diff --git a/react-ui/src/shared/provider/auth.provider.tsx b/react-ui/src/shared/provider/auth.provider.tsx index b6bde9262..4098eca5b 100644 --- a/react-ui/src/shared/provider/auth.provider.tsx +++ b/react-ui/src/shared/provider/auth.provider.tsx @@ -5,7 +5,7 @@ import { DEVICE_URL, LOGIN_URL } from "@routes"; import { jwtDecode } from "jwt-decode"; import { createContext, useContext, useEffect, useMemo } from "react"; import { useNavigate } from "react-router-dom"; -import { setToken } from "../store/user.reducer"; +import { setToken } from "../reducer/user.reducer"; interface AuthProviderType { login: (username: string, password: string) => void, diff --git a/react-ui/src/stores/reducer/routine.reducer.ts b/react-ui/src/shared/reducer/routine.reducer.ts similarity index 95% rename from react-ui/src/stores/reducer/routine.reducer.ts rename to react-ui/src/shared/reducer/routine.reducer.ts index 79e7c8683..fb62e5159 100644 --- a/react-ui/src/stores/reducer/routine.reducer.ts +++ b/react-ui/src/shared/reducer/routine.reducer.ts @@ -1,9 +1,9 @@ import { PayloadAction, createSlice } from '@reduxjs/toolkit'; -import { setToken } from '@shared/store/user.reducer'; import { RoutineDictionary, RoutineManager, THUNK_KEY } from '@utils/routine.manager'; import { REHYDRATE } from 'redux-persist'; -import { RootState } from '..'; -import { startListening } from '../middleware/listener.middleware'; +import { RootState } from '../../stores'; +import { startListening } from '../../stores/middleware/listener.middleware'; +import { setToken } from './user.reducer'; @@ -22,7 +22,6 @@ interface ThunkEntity extends ThunkEntityDTO { locked: boolean, } - export interface ReducerState { thunks: {[key in keyof typeof CATEGORIES]: ThunkEntity | null} } diff --git a/react-ui/src/shared/store/user.reducer.ts b/react-ui/src/shared/reducer/user.reducer.ts similarity index 100% rename from react-ui/src/shared/store/user.reducer.ts rename to react-ui/src/shared/reducer/user.reducer.ts diff --git a/react-ui/src/shared/utils/routine.manager.ts b/react-ui/src/shared/utils/routine.manager.ts index 449e2c690..891637fb8 100644 --- a/react-ui/src/shared/utils/routine.manager.ts +++ b/react-ui/src/shared/utils/routine.manager.ts @@ -1,5 +1,5 @@ -import { fetchDevicesThunk } from '@component/routines/device.routine'; -import { fetchSelectedMneThunk } from '@reducer/device.reducer/mne.subscription'; +import { fetchSelectedMneThunk } from '@component/devices/reducer/mne.subscription'; +import { fetchDevicesThunk } from '@component/devices/routines/device.routine'; import { AsyncThunk } from '@reduxjs/toolkit'; import { QueryActionCreatorResult } from '@reduxjs/toolkit/query'; diff --git a/react-ui/src/stores/index.ts b/react-ui/src/stores/index.ts index f620923b5..8c24b8763 100644 --- a/react-ui/src/stores/index.ts +++ b/react-ui/src/stores/index.ts @@ -1,3 +1,4 @@ +import { FETCH_DEVICE_ACTION, FETCH_MNE_ACTION } from '@component/devices/routines/action.routine' import { configureStore } from '@reduxjs/toolkit' import { setupListeners } from '@reduxjs/toolkit/query' import { FLUSH, PAUSE, PERSIST, PURGE, REGISTER, REHYDRATE } from 'redux-persist' @@ -6,7 +7,6 @@ import { emptySplitApi } from './api.store' import { rtkQueryErrorLogger } from './middleware/devLogging.middleware' import { listenerMiddleware } from './middleware/listener.middleware' import persistedReducer from './persist.store' -import { FETCH_DEVICE_ACTION, FETCH_MNE_ACTION } from '/src/components/routines/action.routine' export const store = configureStore({ diff --git a/react-ui/src/stores/persist.store.ts b/react-ui/src/stores/persist.store.ts index d66bcf930..bda77de7e 100644 --- a/react-ui/src/stores/persist.store.ts +++ b/react-ui/src/stores/persist.store.ts @@ -1,10 +1,10 @@ -import deviceReducer from "@reducer/device.reducer/device.reducer"; -import routineReducer from "@reducer/routine.reducer"; +import deviceReducer from "@component/devices/reducer/device.reducer"; +import routineReducer from "@shared/reducer/routine.reducer"; +import userReducer from "@shared/reducer/user.reducer"; import { combineReducers } from "redux"; import { persistReducer } from "redux-persist"; import storage from "redux-persist/es/storage"; import { emptySplitApi } from "./api.store"; -import userReducer from "/src/shared/store/user.reducer"; /** local storage config */ -- GitLab From c4843882e435a70cc2c5a83852dbc17eafa850b8 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Mon, 7 Oct 2024 08:27:45 +0200 Subject: [PATCH 30/44] refactor device component --- .gitmodules | 3 + react-ui/.gitignore | 1 + react-ui/package.json | 3 +- .../devices/reducer/device.reducer.ts | 2 + .../devices/routines/action.routine.ts | 2 - .../devices/routines/device.routine.ts | 4 +- .../src/components/devices/routines/index.ts | 3 + .../mne.routine.ts} | 7 +- .../components/devices/view/device.view.tsx | 1 - .../src/shared/reducer/routine.reducer.ts | 19 +- react-ui/src/shared/utils/routine.manager.ts | 13 - react-ui/src/stores/index.ts | 4 +- react-ui/yang_model | 1 + react-ui/yarn.lock | 239 +++++++++++++++++- 14 files changed, 262 insertions(+), 40 deletions(-) delete mode 100644 react-ui/src/components/devices/routines/action.routine.ts create mode 100644 react-ui/src/components/devices/routines/index.ts rename react-ui/src/components/devices/{reducer/mne.subscription.ts => routines/mne.routine.ts} (86%) create mode 160000 react-ui/yang_model diff --git a/.gitmodules b/.gitmodules index 31328ccf0..da22de84f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -9,3 +9,6 @@ [submodule "models/YangModels"] path = models/YangModels url = https://github.com/YangModels/yang.git +[submodule "react-ui/yang_model"] + path = react-ui/yang_model + url = https://github.com/openconfig/public.git diff --git a/react-ui/.gitignore b/react-ui/.gitignore index e7d84c03a..6b5757776 100644 --- a/react-ui/.gitignore +++ b/react-ui/.gitignore @@ -4,6 +4,7 @@ /node_modules /.pnp .pnp.js +/yang_model # testing /coverage diff --git a/react-ui/package.json b/react-ui/package.json index 966d60eec..056db6412 100644 --- a/react-ui/package.json +++ b/react-ui/package.json @@ -25,7 +25,8 @@ "redux": "^5.0.1", "redux-observable": "^3.0.0-rc.2", "redux-persist": "^6.0.0", - "web-vitals": "^4.2.2" + "web-vitals": "^4.2.2", + "yang-js": "^0.24.70" }, "scripts": { "start": "vite", diff --git a/react-ui/src/components/devices/reducer/device.reducer.ts b/react-ui/src/components/devices/reducer/device.reducer.ts index ad702310b..7195ceaa1 100644 --- a/react-ui/src/components/devices/reducer/device.reducer.ts +++ b/react-ui/src/components/devices/reducer/device.reducer.ts @@ -1,6 +1,8 @@ import { api, NetworkelementFlattenedManagedNetworkElement, NetworkelementManagedNetworkElement, PndPrincipalNetworkDomain, PndServiceGetPndListApiArg } from '@api/api'; import { DeviceViewTabValues } from '@component/devices/view/device.view.tabs'; import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit'; +import '../routines/index'; + export type Device = NetworkelementFlattenedManagedNetworkElement; diff --git a/react-ui/src/components/devices/routines/action.routine.ts b/react-ui/src/components/devices/routines/action.routine.ts deleted file mode 100644 index 746e3df36..000000000 --- a/react-ui/src/components/devices/routines/action.routine.ts +++ /dev/null @@ -1,2 +0,0 @@ -export const FETCH_MNE_ACTION = 'subscription/device/fetchSelectedMNE'; -export const FETCH_DEVICE_ACTION = 'subscription/device/fetchDevices' \ No newline at end of file diff --git a/react-ui/src/components/devices/routines/device.routine.ts b/react-ui/src/components/devices/routines/device.routine.ts index 2d14e4bf5..4eb1b6b18 100644 --- a/react-ui/src/components/devices/routines/device.routine.ts +++ b/react-ui/src/components/devices/routines/device.routine.ts @@ -4,7 +4,8 @@ import { createAsyncThunk } from "@reduxjs/toolkit"; import { setUser } from "@shared/reducer/user.reducer"; import { RootState } from "src/stores"; import { startListening } from "../../../stores/middleware/listener.middleware"; -import { FETCH_DEVICE_ACTION } from "./action.routine"; + +export const FETCH_DEVICE_ACTION = 'subscription/device/fetchDevices' // continously fetch devices const FETCH_DEVICES_INTERVAL = 15000; // in ms @@ -15,6 +16,7 @@ startListening({ }, }) + export const fetchDevicesThunk = createAsyncThunk(FETCH_DEVICE_ACTION, (_, thunkApi) => { const { user } = thunkApi.getState() as RootState; diff --git a/react-ui/src/components/devices/routines/index.ts b/react-ui/src/components/devices/routines/index.ts new file mode 100644 index 000000000..5fd5267a2 --- /dev/null +++ b/react-ui/src/components/devices/routines/index.ts @@ -0,0 +1,3 @@ +import './device.routine'; +import './mne.routine'; + diff --git a/react-ui/src/components/devices/reducer/mne.subscription.ts b/react-ui/src/components/devices/routines/mne.routine.ts similarity index 86% rename from react-ui/src/components/devices/reducer/mne.subscription.ts rename to react-ui/src/components/devices/routines/mne.routine.ts index fec8a0b21..9823aa69a 100644 --- a/react-ui/src/components/devices/reducer/mne.subscription.ts +++ b/react-ui/src/components/devices/routines/mne.routine.ts @@ -2,16 +2,17 @@ import { api, NetworkElementServiceGetApiArg } from "@api/api"; import { Device, setSelectedDevice, setSelectedMne } from "@component/devices/reducer/device.reducer"; import { createAsyncThunk } from "@reduxjs/toolkit"; import { addRoutine, CATEGORIES } from "@shared/reducer/routine.reducer"; -import { THUNK_KEY } from "@utils/routine.manager"; import { RootState } from "src/stores"; import { startListening } from "../../../stores/middleware/listener.middleware"; -import { FETCH_MNE_ACTION } from "../routines/action.routine"; + +export const FETCH_MNE_ACTION = 'subscription/device/fetchSelectedMNE'; + // fetch mne if selected device is set startListening({ predicate: (action) => setSelectedDevice.match(action) && !!action.payload, effect: async (action, listenerApi) => { - listenerApi.dispatch(addRoutine({category: CATEGORIES.TAB, thunkKey: THUNK_KEY.MNE, payload: action.payload})); + listenerApi.dispatch(addRoutine({thunk: fetchSelectedMneThunk, category: CATEGORIES.TAB, payload: action.payload})); }, }) diff --git a/react-ui/src/components/devices/view/device.view.tsx b/react-ui/src/components/devices/view/device.view.tsx index 9e176ae66..0d04b959c 100644 --- a/react-ui/src/components/devices/view/device.view.tsx +++ b/react-ui/src/components/devices/view/device.view.tsx @@ -22,7 +22,6 @@ function DeviceView() { <NavLink className={handleActiveTabLink(DeviceViewTabValues.YANGMODEL) + " tab-links"} onClick={() => setActiveTab(DeviceViewTabValues.YANGMODEL)}>{t('device.tabs.yang_model.title')}</NavLink> </Nav> </Col> - </Row> <Row className='align-items-center'> diff --git a/react-ui/src/shared/reducer/routine.reducer.ts b/react-ui/src/shared/reducer/routine.reducer.ts index fb62e5159..b4008f0fd 100644 --- a/react-ui/src/shared/reducer/routine.reducer.ts +++ b/react-ui/src/shared/reducer/routine.reducer.ts @@ -1,5 +1,5 @@ import { PayloadAction, createSlice } from '@reduxjs/toolkit'; -import { RoutineDictionary, RoutineManager, THUNK_KEY } from '@utils/routine.manager'; +import { RoutineManager } from '@utils/routine.manager'; import { REHYDRATE } from 'redux-persist'; import { RootState } from '../../stores'; import { startListening } from '../../stores/middleware/listener.middleware'; @@ -8,7 +8,7 @@ import { setToken } from './user.reducer'; interface ThunkEntityDTO { - thunkKey: THUNK_KEY, + thunk: any, payload: any /** @@ -59,7 +59,6 @@ const RoutineSlice = createSlice({ }, removeAll: (state) => { - RoutineManager.unsubscribeAll() state.thunks = initialState.thunks; }, }, @@ -69,8 +68,9 @@ export const { addRoutine } = RoutineSlice.actions // on logout remove all routine startListening({ - predicate: (action) => setToken.match(action) && action.payload.token === null, + predicate: (action) => setToken.match(action) && action.payload === null, effect: async (_, listenerApi) => { + RoutineManager.unsubscribeAll() listenerApi.dispatch(RoutineSlice.actions.removeAll()); }, }) @@ -107,15 +107,8 @@ startListening({ startListening({ predicate: (action) => addRoutine.match(action), effect: async (action, listenerApi) => { - const {thunkKey} = action.payload as ThunkEntity; - - const thunkFn = RoutineDictionary.get(thunkKey); - if (!thunkFn) { - // TODO - throw new Error('Thunk not found'); - } - - const subscription = await listenerApi.dispatch(thunkFn(action.payload.payload)); + const {thunk} = action.payload as ThunkEntity; + const subscription = await listenerApi.dispatch(thunk(action.payload.payload)); const thunkId = await RoutineManager.add(subscription.payload); listenerApi.dispatch(RoutineSlice.actions.setThunkId({id: thunkId, category: action.payload.category})); }, diff --git a/react-ui/src/shared/utils/routine.manager.ts b/react-ui/src/shared/utils/routine.manager.ts index 891637fb8..5cb782db4 100644 --- a/react-ui/src/shared/utils/routine.manager.ts +++ b/react-ui/src/shared/utils/routine.manager.ts @@ -1,6 +1,3 @@ -import { fetchSelectedMneThunk } from '@component/devices/reducer/mne.subscription'; -import { fetchDevicesThunk } from '@component/devices/routines/device.routine'; -import { AsyncThunk } from '@reduxjs/toolkit'; import { QueryActionCreatorResult } from '@reduxjs/toolkit/query'; type Routine = QueryActionCreatorResult<any>; @@ -14,16 +11,6 @@ const initialState = { routines: [] as Entity[] } -export enum THUNK_KEY { - MNE = 'device/fetch', - DEVICE = 'mne/fetch', -} - -export const RoutineDictionary = new Map<THUNK_KEY,AsyncThunk<any, any, {}>>([ - [THUNK_KEY.DEVICE, fetchDevicesThunk], - [THUNK_KEY.MNE, fetchSelectedMneThunk] -]) - /** * Routine manager is a singleton that holds all running routines. diff --git a/react-ui/src/stores/index.ts b/react-ui/src/stores/index.ts index 8c24b8763..e9a18016b 100644 --- a/react-ui/src/stores/index.ts +++ b/react-ui/src/stores/index.ts @@ -1,4 +1,5 @@ -import { FETCH_DEVICE_ACTION, FETCH_MNE_ACTION } from '@component/devices/routines/action.routine' +import { FETCH_DEVICE_ACTION } from '@component/devices/routines/device.routine' +import { FETCH_MNE_ACTION } from '@component/devices/routines/mne.routine' import { configureStore } from '@reduxjs/toolkit' import { setupListeners } from '@reduxjs/toolkit/query' import { FLUSH, PAUSE, PERSIST, PURGE, REGISTER, REHYDRATE } from 'redux-persist' @@ -15,6 +16,7 @@ export const store = configureStore({ getDefaultMiddleware({ serializableCheck: { ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER, FETCH_DEVICE_ACTION + '/fulfilled', FETCH_MNE_ACTION + '/fulfilled', 'routine/addRoutine'], + ignoredPaths: ['routine.thunks'] }, }).prepend(listenerMiddleware.middleware).concat(emptySplitApi.middleware, rtkQueryErrorLogger), }) diff --git a/react-ui/yang_model b/react-ui/yang_model new file mode 160000 index 000000000..3a3018590 --- /dev/null +++ b/react-ui/yang_model @@ -0,0 +1 @@ +Subproject commit 3a3018590be5f7c11a3ed8c3530b128c53633d7b diff --git a/react-ui/yarn.lock b/react-ui/yarn.lock index a43298625..df07efe2b 100644 --- a/react-ui/yarn.lock +++ b/react-ui/yarn.lock @@ -2929,22 +2929,41 @@ acorn-import-attributes@^1.9.5: resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== +acorn-jsx-walk@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/acorn-jsx-walk/-/acorn-jsx-walk-2.0.0.tgz#a5ed648264e68282d7c2aead80216bfdf232573a" + integrity sha512-uuo6iJj4D4ygkdzd6jPtcxs8vZgDX9YFIkqczGImoypX2fQ4dVImmu3UzA4ynixCIMTrEOWW+95M2HuBaCEOVA== + acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== +acorn-loose@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/acorn-loose/-/acorn-loose-8.4.0.tgz#26d3e219756d1e180d006f5bcc8d261a28530f55" + integrity sha512-M0EUka6rb+QC4l9Z3T0nJEzNOO7JcoJlYMrBlyBCiFSXRyxjLKayd4TbQs2FDRWQU1h9FR7QVNHt+PEaoNL5rQ== + dependencies: + acorn "^8.11.0" + acorn-walk@^7.1.1: version "7.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== +acorn-walk@^8.3.4: + version "8.3.4" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + dependencies: + acorn "^8.11.0" + acorn@^7.1.1: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.12.0, acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.11.0, acorn@^8.12.0, acorn@^8.12.1, acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: version "8.12.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== @@ -3003,7 +3022,7 @@ ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.6.0, ajv@^8.6.3, ajv@^8.9.0: +ajv@^8.0.0, ajv@^8.17.1, ajv@^8.6.0, ajv@^8.6.3, ajv@^8.9.0: version "8.17.1" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== @@ -3777,6 +3796,11 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" +commander@^12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" + integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== + commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -3812,6 +3836,11 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== +"comparse@>= 0.9.x", comparse@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/comparse/-/comparse-0.9.3.tgz#2ce73a4895e0ee1b333db11689c2f55c0ff9a962" + integrity sha512-wg/zg7YsMomMF9LP+LNSaw4IO7b/M4VLCmidZ9+wbYkZNXTkVNMFMgMZAu/7967BGsTn+14KZUT/pyyTBuZrTQ== + compressible@~2.0.16: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" @@ -4273,6 +4302,11 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" @@ -4283,6 +4317,34 @@ depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== +dependency-cruiser@^16.4.2: + version "16.4.2" + resolved "https://registry.yarnpkg.com/dependency-cruiser/-/dependency-cruiser-16.4.2.tgz#586487e1ac355912a0ad2310b830b63054733e01" + integrity sha512-mQZM95WwIvKzYYdj+1RgIBuJ6qbr1cfyzTt62dDJVrWAShfhV9IEkG/Xv4S2iD5sT+Gt3oFWyZjwNufAhcbtWA== + dependencies: + acorn "^8.12.1" + acorn-jsx "^5.3.2" + acorn-jsx-walk "^2.0.0" + acorn-loose "^8.4.0" + acorn-walk "^8.3.4" + ajv "^8.17.1" + commander "^12.1.0" + enhanced-resolve "^5.17.1" + ignore "^6.0.2" + interpret "^3.1.1" + is-installed-globally "^1.0.0" + json5 "^2.2.3" + memoize "^10.0.0" + picocolors "^1.1.0" + picomatch "^4.0.2" + prompts "^2.4.2" + rechoir "^0.8.0" + safe-regex "^2.1.1" + semver "^7.6.3" + teamcity-service-messages "^0.1.14" + tsconfig-paths-webpack-plugin "^4.1.0" + watskeburt "^4.1.0" + dequal@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" @@ -4507,7 +4569,7 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -enhanced-resolve@^5.17.0: +enhanced-resolve@^5.17.0, enhanced-resolve@^5.17.1, enhanced-resolve@^5.7.0: version "5.17.1" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15" integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg== @@ -5577,6 +5639,13 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" +global-directory@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/global-directory/-/global-directory-4.0.1.tgz#4d7ac7cfd2cb73f304c53b8810891748df5e361e" + integrity sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q== + dependencies: + ini "4.1.1" + global-modules@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" @@ -5909,6 +5978,11 @@ ignore@^5.2.0, ignore@^5.3.1: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== +ignore@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-6.0.2.tgz#77cccb72a55796af1b6d2f9eb14fa326d24f4283" + integrity sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A== + immer@^10.0.3: version "10.1.1" resolved "https://registry.yarnpkg.com/immer/-/immer-10.1.1.tgz#206f344ea372d8ea176891545ee53ccc062db7bc" @@ -5945,6 +6019,13 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg== + dependencies: + repeating "^2.0.0" + indent-string@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" @@ -5968,6 +6049,11 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== +ini@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.1.tgz#d95b3d843b1e906e56d6747d5447904ff50ce7a1" + integrity sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g== + ini@^1.3.5: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" @@ -5982,6 +6068,11 @@ internal-slot@^1.0.4, internal-slot@^1.0.7: hasown "^2.0.0" side-channel "^1.0.4" +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== + invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -6092,6 +6183,11 @@ is-finalizationregistry@^1.0.2: dependencies: call-bind "^1.0.2" +is-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -6116,6 +6212,14 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-installed-globally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-1.0.0.tgz#08952c43758c33d815692392f7f8437b9e436d5a" + integrity sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ== + dependencies: + global-directory "^4.0.1" + is-path-inside "^4.0.0" + is-map@^2.0.2, is-map@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" @@ -6153,6 +6257,11 @@ is-path-inside@^3.0.3: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== +is-path-inside@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-4.0.0.tgz#805aeb62c47c1b12fc3fd13bfb3ed1e7430071db" + integrity sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA== + is-plain-obj@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" @@ -6925,7 +7034,7 @@ json5@^1.0.2: dependencies: minimist "^1.2.0" -json5@^2.1.2, json5@^2.2.0, json5@^2.2.3: +json5@^2.1.2, json5@^2.2.0, json5@^2.2.2, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -7087,6 +7196,11 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -7193,6 +7307,13 @@ memfs@^3.1.2, memfs@^3.4.3: dependencies: fs-monkey "^1.0.4" +memoize@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/memoize/-/memoize-10.0.0.tgz#43fa66b2022363c7c50cf5dfab732a808a3d7147" + integrity sha512-H6cBLgsi6vMWOcCpvVCdFFnl3kerEXbrYh9q+lY6VXvQSmM6CkmV08VOwT+WE2tzIEqRPFfAq3fm4v/UIW6mSA== + dependencies: + mimic-function "^5.0.0" + merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -7248,6 +7369,11 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +mimic-function@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/mimic-function/-/mimic-function-5.0.1.tgz#acbe2b3349f99b9deaca7fb70e48b83e94e67076" + integrity sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA== + min-indent@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" @@ -7809,11 +7935,21 @@ picocolors@^1.0.0, picocolors@^1.0.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== +picocolors@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" + integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +picomatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" + integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== + pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -8809,6 +8945,13 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== + dependencies: + resolve "^1.20.0" + recursive-readdir@^2.2.2: version "2.2.3" resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" @@ -8896,6 +9039,11 @@ regex-parser@^2.2.11: resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.3.0.tgz#4bb61461b1a19b8b913f3960364bb57887f920ee" integrity sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg== +regexp-tree@~0.1.1: + version "0.1.27" + resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.27.tgz#2198f0ef54518ffa743fe74d983b56ffd631b6cd" + integrity sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA== + regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" @@ -8941,6 +9089,13 @@ renderkid@^3.0.0: lodash "^4.17.21" strip-ansi "^6.0.1" +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A== + dependencies: + is-finite "^1.0.0" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -9107,6 +9262,13 @@ safe-regex-test@^1.0.3: es-errors "^1.3.0" is-regex "^1.1.4" +safe-regex@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-2.1.1.tgz#f7128f00d056e2fe5c11e81a1324dd974aadced2" + integrity sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A== + dependencies: + regexp-tree "~0.1.1" + "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -9208,7 +9370,7 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0: +semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3: version "7.6.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== @@ -9500,6 +9662,13 @@ stackframe@^1.3.4: resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== +stacktrace-parser@^0.1.4: + version "0.1.10" + resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + static-eval@2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.0.2.tgz#2d1759306b1befa688938454c546b7871f806a42" @@ -9875,6 +10044,11 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== +teamcity-service-messages@^0.1.14: + version "0.1.14" + resolved "https://registry.yarnpkg.com/teamcity-service-messages/-/teamcity-service-messages-0.1.14.tgz#193d420a5e4aef8e5e50b8c39e7865e08fbb5d8a" + integrity sha512-29aQwaHqm8RMX74u2o/h1KbMLP89FjNiMxD9wbF2BbWOnbM+q+d1sCEC+MqCc4QW3NJykn77OMpTFw/xTHIc0w== + temp-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" @@ -10023,6 +10197,15 @@ ts-interface-checker@^0.1.9: resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== +tsconfig-paths-webpack-plugin@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz#3c6892c5e7319c146eee1e7302ed9e6f2be4f763" + integrity sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA== + dependencies: + chalk "^4.1.0" + enhanced-resolve "^5.7.0" + tsconfig-paths "^4.1.2" + tsconfig-paths@^3.15.0: version "3.15.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" @@ -10033,6 +10216,15 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" +tsconfig-paths@^4.1.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" + integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== + dependencies: + json5 "^2.2.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -10084,6 +10276,11 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -10362,6 +10559,11 @@ watchpack@^2.4.1: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" +watskeburt@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/watskeburt/-/watskeburt-4.1.0.tgz#3c0227669be646a97424b631164b1afe3d4d5344" + integrity sha512-KkY5H51ajqy9HYYI+u9SIURcWnqeVVhdH0I+ab6aXPGHfZYxgRCwnR6Lm3+TYB6jJVt5jFqw4GAKmwf1zHmGQw== + wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" @@ -10857,6 +11059,13 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== +xparse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/xparse/-/xparse-1.0.0.tgz#4775a4bae747c8263ce51af9cef95ee169ac2efd" + integrity sha512-scUtMflBUTA6O72Ic07m58ZzwykVQNWeQRrUgpABDFDOF77/72KxD+JYSPhjy3sItuyHL80NruP0+ucm/lIXQQ== + dependencies: + comparse "^0.9.3" + y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" @@ -10877,6 +11086,26 @@ yaml@^2.3.4: resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.0.tgz#c6165a721cf8000e91c36490a41d7be25176cf5d" integrity sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw== +yang-js@^0.24.70: + version "0.24.70" + resolved "https://registry.yarnpkg.com/yang-js/-/yang-js-0.24.70.tgz#0b1fbc7b8dee2ff88985b60028439a4335b09161" + integrity sha512-hdb+IZHcQbuhLWmghq10jupVuoUDm+R1K0PATd398P+gby/rYSsma6saagtp9skyvLhYX2M+CvNWxQQBV7Gk7A== + dependencies: + debug "^4.1.1" + delegates "^1.0.0" + indent-string "^2.1.0" + lodash.clonedeep "^4.5.0" + stacktrace-parser "^0.1.4" + xparse "^1.0.0" + yang-parser "^0.2.1" + +yang-parser@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/yang-parser/-/yang-parser-0.2.1.tgz#b937ca78d887b81559c71c608fe9d850ebb7a77a" + integrity sha512-mmZKLVc4NiMdRBK/gnxiT35EP97k9tRDcjwUOenMLabgIm083HVFRfHmch60Wiq+zVWYantdgBcRGLk4Wy1QcA== + dependencies: + comparse ">= 0.9.x" + yargs-parser@^20.2.2: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" -- GitLab From a4c08194ba250bb7c883a6f9c393ff7b3dcc263e Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Mon, 14 Oct 2024 15:25:24 +0200 Subject: [PATCH 31/44] [ui](feat) implement yang model parser with wasm --- models/YangModels | 2 +- models/arista | 2 +- models/openconfig | 2 +- react-ui/.eslintrc.cjs | 18 - react-ui/.prettierrc | 9 +- react-ui/dist/assets/logo-Bj6KFr1z.svg | 17 + react-ui/dist/favicon.ico | Bin 0 -> 3870 bytes react-ui/dist/fonts/Inter.ttf | Bin 0 -> 804612 bytes react-ui/dist/index.html | 22 + react-ui/dist/logo.png | Bin 0 -> 66912 bytes react-ui/dist/logo.svg | 17 + react-ui/dist/manifest.json | 20 + react-ui/dist/robots.txt | 3 + react-ui/docker/wasm/Dockerfile | 13 + react-ui/docker/wasm/entrypoint.sh | 9 + react-ui/docs/README.md | 2 - react-ui/eslint.config.js | 28 + react-ui/package.json | 34 +- react-ui/scripts/build-api.sh | 10 - react-ui/scripts/build-wasm.sh | 38 + react-ui/scripts/clean.sh | 5 + .../devices/routines/device.routine.ts | 45 +- .../devices/view/device.view.tabs.tsx | 12 +- .../view_model/device.tabs.viewmodel.ts | 30 + .../login/viewmodel/login.viewmodel.ts | 2 +- react-ui/src/index.tsx | 11 +- .../src/shared/reducer/routine.reducer.ts | 81 +- react-ui/src/shared/utils/routine.manager.ts | 2 +- .../shared/utils/yang_parser/go/.gitignore | 1 + .../go/assets/wasm_exec.d.ts.generated | 18 + .../src/shared/utils/yang_parser/go/go.env | 1 + .../src/shared/utils/yang_parser/go/go.mod | 18 + .../src/shared/utils/yang_parser/go/go.sum | 171 +++ .../utils/yang_parser/go/yang_parser.go | 39 + .../shared/utils/yang_parser/yang_parser.ts | 38 + react-ui/src/stores/persist.store.ts | 26 +- react-ui/tsconfig.json | 10 +- react-ui/vite.config.mjs | 18 +- react-ui/yang_model | 1 - react-ui/yarn.lock | 973 +++++++++++------- 40 files changed, 1220 insertions(+), 528 deletions(-) delete mode 100644 react-ui/.eslintrc.cjs create mode 100644 react-ui/dist/assets/logo-Bj6KFr1z.svg create mode 100644 react-ui/dist/favicon.ico create mode 100644 react-ui/dist/fonts/Inter.ttf create mode 100644 react-ui/dist/index.html create mode 100644 react-ui/dist/logo.png create mode 100644 react-ui/dist/logo.svg create mode 100644 react-ui/dist/manifest.json create mode 100644 react-ui/dist/robots.txt create mode 100644 react-ui/docker/wasm/Dockerfile create mode 100755 react-ui/docker/wasm/entrypoint.sh create mode 100644 react-ui/eslint.config.js delete mode 100755 react-ui/scripts/build-api.sh create mode 100755 react-ui/scripts/build-wasm.sh create mode 100755 react-ui/scripts/clean.sh create mode 100644 react-ui/src/components/devices/view_model/device.tabs.viewmodel.ts create mode 100644 react-ui/src/shared/utils/yang_parser/go/.gitignore create mode 100644 react-ui/src/shared/utils/yang_parser/go/assets/wasm_exec.d.ts.generated create mode 100644 react-ui/src/shared/utils/yang_parser/go/go.env create mode 100644 react-ui/src/shared/utils/yang_parser/go/go.mod create mode 100644 react-ui/src/shared/utils/yang_parser/go/go.sum create mode 100644 react-ui/src/shared/utils/yang_parser/go/yang_parser.go create mode 100644 react-ui/src/shared/utils/yang_parser/yang_parser.ts delete mode 160000 react-ui/yang_model diff --git a/models/YangModels b/models/YangModels index 6af71d68a..9442dda17 160000 --- a/models/YangModels +++ b/models/YangModels @@ -1 +1 @@ -Subproject commit 6af71d68aa1deeef0f447567830327370653b37b +Subproject commit 9442dda17a9a5f1f0db548512446e3d9ca37a955 diff --git a/models/arista b/models/arista index 61fc7bba1..ae4d23359 160000 --- a/models/arista +++ b/models/arista @@ -1 +1 @@ -Subproject commit 61fc7bba14ec2efd152b98fc59e8837ad1db3ab9 +Subproject commit ae4d23359a4d25e1f2feb6878b825e629b9f2fb9 diff --git a/models/openconfig b/models/openconfig index daf73c37e..ea279957a 160000 --- a/models/openconfig +++ b/models/openconfig @@ -1 +1 @@ -Subproject commit daf73c37e9062b458bb9eab645840e5d3835c74d +Subproject commit ea279957a8dab6eb0c0b05e5a134bc3dfb0c8d28 diff --git a/react-ui/.eslintrc.cjs b/react-ui/.eslintrc.cjs deleted file mode 100644 index c4290113a..000000000 --- a/react-ui/.eslintrc.cjs +++ /dev/null @@ -1,18 +0,0 @@ -module.exports = { - root: true, - env: { browser: true, es2020: true }, - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:react-hooks/recommended', - ], - ignorePatterns: ['dist', '.eslintrc.cjs', './src/i18n/config.js', 'src/api/*'], - parser: '@typescript-eslint/parser', - plugins: ['react-refresh'], - rules: { - 'react-refresh/only-export-components': [ - 'warn', - { allowConstantExport: true }, - ], - }, -} diff --git a/react-ui/.prettierrc b/react-ui/.prettierrc index ced76ac70..5438d4a98 100644 --- a/react-ui/.prettierrc +++ b/react-ui/.prettierrc @@ -1,6 +1,7 @@ { - "semi": false, - "singleQuote": true, - "trailingComma": "es5", - "tabWidth": 4 + "semi": false, + "singleQuote": true, + "trailingComma": "es5", + "tabWidth": 4, + "printWidth": 100 } diff --git a/react-ui/dist/assets/logo-Bj6KFr1z.svg b/react-ui/dist/assets/logo-Bj6KFr1z.svg new file mode 100644 index 000000000..b7f71bd90 --- /dev/null +++ b/react-ui/dist/assets/logo-Bj6KFr1z.svg @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Created with Vectornator (http://vectornator.io/) --> +<svg height="100%" stroke-miterlimit="10" style="fill-rule:nonzero;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;" version="1.1" viewBox="0 0 113.4 212.625" width="100%" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:vectornator="http://vectornator.io" xmlns:xlink="http://www.w3.org/1999/xlink"> +<defs> +<radialGradient cx="170.235" cy="146.046" gradientTransform="matrix(1.00001 -8.65109e-05 8.65119e-05 1 -115.465 -116.986)" gradientUnits="userSpaceOnUse" id="RadialGradient" r="217.591"> +<stop offset="0" stop-color="#c456f7"/> +<stop offset="1" stop-color="#34054a"/> +</radialGradient> +<filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="209.692" id="Filter" width="111.957" x="0.722269" y="2.46642"> +<feDropShadow dx="-4.37114e-08" dy="1" flood-color="#050505" flood-opacity="1" in="SourceGraphic" result="Shadow" stdDeviation="1"/> +</filter> +</defs> +<g id="Layer-1" vectornator:layerName="Layer 1"> +<path d="M35.1413 3.47016L35.1416 6.93891L27.1415 6.93961L27.1464 63.3771C21.6096 65.0011 16.4869 67.0445 12.2717 69.6596C-9.35807 83.0789 12.5182 123.232 12.5264 123.222C12.5341 123.213 12.5498 123.2 12.5576 123.191C13.1518 124.609 14.5144 125.761 16.5579 126.534C18.7737 127.372 21.8204 127.855 26.8082 128.408C25.0644 132.318 24.4639 137.732 25.3409 144.846C26.0816 150.854 28.2327 155.309 32.5924 161.533C32.9615 162.06 34.1761 163.796 34.3427 164.033C35.013 164.984 35.5416 165.705 35.9991 166.408C38.1084 169.647 39.1319 172.149 39.3124 174.814C39.3701 175.665 39.3355 180.513 39.251 187.751C39.2362 189.024 39.0999 200.614 39.0959 200.907C37.7122 201.653 36.7523 203.069 36.7525 204.751C36.7527 207.19 38.7205 209.157 41.1591 209.157C43.5978 209.157 45.5653 207.189 45.5651 204.751C45.5649 203.019 44.5477 201.568 43.096 200.844C43.1023 200.341 43.2363 189.045 43.2511 187.782C43.3388 180.268 43.3816 175.583 43.3124 174.563C43.0775 171.096 41.7912 168.012 39.3427 164.251C38.854 163.5 38.3197 162.708 37.6237 161.72C37.4507 161.474 36.2342 159.766 35.8735 159.251C31.8564 153.517 29.9529 149.563 29.3096 144.346C28.2621 135.848 29.4895 130.5 32.027 127.533C32.6413 126.815 33.2789 126.306 33.9019 125.97C34.2334 125.792 34.4442 125.7 34.4956 125.689C35.5735 125.448 36.2365 124.392 35.9954 123.314C35.7543 122.236 34.6982 121.542 33.6202 121.783C33.2264 121.871 32.6655 122.078 31.9953 122.439C31.0669 122.939 30.1635 123.734 29.3079 124.658C23.0392 124.019 20.0922 123.577 17.9951 122.784C16.1482 122.086 15.9773 121.63 16.7137 120.347C25.511 115.923 43.9287 113.157 55.0885 113.156C63.8081 113.155 79.7952 116.873 90.4333 119.622C93.9977 120.542 94.7294 120.755 96.621 121.277C94.2649 123.034 89.4439 124.738 83.3087 125.247C83.0835 125.266 82.9434 125.443 82.7462 125.529C82.6074 125.348 82.5171 125.106 82.3711 124.935C81.4271 123.831 80.3863 122.999 79.3396 122.435C78.6693 122.074 78.1085 121.867 77.7145 121.779C76.6365 121.538 75.5805 122.233 75.3396 123.31C75.0987 124.388 75.7619 125.444 76.8399 125.685C76.8913 125.697 77.1021 125.788 77.4337 125.967C78.0567 126.302 78.6942 126.81 79.3088 127.529C81.8468 130.496 83.0751 135.844 82.029 144.341C81.3867 149.559 79.4839 153.513 75.4678 159.248C75.1071 159.763 73.8909 161.471 73.7179 161.717C73.0221 162.705 72.488 163.498 71.9994 164.248C69.5516 168.009 68.2658 171.094 68.0315 174.561C67.9625 175.581 68.0061 180.266 68.0951 187.78C68.1102 189.055 68.2793 200.673 68.2838 200.967C66.9421 201.725 66.0027 203.098 66.0028 204.749C66.0031 207.187 67.9709 209.155 70.4095 209.155C72.8481 209.154 74.8156 207.187 74.8154 204.748C74.8153 202.975 73.7598 201.482 72.2526 200.779C72.2461 200.277 72.1101 189.009 72.0952 187.748C72.0095 180.511 71.974 175.662 72.0316 174.811C72.2116 172.146 73.2659 169.644 75.3746 166.404C75.8321 165.701 76.3292 164.981 76.9994 164.029C77.1659 163.793 78.3803 162.056 78.7492 161.529C83.1079 155.305 85.2582 150.849 85.9979 144.841C86.8306 138.077 86.2654 132.917 84.7153 129.06C93.073 128.178 99.944 125.471 101.777 121.527C105.258 116.592 120.674 81.4184 100.46 69.1833C96.4145 66.7344 91.6503 64.7196 86.3971 63.1845L86.3922 6.93448L78.3609 6.93517L78.3606 3.46642L35.1413 3.47016ZM31.1419 10.9393L39.1107 10.9386L39.3309 27.9386C39.3406 28.6841 39.9605 29.2606 40.7061 29.2509C41.4516 29.2413 42.0593 28.6214 42.0497 27.8758L41.7983 10.9383L44.517 10.9381L44.7998 27.9381C44.8108 28.6836 45.3981 29.2615 46.1436 29.2505C46.8892 29.2394 47.4983 28.6209 47.4873 27.8753L47.2358 10.9379L49.9546 10.9376L50.2061 27.9376C50.2169 28.6831 50.8357 29.2608 51.5812 29.25C52.3267 29.2392 52.9044 28.6203 52.8936 27.8749L52.6421 10.9374L55.3609 10.9372L55.6124 27.9371C55.623 28.6827 56.242 29.2601 56.9875 29.2495C57.733 29.2389 58.3418 28.6199 58.3312 27.8744L58.0797 10.9369L60.8297 10.9367L61.05 27.9367C61.0546 28.3094 61.2147 28.6381 61.4563 28.8741C61.6979 29.1102 62.0211 29.2537 62.3938 29.2491C63.1394 29.2398 63.7468 28.6194 63.7375 27.8739L63.5173 10.9365L66.2986 10.9362L66.4875 27.905C66.4957 28.6505 67.1171 29.2568 67.8627 29.2486C68.6082 29.2404 69.1834 28.6503 69.1751 27.9047L68.9861 10.936L71.7674 10.9357L71.9564 27.9357C71.9605 28.3085 72.1132 28.6372 72.3627 28.8732C72.6122 29.1091 72.9587 29.2523 73.3315 29.2481C74.077 29.2398 74.6833 28.6498 74.6751 27.9042L74.4862 10.9355L82.3925 10.9348L82.3969 62.2473C78.1953 61.2363 73.8195 60.4151 69.2716 59.936L69.0841 59.936L69.0846 65.9672L62.3352 73.3116L62.211 82.5928L62.212 94.7803L56.5244 94.7808L50.3056 94.7814L50.2733 82.9376L50.1163 73.3126L43.1468 65.8132L43.1463 60.0945L31.1463 62.3455L31.1419 10.9393ZM46.0197 41.188L45.9904 64.3755L52.9599 71.8749L53.1492 91.9374L59.368 91.9368L59.5225 71.8743L66.2407 64.5612L66.2387 41.3425L46.0197 41.188ZM45.5578 121.282C45.0484 121.232 44.5158 121.369 44.0891 121.719C43.2356 122.421 43.1382 123.71 43.8394 124.563C43.8712 124.602 43.9181 124.67 44.0269 124.813C44.2163 125.062 44.4521 125.354 44.6832 125.688C45.3494 126.65 45.998 127.755 46.621 128.938C48.9603 133.379 50.0248 137.836 49.1222 141.875C48.4351 144.95 46.6061 147.711 43.4353 150.126C43.1568 150.338 42.1644 150.942 40.7792 151.751C40.6905 151.803 37.4839 153.662 37.4356 153.689C36.4728 154.23 36.1131 155.445 36.6545 156.408C37.1959 157.37 38.4106 157.699 39.3734 157.157C39.4251 157.128 42.7199 155.272 42.8108 155.22C44.3781 154.304 45.4057 153.669 45.8731 153.313C49.7829 150.336 52.1324 146.76 53.0285 142.75C54.1746 137.622 52.9238 132.266 50.1834 127.063C49.4811 125.729 48.7181 124.526 47.9643 123.438C47.5056 122.775 47.1244 122.271 46.9017 122C46.5511 121.574 46.0673 121.332 45.5578 121.282ZM65.7769 121.28C65.2675 121.33 64.7837 121.572 64.4331 121.999C64.2105 122.27 63.8293 122.774 63.3708 123.436C62.6172 124.525 61.8858 125.728 61.1835 127.062C58.444 132.265 57.163 137.621 58.3099 142.749C59.2067 146.759 61.5569 150.335 65.4671 153.311C65.9346 153.667 66.9935 154.302 68.5611 155.217C68.6519 155.27 71.9158 157.125 71.9675 157.154C72.9304 157.696 74.145 157.367 74.6862 156.404C75.2275 155.441 74.8676 154.227 73.9048 153.686C73.8565 153.658 70.6495 151.8 70.5608 151.748C69.1754 150.939 68.1829 150.336 67.9044 150.124C64.7332 147.71 62.9036 144.948 62.2161 141.874C61.3128 137.835 62.3766 133.378 64.715 128.936C65.3378 127.753 65.9862 126.649 66.6522 125.686C66.8833 125.352 67.1191 125.06 67.3084 124.811C67.4172 124.668 67.4953 124.6 67.5272 124.561C68.2282 123.708 68.0992 122.418 67.2457 121.717C66.8189 121.367 66.2862 121.23 65.7769 121.28ZM28.3735 160.064C27.8641 160.114 27.3492 160.357 26.9985 160.783C24.0604 164.358 22.5881 168.723 22.5621 174.253C22.5614 174.404 22.6311 200.839 22.627 200.877C21.1966 201.608 20.1896 203.036 20.1898 204.753C20.19 207.191 22.1578 209.159 24.5964 209.159C27.0351 209.158 29.0026 207.191 29.0024 204.752C29.0022 203.061 28.0235 201.65 26.627 200.908C26.6562 200.425 26.6538 197.055 26.6259 187.658C26.6229 186.662 26.5615 174.385 26.5622 174.252C26.584 169.618 27.7563 166.157 30.0925 163.314C30.7939 162.461 30.6644 161.203 29.811 160.502C29.3844 160.151 28.8829 160.015 28.3735 160.064ZM82.9679 160.06C82.4585 160.01 81.9571 160.147 81.5304 160.497C80.6772 161.199 80.5479 162.457 81.2494 163.31C83.5862 166.152 84.7591 169.613 84.7817 174.247C84.7823 174.378 84.7241 199.67 84.7527 200.841C83.3011 201.564 82.2529 203.015 82.253 204.747C82.2533 207.186 84.2524 209.153 86.691 209.153C89.1295 209.153 91.0971 207.185 91.0969 204.747C91.0967 203.049 90.1265 201.611 88.7215 200.872C88.7173 200.833 88.7318 194.753 88.7516 187.684C88.7544 186.688 88.7824 174.398 88.7817 174.247C88.7548 168.717 87.2817 164.353 84.343 160.778C83.9922 160.352 83.4774 160.109 82.9679 160.06Z" fill="url(#RadialGradient)" fill-rule="nonzero" filter="url(#Filter)" stroke="none" vectornator:shadowAngle="1.5708" vectornator:shadowColor="#050505" vectornator:shadowOffset="1" vectornator:shadowOpacity="1" vectornator:shadowRadius="2"/> +</g> +</svg> diff --git a/react-ui/dist/favicon.ico b/react-ui/dist/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a11777cc471a4344702741ab1c8a588998b1311a GIT binary patch literal 3870 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 ZtMWJ#1p_C<F-T5Hu2|;y@Dg%;1puB)gNgtE literal 0 HcmV?d00001 diff --git a/react-ui/dist/fonts/Inter.ttf b/react-ui/dist/fonts/Inter.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e72470871b8fc198da424b1e17ed729c202829cf GIT binary patch literal 804612 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%0Ax6j{ZP3#Ka=%E2kFnV}3!H!zffX;7aA zltR(NE)o>$4B_Aq1m_qAP%U205DiLq3}N8VKx*MJfO1j`1E>~nWB}!)4hB#jYGMH8 zMR;qA!3At8D3`V{fNJq>NNK?UYSq^;fLi$A6a^Z=W&_pVPZ;hnTwyrFaD-tG!xn}$ zME1v6z#%Kbz{J)EI<1GTl>t-}cQJr!>vjfE4P67;*}&Go0BQ+WF@Wm$76wq8p&PW{ zl&zKll(wruCmyjiGJtCOCI-+5<3k2eyS|PAlo#qjW8`cV3<8k+&cF{&fi(<L;81O5 zkOb2W3=&|via{JqS1`yiFtgRMH89A6=_=4pQ?@!bkgx3-m>75&Z1IkCI5WC1mcd8K zmm$W<8GkSdGRa_^8?=IH57Nm&T+H0e*6_1~+7PD)G5_EIod^NiE6TyZ#CU^&hiL`V zT8{fnTbOn;?Pmg+a)fCQ(;m*v@L2{X#!Zat7?T(*7(gdmseyODVUnOc0x}geR|1+3 z0gX`_vQ@CPF)*_4W8cTX$bOLhAOj=&S@yFGjO-WLFETK)-(kPUz{viP{UHM*`xEvj z42<kA*k3R(vVUOz%)rS0jr}_VBl~am-wcfGf7$;sFmkYPurM%kuyb%QFmiBla4|4) z@Nn=jFmmv5@G&rQ2yzI5ZWRFEE8x%J&%nqL!V${A$PvvE&A`YJ%Mr`K$Pv#G&%nr0 z#!<n*$Wg^n#lXnX#L>jS$gziG4+A5|K8}41j2s6!4l*!u9N{?1z{v5F<0t4g0*-$S zjGRoI%nXd29GsjCjGR22JPeGSLY#68jGQK%CJc<6_M8q3jGRuK9t@0}UYx!RjGO_S zB@B$5<(%aVjGVhTcQG(>?%~|Sz{q)q^DF}+=LPUx2G2R4gJxM6c$k(mEob0iTEn!4 zfsJV$(>ew&rmaj{8Q7V2G3{dDVA{vDkAaEl0Mh{mPNu_5hZ$Izjxrr(U|~AJbb^7A z=_J!h24>bhtb0Hy9z16UGH(sjI?!%5rhTA&Y)nU)PB5Kh-2<7g0naHdVDM#L#=L-e z7V{M5KIRVQCgvLE66QSS4CVypDCQ7mA7&S3J7x=J17<B|6=peR31%T?9%dG%e@s7^ zo-tivI>NMxX#vv&raGoPrZ^@aCO0MrCJQDbCLQQ1BgpIuXdTZT&>9<%JmVpVJmWUT zRg8-mXE9D;>|^X;Y+|fpEMd%JOkxaU^kQ^jv|}t`U}W$eROe{aL+6|zCuuOTeq@tj zU}F8uCda_ax`_1?n=G3tn+pRg>q3wWn+Y4}^o02!c{VdPR|Y252G&*vCXhPtnxIc? zvJ6bDAK0WBm{{MlNii_7zGIVQU}AmCCc(hW>JFA+W_1J0v9h{?WZ5j(+!<I|T|jEs z%-P%+m|105pRoxtfX<`RXMMva&cMtn!TOp_jDeX|ob?r(C<Ev`Dm~VhY@js?BCIdi zgc(>^g;{l3pR);p&*Rbo>t|*aV13Faz`(-F&#KM(gpD6Of2qa#m<@E2CCFSRuo+BX zeax&7T})t=Okh<Utn#dyAQ!M{uo<&Cu>~@)vuc1`!luq<#OBBrz`)L`4ssEj8k-@T z1Dihs2df;b8pu>ORW<`Qdp17?c2-r83)xiI^x5p#d>J@cWm#1~HnJ(R>9N_e`7m&> z%CIVfT+F7#rpso-=FPy)sswU5n<ASIn>Cvk0|%=#t0Kr<Yzl1JY*uWZ3>>UdtO_7E zvdOb)v01WtFfg$`V&i3CVtvTQ!@$hCnDqf0Hv<#veKsxzCf0jwoD58?ciA`?m{{+y zu`@8S-ezNCU}C++#>&9V90sPDSZ}hiFfg&+U}I)rX5Gztoegwy$zIlLY@l6KSJ@aC zm{_l{{%2rjdIYAKSTD2wV_;&v#QK*3lt(YJ{sEo!!1|kkiS<0|F9s&obF4oZm{`xU z{$OBYJ;VB)fr<4r>o*1_)>Eus8CaMUSa-3WWc>o4nPp;(V_3tw3)`7V3>2QF#=4tv z0%d2#;W}9j*GXZ_S<J=EwXC2sSG?FXv7Vp;I&G#6cA^aYG?fL2b5vN@VOyiaHjiyT z?(<dHb=Y;`=T@b&XTZ;{Vq#DStr}rqU;v%^#0Wk$i<<#-vYafV1ET|jHe(-SAA=6# zPbLutUGQm8p5XKFyqT^rU1RV8p9$p;J`*Z{*^SwqAp(3RR1|Xta|S~S_!PBN=4$3@ zhBWXl_;m29fGqGX_-ybl_&ktL8A@53SlbxNS^HQgGSsk6W}VE?z&ed}7DFR=RaP5# z4N*JWM7D_x6TvIACV_X#&tX?$S7ulMI%|tz5xWMv2E!6|ZFX&jrR=fnaSY2qXKyjA zU{7XGW?03Z#-7Ho8oXwNfq~(l0mA|4Y7Z2O^E0R}K|ODek&}^&k(-f+k(ZH=k)Kh3 zQIJuHQJ7JLQIt`PQJhhNQIb)LQJPVPQI=7TQJztOQIS!JQJGPNQI%1RQJqnPQIk=N zQJYbRQI}DVQJ>L((U8%I(U{SM(Uj4Q(VWqO(UQ@M(VEeQ(U#GU(Vo$P(UH-K5!4oP zWprb7XY^q7Wb|V6X7pk7W%Oh8XAEErWDH^qW(;8rWej5sXN+KsWQ<~rW{hEsWsGBt zXG~yBWK3dAW=vsBWlUpCXUt&CWXxjBX3SyCWz1vDXDnbWWGrGVW-MVWWh`SXXRKhX zWUOMWW~>3PP^f2YU~FV;Vr*t?VQgh=V{B*aVC-b<V(ez@VeDn>W9(;~z&Md{660jX zDU4GYr!h`voWVGgaTeoj#yO008Rs$1XI#LzkZ}>?V#XzmOBt6jE@xc9xRP-d<7&n= zjB6R!F|KFaz_^id6XRyaEsR?kw=r&K+`+h$aTnum#yyOC8TT>nXFR}okns@XVa6kj zM;VVX9%nqkc#`oH<7vh-jAt3oF`j3<z<81I660mYD~wkeuQ6U{yuo;r@fPE4#ygC6 z8SgRPXMDi;kns`YW5y?pPZ^&vK4*Nv_>%Dz<7>t@jBgp=F}`Q~!1$5z6XR#bFN|Lq zzcGGi{K5E>@fYK7#y^aI8UHc<XJTMtWMX1sW@2GtWnyDuXX0SuWa47tX5wMuW#VJv zXA)o%WD;T$W)fi%1?2`N2_{J<DJE$q875gKIVO1uPjRzna$s^~a$<63a$$01a$|C5 z@?i30@?!F4@?r92@?-L63SbIk3StUo3SkOm3S$aqieQRlieidpieZXnierjrN?=N4 zN@7Z8N?}T6N@GfA%3#W5%3{i9%3;c7%45oBDqt#PDq<>TDq$*RDq|{Vs$i;Qs$!~U zs$r^Ss$;5WYG7()YGP_;YGG<+YGZ0=>R{?*>SF3<>S5|->SO9>n!q%XX%f?9rYTHQ znWiyKXPUt@lW7*yY^FI(bD8Eb&1YJ`w2)~L(_*G2OiP)TF)e3W!L*WT71L^_HB4)n z)-kPT+Q77tX%o|CrY%fcnYJ-)XWGHElW7;zZl*m<dztnz?Pof`bdc!~(_y9~Oh=iH zF&ziB;h0V_on|`2be8EH(|M)~Oc$9hF<oZ5!gQ7C8q;;A8%#HuZZX|vy2Esr=^oR4 zrUy(9ai9Fi^q%Ph(?_OHOrM#)FnwkE#`K-(2h&fcUrfK5{xJPz`p5L2nSq&+nTeU1 znT45^nT?s9nS+^=8PvDnVdiD#W9DZTU>0N+Visl=VHRZ;V-{zYV3uT-VwPr>VU}f< zW0q%DU{+*SVpe8WVOC{UV^(L@VAf>TV%BEXVb*2VW7cOjU^ZknVm4+rVK!wpV>V~D zV76qoVzy?sVYX$qW432@V0L77Vs>VBVRi+Tr_3JAp3Gj%-poGCzRZ5i{>%Z)fy_b7 z!OS7dq0BhXqhwBIPGL@EPGe4I&S1`D&SK7H&SB1F&STDJE?_QXE@CcbE@3WZE@Lid zu3)ZYu41lcu3@fau4AreZeVU?Zeng`Zeea^Zewm|?qKd@?qcp{?qTj_?qlv}p1?ej zc@pzv<|)imnWr&NXP&`4lX({NZ00%4bD8Hc&u3o1ypVYj^J3;D%uAV<F)wFc!Mu`r z74vH5HOy<7*D<eW-oU((c@y(y<}J)ynYS@-XWqfQlX(~OZstAAdztq!?`J;1e31DN z^I_&A%tx7zF&}3>!F-bW6!U53Gt6h1&oQ58zQBBu`4aPG<}1usnXfTlXTHIFlld0& zZRR`7cbV@o-)DZn{E+z(^JC^G%uku0F+XR1!Tgf>74vK6H_UID-!Z>u{=oc^`4jVJ z<}b`&nZGfAXa2$blld3(Z{|PDf0_R=|7T%fVPs)qVP;`rVP#=sVQ1lB;bh@r;b!4s z;bq}t;b#$G5o8f!5oQr#5oHl$5oeKLkz|o#k!F!$k!6u%k!Mk0QDjkKQD#wLQDsqM zQD@O$(PYtL(Pq(M(PhzN(PuGWF=R1fF=jDgF=a7hF=w%0v1GAgv1YMhv1PGiv1f5$ zab$5~ab|I0ab<C1acA*h@nrF0@n-R1@n!L2@n;EO31kUk31$gl31tam31^95iDZdl ziDrpmiDijniDyY*Nn}Z4NoGl5No7f6NoUDm$z;i5$!5u6$z{o7$!95GDP$>PDP}2Q zDP<{RDQBr*sbr~Qsb;BRsb#5Ssb^_mX=G_)X=Z6*X=Q0+X=mwR>163*>1OF+>1F9- z>1Ub1GLdBx%Vd@*EK^ygu}o)~!7>wcA}PxpmbonRSmv`VU|Gnrh-ER$5|*Vb%UG7P ztYBHmvWjIj%NmxoEbCa-vut45$g+uLGs_m1tt{JEwzKSD*~zktWjD(nmc1<dSoX6V zU^&Qgh~+TL5tgGY$5@WDoM1W0a*E|N%NdrlEazCxvs_@g$a0D0GRqZ~t1Q=8uCv@= zxyf>i<u=P5mb)zXSnjhtV0p;$h~+WM6PBke&sd&=PC{jQ#qyfv4a-}WcP#H&KCpab z`NZ;><qOMKmTxTIS$?qmWckJNo8=G7UzUF?|5+JW8CjWFnORv_Sy|aw*;zSQIa#?_ zxmkHwd7<m|1VJZVvWl>Z!p|Z`UbBbo1VQ8z3k_HeS&dkYSxs0?S<P6@SuI#CS*@U_ zaoDlivpTSX&farIJO9p`)dzI47pp&O0Bay?5Nj}N2x};77;89d1ZyN~6l*kV3~Ma- z{5i}M`7&9vShHDkSaVtPSo2v6SPNN;Sc_RpSW8*USj$-}SSwkpKy5JATGl$yNgJ$< ztWB(-HfSqr8*4jj2Wuy57i%|b4{I-Y9pVJmiL8@YCxcF1W}U`5oplE5Ox9WORw~As zf2=E5SF)~RT@5;ajCCFBde#lB8(BB8Zf4!Wx|MYs>vq;1tUEzxdxF-(v+iTv&w7CM zAnPI4!>mVGkFp+PJ<fUp=ed{2r(P0s<|XX>O32BT)IQ-_27GoWw)OOySa%MXu$i)% zf%gw!+Xdjv=ECL*-V1<b%{E&QTQFM)TPRx?TR2+;TO?Z)TQpk?TP#}~TRd9=TOwN$ zTQXY;TPj-`TRK|?TPFBCmmIcSwmi0cwgR?7wj#D-wi32dwlcPIwhFdNwko!2wi>ot zwmP<Ywg$FFwkEb_widQlwl=nQwhp#Vwl21AwjQ=#wm!Cgwh3$#*(R|~W}Ct`m2Dc^ zbha66GudXb&1Rd!HkWN4+kCbKYzx^Iu`Om>!nTxc8QXI3c^|9TR<o^PTg$eNZ9Urt zwvB9?*fz6mVcW{Kjcq&I4z``()vSBi_Ok86*MkAAcV#=zc7g38+a<QkY**N>vRz}l z&US<CCfhBx+iZ8(?y}uuyU+H3?IGJEw#RHw*q*XIV|&i_g6$>SE4J5cZ`j_ly<>aN z_JQpq+b6cqY+u;EvVCLw&h~@tC)+Q!-)w)_{<8gJ`_In6&dAQh&dkoj&I(!y%+A5i z$<D>j&CbKl%g)En&o00&$S%Y#%r3$%$}Yw(&Mv_&$u7k%%`U?(%Pz+*&#u6(2<nxv ztAKhX?CR_q?3(Oa?Aj>(FC%tib`y3}b~AQ!b_;e(b}M#kb{lqEb~|=^b_aGxb|-dc zb{BS6b~ko+b`N$>b}x2sb{}?Mc0YE1_5k)k_8|6P_7L_^_AvHv_6YV!_9*sf_83r~ zhdmzD=V4D`Pi9YHPi0SIN9yUZ=d$Oq=d%~E7qS<z7qgeJm$H|!m$O%}SF%^JSF_i! z*Rt2K*RwaUH?lXeH?y~}x3agfx3hP!cd~b}ceD4f_p<k~_k+%HVxPo5nSBcTRQ74? z)7fXR&t#v)J{xqJ6X-lG_66(<*%z@d2A%7~zKnf2`wI4z?5o&Uv#()a%f60%J^Kds zjqID)H?xDz+S<mxoqY%UPWD~wyV>`!?`7Y|zMuU7`$6_Y?1$NpupebV#(tdr1p7($ zQ|zbN&#<3mKgWKa{Q~<%_Dk%SK_^+WUt_<{euMoc`z`j{?04AjvfpFB&;Ee@A^Rit z$LvqopRzw=f6o4b{U!S=_Sfuh*x$0hV}H;7f&C-<C-%?mU)aBb##`Bcu>WNL#r~W9 z5Bp#Cf9(G`7&sU?m^hd@SU6ZY*gzw%9Go0n9NZi{9K0NS9Q+&t9D*D|9KswT9HJaz z9O9s}v^k_Wq&Z|bWI5zG<T(^L6giYQlsQy5R5{c*)HyUbG&!_5v^jJ*bUE}m^f?ST z3^|NAj5$m=OgYRr%sDJLEIF(=tT}8rY&q;W>^U4b966jgoH<-LTsho0+&MfrJUP5L zyg7V0d^!9${6QyKaRhM$gGPEe!Z^Y?A~+&BqBx>CVmM+s;yB_t5;zh$k~oq%QaDmM z(m2vNGB`3pXMA(yaO862apZFpa1?SBaTIfuaFlYCag=jZa8z<saa42EaMW_tany4( za5Qo>aWr$ZaI|u?akO)EaCCBXaddO^aP)HYarARc;F!oUiDNRy6ppDJ(>SJc%;1>G zF^gk1#~hBi9P>Elb1dLk$gzlHF~<^)r5wvRmUFD&Sjn-9V>QPbj<p=?IM#D);MmBq ziDNUz7LKhP+c>s!?BLkRv5R9j#~zNo9Q!!-a~$9}$Z?3{FlaQI;~2+rjuRXwIZlDj z*Wx(KagO6W#|4gy9G5sQgHB}QxCT0rjpHWhlyZ(c9CtbHaop#4!10jd5yxYWCmc^X zo^d?qc){_K;}yqijyD`{Io@%+=lH<!k>eA`XO1r%Upc;UeCPPV@sr~h$8U~59Dh0f zas20G-~^9*bFy%<a<Xx<gGRqOxj4Bwc{q7F`8fGG1vmvcg*b&dML0z{#W=+|B{(HH zr8uQIWjJLy<v8Uz6*v_+l{l3-RX9~S)i~8TH8?dv=X`PMaO#3i`r<U;G~_hmH0Ctn zH03k{oejrn$!W!D&1u7F%V`H1Q|EN#bmDa8bm4U6bmMgA^x*X5^y2j9^x^d7^yBpB z4B!mp4B`yt4B-sr4C4&vjNpvqjN**ujNy#sjN^>wOyEr9OyW%DOyNxBOyf-F%;3!A z%;L=E%;C)C%;U`GEZ{8UEaEKYEa5EWEaNQatN@)b##zl-!&%E&$63$W06N>9vzfDn zvz4=rvz@bpvy-!nvzxPrvzN1vv!8PU=S0p)oRc}Ha8Bi%#yOpH2Iox9S)8*u=Wx#D zoX0tza{=c<&PAMyIhSxQ<y^+OoO1=|O3qcBt2x(juH{_Ext?<a=SI#=oSQkfaBk(? z#<`ty2j@=CU7Wi)_i*mz+y^>Kp7S8*A<n~`M>vmi9^*XDd4lsK=PAz9pg9E2bDZZn zFK}Muyu^8#^9tux&TE|4Id5>@<h;dsoAVCmUCw));FHfdA8|hBd;&WCjPp6?3(l9E zuQ*?GzTtceI-Q>L1LzDi&d;1*IKOg!<NVI~gYzfnFV5ebe>neg{^R`5#lXeL#l*$T z#lpqP#m2?X#lgkN#l^+V#lywR#mB|ZCBP-fCB!AnCBh}jCB`MrCBY@hCB-GpCBr4l zCC4StrNE`grNpJorNX7krN*VsrNO1irNyPqrNgDmrN^buWx!>~WyEF7Wx{33WyWRB zWx-|1WyNL9Wy595WyfXD<-q00<;3O8<-+C4<;LaC<-z62<;CUA<-_I6<;UgE6~Gn9 z6~q<H6~YzD6~-0L6~PtB6~z_J6~h(F6~`6NmB5wAmBf|ImBN+EmBy9MmBE$CmBp3K zmBW?GmB*FORlrrqRm4@yRl-%uRmN4$Rl!xsRmD}!Rl`-wRmWA&)xg!r)x_1z)xy=v z)yCD%)xp)t)y37#)x*`x)yLJ(HGyj)*CejVTvNEFa!uo!&NYK;Cf6*k*<5qD=5o#B zn$NX>Ya!PnuEktSxR!D)<66$Of@>w$Dz4RBYq-{Ot>aqHwSj9R*CwvbTwA!da&6<< z&b5PUC)X~n-CTRP_Hymx+Rt@>>mb)5uEShMxQ=oi<2ufDg6kyLDX!C8XSmLCo#Q&s zb%E<5*CnpYTvxcRa$V!P&UJ(9Cf6;l+gx|J?sDDZy3h51>mk=8uE$(YxSn!7<9g2Z zg6k#ME3VgEZ@Auaz2kb%^?~an*C+PUyi5ZF6GI5?Yyzc?p|k;%hRGX2`KDmn(9ID< zySf@c#0?D~>J8z1h<S$2E+BOVhAyrU+7+VC2&&!)s@}-R3?y&p3K2JSbp)$3bae!q zZ|Ld>HqX%25vtD70;1j#><&X$M`tJ>Y>%O<6I8zwRKF8czY|!$fw3jTU&a<-zM-1| z#5^|xORza^1`u=I44j~Ri1}^?VE-7p89?lDGjM~*J3;k3LG?R<^&1!&gK0xIC$KpN zCWc^l8JM`hXo&mVETH-=p!zMK`Ygcu4BafC_FF*hw}9Gj0ka=0Z(wW*R&QY74EC3S zp)1&Y14B26yon1q91ILhz~Y9`_%n1h0E-*C8bI_JnLyHkp#>zIObo&54U8=zv;kb+ z9OQok17`?r2-R;02~Pt<NH`i88i4ILbcKo=8AIG@2nl}!V>htB4Gc`c?l3Tf_}{<~ z8qTf|a|~VK=0N=K3JFg`SE&08A>n6W=mv48p)(}C8kj(7XK*+h7&t@ia|VaAfq^sB zJuq_&q3$q*gomLaM4zD{M7<FtybO$>{xvcJ%Nx2v^clKB^clKB^clKB^clJuLc;-? zUR)vR#L(3VCJyzNGdO)1x;lgXVdx6UpN6i`cr`MCx(kvH42&%y{xgQ9BdEP@hG2gh zx<T!CGX(q7&<*MiH$!N8f`p5q8#G)@3?b&3K=Px3i2*bnxIpYRfY}epM~1G3V0RlC z8iU<yU|<4G53bN~w1lQ7h`k1e5cLLzMqqy$7#czJ8M;EuH*^E*GjxT>yBa{s30DIH zusN;<knndkFaW#L)c_I?t_B8RdtD76>CDvtlAm1-AnC`|0Fs{#3{0T$1&KEULnE+# z21XEf8M;E;W9SMIH*|%SPezdVH-zvFOrYuB1X4~Jn83mhQeGJtx<UM7YzcOkfiWa~ z8oEL3HFPtA#t+0?LpLL6{1`#fgPRdFevH83Yv^VK&F_$OYv=||w<fT7w1oJ}%@S&^ zCD^@&Zjf@p(9IHRt|io5OQ^Y)Fmu831_mZz{RRfk5OG(C{RV~*e;B$#+-G3m3{?*; z=M9{}<{215{AXYY@t1)iRJ|e09Ajv_L(DfYg2b1B5hR`rU7_jG72;0=LrYjVLfmBx zEgy`b<-eOT)ZfNnc|$i?xeF<04Bd>u?lg2WhWgtW>`p^BV~GFUT%h`0p!!{);pPI4 z4+9fO`Z6$qr!TO1t_G0$z|{a!PPrOD>H}8;NV(){U<l4Pt_F~D#nr$NntmbWgsTB0 zpSc=9$_rNmLvT8AHGt$_R|81?bv1zGUsnT2{&h8g<Re!DNW8lmK+>(Nfg#vGt_HAt zV+6GylAc`+jG*>I(zUCB5j6im(zC095!8N2{J9!H(x<BdBpzK2AnDV<zyusV28PDa zd;`f(2FB)K`wdK>@o8WJ2|q()Nc<VPLc-Y<690y-kn+ON6>5$Nq~13$fuvglLr8iy zFoyCCOu*r8U<iq414Bss8W=+3)fHlop(`{!xI)u`D<u964595EBZztfLr6L^Fff6n z3s-2ma5Vv^PeWHoJ!xP9P2a|l{9|AYY5y3QK;pr`zyzG03=CYr;cZ|Ds~@5Djv=f( zbc6aIQqLK>LdsD?S4j97y28R0l0OX$p?niadN447q&EW-NV+gEf!6OP&~nxUmM_d9 z;cW~v2U<=Tm_Xvk09KB>faBl50FwR<458s~-~uU+4P3zK#lQgCZZL#}Kh(d5rr>Zg zFogNr6`C$wA@O7csjm%;Ao;_<2$GHrjG*O#5wtuof~5zD`G&3#^9@}g<{P@2g56{2 z3Mp?4T_NR+p(~^vW#|fVuc0f%orbOu{~5YM{AK70&CjkbV0Rh1LfWH-u8{Vqp(`{T z4c#E|XbdS24UA#!E@=F?LCQr#H%Pn~x<S&np&QiQZqRh(28m|_V`x3*25sM%K=P@9 z39O!j+G7IA7X~J<@Pqi*zyR)la6U71HHE~h3AElfgw`|0j^K1>=mrgU15+^HzyNBF zp($9ufgx1Cp(!{W8W=&!DFY)&`DEw{5jS)-1;?YIt0^?ROu^w|WC$r=j9~S*5yamH z2Bwg7VhGV^U<lD?U<lD?U}y$OCq|HTZ0HK%8@if7<JAo8K0{YCu>TBQ%^>bGfz<B? zhK}HJ$<P&2Ul|y{`~%T%U<lD~U<4^A4PDKk?l*(F-wf=2LsxT%I}9QH1p`Azu(*K{ zB;OktL&MX+6p}9t9bx&!64K6vq$2|ZXuV(nNlylbQ1==_>@_fi*lS=2vDd&5X0JKe zzXpcTd}RpDe}*n#{}~uU>K_9`sQE^adcwd6Qa>2FLi8KDnnS}2lFtoY&B5Vi=xPr2 zH>5l;bcLidLsv-pGIWKcFGE*IIx%#01^eI7)eRCZMv!vJzyOj?3|-Bk;b#t3XJB9o zbtlYz3$Q*zR|~Me3|%dt?t--I4P7DaQ3C^5x`LEXhOUr&Wncp7pBb1y`zOYbcs4LF zg@m`E6C_<3xPZ%N14D>^4GbavH86tJACUZD=n84~8@fXCohzjMW#|gck4BJk#lYAR z62Ha}eFnyk;Cjl?4PvjMn<<PBw%5?j6r2tW-Js#<<_dP7p&K+j-CV)yU0osVQv(B7 zJ}?KXGcYs<%NrP)L(FrvgoYcWKV|4@2@W>{BS^h$VCV#OAEe!5<P5D>4a}hV+7&_@ zLhLhig``tMS0`}%7`i%v<qcgS;b-UyHO~-IZW<Us$~!|>NH`d}IzrtA34cRZN3gpM zT_NFOU<7Ud8$i;PfuRdHJPeE=?FB<uNcm%62z8eMtXy@3#Getwod$+ba||K*+RznN zue(D0Yv=|JCs#y&6zmTJ16Qaykn+&L1X5oZm_X|t6KH-ifTVW=L#TQ~H?Y49Od$Ep z)c{iOxEes()vgAR`p4A((yn$jfSBuQU<|g`)c}&dTn&uD_PZKD+9|FE#$fll8bI0` zt_H^7aCbF;v^!i4Ang-Z14#SB)d12?aW#OnLtG6Y?GIN2NV(%`0BMK18bI0|uF!EA zS7<-o724l+h4znKq5WA`Xg|yq+TU`8_G?_B?RQsLJIw%APD1jlfuRN1KL$pSa@!D^ zZVg>w@d9b*8W@;C)j`~CU<l36M$q!nz!mIo14F2KLr8ziz!2KcGK92O3|*n(#*qAJ zU;=H289>WzLr6Q>zz9<A7#P9I8E83S1Zl?_7(&|DhOQ9v4PD{pgVUp-E5sZ_S4cbC zz|alqerP&0g!P{x>E6HyQr;UGK-0N_88}`I3?TX0zzEuIGl1lK0|Q9DH!y(Ydjmt5 zJ&<<1fgz;*ZeR#)pBX~h>jp-Ua5XT3hLaJbU2W(J(P!ui(P!ui(P!ui(P!uiY2O>V zLdTU{A>&Afu1?@|ZRqL*^|v!Py&AeYgZ*ph3K{n>bcOX#A?ek?1eSlG?E@2dz2m|Y zUyxW-qL&t*lvtb!sqA2tF{IIJ=nCybx<VQO21bxV!oa``k_e0-mAZi;EHgtKZvbsH z7#PAL5z+}UFoY!@H*laEx<cg*AeE`1D<qH%Ody4^feExRV+3)Rff3YRL+Id#5j66Q zV3j(gP&6=v6jBC;kj{>Q5ybt5t`K(^x<bSaT_NfWT_K$uLsv-QYhVHibOQr3aG_{m z2q_#43|ygs4=Fqh3?c3{bcGczCg8%%zzE_W0|Q8<Yhd6CjywYcNabr_2(iz=5Uvkg z=^7Zq%!M>^4UC|f$OxABA%hKuu8_vPE3^}1U<4_Q42&R^mVptZ(dr88q?kZ6nF%bD zK?*km14!e=71l{Gf^{CCiN_GyNHB(GDicVhZeR#;hk=0^#J`4+!3P6Fs5=ZHna0o+ z5^jdB5c>>Wq2?OF8g;Nn6SUK12(289pynExLBh=ls?G>f7#kQu3QYq;V{qfgzz|kg zK?+wxSBN_dT_J_Cp(~^?Hgts*!jMei3T-sILL1Gl&_=B*w6W<5Z4|mf8%M6t#*izt zapMYYw75bme^&!Yx^*>xHik{0gB=Dif0%<at$~plI2{=nK^lpMu8_*W&=pch8oEL| zlLpYnq=6e$pE)?Q8yLdU87w>@jYI=OXt)|e8+C?|&ZdDOq%&h+2<em<x<WdshOUsp z&d?Q-UJPBK<{CmeT?PhFcN#z%RR#u-d~09;ZCn{b8vzE;Lf!zHP7EN8F#|(L=g7bi z+6gs;7D9%Q&YOWDw9qw#<_{xC;cj3ADfA7Dp!viIl1~hbp!vfHmaZV?8@fWwH*|%V zZ|DlE<RG1RLsv*V7`j3l4~DLg#)F|Nq>*6g3Mmu~T_KHeLsv*++|U)$2sLztG=2<S zA&nhFS9oIs5|74^LfOC=5^jcWko0Nj28~ZQNcuK(gT$+$8zg=V-JtQ{25sD$K;zfQ z99%vcm_X9AfeEbKg!s$A1lq_nfTSM-6Ud~1fgz-lGjxSi)`qUo{B8nqkAVR!{XskZ zM$q^+GJ)hH14ue@H86$dJ4pB%7(wkbf;MW6pp8=_NGHM70M_Y)*lS=2wbu~RxHd3? zRMG}Ukjm506(Vlv3dt{qt`PeST_NR{s{w>IFoHCmT@9f1j1i=B;tFjPyFwc|uFyt{ zE3|Rp3a!*#4IuS~E403HHGq`MuCQ|502bbm&WwQ(Bp(_WLfmCw2yvHzA=EvF(8jnC ztkQ<?4P7CPCPP<9ePrkgsizEGq4kFeEL<RySOx}=^yCUHe+>*Eoht)FXrsgk*64yX zHVurR`iv|f^{yerd;>#>y#|I5dku_WjR;8jY3K?mcMM%2`Pk4E690y-kU?Do186!k zfOf_Vq3$(=Or{waKsymekU?w%14#K{U;rHqGk`SS4Gban85lzBGcbhMXJ81i&%h8G z&W4b|8UsVfV2yzxWU$7-5ZcK$gm$itAdMsgBUmE|qTkRJ;$A~nb8t8qx<b;Wp(`X^ z8oEN-A%?Dy{9@<|tA`-vjG-%}oH2BT)#K1|)d1SbG=elf4P7DW&d?Q_&JAGpS(t*` zNk))KIRitOdmxi$hOUrCwxKH|o(x?f;b!Ox9n>^{<a0w;=p>&j)EpB?IbdK6ZM+#k z{AFO^1}R?*A(NQ~Mv!vOzyR9GF@(6wzz9~qLdpR{S4e$q=n5&14P7DSwxO#VG~A%^ zXaXsZ3{0T;*8~zS1}4yOF@fkeFoJfPO`z=;6KK1@1XAw1LOT%#29UuB14HPfs}ZD~ zWncs?e~ciVU;{&#I!JytFocvNhOV&5CCKEFp)0JN2N5?gfDGap7(?U@jG>)qV`%sq zL+d|dX!&Lg?F1M@CXo${q4~%d(vCHBgQj0&Xt=pS$_GO?NIo!hgS3wf-5}}P&<)ZK zF?2Hnmyd>Skowus4U*ms-5~kG&<$dbp&QH|*rWv{e;c|%2BQq!pq+3xNc+{$4bpx! zbc5wbNT=Sw7+PN%L+UL9V^}_d`riavzM4S8*977Y0~6?Ak_lum$-o5GzJ=r~0~5&L znSlwUy>DOw=}Z`yK*|vV6G(kvU;?d=O(5-O0~6?=g$ZO5!N3HXK20F)X#*2z{F^`~ zJq=7Clb!}9kanzr31qUtzy#8MHZXw>5}O!7+LI=bPP>5#wEb%WnItkWF#?CXfeEA& zZ(ss#517Eh0UFOHkjX*=6G%K5m^e9u^Q{TAyfJ|cRv4H-%Uu)5WTSxrG+i6O28Cha z4~s9z<fx$=WKhG<4WiG`4Kmna=mxRZ&<)c0GjxMYA{n|tI)R36kowxt4bmw$bc2=~ zZjk!N&<$FCxIqWi+#uzRp&N8?%?(<vxIxNiLpO-~4Ba4uYKCsm!5=qBd>Fbx;=#}j zGDu`#3{hub3{hub3{hub3@zu4A?eY;2-XgV)`Lc-knl5tmJ>#hdeP7gGMH@W21$R0 zZqPwxH)uWY21$R0Zjkca&<&cNj3MqaFowAcmi{4=ScYzpexacoWD?8J4U+B*-5}}C z&<#?q7`j2ypP?Hh-5I(;;?vL#k`D~sAmxUk8+6dk4N`6xx<S&5p&O)pF?56E3qv<Z zy=dqLorHIT<Of4H=w!SbWH7<d4O&hcL({i0q_b{d46)b17?O_-j3JYmhHj8SCPO!9 zyVVUc$YkgSEw|ku{Tf3zNPFJU4N~tLx<UIfZjk!P&<)ZrG<1WuW8EO-f}tCvJ~ecM zv||m7q5W55C&(bKF=TOpfiZN@zzs5}XXpm0FAa>L<&81K-v-7Ie;XJ>{B2+i8C)<h zhNL?KV@Utgz!=)Tc7yb%4BepZZ#PK4-OvrvUNv-s4Bi{MLE1rvZjk<{p&O)~Xy^v1 z4-DNP`O?r0+Rk=^4qCcF2Kfx#AoaR|F(e)gj3MoJ17ql<o-wpvY780lG<1Ws8x7r{ z?KC&YpqQZ>q}^ob1{sVpbc3{?4Ba5@MMF18`^wM_Qa>5GLFyAjH%NcS&<!&AZ|DZ8 zUku$KgGz>O(Dt_*q#QDIgAT5`LF!3EH%NVI=mzN@8M;CGRfcYmdfC7T;w}RdNIEev zfus`y6G%ESFoC3J0~2VyWdcbz1}2d7VqgMEzXm3dbYoxw8JsjQfwVUaOpGDzd=qHA znn1>P3{0T?eiMlQ3`~rn<uEjyO=0CMw4ZGP310&fNPpVE1QHGgCJ_G{m_Xyh1d{#@ zOrY&*6G%VEzy#9&F))F)V@#mskqNZFY65L<n?U-f1}4yQ!UUSnOrZT)6G*?+z{CVn zKAAxKF(%M{jR~xM1q)Y5zr(=96dDfD{*4KAlE4JozA}N73kD{T_%kqpq+bIQNPTW# z0xd61AcJxSCXn=MU;=3m8W=#zDFXvYIx#SShKm6-oD3o5k&ywUUNka*m}6uBsb`D~ zApSHmfRryr1`u}`89>T=BLhe|ZDas(kC6c+{TUfR!qLb8Qmz{rK+>U+0i@hFGJwRd z5wu-z1a+U00i^sjGJup@Mo{+}89>@CMh1}j)5ri)pBfoJ$`vD+f1u+RMg~rh_9}Ex z-2ghMZU7xrH!y^jOVGh}1L)wo0d#QPzz|}O0d$bv06NHS03BpEfDf`m+GDN;koK4> zbbQ4XI$q)m9k+0W_K#hm{a#mi{}$4paE11}T%r9SS7<-L724i+HGs6&U7_u9S7`gz z)d14pa5aFG53UA~{(`Fkq#f&O0O>cl8bIoK0|Q7sWnciQ*NmW(0tWE-fTm;Uq<|50 zaNh_zxNiUrS0m^of)R9)nSlYc9R*#qVE`R}GJ;MP7(n~+M$kzE1E{+Vpzbv=Ffrf( zFA6oX&`VA%PK9zTkvOJK$Q&0WjybZ7IkJq20azKh$pu}1VgOB|2GDsI18C40K$EBe zY{(2cPh$X2;*h3<5p+F`kpZMhVFX=AV`KnnA{d!Mst6<KyonLiUL)xG5hLhOsgbFp zBh;4&7aJKE8iQR7k^$L-%rQaY7#SfrrmkiPj)4iX0Y=Ci6K7;)NS2y9I)Y_D!DIwo z{$m7P{$pSS%L$N{jRDM?&}BeI&}BeI&}BeI(B(o#(41xj&0$8+9A*R^xio_2G$UvZ zGlJzXBS?v3U<4_V44~6y2GHp;BWMaXf-WC2FffJ&qcOr0uC9<~u>pMU3)0+jHGnj? zTn!+_s;dE{xn*DgE!K@8%~}IvNcJ&;W^*IxT$%xVt_EIwK#F_lT$+&)q#8GZO$WfT z32b@-x`xRJy5_;a0NPA4fL6P(V$}#*tr(cQf>MHkfiWWP3=E82!O;bh0ojPmF@<vs z42+SY*vJf$6F_<l42%#N2ILeZJuc=*95-Z+lObHj$jAgamzqPI14=yx(0aoFI&NkJ zT?}RfEpH59<8uZ^&{#7<#F_!L@Ha4Uv}7v<HQ~W!xDj+>%Luwq(+Ik7(+E1JV`OOT z1XgYar64t`0knk(tvL*!HJmH7MsbB_cSsMw2)0}dR>MJ;V;Vu1i5o#j4vnBA!bZ>$ zVI%0W4<qO_n~^D`rD5m-8PPCwfwUY9T_8PMLl;QY8oEGAT0<9Ti_Qhw0x*KO+Xz}y z7#KlnOhXrFi@*p{!yCFlTDnHi65h}S+R}A_v}j#nBXUNNn%KYy+Jbd~wsc(}Gbn~G zu$~n(3m8F1l#L)YzM%^wsT)CSFav0dzyMm48^CLNNRP(|T7wxuYcL}N$jFcpv<5SR z)?h}^lHUkkQ$bo5uJD>2(h@g<))Yq2V%o?6(z9`ewm4j&@#_lBnnnhYmZ>W=CAz|k zZ%CFmbb++IjhrDhrV+FVFfxF&Sd9!IBREC|kdZ4R16T_Q(i3%sCQ?HeNK4Mh0Mc?b zGJwS|qzEu{fwbgZ;Vl_h5d?`}S6Ehu*33o*kRG^^0i*|RWB}=b8yP@);6?_J9=MSK zqz7(f04b`B3?L)4Mh1`(J|hE2OVh{zGE(LWjVD)lJVBPh7#ToX;zkCLkw#Z&OU)J9 zB6Br><O^45(dY_o0lGrt-xZ#pAnC&u+A?#6w;&-cYgcFs%@x{ma5aGR09_3rJwR6j zNKenz0MgTQHGuR8Tn!*SJy+;<0$1oVe^&!Yi{2HwjNa7%lHXjR%jjL9%Yt1EAU#4? z=(1o}=yGCL14z%+6}nu~6}sHe6}sHe6}sHe)d13?bA>KfbcGhxuF&O*t_F}98dn3z zh_NelS(YnwS(Ynw*^n!Aq|g;U(hliax*9<8u`6^rj4O1Ri7RxOi>m>&M+^&3Lr4$S z02<B)&~P<^E_*YA&I}kqm%SN5XAX>@GY3YnWpU7Y(+Ju!HiEW{ji57RM$l~(M$lz4 zM$qjwMzG~G&~##81euXCfX#>)L(-{%fujXKs0EjjnOc-uoLQ`woCmHMjG#R@BNt~L zkbFsIPD(0F5}HX2j3C2euCTQ<Mvy=@FmiF^0yPhfTpaaElcDB;N01GSA^E}pnm!GT zATwreW{~t`U<_>v7(++=j3Fau2FB2lL}SQEnSn8M*|0HWq|Cq=GLmFq3?2D1hK#To z7(<tp8be0f42&ToY6iy8kwIhVh@~;KMQjXhHyJ}m42_{9hQ^SQBm-k;i`*F6Q!|E) zC>a<-d)&s55gP+&O=@5OsV|J6%~vCMO$+gtkpaZNM$l~wM$l~wM$l~wM$l~wM$l~w zM$l~wM$l~wM$l~wM$l~wM$l~wMuw1)TO;VQFC*x38zbm4dn4FN0wZYo30-b)WC$s* zjm+IlLAA66wAwO+WJ4o!$ONtttRrgfW(HAa1d3%N==`jaIb@!|2)Y>G2)Y@-$Pi{5 zw6r#aH1LefAq^@c=sb^+Ib<B#$PiLH7#TuJV<YJL4I@Kn|JBeD+%5sR8qwS_cY`#m zxJwP)EKCs%DI-G{B#yZoqEQ6$4zhko10A9tspW3yg2XX*L-clx3@wpb`{qauF_4dt zO-3}IjLe}O6m!U!x{)cQ<!)pOX+ap7LP}mEQ%K9&$Q0VwH-)qij7%XVvXLpIC17L* zO=+f(Icp<R$XJ_^DNG#Nhc|_cEf_gL#$1h@pzbh*<ai@<NQ=bC6f#!nY5+~CX2#&g zvymB$4;dRXGK18dM&^*3)W{4nhHYd9$(cq@P#U_1$H)+}Aj-%XvcT5}nlp`zq56z1 z48Um#nzM|cjeH|xXborx4G-v;fRQm|?B58QGmW4**vJ?f4$v_@Bj`d&Bj`d=Bj{YE zks)+!1Ugq{WC$7KG=i>8GJ<YMG=eT<G%|(Ebs0H97W5lIYYro5&0z$c!!Ux5JsCmg zGK`>OP)5)>4I}7UAtUG<gAsI0$jAgbMq&aP6EQM@rUMgbe49XOU?b?9ixG58&d3B( z0~?t@;}N>y$Ot;7W(3`EWCR^sGctju4-?4R10(3h1taJfoe^{miV<|7xseHEOw`B( z8t*31mYE5(Wn}`5e-mhWFoBGT8ks=GM2$=!b7Zd2lE)Rg(Z?0GmI+z{xkA@6xf()B zQdj62Dp%-+F;_##n5HXqLy4;)WbE4&x^cu6x|YZlTEn_R7nHj~=iprpA?|iHgp6^z zLN|!GLe~VjLN|)ILe~bl8XCKRia0}K0|;dZp^PAuF@!RKP~bAt&=_1M8XB8J1T7#G zq?2Uq2;o6GKgP}w9@GX`2+s{nnLz9_f!JpPvCjlzp9#c16Nr5#5c^CZ_L)HJgY;Ki z4IwK*Tn!;3sjko!P_EGJEv|-;kyTgdHWXLr3LsZQ$jq`UbS020bX$rmbVZP>A<TTp z$f+xIWsxg%+lMQ(ed1~e86kCruH<orZUb?JuIO<!g!F@4q3tDC==K9wL&%7~D|8!z zt0ANx<O<!6;0j$K;tFj~xkB4duF!UqE3_Tu3T<B*7(&|V2GHDPU;-IQH-P2>14HP{ zwIO6?%D@=9qQDSR>KH&%w*fSl89?hv0~1F`{}oyz89>{s28NJQ*}xDw^KA&}pBb1y z`X>fPkW^@31nG|$KvTDY5oG4rzyvaLV_*!Oxi*26iUuZ-nPUS(Na<_<jaLIB==Kmp zNc-Br2-3eZFoK$62r2aqpt;z<#2n&o6G*?xzyvacVqgN9X*4i`+Ghmm=NK44`WFVq zkoK^FA!O#;zy#8sHZX?LhLBuuU;-JDHZX*?Gff~Pq6Q|A5n}@rNWaR!5K`M27(zyz z4NM>n3<D#W`LOVSjMy4LOBDkXNNHkV0%=hgn83mbQc4<_xH$90gBz{MMft_BX00o9 zm948Gv>9mxsU!@HAq%byj3Je=feEBiG%$fI05vdyOfVXlKn7wBOdz9&1}4zvp9!>i zX##C-nm~6kK?_L(W9WoAw6ZcVf)v&UMv%hXz!=ibGBAQRgN-2FDgz_P#F#5=ceD{C zyBI-NdmBJUundf$6FJ6^!qC7N(q40g?m~7ogj80pum!HhkV4$R7&1ZQ3LT^|FosU_ z7(*x4jUm~=2s)5%1YK=zU<{dPcZIHAc7?9$c7^Wdc7-)Jp{vvlpp}_{31mTu0kqO_ zh3>|2g*I1Rp$mXrVY_CHAQP4bMiBoP7(?U5*w9osIX^cyF)=wgHLs*7Gd-gO+B<QD z?I<;ZG?)yGAtS#AMv$(rfia}v;|gsW8yG=`5?l=->Rb&CocNO~i!yU^GLuUZGjsHk z^Z4NW%w(uF1}4y+j1eq{LwfQC#?YQLbiB(I+Cy`Nj*GcM7lOM&Hxj!-H?F%vH;%hP z7s4ADLwank&~Y?Z=*D;hBS=rz2)2d?R^P(b#u!6JundeKBSr=$j*vMyBMZnHP$S5Q zgn=Qn<T8Tz!wA|_F))NBL1;;32x;#a7(v?L28PfPUuZkbzzAjzWNyj82s+1Q1esGc zGK7>wMzFP9Mv!)gff2MMF@h#V6R7zn(4Mmqq;Ftg1ZlS#7(&`b21d}5%m_LdYy@c^ z85lv@Z3afr62J&Df@EL}TSEk$do+ghj0}t*?LGrzXqGmHWN9PlhFl})23I2kXwT9F z+QT=2tPM6WfsVWxLuyI`6UfM!ff2OCGlsNN4UC~{L!j*q0~6?)2xG`vJ_8dALy_$K zqWrwfVn|}nNlk;LWdmc#u%v+rWTB9OA*8x+h3;-JFoF!P7#Ks#8)N7~SYzk{8AHf~ zl7SH<5{;mV&%g*$jkrP==(<7|=DHd}y1A~<T^6p;k#1Mm0zM<iFpYsRbfVc1GK^+m z1RWVShIV2Mp~by1EDu5wfq^k}qSFMjz|Oz~vcS&35IVtW1Pw%JBh$dd9FllV%)twI zjGz;wMzCFSMz9H1h(C>>Bl`x%kmim7v{PYV0*w@CW7@zN((ExXg1XZXnurXciN_FD zE<+Yb7#Klm6X?Q36KEzff<&SbbT_pTbl0^JbSA?Hwm{w(+PpA=R8y{okcBM<Mvz9n zff00pmJuwGLl$Tl7(>c!17k>{GlDMQG=lCPG=lCPG=i3+M$lb^M$qA8Bk00PBST1a zX#{Ny8$qjSBj^H9BSXl-H6!Q(Oe1I`*$BEo(+JvlHZU@WG#iW{6U7F`kYO<cBiIBv zbOgu*GOS}@1f4K9hIAecjGV#xji9^pjGzl44U8d;aRXz>0t6%2f-z%bNc<Z^%`=AX ziiLI_4U8cRY7LB`8%Rtbg^-aUbRnb>WSH8(7+Q}QLgWohAk9G|L&(A+S3_8x0IBy} zp}SUHp~Gqh#*ogBD|BOsE4-NqT}WXJX=WRkzzSJtVPOPK=SGlOMgt@0?jR%Rf)qn& z{xF0T!miMbAqGZ}=8zF|H=q%8L97vU*S~==q!VNWo%l5{gbbh<7(vsE5i~rEpzRhT zNa1E+1j*k9M$qs!f}|@0BWU}_2$nA(g_<jDVZIS$z{bD`mfvBO3Z$9m3R~cB1nJxx z7(w&35p*Mq5o7_aff2MYG=k*^$O0DwBgg_510!g&+z8rEFoG;}F))Jp57s<{3@{lO zK?aHpjGzl!jGzmWjGzldjGznhjGzl*jiC!gj3LuH2F8$XjDfKUI9(bTn?TbWbYY0G z3Ao%bFotwv42+@EI>wN8nSn8+J!W7Gt+b4x<&iO@`(j`W8B8%ShIC&HjG>jXF*Lsz z!}5nI)LvNSU<$Ptx^T`Iy0FC<+HEj~bh-_UA)RgmV@Rjlz!=*6HimS%4U8fA-oO}= zzYUDdp#Fp`gfK9MHmi*x3sVh@A@zcRF|@uhhIR*xq2-=2B)=FKLl#097(>fzV`w>T z4DC)BL&|Fd=pc-NF|2-oj2IgjL(2(cXgnK3<JlM*&&JSrHipKlF*H7nq48-9jZYJ3 zIGI4ER}4%b(<=rhkm(fz6UcOlfeADnnn2T`3DiClsC_0-b4?)T8oEHrWkVN8y<q49 zsTT}gAoYTw3#5@`=mKe{8@fQ+^M)>v!52dpNcYUp1yVm7x<DF3hAxou&(H<Z2r_hm z489n;K<ZUP7f2(;&;`;jF?4~ndktM6<(Hugq+T#|fz%g<E|3MihAxmsp`i<;o-%ZS zgtws!B)kn>AmMH30_mn1x<JZPLl;Ol*U$yh*fey3)K7*kkb2F~1=2_}bb*xfhAyya zNl4?z&;`=yGIW8IcZM#Ia?a2NQob3wK*~Eq7f3m1=mIGp3|%1QgP{u~UJP9z@nYx# zX-pfsK-w#YE|BuV&;?Rn7`i~p3qu!3d12@RDK89NAnC}^1(N>_T_EYj&;=5&hAz-} zb%iWgGjxS?mknJZ<%gjwB%K+$LiM{s^}9m#yF&H5LGpp28zlW3x<T4AhHj92VCV*^ zcMRPi`N7Z)k`D~sAmzNF8>D_Wbc3cZH)#5DgQhPxNIGzZZjdl^gQN#n=)!$NH%Pj0 zg)Z<nbc3b?H%R=sLN{a>x<TU66}lkV&<zrwuF&ZrLpNyrxk1C-4I1ulkZ^Z}P9GV% zLBhcmdRm*I8zekjp&L1jpu2{Rpc@8_pr=q6K{v=5K{v=5K{v=5K{v=5K{v=5K{v=5 zK{v)3K{v)3K{v)3!51b$%0(mi!X!w!=nCC1W&~X+Vgy}AU<92GHG)ou8W}+Pen!w~ zKO^Y0pAmGot`T$rw-I!h%E-_hGT05>g>MAiXkY|wPa7FRhDVH`r=A%>hnI|?yQPhw z!yZP^dff<mdYO?Sq?|G`gp^Z8=8*6<f~HSLGf290G>4=&M@z``lN<DOD>vxIS2yUX zQ*O|Wscz8Ir`(_$RNbJbP`N=js=B#CrnlUn8)e;GA?+MD=mu6d=qXKZ&<&{uMv!S| z10zWJVqgMU;Adb0=`<NZ`w2$S(})a=Amx~W5p=lB5R$$PjE!ADgZTy~(E8dK+I}>F z);}iDdIvg4Y+wSdr%a&j4HHPZb%W+V1L)wlfr*O?_$m?>1_scLRe>@L3=AN)3Ij9f zCY(SS24)5>1_lNd1|E>QfFB@|fq`uw0|SEs1hY+KU|>*$U{*s01_mVvX3b?_U{Ho& zR&THwAafX4-Z3yRs6sGX3<Cp$8U(W%FfcHvLojO&0|SEw0|SF50|Toy0|SE=1hcMX zU|`UOVAd%N3=BFD%v#OBz@Q7ktbq&+40;gETEoD=pbx>Uz6=ZuAUlj07+Coj7#NHh z7#K_$7+8fE7#PeL7#J)W7+A#^7#OS|n6;jPfdOQ<H3I`{69WT-4Ft3HF)%RLLNMzj z1_lN@2xjePU|_I^U{+HG1_lQRW_4y@U~q(DCI$uuCnyGqf#g8glYxN&6cZpE!oa}b z3dQjZ3=D2i+{wVe;10#T3=9k&P`r?VfdQl+gpV>XFnB>QBPRm`11Q|R85kHr{`FyC zVDMpJV3c5BU;u@MF9QQ3D1Q7H7#RE*7#Km}>d(Ny;LpIo2y%M>0|P?<0|R3j0|Nsn zOoJF07;70A7=j^~v73Q`0p!*Y1_s8N3=9mR5X`ugfq@|mf*C>X31?tn2xnkmJi)-g z5COrA=NT9nA|aUZDgy&U6a+KAWnf^4hG14u7=zMB3<Coz$Stu93=FXh46L9qj$>e8 zh+|-2UBke@01Bgc1_suZ3=9kj5X_dwz`&3Q!Hl3Zo5aAtki@{i1k#(#z`&5qz`z6w z*AxZ@h7<+{rXU6ehExb<0*Qh2r!g=vwK6a;q(d-M7Xt%B1_U#K(q1M514AYQ1JiN_ z28JvMW;)Ekz>p2WOs5$b7(nSbhk=3VG6MqxC_m&fFfe^!U|`6DV5aX33=H`Y%*@Wf zz)%3e%%F5v$iTo*$iTo1N+(4O3=BmK49uW(QOv-=P|U!<4Dv?_0|P?|0|PUNE@fa~ zC}m(^Zf0O$0L57u0|WCC1_p+52xeZvz`#%e!OR;O7#J!cn0Xrm149)AGoNK(U;yQ% zY6b>YkiDS%Q^UZ(3Q8lOxUXekU<IY$ItB)YItB*TSquye3m}*clovp0aUlZ(D=2R* zVqjoc#K6Gvo`Hd3F$A-GWME(bxoHUl11l&!g3`)T1_l;Tm@H#pU|7b$zzRx(pfFv| zz`zQ+FA3!C6$}h)ps)wU@k#~;)(s2{467iRbr%Bz!)gd-?O|YG0HujF3=FIweW3DU zEdv89D1O&5FfgoRU|?O(z`y{-Y@j#+nYDp|fpsSX0|O{rHZm}<&R}3**u=oVu$h5@ z^(g}b!xji;1Er0v3=9lg85o$`85kHqVYiKeffZC9Zf9U%*v`Pf3KHMJz`(GBfq@Ma zCm?foGBB_{VPIeYxpfx<1M6-E1_mf*1?A;E3=9l=7#P?<`Drf$1H)bh1~!nJLFVpb zU|<8~t^EuP4Eq@vSS=VB!1qWUVqjokWnf?cr8y7=mD@)c7#Kj9nSp@;l=ncGgMoqJ z7!-r@)Nuv|1`r074WK*;N~fTFbB2L|;T!`4!zl&^22lP4VUWHH3=9kx7#P?=`TZgT z1H(lI21Zc1dx?R8;R*u-BPdOR^6*s#21ZcYxW>T1aE*b15tM$eGcYh*XJBBR#=yXE z1A-Yr<=ssN28KHf42+<7zRSSCaF>CB5v2AW0|Uc71_ox3{Cx%nhWiW*%%HUYfPsPG z0RsaQ=w{4^3=9kp85kIUGB7Yaf?y`lO_+}v7#JQiFffTTFff3^`UwLA6UgtN_<PF0 zz$DDT!0-%$nLzd2a|Q;6=L`%?pz`ts0|Ub=1_mZjUVqKN!0?)ZfeBO|ykTHqc*nrN z1WGTUbo`!yfeDlbLFx4a0|N`F9s{N6j|>b<pmOFD0|Ubs1_owOZTXdff#E9y12d=` z{>H$-@Qs0i8RQ;Np8w9kz&f3QfdQoF2Ll5$sE!5s=QjfbGpL;Z!@$7shk=2)g@J+L zF9b7#(#}87HDU}5ETB5`KLZ29e+CBT?V#&GA((-ifq{_`f|&#u7#Nu#7*u;RGBYrM z@h=7jMivML-89O`%D@1^Oo9vyjBF4Lt|!<T7#P_Z7??oy2L}TKBgpNbI)jse0aUjz zf$9=21_nlu+d=gQ$Zl>11}2ai9tH+RP#A#f5?%%dMqUO6CXgCFXk8S>z`)24!Aubh z42&SR3NSFRH#0CWg4`j<z`zvDz`!U3!JsmlQJ8@NgqgA!7#Kw$7*u96iZU>OFjF=I z1EUxOGo&#vFp5JkQx2rg1J`@$3=E8t5X_Xzz`!U4!Ju-TQJR4PgqiXf7#L+Bm|+3~ z1EVYiGxahsFv>wN!$bxKMtKNk>SJJFRDfWHNem2(iV)1y&%nT_1i=iGA$2XNzGVWL zslvd(r~)Yy8C4k=K$vMh0|TQP1T(B;U|>{-V5WHt42&8O%y5>0fl(8JnN~9}Fls?C zDBptWZxCkM1j(P^JbIpifl(KNnKm;pFzP`tC_gjmGcbTK(^dusMgs^2=WRm<21Y{$ z2BsAZ42(t)%ntIGF#`jmF#`kBAqECU6DS77zbOL)qbUOe(=i4HMl&b|#jQC51EV<u z0~5&277PrG77Pp=UJMM3mQW0e2P*~!Mk@verrQh*jMh*LiW3_K21XkO1}0D$Vave4 z2*RNFv14Fhv}0gk0+ko`3=E9+3=HfuA?+1Vn}z8Xq}&0OJ>WQTf|N;2pmNHYfdN$Z zfWyOufq~J5fr05Cr2GPvVc@WFV_;x(V_;zV&%nUw4#l8w@?c<K^Z+-J85lu+0AY|{ zL3zWQfq@B>r$G4ugh6USdBB%}ff*DIpmYzyo(v3(p#0#^z`zVj@1V972!qTDWME(n zWME(hrF~F43xrD<7#Kl$Aee!H85Cxqb`}WNGcYiQLNGJP9#CEa;RXf<Mo>E|oPmKE zWFIJBfp8-O17jovGlT4pVqjnd;T{GC#%Ks;2IZF+1_nkD2Bq^@1_s7h1_owOeu-mX zU<6@MI*(^yV2o#AV9sD*U`&8wP&!X!U|>vSU|`N<U|>vw;#mv~jL8tpT+P71m;%MK z85kH-A(**_fq@ZZcNzl&J19Ma>`P~0V6I|dU<BC#!XR;wxtR<M%&iOzjG+7v!fO~9 z7(sbHn}LBD<QGsr2jR6042+<>oy)+$4Dt&oKZEc(1_s7_2xbQPrGSBf5ro$>FfbNE zFf+(6MGOp#AiRNrfw35ZnL&BBgn@w(gikUsFoNO+)YbyItqjseX1u|`z*r8!%)1#F z7%QOoCIbUwB^1A7U|<CKt%`wx`4R&IBPd)z_&oyyBPc9t7#Nr@L)zJ(wl?Dj1_s7D z2xbPQVNl%HGca&~;u#d*4GauS4h#&8pg3-X^b;7H7#Kj99i$Ibo;EWuFgY?XFt$K2 zJ1BfW;n>Q+z;T9wfw2vO89-^Soq>T7)P4b_$qohv#tsGsCQy3rWME(f)k~oC(Z#^P z2x<$1(qK0O1E?Rs4l)lE2R#f7OrW#~3in<H1`bet0t#zTp9$n|Q26#UFtCHl7EqW@ zU|?Ve*#jz1LH$UO*`Ts!5(5LvCk6&aP`Npofq?;}Zwdng;}ix4=HCnqj8h?)36#dB zF)%QK+85Uu7#OERFvAH32F4js45|}AWyDMd1}2byL3(B}Fff7IE1<MEn}LA?l>g>1 zFfh(xVBi3y*|`i1j35ju+d$>-JO&1)zYGkFpfVbSLFr=w0|O%ngUXVH3=E7585o#B zb>Jcf2F67U4D29%iy0Ug7c($$fYRj>1_nkD28F{?1_n?+i5XO`En{F{T*kn_4l1{o zL)t`Oe}KYh1p@;!C~bo3gOv;n?4a;j#lXP0ih+RxR7Zi*-)aU1W>9(r<p&T3xdjx* zYZ(|gb}}$9g3>(*gWLs5>mUrW6O_I;FfcHK;(sFp1LH;p2IlV!42&RmY+_(w2Z@2| z3=jsj=e95~Fm7RBVBW#NzzC`{K=>;I1LHObW<JNjzzAxKY-eC#2c-p&x*ZG*?4bAu zxnmat1BWsL10yJJ>}FtK1(kJs7#JA$Ffg!!>hQe`42*jj7&uNdFfi_eU=C3Iv!8*1 zaX$kC=Q9Qd#sdrtjE5K)I6!&jFarbQVFm^cP(6H<fdSmt1eH^udgvGf0~4rxI?lkr zc$|TO9h4S8X##{nbuuUqpJZTQI>o@i2*vE6v;eXjgh6!+D6O1fU|<HNVNe|g>KlRD zFCc%OV*p?33hKv#FaszrUtnNhyuiS~1PTvO8ySQ_^#e%m5(5J>s4WA^+aL@ITTp(! z!oa``O8cO+2*RMS2Zi-D1_owOJ^-a@5C+8osC>D>z`zX36QD8$gh6ovs`G9!FffDi z2dEweVNl$F>dre149uXs0;(_XGB7ZK%7c3h42+<5HmGj8&%nTVpMil1)TVpDz`zJ< zXM^e{Q2Y8J0|OJN9ruWVff3Zs2GzZf85kHrZER4R=m`S@BdDDXir=RU42+;QHYnaf z@dRpTgWU6+fq@a!#s>NE1p@;k2!qUj$-uz)l7WE<6qc_T7#Km=hk=3dH3Tz*+Invo z7#KkqRL8w#U;vE`FoW8CpfdCw0|Ps#i~*IK?->|4Ky5BiS^0s1fe94n9~l@JKQb_| zgUUisIRa{zgX*-;3=E8)85o#A>EsIo1LGG41_n_0fYR|-1_mZjn15qnU<9?-L3sw0 zAHFj%aDd|K2Ll6WECJkB`U&ZOFoW9Kpt}DT0|Nsn3_)enZw3Y?kURe{FffAJ@u0K> zDm(r%Fff7IkDxXO2!rZFP&)(EhS!FqC(!T^1E}rG$iM*V(=dVB-%Jb)Odts%1_mZ( zDCTEiU}Aw_@E8Ou=sIi$2Bv%l1}4ze*lf`82#|gdE`aof!2O}ikoX40In#Cq1|}{D z2KD8bK<#%B-T{ewaQyp0`dy&D7qch>0}~$vgW57oAb0RHFffZTFo60SAPlN|Kz#`i zW)5IrU;?=tl=eaOkT9el#vBL<BXBrvV_;wcnJdb`z&wqCfeB<5sLTerO&rpnW1h~y zz$5{|j1w3bm?R;XIg5dTNeY5NWjB*F0|N*%*D^4G`glyT3=AAsA>j@Rd(hYelRN_h z7%yO8U{Zi!j_V8zOo~t(&cMK=#K6F$%)r2LgMoob1%g3og-Mlx0fd>)GcYizK`;Zz zPwET|Odt#jOAQ7FCeYYrHUk5bCKMMkFfeIBFe4~TK=G~3z`zXhpAG{9lMbZ)$E3@^ z0K&{5zv?kCFoD|ZK@1E``Vh<v^0xs40~4sd9?ZbN1Zt-nGB7ZM!oY}ufeBPz-eO>2 z0=3hP85o%NFfcHgK=Dlm1}0ED9fUz?)Qo|F$&7)4xtxK43DiypVUT(Y1_mZe1_ln0 zIiR*VXgn0;7Hb9uCeXMPDDFUQa}aiCU|_O^U{Jq@3Dh<Rl@p60V{M@EHs(}F8wJ!( zVFs0tjtmS;P7DkjcNiF$oFN!A-pK@NkAv#cBMb~ot`N*|4>C>%9;>TlU|<5-2g0DS zIS**t1e9Jq85o#Acps!c59-r1gUkc9&Ak~Im_hdVFff4otX+^kDyW~z3^EIpzCrC} z(D;Hs0|OJNeZG@{fe92(APkBNke>q?7}&2s#tK2>h3wZLeN<3C733eL5C#Si<|t-h zU<!p|kek977??n53M3!FzyRv+a)8W?WME*5WMJS}!oa{31;HH485o$N85o#i7#LXG z85o#iA(+JrQf7h5Ef$cO@eB-1AiNh+&w=VXrfvoXrbGzl0Hq_)cxMs=13M_cfW|wM z85mf$GBAL~H$j*kl(s=}1H!Wz7??m|n$Ez$G=qVGDFcevF)%QJ#yB$>7+65#n4tWY z#lXNmnSlY+-v(n)IDq6p7-S}Bj1z=Gc`A>A0o0%70QnD8Hi62aPYeu9p!@*BpmCET z1_mY&{=>k)1PVJ4{>i|=R06^5a~K$yN+FmTlxE8q7?{c!7})1BFff7AZaD)32gtq( z1_q`I1_q951_mZjTB&4UU<Rd;Dh39oDh39Qg$xW#Ah~J=24+wg)-W(If!f=kcmS0b zwG0f*pm?fdU|_0aU|<HNoq7farg{bjW>ENp+S-i_4D6uzYGPnuYGPnu28|tq%C%+& z1`bdjY++zvYGGjD0L5J^Wc-*zmVtq(4T3p9<x@KY15-N#12f2tp!RhK0|PV2Pn`@5 zOq~o2%pfsP8tr0W-~^?AP`q|CFmOWaSEe2Y2Ii#<450A{5N2M*zyKP90Ac163=E)g z2M}i8!oUC;YXD*9iwq1*6Cs!x6i1UFbsYz&`~$`1WCjKfP?<M{fdMqO%>gQ7rZO-v zO=V!<0F?)za(Nm90|%%q0hPtm85r3AL(|F(1_rie3=B-5_Vr8#1`bd@0=2JaF)*-z z`qH4ZHJgEf9b`W!E<tT<P}>3&e;|C6fdMqe0mhdY7(nA7Aj}Rj15`#YU|?W&Vqjnb z#os~(1`be}w}^p(X%Pbh2dJC_l{Fv?$`7Ep0bx+u2Za#`gYpE(eajdaI6&<-P##;( zz`y~jUsgcIIha9dXC-884-^MXpfClsu|ehiY6b?TH4F?Kj~E!3)<Q4`sO$&jjr9x+ zOdvmPU|?VZjUj`|w~Y)8OdA;(I6&p&CI$x3cnmAZUz-^iKw~hhpmG%yH(MAOI6(dY z<;krK3>={P15_7oV_;whxfkR<(0DSaeFmzJcQ7!pg2D|{Hi5>FLFs2V0|V1;1_pLe z-T{@}ptdxq-T{>hdl?wme=#sHfy%^v3=AB-3=B;BA(#V{rVcPLFdblE-~iPJ2N@Wc z4l*!sfa-ulkTD*1kY5fnFfbiqU|<Ki9~4hV85r0>bswmGeT;#D4OAW+hqSraK=~Gw z{!TD3aDeJ2Q2Y8M0|N)BK0F0!Yjc3Y_%s6pXl{f9R0p1c^vO6uW3^`?V?`XG_yWb# zIR*v}Q2hh4?>qwoJIK8tH-W~YL2Wfqn!d=u!2X4SfeGZkOAHJgeUP~p(0mIAs4ogC zudgsLaDu`R)DF1Hz`y~juR&$jH3kL_P@V>rQ`Z?7I6!$Bls9fLFtCBjEl_=Vi-Ca+ zRA$|Vj8U<H@+qj^y2HT01`20ToBA#T0~@Fe1?AOy3=ABgd<?ShJ_7>>sB8e`hX)J{ z9H4q06n_sH7+68>0;Q)%3=FIwvq5d@#|#XtAhn>dc*4NI0V?Z2dHyK_0|zL)pD{2n zJ!4?t0EIEAP5qpKfddq-FBlk@UNA6lfWjNprhdu5zyXRA(0KM+1_ln08K5!jcMJ?1 zpmri?3>(yD2GvEN_VRxQ29B4Iu`STF0UKy+f{}p%)V5`-U|?Wof?&2r1_owk2xe<$ zU|?o}U^Y-0%F4jN%*w#PQ4Z-Zf%;5rpfZ%5fdMqH#nu8D`v#4Fvw_N4PRO`8TLWb5 z8#MmS)(YuAgZj{Hpt73>GLFs$Drb2a7?^n(7&t;17?}AWm?H!-z6Kg&V*{1x0+4Yv z_9u{WG|*TY8>s9Sg7m%E|1vOu`V}C|4jPLWVPF9DC)hz_?x41(C<6ogcSu_n)Sl(A zhP2N>Z8Y{n3=E()8L0imu?f=N0=2o=&oVGDOG7YQ8v_Hg3<PuZGcYjALNEuY&n(Bl zz%0kWzya!GD>5)JD={!|*fKCMD?>0_Hv<E+3IhYPDgy&sF9QR!8U(X}%6fGM24-~z z1~yPVp~1kwtiiy*2C6?a85o!~85lUi7#NtfAej9z0|PUtU8&8$z<!Q_fmsKF*`G5o zFzYffFzYceuz~6reFg?*eFg^h2Mi3%1`y0Pfq{V;)Rr`4VBkn%U|=?aU^b9nKy685 z1_lmLKh}hSf!TzCf#Wa(1G6avvxEAdpthtL0|Wa_1_owx2<BMJz`$$)!5nKK<Cvha zOb(D;RtyZxRtya6j~Ez0^PM2fv7Ui}*#?3+Kw}@EFtTM}-~_qfj)8&Mj)8&W2m=GN zJp^-r<~SV~7?>Rx7&t5;bETm9Quc$8Is;U1aDdXYGo%g30czX1Fff4Hh8&=@=?a-s z<p9xc3=GU}3=AAU85ltALJ;N<hqNI;<E9+H7#KkP84zZ_$iM*V!!XA)FmQtMM*;%_ za{>bc#{mWgX3#ijA_D_EXzmIWj>QZNoPv-!TF^KRM+T(62i5tYacxlh8-zJQX#wQc zDh38lP<{lZ=~@N`PEfi4<t5O3D=6+jX&N*R2+ALzeAU9hzy=yK1?8Vs1_n0Jd@v|2 zwn5fmfaWPdm=%<MpqK%aXF+Cx#`HjAKwS(B%%CwnP~3si9H<|k#=yYb2f?8JKWJ<e zj6wMe6n_&K7+64KtP>$)7@##EpfL*&2CYp1jZ=WeB$z>IV=81E0yMV_>f?bhsE-Zm z*MTr-K9+d~0|OX?#w=zsFffDG6oAG%W-%}@gU0MYaWR{Lfq6D$9R~9p1_lrY&5bb6 zWnchdMo=1=$H2f0!gm=MnCC+<XuO#j)Q$jQ(EK83tPV6z1`6ZF3=GU542rKMkU4YE zI31{s1;UIE85o$CK`|)5EN5U~2948!#%@4qbR`1=Gf2%U1_n@Di~;0d(3l)(Yz~wk zLFs-C0|N^v?}GBfS_TFdP<mU(z`(qYfq?~7j)BtsdIkoTJO&14P<(7)U|<2o52(D@ z$iTn?Dg!{}&Q=Bn7DomK(40MJ-j5}S0X!bZypw@}1vC!6i-7?&Psjn9tJuxJ02+s8 z0i~TikiH;CDgy)aUI^v@rI~#U49xo&7+64QYCi)5GYEsq3{W~g$iTn?DxX1R-%$nz z7Et;+#=yXQjDdj#6eq_S7??pAG#7q?fr0rX0|N^vPEIi}FrQ*zV994-U_K4OETHrS z8cPFVP&ouDH_tLKuz<=vP&svufq?}SXXhChKz(aYkbf^QFo61t?6(;hK<!r$=GXxl zHwTS{GlS+$uQD(&Uu9rm0i_Gjm>H-}2l?eXWDc1V6y~7#xW&N04vHU;S+^M&I6z?x zN@sT%7}!C12$WXtGB9v}>JU)+xW~Z24ob72Gy$r|eHa*+L2>_pfq@+q|DgDO$iTn> zN;e-E7??jWFmQM>Fff0FU=C0|`^3P&4C?CyFfcHGhF~U8IDzJeL1Ry#xCYG+|6pL? z1eMvKatAaA44Ur&l{KJoB~Td;s-J!{FmQs(Y|xzW9|i^%kefmE*?$HGP6No2Ef&xm zcpC!)3lkKpFfgz%LohoiZde!?SU^~gfq{h;f<fcvENl!6ETFX~&lwn4I3O4_U(3SD zz`(-Az`!ETz`(){#exhBEIbg*4vJ%51_l<;{H_H90}CGnv!7;QVBv>ika+?O3@ieW zwO1@4{h+cC<Od-J1{ToTD|ZG47GVfxKg__uA_Bq8{}~uqL?M`=m4Sgp42nTZ)Ie?m zVUS-X7#LV2Aaji@k_-$W44PwPkz!x~V^A1KGcd4#Fvzbm3=Axwv2!g31{PTe2Cc<l z0fh@_e6E0jfkmEyfkladf&B;r1B)^P0}CiDLE)hane%5q0hxmb&BKGkMjetzL16*P z=PWu9zp>~tFtF%D+{6NkCs4l%<VHgV1{Pxm29|9M3@j#4yqkf6#T0@;eNGlL1_m(R z!@$5|&cMI|3S&@SwPavm0gcZ%Gcd4NK`|(=S~D=PfG{Y3+AuJ%fG{ZDZ5bF?Ko}G+ zb_@(GpfVC<o;?Et3kY9eU|?~8U{E~@DqldDDUgAI#R-ZpGBB`!>;u)Kpg3}2U|<2^ zOOUb*T%K)#^!Gr0J{C}(1jQ=|UuR%o@nB#8ja#tXVqgG`Ww3ZNFtFTZU|{iq;yVls zEWQj3EdC4(ERPu&SOORrSU_Vg4GavRG7f~9rZX_G1Vb<fC`>~jWhcuE1_qW;2xbPw zT^Iuc3#cD|fPsM}0)m-9;SkBdz!Js4!19oRfh8J(nWix?uz<!|Vi*`WKyHd<U|@-5 zVBiGBO&kLQOB@3OGbjzjGcd4#@HGYomIMf9pU=R+k_f>Zc?=9JNf69_hJk?vG}Z#b z4;UC&QXrTels8iu7+6vn7&t)bI*oyW1vKxuoq>TR9fCREFfg!WKrs6b1_l<;xJxDj z1Ls=?29_)cW(U;)*^u&{^A%)V1~fLq4oXY8kUE+3HKZ;9)hFzraLb33#~h$=1%*)o z0|WbF1_qWw2<B*HU|=bNVs-`wmSPA7weMI;7#P49ln+W77+63U<eoAH1{Tmb%oGL& zmU0N@aARO#seoX1P~BF^z`z1(%Y)Ks6$1lH6$1nN0tN<_Y6#{4xvPeOfu)9lfqfwZ z14}IgbAa4f$G`xpyVyZ%$m$_=6bHyHpfu6Iz`zcQJCM5@85lS~X{U*Sfu)Iofnyf~ z14}ambAalt7D#!?0dg0p90ARHg33Wqe6%qzaDeo+L+V>jP+sg}U;x!up!El!`U#9d zX{m>Sfu)CmffJN>dKnm4K=?ib14|zSgXVZy`WYBN7}SPk0kw}n?WDg93@j6&7*tP# z<~AoWFtCHvPG(?W0gb)rF)*-z!V!c)<<nFK1{M&0#=yV=@+Sy0GBB`!;u3`SGBB{r zfM9lznKKy}SY|RXaK3}o&7k@jv?c~rFM=^B&(49=&nzIn&t+g>0bx+u2E_+x9#e#Y zfdv!?APfpOP`HEE@U3QGU;(8S5C)~~B@7HKpf!A;b_{6k9teZ#@?{JREFcUjQ<pO^ zuz)bAPFcagzyiXcGIb>b0}BYhWME)f1;Ol{3=AwFJ61C=aDd82P+MsY0|PsV2H63c z#{{K$P<mR&z`zb_CqXeMD1U+4N*fp$*g-U?t+bJWffJO+H!(1<facRcWz=Q{1{M&$ z!oa`+DyKjgRF8qo1z}J=0_7hN2GwJrJPE=#7#LVU`4EIbbs8wFLHH&E0}CjffiS3k z1C`yNu^5p5LFF|FD=;vyfZ_>+LHQ9>cJE_gU<ak;{R|8&`xzM6LHP)jwm{=Bpu7Sq z#}6_vu!GDy#K6FEh=GCgBLf2qDE>egRBwag41_`Qpm+j}$$-)?sN4tP;|vTePz+il z$pWgYKp51<0+oX&A!{UAK=n5WpJ!lT0o4ts85r0>`3V%qXBZgR-!m|<fZ`Q2_X(=s zK>9%#rUx`G15yL3KR{~)L3J9ao&b%@fa+dQxP#UR8Zj`iT!vuK+zbmS4z57fMuY1K z(6|gJZGg&F(AvQc1_l;TodFt`0p(3l9DuMQ0|N^v+;1{4aDdVrs4fAu>p<!0HUk3- zs9gsNe^6ZlYS)3{0941^Wnkd^#K6FE4}#f2aR$n__Zb*CLGA~oArMxA)(xPv11g6f zF)*-z<~~7X7pP8p%)r0_s`H*OFtC8;K0$TuQw9bW(D)3fo&@Dp(A+1eOa-NTP@ff4 zXM^e|(7Y$8Oa-O;mkbOXpt2m4=0NkFpfU}VK3+30aDd8nklk+?7&t+CLHYR|v~3M? z>w5+UW>B1i)*gb|ouIe?r4LZM6BPF#e}dYbp!odEz`z1(cY@Nw7X}8FFANOqptAET z0|U!f1_pMJ+20r#SiUnbaDx2!gMoqN2Ll5;D4+afU|{*lz`zM|`!5Ct7EpWi9|Hr+ zZzu+ZA*c-pn&Sk;EvSqGVGtXn4%9BSVPIg@hhR_|<g;gB0AW@h1_oJY2xdLWz#!`m z!K|kk7-T&d7-T&e7+B9RFv$8sFza~+23dayX1&b7AR7R|tXCNrWP>1>^*RHCY#0Qy z-e6#m4QF7GjbLD4y~DsD8x6s%_ZS#tlOUM&4+Dd2G6b`+GBC)dFfhobGBB`lFfho@ zfne6t3=FahAei+W1B2{t2xfi6z#zMyfkE~w0|TcW1A{EcERcUo85rakAecdffkBQD zf<g0{a!d>iAPidjFUQQl0K%ZTFF6(l1`uX&W?+zGg<#M;m>e4e0|<lm1jw;7Fn};< zPE3x2fdPa;>+<C|85lqqG+!mh#lQf<pmp|g+zbpL44PY#<6&R`VbHpJIbH?^5C+XP z$?-8TfG}tcz8pUT0|<lWo#X@<7(f`b9$!w7fdPa;b5U|a3=AL)TAME?%)kJ`pt&hI zkUvEr>)ho;85lqqG?ybM#=ro=47m&pa^esSn%j|+U|;}Y(E4{dNd^WG2F>%xNii^h zFla5joHPRi2!rN)<YX8aKp3<xUQU*Q0fa$wKXP&m3?R(V&A=ch55Y_w3=DD#5X>-* zfk93Yf|({WFvuxEFvC&?203L22F)kPsW32rFlgPmoGJqY2!rMo<kT1#K$u}U1B0A8 z1T!sWV35;*V9>gDIZXxz5C+YW$Z0V!fH1=f1_n882xeNsz#yjs!3-xE802&z7&Mn4 zr^mnm!k~57a{3GmAPkywkTYOl0AbJ?SUE!m1`uXC&%hvO1i_&7uyV!>3?R&Ofq_BJ z1cE{9V&zO37(kfmA_Ie*83cpYvC5e<Fn}=AJq89j3kU|SX_d2NU;tsJ`wR?nRuBwY z-zsO#zyQKb4;UEaY#<o4)>Y1yfdPb>9x^b<*+DR94Xd0z0|N*%ePLjbbAVvbdR93{ z1_lsj`pUo{=LEr^^{sNCv<{k&{l>r`=K{f?^`>&J3=AL)8gG_!V_*PbMv%YV85rc; zA>+<+9t;d13|faO=gGhT!k}?zIWGnV5C*MFmGfp`0AbL0w44tE0|+yQFfhpZLNI8& zR?d%s0fa&8DCPVa7(f^_b}JXazyQLGVGIm%fe;KD$CV3WU;tsz`bxQA1_lrYjpxdN z%muB<EN5Vl3x#0N7^NIYKWH6X1p|XzI0S>nEaf5?7(f`b7EdmcfdPb>L1srWFvx+{ zWVSLe$VEdiGsvD81_n9Mn!7dz2Dw-WW(L_A$G{*5TEo)Lz#tb7!OS506BroeK<l0+ zGBC&`LNIeS1A|-=1T#)zV313OVCEbK2Duan2CcJ`OJ!gHVP;UCO=Dn?1Fg%P!oVPx z4#CWM3=DD^5X?B0fk7@4f|>If804}b7_??i4rCu_EUJ!yK@MaGXzklP1_n8hxuEgF zdIknLkXfKLne!PK<UsmCV?_-N3~~h!3|dzwSIEEs!pw~f401&f%(#PrL9Q5rL1Tq- zB@7H8%(#<*K@L>@g4SftWMGghgJ8y83=DFhxB<;e%wk}W1H}huUFL2E2DwTI28}1m zRWUGtFla5BTr~p&2!qBJ<!TrhK$!6u1A|;G1cSx`<v@M|t*<=Jz#s?m4`|E@R91le z09u!Mih)56<ZjTM$r=U*xh4o^Jk7u$*9^hTYZ(~iS|FJ53<HB4DDFXHY%3WU<UsKa zT9<d0fk6%w$Dr~4bqox0pfV1$Uh*6RgIp&BGp}c0kn4hA(E2kuP?-oCSKGwEAlC!I zjG!{1mw`bJG`FysfkCbhf*Ef!Fv#^oFlby*ZUO@X2!qy6$$`=kXl(Z?1A`nW-GJ6c zePUpc1C^(f85o$aF)+x1(g$dr*JlO>IZ&DajhS6%V2}fqzo0o|P<cC@fkAFM0|PTC z3}!Ge$brUrH!v{Bf#L}?&byC+K@Jo*p!r@<Ju{nuK@K!$4D$CJ1_n9M{3<9s<}xtI z&1GQV1jQRDJ%QF&g3JS@q4^99oS-;dz`!5}+K&XPixx64$bsgJLG|Gx1_n7$Uj|e! zfy!~vd@-mF1eMXCz6_|20=X45Uks|NmoYHNf%YST>MKyZg651tbv3Ab2kk2Y)m@-? z0?lWF>g`nw4053TNT7ObH3NejXwDc^hlAoCv>ypnr-9-dG=B`L|3PsH+K&XP-$3yP zT9f&kfk6%wE};ELpt^1&1A`oBo#0;v202h%g7zbU>OD~Wfz|{5V_=Zm0>KQRI&dok zgB)nx-+u-Mxor>(+M_AAoq+*_L2J?EK=}u>Hwl!tKzRl<mki1upnL+_UjoW!pu7R< z%YgFA9tH+E(B33ap4-d7AP1UP28BN;&Om#UK>2S!1A`oBUKter2N)RSKzp`8dGR0v zgB)mH8I+$6F)+x1_A7z%<zWT}IncZ^C~qBMV2}gtR|2`=C<B8WXpR|_&p`PNwD$<) z22dUY&1Zu0+zAE-InbUZP?`kQsh~MekUv2A4YY3wlqNxW3^d0K@)Iauf!1+?%3V-i z0*yO^!U~jsKx+>{WiY6I1&up{+76&P^#Wvlyc{UcfaZBX?TAYZ4051#oS?G#G6RF$ zWyl<!+!Y1}5C*NAmjk&8G#(9VUx3^JTE_`0vqAX*G#(9VYusR9kh=j{PcL_qfdPa; zbAEES7#Khpw6<OjlqYXP=KtjGFff2HXsx~6T?Pga2F(S^f$DP5I!;g-530XG<J6$G z38>Bnt>Xlh_n>+jG)@g_r#xa{kOTE)KxO}91_n9MyacGt@`Qmw4%C+c#qCoD2Dzt@ zc@(*43=AL)T8At5oPhy^L31i{FBlj=7_=T&?j-{Q2!rNW<X$l_fG}u%uH0(|1`r0# zx5&L=U;tr8P+EA)z##XQfq@y6FW)gR$br^zg3`r%1_n7$zXp^?KQJ)Jf!1+?(#S^! z202i_29#ex<ql{aCn!8XWeuob14?(GHV0@d9TYa8b_QrX9h3$^Z41ykPEa^~XJC*6 z&Fg~P@PmOt4z!LF6lOme800`>?jSe(VqlO1wc)E7Kv{`F9yA7~$-p4b!N4HT581;k zFTlVc4;r`gW?+z)U|^7!Wnf^aWnhq3U|^63^^Zdt800k=8010wjW;qd$Qv*)$b-g; z3K$sVEf^T&L3>YcGcd?IFfho2=701U800+|8010gThkdB<O3KO<ijCjO!AQo3?K|z zUn?KYzyQLGPZ=2GV<DLF83TiSJOqQ**UBd_Fvx?(5a%;6$Y(Gx$b;%rkb02aps_SV z1_t>;2<B{LV303@V9*$=d@%z92y-?uFvyocFlY=^zLbFhggKiT805<!7&NvgU(Ub) z!kjG(4DuBa44My?uVi2VVa`?t2Kg!o290USgTl0$fq}D)fkD0of<a?L@}RH-&2P3d zFvvGBFvx?(FpL-&<U1G`<UxC>jTso^ConL`gT}k!7#QSdFfho^hwPJ-U%<d14;o)u z!N4F7!l3!HcMJ^j8yFbmL1Q~s3=Hzy7#QS1V>tE<4Dve|8010an>GW3{B8&a?F*OR z!@vN-pncx*dl?wy4>B-tg6u!Uz#tDAV@YFRkUz%2AP?$8XEHFzpI~5+2aTVA!sHYK zgFI;O<W2?#`7;m<+IuN~mVp6;IeQrx<j+AcXFmgj{CNoGoXEf+e}REP9yC4z3bV@$ z4Dy#57&s?0FvwqHV2}rmeSpI01_OiqZOEQR`MV4ZAj~<1fkFNr1anSfV35BL!JMG5 zdBDIR4;r(W%D^E17=k%xF)+wKVPKF4jZ=W)7nE*5V-q0tFBll)LF=tS^cw~SdC*#G zkiBmi806nGFmTRhV37aBz#tDAI{=02HwFgz?+oB^H2EJ43?K~JXCwcUfdPa;du!x> zF))BIGsukJ3=Hz1xhs%c{xC4egXXS4X8dJfkpIiTzzIsL{}>qL|1mIdE`%N@z|FwG zHkE-vK>&g|>=_so1R<Eik%2)$2!dHd7#I|UA(%Cofk8opfk8o(fq^xYfk8nGf;k^E zFer#aFvmp(1_cQQ1_en52G&dl1_dbyW-Vl3P>_aTj#dT+1sMhg1vv%=);tCV1$hYO zXklPbP+(wCP-I|WUB$qlpaj9J;S3B4$`H&N#lWDT0>K<0GgTQF6jT`)SnC)V6x1M? zwU&WFK^=lQ92giB^dXpSG6REx0Rw}AAp-+jECYjr5d(vQ2?GOb5d(vQDFcIoIRgW0 z83TiY1q8D{WnfUSWMELRVqjqHVqj3PhG3311_lKi2xbMDVavdvV9UV33Q}vwz@PwH zJ5kEOpa2R}dj<xM%M1((Aa^)0FtER2U{C;suOkBk`!fax1t$n*zs|s*;0(d6kqit9 zE)dM7$-toC3c;)(v)vdN6x<jXSV88wGcYK4Ffg#1F)%22LNKcd1A~GW1amHCU{LUe zVAlN%3<^FB3<|ys46M-%3<`b_%(;YtLBSt_IocT*6ap9+6v7x7IF~XoD1gE}oPmKA z<d+Br28B2V2F^7M3<~iO%r=FAL7@PGSwU$46d#2Q46L9uP{P2VP|3i+`kaA5p^AY) z0kpUMBLjm1C~iROE8a3NDAYqR>oo=jg$4!&g-!+rHa-Rh1yES`Ffg!z(nv1@gF+tz z0~;t!O<-V9n83im`h|f(VIl;x{$OBGm;}LWObiSPpg5k)z`(}Mz@Pwf-xLN0&MgcK z3ZS$;m4SivHv@yhGzJERnG6i9{}>n)W<f9;GXsOdYz78}ISdSJYzzzv3m}+7j)6e| zlxIMD?HL&u6c#}+D@Z*kd>1n?u!8IYg(GOZ{tp9#0x0a3GBB`$%vr|3pa2>x{m;Ol zupELxV}A-O7#Kj9m6L%%VI>5E#{3jO>3$Uh11mcNgTiVEW=dvYPymHHXq^5l1B1d^ z2nLN6Dy(B*P*~5vz{<kFps)dgIkz$}C~Sma(Ac8FCI$u&25n(i*v!D704lftGB7BB z)NN&8U<HNSHU<WT?F<Z@AbJM_g92zA{yPJM!cGWg`NqJYunU4gW1R}S85lsA6Qp(z z1A_u+JtPMMgTh`2291F#>|<a6VOA~%1_e<11MR8jWnfUa&A^~=hk=0;WcFPK1_jU> z08m)HU|>*q!N9-?GW!DqgTe;}2F^XuBTpC^7}$~+7!;Wym~9aQgCZ*gvn4VxD6&B? zTLJ@vA}0j1EoNX)6oz1qNCpN)F$iW`$iSc|4#BLO7#I}gAQ-goPEnqL0fa&O@e~yp z7!*Ne(G~^<MI{Jk-ORwCs0_iJj~Eyf)gYJ|#MWY9P}F8%U|Yh#pr{AIY|9xK6pbL5 zp@)G%(HeqTw=pm%`a&>UJOhKGKLm5`WnfSYhF~@j9mT+)7{$QA7RJD!7!AQ}Aiu;g zFet__FtCBdVi_0|V;LCOKx*R{7!>0e7}z2h7!*O~#xpRmg)=ZHg2Dx~ZfYh2gCZ!r z5*Zjc7BDa<g2FV3fq`Ql1A}5R1anMdU{FkfV2&va42r1`%rTpRK`{-2Ic701D5gU& z$3zAO#S94Mn8CoHm<hoga~K#Dvmlsb5(9%`HUx9bXJAmwfnbiw3=E375X>>1fk813 zf;px#Fev6jFvna52E_sh<|txdP%MOCjtdM7iXeUw0|Uoy1_s4q2<8CALkR<eVhIBS zhb9AqVkrc3tY%<PEQ4T<RSXP@<q*sv!oZ+d0l^#~|5Y+DC{{8saDd{dih)6~ih+Rx zly<5a7!<1+7&y)|FeuhAFer8~FmUc;U{IU@!E7rS7!*NaF_D3RZ5IQBBFN8^7#P^r zGB7BD{0S<TK<)&E=@bSAHjw!se@<m!U<0LdP`J-zU|<8K$(0NYimMnH*g)xF0|SHN zMg|79zYGkDp!Bzyfr0H01A`(cU2b7uVEfO&ptu!+*?u!HD1z+X&A`C+g@Hj46h;>q z7}!95zr?_xc!`054P@RG1_s3|3=C{L7#I}qF)%3JXJBAwVqj2w!oZ;Tlz{=XOhxfI z0|N-Ny=Gugd<DU5Zx|Sqm>`(-5Cek}D+IG1XJAlbgJ9;{3=B&A5X^dnfk8<Sf>{qU zFenK@FzZwX1|=y7W<AEhpd<&utOpqwl(Zq3^(X^_k_QB{&SYRvN`PS2$qWoiDGUrs zsSFIP6BrnjnIV|%9Rq_hD+IH>XJAm4fMB+_3=GPu5X|<Gfk9b~fk7Fx&htA1gR(XR zvwdS=P;P)=whs&p%Iy%$_KAT(xf_DnJ~J>VpMzkwUknV&=OLKwCj*0uG6Zw1V_;B8 zU|>+mU|?VeiEU$GPywx}=3rn@c?H4jN(>CD3m6zw7cnrf-C|%+T?N6cu?!5Vn;@9& z0t18UW(a1x!oZ-q4T9M&F)*lZhhVmA3=FEfAQ&vZn}I<U6z?GMJq!%0pmR>nGcc&` zg<!VJ3=FCVAeikU1B2>82xhy=z@T~rg2CcP85mTLGBAL}k1;T)g4UnkXJAl04#8{> z85mSgK``qH1_ssB5X^Ryfk72y-+2ZGwi^r#s?Q*pHG+Xb^*sc$v%rs`Vqkm1z@Wy; zz@Wy)z`*u`fkDj%g4rH3FsLO$FxyiG2DMZOW_!lKptb;l*{(A%s0%|d+gSz%b#Vx0 zJIBDF9tOc|4;UEKQy`e_IRk@w0|SG42P9t9-!m|PFz0Co2KBEH%(jw&LH!#9v#n!b zQ2!3WY}*+a)PF!Q+ZqN2^`8*TwvmBB{TBqY?POrkW`kh1R}2i=LJSPr!VC;-cNrM8 zWgwWHm4QL027+1tGBD`WLonla1_s^#5X^aofk96Kf?2H?7?#b4V9v7)49ovRFy}c2 zhLw5{%z2&xbX*G<vpr&9c)-NK@PM0vfnhoW!vh`$h6kXtrd~2IJkViacmUd4qrkxM zz#D==dn_LKFff2H(-sDX2fh#t+UM}VkAVS%LHigU_%kqoFlc|mg8&AG2Qdr`Odz{r z85kab&Mt6cV0aJ*!OS4@;u#nofX*%mV_<lY0Kv==3=9tv85kab&K8JbV0e%P!OX=B z3=gsy7#=h*FtAE7Fg%#d!0=!i0|RR_1H*%*3=9uI=M?Q>V0f^cf#Jal1_svm3=9ue zGB7+?&A`C=m4V^G8U}_3pmT?QGB7+?2f=JC3=9v}Logc`1H*$23=9uI<tHdSHZd?f z0F|F0yFh*ho&O`x!0=!n1H*%-3=C{q3=9vRK`>iB1H*&Q5X^C(f#Jay2<F_(!0-TM z_g4l6jwcKZ557S#M>GS&gYOW`0Sbd33=9u`Ffee$Ffcp-x$h?f0|zKPelajS_{G4$ zxrl+`!EXrW>|<bf@CSl9r!p`+_zS_D6BrmC{DWXlP@Mi}V0Zu;KbZtRng?_|4+G~+ z28M@>5X?D`f#D$&1amH6V0g$3!R-GS7#^}fF#CQ6hKH;W%mHGvF)%!2V_@LmWMFv6 z&cN`HlYxQ#B?H4lE(m77%E0iD8-h7N_V6$;Jmg_u;1FV9c*qOE9Q+In5BVUN10)9G z^D{7T1Tio?6o6okLktWL1tFLtj)CDJNWTyR1IHc)hKIrs%mK1Tgn{9q2m=G?7@UWq z3=AO5(Z#^<Pz-|EKQb^p6o+6AkQ*f!7#>P6FmQnEmt<ggD9OOU{(^zwp%etO-(g^Q zC=J2v`xqD=%0MvtT?U4SauCb`5|?LScqq@n!2XGW;h_Qqvp-~Dc&G@$92^V`50xO8 z1LO~728M^Ay{oYd3=dTxm;)3xstgPdRT&sK4l*!2RD)pl&kPI?)ghSu9s|Qe4G3oc z$-wYX6M{L;GB7;Uf?$rl3=9vo85ka#Gcd60Ffcr{U|@J?%fP^H%fRr^j)CD}90LP8 z$liDchKHcNhn5Ts50fF7^(F(u!xRW+|G>cTjuC=c8yOhhF+nistigB83=AL)+WY;E zg@FNtLHmQ>u`)1#F!LD(hHr-<n5~?F;hzEn!#`aH2F?o%4FCQ^Fy{vb#*g}7%)q*l zf$^gO1LH?e1_pL#2F8zBV9da}gMsm5HW)LoZf9Wp5dg*vY^xX;e*}Rs1KWBA7Gcm{ z?G{E*<D-S4j?shhFw=Xc|IBjC?#%wo0nG8tiOj{!<;?ZWUCceq3z;9X%w_q{s?TRH z>n!Uj>nj@|8zdVc8!ekEJ4beb>~7hwvj64&%d^Y#%Ztj(%B#!k%bUyF%e%_^%7@EG z%16t`%E!y6%je72%D2n+%TJe|FTY%Vz5EvWBl4H!ugl+-e=q+<{+|N3g1SPyLZL#X zLcKz#LZ8AMh5ZWm6kaHNP-IkOR%BD;R1{VeS5#J1Q`A<}Q#4YvR`gZ$R}5CHR_sum zsyI_|mEuOlt%|!9FDPD8yrOtt@u}i-#aBv9N^DB}N<vCfN^(ltN*+oHN~y}s%B;!~ z%IeD6$_>ix%H7K6Rg_gSRL-lsQeC9FN_Dg9cGbPA2UU-&o>o1t`b_n`8iN{}nvGhb zTB_OtbzyaJ^)U4m^$zv->c6zvw1u^0bZT_!b^q&0EStal|4O|F3=g;;Xg~0J;Qt`z zLBfN~2U!mq9!z_%`N7@?PaiycDDzP3q4`7Ghj9;6-m!i={7?7a|No#<uM`*-FnTc_ zW%|I(z^usZ!5qLG$eh5O#9YE$#oWT&!`#QbnE3<C0%$C_%lgXt%Ld7Y$wtd2L1SUR z>>oJ>c?Nk7c>#F|c?Ee5c>{S1c?Wq9`2ct<B*<sT7sxlrcgRnWpCP|Meuex7`EByY z<gdx!kiRScN&cGxgMxs9zCwXQi9(e^gF=_W1ce0(x52T%pvbJq3XTOaML9(^MJ<$A zh*GRkoS-;Oai!u0#m$Plps{dI@d-2*Se5vd1d(DP1sV&g@K`vfqO6jjvQ6cc>H^hO zs+&}|sqRuepn6306g(DKF=C-X{k{5EZ8mKoEV01!faihE1Mdd`4`LrAKFE5I{b2Hg zr4P0|*!SSsgU=7;9%?_dcxd-9{vG4D!~YbZu>d{_lohmMoq=@|OCu}j+&s`ZX$%Yu ze{X>$K?ju0{C4(58w10OCI*HVtqcq=ni&{g=)cf=q5iu5btMDCQ_Y9cPpu!OJ~e&V z`PAXz;>YhE$v?Gu)cvUIQRkzMr}j^385o{yda(M*xrZuGIi9#Z0qs&@c(M#s@;}+f z!0>D;#HOdk3=B{EAZ!MP7nfh0d7AWeJ_EzkS<l@-qL21Gt$JE{Kk7;KQ=u1mpd;a4 zI599hm3b=i)R%$bsnwI)PwqW=@>J!i%u|-9OpgyRFg)JM!0>p@<He6>Jq~<q{8;Dl z>&LGiUu9r;eEM<0<Lt*73=B`YA02)a^vL3&)&0#NJ7D-B=l!CGq7R-tc>G}bgO&%4 z56tiHy1)H?*Zt=Eiyz)$V7UF{_UYR%Z#G`7xPA7zQnFs+`GkdPj})dV+*SO-z@RjV zfkEk~GN;OVl@AOIs@bYJs-Rsu3~G#OtZMQgJNUP7Z{YgKz{uFb<iI=uwC0uV3Oi_p zJp%&+dl(3_$FPG|78kHj;}GHmok7XKz`&)#z`&&j#h~*EKt@5up-h|<=qNX2Ngf^^ zun9bN3=BL83=BMZJac&dFff2HFAFaZuL>{d#7(dkUeMWs47_m=8Y~1Qc%v8?cxOR4 zyz?M5GRZrEfdPb(#XxM{1`r9tyrA<bK@2eFE#fWVE#s}>t>Xoqn+F!dPVj=xlEf~> zz`(#8#=yV}I(ZbV0^~{%gSUVeG=m9}zrqVTKLsSnz&4T9kTsXpo8=u_466Za4y!e* z4eMIgDXi73fvh#GzN~z#{Hy}3Laf59BCKMp;;a&^lC1TtO{{&alUVy%O<A28m>3)x zJQ+e5;u$&_dKnfn9A)HW<YSazRA$s>bYLuFtYxfY>}H(FxRmiI;|a#|j8_@ovf8o+ zu-db(VO`0V#`uHDp2>|Vh$)4sm8pwq3e$3?!%U}{E;D^#`p(SGY|ZS*?8=<XT*BPU zyo7lL^G4=v%x760S^Zd@SZA?KVl`%Y&+?JghvfsSKkEUu4Au>-yI6ZzSFi@Lu4l_- z-N`zG^(pH!wiM=e)_tt)Y^AJESa-AbvW2h(v4yf)Ft9SPF|aeRFfcQ4FxWD9GbAu1 zG9)o1Gn`^L&2Wa{7<)IP4x=lh8>2g;6Qd*RG)8B}<%}yBS2C_*yv}@+xrm9E@h1}_ zlQ<IxlQ5GElNVDuQwCEeQ!3MXrVUIRnO3r>GW}rYVdiD#W9DS$V4cp)#oWo<#oW!@ z!n}(`jd?o*H<JJZ592QeUM4{XA0}@GUnU<0KPF!We<nYMFs2ChW~N|<6s9bORHkf( zG^QMebf#Q}45mDW2~52V6PfxLCNcFhOlF$Eu$XB+!%C)k3}=~EGn`}E#BiQzGs6X@ ztqd2LR<KWEI>gAubc~Uo=`4pAqa@R9Mk%H{jM7YZ*=I7{VpL$d!l=vik5P~5KchY~ z1EU$!FGde$enwAb0Y)!oLB>*MOU8O;U&aPzKgLF8f5sl>G{#=$bjCjB490%uOvYKv z)r_;5YuHyaS23<;Ze?7<+{3t*xtDPrb06b+=6=Qv%o7+-GOuR5!MvOCCgVHiON{TC zFEf5%zQPgC<iOy@UdQCfzLw(*LlA=(lLtc#LnwPIQy2#uLlyf9_6~+FmQM`*%)gmt zF<fUj!6?RbhUqFtAV)HzDbruZB1RWxZuWT`IgC}zw(Of2r!yC_cX7xtmohHo*vYtv zaT#+P^LO@*jMtcVFn(n|$KJ!<$Dz!j!Yarr%5j>*i1Qgo4M#0U9fv$a98&`O3`QlU zQ|z-D?U~sa_?Q?NE-`Im^kx=f+{iqUaTD_-#?8!=8MiP`Vcg0*m8qG5pNW$}fQg5} zj!BlGkEw@Y3e!YJ0j6_|KFq?5zRV)*y&Q^6$Jv`0VwvI?rZP=pSjTaN(SVtefs;vu z!JbKuF@;&1L6C`^L5PW;A(JVeA&aSi;WE>9hAT`v82y+<8U2~X7@L>_7@L^`8MiS{ zW8BU>opAzl7ULY|T8^t6*BF*CE#SD$6wYyj<0j)5=JO1~Ok51vOofaA%;JoJ%o2=2 z%#w`3%u<ZEnD;Q<Wctlq&a{W)7RPM{J%&IgcSc3V#muS97dY;4++}cOJi>90p^_<$ zk(+5BvkS8`V;8eK;{)cMOcLx@*sn1;aTGIoGKDaOa!7D2;aJY%&f>x1#p21dm#LdW zmwf`uR`wfAvzcZv&171~lEXfk=^E1wrt2J0OrMxOGks+G!}ODV4zn5iT#j6hYGx0P zh0LDJk<8)D-ppR?OW2n(r*KGdxO2#INHbS5moay6-s61Ayp(wr^9lAX%omw&a42vn zaTst|aG0?FXIsYcfW?h{BF96fqfD3BXE8f*7;+dh#WN)_C32kO*v?$R)XAaB@rdIw zhZ@ryrn#&aIBZxivEJfX#G%f<jP*Y2L)J>xD)v9D+3deKdO5l|OgYTiFR))?zs!D~ zEsL#~BbY;jV<m?+=M#=Z4lDKp>|fcxaP)EXaNg$-=4jwZVasDHU@K%RW6Nes<>=&S z=Fnli!g`za0f!mKF^&@)r#Mb>9Orn-@r>g+#|sWtjtI6YwhFdJwq~{(j&im-widQp zwg$FVwo0}pj!=#ewrch#Z1wDa*}t*>X8+D%&3=eu6US!uvute~{Ty33Hgec<*s*o9 z^|JM`^{{oYwR42AKW0D2{+z9ot&9Bu+XRjzwtkLF9EaI&vESra%dv)I0{bJ5^&BfW zpK~1HDC4kXKgdzV;m^U&;mYxoL!9FP`+bfKj!Z^dPG!!QoGP5EoNBC{j67`VY$Xgz ztQ`zB3>z43GCpE{!jj9N$l$?zi}^M~HRCsi^~`q|ZZL{7*f44^+A-f{Ol7{uSj~K& zaS7u?<_C;dm>)7fVz|Zlm_>udl_i8FkEN4EoyC#GiN%@4g(Zk3m?fJfhr@%Vjw6*L zou!^xhoym~k)@TTjisHXgJl-;R+c#|b6N6Px|nrYx>@FNs<Yqb*ungR`6u%)mf0Nj zoEn^(oLcOwI5x1ia0swZ<?vx&&as%olcR$vfawHd9;Y^^4yP`s9z!srCZ|423#S36 zA*T^T8$&yb3j0YGImT%W&lz4Y^0J7tNU#X9pJKFNKh46yV8Hx`!JYju^M8g`76uk3 zMsr3>7G@SUMlFWjj0NmR*pIRwV?WNq$->2cf`yxfmqmz0m_>v|ltqk1l0}L|nn{vn z8_RZ<9W1+<>RI-%>|@!_;mmT7<rvFJmeb7UEEkv^m;zZYG9PBS#Jq*&D$8}2TP(L( z?y}rtxx@09<q6AErUs@)rs*8|EH9V~m<})<WID<6kmV86G!Ac0W9B0)*VyNC<guS& zdBEPrA<Dj;^9}nB&bRDaIbX4F<9y9Nog;vKF-Ic{JF_W^GRs@`DI9L>>zJ+B7jWdW zFXSj-U&K+uK8?edV;9F!jtUMIjwVhMPE$@ZMjMs`oaQX|87rA>nE$fuWbfzDW07Hb z#=^+5mwhMaJ4R8K!z?T;M;Jv|jxwxfIm57)<t&RV%X1camY3|E9Fpv7IJUB{=X}7v zf%75bC6+5JJS?wR_*ibR@Uz@x5nx)zqQLT+y`KFoM<x4i&W|jtEQi?JS&lQTVmZgK zhUGkaBl~+sb(T|1?->l4q!^5tq!}ET<QY1cnphM$ma?zpSjN7G^Ar0n&i5=zEN>XC zI9wR5Ih+^^nJpNLIkFf_II=k{I4zk^G9P6=#e9tUH1l!x2KINHR-D%Cn>k-F|6|$3 zc$wugrwykq>nYYVtY=v-vtDJr!Fq@FF6$pQRyGbcP6iPsF$O0lX9i~`7X}w5SB3y4 ze}-_TNQMZeD27O;Xoe`J7=~!3ScV*?B8FV1Vun1X5{7)HQicMiGKOxZ4u)w=lNpvW zEo4~6w1{Cj(_)52Oj8+FFfCy?$+U*yIMXUdL8kMJLQEGJg_$lg$}rtylx4clD97}G zQJ(1`qYBd(MpdS-jA~5Z7!8@37>$^j8I74)7)_X28AF(*8AF+67{i!l8N-?77|WUM z7%Q0V8C#fx7+aZx8QYjc7~7dc87DGlGfra8VVumI%Q%HOk8vt<KI2^GI>vd-^^EhG z8yFWbH!|*Ep24`2c_!m7=2?upnP)TZVV=WyjCmR3apvWWr<m6;o@QRlc!qf;<5}i) zjOUowGhSfc#CVZ;GvjUMy^J53uQGmOzQ*{O`8v~5<|gJ1%=?&xnA(}zI4c=va8@yh zGI2AAG4U~oGchqpFtIR5GO;p9F|jd7GchyBF#cwcW&Fz^$M}yyp7B3}0^=WsLZ)(t zBBlz4Vx~%l5~eDKQl@H#GNu}aa;92_3Z^=St4uo?t}*Rmj9`{$jAT||jAB+~jAmA1 zjA2%0jAd3~jAK@1jAvG3Okh@LOk~zzOk&n#OlH<%+{-+daUb(M#{JCm84oZoU_8jY zkns@nBF4kaiy7}Q?`OQre1P#D^FhY@%!fFuIcqp;IqNv<IU86EIU895Ih$BwIh$E3 zI9r%aI9pk!aJI25=WJ)OXK`TAX3$~KWzc7^=Ir3?<m}??=ImifV@YSpV98|3VrXV) zVc5yAi{S`oFK0jJM3zdHDwb-_$(&O-r*Y0;naVPaWjg09mL`^FmKiKF8DB8IWPHW= znz4p+Hs>79xh$JmwlL;0<}<%#e$4!hb3W%n4towq))3ZU)=<_k&c_@VSu<I)SPMB? zS@T%)SqnH?SXZ&GW({YJ;wWUTW3A<IV4KVq%NEC4#9GW+!dk{!&RW6#l(mbso1=}@ zh}Dv#l;bk{8}?`H*I6UkG+FIf9azm+%~?%27qjkXjb@GET*A@Lxs-Dm=W@;!oGUq3 zajs@9<y^zLmUA8Fdd>};8#y<zO<{e^dXe=b>nGOFtZ!N0v0h`7VUuN(W0PQ$Wc|YW zgN=!en{x~6Z`OaT|JfMW7}=QF*x1-P<X9P5nOV76{;;yK{Ac;W%E|JZm7OV><txiC zRu)!P&aEszSs7UVvixIZ;@rl$o#i{rH<r(wJ6JhbzOZt!@^bFv+{Mnu&d!#|mcX`< zbrWMJV+ZRN)~&3YIUliwu|={)vqiB*u!VEX<XFHlk7F9g6pq;(vp6Pl%;1>AF^OY7 z$7GJ_98)>waujh~;MmQf#i7Zunqw7*2uB*nHV!e4^K2{FcCoEx+s(F(Z4cWYw*PFu zS&uW{W<AV0mF*+jceWpFzu11VU0}Pyc8Tp87@udm%yyCODj45qd&qi%?IznwwsmaV z+19XaWZTKKmT3#qZl?WAN0{B1eVD_TBUtya?qz+?`hoQ;>o?Z#tUp<Qv9YjmvGK6+ zvPrQ?bKK|L%<+UHnj@Ygh9iM<5oaIgRL%*U(>W(`&g7iOxq$s2`+ko79GvVg*<Z20 zX1~h8$RWhR&%w(P#Bqotj$;o8HwObp7yCyJE)G8S7wmV~_p#sQ*vI~f{UHYjhag8R z2M@<V_RsA1*ne`I<=D$^$!^7N&2Gbbll=p0BLf%X8zxcENF(SL6b2y%1qLn#W(F+= zD+VJ5CKorK5C)r^#F9J)8wTd&g5m-OqwLh8JO+#0#G-5lJFp%`1_K7riTsQVP7It3 z91KhhS`0?uJ4B#IwKFh6)iE(JGW0O8G6*mzFff9S74=jC(~R~97#JBO7^4`N87x3M zp#T2|-O&P(W8h;eXRBtbVQb<L=ZNNr;fUu*;N<5N;1uJO;M~K&$H1Uez`&?f#lWc4 z!oaB1$H1U8gMm?L5d)*r8U{wCZ48V`2N)QYPBAbjU14BSy2rqz^n!s==@SDJgBk-9 z=qyVHZiZ<L91IH?t}{$wxXJK>;WQ&BV>`ob#xBO!j8Tkl8NV~`VRm75VLZ-!lKC{_ z3FezDDvYODMOj6e#M$fE`<W!zC$Udr(qf;&K9fnCeKz}SCPVgl?DLt7*cY=eW-?)4 z&c2z+lzl7v9wsOD!|Z36yf~6Ml9@s{Dmf~dLOHH*TxAO5xXy8dDT3n;#~r39j(Z&U zn4&r5IpvvRI2Ab+nPNHBIn|lsI5jynnc_KhIdz#5I1M<Bm=Zb7IW3q{IITFXn9?|H zIBl5HIjcFVnKC$QIcu3RIqNy=nX(v|80r|9K<oY(Y#Cx0tQg`M)-psftY;KvSji~P z*uluh*u^-Vv4L?W;{wJ$#zl-*8K*H`XZ*}~it#JsH^%3TKbRaDUotr}c`z9>c`=1B zSu%w&#WJ}t#WTe-`7k9iB{KOkB{MZM`7yOJbui^KburCkDrTC^G@GfJX&%!arWU3H zOox~jGaX?%%CwB>6w_&@6-;NDt~0G-y2Wh4w3XSK*@;<%*_GLoS%%q%xsX|rxrDit z*`2wPxsBPAxr2ENb2#%h=IzWa%sZLSF}E>aWWLTkhxr!sE#}3{cbM-mFJXSf{Ec}j z^AF}<%)6NXG5=%U%fi6I#JrD%jfI{0APXl8C-Y$zUKT;-BP^mUqRb~*Bv~YxPq9d| z$S|K~QD9MIKFgxaqRf1rMV-Zg`2vdzi!1XhQ16BL4T~2`AoDwxV3sWAZ!9@1wJdxr zjVvuJ3M?HgGg(wv=CW*IF=N@mvWvx!We>|imOz%nEQeXbS&p)tV2NP4!g7TrhUGfT zO_o@edo1@@5?CIyJZ4E`dB*aLC5h!V%X^k&mjA3wEE%jUtSl@!tlX@;EV*ncY$+@S zY-wz1EQM?tY#A&?Y}sttEX8b<Y?Uk}Y>U{Iv6QlNuq(1uu{*QJuuNgEXK!R#$KK4| z%(9WaoxPo96MH9nC(CB`ZuWkbEueJCvXgxZ`xKU4>@(PBvg`(>PL{pwE7@1F>|<Ze zzJ_H#`+D{bEC<;)vu|cO%)XO-56cnu!|aDyPOu+kKh1KI{R;aPmJ94}+26BVWdF<l zm*onFB!?u+RSpFXMV4zE${flpH#jsoG+AzP=yK?@+~RQJaACR2;l|;{@_@se!<*$H zM;1pm%Oj2=jv|&PpcK#Yl%t-bp5+<GWR9sU&pD=ZOlNt;F_U8^%WIA~9CKOTa4g|i z#`2D18^<=5j~w?o?z4R2G~_g9`OIm-Y0L7Bvyro%<qzj%&dIFIoU=G*v9fUP<2=a9 z%K3ux1uG}#JI?p4T$~>{Ke6(#^69ha^D!`>lAyKW`YfQ8+Nk1~Dn~`|g#cvrIE<77 zogxfgPp&sjZvg`XCMnM)FT%heF9%vTjx5W-U;-X%L?-2pKm(4*A`mu;IOq-+uwD}f z6E6k^c^i2*1_lV57*at;0kmpUM*+01Q3tdl9WDY9rx__9#lS$SUGgdNd7$;@@}QN? zJ@TOS&<o^OfmVRa?*pyX2CcA`zatM?^ZWs{Dp`R=0kn=2#gE|CykHT%CcPfeidfJ( zRVX_|A&!ATFHf(6G!nF`6rxL^4Wt)JW+;GG^dgI3VT1HS)GMw~1g*FtnpBtoS~UvM zrLY9F0u#bUCKYxl9AaQlIHPclfk9CQyh_kO(TagV(M8dZfk81s5wz|u2fP}sL9vU0 zL2-)WJO&1Z2MVtk7!<xJ{9|B%n#Q3hM2ZOzT_zzWaSRN&NyR-NS;b=@5~Nb`g5oV0 z8@DcyN=#YJOQtJedKI52zJs%WfY*ufD2XvJC@CmuF)%2ZDA|Elb14NeFet?+rGZ*b zN>vODN-au#FkKMym1Za{Vqj2OqqGenu5^HbL3x+*27Dx_m8HB(=?X%P(mezlzg~1% zr58${7#NiPD6=szC<`b{F)%2rDC;pWC|f8yF)%3mD2FjHC?_aqF)%2XDA%Fc(xE(w zfkAnW@-ifG(C#Y+(E2gR3NlR6SWfR30|P2)tbr~9Qez@vqQt;pBB6W(L_*m3NaaV$ zZ_rd`m=rNEm}Dq_1CbCmKGLW|C4hm!r~`DBj!}mS7nltZfsi5?A`tNa1_l*56%Cjy z1A_|ac0UFca2X3_Lqw2CH<)^ez4{XRN(>Chq)L-Y6hcHL55!hU0g>n`k#!9O8{#U6 z3n6Y(serjtrAeg+&Yq^SfPq0}mC6<d29<p(Cm0x1E~(sMU{HAmnw?bnrOLv<pvtEz z!N8!Zq^bkcrD~??0Au6wovN2A=(aNkBXBLL8V9P~pltB$oGR$vFPLl%%rw;rs<Rjv zR41smfk_CPSaON#ItB*S9jb>I81!uP+(4u%Xk{Ce4G|%YRK2G90Cbh4F&AZ|8i$$? z0|Sgy{Q_dEz5<ab;{VV^kY#DdhPVXcDu^wr2$#sHsWC8^=$M#+NHqfx31X}HsYNg_ zz)34G+XYM_i$^dpm~xm35h9J28Es%-Fj}UT1R^19Oj0ceT~@6ORYa{ptqUfiHbre7 z1B2QMwM`5RYJ1d<F)*lIP`d?_h1jU}MC}~|gW3;uCYZRon7RT3gSwbH5153o36nwU z9t;fXLF!sy62hh~8H3kk6TGtcU1EnrFL;hzy#SPRp=272t-eTo1_OioBK0aT31L&0 zY{6@CA6{8pE&;8h-KKtkfk7QF$-rO?y1^3*seTF+0+_Ps;_81i*ccd4$Sdmi7#P%F zsDDBe$5e?!L_^P{hJist&tw9a1hX|%Kx_>G5DAq9i_?OwAw{e$5LY4GY0?IEkB<iE z-dF|=&<&Ri8cqxh8ekFQ1;(ow7&H<zvKSa3Y(k_)2~4HN9F1iR449;rgq9Km1BBG5 z)9Apa22Ix_Y-&u_ne1R-fRUP9Ft)}9ja@J{OctV2;|NGx;~a>Dh#*Lf8z8pEBMnfy z2*qTOII1}y5shz}3<z@&wrh%L$}uoNNYi<smawLgrVRrF8mWOM;-(qEzyMVrrI`X} z=V?~J*-e`JKy1wuAQEIUL_IDN(hk?`(VWJ>0A+()=9&vMS1~YXZULF5c?o11iY!D8 z25AEBL6}}Jy~V(Qjnuq@Dh`QXEeXwMu(*bafMQ?sgXS*=22(%N2(T;*n1rVaEeS0? z3=w2mB?bo5B-0!aY5WXCYI!j*XoYC$fY=amEe8-=%M3(9L<SEDaTUac5LbcR5Al&! zh*lgm-3$sJtv0O*3=CQsT15;DP<ESE4H6q9J4<T`1B2E&tsM*u+8kOBP)V&rT4xv- zAS7J&8mbz&IGSEmanL>ptyfxKKzc!JZ4L;j^$%SHB950-(>7pW&_*Redn-^yFxB7_ zvC?*7V9?IdPJ)wu+7WOzvN$1j83Tj%9_?dbvH?tXF)(Pq)BeH0pgl!<9#~`rnA`*= zAu8!jzSF({cGWE~33A&z?I$p{4v&r)0|T67g0t;(JQx^s>~s{sB!mqiwZI}KU=kt% zCrxEc)fgCHq)rfwt+P$%00V>0Hl02O2Avq4G%&jWOhUvl$tn!l77P)HE|8fJ^JnOQ z&Y@v22KO{|)__|JMsQtMbnY=Q=%A9PFhtPQFff>Wf%T7c!8NE3=ssfx9nh_347#AZ zz!-GF>qB*=K=$c^y2}i@dSEuVuGIzI+svQ~x{;ef2Xto{$+{r+GBD_ZS9|J$?n7tL z1>H&xb{hkO5$Fav7<rC?!3b;@q;JRo4Gkl(E09TD&^_Y}x*ZG*x|4M0fZe-{fkAhJ zF6b-=u*pVXUl>i&1&?DGWic?A8kkxQR+53i)CJ@VWK#DWNJJNOJ2n<sWR(auq|O>V zBm;vfcwII!sSA#AWD#nybwRgsGhmXYQ$QgJA$7r{3J^B+Nz*dZ1_p+~LozU!fNlmy zA<e*xwjrb`=$>%~W6;S-P!gPN7@#B<1B0H3o*XI(DIpmcjH5uIiXcs&=z-UM>w!x! zkiEt>#%^FW6=3obXj}y}io(F47r?-v7p0d18$U;$*Dz)PjhR43+EM2|^j3k)(c1zh zL8nYH=z(3X2RcobLGKO&gWfZ}53mtP=!_L)EKWz?jDbPlK_7IdJA*+P1A~5uejEdX z!4!je3=H}i`b7*3`ZfA(3=H}c^k*?J7(6j}2eL(f2?K-vI{h6C4El%k&oD3;Y8n1v zU@$Z>v}0f}^e_wptGUL&V3=lDz`&sYK>rm3gJGZH3<d`MFZ%x&7z{WJgcukMWDL|8 z7z_*ytQZ&!KY>gza53;>U@($0Qej{)h%gdhU@%BB0I$afxy_)#pbO?UgB1pw7#Ixp z7#w3@Ft}iF3*k0{9}EnJOoluR42EKc3fSFd7z1;gVU=ME%x#8?4A(F)7;ZB>z`$U5 z%J2#UgW)~H7cjROv4PwJahnk&Aut$$YXeXT44Ey0l+ut`gNQIN7=ddTC<!j@LA8$w zcr1^B0aOB;NPxo2sKlraG+qj3PcoW=Iz9#&U4fFjj3A{qxFj?JmxR#z0-V!9<}*M? z0zq?Lkdy-%HDX{e76GLM(1<jo9)Xnq@H80!vLBLq85oRH;5~OpT7{5J3=GCS#?xSZ zMp$k#2B$z{a0*1uJI3I2XbkFWAhrLEKN$al&kL}a@WDs6AtPhp`8a4uLV7XaQ7;q7 zh&Q<Z3+V-$w1N7?CbLYIz<PENT?`B+kl8)Z8OaPLpqpA5OkRO}2MHfgPK1OBB<DiH z0aD{YY6?gx4Qb&sFn~%$NC^fJhl+rEiwq2=n-~~O_n01o_otqif^!O_BryZsN6G*x zTg=25K$k@|Ffd4f;+^?#1v`WI0g%|A4eSi!pwr`+|6E}!5C@$*$NXm-1A{myT$%s= z;A9Zr08;n&2Rnl}s3imu1D&r2((y!miTEneiWhbUanM<Opv$SCdjEXkJR&{=r1#GY zt{dW@a-aFn7j_2m2_P}%8QcuwlfbMS+zjHNT|vz3Hrx#2pgM|~U51lE9CSAhGw7xX z@g|Tu77k7ZaZp=>nN@{>LA(ki#wx+dAYKMyu>^24h=WF>nOQ{`7{oy%Kg_H=oDAZi zRt__B12=;>XxxjLIf0u&9JKF+8FYVvIA}zhnI(mjK^#<qGP7)8U=Ro89cGpzoDAZi zGKCp*Uy8UN*p3aH4C0_tiy5>>T^v-NGPAwmWDp0niI_omkcr!Y)Uma2GKgD&SuqR@ z;$~o00Vjhvs5E8<-4`Ve%FE1b3pg3XwLr40It&crYG9TFCxf^Wh{bY;fk7N}STQrp z2TlfYP^*xc*@2ru92}Qme}Hc0U<U1*7Uu)$U{2s<5a$B37#IY^L2XKA<_b;*aZpNN zW)@>$5Chdf%&ZKY3}T?$aG6<D7#PI9DLi0cX3^ke5CgSEnOQuz8N@*82qODR;Sd8e z=pG3%(0#$oECHM>VviJ#F))Mf3lX~~_Jo0%MTV0_?19)b24>a_1_m)un}V6Ogp)<= zp29o^X4Vr73}T?YX3VTtI9bH5DReO~v$-%Zh=Fn_GaJafa|&e)%%HP*#6Tl+%xnyt zEMmtLk{Fm-Qy3V;K(p-3tOcAbV*3>Q7?@eNFffRL+Lp|$2RK>8wkcRKFoX80ih<5v zWM==v$s)E+L5+bKbZ5C3sFq@8pTfx^woE~YftkI8fk6z^wr6H<;A9b-C;yLu8FW{q z7-)wRGy4Wk7O`pauNas?=O&1OQzzR4P8P8~`D+Z!pfdr)z^Rk%4JV6On>;971Q-~^ zAgL1+26gi57?>GDxEaL2sgrREH-i{Bbutw&Fo=OuCsP48gBUn<g3gT-1E)^LC!7po z;MB?Vhk-#1oI08Qa59L2Qzz)&I5BYQWO~8LAO=pIpd26uPMxeOoD5=qpg3pQ!@wX0 zPMs`!I2pvisS|XjzZf`mvaH}_5Cf-9mKzKVV&K%ta)XmW44gVacgl!?Qzs~wiGfom zDCdcRQzwfECxaL`b%O3-6a%MDP`VNWr%upaXJU}l2}(oY)X7-F%^(I&olF7T3}WEa z$uxnRK@6Na!C?SSouGSI#K5T&l>S7)sS{+cC?s`?a59L3+K9|-0SpYH;MB<$z{wyA zPMxeT7#KuBWh*o53r+@6aOwoz*(VA~e^)peL_s^im_d8`MZxKhjfImz6jU-ZgU-4V z1*bn&6HW$EP@TpMIu}b6oc>rHI2lAiCtEUu?obc~r$3e@oD8C%T80^P7nCSC{jr2_ zGKg*ig*{UNCxa+B{efay6m)7RGsu^s;Pl7R!pR^CE*(KBLKK|-KsS_$g7(ufGnQ~N zh=S7}D+@P+=roXdEGpa#qTuw$;=;`!3N9U4K(gTU2fC$36jC}Ga59KO(jQ0`TspF- za59L3(;t`xPJdt)IQ_90a56~05p82&29=ni5Lp3k22pSdV=>@n5Cx|&kR8(dM1!E} z{6s?-m_fImhz7{YfmoajqM+U(Gw9TKQ4d)z24<EMoD8C%o)a^x1_OhrgUmMuW>yVO z22s%LEHmh26j2MAM-0qtA2=CAO+dZ`owy`wAajm^nJs~nK~x7M20Ha!R6}ML12gL% zP6km>FPIs0nwO}8%rXXMHW^L^Q5mp07X}7V37JU@%&ab)45Fa(&6z<rl!yw*)G;u# z)NnG0g4)*1>?RBhqM+jdnAtrz8AL&=J(-#3a5IR4DrIKo8cqfgP+uDCQV~!KoSEeg zCxgfrkR6~pO5_8WHHU#g1k}y}m!~42o;x!$NDOqhIz$Xq*E2J3VPFus1J*HtlR*U3 zN@8YSz|9~6x=VqXx#9mEkqgp)7?_z`I2lAhEd^#46K)0(P|KN_`3pCL2&j$4%p$_g zAOfzPSw#Ln5!oaCf`J*72SvcOGgxek^cAQWxOQgV!Ob87uANyWxEVyiwKHo3H-iZ1 z++1c>3kCs^1=0r?m{~128AL#RbY|ug+zcY%+L^h7n?VFzJ2S7~W)K0_&a6HR3?e-s zf3W&+GKh45Ssn}wBA`8+%&Z=q3?iWYoy?$ff<!?3JDJ(Oa59L1T58~OR|GVwz|7vk z$shund17We!oVN`YEv__9pPjU0nHsVgYLQ$NdcP-QU_|KGPC9|Fo=L=te9DII2lAD zK(fpexEVx1Emvmd3<d@fP+O6ixqy>F1f2euLpT{kJizKiI2lC1>5tijlR?A*EM~&a zAOcQ*pi)W%)N*D9%YxG%sO%Im0I6eTVP_Blr$2Ct0QH@inPWH^M8N5f*@lxrL;<9Z zIfk7<1f2dr`BwzomIA8-r$2D)gT`=}nK!UAh=9`{s7@9Er$1%|1_lvG`cq*CT|NLh zF5QoTK^UC=m@POMgu&^L86*Zte;_eP`itOX5Qd~b3r+@MNcxlDWDtg=KMMv1VQ~6m zyu-;L3{HPc3Y-kW;Pl71gMmR9oc_RKpj$wgnIrx#5I!Syj)58EBVkDTtKno22B$w( zqkjy-;Pl7rz|J5HZXGfPa5D&l(;u@91A{QQb;uaN$si0)e~dj048q{_$JoQkAiP3a ziGi8XfRjOZiL?X*Gh+cKgYW`rJ_csSfWHmGbA(qwSu=#^fmrMe!n344fG#ur+aWwn zcn$+IqYpcSFgSIB?U*8U33SEj-wt7L>SStRXAtg@+6OY3n?V?yIzcyo3WHN8SO++D zvaI{ZAPi2O%q;8-!r;`&2nt<r>SXlcWDo|YPR4Z%48q{l$+(7-K^UAm!Ro-N6Lim@ zFgSIBb%0YRI1Iq4lj#X3gD^OCg4KajCs-Xgbu#8~GYErICs-DoI$2(DG6+LbCnzo< zsWXFtK^T%cGuRn~!KsrO6zAa7$qb5VNa_T|G$eIeurmllQl|$ygOrA_5d$-G1}B3s zq;}TeWDtg=KMzg@VMzM(U|^8^CCmj;C-h4g)FbfudqC)qunq$=a|b(v5G4Jr;A9X2 zr$0uJ><3{!s4O`Bv1a@|AoN1$7Xvf14m*PoIQ@ae9tb^yih=82CN2gBA#nZ6bb_5h z2weX%rEoF`f$Lu;7j_0AaQ(~Z!@wW}u7AN|;QAM=4qX3&Wx@3?SQcFWf<i+GT>mnC zU|<k})W1L28H6D9?*#@1AxQlTvKL(cGI{-*AOxv@Pq8xyf$Lw!9UKfo^Mp1qFf-XO zFbIL`U&b9=3_{a{<}iTE2qAF#1C<s+kkT=Qfk6nI{+LtP8HB*4BeMu6gAgSBg>W(m zfzu!8oLwPs`eQa>XApv<Kaeaq{eg9W(;wJmaQXx50H;5&4siNo7T{zM0;fM_0R{#k zaQb5wU}q2lr$3eoP6i=x`eTXUWDo+UKb9Gs3_{@a2RZ>*2%P>{D%cr>!0C_a2PcCN zB>naL-y`H8RKvgwHV=~i3^*Bt!0C_a11EzJB>jP007-u!79{<F+yYL2EG8TWgdpiJ zgPTDJTspFVOqLN+f|?9z9ZGOA2!UIN;MfAU4w*o)1#TU(9ARJ(0=Eu9H|Gg~TZf?j zn-HXRID>&f2+}(I!N4F0ZXL26U|<jgw+`7N7#IX0twR?E20=*cu!Mm@5Yjqa!oVO1 zX&r80U=Rei4nb`iNb8z;2`7UfxO8M$z{wy8E*+Vda5D%(O2;Sv83e(#GwYrI41(a& z5p-j*Ah>j7S;NU72q_&ma54yjOGoA-3=D#h((wf+gCMwcWIn^mAP6oUnK{@Q1i_^v zm<6t#8C^IT1i`g4vjsbYAm}`NW>DG?1lP_?U)UK0!Re3X2s?uyB>gEcFbG1@-xPKR zL2&wGQDA2f1gAexm<mGDU(5eHf(^pc7?_zGI2i;X>Cb_KO|U``)H1SRU=W0~4sAFY z1R?D|6$S>uBB5K5UZ5bjcf!oTARq|toq$^Ug5cf>sP!)h?wv5_a54x&dMA508H6F~ zOgI??!Re3Lfs;WHoc@>&a54yj)8Fq0oD72C^v5Z{$sh<W|2RN)fYTpG1t)_bIQ=n$ z;scWYb}%pqLek$3P6k16`UAzFpav+1g4(fy;PeOTzX>V`>VSH3oD708f=Ud`>?;@; z1i|T#eGVssAUOSj`hJ4o^v4czJvjZbyD<m|g3}-SK28QfaQXw?(I?0zc!q(QeHSN# zAUOSj?za;Fr$6>}oGb#r1dlN=bINft2!PWc`xXWUflr`Plzk5;g8(@Ffo^RU0H;4t zuR{Qw{@AZ^G6;Z6N6_8z0^rh-y@``S09-nP{2>4?9od&~G6;Z6NA@NEp9q{2d;#&B z0JwAns{@ygV0GZqk$nk+fWSV%dr)=Y(h;l<Tsnf)flEiQ7`Su<-7+NrE*;rRI2i=M zr6c<pP6h#R>Bug_z#stbov@2=G6;Z6N6_7f0^r^W`z%fd0dVhxJ&Hj<0Nguazr@KP z0PdZD!cU-0pa&9u0^rmM4nJ_}1czUPKpV)V3=9I`z6;oW;Jyo|8z+MRICZj@F)#>} z3Ep5}X0PL95GVq*zSz$&FbIHCC+i1J1_5xY1Nn#*oUTAD0dVOEHV<4ng2h4vazM6m zG6;ZEC;JRe1_5yD1j~8|_(5gCeP_^(jsoDmGy4=y1_5y2nSI&+I|6nBE)2}<i#Qns zz-bq(7o2v%wt>?wIJQg#K;sdh7zFpM!Ro+0Yp^<S&l((CS^@@8d%-CiET$m@8n*!H zg{N!*aLEeR3vPF^&tYH?0Jl5AV&HZs>xBP*1Ox=c7?_!Va5D&iQ#SJtP6h#R%4Yt- zz#srl*~|wx83e#3E0_gN*~~XM8Ti2|8`PrZ2bZj%9w|RKWrN0t_`xMB^BM*QesIcW zKEutx4^G+4D;OB~!6}=01t$YPBxOHgVBiO*Y?dQjEBJ4LUDd(Kzz<H@puPq_IAw!+ zBK+WbpVfk!fghZ*L2Yk-aLQ)xU|`?}r)*}BUP!&)!p*?HOW+d&Gw4<s{%!nw7?_z4 za5L~j%H0f327Yk43%a|GA6)LTTw!P6hm^Y-oDBTna+g_yoq-=*?*6&L$-@sRcOBRn z_`&5aa|t^GKe*flvmoUz0|Ns;q}*j-XW$2yyP)<ne+Pdbr2WhfPWMb_I2riCy>ey` zP6mE(%4YUpXW$2?Y~}!V27YkL29@&s;BptN4xF+X9T*t+!6};&<d!V{M-0rM`#kx< z<t_`zRgiKwfPsM@T<(J72;669-oe1Y5AL%w@8D$M2agJY&P?P7j|wpda5C_NQ#NA> z0|P%eWrOvCQ#R<1JbuWi&=XDue(<Oes6OHcr(Mvk@ciJk%WT2Pzz<HlpwTFP@Td^e z3w8#6@Td?Y$W`EWCnLz0a{MX`%%Jj_ADniXFZ^fV2d7<TP%MDcF7pO%27Ykb1+`1~ zA$_J4P6mD+ejx^CrZwyg{E)QU!63lT#V-JAfr4Z~r2x|p1_pj`ixyPp@k4r4CJYRq zD<Bw{K_Siu=~1z;Gw^|1v>^BKfm^g7zwtqOR2~creBc%>SO>UA1qyLKaElfc;(U-E zl?yuqAGk-wEW*yf2W~Tf`UZU9HUp@o&j)TZFdblL-~+cAKzB>=f!hqs8XOFKkT$~! z1_nNGn}Ov7I|CoM%>e2<^MTVYivlMDA2{uTO#!D}P|e8)PP;5U><oP1w9C@N$-oCn zyHX4c4GavL3|(L{6Lg^wgG~bigEWI|0|NsORJO5!fkB@^0CYSigEi<fR<O7fgKz@_ zgA{{c0|SFBgHZzmXg4cZga=GAH83y;gH;MMfY_o8AaPj+{ssmHB?iU@&=e7f)MPLL zo6ijvVFTL^8WfNQUlgGazLs2{0VFQRzzTM!Z36>?23TB|0i;WlK?W@D-N3-03%>SH zlR*n?Cde*buw5Epm*|2`5CywOlfeh<PUZ#%1{DSnDb1h;wjFd3JU4h?LYhGiw2TI- z9^_wc22rrT?7?BB3AQ&GOzJc+Fo-a4G%zrTGH`;!1VoB}+00<ur5Pj}7#MiL?vVtO zieOTXK^km=A=peaFuMiJmIAZ&!TtrArV9=SQE(W_GDv`BCxXdlFj)a6<G^kJ`A8P* zUpa8xX@YH+V^9LCaRi$WiaSjPkS*L`Sz&NoXfjL!t1$*0RtpXpRj~V&z@$Fdk0M}~ zYl1^e4y;!eoE|h8YQcKzz+@zti~_qK6f$aH6Xc+ABo1~1C_FX6sZJDXCdglM3<hAm z_25v2q*7I|NFJC3T~@CHHcb_*OC20X%3u*uFsTU^*950JO$N|0VwzwznqVIpgGn8* z8g($K0~V13vo*mcsDnuzur4{UtR@2==zwOh8Xa&7)B%UEF_aBTrNZENkq7IQ1IL#x zm@N!uOEai|a~3G&3o|%@Ljcst(`10e`+RT;1RVn{%>WV?W&p*MCc_l4uL~O(7zDvK zYBGQpB?yA;)c}j=f?X)ezy((63{C@(+~Ebb#R4oo9n4k)vxC8Gc`!Q=%m$@=O@<&a z+Y&531Iz}cOihM{2GGIDAeZZcQ<N|RC<Zkd!W+N`<b&0NQnD~OeR6~IrZD)(V{ULR z5C-Q{QLvk3!SNytPD`?2bA-XENE#e^(qLWE;It|W&dbsaAUDf`OB-o$Y^s2LtpYYd z1suXM;CN91hqEx4Ed^BxYNTp|MfAbCG{B*x3nul!diBAw+E6yAywU)Nr!LsFa^QH^ zWY7SI1}G(Kg59GDKCoMk0hISO8KS`@11R4KgD;bi2J00D`<)x?PGPW(vS7WkU|qsc zHK24Q49-o$U^jDvV_zEVT1^IbaLEQq51>4&0S-M~aA;^Ugn>ie15Cz(Nk4E|3Mw(A z!MR(Q!J&bHfg2poYT)#&0wzVlCa8e@t_hAWO$IBl31VQsfJ#42h7d3tRBniZ!$BDA zeoe4mO>kUmGW3FV>4C{KFxd{SFF*%gYch0zMP`9T%)zEXRAzwP3Ci92;4(oN>;`UV z41#ijF*F1~evt#)B@GTqIdDu#gGmu^Ov!<LCj~Y^1ME8~u)pNMaiq!M3bq$ii^(y7 zY?lS=(qt$G$0?{h(FB+6vd}mJmF=S7bS?{yO-+U#urCt8q&C>)pc+Az0TNcA*pUUh zTozn=%0f*8r50JRIhqW*pz8vm?g7;xB4BrFg8e89uJ2^QX-oucjwZu2uw6yqxC6Od zlVK{jW&x#7Ik3I5VE>AMQ;{^-7GZE%Dh@VT7MzMS8Rmd>fofGoXsQF1uF_x^>ViX6 z7aX%vP!m8ZWxyr~Gk|IzO|aW^!F8f6xVF*&+pEbC3NEieH9I#n1|gvVDyxMVKsB{6 zIIVJnZ4m~Se$rr-`e1QcFk2WL0>TWSaz+|#vM|_fa^N~emH`ynnhc;A(Ff-aR<K@S zs4OV%xWOSH3-*O3LmRmE2jwYIu*uwDaUrmeG{J7r1*alSh9q$8gW^R49OfF}G@}WQ zL49Zn0p$W+uw9xA3mO<0gurHMGE{>74zfiKtX>n`I+BLQ3rLqNxWtnJ`(2X(l=3wh z`oVDlDMdl?$PF&>WEnsqCIxnbCPN8W4XCvs3=VlshE#Cg0hKeNV3){(>qj|oYSCm! z0jCg<X~N)^7&q7r!r+oqn86O*&H<%QV{qsxLj9Em_6wxE0@d}JU^9ilAs__~A33lI znhXUE3=9I`ye0saWdXD0z;<ael!NmEsEjoP%W{Kdg~9P94~`dkaL9{-Q==?6{52US zfI}YSW=(L8lLMFen&2{Dlc5?c3u<j@GRy^C%mX%40c?&0m@NVJg&<S}l*<I6;-FfX z56l*T%7SbW0jDcza5!r+)PUU#sw)k_=Ey-^)d{XQK_<w8OJjMkEF(C6<)OX<wU>k$ zK=mUl*pK{RyA;4GH5tmlE(f(FH5p>Swt!NICW9xK4Jy5Pz^)PmtCs+Wk1ROli-XM< z1m_3^Fk24V9-G+!>Xv}g3@f+{(PZduU|<l3+6zkm5@7YL;G7}>PM=I*5o2(U76h{y z!Fh@u%r*w6Np`SH<iYAC!1l^9KvF_0IBkGRW>#<-kOr%i2J008$CoU$6b0oSU2q*I z2X2#SGDLt=Bd8@H0ybG1TrwMjQ<M}~uMpVRQeat427hoV7XZ$)pmJUxtVS4Y8aI>; zGEEv><H&(aAx3a1qzO(@n&6b93oa9M!6{rAoD+q?b(t^&s4XN64jEx^ZKw%ucX5Nm zUl{CbO>ii&f_<b3t}A81DrLcCwJbPI3WGyl798f942fVrLRyu+4GavDU~xroD9M5C z)nv#9w|hbPLIvz!L$De{uo@Aly*XfWK;@?}IE@K|O9^hUPlXvkZ8mOjm`j6Q%MH%^ znhfdSb|5H~YBJ=4LvJ#;!~m7m(%_iYWGDrvH&Cu;0Ee?IIFw|-ZeRqPBL$8%Zm_I0 zwB(rwt|dWjQE9LmQLsCO!L^1QH1EVWFfbT_U1bC|O$uDPYBKbJ^A0FXgu&&K6xi3A z;POWkTvmvJ(|{~Ej*P+KAO$vG8XTL_;L=hW>?&z+yfbD`1Ko<w>L#>oARxCG6!LMS zK^`S;KHdTzB~&PQN^TmD0aOo6FHyAU4t%-<ocIp$Jrdo)$AbyQ^h9?cL#-as9Xu;| zR%l2m)FF!#Vv7}V9pgGC^iO6NNF|6Zt0%fcB%|sG*D;U?e$3+ngTg<AE(sP1771N~ zKoCpvk?sxgGrAf^K@e!Hpx3ANN^BddnPR_C`M7v$uTVpsRG#c27$mHdTa2HHw~M!n z*8_|_c$74x5{j(&G^89Xg5NoY1axUgITe`f(U9VC0by7u5JziYfk7S@i3+J@(tN^6 z!Uk}d#Mj5Wgm(#F9|&r`(|6I>1cI9H3{GflGGH?}VQ@n89WKZdferGlz=VrefyDaG zfk<?$%z`Eo1?5NaL7)R41{B=^5`&N+7H%w{1cEAaK%{^Yt{fn`!*q_1jOY##14N1t zJOzSsG9XtdcY#R4xG{+@ieCv?oyr{EeIUs1q|CxK&8&uN8Y+bPb%ipEG7F!BxE<Ft zm<WPad!_bDRl}CUxkoKX?G?`owO6XU%wy~%ENnnB);z9vT(;P7f#g84pqvR(50V36 zcLAL`5Uuu#HwGE<tq|QIp(N!3%FCi3B$PxlAbuCg*rc-R(#}2zk7oshMkYZnQ>a6@ zRH=?<1x75cP<thyq#~dq010{G$PNhsCH^Gh)Phv;Me*(f(J%}OTYC+GK7l@v8$mPy zoFUL>DFadiB5|b-sJI#^WO-I7cR^?vIkjufES?px6c~9*WC4s#3@zRSfqV{<ZG!V8 z+a%j~a!?^ijCY@57l=m266X*+-hGm7pqc@M<)(qsEeOjC$P37KB^@a164=6{q;0^X z6sILo!8K1qN<)g<#P}Vk^c3B}qonyx;1;)u=nhbriSFPw5l|A{0SQr19VEI#qC)T+ zh|kkNI^+%zWZ-t<TE?}EFA79rVg(lN0Nxvfp>G~{oYw`AJ3u(djQ0~U;R{mBGlgp% zY0$8XYah25UkM0uZR6U<w}NK{Z;XHvB>#YTJS#vX7?*&_6(TnTlt7{o9*6|x00AYw z72INcQ9LX7q9oh6#iYxm@9{Tr9pmEx*Y{#P7kKsvDG92bn!}yLzli4o&lBz{u5+nv z+#Mb+e&5uacz*EmaEtLOa8Ki20*0Ho4`>F6?g+gmR3%i!w?e2&&_~9H`yBT<5G^Vo zDj?&d@K52NVx4G%XhTLE_c`u6{D;8!RXzic2n33H2vvD@2~~l3LVh3;gh3`k#j3cj z9X!STgZl@s39m``DXx1wN?iB2e?-3niGi@_4qgw%e_YSF-tj*Yp2Gi#>m8pOwISCx z;bUCiu$jvL2pLLhfp}d1c-Z(KakB|9A^QWw2KfzC4<pJjP>vSearM}fRUj59CP1~W z;y*qIP<|*{r6C2X^FZxEP`#)j1@bL7pN14)pN5psB>_+gzXBAmurvb7IeaT5+jwKR z#XvMD)rsy9Z2;LQQ6W*m2Q5uuwCD~<jl@^NEyuS4ltu)UG^F@S`1(M3nr{UIBkM{A z&^j7M7Los8n)%^>&^jGP=7;}5Gf*ITFrVe_f6%-jBhz*U(E1!kR`LI!`9F|82;TrA z&w7%9;l(-zM%GvVL3cnivZ?(C&3rPlY5oVz6EU)>G1$E50ND%C&$Jz4Kht&wkUdPS zng1O?_ZWjn1}5hJAX(Ox450ZRCWxC@+QBw~R0e=mf@ZKma-d;_l?<R6B_?(@28I`I z?CcB-FR~bzAZ}${3HBKiI~(Jd7Y6L?j9*@aFfg&R{fl{_!Os3K=7kRf6GImR!}D)U z#~B!2aDe5aUI?+X|BHHI2I4U=yx;<xsmH*?D*PX0JH*!@+XEOFSVSPMW@r1q;rTOm z_Wv7Ra4|43tOSJ^s{z=*Ol+F}EuPO}^Z7sL`2q$e77>t}SiVE#Sbae>>q-#Gzzhi) zkWZeU0@?cf0!)n67Zg{lEB}K+9;%KN94f4RAXhOkGcE$rjEg}eE5wb=tiGUdW9<W( z&bk7`W?+VfXdPHg93lpZ3FcUE$oKsRg*-EB_5TIWzOmMT$yyKz*1Ld#fmQtf2?hpe z*n-tDFo4uCFtFCb%wrUI&d2lsWFB)8hy?qifPn!+3^ehEqK;J<6h06iu&xA$E;E!@ z12Ubp_8)lW5~{8blxA61fYq@ehbAZ#pREIh;<GIbEKn1w!M?5mleHj{fd%4s)^@P1 zec(`D2Vyg@FwF(UB2*p{_bb6E8e|VB9FW45btTAc3@j|pAX8adK_qJ?n9Ku_3@l9Z zK;Zx}jcEsn4GC`s7UqZl4m^Fv!ux;1(>E+4{}(*%VPE~<;OQp@7RK5C4Hy_07lFye zAQGAvSr`}nS72aZTnr|!fox#@4I&v>n3w+VU|@j6HYB~U9tHUd?9&1U25de>wt?{) zD2*}y2K$E<k|J5FK_S8l3pa4CgUf@=#0Xbtc(6jl9VzBO@$ysy6faNp7+5j=0SO_f zZ&;Dz01{r%TnLE?bp4<d1};^Yj)GjwzzR(f)u8mjS_39)!6YOnu`)jd`2#scv$HXX zJek7I&LHw+76VA0fq{XA0Td>Xyv`~PVzWws^f9n9tOS)|EDfOeWN8PHtiqtsX0rt? ztY=_l%>?JiEU=w<V0J#3T>>I8{10(|0s{lo{cO<ihlU?Gt%Fk<C={OvfkN?#1Opr6 z4+e(E51=6j$;H0^7d(E3lJg;|c0p1QG%P`?4xp-Heh6|UOAshEv1EhEcCe34LE^0I z!2V`~hX^PiK+3QJu&P2Z2`SImnD2vBvp~ukjIsz?>anpFfZ~d^5KLD8U+`E4RGK`N z0hK0?WuWB@8}omV$t=4;p$km|24ELifJt9)sld*(3KR#BkbtLjQ0=k;q#NRT)`K8d zF|e~71?3c$i(v9Dn0x~wITXO8BADC?A{p2jXMyxE&IOb6z~p=|xd2Qq0)-RfVi3u| zj+Um;;*^yiq=Qu&L^80mR{!7f$d0uJOxA+Q_5VLGFtBa{k?d>?N{=$w*%_1`<w4x= zFokjU{{;_Im>>REc%;I@05XMz>3_i^El}!wB*7~F|G*<Ns9FoKS__cchd)>t{#|(Z z38ePnKakpoZ@_A~7}$}^WL8KlLu(cWhKDyGVaC216z&X&@CD_1Sec1Ed^s3SfZ~Et z5kx}LG1C<=`zokhW$pm6*_**+H;825fX16J$XBce;1~nl+L*)Y%fRq3jWvLQ;b9TH z)&s4H1nB^|1YL&}SceH%hXbk(*2n)JGcd3|`~QG}f%W<S$qWpvFaEz}U|@X-7JtQ{ z%D}+-`u|e~2G%zqaRv@H`Tx%t7}%6R@@&fg=P@v_sr-M>z`&*o7FT0XVqjoX|Nnx4 zflUJ>&cF#zg&?=#4JCHA|2H0NV`u+=<G~>YPG}vm5fmCso518|Fu4s(LP|EIx`S05 zRQfP*G8_Y6Uwa(PI|&M1rmavNpw#yOB+m2@B*L5oVnbVioX9bRtFB?X3etxXPn^&? zrT|nUu@-{K>i-P)FR<2t$yzW8Zf~H}K%C4E|2<$}VE)fAfq{XA7nE;VL_o33vK!Re zW4Q=sUkAlL%Uw`jVqXo;)tsQ*cP|T+n(t+SQuBQ+P-?!f0!q#I4M3^+z8oku-?ssk zi}!Ot<>LJc2CzN`24Zq8wA2H;25)$R%4S^Q$;HscC~<EMqbZ1F+5;x{g2}^R@)(#r z4kk~4$&+C64~S&o#uJNpY-MNrUvh5-JNy5VdmG3%gNfr_6gxW;$Gsx*&G<Lxo(wzt zzd83z$T#DE(A|6N?Ei!Aeq-PUwaoA2F`6<k+{t6w119%^$-`js7??Z`CQpFLlVI`> zh=ita9xSOE(hdXnfuQ+xH7JFn<Tr4S2hvJoItY?w;A6ZEN|%h_J`v+RFdJOEu?B)t zEi1S_XKe?iY1Ubww9C5U-vkB**0o?ZxYlId398{ZTEJv0h-BbHiF0sy$pFs3&{7kY zi$U=Z&WB7m(jH3w<YVFh*$S=cIYBnDqLq+$R9Kxseqi<eZ*Zp$R8HQ}Vr>WMV(kOx z=V@T}3b21xf?Amj{0yO>kYJn*5@TElW+U}EnC5}YosD2}6R4DdmiaqCBGCRzE!gZn zu+1yLHo(lr)sC_RwWHWTD>50_tif#1YGVdA+y8TJ)v$rqY%;LfgT+DXkr~(=!EDf~ zP6p6!S<s?YGTaR+HHmSz0JTyDI~zmFZ7FtkhLqb1C@Dk$Ero#kf3Oq+awT#KL8@Ib z(+Q-$h2#tNW>B24cY{a<L3nCuU|?Xznp$ptL!_2l0ie`!^AD(hh}!QXkbV&M6yUU{ z4`I*E7hrp)kYUeqP}*c#0Vdag$+ci|J(%18CLwj~7BCwUhRAj7PO$hcFu5B{9srYv zKqSjO5Xm6KL}Pm(ZFHDz%;0te^M6pTVF?1|L6&S#AA+SGOg4f=z^!AJr{Mf045~X> zB|z#~4M1vGEx@ERs3phh{SVx7{|9QJ^nq2*0+$nzmb);h?7iWKlJ+2}&Xj@Sh9A6j z0V<dFfJOF#$-`js7??Z`CQpFLlVB35>;moZzu||{8UfpRtp&TC*ILl+yw<|Bmx1A0 z3)5jRc??V*2a_kj<Vi4zX6LmQ6gx%e8HdomC?teM7-xdQn-Lu9jI+V)Ibd=wn4AYD z=Yz=wU~(atTm&W;gUKZzl7$CM3W7<<*pdo}&Gr#Qvabe{Yry1j5Xk_tc>)6iBe<4g zoDE7JjB~)`TrfEgOwI?B3&7+;Fp1R1VO#<dVc`Ljf?!evOsarLwvQl^eKnX|1167y zNU+Tdz&3-(*`QR)I0sDP>Q^lU%Ps<wi^1d)5Xr&=CI!Ky2$)m>k!&A9B>QSGxdu!g z2azC~L1~<E7MPq3Cg*_3xnOc0n4AwL7l6ryU~&<dTnr|cfJhb|FewNoMZlyAh-CW+ zA|dTn_BCMkaS+KM0vTOp$pN{8B^ONQfysO@SpX&r!DJDbEC!P$V6qfUmVwD~Fj)a6 zE5T$Hn5+hq;1L2A@c0`mWJFYyS}6?DjvzUmiGo_~cv|0(xW(0~68V4QiU6zl{~MPk zuuA+ta7Bz&^8cGFGOUIS3|Ev`P5-l8_F_x>*TBHQHj#nh@;peKbF_d&I9fp@1I6}V zo&dIA0A&B=X(0PA&jHzgc@fC|OQ(?RmxJ5Sz`y{v|0*bE7_WgzaIc2(2AF*lOx^;M z5dYr+voYG1j1R!#;4v!3M_~42F!=&Zz66tRKqLz%h-6<6CO3dc1~JB&pq44)EHF76 zOwIw5bHU_1FgYJgE&!7Y!Q>(^xfo0?0h350f-F2B5f(u(3GOYisDRjPA3-GhYB0G5 zOdbc3U{`>~FlT{Ue$dwV958z>n4AYD=Yz=wU~(atL>lvCTmlwBb%g-~1B)O?oJ9mo zs(?tgk025>ddk4Sz6Q)b4kE#>0F9T<0<~lrXM@Q(U~(>)oChZ7gUJP8av_*R9%Wqu z7C{<oW#Ivdun2-l5iqF&BH2EINcPoWat)X~4k8)EsT(8E_BD8<ljL{-xrJIG0&0hX z=X4;WmL!LZ1f+$|5XS)8LsSVSSAofOAd=A(Oqzp98!%}LCOg3-xF-VbeLz}xkha|> zQ0tZnb^K%k0|T^I2Obk=ItFUVF~@>bvWhb@Ffgz!1ewVo33bs0kUX@n16Ip;94vAc zOr8UgP@5rr$Ti@856oszxNHTP&9ogf;sLe!7+3_UT>@$6LE0tEkdfpMAd^`>fyv(> zk`+9oL<4t$+z1{~Vj5iT0<|ou;4a3a3=C(b7>|L;<6!axm^=w4Pl3tPVDb!@JPRhz zfk@_u|3Mq=euLO7%3#t7RI-BlC1<7JBm1CsG;Cxa#0J;g?5ja-ZH|c`T^v)u<SZ~b z8$>clLi=3c8C9lKP)W(m0VX-YWDA%C&mu8{XDXPtgKTC#2Wm$#UjUOA!Q{373(jOQ zUk8&nKq9QdAe*7{F2100hc)oO!Ra5Ywcy!<2C$lTuy`MsTnX+EfJZ18q!_vXZD3$v z@&Ji3d4kChFc}Ue<G^Ghm`nnbX<)J$Om6tU;Y<l+440W7B*F~tYp|$;*l>4&=1{?N zc&w0lg-%e<g|!bfGRQg&)Iw#2jn#w3PrzgK97{kZFi0_Sg48l{fk|#K$pa?AV~L=+ zJ{<&#>(fDu#~Bz-2Qi)ilPAICDKL2&Or8OgXTjt-5D97HF#iUzL2-RL2o%ewgIF<U zwm@-uItUb}r-L|Vfz)%%29cD9-DwM`D`*jR(wO}!lpYmwd4x1Z%(@CxTCuJMlbgZh zE-<+pOzr`bdqE_dC8+FUvjUUWVA2Lm+JZ?tFli4a9l)d`m~;Y@0U(k=n)v}Jb+R~t zQa?)rD8;k1gHv<h{|P4^u?B(3I561`Cc8jtSbM-EcpjW}3Rrw9n4AtKXMxFuU~&<d zTmmMSgUJ<O5}f+k)`Hk<>%ioCFnI(_9tD%fKqP|<X3mAi8rk{x#0F6QJ+XlqPyRh& zhh-cDe_ocMdL2e-ne58Ia9oeo9ZY(HNl2|Gi)R#V!toeTydQhT8ux#~u~+bM)(OXd zfa3btE7qxC@#$a^JWI#A5X@c#CYON8<zNyN*DRPLvY>cB_6ij5$6m3m2dQK`0w#}w z$zvcAWlT;Ek9$GmDM9}WjxAt~1Cy|E;eumpSf_wRrh>`oU=rN>XI%(pF9MTGz~pi; zx#EAp@hDbs-<@?WxMT#UQ^+_n+ggwswsl}~J(xTKCXa&2V<3`fS1&lq#v1g0!BG{~ zI4}uw^@3xoSf_wRrh>`oU~<;~1;@6rE(Eg|fypIcaygh>@qfXw4XohaH|tt(&V;#o z0s{lvT96vHbzpKmm^=a|kAlf#AQHvZ3XGhfGJ%l`Omc%s@VEmbFNjTkO?C7UQ8g7t z`A>4K1@ZxCyn_oA7L43r5<Gsv$O~dq-~$C{$%DVX0FMuVX4GNpa|VwOj>Hie2cUKp zc!Yx$GQvS>%Rv!R7BbERweA^bfyvomat@fB3nu4*$@yS%0hk2$1{fEC*^9yC5)cV( z^P|pnKw8oT3=AwhAT=z4U{VB3s(?u797r{&N6K0QCTqbY#(W6dN055<)nIZBm^=<5 z8I&05KBfSj-^v2zHr9MFSpp_8=elr|RLG+eD0zDzeFI8S;1M`haC;rg%pJB8YykrU zZr?z1BMTR}^#ab@ERa#reV}~KauL*0Ww{P&$+Fx9mF6t}K;o>z;Lr^Gci})CYY>=> z1C#AwvI}GyYY&+01Cvw0;#0vSq`f>H%!bx|VD=&~xdcou2a~WiHE6_aEl7lI9hh7X zCXay0qhRtFh-6U3Z08WwLpclb4YZ$f9?VAWty}_&Tn3X@z~ogh2^m$n4rb$N1?>-G ztp@jEYQQ9<M^g{d#R_Q)HG<hqU=l|khXXvz$)E};5g58aZC6H9Fo`^pupHFuhRz{@ zTPaN7mM{~zCCr3-RtZ!JAou^bfXzXjVFIZE&n_}y&NG2q)J)(OH4|jc=^)5$OyHR( zro&)1q^Euy%sv4o!E-ZAe?V;Le32?c7szHtQxFL)uTcF2YR$p?1Y+a%6G#^3ClDK( zpAaJ}*!%?2wHNFXn4dr*Fh7CV;L#N(@aPH?cpjYTBv}0)5D6Kff%ptEgNYh{43Kde zq*!DGn}>6>26gry6d$mW8<1NdV@9x%8;~qyBmy~Zz^eiX#0OHJ3KBOYjP$_LC*@;e z%R#AvX$6>E118sk$@O4z1DJ%>WFWsne7^-O4he&8U^em?)=sbpxF^U2?g=s-0E-*~ zlNe)bEcZa-C?jkd$mtWbesQ-BboCRqR0@g}*a#bljcY!46DYMn$NaFRQjq^3aY>t0 zn!vySO{Kp77wk4dSy`z?W{HY*%x6~_sL!~o3{RgCRKo@RU$Aots7=3f3EKG2g55T( zknx`>U^P?0<a97O3rsEqlZ(LQ5-_<OOs)WvNTWueHvP^epf>%^C2Z?KvTR4d<WVqr z3`8<$LCaf6P6d~=1o9|yx<$>epcFtTC4<!9PRR@4<G{F5G9-UP(leyIMas>P@(5+b z7M#LaaE;rN<9m<~AZr+~`5q)oZZ5!AR%4dW*nFSBz<}m^P|C;UdtGSUBbR01dY1up zl)r$1fsvR|e&m!vC>?-uJnnP=2?>xI%yfWU+9Q{4kUAJv#)0(WsEHw|1WVaBkl_K^ zZ!ze?162NRh4yBdE-@G|FhFa{C1Cb4Fu5E|ZUmE?z~p8yxdlva1(Vyr<aRK*15EA& zle@s=ZZNqAOzs7f`@rOWFnIt>9t4wzz~o^tc?3)z1(V0X<Z&>021K%e?PUR*$pSW$ z<uX|O3YdHgB0;-wwyGi51srZ5agKBl$!QBFAAre+Ad*2Jv!-CW^gm#$1c4U#MzESq zU~)5<+yW*ca|dVtFWBP4eD42(tvt-<!R!lQ_C+vx2`q9MOkM$#SHa{pFnJwJ-T<j& z*#k0@WiOb#3?{FDNci|ZsNR9kJ8Zs%W!$nJ-0uO8@3J<6*-c;)cZ+=i0|Tcm$QE2- zv-uC<u-W{FdDH)Z&3~9TgUKym5*{`T44|-KU;u>;0|WB~kc*fvg2_u@@-mpb0w%$| zaAxq#KByjMU|<H%?1RE)^B+*yZ2rS?8Du`o6%dI%Y&PwqX4q{0gDY$p7zl?A0|O{* z7#Kid!@$721=LrC&N)%3M+XWU1_n^rFff3^hJgVTHVh2d!)D_mYW4I$>4t%U!4PX5 z1ls?IS_dVNQ3qkGpF#Bk?shh)_QqWb<7=Jl0k?2reJPMF$Ssw_U|Cq*1hR!tj|wzi zjXd*>J)A(RPEo^&__`Y83e<KC$kl}U(I8!f`kbJ;jFf&f$V^zD6XXV1IDy!>>u^xZ z2E5`ErT=0KO;6xnHoX4{N<D<ywjfu~vX28YpB8-_r1mcptXEE2I}j0Op!5Xk2@v0B zM{f0@<~UIN5o!m5LIrn@1DOCzNgy_I&la;Ch??U->LG1p%rt}=W}tP?;N5v>ZD-J! zF|M|=8RJaQ3@GC)FgY7c&H<Bi!Q?zJIUh_e0Fw*B<RUP+7)&k!lSe@{7vnK730@V+ zcoi&u4NP7KlQ+QRO)z;2Ox^~QcfjObFnJG5-UpKpz~n<P`3Out29qzq<V!I521GK0 z)j)QYvT%Y#Sa`ssAeaR2qGnMBxs62yB*Gd1VzXv~N$`3}wvQlj$hr#lHDLC7Fu4It z9tV*e6G7@ZrhrNCcqj*Wl_>)#6hV1&7HIU9aW<Ho119H!$$4OMKA2npCKrOqMPPC< zm;|puU_1&MTVy;2Cc&#(8LxuIav86I$?IV92AI4FCU1es+hFnzm;{ggGTsBT?}Nz) zU=q9wpYaix{TNKX0Fy7l<QotP*%iye0AjO%SL(CyfZWC+2qqyb;iSQ`${-iAsDQ=4 zgTjL~03^cp5hMcH&Bwk5%w7*t&%Oan9tVkVOa!Uqm;xrjtAshgtArWMS-^WnSX#m6 zA?<Ev{lbv2s*Uw4nEVDNzk|siVDcxJ`~@a|gULT&@-LYD2PXf6NHzvA$p|Kyz$7!6 zWC4?`V3G|?vV%zuFv$rfxxgehnB)PIykL?KO!9+C0Wc{DCWXMHFqjkplcHc!3`~lH zNeM712_|L0q%4?}1Cv@{QX5R_fJt32sRt(Y!K4A0Gz61IVA2>wGFYIDf6WA~e_)&i zCTD}mIbd=wn4AYD=Yz=wU~(atTm&W;gUKZza+r+s@__upA_yi$z@!S81lPiBA3<#P z)nF1lYReAU_vpyt1WLWo9r!N)7c6sOaRrlZVA35-dVon!FzE#*y}_gpnDhmceqhoc zOa_3-Krq<=Dq|pf`&rsStGijitJhh;>*iU&>*iU&>*iU&>*iU&>*iU&>*iU&dxKdZ z>*kk&au&-nFu5E|g7-qPfOiJ4tOARGSI@J6SI@J6_mHuy1B<T*lN-R~MliVvOl}5~ zTR<c$cs`g_8Wb9=V3)H7f!q%o2VCX?+6}wR1vIO_%!PF-SbRE|oCPKqg2_c-atWAR z4klNCNYF^%G8fQD-!d1_NZ&FS&`94h7q+8d*<&D*!I^;x)O%oH29qpck`+v{fk}2S z$pI$8>$w=f>$w=f>$w=f>$w=f>$w>Cz-suxqyU%{1d~Ew5_}>9g9w-{3MR$Cq&S$A z0F#nnQVL8;gGm`MDGMg$z@$8wQ~;BTU{VQ8DuYQCFsTYA)xe}WnA8B1nqX23OlpHk z9Wbd2CiTFiK9~gWRc9~+vyH%{F_<&~li*#~3}#@qIhX|RYG<$nv#r3SHJG#kleS>e z4oupENe2+gd;(0~29fM+4EL6$v9mMWTb9G%j%7pvTr)C#0+r=VpFt!_FR>Xc(gG&I z<vnv7m<`?;&fEcJcY;aq8Z72+FdMuQi@6uf2G43U_k-CJz$CbKW}XCQPX?3Vnwohk zm^}?lP6v}Sz~oFY39iSP!LDTn=Qn2XZV_hiE_`P2E_`P2E_`P2jsj-zZV_hiZV{BV zlV|@gSo{mr$6vAw)W=`^3)IJ7vJ2G5U$Tq&5?J;!n7jfeuY$>IVDdVcyzzg*l3m#Q ztBX6R)t6`RWWEi`#VmE8(grkk#K3@jk_c-7c-3Yhn8aL50NHi@<^O_(HLPF3<To(+ z9ZdcJlRv@aFEIHVO#T6rf5GHGF!>)uvN3>3Mli_)CYiw`3z%dDlWbs;9ZYh7Nlq}y z1tz({BoCP61(SSWk{?V8fJs3xDFh~k!K4V76a|xFU{V}RN`Og8Few8jWx=EznA8H3 z+F()#OzMJ3Jus;cCJn%(A(%7*lg40@^3{uhIP=)0{{ah=Mnq2A2=XatBxzw1Xe4Q2 z5@;l8VG?{KX#urH*%l^&Mv@jLfku)RCV@th7A9fOnF~~?l`}yjNeh!0f*EIm@+al{ z=NOOvFPJ}r@fesq4kl0hPnbW6@g$f$1tw2}$unT`ESNk8B9YJRU<U8fVO|DW9m2dE zOl}2}+rZ>@Fu4Ov?gW#&z~pW)xd%+{1(W;0<bE)D08AbPlZU|MVK8|FOdbW3$G{|b zpAYjHF#91WWSD=0{DNh7pfXq-yhjka#uw~PmbW0iEZ;#S^!$+kkV@7}(Ag`jS>Sd| z9+;gEW|x4;YVe$L4VbJ2li<3EwU2>e-U`U6CAfAXa=3x);z$RR6G3)yOaYU#z~pQY z$@u^z%lQyQGK4ZPf$Aa#W-!SDCRxEG8<=DVlN?|Yyc3H7yxNZeyxNZeyxNZeydsE! z53B}!1`LA$m<`^=$RGq}gLmmOfOj-9h=N7Lz$E0HF36cfl3)=jFbO$DMh4851(R}M zQXWhyfJsF#sRSm$J!}T>UP%U3u!tI%R0oq9U{VuIYJo{@FsTD3b-|<_nA8W8kW<DC z!E7TiX$&S!z@#adGy{|7VA29iT7pR{Flh}YZNQ{0n6v|v_F&QhL^6U~0nojK;8p;6 zdq$a0fJ|cs@3$j)|7bLH=Ni(kG{|Z%NL>xBr33#@nB@Ultvt(vH4e<q1f?F<JTTb~ z7J-}@HU-R{3MQw6$ys1>A(&hQCYON8<zNz0tAkH|V*T<zVAdkmuVC^UnEVbVe}KuK zVDcB3{0%1mfXTmL@*kM|4<gwZz$7D>WCD}SV3Gw)vVuuAFv$)kIlv?*nB)SJ++dOi zO!9(BJ}}7-CI!HxAea;alfqz91Wby8Nii@f4kjhQq$HS>0h6*|QVvXNfk|yJsRJf; z!K5CT)CZFWVA2pw8i7e;FiCOU4q72T%LBARe3l1jh4?HF&<gQc9&ATJvBP!@L^8xP zc>aGdV;X}OnDhpdK48)pO!|RIe=r#UCIi7_5SR=Glf7WF4@~xh$q8U`BAA>6CMSc* zDPVFcn4AVCr-MjF2QcXfCY`{fGnjM%ldfRW4NSU&Ne?gyb~z*1<&0pLGlE^t2zEIm z*yW61motK0&IoonBiQAPV3#w7fXxX7lVM;o985-l$w)961tz1xWDJ;$1(R`LG9FAO zfXPHKnFJ=2!DI@UOa+r^U@{#{W`M~|Fqs7=v%zEzn9K!}d0;XhOcsF2LNHkbCX2yj z379MeleHj{`3{I=VF#03U{VrH%7I8$1~AD8CYit_#<_*88$jZ0H^Agg5Xs&NCRc*V zbzt%sh-64)ZU@zA%;26I3wVB%1w1p#vJF&fv4U$2X!{0SBd~(YfA}sh&<R|D{}rZz zN*@pz2WA(5_HwZng2`&ocm-<>n5+ep^`KrNYXg`BpB};51ZKB`^>+QQU|?YF2A}lU z17`Pv*?piraja9oYNmq8>0ojem|O@Z7lFwoU~)N_TmdFmg7<iR`FCLIBi65A@*9}^ z4kmwq$)8~I7nuAFCjWrRzhLqonEVeS*%-hiBba0Ylgwa}1x&JnNj5Oa4kkIkBqx~U z0+ZZek_Sxkf=NCw$qyz4z@#9U6atgNU{VB3ih@ZoFewfuCBUR4n3MsNvS3mUOlpBi zZ7`_=CUwE29+=bzlLlbY5KJ0@Nn<d%78H7H>%ioCFnI(_9tD%fKqLovH8w*M_CCl| zCeZqUDfd8qkf}_d-u_f3^xpndCgzs^3nnWuxBg!+<r1j3Kb48O{r`fgOrYNWR3_$5 zFuMy(c7w?tFxd+x`@m#Bn4AD6CxXdIU~)2;oB}4Ng2`!Maypot0VZdH$ys1>Hkh0P zCg+05d0=urm|OrR7lO$}U~(~-gzS{u_&;FEJy0KH$~{mYWXe5IA7sisL?2{|5NH%& z$|cY!z!V|SD8Q6UpizJ+mq4QcQ-qi=|6edgi1`Ybyb30-fywJ&@&+h;K(pCX?t%Is zQ|^KKAXDyv`XE#8LGviMWyA_w1p!(S5%hn-WCzd)+++um`XdXb+(4|;o9qA@v779` zIvs4<EHJqcOfCYGOTgrEFu4LuqOH@L>;M|Qo9qA@y_@U+8oitB02;lU?7(&mq@DxZ zh6eR?rrcvFV_*Wc=NXv6Bny~i1(R%Gk{wKf&zfQY@6ura@6ura@6ura@6ura@6uu5 z1FPf*lLBB8d};`T5SR^K0nY$lE6*Sb77+uJ;N7td;1g^ZB*7w5U{V@P%795(FewKn z<-w!^m{bIlN?;N^7s3GUcQB}eMbyBgI+)Y|lbT>s3ruQ*NgXh$3nulzq&}F0oa$=` zW*dP?V=!p~CQZSl8JIK&lNMmo5=>fwNoz1^114?3q#c;F2a^sU6929z#+jhnf{_}t zS)h4*a6gU_+>c{?3%30on0yZ=KY&T_nJ$c<!0gXp@(Y;!3MRjSN${D*%qKu>=7%5` zf_j3W{V*Ule2xk<pRW8LH0KGPonj3Du~{=gYFP8YWC8eWqCzlP4X!h4z+^3m#4>{g zo3$!nU;y>w7#KLfXI^lC&%9u$q+)0VFfcG41J#m@$H64nuZ$-_K4v@xCQpOOGhh<D za)uGSewXnoXr~Y3H86P{Ox^&KH^JmBFnJqH-T{+$!Q?$Kc^^zZ0Fw{F<RdWo7)-tZ zlP|&K8xYA1J|l;D8K~vJyc|q|`wz_E{sS}kbR1^z?iOb7{yb*z{yb*z*&)o}vqPA- zf^~u09?)`g2Uuh$nA`;>cZ112U~(^*1n+ZU-VbIU0F&U|+suc+?89L42$%%VMKgov zqM5;S(adMS;$Yt~{|1FE3n$1gX!Dzpv;#VK8=Q7n!0u#u3)0IP0Mf;p32vW&PupPy zpSHuA2NnU3ShIrXR#?GvE3E7P9{``T3L?R?C#<_bvBtU^Ozr`bdqE_dC1`Gx%?eCf zgGn1OX$vOpz@$BxbO4i%VA2Up27pOyv#tgV4D1^~eq@KFUpJ61IMTu7M37%Nrhv&= zU=n=l9w+!b7*6ncFbtieV-gGlH6{U`duQYV#VsQ@m;|4~#mEb0&jgLlGg5xm4CY#c z^I-EYfXRzs@)DT53?{FD$*Z996mp6;<8?6m2AI4FCU1es+hFnzn7j)n?}5qtU=lp? z#RwkxVtfP^c?>3BfXSC&@(qZDj;TESuh1icvNnO~e?gBF3-~MxET_SM>th!1SvjCn zTYJ>tYZDY07*Nj5Sr4*>eFK=>4e}lP9xw?$Plx>khz(t>FbT}YShK(ZK2wbYe2y9? zIM*^TF-&A&VgQ{M>B%sS!Jc6u!x@HNhI0((7<MvTV7SS!i{UoIBZeakPZ^#woMCv$ z@RH#?BPU}m!v)5fOu>w<OrcC+ObkpBOmR$1ObJX$Oq@(9OwCL@Os!0Fm~@!tF<oPF zVY<QegQ=G3H`5=cc})M9xtJC(^DsLxtz~v)_F#I#?8RKf^n$sBxs+Luxtw_=voP~& z<_*kl%-fhxF#9l{VZOs0&wQWxA#(xqZx#mTVisl=7UoJ8HWqf~Y8FlwZsuARUKU>F z1{MJpY34>2WtJf3UY2Z@7UsPyZ7h43ue0oDxx~W9a+T#aixSH{mU}FkERR{9vS_iq zV0q1=%kq}xEsG(`dzKF@Ml7FLKCzgvd|~;*V#@NH<u{8ND+4PNi#aPND<_K;D<3N# zi#4k-s|bq?s~D>kiyf;ht2~P{s{yMaiyNykt1*iQt0}7~izllEs|AY}t2L`Ni#Mw+ zt1XKUt39hdi!ZAqt0Rjat23($i$ALys~bxos|TwGOAxCUt2aw9t1qh`ODJmqYY<B~ zYcy*#OB8DyYaB~7YbI+JOAKocYavS<YYA%!OA2c>Yb{GEYdvc{O9pEbYZFT*YddQP zOBQPv>nxTW*14>USZZ09ux?;!X5GZPnPmd&PS*V_lUNV39%PxxdW-cI%PiK%tdCh{ zvp!>e#xjTX73&+8xvXE<Bv}@)$*{?@9Ai^sQ)4;BropDca+*zx&6wp3n<bkQ%QZG{ zHgA>(Z2oKkEDzbj*}_>Kv&FE*usmT~!M29wDcgRw!z{1ZZm`{BdC&Hd?Gwv4wjXRi zSbngxv9q)MWN%_`V)@P9%HGEEhrN@%ljR?KH+whBfA)U%epUwdnd~!J8QJHs&tYX^ zpU*y@m6?4d`$|?8_SNibSXtTEvu|K!XW!1ggO!tgH~St|ZuZ0Mr&xK}&#<3i6=i?R z{+?BgLzF|5Rgy!JLy}dBLzzRFRhmPOL!VWK!->O%RgS}r!;Mvu!<)mKRf)rw!<SW= zBZ?!6RfQv+Bb`;1Ba0)ORgI&PqmosFqn)FjRg+^P$0SxQjwu{dSamq2aZF>?<(R>- zfK`uU3CA*4bB?VXTUo6*c5>`wwdQ!p@sQPqQ;$=R)t1wk)0owc)11?s)t=Le(}vZ7 z^8x2WR%gx^oG(~i8RmfQRBx?gU}j)wtz%#TldNEp4NS6wNe(c{2`0I~BsZAk0h7F7 zk`GMsgGm7}DF`Noz@#vk6akZ>U{VZBii1fBFewQprNE>#n3MsNvS3mUOv-~v1u&@y zCY8XXGMH2Wld51+4NR(oNewWm2`06`q&Aq;0h795QV&e(gGmE0X$U5bz@#ylGy#*Q zVA2dsnuAFTFlh-Ut-z!;n6v?twqVi@OxlA<2N20fy*dbVdfPEjJB1N^mKx&;F#9B! zJOw6CgUK^s@+_D<2PV&hTJww-z~n_Rc?nEj29sC7<W*4XjPV+nybdOBfXSO+@)nr9 z4JPk^$-7|k9+<ojCLe%F@L5fakHGB5VDbf+d<iDsfXTO@mK5VVF!>%#egKmn!Q>|} z`58=p0h3?B<To(+9Yivp0EI2=Tquwqq4ywwXMtEaLAIdPcc63Xz_T|j%3$^2T94&B zh|MYvCIi4^CU{IP4@5%Gk7Hx7X{%yqXRv8&K&ulOz%54*2|n+YeGe!k*<p2J0s{lb zM39*rlR)AeQ^4$5U~)E?1h0JL0IzoBv;nDMSjxZzrkTMc3z%dDlWbs;9ZYh7Nlq}y z1tz({BzO%X1234(2PVNQkQfBOZ1CDd1|cvTd^ZLI<lZ4su!tC#6bF+MU{VrHN`Xo6 z8YTuAFk2Q(%7ICFFsT406~Uwum{bOn;JyKaDwwSXCc!6AF=&9<nqX23OlpHk9Wbd2 zCiTFiKA1EBlZIf@2uvD-NfR(>3MS3Kq&b+h0F#zr(h5vkgGopj+k)A4VA38;I)F$< zPSE%)BNvzipT5P&17`DrNX+p(lyN&;=Y*XAnGD^9kG%i>+W!TOw?I2q8gJp*Icm_D z!HP0=4C<4hoFD?(ZI8TP2fV_E6}-ZS6}-ZS6}-ZS6}*y%6+DN>3SPIv3SPIv3SPIv z3SPIvx)f|axWCGZG+xE}<-b8=9_v>y`3+2d2a`X*<WDg93rzk7lYhYEUoiO(O#TOv zYz$zM5lk|HNoFv~0w!6(BpaAy2a_CNk`qjFfk|#K$pa>N!6YA;<Oh=iU{VlF3V}&s zFew5iMZu&Pm=p(-5@1piOv->sSuiOFCbht%Hki}_le%D14@~NVNdqux2quldq%oKT z_uknyg2Iyx+^=Q>&w4U!At4>LgGO0UR!)IOFwjq(tNjH^N438o>4+IzMl*wZ4$R<_ zN?Dvh=CC;bk6>V6aRHr$&*BOu-N2+fnDhXXo?y}oOnQS!A28_)CjG#qKbQ;vlYw9| z2-M4B$p(`-V3AxfnFl8G!DIoLECiE9V6qrYmVn7pFj)pB%fVy?n5+boRba9jOxA$O zS}<7$3SE|ZP!3~h0Q<2KEZz$CDLC|4=72@!g2{Pcaz2<`045iL$wgptF_>HeCYOTA zWngkSm;~P;z_Jp|UIivsgUK~uaxIu#2PW5p$qis~BbeL-CO3o0EnpHno<ndh3A7_9 z@V`NA2W!xOgW5jUI53G?9teO>eg~0+&fqYp+r`=ivYoXX)Qe;70keC-Y}o#DkS$Ze zwoC_;v%us+Fu4d!E&-Fv!Q=`s3BDN&vdV+?%m0MBKdfKD<To(+9ZdcJlRv@aFEIHV zO#T6rf5GHGF!>)uvN3>3Mli_)CYiw`3z%dDlWbs;9ZYh7Nlq}y1tz({BoCP61(SSW zk{?V8fJs3xDFh~k!K4V76a|xFU{V}RN`Og8Few8jWx=EznA8H3+F()#OzMJ3Jus;c zCJn%(A(%7*lg40jEhr4x)`7|OVDbo<JPIa{fk?<XDU4DKj-Wkd3{GIu8BDr>NmnrG z1}5FXqz9M`0h6I%G7L<HgUJXm83`t%z+^O-i~*D2eK8DiV0Jv1OaPOKU@{3zCWFZo zFqsM_)4*gpn9Kl^nP4&tOlE`0959&+CiB2#KA0>3lZ9Zi2uv1($r3PG3MR|IWI33u z0F#wqvKmabfXP-c*#;)TH-IsKZ#H7+1dBj!HUjSnV^{<hSqvtZfXSs`av7Ke?+If7 z@04Qz?{8uN-(|%BKKFtFd^!sQc*j4(I<R{1S+@+}+YA`MC*CrEPrqOQ?{Z=QpMJpr zK6i#;8(95zFbUon#sEJ3f&qNL0R#Ac0|xNELI&`@LWX@{mHWXY_&fjx@Qx=2@ZLEF z@E${kBVgI1U=n;%3&SZe`!tvY@9ko^2xeabli=G+7_NcY*TLisF!>xzz66nsd|;9v zObUQWK`<!<CWXPI2$&QFlVV^}985}pNl7p%1tz7zqzssp1(R}MQXWhyfJyM(RE$bs zwlbJh0h6j=QVmS1gGmiAsR<^vz@#>q)B%&aU{ViE>VruGFlh)TjliTam^1;CW?<4B zOj>|ROE75#CauAw4VbhAlXhUz9!!GMBqKOYGJ?}2BREYmR)J-~DU-1V%&r5I^<WZw zt}tUGnB4>>!8dO)g3~Y~I1Mv`(=a1A4Ksq%Fe5k(GlKUxGR^?$VgkE?30x*Hfy)FY zaGAgaE)$r*WdhR_u*#`mavGSN4kjTc%mlM%fl0_+JoCZq1z-}KQ<%Uxg$bNfn7}!O z37k`yz&Qna?lm~QF@e(?(;2W{@Tts9kW-n@gGIpUkO`a)nJ$Axu7F8!YGeYZMka7- zWV#6!zXc|5gULH!@-CPJ?>u3;4`zdJtAyO9#q<a)@)%4$0h3R`Bsf(wy#TYpX`AU4 znEe_|z5$bO!Q?wI`5r_vgG(W1a4EzLb`LYyJ<MR+nIU^F|AJJqFoQ`JFv$ugIlv@0 zm;~n?7I3a%0p}VPaDHI{=NA@mPGJG(5f*UnU;*b27I123<pi0)$^#~O!K5FU1eXSE z;MidUyNV4QN^IazVgrW~8`zy}KS1i)!D)#d9PjMl_+<x|8|>h6gB@IMu!GADc5pm$ zfNKN}a7yL?rx^}#YT*E<7LK_fGdaMig#(;UI3amWZnSn{0G9*|;F5p=9DWSoGJpY` zvl+lSn*kgf4B(tST022@Yme4WjKi*WLc4hrbh^*rsIM9r7?{B2+z6_#!1oc4)>@;r z76SvrXrF4dPc_=7!qKNftF=Jqi42Zf3*-{;?Ls52?i%fDVfMA;NBdf%eXY@vK*rIL zK=8;6Bhp?-$ZEquGB!9o`&!`n5dtHGzd<vTqdhJxJucnRx@)xV8m+rV>#jjGi-mli zCH~VZw}4K!U_!l%0aVLjo>`83PWkW~Z-mr=NubamP!rOn{{}tT9oLLm-~SB^46K85 z-fXl!WEiavN9)7U`fyOyhoCc>!Rw#!+^+>v176z%y}cH^wh3~JAQO016BBq<6BBq< z6Z8fx@Vcd8IED$U4?(AJ4}!HL(3_8jVtr`H;0S6}FgSrpXE5mkCSAd#8<=zllOA9) z1Wbm4$uKY(4kjbOWF(l30+Z2TG6qb7Z<=R_1GD47WCEB>1e4&F4MQ@RodPCP!DJek zOb3%0U@{X-W`W6UFqs1;bHQXDn9K*01z@reOcsI3VlY_(CQHF&8JH{wlNDgH5=??m zSYv1bvs=Mr8<=bdlO15P6HIo4$%SBY5tv*ICYON8rC@Rym;|?a8Nj!ZF@W#YV*uYl z#{j+$fC1bNW&q!tz_1Ri9(+p~1NfFQ2JkIq4B%S<7{GT?Gk{yh4B(bA1NfFQhV5Wo z;IrHr!0lrO@LBE*;9JTVz-PHLfN$4h*aud*A54PV%?#k1_87o-J~4oA`C&K$mOTn4 zPlCx)VDdDWyZ|OIg2_u@@+z3T1}3kA$s1tuIhcG2A{qI>BtMuG0F#1XQV2{6gGmuE zDGDaVz@#{slmL^GU{VT9N`pxmFewWr<-nvom{b6hieOR+Oe%v(6)>p^Ce^^CI+)Y| zlbT>s3ruQ*NgXh$3nulzq&}E50F#Db(g;i%gGm!GX$B_E!K4M4v;>n@VA2{)+JH%0 zFlh%S?ZG5CO)`ShBqKOYGJ?}2V-;8yoH7}~Xa6zQfko=UWCNIN1d~l*vKdT*(=a1A z4Ksq%Fe5k(GlJ7FBRCB+f^Vc^oB>vkIkpL2YsUn38xy#!U;>vFOyIJD30zh%fy)Xe z@aik3DIjy0rh>_7U~)Q`1e?z^6U?3kCg*|4`CxJZm;~n|CU8Dt0_P(pa6V!J=OZR? zK4Jo|7KYwW30@n_1YR4=1YQ-)1YQ-)1YQ-)L~d;fn*9T(bEY$3SDgiu=fLE7FbPio zOyKm-bQvsi1x$i-0TVbEFoAOc(@n7WEiic-Ox^*Lcfln1?lh+RVD<wr`4CJ#0+Wxy z<P$LY6ikA16VnSY8=R+@UV+)K!Q>k-`4&vR1C#GTB=klpa2d!9E(4jtu3`qeiW%$% z$o&M&;CnQg|AKU}FoQ`JFv$ugIlv@0m;~ov7I4mG0q0y6aGqrW=UEnTZe;=IQx<Rz zWdY|<7I2P(*Os9D7Ca!+Sb4#uAD9G}OKjkjzy@|98#vt9z~ROQ4mUQio7sMV)U$(A zH9I(sv4hhRJGca62bW;%;1Y}-T!OKKOE3;_-NXUTQyk#*$pKE89N?76F&AVe2RLPN zfYT%=B-dMvj-yi4Zv?NTW*7;30*)~}U|?W44mzcu0i5ne_XjXS)+`gVKLC7dFXQMg z0ZMiWpw^I}+KiMM64cMc>`#Js$uNO;$)NNt!E4)@z;_NaVcxhka3irGU&HEBkdLUe zQvrJa6S%)JNJe547#MKwT>$T<8l)q!HlsaH25>8%0o=-G0JlgO!0mgYdY-Tv6?CH* zxV6LpZZ|W4+szE%b~6LG-OK=PH!}>~{wKB?736Dh8y&u<0VFco7sc$0!fI5|d51%= zM@m%BllFa1P<;X(yI}&~yu<_^sbK<-(J+C>XqdobG)&-e8MGNoQ2hfQkzoRl$S{FN zWSCHERFL`L@fRjojS3RMR-=N%!6~24y;IP<E38HZxq(W(Q+SQqz`($azmH0<-YMvW z&QG9ycdVSC-XJS-9~Hbel@+{7nH9VXloirzh1IkL3=D&=?-~z1^^F;P_8SYBWCfFK zV3Hk7a)3!rFv$fbxxpk4nB)bMd|;9vObUQWK`<!<CWXPI2$&QFlVV^}985}pNl7p% z1tz7zqzssp1(R}MQXWhyfJsF#sRSmK!K4b9R0Wf2U{W1SYJf>iFsTJ5wZWtgnA8Q6 zdSFr?Od5bmLojIsCXK<Q379kmlV)Jj986k(NlP$k1tzV*qz#y~1(SAQ(jH7YfJsLN z4F(1VCot&@CSAa!E0}ZxlkQ;B15Ad1$xtvE1}4M7WCWOu1d~x<G8#<AfXP@e83!ig z!DIrMOazljU@{p@rhv&*FqsA>)4^m0n9Kx|Szt07Oy+>eTrimjCiB5$0hlZVlSN>% z7)+Lc$x<*`1}4kFWCfV41e4WZvIR`Gg2^^8*$yT<z+@+w>;{ty!Q>(^xfo0?0h3F? z<T5b1989hNlPkgGDloYkOs)ZwYr*6?Fu5K~ZUB=T!Q>_|xfx7u0h3$7<Tfz59Zc>3 zlRLrWE-<+pOzr`bd%@&BFu5O09srXE!Q>$@c^FI{0h33;Bx>shlv+-K#ZQCD3t;jh zn7jlguY$>IVDdVcya6VkgUOd5l93Ng@`FhMFewNog}|gRm=pn%qF_=COp1d^2{0)M zCZ)inG?<hDld@n^4ou2}Nd+*e2qu-lq%xRP0h6j=QVmS1gGmiAsR<^vz@#>q)B%&a zU{ViE>VruGFlh)TjliTam^1;CW?<4BOj>|ROE75#CauAw4VbhAlXhUz9!!GMCnGq0 zGJ?}5BRG9BR)J-~sg$t>%&r5I^<c6AOg4haCNS9yCc){M5uBbG!ReV1oSqrM>6sCn zo*BEqDrbO5Ca@crz~uuIxO`v&mk&(f@_`9lJ}^xItDFiZr-8}oU=m`&OfY*En4AYD z=Yz=wU=o~bn83M)37l(~z`2GAoNJiCxdu9uyd6~6F@aMZ6FAi|odKJ07EGQ4ljp%C zI5jeXQzO%5u*elK2~Lwt;55kuPLoVG!Q!{T<ZUo{2Ta}tllQ>neK7d|Og;pYkHF+( zF!=;bJ_VEDw9WJa%m$}$rdMG0YcTl+Ouhw^@4)1H5DC3&7+g9rgG(po6QDAg8SFM@ zu-llyE@A!yR{s}7vM_^57BI;QCON<)H<$$HCKhl$VgctP7H|$?0p}nVaNc17=NcAp zeqjOU7Zz~(XXON$z{&$AdBLO~n1r<*G{9{K5D9i08#vt9z~ROQ4mUQiYuSE)bg_fe z7&|yUu!G~B9bC4sgUc3naM{9s608y&vmD@Bg9DtxIlyU&1DuLDz^RC1E=VN@I2Cb# z(+?*k4^}XEf=+^F@B)+GVA2On`hrP6FzF8_!T0Pk1cKQ?U@{m?b}<StFfjCj+2C7% z82Z8N31AX@=Ptt}FncnX1fONgFcr+61}3M2NJdkTIgF4~;vK;vPGHg*OuB$cS1{=Y zCf&iL2bcu=f)VTsMzAj!!M<Pw`+^bd3r4Un7{R_^1p9&!><dP)FBn6>=7fUDFfbVo zCL_RPB$$i>lhI%@2293+$v7|>4<-}9WFnYM0+Y#LG6hVgg2^;6nGPm1z$Ez2Va6;l zI~z>qfXQ4inFl8G!DIoLECiE9V6qrYmVn7pFj)&Gsdbh<_*Pd&@U5<l;9Ff8!MD0H zf^T(Y1fM+42tIk75qzsFBluQVM)0k!jNn^c8Ns)@GJ<b)Wdz^q$_PG}oDqDhE8|wM zYqx>P?O<{TnA`~_!Dp8<g3m5z1fN~b2tK=<aUWQAKbSlKCJ%ziLtyeSm^=a|kAhB8 zV>|{X!DmS_Nq|Q0DVk}-GJ*<9y-a(-B=~G0CdlfX!(fqPVDdPaJOL(8f=S4kD<8n_ z0pI`2^aafR3MRjS$?stD2blZ`CVzp+-(d0&*qpy$_CGNBA4D=UfJsI$$pj{u!6XZq zWCfFKVA2{)+JH%0Flh%S?ZKo2m~;k{u3*v)OuB<fZ!qZtCVj!AADHw9lL25d5KIPv z$zU)U0wzPjWEhwX2a^$CG7?Nifyrnv83QI`!DJkmj0ckmU@{R*f=|+7UIL0`=4D`V zIhfoECbxmf?O<{TnA`~_cY(>>U~&(b+zTf6fyw<~@&K4T2qq7K$-`js2$%$?E@p7* zVg{!!<}+aNJD{}3`~XZo1f71${2MI(pJ4$50}J?u5f<>RBG8)vc>i5sV1VBx0qUcI zZw6rj-vGj*4AKj|_1qEUU+A6C;P7MthbId-JXyfu$pQ{f7I1j7fWwmo9G)!T@MHmp zCkr?{S-|1R0uE0WaCowS!;>WmY)dkjOaYUrU@{F%rh~~0FqsJ^v%q8{m}~-*&0w+x zOm=|DPB7U8CcD98518x)lYL;aA52aFlM}(@BrrJ{OilrlQ^DjkFgYDe&H$6(+s0YI zG0w6LbZ$D!cCh#kFu4;<?go?l!Q=rjc@Rt<0+WZq<Pk7=5=@=~lc&Mt88CSkOr8Ui z=fUI!FnJYBUIUZ2z~pT(c?V2_&k$mH1ZF=0lh459b1?Z99KVp8A{jtwhLsUag72we z<pcSJl^>KsScSlB@OiVWB4D-{n3MpMl3-E_OiF{*%YfPPU@`z?3oAJGQEuK{1HO@W zEtmwC)vP<g?0q0zY&SqIVY>+?A@@CWg4pcfo7~yKwE+8S(5aE^YrrJ9<YzwyRs*>K zLKNgj4t+4`1SY}d35N@q?FMoc2e>5RNC&egg2^dh5`5bL$80eBAxJ%^F_;9GTAU9+ z;+zk`<O`5E;~fSjkiQw2!6XZqWCfFKV3Hk7a)3!rFv$fbxxpk4m;~oV20kzw9O?`L zV74Hb6atgNU{VB3ih@ZoFewfuCBUR4n3MvO;Mic00kdVnq#T%(2a^h5QV~olfk|aB zsRAZd!K50PR0oq9U{VuIYJo{@FsTD3b-|<_nA8W824K<<Od5enV=!p~CQZSl8JIK& zlNMmo5=>fwNoz1^114?3q#c;F2a^sUl93Zs&M|U<Np3L7115RF<PT74V*Cjve}T#0 zVDb-`{0k=kfyw_Ml8FIKGJ;7aFv$!iS->PKm}CQ!>|l}uOoDH)U;^J@!34g+f(d+s z1rzuN3np+*V&Vs@6abTgU=p0Gn7}vPF@bXxlPFjmoVS?7!EA8eVglzaCTXw;IBzk@ zg4uFl5}ePN6hNndGAV*dB`^uT7l=s(%vJ@HYG6_wOlp8hO)#kiCbhw&4w%#hlX_rM zA50p6NkcGc1SXBaqzRZb1(RlA(i}`$fJsX*X$2;&!K4kCv;~uPU=n<PER#E!?Exk| z!K4?M^ahhYVA2;%`hiJ*FbTfzh$#@v4g!<GU@`<uhJwj3Fc}UeBfw-Nn2Z9G(O@zL zOvZxAI53$2CKJJA5|~T|lPO>_6-=gqN$}0LOc`J{_>NMhEHFD8Oy+>eTrdf~yOb#( z%q{?vg<!G>OcsO55-?c`Cd<HNIhd>fla*ky3QSgm$r><O3nuHpWIdQ{0F#YivI$H! zgUK#12|hoTsRzskpC8NA2WIz!$q8U`BAA>6CMSc*m5dAw3{0!Q<Z3Xv2~2JVlRLoV zK@iEz4pNVDx;7VBgd0rqfJt63$p<F+!K46~6a<q(U{V-NihxN`FewHm#lfTmn3M#Q zQeaXVOv->sSuiOFCgs5-IFB%c^9VCIk1&Jt2s1d3FoW|5GdPbhgYyV8IFB%c^9VCI zk1&Jt2s1d3FoW|5GdPbhgYyV8IFB%c^9VCIk1&Jt2s1d3FoW|5GdPbhgYyV8IFB%c z^9VCIk1#ue-RT4-!F@Ppa378t+=pWZ_u-hqeK=-tAC4K^hhql!;h4dFIA(Akjv3sC zV+Qx(n8AHGW^f;l8Qh0sJ^?B@nQwzg7O<~b!2V?c`<DgmUly=`S-}2f0sEH)>|YkJ ze_6o(WdZw_1?*oIuzy*={$&CCmj&!!7O;O=!2V?c`<DgmUly=`S-@oi3%E>R0hb9Z z;4*>59uxvB4q(z5OuB$cS1<`KF<8JQ1`D{vU;&pHEZ`D@1zcjVfJ+P(aEZYJE-_fZ zB?b$)#9#rJ7%botg9V&VS-|;}1)NV=!1<H~oKIQ6`IH5mPg%hElm(nmS-|;}1)NV= z!1<H~oKIQ6`IH5mPg%hElm(nmS-|;}1)NV=z`2s873`NbFbTe6jRkzi8p~X;$UHDP zA51O)lMBJ*A~3laOoHz!XITnngKsQn0pD28vH~muzQK`Y6_~vmOs)ZwYr*6?FbTdB zh-Cwqy%9`q0+XA;<Q6cw?f(@929`@;_H|H=!*T;m-UO3RL2WJ;@NGsc;M<H?-h))K z@_}@*3jM#pz`!c}KZb#URpkE@1_o9!u(&vb1p@=C#Qz%%46Kr1aVfC44CrPPR$0*f z5Uk+aw^<E9wy=7GT6wGm|3K?I3&CVH_(r=LFj)&G!8g6KHh}i+vx4t?Wo-hpyTGRP zfJw-Wt1JJ3?s)z3pF!&b>sK)O4NQIqlRv=ZPcZolO#TLwf57BlF!>Km{s)n43}BKG zOfrE<W-!SDCRxEG8<=DVlN?}@6HIb}Np3L7115RFBp;aM2a^I|QV>iEfk|O7DFP-% z!K4_N6bF+MU{VrH%795(FewKnwZNn{nA8E2x?oZdOzMM412Aa_CXK+PF^FVmW9ZTP z#?H>rqxFXaT<UUw^A`uWzT*JrBgmbX9N?760Zy45;FQS;PV-FF3{3xz$bVyC29qpc zk`+v{fk}2S$pI!g!6X-$<OY*GV3HS1@_|WyFev~g1;L~cm=p$+B4AP!Op1X?aWE+X zCMCh76qu9-lQLjZ7EH>4NqI1-045c|q!O4^29qjaQWZ?9fk|~RsR1T6!K4<L)CQ9} zU{V)M>VZjpFlhiL4Z)-lm^22HCScMOOqzj7b1-QECN06F6_~UJlQv+|7EIcKNqaEq z045z77!<-7oWP_rm~;V?u3*v)OuB<f4>0NZKS9BT!3#`!gGnDS=?f<Pz@$Hz3;>gX zU@{0y27}2E1_rqZhET9+VPG;GOh$moNH7@%CZoY*448}slW|}&o`FFgy#H7sj3E&$ zk_0A`!DI@UOa+r^U@{#{W`M~|Fqs7=v%zEzn9K!}d0;XhOcsF2LNHkbCX2yj379Me zlVxDC986Y#$x1L;4JKQ_WGk3#1C#AwvI9(ZGBC*XF?563z2K1P1C#w=asrr~2qq_i z$;n`H3YeS<CZ~bP>0ol<{}OoyhDBi07K6zpU~(y#Tm~kWgUJ<OawV8t1twR6$u(ed zEtp&fCf9?>4PbI3nA`*=H-pJ7U~(&%+y*AMgUKCWawnMF1txcc$vt3lFPPj1CijEM z17PwXm^=g~4}-}gVDcyvhddj@Nih2qm^=+8FM!F5VDb`}yb30-fywJ&@&=fE4kllM zNJdVE6!{yBTwszLO!9z9UNFh`|AyQPMt-nL0Wc{DCWXMHFqjkplcHc!3`~lHNePA& zc{4^yFk1>tN`pxmFewWr<-nvom{b6hieOR+Oe+7IBhSOA0%og%Ni{I34kk6gq$Zfu z0+ZVRgXD!6b--+0FsTP7^}(b8m^1{FMqttyOqzg6GcaimCN03EC784Vlh$C;229$5 zNjorU4<;Qz>5b75Oge!{XE5mkCSAd#8<=zllOA9aTy8Le%MC_wxxol7HyFX?1|zuK zU<8*NjNo#E5nOICg3Ap?aJj)40yZZUOooBUa4;DGCL_UQ6qt+#lQCd27EH#0$#^iC z045W`WD=N629qgZG8Igwfys0*nE@s<!DJSg%m$M=U@{j>=7Gt4Fj)X53&CU&m@Ed9 zC1A1?OqMY)$lqfGmm7@Wa)S|EZZKAXLl|6oFxG(CwP5viV0Jy2YygvuV6q8JHiJoU zX~PIEZ5Y9&4I{X;VFZ^pjGbULU0|{sRDLq{fXQAk*#{>3!Q=!mIT1`w0+W-$<P<PD z6--V8lheWE46vCq85k727-xaW*<f-Gn4AkH=Yh%jU~&PNTnHvX<&_sBsJ!xG1eI4_ zj7$Hg$v<IS1}2w-$rWI7C74_VCRc;WHDGcrm|O=Y*MrFoU~(gv+yo{!gUKymax0kJ z1}3+I$sJ&FCz#v?CU=9$Jz#P#nA`^@_k+m;VDccCJOm~WgUKUc^639_3IUAAz~pf- zdE#G`{42(jVDc20JPjt#fXTC9@*J2v&%hwRg7E^Fya*;Qfyv8Y@(P%|`hSCh9pg1H zc^ypN0FyVt<Sj6H8%*8-lXt=7JurD6Og;dU55eRkF!>lvz5tUi!Q>k-`IbRM{sZGX zF!>%#egKmn!Q>|}`58=p0h3?B<To(+9YivLOAID(8-oel#$W=sF_^$@3?^_JgJ}vV z{V+`hlheTDbTA1{S4^OE6~+WgS7A(`R20SpN=0Ezpi~sb1WH9=OrTU0#so@5VN9S@ z6vhOu^_al59uv6MU;@_~OlQC*p9PcWz~p%_39e0;z_kg}Ww6K<FbS?xn80-k6Sz)c zx(OD)1txEU$va^3E||OrChvpE2Vn9cn0y2#AA`v!VDc%L1lLVWFTiYY4aM{d%zh0f z-+;-tVDcT9d=Da-!L1QyaBGD51gI6q40aVW*j3DTKqUq<*d@%rK`D^=4_Mb<5Xr&- zN<}QpU^WYwWCfG#AYCjRU^XWx_F1^VBHUmR9#C#&0oREvpgPfu1zabxfa^pSP@U+- z0<IHTz;z;v1X!0O*aUEG$O5hhS-|xmiyT;78RRw=P<`jc0<P&;wlRn(aIm}sl`5<Z zAT_LvV3G+;a)Qic1-T@Ql^4wB1F2`_XSk!l$11>Jqrk)pa+L_H@c%aoQmi5jN^(b7 z#lULB8G7W;uu3p6$i88fWDt=nV3h)kOM~@-+$O>*3)W@G_(k>;t0}`h1qD{;e=)K@ zSiSy5$^K*YW?+zGVf6#s8vt@SYapYJf)Q&Fm<(q4prFPY0wzQMaVY4phJndAuxvb7 zJONB5g2mgx;(h-&$Z@guGuX&)VV&^*je-U1L@+rCOil)qQy3WJ-my*vtDg=gXMn|L zg2`E6k-1>@JTN&QOfCSE3&FCBz~mAzxfCqE3`{Nui>v^X8^9q9ZjZ5n^Ay`!kT}~q zFu5K~ZUE_G+XyC)fJKgi$zx#hI9U7yn7jcpjqN6w1gA+ha86+Z=M*+@PGJM5PqvSs zbj9`q6sqjtI*Yv%q>CL~0<eQ~I{Qkn2&j$f#SUttda<tqi>wEwQuYmCayKYdv+n_u z;MOBMxb?_>6m0S_u=?X5yVy^F)qvZR?BJ4t1Kii(0N1}96G1V{0jl*@a7+QS!6gz0 zxGdrTmqi@2z~ZyP<Q$M`9H2Tbj00Rcam)vcfJ-M%aC?l?1|$OM;|fj#^>GEKF|hnU zA~=nK6-=^$Np>*F0VX-YBo~<E29rEsk{3+!fk}QaDF7w~!K4tF6b6$bU{VxJih)US zFew2hCBdW=n3M*SGGI~`Ov-^tc`&H}CKbV?5|~s5lPX|R6-=suNp&!(0VXxUq!yUe z29r8qQWs3>fk}NZX#ge-!K4wGGzOC<VA2#!nt@4kFlhlMEy1J}n6w6yHek{gOxl4- zdobw$CLI|V1V1o1fk|gD=>jHQ!K53QbO)0jVAAt{g5W(+A6M`mgEyG%115dJq#u~{ z2a^F{G7wA#fyrPn8N$H8Uj^#p3VvV+1DhERCL_RPB$$i>lhI%@2293+$v7|>&%hu! z2ee*J@B^riEBJvS2`rurCR4y<Dws?Ilj&eG159Ru$t*CL4JLEIWG<M@1C#k+vH(mL zg2^H<Sqvsiz+@?yECZ9}V6p;CR)WcDFxdhoTft--m~01=9bmGPfq{PmsE;f7fuR>1 zGJRmOA52aFlM}(@BrrJ{OilrlQ^DjkFgYDeF8p62U;^sn3VvW%3^soWm|O}bmx0OU zU~&bRTnQ#ufyvciat)YV3ntfr$@O4z1DM<hCO3h}&0um1nA{2`w}Hv+U~&hT+zBRk zfyv!qau1l?3nur0$^BsR0GK=oCJ%wh!(j3Vm^{kFAz%gS;|hLYI0Y6t4JI#u$%|m} z5}3RSCa;0X>tON*n0yW<UxG+bA6Kvf)W;R9VB}^<5v*Y30h7F7lJEZw0Rd1SSMUR9 zy^i1qMnSMHAuuTnCPl!cD3}xjlj2}ff+0m90@TM9{J<y$7Lf*%GGI~`Ov-^tc`&H} zCKbV?5|~u}H%Gt$)W;S4z^DoqQ3I3eU{V82YJy2EFsc1NNWcx$#})j*s0$X+1C#n- z(f~{vf=MGVX$&S!z@!<NGzXIwVA2vyT7gMxFlhrOZNa1+n6w9z4xsb~>f;LDV{`(u zox!9Fm~;h`ZeY?KOnQJxaJd2M;|ksb^>GF7f%>?D_dtDI!F!-SuHZdTA6M`msE;dn z57fsMya(#z3f=?taRu*z`nZDk7(>CPg@MU%Fc|?RBf(@8n2ZLKF<>$lOvZu9crcj& zCKJJA5|~T|lPO>_6-=gq$#gK80VXrSWEPmr29r5pG8atdfysO@SpX&r!DJDbEC!P$ zV6qfUg366LP#;(D1E`NH_yN?%75o6|;|hLY1eYG5KCa*g##*rYI&jF>gUJRk*$5_^ zz+^L+1eZ3TKCa*gP#;(D1E`NH_yN?%75o6|;|hLY>;kLo29=+nKCa*##$GVH4@~xh z$q8U`BAA>6CMSc*DPVFcn4AVCr-R8EU^8bjFbF;Y^>GECFwO?E=YYw%U~(RqoDU`! zfXRhmauJvWl~+$deO$pOpgyi(3#gAP*uuE{f0|$m;|egj5=^cFldHkx8ZfyQOs)fy z>%rs(Fu4&-ZUU2=!Q>V&xfM)q1C!gq<PI>o6HM*`le@v>9x%BVOzs1d`@!S^FnJJ6 z9s-kx!Q>GzdG!A|!B?O@uHY-i<6!oQe^G*6pgyi(7vm`~`!tw5118Uc$#Y=xJOhK^ zH&7o}@EaqjWc$VlD%rj<UIvR_0h3q%ZxFlz>f;LDV7v}y-vE<0!Q?G4c^gdL0h4#Z z<UKHXA51;~lMlh<BQW_GOuhh<FTvy+F!`22L~sJAk1IHV@jaOR0Ze`blb^ukXE6B% zOnwEE-@xQ|5DDtz3Vs0faRons`nZB0Kz&@n51>A-;0I72SMUR<k1O~A)W;S4zywNH zADBSt>H`xvU4i<zf*(MAT)_{ZKCa*gP#;(D1E`NH_yN?%75o6|;|hKN^>GD1fcm(C zA3%Lv!4IH5uHXkyA6M`LsE;f70o2D8{J?Y;lwz6Afk{x9e_#UFCZIm9;0I72SMUQ9 zD6~H?f$J1dA6M`LsE;f70o2D8{J?YztoJsUyaOihg2{Ve@;;b+045)T$wy%FF_?S; zCZB>yaNPvz;|hLY0@qNWKCa*grq^KEH(>HDn0yB&--Ad{A6M`LsE;f70o2D8oCfOS z3Vs0faRons`nZDkKz&@n51>A-;44rcSMUS#Uyxo<A6M`jsE;f7frSMu!U`tYLFEjn zk1P0rg%cF}pgykPJr-`TEDtE3g8I0EA3%Lv!6%?TuHXkyA6M`LsE;f71k}eB`~d3X z3Vs0faRooHNP^7-*M^`zuHXkyA6M`LsE;dnk3|`jJ3xJ0!6%?TuHXkyA6IY%sE;c+ z2h_(Eya(#z3f^O70-3|g333Ujk1O~A)W;S4z{<xUBDez7#}!=1D!^bPxCqq872E>q z;|lHq^>O*1f%>?DD_F%DdIa8q`ndc$pgu1DBv2n$a0RP0!yUnOte`r23#gAPxQo@0 z@e98ZsE;eK1JuXmw*d8V`Rzb`Tz(f&A6M`LYXHdQpgykP8BiZr@C<7(!w10wpgykP z0oKre9D>I{eO$p~tZ|Gwf@fIc!LkWpG7&7>4i@kGzk%Ni)W;RL2I}JqUIO)T1uwBq z`u|4o66<6zIfa2iKn&E!6+FW_9jt2xSbQd!oCOw{3uey)lk>sk0x-D{EV~FyE&-EE z!Q#un<Z`gc3NX0=9KzuC7^sgc_yN?%6+8p#;|iW(TMtshwgIFI)W;RP#C8NMauiG+ z1Cz(WvM0dg4UlP|KCa+BHgHY>^>GD1fcm(CA3%Lv!4IH5uHXkyA6M`RsE;f70o2D8 z`~d3X3f=?taRons`nZB0Kz&@nd+eY#>Jv~OSMUj_k1KeOeLX0Zg8I0EH`qZf%x|DR zuHZLzaO)A&#})hl>f;K2U_S<O5BqUY8V2=o1;4SM1f?ZVA6M`LsE;f70o2D8`~d3X z3cdpMaRtAD`nZCxIKU+msE;f70o2D8`~d3X3cli)4N3zXpgQgwsE;f70o2D8`~d3X z3V!1N)o~v{eO$p0pgykPHwIP)%LWDpMh2b+1_m|;i3SD+F$U%a1_o9J5wM65SXLh_ zA`d1R!6Zlx7XvGpZPUQOz{vm-*JQ|VU|`T>U;~pJ4Gaug;HBhp47Lpnpe08Q3=AA# zm23>$VDqKG<{N<7!eG-t3o*sOx){JJIlydI2C)VP1~~>9uzE!>39^NeL7{<xfr|lR z7sw5)402%81i_>Ln1uL+56or(>jjCkGDw2Wgs2CZz{bD{mel~0x?uOPgGrDsIR-9p z_<(HTVqgM`i-Sp!X<T5}YJ$T}lfexf0-&%p0E;s+XoB4dGDi>WBQ~&KSQ)IqCV;|$ zmBAQnFUTc~3=r3XY+(b(2qQSO*`TJ0f>naTijhGN%m$fk430-lhAOZK$V^7Cdl;dv z1%;R#*pF-s{NT_4g(@op$TUp`7qAN<{spB3F0eaU89<@I3JzfguuE7Ol)!EVg%v9U zB-YHpBFbPA6eFw*YG5|V{ajF8pcrQbhaoEiBt?PTz{&uMO;!d~uzFC6(gXWZi~-~$ z1F#!38JfT`1u}sTDhu%oDBa3|)2$}MY;f#=+%LzV4Gw=0+W_o$O>jDqW8ejwV-A+J z0ILVtC<k_r7+57I*hZ$#NenIw3{$Fl<}jpzMg>60mln9gh9pxjkfeIZEB=21;f4PO z?F&F_h!7&Au|TVtU^-yz{~aCEU}DsyL2If0zkrxXiJKuNP)35*P9dA{|3qgSjQ?Mt zy#wS{7$2Dioz#xZ$Hx9&(2?-}K!@M|GacZyY9PD*PiWtVO)W05{|`EQaLJ*I{|B9) z#=yV;S_6hIH(2<f6>hNfH7MK!+BZ&wLvW=7BD7LP$^Qi%yKouwe?e!`|1}*U*yR5| zX#a&x99az2><&3(Ia1lg<mdk%7{EJmK>2}G^C?%~z5rwfHoHMPb712C4Hy{y3$$+n zsRdz3nr-i65a`$f;xjOG9D~rP<bNplzeD>J5EE=>LdP+Xc_2QhQ39q>h|VM!_rC%I z!+!-#v;RT!HeB5T1_qE@L90r^v;{=w-vkIfSjhhc9d$6b{5#No>feI)9WXvg^oI6X z|2}l2!SwuR=qQ4*X+e`?KC)kF;U>D8Invrv7f|Yb@LF_o!y8mq{J+t$f`OqOyv`hC z&i@k~S|FMh7_|DF7UmK(6I51xKvR{_z6?zS%>93*eGRyrI?)O4?1BXUKk4uT(dhX9 zgU%`pu_uV|`;Wv%S4T8IpyLKi?f)B{UNAN~J<#<&x_bsI9~8I5xD8al5u=XUYC!ga z+n#GWLO}I8s2&2<$zU9SY1@B;_B$|9kQx{poyOMQ`5(}!gWLxHAJFlK5!5b+Y9>0Y zz%3Q1CMX4}-$CUIlnbW*Z2(gw5sVq6^+QN9oZ5;LkPJj-gHEnQlETXb>+96Pt7Z^L z{?}*+pRECI(;F}_fZ9y|EjrF%Er%MwZAI`H31}ZMsIAGs(6NY8Z@|(gavH{G=Klp9 zXVB$A?O<g6p#DB+Cmy;wdhk*D^bQORpmrK^eGhX3$lo9g=ToaKU4Ysr|KEUUYryP6 zr@`(>X-8>=VM_y`at&QCJ^24GAkrDgU7#>!U}(Pvwp)UMfgu6WUj>)D6FTj{azqed zzc(QDfk5VgFq&SFxhO(NcA|(wIpFkY0OjDJ@P;Y49KoX*rxcQZaH=6q;y(#t3N{(u z@&fayM-Uk%$n_Q|%}~z)BiAHwnjUH1Co;Va$6)!d&|!nzHbwU1|A5XsWIi@FsGR<P z03riogINDJP-~pO{SnAK5dMDw)h(blFt&ajNG&z+{{<ZcjRCm<pQ6$76kq6&CI>2) z@b#OBG41~c*jPb3c(&;O0~nte-K41jjY*THgZ`>P;R(Xz+Kk*+1-G%tHHb)kpf*3K z&Ie&4wa`Qvy8Xy)4^Y1em!;_Xu&D#}xnN-lO7qy%&_WEO?Mn+w@S53y);q!+v%{wS z|A!7CY~n<T4a0gLbRGy%eg};oVHpo1R_~}f>>)r*9>=Z|wS9wK&F~TZ{{c4diQiBE z_q4ymuL8g9{|oJ3u&SU{-xaH610hKL@d1Lq7=~dATbD!3x(87B{C9x#8^|vQK&DV1 zBezjNrvHBfA_oS;-12`x2OF{rK<yrw9J2Vo3mrTlK1d!!gLeIaX@-t22#ue_Xh)&X zG2+*bQx-jr|3gMAajK`61Zb=r!!A0sb^bxe0Wj>wA%JcC9v;U?dO#<aA#oY7`VU#b zNM#3fVwrgyfq_v#yMFy(3{BYh8+Ny$u0;U#^Zqw<cwkpMu%hVY>A<=MVLQI?{ePfi z*Z(yg>kz7;tON!If_+nvngbnJW}-mzT~Kp|A%(4s$L39v$4{{tf-FX@dVdi1o5AhW z2Gq5-;ISlVo&0}6hswVX9a{edI*6FDL<HJDXpQpU0kNi(fuX|;-#8aSHv_n?2CXqc z76Y--+j+=sG|;%>e;JS}(3)8YO;7Uw2DCDBLZ=<N7|cDOIRNU-cfd?VrHPu~N7Vx6 zp@%U@keszWAbpf#<o^DDgU%$-yb}XMhZ8PyX;DWJn`U8d!WMooIb<5WeTpncOEzdP z2&VZs*6oAVkip9WOkD#hLTr6N4>yAL*1+rmm7g#+Hk#D-3bFnKwb8KIhf54Rhf~oJ zg)EQFF1+hdkTp}84cfN^G7_{e<bOcN8PK}>{{<a6ATewhK93y00KQoQn;MeDJ}@xA z@;-7sgU<|@dSo@&;)T>cFS2=*u>TiyRDj|b9HyZCAPgNvATeBKqJ$|*`vtMC3YT77 z;;^tJHXjfjrYNh_aM@0MaZq@|Oa<pD7>ABDz3io%JqHkdaZvbz+VuagbhKausSIQ+ z54oN7{{U#u1BOZl6mbXic|%n7jG#RQ&^9cp3~nB_e2%RxK#OrGf^A7+)+i&*q=MFo zqx%$_7)%XJ4jcx!`b*f{fK3c$C^7UfoI4=K+mxvJf1qOyx_(d|!w{o1ZqN;+0{{O8 z#CqR<3JeVYULg3$#)JE{$O2f{Aibb60jBnULZ=rv{bEszO9-YHmpnG{|Ij^>*yKjV zC<}rAw<*&<svBDfkk{7x{~F8qCYtg8?{+r)zlzw00IDxxeST0q`9A@)SEgeZsC)up zH0?xlNzqHF|AuZU$j#_t*!TlAhJx&tf$GcsBWd)If#JVI2YA#0G^U5_enRYl@E^8) z@`T(;4S8(+B7EllgSM4O$qOL!z+p;<d0<+u%Le%ai~|N>eGAy)p-O<tUnIAW&J`mC z#_(j4T0YP_6ew{YZ0w2dZibe<^tP86`#}3<DG5_-cKm1PxP(m{CiZ_v$Bq9I9rs{- zWcq(X#}i~ej13wu{Lj<z3dRS~|F?AD8f^ec4;ZF)cv9k#|2sOq5u+a*z5|d>L3#53 z5r_-nZ4}TN2hezwMyD5pMyCi!4MYWK4|B&K5FgZ6|F6->1QQ3*AaM{)DhAzY3DN^L z6KUKJSNrqdi%t%(dZazo{{=uI3=FXI&p^DtXsHw1oHj@uAxvx^gOE8xSsr}G6k2!= zW&aE{xBs{3<fEmV@s*jNd<`m}Xleg&G#fokk@=wU6<p;JuJQ&&KWLs6cK#cc`iIEo zBgY4_dqCwZtX#&W9;6qa97rA)9!+PsLI#hx10K0yB=x_eQ-m1rz|to%YN@FPHXi}n zM+}>1KyHt~>;mnHg|T5YOdX|rJYe?1%q5lnUqY%5^3+q~ygKBv0<<rI)G;}b%VByz z<uQm4!l3#NL{oxc=3+Agd5jy@_Qj?SSq#~)$l{c;@wt;yv+?Qwhg4^Q>J)rxL2~~E zI;FrgQvU$NN5|;lIZ*yXcNe|*|8I9H(914}J)JQS8i{o1%mDMe!6Z!ya@!doM<M5V z5Fdt#U1tMITj23|m_{fK5(hD1ZUfOEj4TFX!}{AGHVnhm!T2B=xx4`JM;a!jK1U8e zWcEl4GeZ6)HcUsukWfe><cSSagpN_xPz-_pUpsNGA_A?I#OWt&Yr3$BAsYaiiAQQH z!KGmOu*ty{LHDGA*A9dB$8@SOFrdvTBCCb5LF3S{H3Njqhv^xmi4Fm3^e>3EY{V(V z(jKK+7<3x_e~MTeO*LaFH0b|T+~pC4Mq}0f|0-5toPz(a4!$tM>DWOk@&ElGb=VMh z*8jId+yjHk`NW<7MlC1fZEIn(1k|p<CQgAEc&vbkHWFx@0J+{DX?=Q9>kQJPq|=3T zJ(TMJ&5KiR3hhn!2R=QO_Vx^a8^HZ2@F?_Xf1kM6{{Ol&j5w8aP-O}oo2G+RL(vM9 zItn~)Fcf`3o}2$apk?0?o0~e57+`ZH*rf4^jgUEid_jPIzC1p)qjCcm0{<U((rHz} z!1-|?Y^KYeoq_Ne4m+u_W(0@PLq_=jS2U-JqVWfq`~NLsKj{EFg)Y{Ua&|ji95li$ z`TuN$2LO${|Nk+K3?5)(L3`i_*a^eVdgL<&=;OK09{SibaJCHB{5NnRN*kMz_e#*l z1~gOI7`Pf37#JBi!6b770|Ofa8<@=qCRxCwCYTff%SwaUI$$<Cn3QT@U|?mC1&f39 zvM~rlrb@uFJYZQFFlhuPEx;<Z!E6<<8c8tQ5UdMgBLi3*L^3j{g4v>Ak`+vXT*Alz zv7Hxenmm{k2b%zKIX74(NQ99Aq=t<_46KG9EY1hE(EuzW2qrneq#jrt;zy7gMh0cD zILL*J3?Mf!G6;axKx85AfrOqeSX>B9LTm*2g_XesEF#yyz`)A@@(~-<1k(lv1}<=D z8#91h%gCSzRta$rD8$$pK&G)VfZWUobw9`)Mh1w>L7~UUpaFIvDD)T^l)!9|E=C4W z$TLFYR|_nz1}4?Pqym_P#F|6{0|OI7BLfq|bOr{7g$&0TrZJpkc*(Grk&`Ki;T}^6 zQwWm=Qy5bilO|IHQyh~PQvy>WlOa<IQ!|q>Q!CR?reLPuOn;b8F#Tg*!gPvx8S_f! zLgv-XCzwl_&oJL$p3HoU`3~~}<_F9Vm=`nuX8y;#goS~Hfq4ZBGYdQON)}EQF6MPC zyez!T8(0KbgqSz7h_FaAZ()&Rkz?M&qQv6NyqCp|#f|wsOAbpd^8=PfmKNquEFCOc znZL1YXW7M~!m@|u9*YLcLzbs3-Ym~qUb6(Syk&XM63WWJ%ES`E%E`*f63xoPD!>xM zD#R+xlE^B~D$kP4YRziPlEZ4xYR{6->d5NEQo!oM>cUdQ>c;BEQq1bX>cLXN>c{HG zQpy^@8pKk@8qFHbQpp;}8pl$_n#r2QQq7vfTF6q%TEbew(#%@TTFcVHTF+X~($3n% z+Qibq+Roa+(#hJz+RM_-I)Qa6OF!#$)>$l5S?97YVwuUhgmpQ~eAZR0Ygrbvu4moA zvYd4j>t>dftUFovv#e%4$$FY)6YE*l%Pd=2ud?1^*~5B=^$yD+)_bgvSPrv3Wqr<a zg7p>aYnIcjZ&}~6oMrvOCdqP+O@>X5<qMl4n<C41Hf1(tmLF_tY-%h&*)-XVS$?ru zvN^G`vIVdOu=2BovxTz?u&rQQ!z#$OpY1TK7~2iDd#uuIAK5;!DzW`w`@yQh-p1a> zs><HU-pQ)Q-p$^_s?Ofe-p{JZKAn9!s}}nl_BpKD?DN^@v+A&~WM9du%f6a@4XYme zdiD*h2JG9}cd{C>?`Ge_YRZ0?{S>P?`x*8#toH10+26A|aENk<vO04}a!9hea42&q zv$}HVap<$UaX4|fuzGN~ak#O1b9i%jv-)uOa`>|Pazt@NvHEeObELESb7XO3vj%Wf za#XSgakO)^vj%fa<e0=7!ZC$o3Tqh0G>&Pk;T$tK7O+NeEa6zjn#i%0V=HS4$3u>X ztf`!OoO-NjoW`8Stm&NQoaU?<oK~E+teKn-I3Kd+a=zev!J5y&#OTk!#Nfcd%HYW0 z!NADi$q>xI!Vtnx$-u}^%}~w2$k4*j$-v0a#n8nd&Ct!z&A`ae%P^gRg<&DXQ3gha zV+_X`#28L8oMvETIKyzBL5$%7!zBhrhRY0B7{nN^GTdNbWVpp}i$RRxF~buEF^1<1 z&lwmQUNF315My}B@REU%k&}^^L79<{(S(7K(Uj4YL7LHw(Vl^k(Sfm)frYV*v4(+> zv6iuxfrYV-v5SF`v72!^g9zgc#u*HZj58URFz_-SWjxLx!+3)69D_XLdB!UY!i-lL zA2aYUzF>UGz{B{4@eKnH<6Fk>43dmLn8X>_nIxDb7?_zPndBMRnG~4p7?_ysnd})D znH-s185o(|nBo|im=c(p8JL(_nK~KNnYx%JGcYktVVcFj$TXX2HUkIK9HzMpTuk$r zmN76gEoWN6AjGtiX*Giq(;B9=3_?unnAS0HF|B9X$RNbDiD@%~64Mr@Z45$8+nKgA zxH0Wu+QFd2w3BH!gAmgmro9Z(O#7JjGjK5-U^>7c#B`A9AcGRqA*MqNLQIF54l_tI z9b-DlAkB1&=^_Io(<P=$46;m@nXWT1GTmUh!NA3Ilj$h~BhxdcXAE3S&zascFfx5$ z`pCe{^oi*+0|(O=rr!+AOn;dEFi11~WoBbwW@cx$VqjvnW_Dm;W_DzDVqju+W_D&^ zW_D$EXJBUbW=>*YW=>`<WDsO7VlHN2WG-QDV&GzKW?sy|!Mucd2?HndGUnwBoXjhj zS2D;kuV&uBAjiCsc?*Lq^H%2L44lj-m`^aUGM`~S!@$XWmiY#Q1oKViTMUfMx0!D< z*fQT?zQe%6e2@7a10$$>WUy!c&HS4|hWQWkUj{}{Dajzr!py?Tz{tYJ!p308!p_3Z zz{0}8!ok4E!pXwPz{A4D!o|SC!p*|Xz{tYG!o$GJBETZRz{n!VBFMnYBE%xhz{n!P zBErDSBFZAhz{n!bBF<pQBEcfTz{n!WBFVtQBE=%bz{n!QBFn%CDsvfFSd>|m8Dv;g zSX3BzSyWk68JJkqSkxF8S=3n^7?@ZbSsWRdS)5p$7+hGKS)3V+SX@{F8AMrvS+W?I zL1i=pKd6jmU}kA$X=N~CX=7<)U}EWDnaRM+GK*z40~5;}mN^XGEOS}5FmSVMW!cKW z$+C@Q8-pgxc9xwC%q+WDb}?|V>}J``pvJO?WiNv)%YK$449qM?S&lL&vK(VM!Jx)+ zlH~#eGs{Jmiwue^msl<_FtJ=_xxygJa+T#812fBYmYWRhEVo$hFfg;+Wx30s$a0V6 z9)l3eLzagOYAlaf9x*VpJYjjlz|8WL<tc+8%QKee49qMqSY9$PvAkw^&A`R-hUE=| zBFkHrw+x&t?^xb3h_Jk8dC$NEs!<qNKs5>jBP$OpF9RbhA1fb&CM!QHKZ7}|0IL8) z5UUWY5Q8<VFsm?wF{>D>7=tFO6sr`2CaW~7G=n*-466)-HLEPEEQ2wt9IG6IFRMJO zJcAjlHLEp)4yz5T4TCPLEvqeq4ya~g&}DUGb!5<Cbz*g5&}DUHb!E_Fb!T;F&|~#v z^<>av^=0*C@B`IS42-M+tN{!%tbwdS41BENtkDeOtTC)H49uV!i-C_di8Yx)oHdg* zlfjBLi#3bEfHj9TmqCj)k2R0MiZ!1#pTU5&fVGgp5>%ft7=Y?C27T6g)+Pp3)^^r* z20qpf)(!?O)-KjA1{2n9)@}w<)*jX#1{2m^)?Nlv)(NbW83b6Tuuf&*W1Yr2jX|7s zI_q=>KGqqmGZ_R}XR*#=;A5T3x`07|bs_5_20qrstcw}MS(mUbVc=t3%DRj}fOR?R z3I;ybRjjKS6j;}=u4T|>UB|kPL7a6x>v{$Y)(xy17+6?0v2J3pVBO5RnL&YdC+kiI zZPs0^dl?j1_p$C{Fk{`%x}SlO^(5;_1_#zttfv?>SWmN_Wl&)~$9j&zk@Y<5c?K2M z3#=CyG*~aPUSx1(y~KKn!JYLo>lFqK*6Xa-8B|zrv)*R#VZFn8hryrq9_u{@8`k@* z_Zfm&AFw`P2w{E5`jEkf^$F_}22a*!tj`z%S)a2$XK-eH$NG-J3seU)uz~7e1~xVY zHU$O`HYGMCh5%4a%;3bP#b(UF2C9P@q(F5rgB06BwuKCgY-`!pGw`u(VB5$bz;=Y~ z7y}>Makdi-0&F+fZZfd2-D11Pz{vKI?IQy(s8(iR1l7t6jG$VXfrY)By_>-fR39@i zg6d-iW>9_1zzC|38CXE|F#|9AI`(x8ETCGMfd^C{GYGREW<Scn$bO9d7y}FYarWa3 zyzD2~PcR6xpJYG9zzC|F8JIzJGXoQc0*4}lB8MJ_9s?JLK8HR7GpL4UU<TFD44j}E znt>TqLo+aeYG?*VPz}w%396wPm_Ri&10$%0W>Dqm;pkxy=jh|;V-V+<$T5*YhGP=P zBnDwnoy{Nvs<RmwIc9LoWMJf&#W9;fhGP!L90p;Ixg7Ht7&+#1%x4hhSirG>fe}=r zGcbW_bOuFGjn2Rfs?ix3K{Yx9Gp9ADH3KuJ4W|u*FsCi2ErTp)BWEK66R37)-~`p~ z49pBnj9Cm!3^oj`47Lmo4D8@KUWmbyA&^0WA&4P}frTNMA(%meA%r1@frTNKA&x<k zA)cX<ft{h6p@V^)p_8GT!I+_!VH$%n!*qt}4AKm%8P+gxGOT4-%fQXBj$s`GGq?qy z0IvHLz_q>txV~2a*Y^tGnqC21$8$0AF^V(DF-kBhGN>{tF)A_eFxoTPGw?7vFqSZ| zFqSfwGO&Z|dv&DxUYfC+aT<dR<8;R93_{>qUj|(3b2BbwT*|=3xQuZb12^Mx#(fN2 zjQbf6GjKB=VLZaX1#S~)f!hSy;5LCQ<5k8t47}iWfC{)BzzA*!a4<<SNi#4q$uP+? za4;z_X)-V~X*20CFf-{f*)cFP*)zE^Ffq9?1u}?&dIk)NOc6{G3_eV8OmPg7pq>GP zBvT4g69WfRGqlCf!Jy03$<)cf2yQn>F->8b$-u}oi)j`EGt+FQISf)vbD8EcC?d5U zc)+a(J#g!R2i$t#1h*b|z^w;8rY%g{8F;|$20f;oOnVr3nD#R5XW#_47<j-f20f-j zOs5!lm`*cYWKaUP5*V4TGhJs;1h*16nQk)OWKaaR5;(!_14gD#OrIE-nLaapW{_g~ z!t{fIk?AMXPX<M%-%P(5IKeFjMy7wvtPG6IY|Ly7Jk0FOTntRi+|1kzVaz<t77R?x zmdut69L!eCRt&n}_5>5SJt4*H%<RIT2yRdCGkY+5FfcNEGJ7&8GJ7$5F))H#82sQC zh8VboA;et5T*|=7T*h3+pvYX#T+YDBT)|wyz`<O}+{C~MZh0_+TONGimIoiW<)H~~ zd1!)L9vaMBnYS`1GH+wv&cMgKgLwyoF7r<2;|zS@wummcEyBlqmiat`B=ZI4iwug) zmzZxbNHX7IzQw=|ZkM=2+a(W}A24`;TO?Y{f0+L;2r>U<{>Q)#ZkNciFte~Q$g!}p zurdfi+a;hD2`{uoBETXDZFw-Uh_Og8Fd?-zJi+Y@FBT;hB?f(PYeS1gg++~l3EaXE z0JkuNz%7hma0|m1)c<4P0JkkfSQ=Scu(T&4!0ib^aC?G}Wjo7u1~HZ$EW4m>2o08f zEc+NzS@yH+XJBMGz;b|rljR`GK?Wt3LoA0Fm{<<89A!{qImU8~fsy4n%LxWfmXj<e z85mhkv7BPyWI4@pnt_q!49gh?PL{JQXBpI3&as?hU}QPZa-M;c<pRqE21amOL=CAe zqQP>N<thUw%Qcqk42&!{SZ*+IvfO03#lXmNo8>kGC(9j{y9@^4b_oy5LzYJj1}u+R zo-i<hTO^Du&sm-`7_huxdBGsc@{;8x0|(11mRAg%;MNHTxLv{rZkNb_+a;o`46F<c z%B+m6Obim>)`=Lnbs_|AomhigCr;qjNj$i9q7QDJ*s_YViZev9O0Y^W=(9?)N-<c2 z+bB-pHi|yDjbaOKqr`&SD52msiW#_#VgYWWn1S0U7T`9D8MuvN0qR3Dn1lMz4CbId zG=n*~UBU`(mk5LU&<u>=7Kt#pE#eApi`anMA|~Lrh%2})V#5k*i@1Q>A~xW*h!v=B z&0q=YTQgXKTO`8Z7KsVCMPd(bkvM=`B=+DIi37MrA`Whm2!q=q!r-=uIJhk$3~q~v zgWDp);8ut*xD_JKx}0@6gD|)iq62P)n1b6M&PeSKXK?#N2i*QJ1-CzRz%37TaLdCG z-10DDJ<WQW!JG9g>sbaraQnj_-2Mmxw?7P7FS1@@aAdvAdYK`F^(yN%21C~CtT!2q zSZ}f3Vu%E{KjOgc4>xf8BMIF8NCvk*+*lv6K4M5=eaiZjAragPkq5Uz0$E?NzG8@B zea-rsK^`<Jzz~koB2i>hWJmzFMFK#h0u0e?nrxa3c1Z0Kd2qW#9yB(<V8^zCZ54ws z+iJEo4B~A2*$y%YvmIhP%peYJmwaUV#J~=2i%5XmA`;-X2n%};dk=#UXq<q78{94t zg0@Rmvaf`;NVvgm5nlG~>^m4(*>|$<WYA~d&Ax|0mi;jMVFqsYqwGf+)WNM232^I# z8{9gPWk1P&l7XB36#FR#InY=F0~7mO_O}ci?C;p$Lt8DP;8u$$XheZQ4K$*_payQQ zFoN4FeBkzq61cr0iqu}=gSJ=NIocU4!7UOkaEnBXV+O|z23c@hL>8&#p$2YwFoIhi zOyHIWBWNsvfr-<K(~5x`+zL?xw?bsWtq=`x`-2bM{$ONaW%%*8f%6Af0|PSyI|DZZ zKZ7s>gRr2YAR`+7!O8HQ0TuskU}E^kz~KNQnGS%+?_d(bW?*9QU|?X^;9vk7%%G^q z2!hItilT~)KL7qOePCo@`ta}1-#G$*|FB5>e!;=;gMn?&pOiZcED)Vspau~)gE)gS z1Bz~8B{fqMGh-t$Q4uypBsNx4-`FQ6+Pg+aGyaA$;MTD10ZX_-#a-<a|Nn<t?7^hQ z06Gnhoh^safq?-oz5p(s#*o5<O+1BB21z^vu0D&=f{6j{u?yfJkz!Co^%x`AGa#RV zyvC+(WM*ojrmVy!Dk6r}Z%jNDtNdC50$Tk1S_15Xg6!;qf)L*GSXBX$325<~5Nc~1 z3c@h2aQ}fhjiZZ6f@uLr{O<~O2d)cDY7C$Q>DbxISS}!WodKqvEtk;&$%_c_JeWAh z91esysyT=tDFy`z$X-w?;eo5?;A6Xiuop>OknIUVoC^^Z)ojS_DS^AQo}CNgFOd0M z4sh`TrVNPt|DFJ)PMA2y8zyK}|6@TGXX|GBfv}gG2d18_f$as83e^2J+%hn6_798= zOf3KZGnjzvMH2tWz`!H}Rj<MA16TivQHSvbT-*XK{+VG9;~9`R$UR)Ja8qZ4Bqeq< zcd@|r-9ZjlZiM(<6!9Z)_4gPJklZx^F8+|wgh>N#KP-OK*}(D4fM!1j0}~r4%Yf8_ z{LRq-HHVEYy#St3;HiR*!%yc2TrJFOHqJ#34FCWCI{`L<18M?0XWu^tPz->!ry$1+ z=hT0og`+J0UBK!g<%}SM3~HugHWgMBWn>l=VPj)gH#0Le#hR7g%wbgccVvonVL*<V z6+90yzY$^FBlFLP@j^jBUztvb{iNiK|NsAsK<tCNZ~8ybb*3z!?Gx-8oG#$Zt<0c{ z>JDLX5jJHdJtk0oRtFVda!kfXW*~Rran_!SrZjV3TPIyz`--|WeJ>XeZC&S<kdO*3 zHMk?$8B~&|%4x{C8Y?8vmDiGY{dYORZ<CFSWtnTr|NsAQfE>%|0(b1p|1k^(u%PFH z1wA_?TCs?uWOqaaa?ZQKz`)Gl@$V121}6&xGq~<xU}RKg1Q+v)jNpQvP32F)6Xpqj zc(9cBoGf2|aB+P51NR8ba*iob$FgxQ&_GT*C@Bo5(;b-D7??rng~8)*1X6lY=j>zx z&B(#i9(Gw+8U)M2(jZJPQd$Jd!-5YX4^ET+|NnP^%d0amFt9`H2BjUiIH-a_=mV#r z|Ns9#0m*}-OA|%k4Y)X}K6rG3<l)f+wU2=jQlWwCU_>2?TKhu6A5vX&>2NSGfZG7Z zpn6(RQB)C(l^KOi6-7OmAFzJ;qryDrPYUy!-!fDFELp;Qf`j4CU!OaFJ?^lp{J6v9 za_0^t8o6}95o8PU1Y0i45=fEDz`&&gF1jJ&DJ%^Lac~g=5@%-k!N9=Q!NI^F%pl94 z&cI+SsA$9jt`gZr<(Nc8*jSWR6~UFGnzEv)qLCT6o>ct7bmkhPSV!#ih`4<XJ^wC! z`X|Ep=JVOCBW?dU7|#@J&E9k7pAHAZ<nPm3)}%;?uvI)*H0#@hJA2zRHfG<5Sdi1c z_y2#0)!^E~5$yB=CP;<;;~xviNla=C5b<ud9pE(f<DU((I7bpxJc5CNU4?^zL7l;o z0dz?YJNv)?GyWwourPEmFmRY~fTmv+8MGNp85kIqmDt!sMU_oW%*>39nThi((~Bbk zzTz+9wzZsaA;#bAD(;02J{<)+^M5c96$aqwaD?~~5*<uzV81gmtoZ+gJ%dArK^5e7 zJ!WMk7A8RfAr@mJJ0^2uJ|-4r1qP4+11Q$S*fV~J<<8!dw(H;JjT;$tcctx_oh$Z3 zX3Cv^?`Qw}^)KVqE5;d&Y_k~!?@VEB$X=9hvFG2Uf8YLn`!{KiMgHQfxj)uMF)}dT zV02-0VZ6b}5ViI@0~5#v98)-C7z7#2L2eKPg`AO?xTqSaxx^+as7%;ZZ?d-*sCY{A zYlu3eT9e>JMuwIh3Cx@)m|0b$1O77*<>LSU8CLwA0SYrFH3m;`x+-Pb@c#oy92Az| zECCTuVVnZa65ucf*ZL6gEXEB;;-J<HM7)6M0g^bVl>iYhhN%bH3pZb#4Qww1I~&*@ zP)Pp!!=3>yz%>~d7#WQj83~3R;|1mkPyQ6JY#}<-{{7+N`1*sbg{Z({U}Tu_{|S2p zB!LMV%P|`psR#)QFsUdj@iDP0+cBvaD=>fr7!;LM)YNAD5YGXnFGk&s8~<GfrLP?E zAF`A0Fbd6LWMiE1>eauDf4^q^dv|9tQ$yC`e2YDdd5m0)T#R{pEb<p+&-=bM>OaFj zjemRo?fIwipCM{3s9gdMeGVBWHgIe)fl38-2M*8z2~kk3E~u!$0&)P0s-lsKkf{li zin1be!QT$1DU4c-D;_=h=kwQtvEU!0-;zcD_I>zQ!ol$MpZUK-{|@{!{(k2OW7e-9 zjOhm%n88KCA8=710qW!kLrMTqNO{1hh|QV~P>u&>eday5?PGla%IJ4MIsTUdR?8tJ z9lHZKg@u4qWHG}9a7y~Yz`*VRE&(Cp1xySO@qa9!Fkn(+fQWaq&482+|7?)OIg()F ze<P5^*~%Fq?fM^oFQABbvQ;oJFfjk$1G1NcfkBi(l0g;}%BG0GHH8H@qoA@Nqp6}O zbHP6m#yhYO{`-eX1QGH-{vBa1fCuv(M9_n3Iu3^4M|SLhc%RpUgMk6+9p<y_FCgAw zVBq!O$bgGq0f{p(f|3C19S#NtZg71BtrrzVf3RGE)rjz#5Mny(9dNdb2M2B%0}mt+ z85mH+Qy7jQiG#8)M12+mBwPOgs|RIwkT@G#rh)|AbWr01B+AZ~%kTop6ohylia5*^ zcD4d00f_p)D_FmP8x0V1%9vYVVZeF^oHQWf#ZcEg0J{d%^@503vm)CI>Uu%M>)AGe zyIw#3t^kD@lNtj=yp$2rr3Cwm8`MPri*v-YW+3cE5|4(7|Gj`>PA6LqMEyS&6!8gc zYarqvd%^7wkooFtV0#(Z+2G-Urmvf=2ci$;KX4Zhq>r7gfo%e~iwAZumkHb-*$fLH z;m5$h_5|F;1FL8Mz^DQ0`u)EHHV4!tgouCqzXIIF0<~)#z+FFx_$P)d;I1Fod~Q(J z4<i1VAqCv^`vGz%JRa29z^MY<^#ZLCWn%d8?+@!8aN*4lD!i2$8NsbJNUM#t<*&>W zrYC<Q5GfSV<c7A{7#JCLFfg#rfuw6jK}AzVC}y4WTZj41pA_afe?&m}<_^=AJ4`!3 zjXSVo!L5UMaG<3yFt9z~Xkbuhh-YMBU|?WlOK$<S+EbwU86=(p66f$+04iHS;-F?G zNF22Fn2mGM0;qb<3=R&EIm{sMv2pgzfr&GKTT=1NDxl27ITduU>;L}@DGUr8Z=f=u zBlFofCv?Dc$UwzGJw!In=`*0>?0X>Mj1NFA;+%H^B>shgfjx&~3dm+g&{Y9!oD0C> z=spGWab{{n_R3&TfF%#sJMd%(O@7d#<Ol}?11EA(@`L5fA06h3KOK-_<WCL*)Bg*9 z53qt13NlDDFc=$)itsThE2*iQiisH;nVFixBm2h>o6_|qJi@yC8lnj`FoTvP&&)Do z<~+m98d0$TW-7GwI07!<J3+z8R=}je1X^{ufq{Xw2I4G4N?@(|ZNhxzPX}`aEEO<M zVSqFNYdB;WG#D5dk=t4-LZ;%1ri!8>&{m*{kdTV85sR3ZI9q{Y_T*jp+x}hKu!+%N z-v&nB={|pFF!Nmh*Z$?-hkvP0n?Epm99_gHd3TBoYeVY7A{#_Qa5|&t9)UY|{{HJa z3uy~}W^82?nv}Tl>r_w^=Km884h|UxW(FMw21ZduQzBi&!SN@9iGg@mF%_IR!7M<k z%Vu!MFbFYNgPN)4cFe{|tyFg60**cB4-cC~%A^E%YxNKDZf0$`0Z9dr_Ua9yT@P)V z)__Z&UT`|eVq5`E)}Y2w4LDgt#PeWH&Hqo>YryFWB3{6B1ET(K1bYn!s5FF#moqH^ z7aS0CKy@BOycorNP%Q%yPhsqVm;*K+RJ%dMb3yh()8YgU83ru|23And1Cizwv4pUo zvbr)G3yTFf&9!}I^ggnPQReY<ng0y(d9(KAZ~J#?3n+bVXB3^I@OJ~V!UZ|5(ti(R z(9<1iKrUpI-X?YD55upv3D5*715S{7kOaw0tg|>|{)CX|GEl1gTSBVyHh@#5EtXWt zNUU4gTmJB{nWrMB%Pph@Dq7<F*+aB1ps8~LICX+n3A3{yr_KrB)CmzsPMs6LsS_fO zoH{3fQzt|mIdvkNkDNLufGYurdgRoJY%eTzf|}Ey>JHp)G!|48G!|4AR22O2gT>{? zkKcPZ82%J6Px!&WJmpUgsBHebgk1;RB3lTmpx8=9{(wXo7}#~Va+uT@K%yYO&H=SE zKy6YK@nS|~anP6_M129%8HoCSEJ&uavvsqBZe9Qnda&zoA=GCw++hF>RsZ<Mfug>P z9duSC6S&{P!T}op1GPIu6-|W&5kBK!`O&fj>N~c83m1NFK=va86T^?c2SBDW2s6kt zFerj*HD*MuW@f62WEPvr4^5x6DracXmu&g#2-M^y{!J+^%HY~fH9BAcvK62J`zOEw zYBN9sjDwkN0=UTe@%ICV1h~-;4j2w5Hje*uAT=^q0JtLtszAUIqzrZjSHPb;KYs54 z#TEy{oga5V(FCyzr0f3^?hFnFQ02_3q{3t>s3-{0Wh^KHuAv2u1x1)xIIf)dcX1`e zkRSI?p1k~H#lLGZGZ}U7G4lM$ftdEI<N3{-&q3AyqkmVXfqVdpa&RkaA=u?77#KKO zz^$x>j1l0Zk^TbIb^(b$0k>%uGVTD0bNI1<T3I0R3sCVTAaTw`EKv2_Jm6N=LS{%C zs1Ig7*Aj?&W>9~OjdSV^sCupmP;qc8j&s5rnD_yx_!O}D)BixlIX`f^FsL&uWCC5q z#Kt+v2Q=J#f`Nha4^;dDSp7`6cml*6CKIsuJROGr|3QA_6acr$7BYe^@nYj#01}5J zd8BYj`5VE}0MX9~>X)i>cCzSz%z?HxPyCJGKn@3xd<{q*79M{iP{Ko<vlBFe$H2x3 z4VS+WDB%K<hqPLu;qx~FC44~gHemCi;q*6x3pt!X@;P96Xn6gNKnX8(&Q4a)cp*I8 z{zjmL8%TZySU)8Ee*BF9WhPkBz}d-kg8|f-`@z7#_yL?n8Nhw!4?jTdH;};pEes6I zCR`2-%nbaXqzjT}2G2ZVnNt1mV+nMA6lDUHgMpC&bM_Q$vI{q;<~|B)F>r7&*MJfi zsB6y*Db>K@?En7#VQ>J=P5fhF-T*G`z~XEZSgwH8-vButT*gAg)BeF5)XV}%;wk^Y zEsXz17#NsUz;yvceb&D(;1)v*0|QG8mkEP9!%>DmAQ!P^{|67Fflh*E_5jxs5FNSy z{(y9VW=ohwki_#K;tUdhS1@tFUCPE*2JTRt0Zr+F>lBD71q>=+Q_$U03~|rDFANM! zTaese%?z>i3IhYP02iqL3^Avk<rt*@%)r332HYQoh&Qk-0ryAG{9|E~fxCvCt(#>F zDBKus{Qtsq1C%+K9)bDLM8L$xa1_iJU|?WM;Amh_V>nvCz`)Ly4w_Q?{~sK0CS0J2 zlVf0YCm0w&?R`+VF?N6w8=_EQP621Oql_gWaabl|U|?MUE>w;(Zvcx!GY<m;s|7?o zGiZtosZe2s42~aVhGcqZW?^7p4S}kM6gJRI!oa}N0xmp`GC>L(c%i~F0V)nU--nG8 zoGEa{BCc3x0QvU|#9k(F7nT!V2r(}K7eYrFw}AZxFN8pu3l^^M@KXbYGXpzY#y=A# zQ0>^kz`zm#%5&f;K?cwq3TW^Ol;b*>FZ?lJzVL6#4|bJ1cYfTta|e<?|NjTot}GGY zRP_>^W;6dAFn~sVz@~w77g(HwgQWr-TVQc;Y5<9|vH$zw05att3(Fd~C_CE(R>;^3 zST#5ef>g7!rTvFYaG;B){J#Q9%TU*VTImq=S^qzP#i4nNNsR#_4$WCm^`KTdL_GKZ z53qWO`3UhmnE2lnECopJECbDNf!q%YJETx3V1$$b5OWajDTcTQbWaUS1d_k1S&;1o z<t>PN>RAtg^A^|~aNdH5H?S@M=dF%^ETA}p`>UIE11yx;1i)$JC9I-70;*^`7#LVV zW4P)JFBzc~?GaE#2%6@x0OyI9u!{BoRGb}BA-#lEwBWL&gMk4$IPsDhlJ+O8fvJZK za=c`Qr2Xl8VB#|1wEq%T(ei*QT97%QNoaM3mrT%#7ADRT0WR4f{)LA>IGhpjf)rnD zJrMuGDrQi{&nUsbz-9x^6E9&EGe{f~@1U{=lpe6eU&em}@F+vc|0k@VrkOAU10%S3 zq^zW(W@;<~9@8*0W#RZS;oq-KEB^hO_9c8qV)itD4u)SINB+I*t9~*!ywM|Sef|Ic z3?=`cu$h1gd`3=i7Rh2_0Vgt$xD6;VLB!erG4U`wfT#yq%ESf|N9TiDa-e}c4h9Au z(1?t&pfRH&Xd0VQ@W&4c<{6AGf0i)E{JZkk;y(ii!ygXjAAeGQ&tcy2@4?>;P)qG^ z1ltp^ouEtY*xAaNB)|y<G}!k9>_&)qF*E@~#1}BBF+#*s7$I&4%`hUH(+yn*1Dat( z66Z()i8C-VNH8$4gAxWG1A`)?GN{dJst9p8+mXKxe}4SqVET~5Y{IDV=LmBI^O`>) z>?(Ia<2Zk6ez$;}{ZD`$l%CaCm_b3v!ORLOLBZqP>^>YSpmkuzf}o%<GZPbMS7T#G zgosYSu0261PMyAgcc6qzLxhW*)ebG;;J-b{;R6X<CN{8t!4|Nt-~esXWdK>ADEi|E z^9~M%AK;l|&=A`SP%Z|gGte{@q=sks@izjbiAfDAUXC=9yn-VECeHqY$p#Ym|5#Ae zcSAY={}+J7LAd~IjyfAyoPnJUTK_Zr_-BKxk0S}9kKxDP3&`SZoot{p>p?5`89?F; z%%H(MMo~scPe_zG<Ij~nKbUv0GHm(Ju;mW})O(<Y5J)-PxzL6Xs7u75!r{OG^&Zn< zHqepv;IIO>UildqgcTW$89^NkWkzLCbpK$~VA>(Uw1ZLOg~;EA2Y(wxUT`q{jA2{y zgMm%t=Nk|P#WDi}#|3bBDuZH~ErrPgoKb#&#T}T`7$M>X%#dlvAOBcD7Q)55IaDCw z`S%0o9&jQDtLI>1U-N$s%zRL;2bn{N56NikppF(d1E^UF@`s=?qp=`+z=z*UM1Fi= zNdONvvw8g7!NKrz3!4wbNcI5G;5(x>*bCW=kfnE^j&%UoYY_1i#tw+r{zibTU{Zss zhjr*7>NDWt#f*?e2@r8meuS8lhBOZr0IGnX<`ghND#RcESWwLGW>0|x(LWnxagHRI z_}>f2;%uGlpu=66{@?j~fIWtTfk6;F+Xd<dBM<H}3W8%996F3FKO73Cgg`pM2{mjH z@W4VI;^kQIg8>n6(0(>3tOdYJqKrW+pb-6RQ(+_v*b+YE?}W~VC$xM(7!RK61`i;k znGQ~xAa8-@!-PS_1ZY@8nNj)27ZH|(4?jeHFZlq8L5QQ^@dyfMb8tMOhBE_`8Y4tJ zk8uqo9vK+e1Hf4oBA$yP4obQZ@l1v%;N}siZ*K!v4_c?ThKYfJor8%@2bNSp4rXEl z*#mPAIO%Fb;_vSPE)j4Z1g8V0!yKT?r@(6s*mrQqFz|zhD;Ncs7!*MxWCB7UT8J4u zEe%`$pd!S+13cY~Sl9rbg8l%Sn1(HY*u|*3k%a*=+YA}-f~;(S%tC`FrV%6Gdl>T= zSU}4i*mrO_fSsTXUh+V|8IYBvnEg2-o%hEBz0*gEgW0$+yM|CNcrdAf7Su9;7S@7B zE0`Hp{9nVqgCl@}nL!vd1<tC@C@xIMa~o!`PMA?aR6vJhaM)!0ksu+oK~8$Y5yLTs zft^7dwEBqASb#y%)X0pGv)BvX{QLax>zoN5M7fM(%D+$lZXG%FM~ZmIL5DqefJ;5l z%oaOa8p9oMZUGIZBa4IAcfi$yN<D~r<aH!Fz_|q?p3Arc$sAB_gox*%hzG#qFO|uM zNdSxa;B_Yq%nU33E`aA669xuC`390;&CJEwK&zdNjle7-Q|sS?>V+N)T5_WLbZm6p zL<JPHNlC50R<$>JP3f`;ahejPYb?RDK~x>&Es*oU!Q%ritWbjoRER->r<x5p*h=8R zQ_tQ6?qz_Z1+<76lI%J7pd+qeac+2a;5f)0!DIol_x}@6PKTR=yu4=zk~xCxG2lWA zVh-Fr9DCVhki-jM=5XvoHXk&@4s}mFn+1~k2DtiYnD{>yP&C5C*}B<5_muyKWM@$C z31SXg1A79v_XKf|3`{-y2gV=Zk!N)Aj|>&y8F7fX4_y5x#wFkxafrADT>LYm33x_) z1;{<%Ml~q>L5ra`fC_nJcX7mkvj?b>g)Vb~ge!_TQnulU0s8}@9?2gZG2liAL_C|Z z0Fpiav4F}3CN)NgI3hgOutTz+GdR7VWIxbCB2YN}|NsBP|0nDpKqD}W4i=CR7y(fD zgTy%kIAj>q866mAfK1@<`>*pK)W1ym|AYfHTLY5$0Um<@PnUyqa8*EbFoEt>V(0Ap zuK_me#Q!IpFQ77@W+Xf3)PLZmHy}NnEf5*TGay?yCx8|+L)^u=1S<0eEHnK-xa9}Z z!*K>G1G=%6opauQ&_FA=oCKu}SkcWWs%Xkepy+1%@T-B1xbl%D@6Me(l8VNL|4%qr zIHoYDF*^8wmfS7?xf2riAa^pcLE-?Cc0r?EjF9Dx;IsycBNld0_(9~+`Jjd%NS=Y6 zEtBB`g9K=rkAZ;`G&?T@Zookr1uBY=#TTGuv#Nrim64(%LM+BC2LC?&%Y6KpaXKR( zYYS|_&~KRy$NpVizMN6}7$YO&Sw<s96UMXup-VIFuz8&LH|^7hf74Du+RbdBkvDM$ z$ZA+2@C-YA@vEA$qTmmvEgu<;r%e8L?)^Uj#urOZL`R=m{?CVlVeP+LTetqZvHnic z;p*x``9GkGIM`Ca`J@aK+iWS&6+WQOX$r`%j1chxCLJcwX*^(Y@JN<4Xr&1|Xr+k} z3l>+f6fiE>@h{=819sQ2s{C!KU~2dsfW=u1kclNwrxd&#juEmVRuOKGpt2x%X&fVT z$*-ESB4Yt)2`sY(+~*EI8UlR9nRFO;zybiW7!DQ)e?`D6VgJs71O}uX2nt#zHjtP9 z|7U1nU|<JDt2$#DV*(_@9RLmHt@!T%N=EQzfugWDqaw39p_+~P0i(bZ8^(}-A0AjR z)ezM*U~2exCE%Y8qmB==2k|)o)Z%AgVB5mMz#tA9*9Whf#u7uIe*6!nEgu+7rcC*F z?%m%DOd3m0M#r35_Roju4C9Y~4?uHgi~l{@y7k|S`418{R#)#x{c(qR#-9x48PMPY zk6|;`K~oN-0rKN-1jueCHK=$w6Qm{rrJOC`5*wnvm;o{_2N4I=ToCbU(CU7;`JkE< zB3{pS3S5&y)PtJ+5OMIT6_EOWEGYJNv)uvbV$g8P7H|y?QV;6s-vPTfml3v{(FR!` zM-oUM12e;qe==-aI1hl%5MxjTrFC^iRdYtrqHG*t$r|wI#T=#||9mX|KENNWoIGCz z6u1f+rhIeYV89W=AQvz&u!EK_NifJTD1bWt;0(aV#?FqC-<3hz=|H>celV^1!l>Vy ze|3h>-yX&bTh4{K9oY8I=Lajx-x5X%rYV0*{ykut!YIMPu;$;RRSP~X(hzx)zPTu2 zPtA`z%q@Rvm|GZ_K^C!{fo5=d1_nk&Q$=Pxo@Si$uZ6Lu2fu%r6&`?wK5+Szkzv9A zJ8UT&G7QEH42)_j;Jhs&$0RN;#|$pslvLEz6~WtNKnwiU)Ya7(Oidu`iNskWg#I(^ z>Ns8KU(;cEA>ioNvbF!VzPa;n|8^cm2CmM_Reg_IigxAv`S9<>ZbsW9#~4kvva&JE zSP?NRDX7%fkl#YotNz%8W&gg+>-)E&WV&bU@`AL6067m=Muzii7#aI}zs&ysAL2l8 zG1(1HJShxMz|8=#!@-FfBAx|JR15yD0C|W>jS(VV3Yt!Un*(ZvL&S^W>P=A8mou^a z2Nll{^FfInqP~F10Alao2Po>h*^VI8b1T5?W#7lP2Hczko5Kxi27=9De*qH*nFB87 zLE@myapeCU2GGJ#s6CK~VPXUO12v+Q&CEbcx`aeU7}(kQm_(r?x8{m$Y%I#4X>b!e zCUbK;CQ}p0YJA2uAK11qnjAaAXuJF0iw}Qtb``Ze>Z`ik$;HUPv;E)xJ8%ANU0b&G znEwTzo$ZCEJ8F*CvN6p5(%b*<|C;mv8C*T&0vgf^mdAQdFIn-gZyqDhvI)oPy+kcU zyxa4VW<~h)gQ~~>PuL!C$bj}-84H4wh?tl-qZqV;Qc_bl2M;fsn&>erE1NPx940FG zqnA<q!n7ZkV*Xj2VU(M;@!!c4u?La^EN3JizUoz2lOcJ6afZ{Hx;d+ySOeZM+ARp_ z3HiH%XY#-Q8;<<@+^wK;M?&YqmcqUOCH5OkI=aEVj~jk%U|?kEfb5rGU}peN`G5xP zI@lQg)<CCv*g?AnJN~YK>>FX62~Jt1OyI^FL@zjHLBxw0IlwXB@iziReK`{cxR?Xm z1&&FG`T`~kh<ez56{z{$Y$qV<Vf$4e;v7jZ@xK>P%<p6a%`!v$@`HncK>)mxNl;l( z5x!Z)nC-{knjim`xCJOZxV;y=Jc3=tDZ|RAV#@<iUH<m~$V3KS22lnEMNttkV`EX! z1~^kw&>R>jP*_+dB=~fM%&KtvTLTWCB^4fbOfzOAuYk;nv8#ZL`S*vd1H8r+G-e3e zpkNAWVkrwUW`MUL{IdaTg={h4&;ZS)K>`>O2~2EYk1{g+_<x7p0KB{$G4H@+3R<B7 zP8w#WY!*L`{+spj<G)!)f3$pEz4}`-2g9!|m;P<vyO+`P606Uz6VqO{w!WMOs%QV- z;rPQ*!@vn15;6uYb~H6IGgF1lXP}tNA@ZX1-`^`evu*#WVAxP|<looMBQaYzu-OEv z-9WAe7eGtF$s~>8062QVzCjXCVXQzB2Ng6B^;yvEBoOtW0tF(T$#4ZSXa+Xlgh`DN zBA(3{f@BV87yu%k%Qy$Ccpi%Q1-LmyOpyL5#9q*_0mPhCCIj%W!H>UdK(PT=U&hqH z0NOMQQIBwcF|zx?{a>&-9DM91;N%Qe51JE&xSxXq+W&=!+rZ4{;9|D{7l>eSt{-r5 z9u#p<YXodQTQwW9e?hGgh<H7F8l*My_XUdkd)W{Ce*%gxH1P@SB~bA#DC#@eO(5c+ z@JDk0UN-PnS4e6F_tU}la>TORF!f+DzneV-$s8V-zt|esUBLbEAE1;9PAAL2=?5vD zaQs0MM@m;5f581=h<a3WK<NY`4o@e4Ux0D~lNuvL9PAzjrvD&&LAi~YK@wbWn8N4! zQ1gbt_Y-Um=(&Pr$&w|^G1zhh1ImU*&~_zIBZ$$5DM5lMfsy5}z<-9n0vrrKUD)=3 zwz)yJBC>0MJMxev6xq<`rw3?PHF!b;A`af=&A`ZD!@$4=+MUM_npHCfO}Q{aNM%N* zoWB?TFs>0{+`=fqxJ86<&7Z#){xkfu5%_1r!SJ(&tp$XCFt8>31Z}4W8w4)MPk=){ ziwQDP1Q7?NG>CW_Bcw@zE}p^!Nr4b?P|k&@&t&`o&bjE~1<a7W7&iYzKptRHV}z*h z=BQv0U|?kMVPIebb!&J*ZCdCAr!r`sld*tFK!8brQRQz9Q_H_Qe?JKP{qXM&)0DrU zrD<!JL;f)QVPJOovj=p_&j0@qbHEkOd9c4=6%N>ZxHubIrUz)vf)8Ytkx7jatQs=Q z2r}jG3U(fF@I%BISimcVAf|%{<w4?**yez&Nry~;f!0oVFv>7lNHAG2%KVl2!NKsy zg?Z0!pFdleeIVXs@8OUG)mLB*c1)1TOF?BpAFwvY15RrXCpmaDnf<*3*39%Fzlc-s zgq&jJp9YX2&_u%l&K;oJVL_uvklj0=11&hfaS9R7Vg#+6X9jPw<=}E);A9X5^%=kx zD}r3gtfYqZs0tJxU|C^>@Dl45EQ9F~cYsP~h&yr_A<Z_3I4G?^#0!`rz@;`s9F*oD z;%N+!QXZ5Ez^j@VA>!R^kUdaf_25zfBHqAu16-Pb#le{gBAyM}U&O!!n$8DJtuQcy z&J+fX10h0yJ>bU<2XMec<BKh3$r8pT2oJ)78yx9Z!G*d90|Unz&{{{vtKcOSpoL11 z4MGqHI54p>-UO@kVPN0@%_XZdUS$MLU$b#80`CCvVPN0_FC=2T$_yUB<(&E-QXzRT zFmSy9Eo)%B3SO4M&N=-*B<X=<R6q+V7_TzRfcyP3&wv(GK<q>Wb{<M#BgA2m0CE%5 z2G}l>4WI=ZISdROXFv-l7_TydRz|XOF8B{UapLa^cI0R%0}swIGOS==U;{0m0__tq z1@*{885Kphumt>G!rJnC153;nwt_obeog>&7{E%wDHe1GEIV5Y17xxiA`VIs5b**g z1#pUhh=b}`h<GsrWK|Ekcot0j9}CDSOlph}_1&Q6A!uyvpAE7&M-oUJv?l-G1vb#` zIw43Cm{HM447|fx4YXsMaRtczOjq{aexMZK_J@TffL#UTkq28Ue5^8@wy+g|Oon(K zW+VGQMjp_bL0F(Lv4LH}$gtw?3O3LzCum$sNsk58ya#PSVU%M5%_4}hv9ac4teZb~ z-P!saXvnRY^<vwc84;Ed>WX!LSA=)W>IjE~WQ$D8k{K!doOk#|8JHL*{J+B*!zRL@ z%3#L8z^bICW(w-q*fE(x4rO6iw_`Fkl4BATR5n%SV^Rn0LO11OhV+P-=1h9mld<k{ zcF+32g^O1nP=8=^@_mWd!L1c<cq9sTCG{Lk=1*;|R*RXRxLqax^0bzvar%5h!g`h* zQ<h8#3Fw(?ubgvh`yZYQMnwTv^42BX5Rw(;XXP=?jH<5v{~zKs4p4pujR=Ec8?qG> z>|}7M3K7p^*aOZcU~x_sCN)N|IQtz2$a=vE|5#XK;Of=c!0N&K%OKeeUEf`pK2Xqb z9)X*8k6{gXy*Nbu1i1J^h7Am$BSgUB9H7(&wx6vS*&HPCEQC1Q4o=W40$4r!2Zlf3 z)*-~bFmu$|!0Hk1{l5Y1E`+|1|7&3GViVy6%`!mD`^2!~Kj_F6u)8=xvkV|{HuldJ zpaWOHqDY}z&ANvHbaoF!+yR^*oEZE_P87H*15y%;Jo>~esi}u8084!W_8EAr3=|IR z9Q<q{i16V6l^$SmwgS+KFHrger5iR8SUj_JvmvLKKQM6)AvVa;2(bC^5M^UadjKjB z!J?d?HY>#R2DTIiP}dkN&H-w3L&WRZ+897BDu_6!z=eqC!czC&6|5ylt|?<?L8N+) zH*nYVGI=muU|@md9?k@CJi0LiksObV;IhCB>p4xN#3dtR+S0_trD<u4<Kq{nh2-Rf zgyiIq8lS9xqGlx|EC8cfQ8P+ByelicJxV~41kMbI$mn960trS?aB(IusWAzI8*uR8 z`g;OY-ob<G4I^aXBP7^CO@C0Zv$18DfF=ZP{C~r`giQq;hzyKIVq&1piJ-y{)X@h` z--5O(>VX>jqQ-Vi;^098J7&nR5c3RdrK9H|)Y7p=6;wL1;SLbyFUZBC01ImI$R@(X z1}g4gAptMuK>IL}ibW0wCN|Jm3Ij7JVQ|iYmiSSiWTB!iY^GvtBqk;#DynFz2p!N8 zg%5d&^D(KSl>6e~q+!Pd@+WFFA<nGK$HcDi|KB=w9dAb2GZn866#Y(M-jKexq4#WF z)s4Q`>3MQbR95}^&4OGxWKMe5lezXvR?qstMT=G(gw!K;bLKTE#fZo)eXa2OB-5XD z#{xG0yLCO~Ow*aN?)!Be>ps?+W(PQwtWUgvR&`tfS2gkayh0*+795k8LaG{Zm$v*r zAz>53AVI}B2NYDG(R<LkI3~!>=n4PtaLxhcV5oQs6FkR*f{cj`EDowPAF$qG6JZcz zPy+`blPPR8&e+r#UQ>dOOaPtK!6YgoB*rXr;NPuf%NR8dO<Nx;CGzHpj8wv=lD;Ep zDMuzuJD!|+T;VWd>X%Q9DTk74HNN~}c%xOHd}S&l=ejkF%oAt+`@Lw%zprz_PJh69 z2kb=9x*brZcmP@qfW#S?)R-XRc?^(q#3uZI0NOka6KB7}0GT)dRWf(LK>$(@suV%{ zPeA8gLG}=#>$?ln2R82r+`M}XSD=*-$esys@rMjIpp_!XT^TTOwqj&+K$RlYy;%rx zwg;d}5hBk1fl&osDc*sr2UUuYi4O46M$je;u)AcS_OP*kTmstKHR1mQHXBft2sP~! z!v$!O4|1&qT=nM!NR<e3>jJ1KJ6km?QW%0N2(T$^Y#B0;g8czx-!oVgRGriy%!aE5 zjW+W@VhFU&9aMlr)I%0!!eW&356o5$A?P-Ja16j>nvE@u18ys*I)R$fz}5q;PC#xi zftkWq&$bRy4uZl39?zgd6rg?r9g2YD8rY!-5L@5C%;D%|Dqy$(cO|Gi1*I2uwn9*! z1ul+oeHY^%h`oPLfU*eOoHx*OF(Brfz{J_I!RH1sG5q-dfX#)20g|OaD`t&B4Nv&c zwwk)KsIZ6-XulaeTm5(=A{D!S+95`bWy}8EIxuBZf|LwP+L68~$5WG!Pn&Qgg@fTQ zk4A0sp?`Beefc;0aB{uY8)k-e|GrP1%gDWC5hLr&iU0oo|Nnmn#A+rrCVNm-!T#^x z4`xu|4|9?Pc>lMkq9CS|lm*cp#ai(v2h&+kUZA?`&fgbk4&z|>jqWrCCWagTAF!!_ zkBBh^6*Ov~U{Dq`0R;`xIY3D6Qa3V#hYz^enE?)#C$@PLp(`sLQmv8Q_W&MRX-5=5 zA;i{zyp{T250X2tAcfl+P&k5y>cD~L01G^}0;U9TY6neBx`5LiI8fQT*}g!<Z9wr1 zQ_qnE5@%p!0Hup1Y$Bi;I`A$-aDmDqCaw&g#Q+zf#ztml=EiJnEX*D^{+(E{meKse zB1V>FB5$O3&gnW|TzI}GW?F{W8<DyH{wtheOndf<G5vJKjR~2H`~Ur2x9Q)HNe&eu z9XIPiou0o3SV7wWnHf|-<3!4gjNlm^=%gDqD_JM}esO?B=3faRn>iT19^i8L{(yi3 z{y$*5z&3+HfWZ*7IT?H+4t&qNC}GzuL7eN9(C~K&AxE*8oB*$JJpno-;nx$qZu|e{ z{~1<LOh_=8fYO`_v~oj>3s!YIW^khcd{CJw_?$9jB|c_mk8A%<tilpEe?6AyPuTy0 zk!M=lhOim`{>|&!munn<;mp=<h0~0gZ=NxxoI;7L7ZVH??_8D@IXk86WbT#5WN+8x z*()c2N}RtdK<;BwV{!v!SGH0{L=CtETwX%NQy3r{@WCkyTysFgvlx)ogHkR;ynyio zIEA9CFNUcH*$X!xbleJfK@uB^J)rg&$Xy_J{(k^=CmV<lN_3Et7*fI^(zuwIIH<UT zb+1u#FDZ=%rY}G6wHnxVfOBIID9qUZF?BG5R(nkNdjK>h!yv?<$zaLAz^DXn%L+m! zJIzJe*bqq(pF7zaLMG<fzOhbq5Y^z9_WV;ppsn-wfLYeeWX2Q!ECQlcS(#68GBY7J ze{lK)+<JY$&cmU=AjF`-V1b-I!R}M$V`4-v9hC)znHkZGMU;RoDUnLp#OPp~KRHy< zN19)c-yz-hiATUc9~{lI-w(9vli5}z&&V)k=RCv4Bp({^vw~59@dIPa9|iO_8^q0^ z1AG{m8KgkRH-OF@WCX`IWFi?<?0{Ww%xuC0Z!j7gnF%q*FmL(e!_ok5EKWfU)EBUZ z<CMN5Y2ax|P?Hg<5y|xBHv@9xaVjGx$Sr>laDX=I%QKiUxIs22fhtu~6E$_v?iY1N zaE}kVieAlB6<#nxT!_7K%ktq(p|?kbr@cq9?!S&1j1~!R^OxRE-dZzjSI9pdRCj~@ zg52<B4EV>BmKE)4AHvCFuKTZL4x>YI>hYyHOJbUjrxl=h2yX&spTv>CpvDAA;6GTA zo3Wrw4i;xCV0^&{ZbpF`V~7mF*3Aal%Q@kn4JfLZpyqHS!NmVYAd9n=GoFJK7O*p$ zAoj9#vgJX<|3BacE%Aby!+aLBzYY}qP;qVsB?cn~21U>;v8kdcqo|@NaYX`K40Fcs zBdj@pHZbS>;2{vSTUZhV?(F%!Lf{Tj*$Yx=aSMRX1%vp9`3l(GEDRI={onx&(t=K^ zv;&O_DVl-~=K&qu%*VvetZr^51RW{hV^UTJolXNDo+QpsoFP-TYzZ~C$tviGy0D{S z)!*k`2@4YJx}Pi;`7?((;rABSnm<c^*AVdRo&G=@3-^v=_5beFta!&5vMpp%oa=%K z(Rc2gV2Qc2=l6_1#H1xqLH&0D7ieXY1!%@Y5o<;jR76^Lp~s|dj99+|9-3uDYpSx| zc_JZ|v;~ocH^xf|ykX&C`FrFPqe$P<f7g$d-P}+r@`SHwOF`3ttjx31PB3x&HTk_D z^*AVhL-IOC2LH#f;?EDBMgM**+wt$~M3chpEdkBG1>3SxwwK;uI`j7qsLzO09)aTb zpAS++pbo7F*jZOHT>Gy9ZHC=o6G89S;vN}bj=A@5|5{LekJ{I-ywMNq>nj{(On&o* zG4nK12mW3?QU@NAFIaDII54O&7%|wP7VEg}hAgMY-2Xv@oBk=F4>1ySCA&f*=!kWs zlhna!<pApq@PaZe^p+&P@f28dvV&mY!P=9A!Vna<{~xg405?#;J8Rj}o`6d_6j9KC z!5ml##d-tWECQ)!XUhVekp?#fG>`xh&xJLAz~&&t^H9V=B`idJ0V8B~ZNlFbtT(_N zOo(_HXr>l!K4?GyB3_JQFR1ek5wB)NG}CT?#z~nV;`MA@&<-Z5`K64o;jRa)H#k8Z zSg?AI1hy3T0L2Z^%q_$mju=+RwA6&Z7f{^U$rb?#pMNYU;uD|;K7#!Pt~o&FgPMV$ zadXgc8`QmM`no{}Kf?SC?zn^Wfll4afOp()aDY0*AaORf><VbCvF!m5gMdWY**`Ec zfQCW-Zvn*uT%3*lV*_lMLjpX^0a5*lVGVpJ;s$8sAM9r~_RlupVGfWB;V};yN&#(B z0uB8@cG`m)z@V681L=af97nnW4J)QX!VBawc(_2r16-oKVZFho04h-!!Am@uSd^92 z)R;^`3!ESgO*7DB6R6?C2AXbS=DEk{xOVNolNUfG3d@2&0qJ`i`p)E4-sq2+0U14H zQ#kr>?wdFNrk@Vj%&2}1J|?*S18hu?ff2L}p7{bt0%(q05q5MgJGeI~D#++ib1W}B zPufMu-ncZK?Mlmr2pOI;Y(iy4KT{xQM1!?5Gl)RebqJ#yz})iZ$PW}V7*3q{#emhM z9*zVCut~zEjG~O_CV4O|`6qyE5{t+iMus=P-k_TG|3Ab-;1t{fYQ(b@K(}yuFfcG* z0E@SxivK;p;R0?GfyJ4AF|A<$jcZK!y8tva!=MU2mRU(nP2C(^eVGa>gNCzV9X?Ql z&(v5@gpGw6H2Mn}76vbbWOiBoZLz@~g{0NpyFQ6X#c!Op>)*}Q;IYk(@lp~`HvhYP z0IBKxcR_e>K#Nvx;Fbf77FyNu8yEvVykU$#2pZ`8dF9y8Qf8l~FRPaQn=s=)!<+?Q zyFt~#-v#WT!|sF_z?Cp)jXdg@2WWPJRA;l^d19T_j~E8|n?aH{Sa+O29vS(rK$@>W z8R_o=b`@}u*aeCx_J2%Y{(~nDK@kGZkYI5(_*f`d98}~&#NlJQU~y293lT41f{rkP z#5pyX)R@5H>_3?}7$8071+0*<Q?NK<3>KswoUtL|DX=0PERL`@7c`d4z{qfe0kRET z47{xwv~3>TSr8HxR2Bra1liaakGy#!Vs>-u+&9f{_AW2kp2<At4`>)ppuD&C-~VHO z444mWKbf@W|9^%Xe^)^Eh(nG#VJm&Xz`*o>2HXZI+;)K4%jov}y~138-7co49XlA9 z|Ihe)0AwG7AcF?z07dYDTxdIyv3kf<QIuuR8^rKgLc?DUG(UpuhHg;?53sN}VDmHB z9ZcXbgdCO#I*D2tG~14RTB0!MY%Nh^jBwq9Jc5^L&++Doh}oTWb6z#Q*|Vf@V;UO+ z%BbC6nLjCP3?EAS>;L^f0t)o4r<3+DFf-ivdw>;WxgdiI=&VM}Kp@sVENf7ML;%0@ zkVA)U2@y^OjeI`g1f9qw28u1v00}HiKqtt9>k3gpRwYn1Vho+A5)w2u78PJ(xPh7i zS$_1r?0l2ZX<d80<;{VAJ2)8rLQ~@fa9V8plOof~D0O$if-O57?lAsfTyf#TKZU=m z{=EXF_<sznE7(Az(hQ8?Bkh#g*pxxG3K|Q74?i<w*#k-qH@1ON{Jv$S+cKF_nCJXp zVERzrTg%9Fl=;FR2T+P<U}UKHdw{KkO$0RLC~OLfV9=@xh#{Z_y2^rZv%z_(LfTUW zG^(;^MalL|kR7+S%zM++kRYnT>TrUS88m?M_XNo3Hs(3s4=@{4^wcsk9%J&Th+u_S z#=d|}1T=()%`!;63mV`7uT@628WgsucEg5sz|Ijd1G@t(hUt)>F|Yw0koy>?z#Ih< zrCs*^{~vVb5$g)jnl*57!p@fU?*eEA5Qca$L>#ofhIIwF&IFw{!wx#<0;Hbd#y=KN zF~Ot;HK&^mylm?K1W>_*q(0*x<ZS61|2R<8cR|+z+<=|10WpUo31SX7`>y~k0t1UP zf!x9Pg9CC(8Tg<O<mD4L-jui|C%d{PC$lm9Vqj;8b8?CUVNk+kU|>AL1{%Tx>$>p< zq=JDN<W6P*sCl5%bOntCarKgJy!n@d-U$Mk!jA3CvkBm{yFjgT(1Lk(4o;Q~1`|lQ zGgok!FsL!DumSD#%>H)<)EfN1<sS=k4|o!6IjE{*o4^8|W`~HgfvOg;IdJhA3=GU1 z2=(m${@wT=@E?3;7vm9d6$MeB_V*9Sd{8(ty+IOB`3GL>1B!2E25?mhQJ?h>d>#~N z@f))WxOEB<&xP(4-NL}Y^Z`jc4<ydO^#9G@6^wVl;VS{!i)btei5D}}t=l)=>_Oj@ z4GO`(E3j;~1{?VU>_zY)Tc9Kd4M1cE7egEjBAF&2d9a!pvbl8w0|V0=aCZpek$RRz z;O@{31_q`MaQ6Zt-oVlT?q00;#{x=VOlnM!i0Ed442*%rks<;t&cFyduLGR01Q-~E zL5)8)WhEtLQzIkLXwQu|iHE1~NbvB8@Z_YhG5nm+ccJJ`ed+)I|EK&tz{~<R4cr-G z|M%|-=rjt5IM~noL2C`!3jTm<d8ldz0Z{WA!xqrK2^5?D?O`rJ*v32oe6alr1_rRd z*g*dJ{~wm{nb??Cf)mJ!zXw<*fCdym@(k=uhnYa<4T8@jVf@13zyLlj1jBCROV?1` zfXIk2U$Ym0vLXmGfK6plU}J!6WdpTM!81CFqKe>a&A<b!pc;dZ33P-gV@}QH#KPSL zOe_9Ictof=YK8m0F-@K9_~!3{#HDFP%cCDe+G{wfciJ<4_@@y%uhxUf0hFr#{|7}5 zivl<}!AmRI3K+rr1OCtXdw}T=IMsuLpDhcT3(>`kq2hP`9smUb6C2ZEP+)<~MdpLr z3DCg149dOGz+(pGI@T*33=C`xTnu~+42;a671qk2no*I_oRM)0iviODMwP!NBL76* zFg^LZVg=J3CIdzlrZs<c{#*f_{KoWS$sbS$3)GU_!Xd-J!ypG*fzA$U^?*)w;$%W= zfrzrq`1@qXn>Qj%1&lg>moUxwBY@KKU^;T*9}AnqUmm6{e+&LhKyIT)RDheA5g->c zsWF`f`Gl>U5xj;FR8Fv70oNB0aag?oa@ZBn3R9^1lz&^`^}-c!IRR1M4IL!_mGemA z97!N?24)70e+;ZDY>1E&1}#E21}&CWWMpS#@nA9doAB=r(-{%QH*fyRFh#8RtHONY z-<`i9Ojnq7K#ThSax7s6o!JUHBoefsof*;|W<2r+6pkFAYy`?n3&3Mf?4VvMqbbOE zrUidv7*D)mW!UhaVFL>T$f*DS|4(CJU}gh59~`0V|NdPAEi?Uph=GB57U-l{rppNo z3~cOs4}m&}H~t;~6^aZ(3}TQyO`rq}Z!Cb$)DdJn0&W5DLmMe?-YfxC@t~O;P{qFl z=0*kw(3yrDu#BMyUN{76`@lL4ptV%sb>u89e?#(i6(nx1iJzQm`X(Sm%UM0fgK5RT z8*i8`B9|7WElsq_ni&4~50i{jlD4~+O$75BkOvu<{xA4@fJKCZfk7E`mI)|ZgPaUq zo5ZNj2tJY=e76#~y#s1x-vCcp#Q7z(+W&hogVDkux46_iZ(U0A)|%o)sd{hTFb4d6 z;+h=o>JgCT^zY6bMh7D=W67u`c{xjBeClWVa7+MM4N77R49rs?VF*rQ1&nk4+<=HP zy#OaAaG0~D`~x4#$&m6lg7FwUF4)-0&w&PfK=+JQfjjG9)$BhQA%ii?{;@EAgR2G| zf(f3e_+Rmlg;@c#n2`yjUY)I*r4MX-?mzI7=>Jv!Y?zf0`Z$t6^8f$;pZE6y(?5hb zTPI5%_#{>6p_&Y!Gq^x)TXQpTU8k(1W_sg|k)M{Ppn-gx@ro533_m9nL@_aOvYz4O z-?4;&>Hi<dah%`-5*WaTgQ4jMCCNL;X223Bib?<f|DW;y3p03yIOt$c26j**0Gvuw z{(oTxpLYip-}@gl%*Dju@c#=-3pjCsj>JbvT%xFn3(ZBi658K4$j(Ggb1xVf;7Jb6 z*`V`Cp$Xs-I11ni;QtqB0)U9a62Pv%5#aMn)xh3iV=GqyCxHK7m>~%OtQwvGZv10G zQVmJ~Przk1A_0KZgAxE_0T(O*T=-`LI^C2BVhcM*5(`A%m%kU7L%<0Dq>r7gljR7= zJO-3gR3R-)jve4-f}j>Av`Z=u?u9W3!aDqjp1-KzjVB@o*QU)lZ7E>=X6ZRbwl}-# z7H#^lsx4-IA{)bp>dwyU^4@>{|9$-ZhlOR;q{CDHNU+E>FHBln_{RaX(&g^~uyx?O zt}r^Ls)EKuxPbi(O5O022e*rmd!$PUI**az#{V}QJJ=Y&mw|!iK*8NWb#RZ3K@e26 zgUcHj!^~8WV+Yvs>1V*farWO&l;HRU3lK&|Mt&BS-+xw3Ix>a%#qTH03zOCrFdu*i z2&jb*8YmDnmSj>k1>2{F&sz2?PjK7&_W+Z_-vb;DglvZtUK~5X&Cd_uG@Zhv15PD3 z7#KKqfLkCC@d9Q@F?Hh~3n==S)R-XR-JtDEkW|DvgAKG&5_A$CJQh)hj8MliK*Km} z=z|v!C$Y`|50rlgw<WVHpmi175jGL<xDJCNs46isLsV6u8WEOqknCig0qRG?DzCp1 zXrn1hDk8v(62Mg%R_8$C2kbKeP>lmhu#hAHy|n~~#Vl)37VcnJj98@u8brbf1(3D> zR<OSSXG<Ff236452dHHZ8ZqEwV#loMaJvIEVISvb5a4RB0IC0Sib^dJ^&du{OsRlW zhO!2Bidd>cW*2NjPT-a?>j^dy27b^4063VG5qG<Q>R~L=!^rXG#R}*-fDLcZBj?yP zW={Ax8%7X;5(;RP3$zf2B^Z`wS!aOLGAQ97X25RzjR3_UlNu95yc~4mEl58D1M3WM zYZ@XBo1p@=4H4$BLFd;XqM*T8h-%pU7ic7526(U+A`Y7e0<{>C#5t0n^FufOUO;gT zY#!>y-vb;e;EoK~9Hzsdjw5L1@&5xh25`X2BhQyYR!m|n1N6A?@A&%ljFuNJFj}r( z|L^#Pd1sQ6&ddXo3da~z-hE(9J9g~ftPk)0%{g{u5hKT}S&Upumi+rRYu3LXi@@6n z9<VWRARW$!nA*o-C5}yj%=nzrggzia*llb+=+m;Gk#<nvfXWJHc5v~P%>X*!8?^R) z4I2ZS2e_@G%)kIThYzvB3A;ZSYi6(*%=kM8PXLBwu$g51VjvuhAO}2Po5EJYz`+1n zRcb84q-<(rW=6;rtUK-;|Cy2~|91i&cd(T_`S)c-(3GF&2s#BGMhlqKz+uG3mi7hI z3<0f}W&mXtuqY_AKrS1Dh-W}mgQkliCoMq48Q|i%4B!D5(0Wcb22e8tYEB-CcmP~| zDq{)*=!89pISBKMLC2MYXM$G1lR4^oMDRg1=m{Otfd@BTp>=^c8ynsvHwk?Nhj5bn z^99TJ4#R}ME1*7x>^MOU30OFTR+S@%PzgLF>e*(2M{>X+0czPpLXLx<Edw^0%f`St z1E!wi5L*d@2s|DgVB%~A@ckeU*cd?T%Aw{6K?@p)`Ed7e>|uqRu>lt6+yOI(V?VO_ zpb2%TISFhf46sRO2GEcwR6K?ia?Q$we=MLFgPFtD&DH@fh9Tzjz{MNbD!?ODAn`Mx zDQ$>3>>n5fz*F5vKzSH0&c^<60?bwo&{Q{6^(TfsNTFi^HJy$9vk!Etn+-g=238H4 z>V|F?M{?5?aBAlUmlG)rh}4b{N6s5lKx1so5Y@;&m;x?sAmZTC1{5>@SU{PbNe!wV z5fW?IAbE@n!&U}R#RYOLNIxh9KzEFT_zdhEXQ5|qgF=jfV*}K$?3^7;3=Ava>Jj1# z880wwz#`tuZ~?3ODGYP4s_$pCz$!kC;SZAd6u5ilGR81W0p(qg``JWbr7dX7G{JH% z>Gv5XDLiEybK03Rf2xQs-@u`1ib#K8KI8yANGLimu`$EbKNn~xETlYSXG&p#ToXCr z?*SeO(2^)fEHEDi5AiU82Fch|z)f2<1_ohJ(-t&E4XH#xD;(671)0&7f!%l_gT7-y z1ZBqpsCE7YX~lhVz1E*AtPY^H_DE~*Av1Yk%VA4O89`^&8G|;V86z#Sz~TfJ8^#L@ z{u%tWA><S$iNAklFtPk`;BX+`MeI2YybLM~prcTgLASrdHYqR@6+Dc4o?P6n?<pXx zA(&P6gpdQ-7}oD)XFb8f67;=@7&n4ic7G4BserS)H8kVB0Vj<cU~y0p3K1`0f}9r$ z76&I8kT?^=gue$^;rqTAu`ZWDUun$pK}0HH6Jp`t`dBHMCw~)=mq#36*3qg@Mp~Ts z<@*7qFG%b5z<a+yO+L_SZT1|<(oxW<;uy;{ki%RQeKj%boi~_nK?FF;g5tlJj)H}@ z-(QSn#VnwZVdr2IVGv?aW6)&)-M9u?N^T13pMZMCpdJ|_>&r2T8-oIm6|^*4&=@_) zaIPjVoS9@R3|_3wr1K`g13ef)-L;ey*f=B;e95a-c%&S7$+iOH8pamJ4~z=GwqOa} z6@L$aZ`+0>U&!<>$lc%(LqTQ8v0tFg5TNziEaJw3j7HE~k(F3L`%_rhGmv|g0)GGY zo<H#K(2Kg-=Zy9TFEKiMOZ@G4#3)kN_V4x8egB@#S->d8!SFo>sk6!WV)f41jM9wl zub(j1F-pwZwusT@$C*2frOzKRmOZ%kujk#re|;w)-D>6=Y!cAx3t&SdqTtm{Y@neS z0j)b-Qhp*lq51{uQ`s0^6!kGNePHH|U7Yd91k{WCdjPB-6kU*2|EN&~%C4YcT3G&N z6BT620L@0j*ZBYQd4ggGWJ&)L_%JYN&H}|&(D)t$1ISh;HD*^(_5+RY{RiFR<naFm zvjZCg$Ty6L!4*hP+RRjt*#Xrm&}7JqqCRFuh=-WZFfcJV{9VD4!v;EL9&}whJncab zM_|Tg>XVTEEbAvldHj0((mqE~t@yhFbU@dE16g@YY&$sFIU;_6f)L3@Mh1_+2be(9 z`9h!#Jc5wbQS7jJeWsE(uK5l^8bZ?kav{^poc|tRTjLk0%F29!lN)3*GzwY3Ifg+I zV@ns~kvGm|(?jI^rG+$v9P(XRYCxL}xH&H{v#Lh=Aw?iFgE+YI5d@d8Xi;|K%^Ngt zfd_!FL=9+Whxq}xWCTSG8(Yc>P-h_NZv;|=v9Xn(0f|mwU|{|N>K}unk&UewbQ28t zb}I1dQ?MvITQv)KCK$8{hxq|$!V)T8&pHj<%mod2-vEsyLB$IgAREM%{9{3~6Exll z*_&JNkA+17+@S!u5H#KizCM>N7v!e@75{9Ib#WxIfMmf-mRJ-pG74lFAS9z`-syHo zPzjK9)`8^|IjIx8{BeumIR$J0;hX|D6iZG)u>?m}L0AjPDj;i_)R@DNvI@A-0TO4x z7VmHefa4v_O3=t3G~$sh0!2KF0yyG979mAE$Qr2iND<GX0FHQwT6n}GnSc`UEDGR= z2dQRfLyCCFBqqdbY)BE0WG8CGD}W;&WDb^yN7e<8_$mJ%u$r)mfcM+5>oF;VCt}6L zK|A=tB{}@8L^X9)(4i-wti!@8aYe+pCB1idL&uYIr>6h=wE6YFGnx++Hcwo7xS-@e z!{wus|1WyN$jY+9#x&KbF*zbl$-?OD!j=maXO39Z)bu6?<VxEZU7p``qUZzz6T_5$ zHefdhfEHVUC#7I@A!u5Kk!WX4IpbUI04}B!SHEOwA<m7A1^-e4Lgks*&Tz6{I>vH^ zI2Zpt0Cuq;=!7svF(EOqgT=u^n`-Ke#5<X>qIpr8r-oUoVvO#rz=-ZL>wkAxVu*Bk z&WnF{=2|<+Ezphjo{-A;hj|TQ$N&G&0FH8SQceaB5U0d|ODj-904G|AXcl;V^_0IW zKptgMV+M(`vz0PJ?plYK0UCw?iL<d4Lsdths4izL0Jj?<szL2WkZN|e0>%{(@qa8R z>bpS~-N0N3?n;Bzv+rk90S|tF&EdQOa}E1Tm^jEBa2W|w4?4gUe9}3>9+2O_?Ng9E zBSX*s2dp}5BB1@s&?6m0McCL`5tj{sjxGhA)n#sO20Cn3S&5B(g#{zalSTh0AGz|M z;mP5p6Sv4e(ENAy&8B}Jr=LFiq_ci^@2tu4EGw3rC_2$J|FV&d>Eh(xni`8EXDTkV zEIeyup_CSp+}INUI-Zn)flY)%2C`t!1azbX3uwxfT~tg6yh&8q6tsgEG%1T<DY1zP z{+Q0ly>1mF-<&NI4*#6;@5`14Pjcr+T-&y#A$4-V{-v|evVK|pqqX79lJ)P6M1=o+ zy|(E8<U0{_Qs$j|kiIl#!ik-efAN5<|Nn#ybhtdI^8uQl5`u3?5)}a*wF^$f@NBQg z3|e{#a*Pri<C8bNUuQM_SY+j6mDt~(*!E#w?_-+;-KkZRmL*M?kYp2Jv$=7~9M&zr zd|0=fVHE00y|Fs8BPqt#D>tQbMNQZKWH+q~vhEcb0Tr1gGqS_dL$V{L^?@dFBL2T& zp1@wfzzjMa6x9DklmgI9Wy)Og=gEsV*0Cn)M*Id6VNNOgYuOl1oM0^Y<&l!C$jN+# zQ#fox8v`>##NPwVGuR8jt7g;~7*x##ML=s2q4%VlnF@n$s0B@QBIj9CrZw=fbca;y z6Bu^wF!)yj9Z^?}4q#h?X)_Z;#NP#E`{Mf_WM42bMErlia)rHsK?yV;06H!a<XUhv z@G*f_|ATk)fciChOs1d!W1R3NC%`$?Cqq5CWlPnJHJ`3E96Dy1Gb0`}NzY{R=Lvhk z&nK?Q0RgtrhB=!W=j?czeQH{8SBg1kj-I991gIR2`2T<-0~`y^poJ2Orr=lrwGBZ% zc6gNlYTJX({KeRG4t5?J8#^BpJDZvsG{$lq!cWJ=9lBmyyF3K6of*d-?5O$4-jPB5 z-9Db1PvsTv%!9_QPIYWUO3KXe=sAh)r;D&|$hOS&vvaa8jR@@yW@L;%Fo}VQq2S*H z<`v)p6;TETV^c*@X3#V@XvHSGI;a8@6BF%WmO)ERCr<pEz`6rD7MK|j>5?6EbS3D@ zMnSB}CxTf9Bgrs(?AXDy10$jQ|IZNdcLnnq_5vm~X3)Kvpi<QUTpog~JHc@TCeHqY z@fbr2SbYR2VZp@N%Asc+fz(gn1eL20a|#$Tz`Hgh{;{B_?`8$B&SZ%AXTu_Zu$LnV zCjR#V^BaUXTPG{{c)b5VK-m(>{EUAUjG&GP=(wLA{L6h8ym=#F_GI0J2MurbPL9}K z%T&VL^NWFzrF3yUBjXX!a^DpvqIQAC8vegw1+Rc)ZU)yz8Q|e{unpj$LWn5*m?3rn zHWvm?(D4V1#v*KNkVygTOODwbE(Dy|Qj;nEF9FRlY%Vj-rZ2H={xbucqd=XGzX#YD z*ciZZ4xX$A<vug;@?-eqvfzz3nfn_W_Gi9%!((@^q2aDQ4`^8GPf6|Gtn9rtAd{a| z*4J15xx>K3!0`VK8)O|SXu&>c-zN??ANgs+askb`%vW~o__qLLAkOdu4O2rx3UZnj zB>Z5apy>(ldM?oXJZlfQmItW@O;3Q=gF?kY(-RPJ*lAi2a}eU-GvQ#d20Ath9Bb@s zg^Z9C22#I<12k;`F(;KV09<o}wlORLEqsKkFJlI;$b;GoYDYlS!_I;OnbQLv+y{%p z&me<{!~Mm<$>sxEUkfpZ^9hq0#C#5Jwgia1pwz|r04~l872g692e*O1=CgrMb%Xf} z+!%+5!%iCm%~JLtxxbg~0XWB^i%(#i0uldvffZSOCtC<a9AqzOu@lstdsra7Ik3Mt z=fK?=$Cdz|JU}<Uo2>+44tR(i;!fCUX*d4AVHW`Vs}0m2VoL$t9|Q3hk~r+lHLz;1 zDG=4DrkF6PF@waxhkSv|_{RdueNa)*J~&XR!^n`pz`%NdjRADPIU^%v{T}Oqzb8KY zJ;BJpxI%z&1!y3Gjp4Ti3us6NNj2;!-2^6!4@?&S8U95G{EGl7W;yX2bo~)nDYy^- zU!}^H9RO;mCj4UoS;wTt3=#!719Ss7*cluX*cd=7vp|<4f(!>?&;^N1CjWGPF!~5E zdi-H@5n%NB@lWT)zYP-qHn1`L&S07GJBMY;F9w!5zd>bf0s{lb1aMmtvOqY45p>Hv zit!*{f{X=WkQHou7_a>Jw?*LJjz9nQ2>jdfgYn7>#sCS%0I*+X{LWyR@;ir(;dcrP z=#oT;1)wAku^<aN4+RkiC2fd!8YB419Z>LcfLAy(L&Q@UAtzHo)Po9th<E`r<jnYl ze=MMIU{Zss?`GctPBLKi;4BMKUkJV^h>@X!fq}JxjRACZA14#!rc*^mM#c`t0>%PH zfqw#wAO3y#H{suee;*iM{F7i~_}jx&@|WQ+15?P~HOvgmpeO+w0S>c`;8X`|-=m7N zv1ROlt7c<hVq*rWW&&^cs9+Od5CET+%V^9f$7BpT99~ULos(IQNg31%1|8tfXv}zw zsV0wcnX;L;i<MQ;lpKqHkN$Zv#{H|&GIn*dvMTD&v1OEF-0|!0vcCsdw*1-SYA<j{ zvnZd*=FcwXXG|{w+yw6ERG0p}!EEw-83Q9j!rud+lms461K$c@W@c{A2ueJPjC@Rt z1vYU)HeoI4+B)!*%*gP!M5k%>-vh#&7sPlnODotoK*{>2Lit=D24;wX91aY^4Dt-x zpkqQnR}G*T3Ym8WH{RG3k!Jq!SSE@-*N@e9P6zbqeTWCyv)D7h=hCBk5Zs^>hm3@< zGqSN^vA;vTXmyQWr?G>2xK?bA_1|qykI-z+DLCJ1rnN*=e!+^L7dEeDV1fhycsqbN zqy@={YAq;SS=anJz{r9#Y*{>Z?D$!MC4B$?hZqko-L`?-3MnO^^aPGZaGeGc1=VSg zrTY+ZP~8O)&xMwS5OGk(fruAC55@tDgEI(3ypR#H!x=1&WNRAu#$~W5xJH1e?q)yp zAGBc)EDkPHA>s{e4&doqusFCd1BtVN3NuIyQ85X^g9zd2JQPnO#L)wTjd?qylmO)k za0L!>COcayqYn7Ma7bAUO4^|F9YLpPv$3-?DuT;<J0_M5@c4um<o_9%dUPAta5%u? z^5+jwxz6^WVh-pcSC9Ws*rtGLcoxW|&AHICg(2b&OlnZ^3<eGG%5sQ!09-tkv4u$h zDar9MD1maE9+SGdxwx1ZXakBOX5wR66VOo@r6@GV&T&<vjZoa54!FZHGr4wnOO(Nl z73<v;FK`OOe1V+f89~$FtO=09(-`TDk~Pd3f3~pHfDRu)oGtSIKTJ838uM9DLCOA) zq2a#*10%zNe+O7=*ccc<gXE^5F>*!N3D2ODl37;BhX(vP!<_JE0?UFwOPClAU;TH$ z$06SpdSJ)P)g25>3=94qVDn&OV2}V6qpHS6;3JR0D?F6JCn1}ITAkq2MlJ-@?dr^m zj51SmvXF?;ost~Yn3hyLC(lIWAJmdN!Oc^egGH3Y7U)KUnb5;Q7?>E={9VBYs%F6( zLqH4FAY)&m;9&z(Rir>*DS2a?4j+&EV}S^h1Bd~)1DN3h&T63WVPk^~O|4;IU`+s5 zFCbCq@Da!<VDStFZqWW1<ltu%7B&`TRAw|qiibZZE?ju<Z_kZ?dk{8qWc+)<C?W7K zfpGz7Z4Ja8P|Xaohm9=@JgBwi9}6goVR6O=8>CwE&jwkXBMCHk1#;EDA8Z|L3=E(n zU>Jxy{)Kr7-h*8r(GEVh#jW#b1Fmyh7?>DdFff3xr3YWMAZ#qCER47>%@lD@+KV4Q zN|*$0G3w2k^Y7BFzaN+c`i`Wf9qIe~0kk23En@z^uZtG_`#S$l=;D%+<&mI4BL)W6 zGmvY#8AU<2wXmM~qw<4;;m(gcpgk6#6JXdiV0$b;yIoWj8I?VlJ}@#cefU+vV)6Hl z0LbV&tPdE-x+;+M!Jh@J7DU~b#zNXvfeg$H1q=+V4N%8(Lk0{$o2x*$fK}jk28+b+ z5|$r#?l3R8bBDR%&K(9uhCd7pY+pDaZC*iTK~RXWefjbG#}AM%*;T-y!VEgGgUy2d z3Ij6(JA(iNgDNNof-$4ADI=q)F`LD&4=fjcGcecu`LKqm=WofH7cXA0y?OECkAln} zjSI{o%rYR&6BroSH-PVk25;M7gdc|mTf?9V9WYc=R#svGjbgHZ*0Zv7oO$(c;^k|M zc~7o9Va&O5@!#ZsUT4<*@9z7v?8b`!3={ep85w&%F!JqX41Vx{F?9dle`_B+`nP7^ zljgSz7QAkRkZgRQ{TrZbZWtKYXTYwL1C2;Au_%LG0`4HQ7#ka@n1Q#}ur2s;^Izv1 zjW_=~Z~mCh$hKT#IV0Qjf1u>@=g*&iOSWubjQPXN^5@UapLKOVcQUhpEdU>I557`Q z3mgTeYD|JALf|=MAt6x#CU#NKML%ZXV;jMjgMsFf#l!_yFs?cFto0M4_pxJ)-k(~Z z9b;VcSEJ=#+p2$84o&>BF{$ld%N>D6#ubdpw;6L8xh75e_wC>0+yCzVi)a+M!zf|# zoYC>XHO8njr5FFbUU=Z&{^u6|K!<@xFfefVfX?S<e#8LY`pUWBKX_^P{}T)h><2)X zb}~N#B>=Ycf8c{$K;j$<95M`Q%#SiaH%<HfX8~W?X~V$4(Ez$Kllc*NtsXn)qW={P z3=GU59b6t9G7MS_2B4V_MN>s$J<TYp%xJ2p2s(ZYG@@l{%4|V682-vM{5!&^@Na>2 zVL*<V70IE(<|D$mMW!I2uS_Szeo}JA|NkH#aDr~yQfGbyy0MA@ak=OT1_sVE5MMKi zfa*HV3ID*0NWgmjKxJIOGSmNoH>-kWbU=45Fh61hbuHOBC;j(fFo4=)0hMV0>zRp= z;g|z44Sf0n=t5FxJpGM8iVt<pPG->kjqDuoc=;QF5-%VX;FAg=@dL8;Zv-fQnADh` zgYE2O1+UQif8uWhim%l<J6RRLDqvTuf>a>;9;AW?tO6bie<L`NLjk112CM=e8h;}= zkwZhBvy&wUtO6b?e<L`NLj|M)l(N`4p`pXD;%@{fOEIZ2gEz5ob~1rZ?Pg?vTyn|) zn)MSF5HdGaG*uL2V*}+V&^-y@Jf@~Ds3@u^DkdZ-!UQ^sMumxK#j|7oLYQuVG8d!H zp-G>?nTzShzYtIc{I~Vkv42}XwKAVzRAyY!C~)WB3ybIf_8++RZ`qmBi;Q9m4lp`C zw_udGBT)A*^xxgv|0e(YHfa(g7h^61BSQlN1KSA>@CAp8f{+W@K<OHE;sYb(q&;|F zMUYwJUx>Jau8=0Di9vut@-$~g3q~7@`bL8Q0~1a)Q7wD%e*w&L%&Uww+1Tz#2;|QG zYr%A)u8Uvv0UMj9@t?3ikN*Gv|9}B>t!Ds(I`a=uS<V2uRD|I_=m1}^Q^3nLK|#gN zmcfw11RC>{`MZD(w5L-AbO$4&91|$-fu<)-?3h7)Mn2GqFOV$;YU(nKJWPB1%AF&Z zm#jM`u4C`7&vb;5=g$QrFAXO%GbdGd6Ap%-Ejzv~bI6(Iw{DSURBp$*Jhqx2b4nKG zYZy2<>uO{#tbi1`Y@nTsd<@{-)t~|pUZ1N%t8-<=A1qh?s4#KdVbq^H_us`ke}6D> z^c+robm=dse*W7q;oq-KoBn;6b)#@|%H*rCx}5U_XuQT)P*D(se=y(q@kfP&f$_xO z7|@Nd|M&b|0jlqr)R=EEFfgdI|NHlc!GVE|19T-16NAS;0d~-4OMd983NteyVPTL- zpqfxvQBaYYjfu&l#icToPlx5en>W8=4lw`t%cH<!6ZcPm>5ScD##%--=7b-2{#r1; z0g14A{H=NLZ|c973``&!xKzNku^?nGCumdxe6bUVVBPZL_XMUHe-|+7Fo`g|VG?1~ z`8$Vc#=j?jul(8Z_X4Q;1z{E)<|}_nn0x+c{Jz25^9OVSzRy1at_;xpI12+P7jZCi zfFhWY;llqXY&MW<Cs{#vOroAq2d`O`*x1;immMNz>zG)WJC6N3y_Mq+N5!GCmNO*< zH|8u^QnfQPW_e-O?lRU7Y}**sH|}E;n6!2Fp<7%3osjAHyfC@nFJ?(j;o77-5esrM zW`+4qOk4Q5W9F}kYrp6VDE#|=c=^BYGa&H<PH{Y-t-s2!t-p+ntZV){{Q2=ChuMTt z<IfT12<A0^LO2-ybTC)^srlUkO*Wv$2{WkC!DuW9-FXZi+ffu`nsMjOzl0x*PZ;ko zD*S!I<nZs!KbC(ytOx#7{5`?J0J_)}e92SIAFx^fGT1-|w+VtSk!3VhRDdqrR5ubb z6<|;V?P&%z_Y?)0A{aFonHY<YFZg%;Jj;;>|4#k;^ta;28>S<S7JpLyZDC$==g_|y zzh3`ayX_96+%HA}MvFf&91MRNm>YgC`4a=V%Zu#+xS7LX44MK3rzvGYMP?=@Hf0Z+ zhCX|46_y7-{<0|W#Jzd+WC>#)qaO2}9}Mg&e=hvn_s`}XQqz*3L7qXGf#5~+pt(RI z@0Hj1)j-Nc@{ARCK;!;D{t2*s-~hD~K@CfAUNaU{6;u}d@q>lq$KM7}d+`ao%nybW ze?6FXfC2&3ErtXFD<}{kBT|f@ffHrMlm@R<XEBApHjF$>CQK}h9Di-JvbWEXd0`b} z<in=$n}g-YPoIP(Dd2!u!@<L$!XOCQ>dOc(Hx!j12Um$Jfy;X_V@24RugrqVg3LP@ zU7j!|ojUbz-jjcOp8T74>J($rlXdT_tKY9<bb-(+KiGNB{G0OO!@o)A&M@YD_`sNV z?#`rt-?o6xj-JHGwPh0{$0Wut-#a+KW!OI%a9P0$x(!N|Sy52gloc8d>_=q&GfepP z;0=qyn>T+A7@xcWZQ2G02Lm%h$3Gd)9B?_n$p9(|Kn-UU?W`+)J>YnPFoJ{O&Yd6V z<}fkxFfgz^0blh9x_k~g@oUFqF3QIYZoYyu2+xnKLoLB`ruMr!H}@_|zVh$<VwMM> z*8Ja)8Ef5nC6q)Th$>0&Rxt`ZVp{Wq;s1X|o__-D7r?~{FQhnO12r$0;nsn=V6u<` z4AfW#^^(ynWpTOlcL{cTSquKyFdt!>fZcXz7QX=V6lh%>Xh|a<6T2yB2RDn5D5J8V zG1~=@;X!k!_Pe??fjq@%xcIlij~`5HP`vc-!=t~T+p(BIdw)1ifJ0mobcs25S{XWV zif;6rpKmxEup1AK1_m6KFoO2aa)LTr+~9*VK$Qj<|M<al0ffF+a4`G;B>@lyZCw2E zPlgM0cN8lq5vVdN3o3(d4+QH0B_l2mnJ-6vw1BiSUHI|6;?7?O#wT~!RZz_6U|`@# z0DDXdasw4ow-{sy<lHu8#SW&J9wrZXMalrLNq2y*AVpNA91K68wJ8(GKVY-P7^FZK zCBs&ggB=Jn7t|YL+<@I=whcd6mcZ(0xWOzI&`uHPqH9nS0CbiZA`c@w8kfOXOl4pK zodwMu0WM!OK;0}*^#&?uMZu*kn=(>4foz9`MR0Y9A*TxSlfOJFJm%$BR<S<8?wu!Y zn;G318JO?f`E%jl?|)4{DzUrc2Ll5)Xy||)bg~8L+$vDx28ZoGez5HM?ZWa0yNw(S zf0o?&V}ae875|^G?ck7MU<NOv02LvMpqywXWNHdILz<0U(G1eb6ciPJv~yYS{MqtP zf{{V-(a#NU%Ugf0n{lE*<UfPRdPeJKzZi3l9r-u!-IsrR*RzD&x${rw#*1T&ZU>%R zVRYV_bE@wMqv86O|Dyjrd-Lzvzu4y+8TG+u|3BfX0QC$RjxsPXq_YMxY+z{6IqSf{ zz|QCZo`qoojSRA7z<Sq;(2I3J$4`L{M}d^s#-R3(B3s6fe?H4j#YCT6!ld!{!n=Rx zrc7Zp`M|X0j}4>5KY@P_*i}+@R9A0Icrc$)V(V5$nZ>_n{K){h;$IH<5;jPaj-4Y2 zbVnX&O!8k2H|WkjHRgL8K>gMr=)MhD(1FJsK)V<PO$8t!C9VisD9FMj3c5J~l!D9^ z*_c>B!zIjnp8uP3@*-ow`wNUN2f6?K;p(_px$NKniCtgjHQb%R&B(%Y^52F(Pnknx z-ZL&?6g<Ev&$#RN;(r$}bsf*%|8L#x1Lyu7+LCpw<NUuX3z_FUdBVWR@Z|pu4$w*F zR-geC1r-J+Q$fh32STEVt_eg;6jY}PiU_e7gO;2_7aOyQf<!oY{{8(I{_pJ4en!SM zs~8#jI{*Eff8)TvqmQcRG0N=AS(i4KQFy}@M#s(J6C)xfN8V+ee&o$0Mqb9E`-}<K z7{g8+{<repzm_xq7XJG+c_Je#W6UW=kspk`&p#~t_h`$%7ia$M+IN7_>l|aloL5cl zFQ@#Q@#5d|{R~VD8~#7waN&?)U<b_z2^))u8H*|~Fe<1p2?|1k6SSg4(NuszS&2bV zP=G<v$jn@vk7>h$O|$;}{db*J;NQ1@4d=Ep2EBaA=)dLH6&90!Uthld_nFa^Q9Aoa zu7l;WW2_fuZ92m!_nYe?V;dtcqYtAL<Mi7v|M~s9Jm-WCqaI__zv=&u{@e2J#=kXI zMi(@#K|{_H{y$;o;gA8Xfn!u)5CW%uP}@KdblxZ=VpSly1hj4ja^h$XqY2~O^SAz0 z{QL9e-@F5?XMP7{+}m`5k-64&#-Hs8t9p!FWG3F{koouFpV7ZZCI24%^ZE9WaW13O znj1PR{(V?*jM48*$!tc+yY)&2Vi$z$jTsmjw)}s>25RmrgX#nD`I?{=cWTPYri`F& zsVJi;Xi*wCXR2-a!(Dl(tl>;W#<P7(m>B-dVA=EcPRrBP37h{NJ-6-OxdTiL8U3DN ztLyXkmz`kB5V*7DZ-xL{!jfAJ>;Ju<)9?w@zG7ft&*G2)%@Tt;mY{h?HqbnVBBL?u zJeQ^OT@*s>)c!65-5krv!jvGv)^h0DlkC)=GeGyqf?6g2KX8C*OK}Ei@U)t#8E7dK zXyG0ki!%7yKNB@&B^J<*ZP0KZ^Mq<fp4<nFPV3^g{AXCm(tR@L&z;(TUpam-*Zg8& z?zy9HI{n|X!xNq?2)Prtq3XaLQx?e|I_y_;?%aWF3}d~((ZImWAjhBwIyYGz=>`ta zxua@K4C>}$3=E)7It#>h@X7d~F+ed^gFk0nm`(n<ocnia$r47fRVC{xltgqk{5$t9 zV+ErpBj3Um|1O=HbSx$6$h=915~2>U&-qs}g|X-RhJB1a*KRTT><Xx`sbN%MRH|AL z{_oSjng5*s{rvH7;m#`^&-$7e8CFgEHlgGFRM;*n@Oej)44R;L6l4|_R2D|MZw0c^ zixE=hg2ov@3u=UJys@!)(^G=J*Q<p23gluM$Yn4b41cEltNADJX92qp>Ygtq5$NqS z;9FMaGIBG3E=al0R>LL&%5AJ_(1Ozl6js8*%FKGq%Ag_wyxq)>$z0f&8FUdBGtYs4 zkLE3BRNLQkrr$6|<;0ym{B{`&i>mfyrEIClUsB*Iu;R`Zl>n33*A<w~GG@Gd&X{~E zdtddxDS!Sjvv?lbQ90$`uT{(beV<vq`?xn~Wb<D~&HgO#j>7wFHK3h|Eb8D!B4TGE zNPGj68bq8Eu`>}>9I-PIRUEN15mg+qGZ9rBu`>}>9I-R;K3fgv9=LlZGG;(`KB9`x zV01x<b4-D&2k&GA`S))GTMcN(CD>o;oSlq+K>kMf4~IP5pE%^<{>32=_csoCxc_m; z!@~h24-W@~`{Ch%Lmo9;7+~SThS<#w3U`D!e9tq;Ja{-F>_Z7p(BTN+@MMRCCp?^C z;g8TapAoia8f4!cm^(PTVY|w~_QAvv`oQv#?J}%SIAj>4!MB{irWZgbQLsZVJAoF? z!l1iOMc6<Wtb!T<(3PLyV{Xh;n2wyd#K>8@=--oV`8PuZ5;xa0?MaJXT5zPK|L#ox zhJQcKloXUK4Zl1yZDs14xs1Xr3pV|GH(}ksmy3f-IT$;VmZjuv$x7K=$l?(*`#@^l z&!uM)W`%Wa3z?Sm{S1f6yk8Tb6Xy+V44{UKFnC}?P+2g6k%4gvV-F+4-xqJ#7=9P9 zO!%encL7rZXqNc@6V@plaSW;q<_rvsCMuwjMaVWV(5a~6EDVC8BH%g(bfK$|nYpQ& znlMNP>^abkthy2#8zTp!*teY3u{P(@DjM{g>lpPJMd$y!e&Nc$t8=T)R5eb|30~XL zwk9ZHU0KK4V76-;udArMk+6t%R|$#I%lX&v?~Tm4f7=d#nh7!s7`e8{aTp)^(=OBX zyu15(mrTL!g%bU*LE9JqKVb!xVA2expo>RDl|k1ff)7A7HwO1v!FSKHg7@1&mybiQ ze*$ggH)gtUVMorquuJP!Y?J%Jo3iXd=ca$p7wT6(W^BH&{${b}6h_YV>lxYS3;&SZ zGke~?rOS6PD-^hudgin=wB&54b<RK0YTH)g>EM#vWZQQtC+m23Mnh|M0%!<r0?1|H z;tV`+&vBOV3go2h|4&#qu!%58gF+WHhz43S4qn5<2C9jSjf4b^MVQ!Fm_ZxPpiUMN zRR&FTgZG;l8;dgifx2=t*!5?ZKY#cpV*S5=*I`ax&B(ew@=f}s`O|kUUA{vG>Pm>i z8J!s=_y4<awSegl)YX~C{yp8a=6fs1;h;rVV3&h-0I+~u4!W5TIgDY6SqXGS1-O3z zigIOTQ&G?m3?y+Q4gT>lDKpz_eq61;@ZXEg9S@hK@cxk7wqo6-uz5K<b}V1IZ{DoE zl0QV|F|w~;&&WANv-rjaW(CiZHrv({`OdW)z~Ss!>Q>+|rz9b}wIQSXcvjA-KHH{T z7X~JVhW}4kK?l-GL+%+?QDZVS77&6CEQ6Oqfrp-1m_e(eK$#JoI+RU>%v6jOSU}fq zGMlXa_iuf~n}^Srp9Q(-0@S7L7j`UPx?{%tiy3bs*E6!NW@Kk{)hxatQ*f2hVE@18 z|Ms@zfLsN2DAOOX>sr6B*~BP)Ec5+Uu=_v<b39=O9aJR9pv&OSz`$s#3U0H3mRo@9 zcvjNGlH~?tj*xD!mx>CHih86$QJaUz-xW|t6B)cO9(a^(Nn>SRAu1j}H|7o05BLKc zRE&btGpHH{r3!Y=4#qvu>g@?Dq#A>WFJ$b2Zs121?`7!0s(uPX1XlI^3}3K{Ph;4D zBn~RpA@<H?lwg>`z{Jq;_XDc}2Lpp5_*^YxQAY4=19X=bXrcskEs?q!6DZr6gRV_t zSyAy%r(j`tS=x?OhuRA#*tp~;)*N|YmO3f=p9qV~?>!t08~)CjbmhjZ^l9=ICQIWJ zZpPQRH0i1N$*5Q|@^7iXaqLJo(-P23_YKG?L7*cJLBkl>jv+dNIC^OJ(t?fYC`Up4 z{J_Sr<qY&JbI`Hc4NPjF1BbxpG(b)i09yfWH3UOi3ydGY!HO=vknsRGn9#+084h4o zKZOAjZRqOz88xt)GmYU5LLA%*fVgKOV+6u{B=H%HCJ1qGEe=sXm(hn|3TVMB=-?!{ zztlK8B^Ve$i45ku2-X=GvIsw7lSTLxn=Hb=*klpD#wLsKdj#tYxF2C|MuY%1SwuL1 zOa>)iP&mN!qJ##xEd!Ee1BC`WjL`MWhc3y3#2l!-0@B0I*$q8;AABSg2TUAh6Ihmk znW5(Y6V?*;58&NIpl!~gil(Zt!5#P@2D2czGXn00gYFPxdGg1AC1K9LCkGDvd$3?0 zquhZ*jB;~6q--i%_vqQWvJFX~;U0-E|Bn63I&y?@8l%-0MhnKief$0u{awN6bB<AA z+P{tePXF8T@ASWg^B6&Q1YP+5hUo!hK{9+J4Ro2*g*S!va_;<cNglns*%*G;<k;}B zJ>V4HbnpNF|04h2Fc)wNFsVUid)Z3<d4QL)gN*}MzMxrPHjc9*4FCWCZ~6a*nFX{q z3aUEeALP3010c)6sSBi<owMWrA8=ZofF{21{~1u4|3Bsb8>Syf>U;m40jdArfu?@S zzZoF)3<Ce(Fnb`W@BeQC690eX{~Kl*B=Kqget^XvfXo4>D~Nk0{!am$zXwfx#(xK} z_!p2kI8Q;;&;1_(%2WSW{C~sr1U&2x7H7+Y9@Sg${|z&E+cPvAa-rfG|KBj{aAv?l zlXLbz@R=_EL0e}Gz$pl94re!t`Ui0JJs|bq2IMO?0dUJ$0d$O*nmVJpx*ij#>;*L? z8NrPPV{tY%RYqZDM%D!->ka=+@UYR0ZAr2binCdI&yk6TPtS%&nbSnp^4Bt^hy;ay z8KND%EHW$RWMzp+T;LE{v*A~Tx-ZKGc6Kqgn12qxLFfN&`TKwsG&d;@YFII{gGXY( zjXY6hB^A&HMNmVQ5j=<iYG{FL1knC4@UBI5brl9v0R~ncjjip~8)BcHKXT^szr!0= zFlrsiIP{<4%#l^ED)wxcb8H!-ZI0K1SpAq1pMS^xU1OZZ{^W*<Q(aW|^d;ptCiY#c zko$9PNz#!i^R8*B=r!fJOq=Xjk(#Yy=O`)Q$f)t1(TvfFftexY{~PeSK+swz3CQAK z(5fg!=!A<I<cJ70Q#OxZGK?4AFk8Ga_192z6_QKy=-tl7aOci122f7$@Q~nRyTd8I z=^g_k!->B~SV3oNs)P3KgGbB2mqmeF>Y(dbM8Iti(6u;B;Ghu~KCzfla>I;w%fn~< zdvRdS)rn?vG-75IwXF*Y-PqN$&YzLv?-AAjMkdD4mF0K;o!&2V;osh!HBaUo@mMt@ zsrzY%%mzlu#Y=uQ{aW+?Kg4!$Qf@@4mcXt;5{DMq|63rgWm01St7rfB@5pcPNZa2( ztSM|Fpz{yGH~T1pMu^zhL_z%vad2x6l#D=CIB2}W)I>;yS!FFF^MrqYHul%=PAh%9 zWWh@N$*B{9jKXX0{kuMOA)_XnNYB4NTUPI#_;0C2>9NULnjy&!m9Il;Vv~(r%w&uY zFv{++c*U4_l!2LH$^R#8KCBlQL>bgUV<N&J^Nr=0Ko-NgJgOj<z<WBN1|?|fXUTj< z%?mnSQ7%;*;^zLle(BP`tMeH}0@rqRtPX^bEK~k`V7j4jj?wD?i;0Vj(e~dnWVZY} zaN-1G*f)g<U#3j?GC`r^d2jD?rU39{sK);%tQ_Fg;n3@X5Qzh_%hQyV<F^9in>U8; z3M$T`4z9IMa~6P-#_y5{PkvecJ;t*8K*{39|0k?7*cd=F(%^y>JeFjt#>Av<3`!p& zOrW)>41zb_MD_<X9L;Ak^w;~L<*Dnl;Mclu|4y+n{0W%0(RUsr&$1#$4n~fmkU#$( zwaxu^_i-zu4x<aGP6C+^E`dR(;jyumNPt#{f^7wtv=GsZE1<>a5K&N@1|-VPah4H$ zd@KV*9MrS~i*t4`o&l9>7~%^VA!kXUtM6r)gH`<$h73@7ieXMaBMVmXX$&V2;^6WZ z;+~1HwhP#=pphSl_zXq?Bzr;iGDLhXqXww_h1v@m$pDM9<$>;{hJ_ipT!x6}B8!8| zU$8jmY=#9$=7VZ*h<G=OdQkZb5$^%12Mz1}J-}WA8P)?`4Fw&V03T5RYWE6($IRJb zL;q^v@<3FOxn<p=J&dN?ldk+*@$JLE&F5l$XP5K@<XW>dGfF;q!Km8Jl5?cP*zoTG zc8R6aPybtZZ~nh~Pnug_FdD3$$0+_dV2j6!Q&sc+J=wH|k#EurM#kBe>OVkBSV0%U zDsU(;2!it!18k(x+*k~<K7yTD&{&Weyjl@-88xWAE+i(-T=L}KmMvQu{hl6p#^}3s z>%Yy<uDnoK^s=`0<)Rf3N<!p3WB9#0jKSxHgwFq4d*}YY73YNi-r!33x`646;8I40 zY14l%5)fGQd-}Bh3`+&UV>Sispu1P(KnvhO`2jlpp~tLl3?4dXV^Ic8H-P53Z@gK} zD8A?!qe>UEw4RO1A2|yhsn~P>)_(i<<6qq+rVnr4urd5KdG_y3)ka4Co|r>N_J-Oo zKYF7O94ea`%Nf;}&U`OmU}Bi^{|QF~c(J(=Xx5XBiA@yJO9d?kWdiND2JI47RRnEm zhjKwOpqvWov@$VfG4dp)s;r*cJa<p=z4>duHf6C^F!JPNHGN$>|6cK)c}*$(zAC9~ z3`_t0dshAL)4yvk?=znHXL9r3rMU+fGyh*;tXQ+=U&n?2|E3?9%cyq~BzOO1+rKT< z&ls7&CkQ;@hyXX1=7P#@j<d`z;Oz}ycZ17rusCN2vko{pqKhwN`UB23=;FPMkY*IR z_!LG+HbWQhXG+0p&NL=S7X+*xoGl^lnaDH+;T|OM8B7HTad5K;qJAz@2RK_!`5VCz z0rwYZDI;VtA>4mB<l+9rArJR24tco0amd5{k3$|F4j_5Be-ZA7hX)RMc({P%;o*YN zj}kth-8w9gaO-5Yfusi<`sOo%m!v|{Ik=e!(bo+c&<3S1us%@n1rkTt2bKp9PcC57 zVPgPK5rMaPnSmAwLPx_uIY6CJ5weJo*=5}+VMP&U5k{830e(rK^?{+`e*+j<m?b16 zI1c??ux^38Z;%F?&aZ|=>mBuM?6vLIZ)7d`dBq^iU2?%X@Oa?^);Amu3<?Ye3=E9o zpxyUuOzg(6i7Cjirl6?+gQ}UB86#v(f|{}t9}~NP5UWpx+m07~3oaE2i1;yz%-h1K zuwwPUv**tJJGF)}mNCBO(1d?#-6wN$PxYoRDY0kz#NjZ(#f*oIZNk3~$0l^F__yuT z$A63V9%gK0lv%>W$Rxzc!Xox#UeEuvE8f(&bsVYt_wU~+&<qg+1M31d1_l8JNd{#G z24g`*BNot^8{p;-o3g4R<YIJ1*d_&K#T!f|KNwY(HH9wBs(3Kx9}nY~s;;i8e>{v+ z;yXMS_5I6XV|cKmXQnhy!t%<pT{$;OQp!8em?pa<=7aWcGcd4#HmI|L8=`{Bf-F6M zE#9y(-1!B%tOk6$7|R6q8U|(tPRJ4+VeqB~mI-fO{Iz()Uh{VaQ^da(u<HN+|2O<y z0WytAjRkZ8Bxo_@jsFS^>>LdLO~AvSCjUIxK)ZJY7$ApC*)f}=uZA>f(04Ib;WJ^r z@aE0$2@9B>{QaRJ>GjWpX^LUd+{X)<5`NwJo5Q#RB*5bFujb=F&;q~;1_lmLpn(oC zU<B<;1l_#G2p;VQEeBL)tY9kmJA+YziJ{?54HE;S#NRngIscyg{Za9z;_nw`9;PpU z3z#N=G0&ebOjG{mfbjqS3>E(bI9`Br1Na^k4rX@HvSCJsivJH-{;-KK=!53)z+D>f zI4C$)V56Ymor91Skl@GzAC*$^hhuGb-zlH2xPLzwIeObCwY6_y{lPNf$AU%gn<wRk zH+oF__iM%CfB&X4c4Xv~Hv1MkTxm#1udR%)*`Hf@u&QZ+k^o!s{DhwKh1vTd@yEJ@ zjR71xjG%4=qoSZO;}NDOi~?`|D*Su%hB1a^$u9<$CBI|Xz^$;qAJ~?F?v`Ky-Jhcl znRj7e=U`%)@*jFT2zZ+v4=CvwgKkg(g{QLMjW=_cG#Cy3PGKtfci|t$6*h*yDNJ+z z%KUl4)bSUzdhN!)1*|u~N3Ma^a+yL_;IM&b!@)s=SpUe_z}Rq=(Q{Y(yV*9G3!>}q zPx=cpUFP2hrj9%F|GnHc?cXY?BT^O1VoJBB{jGr5_NU`7_y(4L0<2%y7#P%84uWee zX3(*kpz580fz5)Afq@6Km=nBE29g341ws3JZoFY!z_^D|;2#g;pMM|z<@__4aOV!h zT$nFdYW{oy4J<P-u!Ht(K^BFAR>B~sCT5?%CQKR_p#kZYp@az|LjVH<>k@F7fY)h) z=21aW1X}dV#-<!#;TmHp&o0Bl@aFFs2@d1*RSkE{yMG>JTJej4RpsxUz5gB_O8Wnw zA>i)^aDP#a<rvt%Oe_tctB@E1{t2LnGlQ4bgYVQ~&p^5<hS8W&nb8=O4?uCiqQE5a z;BUr(za@8k-mort!|1?r0MwyGU{D+N?+1<$a1ft_Sjpz{e-5;8f&>jaXcsi7^8=c{ z2YHI+&YukyZ&-G`Va~a8hiMATIFMog1lT~^rqx)$H{EbBgN_GgU;!Nz#tzyI59$YV zgO?eIDw;BjDw@KKWIyn?BL`|KsB`ld#bl5Pe^;=AoWsu`%m7+u06MN8)S^;1hh#~} z2{wYDwbsgltP|c{((=#}5ls{dY_@<JTl4%Y2hR;o_Ku1gOn3kN04}Ux?q*`ifoBnr zt?ZyI0`j_|;0=}?Z~iKPHnFp+`~r;yH-I+WL3a8Jn}QZ>DGN5RJov})hE?UxonLoY zRTx+qCj9-v_J#v=AA<mc41*?k4hz&4Rsv0BfTt;p1=WoOLG=%4l?kh|ps^7Pq?yQ~ zZe+&<UYDgT$n5dv&7A)XJ5o}1Ffz>X@X*jGTUThFbcV6Z!($F3So}Z3obt6Gv3VMQ zzi{z<{lfUB@FJtirY(%BmkNKLxx&&DzxYxK=v?+IY$k=5{@vcP>EE4;g;!!1Uo4)* z$hG8m2?HZT#ora+-S3JF491``0hGDqnAkxl>wq?IgBz^sdQ9q!j1{2m?~DTQZSfZR z&MHjIiF<mq+|@;d5`@e$%tY8_G$j9h`8R=?ff>3_{-1<LS6@KInHmnB2b|nq6SCC2 zebgD3`~?j#RQwZQJpn3)!5iV(Iha`@7(iPMZu}Eq10{8CP~Bt<j%d&#ebxy#-u#XM zk177T^Vfv&0~-T4%$XQ&{1XAE7-mrNRRu5j2CqL9WZLuQ4bzq19&eZ)r2O5${sx?W zLGc8x0$D5ASipm%44{#HVNpINWd-Oh9Uy<RR=k-IFmGMPzu*6kzKNQZFzquaDX=m8 zRk<UlE6FIuD8=~ZpGesZFLQ8q;9yH(V_{HZxem@-%q(C2|A6K#h&A97bU+q?FotE! zQ|>SwK(~*@<<Adh4#qtoXJgt5sV6u<*GHi(CcW{7$pwUdY=Hz3D42eM7L(ri=fMdY zfxxktl#@f|%ZZ;WKw6nx-u&1Cu9NS85<e7!V~2r(6|}z-G=`z5zyRI{0uF6x6NYgK z;|@kXM!AL`TmII(VVu#kWlPUL59TZX-d*Z?*a~vcl#;4hklT~lK;<Yi19ZHM5vy@u z{)I4AU^5b2cwicPgMk5DP>O(!#cCwzwnMD0WV!JM-JyRuK(Wri#2~}Kz<Prdl(F$S zm-)jV9mX5joXdXY&YeFDkWk=c_<jc(3X~elw&%{BzY-Y6HZU-7g2sphK?^@Y+X=wc zl&B&z8)$S0Ye+X(xW-t>bI34@{JkK<Wt_IMf#nG{k3g%lJJ7leJ-{G!HYcc}VFv{o zxXu<;6l7FX05y5pl#vt5jW^5@e^xNBLA9rM^XA@v9&8MM*WCGQz`W)aEa6Nptu6#N z_@96W6ji{B_xPAZl}$jcG8Q3G=!l-0sj-Ndn7AEiF@u^Ks6J!560k7)MZ)5X1(z6A zXU_b0`_hVkzoxxNo*&h=Cn<3^W6j?LRtv^}=75wP6GE>1TXM$Y^uNVdrv924K0TI^ zaoMkWi>9AT{@LES!@$Cj@&5sb2l#X?b_Q|qs3x>_L!4X;83a*>?JR(<xnkb&=gNsU ztQz=^El;>}hiL&QzyEwd@bGd5CWaCQ23Al=i-L}7QWS*TBWMg-GYdVeQc)1JYL=zs zUq;uw{#wQl{{-eds%m(@l&Rvk0^=4&hJQY+8Vv<`b$9a4_V%60`^CWY=PwH=3jbBG zLeAO+?HYhK{Fsm$e&7xRqXnbSSw@@99Utacq|c8kzu3XV@z>%F(}FuI{@pk*_uu!; z(if!bRwpzZDPT?jcPAi5b53DnU=RVN4o0Zapiz5J<)@~m%n062tSHE8!Pszx(R;5| z?deG#HH!l~9<}{a09VOO3+~MOck7JLp?!T)R}?CjCbb>O`kMgCr=W6*fr&xq{{vPB za1^P4dqAeD%AgGb&>bH}W@hHbY~Zmo&?pUP0izhR$6p?nH*chO&gnW|TzI}GW?F{W z8<DyH{;#_B@5HLLjOG^>F|sUU4!LvZLFVHAe}C73HhVZ!gmm1jKh2o=<{4wksfrs6 zjGzuPTLPO1sM=Q*RZsz?Kq1fpgYdKo6%hq3Y5_F>Kyz=Vkj@2YJuwSg!oOSpLZ4?J z?dUj~z2o1uTW9{ATUB*yf>WVu>B+jj2TjG1k;R)BozC33#+dhH!x~1;>5KopT({-H zzuD(+Fcv*4*u|*6`cBc2s)A+zJ}sEe$hcs~+S_Lq>{#{h$210JhK7G0?4Sc1Ks`VB zt`g9u0%7P@IF^7v25b*xz67iQSDT<h7ScBZ)dLKm;+s_kRCxb?zz#arm>sk*6SAyV zi3yPbK;zJ&il&N?B`%P$e$WUzXl1X*jkak&f3s}3_iz7NP{3BaI#BdGfq6sv-iF?@ zd6hT%W2fiIJyBWpi)Bvx%rlG}e>9FVCck;Zn0Y#2^S@iyQ_eJ<DeJyh-?8pvt!Z|E zL&^F?&@$S;PuM^;A*geWx`U03WweAA(Sq(kbYT+#9lIb5IxYuP`iQ}IXexu&VXY8g zw9v?HaMlZyRpHc8)^-yA=kft`2o!Tm&2(2m?i<X!j`qI;K<8HcXJAX=1l22`rCFe= zNe#TeTU11jNn9K}f(h<psw+ZgdrZ{S)Ya7(z!MopEMnr!21^)Qg#I(^>Ns8KU(;cE zA>ioNvbF!VzPa;n|8^cm2CmM_Reg_IigxAv`S9<>ZbsW9#~4kvvi@h_V)(|u&M;#| z#H^&CQeQ)U3sJB7V-uGB`!cWZ--?pyp0Udd(i#HfJX{$W&aYu)?C<?D8&vv&x<B9s zt_lMKs4Q29?x+H_W1$PNU@Kf9`Hbns5*HlD9>TL3Xw%{|tmhj-G8qFasIX@R?T>@? zEQCQTg4sd4BTWUB1zAB|IuN#D;yLhl0n-d79!8PB3w|)|_}#%$@w<bA;df5}%aPwb zEG55fe*8YeVq&pn%fFH>TNs!bHZU--nSysou!BZt6ctSs89`WBjEx<%s#u*_4YcxK z4m95hE=SndSbl9`_4ya@Cx&^+KLG_c%fKHt4q{9)9P1fn=k&i?;2`^gFM45A!lt4- zOb$;Nr~H{ych%COVu1~F$}L8PzVvlBiySg0dPnbNU}Vtvdw@lPBL-wM=xhndX`Rr% zj-axsv8jm=XpR+fSdpkG^Mrpd9$nJ%RtNWavVZ*ew9B$b-A2@0rJ{!Q!kJ$);GG}V zj59MnGct<u-(cfvX_>*m!qD;m3Fw+r22dv$(moPo7i2UBZ~RbGH#brdVisjIWff&K zWm@xtS>wmaf0Mu2cWZr_!^kkB<&OdLg+B(Mh!Wrs_}%dD$iMXCY;1Sx81-1*{P^ea zLj*)HFfo93|AX$>1oz!Q;RqXY1NW++8-&<J6-`+xet%#Qn6M`%X3vCwIzO1sJYm$B zFyY^gFMk-A9qy#AFDO`_3OY$**}pf-K==T7Q8?%zoE6Z>QfFXbWLGqYV92HnK>^VC zKloNk7G)&{CP4uq24f=@);%%5UU;xH#QdJ(!6uR5&^IS+)xQt(<}nJaikRDJm6G}I z+01YMTCZPcto}BiQIu8Z#EE|eCr&W0xnLEdx91<|)P!&UChgG+FuIVO%E-WYgVBZ2 zh4BU>LmmS&WJCa*CBR#_!Ome+SA_UmS<xIaYyvtjf>D%_UDcd*iOa7KE=(K#s<1HT z^qt7M^W<NH3!}{!M$75l|IYtnV_L$f;qr&Yg-zzgi=R)J8&(7^uGxO^!NPwpH-L^N z`Ex{ogW&}SXdb46fq|_9Y%`?m4(cp{G65)bS-@-TLA4@V!_Nk`hC6o{L5Fv+F#P!c zfcpS=uZ=f@KSLsD0s}VgsHTh@Nr-ct#ULdSxLc^EZjM|M=`n#XF*Xtdt@j7bzkqw` zumy3ZOdtN8V6>RE%)w#Vtp5x@7=JurlxS%9_k#V-1s<)Ku>3}a0FOOkRsO2h<y)$z zov4tzAmNr55>aR_?`U$RV5)b`m6jEE|GdXMUDV)C;pUW-?WLd;0t%T;|6VO%tgumv zaVv^4iFOyWkPOMKaf({f;8nCKA;2xq!8+B!&d)%=L8)a`OvB0IBOC7AVf6S_fO_I- z5A>`NP$44^X*+=0k2sU@h998Kc6XT9{F7jOvE*QI$f0Hbe10&k`M_u}VZy&lY%O>0 z{M&Ko&fgVxijUXT9n1x}cJ;s8J9hlLx{-ked~OVAHz3G5J_aGEg`ikuWM>pKW)x;L zXJl{qae~R@2kV<Z3OxT#cree9_^Z*uT*I>F&K>3u&^Ec>S493TVO+xe;|Bxtg#*7q z#|YanFmRbb(*^7(GEgg(5wuwubY>sq<SH(eZyKC8zG=K+TqDA`g;9cWiwNVIKYuU$ zXZU9$@XzKy!`}<69(V5iQ@C@7Wya4MwiXcn!N8XA6SOCf1zd0jfb$|~_Dzj}0bF!~ zicM8JCTOY2A_iOO$_5TeQAJa>fL|G`GycdZFsu6gXV9~dV3J{5#;CAi3nN3vm%JrG zVN0@@1pb&XpZR0*gyqhkg1U#6K0HN}Y?vqPW8|CA{&7KGn@!lVe;Hf0{F|`_RDgRh zFu;%B;fHK-1Z~G+1hst?8I^O`X8g=xoAJxz-yg`4Jpcauog={f;lzo5CMQn(y#p%K z*!D26FwFS>ge`<ah5@vhQ4V}PjS`!vB6P(rsHY2EsQ^k2f}k2gK?Rif%~|0y8;T-q zEX+0Am;U=w!N~V$7b9z@oP*I51D_R42ESZb_ki$Ug?|tJZBTYKVPpt&-nDMgB}Se_ z{~oYAEN$<2J2~gd9IKKn9T)os*P^b!26z6p-1%ei?Uhw|rka9BdthmM`^*hb^BI^y zHzspfKw}tG6GC%6qo6YA#uq_jMq@z^iys{9KYnnqYkc^<MC8W@mIM)2krOBW1)Mm+ zGUo>ao5#-`91K6Vu=y}BF|7E{z+S@%YK4IA$Q4u;WCZOMVF4ANklkeBprf-uD^C;{ z;0M!)iHWmREMc0Xm_2z{{<eSDHf&-v*tda^ce>Bt8O%J_|FwVl_u*ga)8-G19!D23 zO5U9!!^!ZCfs5f!L+ZjJ8$_u(ol$g;z@0mP|8<>(6s?~bTN#BWC2sr*+Fi5a-yil2 zu+!KXbU}4K=-f$mMn+|17uqqI8}l)-D1%%lAjF_(#3Clfw&c%?7G{wLV3KLe53$_Y zd(w9OyS#BDqwcP>J+pJge#lI@^Y8uaf4}}^yn4krgOP1Equ`w>5J!GvVBuo;(~`X? z-vZ%Mi~Pk|bAPOjf;baW14OO;4h=wvE5Y}$Dhm>JA4|m&<|!n)>Q4jl4tm0#!6CyS z!e9leB_Zt==nd-N2CFdP0DKW3WN%!zF`nto8v(J>#ZfjnONe$aOTrya@y_!Z|K_kT z{QKe65~R$?O`O}oJF(%_8b7E|gfvP(d0G+F)+>OtMgF~DWB6P1gZ0Xle+_43Km<$8 zojafs8FCmU?+H%ODj9o*bOr`iQ&4Z*)PzYzS&4;(9lCE#NEEa%l2K3uT(g;i?nRPg zHWpRVV`hhEX+cKFhD>29yJou&uok6=sc?alLTzzl*P`{=N8jY|V4VJy#zxCjDsK z{%`%?61~*rRlA-&URu1eZ_>89#SiC}7r1x?c-n^quvy?+v$fWrL*~v&#^^f*FBlV# zi`!b<@o<^)@8iD-cXR&T`se(UQ|8BvpgFak=N4_;oj!AB`kl;KGt-!u18wX>BkkE& zd^x~c^N!JFS?TqEcQ&}7t@d)6!^p8<!K=Jq4WM56{}7HIHc*=an#VxLAwXAZLC)R) zCmM0^rZzD#QP9!(kThlR=g$Xb4v7!b8>1Gcf)Yyc(xeF|jRnMNcNR2Uu6>i(?J#Ez z+k+n^>^*;;{IOwvvu;}I&bmK2Yz+VYI5mbYDsrd~E&sabj|lUZiY}{Dklp?4PuLh3 zc)?4Y6pf&^f!ZdZ4hLwm6ttRxP5B2i$G1;Eit7G;_`&$+2a`Zu(T`8x*cd*2`+I{) zqpRuH9TtH<XPUZLIDY^5_KATBv<rw`fsKIyGF+kz9%}~;&WI|*_Vx;bMrYX-zV!WD zvEcvIFXtI^-+W=rKKVD~$DdD(ZcCQ@+x6+sA4WaKEw5hv^Z9p)l?60b1KM5u{{i<7 z4h9A_#yZgWFLN?m3j+fKE7(RAXfe&rpbFX^$fzu6492F4qN++NpduDD1R*4-3|^57 zxg^S1(cGAw)#lEfe<647{B>Y+`19e@zX|8gG3LDc#F%&H$Hf0j=KN=vF^N&?%-<s% zHXO`TSaN<(VafTyaOaN0d&ZfJ42(>S)#q>g%lr500i*iFN&oKLI`i+)HVKLU|Nrk{ zU|>B0TCBv-334pxben$+44{S~16v2Uq!njS1g(|>O)W8k=Bhyxo^0%*&>2tYbhVl? zcxDtdov*COY_R073e%ZujA9+J(<9>cHT3+u^y!}n<D1WCvyQa=<6t~fur+(nnSVNv zekUUX2gBs=(^}S~NQkgiJXkdA+k`uN+cP$1--uX{)4rF1o#DrSm}5XqTYd&*23_zf zP|&m;sFw_<L1jI-ZpP<4CWR$;mi)c5<j#^mTZnNb`wYg6e_;GQ1I8lcW>78qgv|oH zyH*yoN){<@1(;aWjf4aRKnt@#F)qej@aW&66)PF-A3R{RU%BGnp+^sX6keWk?^nTP zneU9(8T}Z27_a~Q`A_rTmVcZ6X@0-MxPfs3BNt=Yk$>L*3jclk*K>#geEudgXyTV0 zG*zN3sLW`}$h_nS&p#d}25_V1&%Z5y7(*Bs8Llueu!2r1lLwu8zz7{_1C2o`n+SnZ zpQs2M6FZ}*qUaT-CFQfc(>LXpt&e}Rj8T5`7DlmofyX!eGhyDbh3QGt!PRj&^THC> zm2P1am;t)cpz!*?pL_p_2;BMqA7l-i6^9Iy8mj;#WifFvI4}&_Lxz|@*G{p4PFdju zO;rkmj@D2H1p=cW=&<`G%q>$={zkCu`TOS$<B~J16aF3feMaEUzZk|x@vQrQfM-Mg zKVkjB!N8ybj&C*43QW*A7ie-^U5$-hU06|6k=Yn@=>lX-m^oy_zh|pBKJY!9TX(du z^h|TyF^3m5EE<1Sc<|WoOW(t&zH<G)b22?&=5%i@JKx-Pxr&j|T2F@g!=1lNjGQ+A zJ9YfXzq1<|m>6Q97Be$wfGS8uQ%3ONP2kQKC`YPcwVp}hp9|9uVw?av#^n1G!tU7e z{}G!8hYW)vgAoG*s~!_5af4G7^m+^iW^j!G@jYlT1r#)p*-tSs=9;=c7wXauF$%9; z!^pcz@{7`uMeqK-XB4oQy(e=6qsoR=|IVJTJ6T$Iv@U*0wOjE?8K#)qjOC0ni~@{H z85O5>ewp93?O)QruFy)S_5aQu+xPG2&U<xNn(8mscsDJNsk+j{z{t?Sz`(i!d<GGN zB6Kj2QG|KQ?+2_3e+t+|1n#`}@q&SwVfFtfY%&}&4Dt;64EEsIWHMJX18;>iS2F|U z5ixN#a2Y7h2FlE4X6B#~2R1fwHZd__(3moU%barV-_Z?>j2T-CCa+^;T)-%~WfP;s zLPo~*6Y@7@F*0uacl>PksXRu;veQk?XG<9wbI<hTtxjTOOjuP|ye5v3F>#H|WJcy? zO?Rh?@TmP?Jm*_q-?ur7|EuwcOugH*?BCzXccPZ$m265&+f<UbB#QY=#JsGG*`cAc zGqUDIFff4+70}?2heQga922PEVS<bz8iP^@1L#^s@aaD$LMq~*VgPj126*;aO^rDL z6e;Nk|Gizi=HKVl5?>ULE_%x-EMPHfPu7Nix7V*^G`@fwCmb@2aX0^U{d@NB{lCb6 z_oj7zUDUgsaUNq;NR`uiM&o097%g|*uf5#RaIxCEd3kijr6%zCOpub2nL!wIUN56K zqdI8x7=9)MMtRAyq~WhX1>+W+r6#*h#xI_de+x(}JX1Ir82F%tCm-mJZ967&=9C`- zd?h=|%GZ_JvVx1z88Yss7s5*7I6x!K^gOTuQ9!YS&W{2WP>iCAqOju0<jbE2EC*nv z)2|8Ovgtu0)BfL}+1^F}pRle0ACjcXz#weL1X_ZJD2YJPZw`)j@NNn427)C_W(@_5 zXBY+kK2h;i-^Hl9a{0fzyY~FMv+P~Qj*5yM84!}GBjMbiWlSsnyx|d8^Y7ZeegAH( zTF+>>rRhXb;qiv1V+Hv~8Ne=QUB@BAAPU;GCk(A-K$qh%Dl&prsH-qxSihW6dDk9B zm1RsIcl<N?_kl?U<c@#0SH6MR3?W&2_AzR#TL16-5s*9nMlg%;2&`e$+6T6|0qlzZ z{~1pFf5H~QA;ZAN%BKK2v1$zi0}HsWWaVdM0Ihyx6kuQgXL&YO0UOXVst2IG0$?3N z0wDep1_p5Dz{V;JR?qYQ37Zb+oCj7B6OjCs|Bu)}2bi+4ih*nZ-Au>^8u?^n70&_5 zU;qCEDlee};$H#t<r&ymCBf<uE|dcC8TT+Su#|vGDpqNb+d%c{|0irNU>jvXD!|9& zfK;%t%5s4G#P$CP)JC}s5Fd2dml)Uw@)@A&X~O>}Y<D<BK%)hqBW%Ef6{_I)R)*$! zaYjW(_z)hbnFl%!AGRSv$P~11nVpS|osETA=G4DC^KuW?F=~WocINw)JNs8VF|Yae z<j;?s4H?z<r_H)oF{$ofMpshGwyKgln=_xpm8tNE@Ff4cBr}DPX<5VZ)nRumn=<_- z`Byr4Or9C=yM=j0)0J}-T^CEs4;M|o5&Q2#+5xSEWogNK7&(@n`S)*<3cnnGel7zO z!<GLZm~6nUXaNQWMrLJZ<a-3zm;^*#h;(>mWqEmJ83uAN{BmGD@cjdbm*r&`WC#w% z53D{M3=C?lhM;B%t06O}dBVhS<?jzB8#WH`csK*2qOdWu5hw`2=USSXF$w(pAo8LF zYH-lsAFKzM0wBg31wxJGkN_QQ1U1$aYHY#(53C#<G7QS#6{)6nOy-CN7dz4+ir}lF zM47=0WFdDVurcv4`Sc`N$C<~>iVK>N#_@+^AtUFa4UDY)&b1K{Sq4l6Q0D|PIq>X% z)MKrZ+~l7$!Ovw<*{V+sJzwVJZR#;IuUuBc^LGQpsgMvT`2T?mbWW@qt0_1HOj#ip zwG{mSz<vSj1&FvINSuL*q37=dRuwiLs24=}KudyPsRA~6ss>I@c1-4`!pOnK+`;JE zlVlYS@j^QLANEE6zAxJF?>D*^f|&R4?0ej8qny$hfb50*O+BVyFCc|B=$L9~s46n3 zg4!C4pl}5zWpL4j6s};miYhZ3GouEr1*1kzdPPps>~KiPE@I>WhwPS?f<*BRGH(=O z5Mj#^e`Kpi$j<KEDc+Evo%mz+=6`QOJu++4IGAVr$v_HT24;qyzfV|I*aR4O81%qy zLk<sNaOVU(oB&!@WQG)cLZF0UYAmcQ%*+9`JE&C??8rG`P)Gjz0S-I3BiRHX@oE%k z_;&+G{E;o5D9-#jYcrz=#F?O@EEyOXb^awVS8ybN)=x4D2nidrae=1igv6DZm>6}A zZolAB8)q6bC*i{Oqs$46RZP{4+{yp$|6BfV!sd7X#Qw#!Fmf|hGcYo={7YcE05gV( zS=meqv{sEt-B?J7=>nQD|Jwex{`;EDsK^+}Sh(pO<15A`E&sm$ZDn9&^!b;-JclCz zboweI=!9KCMNvi{rhtDF7z_R-a4{VD-f@J139bsfq6;)^%nVh_Jm;TI4MaKffddDA zEr4oaWJvgzz_bBwu&JV;qAAmczZ)0}{!QRW_{MOAqv8ky6I>P8V9+8yVL{O0zlx>_ zj8|$Ps+k!M9AJg%U}ngGI#`536EyrNY-(g?DhOI|0-nMLjT|w8j&%?;QByVrZT<%z z6vAj~ESj;r)wJTo<dRl%&Aii0lO~_2Fl}AF=yaZ@d27j^GjEt<YI>G1I&__CaX8{J zz4Tv!Uqg)1Zx)A^Q(cS>OL}UIVjBGZ6_if%WIpl%w3j#GUjp+Kjsym%I~YYlcOr^_ z+bm`f7coMu2aR7bnSzi1ViZ+2WuAiUkiU5-4q-NV!<<snv*h0autPkjl`>8MIfUg8 z$RYm@Kpnz3p>(>(ADa&!z`OCEa2{db!r;dc#{fFX3o^&1qNu>aAS4Red<NO`qpk<O zJki_?bo`JhXd@(ev4aVdni^;jjscVm8CXEmWT0gM%#i6aaApRTG^{26&i&K+cVNkK zMtjDSjEansjLR8i`(>hb&v#qV#KR+zJin;vSgUhD|G|QkC0TqtSK^}5ay30CKlpcf z|LcFf|NgeOGjcL^Ff!y_TcToNcl_b4wq-scODc*MhPur9`(!zz3*$9LeMVKrbBxZb zw*Nc%ujbsuf7gD_&`Ark%CKW$&EEO7ul>P_R30u>Po0846(J2hj4Dss7+IgJOP=`e z^}o{J|NoWz`_QXp#Ir-nM2T4@=hm_ndwj}|mNY!<{{Np*=RX5;1t$X&JF7JV1NbiE zmj4V)7r-K*-6;$H|7Z01&%itfEMf~)lklH`X#-fq9x9RnSK|m3N%+seJcScvvJ+IK z<G%ps5sn8;?5v=x3w0P+Ks68B0dSQG89reEEmUAMS7c{oG-d?R%vTr#PW;>Odx`?< z4~1WMz?^?~Kpaq$m&xM93D9x4KNwgUPMlz11MQ<^4`AEFAj|+-cBR8$0Gb{Fopl0Q zLIdd@fny)Gh!qsWpa^DRRA&@tW;ADHh0@GlR{p#3u&(YQqsGcrjG7M{8Xo?;zN-5A zqL}&rJ}+7F@8iOSjQmV57BGq|S@Q4A0!E3SUl44W<~NL1+qW}XzG`ZE_3!xh?f;Iw zX}*)X>1E3%MwNBz{@vLG>Y=b$tYDN`@$&|w%#wdER;*x@Si<~)QD((I&~bVW|IRS4 z;YeU$hRh@|ulbvEgJ}v!!nYjGDGZE^8Gmz_47jF%r3IA*nG8;FP5E?#SA&6xk>g(j zBj_Mi&|Dn@Xg3*XMKdGEojZ5#FlqdW;A{Xb24G-hK(WD?k?9K9hJR-`r+mv{U}QMK z%)sKo3_9M70aUQDc>HN#zH<jOcmkDSVq*;iuY+Y^W?*eVsAO&U1y;$x2%4s0S3t<H zEBtr>G6N#R&47^MX7~y^ixOly1E|PjzQe@E8VWL<F@dpy<pRqK(6|Sq5_Gkgkr=4? z!^SL8d7`}hL}k_S^77-16);v+<%x0zCM1p0pc`jUwW>o_fr5{<K{2K(Z`Q25+}X2H zjoUCg7b4EU$hd;(5K9O1JaEv1=C3>cDlpFj-8RAah_Qg>7z?QEVPF(wWPHT*gt36R z;hzHo6T=CH7pyB-D;U6&r=ZbPQ&2|(v^HB&R2j7H+U4lK$FpWJ${uA(0o~>G<Hw5* zM%LZC8Cg5-{MER_GT}F9JKqh47pyyArkI244)~lsXvFyjXyF`F%27tyS+o8<KKggg zj~92CZrthk_j~v5f4@7xrZ6%#FfL$Oz;XcW0noa;24)3N_w3IDaI8;a@n8Wh7J$b( zOCC7Z8JH)rHn8L|v9p5Cc$oD6KLZ2vBz6U`NC*Q115|{Y0W1QFyGj55GbS*3uv}o> z!NkrQ&cMKM0YwC~iW(%cf_V~42Uu4mRLvtM2bN>32bkDdqaY#-Cm46Iu3+<EVrPwp ziriq_!MX!15(5!oY+x#2S-?7hiJdhTBmx>zVQpYy;m~2=0?oCWfEQb^iHdeu7X~!g z$FeqT3EH{VAtUN=KIlYe9o7&=(C`ZvXqZX_w0FeJ%+!=|1w=6i148lt{|qq2Y^+(J zM9Of2)qxSzX9ML{(4^#&I~)vu9heS)x_7J&;Gs`7R`3Z1tT{~JP8~xBYXb|&ZECEU z;FfMCNSuKQWHd9x9ik{MLApf(<|w8In2tkr=D!f;6^x()IG=&xC#Y+u@h^mN2_pjo zJ8RbeKR-cTuO3zfM#yp{24P`E<{l45o)xSLOb`Al{Qu9;!>Yji0^A`f0z0yZ333!n z532$z=)7z-R*<+lD_ER?owbNX0Mr8o>0<{CH=@d`L*zl~*d)N=hGaRTGP5G%gEcD{ zc|f+K*j)y;y9~o_khnT4Se${KwG3o810%x`mJf`eBWpo%!K}#4C=$RZ5y0|+S>Vry z|NlX<%oSiCRf0{eWSj$b$)0~aOcsn1pq2TI>}*VIpmw^DxjB=CfS{|F#1>vHZ9X1G ziJYQ;f1bHGTw-KyF8~i0e_*m;j9}majl+Su8PMJlV+*vE90+X$8wP>;VHf^?-~cIC z1KsD!pw3#u3_ju>e5Dj9axVP;z>1J(hsrZCT=@Ti$%6F^0}p8REGu$145j0Mu+<3D zdX^GMbKEe<5H!KW$i`&BRs}JUkrWdd+2H1|@W7e>|1(^G7|F!O+5p~d2MW*_)-w#; z;PvfDL5kWZMh;(ipAj{nnSGG$+3=5tNrzE_fsM5qd<88ya2O+)*g$~_at9=^nAlkB z!AWt;KOUwK)-w!jtW7__fy{J<$%4g%i5;Y#2~^`;U|GXt!6pI`VcGNlKLgC|Y^+TX zzcAckR$yJhzyjLormD<nYRm|_8i-lp!oQp+j1B)9o-j_i!xSOHl<;?o2oq>za}Tl( zb4FuPMrLD1QRO|14Nv~%T)4nE<;fkU9Fe~(SkC-iAp)|I;SMXv1~t|$aI)+Il?Eu{ z-C*%<kT?S)qYQ%scpWJx=xi@WK}K^?bw)u(8CH%zDjXclcbG0LV4Cos;h&0thQL3S z|DZMmvJOT;Ms`ziMnOh4m0v%Y?{IMZQDNm^y70Gvk%94!fQA6$9Y%(~1q@7#G7Jf9 zDr^c2%%D*{RnSTjQ$|s+WuhRhtQ^07uyXvV;ox9yNqE3iuz>Nxmwz`vcHa1cq1#kZ zRFKgWY_TaL$f>`6Ft>1U{HbB(NO<soIpCkc7e)<`<r-i9889$0S}^voaj<Lw-^#=Q zno<X23ziGN4OlKP-??$)?}i&U7?>F?7#!F@n?*qF9ne-BV@73WQ$<mbYL<uxe>Xh1 z0MWw6@XLXD4pbZHy!jqB6IQ74s-T%V&;`^65B~gN)#zc>_;rIx<-r36Mn(mu4QvX` z6Tr14Xibp9ZwBTG4<0ZuF)A=DU{hdS0CAuywCTv&@q5M$mJBd4V*yLXjNdar{22_) zj0y}HYznM57?>IO!Ar_POJR_*9y6qM11&-nelsvNcxPsMdt_vI7zG)C86b=Q+yFB@ zyfayN41$b6(%zX2%+RO;H@QHCm?|^~z*D0#kcj%r^8ggm8V?@)%U}`s4Qi-7WB9-p z!x{iN5>QwTH0&xS4jOtlQ#Td^jee@BgJ;jhneoWIU@F|6mbN_KJKQWhh4}_c(T=pV z6?q;}W`SAEH}J?Yw}1}Fj<q+fsaSR@COpyJw4mkh5==1$Muw+M8f?)lI^c<Rd@f-w z+MbrSGS@58G%SVb26G|UC7w~HftgH93Cm8!M8-Rq)RsdTh0UOx#K^#=!gc_Zvl&e> za}x6e%$$Uz18YuVo`9B<{{Lr`VN_sKVFUGiCNMBC96%A72oeFMc%~dS4pva39yCu1 zi$G|KXW0Wuy8r((S}-cGae&R5%)r0^N{T#;8EhtOphODNiJF)hGmuj=^8_{p7SPf= zaQlu;;Wq<I0VFju7O*L>fn-2NU`x%61*plH(SuEaZ3hL(8Dulo<O~j-1U40RP}5}w zsFm{nKf^P|3v4lL22AX%GeN%o|DWM0(;v2IR*;%m3=9lc7?>FLFtM;&u!KOeB&gfM zDhS%3@w<hk=HDBZkT-8~{>d;tVPO3K=f4UI=*(MY1_nh?BmU2C2JqQ87Z@1WKu7q2 z3KQ^lJCGsFPku0){Mx|509wWP52TQpA>i*3)&=aKYu`ZqRtC^!5Rg(3X0G}70i>Qa z;MWHBD_=iw3H<$Y=gw~)umuGy2`oF<L5**4StY6r+RdoUXw1k|;NkI)fpHF_0OOoD z|Mp1yJHQ^0^0$OJ;m-o5Eq{F&7#Zd;H?V*@cA)(b!mR45s^+ZB#>}eXtgP&+!b}MQ z|9TP_JN{K9FqQ}$5MV4x_*cQ$k?^lafVqKj$D0*r&a8L?+PMy4{qy+$pJ5K;0hT9h z4ovK<YZ(~+IWVv=Okljj1{!7sEj-a>umw#xDMCA2%J4f9l?54vK||XrkP}_NQ;x7c zwTcjQ=@Ph4%`}6tOgGEhFW>Orr#p(izOu6zWp-@Z!m;e%y*o8EcNmqHEn`#yvHsm# zwgS?TUa{ien<Yy?6Q4|vj57lQ3#}@goLmh4PGgMuw}dg~&l@ytV51H!VH8<`Yybl@ z!}I?SI5jyG7~~m@!6#sX`dgp_rXf3Q*g!)!#ztnK)p(#8CPpO{1}1YeAqJ3d7=*;d zm>5{pja1Bp)YX{4qd;s->}*0}EKCO$F!C+w`#4YdlgPG`lqE??OHxV}ihdHF^1N@! zzfTL8JZ}AK{C9ULBjZv=CC0j2w;Agh6_+qFF8O!wU&HOyj5?1R7#SNL{kyh$)xT?x z8W|ZI9y4mQFf3u@TTpemHN81$NlMC+q~`S2%T)^)`Tn#lVN_<UyM3Fnj!}8Zl7Dyq zHQm1buj$|2B`+EtF>0>@o7eF8-__MC|6P65h{e~ibztD>RQM<~yE15z6pIkCzGe?t z@bA--zUNbfKZ!0XhWNU8yT~Wu`5*c~PXD`uJYWC&1oCxS3&ht=86aQ(`}Es}RA0lA ztuTW+WbF-TEtUwIGW_sWWkF%Y#%82_%xKAVA7e=B#2Hy{?&vw#>C6fMr!BPfhMdZv z$+SDau(!_B+|1|iw0|CG%E3lpCQnv|0#*e!1JH~a0~dHu0CaH(qp`5CG3W>d=pH9y zL2x6c@87PLCr?`b?fMtjz{Jq-TcP3K0wxDgFX`_SCYitBz8a{%#<bvX0#iXj0Rsy| z0jm_75C=Q>EHNX{5w(m;YM{-AkOOMf)z#G0)y&Mzz)POl+1SLz#K33LiLikhLdFnx zfHp)jHZ=8>xQ7M@TDb)!<}xw$)YP_@I0X2*F*2H31?3h`W#n(T2Xo%N23D!E0&8<) zLrr5IKEce8#5_jE!aPeOMn+v7bzLq#;rxiSA~vv7A0V9001gaxP+)+HQqXpK&|W_1 zKssnx0~897F>qr+MNwu0#smKjFgpB60EfdFMw0^#jNsrX_{UHH3xt0c3JU%mV0!R( zLIDFSLj$V<J7_65CxZY3XhVq%1A{Qg0#Wb?4CsskW@d9!MNx6+!t(~k75{E9GW=&? zRASUAVbo}N@<4!b!4bwUegC)^^Zs%5F@6Dsf5DA{e>cGX@%X!AO-9BVF#Ew@1&Ed4 zdpy{n5e!=X0tr}<mp~X4z>pMbY67}Q!5CE1f+k^<8R20HiSmX9k1K)M*?~81MD&M- z_D6v1Mg$<t(t^zJhVaY+-_EFps7_x77KR2^DYhaG76ynDFdYEzN<z0ofsQN$6^U$Y z=ni1qwP?q>CH+fyn*?J0GqQ5Cy&{DhglAy7gKhWDU3)reygcgb8(W=R%9}x}JXk7N zd^iLcK$m?nppW4pmfApOo|qcyFV@sttcQ>uWo~X|9$=EC0xnvAvE~F!7$ga*_?dUG zn6Q6f5M=<b3kNR<6;%hVlNA#c6alaC5eA*m4e_FxsW`Z83tC9atl%FQmG<W4;VpOg zMZfS1+MKA!@d>dg_LY!Z*t>M|>$fZm7_Wp!x;cq-ZQH;1Uw~7UjX@scu>~<Umi9&- zN(-EtR`<?a&cMVlhj|A}2>S;He$b^%!k{@vV<XUZN{~$qpi|00nGY1xN^EmVu1&i4 zujtC8d;k7@sHi9{E~zLjXPuMNcc<>(+p9T!w`v&q869(~7cQ*MsaUdvfr+7lg@G}L za}T(&#UKnCFhuG(bX>_W_VhG1@bF+^U~%|;faQ#bfq{pIfw3!SK8%Hd`3;8;XcHi4 z%_!_(V93H)WhFMoh%09}RF>q-IdY{kIk}N-#oq`PhYjJWr`G+|VcL*W)5yRCx|^I8 zlzqU5n}7~_fo-Kz1f8G8y5OHc$*q5v=FDN#yTz39;|IIS?<=4s5<3``SAv>MKR~NI zelRewF>pW+NMQucW<j@Dfv>$|dht(yDFuGj@thw_KUj3`to(O($F6^Om;dDewY@-_ z`u-)bf-Y%wVhCnnU{nT2Gq@@jX9ev*1g(353=M-0xkeOtYU-+>IUdL=DM-wSi7}g~ zsi~`~fs>s$tC*P?%a13`y-~&HE-40#E$S&Tw!ZZ~9xfAJw9Na~^I~Ir{z{h=gMT$3 z36HuUd*8Y{eX|}^g_wmI{HxF@4lVU&EYYftXOn4M?UZ6<lNl`YM9eFDLaf)6A_*4z zr3q8^$JRbyFnMlnzE7H)%mZ<++=;Os)5;_`?B^!b9L#Ti{)f*h(O2e)lu=DcLbdJ< z34=1w)gp`zoNHKn7<3pM7(y99ce;bRXX0jN=HRZH80aK%kY7P1IvZ%79>f8iFU<^D zGGlILW)3Rs!P8Z&Cg8pt8)%_~7|0yZ5<sRMIa?=NsMtzNm}!N4UpnLG<j`ryi}JQl zwotK=khWE^n7lP-)~_j{(@$OupB$CE#8uZtTH4XTX?b$g<Z$+o@QD#F6&X5a?)=g& zx~@ypA|{5j_SmOdD7q;sI;e+qO#V5e_~i6Z`(!f}cSS{a6|-dfDZgeF9iJBZ_fFL0 z@F*wU5OtMcU8g9}eLfSzHQjZL<Au~iKmwB)m>57yT|~gE-3-CL7gqzVOl1S@Z!uN? zU55j1;6U~-tAJOCK^t~LrlxvK%n7A;{Y0kTuF2e;AmVpm5hD|0@bdZpu3ozI@A}+n zjB+o!)&~c#?dVt=%n`VhwI(tA0HfG6b;Uc1=Kr4kWBIo(;NQQjH=ug}6b>*NY`9Z* zt^#yW=2Aw<buoG^X`s3Oe?4rleNh4o4DijJqM+d+(9O{ezY<tYeobL9`J*y{IqJ`{ z2{Z28;h1sf&hHGr-$fUgpE19>!obML@b3W|XgC$r^Ac19L$(k9-u$un_lASv+XD`l z?|V2E7#ROg_`8C+fg=vo3uZ;#e`$ie_mc76-HTfO>Jp-fLMd^t?ieQ-D@bIj7i7)2 z`J9L63L95`DLdN-Mg{?%Gi+>aeGJT?t&nW9I6zCQIY9$G;4TR>=!9H$(3l7ZQw5{c zpI=)xFp8LL`4_T*@c?58+nOH?EH-~7{;grLxdYzs*zkW3I|rK!12cm-X!W?bI-@vf zsV9@U8tBY>P@7Afjfo9B?PjjW#ID501X_^zCWlQX=g)zq{~p|`Vq~nk#i+1!5u@zQ zYDUKDoBtj!DmXShjFEBbk7>oHW`r;@PX6PP!zPpQi>LY)qx_P^AcY`hi<kU+c&qwD z*o+fJ(|=B744r<waK`Vc3``858^b4n7Ai4-c3UwTvokV^E1NSis)NSw3Yb*3Nc@Xn z+#s^Wf^o$^AAt=_I)CqMVPRllIP&MnpCd<(FxxQO906Uj$-u-A!u*DL4F?Z{5(6k9 zDuHH`AnRoyB|11kg6eNUWm9D~HgK(G3O?dZR78w%LCo|>^Yq@(gaU)KsE{I|6N<N2 zWbG(A!=W<A!K=hcz&}={G&zg;jca>~cdmyvCzpVdia=nrkBvn2RQIVRe_iHyWXy0X z@~Ghv7i8fNaP<gbU}BiU{D#GbGlW45w5S(UC4d*OB8oqCWl?7EbrhgwwxDHHQ?77` z`Bp|0?aa;EQ5I4aAjZMcQ4v&R(^?%+Y|FyH8uIsrNxW^%n-xpm*4xIL>|tV<e>8Ss z+RWpT^BEYy0q}%_2UNKs)#1>V1Go$Zcc<9cm`o<!C@Z@$Y0F#wGdv{;ewD7yl>vUu z{Ac)|Gr#G0H*40rj^j)H$|4rz<SmLwOkR4Lfr%l4`3(yL%rA_}rpn-bE}#*0(4hok z;>Lo;%;3Tvn!C+d7%uRLcvnW0?aImBT@q61FT!!<LThz(t8H-r*f)C&5*+H^E?M!W z#x~xBN#f6%na58}%UBp4wE*guKOCS{L#XW$w4(q(#Up5gD3i^!+vOG4`Wh})|JlOS z;#A`0SLr&v(I(D;?}*|<<~J?x=FNH6R{D5}OGiMhyMJpyMelkwI~9@YxeQDU4lE2z zYdAqeGtljC!h+yt33MO6s323t-xCuyH=0FB=<w)DJ2`PMELrl0fhA$uEFrcf%$%<F zzd;Rv2&MuS7O;~+rw1y*4m~o(3@XqH1~xWk*aRmiYM2bR-<LZgQInA0%Oet06;QG} z7aD3jSIRGURdlpg2Nl_LFcnP5QL*$csJLPhYFv1K$+B0Vz&rB$L*43dCWkF^W*(27 zpE7ehv{CVaGX&nK5Hto?N63we3mhu*iXe@OR<?}4Ggw3Z{sFfta+nGrtqMq+26Va~ zD0kv((=hyDVCjLkX_)@sU}|B^;jCfc2bF}Ny}WG7N=nM6;BiY+<oSh;D|_Z}ituv^ zvUzx9fSW{~o*WFnx6GNchMCdJiRFqbsMTa(;K9Jm(89vN{DU(D+FE8{1no^^1UF6; z8O<3PT~rub{`|8s_&4DS<C1?XCNLgh^<iXT-0+X*?-$mPUuzg2O!?ab2^z)-PS6k( zWc(=N3TMc#HLRe`4K1LiI0p|jzluV_OdLYNgAR$&a)v{3QfB642_Ct{`4iS$$p}fv zIFlM4UI;3q)`X;FMMY(8U-~zIsV6zJD(Y_y(}bwJ%H+Q-5LYn2;oyNs5Y#fb;pnZt zjK4Ej7$B`ac>IJgzhM#K;32ZzZZhFUMa7K?5HhID!J#Y&OftV|dpBp!yEX{9B7SjN z#?tusr5S09;~AJ3T9_JGbU1k6g_tNtAts1gh_zhd5c97LgA`(6mHsG&7*hjl!x58s z+p0IK7QJn>jW_vwgt=kP30NV<#1O&Mz`_8w4s_vwGGuu<s4NF3UomlGQ)oE@$~E9s za4Za0IK+Y~0uTia&xH%%>;frim>QUDEaENUMa_|a4B%`6D{5L;7?@sg@PPJA3k$*; z-|)QOa)Co`LX?)hw1cRLbaE#+UZdg!`8RNKx263B9f=64cb0JQFo1e*(4!SZV4Zd3 z)8<S-hi!lgOk*Q4<_Smm<D>kFyaP9Mb>$tX+Hzm?f>2IWRGCZ2n%?%?8&{uY`yyZ& z>}hY{B%~qNla??cU|yGix390guB(uW+@ze|#h~j<ESNtsHE?`kU}k`pT;|ZVQJ^wW znN7`<Ddq2#30FLgMHTo}By0@Y*Mf?!FMo7g%~_e3u<<ds^@36&^B3?GGUyyGL1Reu z2wJ!b+8GB5VP+9f|6@_n%>7p?62f~~XE0^_Vb~I$d1@Wgl)pV`b#)Ak3?`tg39iQ( z7(vGg3L6VE|M)lK%fA^9{_y<Z02L1me;zP{PH{J30c{{+09E*mjK;!H$f(S$%*+__ z@4<~D94D@v;W%*P--9P-c+P+V{4WdWEFq>pe;AnV{8a%hjA3D5KEuHPnnhs*4ahJm zGczkQGBWDix$)rN1xA}YFJ3%gwE1_1gW+EdW6M95zkfi(u1qY9e?U%UDqsf9e1isQ z!KF0lW@xZ07(q8vS-MLYgybtK{G0IL567P;|5DT!GZhGPu8>v_31N}=bA?&wcR|h+ z21bSw76xWemkV@cnkjTUh^V4y36sP>24;qT3``;{3@uDYI5tf9>%y^yfr%l9`2|Z3 z#~lW4(CMa(N(_Pm48}$v5_zc$Q_hEf9~cEbyk!*r_x5eef(0!t3+6JvU<_u|WYlEz z|F`Aem48?MZP@bs;lt<8AKrV#z{pU*!obwVaR#ywQkm6M)mV^m8`r-hjBXcL7??j@ zx^m;U2`HLb7+5qo?tmt?giRqEx0IFGM3upH9eA}4JFBRoXb<BRw>X2Yw49a;|Bkhs zC~)e@`}c<_g@s`b;{v;+7?Y^1;@H&}<CkUx^-N26!m$B#^dIvF77va)phb<Kh6i-( z5~$e)89V{E3m_w!;KmQTD41enis`yp&vb`*T7K#Dh3zRR`BUrC(k3%sV5&Y3TKhjG zXY$;-d(0nV7G(t{=Y)jhEJz9QOG^pKS`Za6D=DW-h(mNie%iuV&`BXI3@jNOXBap^ zsS32WK@`0CiWR*1Duc;mO3c3mW`%zp7g%1bV7B@2_W;M57mP9<%o&i7VgA6P!Epw3 z>^GYGl~6WbL0#?Bbhe!73Ug~t>GXL;PGu@*JeV2&ZqeaT?+vLqP*8at;^O?CocvBB zEfuDk4gcmC*raVKtJ;?XP6Z!WY&ae;$U%Y&v|=87t`oGK2CW9b@d0k5LVJYbVq#1w z$y@t^DxNJn{EGhye@*PPSsc21@=JE-mS64hs&I3w@bas1VPl)X{K2XJ@q#0ax~s2F z4vhYEDLgTCeL>Z}oE47wE-tzDj>SGvU7#iw3j^~5NU{-zCf^NA0e?f7d;Wr&*diPo zw)_TdXUbsyz~aMkhe4J>2fP6s+_DDmW`gz8LFW%cqZHZ6q9WkkOrUfC*&@Ic(f6Qf zZhKBg>FI`s)1~d1)hk;b_4(C$de-{+RlCoqaLKl9OLNM$?_vHBH76-;t0;%WthAWP zp`nvw(q>6;2yMzqniDn0EXK+z&cY(jDx`wR!Z_3<FxxQHEHE3?n_&LH;=u8MK>>7@ z6nGIUXjv<0mo;Q`9n|oLbid8az+F*D>swt-jmZNPwoc9aYU>V`@>~&Wh?+c;Lu*eF zICLlYl)FwV@~LrS<DACvz^VVy!iiruC&w<%2#@@HH6$f<V^PH(aOkFWx#m0MfNJ+W zOb?hE!0jIfVG|*9V>Twxbc>L<vKrH#+Uhednb!814ri)s*>pZLF5Z;}+UGrE!N0@* z-p6fcTnf5fmFWQ!4@5ts2ot-qnGk5&26Qij5ED;T9moLdOqVltRct!1{)KK&VH9Sx zoHK{fl2J5m*FR88<{Z-lrUjfeph5vOj;btZEP9Ud(x*>M57_1$`Ss=q=(r%J2aLa< zN=!lJzM`PUr%#NRm>wKq6*=+~bZyE8mKYWl_7x1!$u`JvH<Q4Qzb}|eSYnuc{%m3N z*|LR!kzoVt3KkW%7}y*<i^`uKwwNtjKnqz|9<Z>mt3ZqZjS(}NDvDlUHu-ag*@UfN z%a(ryTekfF&k*vjhj|Ut8YXtulMD>M7X1IuFy&tliw*M^CU(|SAQ4cC{nx|%glP>$ z9h`qX*g81>|1(7V>tSI4TXzOz9n?vGz)m^~6><2tfN2d2XoB+`R3zfB01FFP&3ULu z%fAK8AHe2ZfQnT7TfmsZBE!VadJ!V>|HfYxsK_OV2m?sh53sJw2oc5zu*emJ2pa>~ zuB!+U<~LxGYakI&C-`3viwM&i3R{H#dLV5<2#L}n{QsY!<*x#Z4%pTkAX`CU_g4Yb zhhk!9y$Ka*`L}@S1z623kO(yLmN2cMax;l>3ZZ7w|NjgY|0XguFi&A(XT1Y;Ov}G1 z%rBT0fEwSR`4sSo0G=j~1$v9;|9=LPe+!s@FfCwWXT1k96e7a<04#DJD&p{O0rMHK z$OEW|$zK7eu7^;Ol79=B7l73~f{Nt)>tM-Yu3=(leGC;T__u(mjX8&jo%IP+q~+fN z77ehPr%;iKe-l_dz#`9}A{qY{uw;OBJ%@_4{F}g{0Ty`y70LNGfyIWofr*{<B~&Ej z-vZ_bU^TCxA{qZCu=s#Yehn2V_&0&Y0j%o{RAkTJ2BrpZ8h;BF@%Y=o!~+(22NgN@ zw}EK^SmZraMB{G*<1ett2dKz~e}7n1m_VyYKf**9JXlm1{xGq#egcVrN|gT%EG&#i zu$Cx{0+12~ys!BM3lB>Gq`Aea1lmq)Yy{fBiqhONx&8O=Z4fT)?k+9u?v`NGW#ne$ zVAS|`<KK^eU;kZRbMo-s<Hz?NJ_)*vfPsO@jl}^}s45CVTUupY|GqGaU0_bzbY;iy z1E6*x0|WCFmH-AR@CJGCj4q;`1)4l!XBSlzZD3rJ5K$EsRdwRou3h&m>oe{!smx%^ z2rRJoi%SlixqpAJM@?JU7LFARj0_q7KQKRG2>>-1SV6Tf=<ajK-~m$mN)$X}3~r*p z+gB<LCyTGNCMP%c6-7iOw-!Z3)tzC=+XLEv*^<*fvFMaQ*t7)K=y+F;h$-Q&PEpaW zag##)J0oIi_&J2SlVc_ZgTj%4frW*|0n)ZIHw9gi1==~vYHBWMEEvPYGa=&N6s8OR z7O)&SvV`fzlYb&CD~|l|U}k^>#{Un@7g!uXO)HSok(!2Bn^qE4dvci0Fjq&VwRNRg zX38D0VLI~njRuQKdtk=e^nzmoA=8rl;>u$aN{qBLm~2-3J7QoHJ~tz8O%lkV|35I_ zVF_W7106WQ3ff9zf~RE#ZI*!ARXVZDo4j%^&02kr{{l~TU`q>!;>NVBWeK^5TasHl z5}a~u*f^^N?3zyZE@R}Hv#-n5|Jp9UxTrZvSu2tjRECF_TE<&M6@hAP1_tI9Ncu2_ zHmT+?@%&xDZ1eXE^8}6+EB<6KFf+vb|G@l#C4fPeK^rs|4hk1j69Nq?(C8qfJq2;M zsE8PoM$3hY*`+xZd3(xAcIQ^)R8Orq*W{9I+nMZ?>)4(dURfC)RaPbt)DxC4ONc|X zKP0Hh$EPVMq+gUnbXIIwPtX*D00WN<y#OPR48{*hPEK)gPEMeJO!)tS`2jc}K~r_0 zy+9&N;GQhOR+IoVB-h=Bg`~>rOmIjxIHcRQCVOO?vvJn5gn+_w$-l32k-{=(MZyAb zo6aG@02G-20vH%rwt)AYfOnky3t(+{@~Z(f&Gi32L(IPkEIdp<nAq9m85sVp`2U|F z;ok}-H>MX%>}(29k&=Han6H4<C_+Ut{>@;10v1t%ip2a|!NLO8r3@7*`8R|40$4-^ zDiZT=2J;=JKTPaws!$P+e=C?<z-rW>A|N#%z$U9hMH2qaV15ABr2!RL@IQk21d|C9 zJDW2D!!MAV7cdkspJ0?>VrO%KitPA*gn13)876i%R|W>~<!LManJ|SgmoTxjxiK*O z+VlTEgTp@)#y4OQcc@4V^9vRpjsQq#urPp1Di#JNHx6(~#fVl?u`oc(s{j8PKz-ON zV2z3l3}B5J%paJaaDdAiP+tf!Lx)(Z0qQh@R;Q3y)-Zn{RM>#xm4$%?bPFRpn=;fv zCCnd~FK~cM5Rii?EkT$+;4DHw)-!)#zQYj$iE40oc(5=qw?G0C)=PqCX%+@(riSYL z01ioYki$U<lKBJk1F%^dAQ8|3tt=auPq6nuDlYJ{Pg6xv#ycDSi7;!hYygdIFiNah z!@$U}fb|6P3APegYnu7QpBro?Yd~WNJ6I){*RX?@`?7;}Oh6XV?qK@zmxt*KNXfq? zU;|b#S1^Te>;U(MLER6~wOL}IId-NMc|~Vz5-g14oz4{Hu}N%a44xKr<6A??rw38f z7{eGC8621^7~ep&f_om24ae%nVnU2>@`}#bC77AUJAn0W`L}9X$enLh6`$`$%>1|c z|9^%U<`pbF90E+>T*(aDTamzgfXR)60g@}hA|=cRn6H4<C^9gBMKYK-Fh2o{C_zPH zm=Cb9fORQDMM{`AFkb+Rs6a(xm^U!r;ShmD71$gP<^#+vU^Qw;YCeEXR)>ltFmGUf z0M?}e6JcQBJi)=hpw6brY{0<4pvGp!aDaiGO_B8rcy)Th{|}u1I2^#@5LIHJb>3`B zY*G+;1_n;h*$?RYm01(O@)-;aTrwO2VDn!vfJ{&ZZ>?ZsvjHtKWhnXofh!4W{{yi7 zc3}He+1kMRV;C6NLAyUd=IbypFtD*%{Q-rn$Nvv7dzm(X^*Mm`sk4@V^?}?CT8jwM zhwLwPsJ}q=PQhZYI@=Pk{tWOwZ-l$mK<;H=XH#ce13r)H&HpDHEF3Znf(-Huh79%$ zpzVV20Rd1m2h`Cvhpgs+9!t$gK%SY=n33g0?B<514N=h>8=5x7oQcTE3=hf4jQ(wb zRk#6MConeT6znc6++6^n?&QQyo*WAzm`_7QFeH8|gX$3mc7`|qpKwh<@<kv+JVP>Q z#l8t-yjc{xPgn`~geadrN!is@u_h*FO-0kLlrtGQIVtIxIT?%x;?{u#l6N*#ZHU{D zlaraAk&~JI;|w_ga1w|A2?Y!%C}4O&ClA1)7Zfms4D}4nv=1CYfd|@m%JL**cWv$J zh=|p-wYxLGftQ+{mBn}<YHe-p+9;6l`j`!QS=p(X*;!dQ0*^xnq<VKo+RoZqB-P)R z;7?T~2kNiIIHKY2c5pIeVF>yEh8uKv6liB9KZ6BmTbZIM$e+rL#+*#XjEwBybs?gJ zCl;ps-N97xuOZ@J%@M{OCm479y8`wMy9l8P2i64(7W_+K?)X!|!tjUT5BStCCW4a? zpkb2#U$|8`co@`JLHGBlvuUzefD1?tb{ob7u>2eD04(xMNb;abEH%)`52%;~U*5vb z`i<QHrk`sLSU>2pA&~i?VvwDUjqL|x0s|wH0ow%@3l7jG4+chIMMfrrFN`ApPOx2I zya3vy!qCDtgC&N;0b1#T4sr!4QeZS;<oGw`@016OEdOq>&0t*dF9L)a7#Vl4U0^-{ zHIGqIm<e?3u*esvd5jDX*w!$qa5RAGX3%cD2QG{Z3)t2$UiqiPz{J?V&cMpR;Q;A# zf>v~b2iHYK*c6c#gE1-CCnnmvMn^OLhBDY0z<gII*VR4|WERH@Rt7E&QqAIcfngRS z!v(e-ECw7Ipw(TB%*@KBjK++j%mEiJJYaOW!RW%agHht&3jxLj{}Kd1C%m!kU|GXq z0-mJ+FVF)Y(rhXYTF(MLnToMz$NEOgh=5QtOaCqF8(pK^{46cK*>-TuJgjb{9%(Ny zX9tL8U}WgwIKz^{<$=d27i>mxoWV3|3A+Ug=;Rg9ra{nt0G~e*91JH;FfcOQVVl4r z!2vqtk%7?|<Ve^;T4tL&4-V|Te<wUMGn#{8(YbSr{L0Gy|A%Q{Vq?n#?<`!w&cOHs z9BZJ(2B0N}MxgO`#sJskWLMYZWOjx)NarYyfr-I~Z4I*mX98qq8`L6&R|O*ARVDEL z8RL$$rHP44)6y2l$1hF`$;k-`$;n|`6E!O#VF4J;ikea4;ayqj?NP$O#4wGchv^pA z1qMFQzyT!bfLB(4Dj?($3&tH4tNdC50$Tk1S_15Xg6!;qf;f6sRX_v+TKp!2+S-PK zFlhTDQoIWb8;de3Gnz7PxNzaYzdbkp?cvDy_kvME;9mmc0s#hQhBIsjST(?hHiBpE z8HE*@Sz+l{SxHS5iOtmG!6-1{Z-t+qUr>;rpC7YK5QG)P4my5gf`xr#q`iG;sI^m6 zl#_jEC<7zIhrcVB<}h%8nxv}6?BKqGGQ?l%j1or#{F<(w=ZLLNE8+;?$u4bNJjdGA z)rgaUk)h%53Z?=E$U+8iCNcv}ZbI4>AQt1C>V+N)T5_WLbZm6pL<JPH|E_3n^qSIT z6XG-_O4nF|XM?CZ10%z<zY&Z-{>MS`tugbof={ddMliAc{q_I<KLNH23=$j*7}(iT zeuLUzOh5hDF8t*K7XqLaUyPsweH4X%&G@&CQSHl(FN`|VAmstLjA8s8!nWe?3UC<% zp8fo@fRW?HzbPCJ|1ub7Ffjf4!FJ)_4s^r*IAJ&J*By3?e=U%HFQcfU>Ax0eLTCET z!_M%p2b@kpCvk%V1F{zlxpeux23m^XD_t0WTd>XeSHi&oUQC9PY5vZ*bARuF2X~?~ z)1o*ypqYk&@i!k^!apzeD_{+flmJ=WDf*l5!GQyJ?nI^KM6e|+x^!t#V0o1v1LL0< zwl)7aI3ULYD4RmY!OX!Ki~X;~k<9SAD30@2oBY_;++fo)Ff*Dlp&~7g=l}oT0&F|} z6>wxQu(M_TascJe-#To2{?%}}fJ-k%Q)6*+V^PLG4gc0WICAE}zZGnI7%K!`yb$=; z@&Ett2(}&n4LD2~*x9mwwSd~Oe@xgJ{(?JjYz4o2Kq9{b*xvk8;RMBY;cphup^|@J zu=@P3VebIVCo>y>FOXq2ZBcNDv6-W2q$t4N(RpN#afVTPQG@6I|G%gFUGcYtA%uaQ zt?ai5$bEkd{;v3YhXFjJt%#Pi|HK>-0VnOKy0jt>o{S1a%KmNe_rkvk{~N&Gf)&bt zL75X=DF3~HTqysx_{Z_D<bMt5h&fhc5zvZdHE7@b?~FUCJL?WSxD%C@8Qqe%BJS$^ z!15{v#y=AOSpH`GcLDhdQl3B(%bx?#V(lLbyjWxWeeN&IU#tHXppE#fpdtsfT+Y<= zua#bm+Z<!h6FFYX=UV0XEl(_BVEWbZkL8~R*kF9=&;V);6E~EBun%VM|Np-O{%-lF z!T^fx!rv_4IsX6u74R?Sf53kW26on!ze4_7FfjgR`N#6_&i@A7waD*1*lLk~Ea<fe z3&Rfv25tck1qN;geg;L*^_-wPEWykC8I=V=GgIIa9bTk^LIPAsK?`+J5wRa1m}iK5 z`S2%4gmnsY#y_7a*Go&TO`3AGxai6x&?@nYl2Q(apLf_)elV~}{CvTbbLI?VP1%*c zj=n2pQ0m0g>W+#jQz|;Dr~dyBI$@Cqbo84V>rPO!iNTZQ0VtI+Y++#FI>I5q02A+I zg`7$NTBZGjgMo>Skq@j6d}2M<1t##)?f?H7R{Vd$z5{e{DkCWKu(Q@MtznJ<t-t^O zgw2HY4TB8m5Isgw@TEnF?O{TqA|j%Sf}r(TDvU~O?1GAdYHF+<MgRV`Py6@#Sbo(x zM#gr~1>nCQcpuDZWMuePpLWEL>4nFBMu7<)A(dAcCFaj(l(<rP=--BG%#teqY+Qo_ zSvJRd|7&3E@d#mHWE5jy;8b8|VBlb2P-J8jXH*nbWMrB4r-8X)*55X^te?}Es+b#? z8)p1%yYsgLqMkPamwK*MU&Aof%iuI$GV2+t`OI+lurh#G)Pmf^$)v6*%4n`A3UikP z(~G~??y!CP$#sWK3go(3f2ICPF!tQJ!w6nd3o-=kNWzA2n|(QThbs!x5JtuX1_sV7 zs87{F7XpB`cD|a$RP}QjTh`yUS<DSHn5ynDRm}R+zyMawy9!M;m)0z%s;^;OtH7#f zF;(1Qs+s{)ErV{h1jy`X(<C8gBUCfPT>|rtIwNRZov9)_qp6}e>#JEzFaAo*Vs7~U zjqTf=pU>E&?#y6%!Srm_pN4-+;6akWzyNk1Rx>~jg_!Yq8@Jh=ugkciFwJ0O3S(m8 z2;u;z6-GftaYaUUMq#EfmQPH78dy5!{H|bP=3)7A<9FE{mM)Mlne>>LIJBVZ)fpAd z6$O=rnNH1N>G;#Y#PaDD6BE-MmaZGWd6*j*7@71K7&x?8|A7)BqoATXXz3s`ht_XC zCgz6U6?0fRm{`92=DESrHRpF3SbZ1+14j^4y*Q&HyP}{mGyAqVzblv<n11u!Vq*O_ z=Xco+mM<WefD;5Lc6ec_929_{E2?2hs*N)Q97%r~W-(QLTLVwT;0OZ=R=`rfkQO_* zO$$nyj38GsqL{;b1!2x79qi_?z}>?NF7bpJ7!*Nq%E>GaO6%;5=8EEoDEamVk{cnZ zo-6Inx3W7N>)`PNk_2T|<QxFD0PIlQ7VxctrJGMVATwtDg;>D%?9Rt;cX;*iTENJ- zkAZ>X00$2!x)cQ&)fqw8nXp{?+cAf^30zvR<sic0C+Og%1OLBp9D*hWK}K;<5*B1# z$5b)rPu(9-PU2wrIfbce7Q`uSY&i^!j0gVC;W)tQ0B+kbnlr+zVH9U|fJVtIP{y6{ zw~eW4#@{)hP-x>wLD>6!4io4iN>FHXgW4KmphZ@o3+ceE9>~ry(7DBYOv;>0;*5+; z3~cYJPL@}ks7g!Q&Zx6FecOl5-zz{anh6RVW}!P3r>d$>RNUG8@5=VhkK5D#yaU-k z^RMJzNd_iR!Ova8;lKc~2E5b9j>*^<w0jD&DpFAt6j0`j%uBZYy9_oxEv@ooMfu4p zws(KCW`MHs4CV%Ap)HKM+dDsOOTSZbqN?gt#hpLzW-&cudI2dq#26Yl71+Ve6IC1q zb_2*&kP`d<e?~Ee2Hphr1}1j4l?)6F4G<9-1+d5}gb2t`CU&;f2ob0*(6}O`glpi; zf?ABdJOo7}Qi0gOy9%P5lL?}pON+Sy6mifpk-gzh132pMFjaugH)3dz$pX7-J=6^e z3}73X*x5iMsUVjpFn|qZVrSb3RRi+fDzL6?2oWJIu*i0V2*@c+>})#_B2YD;+8yLO z1BM?QJJ>*59vMJogE%9j!3-t=7MD4{6`1GD`TK*#Va{(A1|}vIh9B%b;1xCO3=FE! zBhQ!)%wah*XU=bvIV@*>%wah(=eGrzU|?kE`QO0R!@<D7#K0h|$k@Zh@SA~y;d=u} zhJk^rhob=`W6a3d!wMRrXaLJ}{Ab|g-~{X8Wa8xb-oVlDp8+J#z{tq)pMeu}gg+B# zi#a1B2S^HJDCkH}xK*qm%Q%_Aw*6^ju4k?X*~z}-7auF=mV_R-&8!TdTY*&-A=ZCy zWc&B0k)z>z!yT|XggaOn7&w`j1sNfZx$}z;;vR?w(9vmdSAlM%7vy9HIqXLa>nD&( zkn<p}fLv?Cbpz}-@QGf=oJ^1@bI5^W#=?pYtUjzhzqa`1=KA{P=IVYC`uBp9;X4B( z6PWMoo68i&1e$$^ZBrKp9U-K`fW8Nvl>^VtYK0{@c84=C!MDGIwnQ_q61lq_uWh(? zuj6zD_C4y1j2sLMoE(rYC}^(}BL@d~I1m*6a2a;coqdXes-W}9K%4*WKyCs0!ElGo z14$uxODU*-3ffZv+Vm|b!ln$q_5pOxCFq(_K@l+~k2y=0%wcT+k-r*P8yr+r9DadF zgy5VdcT^k@G7QW}juZypc&8|;2-;YH&mP7ccD)~$?trYpVj1g#6Tda6ZDRq*#v3?n zWY#$GcL8o285uhM9pL8R1Pxv?a58gq{5tV#2df7Q!><FZ4y>TlAQ1BG;0m6Blb=K4 z?~cD4m;zWW{_gm@gUJJQz$}>W01;>V01{;i_;mmz%H#nNW%BrS03r@LmlJL)I|BnJ zJKSET-+zC9WZ{R||LXt?=kM>ozcX+kxf9|J$bIYb3=Ew7s+?@9oNP=tz_tba-N2ae zZ^6F>ED>P7$KM@{5&u^FTfh<kwjIO=%l|7tm1o?*6aaGTzXgm5AQOHaVDexJ_`BiX z3dRT!e+8=a3RGDJE`~4vMYzszya6waQwHz4*Jm(hFlVp^9nlZ&^ucC)Aj5c|Em`0# znV|hlpgpvVpzU&|ilU(Q1bFTi$_HJn#`>V<TvgS%n%c8fRcCA6id<ZZ++2%YT#BU+ zFmC8z+|cpw3{%2CpML=zj2nJGIPfO}B=%<xQ$h_`h{*=7x8_{c372A5xDm`9ObLG% z{QCpeka6I^p9LV(0{;1cgc)@}!i*aZ9AJC_7G~f?@+T|~V7>*7ZGyHRz(*BH^3`23 ze8Lg{awXA@2OXpKfUAH*hXGO~GO95NnVYGwh>L?sF(D>)Mn*F;(0NB}?2L?RYM^bh zV&bd|e*dWs463SSbYyg_?dYgubYOI>tqKaP{{4qJBf!+eKj`A6kbn38-4DKeG05M< z%wK_prJB)=(YXSot)&H|wBq01f4i#x8Z&45U%BiXXlfSt?>VDnpqXi)@8v80ppn%7 zFsCuFVsRL5N8q#!d=eViP$o9EXP|*3Muz`yxEeSaKqnn>GAlANDl#&%9{9_{sP&hN zc>$vWqXP4Szg&!3OniUuF;_6DFjxHP_<QG12Llt5PGJTHh+a-+W=2J3W<^G3Y-arB zVJw)$Sn<zlLf=0N#)?VkW-?3t`^LD1Q2=xx&A$)-d>9x(N8NKda4cY81J%*sdVzsu z0n38F3w}4SFt9B6o$v>=goFu69WP9!I!L)9BO_eHe8zO94~*%56%jhOfV4B+XJBDu z_!k1T2z2rW=#WK0P+$mxj_?5;aV7|=a~Ktw6aIpZ$%Htd;g1K?hra?4L;or=rZX;K ziUB$5?~*?oK*?~+52gsF7^eGw6&ctVL;hdl+`ys7V9nsk5YCXwP|Q#cs@<XcjEn_A zbJvJLAVoM6H1MV@2tEb^!~`wIGX)>}2wwMY3SFfoCTtA3n}iMA99IPGQiKZ#!%inw z29+#~ih_#FY~{yFOOKVmcmbg+j+HS^Dm_|JakRAbXvMQ<5W3=M>A$?PV-*gW_Al%+ z?d-sm1DM4U_{<^0&Mw2jA=4JhdS;vX=MUqge|dVP$I9^=2(c7w`5A<%EI*(oIb_<} zW;#I3|D|M?X%BS((=5hGpfkZ)JlLmjh%kVfW8lsi<B=K6Cd?)?{-&^a%m6L(p20MW zfr(Lv38apJ0d!q7<g7S|Y6G@}UnVde>?(Ke{8oYMVrJ<1|A51UoreK*XRkRZF^MxW zLe|R>zqMD0*^k+;?T^kM9p)gScKNbc{Mp3p*YZb)`N|1W_WME;KFE)tlcN+x!FO1K z#<|#<nD_m0`c=m)!aRp*!k;&PQaBjy-1%|m4!a5{?=moOIe_<0aWgO|nks^a#z2=O zGBPktV4lM)^0(km3R52QzB}wHAWe4|m_cKEoFF~S3~UT)44|F_JENc?tEmy>=xhei z6)g-*rp6*dVxU_W%|N>c)KnOoW-u4c_~XNLfYIS9V=<%T{CWSL{p-DY<zMf=XY=pW z++$Q(wwzJrZcXjoe|Oo{X8h@!!Pvue;Le@-AZ1q|%H}glF&1B0_V3Q!+S<E}%FCBC zD&MVTV1hV_^8$lBXt5_F0hcf{GO`kOLi*ozOhN1_gsuO_!4$+4gzgAMP@~$^1axGS zs1gh0&UR>M7>h75urLaO90BtCy!nihjKx=%|GRs)w&pIQ3dmFUY9RLhd&3k2@$(hN zVn(U?cR+!&9IUkVE~CmaNT{&tuq^qzj)8^Y9RmYT0(_^wAb1=I+Dv9-XEYa7XB207 z@rRB17kkBzhivXYcm8?6es9w6N0TP8$V~$6b_2Jd|J?a!GlfNF%I^RW2`UpA7<h`n z#&R(5Fo28|R0MT*!6#yaDhfqL2KEZ(Uw_zs*MLj{naCpd^B9{4=<Hz7{hXjlea00a z<9<H@nf&D60%jFv70_*M3=CYLyFfs@JU|2E490>m7eh|l{=r%EJ%Rnm4;$7MzaLFv zkpmNxKx-H7uzCDy0h=}jWHJL2!wyChjuRYm44{<B0J;mFlW7kJ+xKrQ94s7+CX7A* zN|?@oOkiMP6l2um+z0NmLe9Sdb^S~sr!9kq;+Zo*(Z7wI?b3}ukC-JG^+0j_*XhO$ zmN&meSVX`_OQITqWB`(8RE-SGj1r7`oS+lUnZP@VK_@}8g7-Ztin8Z11$~dWafzLc zQ4bWKIUuVb7BMhz?&AO*6b*7K)FMy|3dthoIWQOgs$+}#xeR0#0|Vy)gf`Hj)1YnC zrpQ(?&jDHWO9-TewFzvS#Qz5zTpUacP#3Z?DzY*|Hs7%B_`8l}$zLa?Tfe@r@+dF` zZ3ErO%(@P&je&6;mjYW5OdBW2eV~wJ`2q^bKRh>>(pVoct^>L9cO0m4WPE~6A1Ggd zTDpS9f^0fWK|h*UA2FrfU<BE_F6YLLe=;DgkTl7<gac+BAE@C0)dsSZkpXPaE9Q>B z7jFE$z}&&cz!da%-S2-VPW)qH+xF9odB=$pAXEMyVqL-^0(CSW0|P4~=yokpa3kAP zQIt6d<m2B6bL^Oc7#mKU_<IU$$cGar{{LrC_*28L!QH~Z&d$an1D+R2`E!8p3AY0S zJ3Bi_gn{V~%byx<9_|(fanQUEqk;+p<h}t0@Pz{mpq&8>3@oZ3aR?hC4%#=sz`(-X z@$cZ@{r}|u%|CRAF_G~hlOv-&qdk)&<3q;8Lx=v&|0n-<|G$Hbl8nC@mou8LTJ`Vb zzsP^A|DOMQ{*U!v<iC@vRxz40E@%Axrv{I9xD_u}LsT<LU@`Fp#KhGMOn*H79N;>^ z?Evo8fZF$__<Fy87p&N@VFmXE5c!3VM?_g$Tlw=FB^{kV2jId6D>l5)Q9{Te1+6** z6Z0F;6cs#(VS%pB;K%}6Vu%QQgp4OM==5f6G9ln-!6p;WVuiz=P8K&DGQG@`aL6pg zDRYz!hpQPmSwQDiVsRTIA1+rjO0a;=4aKHMndty_w=rrngN|axrpJM~1c#n77SNIF z*!0xm)Kka8g~PON79|`qGjaNKDKjpg9>tYH7*8;P4_C)bJB;UX+H;lp4-U7zWii1n z!^($KhM#2}4m|=aUN~fgSmbcX2s1CiAtS;9x|0J-{IH6#nBmYP&T<5Yj06jK8W%I% zSS4|qCWSK$q*+1NRbg|R3}n?F7JFowK}%w=>5*fp!QpCooHB-NGC1^@vhv}O@n!+9 z_`~A1I96Py&1SxX!?Za#O`Ffcf<w<joHC1W$}Gkyvjmq6+b*Uw>@Hy2&6I*eW<L}7 zKyu8`VLQTvBki!AWqQXDfK*w+%WJlCOlKIvkYr%hD5CTSSEv8~GazIfSvbIM!<2!Q z{+Kc$%#ak1DFZA0F=aZTB_E~?tn|l}ftCK4GO*GgLxz!)<q&rNF!C|q!yzL9P4Sqf z!AgHj8CdC$DFZA0F=fi2r6r~etn|l}sl%xUR{CS=ftCK4GO*GgQwCQ0W6Hove@q!z z>5nM`EB!HLV5L8X47~Kml!2B0m@=@^A5#Wa`eVunGoQhp4p?EOKc*frXibYLBhIn~ zhiS0VA5#yk^v9HemHwDAu+kq>23GoG%D_s0Oc_||k0}Ey{V`==r9Y+&tn|l}ftCK4 zGO*GgQwCQ0W6Hove@q!z>5nM`EB!HLV5L8%46O9Wl!2B07&7qEA5#Wa`eVw#N`Fil zSm}=`11tS8WniU0ScZWKv|Nr2bjA%Ig9HO;R6tY_bcZ|WC~+3>Bpzs%L|O3%%auPW zOdNL@_2<t0ck#~OA50uQhf^P2`ul@};m+TN3IBd=+Vt<ktQ&=!Qzl>i|DR#Q-yIw- zpe1T73ZQh)!OSw_|BC<r89{fBKH+j;Qe)u-iL+%e>|g@lMfy*G9klriD$c>o2H9Hm zgMon$bQHWA1L%4qcE-2tFF;*C(5>|B4xlA+44{jLSQtJqFtF|cPiL}2X30Rutb#G< zf(KDWQ&x*7f2aIl@%S@^`NJOpmVm#1m{^!MfDT6eQ*h@F^91m@@Sr<feb}!sfWtyj z5xnd|NW~a*J)k0^AZR92L`=+>&F3%6oqy-&&u28e!}#Ej56gvrPyQ)f-5#*6Zx*A# zrcI1oQ<xlH{1jk%aB*_V+H3}9h9Cc*aNgjMVPJ+_3kX{C%c!i!tgOTW>Uy#m8`&{| z&Om2TR)F+ZLATV4fn3k7@~ekK<A+%8>^*6_{$1X<kx_S7+Me0DVn1Z2-1+x@_P<~M zGG4u6oWaO8n^Ex2lpiKPSQ_r!VPwc&ly9-;-=u%v{(bv5X^%zz;;gwp)<!WhFy3Hv zVRT`<!N?G`_B-PvkoW)pXYly@f&Byr1CtsH8z@pZm{@oGp98v-7kb656zKXkMr9=x z(A*N}Y<4kGMeu<?;IVIGV|Ju<DMn_dijd<#)l3B#SR!7W_;-5!E=HRprx?vQ{(Exm zK*x@_z|B)0ym;|o!l9(%!xazjGRmC!x8=aTe>+Yw)-YeGf4^eGpSHFit9mzw%}kA) zpJK5lU{O`m0<Vjc&;0vWRrco;qd24J|Njgt{?1^}03|U7PmrtGN|`qN{{RwaU|`c= zzrw)AeE$Q(|Nm%7g^{7-?;<wPZaZZL26JQZz6a3Asfw~P{Ddbl&_W(2@bXEfjz3(p ze@tHYzkB_^Gbd*-t@*uzb;DnsCya5&N^ktTvi<hIS+^s)uaqxil-_uPQDwmerUL>G zw*2K0;kx~=>*KC}C!W=9V6^=IA7U$429p|l57@QEj1Hh>7YqyjE@A^6Ri(_ppvnfh zb{lj_o{BlhHK5y@MM0@VR741LOqZEC+YjzL|7PFW{_o0-(qoMAkN@hhZuq@|Y0V5! zFn9l7H~GgL&WN-Bj&G=Y#%QtYBV*ZZE)k|LTOJ7fb-1wL-<=a1|2<t+ex(}{EUafh zk<NSz<RJEc|Nej$N;4e!|Ab9|^$mE)S&$792&SgsgZo)P+e;xcrlO#X0J_KARMC`8 zKxyH>-#f1S+q-oeqr<sNjKUN7eh8gk-Eg_K`f5kcvK+C0HB3MLKF}))S;?q<<iR0E zjb$xQCiG4&Jzn#m?qsR9xzLL{3``)K*>%`V82G_wr7J@=X^4wLwnYgN>y|xBSIhax z32E~u6cBb6^Oq&Zu5okjU}jCI_?JMyiU0qDGBP{(DlUejpg?2fWCHE?WM){xz`z{9 zdI7ux2{bVPI>S;>Q4o~TnFIcYFy8t1hVjYY5Y`KK?))-fy#Ts~0+jC<7}&G87BH!? zD1%I6t7c1J0!=M={eQx?f<uOZl|dSOL9Dtk=vG8wGc(9FFzk?HhsDL%*qNcz+UCNH z%;1?Q(D9$_Y;24M8X+t#1}?vC(pZ_8xpJz6q<AEx&7`ki<78rH^<(}s?RYXbX8@x^ z3nzO?g^&`DgtQ^!1Odhh<|`uqru;EsvC#2VOig8GzQ@Ay{=7!0?q8k1EENZGY$kd$ zO<`Q}dy03CXj&B$(+w6D(D{LXKd|L+$S_DV$TKjgih_zwK}doT0u>aX6vHGcC?X^V znj&OwdGK%P(Zh_1Z*DMp?D+R2|5W?T`xVu<7|s7ZIq~EsWBm`t8UGn;udMoa@p$X8 z+^PTG?Ejas{ojkZe>Ipu*Y>RWJA>7O%Yi|d!IZ%cv^L3zMNCwLjRmoJT~XLrfk6;d z2!Rge5D^m-X9pd@Wo8VWq*GQF2JbIWW;Ff5xBzrJ_^N;B&YU=Md+*M}{}K+IU<_ca zSoQD5K9|gB-*k<Fh?V*OuUb^Bih6wY$b=7H4*Z+Y@ox$TL-X4O^WL?rI5J_{roS5h z-v9f$>)+4ra959Hd!a3A)f+1|u8mnyw0%F@ln);S{&g@`2tbk#H|U6cHAV?ggfnuo z8GvdtP#w&=0+bga;%o&>HGjT<R%tLWu;f6K6@#j%qA6&woh9eb2Zw)eZrr%R@&lBZ zAm;LVfbLUc)P|VL;Q^X#X1Kw?z&eYK0lYmxP?=F#P#JWdrXcIA7k|}6-aKKtC&I?? zi-E=C_YO9O-&<IG7+4uz{C~p9!}<oAlKB}-K`{!k7?hg97!<*f5<!m1SX2p|LD@uM zMS`)Y5+4&M&z~6%|K2bk`76Mj@n^>0H<$jMU%Hf0|AJj<Wt(5dqFFI*n<64NcSOxt zl;PJ_Q3ChP-wAi_FcsXm@k`_cW7su?Ym8whICwa2@bFCg(x))t%M>1-8yq~KOSo73 zJ;2cczA;{h!5FlF4N_LAF`1gGii!xafN}zOIvL_TCQ(sEQxhS`<)f;g3u#PM**4f- z{P$(rsegy=7Bk8;GqN47y6ns-@b81w<@!l?r~3SRQvQU|?R-BY^BE?ge{cRBU~FI! z`ST~f&Ash6W76F<EE}Hx+qur&lW7mroxeOxE1Z2}cl`UXdBK8*j43~xyxO;ZJ-}&D z@&a^%<d6SPI6zy_l|XkMKu>Tqg`K_#W`IgsHFfZ=549gZc9-^U|FOEU@%WF~|9&s% zy6NiuqIbd1ekKLh2fq~7ty;AXnLhBZE-^VdvF;xO3&V>4JnTC-et_dooIxEFFv^19 z%SQ#67!+ac3k3!tW&tMfwX1>xps-RAVp;Oy#S7*?ul{BH`-Ny$FtRbuc=ci9zstK| z&5vD-x*HjH{0(7R!|nhge{=lX^H1YH19IcyKf^zbe|s3Y81wcZS|NKF^B7ndzWjf} z@rO%-L6kv(!I~kAfdO>bj1qXyp{OXN%$H+gR5vp-H8lop%}|A0T@0%IAi)GWr37?g zv5*<7sganFs37Fv5;d?aM45>iyMl#H#r~O%*7kvW*3S%_IDOqe(E?rL7j7y4^h#&X zE}gLB$;96a7W|z&`7evdqQ4U-{#~@-XaAG!y%lrjaF*;aaxilAmN1wz!N|er?+PEw z6yug2v)sr9FZQ4O^Wo&-RqL2s{_Z*Oudb6(^b)hc1xC^C7caX1y}t10!=-<(JL~=( z0Liagb@(K+z{&lP_8-RyPSEj<(%^{+MN>s_MNwr@V?o#w19(zk1c|YL7bn2QSW^B4 zu;j4(v-t4><m#XO;N-zv@CB4M=DcfrvbwSHG^fFwIU5>&DIEA$SNHD#TJk^=0TmYv z4D2&Njc4YE;G6ZnFfg$G0T(l%J3kab8)zYgDx0#RsUl=eC1??Y0;2}wmVY<?C@@uQ zV`OM+{JiF$1>=d{`kp!e=KOoZbmp%K>xHs&EluYt?o162pZS}Efr$Z&*@B=R2BceI z3cc8fg~j9F4aO~u8h;D^b}))Crp)Q7?*$pY=5u4)e+Fh2rZb?T?l;G*sE{dlAa;Pt zN9G2W4E8e&%%D3NLCyx>+XA}c!9)%0bnqTTHfEQ94;WP#75?%36ZvzXG(9@=-xo%U zhOO}_`&hp)-T;++e>$R^>?1FvEK5pQ20Bw-=kE&kBOG!JG7Ji!lY$u)%|Jy5_^^9W zJ`yxi5fU^NU}69@&V(7o89|uQ=idYIrbmpPcNqN`k39SM&-UMu4~%ZhR{q=ab?v`D z%crrJ6#PE1g2f`__Y;<9a~Rd$bp6}%ch|p;3I96&Ui^2Ok>MNT9!9Mxj8=@d89BTD z{rLNXso=oh3IBYUa?bn(9htr7{}Xl#4jItV?yO2GOoFD0qKc5Fp^A{HDd?_j(DD>^ zbvtHb1r{MeQ2{0v=3DRn%{<9^=668d)7iTinc9LDzMtngcVVE5Zr$Yh{*2;`Gap?3 zS1WUaaW<psnj1Pt{(b4#$>?)?!3IX*eaT{aDi>r8RD|FC^Zs{v!N1r4y#D_G&oJTt z6LubOCr%Mm-LPda^nly4AO1dJXMi}55waUlT~!TqEr5U!sMjDQt_UuRnZQ+rI4dM_ zSOvWNjO_k7-1zrk!YRi5@0S^^_KN*`qJ00rnm1L^+q)PqEL)Uz`0tY!Y!+5pHeyrU zpEBB>{=g{BxcJ$Ef0wR3ySC)t@%tYp-k+<#z+y#B+U$5xW1E42tpi-2f^I2eXaC12 zz~BH9|0jSf&cVzK8r^0BE#+s2+#D+f-ItGYqc7;zanSZKMW!!*HJD~FdBD5D4Df#N z4$yLsKTBX8VGf2L@V@YhzX$jfIAj>qK<g(M*qIM=B!Fvu(6%lPP&Q<|io#a|@fkp_ zHuxU^Ix6P>6SffW^$Vai#7w4wih|%nEkU=oD=V?Fn}W}=02PER%oXSUZ9Bjy^ZDe- z&!yQy7D93{2HSt1`L{`C8l%o5){0*p&u`v*&b*~PmznhrC;!jqe|#SOyE2V|nPJ91 z0rm(E&^-h)42qyi3bZ@`d^rdk8#_C=7yxBiHD$=cEJo28j0*oAFwJ?wXtgNs!X%%+ z3mEtG?2ZlHIqhG|zXz-n{)#Z_FnwSzW0d&!qNn@c=ObN@7HG&kNnDy%usrt1vws4t z4ZkLU+e8cu90{B+7}QuqA&H5xg>eM~Gw2XO))TB3z}J29g6_^#WK?EkWLIVcEfHf{ z!uWyF<nNj#|9TjIm@N6bhB@Tl2PPlpmOlc_AO4i2Fn{>-<F5tN2?kb%76t~60uBZS zF$O6HdGLMY42p_^0t||ZMsiG|f{M^J%50+GrVS&qEsP8PJz-2^v}0N@|Idcle-92F z`<u|TE`pWg_X)-gOm&Pdf7Q196Ju(#+3;71`PsiGjDHvd7$ux1y<YK;h4IhB`OeFy zv9Y{(@p}bJ#BUpxBfsY)upIeg@%sde1p_;1Z8JA$F+XTUh8%+ugE|A~o^%F~E5Ow? zk#1!B@#~Gu59TeTxs)a4&K>4Cpzi+<1`=G&0vZSa-xLqJgq0VxMg_Ej(U_6Z+?WyM za?nkG%m@C?_;-it!Uo0{e-{XBU^?<|&L0z|oPTfFHGbUSVEDnnZgS=a1GB@MHy(dE zn0|n+i)Ucq)PWA(fEK=hF1~{Y1Zb%Mss$`Ae|da<uy)|EhS}l83zh>QzumxQA81YH z-xX{&ppgR>&_%B7Y^6**;0$=-{}VPFaJdE%&tUKX4NfumFfeebaDm20z*hyc<uM&V z5(f=tLBul{e}KzD2IdIn8!T5qn^}dip02P1+g?`Y2=u+IOurl0R{SgA03FfG&j3F9 zf)TPW8+-)9pN<2J8vmaB(+Ttr^!E?+^J81VnDcK6;|lx87#sV@7zU<47Hlj2&EN#x z9}m*csL05Stlxo=htcO>%M+0PAV2RwwiS#s{$()D0qYM9{r{iI=br^j2m=Rb*F1yF z_l*Dl86wy&FeO0t(f`u`h1y@8e**ta{yzYz`Ss^JsF?l1zyKavU;_;;{QuAJhk=3Z z3#gz2O|3xMA8aWgK4Tfk1P0K4R?tWe8)zg4R7^vQZ#Kr6V0j+~2DT$$_2<ESu=${V zGst|9y$mP7@d4g93laxyp8|<9vVg@s{y$-x0**gUa1oQo@PUbef$2Z!o=MQqC#Yy( zV8mYJgO|B%z+UA4Q(!J&!7TEbbaw0jtwmvb@_!9D?m*`YfL6H(8VmkmVfrF-fx}_N zihoO(SpNQDVEVP?pUl4>|5F(F7~~ijSfK|$8bca}s;FGGUt3y|U1P&r+`H2nS2I3n z36FJ6Zt-o8Nb7c=;};j_moOz{#{?)N1ay3S1G5TC0Xqk{6lDM(q^=CQ|BT5X;lqc2 z8GHVve0Y<>tio8ql=DZ1`N`iY|2jbZd1e!q9CpyMF;374WQ?M$jEttNtS!th{!U@a z`6Izt!<57FWCi1l4<G)1V4Slg<<0;9zxmi6{QJgrfq|X<(yuON&_QM`$i^_Ls+uw~ znyRXbvgG{h_&b65#UBZ#0>%oKCt#QSUGd>f3h0UrR0lIN8#5|08Z$F9H+)D~!8qfO z0N6Ta6{Z}<3XqHcb^HY#)IQ<=eYP4l5%8&ypcV&s^g&Ea+*nvxnHe<D3RxKl9%vOd zW@c9AV`Anx@bA&Q<&0|kd(QM5#;BaQvxna<V_{L%o~)ED75PgFTm@F#*`g9)GW)s$ z(^<xhm(LlKPi60`{x{{%A7&QMLpv&`{QI?P*}v~It9KvwW@h>G=U+$7{w#3w=srgZ zn+TH{`xQ`f<LG4d_&<SxnPJWUCu|;UA`C(dDxhvPqbO*ILP<@HN!`>8bc!X55F=~} zF}o;aV3JW8R6QxNDXT;4cs7srf4}#1oaqkY7is;xV+SL1=f5}JOFLQ?#>$DsEo<sp z?)_Kbg`F0U7@LAtm_g%YW)GKF|E8Z!*~`ecvgQe+$A+E%_Wpb0(($l;!n3BFj?Xg} zFmn8z!4gyL$#OzY==9q^FBo_j_AqQ=w_uk5cOpTn1u^#-D4HrVgZ3~B8Vjm|HeeFq zGoSeLg_&o`-v<#)D*qZ9{<SbE#QeR(qC&hV=ro85CY_kSSLQJD{P{8m%w&ma_y-dd z`11iG_;(9J5Uvt*HQfIv>=A4t4051hBTx?$w8mRVT#iXpgiYBL+{;l@2X{nO!ACLi zF|mWs)B}xhn3{kt`w{|20;9(o*Zmcl%O*_<)r@yJywOa{x;e)=KF-M?fc4E9m0(@N zfXIp{s|X`4vvtSZ;?+Z@Oj(&(v6p4Wn!x(pBmaKQ^w@hcs(1Ah8zsZJ{|{GAadoI! zW8k1)d}dzS#y&$On<uM#qfYE`o6X36G`F6C@n-{51%nPV_%0J+QAJaopCQa4ckcZE z|67Eq<zEZ44XCB~E95_Diy!2ot{4Vg1{=^tUEpDC&@y2rK~n)C29SS2U20|Ul?dRj zGGr8=NfdroI!F}M&ST!Pfl+ua=$5V<|8C5f&1n0j>QqJ4iDj{mdPDM8*_XzL6_u^Y zH4XWbleRI}dnxGluAQtr6aGCrcj4dZ)pr=TFuJ5L+A+Rn6c1fq6S2Bb!RCUla<Z;X zM$^lGC%2{5-HF@L)^)kO{BqaH%M45mSJ<|&$Z)bSK$;XNhn1*;@~h2*hldY8d=Qb7 z8U63glm`#kuhcDCRA(O>8xI<;!Eb;%v#~HUk^x^HJeY!^{|Va`79P$O47}iz$59-h z4$6F>=0Egg6K0be*Z1zabt5b-Ei7OUOLAmY6wk@iwcc<uqc<?iscR{f<c9mXaxyUf zv0+PKKEnQo0kq2jJnO^91iC2!)Fl!VV?J_6ed>vq)zvRgOjW;Qx%U^N&Wh!X+Q0X) zC8z~^>gjm~s|8Leads-6!oc|3;vd7mlK%zZP0Y}vSs-^i{42QwI-KPW=$Mv&44~6l z7M(lCz{GHeZ4HYEX9fc=xD$)wEn)CsPv8z2<c>ygiNkDh=MMBdrSOP~rZlgp02^KV znx-^eFIP`(U1#<yjmwue+9xJ5URFt)WMt%OER#G}PD9T1|Nq|>e+&LS_#eT*&hhQn zl>bi{n14O_+wiaFKj=VQcE}i{u^{MHc+i^FUr#Q`Fj<IP_}jqv;-3T~s6spdVlgoN zwqWb{SHkfFaZD0YCCH3)B+j2J2kw9me!7#oyCK9S#KSKrfUN^`I8AwA-ikOzmk=B8 zK+qXQ3``6Se+5_y{?|b3L1s`T$gFP6$Q1JiRDm4;S1$ji{HtNg`8$QN<;7o6-C6P1 zgQbEQdJrcgqdFs~#AB)WGh+sGM#{eu@Vfb59SN)zzciRi5<q+Ue;fQg@~`2400Rf8 z!(s|O#-;^!jLqL8j5Xk6Y+4wYeygxe_}9T{!N3hVp&Yqc#||5u{$l}anCYB2@#f#0 zCI6OiEN}_~`6#q^%^Hb+R~R*9z$Wea*TH#$fdgz3OgHjbPJehn1}s?dZwaFa>^vt9 zmnTmk1JiG8Vj}H9?M24l8f<(1^>Ao_-48S9j{rzB*mjK*CnWx@VGNM@|Npni-vj@q z{4Zc&XDj}d@|^>8hBaFZM-N8`xL2U20vcRoVOKX(0i|;maSon||8D&|y<*M3bN^no z%*bQ(Wb8h7k8vuaQ#@NtY^9Y|SxiR7rlh1z6`+Zczbn{FKs6}KYfuf!R>~X!Zuo)5 zvnx124esmUV=^;dF#P||aN{2bYXut%lNt+1l%0c_S?2!_1||j*wmqzSI3*w}z=au& z85PypRfQE9O&Dj~VVv>r!ILLUHAfg#{=Hz^18O&4x$=cE<KGOh#s#c<I6+rsa)IJe zQJr0pQB_!(kwpcf?cW2&DgQ(cocZ^JgXiCrD_0nEzWkfQ2)g;Bg>4UO4rdAj8-o}~ zr?M)mG9xS6$w<s1j5R<0efam~2V)J>jujyR*?}BecI3NqXn>j)j5%v|uqo;qXtY$N zMFnz#M$p*yu>9f7VPFHb4;dN3W-@{^FSxQo&b$$fOMd+O0y23CV?;qqg0Y*qwWgL= zPD6s0i=CsomKO)lzYSNeFa|ItC<M04s>wR2$OLxFsL0qbFf#05S-@li9tC6&R%BM* z!Pv4zhV{a~3!nx63=B{y(2=x?%*xEd#=>9)Teiq-0V(>Oz-aLA0t4e89#)^f3pf%$ zhYT@-DjV=2LxO)7Sm*oAv3KQ2_!D(xn@dLW#R^6S2F8D1SbZ2eAgYBCsynbMW)xtH zVq)S*03GkeC}_;gDDcUREedqJ7Xu^15jGnp9gZ0wYlXp;wKyA_sOS;Lc%3;0Dr`0z zLRNIC)r3q8U&6r1u!}W>$&4cbTq1#5U+RkDVnSl#j7<_=u7U!L3_Sc=TD+_wF3%WQ zigF4%{{6jV|Ns9V9@db*Ag8jk|N0#So?ThP>civ$bv)co!8O)}0dt((SbhFP9NiA~ z>3;?W#y>u+K7SuT6oU`H1f6RpD)`3-;#F23c({O6GaO)UVKHE_0eMx}R8jN*a{+V9 zjve5m(iX55u!(^8-+-oH6(O@8-~n+^MiYaMv9W<J+!bS%iI@_{#>m39^xxNcPyXGQ zFo{v)(I!UrscirLaBiG7Yn6-Bs(&?}wSG;Hdd@NipI};Yj4}B9#IMsD_s{)U_cx~D z<7@^-2A{txm?kjXfE?>4D8hu)eqdbk=GG-GcXbh=1fjtE8~@f^`uB~4=K&{oO9cZX zgU8<^Oe+`?K*f@xIe4@Wp%v7~VB~0+*}ktUtwYN|BFxOnMJ_MF`)tC5De9sdIHlz* z)I6#f7#Y_53t<vqgv?=yf)DOuGBsrqU{Z21IiX~xz{s#CV#Ojqjex0>eLzR^xBL@e zEMNfjco|d$l?53K-rV_X!gPj#@lOWZpTB!Jc7V6BF`Fu~i~sd`!pOoB!uE$zWW|96 z3``7XSbbPDz;OhssuAfCy!{W7keL!J^8@BMIWgUUL^DSMIGS@3E>tiwATb%37!v;e zVV%Mz!k`Fl>?@io>M?<Cp@Ge%gKi~eVqs@vQ<h^EXNEQWK|`bBpd*^h%vi4cF<?p% zh%eNc^0;v>qvoYcjN0=j|9gEzl!xD@uC~N5Byeq4$J*c-3DTA-6Lv)W{c}YuE<>f^ zHzV&HnJ0`fM~?hk@<e9Izn42Dm>JCr3yUmSLS*LsnlRzlJeftG?K#=o@BaV)>jB$= z|2CWq4D4(rzeE@q7?}T9a4h(Lf*W+$CghAj(9R>IS{Jm@A2x{acLJjdqsYG*|0>WA zq~j_8l?VR}Fb=9@{;k1w=HCjg9Ppu+(hT4&4KVYN%?2Ix`TGRAx&QRPfRFw>gKjV* z<S<a?Uq9Fu{M*6F0ybWOfdRQ@MXnMVVb$BOAA#O}L4m&h{!A^PK@d>=_-_KJ$^+Gx z?3Rw;;|(LM9U>#`ZDJysxZyP~^KTKh1OFCqULo49-_Y9EJCMl-cADb9HE_Ekz!h<5 zsI`4;ti4S{1k)bSnRhLWH3AG!e{mdOV1^z`DXh$lJeY&*w?7j$Z1^(=(_0(|{+(d7 z_*aSMB?g#BE`U7(iW69bpq&ZH%&5$W%@2PVdEWe+!j9qo9sfY5BQpQy;bi!?g$I;} z#X*-vA|F+U9Oa<y&F=%~QJ()Nf|CI~x|u=ef-?W+VVC%~g-ZhNZXD?pr@`zJSPf=j zIPv!gs}37zF$SpR3K~3vF6RJ^ax#LZ(Qo|w!2IUV3+4%b3YaDC++kz*euTs3ugHxX zOmA-7`0c@XhJoof11H136<~jZOh9rR$do@<poiu$_Je!~J1`IIGp64RY=8c(;QRxQ zZtz$ra-jWN@h5^2rk(T8i4%X3k1u_|@P=7{=?S>^&H$=DK-;VyFd6)7xWJ@x0F(xP z{Nn(fUeCb58vr`?9K6p#ooP86Xsw<)({heIpjH>ta_$IFfxxif{{!|DY$6QIkkNCH z+f|jp9S6{bSKuC_xiPFB0*}0~fETZ^@%;8+D|sWmb57U!;==PiG1D@{-iXZo_kY#3 ze<xP0Wi-FAh>>O4&l_(*{n-bZi~IlmUAO7qk4X*{AssjCPcvq|dB&J>s^SKt%`XNv zP(!bRfr0%6*ufhi4rKiRY8L*M`Lp3)z`rjH>}+zseEu3RFf!Eqf5KYACIX&B0No8{ z4k=PiO-;aUCN|LZETH88pehqw5VNr{9jUsw#&L!3slwLXDTeVqF-emnxS1V(ubIHe zzxM>A?()Q~|74t+5*kuc8eh$|XuUMqFLq~_$eoHejKN!v{+svKV#UArhcZFqKYv%S zE&;V(ncP6mWGiI^?F|A|2n$%IaKu1%a<K}UfI8&xODGu;opR9p4g=!{My^*{k-7rX zo+_p7|9G?_w0NXFRVrE-1^#{GU@Q2{$jHrkhmEbL<>!RIE1*oaf}ayU|N9S`8U1^J zHHRaHK?O8o&j_Dp2Ip&WMs~<TBFG7=rZy~w!pedumsc~N@Z7qnW_RY}rPWt58GRO9 z$k`C$5#nnflJe%wH@LH=Gg|z!$U9aOw<K%h{?zb)dzReEX^60~4-9jXET7yF`R@T+ z0K%ON%nWn>9$*dOhy#a!E&~IjDr6$dTok<Q!ITl{d=AhII4fiyJ!no-R78x~fKena zO2|-DE>7j}!M{0mSDG5G*4JNcXu49zc*QEtqB7hj!J>*yqU5JYZ$2B_4IZ9vuh`x+ zU9PRY3{e?jkmQw9V3g#Mp9`*^7qEcpXUOq2;CUd>g*Bit9tKfX=o}lUnWn77V9Lz! z??X$4il;OvB3?0afi7@tFIDlB7SN5<diC!ci$Y^R*vfzZKWF^D)6&Dnc88Ojk?}JF zE5n2Tf7nGh92g`SWEm70R6(=1jNnC5kTo<c&}#u9D`-Hu3q1b=UAM|?u<YNLdGi=~ zmi=MW6Z*kFe_G1i=$LsdZhx-Wd||Hm>%gq@=L)mSf%%NGd(P}(l%4<g|DsvNM{6$B z954M_bL0rig<m<WQ~qu_aDd6@$dUj58Ls^Qz+?j&OlLI&Wgdntf1j|aurV;PvAjX> zIWm~kKzvZ|4m5=iIvwNh0X82t25@>(6lD|@124M*ty+OBt}+r66K7;+1eXhtr9hBt zC6vMIDj8K+w*0-ZfsuP^`mujcw-le99r^fV%bj(0j4d7iYJ46{$f?L$5!ZRJ(z578 z(*Y)iKU3Hkw*1Wy5SsO6M)jxT6_$DP(-xfyE;adgU;(3pT~m;gQ?!0a$6U|+jcF&C zGC*fqANl))&4i5s)HH^-icN%27E*$j$UzD$HWQu$|ITke`|rr+<&3f${@!8P^JfMV z!;-zvGb+y3mmjR;UiGPA4x`}u)r@?LIRuzyY`G)wcgBgb{rUB)!#w*l7(inR^H@vR z7#P?=w~-4giZUvjGAas#r)JH}6+uhVAS-6g%)ud{tZWV&fn(=mI>EB$&zA{Ie19ID znAZ_HFO!W?p!eVVV;lbc?yvi?t*XPUd1i({#Hv4C9p9F<^q8<QtoR$ShVjBLwZweG z@{F2?{RJmlD%Mx3Nm&Hg`9<AH*;LlDB11*SH->?UA?5!QHqicb$b_N^XjBu_KQRU^ z>VPcV1x1iJ3k!JNoRW%)y15t&C|E#Cj#+&=4y^jr(DiG@7SQ2DZ)W$-Y_{($VdP_! zn)vVcx~6|;{+(*cn8K*@$7k}~KP+z;dlK@r)N+<om7S=nzuFMKu+7iP&qBiT!uFO^ zMHYQcS2{ZNOW96?=HnRH7|t*-uxhZw7E1CnfJT-XKxy7sP+3q>P+1UERm0dUIe$fD zF0jO05P{On3M*ECu9yX3mJKUb{CUDG1HzyJkMRg|4*MAfJ_ZHQ>@~Q&H;2xmF!F)= zEQl3C<{gSI>iJ2`4nY&*6wR1!tGPI-gvF`+(Uq3A;%Ba4WZ)NE-Z<++7u&xq4sO<f z2?;DGetVdyak2gX&rrc`!J@zcx}zia3aCyBU|?X~z{bG9#=Hcy+L&Pl0|N)>EP6Gj z<)Ff!c?r`TP_|;SVY|TM0-iTZ15HUYFf&vzs<70sp8*d^fi7VZR%BFW78X`!gs$l{ zGZ!|7jzAlMdQ0l+#=_viYBr{Z7mOnRO4jUnVYB963FD8jDhEzsfrc{<a@yija*E>m zx;7VT_=Gr|YFIun-2p9c`KtoD;O%FGb-tg7uDJ@M!3w`jcPVK_6$!1niUt2}C|Mba z`Q=-KE3XBtci2Rj*g#v({{R0!gMopihYd9MxdY@M_J99w{8s=Cx`4zvKx<b);%saw z0-yot1_lP!0uCAQvKa<O@On#V&xT#m%nV-JvM4Kqmf$g&ESR;%&1KD;mIFNh{%|a1 z<ec|}QDee{e>a{i0Ix3iGWUIrP2Kz1^GiV;)PL)b*&O?~{w!#%9q2-2m}Sh+H9DXY zlaQ4xC4VL`8sN8<5p>dN03NHE7?%8h!WzJC0xr%O7)|t8z>6~EU>QoyR1rLyY6eQp zEH)lR4MiS|B4BFbzu)Ul{CnHWD8iC4%P*<J&EU@k#vYd#FW-zAh0F|pIYM)N+#*`j zTTT`AKd#HDG&YN2sXKG#|9=LkcbU{Uz?Uzu|6`c(7j#%b!~Z9&pal+~rAiEppzGpT zz)c#^z`vThA~+|Qfv#s!V-{2tWV&Kw0}JF0|9(y5U}WK0Hw_#OEdSoHhTJ*-Z|$*~ zWB=Adh5_b(tf{H{IG1S+XsI6q6T<@L29^NMEeuki!6;!+T`49eDk{JPS$zw!Mp=oC zUD#Mqc>&v-V=EpM{Q0A!Q<5#Kotu&$$KUYh4~NQ%7c+lPY54c)-@XgQ8)F*cX2oO& z{>}IcTJhS$+`y8;{(wOOv?d2$nSc+zR0HikfShavYJfARa8_kD=BM}S81&q4Y<}3& zcCY1M&!0bR9w7y@8ylxz$iBX4!Tr+Y?R9@G7$cCJ4yuM37$FT<P<LAlY&w%5q=*z_ zG!|553An=_mp?5{KD$Uq=g*&l2P=-f`MVC}^uX-ny$vxNi!U%bG4eG``91T+p95fr zLt_V)@<o*qi)2|4gEF9U7qo_#S;oc&$9N0}qX5%~J7*aKk2xG;3_RQabw<mcx$kQn zYTnQNE5P*SFVFw~3<hi$m@FWL$-fFn@$%1t1$25kJ6jq<3uvPLFULQD{{rA?`Ly2w z-$4oG0CNM20p}J5K?Y^WvQTJq3%bOfnH|E1Ur*1*xaW^jOqhy`iweJ$w1kd=L*(+3 zMf?7wg!m=vb0qv$VEK?RDTtky;{`LP@?T??IiI?Y-TUjp)H9(Zd@=*$pA&yq{CmT2 zfkA+QK~)iSCZLj<x+yd{{=LB{a`3QRqN1pwkW--Qg@0R~f92-9!Nz2k7s9~!FXHbC zh8l=g(1<^%MGV#mYALE5KFBDd9OxosD5?_ocg5G|j6VOi1ms&XvEAV023-Zp%)q>Z z`3?g+YvBI^1_lO3h8s*fm?W5AfCl`8!7X6WjGvO)4OkbPIRJc@L1ZMRZb(VTx&u7u zydN^?%mFI*K||3yKugS6K%(qyc?=go5dmIujVzuE5@%rilk->S@1Fk)K!a$k(DlE@ z&}Q$SoC^vn{3@KBrdnxD3I8UUSh4gl^H#P)x@c@J;8ON2sPtv4X1xKn1#~Rd6pk1s zH4Z6|IQu^ahCg%u{|9Y@Vq*X`<~Tsx-I*B{{C~n80Pebpg4P0qmUgN`W|SeT#y~5e z7(v%43L-Vd8GTqn7&U&c>1oUtG89#eR!Le^?#R3)adEjLqX<|`E)KMA+=lrFxSh?( zZ(qHs<S)y=HTKn;i$OEt3}A5{9tLKZi@=9MftGOzg4T~Isw;vgQ<y+S4&Ps%fAe%0 zg_u<M{vO%D^a5lw8^fPTZ<v~XF)+<J@&|NNFetbWfCJ(nI1*AKKz;KT1_oBhojQ<P z4nQ>kqp~R{lQN?*%ZfiU7!UkQdBE7fobj*W596E%ED3k+FfaJs62PMKN96Y#mIMYS zh6#T^u%@tyAn#p(Hp`LrE`YKvc<+MDrGIy)&tz1-u!@mm+P^<x(-N8%`FJm7l==7O zz@77q!N)9aF{WIa^6%HGtVJ;k{{5R|QTK7~UjwEK;2~-WCLInAP%4CujN5@mGIgv9 zf^yW1Bse$<0{Y5yLbPIXoHG9Z|KrAT<L?T#dkpMs<-a$ugD#^H`8$K9g2RbHn8AR- z66ekbNFAiCBq{>xTY{D!LD$0~c0D98F4)M(H*@yC=X*{ZS+Zx@Jn*guTgKo?|GsW_ zIdP|8)e)xmPi>~I-goGT4s6E*8$<fG@~UkqODeJwQ~xRKKHqw^X2#s)E#B|iH|(e? zDXnE)^Z~ll0koX({|h$IN>yeC4p72l6lF98trQbyG!heM1l5g3#^T^kpPD)&Gq}$H zN|4MO{>Cu5{HyqPfyv>(Kc^Yfw3z$^RdnTeq&YeGZ4`qlk_`Su%#!ml;?>|5j9_2z z=0C%Wze|1}V12{GWK)szi$}*$_zoMFa%l~V3uA+~DI@a*HZITz_P-pK6)Yv78CYRc zMbOe%5k6*Rbt5|_Qvn7=A4Ua6HpZeO<~j2&)U)KwO*8y=>EAQv8F$wFTlDW+_v@XF zE;j-u9W7<lWaMXHWSGEaz?cA=hENt{Ot`?2@b?0f0cehZ&ETIgM*@R7NAPdZ%2IZY z;6Il^8TQW}HiN%C90?2{5gmxg--N$C|0h61zJmrWG#D6|PH@D5%1cE>K}cZ?ibK#Y z7Dk(YZ;G!@F-S2`kg!pysA0=mbiY`D=L{R$lokdih8cfFm?Qqr0k<U?7#WR)#g)y4 zjTsqt{Clusg-eRdk`@1+{1sv9_?PqL3*(f(puzcs|4&#ZfJX=zR7DjS1R(<eVxpoV zOiU~+%7R8JW}r32pv^mwxr8<U9{hW8=Rm>Q<mgTR{`^~a_7bDsffySDS7+1u6Hgd} z7^PTPzA*}A9BQ-a`FG{t%X`g?4D<gmN>$rrCQqFF`%lgKSkQLUzw_8az-#?f7#KjU z1V(Vd4r<_n4$+2QsVWNDf(L5CsQ-BLhB3fyQ%=)~B3R!L)|cG$@5HJ3|9-@RRu%sH zXXloCyrcafxIcIY+<Bby@B8)>|E?}g2w`CQqr%DX{|q-MBZ1aqF)A{$iYl7^&0*AG zl=-)YG3QSNR{&_ty5qzNkYaX)|7W;Br?P?+3&RxuV3hcGh7ojK%L33<N}$t?KqIpS z|8{VITBMKxb5TW8TqCpp*8GX!@%Q%)1dTL<#+&{80=@l$*c~ohV3dK5{@OT(fv0#G zn16Gy{rI<q6XayL$;cI$DpF<kZ_A$$9+0V^@oT045DB`qhyBQzGmI*r>dhu5(i%jA zuIj-R7?b|3VU%IiVRS<Y45%|8oi+wgHU=$<`_u7n0;3Nj&)*r$Yd9=G3kUxl0Jl>s z{w-ip_@BYR&X)WC%J&Qg#$Rv#+5DUGp9M6V1q$<jQ~pH!IdOu4nc)d&vk~~jGYJMz z7YI~22%AGTbU@cRgSw?=s#wI>|1b*t`@_*t^y|!|J5`JVzU2;6)_VV`Xejw}X3FhK zMiK8)hbilQ8CBTs{9s_(!gAr?&b?)fVjox+{7P7|(Yg747g(r*QS2RDh=Gy8g|UTc z4U-GVt-^|;iY`nUe`hecfNo>F@%I3vZe?x<Wngem4>YU;>*;L-_4F7R84?&6SP!s4 z&-GViG&YlBGB*}rU}T!{_XHyY;~s&=#ZhW3Z~i^`_k@k%*Pk<t0gPIVigW)p{Q3B= z|NnnR6P6E5pj)umSSt%at(PT#k1+ZC2Q7(aU}aWjWb#?_hmj@XpA6#@P<QSB12zUw zca7N;?5GJKKB%z*;xn+ZWq{9KOZa<$Z33GJgDNPLRgKKd1r-HBePYnseDHv+n3y>D zIuK<gHpuFH&?0MAK~<(d_VHSbB4!h}=G^#qX9{TgFk@rC$-g)1=}yy@J11;l;raLB z-xbD`1B%j&AO2o&NHmAng2wSqe`}a*<dnem;IdaWtPbA~u-)0f7_$RZV*P)@0a}eE z4Y>+WfrSZF$%3jXL1RGy24zsA1hid?)l`8+Oh{A&<Xi?p@Rk^Gk}x%4Qemn1_u=31 zX0wKZqBVQ|GklnSsnII?HDfg+KcfI+)$44l#)~sP{Abt`(BxClVAlNaIGf0wRsU{p zFMm4i{7*)fe}De%`M03q((mdejOIV5+_^L5=f9Ins()W<U`$|i0m&~r5jE{;`F2Lt zRiIYn|0nDp*cd>KXJN2AppFF(_<(mGK`S%}b>q#FgwoA#=H_Q^e$)ASO336=4X0}@ zeGi%#AFwF=elWSWcQP`)>QRAqs6#?R!6OD1hKBzMtRL7az$5t3O<aoLy==muUIjSD zAZxqSjUdN9g5ym@NQ`;Ozc-8`|K6;)@bCEg^^BGmE-+fIU;pp;g?VR^lFrNnlWZ0L z7?>D-y#SH_8jdlhy!*hIcI?={Ss&j0n{({SB1Vo`vlzLSEcy3s)~tU&7BR3e6#Rd} z-ol~7AjM$H-~isUWojfQCJG-_Mudim8rJ<<YM?{Q%vce-y0C5fVx7|WpsDFWU*Elk zJF`m@X3Y4LkuYUSLh1ZF4G$*t-D_yL$D~%EtN+3!iAl}Ip<?f>MjOcPt_joDv9jE$ z{k`X3&c0tY1&>xSI{Z5@xp(<S#wqJo-MO=B-M^fT%X=q-L{~j3sQI;zamt?GwR_;( zx|n>R8@^0t_8U1E{r}H!;Qt3E4aNutHr5*Opw0{i21d}t0~^!w51=dw?s7wB;f0|+ zeQ*aG)bmv|gKTyIRivQ$ORa&Cg(G@;(xeq`o~tJ<S^*mAn9Rtr{Vt>0<mvzJTwee0 z^E}2Ie)ZmSKi2tl{G5Ms{whYcDHs1Oz2F1th4+Exabo^IVJ~67!obcT&7jA?0J=a1 zw114<7!d`~@oG~>P*00ZSxE()B0*WjlzGj+5Ejt(u|Ga{K;iqKiBY5`p>#eo1EWai z>nUgc{kYSapV`fBF=x)2J%0pNJt`=8v<h@e0w|4w=v9vj{{9CsKmz~&GvshIu;y^a zfUa+1DBz4?VEPrq{^NfLmkBt*GBAUh;i8JBYkqUE{P@kmaple(#stuc#a{s&E&l^J z6F?e&g>WV?F#Z-{XZWwf5d&(OF@jd-g6^*ZZ39$OR^nq)R{kwwlfQ1-gut2W_XOJ8 zG|t*v;lK`xtVz>MBs^Rok@bUtf$;-qKpV6t8+y6e3+Vk|pkun287};Nzy=z#6NVhW zAPi~Xi;2O8Nz~MsR7FKVtx`~n96UwD#{?<?FDzv=yad|&vH0KlD|7#BjAIlrN|}+C zHY3FdMl<p-3NXD<c)%EcviQ=!rz;d5{9Aak_!6V^35DWQGsD7Wo+?%-IyoymeAdZd zNn8qFAAs&%U|?W;0&W8_fJR&ypWFd8V8GqVJq!%YJfNMt95q`Q7}z;#7{QC||L<a8 zU^W1CH#tD<N_F;s|9&ynfL4C~XZUx8ff+R6#ZdsBuap7ro)=X#HCAL}ViOe*f)!KX z``tlj3#clB3REZ;mUlr7FeZ+IA3X0Ec@k4q)=X)hyQlcx{Iy@3vREq^d2+IvzOJ2r zuXxYArj&kPl~gu{J9n1;`}eH+-=}}qUfpA?_}6js-=(<+7&HH0WGr8^=3nQ<|No{R zn9Hbl6C`)<RolNU)z2827?>CyFkE03VEO?`D<J=~D~c*IC0y9RWbpR_(~rM5m^8LP z>e~YL6`;N>3+Q-3#y<zx{`?bxt=~{LS6BQe@}wYug^`0p;NP2=1qT?I7*?=ZFne%- zatx@|rViRQZ_dbQ(7`0p(ed|92a^b!O$U=q$KMA`3O#=x{QuAJf;EH%bhEP>N2>}b zxLcW2z#|4nSVNdVXYX=>+Nhu_SwTC<k35LAZwM%~=3v;7e>f_`VeQT!1~!HX3`f{f z*yez}Bg`Prpv_>;zyLZ)9<*AJ5vhfS%m$s|Xaw4}uB@bnEY5gj1B=0i4ZkmJU@`bL z$IlP4uY<`4)|`XUOdhbY3r3SIEG}Dq?*S8x7oe9h{(Wp830l(^$?_b^`1=_u#lXa{ z>mLtO6zdrVZt%8Aq$N<ypwq4)9S>0vHpXQVNDHFg7zG&^1Q~f{W&PtpUK+&~VHjj+ z6l9R;?Fl;S<iXz(HW4-v1~CR5@H%T{6E)Cj?o3Re{k&{KVq)TQ%%A~obv-83l`xRw zwN1c%LC91X>zW54(~_or-<0@3$g%%;aqOlEq5l}>{n}(CpehYp5HsoDn{OR!gM-(C zmLLbO{afM@s4pTni;<17`hP>ilYbX>rAv$Igf3zVXuV#e=Ip41SQ>NS-?>e9>Mm5l z7R6LusAFLK|AFxXvkZ$0XcZ%~x+<tpFoR42s;Q~-urPiRl5_Fl*W=ewkI+r2bQNRz zaVDW)sy8q56(PR(sR0bk40Wt;nHe}^7?>FZ!HbE_jaflsSnyzFQwI;{gL-u$VvIH? z{`~tF2fptUOu(-DO!@KSZ|A}ypIYxlMLxA&9f4L>fgsGl$dJSOgRz4{h5<C30$Ec4 z+9NF@X3W@8x_o)5O+bJR>yIfF)pHxdoNPis<u&6w#ts%CCU%Z)28Q3?P>m3VEPYot z1*gXx%iv(k(&fupf7FE7IE6LLt*)4YVnQ#-g#Z8lH2lr^I|tl-?fxV3y#z(17b3#o z!N9-|Iqm>-T828qQFhRHoI1l%F3`dPc7~(84&X+s59m02P@%_o9yFT8aFksDEdGOm zffaNt0vqU91kkcj1_pKwP)W~t6ebTn1SkZ?=Mn&!1F8ua*cp$4PUirf2=o65_@o%v z{-PfY44i9_)SZW_L#s(Z?&t9UsRP-^0CPV(#QhNWaDwL9)WGuW5dZ!E585w=zF&z0 zbhr^4qcY5$><2*Rg59ak0Cpz>JHt^{$QYsz0|WO9kUTg%K=y)<bYwWn`2(h(<pxL| zte+jKpNXO8{}bjE4$!3`A`A?m2^K|GQ%LXH9M*vfU=;cH<)4X)g-X%Pa6XT?6Z53K zUa&`eKfv*ajV*F+n$CuQ*EjPqFfqh1=P=Cx&!-8)=hIA~^J%J}qm*Mnb7-lcDKt4V zMw34Wkmt>QF(>@q!obYX^LGV%21fz|4}$<`5umU+3j>3YAiDq)Xqz0PIwzAlW6ux9 z9Zc?wp%eai@B6pr?`P()-zRcdOc)n{DfSy32mguu?f&!RA72OKM5f713XF#t>;KOB zJK+FR!Jji=3N$A3{|)O6HU;pZHQ-IFpp$ge)R;_76-5=HN7cYuXl(52c1+AX_ZS`5 zuKjoNLdB~CMJx;c1f=h6=sS~Fd80pOMxNXgl~upk6psFz`{vER>8ArWGpb)pIn#8e ztowdl$NCSorr7}wCF>Kx{V%Y^Ol%xWz)>>+<PcE*3&aQYzkYzG#X#-1DXec8)IsBR zj35U>_WpqSU#g<4ke&~??Ex<SKn`RyMJs!lmRw;pUB2hvwPknyy{~8C`OD!ry&<?W z)jWA`NBeH46-Lu<G96>g5z-CzQc>YiQI9kzYV#0beY5l5-U~Kg{;k}4n9=`I#EB;p zG~%{ZxObmzwdr`+UKrls)fVzs=ZQ<%rW8iz6+%)8^WqqoeqH<f@4wZ54+dWFaxKUn z15wD116CB?U%#H!6DO|ji46{p{U?H8|NS?4`}WDf;o-qh8nl^^?E*^(=yD0R6dBME zdIAFj*B0<{o+S(n46yY_?2z?G|Nk=tFfgz?K;%C#Ft9T%X9b^X@^i-jn*Ti<8lWyZ zXhB-ZuNgh885|nlLpatjF#cNc-{apKwi=KuBcn3ozc+shwlGg%tNC$;-2}9Z;hzt? z0>c3YcF^fhf{KF1f{GX3u++Txx#0k4vD)7r2BzOf{-*r>0N%0%YDRz-ehDfH{yxH_ z^Dl#u;cp6)&fhDHGe9R^fL0p){Q_QTq|Ly<2q{U`RrQ$RRU3RcE+~%0!CT(>n3#9? z#YNixo0GVyGXT`3Mp=;?IX#B4qp{yKZ~5OZPaJIQU3o&JBBwuHngCjw3mRFTe{$}} zx`eI`X)*=s{at}=38w%5|K9Mo<L`t24GioY!oM#3nZv;Jd&l27fA9QX18$cvfL4I1 znktI^<+<?p4wJ~=IZOh7Kdd-#fPv}viNACHzCl)}ZmKBy`^1?8OcHQq|Ns9n_`Bs_ z!v7WqcFz011OA)<%}4&@U`+te3||D5+8oSGPyYY-|DPd)fq^vxJR`pG0|NsKgUR0m zYyuph`cRZXmBAFY!5*^o#|$*116u0?>bRh+hyty^VL+@GHf8?v$AXcEQN%S|BifTk zZeBvid{<_hf2hl(J}?UW`}PXHR*Ln)nKO(jzcMN!c=(v^aLQ*N?f93%mVsE4l=5@K z=YRj9tEU(k8Fqkn0CUKI50nuH4LN{vD7fYp0`IQ}&+36^qrk0d@b)Rl9HNmO6Pp2# zR(!I-pMNb^Dz0{4`7`a`mrZ;AJ)g}euzTsWb*b^8*)9LJDZ9BlvFO|o5am9?81+bE z#`VH~-#`DcIQ8$vq&bXI`xwvsGud_R_(|pylN<B8WM+KsW#i;yU}lK<|Acu4M;wC? zgBW-`UD4FUj>*_a3_5qmCJGu@1I@C5dVKIOWvco2#-(&ts2un}EQeTQMu9&UK!KQG zqv$Fmm*x>SFM;*XspJ_Mrrex6*w{4V1HPR(6Y{&FI+U0B4ySO$p?RS52N)RGLfB0h zgc%qZ8Cls?nUxt;%~?TM*qD)(oh9Ml6UGTC{|bJ5U^MwxlE63xv^XJ!al)TB|4uMY z$zX~2C-7#&n|~fmDsMKtVf^r7%Nxc6f3Lh*1FD%B7}yO!Ssc7tLY-+jcnl4c)j@OI zOn*Yyb};C0Ent8w8wE{f7=c@4rilFy!orG-e|fNNs6GK%DvW+-J>yOAmEKH$G&puJ zFn||2gO<F4mN{d!0KUk%0h=XUkcG}3=zF(8!@@29c5qrSh%zWLfEK%foeVDDAzL=U zH8XPKA9*<U?*sVetBSfbyVz(eUFW|NkmkR4AZX;+JJ8SHH;8?ULfSMF6HjA><he#h zE{rnvkzr2up`o^p;P!tQ1M{ypY%Bg9;amb<BWs9zLA1Cyc*`+(eI&?%X2y`9{w)F- zRSxt=j4H3#5!4mp8tvh4Y38>jpd-XGA|TYv(w~zD(%FbHcL3QQ8oE><V`i|rk$Q{` zN7~#-btCmi2F716*tW1raF{TFj@nQMC1M_CV<TuATZdU$iS2jI6u$heWlfAJj1w9A z8DpxFXG+WveYtM>ze)cp|26+x+mJkgZHr3Clo(lUZP~zZgRXTlT3Rvz3{1aS*joN= z;1pnhoFITT#6e3kkVCgI84|h|{)9jS)5icDn2wD77cMX`LBp>FynK%VwDE=wG&l)r zzN>>v25^D|nfi|hd$6qd6T+c_5fY5^FI)hPRxs)Od%?T{e4Dw=?-B;aKOSrXe=|7l zfOil<Y81%A2S_6y)M@<Vp=)el;NBRaXso3*jZI*Qk(^3+vYB0k-V%95rO0&i_yPvT zUq9Fq{@viP0o8Pjpc^+7O^yHE_$%^->B9$ho;8dfpe=5o;RX|S&;SCorZWalUi^D= z;qMvtD?fDDuYk|R#83wEF0%=evY#A8D*RVLq{3g2BRL6M{ig+NV#EIztOcwW7?i+` zKy}dIJu_(2t{5o9SU^!`stOsZ1(({OK`JJmHwny3{<>)BF7;dXrmp<o-%AN6S7kDC ztZiR9efG@K7U6#hOdTT3CU5@jkuzpysd%+)(wi=`{N)7_`K`+vTb6_~^S^n+z`~I6 z{{h<y4hIHS1_=fY@Ci@Gg38RMjK-kk4H>Bg)p6>|j3!K=2{qWdX(2{qL1tk=WkwGN zhX;%eB~r2Lr-4pKT=wtQfhn63q)M2tBp;tP;Ydo_k-jO%Q-3db6X5ZL!{KiNqeQ{q zCmOZMhyKm^^yS~|!^!npOd^XIS!YiC_jk>@f8VFhW#ndE@@LAwntuZS9xyO6JYZYH zq{0E3Nn#KdR%CwQ!pN|IZ4Kj<e>$Mbg@J*63cCpd4+H4BJO<DZB4kmFnwlvqxc{zV z3Qp=QVxaT<KuI5TsvdOxAoy$;M$njF4x>ndP00yRr6Qu++4cY5?T%k-HZU@D{d+TU zc6X;sR~DlzBR^;b)ZaTyD${2DQ~14y-Q-tGb?A$TL-Uk$BK%~GPaST$RMY%)O6lsJ zB-daw3H#F<+V`it@Mbv+nOtIE;A#O?7|ft0;Ob1vK}*0vZ9|S8aQk}&0|UzxkUY3T zVTV>IO#lD<J;DOIX#jNE3Io`&qKc+0e||HtGW=%vw*WFi$-wk0<Zr<LkpDf9RuenO zQ{aJ2u(FancR(sZJ01UKaP<670L|1gDnOP`DjKP%n2WQquz)8eYW}^+n9;?!gwg8` zV>lyoTtmpe=l?SQW~6T}%1LN($gs)D+L8y_lm7Pr8|Y{sX3&{Cpb<x5Qxz2kA;da$ zLC_K_7VuF{3@nU${ypem<YVk&WT<gzIaIf3Z@gIe{W+f)vrnG-H}#(!2gBC`Tn^tk zo@l*d^kOXE?z8mmG>`m~9ZWJ#Uc3J_|GVSy@6$h(e_ihxm>9PFUBTwSA;TaAuA5BF zRKWKbgO^$>nm||TfiF-p2dz0|Vqsx5HB(U$GBr_SG<d_9^SklFq53`P|DJ4Rv^{f- z(QMQHf2;l(Gx7BlEet*QZ}C6%f6w1DmN7DSBr#sN;68WH^NHJz1x-p=^{b=f->*Hp z|Lytr>kwn%9Ie@JmwoxS<oyE6CkD;?8AT7SI}6%w_;&@X4VwsqI5;bV+y>fyt;EJA z3UwN&_rz!}CL}7rz-p?Z0vfwy)OpM3vAU-%w$ta|hY5_Fn}0B>{Q76bC^2K|^uIs< zerFV94456usBp$|?Sq!uR>!iyDL2c1UEB3<&l^Uu9*2Lw4*i?^FWTjX&8jb}+CgK9 zOa2~V3*e9ex41xA0x~kiZVJuPpvYni`1dCN>Ws;M6YLi5&)Uc6bMAM_zYl+puy2`j zEY8pAj+U$Dw0~C~F?E0!zcPd7QP>(dWEcb)<QbemC*Og3f}lenz|Be%Ar*0DB^FT; z7Gq;06;l%xRb$BdcXd-x6o5{+R8oN~f&(@1KphI^425fq5vNZ5TX9X{+P@X2PBBJ& zQ@HW(4<pMBg&Uv=tbczj>MqweH_rGz@#4SL$1JA&`*g8#^7m<t&5f5?_H_OGaO%px zmz|(v?9MO>b=^2}=FE<r=T9Dfqutrl(yw@fqxA8b3oql1tIp3^^SG4bhGKt9Pp38m zGegP$Cu}twF<_rK67~srY|lgu#Ur2+1?CT9ut&m9ocOm2<dIb;PB4anJo1B)<A%aj zM(%%KPu5*+Y;T<Qb>jJdYmZrgCPqNJ6x*Ax*0Aj8`1c9P8v-2{PMkS&;^g_0$M0Cr z?3uRM_zYY7&rRpPWMzFhx9Mj)+Zp4<(|TrFGq8fjOTgndLJZ0b8VuG9zM#GdC_b<r z%E2xOuIbG{F|W)BokI{37iD7tP57yRrVzkQIx}-Ya3hM1Ghx!d4|`h9PKw|cnecP- zZbse-|K9kl?A~-hP9|wVMb|Q~KMIT@fBtYxVC3Ds`B%RPf5fD-Eqnfbn8YaJwXCaR zL6VF};*#?2l|IZIGLQZ(I+1#SQEX$x8%F<)2mdYn_d{mZuPGl^{5w&!Gk4ODf9Kd9 z{9s^uBlCta{@})c8{b51{P*fW>IufUe=@UvOv>F^#As2lGk?l2kiY*P;Y?ryUFavl zpv7Rz;0Ia`C~Pb&NQ|#oL77h(ZwRsENIa4F%|p;z><0)1(BC8M3XC%Up8R;gszK0a zvj_$f0~1390|RRXhYWZt27HAwIKI$VD1#=+nP%9`S>>b}KBHvXM$Ug<*k&?vZ+gP0 zGiA!ZD^F~0{CmJuF!_1inb^&f!Zu7;@OLsOah?Gs&JTYlFcmN`F&toEU^QS9fh=bg z22b3A=3dy?AnRoz#hR$FqM+h|DU9r^SO09w`Etg=W`1My?1^*NfM#-;kL+XQ=xX`* zZ{MsBU26`^T6p#3>VHfAg0`v8U|?X60k59mWMEKaWH#nxQe-q{Q~A5c;||k{KO6oY z`FDcp$sM*Mj5a?Q*pB?P0nIRh7IZUnfV%BWD?r_L@Ph6D=rYFz;OUm_;F=V);%)+% zf0_Z*jlaRbzz$is!^r?XrUP^yEhA{pgRwIBWLjlG_K@F4STuhB>0#mMsQ5J_<;|Tt zcUUrh?K#0}apw-`q<Ibo1`f~$5|%yeR~T3sxES~uL>Z(R6c|)NC-*Q48?%G9mWwMh zGYT7nSnSHo>daV08B_Mu@EpjAXyK@M!)(%U<xNG$5tf2I96zuNv!*Z=?D#u{S>^A9 zEg*ua;LjZpy@jb@%a12aIa~ftU{?7%We130$^pww*}+t>g@KVlf$<3A1@<!x{Gh2I zlvS*zH-2=jlXjKhSLJavW<T?L!n#-NoL87xgEJYJ7)lrzm>XCgKpGODpaL)ZZTLH- z;NJ&Ou(14AV0i#)0WdHyhrrZ<8YW<MA%9<#{CmUn<jx(&KVXH7pdE=UI{$q@M>DX( z_O3FnIdcMXFvON8Pk8>dFxK#Zs&+OH7SOmEYFo$QPYH9+pArs-9XtLV*|P_<1OsK! z82n5O#uqDAFe;R^EO9Ael=-*fUk+2p-wMVlU;b8rocmV*vCvG|lo5I~)EuTg|9lv? z{B>dEVBGRgBZrY=#)5xq7<n=rKnZmYvL?hqP|Okke*E)c+Vj_iaSJ2IKMk7&GyeVf zS2JgZ188?m%ij}BIsa#XyR8h!tDek}TJbG?X`nR%X?-=W#=73#y2h^mHl#H*rDfLF zXBxY@8XLR1{{PQp!x+Kh!mPmnUL5_a<Ntq#6RZ&|9qb^HYSs(?AR-|w9qcL$>}-|n zRsUKT7#Vv0E?`OdFT)_oz`%;5Z_K;_)cbXdard*d^xhHB6$b4HKY{l4BJDXc=7xj% zz5o9+I50^tuHZ0XP-m_AU%;fnzz(9>?l3ShWU%Ql^>9EJn}ODrfDTE?ICF+cg-wS^ z<nJ5C5YR{+sxr`s9wX=~zCEB3Jv4=X3z&NTw?NV!$UJ3JMNzPMe+xk7K}<td1TqbL z9Vx^#xH4vjC4YNZeEye!&4Qk64%(gu+N#4m;qMuV3(PAn{4-gxg3;lh1nB%0#up4s z3`_nNu=v0n07=x!f-F9N1tc!~lUT8WG3W0aCeVJ;l)o!jdKf^*+p&X|#e&ALgpC>1 z8I>8$S$h7oeEIPAOAFJ45C0N+QdX>B^!fWG=U)Qjf)obk-z;o%{;lDFjBbLQC5Sj# z<~Pd)@X0c4b3lWfj2SCd{F?z{{r~^_&)<Z9zW*mOfYxW`d^Z5Ey?p!Kkb&v<gTEgC zSpG+Vy~zLy4N%zrH35h1Uk{LW#sE;T{W`&x@NWS}33N0-30!j^50`*Orr2238O8q= zxJJ35rHd^AUH>k%FtW6;T>vEtd)TOmJt(~tgfJcmVPO8XhE3*Q3+E38Nd{HW#xh(Z z4#=ZL$kWMx&p<{Y+<h%9{XxmoGAbb4%+mXx0c`XLMspkyNt+o8b_fr2c;+^A4dUN^ zC<8pEvf<wyjt>kHI9vm6^ax_+5U}_^6*SlQ<mGso`N0Lvf<R6L30iuyU*Pd8wwG0t zbur-aDsj@&b6^Y*@F}#HQIT;l;P5GRHZX8uVEwh>FUNnD|2g2Of*ei;>Ch=Nnwvus zk2s?-Bm2K8f2J@7toZjJ=E#bFGZL5$Rxsuy{4-g>sFL!pp`+tp2cwD4lYbo^|IRQr z_<$CEdN45m?)l5}Pvt*o@&KG589^JpO&P_-MH$Wi%5-%6D`4~q`SC9$;4cs3kAE9h zFe=0xS;3f*z`*!t4(pG<JFrd4{@sB*DO<6iA=2J59DK@=$G;Lz0q7}5khv96WpFoJ z40%)#bhJ}?Ml|S*qXT#T9sw;E^$+w8WS<jQULKgUBH_}%g`m+ko0v$@nS*~d{<Zwy z0uCGaB7{FJ4NMFTE&o_r7=QfLX<=e$`TK{7qvh|9|Nnn~_$%;l&Hp(J>>RItgC|k{ zX#5rU_XI5R`Zu^w{afL$0K<y^a~RY)UjJ$VwHY{G{tW=N5&kr={`fnGLxzE!qxX*p zNQ5DQErD?Z`vL}bwr&;=ju-~U-z)y={A2k)hk*}tg|WK1xVkaBxj4HxyE^;t4-;;v z+~BC-xT12WC!wX`Z^a3Rl7Jt7d`cXScw9Ka!1C+L--7=f|2Hu3GRQD!f#=R3;R8CF zLs?1995%BD9?@ZA#V7geN>Eow^~QjXkjC{BG&~IS+%&>n4Lmd$U4pto8rKJPh16}D zpyi>b=b;tts^_8guP3O*Z)J5rqxX^uH4i;qcMbbgeQ&Lx7QfZyfsH;eL8l~LZwAKS zKiDGv{@{269&0mZS7cT;SNzkkB7{+;V@1fnI~;F*{7d=q|NkGGzgL)#{4Zc)=j3Bx z_zoKEvq3r=%$N@}YpJ59rfw|93|b7u^x}@$jvxOntXuQ%!q1&%ceG}nd{$QR;?#8Z zKYo+TTwTj1`)P!_>*#ufFfjhP#BRW>2VGPI8pPB4xrBoOG{pGl(mw`fy?+;&*g5$b z7`|O#VE*ItmxZMUo`qo92b^t~AN<H+oALpaK1x0?&guA9QB(7;hp{Dq(d6G54+f^+ zOV~30`EY{P(t}s*f`cAZ02&*CRs@QHHZu#0LWYRI{a45`f6!$fe`_pk>^;}4>S|fR z$-je>Uu2F)h>eX#u%&=#MRIBP#`)|5j3G7-#=1Pot-bC4PN>HksCYB_mN;o?>8Y4V zlo-TRXXaEeF#cY`mhjJmvjjY50$Q;G>PmvF2i>{>ZBj$Fwu2UK{1qr!92z$#ZpD(n zdl+YUh6e^G$9jj$B`Ef=B_u4%l4)2Ud2@k%35Q2QO@&Nmv5{7cK?(!YpDAo5e^a<X zbtvfQ20>*(b)=;{e<QXCn3@=wni?CMa^`?evE8C&Wu>KVY01F!dkR~^zZA|A=-jE2 znkmTdMq;9(BH)!D2nYW8Gymkt`HPMnTNE1}9vd4T&X#a#oxsM+*VYNFzB;8LM<Bnk zF`qxTfr07w2DXfUCY(78ETCz0Q1ztDYz{sH7QV{wZ^M=j5r>XB6+K(*U1NjURhT^f zaxf;aEIK!B4dbDIHc?^442-{LuqFJn;Vc2&(*at919ciG&cGu-qL2(_Zp_E@=TFUC z@3q^fEn!>3?CD|Ur=j6zW$(keh9#npEg^etip<Q%OY?Pu?K2%@oHA|gbzMr`8JK@} zuqFI+;o1UrrxK`FX)LJB4i5q`aZx@dbt5x#Q^+)ksEF9#30vm8=v}>HLRymx2Zu|O zlXrqBf0}n-csM%)^OoNSL~bt?SbZ~SR!&OJte`1jehUJ_TXJAwQu5D)3slyDCZ<4J zhoLjmg3v=V|D<f0<Ip~{x_67ES6ndHmfr_h9R3E(zc_RCKNrS5f$?Pw%)c(MmHb!X zECD-M1>|65L1SSwb6_*xFmr#mY-y2z7z_$(#tRNDbE<oHSi8msbL{!MgXzb=88Azt z!iqEJT$#D{pBv*IPz*5rv0*Fudk1WxAk;cV=nXeuTmO96(!nSpWFQnC=uy|D0x@p| z4^L6roGT1Wzdx`Q{N2F?8nXrYSya)~9J-ebG?JpMq-Oee$3KgX9rB9&>TH~*T18Qu zB~zyC`0HV2#mYQ^nX|o=f$8@QwvvAl;IzaEI#bvfy6gBaOV5daA1X?w7*zcGz}~_5 z1eC1*$^3i6^n-!%_Z_y9e@i%XK&>>;$vMoz%IfUO!pwj6G_>4#@!>{K&y5c+ICI{- z`PcEU;ll^U21Zb4;REOhHE@vxnq2^Q5)}p67=Ay|`1gdR=E)Q07Vy9r6L@PY=(rBh z>?Q+f?+ZA6fOZ6dCZWJ5b2F{^_r@s3j$e;o+D9>DdYLoRiN6diHGc8htjs&uxJ)x< zB>w|VR<JP4U|?XI0ksv>J^-(=1hrQ|=RqloDw?v*c=G$i6Xu#9%r(Cl*suI$Vfq8Y zIv~f~xx>H$TG`JETK5C$Kp{*3l`eviP3p`gKbX$^PGDJZ=dT2G?dF|3e|wlpK$wA< z0d$9w0eCegJ7^k5QJqm7G-|}Eq-F}8JO-6aj8}Fr`)v8Wf>D5ZP0JKU5j!mj0Ttb_ z7S@`UUoD_ra5AUgvZVZ;Q|-%fLXjVI_!nrWFWr_MGcmxHIdg-@h>^-a@G^AB2pHPt zR?tiy==24q2uLf_&+iD1eXes_4s$|ICS&>mnKq34t9_9%`hvv;#^{Ta|1OwtWd6?% zi;kc3SG4rJ?FXH=0QbHgX!jdrG!C|^haF?xwJKz79C%q<10xGt$fOkTfoC9#|NUWG z%E%4gZ9eJWjYpgQ{hZ2F<`)FoG2_R0!>KV8YW4PwtDuXqEiU|9da>`xKk%wbd;3Vx zAm~31wgzxQ;{=TkfMQsYk&&5`S)Gy5oN>axC#>K8%=@Qd!kECcjWO@<o+*qCe@#|E zmiqqD`6s}r!Pvtr@PpwW#~Q`}<|Cl7f(d``u!BbCKu7JEF)%2CHf);9F^S7Di-LDR zz&6l=Hr1=^F)^~DZRTW3`FDpUfKlaN$`c+9Ju&rQHywwv#mS1XazZ9TIW0~pMncN+ ze^2~-(+J(#nY_5nfsNr`#E&Vjx4V_?+pxF1cyqNqKj#fLw*20by|)+G^l$zf^ao|9 zCj&FXioZwLL9Jb824M!!&1ImI)<E}SC_wM8!*;*Snjb7IMBOf90m?<pCrG$fhMA$^ z?-AAy;Ek?O2Pq1Q6WS}W;@_Jkc=k!e{LNsRQA2ot1QSC90|UzpHU`Kl1yw~+@Wp}P z>;Ynf4k8p069aXFnZ7VC`4<Dr5Fj=<MKYTF<+*d`IAb6v?fV|SGx2qYMaTQ8Oq1?_ zMhC#AvtEFhZVtYS0u=q=`%Pdw{S`so)d<EVbJn=Ht(o;NhH(jOkN>|IMjoawclsaK zS=2r5zjN^4ZqV@g?t@GfpcVNHFBllu1VBqFnQwyI@1RXiDj+_K8u;v|Eq{-&+kh7H zFmQoe@ZkFq6hWmRD7iELVSK^J@wec>-wH;SfPZgTOBh8MGgxN)Vt^cn1)_g}HcS-! ze*&KQ0NpGBIgtP~#|54Xg=bvwbtRygkOD>p<y*Tqe5}rYvv=!#jeid$PcS;1{>zwt z;Ml*3|Iht9wvVah*`;NSR(IaqVzgep|Lavo?Kv<1#r%8v;@{(cG0*2S>iqxD06SD( z4RokHXt0H82XoH<{|qz!KVgpm9sbV%I>nKlwT3AKEDjp)+yUNUyq^Jdyhqv>1_s7o zN09d?h=OL3K}}oG4h8V~h<^chKDgy%cO=`F?m4q1XGTF1`wr0l1V?WPllFy14n_<d z-yi(*VTxeC0B#RzGMF>CG6XXuGUPKbFoJ7*G3dHF>hPFR%!IXMAic{!4RhwUx6GO0 z;Nfk{Y%phLd;8ouw%#5#j0|(;w1C;J_WwS>)Oa}jc>xpmu=(?1!CaX7F9_i$bLO<P zEC8Frb|HV_#C)@$(0{%~lO`2e1_%EYhlm9I`IkR+Qju9$*gq$blv!9L+eHuqNloZq zMu?h729EE4{+?j`!u|ogo0X42m_dR;7JNYl1EadIF*BpOsj4`ms;N0E=-LTkMqy)d zX3%<jQASl$R#9PQb4K<*B?2p25|~t4827|5^88Z~VLb6q<==-Ei8H^yB<vAb@uwky zaZ1a-CI2iK?-ZPfU=-+J;}K!J@K5I7g$|J`34bCI4hXFH{RY(iarn1}@rlSk1IC;f zMv)E?CYu!<2?v;b7>~sKOKJK4A9jZT6C3*(a0XiO{|Va;F3=IRlAx|KTLwb`_zr>z z|DUj?fEI?bJO(GPj2)mQkU#zjfNx4rgWP1m!OWNeHs!`Y4&+l;IG7o2z-#MZHzBBj zR|bQwh!J2=0G&z$n$-Xe>Vv1n+1dXwH2eo0T-?B%!BW5pnWqCC`k(|_5^DlFY#y@t z1+7N{+E~O?(et#u?MdH+CoL^cCbU#kH#Sz+F@E~<hFOF;V-lmzvmMVE)p~mV-Fmj; z*}p53uAF)D<H?aDPkuZ(!+78d1M{yIwupaMz=N6m;Kiei%8a;n!~W?3pBuObRPBPs zHJC+U2Oe`cfEHu^TLV4q_&AhiVEz@u7V&QbhXeSMSJ1L8q*e(lqaq{nsMy~E*d~d8 zpp}C@|62aufVE24-hkR1HW3jVpq;B{>?6Y*9YP}*7=OR{%kp=}{}#}_i>#ozcQH`K z3)&n6p`mvPf(~>79eV|$K?^$Af4{Nmc8v|T_Oo^fac~H6NDP;VnivXUJA^pMNEpOv z9Z^vUG}hLa5a8qC6H-=GSLNsC;}m4eU{kWtP*dXN;pgTRRFqTDlojI<;*%Ez_qA*O zD}c9}gBsA{jOyy<tnB}GWc+=R@h5{ZA%!Dh!@n~dWHy}Hz`*$X0NaZHpw-{3pp~eK z=8BBJ4=~9@FdF>3!M5VUiGLXkjK3M!R{UE6UZ(=u#w)HU`bXp64Mu|qCK<LBj5AJL zU|{@R!?xnT3{;7!BBQeU?;55Vj2thvu$P?qmvM%H@i*vBkvmWojEbU)?7uA-d6;JW z{jmjP$eA+?jK8k1t@sZ*SrF90U{n-0R|Itzet-D)gwdd;hq30woeg_HYVX|nm+|Eb z1LJQ8wiW;Pa5yl4)C+^ugN|zc?Qn##p`(G(;NO#fFAi)#(!lh`;xEtN8~-C1SQvz$ zy(m@WUX<9MH=u5msIE{*h(}$QkmA1u|8kgISXS_G<mAl1$jHF>a|_!H1_KTbP{U1F z5j26TW@-$XSWq<h(_*$e|G<Mg5jmOREHdmiApz$W`IVLVfezzmoALh#L>uVDK1EYS zh$dqZwto@%do2I-ut<bwW`;j_z&0Zw<P1pHqH_$4zZKXrSe|fz57rh2PnxKjGKR2B z_;=<{z@LDB7g%~YH2!T-2m#G?hNv)lFfjfRV9of)z##(e@Ppg1Y~T}U!Q(9;)}JTU z3q2OJ<V5x9*yy^63MgiCh_p9)P3f`;ahejPYb?RDK~$ZA`S+5)EdN;kr+|k9xfwuP zh=p01m4#VN6-EEtDL7HU_@UrT!M{I@F?0SkFg82@5epV90FAQzP5IyOe+hX0!<ZSI z7r={4!Ruln9W?bn8GAa+l2lAWgAKIY`RA~iW`_9G7hBoqJJrPeTcN0|qho4s;LsRu zVxq5T!@&64gH7jO2KyiIx(@Iz7<KSYQt(iQI@nCmW-C!x%UxVd>~Dv<u91^NsdsT{ za+bP~wz`&<t$K2ARa#oUw1gqs8Y3+&f949yY@evM%zOhAEiE$xwvvW~*zzJjS91o& z-!W`D|5CU-z~|qC#)@ELgnUe(Rrb)q7;qedx@3RWgv?4xUz4`#Y4o(MQ6?c9D#~M{ z^5UYj?4?yy;@DR>_7rB$k9u%m&fQ6o5>uq&4y<YE$qi4A<>ASZkYQl@b%8D8-vjmv z20rl4A7ik;U<peVmHVe+Mo&vjr}r8U8yg$O4Ler0N40v+2(huZWUuIIbE*olaj><A zF&LPCO<_y;FTh#Cz|Ww{;10^-;FJIxc@tGfjJbh40vZc2F*Ak@@_>#_0$qTq2=y>x zc<fIOd{Ax)cs$OshF?am8$2Gz_@!tec<5}w-vf+OT*E^GlA`PrRT9)Ev)|~lgALRb zIDkj!+$~c)Qa}TA{|w@m<$#CP<~x9f)#^)Satbt!V=SW?Sirt;fcnCW!Id0;z(&%* zhfRT7V<KYseUY^&CT3Aq&Z4Mei|hi_z(Z~LJrKXPM4)V4LgM-o&`6wBmIr(&4ipa= z|Mq|faHJSO%V~v;8I_@D>cApHPz3KVsLhTO|4u9^frmSe!BFrJ%pArbctGPE5oP*4 zgVg~%uE!5qe8>)7^r#HkXr^usO81aKNUS4$TM9U|+{#Ni3`|T6QgDy@6{v9PIynU; zh$~79vxVRo0%ZJMz?SjPgKGzPmAW}(k1e=(g)CwP?Hgx@q+D>O19#v5nAlX@=ty3g zlD0H4X;DHze`G>(X;fHrY)DGhA}*aCg>C=7EOIH?m>e@FA!kvPUzrV$u6I>bNI^}R z`=rx#3`|ItYJ;X3h_hCeQJoR5)r=edSy(WhA?yN&e}6m}IT)CKSFn2gbK$IE5M)qd zFkk?kZLJPDde&4BG*ZXL2HFW|3MqrIjE4TX;<wQ<!l2YRIZ<Rm#)^`zec@AM5}G`? zxICI{VxvU)lcQpzLs>l>JW6bId_$SsR{WJH>b7T8xV==MXnk_@$`Xx|<&hJj{1*5{ zwd4rov@kIKPGQUV=fb%LI^>Hw;tSfk02;9|RW?-=WMlhtXVJB*^B1k;T*B`ao*Wxg z<PjybhA~0nFk8mX$!jL>oRVW{oK%;SmM14vFy-GCl@JEz-&5F1{)KSuL7eZTEXc^n zu5NA)YKZ^w*uvEDZ^s^yhARd?au_4H_Wa(#;_+|8zX>N+%=z+{gE6J%p8^BppBlE3 zzXsr;Tn5nbYkz9CYyl0|GBEvq!dCK+gA;W41*ioi3c83`S@0jnzXF9V>>N|3FfI6V zhS>x>A6)Wp4d)8*T@Rp{CQz<qGzMLG3>q!}bK}Q?e_Lk!+p<7o3)6=k>=vNCW6UNX zy$}o@wlDc7!C3(w2?h@t8Vj>S8kewf-#;EGL+p^T*?$XI7M+{A_MaW&5zqiH^KTor zl7Ajh7lUS|*%{3Zp~Hs%1RDNc>Dj`}vxDtH4%3Ach~3O43{1Z(*h>BxaIS#w?+0x! zF;P<nc|Z|d`?Ir&iLmoADVu|G5NMoUTvS;NG`FDkm*?M~J7!KE20OMe=1f?Snasw- z!N<$(=8{yP$Hv38LzLZ-eZdqbGc%*V3Ct!<MSjK7Od=voEUe5W76~>kVg_0~Jfd-; zE|%)h@MhqwU=T$t&j+oaMrwNqGn)&G{xJzq3X9RnpBYzYkdY8$q@x%7`oxhV99vT4 zw8b0qf@;EL63oIpj7{bKu46P2_;-MXf$?_(TgE>g&KhvZ06UZvG;ISticdsL98zq7 ziYsIA?D5|a&t#`+|5bJEJ6CYJcw1U~yY|lCSC=&{U<GrrnUfv6i@KqNfO)J(T3K(h zuDPbVmWGf@a%NGHSBagIo(==!pAxo`zi+rsfSP%ryR<;{AnZt`zZzQ>=1b_Pi15n` zX}PhLFuSyOva$6rv)VZ^F#le`R`QR96Ew>VTJ8jyB7-k>`p5G329wA?nH0tk5jKB+ zfKnpkgTFl;Oa)V>Ffjl2V9WTI!CAu~z#tDUk0BEvAiL4>Jb0fo=*C|$V<T9tE%>Kr z@<#uODGAk%99*u|X0h=SLK#t@dW%tViM*%)i-3f^VxT))#@YEi6}z$$R^;eZEen}Y zo2-)7=2#xUlUdAE^7oduI!lERTVXz94X9LNO90Q5fM$=Nvoh@BN@{BA;Ki)4`V>?Y zD=V?Fi;9W;uGk{+0$T1QOjxmEOGrpah)0@`XaZXai^CtE9ue=EB`GB{y|1kkSb7^W zRTUn%z&nzG>30SzsQhnW5CeN16u;0`5VRl!rD|btl15nr2g+n-W`8DR%-^_gkw;&g z17~GgY;=l8giZU-ZCy4tetyxeHU(R9mT>G?P%&+hQ9+!BSyn_yawwBdPeo&MimQ*E zr+4-rE#@m_eGUwa;F%~L_#7d4A1I{J1M?>2Mm4bK+5TKuv4F|pUyeseNI-n7Q=CeS zN`EP6+Hf9Q!c9;s#yhsATrRat#~{Wm4m4?4w?3MI>Gun^lD{vwKnEE?XJasu*oJ== zj1D^%6^UxA2nfmZ>pFwxWBxLrCbb7_C4WzFZD9~)&<2MY)@>`ISVcjl<=+~gP<sOl zBQ-fKpCBhS8!Hts15M;V!<H?a2@+0m3JQ91A~qRHO8V<X>=P9f45bC^Qxz2Sn4Eqe zU|{|&!&>kU)Ieiq5CWZ~%P1_)tP0AIkoE)SB<63KCp}LX4YC%+piE`59$+j8`8VYQ zs3o=W^5u;J>n=^H%?CH51acZcX_8gtp9!?M1*b`6L1WMbTacp}!AVmbk{Cfnp{a@5 zA01pXg&a5j_^>$On<->f0ml>gq;K>%0w1D+w9oLb1}wg0gmj&E>{wJJVJI!YFE6C) zj8aC}{Mpmh#RV!atX-kuCIK!lI2a^A^J?PEpqd9`o)!{bJ9fY(Yc0KFgQ0=NxCL#_ z7Bof4^6Ly+$-gI@Iq>z842+-~(ZELq!`4ZH?t=LJqi0G&Pl8W@O34+bKN(xDloWL6 z#Pp=F_b@*AcjTW7(~o}&|6YJd#s}c3J%xWS822#RFtGey0-Dn2Y5^~`(`9hMy+=$K zGTlI2JNNe+3j<^D6gi_0Xrdg1T?jOKxfG!D=;|O^%gpSr6fsKzSbi6<CH!-MdO;1e z#1wf64f3E6_=pRfiTMo3ks!?IVQFk&VPRlwX@j1$G2Hkk3zEvOt>a&F6*-l&{GP&= z@lOKkEE&+@TezGBUZsaVr~mtirJ<1p$RUUj3_)pwK-{8bW~K!TFFmw06ctts+P%wW z^Dlve2eNyYHGqNfkHp_A%nSY(fDhimyp(Ri9gUf%o|RWTJ26A+j^)1Jj5^DfGHU<X z|M!Y!h`WxCdx&Q6lwv2xqN$+uVSgk3-T6NSvOWyUN=a}{4l2IT_RWFC|EcT<=?Zd< zhObuh$;<IH2dxhac8x(6^fL3yfi4eo)`ctvb9e(<9R^-61`%-i|NplNTf~1JE)NEF z_6xrjFsm@I{EYf5!tm_>0{Cb$10(2YL{`vMq^7E>rkqU1!s7py<$QVYFXfj2=t@$^ z^`wkG|1uuDDflb#1$1B{%ZfP$89WAaR{Z<%uK|3HBIuql1_tH>9H8qAgh6w4s5d%* z*8DOV{Cfks#vw*aK-xpGqJ`1q&jq%O&y39A9mjnwA)xg+3<lt#;W!317Uv7#L16|4 z_A{X49YDukFt9U9fDff%W=LURV1?Zn4Qg46Dw=|)v;~y~S$lrnVEprj>CPK=g*$g1 zfM&8mm;rhd2KyE8h>JP=R7LR72qr>8DyrgqOpp`bz>9TE)YO<hc&uV%n$Y|2<%Ol6 z=lOZ;U<_d7&{_Fzs!R6Dn4<Z?8LL<l9%!BYcXiv5fA{BiK4KK^^0~p-$Y^!b;EB@Y zTmPP{-LmOZP3-1|IoBFs_H!iQu%7|c>cQ`T*u#v5mlLMESQw1oem_RhoD)7*|GoaV z@_Yos1uP6xK!;~Rm&r?l8=s(ikRexzgK9QtZw$1i47yJRycR}8jQI_d52MYW9+`hu zOjR~({u(fLG+n8yyVBHmsigjDgB9$?38p`+EI)2AK4A6u%@e`u^Zg0rW{S@1B~4fA zet@o<C^Sm($|+!AX6X34f~|rLw47cD;u2wXMn=dkAE>3Eb{VXLD5`GGsL062#59G` zq2|rsUyMv}JHy~tUu+Oz+`wq^cZE{bCN_pY9RF-YSXca5fUxxk#5MI-8$2Gc#{6W+ zm>mi}x8goq4aXEFH5PTyGzI5;M##}4plJ$-xC>Mqyatfr#@_?1Gr;PDq2dR?6BQT! zzhQa+7S91qYjDm#14_Y=QwXOpsWG!dRYOd_@&5_bln$sk_;7qs6mdj=O_>W3X9Dfj z1KsLI{E@i~j0_k4MldP-?*KRUK}#*5Yhys?EHmy%Yr3E&$FIW4Z}c~!vYpZ3-xV7J zmLBl&ut(TPvZjYUfhC3G4(NJsM)0aI@Ja;G!e8k8AfwBU^^MS_;9J%=Le~MaCt&Om zXPCjZfF%Ze38Xlv>4&_`9l6qi+|>zRYYbWxV{BwL!#~i^4|GNpXgfG~@j_5UNnM(` zudS1=F7ln77NDb_Y$76TKyx1Uk&#UHD#=qpmv(}7jmvAvyD~5_oM4k+0i90F3f|Nx zs?2Drh`9F5ltriE-w{TIe+#S&19Hr)*nC77x5yNL&nvc{l$=2Y{dd>|SVTA&7$EkW z3M+~-GJ~=tXsFxNlqq5kqr$%<Q=rxxh%oMv`RBuU0mTVaFrtP{g1LedwDVAr0le26 z8l#XF4>+Ddu7Ws<nW3Ty7TOhcY5HC+9@@IjEg>NlT56mkXhHn%a)RF`8yCwm*AxaO z2D;eu|NsA%|8JN*I5U{kSU}m6opa8=Hw-Hnm>52=39vALLmRZZ5ggmBrpBPLcXl;3 z76wpctNiWwVQ!gI(Zc2ej_iVr<Vp4+PRA(LeTGedMFnm*IHp-aBN<@pnKEWDs{A|h z??FY&4=Xb^XhbVG9jgG_54xm}GVQRC=LD}Fh5H$_${sVW85dko)2ayxU`)Uk)9fJ$ zDXwLfE;gH(_|Re-DT--p5oqHUs89vRF{DtP!?1?|G++iUTR0AYZx92`lrkF&gBGAc z#<WD(kl9QIfBtOv7XdkK&X36qQkVp>cQ9J~JMkpK22y^oAgz6Z8O{w^mV&F`0$tvW zrI`BnWzC;I?C8Z(Kgc!)Mus_TI!qDZ1j4|`XsReI%6J1*_{?F`Vca3}&qabLC5$?3 z2bf-POkrRJ%`t$A6Gk0y(qcOx0V+H^7#N9A!f=F5fJujgfdO<7AULszfrgKc{E#qG z%c*E#pHPtDloO)`$`+v7ig>jP{vKfoVZ8uyov<nBX!!-qTmHRa`Euv`7j}dH{~6}| z6JUA5G=Yhobu9zKuL%rH3?Y9rI4U?I7zDrx7k$?`qXG+yI6LUpT?H0)(51U9DgQqF ztHHVr9dvgU<8(&JkcPN_fB&t#^KaX~n64Qaj3SIJXgk!oKICo5%CX6CXi3N^+MNFX zKcmjyAFL%D3=Hb5YZ)eh>S_@E3v^O#%Ks3S3GASwB;fP@$ekTzHp_%RdtNZR{5b-f zjc2+6s>VRo8T*y*4IB-BUqEZB-=Coj21bS*OmEn2SRmCdcu_gHJ_HrT(E5<=LXPW$ z$vI~Z?v5#%?VS>GV?zGPeY+B37qWP)FslpB3wF2MU{(gAQMd53VuW1<qX3QoS^y4^ zET@))jH1oy3@i+L7}l_wu!0Vw0__+9m8OcOir}Lk1(k)F)fvTEO@4Q<RJ{3fr-fPN zU(W%SFD=X}ElfRo{vKd9Y58-3dB*P+mYUxWI+zVw{{Lr)`G0|B3u_F6I$Jl33-cEc z&F;f^2DG1o-G@yAysqg2TMksk1c(Z@6O3m-Dmhu0L6_ilvz-8|%=v$Tbp=#q2%7{* z1&0GfB})i|=5Sz>0GZ9^!~Es{e};tr7Z^9NM}SnafNn5kX9Mlx5c&U~q2d1p)+tb# z3|0=13Jx6z%?4G;=D{Jtz{UV-27)Ni;#v54n1Z04YJ$ds$ZIl@Z+-+#i@*vdWO2|v z5O)|Sxx~b{xWvT#-UDTTI3Uan696rh`<n+^Gg}bh;20k6=nw&;nLof-FdE&X93mj^ zuz0Y100jle<G56?{(z`tegad;z{pU;%)(f~4m$af0d$%vW5pl#0MMOF42%pj{;puD zVUhtYkz|C7+e4?qK*!QSh9hCKn4omblrif=*Nj(Hi*DvJ2mD=ASRGVkv$!##!eD{f zH71#kce8Z1{cD-<ZC1w>p3Lrmd1X4&Rz;aj2&`vdWJvkDf~|)mfx(J_!I+Uz*h~m^ zoCBy%X9S-g02<?h90zD>qNdIWTD}6A)CZmT&%n&coWgj4(PvL`tDjOqNO)neB4db# zzUbY<u}!Xi{l?ybazg)F#0-?;j?GzeI5cGQzo*CkZF#_)^Us5^;4q`;@oCQam6iE9 zztaA&RBUXw=-n<WeM3<=*wwGsk|oDw_ST$=b9D{p%1Zye{8#_?*1u}T3;%o=z-J<` zwtyGWf_6zm#@Q7iXM;i4w5yqdf|a%5*9WE#i~@%Fa_;<cNgi!8?EYPO13Ta=p#Xed zRl$xNHppQMEDRO@W7sO#KQQn!h%l&t53NR<&M_AR?e0PoRD~RO0-CH;F$Nva0J$%X z4Lsulx$+Kts56tPxR@9VsL#wOV=$wodg1{ur>G#A0}~j(K)Am4Q9(>GF-PWH_;-E& z3Pz)I&lnw+{d;iYN!z-R>Z={s7^QmF|2ur8``_*FGq-45W#n(@*cs0#!?N-Dj1_<1 zFn-91=*#+B!0hs`23e>or8!>DZt?vYbAC<Q@bA^EId_8lqY_%;)T~y#n6>D0yZtOi z!ApC>8r;0P7??l@=y5Dy2OWuH3tA-u+T0<kq@u@U3LVB15i<rYPz8AwbTb_zv#PkN zIAlqasSyikGKP;yS)E;-c}eX1J6r#~J6vh$A879z?8^M+_m>q<UhP`6H}Idz1g0Nr z7$xom1WNCHew9&RhIQV?lQDZf>|s;*)3WSD)E&dL`S&I;@34;yv9S-mvuDfvvvtRQ zr!ca7*|OygPe6u2(WE=^(^q)49;me1vgO48|G#S3-Y_t5gn%~6{#?WM2Soqg#r6lZ zhV$<Uwm<*>|HwnA_&yJ!0=vqeSN=NufADVw$c*-}D@3g-GV6#^I4PapW^@r`i zKhO*jXgh{5tGcSHIV-a<v#K~NE4!-jpBA2fcM2GF{#_|xRN#2P!KhI1?*^kr!M_I_ zYzG(vHXK;8;K&xnkbi5o99gj7$cBF#K=suBCtMaR7Z?&57{pCMSByZXyFtANNZ=~5 zffkg3c6dRTV}Q<{2Hgk=z4Sv&RDcPT%9!x+cl4jEwYIglv9YQ>IRV19x3#W4)i>c( zt)-0(gnjDYygSwlXUv#ydF$W2GpGJ7xMewi#*Bs5cmB;g1(JjFWbQ;Syjq>y+L~N_ zbzw9v_MP2~>5NPj7aAHaRQ&t*Z{}`7d{Fb0fr0S|Xhkv8W$=iB!2buVDr_PQY)ozq zps|96{|`V*AQ{-0f<A!wHy9W=c7Sd)VEO=FfxLr(fzyVA0epmlDQK9@RMAKUyn0wg zSrKxXi>L?_8w<0bqM)#%f(qy&FCjA(aLQ%@4Q&ar7%Q@_05y6pF-rC}{rht6-x)>| zMlQw)_v+vOTleSRn-Blq{CoB<{cinhM)%{4CjYJ+`}elLk5TRhBg>P`jG<o&ZZJA* zc=7aK_`h2@umAP`Z-uPk|H1HzaSx+a&Rxd1?@ccj|2zDm;KRRF+ZdP`mM}1|fv#`> z-C|}0a<e(a%>qoQZU(KP2CcaSjR1j?0?0oMf}jI7n0EZjU}2nci&1CR?0@%9{BvR4 z19oxUyMJr{Y5#k}xCeC5f8FxnovZ&{U^HOlWAvK#@700bjImz|7#SGD*B*HO&;Q?r zoG1Tg{AqzW_h-z3lw*?uUR^ryZ{@%1K1cpNp3T6@kio#f2^v&{IMo}JY84gnIak>f zRO*3e(UeV%6(G)KRAg6F0)@5!D6~Zp(EvW^AF=}8*jQ9qfk6<oE}r$rzb`C|9B|)( zd;p3Mu<y42d&6kZ(E;|`k|j`|{hh<e!}9OPt$$Z$&1O_Q0ot$o@7uqEdv)&^gBf+< zs{eiZw{04u7^&gFw&cL>e~Z5q{Ac*La_xcVj2jsZa-J||{Au~O1QuqD;f$I-M;K*i zGcZC=zmWnp#D%f0W(VCc1j@spjQ}N#B8sQ)oP3*B@p<RXlXCywh-_dqz01hVn0N5t zzp4Kj9{fACfvM*F+aruF2i{#`blm#&{1Ha|wJ-n0{(JH6-?M+Q&o?saGBCn7<0uic z_l4p+2bdVX{1agN!y&@}IZq9|=ns^)1cbo#BJ^BSaQ*_V3N!;9H_ZB_!DiF*?w|i= z9X!UE^Xmzt`C5^G9~4jC*!8I_{rQ2KeNBvV|K2dJSrgXa_MCAsqtpjR3C6`Q*Z#YB z<owsI|Mp+{aNysbBR+ZWey?BwZN*>1z`)_ceuV)vQ~^5dno(St5u9ZhmCYF$OPEz0 zuKZcS67ug2OT?cwH*A<qSTg?9JYn9zqVnSbyTb1ae`206w=l54vm-NuG=m9fJAg6h zs!=TEhyW7{XeR}z(8kze!HAOXA^SO%moSP<V4MI?$03Ysz`6A9ztn$E{uMA<#P`PP z2hT71w}sJX3nSk&P!|1nqQS*i-aEFV<Hmvg4?$V;z;?#qS988G`ma6!E@Ni=yY(;p zDWl5)%lzfJHFJ){9GLy@;js!(hGn$bqvmE15$L^V=lqEII~mv+ZZI%#OK^bpp6D>R zGQ=_@GE_25W?%pv%7$J_LVSmud!fEyHU-y3U@wERH*8l4BP1US2&pK7+6kciEdt8l z?1GAd%*vp#bMQ#DF=*)_cqxOJu`x4f6vY&j$wB#Di4T-Q#Keq^*-97%;Nb)-fA9ZG z{rBwOoCKFZ<)Ek~ORnzU|4`yce0QvF@Z5qscQ!HdOq=%a&AxvD|33VC_AmARJ;n)) zT%di($Nt@)JBv~07NY<Uqrj4aX<Gw>HceQv#LiDeInbpb<VfF>g`v|J`L^7-6WSWB zAGoyc2=*{$YCs9je@Czc`M*6+8CNo@&0thxT>13C>VF%*&3W~2?e+tpm}6=PnUxih zH7jI~qN`bift%Vtj)-NiCs!O}l%IXTIA=v^&7@-~pw{_64yGPX5772-VMaklb4EeN z6i^Yi0dzOQzb%Xg>>Z2-YyNe7-|(-4f&JGMwvzt|;JIXW1|9}M@M)Hy6GRn76`73% zl^H=R4jGMw*_D|EjRiqPFS9aeMiaEw0<<$lO&PQ*^0x-)oZ=~4wlJSK@o!6r#J>e6 zK1hT}toXNri9_d~kHd<2yB^Hkzrri+L0~+GLJ#8&@T9Oz0OOQ@89x8sfHo&F{pk5S zrC{db*6jraneL|53@pEW*b@FLa6*m)Q3oH|BdTl)IuHbOJv}%zfciO*6+O@-VPpon zhZnR#>Cc5XGFzAy%s&~kD9fuaW&vA}ja`76T7aFaC)<L}|H>I7I2@)-VblS+<j<FL z>tu>n$6FMISsI&Vc*}aGo7p*4%whEC=wM)Fn8Luo69XP?fONZs85mSSE3KFng%z0< zg&Ely%|SGq$DThrdk*}2aDYwZz`qv<Sl%4?W3Y$i3y6K>2)n=$&=Hql`~k*eU}R8X z+Q51Sa$OuFVs4ZfG|a$y=8k-H)%?`lMWsP<4|KYAJ!)!sysMLGgHDXUp`m|_PUNC` zFR%JV;B!1p7#P4i6&M6XmH3$0744W*8Xs>d7yb7}bpBsPPY#DW3LYgPUB~Ne85kKD z*i4vrK$U}A-{OjT%=;NV{>}%fFW>T*J>`yV-SMuF5)Xy{|9>U0`7kiBZ((BRyve}8 zG2{P#1_rha)&=ZmnAkaQfkYS>|J-0_`F{o+NZ>nJO#bq)U%7CBf$`@9c9uUkAQGT$ zX@73~<v_@wX!#`qkpLZCz`*do0JH&EP!x0y9q5pP75}dM+G}}7YsQIZ{~FdfmrMy% z5Agt1Rt%7X4nV3|!N(ea8p2F3?pW^q_3z3G(6sV|z$qopYrsbr{7U${g@NHe=v+Jo zK~YukGH~!A?V$6G|GvpzXP>t$Pil(H)aNq-*GB!jbHRX<UE5VdBV<w(7aJ(#{$5~R z@ZSWq>_X5~477?2RGgWEt1LCp<=2_FV!NKk2DD~-i%yZ5{&I%dswFxGb65Z4xgaFM z#>p+AX(6u@))&Ig$-=@X@c;jx8~<|tpZRaY#LjtzfdO=x>dy!Na{k-^i(EyBK-F9W zi7+sN?%HGvU=v}mVPH@N)gUH%%-}<sML`D_ih#S|pxe^HNBDvJ0cy&oMj&B6CQx^P zxuSo4tfGpUnTlBW-en4r&SoBF4)gy#zj5u~^Z8B|9u}_A3d{F|i<x<tDaLL%5LDl5 z<<nYKQevx|m+x~&(ALSPse40p`q|~Fsmsr%S8wQU@^P{iyyKIfr|dIf%EEZ7-ufW$ z?JIAX1(-nVHQ5;$%t7N2g2sXmm<;|kTzGTf0O(|7(BQ}41FQ|;v%j3cZT18xUya2H zH0H<tkD=lZXoI)MKLK_P&IJst;JYXoLFYm<G8!|2cCE6;{QmNS`O3d9C4W~iB}gzO zFtYp=_|NcHfMdhg1TKw^2mca&y0Gm5%~JpW&nWXZhq-}k3WFM}-xdZ2c2+;e00z*$ z!3lp87!$xJu`{rO_LwGIDENDU$$){0VbA|3tQKq{4BQN=3=FEE&J$#7wV1dms5K4g z;erNLK)Dutb~n?H761NCViXAI2np-(v$4_gHdb(28kkya%0KDfpA%1-7$qJtFZctx z9PY^z=Z#C41Y-Spc&>=5dsR>K{rlz7zZXpmObmbi9%22$Cc?l1x@R8L7%^sM2aUFX z2Ma(gcNTV2GjPodNykhA|K9vDXc3H@aieb^BTL(~e^37v{C>fhdpUS*N5!H9mM1?R zaM=7^Q?QDWcW=spf2$t3T>E$C&SLjF7CRW#?zv3(G%0r@=wuhr)*a3e@HP&_$u2z| z;Hzz3^e~CAt?2;YY6B)9{Vw(l@P@N{pg3d8V0ZwIOXwsi6B}nI18BN!1L%}}HU<XJ z@C#_0of@dWVk*F(s0bSV5C!iTP*h?AZ^8%N{ih6>IR~AJf8^gAMo&g%#ytlZMW+0F zvvT!6mvyUHbpC`eW-wl2H2ZsE$-h;Mw+xp2J;H4B@68>?07jAWf1e-Rx$}JC!so0i zckcXI!W{F*hWW^!ISI^1{wjd3b!T8_IKjZc`GSoB>{V$7c?K28wN0Rs3S84Df?Wsd zdEjvz+m&BEA#a#L_o0EE$f&^RLC}fJ4tMS_9f0gw1v~fOn|~YdJC_BtvxM~w>jm)o z67a!zpinYqWMnpG1UZ=%bm{hue<}Z7FvVP8O!*g6a)Bw~--SOXm=ykfU=jHJf%U>K z0~P_s1HTNIGVa_l`Fn=Rgn<ooav(eCwmDGS7j%6F_(W^aA%BdD(6g>UONJB~jhPvR zO%+Ai?){6Yy1<n1<HDN^rj}c8{_J9kxzO-0#ems@#eos(CB~jRcm9<ynfyJ&#_-SK z_W=+ew0ZFF3YI@?B1~#5`@kusl+gy9QY!vGVEF@1K_GE9whVB8y@G*(V*v-~Lijyk z)p<;ilYb!MppB0Z@eD>E&{#02d}d$*&2y+f;rtBZss8|rGce3y0Aofo1_q{Yp!=;D z7?{%-7?|fUFfd<XU|^laz`%Nofq{*Ofq~6~fq|`ofq`uk0|VPT1_pL51_t&F1_t(d z3=Hh|7#KK&7#KL*7#KL37#KJXF)(nlFfeesFfeeoFfec)VPN25VPN2LVPN2DV_@Jq z#=yYM#=yYs#=yW`#K6G4j)8&u0Rsb%3<CpC1Oo%l6b1&~BMhMJ&J6sY7#IW$7#IXH z7#IYWFfa(*V_*=R#lRqVje$XkiGe}Lih)5Wje$XE76XIO4F(2bF$M<V5C#U}HU<Xa zV+;(!KNuK9EEpI>vKSadZZR;3?qXmN{l>r`roq4<7R10H{(^x)LV|%o!jFMLqK<(< zViyC0v={?}v;zZ!bQS}HtO5gr{0asJ`DY9a3Nj1~3Ly*(3SA5g3MUvC6nPjJlx{IF zsLW$vP&vWCp!$G;L46eigZe851`Ra^28{#;28|gE3>p_07&Lhp7_?#-7_|Br7_<&B zFlf6lFlbjWFlet~V9<WVz@Q_?z@QVsz@XE^z@T%0fkEd31B0#x1A}e?1B31y1_s@8 z3=F#e7#Q^Q7#Q@@7#Q>xF)--eVqnl0U|`VqV_?v4Vqnle!oXm_!oXnQ#K2(Cz`$Uz zhk?N`iGjiJ5d(t}4+Dcy00V<j2LprA2?hpZE(Qi;KL!Tl2@DLzR~Q&fgcul10vH%f zsu&nd)-f=cJYirkm0(~n?O|XryTia>&d0!D-oU_M>B7KZt;4`zyMuwj_5%Zhof-p! zT?_+*-6RGEyK@W-_ACqx_I3;m4v!cZoYpZgxXLgvxP~w=xOOoxxE^3&aQ()>;AX_Y z;FiI_;I@c?!Cj7l!99V2!F>(`gZnK81`h!S1`js|29Fj729I3~44!EW3|>zd7`&wz z7`($67`$IFF!+ivF!<UrF!<InF!=6bVDSCHz~E=Zz~Gn1z~Hxrfx+($1B1U21A~7N z1B3qt1_u8R3=9EM3=9Er3=9Da7#IQ`FfarvF)#$CFfatJU|<OR#J~__#=sDi!oUzT zje#Nf69Yqt1_MJ#90NnhECz;<a|{fjEDQ{xHVh1*B@7IqYZw?pA2Be52{15(xiK(= zwJ<P*?O|XD`@z5vZo$A1p25HnK8b-Ld=CRd_%8;A2o(l~h!6&bh$##V5f>O3B6%1X zB7GPbB6}DZA}=v8M2RpkM0qhVL^UxmL>*#ah-P45h}L3Yh)!Z)h<?Vv5TnMx5R=5f z5HpK`A?5}HL#z-3L#!VILu?lVL+lX-hS)z03~^=*3~?C@3~`GX7~&o=FvQC-FvQ0( zFvQPeV2HoMz>vVjz>wg>z>v_zz>si?fgzELfg#a{fgy1k14H6128JXN28JXb28N^w z3=ByZ7#NcNFfb%rFfgR}F)*aGFfgR-VPHsk#=wv&z`&5Yfq^0Q4Ff}(76U_C5(7ip zJO+leTMP{8GZ+}s?=diBJYitS<YQpSOk!ZjoWj76d4ho<i-Cb5%Y=a;tB8RiYZ(JW z)-48x>;wje>?sTk*@qYya_Sfua@H|0<lJLm$Q5B=$PHs)$ZcR?$X&(2kb8xJAuof0 zA#Vl)L*6k4hP*Ef4EcHt4Eb>k4EYln81hdrFy#MWU?|XIU?`l&z)<v$fuVR714Hoz z28I$A28I$F28NO{28NP#3=Aa?7#K>q7#K>e7#PZ~F)&niF)&mfU|^`8#lTQIiGiW^ z7z0D?9|ndx69$I590rEEMGOpeHy9Y|MHm<w_c1Uueq&&0(qmv~%3@$>TExK6^nih( zS&V_9Ie>woxrKqDc@G0a^9Kfo77Yf5mJ|ktmL&`fEzcMjT2&YrS`!!;TIVq^v_4^A zXp>=JXbWOsXq&{q&~}P}p`C+)q1}&xp}m5Ep?wDfL;Dv7h7JP;hK?KthK@B13>{Ax z7&>Jb7&;>u7`jCm7`g)(7`m$%7`m4*Fm#_|VCeqAz|dpDz|h;rz|gmifuZjm14F+W z1H*(S28Kyd3=ETc7#Jp<VqloEhk;@0KL&<rMhpzok{B4KEnr}nc8!5yx(EZqbPooG z=?x4F(~mGPO#jBfFtdVzVb&Q2hB<Z&4D-4e80PI_V3_xTfnmM|1H=3z28Q`_7#QZC zVPIIm!N9P<gMnc|8w10FV+;%nJ}@vWdcwf4<QW6Q(ijGYrBfIfmY!o^So(*7VVMpC z!?Gj>hGml&7?z!3U|7D3fnmi328NXx3=AtLF)*xZVPIJOgn?m=1Ovkw9|ndsbqow^ zb}=xldB?!8R*ivSZ5RW?+CBz`wTBoO*8XE)SZBe&ur7~*Vcil2hIO|X7}g6gFs%1r zU|8S6z_9)p1H%Rm28InT3=A8p7#KF}U|`trg@IwC5d*`<3<idc^B5R5-eX|cB*MV3 zDTsk#a}EQ;<~s}wTSOQbws<ixY!zZ)*b1VX7#OzhVqn<%gMne24g<rs3<ienTnr4` zZ5SA~*Dx?_U&p|({Q(2R4ju-E9rG9%cFtm8*m;hDVHX<%!|pu{47-0YFznG`VAzwy zz_4c?1H+zs3=Dfk7#Q}RV_?|(i-BRE9RtI@ECz;ss~8yey<=e5Z^Xc`zl?!l|2hVS z{jV4p4rnnj9LQl{I53Za;h+`+!@(p5hJ&*h7!KZGU^pbiz;MWmf#FaK1H<7g28P4S z7#I#;U|=}P#K3S|i-F;I6a&NYJ_d&4Cm0w`FflNkuwh_0QNh4)VhaPqiFXVPCsi02 zP9`ugoSehJaPk%d!znQahEqWd45wNc7|xzxU^vIdz;Motf#F;Z1H-vR3=HQkFfg1K zU|=}!!@zL9g@NJxCI*J{?-&>^D=;uzj$vT9+{M6fc@G1_<yQ<0*OV9-uK6%9Tx(!p zxVDOc;pQs_hFeMu47b7<7;ZH%Fx=r{V7TMNz;LIAf#J>`28KI-7#Qx_F)-Y%V_>*@ zfPvv269dCNI|hb(O$-e8jxaFX=U`yC@5R7yzlVY0{xJqnbDH6S3j@Q08U}_3I~W)q zd}CmEsKdbUu!w=-;T8slho2Z29_cYKJSt#dc(j6n;n6DwhQ}%l43DE27@j<0V0bFU z!0>Dr1H(%$28Ndo3=A(T7#LozV_<kK!ocum8Uw?-c?=96RxvPqc*4N&QH+7%qYnea z$2tavkGmKcKK@`}_@u<Z@X3dP;qx5^hA(mq4Bw_OF#Pz%!0>AW1H<113=DrCF);j7 zU|{$c!@%%w1_S7xP=^1Yi}hR>7#V#S7#SNF7+DT5FtX2MU}S&6z{oj?fsrSOfss#w zfsxOTfswC;fsyY310&x*21b4h21fn@21fo342=Ar7#Ia~7#Ice7#IasFfa<dV_+0i zV_+0aVPF(o!N4f^f`L&;g@I8hi-A#S0RyAZGX_RsEe1y6JO)PLO$>~}Ul<rg)EF2= zVi*`j`WP5RPB1Wv<uNddyD%_HxG*qE1~D*7b}%qX?qgt-{Kvp3qs71|@5I0;U&p{G zzm0)W{tW}8f)WFxLIMM$!W;%hg-Z;KiaZRAN-PYFN_Gs4$}tR#s%8v~>H-XmnhO{h zwQCp{b*dN`b$>B18W=G!8U`>h8n!Vo8XjU`H2lKAXr#lyXq3RfXf%U?(dZNdqtO=z zM&o%5jK&uj7)?DG7)?7E7)>uQFq-i(Fq-)=Fq(BSFq)lUU^HiAU^I7QU^MSwU^G9* zz-aM|fzeWhfzdLBfzfga1Eb{=21YA221ctm21cuC42;%k42;%`7#OXuFfiI2Vqmm+ z!@y`O#=vOn#=vM-$H3^I#K7o~z`*D*je*hO5(A^d9|lH8H3mk<2nI$cJ_bhT9tK9| zeGH7we;62D3>X+)vKSa$<}on3hA=R?wlOfe{$OBqGhtwKD`Q}E?_*%}_{6~IwT^+& z>jwj)w-y7VcMJog_ap{J?^6tnK0FMJK6VU@J{1g%z7Y(Jenkw7eybQ5{hlx|27F^+ z476cj49sI-3|z**7<h+)F-U}gF({0IF{qD$G3W#XW6&oC#*h^ZjNwuYj1l`77^7+! z7^5~ZFh;##V2oB^V2qJtV2lZ1V2qPtV2r=Sz?hW8z?fpdz?c%nz?d?DfidL}17j)! z17oTI17m6$17qqu2FBD242)@942)@342<b#7#OoE7#OqGF)-$2FfiuDF)-#$VPMQV z!N8dJkAX4Yf`KtVhk-GF5d&lX9R|iCCkDo%8V1IqO$>}h?-&@1br=|nvltkQ=P@uA z-(p}a5nx~}@nc{t>0w|jIl{nL@{577)PjMrw1R=LbQ=R>=@$mZG9w1YvOEUHvQ-R> zWiJ>Q%XJtS%d;35%U3WkmOo)&tl(o{tnguAtY~3itk}iCSn+{@u~LJ9u`+>yv2qRr zW91zN#_Aph#_DYhjMWbq7;Cr~7;79D7;B0c80$C~80$|lFgCF;Fg95+Fg6u1Fg7h< zU~Dm9U~EfcVC?wAz}W4@z}Vx!z}WkRfw9kwfw5nKfpNkq2F8i|7#Jt5U|^iQj)8IV z8wSQHY7C51@)#JWtYcuD@`ZtMsu2U@)FKAPse2e0r~Y7Ioc4f$amFeJ#u<+o7-!yN zV4Nk!z&Oi|fpJy~1LLd%42-k>F)+?HV_=+}$G|vy0|VpiM+}T}A22X3=wo19oW{Vo zcn$;O;wub{OZXTVmv}KSE@@(5T(X0Kamfb;#-%C@j7y^!7?)0CU|f2DfpNJH1LH~` z2FBHs7#P>gVqjdC#K5?|jDc~Z0R!XaPYjG(-Z3z4lVD)n=EcCct&M?k+a3nSZJ!tz zw`(vkZjWPN+&+zgar*@Z#vMBt7<as2VB9Iez__c3fpPZ=2F5*y7#R0_U|`&<#K5>W zf`M`G1O~>v#~2v*{$OC-r@_FuFN%S2-!ulseODM5_X{vE?ss5d++V=JxPJ))<Niks zj0fZx7!SlSFdmr3z<A&o1LHv^2F8O{42%b>7#I(3V_-b^fr0Um5d-6)90tZiD;O9L zi!d-AZen0OyorJF@GAz!BTE<<k6dA3Jle&;c=P}R<IxWcjK`E17>|W8Fdpk+U_7>u zf$?|{1LN@y2FBwc_6r8alQ9g8r-~RD&n#hJJZHwhc)pH-@%%al#`6yt7%#{$FkbLs zV7$=8z<6N`1LK7+42%~|7#J_6F)&`LVPL$phJo?Y3kJr^LJW+TT^JazBrq^uS;WA2 z<p~4hRTT!tYd07euh%dzUf;&Rcw+_w<1Hly#@k&CjJFRlFy8*fz<8I1f$^>b1LNH) z2FAPV7#Q!@Ffcx7Vqko5gMsm35Ch|5J_g3eix@yRPcuHb#=!V&6$9h*XAF!lcQG)& z{KUZc%7lUORT2Z^s|5^<Z+RFP-+D1HzHMV*e0zd{@tptz<GU~h#&?q#7~dUYV0_QQ z!1&&Qf$@C{1LON+;QO~3KZGzaeptZ3_~8r#<EM2Dj9=0i7{9DyVEpoof$`fZ2FCCA z7#M$eF);q<V_^KbgMsl^2Lt1;eGH6$r5G6hZed{jSHZyeA9V9d9|IGU2Llt+IR+-? z9SlsY1q@7VEDTI+=NOpS-!L$7XfQBwrZ6yZRWLAduVY~1v0`B2Wnf_9Ghkri_hDcX z2w-3m5@28wj$&XEWno|vbz@)>%V1y<Tfo31c87sUVhRJ3v>F4GtQ7;3JQD+x!V(51 z#Rdi@rB4h@D(@JW)K)MsY3yNO(qv#@(zIe=(kx<N(p<&Br1^@0NlT4^Nh^(kNoxTE zlh!Q;CT%4KChar^ChZjrOxmv)m~@O7m~_e*m~{3rFzGTdFzGrmFzMDXFzN1MVAA7Y zVA6A8VA5-2VA4Cpz@*Q@z+~vdz+`xafytzWfywL$1Cu!m1CwO|1C!+(1}5t!1}57+ z1||ms1}29L1}2Aj3``DJ7?>P|7?>Qr7?>Q}7?>PSF)%q#U|@1-U|@3D$H3(BiGj&g zg@MU6jDg8@0t1ul2?i!NCI%)q3kD{)ECwdGH4IE{&ls58<rtXU!x)&{XD~3iUt?hM z5MyBS2w-6H=we{<xWK^V$;80qX~n?gS;WBPxsHL!JBxwI$BBW-r;LHgX9ok5&pQSt zUo{3M-#7*)-)Rg?zE>ES`~(=7{QMZ0{5lwz{0=cN`ExNa`MWSM`8O~y`R`$1^8dlW z6kx=_6u69mDfkToQ>YXJQ`jX2rf@C>rf>%artmrjrbr_Orl>y*Ofe!1OtDrBOtB>l zOtBjnm|{OMFvaOGFvX=YFvTrmV2XRhz!WdXz!V?Hz!X1?fhqn115<(+15-i(15-jD z15?5&2Bt(72Bt(i2Bu^U2BwsM3`}Va3``j_7??8dFfe7xFfe6CF)(G$U|`C;!N8Oy z#=w*n#=w*{je#la3IkKN3<Fbk8Us`I1_q|=Ukpq+ZVXI06Bw9s?l3UrsxdI-7BDd7 z9%Eq2V_{&*^J8Gj>tSHZyT-s&Fo}VwXbl5Xi3I~w$pi+bQVs^DQZELkvJwWS@&X2? z@+AyRm2nJAl{XlesuUQQstzzP)hIA9)x<C`)haMB)jnZhs@uT8RQHO3sa}VHseT^= zQv(A7Q$rI2Q^Otxrp62grlv^@Oih;<n3~NPn3|U`Ftr|HU}~>pU~1pMz|`Twz|?Vs zfvIx=15@WS2Bxkj3{2fc3`{+43{1TS3`~6?3{3qo3``RyFfdI#!oW1yi-BoM2?NtK zE(WIQs~DJOEMs7rd5?i<wh#l;oE;2I^UWBT7BDa{E&Rp6w0Hpn(~>z1Ov{-Vm{#;L zFs;mBU|RKsfoaV$2Bx*Q7?{>;F)(dd!@#sjgn?<(G6tq?hZvZ4XfQDC<X~XhrNF?n zdm97Oo*o9KeeW2U_HSTdI@rO$bhwUz>8K9_)A1q(rW0}uOlP(+FrCX_U^>5yf$737 z2Br&d7?>_?U|_oRj)CdQEC!})6Bw9o@G&smXkcKv`G$e%mIedUofZbByIu@T_r5SN zJ-Eie^f-cn>G3TFre{|em|og2FunT3!1Q_-1Jm0W2Bvo$3{3BrF))2}Vqp4M#=!Iu z#J<MB^ofmu>5~Zq)29>$rcaX?m_8k1VEXihf$6gv1Jmay2Byzl3{0Q*Ffe_7!@%@K zhJope9|O~OAqJ-JpBR{aC^0bolwn}{>BGSEdm01N?-LA6zke_={c~erX4t^M%&f$~ z%>0dkndJZjGph*$GwUe^W;PoJX0~$-%pBJkn7O_&F!N1dVCFl*z|8l9ftg>6ftf#s zftkOLftmjR12g{@24;a424<lw24<lZ49r4b7?_1)7?_1uF)#~%VPF=KV_+7EV_+6p z$G|M|j)7TJh=E!35(Bf?9R_A`6$WPUGzMk~4F+b3R}9ROY7EShc?`^wGZ>g9Pcbk{ zeqmsil4D?&@?c<=Dq&!jn#aH_b&7#m>Kg;Iv=Rfe^eP5s85;&>nG6PInGFogG7lJ- zWrY}+<yaV)<xCiu<uVwU<@PZ!%Y9&Ame*ilmQP_|mfys{EdPXoSwV(@S)qV|Sz!qS zv!WFPv*J4jW+ep%W+g8MX5~5tW|eIW%qkBUnAKPqnAOY}nAMUPnAIjQFsmJ4U{?FZ zz^rb-z^tCcz^uNFfmwr(fmy?bfmtJmfm!1p1G8oa1GAPL1GCmU24?LT24?LK49q$a z49q%97?^bp7?|}c7?|}L7?=&a7?_Q&F)$lvF)$l{VPG~<VPG~1VPG~n#K3IwiGkTP zg@M_09RstO9Rss@2LrSDE(T`vR}9P+atzEC1q{p<yBL@)RT!8pS1~YK*)T9$b1^Vm zn=vrkY++!w_h4Xl+{3`^bdQ1Ac@YD%>m&wdw-N?s_Y?+Zj|mLSUK|X}UR?~#K4J{a zzE%v(zIPay{Z=qA``a)u`|n_24pw7e4l83|j_6`wj?7|Uj=aaf938;G9K*%H9J`5u zIj)R>IU$3AIq?$%bFvi!bIKV8<}^PB=5#d%=1c_!=FC3~%vpOFn6uw7Fz3u+V9t5M zz?_%Dz?|>Ez+A9{fw{<!fw}k{19Qm*2IjI^49w*v49pdN49pcf7?>-o7?`Vg7?`Wx zFfdm)F)-I`VPLM6V_>e!V_<IZVPJ0LU|?=4V_<ISVqk9h$H3fP!@%4*je)tVje)s4 zgMqpG3IlVG9RqXE8V2TG1_tKd90umzISkCbCm5Lfc^H`cofw$=OBk5@7cemQUt?gN zz{bEl!Hj`<LJkA-ggFe%6D~0@Ph?_Xo@m6tJZT97^Q3DG%#(Q-m?t|iFi&M+V4iBg zz&uTafq9x61M{>R2IgsN7?`KsV_=>x!oWP;fq{8?83Xh56%5SNZ!s{>;9+2%;l#i^ zqlkfd#v%sh8Rr<7XZ&Meo~gyaJTr`ed1ey>^UQS&%rl=bFwc@=V4l^+z&v{n1M}>E z49s&i7?|gMVPKv=g@Jj&8wTb@TNs!Z%P=r6jbUJ3uE)T<yn=yw`6dSD<!>06SEw;C zuSj5EUNMb<dBqt9=9Nqg%qy)Jm{;a8Ft1$1z`XJf1M?~o2If^B49u%47?@YBU|?Q# zkAZo000Z;tHU{Rkc?`^J=P@v^=U`x7Z^6L4egy;b`YQ~~8(0{aHxw~2Z#c%lyit#V zd6NJG^QLzU%$rphm^Vi;FmIl~z`Xew1M}u@49r{97?`(&F)(lGU|`;|g@Jj?0|w@; zN({_f(-@eyu3=!_`i_Bln;rx6wloIjZEF~qw|!z@-fqOeyuE~hc^4N0^WHlQ%!jTp zFdy|}U_RQ$z<l%w1M@LH2Igaa49v%7F)$yOU|>F;!oYld4+HZ_AqM7CISkCFJ~1$# z{=>k0R)m51Yz71KIRyshbAAlW=WZ}CUoc`|zSzdVe2I^N`EmjS^A!UI=BsuL%vWm| zn6EBlV7{iqz<jNOf%)1y2IlJ)49qt=7?^LmFfiZz!N7d$7z6XIZw$=03mBMh&thP{ zeU5?o_CE&ZJ6jl-?>t~&zPpTp`JNU7^Sw6=%=gO}nD75$V1Dq3f%%~v1M|ZW2IfcS z7?>a3V_<&tj)D2n9|q>fY7ESe?HHIJhvC2l49t%^7?>YVV_<%~1cIN=V_<%IhJpF% z4+iFEN({`;{1}*@^)N6$_hDduevN_oMFIo!i&qTHFXu5ZzY1bteszt3`E?Wn^Xn%J z%x~r~Fu#ppV19dzf%#ns1M|CE49xFC7??kZF))9)!NC0S0R!`=7Yxjw;~1DfUt(bX zQpUjiwS|HC+YAQg?@A2J-#r+ZzZWque+TjRF);sdVqpGphJpFVHwNaPG7QW=ofw#Z zW-u`SoW#KVa|Z+S&wC8azd#qnJYZn{Ex^G1+YWS$1_Sf&Wem)JBp8_gbTKgh`NzQg zw}gTDpAiG|zZ?eU|JxXt|DOU+R<kggF|aV@F|aT%V_;#v!@$C##lXU{hJl4Ggn@;_ zfq{jyje&(*gn@-Sgn@;-f`Ns58UqWD4+9I&2?iG4DGV%p%NSUMY8Y6AUNNu;S23`N zPGevZQ(|BdTgAX4euIHU;sOJU<Ru0csRaxy(kToqGHMJgGFc2PvT_V8vg;UF<m?z& z<Zdvq$X771D9A9dC~RS1QM6-VQT)KbqO^p8Md=I!i_#Yc7L_{;EUK><Skz<~Sk!zN zSk&qmSk%@ru&6y?U{U8`U{SYYU{TLuU{RmJz@mPNfkpiX1B-?h1B*r&1B*rz1B=E6 z1{RG+3@n;L3@n;13@n;u3@n-}7+5rKF|cTHF|cUaFtBK4FtBLNU|`WY#=xTWgMmd` zi-AQuhJi)9kAX#d9|Mc_2L=`$B?cCqFa{Q#4h9yT9SkfwuNYW#Wf)j=eHd7D>lj#c z*D<i@K44(c6JlV|b75f7D_~&Jo5R4OcaDKYpMilz--v-lKZSuse;Nae{xJp?{Z9-m z1_}%;27U}I26YT92J0AD44yEs7|JoQ7=|&h7`8C57;a-=F?_+mVkE`DV&uWVVpPSz zVzi8b#pn_Pi!loWi?I;{i*X7Ai}3^o7UMk(EXJ=GSWF}sSWG+^SWGGySWH$iu$bIp zU@_%kU@^60U@<LVU@@J;z+!rifyML>1B;m+1B+P#1B=-t1{Sj;3@m2f7+B0T7+B0B z7+B1^7+B2rFtC`vV_>mRU|_KbVqmdoVqme@#K2<lgn`9Ugn`A<je*6ojDf{+5d(|m zIR+Lh1_l-@BL)_$6b2TnX$&k@Cm2|)elW0Dt1z%w2Qjc%H!!eRZ(v}te!#$DBgVjD z6TrY?o4~+gyNH3s_7MY%og4#;ogV{>T?GS+y#@n|g98JLlMDlkQxF4-OB4f(%M1n< zmtzbpE*}_J+<F*T+)gpDcmy%9c=R!_cquWk__#5!_>?iQ`21sF@wH-L@o!^b3HZmr z5*)_B65PVT5`2JxB}9RNCB%<`CFBhQOV}v}mWWpjEKw5}SYjL)SP~2vSdwxWSdwNi zuq4l8U`biVz>>OyfhE0xfh9A5fhDttfhD_%fhBtv155TR29{hY29{hO2A13k2A14i z3@rIB3@inQ7+4B^F|ZUaVPGk)VPGlUz`#=0$G}p)fq|v`83Rj&90N;56a!1eGzON+ zbqp+3Z44~caSSZgJq#?>TNqfXUoo)Mh%m6!*fFrw6fm&V%wk}vIl{nF^MQe-R*iwB zHjaU%b{+#u-5~~+dLsswh9(A<Mgazv#sv&4jaL|0no<~8nm#bFw6ZX;wAwMSv>#z$ z=}ci@>E6QtIzyPH$Bu!e?+yb?|277e2~!wYCZ1tnne>E#W%4oxmZ>5PEK^+=Sf=h_ zV3{t$z%qRa1Ir8r29_C17+7YmV_=!Ji-Bdf1p~|MJO-9I2@EWAW-zeKIl;g(mxF<2 z?g9puc@7LL^TQZe7Hnf+S;)k|vM_^zW#KypmPK_8EQ^jXuq;kuU|IZ$fn|vd1Iv<i z3@l3>7+99}F|aJxU|?DPj)7&xIR=)M84N5d_b{-m5@TRlEylpIwvB;h?Is46^)d`B z8x}CIY;t2@*?fY5WvdDU%eDdrmhDd%Sat?5u<T-CVA*wxfo1ms29`Y>3@m$G7+Cgx zVqn>)!oadGh=JvR1p~{0A_kU&pBPw<6fm$HJH)_pB8q|KlpF)gDGvsgQ$-9cr`9pB zoK;|8IX8`g<-#ilmdkt$ELRv9Sgv|8uw1QTV7a=2f#vEg29|3a3@q25F|gbaU|_l7 z#=vr;hJoc42LsFPJq#>&O&D12mN2l~JH){9K!Abep%(+oqj?N0Pox-Fo;WeEJSk&f zd9sFq<(U-&%X2;kmgkQcSYC)Qu)LVS!1Ce{1IvqV3@k787+7AWF|fQ+Vqkd{!oc!s z8UxF#Lkui$3K&@4N-(gz4Psz<$H&0(zKwz9g9-!7hcE_~Pi+h=U;G$YzJ@Tcd|k%C z^7R@6%Qq$lmTwjeEZ;>KSiYZPVEMU#f#vr!29`f!3@m>pFtGd+VPN^6#lZ6a4FfAf z4g)L0A_i85R}8F7I~Z7**%(-vjTl&&Qy5rTv=~@fA{ba%HZZWV++tv56=Gmz7h_=M zEMs8hmSJG!Im5sz(8a(iu!DhB;0Xh(kP8E=ND%|8$SMX_Q7Hyi(EtWkF(n38F&_q2 zu`&i$i6RD8i6acG5`P$2B?A~(rCS(SrQb2I%1AM=%2Y70%KTzrmDONim0iWas=&m+ zs>sB^s(gTfRi%T0RgHszRc#gntJ*mRR`o0fR`q!dtm@|&STz_JST$@ISTzb5ST&|G zuxcD)VAXiTz^W<7z^duNz^Ylrz^b`~fmQPk1FMz*1FMz|1FKdV1FP0723D<046NEr z46NEu7+7_dFtF+_U|`jEV_?;<U|`kXz`$xG#lUK;#K3Co!@z3X!oX_0i-FaIg@M&1 zjDgkU1Ouz72?MKn5(BIG6b4oc76w*}JO);aB@C<<_ZV0$c^Fu&H!-l<zF}as|G>cN zu!w=x;RXY%69WUQvlRoYs|f?EdkzDu#~cP$&vOi{-ZBiV-VqF}J_!u0K3f=AeI*!J zeH$29eP1!K`UNqt`t4$14QOFt4Fcgi46LCZ46LCI46LCW7+Aw37+AyF7+Ay87+50% z7+9li7+7PrF|fwoVqi^ZVPH*`VPH)&V_?nfU|`J_V_?m3U|`KT!N8i!#=x3u#K4*x z$H1DWz`&Y+iGj6X83St}9|LP)83SwKF9z146b9C!M+~gRSq!WtA`GmhH4Ln!8yHwi zUofziDKM~>+cB_~w=l4l|6pLPXklQj_{G3lS-`+r`Hz9Ms)&KLnu~$8x`TnW`Va$a zjRpg2Z3zQweG3C?V-EvsQyv3rGY1qOVqk66Vqk4u$H3Zpi-EO`g@Lurh=H{&ih;GQ zkAbz_i-EO^i-EPPfq}Ja0|RUKDF)Ua0S49{I|kOCCk(88PZ(Gyq%g2fRA6A8l*7O} zIfa3B${_~UX>JUx(@hvyXB=Z-oms`eIxB{Ob=C(4*4gtISm%f_u+Ft(V4eGjfpy*_ z2G;p=7+4qlVPIW!h=Fy<1P0cnB@C>~moTud)M8*=wT6Lp^&JM*wR{Y$Yb_X9*CsKr zuKmEky8Z|Q>-v8TtQ+hYST__fux_+sVBN~bz`Bivfpwb+1M9W|2G(us7+AO6VPM@Z z!N9sbh=Fx`7X#~#cMPn%R2W!yXECtu^<!Y&dxn8^p8*5wz9|f>`~EPn?oVQ1-T#Jx z^*|j1>p>R=)<ZlDtcPweupSO!U_Da7z<T5Z1MAUW46MgzF|eL=U|>Df#=v?ufPwWw z3<K+>2@I@P>KItBsW7l!|H8m}^A`i_Z5IaC+m{$v?}#z5-YH^Wz01PDdiMzf>%9a9 z)(3tJtPh(QSRZ>Zus;68!1|<(f%RDx1MBlw46HAoFtEN3VPJiu#lZUZ9s}!pHwM-Z z%NSTcK4M_~^nro(^DPF}Z+942e+n_M{(8Z{`df;D^^Xh#>%S@n)_-dlSpRo1urW+w zU}HGOz{beLz{c3cz{VWLz{aY?z{d85fsNw=0~;p?0~@Cu0~==n0~_e{PR=_FY+Pat zY+PXsY+PR$*tpj)u<^Jsu<?d5u<=JQu<`$3U=vuuz$RG0z$RqHz$V<lz$S8zflZW) zflc%p1Dn_a1~%~&1~v&j1~$nK1~#cz3~bVB3~Vwb3~aIo7}(_07}(?{FtEwJVPKQ@ zU|^HK!@#Cc#=xd<g@H|xkAY2T3j>?d2L?739tJj54hA;W8w_k}I~ds1Ss2*VeHhr( zmoTuYKVe|gFk)cS5@BG|ieq5YTEW1k^^1W`Cxd}a--v<DAcBF-_y7Z&SsMeJ*&zlt zb2bJxa|Z@C3ke1`n*atjn<@r2n-vUfHa8g9Y?&C??B_7BIeubbb4z1j^Wb4%^UPsj z^R{3Bt?y>@H(+23O=4gReZ#;OeuIH6@)!eKR2KtVbQc3#j1B`^%n1gzm@f=$u` zu_+8}v1=IEV!tr3#m!(~i#KCnOAujTOVnXtON?P)OYC7_OWec2mi&Q%Ev1fuEoB7* zTgo#Aw$up>Y^moM*wPdj*wW`Quw`m6uw^b|V9UJ2z?Q|vz?MCWfi1U#fh{kEfh|9e zfh~Ut16%$r2rdv{U@LHQU|;~PR|Jy>7!EKvFdSfL039|d&A`Z@s=&aY%)rc`%)r7R za^=c|3Fw%?;eSfwbZ#z2COBa5@MPG-;DL%6S-QOci~Y~}pYvagp@iWC!wH5Gh8K)> zjCKq!*m@p3=wS#6X_@Z*UjnQ|0!fJtqYbhWh6Yv!2?h-YM$olJ4B`w-3|tJ%3|tH> z3=aQ87)2Ny|400HVP;ve;f~|~n*TM7cNiT0M>MuNGJIk9!hGdQK|!+vqYvYcHSUZ{ z7(qwSuV7fgP{VMB;S6I9g9BqgW2@tTf&T)G92}1SUH-c?Gd46hGF)M}0;U%*EMR6~ zdGMgQzm-)(<If)v5fJOf4Tu=TWqAyY3`GnK3^5E$45kds3}(1o#&d_qFefL+kmuo= zHESL^{`dJ`$h2n78n^$2|9$=|{(A$0{}me$uIB)`UP9vTj$Wt#5g^FXyW_3|vH&wk z0O~(abpJ8bF!ZpbT3A@5x-;}JtYWwWhN~D(Ff3#$DJgMdSjcdK;TfX@2r@itzzhrV zEn9B?5qEKM5&v_03o;vfAcZsXF>*7CFv>BiGwLv^fw2^$AR{+eT!>MQQ4=f%k^_r3 z_cCz_a5XV~`|z!ai5<#nX_bY9^uNE~KD~SO?#=sefBygb`{UD_SMT0@`u6jGb1&1c zAHSNI*f`jm8Grn2Vq)cBX=#;(L<-yAUrZb<|5zA)egDh$_YV^rl#OB)FU%@%%Hm{T z1l?r7zzSaX%FMvZz{1b~OGOQgQIJH^z`)ep+Q9G+M1WYJGzrqlr2tx$&BVaOz|6n| z)_DMu{+JjUnH(9`Fa|U>Fhn%Bf&e7FVAnMPSyu;GR~Wi3PVfqF(CS>6UC^}Nz_<bC z$}o@v|ABNuY)epJWGGNzU`S?QVz6RhX0T^qVUUzyV1xiBCMHHEW^h(!1~ZVd6cfve z4G#ZnSnnKt^=i!=$Nzc%^VsHWKCo%&jAai0BOv*U<x0Vg&0UWFWB$i*cCEhAv1rYj zNgWK*Qb^`AGc&R<F)}hjF%u*+h9f1`GYmBhvl+S=RxoU2IL5G%VFklHh8YYq80Isq zVA#a4gJB25M#g|vXHYI>;P~&tc;|B?&&xX;oWCAly>j{8FLnlSRz=UUQ4GHrJ~A>e ziZCiL>N4sx>M$BJ8Zas{iZF68{9^dd@QdLmBNsTe>M-gs>M_bOiZF69{BG`L<`)y; zY-0KG?$z5LO-%n7{x>l&x3wxj66H5W<{zIveEIS5{pTNl{{8&-|Id#vA3wbN{^RGL z=3eFxuikubV&M=H6XIxMVq{=!V))nAssKruAAWIh@rcSR$%yiCvHkfZAi&4P#>~XX z#l_9n+{^qCWEl&Gu$TyEBiDZ>2B!ZEjDHyz8Ji)o$fLl>zynQbtPGGe3QAxMXB_@V zFd8s`*%=Ou0gM|M8W;*dX@CPnd}(flr*Tk91*KC&N>xKnb8kRJAt;qXbZ{wP<_eH4 zjtm|DBN`hRXTTC%1jrt6w)oTB3UMtch2u%9@EnDnRzdnmb0sKTU^cNUKyn4hl?-=4 z;UdC-nlTs|7#Ua?m|77&1lfk1??HMU|Hu80XautuHNYA18_0`(Ai@nAo}kbH>19JI zGr&6j2f+2(fb=>rtN`gt0}(yQ;RDhQvKbK@DoC-xm<H0!fKmd0{E9UVOal4!0XPjf zGMr)zV6<RpU`PPj_yI&nK-~-qU07HlZ2beVwSiFw7NJl};pqmX2b69==?+rDIl%NR zgXn366pTpW3ep4e9Y_zTJcWc!4mjm_Kr}Tl`~kU+1w^pHLI#%~9sg_mk6@I5_>r-I zF@W(3Ljyw$NH3@`X7~a1Bf5Te1s1R#1}9J$DS+9I3^N!57*8-jisc3dj%HB0_`>i7 z>|=Bj;I3!b@;`#n25bU@1SqG?fw{m2<P1<ygX#oa`WZq%E)am|uK?+P!qC7F0@4c3 zJh*%Sv!5XXr2hv*zY9n|4?_ck4@f^7hyaBn*nS2^(CJqUpp?l5Eh!p6*&zqquxM*w z+5m}wwg$$qKh13ojQ?1g+Zq|zn%nUDpCJHb{~L(?F(CUDAR*YmumHt=q>>6|KPdKb z>vv#ifEoZPJ#dDg9>@idG{BGoa={H)41kh2&NKiIK_QTSNE%=O```>rKe()f#{j_) zjKUj&pgoSDbCp1O2A0nnL5;eWMo<&01p**`g_R>1d4=HttQ`5*04@qZ@ynn93Mg1g zgXL#rdm0$O!15+EKZ8qjq;eTn?!a<p1EUE<2Pl#p|JQ&m1LsT~kY(^P9pqB1xtiez zI9I=b<!Tv_wj&_o0W4SJ)XS&=)|&#;3-%w_@+UC8{tS!^ehdr@Rt!uGDh!|_0dTbY zneVJwBjNPl=D*GV815A-RvdZ$K`$yHApzn$aBn~a)Sl*G<KPhD;Bc|B(i6JEq2|H? zZ9Zdk4}@wiT)6S##f>#<RxjUpWXp;58=#FWl>P$aAAu&WKMW6U+<e2}qQ?861#4p@ zfT4$B0>cf48w^(%dKhjn9AVhOuz;b5p@m@z!(4`K3?~?FG%sisgS0VNSlHOuSl9$O zxdnyzIN15vnkTdU{Kdi{#PqMVRSeRa_yYkyzJ2@ghlBO+mp{!52&5=R0a%LqpMZ#D z9#BMq2vFIP!@$S@I(V|4fr-J0fteuyS5HRy4&Q}iPk;RR_xtz1cds7EX$UZJaxwk* z#>&#s(Xnv{lZ=Ff1X8%Gg2H{<r5oSBedAOzGc!{b`t|kPxpTXhOqw)#8H<6oG1nbF zQyUgs5g}jm!2<+rwB=-!Oib?FdGO%g>wi2v%pYWAWS-u6!PX4QSE$`M2ALM=zu&)n z`SS6LfB+8<kC2ptf`a^?C%f)5Scq_b`GdU&6UFd`;RVAr22ii~0K-v+(+n5D@F>F` zh64<j7~X*4GlqNMsJy}OjA0AI5{4N}l?64<46O_^7?v<>Y3^2JAqbjV)gf{H?!#v$ zE-p5v-#`BS{q^J9t9y5!e*XLK>&qVu{~3OL`1z0FM{^&;|3(JJd9CV@m>1#U<>lew z;o{)n<m3?G<K^KI5E2m)72@GwVCNCx=jY&Q?pB1P4t!)YxU`3rA)xXH)P4fhmko?Q zkhnu?<o#%F1yzzi82*4L9tIW+-JtRW(mH_mNpQCFaFz#Tv@JoUJGk)z>hm`+UVs%P z;8FzC{ACb;whasz7#U0%7#I{7m>BpOm>KvPSQs4t>-^VYJaY!A+k-KZ&<QR(AR`Gb z3||;)7+o0l;2lxuL@6Pfof#Sahx`v=#NJP7p3HpV%C$@I@rB9E92^`Rt*nsPZk`Me zX#yoT2RKuMYcdT`rvA|kE%iyMkC4*?DKScl9bC}*6{X%{Is&P<+8US&AT?JT1VBqQ z21W)Rq~0$$)|rk#s;;&Mh60EGHQ)h^wnm0OpyrGYhyXQjK;;?_)J9M$2l)!Do8gE9 z!w*=Sr~p!ZwKX!xfHWQf5f5N3A{@FIHQ>4-6<Av%g91n+*a1(Vx?v%T;#<ZeupCwZ zNw3JYG|06Weq}h~z$gH<59Hef6yNfItmPrwMp%r1!UtXoFdcyu1E3gzboSaB8Gbak zF)}bQfXe|U2J~`(ct3(h8f6(67=##@7(lH=Hq4p^5<=j-2dx-f5Mu^l-$P1#)RKG& z!<^>sRz?*a5P9WJb2lXYSSc_vI4UqOC^9fHh%zuUh%&G+@bWN#2R@iUEgvQ(CJ~Pg zr~e86d;TXdO_6xw@ZX2&!+{lz4h(Y`H~2XGPib&un8Prqf$2&Cx=w~4uKz6<zA#!a zykN9oc)-ZQ<IL#8V8C#JVNavOe;LMt9tVae4UYd-{9Dn$z~S)UrGcTr88pPmuz_I% zyN!*6#F8bTLB|aY8(12iaBw_np5DYRA@Su456_DijcgJ!ECN4%2!I4{+z=6Y^F~9X zk@>_4hC7W6cbca|{0B;980CWlLqh|@ipExu{~Z5IFzkVhL_r6!;4M3Lr139Ud$ob7 z1EjNok%Pg3VNYXg1FS0wE{#|j7(qvdG9bryBg2ZumPU|bNc*-0tTLK`k)e)(fx#Sn z{Q@(CB?AkCriaI$OB>g$S##j@fddzhu358Y^D~VJ8e$O<5l-qd6DD}1q(?+V2>hAA z@T9SsS4>4hh3(;kH!pAAeDmT{qtpKs5aeC*M#$R7$7joyEw{KNvYkLt!!W0rrKiWj zr_`BY0vL8N=LZCo!FUsxawBux7!Lfu@xSoD0T@OwF23Rjs_YqWY;^md^WOmsOa9+r zIMBdg(Adl?s-|G9%EQCM%O$KL#@6V}@Bj>ZcyfIHpEz;C!^1=F>WT)Z{~93J%+TNh zj@2s+dl)9kRwTKZnHcCveY<mLMnl7rB}<OndBZ6qBje!U;Ga<ea@7V<{5P*|=4D}H zVPpLL<ImsUzyAFB*C_nr#fuMrSh%@)c)oo3^qql4KvF`Yxt)=Tv61Qj|Nm1M7~7gz zSvWYj*ccn7nV6VZm>B;vXlSTO3h*#~1*IBpmS109-@0?Bxs8#Lsfme^@qar5V<%`p z3ev{|#W?7se^7o$#JB~+lg8EtrZo%(=<$uL9$tPjZGouY0Z|XGZ^4}uP<Iqm>cVuv zQVF=!W%>fqWdYI!D)k_#5u_fu6oT2p{6>J`Tw?=+L^HF>6NZq+28Jumj4XRV^&3lb zE8`znpKS>PBf|y;28M73CI(*yW(F??76#^yIScxoKvM$$YdBO?R9R2V>DaI#<bTS4 ztN)V!MZi$wzcDE4{#*Xn1@lGzOaJ%#KjGhx{}cY#u^u>ZU{!yM<G&yOez0yhbN;}A z15W=d{-^u{RU1By?vO;su%2NZ!vxSUB~wM3ZX0O{){Suj!wZJT3>O&=GaO+!!hGb& zVW9|ynGA0jCops{bTFDQdN39;_JCm<V>Y7?qYq;dm<JNeWDI4@VBEuSg(X)<M<>LU zVLrnJ#yubbhP5miHa0c|jto~A_cS;#>NI-%R{%rt{{sI-{+;=E=D!7F*TXgvlejA= z$uewYSjsSop@Xre#+zXR!$O7w3|B!3|9=CBWFRg1cQ7(Cu9K0F5Rp-mQ&EwTWc$GY zZas5wad5Hz|HHue|6ijR6AR0mH*dZ$aPadB2>kf*?KcaDh^&lEa}(pwAI*$Eesv+| z4emR4Zr{9d<II@{@BjR7B`%|MF#iAFiIG_#Wh<z(V`X4KEA5^%wlp#rG(rnIQdPz? zFfvpzFfh0?Ffo`jFf+J;4$V7KQC$_U{N~CWr~f4&C_U%O8|C<_>WU+0-*d9P`6i&E zq9X9^4IAhCvkYGv8<~FV7CAA1X0ui>*PAe$aQ<Hhnj`uj!PI+^xsl1xLAi;AgNxzY zk0z#jhb}ZbF--X%@jruQ(Gw+$G#7?Tj0zygaD^q^MEd3o*Z(R1BN(PIEMwTiu#qcI zL*(t1D_1^AY4|%av@pzLSkS;w(#Y7*;PyZIzxIFr|14l=!L)+G&y8U}!yhnw&2WsN zhb1MUI?bSo<<kcSA^s+&50@4;GiBt|xiZXVSkJJR;Q+%PhN+?<8h`fAm@<9Yo?CC; zTwFD&v!`SAH=QImhE)vb7|t-9WjMsJf}ydwo#pqJ4`2TDvas?9@UV8O{`v9aA14n7 zFFyyvw>NJ-y!r6$@1H-cEWh8s`SA1apP&EPIN1Mv`_|kJR?pH4*8RIv_0_u<j~+jL z_T<^8e|)m?QgTX)l0tmKBK$mjJnSrN98BNdefjbILo;Z^m$8ZE&zBEhemAi*GBGi* zurM(-fehng>jc+kT?~v2ptDu78JHNN8JHOoz_C_PP+;-)+|Djg*--Jnmalu#<TXc* zphu<@p2&3g@7mbNA7aM%;K753FADN=a&nR*LP(8ZXND>NGeD5>LXjWC35Lgv+>92C z7L1w<pTOPL0}N9@kdj2;z-R$V1rGlM*ygcXfPnjdkN>WqdDH(c|Be3({QE*~B4NzP z@MoC9uo^TJ!f=D(I>R-FD-2s0wlZu3lN%ToF-##hA<YCQ1$aWT{PTy0^~bYYcb|P= z`}6r5J0CX>aY>7Tv9Xa!LV&f2`TxIv|C^Xt`9;tYo8^lacb@%ZWnp7uxpU|CojX_0 zo*^#zG5lz3VqolMU<6gyxRW8IoB{QpvCRZ9x_x1Uj4(U?*I+1NlwfFJ0FCW1yaQF3 zpw2KWg9HPtUIx|vuzI$E=>o$SQ0>pbPy(v`qd*!!l`D9V9;OR@{I7vY2CU2BzX7Ox zXl-Bs>jO`hfZ78veXzC$!ZsVQKBhIeYy<faW*ewS0%|*enz4*BUl>Ig8c-|*jY#|f z?Yn}vXt@~}K_{HS$G}0oiw0&lkQW;m1X>y#{%bISJlen@(bB-k69pOtfA<4Ke)-ef z1_|S221bTP1_p)z1||jz24)6N1{MY$jhZ_h=ouS-Dcwq9Da{mfg~yrFY|2p52<jD) zRaiTN2Pzo;hmf1ux=}M*GqJ^XH>jlLffw7&>O^LoKj01y?koc?xic9U8LAl=7(5u5 z7%Ul>8C)4yKqnvlulZl`zlvq*MGl1sCx!+PWQkDVxH#46f7Snr|24t}YOJr{a{PO8 z;lhO{|2W>hW>o{%yeyadper(%8_zIUI5RXs>S3m0{lAS&=MLO$V)^lnfs3PwNy*Nj znc;ymqYNWA!zG3Z%t1DMi=6(4fFSb%K8Gl0hS>~v7zG$**dCnQahTO7!G)onVF4I6 zu}Ar+ez<mpp`_6R<T8dO3|ARGf@|783@4Z(7&f{6cLdkNEdNFSTm3I)nX{mE)`cb( zK0$_eADfs2^x~Vj-@LfCbLsRcGxjs+M7T0c2ajX!Wmv~BgQ+Sb!;PVtVHLw6hSLlu z7|t-P<c!n!w5qM6ZPJ=c=#{8C8y6SL&+os!e*VS8BPK2+Cd9+a#`gCgyReuLCo3B# z^PgXTSa^6Dm>SV5Z80GUIaz5bSt)*|&yOEIdwB2uvv;4~y!rU$)7M{rfBpQ&EyTmY zDbU=+`2T+s3k#^CZ({%d??1zzKmYzUvHbr0;nS~9NRGtb4*LRXhn1kV!>kz?L3h<N z7%?z0s4*}zs57uI@V)TxVEB0F;)U~<?oRk27Usy%$k4!6AEPBOf#FMI3o8>V%iq5Y z(C#Hm`*{}gDp;?QOQWZUMa()RB*ad`f#Cq7%08F>?$GXnGvkUM4xsL$Mq?|>zdwKe zF*rkGXcm*gpIgrVlOZwG%-8|$^Pgcj!?2t?PUFkkj-?A09A?r9b7q(d>O3&4Z*GC) zoMvz^u(UD!XcXdLXJuw#{Pq3Wo9C~8GH{592}m`!u&{Cq@Uk>BGyeSWvz>vZQ3x{5 z%fO<kq9Vz~^5?~k8`qm#SpIzb^6hss3o9277b~RSR|M^i`!O&v*f20Nm@}|2aH)WM zMsw!OS<vqc=`8(^VBE38^MAqr#Q#439sfK0xBu_--}gVm{|xrFV;?`fKQpVr;XkMl zPHA*t*a7PGG`XSnh42O^xRc`r>Exhxe;6egYihh0zA&;eYBRckp&p|I;|4|%hIK6F zEG#U>P7E^`UNCNGaA1^ZbcFU{n%p2k{GSujwZR_`4B$S?0*3w2z6!V#4(ZP@)ew%O zNvLt8EF&WL@8gd@0s_3kQerY+{`_HKX8h0a_uJ=3FCIVt`iDh8h)1lsk@4s6R>q${ z+E8Ln^~9aGzyJREbK%0p%U7?QVEFUr2N?WeP*qS6Wn=j9<jR%H41XFYVTnmt{m90^ z#K57z%mAw4!1bdGq<;MOqJcr9v9-a0F$_F%@9>|6fe93A(6Mk(8vs<lg7m}2-x`=w zz_l`HtP7zTs>$I$18h7Qq!(19qw1Xk*30w)qVs=Eb8CYGLkpN}L)Qsvd4OyM)#?pQ zS0Fkwz&gQm!O$7uI$ZidzJ=@aK-UM+&B`Fb02&no`4VIwsO<sP=kULz0c@iK!wE<r zG4z01J9S{UcERlQWME_nWnf^iXJBH`VPIy^Wnf`oeR1awtmqI26&){Lz>Aa#9v&JR z8#aKd2W*8%6AQS2X<^pcvPGwvMdQg6lv0Fy#g7*+U}X$=NQ$|q=fD9+h8BhvkRuy$ zlq$@iBBzD<LqfubW{!@AC6FS;9a^MpV7LNW=g6>}1zg}bfEP77FkE2{C@2VMZh@3D zt&kMmBl?5k1-z7zV1Si8&CEBB9J$fl0xoT!3Ajg;g+T{i)?8tLl|RkQXC6E_11g|E zWlk$3-S$9AZ&0cM#Rd9k(2T~`21X4A2ZkMupy8m_CI*g1$od@8b;u|%GAJrAFo-gM z#-^DWco<k1*x8_iylfsjChVDT<VFL0M7I$x$JkTj#BhM2fZ+gRhD!r{%(f9}oR$qb zPTSm%7@KYBZ(@fH$+q+({0Yh(urvpr6JwHLxB+Ti3oy8VTG!wuQ-2U^^guqv)bj?S z=M6*;c&!wg9#D9q+G7FM<M3ak0ZG>{giWAw1J-i@jr@UfAh_IEaf49<ytc!UVFH5- zsEy6Q0n*mMzyiw==(!1`w*fS=4YBjzAE=#R-~9q*DO`O3NSHv}%Crx=OR<MZ1lTU7 z2}pX7!UW_(P&mTU7}y>MhGh*9U4KBjz=;exGX@F`^e_a6hQ$p~2%rRGD|i7YBxQo^ zLD$y+9&HE3vID~@Xh@*P8OT2LQF^d_?`|+c)^9QDxiG?4Z@mG9A!um}s4N482gpv4 z-#}#<*l$d3V4pes*8$szx(*AZ135In@x>$n*1<Fd78YP{f!oNS_7%DfO<>gyphCz6 zls_9l3t*w^yg=rI)WcFB#QYwpjs;*BLHnQJ6;52xx(7M*K(zq0RMvpRk^{pYs7_G# z(}4lhnRNIU0M*NZG#3Zb3l0TlH&9Y)YjF6l15QnCjSOL+&fLFW&24RvmJi6Sps+x7 z>l(0InGS%$q5<5~1*P@|2G|HTD86911r+8WAA;kn<pyjm8p9O^7sOgLus=cWhQ%1N zonW^z@j&e4f!GPoD@Z9AwDt*>LO}gq(0n||Mn{Hu|8Fot)-Eyrae=K~gLHj4Kor6C zYm5T_Z$Q_tIsUI<aAAb6U$X$EGuWykWEUX&*^yzx{~OTJ1;#rrjPTWK;G7QgGj82m z{@-APtX^YW;lc=Cy9Qpp2bwkjg%~V$VJ!<#csDRxfT9T$yCUG2g0EZqg|co<1zPsY zGB7d7F+j?GZZ6O|Wau^pt|^nOY@l^O3vwO63Q>To4)B1@-v5UTZ*O4O0Iv%sJO4Ig ziD9|%dlOQn;QaLm7Y7%|*B||Dh}vN?q;>$+P;xkHs0j)lG9Dr~8XW$oFa~UKV3>ob zp&S@?u%2kS(sIWIROB*FC~^2N)9Ao(g&j1tBq3pA;{+a=zXGbBUc3NJ97#xkswWMN zH*Z8lZro_;hv#w3vFsb5K9mb;9||;v!VNkxnt_Rd9elPoXx)_psH*<=qp{V2v4U|A zg9GE9##V+ujSPPpTbci`Ft9YXGIRXET7!eq5<6&C=FAm_C5^325grU654N_pGTyk+ z+{*0Wz~ImbEtf&L72R&;Eh-E>jjaw04UC{2D@Phz8CV)Y7DBCu^1!|X%_M<JCUzvZ zGhA_Cc+kMGrm>aD;|qfW$Sj5@jiAXW<_}vKWExu;6dD;6U@icefbIf@0}c#-8W?6Y zwld^6FidH1VA#;u%J86(;Xz|7^M^NJ%`%N(qrk2Jm2>E3Fiilhi^>4`V-MpM1_wq4 zc=&<*!2<Uc*aU2Gz%T<;LOT2}0GY7{wBCi`16&s~hX^Pt7``-uTezS+1qw^_uwcF- z0ttvakbq$3;b7nawNJi)v@x@YfWj5*0%SjcVi1%gnU;t!IQ*{x?Xa2gKc&He;SMD7 z|1`FOwmP>qz*k~|Y82v98_1QIWhLQO6Ub+<G96OBt^k*>4h$2ZwFr6%i`^zr1=898 zu00@g-3<&#ttN2=Mg|!L1_oiIy+>@Ukai`j$B79?Cj5c6DjQ+Kj6Dg?3<nre7!Ldg z%@%?d0U);~SwOAHhUVTTR>(YmOK%e^q$SzX3n?jr85kKN7#J9A8JHN<8JHO~KqFQh z&i@0zFjHX0BN498LPCPPd{UtGLLD8BAPL5n7BJnwu&1$+W6#;=zgSpUSQ%XYm;5gV zO)32^VO+YS3A~bldBX-DpB9EMZj2fr$nc$E2SYEz6z+=mA3pqGWqAAL%a<?iplw@V zS<rSV4MvRyhJ?mO<`Si6FPj+u|8WILgBQqMU|7sh(B$}E=D!ScK|xOsXcZ)ArZxD# z<$ulpn*UAy>-`t~uL7PZaQpA`-}!&&{|rQd3Jng>AW#>>pFZh7e?ENr@%Q_y_ng0; zJb7^A@$)x-Kzpw~eBj{t)7-@L@9)1(29`cq4h|W97RJ9{z6o&XsH&-G%1Ll=a6EV* zBlG182LnfA6C)#27Xx!2I3<JP9hO=^Eni4#aR6l(P<h+H@B`E`M_&65i*-S4vA)G5 z$0FwsNGD^!7DTM)%y9m1@qfyH3s9^xJYk$rf>KC3FkAt}Ii!FF#W|#ShQ)aX10zE% z0|SE>0~3P>12cm$D9&pf8M+zTS(25%?C*e149d6ccq0^8Qs8jn#DN0`PTza;Lr6tM zMT-0P7dFP{$M!IMX>4F(v8aGf4zlFRF+7_F9k1l<`Ql<@vtWUZB1aP|CpW{-?|+(@ zo}Rtg;`ra~e-umaSt*Yq7l!MgsX;~sh6~I|Cd~7lK-+u%7cjE0fF=W57+QGqJPbtN zT)A@PjewC&KmoXy%2dG+(#UvcjqCrI|H{w-87rnWEKx2DC!ix@>p7GToj6fZVIj-b z#QN{gA9gPGCgxx79^PqY%&2l@n8UCgoSsfF%om8zVc0og!i3GQI9OP8bXe}phtA_O zFaM?!?9MQm;Q+%;@EXh$467L$88Vui82(RU{QrNl#-Be-9Bd5IGHidoy?_7Z<NIG6 z92{@na4>=TsDJ<d`TghbpFjV8ef{>Qxq*q9g}I4EP?X`<pC(3TmR3eaMo<cDWc>fX zOXJVyr?;<NyLRs*1D~p~k+CA%w_m@6gm~B(L5;2d{}`E>7?~Iu{{8*a+{C~*iII^J zTEiDGFfw#8Fff3|*g%)eg2vcbPMkP#f~<ICKj7hUfPvJwWVWziVWCQdGB`Lg^f2@= zIglB#tS?TSctLUGwm~CT=gtQS7UCnAJs=<;fB{b=>+ncO@DLx-ZP17YmnZ!Uj0{H^ z7#Io|m>AL-m>Jv|SQvy4)D&a|X#Kc#YTK4AE9cIevGTwHEYU7UAp1J}4{mG}5%_&+ z!<;#D<}A|E($LV57Zo5m88Fm1|9ALr@L%(PA>+$zPlh=RTNv&!axii*d|)`waDZVO z!&Jta8cNd%V+Df)qe3IoojWz|4BHv`8NC=Yz%Yt2gf%CpprD}IfuV`1hRhVin2`Zm zJU@qFE5mVURdb%<48t0RbqwnnHZZJbSivxhp@;GUWGXa`+5Y*%^!L-_a|iaWUbg4p zr5m4^8JUPqa-a!fW(h%drcO3iJ`sFLuhCjY&D7Sx!O_t{LR?BhN>)~e=!D3?(l`~G z6d`Q|<hl*kN^4+}05#?s9R8a$FoZzsHgKy3+=mCJVURxLRu`ys2h+!Nk2GBtVB45B zAn5`P|A58|;C6v}wy^OFh+S_$x<DOVMx78w4hGNw23QxUTL@~sf_mVvS{vpwuyP5= zI5)EAz#}wZ&mlqu(|2b;Ha0Nv;BqG?(rQSUjSUVAN1$WI|7D<|32s+{`@SFo<koEH z?20P`6N4TDGlL!j3xgP>Y8Gex^yc69YnxVNl$JzDzuDdbt;mI1cD&(sN{ER#abnFH zo2ZyFX@&=ljmY(KBYH(X9a@pIH9fHcRpgD1;3bI#E!+m;??6?ups`(0kqc<xn4#jo z2dGXzC*xJ(!f*pxr(a@DG5IsW@xRA^52iURERLY5MYea}zHm!01T;3n>Sfkn?;qU( zW!YF<wfRz3p&g*wypieIvo9@<|LgwOF|Yit6XMP=h2apxEigRAu!f<9DJQ4am0>Q! z4p{9j1g+h-zT@HG(9vmXTC--F!~eSGby|P^fU4-<zyJLC^Zo0$KY#u(bMo==aWek- z@!{30S8sl>v9Y~*^XHF(0{@@pbz1-a{r&rof$`tJfB*je`Ss(+hr4GE95`_K!#`e4 z8yg#C#!p|q2nqfB_v_d1f6eP4X`+OIk)a#f!UC<kGGbt1klM24#0fIui5XNklNnk3 zpc<O;2n%V1R?rL%WXBvcsEVdW^lj3ERL{gmAv36gUZ)4Dg-MCaO^~>p!@$UJjDdjx zv>MBeftkSxv>IzgN<@$a_la38ZvSKdgQnR7{)hgL`(G$IX~hcsaV&_L7ajhGG&Txo zuwPz}sEAdRRmhBUh6?BZHve`0tNzbpe46gbFoR(O!!1S@Miz!Q45u0PFl=I&$XiiC zL84%V<YFRfV}=^ClM7=`P7uQch6N0}7*0c{P%krFVA#O0iD5It7KY6XYZ&G+OrSz( zu)h&h761GE>e-9eZ{D#mF)=VQfvRHSlUEZHD;x7}+i%~5WVDRU%q%R-`1l0*1cZf! z{`~p<`_I4spgzIxUq8Nmdw2WPzJ2>HzWc+iZe?Yq`2WMFPXYp<`PiR-n)f%t>o4@0 z2vk=-0L`+3s-XbV>R6CIrh5z|>9PO~H8n78K+*-SEkVQ1pc)8NpM&aH)De+4AYI@} zQzw9tg8?$&4;t-;j^pF5V;?|fK};Ip77|;>f_=vW*9IM2hq)7X9ShRu0IFlb;euJm zN+>Wg$SZ)ZPez;q1E0lX^O%sbCS}5x28Iod3_gglQ-&T_h6Dd&7$*FWVK~4b)4)*B z$k5Zs06pf##s+-c3rj<TghWGge-q=EFU^cRJT3iAj3Oe<jBnn+X7)hg1ey(C2c38Z z8WDx=EoW5w!uSU=clMu!L57iq0n|nO!@$xC@-~Rg!te*2hF~Tj#}7DS6c8rxFvu|e zVF2&90JmjYp<|-RdO<S-pz#ZsUf7yHB)t%8nUHnEQU+}F1FYKtW;0_4++NTW8Q8s` z^n}@h0*x=Uf>NOjD8+*lAZP%e@T|#%FN`XXaAN3SkYN;H0PVeR1<x=-2v8b^`4iMm zL~-dHm`fcQHh@DJ<V=|V)D;*Rv_O~dLHG6vgRXbvfQ-<AhW8s(R2=^2FgbKMIR4N1 zzledy;eQP@nQ$VMIWXK{JaWdBk>URwh714aFoNzo^Z?K6fm4hFLl0w4jx$3KWZ;Ss zHRViZ{=mZW0iJv&^NVnBi2V8U2UL*!`Saq%pJwO?fd>O4Lp}oogFgckg8>6GgFXWb zgJQ~>HEZ_WV^TA5O3cg4&CDvwOG)wYm@pwFWzCwDlnJ0UN{yU*PTv3c7kxmFsb}?$ zCdLgLni+k3T3kWN9K88u6~kJ_j1AuZ8UDTbcjDije|P@9{IBp|<G<Q}@M$fKJw2YF zoiCuF9guo3eE_tONv5%pAqO-I+{)(7bmq*Nt7qI9b};M$uTk2;u$o~8!-OWrf`Vp7 z#3*0Hf7k!!|8@SW{8#v|_FwJ4&VQT#_WvFJoBX%<@9{qdHqwU{V2#W_e*b4|W@cew z_}j$9$;Z*(DEQ^ew;#X%GyVSa?ZewwUp~Hhg9y+@77pfrfBrWy|M|nf+{E<#^N;>U zK@llYj^CeueEj-BLq*v@M@vNlo@*PKIanF~HG`BhHZgts_yaNn0!q`MavYStIACY? zF#Q2<asq99Wt;(;=Vbi%r<w5&Xkrf1)&S{(<sVS5fE{$w57PvO3E;(tOpXj&7+D${ z7+!#8(m<Jki3K#U2+=F606A4lnt_RdkAazi57bU!how#SC2LY9cuYt+;lMDbfx)Md zVM8MaToSa!1YBzU?*W%!3E;A^r;(wc(TU*-sQb$bF1FxB8EAlUVgsX$R3jq~Pc!3} zFD(-r7;oHeWPJ0cnNdWfWg<9VJ2EgbgflQOfG+0MhwiDD70?Mx0i`rps#|kkz`3BH zV8@OfXTC6eXk`2I=jHVqK0eKi8#XjD-k9z5Kk|RX|8Vx%H#9VETzc}SneoXc*Z<|9 zbObJD4>0!hxFM%7h6zj-PbN5lhk#w!Dk>`C<QQ}s8(E}nTzYz%84C&;8C+Z#mM}a4 z!zHXPd-k|E$hCma^kSQK;*Ep^XpbD|lpkomV|#OS!GZ-x-++5COmB`&arj@;JimdJ z`QMKpJUmTIOkch<^89%B<ksb{e>gaP{QU8&nVE@+jjfx7nTd%>qM3<<gQ>ZZg@ua; z5;%?AJklB(8qz$VEmUkR^C7W^eGUV>>QDyzj2R2`Oc+oa0i8IJ!r<`Vr?J(MQRaU{ z184<(D+5bQE2QjW`T?41f!G8}W1!L&dDe>g&I^VMjjhZM8VoUwtqdHEpt&{BRM(Hj zR)!yq;6ZCpsR`1{1)Z&frBCKJDWIC4LB-*JOapjwji(Vb&C>+x0fT0n{=jCtKz>BG znUTk(xt00N1h9o~8X4X+wt}XWL>gNeBpMkckk;s+>tz1%1f-f-z<@!gv6bOPBf|@b zUWvw529ZVv5hT4BZaxtK%83jK4*v@p7;4}XTTS5X1es_=gceLUY<`mYLIeY7Vlcqr ze@+8KPGc(r#K$1&OJgeo)EnSD017dX%ejz7_nBXqfG4vwR)A*bnN>I#R2o4w6G;CZ z2n%cks9s070%Qs-&OoQqF<&qNxq>-l1w%n&E3*U#D6~LEfPw+4p9OlZ6DZ`-eZj~R z(%j1M#^HZO11RvBML0k~#?0~s9IAgHGkkDApzCJ769P&x3^t%8nhX(*t)TK1I<E+t zrTy^(lxQHX2icA}KZh-C!)E3=K<f<|m>D=2SQuD#TsXq8rm>B=CM1Qyfni2t8zToe zfwnQSuz-?g8{-df5{0g)2blqy4+WV4N~2&i-mriYX&a-;A80CVW8?uxT3a*2m&P{6 zKj1irngH5m&cVRI05Snoc7se{;!$yFZew|K1e8+S7~g;cxQ+447f?cLW0U|VR;YfE z3()nm{15;o*ESY`7ohao#`pr9U?C<*G`2B{fRike2^fAj@c@))+ZYopps5xT04$Ad z%?y9g{Qz<U%mkPpST4K(CEPZ~01ar$g@*z-G(Z6X^%ywbL1uvb!Og(Lz|FwSzzvFx z7Yv}p+s2~707|`WEGppS+sMEIYRxt>+-U?eA;y3<$)lJA3sJC17hZr8a2rdA4k!h; zu}FZEFvLkO8ew4!G7fA8EGL0#R9K6xfk^~Z$}}+D0L_QPT58M;0^l{7pjI@<?W_|f zcz7_}Xlw^frZ9n)R`>Wc!B;6Zw?k5CAOj<VGqk+~s;vw_D=|SjeF~iz)_@>yp^xI5 zH*XYsHokfDW@C@b|3uKS4*zxjCxX@#HM1a}n26&DMev$S(ViZjr#p7+c*>&{6BDE5 zq4?#?7e$XW(4ylR3^SP07<?L=#gWfJL}oWb93H`Ng^`Pqol$^Micy(SgHZ{L#Ta=R z*}>v`j8crMU@?#!SiHHF3Cl5v&EiaqzrKBX_vypuUkuDljDNm;c=zeUw_ksmn_ICQ zfY>a~#rThnhXZu_;crGRMg}%6C>zCi_|b=uu!Y4PtVaSFm3;!9LuU$L@By{(!HpUz zP|F5Hz-t=?#JPtMUEtYzaHrye59103@X{~PfG%uh5pu5&v~~-9-PZw7^9S5#0xcc> z1X_*@U-tznsX*l{vO6Jb)0lK1t^}W?#R76Ah=92gT@PrV6KIVd69+_B5KIGj;TKF7 zsC|fR6KJ0kNEdk95jaf1`apx!aD5=(q1(nZp@G2xv|5Jwg#d#JC@f*FWMlyy)B&;& zqz~CXP`|DLyfhhNqXaZmz&e>gOEU4r95@adm~J8Y4#kzQ_(sjEMUeOo0qKI}Rgl|Y zs!_wj2BLZmNOc1PI3z$p4i5=X4-V!dP)`+<I>5<72D+-!0P3Y6@X~ZpX%4Dnq5WKt zoiN>?S^}gSv@#tW8Vt`6TETiC1jwx*TajDnAbnt4FTvMVdij9YR)SBB18s(503B5Y z(hFL(1}c+~{Rz_R_&?)6Vx`{)1|RTBKk%poXo(<b3<YZm2(r6@3AAjjwSnmfD4al{ z+5qn%gHkga#*X4C;PVqsz#5fclR+vmYiRI#EgzUdNP2*+6+-rd!+#e>&{=(Qpw_3w z|B?m=#uiX21V<P6tSwmHB;Foa{2-?wP%CwFV=I#bXdQP0sQ(1=FT`CS^%!lGHz}YN z60~KS0&nGk8m0dbJa7nr^n>yhtc3+?RWtLrFg$Anw@yJVOvo}WQ0oq{j0?BkA5TE- zBT(x!pb@rwi{S%g?H6SE7F;i=o<_0vL<GZv##RP!>(l|v1UFB>OW>ewEEc5JEr$LJ z5e%yuTN%LZQwLDz5!93iY2*Mep#wFrLAx+PX%gmd^!DkY##UyH6$}}Tt;{kU3^I^b zDF<jF8z?V8Oh9d)f^rkg7qIr}^2S!CkQEFL3{x6gnFTl)1R$aQ5z<iq0x=aH4xsQy zPFJw<5O+C4NvVdBT6jW0u?=kz>om4vU9N^bwSjUX^Bo<AZH=wa7I6)Hv04L@2B`A| zUakhwO?oas4Hekh=QYq$3S4G`GaHBi#i~4X{8AFB*8v~DWKePacZEUa-<AIg|8M;J z0XlHze@Zh#`iLvTi~mO$UNC(4zlUK>gX4c0h9}L=44_>eR~R-hH!NAw0BM7OMgjU6 zWEz=e7+$>S=x4am$b5rAL!$#S0)o4=llk`pz6;<E!y3@&FSt|(Z3TezS3!QjRnj{C zFZuTaw2Phz)FWR58x8?A8W=zXNH21_0JRlC@zcP#22x8lIWT~9t!PGWIzVCu*-lv7 z0bD}=+X1)p16Vg`Jko&ywe^5(E4)r&oB*-4fiZ>wWN|C>G)_=dfqe~fFUVd{{y~ms zu)Y5i{{3idV6=c~MX3fMZU)(kUL(Q%3N-}mWUyXXHI2}VZf^r4v^CMd7y+{uGliks z3T{t;G=SP65L-RKwt}^S8x-Jt4$_BdBQ$0j7`b3JqBs^sCvuI@z_<+-x-}4;pc(-- zT8rJTGcX;XRjF%0^%U4Hl=uLpU09eRw=EdfIQ;v;C;}N>{+|H$AX@VR?pBz7L`wJq zu^AjXjAAg&pz;(lIt_^vklol@2}%EcK=*GjR5>uLA+?nOI$wqna;~W(qXNSk9IXsk zT7-o&DDQxs{NDzg7QY|@x&hSGfVdhK)-YY5`jhF$69$KW9~xVk1PmbOJAq;cG*bEp zT6=+Xq1RqaJfM**P;K?Z;eSX2a{UDwV*rgNK~`kLLmE_Xz-k__y#^i(4*xY8TbVcX zfXB0N*4!ZbL8%c%x5NVmhyMbNtxR`J7#tWn5ViLkjM^KdAKCrjuzC~2;PCHBV=IFU zXp5r*!wLA>Ymoav6*s&^hpr#&`Y#~;pm8t(h<?!8cZiRfc_8DxNb9aaCV+f^Tz@lh zfDWu<Xl!NrvW5ZNe!y0TGk^HQ@Szb=hr>*Qg$1Y%XL@4-@e7jz$fPrfTAZU1ydE6v z5>N_8O$Es17`!YZn7fg446)@2s6C2alQS4NFv@^VUubM)*Z|H2Yr2l*UiH_Ydt zSOlN-2rtY2{b5)G8fpTKX*Dpt0gaa-)#sq`B8+x6s6z%isB8^t`x%tGKz1RA5F~fW zz-yR0;GzLsaH5n-whWLF3LOR}1`XI+Z3E~375^*#m;bL}U3lTOfU=6?|APPd99`Ql zTxHQWU^vj&$aLe(<0h7m#}_P^?DD@HbgbF`l>b?bGjB9AoNxx+UcvC0VGnDniTL%^ zYn&LKFg$12&sGzm{p$D$1_y?Q#zrO^3+X0CzCd^IaRI9s4npVSH!$YdG=nEK1s@!k z+t<@EZO4TZdlpZcFnQIvC(VsaKYsjeVq|1&Wc>TLiHVt=qq$M=&#y1<KYac9?Zc0+ zU%&tO_U`?U=0+wC4ra)DSZ3xXroTUbG&c(JaQ}V(;p;zM85LzsLlZ+~K@MbfOw3J8 z|9<^|j%|Wku*e|_PB~003<scdCjV0y8XA!&I>F@zNEfV>g|`q8x)@kMJ3x9E8W=P{ zec=WM&?Y%hO$}<hVZ=4V0dSwH0T$I@8;Dn_%)rQ?&%nSS0o_k3z`(-52AUsfC};uQ zI#R(JaAd*+hB=K*j{pAr`_ss<r;*WurG>Gl#|t#`!EogN6owm&4Gb^-*DzFoM8JDS znj9JSFzf*h#e)`MRkXk+qIGn@amH%X(4g?4p?N|R<CQCopawlh>x3po1qIM<7se+q zTDlniv_Nt-a#+D@Go}j+b08ti;Nifqfsuuw0o>7Lcmf*hcmdnZiJab%Yf{EPbKv!; z55tDW1_nP!H=PG`#0qTG0%S9&bVJT9pef-wpxwMG4B)LXV4aX=Be($xiY1UfSnMKP z3<^T<DTNF#U@iu2dxT7<y@R<JyIzEEGhli_-Fk>`pTYDRGcYn3GcYj7FfcI)GB7g; zGO#c(K6~W&KjD7@vxLN(H((Z{M~l<H75~fr^E5d8yVuyj=;zl6-Yd}vn)G7W)50i~ z=Ex|*D8l^Ufr^S7h{f=MfrD`l;~B;^4GxS?8XFiVOlWij9YWp6SW?o+u%?BjK}M#b z!5O?*6*PI}-~f(gMu&#xNla`ae2t7!QjIKMKKx?%(lV)m@!h*d#s?1?!K2QfS|&l_ z8P@WEm4o2gh>?+r;hDpK2F4I@tA}BW1H%u{i9bw#82*9w@`!*tH%wd%Y|uL0hJlg6 zi-CbblYxmrfq|Jp4m4`);W1%Cg9Aegd#b^=3mhz*5}@UUcNjLXfD-lvXu@WZ`2Fh3 zKWBy>hN%pF409049JFcr0K*ZcJ8V(z496Hn7_KmEW4OR@hp~k*r@@I~2PDli@-#Mq zS1GcrxxmQw!uh|<fBApE{_`;0X>|Pe=f4b64)9<&z;KS?7Q;3065p*18yJ?r@<TVn z|E?y!E0<(MKRx*)BO)gAj)8-twV8!Uh@0tuBlBM-hF={`+$t(xels%sxpVXKjUSDS z7jCq)GXDSH%<!*;fu#jc?w<oLCpMsz6MPDc48jTw47^BZl!6DUnLH+d_vkgSfNxG= z=mCvfyGVdG=D}8#FfCcq(A?R?_~J!NXA`4_Mhn^*CMfxa;X-q36KIkMdVUh93j=S7 zfJ!S+I|@|?=uBg#7Z5$*6Q021SzDmHWI;IvGj~p4_yk(3#Bi?xq7Q5h_>gy4uEuWH zh2~b!aiE|nKX5(<Z|`E*1+@z_7XfN%!S-x|M|Bx4I53=OZfjuZaQH6(vaYRxks}7Q zC-=uM5V;F<*b=Bbz-}Yhci?F=a8Iy-0qna?P#dx9*#L572E=FJ!UNO=WY`DQqsYL> zpv=I)z{kMEAOM{)0dJIIK62#42gm;w|1Fps8W{FBGA|GkTGHeQs*GD4LG>y#Xg`rN zV*q0SsCI2&$Z2Huc=5ue$q_V7-O>y#yutC^%giBSpa70^W(5@$nNH>e6Alw_^!LKk z9;`-$*KMG}8Pw2VydZ&X)EwknP+Y>=@1R<=iQx*UoRvVd-C;c|JqAVwGX@3*C8V_m z3?2^uBbc6CNpSpM@V|gdLPDiSXUc*F9t=Ag8^PxXH9In@Fsd|y$ySCQ2Sy1-8ylzp z37}KsShj50QNRJp=SLWhF!eB0G&VXi$uP+@JO1nW*TX0v;P`LKzbUPdGHuTu2o0L3 zZ(#uK0RwLhVr*z=p4`ZI<w`T7fk7jqfkEr!M#hMUX4V4-SXho6X@#zf0i{}4N(Y4w z$fpfV2S5iyfCii@Ks`d_{aM)6>p;{WV8E*$QTNP&sJ{bI56%<dwjF4I7nDNL+n}Jb zx543mNCQY8DBc_y1sK;ff+iL~2d=<QdXND{5v246#ULxjXzz~3mPUpOSb;-3m8uGi z4C)FD44~B~uzS-uIY9R@fgI1o@WFv$0dva)j~Sp1#7h_~8XXuNnjHQeX+&0};Pl@C zRGKsPlsNr+^Y6v~HH{8`-!wTef%hOYg5tY}p$ANZ>bMgpz#~vij3y?{jAzb(meQ?Q z(aabV1Kov;J?0b`EI{?v4baw9$lWZh&=rcH5JXQIO%T;PAgZyY3*;OFN<awHTfqPl z=Ad>ED1U*<S5P|$l<Ghs!{}oH8vk<m2iY_XZl}T*)q!&}c3&7k+y&|?w4(X~q#kAy zB7Nt8)q^L$!DAliK7r{#q}V%99Tg1_zhkCZkWHZQf`tIM-^3&X*2nY%qze=P;N^uF zK0(;C2ckX#q#jxhgBEZyz|L_9V_;;6hOVUtosa`s$Hwr-8M46Ve<FYPt~0lOvVk_l z^8NX<WJ!qAe+!Tt<DWkc|9x0eA|e>x;M=3h=)maE?D+4<zauRSCtRRg2+uQg^SbJ2 zTs?B+%*`tYPn?K}asFS!@C78xc;bXJ!-oGF|5g60G%&nq#IsHH@0-7Gn!&|b3u8w| z!2gW@!T%lp+kj7hHvO*&-lyvJ-|fH4f4Bc(|8p4bFm`k}f)3>a({~u|FkZOez;Fk& zJfn&2=hq*9{`_H@F3-iq#KF$+?aM!I0nnP_Z-4%AadFw%adB~RUAx8wI^dCwg`JIs zh2`IL`5!+7*uOr%|KP<}1{E236?qAsA3uI9SO7ZzDI^56LZgX|jhh3cww2-k1V~Da zVPIrPVPIfzW?*7aVqj)aWMBaeBCvk=@IfJ=!jqwmVJX8VhD{6`8P+naW7q|%ycj=# zvNvlBXto@h!Iv~JSTr`W@457e1>4SGq)>PG@4&2}pm5*&f55*x|8D;~^>5F=J^!x$ z7yWPY-vty_j0y_QkaB_H08<aNXaJo&wWhJrfuVy<;qsX?XKvhaWmv#43lw?`QyAtj zR5Upv2Y*9@|Nn&l?*Fy^%l?=7FZ*BazXHf;DE9cD06wz_ya^GlcmZ``I~f=!H1hrU z#|jEprZ;b1y?FKG2fWy6V*K-`li~k_Mm`x47SNuOKML})GSaFtO^ndusGWfk5x%Mn zj0_qK3=C4xJ_2Z*h1p}ulnw`m1&kj)Kz7q^VV>au3P5neY<2_%S1Uu0GwASUh6DdC z7!?#i1>~E5Uzl@x7}mfmOOThLmE@^Yh)NPtXg2pZa59}a^NWRr$;^xk)XnP$*N=?L zmbKzIRS1%!QOg?eXeoFY8B`*G>MmG004m!+B@RTF4<uiALGpC~q#F%CI}=pj!O9%C z9tVaWpk&k9;PCGRwA2ZL=!4%f0V+pfZ5vP-0xw7RSU~3#7-Jwa3ScL)fwV)?HK+v% zTFnA#L4sCtfpj)7`&?nLXl!d>?s5UGF=}88dDGn1$OJlK0(Pbg^5_o8Mv(8APB0v5 zY+;IF$N<%>jSPQ5wJb{`w7(3hM=)z*3y>PL(I8OBfkFXRf`Z+|6aqeK3_NfpfjY|x z+N}@Do4yQ84E7An3=W{ZUt6}Ec=YBgzY6%&=0_*Cq@?&uzuDIX-TTGfzWa@IKq|wH z#s)@i&L$Qv9)_>qnpnPnWsu2+q_q{`o!hVtUyM_qG=uX2PmY6u+~+G-u6&j=aL93D z=mBLG<_Qc22`&s5pqsodFeex=OmO(`0NSwM!1(TC6U%4tfy~VOLJaF%{@X%#XxlQa zV+e9#I1DO48U8RFW(aEL)cCZjqX&E-vkUY<=5q`ync{RJT%hMi?qQh94mrVj#{L#2 z&~eG&qdQrfSbl#I;9&t#AHMu)Vr1oMZjfXC`{l!jUkrbKGjZ{7GBf;P5|)#Z73E;~ z{p#V9r*D5YGYRm3HG*`ou<?EP@xO_gg<F8VneorpX8AwA7<dGDSQuDX{(t-M?H>cn zmuF92JbLu*4~MjpjDoB{Gt-+7znWN>ICwainpl2);Nf5a-Q4)*-S;L&7B0vgH!~R+ z8D=stFid7(V#s1(X2>BrZirl9L|pu_O?^VtI;0+k9+F~MSmf=20|(xU7^S477zJql z`SV9JAkPU@`ZFwG%40}qBq91Gf{<4<A+w1~796l-!4M8!>_o~UD7*=&5!(u>1~USQ z>(|du?_NE7_2TuXAHRS7{POO_vsW+Pefs(vZ=!3&vbf5eP&&l9_6l$MMD`VYVHTbi z8FY2eBZdS}UkKb718qJ9P4<9wfo|K#Wnf^4WME<dojni$+TD1?f@cM>B@vs-g9j=M z#Fj?PCT~n?$SacAUPws10G(1xbg{&1U|?WCQqcseNSo!~eE9z7&mTq(9u7v(uF?-Y z9H8S0zkhi10n}_`<Y;#O@A2P<VGYBQ1_c7iiQ!LUvpmckh<+xnH(x+43kG%`X3%c3 zA0L}Rd+s9`wlK_5B$Q~t=6(3`kA;PWjYoh7+%)_mzyoUb{rU9a({C0Q77jj083x{4 ztiZq!&%ngs2R)6N;RR@*(UxINqXgq~;$nCbXiz`WkzqH(6jlKXA);eiUXB5D+yyh_ z(qI?~?j|vVZuVt%WoTeHz;J`%48tz;;>!_KK`~8WNN@txP7D{A5*Q{pFzjI5(Btqw zhPkB$Q8zL13$62jR!z1HLC{+1aDzL;2Zj#}hZ!a_OabpOyi8&h)sDAlX;x=r<B*X0 z_x(Quf%tE3Wc<S1$iny+UzMf);lt}k4_>@_ODOi6+wqnSka!2RSU^2FPzw&$#(}PT zG=Y=?;MpipgO33;Y=PeDgXsYcPk>g?F$q9)f!m50x<D-+WSc;}W{@t2{}!NjL@RW) zAGpkc*@oO+1la~|DLH_SR)y$Pfa(Oh^B1Dk2WnxV`wV6u6SRZ_yAs7V?7E<5>ivQE z4QvyN-#~3sbiaWUFKk63lJ}rH9O0*4b}}$BtYlzd=wV=D$Yfw<$RgZ&;Dxm8p8OCI z5n(>w;_^S@zc*+=@qY^Ej1|ilZ#uE>5-F{|My?N!9-iF1h2!zDL(?IXiWUE>m^xT~ zwUA!;vexAIY4Bb2{9pE8hoOU^kzqN*3Wntj8yMy=bTVdTfR;K>1fBLsQnP_8$i~Lr z#v?7wMZm<Jp$XjI16|-fgQ1t9g~`UohSb)BD|r33^Z$tdDgW!3r!AP!?)5+af5QK8 z&>2_%1O5m85BYEL-}JvuGw!S{#>xXa7z+b8Hy9Jh=Rdx^d-wj;lP6!^Jbm`)+=ZKW z?|gdy9e0~S?9bO9Kfe9={_XpZA3y&8`26F?574IKAI&C&iU3fJ@sEk=&zE0pJRrw% zbNu=92Tzk$jD-s{LV$rGWd$WU5j}SxR@}aW=3j7L#K=|1Jw9;%3sf5*R@??9AlAZw zCTc-r-QboAC?8|mIS;(D*nwdK)K2gazE^W=0|STvm2IG$j6Qz|&dF15Fn$5ggE=xB zVMqXt+(B-K1|3WZp0xn!2HA>P=0MjoZ-JB^nEnLm0=X5`KLwR=Ab&P6O@O-f2*j-p z3`;=nOac)TV6%>RO79eiZQuX}H{@XB&B#6k^}j*oDa?mFNIrZ6xw{xVkcaL!kUoej zzkprIv;%G%XhA;wwr!ZtP|JMC>VF4@6%e0+XQIHzxM0*Upq<d5F;mbfrSSF67eID_ zMoM`Ypa+xw0P(&t`~b&1Y%UYoPLTgl*INHzNI<ND0*4PMq(J@z>4&8{nB8Fg3{C&x zC!{JQfKNybfy`Y0fjHy`(hc7*6JYTPG2sjRgjB`_3E=Zl!E3$2=c9tApkVfcMk_Gf z&oBjiK57%F$HnlZxq$(6W-aIxLC{Jb$hpDDZb!9w2I6$oGYR0+Q9VE@2|QE+o1FuV zlYmy#a56A4a56A6aDw)rGRuILnS)M8wO|5;d|Lx!5KnU>14nZM<F7Bxpc@+-7+JnS z7$Em!kMj!*lRz^{0+4gKq4hi{$l-AgO3R>Jfb8!kh%V4-tR0{p31-a;@-epj3X1JX zjL<c23_lol;D~MPuKfV97qoT_hrKX;=qVKJ%L@=+f>I^+Gz!uUDkr!Um>9Sem>IYf zSQt=SP@wd}7{mhI_s{s}4~)g~hmnN=GOh&*G0f2>@Y?+Z(CAc4OAB;d3S=KBX4#R> zD`nmi!LT26#%9BR=w3$1;&f&X7KW#w14n;=*Li{S6i7eFy(s$MoMHIc*vhOB0owBk zJ=~O8;0MFQ##ZJR91Jg@s{*j<{b0fH8??ZD31~qTvjz)j^9r-TABMXiy)2-8h`8-l zP+`z+Y-K)k05m}cUEdB`TKE@qHZ15^Mo3-&*^A-lFKa++7Z@ZQ7&;n2%NLk6G(bac z%pxM7a*X-T1JL$N)X+utGvgPF=2k|L1<kDtkiY`%x&$rw18)k1*b9plRDCueeRG;y z8B`iUeg$oDz0=qVzG4$!I4PJw{JH|<S7sd!(1urLo(~LHL7Nj~;Nb-7m**%jFa$9$ zF}Of)pOFd)X=@{{*LI_kZIhqhCZc<5GSZBoJ56ETG!P9=uaK@9<C7W(LVYym1cnI- z%;$^<_sw`UK!BtXLp*IZ(2$`r$G<-u1iNCmn`5AHLuHv4FJuU{zMAp0v_ON0kaPx0 zrx<yQ$AUo&lm{1p)1w6B&|e<VCJfkqXK?<2r8VSH<VFT;CBVR{L~nC|+793p(}TDb zU<<TW#RBTWfmd}w!Y4)nGAm^Qy(a@SD<vih8ZBUi9&rFle_+hSCZ?hy{_hR!nq8JD z5^qjTfewc=Pdxr+1v3-V-@iy#?m}+hnafhD$8e<=yeOlgft?L>%-K6O22b!QgKHSq zFvc*(FoNh1#t`O;3Wf+5hO3McAjoi)A)?WN(V(%B<@TjNYKllF)PmP<G`KK4`7Z;8 zwal;naMgfCn?Yv|)H1L5suAtVupD~m;2MTCtQHm`A`2F{{;&DJkYP1w<0(ToYk&sB zk;O}z7dC=dRQ~zXC=5B#_r(i_XHpW9BAg80pFeog+``Dh(#Oj9|3Aa;KdrJHYz%){ zxVYG1r_~x5aOggMaQ{6c3%it#PV+)=>H)1P^<`jSFoT`|47$aL*~8<_a)<x5ObrbU z4*zQemcCf9;KNf+6B858=U*mFVA#;u%qOgEU>=l_k#XkCnMeEvL7>a2=76r}X<_N< z@v%>G0v+hd(8Cs^Zz3XcrqkuW4`{jCf1Ce4jNKQ&+h7|QY#N)Hf8N~E>kK<Jn9ak( zL;A*+iO&Chz_*Ahv@kS4F1x+Vu$`feC&NqPH|Sh8dE=0b8fS(%;N@-`m>NJsTr8j? zQyJSp*Uxq|2{VE&uH_d5UE}%l4-*HUm?UV6HcMj*^M8i_|J%TK-M2RhGyebe<=vat zpp$a>IevY4_vG%KJKzC5mjC}5{{CxY`p59U1Cj!fb11A;1-cz(186nD8wMK?6$Uy# zpb1o^fC+H;V%G;*y2vyEw?1D6MuvC>1_mnzCI%x0W(I8r76vAk6<Q7qZOk?{4`#dk zFN7Sm{J%h8=A9{1p4|Map`r2j_KTJlhHZ_E=i(d~HZdsRi6@8u84V094*zpl=FExl zFM?!(Icz!hE-ET_X1e^3`R@aUF^sbxID(QV=%fS&1JG!o1A_s<m}9YF`C~$C?6o7u zp6m|}A<*rttQ<T%e8Qq4B7gq;WnkkGl9H8?0nN-YzxnX#4N62xYlsM_{Q2|e@9%FP zUcGq!<Ov4{H_NvVuO8gIapO;OJ91=#<D`axk)a8?*V`I;LzTn-8deqXB~?EEp8T8t zuk>F97?%8-`|rWOj(;7X`7fq93;KOP*H``P`1j)9-T#c>5d@w8jQ{Tcd-JcO!QtPP zMn}*YHlXXOn%QA_q!D!NFerC`FY#qV&oa#p&^vj<z}HoIFj_OlF?N7q1fw>i0r;}r z4u%fI9lnfv7)~&>vUpfnSa>)wv@@Jx1YN&t(dY!fau+Rr8eJh7>Oc5mUW|O!%ve+7 zfqcm>131I6Lo!@LgDW_vK`-QGQ&d3BfX$#u@@7aB_JJ~ByMPSn#;OlL7-0EOuu(ut zfJa11?As4`er#@H{P7DCkL`><f3$!zWgF|6GY>xe`Paw+%bTwn1#aKDb@S#8ULJTJ z1zqI!uNe}reV|O*4vtq?{f69o03CJH(#T)~ntuHQB3PgVSO+L~g8CcC?KI{K77T5m zor?<?92h`*9ynOQ4OA8m(E5MoA74NeST|_AydF9e;>Ezs;0<0Y(ZhVkgyjsV0L);R zB1UZEtI^?q3B#5~7M%}7x4@Y8#E5`aygp&#_|if8AYB7PN+V-Mg#*I_W)=+%2?vH9 zB+TJ41T_oZfdUfeOEek@43%r1fdWG9Gti+9cxQGs6%-iGbad>vL#UO;aHWyJKslrq zaEG3kZwcLlp$WQc!o%au3V3Z<E3)jxg9jg;foe;x7hfh!m@pwDfniT$GoPTkj<H)v zNXV8gTdr{H_&GB)fa*)oc}$?ANI<vB`#8Ys%~%7IkdQN7h<ekPvFCy-Xr(hl1w#X9 zWen)Jyk_RV5BE%U_+QW2($W$V5~BKG&rHza{oqTu8^FilAl(<glc9?{$4{OGblAC$ zbwrK}Lj%Kn@P!^5SQ;c68YG&bnHXG)_B4w#vvF|n2nYy#`0(Ke69=EDgoFfWH8)2y zB-cW!(e7puP%ZlU&6_toJUnc_zPx*M>&_hp7SJ*ZnZ{=3|Nj~Ow}bL%4>-?&avVDY z`l${lK<Du^Fmb@o@@s8v0-fmr33ZqrSPK`_a%^C_1JR=b(gPZx0&4)<0cvT2ay6(N z0FB;&)Pq}^B6~n%cHjdRz(@Z<uB`*rtYFOu+hDp8V_Y#{+Z;e=1HiPRxDjM0@^}wu z1t-|fQ+uGh_87eaz~ht&pfMNFmUt!!kQc!&hWQZWVuYP0U^|)CfP4sE8i-;evK~;2 z1Y~0a6KLH$_&flxE8&AHOl)wwKzpXR85rRA)`HHrX<(QGzF%@rV_O5m5r_X0pw!jY z!1yNuw2+$RUvpanGus~qnMUXdH88tjF#@q08Y3<s_kv=if$1OI)(8ehhD_*P<c18) z450H>7`{3D_hVm^;H2W<@MM9@|5ET?ri%ZiBJ&>Hxbfm1qmGUa(}Oo19UUDBpm7S; zYYGAa4$lZ?C5A1I40jl=upij5WX6mLpFGff!wiNQY?(F=2?;l*fu>44KqnLbk7S&2 z#}#~eT?<3c|A7BKpq1CG3J)#_ym&!O-tuPT_;2wav?W4-Q3G;bAHx*}Jo$_boX;5U zG<HI&OGr**WfS5N5MgVU#FgO~R2#dHTCUx!e?GkV@#X`boTt**iJtR7F^~g2j}3HR zsRDSP(U&!C6DCY>{-5#R<iEoIDE<{I1ip#5xVW&~_%dOF2ir5J|1$qg{);ib_y;=U z+u`4f#wLDgBON(z8JCENEnBvnWzxxXW|$5s%0L^4niy47nwfiSTuR*_%R?BZF)U#? z!LWu|Mk3*f%m4cSIbfL0xX%W>f$4t_NS4utF@oU@!v%&nj4a?2B$_y+r9QlP_3FWq zBhdI`j$nFl#rb~;xF;pk#HgbK!p)E#!WD)c3>~~VL7IHv%N%rUqjGAT8D>L@H_nEJ z1`!c3(Y&Ndn1zFbg^7&^T(Es(;1H6OkdSC(2c2p2@7q7N=824qj1!uKSy=x3`t$G4 zj~@~e61)t5e!aMH<3<xB2L}i@FM*U5;n3BRp!*wPrv|a_;o;e1Vsc}O%l}NUPjmif z@=UsN=FFW-UlkM-zFm0$y8*R^ImCxyV<R)DP9T`5*$X~=DA=%}AjO5D4dN??M%Ivs zii!{GT>ck;wix|S_+QAl;fpJ1&j7<5h9&<qz!&GVG%|155)(sAdS(HglnrgP6PJ#W zTkbu~d|aQt;Z4OI$f;QF%NNM8m7r$(^A|5(aBy%ief#k0-nAPy{xE>f<WgvCM^D8q z42%p*7#J8r8JHMi8JHO&LFXJA7z^AvF}I<i!RdeM|B(Ord`tFxe7B>ap`ml#jh{+p z7LK5TMWk`%jbDle1_n-gUpUwe3=D){UfDOr;eRy~Xq9~fgOxKhy*7w@s%S|5ynJB8 zoQ8(gcOHFVVPX0C=)#2qz0f;11)H|tc))J%;}h&_Ak7I{;mX|N@V|z+jnO2{pWz52 zBO?RDKZbJ*(-<lkIv5fdb}>9>IKwcXVFAN@h8ETs7txbTH-I)f>}F_V_OW4~>-0Yy zbjl%j-=RHk&a7Uu`tV<!I46cF3`-amfXZQp22e9V<Ua^H3r|1u(>O3DrXbN&RMdcn zfrp1jCfyy}Fu2C>7QCPH3&UZyES;}=mM&;<_+Q1`zv1}nCZ^}>8k!kuTp9Wpwt(SM zh92IU{1|_C7aMae(JyxnOo3j0B0Oo&jT=W+FIcc({i!?eSOi2Abiym#7^X2C1Yd=6 zgJB=TWQLk%#t(njG5!1gp;?bbL{>&djGKjp>F@V1AKtxr^X1Q9Rt^Tn|G$6y`1bC_ zi<fV|{rSVlEx^OW!@=_JUn3I>J4-X80Cd+UBV!8#V<Y45Ki#0A4Gv~j78WK(1{UTf zCMHgSW|23qZ``=?@coZ}?7RX30{omTtQ^dYjpB@~f(i=C8X6j!O2QofzkK-c=Joq8 z-~aq?WcvT(O*5kaQxl|oZDC++XJlmTWcts**a)(Rk+F%1iAw-7mkF!IV6`r277TQh z4rsWai3e1RL2F&;4grvQSjzxZ<3iL6fQDruHz0uPT=0F2|3Cv+kTL>Y7pOJTz+?v1 zWdVv|$N>P*dlNu)HfRn7)S`gd25QBCYy-C_1a?4LF-RvSgJv067?_~$1nGpeMPRK7 zu+BR>7+JuxdyEDFj4BM^IU~?q9ef=E$gRk&GmxDPOa@@LBAo~guH0d6gxLfN5s=@& zHqC+CbOB-$c#0IXoCChHALL42==okKde`h=i~+k6w67-sv<tq00o-T;?brfsxrBr( zNI$k&AI63qj2EE#&oBfq`Y=GXgPj1{#|Cmaaw`aCdjs<vkXIW(yZD$dY+wjzY+z7n zX<+;Ty6BOCrKPQbfvW}D0)q85VJ#p~NHsEm_uB-Z&bw4IFfuG=U|<MjU}7+1U}i7_ z-4otnVWaZ<$@!%n9UYrC9O-uWU#8m8(J_7B1AYq!hlZx<`yX)WTUb~yoI3VLBs$5$ z!b1Avon4dLK)a~~L3xCQQ`*2c*vH45{lSgxP0(^ltoOi$3y*%Xu&{i2bZ2!#!<-EV zZt`fUc!Ihb;M?9A3)Mjf$gyr%z2}okhz~<A!!m{?3`-eW7*ZIfF!V7TV))7MgW)H` zW>!xT)>G3afEIYJW@u-(=J|SN<A#kb4*xS*rhPbZcY)LYV9+87=AKtFc8(1F4Cg?p zn7N^0-SZ~q*T*;XJN&O=Ygw>#&sUu+cZS2zQt2(jHBdPvlrF==!^6O1AS!B_SP&EI z&Ut3K>wjl(@h0+L_kUco2k5p4hMDjS9u6~17p{uXQxX$md4KQBhJ_0ju04M1);?H? z#WU^jy>DVV7B(&(Az3wU4807?8McAp3WkZG8J_K+Vbf+^Rt`SUJr7L3e|>rL{KfM( zUw{1g{f`k;Q2qM!`qhU|-+nQ%v+;;ZNl6K_G5l-X&iv}t=f6!lf4+Zt_v+1uk6-_D z2q|c4X{akJC<wAJF)=YPaWJ!T3J3`Z@G$*&_wdGz8+V^HZwI&M+o3l=ctG#ias#)u zJUpy;ZY}fqpZnkSzt+D`|9*lll>p)Y^8bDQ$NVp0-gs@!WYD;92HQl?EgL`YIsUKu zFT}lPkKCU<N3QLhFku3N!+*2J1_y>Mj9D^GeA3n~`%XRn{)<mqMn*=M1vGe_$=lG- zu<y;?*Zh_d5fKNn+!!W98fOe!81^tMX<_T>={X^)qvgXeo6(f9fU$tlnvo3}Lr)lv zF>GL%z-Z;*#L&PniD5Qlg>@67R-6MvGe=cGN{Ws;mqLj%!!}SfG8|}dU|7=F!1U(Y zlP1nj7q=+zfBh??F5bi_BH_Ytgkc}#A`Z?>iF<38Zas10gn;XRi~p|wO~9~>@$8!x z#)cGkhHi#^3^y5WFx+G~&9Iqa37d<f#@`1ACPQl@fu@c%D;6$Tc=*9*ZV5RB1qBz- zMvvv-Dr^hGT&9YYhUSe8I&vb+znK_Wx%s|){l&<{!p+0R$|dyW$ImyfzyACEkA;hm zkMEn1l#GnDoV*lMb0Z@=TRY3YzYM?sG%+(WG5l|0_}|I!zpH`i&(FV&T>t<6_`<^U z?>`G0OQYm}78V7Ny+SO%KYjf4<;xd_I}h$Xc<}1SpO!Yp|Nk3V|APmfn-~};F#HD% zgh5Z3lT=`2kb>Uk2Rl8Jl?6Om!Kl*X@V|!9WCQ3rKQM+$FdP959$sNwQ3JXi8jM|F z2QM*fU~B+w>~HR7kZ6P)INIFJaHEm&#*IdX8_nGe;B*Hn6Jd1*O35#@f$;}JgTsFX z&?qkC_(N#HkD(8xuHo1KscSr-`Vc*4Xk7!VF_6na(1D!bad8`lnnqAv(F)r+3R8_* z<7$BJxCB+aHK6%@^u1}Y`UqZ1GtGdgzXLKIT!(><AZZ03M+5c^%odoNK(!LwO)(%{ zAV(o~rlGHC0;_ibos0|e1?VPBkREKi(<~Sm8Jrjx7*wIVr9dabgLa<F{O9@4!+Ye& zf>}K+EiEc4s#oVQIQ(~L1f90UFsBi8;x=eJcoo9}h8l(?3`-bGd|DyR&pix#7$;0{ zWjMmHo?#J4ieU-!kt0Ve!IuN2G=k3K`Y+Sy0qFz%=l}Qb-;aMA{%!bgz%ZxP34B^N zD51DQdkBjeCNXp{*3>vNOkh~caGBvs^AuNx7I1mc0;0M2xJ4vHq@;wn-hOKajlwoF zd~a<4r75l(H*Vg#apS~^2cQ49Oo5~>Hw8upPXz`BV+JM$Sq5eXSq2sc0e;Z!w~S1T zjEsy-pd+uDKr>f0|7-q7{7?EH!Zu^|10fT5f@j>b9JDAS1GEbH_e;<ft8>5^Ku`c- z3L_)L7|>2=hARxm88$E+V2iM0Jhfs4B7ZQHI58{-6+=xduit3ZFo2FM2VsVW!2c=# z13+5<|GPlPyfyz@{RdqW*?^IkIvM}}?`>fH^5OZ5FFcK`|9*e_g2-K+jEs!E4J;xu ziV6yiY>a>Zv4PeHfWn61Ml)Cv5-OlOfmNV;U-_YT0&{YJ`~$iZfQjjc$0CRSLGVlu zx)m7gXJj=cZ&aKa*8D%hu!8}V{aZj@0b!5-A)uz+{}2qP_ct*AV`7091^vy4vH-f9 z3wsM?18DfW2DOD^#lXnm3Qfgg&@&qx7&?S5T)1%M9gmKSJLvp|3A?}XD8)E3bbwY( zNHjLFF|mMqK21z-jx<9qZ;WATKJup7;XenLjg5`cuP0}g^z`&NgJOx{0K)_(gC{ec z{+s{j_|MV6aH6r1Lq~)I)F%+pX=L=McVW29$O3{4ml^9lAP37ZeYrTx>3<anGR?a9 z1-zq;<J-L*ixw@~aqnC6%qBKQW@aX4W~L^Nf8U?ox^?T>_kYbZ8#&m(35bcAt&xLA zR9Q<)OIehsxsQRdiGdMXI!7@uG9)lCFo4E!wHTNgK;yU!KR|o+1KAqid3dNY{lFUl z4*yFUnG_V#oET0pykfY(?2{gEjyps+c|t-G!wd}E40wnN9EnDzHEZTM{jUI>bI;t< zGiMF{!188z!SI6N1jB6beOyZzmN0B)xCF{R1Ojj|CkF?&gpvveGcz03uxw=d@tdiM z@&CV>oL|0tc=_bXhYz2>;0WIt$l(hsfkEXwsN4p%jvJU1zy~KVy#Sqw1@2ijFo2JS zgXAOZdOkq(9D(Qoul+*PgIwQ1?6CpsarpNJl+GY0?tu$@P`e*gLt^c*tdW52Aj~)c zs`J46T_6Og+XB*y-Gu^R+nAm}TnO&{A-NE_Zh_Uv4Gs)1K<8C}b~;{xx)EIKfh#l2 z&;aQ}_8HSOh+QF|P9{=43=0WRh_iy$?J<>r-RAJ$25JlFo_lZyjDZh&W(9UX>45by zZGhN=?kCWCJ6ITk+y=4>)awJC$S46@qxR$k;~&U1K%j=kKiFzjQ24{#iPF-rkpP7{ zN~D2`J~nu-7Tu*FTS1p8gN_VgN`bf(w0;t@B+?Cs{~)?pApYZl=z0Yjkp~~=A%>(2 z=1Nd#LPCEHSQmKN*a=WeB@UzyDXy`*a0^%$Qw78>upaPQQ&_4(P9bo+96-zCK|XU} zSOkqb^t2BONmwj^^nrW^iUr0`60jKuwiDnP2e6%=K#m1@5|olbF$n5ABd<0F>2>^H z!vKpxM}`~!PcUkLT8%Csy$?Wy6)YZMCV+A{%2}EJJ&;UjfS3S2TE&3@l=>Y0fl?F5 z4LIGu2Id0B6tMl^mDP~7!JrWUkY4N|4J}_JAR!G8WKbakZWn@V<i<AQutkC~13Y5D zSaHJPe?UV6Ll(%hLLlM^%*P<zSi}1a+`TOj_ksr+K+($p8*KpT1%)>#v{2%zLjt}& zb<O`1;Pt6dAX~w@LFRyb3rZo#tzd9!Wc<JYs)brX?PgFyVL(qG*mWtubV1Mc0mTL= zfM6|j<akAPDd>=$5`<eBBuH|r0L<1W;LN~)%~ot-%W%fwe+jHaX#thc;Dh&|?R{A2 zIx#RZgfTEMXfZG`NHZ`qC^N7y@Sixr!V)rP&YT6iZu}4s77>9qQ8?NU-FT-F62fr0 zky)UmL;!cK&76?%<A*cssw4I?KMRE)4<0;lVH5#Dh9?XyOcrmu!S@_BFhn#m+;9Y~ zmtnYpzpiF>(a~`Mw`2%Z&U2Yr1O!;HR?Bml|2%l`2S+_T3ArAYW?*EHVSwBz56h(v z|3jFzEMal{@A5yQfl-9P;eQ0ETfy_6r^A&o1GGo+{|m+l#wAQ^elR#N1~fJ}f)=@T zfDZlLu><UKa8L9~b9V#dl`9?H4U9TE9nk(KD9s_qBP6A60NVjRd(Dwy1;|JS@RE1X z%}0>+vY`9{DsPc{Y>@IO2jn_N53ox>l{k3k6top*%D~8A!N9<v3_WiNbmtMHgowlc z7^V|@1RVYcFfEzE0*Vz6rVnejfUeDO_@4keZS2Lr7mbepUi^E}?8s=tXw$-|@Wq!g zh2a9j8HN-_6NWPkCm2i^moQc^q<|&|8BH1-7-uv#IWo>*oYCmWIE8Uav*SOBe-iK` z#SR>RgbR!Y9aS@dVFE)#^W-MRGiMsvFI-??VPP;aX_?%_=;G4I=;8vp;iv_ACJ`vq zK)#2S4v<g-okI%Rg3EY?0c3qEw8ez9yA7ldGqjH|fP4uJ?F)=E8o>v|fSVT3wgPs2 zQ;_wo0qX;2Q$#EwmklWO{{Mjg3DDM)BVz#L3{XuDDz!m1KYVPN4eicbkT09SPHkWe zK=C5NMo_u{m7Ab+fm|Aa4w*^-p90O0<G?tB@dNl$UvQzx1S_vK85kLK85kHqr(p9k zFf;IiR_FY8VA`@q!3n&;(1%F@lqwvUMGQc>0JIrx!h{x3Bc`F<i!p;?1;dK}Zx~G& zLl}Mje*y6rW0*N!$S^oChJZ2!10zF=Bd8zV4$2xH9^fRvuG7%K!_&~9<G^sGc_K6D zMz$tq4jCDawu#Iy1O#3*F$=tSA<zc7AqzP~K;elTB06AeAd%h*A3s5k0o3q7jsYFU z5LgUAOG;44urf%1??nNnG*EcLY;0g;fy8_RqXNWIkbSWF0G3uzb#y><fU_v03S$U# zlm}ePf_#N>MkXkpTN*(j2ilMT-;<!qz{sG+z`!8Fz{CKGBOV481_lX-|2|9yHmHCO z35@w4!z2QVor1<j#tRo3K}V80Ff=qXyl`W*V3@$r@&5s%0q9^crY~O@92g}U8yRbA z8Xf*yfH0&N$!K8#jv8j3h6bMI-UikmZ$A8itc~eyWE2o-WO&fX@SwRD((ZO(U}Ugo zU;v+AD9^ymAOmvI4X6J+|LgzfGHVIHS_T?qtzhbFge>!Ax^jiV;lC)@bq)*-%>H~| z{<$#BVVDO#C#M1A;AVzDzKkZ|?Zs6La~PQz3mF$M7BJc~dNMkIR{1eSL@+oob~HA! z)zqwc#PH*b^M959>i;?aGcl}aWLN?9g}J#0!xn~P;7K^pO{m)#)-f!A_^AbQ`e28^ zuTRh4G5mb?=nD_GkR0EyUwqBY9KZhl|M%z5e`cQcMivo~M<4$+vfR0I?F{JX-sWbe z55E|j8GpZnte*qLH7Ip}${|GR0F7J~fcEX=fCCtjB*C$btOt}LL20;w@dbm!f3Th@ zNP55nZm@Kf!@$Up0bM(1!NAO50SafdnCBG{k+7|(sIZlIyJN?Wx1hsNYngWJ*x~lS z_J72GUC@cv|9<?}Z2;MYoH~fPiU%VBaeVnw;3*>`<5}Rw&<7o}=wn#J(8?4M5#h$r z%CLsv6vH1dJk@}n(s19`15SD<Nidv|kCB^Egi(%Bol%ET4UDB21sS=);zEpajGACE zkQ`XNxf|=b6tHwGA@c9<w@>e0y?gWi+n@jc{{Hy%=GD75pT7P4-`tJmlnGdpmw3ST z_ZMi*0}I2i?|<3;{$XNc`3GjB*oS&z1gJblu5n;}4o8M5{|mt7vE%<5MhRGz18#!D z<};B~3L<rJz*33;Qc3|8K=9NBvk#%?3`7sO^kJ9)vks&Ql7~UAgr#FpnuNRZf64!X zM)29rjNm3S$Z4Q@3OsZS(Tlr;HThovYyUEaFhbhD;9Fk6`{$6`>X<IxgY4oSOcxt6 zFftgSog53Q;|iEQd_c<-km4}5k@-_t*eB#v-|PsQ#bJ_>!Co{9G%|mgGUW?O`RKqf zfw82-iD3e0um~lQHc#aG$H(`N0Z~>?Wd8H!%^z6mVR+DtsKc<7_64A$P8lUo#~ERB zuE?ux9sU<ERxmjH3kU5&`|#hT!GQ^MxgKaqB;;1PuZ^wDkn7~YDFR3Bg4I4)ibJ-K ziA9CM;oqCaR;C{Z7#tYSKyDfYT{y@Cxqk3NBlu1+P;H6Tz5fm{{$OzU2fAjE2h>Y< zV0-|%&*VcR_~JnU$PJ1-&>daa&G^J<#o+MItFaYyI}PZ*M$k=*;49!-nfd;JwsbK- zPOS&~8QmYCGsBo(crZBpJKxyKqyZ{pL6`2S@GvMewla&bfOp?L_`~o7>4p`U8KANq zlqb;2X*;Cchf+?1@)9gPgY?1k5(zmTCHw^>7##k6YiwnD0czLo0c`-}0Id=PT|4;% z5|XgnX+Un~hTb;`I<pJ3%8-c%lv+Sn$b4}4cc#IC@d)T}cNPX7NU(!a%LnkLMR>@8 zT#wp%u|v*{J3vJNsO*6BM3fa689<}?pcV-abTprx4YbRMk%@^x!GWQL(PRba%A+MG zKu7Y<X<#UE_@4s01{$;-j){rkhU@=;|1TKcFqSaf0Zr&NfG(N_pW4gVumCij2f0aQ z2jno<2BtS6GL1|kZ(g+YHZY0YxzWh<LPetma*``(lmopSYhXG79^L?Ti9pvIL5C{9 z``$qWDBWV$X9CgphQR@sKIFItjm^R0no$HaA_^{U{}(VEX$0E|8l3w8I;|VoR!~^O zQW!{g1Ct2IRy3^*4B!#BH?WpEcK5CU>1<%+fw>oai0~EA;K((kQ94W;-+=UiZDi;H zJJtZC=K_d02eZ){Y2FSr;~@%K#|>(?JN%bn{B^+Te-Q|B2?+^t{r&diM+`$3Xunt^ zLkV=H1>43)1_rM<`J2FLpqcT-3n$Pywu~u^UuvBgzJUs2b_oed8Qw29ZaDl;XaEJd z!+)7Zh6ZQw>bxfmEvyn7HavLqtI3g};lB+0f}I`AOO`BYas|&}1^kcspZ33;xuKz9 zfdj*a=4reNEG!Zqo;~~cgN^Oif5t{8mJbrm(->|va=p;d&=6+%@Zra=zfFuHH=3t` zQ$J`gH>mf793xE(CmI_V9yEgjh(X1H;Rqx25<PGSv4H`!Fd3AFSQ!`@Fv@j?6QE+9 z;Rvi)2ixMwz{n88z`$U^z{H@!z{~(zBhGi}(YyE0?q0v~=TCxwKue4Be~tgf|9$>v za&@fUvuHv`$K;(1U5y<KJ&=RXL3yZvse4+x>;K&U5nvelKZNnezZOS^EeyTvNq)}e zax7P_IQ+L@eDcH(Tw8@OsxrJ{ILWY+VIz2x+#c|HgKZ4k!GYbukmC4X<G)5D!var+ z1q?k5?F_RRHiMO%U^vcjfsu!;#TC?f`>*xi>3`J!B5)|9WY75>p8xayhd`$iUH^Oh zSNX5_U#5A!G!GXCD?2+U7t03;aE!cp@$ALxckkZ4;o#(M?g#CF>1ks8&)Cc_aO1|G zKW`+f}F6ckic+UA2ptbu`%VFd#NLjVI4gDV3wLm&eSgT)sPMI9ZTZ^y35{9@P9 z(b2iT=kUZ19g&9zj=X=qrJ<ogN5??o{i6%ln00h?<V{0k9L_a1G&F2tIMB$?!t(di zn{Bh!oV{}H_S+9GiO$e-FlTb*m~eb&VPSc6nLVbFB_qR#lLg$W;GNHvQc{?gm7Wrz z&G6%>!~cS2t~s+;Y}vA9QD4WDPS8COkVU#VOdEO992pKXJYYOB$>Dzn(`uP=7lu6y z`$64dh80W`CQJZL(53&cV$!+a>kK;j`G3LxOqRJX)pb0a8K!~ujWJwcDrWF$<mch} z_wmcSKLWB60#b@10y~`khkzjC;tk+q@fkKWF<;wxN28I2gX75?9`H%1yit5#<}BT` zbI+cA$KEMKJ1|TE@0zR;?b~qT{%<ZJ5iv<69UYhSj7)b6kGM)F@cdT`XKl8dMnl7r zC38AKyBFuoS$F0R!`~m@zI^%g;@XMLbDG;gOASGo;s2^8k$-<azx(w4$B*BC{_qIN z%1BFza4`LAV*c}!S)fr=K!Agh;lYEqOadYz!h!+<d>jmazCCCLFZ}>5{{RiP{aw}| z%lQ8v!#@UQRu*PfHWrqzckkT!@a4&qkN+9||M>ccqgnXZZw47@Ar^)YpTB^>*FP)* zQq4^ajEzkH|ACgDG=dCboB^6fZ((3W+OZEC_l389nO1=AwrF7b1G@1KT2({GbwK4P zOg*Ts2G{XSUm)tw!PP@GLE5{pG9Oe!g7kn&ZBW_3m~nvd4P;FGf)Aqtczk66s0@XV z=YUEV&>0nM(39&yIvbe3Okp?xI#Ki776zZjwg%7@=OB`$xvi0bt+@@H{*mnjjY@)a z;;<9c*N3i-1eHoKoya8`Sf|?oXxp6eh7aQn2I#N{Xu1P@kUU<!S_c>v;66PA(+fHf z14S>aCI;1vppXUI`{e*=q{ZRC3iL9zf6c9+iV?9E6BH*fouKdq>1=?;35qtnu>v~# z1Z-av+^sx5j3*dCXIC?DG=r@C!tezWqo8;Joq2#YUL5|bFyV<AQ11u5Mg`gH$Z+QW z0Y)20DE0V&Pb~qBDKXf9k_4>Iz!^I^2N(q)df)gkK7p(|1^X8=nvXYj3P9~`kQ*3x z_<+wW0nhP)4zhut8iE|gh<suLPWKKBw-8YSYUY7c;AsX%hI<SQ3{x4H7z!Ae8EPpg zfmJ-A<qn&t%FiQ5j{J1^pTg34<j9duP&IA|Jp<LUfl4JcF@qblEX+lU8E&pwv*sp) zTtGm8oQ>#<7cWF@qCndndl-6{qNrBV;~7!`?ZBn13J7P|#;}=T55qBr^9)xQ&VlhE zhMf$X!Q#6Zjxk&Wi-F|8;>dNz3T(qM`0Ei}?DYuFfg9BNWeJvH9D-GjHnu7U=a3K1 zs;CLcvzTK+=&eg|K2<xwcmtf<L5({fM$j2j??A=G3=jdDN(SY3P@aX=Rfs$*0?xBc z3*dDXJjWud2bH6sI-`LJRN1sPfJ-#UqDE-J4=NsDwt(CSs@*`gKy-m^0XY@ay7Xa` z02QN<N(NGb!t8?Sf|S`eAZ}9txeeqj*hnU*%mmqiUMD&JclZyhl|UyxK<@PgmzpRe zMmS5&RR>`6_;!#xg~3%4sIX-KRcs*taYE-*KrV%ciUVld$N|tTEdP1HWglo71~wFj z&xc76AKIY%5T^?{4nSAhGY0rD3NSP<fUo-n4TZtW<`WEz3=bI?7`hmk7;+hy87df9 z80^Vx>mGTn;p5|@@%jkEJeU7Tpbh!|9sVcr%{#Jn#flYMj$D55;K3Ctm9nfNBHxcL zX>s}Q4eCYw*ZA)((6Z#{cac4NRxFv<($X?_$?`okZ8OUi%V=0QI5=2n$Otfjj{X;r z`TyX-ga0z1Ro#|UD`lm>eEIm|!Hts#4jedn<H3uMUlbI-J~%OR#`F^pzRFXhu^kQW zob6yZ#c+k;9>WLl`1v1(4-EGht}vWp*uk&{Jk)-g;R?fD@G7<!40jo>Fq~#MfL!A4 zZ^K`_8e%VA|NQ>??#-(w_a8iX`~q}B?}ra>-n@DH=FQ7D@86>};g^CA`uN|>@V|wD zv5jEas*kN~{qyJ7j~}33#+PqDe*F0LhvEP4A74Lz`SkV2?|-<P`V$%cH-UC1H8C(k zZ?wai+nyX?Gys>YjCXt(H!w7SO99C6HK<JlDi5%iT)6TzNHwT!3M)Mz<y;216ma-2 zgj{x@^)Ns>K;<b!#|f|wCK>c{1GHCf0|Ns?F!V&KU<MWj-7`DpPnk01)UQ`dj_sT> zWy+L?EPwSarmVTo@aMu!9tQ`9DN`n_xOnfwtG!dEOj*?J_&@u9GDpKFdj|&xK2YBN z^M{#F#49btSjR|JSYXe5XXqBobgn69esKQz^G8ni*OEq-88gm(|KrFofnfq~;<q_H z{gbB6oU`I81BbN(!-VDlh7Am$!z>`DhpuAS#{gP*dzj%W!viRs&E)W`)8&5-LkGid zh9?Y**bJ^r=v}g8i7V(*J%&9Dml>WiTw+wnb7k1ia0d(@GpuJxR#9Nt2Hm&-zO|bF z%NJ&T9wC+wk6(Oz_TbG24<~SLSi=|_0KWE#A)tv_%U$(GBg>B;G9q6bL4M&~_K7DY z+RxqD#mP$e!7_*cInAJbP%WZG0TxPZ-`~G^_59wID|=?nn7;GGjz#TI>zJFT?z#b< zx@L}vNhx<=Xc0(B2{KV(VCLZB;o+0evhYo5ZUgO5`2W9=fpJxn2onphATI|82P+H9 zmv@h!Jbm`&$3LbfW)}8;9~wnJeE9L7K|w+I--kDE-oF3v;nNQW7A}S6HU>t}7KcXA zjtS;v4PyTpm>3xU|M~Uj@9$rK{%|X+s0i@LNb@(cFmZ6R{Ad<tWo3Bs<lP?z0X`lO z;AZ*r;c0UtsNc-U$kfOH%5O~!|7S4${}0Xt|DgR|(AX2^nRcLC78%g)qX(s6SStcl z|3T6t{vI#!rr%{?1f8?TP{zQ-5XZpGPzYLA^hZRA<;~lFUzq+pzjEcuh7I7zu@4sb z@_0i_Lqo%)6MuBW<6_pVyZ8-btOio;eLZ#+I>hr}&mrg#&u=b?Kl|qVVEAzN5yOwh zMgcL6Bez*tSRS5!r4tZv<jAjR=oV<!bfzsP5<8th3FUtd+w4sf);wcpz%ix+8y8xA z=E}KSZ$7vr!N-L-pyNW<<~#qd2k*Z=!IUP-(#(H=MUi2_!95GEvGH+ma5OYH|NHar z*MEio1)OWX2G`Zp)HvK(0NTCm@?Yvd51WFP(0x3^KHSAe*00*KWy`|;jwxNpV@jJr zV@ijhV@m0~>om+|UTj_S;mM@~`x(wOGO@7CaQL6W7~s;x`Q+4@Hy19Ln0)DV0_`{Z zAHcduCSt~)N@wT>p!tl2J`M~$ObIG1I0lSB!%m;Ry!*{3BOxHAAR@2}Hte(nKJ3Kw zo7>fap@rqbg$wU^Aax$|@)IsePLSaw>GDVomM>pKM6`So65>5n1b*DvvS7jd6}wLC zS<#JkfC;pN3o=Iai%SqXMwO6|03M@qh8W7wz*Z9Hvth%cE{Fd$&HLvyvM{pz`1QY0 z_t&>S96UTfelYM$NJt9&`@q5U<;9Da??1iy@P~=v&703C15t0l)#Ce4pu>PcqgN6V z5|Gg=_MabKzfn*SU~Xw)VB9~WftB&?69KOOjrPC3ef#s{2M5Q$cTb)?{lvoafk8w@ zMn+PIM?!%0KgI|Z!~cK(82&Lbv9hqRfrhmnKVg0H@ynBEpBp(D85uc6e*F0H=YMl2 z!~e;Q|NnPG2e0}W{!fRrGI6v{-!y<v&~f;8qycok4!m{B0~?)3&efn=2GVN(0@lT} z1*8W&cmUEU0Mmm#SN{O*b~pnYu7<b@bZSo}0|SF8^ej0Y1{Mas7oYf4R8#~$Jvs4Q z$v{QL5wu}kKt{$u;nn#Qci9va6qs+F*fR~ZB){T+1@q*cpqq6$`2-n0fHsFS9RZiz z&EO=+WY5e1=CaJV^+y4G*7XdA87u`_e=bY_73LgscAP$Q=FH`NQ$X1^m$9V-ykQ1( zY81#)#*QXXomax)!M47orDZLPha1BrhIgPPc#IMZZx|*tFt{|b@$h_o$D*Oo#4N)1 z;zcuyfWVs%JWk-cYYCGb!!eitY0#6Y@|Z3#7&$V`VtCNZ*3huv7L#_G6GIyaGM6Pr zML9AwF|<guw5(aPbV9?dS=*npD0)OkMZ3wfyxcL1fu(Vk#-Bg`|Nr^<`|qE>e?L8W z^6$@|KO!P*fBrmr^y=#`22phlb#bO&pI<&=_|v#b<KMsEzy2|UTC4y6{rCYsclzIt zU;nhUWZ3_FdiL<q!xvxvut;fv)PhH0VDZe(z{CJ5y&>@o9p6-8Z~>jE_78HL+MmYO zCeZ0>82Ui-f)IVsQvVy0KF|RqC_0hbRv?|=8AZ@((umQ{A1;gv43P8Nm==JoWMTnR zp!OALYz;K#$-%(Hz`?-G0Mg&U`~~FXwg%>JcNkniW1s*2FtC7WkjAz~CN_pYji@7^ zpuQsLbX|~sP)8JLv=zyI2ZjdF*><fBNG<^R0OSHtn4$OpJObLp;L_N@aHAQd19a6m zlLXl5Oh3RB$Oj<(pb<U{{fJS}A1;h%7~m#wfVHBTzzLm|1)W<93VpC2U}K>^pd{J~ z3VRmF6~T-we;An<P~#6~0>}>_6A)vfDB3}$;EX{~41i9}1>24o88vZXJOPP8kd>fQ zB*6;4{9!~JA;lVtpv7kd<B>;!kpWvMqKuPnaRH5!f^U;*ZD6v2gyRP=g*PS;qopD) zpwUt$P;vr?=O0jxAR;aiW2O&WKx3v%UqHF20h|y~QWGc#!eRoE1EC|Qj7-Q82?|T3 zJP0e>K`9xo6SP+!+!p{}&ENvcvn(J2BL;aC7#J{8Akw(e5e65~xDnGkh`VQi1C7ZA zOo74<<Ze*A4`c@1b|&z+4rqd$=#m4J{~BO3Dxg?z1x>7ga}Fr)w!(r8W+%wqFdswo zg6#yQFVK-gE{qb0ga->~NUZ~NF-$ik%|pkOJV0d@xXeKdWl%Z;*$MI|D5rqz1Y3qY zw#3N8-~w8W4@+rG;9x?_vDi{8BVvRp%>}emgoy(Z-jGBJEj&PeM~-cnI~tJ2nM}Yb z1?&T8js=AyD7k`k!~Blyiw34Ba7tnF0r?$X+WdjI9YTTh;w-NaV^0+>ps^<=1&G@r z*#oJ>gxL-Xd63&7A+H0meGbTWsJp?If+GN2%iy#b(GO>F0rkU~Bp^0(K-~TXOo7}E zvKf@SP;IUO+wAb)3M0%Ac7t?+(l<yaB7H;q*)DK5gEfE&u#1xz7#SL&Gx4C)h*TL^ z7&JUQ=FFKe@8*v?=QhllGiT$u8y~MNn6PBYf(5%C|6tek@bJ)L`SEP;0)_*i1+6*% zb2yKHHg<mbz#z!i#K>$9Zqqa{{kb&*+Ua1KaN&<u0kl8Dn4!?j*wf<<o><?*aDd@D zcnfkHOJPMtMWq)*55o$E3k)|I4l(RuIKyxTJk~Rn$?ne<&>37h;5JGa)22TTjttWo z4uHa=iTT9~K9MGF1r3&WUwL?VKD-eSXk@T+VORog-8^8J#bm^A!R3D*Sg+3iG=^ia z+mV?gBI1gnZFZJq4Tc+Yp?zbK-bE``G%!5bv0%Z1olh8~+(2z{ndVg>yT1KzV)_4% zfr+V+<^Mkp35iC&UoUUpx&7i71BZl)ii$W}a}OgUV-w^5|I?b7|NLQMZen3&WBBu@ ziRt$rmL@(fX%!U}DK3T|&+pv1^XyymDsVi2Vh@zxKr?WN_NxLY-a(m{@q!Cu4?_cZ zY7^9kg|CCjU|?kEVqjpfWnf|eoskAQi&yK!39Rww;ejOv8$gHR&H;4}vBhE&-dIdX zz!8h?=&{Jy(*rua=l}!Wm}~$wZws(QXETB5gzjR;8J(=)=xlIcxYEFf9;a&>SS6%h zyg-lDW}LA)qk;9s3-owx!HCy2;CKby(zBC+fgzlMi6H}el8gBd!S4q)966Gak>M%% z;@a^|8#XMPIcv(YJ$v?S*!NT7&$|nI_UyUzPD0%`BO}90MS|__fddC_F*7`9Y=q^m zM&^=uGm&NnHqhxzeUO8b8Cn=COTgU-E<}EW_A8JxAWMeApIb9P{R%gR3k*LP85v$N zJOM2~V%f4~%S-b}&?bL|+l>66CGw0yjEoFF7}*&9gV&;eV0gmtg5f{IABGzY>lkK2 z55HQ-u!TwGPJ=UOX~zGM|8-2aR5Dx`_Cv>J_cEn1<TSEE^Cff7V+E-u#&3Vzpt%v0 zqwW7^vGjm5F)Jh!L;5A?`IhMzgPkKNS3^47&`1qnn8L7>VIRYJ@G|!sU~&t?c2MVt zVF$xThD8ihFw=#@{~CVeoDIt9%{v=dm>4)EBpM~8#D#d+SXfz^WMrge<YmOfUcC6u zz{v3XccT#Fub+3WKl#bPB_gY$A;Zq_<K2_yM#jH?n*}6<xIt$WfVQ}^u&^+KZWv%} zW?|=G`0=xe<@ay!8Lg~r3}3#sG&2AG!@|<Y{N^_sOB3(^KM(HSxpU{ivp3*GB?>Mq z7?8^d1}<rp=AGd51S%&mOL+rOIne;E7r}cbA!EFt*&p;;1yMK50qX*7UIf(+4Gc#> zlWpMHc{`-la+tQ=0qbMB0MT^<q{{+Cm_c=gGB7fLZu`??U}7+5U}gZ-DMBCklvPwz zWI4aw*}rv1LJZf3t8<}UW1d+TKk&O}r0m(X`x3*4#zr1ic9!3NK?enJ@bE-HYYkAM zeKZeRpD<3o-pKg<M+>J0+pQx<j$CEZ$#G)X%y5`t1IwH>9}J2>$E@=(@-Xr+TxTsY z5WKl&4(JZ?gAA(}lNcNrIvUwnSpNTGVPk1xyxQUh+JW~!=D!6PmM~plFmY#?3R*74 zaE0M4!x2#Z!&Ixu0#0+)Ec0$Ls3k&c4ABA~6BF0?gamgPhDX~MELgB=-<dO8`az>J zOB%TT{$phL&%nsQ#Q49Fmrq4SL6n{0&+9vP?!Efi$nd|lk%f_ofr+t=fxVf5u@$tk zi1FY5mIfxqfB#xVf4qF~;PL$j_g?&9;F3^KP*hS-P!Q#4>1Fue$M7GzlMQt1avAg# zc57%TGrV*7A0=`w?E`Uvy{fU5_`qiP0Gg5P;hI2JpigLQCM(ok8Lohi<Y2h+zve&D zp}&Iv-@iY97zo5bE7llj!5ae;kz=5OfstVu0|SFM0~3QU12cmq0}F%lj+B%X{a2R` zty{BZ;nZn8J9ZEm7fTxjcz6s%?(NyLXU`!oFAon7a|05xf&;@2whbFL+}4cAbY^G< z7tH-kwFOn6(}8x7mrrIig7!iBu(zyw@aNB;cP~IoQ&RqCKp=YqIeCcL#3Z7?m7y1W zn#^p5SqwASDk>@~D)S;h<DW#wZy&?|rHxW7|Gs_t^!d{lE-o%U0VWm#(cQ%Gzp;<u zXA{;)7kTjD#hY)S`!fGLdHnRr(}yn@@a4lk2F5-}LI9V^pgF763=9mQle=sgm>KLC zSQv!9aD&d*5@&vMb;sHb5g{xuPET=ytaap?e)-G0h!`KW_iH;G|CjtP6>e#1S$gx! z7ZDQ^lUF@0Gxk3I&hVtMk%yV_&o9s&oXl)IJW;T6FjMi*&1v9To>yea$;bCk@7S?p z)7lLeJ~x5|IcM&8;^E;Do|<Ua%xNL^^vszvcezYToEUb4rcPOwZ2oCc<-%|mv>lmI zgyBA8jfEfM0Y)B1KgJ5ict%-<6ATL&<}vJNc+BvG;VHuthWYFk7FK^4m?KJD81^zo zGu~%XXA)>|V3+|aM1Oq+wQk{sXf(J8wfGM%M4cIWL3fY;FJata0vb$Q$W`v);o<LT zVz0`=0=f(B2xqR&w=-wX2*>BMgA3OhmN_>Ng)1MZaD_Cx!G){C{|c4~GqzlQ*TnMi z+L3j=pafIHwP3;4BNy)6xpQXIG>89n%{%nIeEIebv|18`zkOrk<>O=j{pJ1R+qZta zc=z$cyO%FsJb(G>-RCb~Zry(R>LX(#GYba?WAg^kbW%$r17n-kk5>;KJbnN=tqWZA zzWBl^DJ{ao!^6wV!^_FYpr9zk@&DV8@5}<ijLl69|L1{ECv9c`wa#HREvOxj+6!|6 zU5Ny0$2<N9)jtgkphF25z$;unz(%7%H9M^52kHSp=B3Vnbb_~BGjxE?j{qMMi8Ql{ zY!^g_1V{(OE*pl9M)0sVm_X8nX^#a+R|De?aQ)Z{RS(qx>(zq%gtC%R;sc`ycy`(G zKin$Nx<c?$M#vZjX!Mf@dU7<p<-zO(@)qcBFbB|Pa)yq^wgyH4(23Cu??5Leen37k z5pzZP2k?sW4%iSqI1hrx@`+Ok8_TyIVPpA@|LgwOvdq1~pqT<~zc81?M?^R>Tw}P# z+SIga)#6@<|8;^hW^8@RB<~s-5$Ph!^nBY41}4xb{eMQrf4~3y|M&mjmuJsF#}A5$ zas2=H<jI@wf0!gRwKOGJ{(OD?gyCP~ss;hZzke85S^oX|$H?&O7f5ZR$ge*PIy!Qk z|GvC@{N(Y=Z~xe&b--$oa}4PAIM7%NXuPTcGA;*7#f&?kJ>RAV1}4y0=0DI)Tn$XG zKolg6tzuwg*vi1bkir1DgV+aja^j>VS6Nk5RJ=eFB>yY^C;kukAND`=e<G--`#+Dr ziR9Uv{f(?FEFaD-o#6QI!@mzq6M7n5pk|l-FJt=0!qQ0I<PMvU(v1ZT4GrGV9?M>a zoeV1&HZdFr_he2nv{63$lhfG9_VJruiGe|h8~9Y-E711s6;2i|2685bAa{dk{kQoa z`agwn!v>%K8UMrodq6inxcqkkZ+uW7D#`JqC%NW!CV?McHd%78GyZu0=E8+nZ(h9k z@aw~if2{ofh)amgjT|g&Ouyc|`NGZH#LUdX!n|7L$B!>x{_(Ida0p3B%ScPh{P^{q z0W+xzVM(gZO+5eqGw|@dVF6u(`sdGDaEY^ofstVc0|P?@0~13C12cmw0}F#BN~-$x z2Q(L`qQZJ*VPBKi|15CJDeiyx|DgXq{}UjIhfhZ4j|%qb!rn&Y6a`+i0@|d(ZO_b* z6Rywy=g%Kd_kR*YKWNDc!vuyV#=;!XmLtY@E5J<w;wBSWTRMLH=xB2OpZmY;f6f0I z<^$51CH@S{q3f=mFx+9d!0?9QHY9a|9sT2f4eqH%2ZjTPxke7qTqAg<(cymq`ze0G zKY#vw{NfJo`WyTQL7)FQpk2TjCqy89e%y1Bj{htFSMtxi@>eyXzP`R7IwWM-vU#0> z|0@}$Ff3-+$#9(E5;(_zMgWle{|gzWh%_{;XK<J^XY0d%(r&S_v9418o@}4fJeld| z_uosEnVH#G8UHh~FtafKc=doyikF#LLR?gci;0<;K}t$eN>)l#q)|xl!@ma)-uz}@ z6IWGLm0)N1@#;bIBmoIY5pEVZ0QLEqjxgCw=H}*NWoGB)Vr6CJU~kl7V`FCKc=4T$ zn+=rW?%ch5=kB8yFIZS4|8VH&C<?Isef#+F<G26Vc;s}NCo{2gvUM^tG0g<0vU1Ro z5ey6r&J0Wp1`Ny$`k-BBKU7qHIQ*{=k&!V_e0AZ)XMW^)Xovq5Y^Zb3?2~tbQW$9d z8MM51P9u1LmeHQM3BAN>WI~^QhV{5-+-hcil9ThqiD3sQ4Zx?IF=nR01E>r;Sg_4Q zvw|k58C)70!Q*_5+~AafQv5VwOhmhYCZfRuxl0)Anw>$l6~iWmO^_O^&*^_12(rw( z#iWH<tqC&8dnP3%dB`$7-@S0b!d*`pm>SpV{P`m$2A-1s`{&P}fB*jc1XWUhKR<c$ z=g%KTK2Z@-e&#>mit5!jhChw#SpWS4Re7NE#+&5-f*RzYs*Mp`wS9RCIzjN;KQ?h? z6=g|IhJTIgz_E6Sfsx??0|P@70~13I12aPy=%fM#=!J3|tMBkcL`3{PFxm0H(Z6eq z-y$6TSIMkdePqj$B}-Nvx+A2mpz!1!mx6)<&$|al9?R({D1f>NB?1x>Ix^2rAGygS zBO~+w+L0ZTpawGcZ)IR=bo|fspNad#wuXj=Z8sQfO*B@z{QL9&&HsXb2mZVBELpN- z>y39TJUl#4c5Xo~SHMLDamx@~{#SrYft?IJoCRUFHnw&e7N3`Z4(Bvr-f-!yhAYDc zMovZ!Moxwg49l4knCF4AYz4=X1DCH{xpMp19MB4hQs$lsEiI0qQ5EKfh6!Dc|BL_E za0Kve@9F8;$`jzmFpJ?EqXGyrd|{XYn#$(o;rXKgx~PWb{jD>5r#Sr2;o6fBVJ;&h z!|>(Pk0wS=I|qgavQ{@R?%3h~KjVKGwAKpypYT8HfBFB4|5g7B{%8Ex`S0?-g1K|{ zoY~(0YyT(w_xo@3U-`evf93xc|0DiqkXg4e^6<2SuB~EfW?<ZI|LD=TFApC*eEaRc zu#mu)Tkme1y7%GThqvE;GcqwT|Ni!kP<_V+ZFx2GIoOFnfRLz&h>TPtpO}P*h={O= zurNe;l?3QcDt-Ze4wnCa{`~y-=7)#~Xu;NhhX2hXEc`N{l8KmR+n+|pFJIb0N8|r% zX86Ay(gK6^5Rhl<K#e!Y|3d%vK+bqz_{J#K*uW$PKFo{h1^Aj*rdMDJ)(QmmN{~$e zogxoelWx-h9&2P$f;0h{Ky5!z8}VNwWCu2=@5ByWUw~*sE`y9y-h=4<1<?ySrn|L) zi3@B5%w|lz+aP+KAbS5n^g``bBB1vfM6Vq-y(}ntVLk@+j3DjaHn3g?hJ8>UbAfDb z0&8O815+?JgL;0jHMNlWNdbl}ki`>@3@wZz;PZ8wK-Z8#;%F-LOnFb}new31Q&=}_ zc<^Au2G{=#{~7-6__qUe1TksrnwTc<WN`Se(b&My<HWE8G_KRgPy;$QE#-d-M)g8m zF~eF?vSy8ff-55jBM0Lb#xI}~UMX$^J1~kgHh^5_02-udbpD^iZ~!y|NnXjp+OQxZ z#v{jpp@Ah~#gZir#PzK(8@k&X4BtqI=!r3iy!r5gfly|L<@If{EFupcJYZq@prN6` zL2Sn5Xxs*_n?QMm)U@-Nfsx@a0|P@5v_6Xf^{~Eud$MB2j2Z6#-TyQEXZp|ZpZUM= zf3^QYOjDTldj3!Uuki1~zc2qjgL+H<KK%RnUzMZ##f=+FmOR?B#p&Ole}De%AtR~% z`_S0n@;?O()Bo2ntY~7Ab}0fKvEcR2fnfz>=w3I_3AkXK_&?)+F5~QLjiA#Ooc>op zQzwXr-tZwVWimc_63aA$Nr`bX;}pipj3*eMFtIUNF@-aQGr2HcVf10FU|h=hn2DW< zhe?vjgvp)BgUOxAfyt36lBt4m3gZ-(goF+Y3n$Qq2F44NCut^!#s(+QAREIGP9K?< zCr+Gr#wPH`;eP?ohA-B61qB81Rx)hgel~(m5?}}c-NI?p2)eZE2wAlyZ^M!$i}#$l za{JEh^E+p@IQ|d$pTXU-<_R+k^OxIa4le6+_+QW7u%w}30VHQICM+Q?TVNY<=wkT4 zzs-Kbq&IIreqoT5kd&5H){x`T5dZ)2!^cmbzkL12DIjp+#h({K8UlX=Uf{|&0_fut zT#e04{~7)@aWJ#9v;F$T#KPRn0=nJx|F#BM1qCI3mcPG#{QA$r!tmk?1CNN1fRGR$ z2MYt}5RXO)fd?EK3?CGT&2E1hyBHYvLvQ{7?Hzr@z`#(zz{HTiz|7zQK36V4<jWV9 zF9((%IQ8t$pFb~7?OCw*8_S<RUZ7>m|E~PI@bB8cfB(V#zW+J@YuS2xCa*mF-~;HU zTj&1~|7+NK4*nGp5xML5zwo~T)1pNuK-c&M{15n_%{6hs)_XsG{J6bo!4${;dH(|% z9RBAt;%@dgvuC{cA}H`dM68L4Usk-4_ri>ZhK3dQzt|L2R8+hHcN&=fT$lju44`x@ z84I+U8Db#kA}IWq`!Dj}jbqN9^JmVSxqfJh>wl~NeE;P@GdTYh7-M2QK<6bgN-%r@ z4Mv08l3gq=3T($)9sj%j*Aa-x@e~vIu%)M`XVShO92_TNoWLhv>|)N)VOi?*KLG@p z7yQ%7a%9-U@T39M)of&(Fu~z}6~`VP9-c36K<ir>{2Um%7z+xT9sc{US;$GN$gurx zV*U1A)W#;mg<&h$#3u}^*i!;>jGjDsq66A<=g`2Q<-#x-+|78vu!SjzVT;TEaBw$O z=YJ`~jb_${h7~Io^@2M$|7%$0-eAyxcQ=aTA|jl@11b#+4Xi0o9vz$25b!_gzbW{v z2$}z?|1JNAgNL0G{(C{MH1_|WC($rr?STUap2Wm}CZEBR(K7A{2?=ge&HH=onV6)c zxEa8w!83qH(ij=Pzj(pK#Po~j+q+Lczx?>a!o$JL@b}N3kI$YwdGh@I7X}V)0f8SP zQVhRd-Me@11;<YYc5%>Z6prTEEbkw`dHtn{iJ6t9jph5>H_t!KY-E1(=EdhG7SI?1 zOA|A%n1DdD{sRscR(2K!Hl}xf*_fC(I0WQmxMXAncmzSi9vlxIFmOn!sHn*BFnoD( z=gyrMznb?$?q}p?U}OM|@p3^|xN?Bbk!BX*0(CeUo-{Ww@AwB=W6Id0)7;>|(8P3( zfeF0S^&7)K5dBI5OoQ4rpw&pAb=IJ}(X1Jm8LSyt7{tGD%BrZS$g#iq_4WRlGiT<^ zsj2bicyoJ&^Zy!9SM+}cPtTz*s{UaiOO~B@2bw?@<Q3xh_ZM`A1#~aO?-=Op32Qpz z786O>UI<pmUWgV>fgjh79656RpG=SoLlZ+6WVt=#i4%_hEB===&wZ;=<jQcK;TOXX zFx<-;Df8pNv<}eq$IBS{m^>LgK$9VV{%~-ylC=E*JnK=*GVdmXdXf`EE67^uiYUm& z0d3#JgbaUWfiKtA%v!K$_3jgUR`xjjuWevpX`IIThf(0g^=G{eZ2uS-8UFwO*C_Yn zD`X46e-ULB8A0YRJRIMjKDhJz<C_n^nf^2UY3yY9585Bx#LDvjgN%+$Zv)%^zkeAR z8UHs*|NIJB-v8&_vlsV2@``+6lTnh96cgl;;Ad@Q02O2ZyI7fjy^zq9YGV8kyW4st z10%ya1_p*^1}26y24;qIl4B~Q(h0I7gSRq7^UIennp1Xu`SNAw6wnoTkPBZj8%T*w zZb)o0NJ!k>(F-~UGU9&(NAHfi637C~Ac1DeB3#6i<?e<J8}70wg@lACIY_>F^G4Dk z4s;^g1cnJrapa^1sRR|4En9B?5qEKM5&v_03o@J3R1)#O7Q7>!gq`ZhsS5kSf$)@O zhBu|*+MJG=0<j%4h)9%X_!1=pt{v%^iM0*qPV`LZectX2ObqtWk_NnbLh@W1X$8*d z##T}b90u4@3Q7x}2=J;3GD;rgWfi2CK(k;a5I1<81(BuD-^O0FQmBRaQmBssTPXzU z%dkUl1_t$^A^l(u@LVR73WEn|Avxx1a*!_2UO~`U147pgkgg_>9?)`R?7Cq6b<h|C z#4Z((t_Fwy8VyJ~K?b0#U&pZ)`U0qcYi)4&F96mJT~qvz0kjC33B0rz-eUv#669WV zo0%@*vlrx3m`;RGUBGT;T7sk#ydW4%z-<JrA!lV^VgT6)8JjQy=>rezFw9`^U<B2b z$jjb&K<<W&HGsy0U}1%_-$Mm7V~ieLAS3bZ_dvKj2jqeV2Znp#@B#%hW;}uH2K8@Y zp#^d~*oIplU}qyZdEi~S4hl7p>tVi!#Izs8?*9g0yOHAx5pKBG-lzQkz<2~QSI)49 z!GrMyVz&%*?LBII!|X@+{R_l?(4Z)ubPdvn>~qk07au_9I)Dy%@Bq!9@<3LeLsJ<S zDAK@j4ojmT-JA@}44j}=9QfXAi2glbe>X7w0PA;P_y!uBZEbM)7XV>^+HauQe$Y8W zATvNaZNMSN><7vupxJ%{aB6L9WCHEbYHMKr2XaJPGia+5B;9~Q9+qAa>23?y=S&A6 z=@q)O1!J!T?yxWT{{ec^lOw|m1`oXZ9$+p2#XTbIe?VNI0CE91=D|@8Cct3_vKy4< zK)OKwhV3wNWa#?;0d`W9fCu9V#8wY1dyHVFfI<)Edr-=CWcc&{1MDQF2_ATN2;nwk z&i@av6O}%A;N2sH+l&SOKQR6Pr((uE9(Z>N!BPV1ekm1DRDx211~@iBNdOd`AQ}{( zDEr<(D>^`>G$>4AG115XTKmD^(b&?+zyc!vKnZXxV2?XOwE_9|z~Tv<%9%ikytM(G z!oeG_z(pe{fg|mJN?>4Q0QGOI7?>Dr7?>GsLARm(d2#v7nKPGOv3&b2sG_105(1v> z5ncL{MZ}||qM{;2|Ig`#v*!4CX)uG^!=K;%U}6THT3{-AWy1y=8@44*|G}&BSZDt8 zIrH2dbPeznhAFJ6egz>?KU<hA0*asuJ~#@!biN(icjU+s7w~nN7Z@%vtY(T)xaRV| z^1nZ5*x`QwbN73l04IhHhD{6ySl2At^&ixp{qu)~^~bm0O`I}j#v%p=XU^~xgI3gT zVA#MK_hdx|b315I!soxw|3t<KTO9tEFfF+Arx|?jmvWj8%e_Sn4Glf3?l6FE&%U*N z$&%SyAAJ$fi^xhzit@7Yh^YWyj|1x1u>AiZp&`|)@#oK<Uw{7m{qyH93p>M?4<A@q z{=B$;<KgQc93Q^0ipj`}a0&1*{Q3=QR)UUBY-M0<0yRmVTzLZ0`~TmcU!b*o%<OCo zEG%EX{Noc5k>!5-g5%qRTMr&Ref8nVo9`gKO$`6r7#O=)|FTNFxbdusfw2=(3h6O0 zGT1`zHj`ptW&qvLClnGAVkyFMaqhfx$FIG4w_?RIhBb{1>>2`~?X5g~E)4S+7BGMh zhhQv8Xkpv4XU~aWCT^Y#^BJ}<tYDbK(9N)b;W)Va_@lvrp{KFI;eQ0<q&rQFfBv}s zxA|`m8kPQU@jr)QMGHfNAHx!c9Sm2YLlyTK?tqVwH~^Y7V_3^DgQ1~$N&_<s)Bk@> z>`YS9k`j^v0xfM!j7*?8rPc<%C+~kVGB7eSJb3u<!NZqdTBd+=hXn&8gC_$6gDwLT zgB$}hgA@Y`gV>xo6%|;029CT&T>b-}M8N?X%w4kKk&K=vLp#G9h6xNU48;r`4C^7o zC=CoHjSY?<e>LLvs{=y=V?sgzL&N_Df_|RSz$hZpi0<z$n7@UY?%iWzK=XSe15@J+ zNUS<DFf#ZuFfiyaFfk}V&m0B&gYn80Xy=W;G{AxP<}EH}Aq}l3PaZM6Xarr;pu^z6 zumWdPGk*Bs$QZyF(8R=JSK-Cb#qgNn2g4hN2Mp&Ko-lHQt_oqaX>ee;(CF}=0kpjC zzYm_MXEcZa4Q0o)_%W<t*u!uWx`pB~!vk>K9{~^cZe*Cl(9%3ZM1kdx#2<!#pkp-t z{1X!w6%pm(`O^#!50NV${yg~e;PrRVKI}i>MF&qm{Aq@U2B@qAwH08cD`f592ZlAE zQ~MPdKuHvGYCrgNtXAlnbC51j{S4CuDfu9}m^c_pKr0l%7l5!dw>E)huD~e|)*=Jx zLaEpOr~G>anH^+gVZ77W#PFrDm6?qNbTBiho$&)YyEh5C&Kh(kj4J~(gA)S_gTj@6 zQt}!rR$qB@g-b<6#X#xtkr(f{Ra8{?K0G<~R7OWe2DZCk;kgsHm=zQhSZ<%#Jryd* zJY^T?T4d&TuNbC)W)q_R7l5G9&Oa$BeD_|wc=3zr%bTw(EG*D%`i;yyqPz@{V<2jn z4}XwKhYlz)=c{};;P}7le@HWn&WE|(8=M(A7(OtZW9VSBdE3#^(bECinV-ioXVWpn z2L5cuh89=Q&=oja?_pTRnGRYQfo;V^14BV$BZCg;z>pJ6F1C4~IkqJXOL!v`-n=<+ z?a!Y-PwxFtl85Z+Z)7$wmS%vI%gs!BUk<qZPlXO)<}#o9qErDo5ZL>_!hiYyy8m7N z2mH_Y4;qlP`fu~!`hPr6!-fs3rgwC-FS)~_4IkSCtq^nt)fNA1{zv~e`Y+GFWbvLC zEDA2+5#i2qEU)%1Zr<4-&h+m$!;6QHo<4c{`Hz4A(~loNe*XFQ=l8!R=Ko(`yl4_) zWMaH?_t}>}Op;m}T2d^3zC6F%+`{zd&%Y)H#%ZAQlm7QNigAc4aBzt!Dk$+Y{Q2|k z`=395fBpEw%-Y1v#Q5h=qc96Q3xk59INP63FP}bn`s&Lc7BR)<R>uGTL1r-i{|~)y z^c({t!(#>p&@FP{l^2QNk@gZc2?>ec=NI&O{jY<r!;1YM2wsO3`@iIWiNb|nV$v#0 zmS1>r0d#PKj@<nNPhPPrC@65fd2sBZgocC!bg2c;+*3!c{Rgc*xPD~&M5rM1gl!D7 z8(B3pu<XfdW~?k}q-r{IU^v1CTI0bMlH<j&p5Y<5QaQ|UiQxppb%slz5`x9#$I{6= zoEZfeelT2Pn84=pb;5)RQzn3xT9k1t*>w)F8l#xGqo<+48KjBf2*Wzge4Gn092izK zvOamzb6-jvwtGt-nz-!$XEF3pHIc@FQXIn!hE)tl7_NYiO1jN(i{S=%!eA%E4u+i! zTN#!!%%FNwX7uoA0!=)z{`w`v%f{5G%*enbAt50nD=sL+Ku#hT+Oma(nHj!5jD>~a z9}8N-7kc;U)hEyjr2qf_-Me@9-rajoUXhm>7<cSwWMpIlT{8<F>t$e^hR7GlWiYHY z4eDDk{@4L)(H|&aoWKA&=Non`;tS}0E>NkDTvtF!eGY~lpnfIjsCv+~EuahG8W?_o z_JM(}$N=>QLHaOj3y40ZV+<te(g54WGy_Q&$QlL^0kR9^Kdkrkh3sIQ0O_&ZC~#od z(a^vk19Iat5Fr6udk@l$?n7|saO{Ab)hh!kh#~igfl2Vm=a6;<c3<v+xc3V#_riMH zpgIv2AD}DR8^HP;{<A<W1fTr~4pq<*i6EbvL)$TG3``6X&>NK{dU`A@dU_ff=5@5T zc64-@n3#M#vtv#V!+}PIoMxs!fBrTxedn=gWb}x22CX4wn8MJ&06HY>1H%W#EnB?6 zdF%$mHHP;LPZ(Y?yl40b+V07^Wy{w8Ho1-r`x!oht{-k>IMU2?=FE#GrkBrH8W|S2 z{Ez-G0*2NMUCm4qpexL-FkE4Zh{$pR9TLOP%$?_=($Jt_7nhI_U;sJ_Y!ZV=8!HoN zR~$zp8xOydf`Wt)=!~&RVt+un<j)^QRu&e9|12ylU!LE+bNk_Yup~w+0<=E@lnTLd zqy#(d*YUpv!<<HN)PVL#!_WD#XJBNAWME*>XJBHGVPIxZWME;C!4YCIGE0`=3pJLU zhzAcMnjJymLtMx)K6n7yw7P^q2(omokdRnGI24^3W`N7V8KB^th7_Fa(BK4J2?7eW zX;L_X^al^m53mAA`UQ=IcQY_BL^CikSTHa%STV3L=$UkMbSymim4i=NN5|08!PCS9 ze|R-=>^bx77Yhpu7nciYryi(v^S^>=`5s)U4;qdPTU<aP32rh?=5~|0w`$6i<vWk8 z-Li$e5MI*Q$XufL?PC)o7mF)+P8PD%eK}(Z&a?{+dB%nY|Nja9eZi~zWWaN`vi}vJ zCx$xwclhu5KY?HxN5oDO=xD1>2F7*<#%YZLf0)?Wn3<T_m_B^|_TkyTKZsm_5^YUP z|Nj1KVPI)yU~gymKdn(qLV%Nv4Rnx}hPt|jy0QemC~X35V(Mi057G(FF<A_Z3?0xr z13>%IK<#GkDHawMk}r2Go7U9O;PSupf9C(J|0(|~rKU^)#qg9V9UY6OOqw!d#tau1 z7ls=L=l3vNXk>lx09(_Bsj>tdz5kn-e)53|mw4pD#ev}t+m<a`9w?^N_%Q5Y_yAhQ z#qgQoA;T4hrwmWQB@SxobA{n6!v}`%4F4DzL7RwJj~qG5<5B9!a1dPjtZ8gyp72;! z0@nJ_fwn#z|K~AI0LSgiCZ<=<A>~pmxKtAP4=R^}z>Nve8u7gh=in>EZ!jR%h;Lw6 z$S?&GwG9jnkm3t;)qN9pE~NNMOo;b4Xr92pIFaFhhw!goVj{d8pw0o4jHINDoQ$}b zNCz_$BNMntlUGob6lxaw^M{2Qx#nm1%QAt1u|t!E<qI<p7YhpuGsBaI4<0;t{{9Or zPMKNQm>57M-;29<?mhX?+{nzq!OGmp#KO)2Jw&mYfw2P|vr`xt8Fn);FcdQ|F+?#i zGek46Fvz;hm@#AHO;!mxV;dVsPrpbP7t-T;W+Pfou7c!b_T_uXNdpW=TtHFD$iQ%y zVG(zz&YK-emTWzKW%rRIG)Ns-^F2cenaPH+p&^M-aX_t<wFr{38kLcYiBHe|{UIi) zHG!^!XklbwY!cyMz>(~%Sy*I*c{sT^xcNAA^!0W0HDpLgh@ffzE(XRX-087^fsp}J zhxjlsF*q<l)@{gxTO^GOP+KHDJ$LSKnwWs<7l;3)Y&~cA^i@<;VBPW!PZ%~dHZlGA z^S_DhJCDVR6-ezBo}3&8CMGuKKM@gs-mHXPx5ISGBBqhq#aD}|8B1;a4pO(UZrQTs zzfG<)s2u|mVa?z@yk*N4XAqm=1H(49;*2=1J$v@JfV)yZ7)2N!HaIY>X>7vL*kSBC z(!?Yo_MwsSL%u7+O{g*d7<Mr@G%`5^>cQ@Kg_I;s3@r@JOnELUjU3R1kVFG`^D5Ki z15X+`o*Y{_f5H62Vlj@O)Wj6Svl4WEKnnxoWYF=#jNMI)|Nb@d{rmrqk>k@R9swx{ z2@xTYMiE9vCI&t}hJPQPK70O+Q{dk}9$rqS<`#zklNcG9n;HN7ZDRP>!uacV3#g#_ z^M{dzg{4s$RJgpncjwOI51=xKofFjLlGM=A(a}>8U||su=4Anmsx$nb%)r>e@E>|V zuNea)gA26v1iC3%fq{iV0u+HJCJqjY7S`4lpos1{_k~@>1k`ex(#*ud!ra8f`T0a6 z<BrA9HDinoQ<@pqtN~5Hyx=-;;K;ExJ2tIdvu2Gmc!=vc!yJ|b{kv-z92n*_GT1aT znV3j4F^Nn5X=F%nVOR>fCyC(=!%>E^W`-Bepl|{e{!A-YOmq5Q`@iOYEz_hucfjGt z_TbRM1@kvt0JU$L8UFV&ylG<vFK+(P$oA#q{Ra<UyaTnHni&{-xmZA_4YGh%!~ban zodV1wsiLAPF94H=w2qP(7#Xq|7#Kh!_LdCH3~Hdg-4+(+%0dk1=QlJoG#q*HM?ynG z1017*8X6`h;yMNfpv!n7{Q_JV_B1*$%wiYf;o;#?aLNXacEUr1sbLB@s92hqIKP|# z4YG7V29OzMHM6c+bMUK4oIAs6hNs|V&>V~$4Eq@xSOWf?IdjGlBqZ?Q!IS6bZ(ISb zv^#U;&gFd!4j|k9>oETL*2Kckb-4#Q<QU7qfhyU=EH3q@$K`({C;&mYnIQq>s``3x z@Nt)?`q(@;IDf%{b?2Ty0$Sm}0@I2WlbrrngLa2;Ox$zFCLlf`KE8Q{3g{Y~AHV){ z2#CCU{rJ(N7q4FZ`t{?-uV4Ru|N8a&$0s3CNgftHQ11hDHO}w<Y*QHj{AptN*UWr} zfswJ1n~CN32LV}44Gk4Bo@Qna4mQR{4i*-M4^QvjxqG*H1tk1ItJW7XFfc?iFfl|k zFf*9q2!Ah->;BjLPx~M8Kk9$v|1{8e-v1(r_Gv3_a%v#Qi*qO_VrJrxm`0`v-3>_l zJGnvo@L52+KUr8H5$49wz|hJtfygNH0Yw=j2csaP5F-mC7o#ep38M+448tpi6{2;f zpi|lrk$L<KBsSMHI^d4YMh5h)oQy17P2gRgCMM8mcKx6A-yRgnAlwYfNev9mpjBoJ zE!<TZ{tgcgEm*K%!-W^%7SjKe{}KPapj%-O8#opIEBuFU^MvHL8c;xUPTF(F!6zyq zAt9l8hl$9)AMd_=`@_mB@b1;4M~|Mpc=qepvnTf+y!iC|!MDF`4F7+Ac>d%U1pN5K zCnzSu!_146E;^Z5SePK&G@F=NSebrxK*k3DH8b5|_}j$I#Ps8hfQ*KQhLQ+JBd3Uj zf(i&QFgLON{m&u7!NJtT$;`s==EcK1ckbM2-T`hQjrRFay3uHTKG2v2Y`z*a`T!aI z7Xa-&0d=Vz{|A6O(%_+d@QDN9Fa?d0z;vOU10Vpp(Fjc=sNIKj4gknT*a!=#_YSeq z0AynW;~8+d51DTOU6TQ}4Os`sjiCO10~4ro-rB(U1*QWu{=)zsB;i6Dt%A7{VH4;o z9q9e$XTW}oXa?B?o!0>Q47A>bi2($e89;V{{KMFCfbkD_^aylO>KsNE#I+wNZUpH9 z*#*+q!1M&-s}hJCLDn>YN5?>;H=x;O%ySAr=ahr0KIlc)V6&wa7#UO*7#KtqAoF!{ z3@i-nY>Z4yOe{<+Yz|X|1NJstX=Iex;qX6#aR&n@2WZO}6C*Pt6T=n<h7ZiDF9K?u z7<Mq!Ff3_gTc8vXacuzuD+>c7sCU%>Dcc)BC*iR)bH91<`oouRUw(Z3@a9!>GxwiA z4B%Sv$Cn>}nwz;VU3&40M@2=2``4>WVA;Q*nb|)evblkoK>&P1IIjW&12^bQUeIa$ z3|AW4K^-C{25>iiNfSc@xO!n|XolPx9mv4Q;KRVc5DMLkWX8b4zzWjok?RDxCXP4P zL-xgs7qT5|U%Ys+w!`IrEc8;1*an6xjm^Z|Xv7E|L|`}JeemD`uSpPe7Mwk(0CH)w z3*yq|1_y>Ejm_f7>n@Sm%?u4u;ATey!!CyH3<nraF<fT2!2sHDe2L*0!(N8%VDWtn zrx>oHiZ?flv#{`q@UgJ4{Q3eKAmN6yo14Xd{rvRq)w5SGUVr-W``6De?_NB6_2S*9 zufLm{#sB>I_T?Ms5)T&8T>qahUqQQ5Ss4B_H;Xg<{06#pnc>g3&p(-d{`kkl@C(ca z>tf?!`}60|r#GMe{Q1KPXG8CaU}Iop0G|Y`z{CK`!R!hw;AB4G3Zn{xBf|-XC5%TH zAUT%>MDZ~E0Z|Va{y=JD(5NM7L>IKun~Q;&0eq|MkqwZW-I<SwFc>tpG9Nhsn%`z% zX=b*u0L=k2{6S(N%z@=m&~0vPkhMlCptyzR(hm$v8X;GGIe-r|bNCkk8?6Pof_&Yu zypBBb3JwH`D~un&d7a^h1H%%=B@7J=Pe7x@;35Y3whT}?#*PR<2GF^sS3vWoAq=2o z1ij4-9Dsiy0r-dE4>(W5$~08nXBfb`4G_AS7;xzZ`5RTY1V}f?1CIYA7?w1G;tQ(% z7u<5xP)E`4z;FZ+>i<FR2bsVEaRAhWAF%kx?tZWf8W=%cza@=e-(xrc?0e7+sv!&v z3?>Xr4B8CL43Z2i3{s$6uV4}o5Ma-IU`qRf1q-e`d3^sJ%P&4qHs|^A<HfC;2Uo9Q zxV>*zKkTl^BIbrapMHQke6HZW*As>-4BHqcFqc{0o8rUpf#D@1KcfI6KcfUA3&Tf- zOAHqn85n*tyn*C#E*%|x9gDCq69$zc7lsK8T?`!{$WmLPqodQz(BJ{d=iu=_<NqH2 zL;mM6wM}U7{$Kt-{(r!Kcj$ni<A0a`8vj-Q%QVkv7GYuf_3QVy4<8tQeEjt8)}5y> zU;O*c+}z6Yj{$U3BNIEr?<QtuCWe14%_1Be92{Kyd>jmHLK2`2y5b;_<~iW-!4|sA zA`%Qejjc=%wlFw=PO%3?4m5Q6AaMjsTcC6eOC6y45`O=m#1%%^DLqID1boI1$TXOK zknJ%2(6WJ{fhhr=x)}LTQx_s>LsA#6vgO<r#s>@xMW8GNT7tsJzyopj8%XLDfu$|b ziZLu@ljHxC|5q3#7#tZT7?v<z0hdl35EK4EO!xvb0ptTv-bBvXpp%-xxeL@{SOQv~ z0M5?f76Thni-8<{pmjo~pmjnDObnvX^ep5sWy+Mv+d#!H%fD|QzBxEBTxo1%ny~3f z6C)!F<OsDC@b1NWh6&9K@Ii<bJk~6qt{*va=IV{}TR?HWq_L67hT%;UBNK}Y!vThU zkhKDgRUXaUT;NI^G@i=H=mk!$1^*-dn}By&fm-g-{|mYrncjT*-NeDj@&W{2ziIAc z_}|jV$M)yvpFfO@OiJ=fN=hPJpgV@T7+`mYf>IEAIDiTkMwu&&PZ*j&WkUnQfo8~s zzu=iShA*%(89D4hEg?wz&IXiv8W?XtO11_Da9a|3suXBk!GVE+L5qQjL6U))K?bxQ z2_y70G&XF&8G<Ym6jrQIKn_J-<WT(Z0d!g07I41D7MQG69vl@F9L)h}VF>E;C?NHO zqW>2#v#6-BG|zy9Di1tVIlg@10EKKvqaa$yGKh$@G%+xC!A5McxBISuPqJD<#7S1z zRD!}Blw)D7Pe_<wVORm%1-^vQ1H20y8sc6Gj10jH3=A3ykn$IFmWYTj=qdwHqY#S0 z%}ZglG%Ox+u;oev;{?n^%rpVk07Xj6LddZYqWR{{8_f{Vio-qNMBIQgLU^k@7A&~- zM=2sALg~-71<gF%NGYAs8!eikNuA+PHzZm_;L-Bo&HFDue*O6K^UH^Kpy+90V&PzJ zV*2yrPfMc|T0~vD_U4~}hK2_JzjxQ5*`W!vrVvcDfXn3^21bT-1_p*81||m37?3Ul z3xm^tjsM~QYnWPET73T({15%_@h|IN)_;%x;{Q&7;p_iW|8@QcffTs@y8(ue|9$%} z!r0Q{2;wz3{F~p{$oKiqnT<0hPUzD!F#K_0ON$$1CFlS8|2zJD`}d7`!J4ygIuaO7 z7+x|gVCZD%U}$G(WmwPffoTcT5=H|?FGep$4@P%J7e;GF14aeNI2n@$7-})GG0p{v zfOriKOg@b=4<0=J#KI;ZAtAA1#fsNoeo0$cSbX`y!&4BU`ujn<EBI^+lm7w#6aE)5 z_s*F!#~VEOU;aP!f6V{z|Gxj-|9kv*{~z~1gR!B({eRB?g#T{;4gM?tZve#%Lql^9 z=p@ts437Uc{M*pPz}O-4=l`E?Up~El@#YN+8ymxqkIx=Hx%=`H56`=IpML#qZ)9O) zWMF1$W&Y3b=Wi1uCj(?59mD?)<{v+Q|7&Ceohts}!^cLp|16vwoPYi_vIuZ7{`uM7 z!|<<_nUUekmqtd$|Bx9GQ0)WiS0S}+Kt-41|C)ab8XXyVn0%01M(A}HEGNNg4oFUt z0hL}5Q(_oEtx@oWh~P2|oGw7+B`E)abb)G2kS>sNP<aWfap4+4RV`9~m=@&$s9g*y zzfsBqP~rRE3)DJwVQ^qHfR+c)ey<J#BZC<O1A`O;6N4}VGXoz33j<@%1kgb*9RD5u z2mFs=1r6>p>;P?&)o5_|pU}u;)6>()s3OzC7;&e?jo}2t1%?;@_b{?BCNSJ!+_DAS zBKtpsVFF_Sc!%zWMyLNape|h_<Ax0_4*xS4d|H_9@bG~9gG?M84UV8$T9$?e28o8| zNo+hHKKx){VQFUK;Q7(gz{tYV&-6e>26W^|3*!@kmPz1nk78hC$Y)?+0G;6H$iU1X z&%naKDKHB(f7#R1-~c*iQ|rG6cMo)?b9z%lgY*9~@JweSb59RLb7KQTl><XVBXds9 zlqrpjzZe`rOIBe=YJ<9k&?B`OYf73Ku7LI_LZ&L+!R^ft|KBj0Fvc*lFnj<_Ej-mO z@?z*<*u(ILQGii^;XlJGh6fBkK}#sW>pmMC|Ev5@X#}s31|@=KN6^7n%&?VIuAsp= zD2`<4X=Z8oaRs!HqJyD>5gJU)A`K-a{tWnzxn9XIrFjt(hmcsKq=eMF51<CSikgHl zF9!?k6f1dQk>*B*e~rvi8Z0azh5(m@Fb~p!)&E$U8yIiAXk>o!L`SEY_0F9)KUr9s zIQ~OUr+)mVc@d<Yhdq^@f%E|z7(Eyq7&f4$GT43s^nAh~;P5{IscpKUv4J5B=`w6o z`#`$kEepmYF#8N3_JMVRhgv|REHF2M^nlvJ;Bgto9+;jNFg<@j{X3MlAWSDL4?%Ro zeU|~z3APB-ngORrP%biIU|^6&%0*09F1&E~AHk#`z~TrRxnR6<#o>Pf^9ltEup^j` zl$10w-g(l(xI(3c>BWN+t_)xPulXPF{|5MQhyw?l7$q1K{wIKk#x^uMF&z0H@js%G zF(9DDfnf&2mKHXZFJBrOe*AD@XaFT1PyyV)@B(x{z$CUW0s^3!z-Fc&UpQJC82|j~ zXHt0bq>+(_r-f1GL(3!v%uyRq-eEWb9kp>{`0#%V!;&V@;%880eFZvdBgVkUAkDzQ zAi%)HAiw~*$%whFjf)F>oENi<48w#*<}GqcJKDkLJ25_a0$#+y1Z~eUM|}AZ(#{-W z!J~sPxtsk57aM3cilv#E<=;P+c4mP;3_R`7xhGJ$3>ue1iAN?Oh9i&`4#PiCucC*c zfq@Sck>KL_6|6-Hi%HNf4bXljb_Ny(rUi=_9R71Owle+bV{l+-X>4U?;Q%c+W=ct5 zaA24R+8+hEGYpi992giGyrKP7b?Az5rk<W2(6Wh?|5^Vt|CjPNG&D_Hw&SHFcoNJ4 z6uGgD%p$0VLvq3=4@BBQ{nHN&9~ized}MgQ@QUF-xXk#&aDt(OHCEu-7U-B2ILsIY z8XK?<^D~1EbL?Pf2>PG$Km5Pvf7kym|6ReP%73N*ir|ib=6~z|A^%hUH!xgbghXO5 z17mlCz`M6Eo`3lH{>48QJ`Q%KpC8_IFu!48W`qvEvoNzU{d&{hz#}55proRtqypMU zz}U#hDbmpkpAk%hwueCHyBkAW?hgMBurFGB{MM~om)5$07uov!xBRaMf-JXg-CEt` z`M==5^M55U%>6&_-vN*m)2&+!4*!K3`Es(dQvHmSx&Qt9$0DF&1fJnylnQWS=mSBv zGG8P1v*#|fJ1{n|Tl~23<jIrYZf*<{7~V4mF;+0vfFQGjgMGRyLl46gh6SMdhG98l zeTfre14xd^!GXbnv8R!J!h{L)R;}3exQXGE)Bn={Qvbd%E?D6DzvO={xJ#Duzlv$W zj+<TV92^`HCLR&6t3d=ovn6ldxCA65Bt-go*y!jWrQjtB93sNJtpEOec=hSix8IB` zGBOMtVq*MUtpC2h`|#$+j~_ppL36Q;jBSi3PIWLbGW=_2|M20%$4?)={AuF*{_@t9 z4<BB<e(?e{2>YvR38d5m%{$gIFfjNsFfjx`=N)-Ly`$5AbSf$;3|QVTaQGi4DONFS z^N9=BpWHfq<j9dzkN&8*dVmI0K>q!&2t5++!`=qak#OHFEG*u*{ttm33CH|DhQA+l z;M_sTv2b55Z{O0+(Blj`6p7(DLjy;Jm$Zy@Kt<#$@LhBNW&U;iJN(~=@n*OuLkGir zhHVV{84fV)XIR6~$xy)1&g}89y9YFac!H^?hrxldq>(Wq0@UWOg`7^wk?q3q<;$0s z8+aTTW^nI0!{b|1Q<LZu5~16~^o={if#E_s_&BzN{~^$xSMdLs{~6#0Xa%?d3O<gF zt+8*$oH=uPy#E*ckNNNO-w>SE75?k~cLphkr}fq94<7vaa{s~ocR&6M2nhUr^5)u! zOAnsEee>qsrysu=m|0l<fsO<H_wQdbpO2Ra1PF<Uh{#Db3W-Tbh=N2Aho_0O%LoXF zh)76C2=Rc2V?QuReEH7IEg~Yq&m+Lc*2MguQAnkIH6-r%7#JD&&`u*`_~P)tq`~3e z$41cM&kO<%3@;iS7>_i9#uyuzIzVL*GYb#H*Tz=nKW{+$Aiy;XsQd%9=s@KkyzXN< z0V@9*7)@Zk>ab=|eS|m(4Wt95{$hFr(GdjE0aD!no-_fKa<En`NC&8{gtcNF|Lgr{ zgYM4IWAtkTEvaMz*@WRTkS=gN$+QS!&nJjI;FXvVix^<DGu+U#Lf9CX7~mtn42v8< zSNR-iY-?cn<nZ4G+(B$>VEhx&+}6Oz0y-F)k?T)0<UTxDn1I|13KNLUP#+dSY=-y{ zbY(iohaerWb~?hXO(3^|n(K}Xm%y!i9(WzX2dhJLp*z78pesi~YaawHdU|>uGThm@ zqGS1I1uF{+hAEAWpnhB6|5VW2=>O9H1r4m6LIR)GtY~J~;tg&xeq{K<aD(9l!+wSx z3^y3AGF)a@!mPX%G|qFPv5_Igm0>BvIfgR~rx=bh9AOg?;$-<MQqT-;8uK36v|z#F z#Y<Y68X6kr?r3geVf@d)_`el2oWuL#$;&sdUcX>qVrKdG^-FUT%YR0O|BS5+j4h44 z0ust9@=6LUjQ<$^vWPS{v4HNQU}|Li&)CSo1idxa3A!gtm4S&tgMpbrlYxZ+ypo}j zK?c-}F8E)-a`ef8xjhd5bJ)7Cv&hNFFgX0rhSc&nJq>P6GqJEd@dlma$f(Gu!pOn! zgW)~H3q}q`Rz_xqE6l-9pD;Ku{AdKX32+7gxUGOS6xtA>(7+_b$I{4;8WaqmlimOQ zV?hcLaKoaJ4>edA9RAldwxI?MJblAj9*9&Xz%T{c^7!MxaDs6KLjwa3I7={mfQ}`C z`gJgUu(Z|$*EI#CO9r$#1)kP^!O~hE10%z91_lPui4>j;%nZ(;ohyWDRZuyITC3gx z^)CJ!FtsjeaQ+|r-{-&1e{a_5NABIZ1FmU>&}!N@Z!l_EobgI(?d!+bz~IB!!Pvpr z$=JhKz?i@o&KSU0z?jRJ&1l20o5|M)qgM8U)XJbeIq0==3$AR!j$T_=ru#X_$hi0; zYHO@%sE?6_r4NygWQ62o#rZkdetiKgm*V32_KibOK|xZOpM&wouWya$c@18r9|KqE zNC^$8a{ux2)|DquUc7`>?k(t<vKy36U%X&o>_JU}sPzb_tc0Z{y!8lZ<yb2t3rBM+ z<DVa}bOkE?Ks5q-9Wn(pCIG5KPJl+mvDG0U9WZ+vm_C3~F{FP7)&ai40Ni&1wYx#( zEWVmVh{T#?1H?8^PYrAvxNrttX9Taeu-7CTz%|JfP)+gzQj?qjT`s@_u1Pq+H3<uP zO@h^*pq?JsW`sXMy+x2eK_QA+pG*L`7*d~{U^vkT-Dd)-gFtsNL1GkCI)L`H!|E<j zUE9cT1GI@9?Ur&-8@rl;fx(M`iNTbCnZbsEg@N0`V#<_`rq+&mizalq{V)EX|G(n@ zM97FCtB8n**ok@2g_PVH8X8hpR`m4r^e`-FY+~Z!VQgZ)d*Z~yCdNA~jf^a6&^_Xe zAqtI*Z%pCKwi#nRS{S!%2>`FozQJ&V;T6LdhJTE*piU{n3x;2e42=AYG9bwE;K2iv z7-xo+4B$htSa008A>)(p3|i<7s_+^d7*2rKPd;p7zIW!#qbA0u9F3rcr1^gdFw9_> z(FmFiaRc)t{<|?wIsjfb30Z-i3z@5LV$O|-$cC~-BXt@YbU;U>IcPLA7`P@TB={RC zG&FZJFgAhig=cJHU~C56Hvj*BYdZ^Q7vk?mMy6lQte`D@yey6Ee>mh76eI<BT3SGt zD1kN(HiK@Z2VW`A$jI2L%EH3(=g&W87FN*hLCh>HpnWJG9^bih=hYV$mN!pt-?{tr z%O95JZjdfURK1Y+oyNe(uoimGUl0Q`LkQ^HXA$W3e96X@S6{qi=HU^PRL~R=Au}@3 z)@N5kTF8vc_mCFL3=dpD(a0#n@QYzTZ;=PrwF3t(KmBm?!2_yAKaQOk3?-m-wIrnr z#s+X#H~7Ehe@$qEU-7>Rw4VT)1_%ImbV*M-Eewp)v80|x#vgwgx&QzB&-Cxj`%iBk zegA<!J%N^BL$+;jv|>+M<}54{yey#cY<3n65KxpLGO;x?Fm^F8^<YVI;C4zp10zEY z0|P@K0~3P@bmcYZMD7ep9v%rfX$i)E0up+L8hqgKiJq<-Od1**&_aTv?aU8QHwRoo zeEIUfiCNjgLcWPn<xeBypIfkXyQ?2GGK!pr@|YSH?PzfXT^=Ox=FNu>_pY2=edf%A zb0>DfSMt7Kn97o)aN)uQ*y`%FY&DU*H*SEY06`^!iHUp@vyzF4Toa@8k49I97KT#{ zFTijHLq?-3!yJa)VBQOcU5vR7Eua&2K}Ro6hMc@u%RG6-im6aG<MJ!uQDn9&I~Oci zaNq`*!+v4+`~?d(o_hcq3PZ}Mpu?)07#Q2yS^jfyaIiEo{%31u{q^9%gU^2&*;#%( zeDL7;hcBR;??GotKuZ(QaSEU_B2@qU`NP7(^!LwSW)>F4e}Dck{`vDqKvr2rS&Zk; z9}#KLeV)85e~=3zm{xEcfy(k?=o(f~9NB|L*?D-JAtm>JQlhG(v5kp@sA7Ec#u*e_ zAWUA2wK0(zWB(Nx8yXz{D=;*$kRNmXi1ZGNxo*5M*TKMuCFV3iOT3AUy?#VNfD(J4 z+8(+61nF;XVORiaKY>QO!L0<ytPrB6$F55OqU#L<sCopiz-R?^t2wZ>)etSO2@qWz zFkPT_2)G#p?^T;4?FkiQU}jJOt<eXK>0;l{1=$mdecKjz$QEfY1)*J8kUgO|_FfUQ zsp@|R1IG3#&{iq<j!^V{QAnGiAhj+mtYNJxNDO^oxB!Zw2nGkxp%#!40Z?-l)Pe); zd2EA@u7PHBK{vKB&6okcuej`gsd8gaPv4?VN4~1MxVYd7Mu-1ijZ7jFI+0e1b0G$L z@obFq2F(I7GBC0+d|>#+@EY7l=480eFoiWs{@IZuM@WhRMg!0ou`9!J&@>vu6^4rp zS3nEFSwSPjc%z1)!T*2C{{W;)R0TS6tngpszt#WX|0&E35}=tVNVS>;ZH1xkiECu| zKcC@$M}y$IH&38f^l-2<|N8g_GftV_u&}~LnOQ)i%%DitVv$e;RfifZ?4Uhy%)AmT z;K_hLe;CoCoq?sXk%6fbR2wojF*1T$dXSl4(3wi08>~UMFoJGKaRl994cZHL_&;<j zTtFngSgdPoWZH4|T@xc48z?HvA$?D##XImsA;S@8NF*|x;g08cvA$)?sdpUTNsKy% z8;y(#3ZNN`G`S{5Rt`6YKMdbMjc0}r40jlo;Eg@Th6ca?DgXWc8~lf?R>5cw5zcyj z&|PQz-+ul3_vbIepI2``yn68E8%AzyV*C$j-LOvtZDHi%lH+G)1od>ZG&R&T)Z}o* z*q6ozX0{)XUUf45{)Uuk!F3|2rM!=Ufgu}udr}Gm3j-f0*3L5+)YR0NaQu6)-SL0@ z|0rFlnt9vLUc39^-uV+JPMmwjpyBC*J322kg6<le#rR|+^lT1}RcBu7=;+A4pW^!8 z<Nt&IDgU<o`~E+Gqj|=R8S}QDdGw=+<;C&UEAYlOY!BlBh6OD3At52fjtnyx*0R>C z9b55bg5$qG|DBoEu*SMGOkr5Za2wno`pIySp^Y^l*8B&lX<|d8(3>|;eyFIZFub|C zd(Ym}XEt{1_~7urgzKWLs)&flpIaw3^|<~o1*cNb%_ZrKEAZ`pWtuUg#pQoBw5d_a z(K2DqoH;Wlv^F^Y5BQ(MxnRYXJqHdP*f_n#?SB#Y1}_irn#W9*<_QEdKO+lE7XxD} z=;(h?At0}!^5^6I2lwB6`7IzIz{T+4$(u_@&ffzKy1#w@<>$ZujVyn@fBb-vycjLa z+8F*daWb=Uu)TT1#LB|d48BxxIs;=zlQk1B4-XT=-(P=z|Ni~`!w-fxe>gZfI5=4U z|M~v$&6_tbp1uBpEB$daGXMF*z|_Rf#PA<9X3E$CTG-PLZd!DJI*Lf82<V=r1_lNO zALxp7P=A|&1$vAy_vRb-KL7c{$SEMn!r};;iDhJA@dBMj4!-g_|9`^&xc>=|DI`__ z0f941dO^qjL^LqWX>4TMa|hSHc<ePW!wx6VZQKlBnCt%BSq!?)X~n)re_rp{0osG` zg>lCYFVJcQhC2*57=AK*Vff9+#K;O-49I%o#7P04N=JsH3||{SlkklW3@xl`4<0;t z`ofLj4#PEu3t+g1p@mS{;`=}4zvF+o|1$sO{>y_m!8`qT`tR`H>A&Cq6v8D7_$W2- zW@$ARmOm_PY^)q?U%vkM^5V}QG4PS*AcBRNg^P)aPf$@wSz4sIiQx}q-#e&?QDb3| z;bUZBWMt9N)X>mSm%$Ok&5ev49G#3T82h6^<1C=nK(H18WSr#!c(vUcl+|{ywgYGk z2r<rk0n&D`fV3T;>lVQ?8TeWpFCe<Gwm4v8V<3A#YlT2<6i^Y$D02b60wMu)q#S5f z0jO?aVPFDV2rex_{^4X`0PjwLxv~jjTMWdFsO=l<zOsSnxC7CF+gBhrB3hp-Ai93Q zbYZqWVYb0S8|1eJCTM6>K=eV}2O13nwZA|*Fh|fjKsJE_#gX9#I4Hn_exT7s(EL6k z<Uu-Nc7bBHf$0Ln63Do`Bf}cT0O;xyaL9#1=c+*`%7e~%2KBw9UNFn3sHn&=zc{;j z&6+h^&c1l75)l!h{Px9@wa~sX^P0yD7aALRxdm9h|72ld`SFcKfSUn)R~AdxITovG z==onP)mAL$x*Y!JG;?YEyL{xxk<0%yf@+-@dO(o5Hc01+%l|xR8!M0TijEsY1H&WG z&E$+c438KZ8W;jVN5`|Wu`v8^V*Ss+!p6$t1fGFyVb<b!-sJ?*%G~vwLkoNcShIXr z+rryS8Zl)>Wl@U1uFPxeo3!->laxnRUY4uyuSc6FH8--b@Cfj*HnIHv^5M(xCK&Gz zh}R<j?dSjh|NgOXa&fXUv#~M${PgkTw|^YM!a^cq{A|BIeQa)I`TOI?&%aG9pyHUh z3B>#LuZe|;jf0K3MgG&bKmY#yXXO>*<zQoD{r^o*M~da&uNPO&U3tyO#wDZE+{gm9 zsELIY;s_`Y>?Fu)$~g>-409P67+M&Z7_u0c8L~mU0EmhaqBaMS6l=t6BO)teg?XOt z*s<d&k5)`fjFyMumoHxwJ<_0QhAEBISjW9DiC}UFXV}58m0=&l35JW{3IJ3I9AVha zuoW!6hv5XnWmIvz>8FW_OMt71>Dz~IO-$@iR*N~IH1+5Amk)1Vym|HZ%dfwGet-M$ z>cyK^AHID5i#M$`G5z}StBHw?gT0yY$Im7vRt}aHb3)0F<@XN;Hl{yJ|9*V^&GP#f z0}GUmH(4TkiWlZ7L}|m0alZH)P&w7Wq`?pXnmGZLX`n(IT%Ll<oHzzXh63nJo-+e8 zgC_$EgWMh&ku5}}a)t|y!a6S=sIai`i*Wq@%fZ3%=NE?vKMQz~6-(bG4!e5L%@cDN z=CIV;aa`(i_+QY>XYfKMgWLj$`GthUi$-2XCWb$tQ&WF~Has#w?iFfaR%3bG2CDfT z{yQ+YJ!VmJWN2VG(hO=`w=nc5R1hqUT4Ci6w$ezM<IfKcLaC>@6;uY{Dv^}`u(13g zlq{N?<ylx5eth`>8qnty5D@^Kd;sHffceefm;;?-Q3pLS2Xv>a7ij#R&GCQM|15>& z|Nedc$wpihE@)(ulJaq6n8wh>tfZwNLP|x#kO4lGR3OsA!YPuxNOfRX(8zz~%Bl$y zrc9Z?i-m=R`UQM7C~K~RLrhGj14EM{p$KMRY3#xm#h|-S1+0`<zcCPsXNEtG9865F zf84tD_Q!9$wUE}2AD`d8`S9`ccR~>lx)B0jg@iAc|AFLk9bCB_)P@0-4WO0?qP27e zqKgBh3pBI`ZoT|NAKydOBLUU}K58A@c7d*&f$M^;WJGC~f%ol!Mz|dQOMsdYt&ly& zkZn1j1LI)rEKD~->|?qGb0fG#2e%F8FBIFDIKXaX`U27ewF%}maLxg>Z(%J|l=iIz zsD0aj@EoXZ%LHoMg0zF&*u}ueuz-PqArpF&3~0`bh!z^>n#UY678VxjuUCLptmN}_ zbad=FbNcwTH;=xN)^x+W$&jqtpEbZi>CdC3j{m*>GqA*jR@YQJFtl(K#M;^9q(+ch z`QzWPNU#Cm`d{w9+<(*mUjM`X7cg~9YV!VH`9JZ0(0|YWpgx_`f9L;h|F!<B|ChsC z^UqWylz+K68U+~teEY`s@B5E04<5aK|Bi)`6Mq$txk1u|P>yC}V`Jms<zf5BA|NIv zBqSs%#Ky*kw|bumPM?(JAy~>r<nsh@esExT2F`n!IUSTAK>ZZtTm<UcFrK>ryM@9l z0CWolcnqK69cVp}7<3I0NH6*tBCuYs3ye1yKrBaw6$}B4Zy2Ck@uq=vI}y^|bAgcq zs`~�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%0A&7R<ezA4~-nJxGL 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 literal 0 HcmV?d00001 diff --git a/react-ui/dist/index.html b/react-ui/dist/index.html new file mode 100644 index 000000000..caad9f594 --- /dev/null +++ b/react-ui/dist/index.html @@ -0,0 +1,22 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <link rel="icon" href="favicon.ico" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <meta name="theme-color" content="#000000" /> + <meta + name="description" + content="Web site created using create-react-app" + /> + <link rel="apple-touch-icon" href="logo.png" /> + <link rel="manifest" href="manifest.json" /> + <title>goSDN</title> + <script type="module" crossorigin src="/assets/index-CjxHZxKK.js"></script> + <link rel="stylesheet" crossorigin href="/assets/index-CS1-FuBh.css"> + </head> + <body> + <noscript>You need to enable JavaScript to run this app.</noscript> + <div id="root"></div> + </body> +</html> diff --git a/react-ui/dist/logo.png b/react-ui/dist/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ad4ee061e519860d12b8fb8bb044b1df4359f20d GIT binary patch literal 66912 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 literal 0 HcmV?d00001 diff --git a/react-ui/dist/logo.svg b/react-ui/dist/logo.svg new file mode 100644 index 000000000..b7f71bd90 --- /dev/null +++ b/react-ui/dist/logo.svg @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Created with Vectornator (http://vectornator.io/) --> +<svg height="100%" stroke-miterlimit="10" style="fill-rule:nonzero;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;" version="1.1" viewBox="0 0 113.4 212.625" width="100%" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:vectornator="http://vectornator.io" xmlns:xlink="http://www.w3.org/1999/xlink"> +<defs> +<radialGradient cx="170.235" cy="146.046" gradientTransform="matrix(1.00001 -8.65109e-05 8.65119e-05 1 -115.465 -116.986)" gradientUnits="userSpaceOnUse" id="RadialGradient" r="217.591"> +<stop offset="0" stop-color="#c456f7"/> +<stop offset="1" stop-color="#34054a"/> +</radialGradient> +<filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="209.692" id="Filter" width="111.957" x="0.722269" y="2.46642"> +<feDropShadow dx="-4.37114e-08" dy="1" flood-color="#050505" flood-opacity="1" in="SourceGraphic" result="Shadow" stdDeviation="1"/> +</filter> +</defs> +<g id="Layer-1" vectornator:layerName="Layer 1"> +<path d="M35.1413 3.47016L35.1416 6.93891L27.1415 6.93961L27.1464 63.3771C21.6096 65.0011 16.4869 67.0445 12.2717 69.6596C-9.35807 83.0789 12.5182 123.232 12.5264 123.222C12.5341 123.213 12.5498 123.2 12.5576 123.191C13.1518 124.609 14.5144 125.761 16.5579 126.534C18.7737 127.372 21.8204 127.855 26.8082 128.408C25.0644 132.318 24.4639 137.732 25.3409 144.846C26.0816 150.854 28.2327 155.309 32.5924 161.533C32.9615 162.06 34.1761 163.796 34.3427 164.033C35.013 164.984 35.5416 165.705 35.9991 166.408C38.1084 169.647 39.1319 172.149 39.3124 174.814C39.3701 175.665 39.3355 180.513 39.251 187.751C39.2362 189.024 39.0999 200.614 39.0959 200.907C37.7122 201.653 36.7523 203.069 36.7525 204.751C36.7527 207.19 38.7205 209.157 41.1591 209.157C43.5978 209.157 45.5653 207.189 45.5651 204.751C45.5649 203.019 44.5477 201.568 43.096 200.844C43.1023 200.341 43.2363 189.045 43.2511 187.782C43.3388 180.268 43.3816 175.583 43.3124 174.563C43.0775 171.096 41.7912 168.012 39.3427 164.251C38.854 163.5 38.3197 162.708 37.6237 161.72C37.4507 161.474 36.2342 159.766 35.8735 159.251C31.8564 153.517 29.9529 149.563 29.3096 144.346C28.2621 135.848 29.4895 130.5 32.027 127.533C32.6413 126.815 33.2789 126.306 33.9019 125.97C34.2334 125.792 34.4442 125.7 34.4956 125.689C35.5735 125.448 36.2365 124.392 35.9954 123.314C35.7543 122.236 34.6982 121.542 33.6202 121.783C33.2264 121.871 32.6655 122.078 31.9953 122.439C31.0669 122.939 30.1635 123.734 29.3079 124.658C23.0392 124.019 20.0922 123.577 17.9951 122.784C16.1482 122.086 15.9773 121.63 16.7137 120.347C25.511 115.923 43.9287 113.157 55.0885 113.156C63.8081 113.155 79.7952 116.873 90.4333 119.622C93.9977 120.542 94.7294 120.755 96.621 121.277C94.2649 123.034 89.4439 124.738 83.3087 125.247C83.0835 125.266 82.9434 125.443 82.7462 125.529C82.6074 125.348 82.5171 125.106 82.3711 124.935C81.4271 123.831 80.3863 122.999 79.3396 122.435C78.6693 122.074 78.1085 121.867 77.7145 121.779C76.6365 121.538 75.5805 122.233 75.3396 123.31C75.0987 124.388 75.7619 125.444 76.8399 125.685C76.8913 125.697 77.1021 125.788 77.4337 125.967C78.0567 126.302 78.6942 126.81 79.3088 127.529C81.8468 130.496 83.0751 135.844 82.029 144.341C81.3867 149.559 79.4839 153.513 75.4678 159.248C75.1071 159.763 73.8909 161.471 73.7179 161.717C73.0221 162.705 72.488 163.498 71.9994 164.248C69.5516 168.009 68.2658 171.094 68.0315 174.561C67.9625 175.581 68.0061 180.266 68.0951 187.78C68.1102 189.055 68.2793 200.673 68.2838 200.967C66.9421 201.725 66.0027 203.098 66.0028 204.749C66.0031 207.187 67.9709 209.155 70.4095 209.155C72.8481 209.154 74.8156 207.187 74.8154 204.748C74.8153 202.975 73.7598 201.482 72.2526 200.779C72.2461 200.277 72.1101 189.009 72.0952 187.748C72.0095 180.511 71.974 175.662 72.0316 174.811C72.2116 172.146 73.2659 169.644 75.3746 166.404C75.8321 165.701 76.3292 164.981 76.9994 164.029C77.1659 163.793 78.3803 162.056 78.7492 161.529C83.1079 155.305 85.2582 150.849 85.9979 144.841C86.8306 138.077 86.2654 132.917 84.7153 129.06C93.073 128.178 99.944 125.471 101.777 121.527C105.258 116.592 120.674 81.4184 100.46 69.1833C96.4145 66.7344 91.6503 64.7196 86.3971 63.1845L86.3922 6.93448L78.3609 6.93517L78.3606 3.46642L35.1413 3.47016ZM31.1419 10.9393L39.1107 10.9386L39.3309 27.9386C39.3406 28.6841 39.9605 29.2606 40.7061 29.2509C41.4516 29.2413 42.0593 28.6214 42.0497 27.8758L41.7983 10.9383L44.517 10.9381L44.7998 27.9381C44.8108 28.6836 45.3981 29.2615 46.1436 29.2505C46.8892 29.2394 47.4983 28.6209 47.4873 27.8753L47.2358 10.9379L49.9546 10.9376L50.2061 27.9376C50.2169 28.6831 50.8357 29.2608 51.5812 29.25C52.3267 29.2392 52.9044 28.6203 52.8936 27.8749L52.6421 10.9374L55.3609 10.9372L55.6124 27.9371C55.623 28.6827 56.242 29.2601 56.9875 29.2495C57.733 29.2389 58.3418 28.6199 58.3312 27.8744L58.0797 10.9369L60.8297 10.9367L61.05 27.9367C61.0546 28.3094 61.2147 28.6381 61.4563 28.8741C61.6979 29.1102 62.0211 29.2537 62.3938 29.2491C63.1394 29.2398 63.7468 28.6194 63.7375 27.8739L63.5173 10.9365L66.2986 10.9362L66.4875 27.905C66.4957 28.6505 67.1171 29.2568 67.8627 29.2486C68.6082 29.2404 69.1834 28.6503 69.1751 27.9047L68.9861 10.936L71.7674 10.9357L71.9564 27.9357C71.9605 28.3085 72.1132 28.6372 72.3627 28.8732C72.6122 29.1091 72.9587 29.2523 73.3315 29.2481C74.077 29.2398 74.6833 28.6498 74.6751 27.9042L74.4862 10.9355L82.3925 10.9348L82.3969 62.2473C78.1953 61.2363 73.8195 60.4151 69.2716 59.936L69.0841 59.936L69.0846 65.9672L62.3352 73.3116L62.211 82.5928L62.212 94.7803L56.5244 94.7808L50.3056 94.7814L50.2733 82.9376L50.1163 73.3126L43.1468 65.8132L43.1463 60.0945L31.1463 62.3455L31.1419 10.9393ZM46.0197 41.188L45.9904 64.3755L52.9599 71.8749L53.1492 91.9374L59.368 91.9368L59.5225 71.8743L66.2407 64.5612L66.2387 41.3425L46.0197 41.188ZM45.5578 121.282C45.0484 121.232 44.5158 121.369 44.0891 121.719C43.2356 122.421 43.1382 123.71 43.8394 124.563C43.8712 124.602 43.9181 124.67 44.0269 124.813C44.2163 125.062 44.4521 125.354 44.6832 125.688C45.3494 126.65 45.998 127.755 46.621 128.938C48.9603 133.379 50.0248 137.836 49.1222 141.875C48.4351 144.95 46.6061 147.711 43.4353 150.126C43.1568 150.338 42.1644 150.942 40.7792 151.751C40.6905 151.803 37.4839 153.662 37.4356 153.689C36.4728 154.23 36.1131 155.445 36.6545 156.408C37.1959 157.37 38.4106 157.699 39.3734 157.157C39.4251 157.128 42.7199 155.272 42.8108 155.22C44.3781 154.304 45.4057 153.669 45.8731 153.313C49.7829 150.336 52.1324 146.76 53.0285 142.75C54.1746 137.622 52.9238 132.266 50.1834 127.063C49.4811 125.729 48.7181 124.526 47.9643 123.438C47.5056 122.775 47.1244 122.271 46.9017 122C46.5511 121.574 46.0673 121.332 45.5578 121.282ZM65.7769 121.28C65.2675 121.33 64.7837 121.572 64.4331 121.999C64.2105 122.27 63.8293 122.774 63.3708 123.436C62.6172 124.525 61.8858 125.728 61.1835 127.062C58.444 132.265 57.163 137.621 58.3099 142.749C59.2067 146.759 61.5569 150.335 65.4671 153.311C65.9346 153.667 66.9935 154.302 68.5611 155.217C68.6519 155.27 71.9158 157.125 71.9675 157.154C72.9304 157.696 74.145 157.367 74.6862 156.404C75.2275 155.441 74.8676 154.227 73.9048 153.686C73.8565 153.658 70.6495 151.8 70.5608 151.748C69.1754 150.939 68.1829 150.336 67.9044 150.124C64.7332 147.71 62.9036 144.948 62.2161 141.874C61.3128 137.835 62.3766 133.378 64.715 128.936C65.3378 127.753 65.9862 126.649 66.6522 125.686C66.8833 125.352 67.1191 125.06 67.3084 124.811C67.4172 124.668 67.4953 124.6 67.5272 124.561C68.2282 123.708 68.0992 122.418 67.2457 121.717C66.8189 121.367 66.2862 121.23 65.7769 121.28ZM28.3735 160.064C27.8641 160.114 27.3492 160.357 26.9985 160.783C24.0604 164.358 22.5881 168.723 22.5621 174.253C22.5614 174.404 22.6311 200.839 22.627 200.877C21.1966 201.608 20.1896 203.036 20.1898 204.753C20.19 207.191 22.1578 209.159 24.5964 209.159C27.0351 209.158 29.0026 207.191 29.0024 204.752C29.0022 203.061 28.0235 201.65 26.627 200.908C26.6562 200.425 26.6538 197.055 26.6259 187.658C26.6229 186.662 26.5615 174.385 26.5622 174.252C26.584 169.618 27.7563 166.157 30.0925 163.314C30.7939 162.461 30.6644 161.203 29.811 160.502C29.3844 160.151 28.8829 160.015 28.3735 160.064ZM82.9679 160.06C82.4585 160.01 81.9571 160.147 81.5304 160.497C80.6772 161.199 80.5479 162.457 81.2494 163.31C83.5862 166.152 84.7591 169.613 84.7817 174.247C84.7823 174.378 84.7241 199.67 84.7527 200.841C83.3011 201.564 82.2529 203.015 82.253 204.747C82.2533 207.186 84.2524 209.153 86.691 209.153C89.1295 209.153 91.0971 207.185 91.0969 204.747C91.0967 203.049 90.1265 201.611 88.7215 200.872C88.7173 200.833 88.7318 194.753 88.7516 187.684C88.7544 186.688 88.7824 174.398 88.7817 174.247C88.7548 168.717 87.2817 164.353 84.343 160.778C83.9922 160.352 83.4774 160.109 82.9679 160.06Z" fill="url(#RadialGradient)" fill-rule="nonzero" filter="url(#Filter)" stroke="none" vectornator:shadowAngle="1.5708" vectornator:shadowColor="#050505" vectornator:shadowOffset="1" vectornator:shadowOpacity="1" vectornator:shadowRadius="2"/> +</g> +</svg> diff --git a/react-ui/dist/manifest.json b/react-ui/dist/manifest.json new file mode 100644 index 000000000..641e73d58 --- /dev/null +++ b/react-ui/dist/manifest.json @@ -0,0 +1,20 @@ +{ + "short_name": "React App", + "name": "Create React App Sample", + "icons": [ + { + "src": "favicon.ico", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo.png", + "type": "image/png", + "sizes": "400x400" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#000000", + "background_color": "#ffffff" +} diff --git a/react-ui/dist/robots.txt b/react-ui/dist/robots.txt new file mode 100644 index 000000000..e9e57dc4d --- /dev/null +++ b/react-ui/dist/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/react-ui/docker/wasm/Dockerfile b/react-ui/docker/wasm/Dockerfile new file mode 100644 index 000000000..343521154 --- /dev/null +++ b/react-ui/docker/wasm/Dockerfile @@ -0,0 +1,13 @@ +FROM golang:alpine3.20 + +WORKDIR /app + +ARG USER +ARG GROUP + +RUN mkdir /.cache && chmod -R 777 /.cache + +COPY ./docker/wasm/entrypoint.sh / + + +ENTRYPOINT ["/entrypoint.sh"] \ No newline at end of file diff --git a/react-ui/docker/wasm/entrypoint.sh b/react-ui/docker/wasm/entrypoint.sh new file mode 100755 index 000000000..934d25928 --- /dev/null +++ b/react-ui/docker/wasm/entrypoint.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env sh + +#go mod download && go mod verify +#ls -al $(go env GOROOT)/lib/ + +GOOS=js GOARCH=wasm "$@" + +cp "$(go env GOROOT)/misc/wasm/wasm_exec.js" ./build/wasm +cp "./src/shared/utils/yang_parser/go/assets/wasm_exec.d.ts.generated" ./build/wasm/wasm_exec.d.ts diff --git a/react-ui/docs/README.md b/react-ui/docs/README.md index df992548a..ae2f7de6d 100644 --- a/react-ui/docs/README.md +++ b/react-ui/docs/README.md @@ -15,7 +15,5 @@ yarn start ``` The ui is now accessible by `localhost:3000` - - ## Development notes The ui can run independently from goSDN. But to actually get in touch with the ui, log in and start working with it you need a running goSDN instance on your local maschine. \ No newline at end of file diff --git a/react-ui/eslint.config.js b/react-ui/eslint.config.js new file mode 100644 index 000000000..fd9f6d879 --- /dev/null +++ b/react-ui/eslint.config.js @@ -0,0 +1,28 @@ +import js from '@eslint/js' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import globals from 'globals' +import tseslint from 'typescript-eslint' + +export default tseslint.config( + { ignores: ['dist'] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + } +) diff --git a/react-ui/package.json b/react-ui/package.json index 056db6412..439250704 100644 --- a/react-ui/package.json +++ b/react-ui/package.json @@ -2,15 +2,13 @@ "name": "react-ui", "version": "0.1.0", "private": true, + "type": "module", "dependencies": { "@fortawesome/fontawesome-svg-core": "^6.6.0", "@fortawesome/free-regular-svg-icons": "^6.6.0", "@fortawesome/free-solid-svg-icons": "^6.6.0", "@fortawesome/react-fontawesome": "^0.2.2", "@reduxjs/toolkit": "^2.2.4", - "@testing-library/jest-dom": "^6.4.8", - "@testing-library/react": "^16.0.0", - "@testing-library/user-event": "^14.5.2", "bootstrap": "^5.3.3", "i18next": "^23.11.5", "jwt-decode": "^4.0.0", @@ -18,6 +16,7 @@ "react-bootstrap": "^2.10.2", "react-dom": "^18.3.1", "react-i18next": "^15.0.0", + "react-json-view": "^1.21.3", "react-redux": "^9.1.2", "react-router-dom": "^6.23.1", "react-scripts": "5.0.1", @@ -25,17 +24,18 @@ "redux": "^5.0.1", "redux-observable": "^3.0.0-rc.2", "redux-persist": "^6.0.0", - "web-vitals": "^4.2.2", - "yang-js": "^0.24.70" + "web-vitals": "^4.2.2" }, "scripts": { "start": "vite", "build": "tsc && vite build", "test": "react-scripts test", - "build::api_old": "./scripts/build-api.sh", "build::api": "npx @rtk-query/codegen-openapi ./scripts/openapi-config.json", - "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", - "lint::fix": "eslint src --ext .js,.jsx,.ts,.tsx --fix" + "build::wasm": "./scripts/build-wasm.sh", + "build::cpp": "./scripts/build-cpp.sh", + "lint": "eslint src", + "lint::fix": "eslint src --fix", + "clean": "./scripts/clean.sh" }, "eslintConfig": { "extends": [ @@ -59,23 +59,31 @@ "devDependencies": { "@babel/runtime": "^7.21.5", "@rtk-query/codegen-openapi": "^1.2.0", + "@testing-library/jest-dom": "^6.4.8", + "@testing-library/react": "^16.0.0", + "@testing-library/user-event": "^14.5.2", "@types/react": "^18.2.66", "@types/react-dom": "^18.2.22", "@typescript-eslint/eslint-plugin": "^8.0.1", "@typescript-eslint/parser": "^8.0.1", "@vitejs/plugin-react": "^4.2.1", - "eslint": "^9.8.0", + "eslint": "^9.9.0", "eslint-config-airbnb-typescript": "^18.0.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-import": "^2.27.5", "eslint-plugin-jsx-a11y": "^6.7.1", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-react": "^7.32.2", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.6", + "eslint-plugin-react-hooks": "^5.1.0-rc.0", + "eslint-plugin-react-refresh": "^0.4.9", + "globals": "^15.9.0", "prettier": "^3.3.3", "sass": "1.77.6", - "typescript": "^5.2.2", - "vite": "^5.2.0" + "typescript": "^5.5.3", + "typescript-eslint": "^8.0.1", + "vite": "^5.4.9", + "vite-bundle-visualizer": "^1.2.1", + "vite-plugin-top-level-await": "^1.4.4", + "vite-plugin-wasm": "^3.3.0" } } diff --git a/react-ui/scripts/build-api.sh b/react-ui/scripts/build-api.sh deleted file mode 100755 index 710affc43..000000000 --- a/react-ui/scripts/build-api.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env sh - -PROJECT_NAME=react-ui -PROJECT_ROOT=$(git rev-parse --show-toplevel) -API_PATH=/api/openapiv2 - -OUTPUT=${PROJECT_NAME}/src/api - -docker run -i --rm \ - -v ${PROJECT_ROOT}:/local openapitools/openapi-generator-cli generate -i /local${API_PATH}/gosdn_northbound.swagger.json -g typescript-redux-query -o /local/${OUTPUT} \ No newline at end of file diff --git a/react-ui/scripts/build-wasm.sh b/react-ui/scripts/build-wasm.sh new file mode 100755 index 000000000..3b4ab1ab5 --- /dev/null +++ b/react-ui/scripts/build-wasm.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env sh + +GO_FILE=src/shared/utils/yang_parser/go +YANG_MODEL_PATH=$GO_FILE/openconfig + +OUTPUT_PATH=/build/wasm + +if [ ! -d $OUTPUT_PATH ]; then + mkdir -p $(pwd)/$OUTPUT_PATH +fi + +if [ ! -d $YANG_MODEL_PATH ]; then + mkdir $YANG_MODEL_PATH +fi + +rm $YANG_MODEL_PATH/yang_models.go +ln $(pwd)/../models/generated/openconfig/yang.go $YANG_MODEL_PATH/yang_models.go +echo 'Succesfully linked yang model' + +DOCKER_TAG=gosdn_react_ui_wasm +docker build \ + --no-cache \ + -t $DOCKER_TAG \ + -f ./docker/wasm/Dockerfile \ + --build-arg USER=$(id -u) \ + --build-arg GROUP=$(id -g) \ + . +DOCKER_PATH=/app +OUTPUT_FILE=$DOCKER_PATH$OUTPUT_PATH/ + +docker run \ + --rm \ + -v $(pwd):$DOCKER_PATH \ + -u $(id -u):$(id -g) \ + -w $DOCKER_PATH \ + $DOCKER_TAG \ + go build -C $GO_FILE -ldflags="-s -w" -o $OUTPUT_FILE/yang_parser.wasm + diff --git a/react-ui/scripts/clean.sh b/react-ui/scripts/clean.sh new file mode 100755 index 000000000..4220321a8 --- /dev/null +++ b/react-ui/scripts/clean.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env sh + +docker rmi react-ui-cpp-build + +rm -rf ./build \ No newline at end of file diff --git a/react-ui/src/components/devices/routines/device.routine.ts b/react-ui/src/components/devices/routines/device.routine.ts index 4eb1b6b18..10caffa2f 100644 --- a/react-ui/src/components/devices/routines/device.routine.ts +++ b/react-ui/src/components/devices/routines/device.routine.ts @@ -1,45 +1,46 @@ -import { NetworkElementServiceGetAllFlattenedApiArg, api } from "@api/api"; -import { setDevices } from "@component/devices/reducer/device.reducer"; -import { createAsyncThunk } from "@reduxjs/toolkit"; -import { setUser } from "@shared/reducer/user.reducer"; -import { RootState } from "src/stores"; -import { startListening } from "../../../stores/middleware/listener.middleware"; +import { NetworkElementServiceGetAllFlattenedApiArg, api } from '@api/api' +import { setDevices } from '@component/devices/reducer/device.reducer' +import { createAsyncThunk } from '@reduxjs/toolkit' +import { setUser } from '@shared/reducer/user.reducer' +import { RootState } from 'src/stores' +import { startListening } from '../../../stores/middleware/listener.middleware' export const FETCH_DEVICE_ACTION = 'subscription/device/fetchDevices' // continously fetch devices -const FETCH_DEVICES_INTERVAL = 15000; // in ms +const FETCH_DEVICES_INTERVAL = 15000 // in ms startListening({ actionCreator: setUser, effect: async (_, listenerApi) => { - listenerApi.dispatch(fetchDevicesThunk()); + listenerApi.dispatch(fetchDevicesThunk()) }, }) - export const fetchDevicesThunk = createAsyncThunk(FETCH_DEVICE_ACTION, (_, thunkApi) => { - const { user } = thunkApi.getState() as RootState; + const { user } = thunkApi.getState() as RootState const payload: NetworkElementServiceGetAllFlattenedApiArg = { pid: Object.keys(user?.user.roles)[0], timestamp: new Date().getTime().toString(), } - const subscription = thunkApi.dispatch(api.endpoints.networkElementServiceGetAllFlattened.initiate(payload, { - subscriptionOptions: { - pollingInterval: FETCH_DEVICES_INTERVAL, - skipPollingIfUnfocused: true, - } - })); - - return subscription; -}); + const subscription = thunkApi.dispatch( + api.endpoints.networkElementServiceGetAllFlattened.initiate(payload, { + subscriptionOptions: { + pollingInterval: FETCH_DEVICES_INTERVAL, + skipPollingIfUnfocused: true, + }, + }) + ) + return subscription +}) // save fetched devices startListening({ - predicate: (action) => api.endpoints.networkElementServiceGetAllFlattened.matchFulfilled(action), + predicate: (action) => + api.endpoints.networkElementServiceGetAllFlattened.matchFulfilled(action), effect: async (action, listenerApi) => { - listenerApi.dispatch(setDevices(action.payload.mne)); + listenerApi.dispatch(setDevices(action.payload.mne)) }, -}) \ No newline at end of file +}) diff --git a/react-ui/src/components/devices/view/device.view.tabs.tsx b/react-ui/src/components/devices/view/device.view.tabs.tsx index cc096b147..95796741a 100644 --- a/react-ui/src/components/devices/view/device.view.tabs.tsx +++ b/react-ui/src/components/devices/view/device.view.tabs.tsx @@ -1,4 +1,6 @@ import { useAppSelector } from "@hooks"; +import ReactJson from 'react-json-view'; +import { useDeviceTabsViewModel } from "../view_model/device.tabs.viewmodel"; export enum DeviceViewTabValues { METADATA = 'metadata', @@ -7,7 +9,7 @@ export enum DeviceViewTabValues { export const DeviceViewTabs = (activeTab: DeviceViewTabValues) => { const { selectedDevice } = useAppSelector(state => state.device); - + const { yang } = useDeviceTabsViewModel(); const metadataTab = () => { return ( @@ -19,8 +21,12 @@ export const DeviceViewTabs = (activeTab: DeviceViewTabValues) => { const yangModelTab = () => { return ( - <div>asdf</div> - ) + <> + {yang.current && + <ReactJson src={yang.current} name={false} collapsed={false} quotesOnKeys={false} /> + } + </> + ); } const renderLoading = () => { diff --git a/react-ui/src/components/devices/view_model/device.tabs.viewmodel.ts b/react-ui/src/components/devices/view_model/device.tabs.viewmodel.ts new file mode 100644 index 000000000..f9d3124ea --- /dev/null +++ b/react-ui/src/components/devices/view_model/device.tabs.viewmodel.ts @@ -0,0 +1,30 @@ +import { useAppSelector } from '@hooks' +import { useYangParser } from '@utils/yang_parser/yang_parser' +import { useEffect, useRef } from 'react' + +export enum DeviceViewTabValues { + METADATA = 'metadata', + YANGMODEL = 'yang_model', +} + +export const useDeviceTabsViewModel = () => { + const { selectedDevice } = useAppSelector((state) => state.device) + const { parse } = useYangParser() + const yang = useRef<JSON | null>() + + useEffect(() => { + const serializedYang = selectedDevice?.mne?.model + + if (!serializedYang) { + return + } + + parse(serializedYang).then((json) => { + yang.current = json + }) + }, [selectedDevice, parse]) + + return { + yang, + } +} diff --git a/react-ui/src/components/login/viewmodel/login.viewmodel.ts b/react-ui/src/components/login/viewmodel/login.viewmodel.ts index 370834a0c..60c39b55a 100644 --- a/react-ui/src/components/login/viewmodel/login.viewmodel.ts +++ b/react-ui/src/components/login/viewmodel/login.viewmodel.ts @@ -17,7 +17,7 @@ export default function useLoginViewModel() { const handleErrorMessageRendering = (formInvalidError: JSX.Element, backendResponseError: JSX.Element): JSX.Element | null => { // backend response check - if (!!loginError) { + if (loginError) { return backendResponseError; } diff --git a/react-ui/src/index.tsx b/react-ui/src/index.tsx index dddcf5c07..384f33d82 100644 --- a/react-ui/src/index.tsx +++ b/react-ui/src/index.tsx @@ -1,16 +1,15 @@ +import i18next from 'i18next' import React from 'react' import ReactDOM from 'react-dom/client' +import { I18nextProvider } from 'react-i18next' +import { Provider } from 'react-redux' import { RouterProvider } from 'react-router-dom' -import './index.scss' - -import i18next from 'i18next' -import { I18nextProvider } from 'react-i18next' -import { Provider } from 'react-redux' import { ToastContainer } from 'react-toastify' import { PersistGate } from 'redux-persist/integration/react' import './i18n/config' +import './index.scss' import { router } from './routes' import './shared/icons/icons' import { persistor, store } from './stores' @@ -19,7 +18,7 @@ const installToastify = () => { return ( <ToastContainer /> ) -} +}; ReactDOM.createRoot(document.getElementById("root")).render( <React.StrictMode> diff --git a/react-ui/src/shared/reducer/routine.reducer.ts b/react-ui/src/shared/reducer/routine.reducer.ts index b4008f0fd..4cbc4b6ac 100644 --- a/react-ui/src/shared/reducer/routine.reducer.ts +++ b/react-ui/src/shared/reducer/routine.reducer.ts @@ -1,65 +1,63 @@ -import { PayloadAction, createSlice } from '@reduxjs/toolkit'; -import { RoutineManager } from '@utils/routine.manager'; -import { REHYDRATE } from 'redux-persist'; -import { RootState } from '../../stores'; -import { startListening } from '../../stores/middleware/listener.middleware'; -import { setToken } from './user.reducer'; - - +import { PayloadAction, createSlice } from '@reduxjs/toolkit' +import { RoutineManager } from '@utils/routine.manager' +import { REHYDRATE } from 'redux-persist' +import { RootState } from '../../stores' +import { startListening } from '../../stores/middleware/listener.middleware' +import { setToken } from './user.reducer' interface ThunkEntityDTO { - thunk: any, + thunk: any payload: any /** * Only one subscription per category is allowed. New subscription will unsubscribe and overwrite the old one */ - category: CATEGORIES, + category: CATEGORIES } interface ThunkEntity extends ThunkEntityDTO { - id?: number, - locked: boolean, + id?: number + locked: boolean } export interface ReducerState { - thunks: {[key in keyof typeof CATEGORIES]: ThunkEntity | null} + thunks: { [key in keyof typeof CATEGORIES]: ThunkEntity | null } } export enum CATEGORIES { TABLE, - TAB + TAB, } const initialState: ReducerState = { thunks: { TABLE: null, - TAB: null - } + TAB: null, + }, } const RoutineSlice = createSlice({ name: 'routine', initialState, reducers: { - addRoutine: (state, {payload}: PayloadAction<ThunkEntityDTO>) => { - const newThunk: ThunkEntity = {...payload, locked: true}; - state.thunks[CATEGORIES[payload.category]] = newThunk; + addRoutine: (state: any, { payload }: PayloadAction<ThunkEntityDTO>) => { + const newThunk: ThunkEntity = { ...payload, locked: true } + state.thunks[CATEGORIES[payload.category]] = newThunk }, - setThunkId: (state, {payload}: PayloadAction<{id: number, category: CATEGORIES}>) => { - let thunk = state.thunks[CATEGORIES[payload.category]]; + setThunkId: (state, { payload }: PayloadAction<{ id: number; category: CATEGORIES }>) => { + const thunk = state.thunks[CATEGORIES[payload.category]] if (!thunk) { // TODO - throw new Error('Thunk not found'); + throw new Error('Thunk not found') } - - state.thunks[CATEGORIES[payload.category]] = {...thunk, id: payload.id, locked: false}; + + state.thunks[CATEGORIES[payload.category]] = { ...thunk, id: payload.id, locked: false } }, removeAll: (state) => { - state.thunks = initialState.thunks; + state.thunks = initialState.thunks }, }, }) @@ -71,34 +69,34 @@ startListening({ predicate: (action) => setToken.match(action) && action.payload === null, effect: async (_, listenerApi) => { RoutineManager.unsubscribeAll() - listenerApi.dispatch(RoutineSlice.actions.removeAll()); + listenerApi.dispatch(RoutineSlice.actions.removeAll()) }, }) // on rehydrate add all persistet routines startListening({ - predicate: ({type}) => type === REHYDRATE, + predicate: ({ type }) => type === REHYDRATE, effect: async (_, listenerApi) => { - const {routine} = listenerApi.getState() as RootState; - for (const [_,thunk] of Object.entries<ThunkEntity>(routine.thunks)) { + const { routine } = listenerApi.getState() as RootState + for (const [_, thunk] of Object.entries<ThunkEntity>(routine.thunks)) { if (!thunk) { - return; + return } - const dto: ThunkEntityDTO = thunk; - listenerApi.dispatch(addRoutine(dto)); + const dto: ThunkEntityDTO = thunk + listenerApi.dispatch(addRoutine(dto)) } }, }) -// unsubscribe old routine +// unsubscribe old routine startListening({ predicate: (action) => addRoutine.match(action), effect: async (action, listenerApi) => { - const {routine} = listenerApi.getOriginalState() as RootState; - const lastThunk = routine.thunks[CATEGORIES[action.payload.category]]; + const { routine } = listenerApi.getOriginalState() as RootState + const lastThunk = routine.thunks[CATEGORIES[action.payload.category]] if (lastThunk) { - RoutineManager.unsubscribe(lastThunk.id); + RoutineManager.unsubscribe(lastThunk.id) } }, }) @@ -107,12 +105,13 @@ startListening({ startListening({ predicate: (action) => addRoutine.match(action), effect: async (action, listenerApi) => { - const {thunk} = action.payload as ThunkEntity; - const subscription = await listenerApi.dispatch(thunk(action.payload.payload)); - const thunkId = await RoutineManager.add(subscription.payload); - listenerApi.dispatch(RoutineSlice.actions.setThunkId({id: thunkId, category: action.payload.category})); + const { thunk } = action.payload as ThunkEntity + const subscription = await listenerApi.dispatch(thunk(action.payload.payload)) + const thunkId = await RoutineManager.add(subscription.payload) + listenerApi.dispatch( + RoutineSlice.actions.setThunkId({ id: thunkId, category: action.payload.category }) + ) }, }) - export default RoutineSlice.reducer diff --git a/react-ui/src/shared/utils/routine.manager.ts b/react-ui/src/shared/utils/routine.manager.ts index 5cb782db4..653112db7 100644 --- a/react-ui/src/shared/utils/routine.manager.ts +++ b/react-ui/src/shared/utils/routine.manager.ts @@ -18,7 +18,7 @@ const initialState = { * The routines objects itself are stored in the RoutineManager. */ export const RoutineManager = (() => { - let state = initialState; + const state = initialState; const add = (routine: Routine): number => { const id = state.routines.length; diff --git a/react-ui/src/shared/utils/yang_parser/go/.gitignore b/react-ui/src/shared/utils/yang_parser/go/.gitignore new file mode 100644 index 000000000..4be9e9e37 --- /dev/null +++ b/react-ui/src/shared/utils/yang_parser/go/.gitignore @@ -0,0 +1 @@ +/openconfig \ No newline at end of file diff --git a/react-ui/src/shared/utils/yang_parser/go/assets/wasm_exec.d.ts.generated b/react-ui/src/shared/utils/yang_parser/go/assets/wasm_exec.d.ts.generated new file mode 100644 index 000000000..ab9e80009 --- /dev/null +++ b/react-ui/src/shared/utils/yang_parser/go/assets/wasm_exec.d.ts.generated @@ -0,0 +1,18 @@ +declare namespace globalThis { + let fs: FileSystem + let process: Process + let crypto: Crypto + let TextEncoder: { new (encoding: string): TextEncoder } + let TextDecoder: { new (encoding: string): TextDecoder } + let Go: typeof Go +} + +interface Go { + argv: string[] + env: { [envKey: string]: string } + exit: (code: number) => void + importObject: WebAssembly.Imports + exited: boolean + mem: DataView + run(instance: WebAssembly.Instance): Promise<void> +} diff --git a/react-ui/src/shared/utils/yang_parser/go/go.env b/react-ui/src/shared/utils/yang_parser/go/go.env new file mode 100644 index 000000000..6a9eb46ee --- /dev/null +++ b/react-ui/src/shared/utils/yang_parser/go/go.env @@ -0,0 +1 @@ +GOPROXY="direct" \ No newline at end of file diff --git a/react-ui/src/shared/utils/yang_parser/go/go.mod b/react-ui/src/shared/utils/yang_parser/go/go.mod new file mode 100644 index 000000000..cd6a54898 --- /dev/null +++ b/react-ui/src/shared/utils/yang_parser/go/go.mod @@ -0,0 +1,18 @@ +module yang_parser + +go 1.21.0 + +require ( + github.com/golang/glog v1.2.2 // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/kylelemons/godebug v1.1.0 // indirect + github.com/openconfig/gnmi v0.11.0 // indirect + github.com/openconfig/goyang v1.6.0 // indirect + github.com/openconfig/ygot v0.29.20 // indirect + golang.org/x/net v0.28.0 // indirect + golang.org/x/sys v0.24.0 // indirect + golang.org/x/text v0.17.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 // indirect + google.golang.org/grpc v1.67.1 // indirect + google.golang.org/protobuf v1.35.1 // indirect +) diff --git a/react-ui/src/shared/utils/yang_parser/go/go.sum b/react-ui/src/shared/utils/yang_parser/go/go.sum new file mode 100644 index 000000000..fe012ebb7 --- /dev/null +++ b/react-ui/src/shared/utils/yang_parser/go/go.sum @@ -0,0 +1,171 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY= +github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= +github.com/openconfig/gnmi v0.10.0/go.mod h1:Y9os75GmSkhHw2wX8sMsxfI7qRGAEcDh8NTa5a8vj6E= +github.com/openconfig/gnmi v0.11.0 h1:H7pLIb/o3xObu3+x0Fv9DCK7TH3FUh7mNwbYe+34hFw= +github.com/openconfig/gnmi v0.11.0/go.mod h1:9oJSQPPCpNvfMRj8e4ZoLVAw4wL8HyxXbiDlyuexCGU= +github.com/openconfig/goyang v0.0.0-20200115183954-d0a48929f0ea/go.mod h1:dhXaV0JgHJzdrHi2l+w0fZrwArtXL7jEFoiqLEdmkvU= +github.com/openconfig/goyang v1.6.0 h1:JjnPbLY1/y28VyTO67LsEV0TaLWNiZyDcsppGq4F4is= +github.com/openconfig/goyang v1.6.0/go.mod h1:sdNZi/wdTZyLNBNfgLzmmbi7kISm7FskMDKKzMY+x1M= +github.com/openconfig/grpctunnel v0.0.0-20220819142823-6f5422b8ca70/go.mod h1:OmTWe7RyZj2CIzIgy4ovEBzCLBJzRvWSZmn7u02U9gU= +github.com/openconfig/ygot v0.6.0/go.mod h1:o30svNf7O0xK+R35tlx95odkDmZWS9JyWWQSmIhqwAs= +github.com/openconfig/ygot v0.29.20 h1:XHLpwCN91QuKc2LAvnEqtCmH8OuxgLlErDhrdl2mJw8= +github.com/openconfig/ygot v0.29.20/go.mod h1:K8HbrPm/v8/emtGQ9+RsJXx6UPKC5JzS/FqK7pN+tMo= +github.com/pborman/getopt v1.1.0/go.mod h1:FxXoW1Re00sQG/+KIkuSqRL/LwQgSkv7uyac+STFsbk= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/protocolbuffers/txtpbfmt v0.0.0-20220608084003-fc78c767cd6a/go.mod h1:KjY0wibdYKc4DYkerHSbguaf3JeIPGhNJBp2BNiFH78= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= +golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20210811021853-ddbe55d93216/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 h1:zciRKQ4kBpFgpfC5QQCVtnnNAcLIqweL7plyZRQHVpI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= +google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/react-ui/src/shared/utils/yang_parser/go/yang_parser.go b/react-ui/src/shared/utils/yang_parser/go/yang_parser.go new file mode 100644 index 000000000..4314d0eb1 --- /dev/null +++ b/react-ui/src/shared/utils/yang_parser/go/yang_parser.go @@ -0,0 +1,39 @@ +package main + +import ( + "fmt" + "syscall/js" + "yang_parser/openconfig" + + "github.com/openconfig/ygot/ygot" +) + +func ParseYANGFile(this js.Value, p []js.Value) interface{} { + device := &openconfig.Device{} + + yangContent := p[0].String() + + if err := openconfig.Unmarshal([]byte(yangContent), device); err != nil { + panic(fmt.Sprintf("Cannot unmarshal JSON: %v", err)) + } + + json, err := ygot.EmitJSON(device, &ygot.EmitJSONConfig{ + Format: ygot.RFC7951, + Indent: " ", + RFC7951Config: &ygot.RFC7951JSONConfig{ + AppendModuleName: true, + }, + }) + + if err != nil { + panic(fmt.Sprintf("Cannot emit json: %v ", err)) + } + + return js.ValueOf(string(json)) +} + +func main() { + js.Global().Set("parseYANG", js.FuncOf(ParseYANGFile)) + + select {} +} diff --git a/react-ui/src/shared/utils/yang_parser/yang_parser.ts b/react-ui/src/shared/utils/yang_parser/yang_parser.ts new file mode 100644 index 000000000..d6ca3201c --- /dev/null +++ b/react-ui/src/shared/utils/yang_parser/yang_parser.ts @@ -0,0 +1,38 @@ +import '@build/wasm/wasm_exec.js' + +import { useEffect, useRef } from 'react' + +export const useYangParser = () => { + const wasm = useRef<Promise<ArrayBuffer>>() + const go = useRef(new Go()) + + useEffect(() => { + wasm.current = fetch('/build/wasm/yang_parser.wasm') + .then((response) => response.arrayBuffer()) + .then((bytes) => bytes) + }, []) + + /** + * Parses yang model that the backend responses to a JSON object + * + * @param uniformYang + * @returns + */ + const parse = async (modifiedYang: string): Promise<JSON> => { + try { + const bytes = await wasm.current + const { instance } = await WebAssembly.instantiate(bytes!, go.current.importObject) + go.current.run(instance) + + const jsonString = parseYANG(modifiedYang) + return JSON.parse(jsonString) + } catch (err) { + console.log('Error' + err) + return Promise.reject(err) + } + } + + return { + parse, + } +} diff --git a/react-ui/src/stores/persist.store.ts b/react-ui/src/stores/persist.store.ts index bda77de7e..c97edc465 100644 --- a/react-ui/src/stores/persist.store.ts +++ b/react-ui/src/stores/persist.store.ts @@ -1,27 +1,25 @@ -import deviceReducer from "@component/devices/reducer/device.reducer"; -import routineReducer from "@shared/reducer/routine.reducer"; -import userReducer from "@shared/reducer/user.reducer"; -import { combineReducers } from "redux"; -import { persistReducer } from "redux-persist"; -import storage from "redux-persist/es/storage"; -import { emptySplitApi } from "./api.store"; - +import deviceReducer from '@component/devices/reducer/device.reducer' +import routineReducer from '@shared/reducer/routine.reducer' +import userReducer from '@shared/reducer/user.reducer' +import { combineReducers } from 'redux' +import { persistReducer } from 'redux-persist' +import storage from 'redux-persist/es/storage' +import { emptySplitApi } from './api.store' /** local storage config */ const rootPersistConfig = { key: 'root', storage, - blacklist: [emptySplitApi.reducerPath, ], + blacklist: [emptySplitApi.reducerPath], } - const rootReducer = combineReducers({ - user: userReducer, - device: deviceReducer, - routine: routineReducer, + user: userReducer, + device: deviceReducer, + routine: routineReducer, [emptySplitApi.reducerPath]: emptySplitApi.reducer, }) const persistedReducer = persistReducer(rootPersistConfig, rootReducer) -export default persistedReducer; \ No newline at end of file +export default persistedReducer diff --git a/react-ui/tsconfig.json b/react-ui/tsconfig.json index 6cfd61712..10cd20012 100644 --- a/react-ui/tsconfig.json +++ b/react-ui/tsconfig.json @@ -9,13 +9,13 @@ /* Bundler mode */ "moduleResolution": "bundler", "allowImportingTsExtensions": true, - "resolveJsonModule": true, "isolatedModules": true, + "moduleDetection": "force", "noEmit": true, "jsx": "react-jsx", /* Linting */ - "strict": false, + "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, "noFallthroughCasesInSwitch": true, @@ -33,7 +33,8 @@ "@helper/*": ["src/shared/helper/*"], "@utils/*": ["src/shared/utils/*"], "@shared/*": ["src/shared/*"], - "@component/*": ["src/components/*"] + "@component/*": ["src/components/*"], + "@build/*": ["build/*"] } }, "include": [ @@ -41,7 +42,8 @@ "src/**/*.ts", "src/**/*.tsx", "src/stores/api.store.ts", - "scripts/test.ts" + "scripts/test.ts", + "src/shared/utils/yang_parser/go/assets/wasm_exec.d.ts.generated" ] //"references": [{ "path": "./tsconfig.node.json" }] } diff --git a/react-ui/vite.config.mjs b/react-ui/vite.config.mjs index bdff7502a..3bf58a286 100644 --- a/react-ui/vite.config.mjs +++ b/react-ui/vite.config.mjs @@ -1,8 +1,13 @@ import react from '@vitejs/plugin-react' import { defineConfig } from 'vite' +import topLevelAwait from 'vite-plugin-top-level-await' +import wasm from 'vite-plugin-wasm' export default defineConfig({ - plugins: [react()], + plugins: [react(), wasm(), topLevelAwait()], + build: { + sourcemap: true, + }, server: { port: 3000, proxy: { @@ -16,11 +21,7 @@ export default defineConfig({ console.log('proxy error', err) }) proxy.on('proxyReq', (proxyReq, req, _res) => { - console.log( - 'Sending Request to the Target:', - req.method, - req.url - ) + console.log('Sending Request to the Target:', req.method, req.url) }) proxy.on('proxyRes', (proxyRes, req, _res) => { console.log( @@ -47,10 +48,7 @@ export default defineConfig({ '@utils': '/src/shared/utils', '@shared': '/src/shared', '@component': '/src/components', + '@build': '/build/', }, }, - - build: { - sourcemap: true, // Source Maps für den Build aktivieren - }, }) diff --git a/react-ui/yang_model b/react-ui/yang_model deleted file mode 160000 index 3a3018590..000000000 --- a/react-ui/yang_model +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3a3018590be5f7c11a3ed8c3530b128c53633d7b diff --git a/react-ui/yarn.lock b/react-ui/yarn.lock index df07efe2b..a52172744 100644 --- a/react-ui/yarn.lock +++ b/react-ui/yarn.lock @@ -1161,6 +1161,13 @@ dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.20.13": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" + integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.24.7", "@babel/template@^7.25.0", "@babel/template@^7.3.3": version "7.25.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a" @@ -1435,15 +1442,20 @@ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae" integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== -"@eslint/config-array@^0.17.1": - version "0.17.1" - resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.17.1.tgz#d9b8b8b6b946f47388f32bedfd3adf29ca8f8910" - integrity sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA== +"@eslint/config-array@^0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.18.0.tgz#37d8fe656e0d5e3dbaea7758ea56540867fd074d" + integrity sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw== dependencies: "@eslint/object-schema" "^2.1.4" debug "^4.3.1" minimatch "^3.1.2" +"@eslint/core@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.7.0.tgz#a1bb4b6a4e742a5ff1894b7ee76fbf884ec72bd3" + integrity sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw== + "@eslint/eslintrc@^2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" @@ -1479,16 +1491,23 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== -"@eslint/js@9.8.0": - version "9.8.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.8.0.tgz#ae9bc14bb839713c5056f5018bcefa955556d3a4" - integrity sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA== +"@eslint/js@9.13.0": + version "9.13.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.13.0.tgz#c5f89bcd57eb54d5d4fa8b77693e9c28dc97e547" + integrity sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA== "@eslint/object-schema@^2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.4.tgz#9e69f8bb4031e11df79e03db09f9dbbae1740843" integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ== +"@eslint/plugin-kit@^0.2.0": + version "0.2.2" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.2.tgz#5eff371953bc13e3f4d88150e2c53959f64f74f6" + integrity sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw== + dependencies: + levn "^0.4.1" + "@exodus/schemasafe@^1.0.0-rc.2": version "1.3.0" resolved "https://registry.yarnpkg.com/@exodus/schemasafe/-/schemasafe-1.3.0.tgz#731656abe21e8e769a7f70a4d833e6312fe59b7f" @@ -1527,6 +1546,19 @@ dependencies: prop-types "^15.8.1" +"@humanfs/core@^0.19.1": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" + integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== + +"@humanfs/node@^0.16.5": + version "0.16.6" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" + integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== + dependencies: + "@humanfs/core" "^0.19.1" + "@humanwhocodes/retry" "^0.3.0" + "@humanwhocodes/config-array@^0.11.14": version "0.11.14" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" @@ -1551,6 +1583,11 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.0.tgz#6d86b8cb322660f03d3f0aa94b99bdd8e172d570" integrity sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew== +"@humanwhocodes/retry@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" + integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -1967,6 +2004,11 @@ "@rollup/pluginutils" "^3.1.0" magic-string "^0.25.7" +"@rollup/plugin-virtual@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-virtual/-/plugin-virtual-3.0.2.tgz#17e17eeecb4c9fa1c0a6e72c9e5f66382fddbb82" + integrity sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A== + "@rollup/pluginutils@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" @@ -1976,85 +2018,85 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@rollup/rollup-android-arm-eabi@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz#c3f5660f67030c493a981ac1d34ee9dfe1d8ec0f" - integrity sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA== - -"@rollup/rollup-android-arm64@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.20.0.tgz#64161f0b67050023a3859e723570af54a82cff5c" - integrity sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ== - -"@rollup/rollup-darwin-arm64@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz#25f3d57b1da433097cfebc89341b355901615763" - integrity sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q== - -"@rollup/rollup-darwin-x64@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.20.0.tgz#d8ddaffb636cc2f59222c50316e27771e48966df" - integrity sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ== - -"@rollup/rollup-linux-arm-gnueabihf@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.20.0.tgz#41bd4fcffa20fb84f3dbac6c5071638f46151885" - integrity sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA== - -"@rollup/rollup-linux-arm-musleabihf@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.20.0.tgz#842077c5113a747eb5686f19f2f18c33ecc0acc8" - integrity sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw== - -"@rollup/rollup-linux-arm64-gnu@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz#65d1d5b6778848f55b7823958044bf3e8737e5b7" - integrity sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ== - -"@rollup/rollup-linux-arm64-musl@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.20.0.tgz#50eef7d6e24d0fe3332200bb666cad2be8afcf86" - integrity sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q== - -"@rollup/rollup-linux-powerpc64le-gnu@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.20.0.tgz#8837e858f53c84607f05ad0602943e96d104c6b4" - integrity sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw== - -"@rollup/rollup-linux-riscv64-gnu@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.20.0.tgz#c894ade2300caa447757ddf45787cca246e816a4" - integrity sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA== - -"@rollup/rollup-linux-s390x-gnu@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.20.0.tgz#5841e5390d4c82dd5cdf7b2c95a830e3c2f47dd3" - integrity sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg== - -"@rollup/rollup-linux-x64-gnu@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz#cc1f26398bf777807a99226dc13f47eb0f6c720d" - integrity sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew== - -"@rollup/rollup-linux-x64-musl@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz#1507465d9056e0502a590d4c1a00b4d7b1fda370" - integrity sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg== - -"@rollup/rollup-win32-arm64-msvc@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.20.0.tgz#86a221f01a2c248104dd0defb4da119f2a73642e" - integrity sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA== - -"@rollup/rollup-win32-ia32-msvc@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.20.0.tgz#8bc8f77e02760aa664694b4286d6fbea7f1331c5" - integrity sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A== - -"@rollup/rollup-win32-x64-msvc@4.20.0": - version "4.20.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.20.0.tgz#601fffee719a1e8447f908aca97864eec23b2784" - integrity sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg== +"@rollup/rollup-android-arm-eabi@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz#1661ff5ea9beb362795304cb916049aba7ac9c54" + integrity sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA== + +"@rollup/rollup-android-arm64@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz#2ffaa91f1b55a0082b8a722525741aadcbd3971e" + integrity sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA== + +"@rollup/rollup-darwin-arm64@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz#627007221b24b8cc3063703eee0b9177edf49c1f" + integrity sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA== + +"@rollup/rollup-darwin-x64@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz#0605506142b9e796c370d59c5984ae95b9758724" + integrity sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ== + +"@rollup/rollup-linux-arm-gnueabihf@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz#62dfd196d4b10c0c2db833897164d2d319ee0cbb" + integrity sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA== + +"@rollup/rollup-linux-arm-musleabihf@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz#53ce72aeb982f1f34b58b380baafaf6a240fddb3" + integrity sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw== + +"@rollup/rollup-linux-arm64-gnu@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz#1632990f62a75c74f43e4b14ab3597d7ed416496" + integrity sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA== + +"@rollup/rollup-linux-arm64-musl@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz#8c03a996efb41e257b414b2e0560b7a21f2d9065" + integrity sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw== + +"@rollup/rollup-linux-powerpc64le-gnu@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz#5b98729628d5bcc8f7f37b58b04d6845f85c7b5d" + integrity sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw== + +"@rollup/rollup-linux-riscv64-gnu@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz#48e42e41f4cabf3573cfefcb448599c512e22983" + integrity sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg== + +"@rollup/rollup-linux-s390x-gnu@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz#e0b4f9a966872cb7d3e21b9e412a4b7efd7f0b58" + integrity sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g== + +"@rollup/rollup-linux-x64-gnu@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz#78144741993100f47bd3da72fce215e077ae036b" + integrity sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A== + +"@rollup/rollup-linux-x64-musl@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz#d9fe32971883cd1bd858336bd33a1c3ca6146127" + integrity sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ== + +"@rollup/rollup-win32-arm64-msvc@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz#71fa3ea369316db703a909c790743972e98afae5" + integrity sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ== + +"@rollup/rollup-win32-ia32-msvc@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz#653f5989a60658e17d7576a3996deb3902e342e2" + integrity sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ== + +"@rollup/rollup-win32-x64-msvc@4.24.0": + version "4.24.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz#0574d7e87b44ee8511d08cc7f914bcb802b70818" + integrity sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw== "@rtk-query/codegen-openapi@^1.2.0": version "1.2.0" @@ -2206,6 +2248,80 @@ "@svgr/plugin-svgo" "^5.5.0" loader-utils "^2.0.0" +"@swc/core-darwin-arm64@1.7.36": + version "1.7.36" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.36.tgz#f50ecd4db72a8759c67c1eb93f942c6331e6cfe9" + integrity sha512-8vDczXzCgv3ceTPhEivlpGprN44YlrCK1nbfU9g2TrhV/Aiqi09W/eM5zLesdoM1Z3mJl492gc/8nlTkpDdusw== + +"@swc/core-darwin-x64@1.7.36": + version "1.7.36" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.7.36.tgz#14c7e5c0a9bee4ffcf05a5a62caa179ee01a68c2" + integrity sha512-Pa2Gao7+Wf5m3SsK4abKRtd48AtoUnJInvaC3d077swBfgZjbjUbQvcpdc2dOeQtWwo49rFqUZJonMsL0jnPgQ== + +"@swc/core-linux-arm-gnueabihf@1.7.36": + version "1.7.36" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.36.tgz#19d9a66606ae9fc09f3e087a1ef49d75ffd769e7" + integrity sha512-3YsMWd7V+WZEjbfBnLkkz/olcRBa8nyoK0iIOnNARJBMcYaJxjkJSMZpmSojCnIVwvjA1N83CPAbUL+W+fCnHg== + +"@swc/core-linux-arm64-gnu@1.7.36": + version "1.7.36" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.36.tgz#9834e507e75d1689913fc56d401d5921eb75be67" + integrity sha512-lqM3aBB7kJazJYOwHeA5OGNLqXoQPZ/76b3dV+XcjN1GhD0CcXz6mW5PRYVin6OSN1eKrKBKJjtDA1mqADDEvw== + +"@swc/core-linux-arm64-musl@1.7.36": + version "1.7.36" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.36.tgz#548abbec7581f06ab9f38bd6c289bd7fc9983452" + integrity sha512-bqei2YDzvUfG0pth5W2xJaj0eG4XWYk0d/NJ75vBX6bkIzK6dC8iuKQ41jOfUWonnrAs7rTDDJW0sTn/evvRdw== + +"@swc/core-linux-x64-gnu@1.7.36": + version "1.7.36" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.36.tgz#d2a4a8edcdb3b7646dade9783d6502d01ff9364c" + integrity sha512-03maXTUyaBjeCxlDltmdzHje1ryQt1C4OWmmNgSSRXjLb+GNnAenwOJMSrcvHP/aNClD2pwsFCnYKDGy+sYE6w== + +"@swc/core-linux-x64-musl@1.7.36": + version "1.7.36" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.36.tgz#ea4197cbcc23b1202cdbec82a05bee9b29aa341b" + integrity sha512-XXysqLkvjtQnXm1zHqLhy00UYPv/gk5OtwR732X+piNisnEbcJBqI8Qp9O7YvLWllRcoP8IMBGDWLGdGLSpViA== + +"@swc/core-win32-arm64-msvc@1.7.36": + version "1.7.36" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.36.tgz#1b100b809457d0ed5710956d7efb4fd0427dc2c8" + integrity sha512-k7+dmb13a/zPw+E4XYfPmLZFWJgcOcBRKIjYl9nQErtYsgsg3Ji6TBbsvJVETy23lNHyewZ17V5Vq6NzaG0hzg== + +"@swc/core-win32-ia32-msvc@1.7.36": + version "1.7.36" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.36.tgz#577e7f25a7a8496c16e9b14486cd849765bccba5" + integrity sha512-ridD3ay6YM2PEYHZXXFN+edYEv0FOynaqOBP+NSnGNHA35azItIjoIe+KNi4WltGtAjpKCHSpjGCNfna12wdYQ== + +"@swc/core-win32-x64-msvc@1.7.36": + version "1.7.36" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.36.tgz#f85ace043925a746ff40af2da1ff9ff9760525bb" + integrity sha512-j1z2Z1Ln9d0E3dHsPkC1K9XDh0ojhRPwV+GfRTu4D61PE+aYhYLvbJC6xPvL4/204QrStRS7eDu3m+BcDp3rgQ== + +"@swc/core@^1.7.0": + version "1.7.36" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.7.36.tgz#369b67cfe7be039dac2ab2180b44da8f2f8c2af0" + integrity sha512-bu7ymMX+LCJOSSrKank25Jaq66ymLVA9fOUuy4ck3/6rbXdLw+pIJPnIDKQ9uNcxww8KDxOuJk9Ui9pqR+aGFw== + dependencies: + "@swc/counter" "^0.1.3" + "@swc/types" "^0.1.13" + optionalDependencies: + "@swc/core-darwin-arm64" "1.7.36" + "@swc/core-darwin-x64" "1.7.36" + "@swc/core-linux-arm-gnueabihf" "1.7.36" + "@swc/core-linux-arm64-gnu" "1.7.36" + "@swc/core-linux-arm64-musl" "1.7.36" + "@swc/core-linux-x64-gnu" "1.7.36" + "@swc/core-linux-x64-musl" "1.7.36" + "@swc/core-win32-arm64-msvc" "1.7.36" + "@swc/core-win32-ia32-msvc" "1.7.36" + "@swc/core-win32-x64-msvc" "1.7.36" + +"@swc/counter@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" + integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== + "@swc/helpers@^0.5.0": version "0.5.12" resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.12.tgz#37aaca95284019eb5d2207101249435659709f4b" @@ -2213,6 +2329,13 @@ dependencies: tslib "^2.4.0" +"@swc/types@^0.1.13": + version "0.1.13" + resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.13.tgz#441734f8bfa6e9e738f1c68e98be6da282ecc7db" + integrity sha512-JL7eeCk6zWCbiYQg2xQSdLXQJl8Qoc9rXmG2cEKvHe3CKwMHwHGpfOb8frzNLmbycOo6I51qxnLnn9ESf4I20Q== + dependencies: + "@swc/counter" "^0.1.3" + "@testing-library/jest-dom@^6.4.8": version "6.4.8" resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.4.8.tgz#9c435742b20c6183d4e7034f2b329d562c079daa" @@ -2336,7 +2459,7 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.5": +"@types/estree@*", "@types/estree@^1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== @@ -2346,6 +2469,11 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== +"@types/estree@1.0.6", "@types/estree@^1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== + "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": version "4.19.5" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz#218064e321126fcf9048d1ca25dd2465da55d9c6" @@ -2409,7 +2537,7 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -2584,6 +2712,21 @@ dependencies: "@types/yargs-parser" "*" +"@typescript-eslint/eslint-plugin@8.12.0": + version "8.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.12.0.tgz#2089acb441fb5e0171e1b4cfb4291d22fb3779c0" + integrity sha512-uRqchEKT0/OwDePTwCjSFO2aH4zccdeQ7DgAzM/8fuXc+PAXvpdMRbuo+oCmK1lSfXssk2UUBNiWihobKxQp/g== + dependencies: + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "8.12.0" + "@typescript-eslint/type-utils" "8.12.0" + "@typescript-eslint/utils" "8.12.0" + "@typescript-eslint/visitor-keys" "8.12.0" + graphemer "^1.4.0" + ignore "^5.3.1" + natural-compare "^1.4.0" + ts-api-utils "^1.3.0" + "@typescript-eslint/eslint-plugin@^5.5.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" @@ -2622,6 +2765,17 @@ dependencies: "@typescript-eslint/utils" "5.62.0" +"@typescript-eslint/parser@8.12.0": + version "8.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.12.0.tgz#e9a9c047310213169dd500b08622c5641f1997f6" + integrity sha512-7U20duDQWAOhCk2VtyY41Vor/CJjiEW063Zel9aoRXq89FQ/jr+0e0m3kxh9Sk5SFW9B1AblVIBtXd+1xQ1NWQ== + dependencies: + "@typescript-eslint/scope-manager" "8.12.0" + "@typescript-eslint/types" "8.12.0" + "@typescript-eslint/typescript-estree" "8.12.0" + "@typescript-eslint/visitor-keys" "8.12.0" + debug "^4.3.4" + "@typescript-eslint/parser@^5.5.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" @@ -2659,6 +2813,14 @@ "@typescript-eslint/types" "8.0.1" "@typescript-eslint/visitor-keys" "8.0.1" +"@typescript-eslint/scope-manager@8.12.0": + version "8.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.12.0.tgz#de23a4a652773efdd558c7e5ff7b734736f14318" + integrity sha512-jbuCXK18iEshRFUtlCIMAmOKA6OAsKjo41UcXPqx7ZWh2b4cmg6pV/pNcZSB7oW9mtgF95yizr7Jnwt3IUD2pA== + dependencies: + "@typescript-eslint/types" "8.12.0" + "@typescript-eslint/visitor-keys" "8.12.0" + "@typescript-eslint/type-utils@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" @@ -2679,6 +2841,16 @@ debug "^4.3.4" ts-api-utils "^1.3.0" +"@typescript-eslint/type-utils@8.12.0": + version "8.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.12.0.tgz#d1e2d2ed0b2cb5bca35312b085379fcfb5c812be" + integrity sha512-cHioAZO/nLgyzTmwv7gWIjEKMHSbioKEZqLCaItTn7RvJP1QipuGVwEjPJa6Kv9u9UiUMVAESY9JH186TjKITw== + dependencies: + "@typescript-eslint/typescript-estree" "8.12.0" + "@typescript-eslint/utils" "8.12.0" + debug "^4.3.4" + ts-api-utils "^1.3.0" + "@typescript-eslint/types@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" @@ -2689,6 +2861,11 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.0.1.tgz#333e2f4c158952dbc8181a4ddcc6e49898a28918" integrity sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw== +"@typescript-eslint/types@8.12.0": + version "8.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.12.0.tgz#f35d846af8e2248a7e2136fe714a42be3b3154ef" + integrity sha512-Cc+iNtqBJ492f8KLEmKXe1l6683P0MlFO8Bk1NMphnzVIGH4/Wn9kvandFH+gYR1DDUjH/hgeWRGdO5Tj8gjYg== + "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" @@ -2716,6 +2893,20 @@ semver "^7.6.0" ts-api-utils "^1.3.0" +"@typescript-eslint/typescript-estree@8.12.0": + version "8.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.12.0.tgz#6e087bd46f7682c07e971fb1d9dfa5bdc6f45f64" + integrity sha512-a4koVV7HHVOQWcGb6ZcAlunJnAdwo/CITRbleQBSjq5+2WLoAJQCAAiecvrAdSM+n/man6Ghig5YgdGVIC6xqw== + dependencies: + "@typescript-eslint/types" "8.12.0" + "@typescript-eslint/visitor-keys" "8.12.0" + debug "^4.3.4" + fast-glob "^3.3.2" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^1.3.0" + "@typescript-eslint/utils@5.62.0", "@typescript-eslint/utils@^5.58.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" @@ -2740,6 +2931,16 @@ "@typescript-eslint/types" "8.0.1" "@typescript-eslint/typescript-estree" "8.0.1" +"@typescript-eslint/utils@8.12.0": + version "8.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.12.0.tgz#2967a5915ad4c500486341c79c0cfbc4f276bf47" + integrity sha512-5i1tqLwlf0fpX1j05paNKyIzla/a4Y3Xhh6AFzi0do/LDJLvohtZYaisaTB9kq0D4uBocAxWDTGzNMOCCwIgXA== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "8.12.0" + "@typescript-eslint/types" "8.12.0" + "@typescript-eslint/typescript-estree" "8.12.0" + "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" @@ -2756,6 +2957,14 @@ "@typescript-eslint/types" "8.0.1" eslint-visitor-keys "^3.4.3" +"@typescript-eslint/visitor-keys@8.12.0": + version "8.12.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.12.0.tgz#a9fcd973a546a7c78593d0501debdc9ebab8b340" + integrity sha512-2rXkr+AtZZLuNY18aUjv5wtB9oUiwY1WnNi7VTsdCdy1m958ULeUKoAegldQTjqpbpNJ5cQ4egR8/bh5tbrKKQ== + dependencies: + "@typescript-eslint/types" "8.12.0" + eslint-visitor-keys "^3.4.3" + "@ungap/structured-clone@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" @@ -2929,41 +3138,22 @@ acorn-import-attributes@^1.9.5: resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== -acorn-jsx-walk@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/acorn-jsx-walk/-/acorn-jsx-walk-2.0.0.tgz#a5ed648264e68282d7c2aead80216bfdf232573a" - integrity sha512-uuo6iJj4D4ygkdzd6jPtcxs8vZgDX9YFIkqczGImoypX2fQ4dVImmu3UzA4ynixCIMTrEOWW+95M2HuBaCEOVA== - acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-loose@^8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/acorn-loose/-/acorn-loose-8.4.0.tgz#26d3e219756d1e180d006f5bcc8d261a28530f55" - integrity sha512-M0EUka6rb+QC4l9Z3T0nJEzNOO7JcoJlYMrBlyBCiFSXRyxjLKayd4TbQs2FDRWQU1h9FR7QVNHt+PEaoNL5rQ== - dependencies: - acorn "^8.11.0" - acorn-walk@^7.1.1: version "7.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn-walk@^8.3.4: - version "8.3.4" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" - integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== - dependencies: - acorn "^8.11.0" - acorn@^7.1.1: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.11.0, acorn@^8.12.0, acorn@^8.12.1, acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.12.0, acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: version "8.12.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== @@ -3022,7 +3212,7 @@ ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.17.1, ajv@^8.6.0, ajv@^8.6.3, ajv@^8.9.0: +ajv@^8.0.0, ajv@^8.6.0, ajv@^8.6.3, ajv@^8.9.0: version "8.17.1" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== @@ -3239,7 +3429,7 @@ arraybuffer.prototype.slice@^1.0.3: is-array-buffer "^3.0.4" is-shared-array-buffer "^1.0.2" -asap@~2.0.6: +asap@~2.0.3, asap@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== @@ -3436,6 +3626,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base16@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" + integrity sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ== + batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" @@ -3567,6 +3762,11 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== +cac@^6.7.14: + version "6.7.14" + resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" + integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== + call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" @@ -3796,11 +3996,6 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -commander@^12.1.0: - version "12.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" - integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== - commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -3836,11 +4031,6 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== -"comparse@>= 0.9.x", comparse@^0.9.3: - version "0.9.3" - resolved "https://registry.yarnpkg.com/comparse/-/comparse-0.9.3.tgz#2ce73a4895e0ee1b333db11689c2f55c0ff9a962" - integrity sha512-wg/zg7YsMomMF9LP+LNSaw4IO7b/M4VLCmidZ9+wbYkZNXTkVNMFMgMZAu/7967BGsTn+14KZUT/pyyTBuZrTQ== - compressible@~2.0.16: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" @@ -3952,6 +4142,13 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" +cross-fetch@^3.1.5: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -4302,11 +4499,6 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" @@ -4317,34 +4509,6 @@ depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== -dependency-cruiser@^16.4.2: - version "16.4.2" - resolved "https://registry.yarnpkg.com/dependency-cruiser/-/dependency-cruiser-16.4.2.tgz#586487e1ac355912a0ad2310b830b63054733e01" - integrity sha512-mQZM95WwIvKzYYdj+1RgIBuJ6qbr1cfyzTt62dDJVrWAShfhV9IEkG/Xv4S2iD5sT+Gt3oFWyZjwNufAhcbtWA== - dependencies: - acorn "^8.12.1" - acorn-jsx "^5.3.2" - acorn-jsx-walk "^2.0.0" - acorn-loose "^8.4.0" - acorn-walk "^8.3.4" - ajv "^8.17.1" - commander "^12.1.0" - enhanced-resolve "^5.17.1" - ignore "^6.0.2" - interpret "^3.1.1" - is-installed-globally "^1.0.0" - json5 "^2.2.3" - memoize "^10.0.0" - picocolors "^1.1.0" - picomatch "^4.0.2" - prompts "^2.4.2" - rechoir "^0.8.0" - safe-regex "^2.1.1" - semver "^7.6.3" - teamcity-service-messages "^0.1.14" - tsconfig-paths-webpack-plugin "^4.1.0" - watskeburt "^4.1.0" - dequal@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" @@ -4569,7 +4733,7 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -enhanced-resolve@^5.17.0, enhanced-resolve@^5.17.1, enhanced-resolve@^5.7.0: +enhanced-resolve@^5.17.0: version "5.17.1" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15" integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg== @@ -4945,15 +5109,20 @@ eslint-plugin-prettier@^5.2.1: prettier-linter-helpers "^1.0.0" synckit "^0.9.1" -eslint-plugin-react-hooks@^4.3.0, eslint-plugin-react-hooks@^4.6.0: +eslint-plugin-react-hooks@^4.3.0: version "4.6.2" resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596" integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== -eslint-plugin-react-refresh@^0.4.6: - version "0.4.9" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.9.tgz#bf870372b353b12e1e6fb7fc41b282d9cbc8d93d" - integrity sha512-QK49YrBAo5CLNLseZ7sZgvgTy21E6NEw22eZqc4teZfH8pxV3yXc9XXOYfUI6JNpw7mfHNkAeWtBxrTyykB6HA== +eslint-plugin-react-hooks@^5.1.0-rc.0: + version "5.1.0-rc-fb9a90fa48-20240614" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0-rc-fb9a90fa48-20240614.tgz#206a7ec005f0b286aaf7091f4e566083d310b189" + integrity sha512-xsiRwaDNF5wWNC4ZHLut+x/YcAxksUd9Rizt7LaEn3bV8VyYRpXnRJQlLOfYaVy9esk4DFP4zPPnoNVjq5Gc0w== + +eslint-plugin-react-refresh@^0.4.9: + version "0.4.14" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.14.tgz#e3c611ead69bbf7436d01295c853d4abb8c59f68" + integrity sha512-aXvzCTK7ZBv1e7fahFuR3Z/fyQQSIQ711yPgYRj+Oj64tyTgO4iQIDmYXDBqvSWQ/FA4OSCsXOStlF+noU0/NA== eslint-plugin-react@^7.27.1, eslint-plugin-react@^7.32.2: version "7.35.0" @@ -5002,10 +5171,10 @@ eslint-scope@^7.2.2: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-scope@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.0.2.tgz#5cbb33d4384c9136083a71190d548158fe128f94" - integrity sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA== +eslint-scope@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.1.0.tgz#70214a174d4cbffbc3e8a26911d8bf51b9ae9d30" + integrity sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -5025,6 +5194,11 @@ eslint-visitor-keys@^4.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb" integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw== +eslint-visitor-keys@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz#1f785cc5e81eb7534523d85922248232077d2f8c" + integrity sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg== + eslint-webpack-plugin@^3.1.1: version "3.2.0" resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz#1978cdb9edc461e4b0195a20da950cf57988347c" @@ -5080,27 +5254,31 @@ eslint@^8.3.0: strip-ansi "^6.0.1" text-table "^0.2.0" -eslint@^9.8.0: - version "9.8.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.8.0.tgz#a4f4a090c8ea2d10864d89a6603e02ce9f649f0f" - integrity sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A== +eslint@^9.9.0: + version "9.13.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.13.0.tgz#7659014b7dda1ff876ecbd990f726e11c61596e6" + integrity sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.11.0" - "@eslint/config-array" "^0.17.1" + "@eslint/config-array" "^0.18.0" + "@eslint/core" "^0.7.0" "@eslint/eslintrc" "^3.1.0" - "@eslint/js" "9.8.0" + "@eslint/js" "9.13.0" + "@eslint/plugin-kit" "^0.2.0" + "@humanfs/node" "^0.16.5" "@humanwhocodes/module-importer" "^1.0.1" - "@humanwhocodes/retry" "^0.3.0" - "@nodelib/fs.walk" "^1.2.8" + "@humanwhocodes/retry" "^0.3.1" + "@types/estree" "^1.0.6" + "@types/json-schema" "^7.0.15" ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.3.2" escape-string-regexp "^4.0.0" - eslint-scope "^8.0.2" - eslint-visitor-keys "^4.0.0" - espree "^10.1.0" + eslint-scope "^8.1.0" + eslint-visitor-keys "^4.1.0" + espree "^10.2.0" esquery "^1.5.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -5110,17 +5288,14 @@ eslint@^9.8.0: ignore "^5.2.0" imurmurhash "^0.1.4" is-glob "^4.0.0" - is-path-inside "^3.0.3" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.3" - strip-ansi "^6.0.1" text-table "^0.2.0" -espree@^10.0.1, espree@^10.1.0: +espree@^10.0.1: version "10.1.0" resolved "https://registry.yarnpkg.com/espree/-/espree-10.1.0.tgz#8788dae611574c0f070691f522e4116c5a11fc56" integrity sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA== @@ -5129,6 +5304,15 @@ espree@^10.0.1, espree@^10.1.0: acorn-jsx "^5.3.2" eslint-visitor-keys "^4.0.0" +espree@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.2.0.tgz#f4bcead9e05b0615c968e85f83816bc386a45df6" + integrity sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g== + dependencies: + acorn "^8.12.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.1.0" + espree@^9.6.0, espree@^9.6.1: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" @@ -5274,7 +5458,7 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-glob@^3.2.9, fast-glob@^3.3.0: +fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -5326,6 +5510,31 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" +fbemitter@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/fbemitter/-/fbemitter-3.0.0.tgz#00b2a1af5411254aab416cd75f9e6289bee4bff3" + integrity sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw== + dependencies: + fbjs "^3.0.0" + +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs@^3.0.0, fbjs@^3.0.1: + version "3.0.5" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.5.tgz#aa0edb7d5caa6340011790bd9249dbef8a81128d" + integrity sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg== + dependencies: + cross-fetch "^3.1.5" + fbjs-css-vars "^1.0.0" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^1.0.35" + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -5434,6 +5643,14 @@ flatted@^3.2.9: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== +flux@^4.0.1: + version "4.0.4" + resolved "https://registry.yarnpkg.com/flux/-/flux-4.0.4.tgz#9661182ea81d161ee1a6a6af10d20485ef2ac572" + integrity sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw== + dependencies: + fbemitter "^3.0.0" + fbjs "^3.0.1" + follow-redirects@^1.0.0: version "1.15.6" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" @@ -5639,13 +5856,6 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -global-directory@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/global-directory/-/global-directory-4.0.1.tgz#4d7ac7cfd2cb73f304c53b8810891748df5e361e" - integrity sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q== - dependencies: - ini "4.1.1" - global-modules@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" @@ -5679,6 +5889,11 @@ globals@^14.0.0: resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== +globals@^15.9.0: + version "15.11.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.11.0.tgz#b96ed4c6998540c6fb824b24b5499216d2438d6e" + integrity sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw== + globalthis@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" @@ -5978,11 +6193,6 @@ ignore@^5.2.0, ignore@^5.3.1: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== -ignore@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-6.0.2.tgz#77cccb72a55796af1b6d2f9eb14fa326d24f4283" - integrity sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A== - immer@^10.0.3: version "10.1.1" resolved "https://registry.yarnpkg.com/immer/-/immer-10.1.1.tgz#206f344ea372d8ea176891545ee53ccc062db7bc" @@ -6006,6 +6216,14 @@ import-fresh@^3.1.0, import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" +import-from-esm@^1.3.3: + version "1.3.4" + resolved "https://registry.yarnpkg.com/import-from-esm/-/import-from-esm-1.3.4.tgz#39e97c84085e308fe66cf872a667046b45449df0" + integrity sha512-7EyUlPFC0HOlBDpUFGfYstsU7XHxZJKAAMzCT8wZ0hMW7b+hG51LIKTDcsgtz8Pu6YC0HqRVbX+rVUtsGMUKvg== + dependencies: + debug "^4.3.4" + import-meta-resolve "^4.0.0" + import-local@^3.0.2: version "3.2.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" @@ -6014,18 +6232,16 @@ import-local@^3.0.2: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" +import-meta-resolve@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz#f9db8bead9fafa61adb811db77a2bf22c5399706" + integrity sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw== + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - integrity sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg== - dependencies: - repeating "^2.0.0" - indent-string@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" @@ -6049,11 +6265,6 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== -ini@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.1.tgz#d95b3d843b1e906e56d6747d5447904ff50ce7a1" - integrity sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g== - ini@^1.3.5: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" @@ -6068,11 +6279,6 @@ internal-slot@^1.0.4, internal-slot@^1.0.7: hasown "^2.0.0" side-channel "^1.0.4" -interpret@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" - integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== - invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -6183,11 +6389,6 @@ is-finalizationregistry@^1.0.2: dependencies: call-bind "^1.0.2" -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== - is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -6212,14 +6413,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-installed-globally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-1.0.0.tgz#08952c43758c33d815692392f7f8437b9e436d5a" - integrity sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ== - dependencies: - global-directory "^4.0.1" - is-path-inside "^4.0.0" - is-map@^2.0.2, is-map@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" @@ -6257,11 +6450,6 @@ is-path-inside@^3.0.3: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -is-path-inside@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-4.0.0.tgz#805aeb62c47c1b12fc3fd13bfb3ed1e7430071db" - integrity sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA== - is-plain-obj@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" @@ -7034,7 +7222,7 @@ json5@^1.0.2: dependencies: minimist "^1.2.0" -json5@^2.1.2, json5@^2.2.0, json5@^2.2.2, json5@^2.2.3: +json5@^2.1.2, json5@^2.2.0, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -7196,16 +7384,21 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== +lodash.curry@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170" + integrity sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA== lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== +lodash.flow@^3.3.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/lodash.flow/-/lodash.flow-3.5.0.tgz#87bf40292b8cf83e4e8ce1a3ae4209e20071675a" + integrity sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw== + lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -7307,13 +7500,6 @@ memfs@^3.1.2, memfs@^3.4.3: dependencies: fs-monkey "^1.0.4" -memoize@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/memoize/-/memoize-10.0.0.tgz#43fa66b2022363c7c50cf5dfab732a808a3d7147" - integrity sha512-H6cBLgsi6vMWOcCpvVCdFFnl3kerEXbrYh9q+lY6VXvQSmM6CkmV08VOwT+WE2tzIEqRPFfAq3fm4v/UIW6mSA== - dependencies: - mimic-function "^5.0.0" - merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -7369,11 +7555,6 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== -mimic-function@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/mimic-function/-/mimic-function-5.0.1.tgz#acbe2b3349f99b9deaca7fb70e48b83e94e67076" - integrity sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA== - min-indent@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" @@ -7502,7 +7683,7 @@ node-fetch-h2@^2.3.0: dependencies: http2-client "^1.2.5" -node-fetch@^2.6.1: +node-fetch@^2.6.1, node-fetch@^2.6.12: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -7629,7 +7810,7 @@ oazapfts@^4.8.0: swagger2openapi "^7.0.8" typescript "^5.2.2" -object-assign@^4.0.1, object-assign@^4.1.1: +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -7945,11 +8126,6 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatc resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -picomatch@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" - integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== - pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -8522,7 +8698,7 @@ postcss@^7.0.35: picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.33, postcss@^8.4.39, postcss@^8.4.4: +postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.33, postcss@^8.4.4: version "8.4.41" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.41.tgz#d6104d3ba272d882fe18fc07d15dc2da62fa2681" integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ== @@ -8531,6 +8707,15 @@ postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.33, postcss@^8.4.39, postcss@^8.4. picocolors "^1.0.1" source-map-js "^1.2.0" +postcss@^8.4.43: + version "8.4.47" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365" + integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== + dependencies: + nanoid "^3.3.7" + picocolors "^1.1.0" + source-map-js "^1.2.1" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -8595,6 +8780,13 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + promise@^8.1.0: version "8.3.0" resolved "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a" @@ -8645,6 +8837,11 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== +pure-color@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" + integrity sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA== + q@^1.1.2: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" @@ -8708,6 +8905,16 @@ react-app-polyfill@^3.0.0: regenerator-runtime "^0.13.9" whatwg-fetch "^3.6.2" +react-base16-styling@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/react-base16-styling/-/react-base16-styling-0.6.0.tgz#ef2156d66cf4139695c8a167886cb69ea660792c" + integrity sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ== + dependencies: + base16 "^1.0.0" + lodash.curry "^4.0.1" + lodash.flow "^3.3.0" + pure-color "^1.2.0" + react-bootstrap@^2.10.2: version "2.10.4" resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-2.10.4.tgz#ed92f5f8225a44919a7707829bac879558b71b70" @@ -8792,6 +8999,16 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== +react-json-view@^1.21.3: + version "1.21.3" + resolved "https://registry.yarnpkg.com/react-json-view/-/react-json-view-1.21.3.tgz#f184209ee8f1bf374fb0c41b0813cff54549c475" + integrity sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw== + dependencies: + flux "^4.0.1" + react-base16-styling "^0.6.0" + react-lifecycles-compat "^3.0.4" + react-textarea-autosize "^8.3.2" + react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" @@ -8885,6 +9102,15 @@ react-scripts@5.0.1: optionalDependencies: fsevents "^2.3.2" +react-textarea-autosize@^8.3.2: + version "8.5.4" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.5.4.tgz#1c568ad838857b6ce86ee2a96e504179305e0bf4" + integrity sha512-eSSjVtRLcLfFwFcariT77t9hcbVJHQV76b51QjQGarQIHml2+gM2lms0n3XrhnDmgK5B+/Z7TmQk5OHNzqYm/A== + dependencies: + "@babel/runtime" "^7.20.13" + use-composed-ref "^1.3.0" + use-latest "^1.2.1" + react-toastify@^10.0.5: version "10.0.5" resolved "https://registry.yarnpkg.com/react-toastify/-/react-toastify-10.0.5.tgz#6b8f8386060c5c856239f3036d1e76874ce3bd1e" @@ -8945,13 +9171,6 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -rechoir@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" - integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== - dependencies: - resolve "^1.20.0" - recursive-readdir@^2.2.2: version "2.2.3" resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" @@ -9039,11 +9258,6 @@ regex-parser@^2.2.11: resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.3.0.tgz#4bb61461b1a19b8b913f3960364bb57887f920ee" integrity sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg== -regexp-tree@~0.1.1: - version "0.1.27" - resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.27.tgz#2198f0ef54518ffa743fe74d983b56ffd631b6cd" - integrity sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA== - regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" @@ -9089,13 +9303,6 @@ renderkid@^3.0.0: lodash "^4.17.21" strip-ansi "^6.0.1" -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A== - dependencies: - is-finite "^1.0.0" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -9194,6 +9401,16 @@ rollup-plugin-terser@^7.0.0: serialize-javascript "^4.0.0" terser "^5.0.0" +rollup-plugin-visualizer@^5.11.0: + version "5.12.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.12.0.tgz#661542191ce78ee4f378995297260d0c1efb1302" + integrity sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ== + dependencies: + open "^8.4.0" + picomatch "^2.3.1" + source-map "^0.7.4" + yargs "^17.5.1" + rollup@^2.43.1: version "2.79.1" resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" @@ -9201,29 +9418,29 @@ rollup@^2.43.1: optionalDependencies: fsevents "~2.3.2" -rollup@^4.13.0: - version "4.20.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.20.0.tgz#f9d602161d29e178f0bf1d9f35f0a26f83939492" - integrity sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw== +rollup@^4.20.0: + version "4.24.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.24.0.tgz#c14a3576f20622ea6a5c9cad7caca5e6e9555d05" + integrity sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg== dependencies: - "@types/estree" "1.0.5" + "@types/estree" "1.0.6" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.20.0" - "@rollup/rollup-android-arm64" "4.20.0" - "@rollup/rollup-darwin-arm64" "4.20.0" - "@rollup/rollup-darwin-x64" "4.20.0" - "@rollup/rollup-linux-arm-gnueabihf" "4.20.0" - "@rollup/rollup-linux-arm-musleabihf" "4.20.0" - "@rollup/rollup-linux-arm64-gnu" "4.20.0" - "@rollup/rollup-linux-arm64-musl" "4.20.0" - "@rollup/rollup-linux-powerpc64le-gnu" "4.20.0" - "@rollup/rollup-linux-riscv64-gnu" "4.20.0" - "@rollup/rollup-linux-s390x-gnu" "4.20.0" - "@rollup/rollup-linux-x64-gnu" "4.20.0" - "@rollup/rollup-linux-x64-musl" "4.20.0" - "@rollup/rollup-win32-arm64-msvc" "4.20.0" - "@rollup/rollup-win32-ia32-msvc" "4.20.0" - "@rollup/rollup-win32-x64-msvc" "4.20.0" + "@rollup/rollup-android-arm-eabi" "4.24.0" + "@rollup/rollup-android-arm64" "4.24.0" + "@rollup/rollup-darwin-arm64" "4.24.0" + "@rollup/rollup-darwin-x64" "4.24.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.24.0" + "@rollup/rollup-linux-arm-musleabihf" "4.24.0" + "@rollup/rollup-linux-arm64-gnu" "4.24.0" + "@rollup/rollup-linux-arm64-musl" "4.24.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.24.0" + "@rollup/rollup-linux-riscv64-gnu" "4.24.0" + "@rollup/rollup-linux-s390x-gnu" "4.24.0" + "@rollup/rollup-linux-x64-gnu" "4.24.0" + "@rollup/rollup-linux-x64-musl" "4.24.0" + "@rollup/rollup-win32-arm64-msvc" "4.24.0" + "@rollup/rollup-win32-ia32-msvc" "4.24.0" + "@rollup/rollup-win32-x64-msvc" "4.24.0" fsevents "~2.3.2" run-parallel@^1.1.9: @@ -9262,13 +9479,6 @@ safe-regex-test@^1.0.3: es-errors "^1.3.0" is-regex "^1.1.4" -safe-regex@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-2.1.1.tgz#f7128f00d056e2fe5c11e81a1324dd974aadced2" - integrity sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A== - dependencies: - regexp-tree "~0.1.1" - "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -9370,7 +9580,7 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3: +semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0: version "7.6.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== @@ -9453,6 +9663,11 @@ set-function-name@^2.0.1, set-function-name@^2.0.2: functions-have-names "^1.2.3" has-property-descriptors "^1.0.2" +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -9578,6 +9793,11 @@ source-list-map@^2.0.0, source-list-map@^2.0.1: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + source-map-loader@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.2.tgz#af23192f9b344daa729f6772933194cc5fa54fee" @@ -9600,7 +9820,7 @@ source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, sourc resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: +source-map@^0.7.3, source-map@^0.7.4: version "0.7.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== @@ -9662,13 +9882,6 @@ stackframe@^1.3.4: resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== -stacktrace-parser@^0.1.4: - version "0.1.10" - resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" - integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== - dependencies: - type-fest "^0.7.1" - static-eval@2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.0.2.tgz#2d1759306b1befa688938454c546b7871f806a42" @@ -10044,11 +10257,6 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -teamcity-service-messages@^0.1.14: - version "0.1.14" - resolved "https://registry.yarnpkg.com/teamcity-service-messages/-/teamcity-service-messages-0.1.14.tgz#193d420a5e4aef8e5e50b8c39e7865e08fbb5d8a" - integrity sha512-29aQwaHqm8RMX74u2o/h1KbMLP89FjNiMxD9wbF2BbWOnbM+q+d1sCEC+MqCc4QW3NJykn77OMpTFw/xTHIc0w== - temp-dir@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" @@ -10131,6 +10339,11 @@ thunky@^1.0.2: resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== +tmp@^0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" + integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== + tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" @@ -10197,15 +10410,6 @@ ts-interface-checker@^0.1.9: resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== -tsconfig-paths-webpack-plugin@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz#3c6892c5e7319c146eee1e7302ed9e6f2be4f763" - integrity sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA== - dependencies: - chalk "^4.1.0" - enhanced-resolve "^5.7.0" - tsconfig-paths "^4.1.2" - tsconfig-paths@^3.15.0: version "3.15.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" @@ -10216,15 +10420,6 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" -tsconfig-paths@^4.1.2: - version "4.2.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" - integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== - dependencies: - json5 "^2.2.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -10276,11 +10471,6 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -type-fest@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" - integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== - type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -10340,11 +10530,30 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" +typescript-eslint@^8.0.1: + version "8.12.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.12.0.tgz#507f227097836a8b679108d2a80a3e9f20c5e74a" + integrity sha512-m8aQM4pqc17dcD3BsQzUqVXkcclCspuCCv7GhYlwMWNYAXFV8xJkn8vUM8YxoR78BY6S+NX/J7rfNVaGNLgXgQ== + dependencies: + "@typescript-eslint/eslint-plugin" "8.12.0" + "@typescript-eslint/parser" "8.12.0" + "@typescript-eslint/utils" "8.12.0" + typescript@^5.0.0, typescript@^5.2.2: version "5.5.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== +typescript@^5.5.3: + version "5.6.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" + integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== + +ua-parser-js@^1.0.35: + version "1.0.39" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.39.tgz#bfc07f361549bf249bd8f4589a4cccec18fd2018" + integrity sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw== + unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" @@ -10458,6 +10667,23 @@ url-parse@^1.5.3: querystringify "^2.1.1" requires-port "^1.0.0" +use-composed-ref@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" + integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== + +use-isomorphic-layout-effect@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" + integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== + +use-latest@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.1.tgz#d13dfb4b08c28e3e33991546a2cee53e14038cf2" + integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== + dependencies: + use-isomorphic-layout-effect "^1.1.1" + use-sync-external-store@^1.0.0: version "1.2.2" resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz#c3b6390f3a30eba13200d2302dcdf1e7b57b2ef9" @@ -10488,6 +10714,11 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== +uuid@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" + integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== + uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" @@ -10507,14 +10738,38 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -vite@^5.2.0: - version "5.3.5" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.3.5.tgz#b847f846fb2b6cb6f6f4ed50a830186138cb83d8" - integrity sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA== +vite-bundle-visualizer@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/vite-bundle-visualizer/-/vite-bundle-visualizer-1.2.1.tgz#8be34033f0216de529abec4b18a8b62aa1b65c9e" + integrity sha512-cwz/Pg6+95YbgIDp+RPwEToc4TKxfsFWSG/tsl2DSZd9YZicUag1tQXjJ5xcL7ydvEoaC2FOZeaXOU60t9BRXw== + dependencies: + cac "^6.7.14" + import-from-esm "^1.3.3" + rollup-plugin-visualizer "^5.11.0" + tmp "^0.2.1" + +vite-plugin-top-level-await@^1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.4.4.tgz#4900e06bfb7179de20aaa9b4730d04022a9e259e" + integrity sha512-QyxQbvcMkgt+kDb12m2P8Ed35Sp6nXP+l8ptGrnHV9zgYDUpraO0CPdlqLSeBqvY2DToR52nutDG7mIHuysdiw== + dependencies: + "@rollup/plugin-virtual" "^3.0.2" + "@swc/core" "^1.7.0" + uuid "^10.0.0" + +vite-plugin-wasm@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/vite-plugin-wasm/-/vite-plugin-wasm-3.3.0.tgz#2908ef2529bf8f33f4e549c8c6fda26ad273ca15" + integrity sha512-tVhz6w+W9MVsOCHzxo6SSMSswCeIw4HTrXEi6qL3IRzATl83jl09JVO1djBqPSwfjgnpVHNLYcaMbaDX5WB/pg== + +vite@^5.4.9: + version "5.4.9" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.9.tgz#215c80cbebfd09ccbb9ceb8c0621391c9abdc19c" + integrity sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg== dependencies: esbuild "^0.21.3" - postcss "^8.4.39" - rollup "^4.13.0" + postcss "^8.4.43" + rollup "^4.20.0" optionalDependencies: fsevents "~2.3.3" @@ -10559,11 +10814,6 @@ watchpack@^2.4.1: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" -watskeburt@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/watskeburt/-/watskeburt-4.1.0.tgz#3c0227669be646a97424b631164b1afe3d4d5344" - integrity sha512-KkY5H51ajqy9HYYI+u9SIURcWnqeVVhdH0I+ab6aXPGHfZYxgRCwnR6Lm3+TYB6jJVt5jFqw4GAKmwf1zHmGQw== - wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" @@ -11059,13 +11309,6 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xparse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/xparse/-/xparse-1.0.0.tgz#4775a4bae747c8263ce51af9cef95ee169ac2efd" - integrity sha512-scUtMflBUTA6O72Ic07m58ZzwykVQNWeQRrUgpABDFDOF77/72KxD+JYSPhjy3sItuyHL80NruP0+ucm/lIXQQ== - dependencies: - comparse "^0.9.3" - y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" @@ -11086,26 +11329,6 @@ yaml@^2.3.4: resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.0.tgz#c6165a721cf8000e91c36490a41d7be25176cf5d" integrity sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw== -yang-js@^0.24.70: - version "0.24.70" - resolved "https://registry.yarnpkg.com/yang-js/-/yang-js-0.24.70.tgz#0b1fbc7b8dee2ff88985b60028439a4335b09161" - integrity sha512-hdb+IZHcQbuhLWmghq10jupVuoUDm+R1K0PATd398P+gby/rYSsma6saagtp9skyvLhYX2M+CvNWxQQBV7Gk7A== - dependencies: - debug "^4.1.1" - delegates "^1.0.0" - indent-string "^2.1.0" - lodash.clonedeep "^4.5.0" - stacktrace-parser "^0.1.4" - xparse "^1.0.0" - yang-parser "^0.2.1" - -yang-parser@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/yang-parser/-/yang-parser-0.2.1.tgz#b937ca78d887b81559c71c608fe9d850ebb7a77a" - integrity sha512-mmZKLVc4NiMdRBK/gnxiT35EP97k9tRDcjwUOenMLabgIm083HVFRfHmch60Wiq+zVWYantdgBcRGLk4Wy1QcA== - dependencies: - comparse ">= 0.9.x" - yargs-parser@^20.2.2: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" @@ -11129,7 +11352,7 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.0.1: +yargs@^17.0.1, yargs@^17.5.1: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== -- GitLab From a3d001f2c220c453684c075b2d0446886dc7dda7 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Wed, 6 Nov 2024 15:21:50 +0100 Subject: [PATCH 32/44] add yang parser directly as endpoint to gosdn --- .../gnmi/proto/collector/collector.pb.go | 48 +- .../openconfig/gnmi/proto/gnmi/gnmi.pb.go | 554 +---- .../gnmi/proto/gnmi_ext/gnmi_ext.pb.go | 158 +- .../openconfig/gnmi/proto/target/target.pb.go | 70 +- .../gnmi/testing/fake/proto/fake.pb.go | 488 +---- api/go/gosdn/app/app.pb.go | 92 +- .../configurationmanagement.pb.go | 92 +- api/go/gosdn/conflict/conflict.pb.go | 26 +- api/go/gosdn/csbi/csbi.pb.go | 246 +-- .../gosdn/networkelement/networkelement.pb.go | 1847 +++++++---------- .../networkelement/networkelement.pb.gw.go | 87 + .../networkelement/networkelement_grpc.pb.go | 42 + .../plugin-internal/plugin-internal.pb.go | 92 +- .../plugin-registry/plugin-registry.pb.go | 224 +- api/go/gosdn/plugin/plugin.pb.go | 400 +--- api/go/gosdn/pnd/pnd.pb.go | 224 +- api/go/gosdn/rbac/rbac.pb.go | 92 +- api/go/gosdn/rbac/role.pb.go | 290 +-- api/go/gosdn/rbac/user.pb.go | 268 +-- api/go/gosdn/southbound/southbound.pb.go | 70 +- .../subscriptionmanagement.pb.go | 290 +-- api/go/gosdn/topology/link.pb.go | 26 +- api/go/gosdn/topology/node.pb.go | 26 +- api/go/gosdn/topology/port.pb.go | 48 +- api/go/gosdn/topology/route.pb.go | 48 +- api/go/gosdn/topology/routingTable.pb.go | 136 +- api/go/gosdn/topology/topology.pb.go | 202 +- api/go/gosdn/transport/transport.pb.go | 70 +- api/openapiv2/gosdn_northbound.swagger.json | 52 + api/proto/buf.lock | 12 +- .../gosdn/networkelement/networkelement.proto | 19 + controller/controller.go | 1 + .../northbound/server/networkElement.go | 32 + react-ui/scripts/openapi-config.json | 20 +- .../devices/reducer/device.reducer.ts | 95 +- .../devices/routines/mne.routine.ts | 92 +- .../src/components/devices/view/device.scss | 11 + .../devices/view/device.view.table.tsx | 8 +- .../devices/view/device.view.tabs.tsx | 4 +- .../view_model/device.tabs.viewmodel.ts | 8 +- .../devices/view_model/device.viewmodel.ts | 24 +- react-ui/src/shared/api/api.ts | 237 ++- .../src/shared/provider/auth.provider.tsx | 13 +- .../src/shared/reducer/routine.reducer.ts | 27 +- react-ui/src/shared/reducer/user.reducer.ts | 48 +- react-ui/src/shared/utils/routine.manager.ts | 43 +- react-ui/src/stores/api.store.ts | 27 +- react-ui/src/stores/index.ts | 37 +- .../middleware/api.listener.middleware.ts | 26 + .../middleware/devLogging.middleware.ts | 24 - 50 files changed, 2220 insertions(+), 4896 deletions(-) create mode 100644 react-ui/src/stores/middleware/api.listener.middleware.ts delete mode 100644 react-ui/src/stores/middleware/devLogging.middleware.ts diff --git a/api/go/github.com/openconfig/gnmi/proto/collector/collector.pb.go b/api/go/github.com/openconfig/gnmi/proto/collector/collector.pb.go index a186f9bae..09e16b605 100644 --- a/api/go/github.com/openconfig/gnmi/proto/collector/collector.pb.go +++ b/api/go/github.com/openconfig/gnmi/proto/collector/collector.pb.go @@ -16,7 +16,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: github.com/openconfig/gnmi/proto/collector/collector.proto @@ -46,11 +46,9 @@ type ReconnectRequest struct { func (x *ReconnectRequest) Reset() { *x = ReconnectRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_collector_collector_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_collector_collector_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ReconnectRequest) String() string { @@ -61,7 +59,7 @@ func (*ReconnectRequest) ProtoMessage() {} func (x *ReconnectRequest) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_collector_collector_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -91,11 +89,9 @@ type Nil struct { func (x *Nil) Reset() { *x = Nil{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_collector_collector_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_collector_collector_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Nil) String() string { @@ -106,7 +102,7 @@ func (*Nil) ProtoMessage() {} func (x *Nil) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_collector_collector_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -173,32 +169,6 @@ func file_github_com_openconfig_gnmi_proto_collector_collector_proto_init() { if File_github_com_openconfig_gnmi_proto_collector_collector_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_openconfig_gnmi_proto_collector_collector_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*ReconnectRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_collector_collector_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Nil); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/go/github.com/openconfig/gnmi/proto/gnmi/gnmi.pb.go b/api/go/github.com/openconfig/gnmi/proto/gnmi/gnmi.pb.go index aa39f2583..d0162888f 100644 --- a/api/go/github.com/openconfig/gnmi/proto/gnmi/gnmi.pb.go +++ b/api/go/github.com/openconfig/gnmi/proto/gnmi/gnmi.pb.go @@ -16,7 +16,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: github.com/openconfig/gnmi/proto/gnmi/gnmi.proto @@ -347,11 +347,9 @@ type Notification struct { func (x *Notification) Reset() { *x = Notification{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Notification) String() string { @@ -362,7 +360,7 @@ func (*Notification) ProtoMessage() {} func (x *Notification) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -436,11 +434,9 @@ type Update struct { func (x *Update) Reset() { *x = Update{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Update) String() string { @@ -451,7 +447,7 @@ func (*Update) ProtoMessage() {} func (x *Update) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -528,11 +524,9 @@ type TypedValue struct { func (x *TypedValue) Reset() { *x = TypedValue{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TypedValue) String() string { @@ -543,7 +537,7 @@ func (*TypedValue) ProtoMessage() {} func (x *TypedValue) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -763,11 +757,9 @@ type Path struct { func (x *Path) Reset() { *x = Path{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Path) String() string { @@ -778,7 +770,7 @@ func (*Path) ProtoMessage() {} func (x *Path) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -836,11 +828,9 @@ type PathElem struct { func (x *PathElem) Reset() { *x = PathElem{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PathElem) String() string { @@ -851,7 +841,7 @@ func (*PathElem) ProtoMessage() {} func (x *PathElem) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -896,11 +886,9 @@ type Value struct { func (x *Value) Reset() { *x = Value{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Value) String() string { @@ -911,7 +899,7 @@ func (*Value) ProtoMessage() {} func (x *Value) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -958,11 +946,9 @@ type Error struct { func (x *Error) Reset() { *x = Error{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Error) String() string { @@ -973,7 +959,7 @@ func (*Error) ProtoMessage() {} func (x *Error) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1023,11 +1009,9 @@ type Decimal64 struct { func (x *Decimal64) Reset() { *x = Decimal64{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Decimal64) String() string { @@ -1038,7 +1022,7 @@ func (*Decimal64) ProtoMessage() {} func (x *Decimal64) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1081,11 +1065,9 @@ type ScalarArray struct { func (x *ScalarArray) Reset() { *x = ScalarArray{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ScalarArray) String() string { @@ -1096,7 +1078,7 @@ func (*ScalarArray) ProtoMessage() {} func (x *ScalarArray) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1142,11 +1124,9 @@ type SubscribeRequest struct { func (x *SubscribeRequest) Reset() { *x = SubscribeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SubscribeRequest) String() string { @@ -1157,7 +1137,7 @@ func (*SubscribeRequest) ProtoMessage() {} func (x *SubscribeRequest) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1241,11 +1221,9 @@ type Poll struct { func (x *Poll) Reset() { *x = Poll{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Poll) String() string { @@ -1256,7 +1234,7 @@ func (*Poll) ProtoMessage() {} func (x *Poll) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1295,11 +1273,9 @@ type SubscribeResponse struct { func (x *SubscribeResponse) Reset() { *x = SubscribeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SubscribeResponse) String() string { @@ -1310,7 +1286,7 @@ func (*SubscribeResponse) ProtoMessage() {} func (x *SubscribeResponse) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1423,11 +1399,9 @@ type SubscriptionList struct { func (x *SubscriptionList) Reset() { *x = SubscriptionList{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SubscriptionList) String() string { @@ -1438,7 +1412,7 @@ func (*SubscriptionList) ProtoMessage() {} func (x *SubscriptionList) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1540,11 +1514,9 @@ type Subscription struct { func (x *Subscription) Reset() { *x = Subscription{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Subscription) String() string { @@ -1555,7 +1527,7 @@ func (*Subscription) ProtoMessage() {} func (x *Subscription) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1618,11 +1590,9 @@ type QOSMarking struct { func (x *QOSMarking) Reset() { *x = QOSMarking{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *QOSMarking) String() string { @@ -1633,7 +1603,7 @@ func (*QOSMarking) ProtoMessage() {} func (x *QOSMarking) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1671,11 +1641,9 @@ type Alias struct { func (x *Alias) Reset() { *x = Alias{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Alias) String() string { @@ -1686,7 +1654,7 @@ func (*Alias) ProtoMessage() {} func (x *Alias) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1728,11 +1696,9 @@ type AliasList struct { func (x *AliasList) Reset() { *x = AliasList{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AliasList) String() string { @@ -1743,7 +1709,7 @@ func (*AliasList) ProtoMessage() {} func (x *AliasList) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1788,11 +1754,9 @@ type SetRequest struct { func (x *SetRequest) Reset() { *x = SetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetRequest) String() string { @@ -1803,7 +1767,7 @@ func (*SetRequest) ProtoMessage() {} func (x *SetRequest) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1879,11 +1843,9 @@ type SetResponse struct { func (x *SetResponse) Reset() { *x = SetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetResponse) String() string { @@ -1894,7 +1856,7 @@ func (*SetResponse) ProtoMessage() {} func (x *SetResponse) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1968,11 +1930,9 @@ type UpdateResult struct { func (x *UpdateResult) Reset() { *x = UpdateResult{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateResult) String() string { @@ -1983,7 +1943,7 @@ func (*UpdateResult) ProtoMessage() {} func (x *UpdateResult) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2051,11 +2011,9 @@ type GetRequest struct { func (x *GetRequest) Reset() { *x = GetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRequest) String() string { @@ -2066,7 +2024,7 @@ func (*GetRequest) ProtoMessage() {} func (x *GetRequest) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2142,11 +2100,9 @@ type GetResponse struct { func (x *GetResponse) Reset() { *x = GetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetResponse) String() string { @@ -2157,7 +2113,7 @@ func (*GetResponse) ProtoMessage() {} func (x *GetResponse) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2209,11 +2165,9 @@ type CapabilityRequest struct { func (x *CapabilityRequest) Reset() { *x = CapabilityRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CapabilityRequest) String() string { @@ -2224,7 +2178,7 @@ func (*CapabilityRequest) ProtoMessage() {} func (x *CapabilityRequest) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2264,11 +2218,9 @@ type CapabilityResponse struct { func (x *CapabilityResponse) Reset() { *x = CapabilityResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CapabilityResponse) String() string { @@ -2279,7 +2231,7 @@ func (*CapabilityResponse) ProtoMessage() {} func (x *CapabilityResponse) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2339,11 +2291,9 @@ type ModelData struct { func (x *ModelData) Reset() { *x = ModelData{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ModelData) String() string { @@ -2354,7 +2304,7 @@ func (*ModelData) ProtoMessage() {} func (x *ModelData) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2851,308 +2801,6 @@ func file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_init() { if File_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Notification); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Update); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*TypedValue); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*Path); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*PathElem); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*Value); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*Error); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*Decimal64); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*ScalarArray); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*SubscribeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*Poll); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*SubscribeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*SubscriptionList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*Subscription); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*QOSMarking); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*Alias); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*AliasList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*SetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*SetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*UpdateResult); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*GetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*GetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*CapabilityRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[23].Exporter = func(v any, i int) any { - switch v := v.(*CapabilityResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[24].Exporter = func(v any, i int) any { - switch v := v.(*ModelData); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_github_com_openconfig_gnmi_proto_gnmi_gnmi_proto_msgTypes[2].OneofWrappers = []any{ (*TypedValue_StringVal)(nil), (*TypedValue_IntVal)(nil), diff --git a/api/go/github.com/openconfig/gnmi/proto/gnmi_ext/gnmi_ext.pb.go b/api/go/github.com/openconfig/gnmi/proto/gnmi_ext/gnmi_ext.pb.go index 4a5a86104..aaaa55d00 100644 --- a/api/go/github.com/openconfig/gnmi/proto/gnmi_ext/gnmi_ext.pb.go +++ b/api/go/github.com/openconfig/gnmi/proto/gnmi_ext/gnmi_ext.pb.go @@ -16,7 +16,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: github.com/openconfig/gnmi/proto/gnmi_ext/gnmi_ext.proto @@ -107,11 +107,9 @@ type Extension struct { func (x *Extension) Reset() { *x = Extension{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Extension) String() string { @@ -122,7 +120,7 @@ func (*Extension) ProtoMessage() {} func (x *Extension) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -201,11 +199,9 @@ type RegisteredExtension struct { func (x *RegisteredExtension) Reset() { *x = RegisteredExtension{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RegisteredExtension) String() string { @@ -216,7 +212,7 @@ func (*RegisteredExtension) ProtoMessage() {} func (x *RegisteredExtension) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -261,11 +257,9 @@ type MasterArbitration struct { func (x *MasterArbitration) Reset() { *x = MasterArbitration{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MasterArbitration) String() string { @@ -276,7 +270,7 @@ func (*MasterArbitration) ProtoMessage() {} func (x *MasterArbitration) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -317,11 +311,9 @@ type Uint128 struct { func (x *Uint128) Reset() { *x = Uint128{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Uint128) String() string { @@ -332,7 +324,7 @@ func (*Uint128) ProtoMessage() {} func (x *Uint128) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -372,11 +364,9 @@ type Role struct { func (x *Role) Reset() { *x = Role{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Role) String() string { @@ -387,7 +377,7 @@ func (*Role) ProtoMessage() {} func (x *Role) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -426,11 +416,9 @@ type History struct { func (x *History) Reset() { *x = History{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *History) String() string { @@ -441,7 +429,7 @@ func (*History) ProtoMessage() {} func (x *History) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -504,11 +492,9 @@ type TimeRange struct { func (x *TimeRange) Reset() { *x = TimeRange{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TimeRange) String() string { @@ -519,7 +505,7 @@ func (*TimeRange) ProtoMessage() {} func (x *TimeRange) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -648,92 +634,6 @@ func file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_init() { if File_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Extension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*RegisteredExtension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*MasterArbitration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*Uint128); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*Role); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*History); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*TimeRange); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_github_com_openconfig_gnmi_proto_gnmi_ext_gnmi_ext_proto_msgTypes[0].OneofWrappers = []any{ (*Extension_RegisteredExt)(nil), (*Extension_MasterArbitration)(nil), diff --git a/api/go/github.com/openconfig/gnmi/proto/target/target.pb.go b/api/go/github.com/openconfig/gnmi/proto/target/target.pb.go index 1d8bdcf02..168a726d8 100644 --- a/api/go/github.com/openconfig/gnmi/proto/target/target.pb.go +++ b/api/go/github.com/openconfig/gnmi/proto/target/target.pb.go @@ -16,7 +16,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: github.com/openconfig/gnmi/proto/target/target.proto @@ -70,11 +70,9 @@ type Configuration struct { func (x *Configuration) Reset() { *x = Configuration{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Configuration) String() string { @@ -85,7 +83,7 @@ func (*Configuration) ProtoMessage() {} func (x *Configuration) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -148,11 +146,9 @@ type Target struct { func (x *Target) Reset() { *x = Target{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Target) String() string { @@ -163,7 +159,7 @@ func (*Target) ProtoMessage() {} func (x *Target) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -221,11 +217,9 @@ type Credentials struct { func (x *Credentials) Reset() { *x = Credentials{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Credentials) String() string { @@ -236,7 +230,7 @@ func (*Credentials) ProtoMessage() {} func (x *Credentials) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -372,44 +366,6 @@ func file_github_com_openconfig_gnmi_proto_target_target_proto_init() { if File_github_com_openconfig_gnmi_proto_target_target_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Configuration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Target); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_proto_target_target_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*Credentials); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/go/github.com/openconfig/gnmi/testing/fake/proto/fake.pb.go b/api/go/github.com/openconfig/gnmi/testing/fake/proto/fake.pb.go index 0c0a049ba..1beb87208 100644 --- a/api/go/github.com/openconfig/gnmi/testing/fake/proto/fake.pb.go +++ b/api/go/github.com/openconfig/gnmi/testing/fake/proto/fake.pb.go @@ -4,7 +4,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: github.com/openconfig/gnmi/testing/fake/proto/fake.proto @@ -140,11 +140,9 @@ type Configuration struct { func (x *Configuration) Reset() { *x = Configuration{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Configuration) String() string { @@ -155,7 +153,7 @@ func (*Configuration) ProtoMessage() {} func (x *Configuration) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -188,11 +186,9 @@ type Credentials struct { func (x *Credentials) Reset() { *x = Credentials{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Credentials) String() string { @@ -203,7 +199,7 @@ func (*Credentials) ProtoMessage() {} func (x *Credentials) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -287,11 +283,9 @@ type Config struct { func (x *Config) Reset() { *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Config) String() string { @@ -302,7 +296,7 @@ func (*Config) ProtoMessage() {} func (x *Config) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -463,11 +457,9 @@ type FixedGenerator struct { func (x *FixedGenerator) Reset() { *x = FixedGenerator{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FixedGenerator) String() string { @@ -478,7 +470,7 @@ func (*FixedGenerator) ProtoMessage() {} func (x *FixedGenerator) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -511,11 +503,9 @@ type RandomGenerator struct { func (x *RandomGenerator) Reset() { *x = RandomGenerator{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RandomGenerator) String() string { @@ -526,7 +516,7 @@ func (*RandomGenerator) ProtoMessage() {} func (x *RandomGenerator) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -564,11 +554,9 @@ type DeleteValue struct { func (x *DeleteValue) Reset() { *x = DeleteValue{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteValue) String() string { @@ -579,7 +567,7 @@ func (*DeleteValue) ProtoMessage() {} func (x *DeleteValue) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -632,11 +620,9 @@ type Value struct { func (x *Value) Reset() { *x = Value{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Value) String() string { @@ -647,7 +633,7 @@ func (*Value) ProtoMessage() {} func (x *Value) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -824,11 +810,9 @@ type Timestamp struct { func (x *Timestamp) Reset() { *x = Timestamp{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Timestamp) String() string { @@ -839,7 +823,7 @@ func (*Timestamp) ProtoMessage() {} func (x *Timestamp) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -896,11 +880,9 @@ type IntValue struct { func (x *IntValue) Reset() { *x = IntValue{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *IntValue) String() string { @@ -911,7 +893,7 @@ func (*IntValue) ProtoMessage() {} func (x *IntValue) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -989,11 +971,9 @@ type IntRange struct { func (x *IntRange) Reset() { *x = IntRange{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *IntRange) String() string { @@ -1004,7 +984,7 @@ func (*IntRange) ProtoMessage() {} func (x *IntRange) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1061,11 +1041,9 @@ type IntList struct { func (x *IntList) Reset() { *x = IntList{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *IntList) String() string { @@ -1076,7 +1054,7 @@ func (*IntList) ProtoMessage() {} func (x *IntList) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1126,11 +1104,9 @@ type DoubleValue struct { func (x *DoubleValue) Reset() { *x = DoubleValue{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DoubleValue) String() string { @@ -1141,7 +1117,7 @@ func (*DoubleValue) ProtoMessage() {} func (x *DoubleValue) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1218,11 +1194,9 @@ type DoubleRange struct { func (x *DoubleRange) Reset() { *x = DoubleRange{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DoubleRange) String() string { @@ -1233,7 +1207,7 @@ func (*DoubleRange) ProtoMessage() {} func (x *DoubleRange) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1290,11 +1264,9 @@ type DoubleList struct { func (x *DoubleList) Reset() { *x = DoubleList{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DoubleList) String() string { @@ -1305,7 +1277,7 @@ func (*DoubleList) ProtoMessage() {} func (x *DoubleList) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1352,11 +1324,9 @@ type StringValue struct { func (x *StringValue) Reset() { *x = StringValue{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StringValue) String() string { @@ -1367,7 +1337,7 @@ func (*StringValue) ProtoMessage() {} func (x *StringValue) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1427,11 +1397,9 @@ type StringList struct { func (x *StringList) Reset() { *x = StringList{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StringList) String() string { @@ -1442,7 +1410,7 @@ func (*StringList) ProtoMessage() {} func (x *StringList) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1489,11 +1457,9 @@ type StringListValue struct { func (x *StringListValue) Reset() { *x = StringListValue{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *StringListValue) String() string { @@ -1504,7 +1470,7 @@ func (*StringListValue) ProtoMessage() {} func (x *StringListValue) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1568,11 +1534,9 @@ type BoolValue struct { func (x *BoolValue) Reset() { *x = BoolValue{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BoolValue) String() string { @@ -1583,7 +1547,7 @@ func (*BoolValue) ProtoMessage() {} func (x *BoolValue) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1643,11 +1607,9 @@ type BoolList struct { func (x *BoolList) Reset() { *x = BoolList{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *BoolList) String() string { @@ -1658,7 +1620,7 @@ func (*BoolList) ProtoMessage() {} func (x *BoolList) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1708,11 +1670,9 @@ type UintValue struct { func (x *UintValue) Reset() { *x = UintValue{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UintValue) String() string { @@ -1723,7 +1683,7 @@ func (*UintValue) ProtoMessage() {} func (x *UintValue) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1801,11 +1761,9 @@ type UintRange struct { func (x *UintRange) Reset() { *x = UintRange{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UintRange) String() string { @@ -1816,7 +1774,7 @@ func (*UintRange) ProtoMessage() {} func (x *UintRange) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1873,11 +1831,9 @@ type UintList struct { func (x *UintList) Reset() { *x = UintList{} - if protoimpl.UnsafeEnabled { - mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UintList) String() string { @@ -1888,7 +1844,7 @@ func (*UintList) ProtoMessage() {} func (x *UintList) ProtoReflect() protoreflect.Message { mi := &file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2225,272 +2181,6 @@ func file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_init() { if File_github_com_openconfig_gnmi_testing_fake_proto_fake_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Configuration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Credentials); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*Config); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*FixedGenerator); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*RandomGenerator); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*DeleteValue); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*Value); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*Timestamp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*IntValue); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*IntRange); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*IntList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*DoubleValue); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*DoubleRange); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*DoubleList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*StringValue); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*StringList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*StringListValue); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*BoolValue); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*BoolList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*UintValue); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*UintRange); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*UintList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_github_com_openconfig_gnmi_testing_fake_proto_fake_proto_msgTypes[2].OneofWrappers = []any{ (*Config_Custom)(nil), (*Config_Random)(nil), diff --git a/api/go/gosdn/app/app.pb.go b/api/go/gosdn/app/app.pb.go index 30ffd0da2..8064592bd 100644 --- a/api/go/gosdn/app/app.pb.go +++ b/api/go/gosdn/app/app.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: gosdn/app/app.proto @@ -36,11 +36,9 @@ type AppRegisterRequest struct { func (x *AppRegisterRequest) Reset() { *x = AppRegisterRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_app_app_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_app_app_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AppRegisterRequest) String() string { @@ -51,7 +49,7 @@ func (*AppRegisterRequest) ProtoMessage() {} func (x *AppRegisterRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_app_app_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -98,11 +96,9 @@ type AppRegisterResponse struct { func (x *AppRegisterResponse) Reset() { *x = AppRegisterResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_app_app_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_app_app_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AppRegisterResponse) String() string { @@ -113,7 +109,7 @@ func (*AppRegisterResponse) ProtoMessage() {} func (x *AppRegisterResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_app_app_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -153,11 +149,9 @@ type AppDeregisterRequest struct { func (x *AppDeregisterRequest) Reset() { *x = AppDeregisterRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_app_app_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_app_app_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AppDeregisterRequest) String() string { @@ -168,7 +162,7 @@ func (*AppDeregisterRequest) ProtoMessage() {} func (x *AppDeregisterRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_app_app_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -207,11 +201,9 @@ type AppDeregisterResponse struct { func (x *AppDeregisterResponse) Reset() { *x = AppDeregisterResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_app_app_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_app_app_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AppDeregisterResponse) String() string { @@ -222,7 +214,7 @@ func (*AppDeregisterResponse) ProtoMessage() {} func (x *AppDeregisterResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_app_app_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -336,56 +328,6 @@ func file_gosdn_app_app_proto_init() { if File_gosdn_app_app_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_gosdn_app_app_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*AppRegisterRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_app_app_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*AppRegisterResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_app_app_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*AppDeregisterRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_app_app_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*AppDeregisterResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/go/gosdn/configurationmanagement/configurationmanagement.pb.go b/api/go/gosdn/configurationmanagement/configurationmanagement.pb.go index c999d4db4..b4600ce3f 100644 --- a/api/go/gosdn/configurationmanagement/configurationmanagement.pb.go +++ b/api/go/gosdn/configurationmanagement/configurationmanagement.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: gosdn/configurationmanagement/configurationmanagement.proto @@ -34,11 +34,9 @@ type ExportSDNConfigRequest struct { func (x *ExportSDNConfigRequest) Reset() { *x = ExportSDNConfigRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_configurationmanagement_configurationmanagement_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_configurationmanagement_configurationmanagement_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExportSDNConfigRequest) String() string { @@ -49,7 +47,7 @@ func (*ExportSDNConfigRequest) ProtoMessage() {} func (x *ExportSDNConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_configurationmanagement_configurationmanagement_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -89,11 +87,9 @@ type ExportSDNConfigResponse struct { func (x *ExportSDNConfigResponse) Reset() { *x = ExportSDNConfigResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_configurationmanagement_configurationmanagement_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_configurationmanagement_configurationmanagement_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExportSDNConfigResponse) String() string { @@ -104,7 +100,7 @@ func (*ExportSDNConfigResponse) ProtoMessage() {} func (x *ExportSDNConfigResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_configurationmanagement_configurationmanagement_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -145,11 +141,9 @@ type ImportSDNConfigRequest struct { func (x *ImportSDNConfigRequest) Reset() { *x = ImportSDNConfigRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_configurationmanagement_configurationmanagement_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_configurationmanagement_configurationmanagement_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ImportSDNConfigRequest) String() string { @@ -160,7 +154,7 @@ func (*ImportSDNConfigRequest) ProtoMessage() {} func (x *ImportSDNConfigRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_configurationmanagement_configurationmanagement_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -206,11 +200,9 @@ type ImportSDNConfigResponse struct { func (x *ImportSDNConfigResponse) Reset() { *x = ImportSDNConfigResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_configurationmanagement_configurationmanagement_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_configurationmanagement_configurationmanagement_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ImportSDNConfigResponse) String() string { @@ -221,7 +213,7 @@ func (*ImportSDNConfigResponse) ProtoMessage() {} func (x *ImportSDNConfigResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_configurationmanagement_configurationmanagement_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -343,56 +335,6 @@ func file_gosdn_configurationmanagement_configurationmanagement_proto_init() { if File_gosdn_configurationmanagement_configurationmanagement_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_gosdn_configurationmanagement_configurationmanagement_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*ExportSDNConfigRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_configurationmanagement_configurationmanagement_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*ExportSDNConfigResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_configurationmanagement_configurationmanagement_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ImportSDNConfigRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_configurationmanagement_configurationmanagement_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ImportSDNConfigResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/go/gosdn/conflict/conflict.pb.go b/api/go/gosdn/conflict/conflict.pb.go index b43d09bf5..a1c9d5c44 100644 --- a/api/go/gosdn/conflict/conflict.pb.go +++ b/api/go/gosdn/conflict/conflict.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: gosdn/conflict/conflict.proto @@ -31,11 +31,9 @@ type Metadata struct { func (x *Metadata) Reset() { *x = Metadata{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_conflict_conflict_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_conflict_conflict_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Metadata) String() string { @@ -46,7 +44,7 @@ func (*Metadata) ProtoMessage() {} func (x *Metadata) ProtoReflect() protoreflect.Message { mi := &file_gosdn_conflict_conflict_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -115,20 +113,6 @@ func file_gosdn_conflict_conflict_proto_init() { if File_gosdn_conflict_conflict_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_gosdn_conflict_conflict_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Metadata); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/go/gosdn/csbi/csbi.pb.go b/api/go/gosdn/csbi/csbi.pb.go index 6fd657bc9..55f5c6d63 100644 --- a/api/go/gosdn/csbi/csbi.pb.go +++ b/api/go/gosdn/csbi/csbi.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: gosdn/csbi/csbi.proto @@ -92,11 +92,9 @@ type Syn struct { func (x *Syn) Reset() { *x = Syn{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_csbi_csbi_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_csbi_csbi_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Syn) String() string { @@ -107,7 +105,7 @@ func (*Syn) ProtoMessage() {} func (x *Syn) ProtoReflect() protoreflect.Message { mi := &file_gosdn_csbi_csbi_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -154,11 +152,9 @@ type Ack struct { func (x *Ack) Reset() { *x = Ack{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_csbi_csbi_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_csbi_csbi_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Ack) String() string { @@ -169,7 +165,7 @@ func (*Ack) ProtoMessage() {} func (x *Ack) ProtoReflect() protoreflect.Message { mi := &file_gosdn_csbi_csbi_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -210,11 +206,9 @@ type GetRequest struct { func (x *GetRequest) Reset() { *x = GetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_csbi_csbi_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_csbi_csbi_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRequest) String() string { @@ -225,7 +219,7 @@ func (*GetRequest) ProtoMessage() {} func (x *GetRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_csbi_csbi_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -273,11 +267,9 @@ type GetPayloadRequest struct { func (x *GetPayloadRequest) Reset() { *x = GetPayloadRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_csbi_csbi_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_csbi_csbi_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPayloadRequest) String() string { @@ -288,7 +280,7 @@ func (*GetPayloadRequest) ProtoMessage() {} func (x *GetPayloadRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_csbi_csbi_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -335,11 +327,9 @@ type GetResponse struct { func (x *GetResponse) Reset() { *x = GetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_csbi_csbi_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_csbi_csbi_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetResponse) String() string { @@ -350,7 +340,7 @@ func (*GetResponse) ProtoMessage() {} func (x *GetResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_csbi_csbi_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -391,11 +381,9 @@ type Deployment struct { func (x *Deployment) Reset() { *x = Deployment{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_csbi_csbi_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_csbi_csbi_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Deployment) String() string { @@ -406,7 +394,7 @@ func (*Deployment) ProtoMessage() {} func (x *Deployment) ProtoReflect() protoreflect.Message { mi := &file_gosdn_csbi_csbi_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -453,11 +441,9 @@ type CreateRequest struct { func (x *CreateRequest) Reset() { *x = CreateRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_csbi_csbi_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_csbi_csbi_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateRequest) String() string { @@ -468,7 +454,7 @@ func (*CreateRequest) ProtoMessage() {} func (x *CreateRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_csbi_csbi_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -508,11 +494,9 @@ type CreateResponse struct { func (x *CreateResponse) Reset() { *x = CreateResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_csbi_csbi_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_csbi_csbi_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateResponse) String() string { @@ -523,7 +507,7 @@ func (*CreateResponse) ProtoMessage() {} func (x *CreateResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_csbi_csbi_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -562,11 +546,9 @@ type Payload struct { func (x *Payload) Reset() { *x = Payload{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_csbi_csbi_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_csbi_csbi_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Payload) String() string { @@ -577,7 +559,7 @@ func (*Payload) ProtoMessage() {} func (x *Payload) ProtoReflect() protoreflect.Message { mi := &file_gosdn_csbi_csbi_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -610,11 +592,9 @@ type DeleteRequest struct { func (x *DeleteRequest) Reset() { *x = DeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_csbi_csbi_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_csbi_csbi_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteRequest) String() string { @@ -625,7 +605,7 @@ func (*DeleteRequest) ProtoMessage() {} func (x *DeleteRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_csbi_csbi_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -664,11 +644,9 @@ type DeleteResponse struct { func (x *DeleteResponse) Reset() { *x = DeleteResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_csbi_csbi_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_csbi_csbi_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteResponse) String() string { @@ -679,7 +657,7 @@ func (*DeleteResponse) ProtoMessage() {} func (x *DeleteResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_csbi_csbi_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -869,140 +847,6 @@ func file_gosdn_csbi_csbi_proto_init() { if File_gosdn_csbi_csbi_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_gosdn_csbi_csbi_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Syn); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_csbi_csbi_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Ack); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_csbi_csbi_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*GetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_csbi_csbi_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*GetPayloadRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_csbi_csbi_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*GetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_csbi_csbi_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*Deployment); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_csbi_csbi_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*CreateRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_csbi_csbi_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*CreateResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_csbi_csbi_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*Payload); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_csbi_csbi_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_csbi_csbi_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*DeleteResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/go/gosdn/networkelement/networkelement.pb.go b/api/go/gosdn/networkelement/networkelement.pb.go index 6ed237be7..a58431fdb 100644 --- a/api/go/gosdn/networkelement/networkelement.pb.go +++ b/api/go/gosdn/networkelement/networkelement.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: gosdn/networkelement/networkelement.proto @@ -303,11 +303,9 @@ type UpdateNetworkElementRequest struct { func (x *UpdateNetworkElementRequest) Reset() { *x = UpdateNetworkElementRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateNetworkElementRequest) String() string { @@ -318,7 +316,7 @@ func (*UpdateNetworkElementRequest) ProtoMessage() {} func (x *UpdateNetworkElementRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -357,11 +355,9 @@ type UpdateNetworkElementResponse struct { func (x *UpdateNetworkElementResponse) Reset() { *x = UpdateNetworkElementResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateNetworkElementResponse) String() string { @@ -372,7 +368,7 @@ func (*UpdateNetworkElementResponse) ProtoMessage() {} func (x *UpdateNetworkElementResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -413,11 +409,9 @@ type ManagedNetworkElement struct { func (x *ManagedNetworkElement) Reset() { *x = ManagedNetworkElement{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ManagedNetworkElement) String() string { @@ -428,7 +422,7 @@ func (*ManagedNetworkElement) ProtoMessage() {} func (x *ManagedNetworkElement) ProtoReflect() protoreflect.Message { mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -526,11 +520,9 @@ type FlattenedManagedNetworkElement struct { func (x *FlattenedManagedNetworkElement) Reset() { *x = FlattenedManagedNetworkElement{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FlattenedManagedNetworkElement) String() string { @@ -541,7 +533,7 @@ func (*FlattenedManagedNetworkElement) ProtoMessage() {} func (x *FlattenedManagedNetworkElement) ProtoReflect() protoreflect.Message { mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -595,11 +587,9 @@ type GetAllRequest struct { func (x *GetAllRequest) Reset() { *x = GetAllRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAllRequest) String() string { @@ -610,7 +600,7 @@ func (*GetAllRequest) ProtoMessage() {} func (x *GetAllRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -653,11 +643,9 @@ type GetAllResponse struct { func (x *GetAllResponse) Reset() { *x = GetAllResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAllResponse) String() string { @@ -668,7 +656,7 @@ func (*GetAllResponse) ProtoMessage() {} func (x *GetAllResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -715,11 +703,9 @@ type GetAllFlattenedRequest struct { func (x *GetAllFlattenedRequest) Reset() { *x = GetAllFlattenedRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAllFlattenedRequest) String() string { @@ -730,7 +716,7 @@ func (*GetAllFlattenedRequest) ProtoMessage() {} func (x *GetAllFlattenedRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -773,11 +759,9 @@ type GetAllFlattenedResponse struct { func (x *GetAllFlattenedResponse) Reset() { *x = GetAllFlattenedResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAllFlattenedResponse) String() string { @@ -788,7 +772,7 @@ func (*GetAllFlattenedResponse) ProtoMessage() {} func (x *GetAllFlattenedResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -824,6 +808,112 @@ func (x *GetAllFlattenedResponse) GetMne() []*FlattenedManagedNetworkElement { return nil } +type ParseYangRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch. + Yang string `protobuf:"bytes,2,opt,name=yang,proto3" json:"yang,omitempty"` +} + +func (x *ParseYangRequest) Reset() { + *x = ParseYangRequest{} + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ParseYangRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ParseYangRequest) ProtoMessage() {} + +func (x *ParseYangRequest) ProtoReflect() protoreflect.Message { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ParseYangRequest.ProtoReflect.Descriptor instead. +func (*ParseYangRequest) Descriptor() ([]byte, []int) { + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{8} +} + +func (x *ParseYangRequest) GetTimestamp() int64 { + if x != nil { + return x.Timestamp + } + return 0 +} + +func (x *ParseYangRequest) GetYang() string { + if x != nil { + return x.Yang + } + return "" +} + +type ParseYangResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Timestamp in nanoseconds since Epoch. + Json string `protobuf:"bytes,2,opt,name=json,proto3" json:"json,omitempty"` +} + +func (x *ParseYangResponse) Reset() { + *x = ParseYangResponse{} + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ParseYangResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ParseYangResponse) ProtoMessage() {} + +func (x *ParseYangResponse) ProtoReflect() protoreflect.Message { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ParseYangResponse.ProtoReflect.Descriptor instead. +func (*ParseYangResponse) Descriptor() ([]byte, []int) { + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{9} +} + +func (x *ParseYangResponse) GetTimestamp() int64 { + if x != nil { + return x.Timestamp + } + return 0 +} + +func (x *ParseYangResponse) GetJson() string { + if x != nil { + return x.Json + } + return "" +} + type GetRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -836,11 +926,9 @@ type GetRequest struct { func (x *GetRequest) Reset() { *x = GetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRequest) String() string { @@ -850,8 +938,8 @@ func (x *GetRequest) String() string { func (*GetRequest) ProtoMessage() {} func (x *GetRequest) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[10] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -863,7 +951,7 @@ func (x *GetRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRequest.ProtoReflect.Descriptor instead. func (*GetRequest) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{8} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{10} } func (x *GetRequest) GetTimestamp() int64 { @@ -901,11 +989,9 @@ type GetResponse struct { func (x *GetResponse) Reset() { *x = GetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetResponse) String() string { @@ -915,8 +1001,8 @@ func (x *GetResponse) String() string { func (*GetResponse) ProtoMessage() {} func (x *GetResponse) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[11] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -928,7 +1014,7 @@ func (x *GetResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetResponse.ProtoReflect.Descriptor instead. func (*GetResponse) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{9} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{11} } func (x *GetResponse) GetTimestamp() int64 { @@ -964,11 +1050,9 @@ type GetFlattenedRequest struct { func (x *GetFlattenedRequest) Reset() { *x = GetFlattenedRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFlattenedRequest) String() string { @@ -978,8 +1062,8 @@ func (x *GetFlattenedRequest) String() string { func (*GetFlattenedRequest) ProtoMessage() {} func (x *GetFlattenedRequest) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[12] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -991,7 +1075,7 @@ func (x *GetFlattenedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFlattenedRequest.ProtoReflect.Descriptor instead. func (*GetFlattenedRequest) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{10} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{12} } func (x *GetFlattenedRequest) GetTimestamp() int64 { @@ -1029,11 +1113,9 @@ type GetFlattenedResponse struct { func (x *GetFlattenedResponse) Reset() { *x = GetFlattenedResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetFlattenedResponse) String() string { @@ -1043,8 +1125,8 @@ func (x *GetFlattenedResponse) String() string { func (*GetFlattenedResponse) ProtoMessage() {} func (x *GetFlattenedResponse) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[13] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1056,7 +1138,7 @@ func (x *GetFlattenedResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFlattenedResponse.ProtoReflect.Descriptor instead. func (*GetFlattenedResponse) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{11} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{13} } func (x *GetFlattenedResponse) GetTimestamp() int64 { @@ -1096,11 +1178,9 @@ type SetMne struct { func (x *SetMne) Reset() { *x = SetMne{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetMne) String() string { @@ -1110,8 +1190,8 @@ func (x *SetMne) String() string { func (*SetMne) ProtoMessage() {} func (x *SetMne) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[14] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1123,7 +1203,7 @@ func (x *SetMne) ProtoReflect() protoreflect.Message { // Deprecated: Use SetMne.ProtoReflect.Descriptor instead. func (*SetMne) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{12} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{14} } func (x *SetMne) GetAddress() string { @@ -1187,11 +1267,9 @@ type AddListRequest struct { func (x *AddListRequest) Reset() { *x = AddListRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddListRequest) String() string { @@ -1201,8 +1279,8 @@ func (x *AddListRequest) String() string { func (*AddListRequest) ProtoMessage() {} func (x *AddListRequest) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[15] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1214,7 +1292,7 @@ func (x *AddListRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AddListRequest.ProtoReflect.Descriptor instead. func (*AddListRequest) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{13} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{15} } func (x *AddListRequest) GetTimestamp() int64 { @@ -1249,11 +1327,9 @@ type AddListResponse struct { func (x *AddListResponse) Reset() { *x = AddListResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddListResponse) String() string { @@ -1263,8 +1339,8 @@ func (x *AddListResponse) String() string { func (*AddListResponse) ProtoMessage() {} func (x *AddListResponse) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[16] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1276,7 +1352,7 @@ func (x *AddListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AddListResponse.ProtoReflect.Descriptor instead. func (*AddListResponse) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{14} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{16} } func (x *AddListResponse) GetTimestamp() int64 { @@ -1306,11 +1382,9 @@ type GetPathRequest struct { func (x *GetPathRequest) Reset() { *x = GetPathRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPathRequest) String() string { @@ -1320,8 +1394,8 @@ func (x *GetPathRequest) String() string { func (*GetPathRequest) ProtoMessage() {} func (x *GetPathRequest) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[17] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1333,7 +1407,7 @@ func (x *GetPathRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPathRequest.ProtoReflect.Descriptor instead. func (*GetPathRequest) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{15} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{17} } func (x *GetPathRequest) GetTimestamp() int64 { @@ -1378,11 +1452,9 @@ type GetPathResponse struct { func (x *GetPathResponse) Reset() { *x = GetPathResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPathResponse) String() string { @@ -1392,8 +1464,8 @@ func (x *GetPathResponse) String() string { func (*GetPathResponse) ProtoMessage() {} func (x *GetPathResponse) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[18] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1405,7 +1477,7 @@ func (x *GetPathResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPathResponse.ProtoReflect.Descriptor instead. func (*GetPathResponse) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{16} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{18} } func (x *GetPathResponse) GetTimestamp() int64 { @@ -1442,11 +1514,9 @@ type GetIntendedPathRequest struct { func (x *GetIntendedPathRequest) Reset() { *x = GetIntendedPathRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetIntendedPathRequest) String() string { @@ -1456,8 +1526,8 @@ func (x *GetIntendedPathRequest) String() string { func (*GetIntendedPathRequest) ProtoMessage() {} func (x *GetIntendedPathRequest) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[19] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1469,7 +1539,7 @@ func (x *GetIntendedPathRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetIntendedPathRequest.ProtoReflect.Descriptor instead. func (*GetIntendedPathRequest) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{17} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{19} } func (x *GetIntendedPathRequest) GetTimestamp() int64 { @@ -1512,11 +1582,9 @@ type GetIntendedPathResponse struct { func (x *GetIntendedPathResponse) Reset() { *x = GetIntendedPathResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetIntendedPathResponse) String() string { @@ -1526,8 +1594,8 @@ func (x *GetIntendedPathResponse) String() string { func (*GetIntendedPathResponse) ProtoMessage() {} func (x *GetIntendedPathResponse) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[20] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1539,7 +1607,7 @@ func (x *GetIntendedPathResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetIntendedPathResponse.ProtoReflect.Descriptor instead. func (*GetIntendedPathResponse) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{18} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{20} } func (x *GetIntendedPathResponse) GetTimestamp() int64 { @@ -1574,11 +1642,9 @@ type SetResponse struct { func (x *SetResponse) Reset() { *x = SetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetResponse) String() string { @@ -1588,8 +1654,8 @@ func (x *SetResponse) String() string { func (*SetResponse) ProtoMessage() {} func (x *SetResponse) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[21] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1601,7 +1667,7 @@ func (x *SetResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SetResponse.ProtoReflect.Descriptor instead. func (*SetResponse) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{19} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{21} } func (x *SetResponse) GetTimestamp() int64 { @@ -1630,11 +1696,9 @@ type SetPathListRequest struct { func (x *SetPathListRequest) Reset() { *x = SetPathListRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetPathListRequest) String() string { @@ -1644,8 +1708,8 @@ func (x *SetPathListRequest) String() string { func (*SetPathListRequest) ProtoMessage() {} func (x *SetPathListRequest) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[22] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1657,7 +1721,7 @@ func (x *SetPathListRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetPathListRequest.ProtoReflect.Descriptor instead. func (*SetPathListRequest) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{20} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{22} } func (x *SetPathListRequest) GetTimestamp() int64 { @@ -1692,11 +1756,9 @@ type SetPathListResponse struct { func (x *SetPathListResponse) Reset() { *x = SetPathListResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetPathListResponse) String() string { @@ -1706,8 +1768,8 @@ func (x *SetPathListResponse) String() string { func (*SetPathListResponse) ProtoMessage() {} func (x *SetPathListResponse) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[23] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1719,7 +1781,7 @@ func (x *SetPathListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SetPathListResponse.ProtoReflect.Descriptor instead. func (*SetPathListResponse) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{21} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{23} } func (x *SetPathListResponse) GetTimestamp() int64 { @@ -1748,11 +1810,9 @@ type DeleteRequest struct { func (x *DeleteRequest) Reset() { *x = DeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteRequest) String() string { @@ -1762,8 +1822,8 @@ func (x *DeleteRequest) String() string { func (*DeleteRequest) ProtoMessage() {} func (x *DeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[24] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1775,7 +1835,7 @@ func (x *DeleteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRequest.ProtoReflect.Descriptor instead. func (*DeleteRequest) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{22} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{24} } func (x *DeleteRequest) GetTimestamp() int64 { @@ -1809,11 +1869,9 @@ type DeleteResponse struct { func (x *DeleteResponse) Reset() { *x = DeleteResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteResponse) String() string { @@ -1823,8 +1881,8 @@ func (x *DeleteResponse) String() string { func (*DeleteResponse) ProtoMessage() {} func (x *DeleteResponse) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[25] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1836,7 +1894,7 @@ func (x *DeleteResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteResponse.ProtoReflect.Descriptor instead. func (*DeleteResponse) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{23} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{25} } func (x *DeleteResponse) GetTimestamp() int64 { @@ -1859,11 +1917,9 @@ type Change struct { func (x *Change) Reset() { *x = Change{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Change) String() string { @@ -1873,8 +1929,8 @@ func (x *Change) String() string { func (*Change) ProtoMessage() {} func (x *Change) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[26] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1886,7 +1942,7 @@ func (x *Change) ProtoReflect() protoreflect.Message { // Deprecated: Use Change.ProtoReflect.Descriptor instead. func (*Change) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{24} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{26} } func (x *Change) GetId() string { @@ -1930,11 +1986,9 @@ type ChangeRequest struct { func (x *ChangeRequest) Reset() { *x = ChangeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ChangeRequest) String() string { @@ -1944,8 +1998,8 @@ func (x *ChangeRequest) String() string { func (*ChangeRequest) ProtoMessage() {} func (x *ChangeRequest) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[27] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1957,7 +2011,7 @@ func (x *ChangeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangeRequest.ProtoReflect.Descriptor instead. func (*ChangeRequest) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{25} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{27} } func (x *ChangeRequest) GetMneid() string { @@ -1999,11 +2053,9 @@ type SetChange struct { func (x *SetChange) Reset() { *x = SetChange{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetChange) String() string { @@ -2013,8 +2065,8 @@ func (x *SetChange) String() string { func (*SetChange) ProtoMessage() {} func (x *SetChange) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[28] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2026,7 +2078,7 @@ func (x *SetChange) ProtoReflect() protoreflect.Message { // Deprecated: Use SetChange.ProtoReflect.Descriptor instead. func (*SetChange) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{26} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{28} } func (x *SetChange) GetCuid() string { @@ -2054,11 +2106,9 @@ type GetChangeListRequest struct { func (x *GetChangeListRequest) Reset() { *x = GetChangeListRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetChangeListRequest) String() string { @@ -2068,8 +2118,8 @@ func (x *GetChangeListRequest) String() string { func (*GetChangeListRequest) ProtoMessage() {} func (x *GetChangeListRequest) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[29] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2081,7 +2131,7 @@ func (x *GetChangeListRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetChangeListRequest.ProtoReflect.Descriptor instead. func (*GetChangeListRequest) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{27} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{29} } func (x *GetChangeListRequest) GetTimestamp() int64 { @@ -2112,11 +2162,9 @@ type GetChangeListResponse struct { func (x *GetChangeListResponse) Reset() { *x = GetChangeListResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetChangeListResponse) String() string { @@ -2126,8 +2174,8 @@ func (x *GetChangeListResponse) String() string { func (*GetChangeListResponse) ProtoMessage() {} func (x *GetChangeListResponse) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[30] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2139,7 +2187,7 @@ func (x *GetChangeListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetChangeListResponse.ProtoReflect.Descriptor instead. func (*GetChangeListResponse) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{28} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{30} } func (x *GetChangeListResponse) GetTimestamp() int64 { @@ -2175,11 +2223,9 @@ type GetChangeRequest struct { func (x *GetChangeRequest) Reset() { *x = GetChangeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetChangeRequest) String() string { @@ -2189,8 +2235,8 @@ func (x *GetChangeRequest) String() string { func (*GetChangeRequest) ProtoMessage() {} func (x *GetChangeRequest) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[31] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2202,7 +2248,7 @@ func (x *GetChangeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetChangeRequest.ProtoReflect.Descriptor instead. func (*GetChangeRequest) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{29} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{31} } func (x *GetChangeRequest) GetTimestamp() int64 { @@ -2240,11 +2286,9 @@ type GetChangeResponse struct { func (x *GetChangeResponse) Reset() { *x = GetChangeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetChangeResponse) String() string { @@ -2254,8 +2298,8 @@ func (x *GetChangeResponse) String() string { func (*GetChangeResponse) ProtoMessage() {} func (x *GetChangeResponse) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[32] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2267,7 +2311,7 @@ func (x *GetChangeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetChangeResponse.ProtoReflect.Descriptor instead. func (*GetChangeResponse) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{30} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{32} } func (x *GetChangeResponse) GetTimestamp() int64 { @@ -2303,11 +2347,9 @@ type SetChangeListRequest struct { func (x *SetChangeListRequest) Reset() { *x = SetChangeListRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetChangeListRequest) String() string { @@ -2317,8 +2359,8 @@ func (x *SetChangeListRequest) String() string { func (*SetChangeListRequest) ProtoMessage() {} func (x *SetChangeListRequest) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[33] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2330,7 +2372,7 @@ func (x *SetChangeListRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetChangeListRequest.ProtoReflect.Descriptor instead. func (*SetChangeListRequest) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{31} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{33} } func (x *SetChangeListRequest) GetTimestamp() int64 { @@ -2365,11 +2407,9 @@ type SetChangeListResponse struct { func (x *SetChangeListResponse) Reset() { *x = SetChangeListResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetChangeListResponse) String() string { @@ -2379,8 +2419,8 @@ func (x *SetChangeListResponse) String() string { func (*SetChangeListResponse) ProtoMessage() {} func (x *SetChangeListResponse) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[34] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2392,7 +2432,7 @@ func (x *SetChangeListResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SetChangeListResponse.ProtoReflect.Descriptor instead. func (*SetChangeListResponse) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{32} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{34} } func (x *SetChangeListResponse) GetTimestamp() int64 { @@ -2422,11 +2462,9 @@ type SubscriptionList struct { func (x *SubscriptionList) Reset() { *x = SubscriptionList{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[33] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SubscriptionList) String() string { @@ -2436,8 +2474,8 @@ func (x *SubscriptionList) String() string { func (*SubscriptionList) ProtoMessage() {} func (x *SubscriptionList) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[33] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[35] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2449,7 +2487,7 @@ func (x *SubscriptionList) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionList.ProtoReflect.Descriptor instead. func (*SubscriptionList) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{33} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{35} } func (x *SubscriptionList) GetSubscription() []*Subscription { @@ -2478,11 +2516,9 @@ type Subscription struct { func (x *Subscription) Reset() { *x = Subscription{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[34] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Subscription) String() string { @@ -2492,8 +2528,8 @@ func (x *Subscription) String() string { func (*Subscription) ProtoMessage() {} func (x *Subscription) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[34] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[36] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2505,7 +2541,7 @@ func (x *Subscription) ProtoReflect() protoreflect.Message { // Deprecated: Use Subscription.ProtoReflect.Descriptor instead. func (*Subscription) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{34} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{36} } func (x *Subscription) GetPath() string { @@ -2542,11 +2578,9 @@ type SubscribePathRequest struct { func (x *SubscribePathRequest) Reset() { *x = SubscribePathRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[35] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SubscribePathRequest) String() string { @@ -2556,8 +2590,8 @@ func (x *SubscribePathRequest) String() string { func (*SubscribePathRequest) ProtoMessage() {} func (x *SubscribePathRequest) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[35] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[37] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2569,7 +2603,7 @@ func (x *SubscribePathRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribePathRequest.ProtoReflect.Descriptor instead. func (*SubscribePathRequest) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{35} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{37} } func (x *SubscribePathRequest) GetTimestamp() int64 { @@ -2611,11 +2645,9 @@ type SubscribePathResponse struct { func (x *SubscribePathResponse) Reset() { *x = SubscribePathResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[36] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SubscribePathResponse) String() string { @@ -2625,8 +2657,8 @@ func (x *SubscribePathResponse) String() string { func (*SubscribePathResponse) ProtoMessage() {} func (x *SubscribePathResponse) ProtoReflect() protoreflect.Message { - mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[36] - if protoimpl.UnsafeEnabled && x != nil { + mi := &file_gosdn_networkelement_networkelement_proto_msgTypes[38] + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2638,7 +2670,7 @@ func (x *SubscribePathResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribePathResponse.ProtoReflect.Descriptor instead. func (*SubscribePathResponse) Descriptor() ([]byte, []int) { - return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{36} + return file_gosdn_networkelement_networkelement_proto_rawDescGZIP(), []int{38} } func (x *SubscribePathResponse) GetTimestamp() int64 { @@ -2762,326 +2794,343 @@ var file_gosdn_networkelement_networkelement_proto_rawDesc = []byte{ 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x46, 0x6c, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x65, 0x64, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x03, 0x6d, - 0x6e, 0x65, 0x22, 0x62, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, - 0x0a, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, - 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x03, - 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, - 0x01, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x9f, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x6e, 0x65, 0x22, 0x4c, 0x0a, 0x10, 0x50, 0x61, 0x72, 0x73, 0x65, 0x59, 0x61, 0x6e, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50, 0x72, - 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x3d, 0x0a, 0x03, 0x6d, 0x6e, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x03, 0x6d, 0x6e, 0x65, 0x22, 0x6b, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x46, - 0x6c, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, - 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, - 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x03, 0x70, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, - 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0xb1, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, - 0x74, 0x74, 0x65, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a, 0x03, - 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, - 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, - 0x64, 0x12, 0x46, 0x0a, 0x03, 0x6d, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, - 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x46, 0x6c, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x65, 0x64, 0x4d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x03, 0x6d, 0x6e, 0x65, 0x22, 0x81, 0x02, 0x0a, 0x06, 0x53, 0x65, - 0x74, 0x4d, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, - 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, - 0x6d, 0x6e, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6d, 0x6e, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, - 0x6f, 0x72, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x14, 0x67, 0x6e, 0x6d, 0x69, 0x5f, 0x73, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x12, 0x67, 0x6e, 0x6d, 0x69, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, - 0x65, 0x50, 0x61, 0x74, 0x68, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x6d, 0x6e, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6e, 0x65, 0x49, 0x64, 0x22, 0x80, 0x01, - 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x36, - 0x0a, 0x03, 0x6d, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, - 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, - 0x01, 0x52, 0x03, 0x6d, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x03, 0x70, 0x69, 0x64, - 0x22, 0x70, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x04, 0x79, 0x61, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x04, 0x79, 0x61, 0x6e, 0x67, + 0x22, 0x4d, 0x0a, 0x11, 0x50, 0x61, 0x72, 0x73, 0x65, 0x59, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x04, 0x6a, 0x73, 0x6f, 0x6e, 0x22, + 0x62, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x05, 0x6d, + 0x6e, 0x65, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, + 0x01, 0x01, 0x52, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x03, 0x70, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x03, + 0x70, 0x69, 0x64, 0x22, 0x9f, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x12, 0x3f, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x73, 0x22, 0x82, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x6d, 0x6e, 0x65, 0x69, - 0x64, 0x12, 0x1a, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, - 0x03, 0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, - 0x01, 0x01, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0xa3, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, - 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, + 0x70, 0x12, 0x33, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, + 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, + 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x3d, 0x0a, 0x03, 0x6d, 0x6e, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x03, 0x6d, 0x6e, 0x65, 0x22, 0x6b, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x74, + 0x74, 0x65, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x05, 0x6d, 0x6e, + 0x65, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, + 0x01, 0x52, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x03, 0x70, + 0x69, 0x64, 0x22, 0xb1, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x74, 0x74, 0x65, + 0x6e, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x3d, - 0x0a, 0x10, 0x6d, 0x6e, 0x65, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x6d, 0x6e, - 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9b, 0x01, - 0x0a, 0x16, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x50, 0x61, 0x74, - 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x6d, - 0x6e, 0x65, 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, - 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, - 0xc8, 0x01, 0x01, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x50, 0x61, 0x74, - 0x68, 0x12, 0x18, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, - 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0xab, 0x01, 0x0a, 0x17, - 0x47, 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x18, 0x40, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50, - 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x3d, 0x0a, 0x10, 0x6d, 0x6e, - 0x65, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x6d, 0x6e, 0x65, 0x4e, 0x6f, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3b, 0x0a, 0x0b, 0x53, 0x65, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x90, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x50, 0x61, - 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, + 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x46, + 0x0a, 0x03, 0x6d, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, + 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x2e, 0x46, 0x6c, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x65, 0x64, 0x4d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x64, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x52, 0x03, 0x6d, 0x6e, 0x65, 0x22, 0x81, 0x02, 0x0a, 0x06, 0x53, 0x65, 0x74, 0x4d, 0x6e, + 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x70, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x6e, 0x65, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x6e, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4b, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, + 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, + 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x30, 0x0a, 0x14, 0x67, 0x6e, 0x6d, 0x69, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x62, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x12, 0x67, 0x6e, 0x6d, 0x69, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x61, + 0x74, 0x68, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x6d, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6e, 0x65, 0x49, 0x64, 0x22, 0x80, 0x01, 0x0a, 0x0e, 0x41, + 0x64, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4a, 0x0a, 0x0e, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x74, 0x0a, 0x13, 0x53, 0x65, 0x74, - 0x50, 0x61, 0x74, 0x68, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x36, 0x0a, 0x03, 0x6d, + 0x6e, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, + 0x53, 0x65, 0x74, 0x4d, 0x6e, 0x65, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x03, + 0x6d, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x70, 0x0a, + 0x0f, 0x41, 0x64, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3f, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x22, - 0x5d, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, - 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, - 0x12, 0x1c, 0x0a, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x22, 0x2e, - 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x8b, - 0x01, 0x0a, 0x06, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x67, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x05, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, - 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x04, 0x64, 0x69, 0x66, 0x66, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x64, 0x69, 0x66, 0x66, 0x22, 0xa8, 0x01, 0x0a, - 0x0d, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, - 0x0a, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, - 0x6e, 0x65, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x52, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x12, 0x26, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x39, 0x0a, 0x06, - 0x61, 0x70, 0x69, 0x5f, 0x6f, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x67, - 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x70, 0x69, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x05, 0x61, 0x70, 0x69, 0x4f, 0x70, 0x22, 0x50, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x63, 0x75, 0x69, 0x64, 0x12, 0x2f, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x02, 0x6f, 0x70, 0x22, 0x4e, 0x0a, 0x14, 0x47, 0x65, 0x74, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, - 0x18, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, - 0x03, 0xc8, 0x01, 0x01, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0xa0, 0x01, 0x0a, 0x15, 0x47, 0x65, - 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x12, 0x33, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, - 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x66, 0x0a, 0x10, - 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1a, - 0x0a, 0x04, 0x63, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, - 0x03, 0xc8, 0x01, 0x01, 0x52, 0x04, 0x63, 0x75, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x03, 0x70, 0x69, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, - 0x03, 0x70, 0x69, 0x64, 0x22, 0x9c, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, - 0x64, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x34, 0x0a, - 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3f, 0x0a, 0x06, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x73, - 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x06, 0xba, 0x48, 0x03, - 0xc8, 0x01, 0x01, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x03, 0x70, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, - 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x76, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3f, 0x0a, 0x09, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, - 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x22, 0xa8, 0x01, - 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, - 0x73, 0x74, 0x12, 0x50, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, - 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, - 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xba, 0x48, - 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, - 0x01, 0x01, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x0c, 0x53, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x49, 0x0a, 0x0b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, - 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x73, - 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xba, 0x48, - 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x6f, 0x64, 0x65, - 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xb6, 0x01, 0x0a, 0x14, 0x53, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x82, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x18, - 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, - 0xc8, 0x01, 0x01, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x73, 0x64, + 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x1a, + 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, + 0x03, 0xc8, 0x01, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x03, 0x70, 0x69, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, + 0x03, 0x70, 0x69, 0x64, 0x22, 0xa3, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, + 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x3d, 0x0a, 0x10, 0x6d, + 0x6e, 0x65, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x6d, 0x6e, 0x65, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9b, 0x01, 0x0a, 0x16, 0x47, + 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x6d, 0x6e, 0x65, 0x69, + 0x64, 0x12, 0x2b, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x61, + 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, + 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x12, 0x18, + 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, + 0xc8, 0x01, 0x01, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0xab, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, + 0x49, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x40, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x12, 0x33, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x69, 0x6e, + 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, + 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x3d, 0x0a, 0x10, 0x6d, 0x6e, 0x65, 0x5f, 0x6e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x6d, 0x6e, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3b, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x22, 0x90, 0x01, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74, 0x68, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4a, 0x0a, 0x0e, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0x74, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x50, 0x61, 0x74, + 0x68, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3f, 0x0a, 0x09, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x22, 0x5d, 0x0a, 0x0d, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x70, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x1c, 0x0a, + 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, + 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x22, 0x2e, 0x0a, 0x0e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x8b, 0x01, 0x0a, 0x06, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x03, 0x61, 0x67, 0x65, 0x12, 0x37, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x26, 0x0a, 0x04, 0x64, 0x69, 0x66, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x64, 0x69, 0x66, 0x66, 0x22, 0xa8, 0x01, 0x0a, 0x0d, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6d, + 0x6e, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x6e, 0x65, 0x69, + 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0a, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x50, 0x61, 0x74, 0x68, 0x52, 0x04, 0x70, 0x61, 0x74, + 0x68, 0x12, 0x26, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x10, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x61, 0x70, 0x69, + 0x5f, 0x6f, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, - 0x74, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6c, 0x69, - 0x73, 0x74, 0x22, 0x74, 0x0a, 0x15, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, - 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, + 0x2e, 0x41, 0x70, 0x69, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x61, + 0x70, 0x69, 0x4f, 0x70, 0x22, 0x50, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x63, 0x75, 0x69, 0x64, 0x12, 0x2f, 0x0a, 0x02, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x02, 0x6f, 0x70, 0x22, 0x4e, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, + 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x18, 0x0a, 0x03, + 0x70, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, + 0x01, 0x52, 0x03, 0x70, 0x69, 0x64, 0x22, 0xa0, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x33, + 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, + 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, + 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, + 0x70, 0x6e, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x66, 0x0a, 0x10, 0x47, 0x65, 0x74, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x04, 0x63, + 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, + 0x01, 0x52, 0x04, 0x63, 0x75, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x03, 0x70, 0x69, + 0x64, 0x22, 0x9c, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a, 0x03, 0x70, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x70, 0x6e, 0x64, 0x2e, 0x50, + 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x44, + 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x70, 0x6e, 0x64, 0x12, 0x34, 0x0a, 0x06, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x73, + 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x22, 0x8f, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3f, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, + 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, + 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x03, 0x70, + 0x69, 0x64, 0x22, 0x76, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3d, 0x0a, 0x10, 0x6d, 0x6e, 0x65, - 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x6d, 0x6e, 0x65, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x9c, 0x01, 0x0a, 0x0b, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x48, 0x41, 0x4e, - 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, - 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, - 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, - 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, - 0x46, 0x49, 0x52, 0x4d, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x48, 0x41, 0x4e, - 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x4e, 0x53, 0x49, - 0x53, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x04, 0x2a, 0x7c, 0x0a, 0x0c, 0x41, 0x70, 0x69, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x50, 0x49, 0x5f, 0x4f, - 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x50, 0x49, 0x5f, 0x4f, 0x50, - 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x01, - 0x12, 0x19, 0x0a, 0x15, 0x41, 0x50, 0x49, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x41, - 0x50, 0x49, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4c, - 0x45, 0x54, 0x45, 0x10, 0x03, 0x2a, 0x69, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, - 0x10, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, - 0x45, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x54, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x50, 0x45, - 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, 0x10, 0x03, - 0x2a, 0x8b, 0x01, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, - 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x55, 0x42, 0x53, - 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4f, 0x4e, - 0x43, 0x45, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, - 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x4f, 0x4c, 0x4c, 0x10, 0x03, 0x2a, 0x7c, - 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x17, - 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x54, 0x52, - 0x45, 0x41, 0x4d, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, - 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x54, 0x52, - 0x45, 0x41, 0x4d, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, - 0x47, 0x45, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x10, 0x03, 0x32, 0xaf, 0x0d, 0x0a, - 0x15, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x93, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3f, 0x0a, 0x09, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, + 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, + 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x22, 0xa8, 0x01, 0x0a, 0x10, 0x53, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x50, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0xba, 0x48, 0x05, 0x92, 0x01, + 0x02, 0x08, 0x01, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x42, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x26, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, + 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, + 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x0c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x12, 0x49, 0x0a, 0x0b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, + 0x01, 0x52, 0x0a, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x27, 0x0a, + 0x0f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xb6, 0x01, 0x0a, 0x14, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, + 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, + 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x03, 0x70, + 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, + 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x48, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x06, + 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x74, 0x22, + 0x74, 0x0a, 0x15, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x61, 0x74, 0x68, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x3d, 0x0a, 0x10, 0x6d, 0x6e, 0x65, 0x5f, 0x6e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x67, 0x6e, 0x6d, 0x69, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x6d, 0x6e, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x9c, 0x01, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x1a, 0x0a, + 0x16, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, + 0x4d, 0x4d, 0x49, 0x54, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x48, 0x41, + 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, + 0x4d, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x4e, 0x53, 0x49, 0x53, 0x54, 0x45, + 0x4e, 0x54, 0x10, 0x04, 0x2a, 0x7c, 0x0a, 0x0c, 0x41, 0x70, 0x69, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x50, 0x49, 0x5f, 0x4f, 0x50, 0x45, 0x52, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x50, 0x49, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x19, 0x0a, + 0x15, 0x41, 0x50, 0x49, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, + 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x50, 0x49, 0x5f, + 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, + 0x10, 0x03, 0x2a, 0x69, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, + 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x01, + 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, + 0x4d, 0x4d, 0x49, 0x54, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, 0x10, 0x03, 0x2a, 0x8b, 0x01, + 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, + 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4f, 0x4e, 0x43, 0x45, 0x10, + 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x10, 0x02, 0x12, + 0x1a, 0x0a, 0x16, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x4f, 0x4c, 0x4c, 0x10, 0x03, 0x2a, 0x7c, 0x0a, 0x0a, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x54, 0x52, + 0x45, 0x41, 0x4d, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x44, 0x45, 0x46, + 0x49, 0x4e, 0x45, 0x44, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, + 0x02, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4d, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x10, 0x03, 0x32, 0xa2, 0x0e, 0x0a, 0x15, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x12, 0x93, 0x01, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x31, + 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, - 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2d, 0x65, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x53, 0x0a, 0x06, - 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x12, 0x23, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, + 0x22, 0x17, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2d, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x2f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x53, 0x0a, 0x06, 0x47, 0x65, 0x74, + 0x41, 0x6c, 0x6c, 0x12, 0x23, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, + 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, + 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, + 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, + 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x46, 0x6c, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x65, + 0x64, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x46, + 0x6c, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2d, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, + 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x46, 0x6c, 0x61, + 0x74, 0x74, 0x65, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0d, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x07, 0x12, 0x05, 0x2f, 0x6d, 0x6e, 0x65, 0x73, 0x12, 0x61, 0x0a, + 0x03, 0x47, 0x65, 0x74, 0x12, 0x20, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, - 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x6f, - 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x7d, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x46, 0x6c, 0x61, 0x74, 0x74, - 0x65, 0x6e, 0x65, 0x64, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, - 0x6c, 0x6c, 0x46, 0x6c, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, - 0x46, 0x6c, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x0d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x07, 0x12, 0x05, 0x2f, 0x6d, 0x6e, 0x65, 0x73, - 0x12, 0x61, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, 0x20, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x6f, 0x73, 0x64, - 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x6d, 0x6e, 0x65, 0x73, 0x2f, 0x7b, 0x6d, 0x6e, 0x65, - 0x69, 0x64, 0x7d, 0x12, 0x65, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x74, 0x74, 0x65, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x0f, 0x12, 0x0d, 0x2f, 0x6d, 0x6e, 0x65, 0x73, 0x2f, 0x7b, 0x6d, 0x6e, 0x65, 0x69, 0x64, 0x7d, + 0x12, 0x71, 0x0a, 0x09, 0x50, 0x61, 0x72, 0x73, 0x65, 0x59, 0x61, 0x6e, 0x67, 0x12, 0x26, 0x2e, + 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x59, 0x61, 0x6e, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x61, 0x72, + 0x73, 0x65, 0x59, 0x61, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, 0x2f, 0x79, 0x61, 0x6e, 0x67, 0x2f, 0x70, 0x61, + 0x72, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x65, 0x64, 0x12, 0x29, 0x2e, 0x67, 0x6f, 0x73, 0x64, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x74, 0x74, 0x65, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, @@ -3178,7 +3227,7 @@ func file_gosdn_networkelement_networkelement_proto_rawDescGZIP() []byte { } var file_gosdn_networkelement_networkelement_proto_enumTypes = make([]protoimpl.EnumInfo, 5) -var file_gosdn_networkelement_networkelement_proto_msgTypes = make([]protoimpl.MessageInfo, 37) +var file_gosdn_networkelement_networkelement_proto_msgTypes = make([]protoimpl.MessageInfo, 39) var file_gosdn_networkelement_networkelement_proto_goTypes = []any{ (ChangeState)(0), // 0: gosdn.networkelement.ChangeState (ApiOperation)(0), // 1: gosdn.networkelement.ApiOperation @@ -3193,113 +3242,117 @@ var file_gosdn_networkelement_networkelement_proto_goTypes = []any{ (*GetAllResponse)(nil), // 10: gosdn.networkelement.GetAllResponse (*GetAllFlattenedRequest)(nil), // 11: gosdn.networkelement.GetAllFlattenedRequest (*GetAllFlattenedResponse)(nil), // 12: gosdn.networkelement.GetAllFlattenedResponse - (*GetRequest)(nil), // 13: gosdn.networkelement.GetRequest - (*GetResponse)(nil), // 14: gosdn.networkelement.GetResponse - (*GetFlattenedRequest)(nil), // 15: gosdn.networkelement.GetFlattenedRequest - (*GetFlattenedResponse)(nil), // 16: gosdn.networkelement.GetFlattenedResponse - (*SetMne)(nil), // 17: gosdn.networkelement.SetMne - (*AddListRequest)(nil), // 18: gosdn.networkelement.AddListRequest - (*AddListResponse)(nil), // 19: gosdn.networkelement.AddListResponse - (*GetPathRequest)(nil), // 20: gosdn.networkelement.GetPathRequest - (*GetPathResponse)(nil), // 21: gosdn.networkelement.GetPathResponse - (*GetIntendedPathRequest)(nil), // 22: gosdn.networkelement.GetIntendedPathRequest - (*GetIntendedPathResponse)(nil), // 23: gosdn.networkelement.GetIntendedPathResponse - (*SetResponse)(nil), // 24: gosdn.networkelement.SetResponse - (*SetPathListRequest)(nil), // 25: gosdn.networkelement.SetPathListRequest - (*SetPathListResponse)(nil), // 26: gosdn.networkelement.SetPathListResponse - (*DeleteRequest)(nil), // 27: gosdn.networkelement.DeleteRequest - (*DeleteResponse)(nil), // 28: gosdn.networkelement.DeleteResponse - (*Change)(nil), // 29: gosdn.networkelement.Change - (*ChangeRequest)(nil), // 30: gosdn.networkelement.ChangeRequest - (*SetChange)(nil), // 31: gosdn.networkelement.SetChange - (*GetChangeListRequest)(nil), // 32: gosdn.networkelement.GetChangeListRequest - (*GetChangeListResponse)(nil), // 33: gosdn.networkelement.GetChangeListResponse - (*GetChangeRequest)(nil), // 34: gosdn.networkelement.GetChangeRequest - (*GetChangeResponse)(nil), // 35: gosdn.networkelement.GetChangeResponse - (*SetChangeListRequest)(nil), // 36: gosdn.networkelement.SetChangeListRequest - (*SetChangeListResponse)(nil), // 37: gosdn.networkelement.SetChangeListResponse - (*SubscriptionList)(nil), // 38: gosdn.networkelement.SubscriptionList - (*Subscription)(nil), // 39: gosdn.networkelement.Subscription - (*SubscribePathRequest)(nil), // 40: gosdn.networkelement.SubscribePathRequest - (*SubscribePathResponse)(nil), // 41: gosdn.networkelement.SubscribePathResponse - (*plugin_registry.Plugin)(nil), // 42: gosdn.plugin_registry.Plugin - (*gnmi.Notification)(nil), // 43: gnmi.Notification - (*transport.TransportOption)(nil), // 44: gosdn.transport.TransportOption - (*conflict.Metadata)(nil), // 45: gosdn.conflict.Metadata - (*pnd.PrincipalNetworkDomain)(nil), // 46: gosdn.pnd.PrincipalNetworkDomain - (*gnmi.Path)(nil), // 47: gnmi.Path - (*gnmi.TypedValue)(nil), // 48: gnmi.TypedValue + (*ParseYangRequest)(nil), // 13: gosdn.networkelement.ParseYangRequest + (*ParseYangResponse)(nil), // 14: gosdn.networkelement.ParseYangResponse + (*GetRequest)(nil), // 15: gosdn.networkelement.GetRequest + (*GetResponse)(nil), // 16: gosdn.networkelement.GetResponse + (*GetFlattenedRequest)(nil), // 17: gosdn.networkelement.GetFlattenedRequest + (*GetFlattenedResponse)(nil), // 18: gosdn.networkelement.GetFlattenedResponse + (*SetMne)(nil), // 19: gosdn.networkelement.SetMne + (*AddListRequest)(nil), // 20: gosdn.networkelement.AddListRequest + (*AddListResponse)(nil), // 21: gosdn.networkelement.AddListResponse + (*GetPathRequest)(nil), // 22: gosdn.networkelement.GetPathRequest + (*GetPathResponse)(nil), // 23: gosdn.networkelement.GetPathResponse + (*GetIntendedPathRequest)(nil), // 24: gosdn.networkelement.GetIntendedPathRequest + (*GetIntendedPathResponse)(nil), // 25: gosdn.networkelement.GetIntendedPathResponse + (*SetResponse)(nil), // 26: gosdn.networkelement.SetResponse + (*SetPathListRequest)(nil), // 27: gosdn.networkelement.SetPathListRequest + (*SetPathListResponse)(nil), // 28: gosdn.networkelement.SetPathListResponse + (*DeleteRequest)(nil), // 29: gosdn.networkelement.DeleteRequest + (*DeleteResponse)(nil), // 30: gosdn.networkelement.DeleteResponse + (*Change)(nil), // 31: gosdn.networkelement.Change + (*ChangeRequest)(nil), // 32: gosdn.networkelement.ChangeRequest + (*SetChange)(nil), // 33: gosdn.networkelement.SetChange + (*GetChangeListRequest)(nil), // 34: gosdn.networkelement.GetChangeListRequest + (*GetChangeListResponse)(nil), // 35: gosdn.networkelement.GetChangeListResponse + (*GetChangeRequest)(nil), // 36: gosdn.networkelement.GetChangeRequest + (*GetChangeResponse)(nil), // 37: gosdn.networkelement.GetChangeResponse + (*SetChangeListRequest)(nil), // 38: gosdn.networkelement.SetChangeListRequest + (*SetChangeListResponse)(nil), // 39: gosdn.networkelement.SetChangeListResponse + (*SubscriptionList)(nil), // 40: gosdn.networkelement.SubscriptionList + (*Subscription)(nil), // 41: gosdn.networkelement.Subscription + (*SubscribePathRequest)(nil), // 42: gosdn.networkelement.SubscribePathRequest + (*SubscribePathResponse)(nil), // 43: gosdn.networkelement.SubscribePathResponse + (*plugin_registry.Plugin)(nil), // 44: gosdn.plugin_registry.Plugin + (*gnmi.Notification)(nil), // 45: gnmi.Notification + (*transport.TransportOption)(nil), // 46: gosdn.transport.TransportOption + (*conflict.Metadata)(nil), // 47: gosdn.conflict.Metadata + (*pnd.PrincipalNetworkDomain)(nil), // 48: gosdn.pnd.PrincipalNetworkDomain + (*gnmi.Path)(nil), // 49: gnmi.Path + (*gnmi.TypedValue)(nil), // 50: gnmi.TypedValue } var file_gosdn_networkelement_networkelement_proto_depIdxs = []int32{ 7, // 0: gosdn.networkelement.UpdateNetworkElementRequest.network_element:type_name -> gosdn.networkelement.ManagedNetworkElement - 42, // 1: gosdn.networkelement.ManagedNetworkElement.plugin:type_name -> gosdn.plugin_registry.Plugin - 43, // 2: gosdn.networkelement.ManagedNetworkElement.mne_notification:type_name -> gnmi.Notification - 44, // 3: gosdn.networkelement.ManagedNetworkElement.transport_option:type_name -> gosdn.transport.TransportOption - 45, // 4: gosdn.networkelement.ManagedNetworkElement.metadata:type_name -> gosdn.conflict.Metadata - 46, // 5: gosdn.networkelement.GetAllResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain + 44, // 1: gosdn.networkelement.ManagedNetworkElement.plugin:type_name -> gosdn.plugin_registry.Plugin + 45, // 2: gosdn.networkelement.ManagedNetworkElement.mne_notification:type_name -> gnmi.Notification + 46, // 3: gosdn.networkelement.ManagedNetworkElement.transport_option:type_name -> gosdn.transport.TransportOption + 47, // 4: gosdn.networkelement.ManagedNetworkElement.metadata:type_name -> gosdn.conflict.Metadata + 48, // 5: gosdn.networkelement.GetAllResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain 7, // 6: gosdn.networkelement.GetAllResponse.mne:type_name -> gosdn.networkelement.ManagedNetworkElement - 46, // 7: gosdn.networkelement.GetAllFlattenedResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain + 48, // 7: gosdn.networkelement.GetAllFlattenedResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain 8, // 8: gosdn.networkelement.GetAllFlattenedResponse.mne:type_name -> gosdn.networkelement.FlattenedManagedNetworkElement - 46, // 9: gosdn.networkelement.GetResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain + 48, // 9: gosdn.networkelement.GetResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain 7, // 10: gosdn.networkelement.GetResponse.mne:type_name -> gosdn.networkelement.ManagedNetworkElement - 46, // 11: gosdn.networkelement.GetFlattenedResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain + 48, // 11: gosdn.networkelement.GetFlattenedResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain 8, // 12: gosdn.networkelement.GetFlattenedResponse.mne:type_name -> gosdn.networkelement.FlattenedManagedNetworkElement - 44, // 13: gosdn.networkelement.SetMne.transport_option:type_name -> gosdn.transport.TransportOption - 17, // 14: gosdn.networkelement.AddListRequest.mne:type_name -> gosdn.networkelement.SetMne - 24, // 15: gosdn.networkelement.AddListResponse.responses:type_name -> gosdn.networkelement.SetResponse - 46, // 16: gosdn.networkelement.GetPathResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain - 43, // 17: gosdn.networkelement.GetPathResponse.mne_notification:type_name -> gnmi.Notification - 46, // 18: gosdn.networkelement.GetIntendedPathResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain - 43, // 19: gosdn.networkelement.GetIntendedPathResponse.mne_notification:type_name -> gnmi.Notification - 30, // 20: gosdn.networkelement.SetPathListRequest.change_request:type_name -> gosdn.networkelement.ChangeRequest - 24, // 21: gosdn.networkelement.SetPathListResponse.responses:type_name -> gosdn.networkelement.SetResponse + 46, // 13: gosdn.networkelement.SetMne.transport_option:type_name -> gosdn.transport.TransportOption + 19, // 14: gosdn.networkelement.AddListRequest.mne:type_name -> gosdn.networkelement.SetMne + 26, // 15: gosdn.networkelement.AddListResponse.responses:type_name -> gosdn.networkelement.SetResponse + 48, // 16: gosdn.networkelement.GetPathResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain + 45, // 17: gosdn.networkelement.GetPathResponse.mne_notification:type_name -> gnmi.Notification + 48, // 18: gosdn.networkelement.GetIntendedPathResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain + 45, // 19: gosdn.networkelement.GetIntendedPathResponse.mne_notification:type_name -> gnmi.Notification + 32, // 20: gosdn.networkelement.SetPathListRequest.change_request:type_name -> gosdn.networkelement.ChangeRequest + 26, // 21: gosdn.networkelement.SetPathListResponse.responses:type_name -> gosdn.networkelement.SetResponse 0, // 22: gosdn.networkelement.Change.state:type_name -> gosdn.networkelement.ChangeState - 43, // 23: gosdn.networkelement.Change.diff:type_name -> gnmi.Notification - 47, // 24: gosdn.networkelement.ChangeRequest.path:type_name -> gnmi.Path - 48, // 25: gosdn.networkelement.ChangeRequest.value:type_name -> gnmi.TypedValue + 45, // 23: gosdn.networkelement.Change.diff:type_name -> gnmi.Notification + 49, // 24: gosdn.networkelement.ChangeRequest.path:type_name -> gnmi.Path + 50, // 25: gosdn.networkelement.ChangeRequest.value:type_name -> gnmi.TypedValue 1, // 26: gosdn.networkelement.ChangeRequest.api_op:type_name -> gosdn.networkelement.ApiOperation 2, // 27: gosdn.networkelement.SetChange.op:type_name -> gosdn.networkelement.Operation - 46, // 28: gosdn.networkelement.GetChangeListResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain - 29, // 29: gosdn.networkelement.GetChangeListResponse.change:type_name -> gosdn.networkelement.Change - 46, // 30: gosdn.networkelement.GetChangeResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain - 29, // 31: gosdn.networkelement.GetChangeResponse.change:type_name -> gosdn.networkelement.Change - 31, // 32: gosdn.networkelement.SetChangeListRequest.change:type_name -> gosdn.networkelement.SetChange - 24, // 33: gosdn.networkelement.SetChangeListResponse.responses:type_name -> gosdn.networkelement.SetResponse - 39, // 34: gosdn.networkelement.SubscriptionList.subscription:type_name -> gosdn.networkelement.Subscription + 48, // 28: gosdn.networkelement.GetChangeListResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain + 31, // 29: gosdn.networkelement.GetChangeListResponse.change:type_name -> gosdn.networkelement.Change + 48, // 30: gosdn.networkelement.GetChangeResponse.pnd:type_name -> gosdn.pnd.PrincipalNetworkDomain + 31, // 31: gosdn.networkelement.GetChangeResponse.change:type_name -> gosdn.networkelement.Change + 33, // 32: gosdn.networkelement.SetChangeListRequest.change:type_name -> gosdn.networkelement.SetChange + 26, // 33: gosdn.networkelement.SetChangeListResponse.responses:type_name -> gosdn.networkelement.SetResponse + 41, // 34: gosdn.networkelement.SubscriptionList.subscription:type_name -> gosdn.networkelement.Subscription 3, // 35: gosdn.networkelement.SubscriptionList.mode:type_name -> gosdn.networkelement.SubscriptionMode 4, // 36: gosdn.networkelement.Subscription.stream_mode:type_name -> gosdn.networkelement.StreamMode - 38, // 37: gosdn.networkelement.SubscribePathRequest.sublist:type_name -> gosdn.networkelement.SubscriptionList - 43, // 38: gosdn.networkelement.SubscribePathResponse.mne_notification:type_name -> gnmi.Notification + 40, // 37: gosdn.networkelement.SubscribePathRequest.sublist:type_name -> gosdn.networkelement.SubscriptionList + 45, // 38: gosdn.networkelement.SubscribePathResponse.mne_notification:type_name -> gnmi.Notification 5, // 39: gosdn.networkelement.NetworkElementService.Update:input_type -> gosdn.networkelement.UpdateNetworkElementRequest 9, // 40: gosdn.networkelement.NetworkElementService.GetAll:input_type -> gosdn.networkelement.GetAllRequest 11, // 41: gosdn.networkelement.NetworkElementService.GetAllFlattened:input_type -> gosdn.networkelement.GetAllFlattenedRequest - 13, // 42: gosdn.networkelement.NetworkElementService.Get:input_type -> gosdn.networkelement.GetRequest - 15, // 43: gosdn.networkelement.NetworkElementService.GetFlattened:input_type -> gosdn.networkelement.GetFlattenedRequest - 18, // 44: gosdn.networkelement.NetworkElementService.AddList:input_type -> gosdn.networkelement.AddListRequest - 20, // 45: gosdn.networkelement.NetworkElementService.GetPath:input_type -> gosdn.networkelement.GetPathRequest - 22, // 46: gosdn.networkelement.NetworkElementService.GetIntendedPath:input_type -> gosdn.networkelement.GetIntendedPathRequest - 25, // 47: gosdn.networkelement.NetworkElementService.SetPathList:input_type -> gosdn.networkelement.SetPathListRequest - 27, // 48: gosdn.networkelement.NetworkElementService.Delete:input_type -> gosdn.networkelement.DeleteRequest - 32, // 49: gosdn.networkelement.NetworkElementService.GetChangeList:input_type -> gosdn.networkelement.GetChangeListRequest - 34, // 50: gosdn.networkelement.NetworkElementService.GetChange:input_type -> gosdn.networkelement.GetChangeRequest - 36, // 51: gosdn.networkelement.NetworkElementService.SetChangeList:input_type -> gosdn.networkelement.SetChangeListRequest - 40, // 52: gosdn.networkelement.NetworkElementService.SubscribePath:input_type -> gosdn.networkelement.SubscribePathRequest - 6, // 53: gosdn.networkelement.NetworkElementService.Update:output_type -> gosdn.networkelement.UpdateNetworkElementResponse - 10, // 54: gosdn.networkelement.NetworkElementService.GetAll:output_type -> gosdn.networkelement.GetAllResponse - 12, // 55: gosdn.networkelement.NetworkElementService.GetAllFlattened:output_type -> gosdn.networkelement.GetAllFlattenedResponse - 14, // 56: gosdn.networkelement.NetworkElementService.Get:output_type -> gosdn.networkelement.GetResponse - 16, // 57: gosdn.networkelement.NetworkElementService.GetFlattened:output_type -> gosdn.networkelement.GetFlattenedResponse - 19, // 58: gosdn.networkelement.NetworkElementService.AddList:output_type -> gosdn.networkelement.AddListResponse - 21, // 59: gosdn.networkelement.NetworkElementService.GetPath:output_type -> gosdn.networkelement.GetPathResponse - 23, // 60: gosdn.networkelement.NetworkElementService.GetIntendedPath:output_type -> gosdn.networkelement.GetIntendedPathResponse - 26, // 61: gosdn.networkelement.NetworkElementService.SetPathList:output_type -> gosdn.networkelement.SetPathListResponse - 28, // 62: gosdn.networkelement.NetworkElementService.Delete:output_type -> gosdn.networkelement.DeleteResponse - 33, // 63: gosdn.networkelement.NetworkElementService.GetChangeList:output_type -> gosdn.networkelement.GetChangeListResponse - 35, // 64: gosdn.networkelement.NetworkElementService.GetChange:output_type -> gosdn.networkelement.GetChangeResponse - 37, // 65: gosdn.networkelement.NetworkElementService.SetChangeList:output_type -> gosdn.networkelement.SetChangeListResponse - 41, // 66: gosdn.networkelement.NetworkElementService.SubscribePath:output_type -> gosdn.networkelement.SubscribePathResponse - 53, // [53:67] is the sub-list for method output_type - 39, // [39:53] is the sub-list for method input_type + 15, // 42: gosdn.networkelement.NetworkElementService.Get:input_type -> gosdn.networkelement.GetRequest + 13, // 43: gosdn.networkelement.NetworkElementService.ParseYang:input_type -> gosdn.networkelement.ParseYangRequest + 17, // 44: gosdn.networkelement.NetworkElementService.GetFlattened:input_type -> gosdn.networkelement.GetFlattenedRequest + 20, // 45: gosdn.networkelement.NetworkElementService.AddList:input_type -> gosdn.networkelement.AddListRequest + 22, // 46: gosdn.networkelement.NetworkElementService.GetPath:input_type -> gosdn.networkelement.GetPathRequest + 24, // 47: gosdn.networkelement.NetworkElementService.GetIntendedPath:input_type -> gosdn.networkelement.GetIntendedPathRequest + 27, // 48: gosdn.networkelement.NetworkElementService.SetPathList:input_type -> gosdn.networkelement.SetPathListRequest + 29, // 49: gosdn.networkelement.NetworkElementService.Delete:input_type -> gosdn.networkelement.DeleteRequest + 34, // 50: gosdn.networkelement.NetworkElementService.GetChangeList:input_type -> gosdn.networkelement.GetChangeListRequest + 36, // 51: gosdn.networkelement.NetworkElementService.GetChange:input_type -> gosdn.networkelement.GetChangeRequest + 38, // 52: gosdn.networkelement.NetworkElementService.SetChangeList:input_type -> gosdn.networkelement.SetChangeListRequest + 42, // 53: gosdn.networkelement.NetworkElementService.SubscribePath:input_type -> gosdn.networkelement.SubscribePathRequest + 6, // 54: gosdn.networkelement.NetworkElementService.Update:output_type -> gosdn.networkelement.UpdateNetworkElementResponse + 10, // 55: gosdn.networkelement.NetworkElementService.GetAll:output_type -> gosdn.networkelement.GetAllResponse + 12, // 56: gosdn.networkelement.NetworkElementService.GetAllFlattened:output_type -> gosdn.networkelement.GetAllFlattenedResponse + 16, // 57: gosdn.networkelement.NetworkElementService.Get:output_type -> gosdn.networkelement.GetResponse + 14, // 58: gosdn.networkelement.NetworkElementService.ParseYang:output_type -> gosdn.networkelement.ParseYangResponse + 18, // 59: gosdn.networkelement.NetworkElementService.GetFlattened:output_type -> gosdn.networkelement.GetFlattenedResponse + 21, // 60: gosdn.networkelement.NetworkElementService.AddList:output_type -> gosdn.networkelement.AddListResponse + 23, // 61: gosdn.networkelement.NetworkElementService.GetPath:output_type -> gosdn.networkelement.GetPathResponse + 25, // 62: gosdn.networkelement.NetworkElementService.GetIntendedPath:output_type -> gosdn.networkelement.GetIntendedPathResponse + 28, // 63: gosdn.networkelement.NetworkElementService.SetPathList:output_type -> gosdn.networkelement.SetPathListResponse + 30, // 64: gosdn.networkelement.NetworkElementService.Delete:output_type -> gosdn.networkelement.DeleteResponse + 35, // 65: gosdn.networkelement.NetworkElementService.GetChangeList:output_type -> gosdn.networkelement.GetChangeListResponse + 37, // 66: gosdn.networkelement.NetworkElementService.GetChange:output_type -> gosdn.networkelement.GetChangeResponse + 39, // 67: gosdn.networkelement.NetworkElementService.SetChangeList:output_type -> gosdn.networkelement.SetChangeListResponse + 43, // 68: gosdn.networkelement.NetworkElementService.SubscribePath:output_type -> gosdn.networkelement.SubscribePathResponse + 54, // [54:69] is the sub-list for method output_type + 39, // [39:54] is the sub-list for method input_type 39, // [39:39] is the sub-list for extension type_name 39, // [39:39] is the sub-list for extension extendee 0, // [0:39] is the sub-list for field type_name @@ -3310,459 +3363,13 @@ func file_gosdn_networkelement_networkelement_proto_init() { if File_gosdn_networkelement_networkelement_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_gosdn_networkelement_networkelement_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*UpdateNetworkElementRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*UpdateNetworkElementResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ManagedNetworkElement); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*FlattenedManagedNetworkElement); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*GetAllRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*GetAllResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*GetAllFlattenedRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*GetAllFlattenedResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*GetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*GetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*GetFlattenedRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*GetFlattenedResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*SetMne); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*AddListRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*AddListResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*GetPathRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*GetPathResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*GetIntendedPathRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*GetIntendedPathResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*SetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*SetPathListRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*SetPathListResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*DeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[23].Exporter = func(v any, i int) any { - switch v := v.(*DeleteResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[24].Exporter = func(v any, i int) any { - switch v := v.(*Change); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[25].Exporter = func(v any, i int) any { - switch v := v.(*ChangeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[26].Exporter = func(v any, i int) any { - switch v := v.(*SetChange); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[27].Exporter = func(v any, i int) any { - switch v := v.(*GetChangeListRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[28].Exporter = func(v any, i int) any { - switch v := v.(*GetChangeListResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[29].Exporter = func(v any, i int) any { - switch v := v.(*GetChangeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[30].Exporter = func(v any, i int) any { - switch v := v.(*GetChangeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[31].Exporter = func(v any, i int) any { - switch v := v.(*SetChangeListRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[32].Exporter = func(v any, i int) any { - switch v := v.(*SetChangeListResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[33].Exporter = func(v any, i int) any { - switch v := v.(*SubscriptionList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[34].Exporter = func(v any, i int) any { - switch v := v.(*Subscription); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[35].Exporter = func(v any, i int) any { - switch v := v.(*SubscribePathRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_networkelement_networkelement_proto_msgTypes[36].Exporter = func(v any, i int) any { - switch v := v.(*SubscribePathResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_gosdn_networkelement_networkelement_proto_rawDesc, NumEnums: 5, - NumMessages: 37, + NumMessages: 39, NumExtensions: 0, NumServices: 1, }, diff --git a/api/go/gosdn/networkelement/networkelement.pb.gw.go b/api/go/gosdn/networkelement/networkelement.pb.gw.go index fc794e3c4..642198688 100644 --- a/api/go/gosdn/networkelement/networkelement.pb.gw.go +++ b/api/go/gosdn/networkelement/networkelement.pb.gw.go @@ -163,6 +163,42 @@ func local_request_NetworkElementService_Get_0(ctx context.Context, marshaler ru } +var ( + filter_NetworkElementService_ParseYang_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_NetworkElementService_ParseYang_0(ctx context.Context, marshaler runtime.Marshaler, client NetworkElementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ParseYangRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NetworkElementService_ParseYang_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ParseYang(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_NetworkElementService_ParseYang_0(ctx context.Context, marshaler runtime.Marshaler, server NetworkElementServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ParseYangRequest + var metadata runtime.ServerMetadata + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NetworkElementService_ParseYang_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ParseYang(ctx, &protoReq) + return msg, metadata, err + +} + func request_NetworkElementService_AddList_0(ctx context.Context, marshaler runtime.Marshaler, client NetworkElementServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq AddListRequest var metadata runtime.ServerMetadata @@ -679,6 +715,31 @@ func RegisterNetworkElementServiceHandlerServer(ctx context.Context, mux *runtim }) + mux.Handle("GET", pattern_NetworkElementService_ParseYang_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/ParseYang", runtime.WithHTTPPathPattern("/yang/parse")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_NetworkElementService_ParseYang_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_NetworkElementService_ParseYang_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_NetworkElementService_AddList_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -986,6 +1047,28 @@ func RegisterNetworkElementServiceHandlerClient(ctx context.Context, mux *runtim }) + mux.Handle("GET", pattern_NetworkElementService_ParseYang_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/gosdn.networkelement.NetworkElementService/ParseYang", runtime.WithHTTPPathPattern("/yang/parse")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_NetworkElementService_ParseYang_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_NetworkElementService_ParseYang_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_NetworkElementService_AddList_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -1172,6 +1255,8 @@ var ( pattern_NetworkElementService_Get_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"mnes", "mneid"}, "")) + pattern_NetworkElementService_ParseYang_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"yang", "parse"}, "")) + pattern_NetworkElementService_AddList_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"mnes"}, "")) pattern_NetworkElementService_GetPath_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"mnes", "mneid", "paths", "path"}, "")) @@ -1196,6 +1281,8 @@ var ( forward_NetworkElementService_Get_0 = runtime.ForwardResponseMessage + forward_NetworkElementService_ParseYang_0 = runtime.ForwardResponseMessage + forward_NetworkElementService_AddList_0 = runtime.ForwardResponseMessage forward_NetworkElementService_GetPath_0 = runtime.ForwardResponseMessage diff --git a/api/go/gosdn/networkelement/networkelement_grpc.pb.go b/api/go/gosdn/networkelement/networkelement_grpc.pb.go index bab93548d..5bd523242 100644 --- a/api/go/gosdn/networkelement/networkelement_grpc.pb.go +++ b/api/go/gosdn/networkelement/networkelement_grpc.pb.go @@ -23,6 +23,7 @@ const ( NetworkElementService_GetAll_FullMethodName = "/gosdn.networkelement.NetworkElementService/GetAll" NetworkElementService_GetAllFlattened_FullMethodName = "/gosdn.networkelement.NetworkElementService/GetAllFlattened" NetworkElementService_Get_FullMethodName = "/gosdn.networkelement.NetworkElementService/Get" + NetworkElementService_ParseYang_FullMethodName = "/gosdn.networkelement.NetworkElementService/ParseYang" NetworkElementService_GetFlattened_FullMethodName = "/gosdn.networkelement.NetworkElementService/GetFlattened" NetworkElementService_AddList_FullMethodName = "/gosdn.networkelement.NetworkElementService/AddList" NetworkElementService_GetPath_FullMethodName = "/gosdn.networkelement.NetworkElementService/GetPath" @@ -56,6 +57,9 @@ type NetworkElementServiceClient interface { // Allows to request a specific Managed Network Element which is managed by a // specific Principal Network Domain. Get(ctx context.Context, in *GetRequest, opts ...grpc.CallOption) (*GetResponse, error) + // Allows to request a specific Managed Network Element which is managed by a + // specific Principal Network Domain. + ParseYang(ctx context.Context, in *ParseYangRequest, opts ...grpc.CallOption) (*ParseYangResponse, error) // TODO: add http option // Allows to request a specific Managed Network Element which is managed by a // specific Principal Network Domain. A flattened version of a Managed @@ -140,6 +144,16 @@ func (c *networkElementServiceClient) Get(ctx context.Context, in *GetRequest, o return out, nil } +func (c *networkElementServiceClient) ParseYang(ctx context.Context, in *ParseYangRequest, opts ...grpc.CallOption) (*ParseYangResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ParseYangResponse) + err := c.cc.Invoke(ctx, NetworkElementService_ParseYang_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *networkElementServiceClient) GetFlattened(ctx context.Context, in *GetFlattenedRequest, opts ...grpc.CallOption) (*GetFlattenedResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetFlattenedResponse) @@ -270,6 +284,9 @@ type NetworkElementServiceServer interface { // Allows to request a specific Managed Network Element which is managed by a // specific Principal Network Domain. Get(context.Context, *GetRequest) (*GetResponse, error) + // Allows to request a specific Managed Network Element which is managed by a + // specific Principal Network Domain. + ParseYang(context.Context, *ParseYangRequest) (*ParseYangResponse, error) // TODO: add http option // Allows to request a specific Managed Network Element which is managed by a // specific Principal Network Domain. A flattened version of a Managed @@ -326,6 +343,9 @@ func (UnimplementedNetworkElementServiceServer) GetAllFlattened(context.Context, func (UnimplementedNetworkElementServiceServer) Get(context.Context, *GetRequest) (*GetResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Get not implemented") } +func (UnimplementedNetworkElementServiceServer) ParseYang(context.Context, *ParseYangRequest) (*ParseYangResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ParseYang not implemented") +} func (UnimplementedNetworkElementServiceServer) GetFlattened(context.Context, *GetFlattenedRequest) (*GetFlattenedResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetFlattened not implemented") } @@ -449,6 +469,24 @@ func _NetworkElementService_Get_Handler(srv interface{}, ctx context.Context, de return interceptor(ctx, in, info, handler) } +func _NetworkElementService_ParseYang_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ParseYangRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NetworkElementServiceServer).ParseYang(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NetworkElementService_ParseYang_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NetworkElementServiceServer).ParseYang(ctx, req.(*ParseYangRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _NetworkElementService_GetFlattened_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetFlattenedRequest) if err := dec(in); err != nil { @@ -645,6 +683,10 @@ var NetworkElementService_ServiceDesc = grpc.ServiceDesc{ MethodName: "Get", Handler: _NetworkElementService_Get_Handler, }, + { + MethodName: "ParseYang", + Handler: _NetworkElementService_ParseYang_Handler, + }, { MethodName: "GetFlattened", Handler: _NetworkElementService_GetFlattened_Handler, diff --git a/api/go/gosdn/plugin-internal/plugin-internal.pb.go b/api/go/gosdn/plugin-internal/plugin-internal.pb.go index 119fb45b0..490d4f78c 100644 --- a/api/go/gosdn/plugin-internal/plugin-internal.pb.go +++ b/api/go/gosdn/plugin-internal/plugin-internal.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: gosdn/plugin-internal/plugin-internal.proto @@ -32,11 +32,9 @@ type GetAvailablePluginsRequest struct { func (x *GetAvailablePluginsRequest) Reset() { *x = GetAvailablePluginsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_internal_plugin_internal_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_internal_plugin_internal_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAvailablePluginsRequest) String() string { @@ -47,7 +45,7 @@ func (*GetAvailablePluginsRequest) ProtoMessage() {} func (x *GetAvailablePluginsRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_internal_plugin_internal_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -80,11 +78,9 @@ type GetAvailablePluginsResponse struct { func (x *GetAvailablePluginsResponse) Reset() { *x = GetAvailablePluginsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_internal_plugin_internal_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_internal_plugin_internal_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAvailablePluginsResponse) String() string { @@ -95,7 +91,7 @@ func (*GetAvailablePluginsResponse) ProtoMessage() {} func (x *GetAvailablePluginsResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_internal_plugin_internal_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -135,11 +131,9 @@ type GetPluginSchemaRequest struct { func (x *GetPluginSchemaRequest) Reset() { *x = GetPluginSchemaRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_internal_plugin_internal_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_internal_plugin_internal_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPluginSchemaRequest) String() string { @@ -150,7 +144,7 @@ func (*GetPluginSchemaRequest) ProtoMessage() {} func (x *GetPluginSchemaRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_internal_plugin_internal_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -189,11 +183,9 @@ type PluginSchemaPayload struct { func (x *PluginSchemaPayload) Reset() { *x = PluginSchemaPayload{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_internal_plugin_internal_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_internal_plugin_internal_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PluginSchemaPayload) String() string { @@ -204,7 +196,7 @@ func (*PluginSchemaPayload) ProtoMessage() {} func (x *PluginSchemaPayload) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_internal_plugin_internal_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -318,56 +310,6 @@ func file_gosdn_plugin_internal_plugin_internal_proto_init() { if File_gosdn_plugin_internal_plugin_internal_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_gosdn_plugin_internal_plugin_internal_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetAvailablePluginsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_internal_plugin_internal_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetAvailablePluginsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_internal_plugin_internal_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*GetPluginSchemaRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_internal_plugin_internal_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*PluginSchemaPayload); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/go/gosdn/plugin-registry/plugin-registry.pb.go b/api/go/gosdn/plugin-registry/plugin-registry.pb.go index 44f88183f..7bb50e04f 100644 --- a/api/go/gosdn/plugin-registry/plugin-registry.pb.go +++ b/api/go/gosdn/plugin-registry/plugin-registry.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: gosdn/plugin-registry/plugin-registry.proto @@ -33,11 +33,9 @@ type GetRequest struct { func (x *GetRequest) Reset() { *x = GetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRequest) String() string { @@ -48,7 +46,7 @@ func (*GetRequest) ProtoMessage() {} func (x *GetRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -87,11 +85,9 @@ type GetAllRequest struct { func (x *GetAllRequest) Reset() { *x = GetAllRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAllRequest) String() string { @@ -102,7 +98,7 @@ func (*GetAllRequest) ProtoMessage() {} func (x *GetAllRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -138,11 +134,9 @@ type Query struct { func (x *Query) Reset() { *x = Query{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Query) String() string { @@ -153,7 +147,7 @@ func (*Query) ProtoMessage() {} func (x *Query) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -216,11 +210,9 @@ type GetResponse struct { func (x *GetResponse) Reset() { *x = GetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetResponse) String() string { @@ -231,7 +223,7 @@ func (*GetResponse) ProtoMessage() {} func (x *GetResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -271,11 +263,9 @@ type GetDownloadRequest struct { func (x *GetDownloadRequest) Reset() { *x = GetDownloadRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetDownloadRequest) String() string { @@ -286,7 +276,7 @@ func (*GetDownloadRequest) ProtoMessage() {} func (x *GetDownloadRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -325,11 +315,9 @@ type GetDownloadPayload struct { func (x *GetDownloadPayload) Reset() { *x = GetDownloadPayload{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetDownloadPayload) String() string { @@ -340,7 +328,7 @@ func (*GetDownloadPayload) ProtoMessage() {} func (x *GetDownloadPayload) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -373,11 +361,9 @@ type DeleteRequest struct { func (x *DeleteRequest) Reset() { *x = DeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteRequest) String() string { @@ -388,7 +374,7 @@ func (*DeleteRequest) ProtoMessage() {} func (x *DeleteRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -427,11 +413,9 @@ type DeleteResponse struct { func (x *DeleteResponse) Reset() { *x = DeleteResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteResponse) String() string { @@ -442,7 +426,7 @@ func (*DeleteResponse) ProtoMessage() {} func (x *DeleteResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -475,11 +459,9 @@ type Plugin struct { func (x *Plugin) Reset() { *x = Plugin{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Plugin) String() string { @@ -490,7 +472,7 @@ func (*Plugin) ProtoMessage() {} func (x *Plugin) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -532,11 +514,9 @@ type Manifest struct { func (x *Manifest) Reset() { *x = Manifest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Manifest) String() string { @@ -547,7 +527,7 @@ func (*Manifest) ProtoMessage() {} func (x *Manifest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -728,128 +708,6 @@ func file_gosdn_plugin_registry_plugin_registry_proto_init() { if File_gosdn_plugin_registry_plugin_registry_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetAllRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*Query); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*GetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*GetDownloadRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*GetDownloadPayload); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*DeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*DeleteResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*Plugin); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*Manifest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_gosdn_plugin_registry_plugin_registry_proto_msgTypes[2].OneofWrappers = []any{ (*Query_Id)(nil), (*Query_Name)(nil), diff --git a/api/go/gosdn/plugin/plugin.pb.go b/api/go/gosdn/plugin/plugin.pb.go index 3f6402531..9193b62ac 100644 --- a/api/go/gosdn/plugin/plugin.pb.go +++ b/api/go/gosdn/plugin/plugin.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: gosdn/plugin/plugin.proto @@ -35,11 +35,9 @@ type UnmarshalRequest struct { func (x *UnmarshalRequest) Reset() { *x = UnmarshalRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_plugin_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_plugin_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UnmarshalRequest) String() string { @@ -50,7 +48,7 @@ func (*UnmarshalRequest) ProtoMessage() {} func (x *UnmarshalRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_plugin_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -96,11 +94,9 @@ type UnmarshalResponse struct { func (x *UnmarshalResponse) Reset() { *x = UnmarshalResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_plugin_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_plugin_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UnmarshalResponse) String() string { @@ -111,7 +107,7 @@ func (*UnmarshalResponse) ProtoMessage() {} func (x *UnmarshalResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_plugin_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -144,11 +140,9 @@ type SetNodeRequest struct { func (x *SetNodeRequest) Reset() { *x = SetNodeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_plugin_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_plugin_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetNodeRequest) String() string { @@ -159,7 +153,7 @@ func (*SetNodeRequest) ProtoMessage() {} func (x *SetNodeRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_plugin_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -198,11 +192,9 @@ type SetNodeResponse struct { func (x *SetNodeResponse) Reset() { *x = SetNodeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_plugin_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_plugin_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SetNodeResponse) String() string { @@ -213,7 +205,7 @@ func (*SetNodeResponse) ProtoMessage() {} func (x *SetNodeResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_plugin_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -246,11 +238,9 @@ type GetNodeRequest struct { func (x *GetNodeRequest) Reset() { *x = GetNodeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_plugin_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_plugin_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetNodeRequest) String() string { @@ -261,7 +251,7 @@ func (*GetNodeRequest) ProtoMessage() {} func (x *GetNodeRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_plugin_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -300,11 +290,9 @@ type GetNodeResponse struct { func (x *GetNodeResponse) Reset() { *x = GetNodeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_plugin_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_plugin_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetNodeResponse) String() string { @@ -315,7 +303,7 @@ func (*GetNodeResponse) ProtoMessage() {} func (x *GetNodeResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_plugin_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -347,11 +335,9 @@ type DeleteNodeRequest struct { func (x *DeleteNodeRequest) Reset() { *x = DeleteNodeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_plugin_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_plugin_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteNodeRequest) String() string { @@ -362,7 +348,7 @@ func (*DeleteNodeRequest) ProtoMessage() {} func (x *DeleteNodeRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_plugin_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -394,11 +380,9 @@ type DeleteNodeResponse struct { func (x *DeleteNodeResponse) Reset() { *x = DeleteNodeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_plugin_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_plugin_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteNodeResponse) String() string { @@ -409,7 +393,7 @@ func (*DeleteNodeResponse) ProtoMessage() {} func (x *DeleteNodeResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_plugin_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -441,11 +425,9 @@ type ModelRequest struct { func (x *ModelRequest) Reset() { *x = ModelRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_plugin_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_plugin_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ModelRequest) String() string { @@ -456,7 +438,7 @@ func (*ModelRequest) ProtoMessage() {} func (x *ModelRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_plugin_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -488,11 +470,9 @@ type ModelResponse struct { func (x *ModelResponse) Reset() { *x = ModelResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_plugin_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_plugin_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ModelResponse) String() string { @@ -503,7 +483,7 @@ func (*ModelResponse) ProtoMessage() {} func (x *ModelResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_plugin_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -536,11 +516,9 @@ type DiffRequest struct { func (x *DiffRequest) Reset() { *x = DiffRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_plugin_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_plugin_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DiffRequest) String() string { @@ -551,7 +529,7 @@ func (*DiffRequest) ProtoMessage() {} func (x *DiffRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_plugin_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -590,11 +568,9 @@ type DiffResponse struct { func (x *DiffResponse) Reset() { *x = DiffResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_plugin_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_plugin_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DiffResponse) String() string { @@ -605,7 +581,7 @@ func (*DiffResponse) ProtoMessage() {} func (x *DiffResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_plugin_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -639,11 +615,9 @@ type ValidateChangeRequest struct { func (x *ValidateChangeRequest) Reset() { *x = ValidateChangeRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_plugin_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_plugin_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ValidateChangeRequest) String() string { @@ -654,7 +628,7 @@ func (*ValidateChangeRequest) ProtoMessage() {} func (x *ValidateChangeRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_plugin_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -700,11 +674,9 @@ type ValidateChangeResponse struct { func (x *ValidateChangeResponse) Reset() { *x = ValidateChangeResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_plugin_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_plugin_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ValidateChangeResponse) String() string { @@ -715,7 +687,7 @@ func (*ValidateChangeResponse) ProtoMessage() {} func (x *ValidateChangeResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_plugin_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -747,11 +719,9 @@ type PruneConfigFalseRequest struct { func (x *PruneConfigFalseRequest) Reset() { *x = PruneConfigFalseRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_plugin_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_plugin_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PruneConfigFalseRequest) String() string { @@ -762,7 +732,7 @@ func (*PruneConfigFalseRequest) ProtoMessage() {} func (x *PruneConfigFalseRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_plugin_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -794,11 +764,9 @@ type PruneConfigFalseResponse struct { func (x *PruneConfigFalseResponse) Reset() { *x = PruneConfigFalseResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_plugin_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_plugin_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PruneConfigFalseResponse) String() string { @@ -809,7 +777,7 @@ func (*PruneConfigFalseResponse) ProtoMessage() {} func (x *PruneConfigFalseResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_plugin_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -839,11 +807,9 @@ type SchemaTreeGzipRequest struct { func (x *SchemaTreeGzipRequest) Reset() { *x = SchemaTreeGzipRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_plugin_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_plugin_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SchemaTreeGzipRequest) String() string { @@ -854,7 +820,7 @@ func (*SchemaTreeGzipRequest) ProtoMessage() {} func (x *SchemaTreeGzipRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_plugin_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -879,11 +845,9 @@ type Payload struct { func (x *Payload) Reset() { *x = Payload{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_plugin_plugin_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_plugin_plugin_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Payload) String() string { @@ -894,7 +858,7 @@ func (*Payload) ProtoMessage() {} func (x *Payload) ProtoReflect() protoreflect.Message { mi := &file_gosdn_plugin_plugin_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1138,224 +1102,6 @@ func file_gosdn_plugin_plugin_proto_init() { if File_gosdn_plugin_plugin_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_gosdn_plugin_plugin_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*UnmarshalRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_plugin_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*UnmarshalResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_plugin_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*SetNodeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_plugin_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*SetNodeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_plugin_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*GetNodeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_plugin_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*GetNodeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_plugin_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*DeleteNodeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_plugin_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*DeleteNodeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_plugin_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*ModelRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_plugin_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*ModelResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_plugin_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*DiffRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_plugin_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*DiffResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_plugin_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*ValidateChangeRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_plugin_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*ValidateChangeResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_plugin_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*PruneConfigFalseRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_plugin_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*PruneConfigFalseResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_plugin_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*SchemaTreeGzipRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_plugin_plugin_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*Payload); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/go/gosdn/pnd/pnd.pb.go b/api/go/gosdn/pnd/pnd.pb.go index 8c73f1394..16f5b733d 100644 --- a/api/go/gosdn/pnd/pnd.pb.go +++ b/api/go/gosdn/pnd/pnd.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: gosdn/pnd/pnd.proto @@ -38,11 +38,9 @@ type PrincipalNetworkDomain struct { func (x *PrincipalNetworkDomain) Reset() { *x = PrincipalNetworkDomain{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_pnd_pnd_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_pnd_pnd_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PrincipalNetworkDomain) String() string { @@ -53,7 +51,7 @@ func (*PrincipalNetworkDomain) ProtoMessage() {} func (x *PrincipalNetworkDomain) ProtoReflect() protoreflect.Message { mi := &file_gosdn_pnd_pnd_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -100,11 +98,9 @@ type GetPndRequest struct { func (x *GetPndRequest) Reset() { *x = GetPndRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_pnd_pnd_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_pnd_pnd_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPndRequest) String() string { @@ -115,7 +111,7 @@ func (*GetPndRequest) ProtoMessage() {} func (x *GetPndRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_pnd_pnd_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -155,11 +151,9 @@ type GetPndResponse struct { func (x *GetPndResponse) Reset() { *x = GetPndResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_pnd_pnd_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_pnd_pnd_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPndResponse) String() string { @@ -170,7 +164,7 @@ func (*GetPndResponse) ProtoMessage() {} func (x *GetPndResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_pnd_pnd_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -209,11 +203,9 @@ type GetPndListRequest struct { func (x *GetPndListRequest) Reset() { *x = GetPndListRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_pnd_pnd_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_pnd_pnd_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPndListRequest) String() string { @@ -224,7 +216,7 @@ func (*GetPndListRequest) ProtoMessage() {} func (x *GetPndListRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_pnd_pnd_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -257,11 +249,9 @@ type GetPndListResponse struct { func (x *GetPndListResponse) Reset() { *x = GetPndListResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_pnd_pnd_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_pnd_pnd_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetPndListResponse) String() string { @@ -272,7 +262,7 @@ func (*GetPndListResponse) ProtoMessage() {} func (x *GetPndListResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_pnd_pnd_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -312,11 +302,9 @@ type CreatePndListRequest struct { func (x *CreatePndListRequest) Reset() { *x = CreatePndListRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_pnd_pnd_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_pnd_pnd_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreatePndListRequest) String() string { @@ -327,7 +315,7 @@ func (*CreatePndListRequest) ProtoMessage() {} func (x *CreatePndListRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_pnd_pnd_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -367,11 +355,9 @@ type PndCreateProperties struct { func (x *PndCreateProperties) Reset() { *x = PndCreateProperties{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_pnd_pnd_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_pnd_pnd_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *PndCreateProperties) String() string { @@ -382,7 +368,7 @@ func (*PndCreateProperties) ProtoMessage() {} func (x *PndCreateProperties) ProtoReflect() protoreflect.Message { mi := &file_gosdn_pnd_pnd_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -421,11 +407,9 @@ type CreatePndListResponse struct { func (x *CreatePndListResponse) Reset() { *x = CreatePndListResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_pnd_pnd_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_pnd_pnd_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreatePndListResponse) String() string { @@ -436,7 +420,7 @@ func (*CreatePndListResponse) ProtoMessage() {} func (x *CreatePndListResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_pnd_pnd_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -469,11 +453,9 @@ type DeletePndRequest struct { func (x *DeletePndRequest) Reset() { *x = DeletePndRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_pnd_pnd_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_pnd_pnd_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeletePndRequest) String() string { @@ -484,7 +466,7 @@ func (*DeletePndRequest) ProtoMessage() {} func (x *DeletePndRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_pnd_pnd_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -523,11 +505,9 @@ type DeletePndResponse struct { func (x *DeletePndResponse) Reset() { *x = DeletePndResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_pnd_pnd_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_pnd_pnd_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeletePndResponse) String() string { @@ -538,7 +518,7 @@ func (*DeletePndResponse) ProtoMessage() {} func (x *DeletePndResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_pnd_pnd_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -724,128 +704,6 @@ func file_gosdn_pnd_pnd_proto_init() { if File_gosdn_pnd_pnd_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_gosdn_pnd_pnd_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*PrincipalNetworkDomain); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_pnd_pnd_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GetPndRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_pnd_pnd_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*GetPndResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_pnd_pnd_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*GetPndListRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_pnd_pnd_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*GetPndListResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_pnd_pnd_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*CreatePndListRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_pnd_pnd_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*PndCreateProperties); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_pnd_pnd_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*CreatePndListResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_pnd_pnd_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeletePndRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_pnd_pnd_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DeletePndResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/go/gosdn/rbac/rbac.pb.go b/api/go/gosdn/rbac/rbac.pb.go index ec77ac558..0a98e9ecf 100644 --- a/api/go/gosdn/rbac/rbac.pb.go +++ b/api/go/gosdn/rbac/rbac.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: gosdn/rbac/rbac.proto @@ -37,11 +37,9 @@ type LoginRequest struct { func (x *LoginRequest) Reset() { *x = LoginRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_rbac_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_rbac_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LoginRequest) String() string { @@ -52,7 +50,7 @@ func (*LoginRequest) ProtoMessage() {} func (x *LoginRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_rbac_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -99,11 +97,9 @@ type LoginResponse struct { func (x *LoginResponse) Reset() { *x = LoginResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_rbac_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_rbac_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LoginResponse) String() string { @@ -114,7 +110,7 @@ func (*LoginResponse) ProtoMessage() {} func (x *LoginResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_rbac_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -155,11 +151,9 @@ type LogoutRequest struct { func (x *LogoutRequest) Reset() { *x = LogoutRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_rbac_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_rbac_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LogoutRequest) String() string { @@ -170,7 +164,7 @@ func (*LogoutRequest) ProtoMessage() {} func (x *LogoutRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_rbac_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -209,11 +203,9 @@ type LogoutResponse struct { func (x *LogoutResponse) Reset() { *x = LogoutResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_rbac_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_rbac_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *LogoutResponse) String() string { @@ -224,7 +216,7 @@ func (*LogoutResponse) ProtoMessage() {} func (x *LogoutResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_rbac_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -333,56 +325,6 @@ func file_gosdn_rbac_rbac_proto_init() { if File_gosdn_rbac_rbac_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_gosdn_rbac_rbac_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*LoginRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_rbac_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*LoginResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_rbac_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*LogoutRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_rbac_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*LogoutResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/go/gosdn/rbac/role.pb.go b/api/go/gosdn/rbac/role.pb.go index 8d138011a..aacf29035 100644 --- a/api/go/gosdn/rbac/role.pb.go +++ b/api/go/gosdn/rbac/role.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: gosdn/rbac/role.proto @@ -37,11 +37,9 @@ type Role struct { func (x *Role) Reset() { *x = Role{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_role_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_role_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Role) String() string { @@ -52,7 +50,7 @@ func (*Role) ProtoMessage() {} func (x *Role) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_role_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -107,11 +105,9 @@ type CreateRolesRequest struct { func (x *CreateRolesRequest) Reset() { *x = CreateRolesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_role_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_role_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateRolesRequest) String() string { @@ -122,7 +118,7 @@ func (*CreateRolesRequest) ProtoMessage() {} func (x *CreateRolesRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_role_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -161,11 +157,9 @@ type CreateRolesResponse struct { func (x *CreateRolesResponse) Reset() { *x = CreateRolesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_role_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_role_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateRolesResponse) String() string { @@ -176,7 +170,7 @@ func (*CreateRolesResponse) ProtoMessage() {} func (x *CreateRolesResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_role_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -211,11 +205,9 @@ type GetRoleRequest struct { func (x *GetRoleRequest) Reset() { *x = GetRoleRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_role_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_role_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRoleRequest) String() string { @@ -226,7 +218,7 @@ func (*GetRoleRequest) ProtoMessage() {} func (x *GetRoleRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_role_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -273,11 +265,9 @@ type GetRoleResponse struct { func (x *GetRoleResponse) Reset() { *x = GetRoleResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_role_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_role_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRoleResponse) String() string { @@ -288,7 +278,7 @@ func (*GetRoleResponse) ProtoMessage() {} func (x *GetRoleResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_role_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -328,11 +318,9 @@ type GetRolesRequest struct { func (x *GetRolesRequest) Reset() { *x = GetRolesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_role_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_role_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRolesRequest) String() string { @@ -343,7 +331,7 @@ func (*GetRolesRequest) ProtoMessage() {} func (x *GetRolesRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_role_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -376,11 +364,9 @@ type GetRolesResponse struct { func (x *GetRolesResponse) Reset() { *x = GetRolesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_role_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_role_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRolesResponse) String() string { @@ -391,7 +377,7 @@ func (*GetRolesResponse) ProtoMessage() {} func (x *GetRolesResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_role_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -432,11 +418,9 @@ type UpdateRolesRequest struct { func (x *UpdateRolesRequest) Reset() { *x = UpdateRolesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_role_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_role_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateRolesRequest) String() string { @@ -447,7 +431,7 @@ func (*UpdateRolesRequest) ProtoMessage() {} func (x *UpdateRolesRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_role_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -486,11 +470,9 @@ type UpdateRolesResponse struct { func (x *UpdateRolesResponse) Reset() { *x = UpdateRolesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_role_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_role_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateRolesResponse) String() string { @@ -501,7 +483,7 @@ func (*UpdateRolesResponse) ProtoMessage() {} func (x *UpdateRolesResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_role_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -536,11 +518,9 @@ type DeletePermissionsForRoleRequest struct { func (x *DeletePermissionsForRoleRequest) Reset() { *x = DeletePermissionsForRoleRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_role_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_role_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeletePermissionsForRoleRequest) String() string { @@ -551,7 +531,7 @@ func (*DeletePermissionsForRoleRequest) ProtoMessage() {} func (x *DeletePermissionsForRoleRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_role_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -597,11 +577,9 @@ type DeletePermissionsForRoleResponse struct { func (x *DeletePermissionsForRoleResponse) Reset() { *x = DeletePermissionsForRoleResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_role_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_role_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeletePermissionsForRoleResponse) String() string { @@ -612,7 +590,7 @@ func (*DeletePermissionsForRoleResponse) ProtoMessage() {} func (x *DeletePermissionsForRoleResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_role_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -646,11 +624,9 @@ type DeleteRolesRequest struct { func (x *DeleteRolesRequest) Reset() { *x = DeleteRolesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_role_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_role_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteRolesRequest) String() string { @@ -661,7 +637,7 @@ func (*DeleteRolesRequest) ProtoMessage() {} func (x *DeleteRolesRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_role_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -700,11 +676,9 @@ type DeleteRolesResponse struct { func (x *DeleteRolesResponse) Reset() { *x = DeleteRolesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_role_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_role_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteRolesResponse) String() string { @@ -715,7 +689,7 @@ func (*DeleteRolesResponse) ProtoMessage() {} func (x *DeleteRolesResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_role_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -928,164 +902,6 @@ func file_gosdn_rbac_role_proto_init() { return } file_gosdn_rbac_rbac_proto_init() - if !protoimpl.UnsafeEnabled { - file_gosdn_rbac_role_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Role); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_role_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*CreateRolesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_role_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*CreateRolesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_role_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*GetRoleRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_role_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*GetRoleResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_role_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*GetRolesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_role_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*GetRolesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_role_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*UpdateRolesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_role_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*UpdateRolesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_role_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*DeletePermissionsForRoleRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_role_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*DeletePermissionsForRoleResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_role_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*DeleteRolesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_role_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*DeleteRolesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/go/gosdn/rbac/user.pb.go b/api/go/gosdn/rbac/user.pb.go index 745d534cf..6c5c74f57 100644 --- a/api/go/gosdn/rbac/user.pb.go +++ b/api/go/gosdn/rbac/user.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: gosdn/rbac/user.proto @@ -40,11 +40,9 @@ type User struct { func (x *User) Reset() { *x = User{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_user_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_user_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *User) String() string { @@ -55,7 +53,7 @@ func (*User) ProtoMessage() {} func (x *User) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_user_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -127,11 +125,9 @@ type UpdateUser struct { func (x *UpdateUser) Reset() { *x = UpdateUser{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_user_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_user_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateUser) String() string { @@ -142,7 +138,7 @@ func (*UpdateUser) ProtoMessage() {} func (x *UpdateUser) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_user_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -211,11 +207,9 @@ type CreateUsersRequest struct { func (x *CreateUsersRequest) Reset() { *x = CreateUsersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_user_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_user_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateUsersRequest) String() string { @@ -226,7 +220,7 @@ func (*CreateUsersRequest) ProtoMessage() {} func (x *CreateUsersRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_user_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -265,11 +259,9 @@ type CreateUsersResponse struct { func (x *CreateUsersResponse) Reset() { *x = CreateUsersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_user_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_user_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *CreateUsersResponse) String() string { @@ -280,7 +272,7 @@ func (*CreateUsersResponse) ProtoMessage() {} func (x *CreateUsersResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_user_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -315,11 +307,9 @@ type GetUserRequest struct { func (x *GetUserRequest) Reset() { *x = GetUserRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_user_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_user_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetUserRequest) String() string { @@ -330,7 +320,7 @@ func (*GetUserRequest) ProtoMessage() {} func (x *GetUserRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_user_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -377,11 +367,9 @@ type GetUserResponse struct { func (x *GetUserResponse) Reset() { *x = GetUserResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_user_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_user_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetUserResponse) String() string { @@ -392,7 +380,7 @@ func (*GetUserResponse) ProtoMessage() {} func (x *GetUserResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_user_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -432,11 +420,9 @@ type GetUsersRequest struct { func (x *GetUsersRequest) Reset() { *x = GetUsersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_user_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_user_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetUsersRequest) String() string { @@ -447,7 +433,7 @@ func (*GetUsersRequest) ProtoMessage() {} func (x *GetUsersRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_user_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -480,11 +466,9 @@ type GetUsersResponse struct { func (x *GetUsersResponse) Reset() { *x = GetUsersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_user_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_user_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetUsersResponse) String() string { @@ -495,7 +479,7 @@ func (*GetUsersResponse) ProtoMessage() {} func (x *GetUsersResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_user_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -536,11 +520,9 @@ type UpdateUsersRequest struct { func (x *UpdateUsersRequest) Reset() { *x = UpdateUsersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_user_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_user_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateUsersRequest) String() string { @@ -551,7 +533,7 @@ func (*UpdateUsersRequest) ProtoMessage() {} func (x *UpdateUsersRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_user_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -590,11 +572,9 @@ type UpdateUsersResponse struct { func (x *UpdateUsersResponse) Reset() { *x = UpdateUsersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_user_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_user_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateUsersResponse) String() string { @@ -605,7 +585,7 @@ func (*UpdateUsersResponse) ProtoMessage() {} func (x *UpdateUsersResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_user_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -639,11 +619,9 @@ type DeleteUsersRequest struct { func (x *DeleteUsersRequest) Reset() { *x = DeleteUsersRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_user_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_user_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteUsersRequest) String() string { @@ -654,7 +632,7 @@ func (*DeleteUsersRequest) ProtoMessage() {} func (x *DeleteUsersRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_user_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -693,11 +671,9 @@ type DeleteUsersResponse struct { func (x *DeleteUsersResponse) Reset() { *x = DeleteUsersResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_rbac_user_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_rbac_user_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteUsersResponse) String() string { @@ -708,7 +684,7 @@ func (*DeleteUsersResponse) ProtoMessage() {} func (x *DeleteUsersResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_rbac_user_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -929,152 +905,6 @@ func file_gosdn_rbac_user_proto_init() { return } file_gosdn_rbac_rbac_proto_init() - if !protoimpl.UnsafeEnabled { - file_gosdn_rbac_user_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*User); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_user_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*UpdateUser); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_user_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*CreateUsersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_user_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*CreateUsersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_user_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*GetUserRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_user_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*GetUserResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_user_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*GetUsersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_user_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*GetUsersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_user_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*UpdateUsersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_user_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*UpdateUsersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_user_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*DeleteUsersRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_rbac_user_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*DeleteUsersResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/go/gosdn/southbound/southbound.pb.go b/api/go/gosdn/southbound/southbound.pb.go index 3310bcc2e..bf475590f 100644 --- a/api/go/gosdn/southbound/southbound.pb.go +++ b/api/go/gosdn/southbound/southbound.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: gosdn/southbound/southbound.proto @@ -87,11 +87,9 @@ type GetSchemaRequest struct { func (x *GetSchemaRequest) Reset() { *x = GetSchemaRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_southbound_southbound_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_southbound_southbound_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetSchemaRequest) String() string { @@ -102,7 +100,7 @@ func (*GetSchemaRequest) ProtoMessage() {} func (x *GetSchemaRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_southbound_southbound_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -148,11 +146,9 @@ type Payload struct { func (x *Payload) Reset() { *x = Payload{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_southbound_southbound_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_southbound_southbound_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Payload) String() string { @@ -163,7 +159,7 @@ func (*Payload) ProtoMessage() {} func (x *Payload) ProtoReflect() protoreflect.Message { mi := &file_gosdn_southbound_southbound_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -196,11 +192,9 @@ type SouthboundInterface struct { func (x *SouthboundInterface) Reset() { *x = SouthboundInterface{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_southbound_southbound_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_southbound_southbound_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SouthboundInterface) String() string { @@ -211,7 +205,7 @@ func (*SouthboundInterface) ProtoMessage() {} func (x *SouthboundInterface) ProtoReflect() protoreflect.Message { mi := &file_gosdn_southbound_southbound_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -315,44 +309,6 @@ func file_gosdn_southbound_southbound_proto_init() { if File_gosdn_southbound_southbound_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_gosdn_southbound_southbound_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GetSchemaRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_southbound_southbound_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Payload); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_southbound_southbound_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*SouthboundInterface); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/go/gosdn/subscriptionmanagement/subscriptionmanagement.pb.go b/api/go/gosdn/subscriptionmanagement/subscriptionmanagement.pb.go index 617bea4d2..1691a7cf1 100644 --- a/api/go/gosdn/subscriptionmanagement/subscriptionmanagement.pb.go +++ b/api/go/gosdn/subscriptionmanagement/subscriptionmanagement.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: gosdn/subscriptionmanagement/subscriptionmanagement.proto @@ -38,11 +38,9 @@ type Subscription struct { func (x *Subscription) Reset() { *x = Subscription{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Subscription) String() string { @@ -53,7 +51,7 @@ func (*Subscription) ProtoMessage() {} func (x *Subscription) ProtoReflect() protoreflect.Message { mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -120,11 +118,9 @@ type Path struct { func (x *Path) Reset() { *x = Path{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Path) String() string { @@ -135,7 +131,7 @@ func (*Path) ProtoMessage() {} func (x *Path) ProtoReflect() protoreflect.Message { mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -169,11 +165,9 @@ type SubscribeOptions struct { func (x *SubscribeOptions) Reset() { *x = SubscribeOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SubscribeOptions) String() string { @@ -184,7 +178,7 @@ func (*SubscribeOptions) ProtoMessage() {} func (x *SubscribeOptions) ProtoReflect() protoreflect.Message { mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -230,11 +224,9 @@ type GetAllRequest struct { func (x *GetAllRequest) Reset() { *x = GetAllRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAllRequest) String() string { @@ -245,7 +237,7 @@ func (*GetAllRequest) ProtoMessage() {} func (x *GetAllRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -278,11 +270,9 @@ type GetAllResponse struct { func (x *GetAllResponse) Reset() { *x = GetAllResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetAllResponse) String() string { @@ -293,7 +283,7 @@ func (*GetAllResponse) ProtoMessage() {} func (x *GetAllResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -333,11 +323,9 @@ type GetRequest struct { func (x *GetRequest) Reset() { *x = GetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRequest) String() string { @@ -348,7 +336,7 @@ func (*GetRequest) ProtoMessage() {} func (x *GetRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -388,11 +376,9 @@ type GetResponse struct { func (x *GetResponse) Reset() { *x = GetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetResponse) String() string { @@ -403,7 +389,7 @@ func (*GetResponse) ProtoMessage() {} func (x *GetResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -443,11 +429,9 @@ type DeleteRequest struct { func (x *DeleteRequest) Reset() { *x = DeleteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteRequest) String() string { @@ -458,7 +442,7 @@ func (*DeleteRequest) ProtoMessage() {} func (x *DeleteRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -497,11 +481,9 @@ type DeleteResponse struct { func (x *DeleteResponse) Reset() { *x = DeleteResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteResponse) String() string { @@ -512,7 +494,7 @@ func (*DeleteResponse) ProtoMessage() {} func (x *DeleteResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -546,11 +528,9 @@ type AddRequest struct { func (x *AddRequest) Reset() { *x = AddRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddRequest) String() string { @@ -561,7 +541,7 @@ func (*AddRequest) ProtoMessage() {} func (x *AddRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -607,11 +587,9 @@ type AddResponse struct { func (x *AddResponse) Reset() { *x = AddResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddResponse) String() string { @@ -622,7 +600,7 @@ func (*AddResponse) ProtoMessage() {} func (x *AddResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -654,11 +632,9 @@ type ResetAllSubscriptionsRequest struct { func (x *ResetAllSubscriptionsRequest) Reset() { *x = ResetAllSubscriptionsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ResetAllSubscriptionsRequest) String() string { @@ -669,7 +645,7 @@ func (*ResetAllSubscriptionsRequest) ProtoMessage() {} func (x *ResetAllSubscriptionsRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -701,11 +677,9 @@ type ResetAllSubscriptionsResponse struct { func (x *ResetAllSubscriptionsResponse) Reset() { *x = ResetAllSubscriptionsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ResetAllSubscriptionsResponse) String() string { @@ -716,7 +690,7 @@ func (*ResetAllSubscriptionsResponse) ProtoMessage() {} func (x *ResetAllSubscriptionsResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -939,164 +913,6 @@ func file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_init() { if File_gosdn_subscriptionmanagement_subscriptionmanagement_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Subscription); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Path); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*SubscribeOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*GetAllRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*GetAllResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*GetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*GetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*DeleteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeleteResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*AddRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*AddResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*ResetAllSubscriptionsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_subscriptionmanagement_subscriptionmanagement_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*ResetAllSubscriptionsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/go/gosdn/topology/link.pb.go b/api/go/gosdn/topology/link.pb.go index 7eb018808..398feb9d9 100644 --- a/api/go/gosdn/topology/link.pb.go +++ b/api/go/gosdn/topology/link.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: gosdn/topology/link.proto @@ -41,11 +41,9 @@ type Link struct { func (x *Link) Reset() { *x = Link{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_topology_link_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_topology_link_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Link) String() string { @@ -56,7 +54,7 @@ func (*Link) ProtoMessage() {} func (x *Link) ProtoReflect() protoreflect.Message { mi := &file_gosdn_topology_link_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -207,20 +205,6 @@ func file_gosdn_topology_link_proto_init() { } file_gosdn_topology_node_proto_init() file_gosdn_topology_port_proto_init() - if !protoimpl.UnsafeEnabled { - file_gosdn_topology_link_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Link); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/go/gosdn/topology/node.pb.go b/api/go/gosdn/topology/node.pb.go index cb9e151d9..b65392c17 100644 --- a/api/go/gosdn/topology/node.pb.go +++ b/api/go/gosdn/topology/node.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: gosdn/topology/node.proto @@ -37,11 +37,9 @@ type Node struct { func (x *Node) Reset() { *x = Node{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_topology_node_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_topology_node_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Node) String() string { @@ -52,7 +50,7 @@ func (*Node) ProtoMessage() {} func (x *Node) ProtoReflect() protoreflect.Message { mi := &file_gosdn_topology_node_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -148,20 +146,6 @@ func file_gosdn_topology_node_proto_init() { if File_gosdn_topology_node_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_gosdn_topology_node_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Node); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/go/gosdn/topology/port.pb.go b/api/go/gosdn/topology/port.pb.go index 33c0a0df6..de83b8af4 100644 --- a/api/go/gosdn/topology/port.pb.go +++ b/api/go/gosdn/topology/port.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: gosdn/topology/port.proto @@ -36,11 +36,9 @@ type Configuration struct { func (x *Configuration) Reset() { *x = Configuration{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_topology_port_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_topology_port_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Configuration) String() string { @@ -51,7 +49,7 @@ func (*Configuration) ProtoMessage() {} func (x *Configuration) ProtoReflect() protoreflect.Message { mi := &file_gosdn_topology_port_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -93,11 +91,9 @@ type Port struct { func (x *Port) Reset() { *x = Port{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_topology_port_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_topology_port_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Port) String() string { @@ -108,7 +104,7 @@ func (*Port) ProtoMessage() {} func (x *Port) ProtoReflect() protoreflect.Message { mi := &file_gosdn_topology_port_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -224,32 +220,6 @@ func file_gosdn_topology_port_proto_init() { if File_gosdn_topology_port_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_gosdn_topology_port_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Configuration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_topology_port_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Port); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/go/gosdn/topology/route.pb.go b/api/go/gosdn/topology/route.pb.go index 98810c542..9627c2df6 100644 --- a/api/go/gosdn/topology/route.pb.go +++ b/api/go/gosdn/topology/route.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: gosdn/topology/route.proto @@ -39,11 +39,9 @@ type Route struct { func (x *Route) Reset() { *x = Route{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_topology_route_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_topology_route_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Route) String() string { @@ -54,7 +52,7 @@ func (*Route) ProtoMessage() {} func (x *Route) ProtoReflect() protoreflect.Message { mi := &file_gosdn_topology_route_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -117,11 +115,9 @@ type RoutingTable struct { func (x *RoutingTable) Reset() { *x = RoutingTable{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_topology_route_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_topology_route_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RoutingTable) String() string { @@ -132,7 +128,7 @@ func (*RoutingTable) ProtoMessage() {} func (x *RoutingTable) ProtoReflect() protoreflect.Message { mi := &file_gosdn_topology_route_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -252,32 +248,6 @@ func file_gosdn_topology_route_proto_init() { if File_gosdn_topology_route_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_gosdn_topology_route_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Route); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_topology_route_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*RoutingTable); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/go/gosdn/topology/routingTable.pb.go b/api/go/gosdn/topology/routingTable.pb.go index 676faf2c6..1b9638cb3 100644 --- a/api/go/gosdn/topology/routingTable.pb.go +++ b/api/go/gosdn/topology/routingTable.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: gosdn/topology/routingTable.proto @@ -36,11 +36,9 @@ type AddRoutingTableRequest struct { func (x *AddRoutingTableRequest) Reset() { *x = AddRoutingTableRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_topology_routingTable_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_topology_routingTable_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddRoutingTableRequest) String() string { @@ -51,7 +49,7 @@ func (*AddRoutingTableRequest) ProtoMessage() {} func (x *AddRoutingTableRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_topology_routingTable_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -90,11 +88,9 @@ type AddRoutingTableResponse struct { func (x *AddRoutingTableResponse) Reset() { *x = AddRoutingTableResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_topology_routingTable_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_topology_routingTable_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddRoutingTableResponse) String() string { @@ -105,7 +101,7 @@ func (*AddRoutingTableResponse) ProtoMessage() {} func (x *AddRoutingTableResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_topology_routingTable_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -137,11 +133,9 @@ type GetRoutesRequest struct { func (x *GetRoutesRequest) Reset() { *x = GetRoutesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_topology_routingTable_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_topology_routingTable_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRoutesRequest) String() string { @@ -152,7 +146,7 @@ func (*GetRoutesRequest) ProtoMessage() {} func (x *GetRoutesRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_topology_routingTable_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -185,11 +179,9 @@ type GetRoutesResponse struct { func (x *GetRoutesResponse) Reset() { *x = GetRoutesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_topology_routingTable_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_topology_routingTable_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetRoutesResponse) String() string { @@ -200,7 +192,7 @@ func (*GetRoutesResponse) ProtoMessage() {} func (x *GetRoutesResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_topology_routingTable_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -240,11 +232,9 @@ type DeleteRoutesRequest struct { func (x *DeleteRoutesRequest) Reset() { *x = DeleteRoutesRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_topology_routingTable_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_topology_routingTable_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteRoutesRequest) String() string { @@ -255,7 +245,7 @@ func (*DeleteRoutesRequest) ProtoMessage() {} func (x *DeleteRoutesRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_topology_routingTable_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -294,11 +284,9 @@ type DeleteRoutesResponse struct { func (x *DeleteRoutesResponse) Reset() { *x = DeleteRoutesResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_topology_routingTable_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_topology_routingTable_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteRoutesResponse) String() string { @@ -309,7 +297,7 @@ func (*DeleteRoutesResponse) ProtoMessage() {} func (x *DeleteRoutesResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_topology_routingTable_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -456,80 +444,6 @@ func file_gosdn_topology_routingTable_proto_init() { } file_gosdn_topology_route_proto_init() file_gosdn_topology_topology_proto_init() - if !protoimpl.UnsafeEnabled { - file_gosdn_topology_routingTable_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*AddRoutingTableRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_topology_routingTable_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*AddRoutingTableResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_topology_routingTable_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*GetRoutesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_topology_routingTable_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*GetRoutesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_topology_routingTable_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*DeleteRoutesRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_topology_routingTable_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*DeleteRoutesResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/go/gosdn/topology/topology.pb.go b/api/go/gosdn/topology/topology.pb.go index 3f0587482..6d85ea4ad 100644 --- a/api/go/gosdn/topology/topology.pb.go +++ b/api/go/gosdn/topology/topology.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: gosdn/topology/topology.proto @@ -34,11 +34,9 @@ type Topology struct { func (x *Topology) Reset() { *x = Topology{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_topology_topology_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_topology_topology_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Topology) String() string { @@ -49,7 +47,7 @@ func (*Topology) ProtoMessage() {} func (x *Topology) ProtoReflect() protoreflect.Message { mi := &file_gosdn_topology_topology_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -82,11 +80,9 @@ type AddLinkRequest struct { func (x *AddLinkRequest) Reset() { *x = AddLinkRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_topology_topology_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_topology_topology_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddLinkRequest) String() string { @@ -97,7 +93,7 @@ func (*AddLinkRequest) ProtoMessage() {} func (x *AddLinkRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_topology_topology_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -136,11 +132,9 @@ type AddLinkResponse struct { func (x *AddLinkResponse) Reset() { *x = AddLinkResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_topology_topology_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_topology_topology_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *AddLinkResponse) String() string { @@ -151,7 +145,7 @@ func (*AddLinkResponse) ProtoMessage() {} func (x *AddLinkResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_topology_topology_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -183,11 +177,9 @@ type GetTopologyRequest struct { func (x *GetTopologyRequest) Reset() { *x = GetTopologyRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_topology_topology_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_topology_topology_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetTopologyRequest) String() string { @@ -198,7 +190,7 @@ func (*GetTopologyRequest) ProtoMessage() {} func (x *GetTopologyRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_topology_topology_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -231,11 +223,9 @@ type GetTopologyResponse struct { func (x *GetTopologyResponse) Reset() { *x = GetTopologyResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_topology_topology_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_topology_topology_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GetTopologyResponse) String() string { @@ -246,7 +236,7 @@ func (*GetTopologyResponse) ProtoMessage() {} func (x *GetTopologyResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_topology_topology_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -286,11 +276,9 @@ type UpdateLinkRequest struct { func (x *UpdateLinkRequest) Reset() { *x = UpdateLinkRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_topology_topology_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_topology_topology_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateLinkRequest) String() string { @@ -301,7 +289,7 @@ func (*UpdateLinkRequest) ProtoMessage() {} func (x *UpdateLinkRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_topology_topology_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -340,11 +328,9 @@ type UpdateLinkResponse struct { func (x *UpdateLinkResponse) Reset() { *x = UpdateLinkResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_topology_topology_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_topology_topology_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UpdateLinkResponse) String() string { @@ -355,7 +341,7 @@ func (*UpdateLinkResponse) ProtoMessage() {} func (x *UpdateLinkResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_topology_topology_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -388,11 +374,9 @@ type DeleteLinkRequest struct { func (x *DeleteLinkRequest) Reset() { *x = DeleteLinkRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_topology_topology_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_topology_topology_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteLinkRequest) String() string { @@ -403,7 +387,7 @@ func (*DeleteLinkRequest) ProtoMessage() {} func (x *DeleteLinkRequest) ProtoReflect() protoreflect.Message { mi := &file_gosdn_topology_topology_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -442,11 +426,9 @@ type DeleteLinkResponse struct { func (x *DeleteLinkResponse) Reset() { *x = DeleteLinkResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_topology_topology_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_topology_topology_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DeleteLinkResponse) String() string { @@ -457,7 +439,7 @@ func (*DeleteLinkResponse) ProtoMessage() {} func (x *DeleteLinkResponse) ProtoReflect() protoreflect.Message { mi := &file_gosdn_topology_topology_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -624,116 +606,6 @@ func file_gosdn_topology_topology_proto_init() { } file_gosdn_topology_link_proto_init() file_gosdn_topology_route_proto_init() - if !protoimpl.UnsafeEnabled { - file_gosdn_topology_topology_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Topology); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_topology_topology_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*AddLinkRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_topology_topology_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*AddLinkResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_topology_topology_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*GetTopologyRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_topology_topology_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*GetTopologyResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_topology_topology_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*UpdateLinkRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_topology_topology_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*UpdateLinkResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_topology_topology_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*DeleteLinkRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_topology_topology_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*DeleteLinkResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/api/go/gosdn/transport/transport.pb.go b/api/go/gosdn/transport/transport.pb.go index 745f907d3..24ebcfbe0 100644 --- a/api/go/gosdn/transport/transport.pb.go +++ b/api/go/gosdn/transport/transport.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.2 +// protoc-gen-go v1.35.1 // protoc (unknown) // source: gosdn/transport/transport.proto @@ -42,11 +42,9 @@ type TransportOption struct { func (x *TransportOption) Reset() { *x = TransportOption{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_transport_transport_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_transport_transport_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *TransportOption) String() string { @@ -57,7 +55,7 @@ func (*TransportOption) ProtoMessage() {} func (x *TransportOption) ProtoReflect() protoreflect.Message { mi := &file_gosdn_transport_transport_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -157,11 +155,9 @@ type GnmiTransportOption struct { func (x *GnmiTransportOption) Reset() { *x = GnmiTransportOption{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_transport_transport_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_transport_transport_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GnmiTransportOption) String() string { @@ -172,7 +168,7 @@ func (*GnmiTransportOption) ProtoMessage() {} func (x *GnmiTransportOption) ProtoReflect() protoreflect.Message { mi := &file_gosdn_transport_transport_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -223,11 +219,9 @@ type RestconfTransportOption struct { func (x *RestconfTransportOption) Reset() { *x = RestconfTransportOption{} - if protoimpl.UnsafeEnabled { - mi := &file_gosdn_transport_transport_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_gosdn_transport_transport_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *RestconfTransportOption) String() string { @@ -238,7 +232,7 @@ func (*RestconfTransportOption) ProtoMessage() {} func (x *RestconfTransportOption) ProtoReflect() protoreflect.Message { mi := &file_gosdn_transport_transport_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -356,44 +350,6 @@ func file_gosdn_transport_transport_proto_init() { if File_gosdn_transport_transport_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_gosdn_transport_transport_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*TransportOption); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_transport_transport_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*GnmiTransportOption); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gosdn_transport_transport_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*RestconfTransportOption); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_gosdn_transport_transport_proto_msgTypes[0].OneofWrappers = []any{ (*TransportOption_GnmiTransportOption)(nil), (*TransportOption_RestconfTransportOption)(nil), diff --git a/api/openapiv2/gosdn_northbound.swagger.json b/api/openapiv2/gosdn_northbound.swagger.json index 7e1d7500d..faefcc2b9 100644 --- a/api/openapiv2/gosdn_northbound.swagger.json +++ b/api/openapiv2/gosdn_northbound.swagger.json @@ -1704,6 +1704,45 @@ "UserService" ] } + }, + "/yang/parse": { + "get": { + "summary": "Allows to request a specific Managed Network Element which is managed by a\nspecific Principal Network Domain.", + "operationId": "NetworkElementService_ParseYang", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/networkelementParseYangResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "timestamp", + "description": "Timestamp in nanoseconds since Epoch.", + "in": "query", + "required": false, + "type": "string", + "format": "int64" + }, + { + "name": "yang", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "NetworkElementService" + ] + } } }, "definitions": { @@ -3562,6 +3601,19 @@ } } }, + "networkelementParseYangResponse": { + "type": "object", + "properties": { + "timestamp": { + "type": "string", + "format": "int64", + "description": "Timestamp in nanoseconds since Epoch." + }, + "json": { + "type": "string" + } + } + }, "networkelementSetChange": { "type": "object", "properties": { diff --git a/api/proto/buf.lock b/api/proto/buf.lock index 0e5e89005..e84d9ee54 100644 --- a/api/proto/buf.lock +++ b/api/proto/buf.lock @@ -4,15 +4,15 @@ deps: - remote: buf.build owner: bufbuild repository: protovalidate - commit: e097f827e65240ac9fd4b1158849a8fc - digest: shake256:f19252436fd9ded945631e2ffaaed28247a92c9015ccf55ae99db9fb3d9600c4fdb00fd2d3bd7701026ec2fd4715c5129e6ae517c25a59ba690020cfe80bf8ad + commit: 5a7b106cbb87462d9a8c9ffecdbd2e38 + digest: shake256:2f7efa5a904668219f039d4f6eeb51e871f8f7f5966055a10663cba335bd65f76cac84da3fa758ab7b5dcb489ec599521390ce3951d119fb56df1fc2def16bb0 - remote: buf.build owner: googleapis repository: googleapis - commit: a86849a25cc04f4dbe9b15ddddfbc488 - digest: shake256:e19143328f8cbfe13fc226aeee5e63773ca494693a72740a7560664270039a380d94a1344234b88c7691311460df9a9b1c2982190d0a2612eae80368718e1943 + commit: f52d4f76a8434cc5966798b1d3b4f110 + digest: shake256:71566dd80e39b7d85fdaa9b7f82107385181d5b6d17ea56c0aacce61099b35f9f1bcf7333ad9838ca19d24d7f076b039de7c9c09c55d23bb4c2fddfceff4d2c2 - remote: buf.build owner: grpc-ecosystem repository: grpc-gateway - commit: 3f42134f4c564983838425bc43c7a65f - digest: shake256:3d11d4c0fe5e05fda0131afefbce233940e27f0c31c5d4e385686aea58ccd30f72053f61af432fa83f1fc11cda57f5f18ca3da26a29064f73c5a0d076bba8d92 + commit: a48fcebcf8f140dd9d09359b9bb185a4 + digest: shake256:a926173f0ec3e1a929462c350acda846e546134b5ce2bb83fe44f02f9330a42b1c9b292f64b951b06a4d2c47e2ce4d477d6a2cb31502a15637ada35ecedefcf6 diff --git a/api/proto/gosdn/networkelement/networkelement.proto b/api/proto/gosdn/networkelement/networkelement.proto index 9c83e2fef..b2a14817b 100644 --- a/api/proto/gosdn/networkelement/networkelement.proto +++ b/api/proto/gosdn/networkelement/networkelement.proto @@ -44,6 +44,13 @@ service NetworkElementService { option (google.api.http) = {get: "/mnes/{mneid}"}; } + + // Allows to request a specific Managed Network Element which is managed by a + // specific Principal Network Domain. + rpc ParseYang(ParseYangRequest) returns (ParseYangResponse) { + option (google.api.http) = {get: "/yang/parse"}; + } + // TODO: add http option // Allows to request a specific Managed Network Element which is managed by a // specific Principal Network Domain. A flattened version of a Managed @@ -170,6 +177,18 @@ message GetAllFlattenedResponse { repeated FlattenedManagedNetworkElement mne = 3; } +message ParseYangRequest { + int64 timestamp = 1; // Timestamp in nanoseconds since Epoch. + string yang = 2 [(buf.validate.field).required = true]; +} + + +message ParseYangResponse { + int64 timestamp = 1; // Timestamp in nanoseconds since Epoch. + string json = 2 [(buf.validate.field).required = true]; +} + + message GetRequest { int64 timestamp = 1; // Timestamp in nanoseconds since Epoch. string mneid = 2 [(buf.validate.field).required = true]; diff --git a/controller/controller.go b/controller/controller.go index a1a24aaf6..32adf3586 100644 --- a/controller/controller.go +++ b/controller/controller.go @@ -346,6 +346,7 @@ func ensureAdminRoleExists() error { "/gosdn.networkelement.NetworkElementService/DeviceSchema", "/gosdn.networkelement.NetworkElementService/Delete", "/gosdn.networkelement.NetworkElementService/SubscribePath", + "/gosdn.networkelement.NetworkElementService/ParseYang", "/gosdn.plugin_internal.PluginInternalService/AvailablePlugins", "/gosdn.plugin_internal.PluginInternalService/GetPluginSchema", "/gosdn.app.AppService/Register", diff --git a/controller/northbound/server/networkElement.go b/controller/northbound/server/networkElement.go index 4a3db1c4f..10312d0f9 100644 --- a/controller/northbound/server/networkElement.go +++ b/controller/northbound/server/networkElement.go @@ -20,6 +20,7 @@ import ( "code.fbi.h-da.de/danet/gosdn/controller/metrics" "code.fbi.h-da.de/danet/gosdn/controller/nucleus" "code.fbi.h-da.de/danet/gosdn/controller/nucleus/types" + "code.fbi.h-da.de/danet/gosdn/models/generated/openconfig" util "code.fbi.h-da.de/danet/gosdn/controller/nucleus/util/gnmi" "code.fbi.h-da.de/danet/gosdn/controller/store" aGNMI "code.fbi.h-da.de/danet/gosdn/forks/goarista/gnmi" @@ -182,6 +183,37 @@ func (n *NetworkElementServer) GetFlattened(ctx context.Context, request *mnepb. }, nil } +func (n *NetworkElementServer) ParseYang(ctx context.Context, request *mnepb.ParseYangRequest) (*mnepb.ParseYangResponse, error) { + if err := n.protoValidator.Validate(request); err != nil { + return nil, status.Errorf(codes.Aborted, "%v", err) + } + + device := &openconfig.Device{} + + if err := openconfig.Unmarshal([]byte(request.Yang), device); err != nil { + log.Error(err) + return nil, err + } + + json, err := ygot.EmitJSON(device, &ygot.EmitJSONConfig{ + Format: ygot.RFC7951, + Indent: " ", + RFC7951Config: &ygot.RFC7951JSONConfig{ + AppendModuleName: true, + }, + }) + + if err != nil { + log.Error(err) + return nil, err + } + + return &mnepb.ParseYangResponse{ + Timestamp: time.Now().UnixNano(), + Json: string(json), + }, nil +} + func (n *NetworkElementServer) getMne(identifier string) (networkelement.NetworkElement, error) { id, err := uuid.Parse(identifier) if err != nil { diff --git a/react-ui/scripts/openapi-config.json b/react-ui/scripts/openapi-config.json index dbb9a84af..e999a3cf7 100644 --- a/react-ui/scripts/openapi-config.json +++ b/react-ui/scripts/openapi-config.json @@ -1,11 +1,11 @@ { - "schemaFile": "../../api/openapiv2/gosdn_northbound.swagger.json", - "apiFile": "../src/stores/api.store.ts", - "apiImport": "emptySplitApi", - "outputFile": "../src/api/api.ts", - "exportName": "api", - "hooks": true, - "nullSafeAdditionalProps": true, - "withInterfaces": true, - "tag": true -} \ No newline at end of file + "schemaFile": "../../api/openapiv2/gosdn_northbound.swagger.json", + "apiFile": "../src/stores/api.store.ts", + "apiImport": "emptySplitApi", + "outputFile": "../src/shared/api/api.ts", + "exportName": "api", + "hooks": true, + "nullSafeAdditionalProps": true, + "withInterfaces": true, + "tag": true +} diff --git a/react-ui/src/components/devices/reducer/device.reducer.ts b/react-ui/src/components/devices/reducer/device.reducer.ts index 7195ceaa1..8e4454bd2 100644 --- a/react-ui/src/components/devices/reducer/device.reducer.ts +++ b/react-ui/src/components/devices/reducer/device.reducer.ts @@ -1,21 +1,29 @@ -import { api, NetworkelementFlattenedManagedNetworkElement, NetworkelementManagedNetworkElement, PndPrincipalNetworkDomain, PndServiceGetPndListApiArg } from '@api/api'; -import { DeviceViewTabValues } from '@component/devices/view/device.view.tabs'; -import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit'; -import '../routines/index'; - - -export type Device = NetworkelementFlattenedManagedNetworkElement; +import { + api, + NetworkelementFlattenedManagedNetworkElement, + NetworkelementManagedNetworkElement, + PndPrincipalNetworkDomain, + PndServiceGetPndListApiArg, +} from '@api/api' +import { DeviceViewTabValues } from '@component/devices/view/device.view.tabs' +import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit' +import { RootState } from 'src/stores' +import '../routines/index' +import { startListening } from '/src/stores/middleware/listener.middleware' + +export type Device = NetworkelementFlattenedManagedNetworkElement interface SelectedDeviceInterface { - device: Device, + device: Device mne: NetworkelementManagedNetworkElement | null + json: JSON | null } -type SelectedDeviceType = SelectedDeviceInterface | undefined; +type SelectedDeviceType = SelectedDeviceInterface | null export interface DeviceSliceState { - devices: Device[], - pnds: PndPrincipalNetworkDomain[], + devices: Device[] + pnds: PndPrincipalNetworkDomain[] activeTab: DeviceViewTabValues selectedDevice: SelectedDeviceType @@ -25,44 +33,75 @@ const initialState: DeviceSliceState = { devices: [], pnds: [], activeTab: DeviceViewTabValues.METADATA, - selectedDevice: null + selectedDevice: null, } const deviceSlice = createSlice({ name: 'device', initialState, reducers: { - setDevices: (state, action: PayloadAction<Device[]>) => { state.devices = action.payload }, - setPnds: (state, action: PayloadAction<PndPrincipalNetworkDomain[]>) => { state.pnds = action.payload }, - setActiveTab: (state, action: PayloadAction<DeviceViewTabValues>) => { state.activeTab = action.payload }, - setSelectedDevice: (state, action: PayloadAction<Device | null>) => { - let selectedDevice: SelectedDeviceType; + setDevices: (state, action: PayloadAction<Device[]>) => { + state.devices = action.payload + }, + setPnds: (state, action: PayloadAction<PndPrincipalNetworkDomain[]>) => { + state.pnds = action.payload + }, + setActiveTab: (state, action: PayloadAction<DeviceViewTabValues>) => { + state.activeTab = action.payload + }, + setSelectedDevice: (state, action: PayloadAction<Device | null>) => { + let selectedDevice: SelectedDeviceType = null if (action.payload) { - selectedDevice = {device: action.payload, mne: null}; + selectedDevice = { device: action.payload, mne: null, json: null } } - state.selectedDevice = selectedDevice; + state.selectedDevice = selectedDevice + }, + setSelectedMne: (state, action: PayloadAction<NetworkelementManagedNetworkElement>) => { + if (!state.selectedDevice) { + throw new Error('Selected Device is null where it shouldn´t be null') + } + + state.selectedDevice.mne = action.payload + // TODO maybe don´t take the device of "selected device" instead search in the devices array for the proper device + // should not make a diffrence due to pointer but dunno + }, + + setSelectedJson: (state, action: PayloadAction<JSON>) => { + if (!state.selectedDevice) { + throw new Error('Selected Device is null where it shouldn´t be null') + } + + state.selectedDevice.json = action.payload || null }, - setSelectedMne: (state, action: PayloadAction<NetworkelementManagedNetworkElement>) => { state.selectedDevice.mne = action.payload }, }, }) -export const { setDevices, setActiveTab, setSelectedDevice, setSelectedMne } = deviceSlice.actions +export const { setDevices, setActiveTab, setSelectedDevice, setSelectedMne, setSelectedJson } = + deviceSlice.actions const { setPnds } = deviceSlice.actions export default deviceSlice.reducer -export const deviceReducerPath = deviceSlice.reducerPath; - - +export const deviceReducerPath = deviceSlice.reducerPath export const fetchPnds = createAsyncThunk('device/fetchPnds', (_, thunkApi) => { const payload: PndServiceGetPndListApiArg = { timestamp: new Date().getTime().toString(), } - const subscription = thunkApi.dispatch(api.endpoints.pndServiceGetPndList.initiate(payload)); + const subscription = thunkApi.dispatch(api.endpoints.pndServiceGetPndList.initiate(payload)) subscription.unwrap().then((response) => { - thunkApi.dispatch(setPnds(response.pnd)); - }); -}); + thunkApi.dispatch(setPnds(response.pnd)) + }) +}) +// add default selected device if no selected device is set +startListening({ + predicate: (action) => setDevices.match(action), + effect: async (action, listenerApi) => { + const { device } = listenerApi.getOriginalState() as RootState + if (!device.selectedDevice && !!action.payload[0]) { + listenerApi.dispatch(setSelectedDevice(action.payload[0])) + } + }, +}) diff --git a/react-ui/src/components/devices/routines/mne.routine.ts b/react-ui/src/components/devices/routines/mne.routine.ts index 9823aa69a..378e6e8cf 100644 --- a/react-ui/src/components/devices/routines/mne.routine.ts +++ b/react-ui/src/components/devices/routines/mne.routine.ts @@ -1,46 +1,82 @@ -import { api, NetworkElementServiceGetApiArg } from "@api/api"; -import { Device, setSelectedDevice, setSelectedMne } from "@component/devices/reducer/device.reducer"; -import { createAsyncThunk } from "@reduxjs/toolkit"; -import { addRoutine, CATEGORIES } from "@shared/reducer/routine.reducer"; -import { RootState } from "src/stores"; -import { startListening } from "../../../stores/middleware/listener.middleware"; - -export const FETCH_MNE_ACTION = 'subscription/device/fetchSelectedMNE'; +import { api, NetworkElementServiceGetApiArg, NetworkElementServiceParseYangApiArg } from '@api/api' +import { + Device, + setSelectedDevice, + setSelectedJson, + setSelectedMne, +} from '@component/devices/reducer/device.reducer' +import { createAsyncThunk } from '@reduxjs/toolkit' +import { addRoutine, CATEGORIES } from '@shared/reducer/routine.reducer' +import { RootState } from 'src/stores' +import { startListening } from '../../../stores/middleware/listener.middleware' +export const FETCH_MNE_ACTION = 'subscription/device/fetchSelectedMNE' // fetch mne if selected device is set startListening({ predicate: (action) => setSelectedDevice.match(action) && !!action.payload, effect: async (action, listenerApi) => { - listenerApi.dispatch(addRoutine({thunk: fetchSelectedMneThunk, category: CATEGORIES.TAB, payload: action.payload})); + listenerApi.dispatch( + addRoutine({ + thunk: fetchSelectedMneThunk, + category: CATEGORIES.TAB, + payload: action.payload, + }) + ) }, }) +const FETCH_MNE_INTERVAL = 5000 // in ms +export const fetchSelectedMneThunk = createAsyncThunk( + FETCH_MNE_ACTION, + async (device: Device, thunkApi) => { + const { user } = thunkApi.getState() as RootState -const FETCH_MNE_INTERVAL = 5000; // in ms -export const fetchSelectedMneThunk = createAsyncThunk(FETCH_MNE_ACTION, async (device: Device, thunkApi) => { - const { user } = thunkApi.getState() as RootState; - - const payload: NetworkElementServiceGetApiArg = { - pid: Object.keys(user?.user.roles)[0], - timestamp: new Date().getTime().toString(), - mneid: device.id, - } - - const subscription = thunkApi.dispatch(api.endpoints.networkElementServiceGet.initiate(payload, { - subscriptionOptions: { - pollingInterval: FETCH_MNE_INTERVAL, - skipPollingIfUnfocused: true, + const payload: NetworkElementServiceGetApiArg = { + pid: Object.keys(user?.user.roles)[0], + timestamp: new Date().getTime().toString(), + mneid: device.id, } - })); - return {...subscription}; -}); + const subscription = thunkApi.dispatch( + api.endpoints.networkElementServiceGet.initiate(payload, { + subscriptionOptions: { + pollingInterval: FETCH_MNE_INTERVAL, + skipPollingIfUnfocused: true, + }, + }) + ) + + return { ...subscription } + } +) // save fetched mne startListening({ predicate: (action) => api.endpoints.networkElementServiceGet.matchFulfilled(action), effect: async (action, listenerApi) => { - listenerApi.dispatch(setSelectedMne(action.payload.mne)); + listenerApi.dispatch(setSelectedMne(action.payload.mne)) + }, +}) + +// save fetched mne +startListening({ + predicate: (action) => setSelectedMne.match(action), + effect: async (action, listenerApi) => { + const payload: NetworkElementServiceParseYangApiArg = { + timestamp: new Date().getTime().toString(), + yang: action.payload.model, + } + + const { data } = await listenerApi.dispatch( + api.endpoints.networkElementServiceParseYang.initiate(payload) + ) + + if (!data?.json) { + throw new Error('ParseYang response is invalid. The json field is null') + } + const json = JSON.parse(data.json) + + listenerApi.dispatch(setSelectedJson(json)) }, -}) \ No newline at end of file +}) diff --git a/react-ui/src/components/devices/view/device.scss b/react-ui/src/components/devices/view/device.scss index 0890fc928..afebc6fe5 100644 --- a/react-ui/src/components/devices/view/device.scss +++ b/react-ui/src/components/devices/view/device.scss @@ -6,6 +6,17 @@ thead { tr:hover > td { background-color: lighten(map-get($theme-colors, primary), 30%) !important; + cursor: pointer; +} + +tr.active > td { + background-color: lighten(map-get($theme-colors, primary), 5%) !important; + + color: map-get($theme-colors, 'black') !important; +} + +tr > td { + color: map-get($theme-colors, 'dark') !important; } tr:nth-child(2n + 1) > td { diff --git a/react-ui/src/components/devices/view/device.view.table.tsx b/react-ui/src/components/devices/view/device.view.table.tsx index 9ef441f17..933b50a8a 100644 --- a/react-ui/src/components/devices/view/device.view.table.tsx +++ b/react-ui/src/components/devices/view/device.view.table.tsx @@ -5,9 +5,9 @@ import { useTranslation } from "react-i18next"; import { useDeviceTableViewModel } from "../view_model/device.table.viewmodel"; export const DeviceViewTable = (searchRef: MutableRefObject<HTMLInputElement>) => { - const { devices, pnds } = useAppSelector(state => state.device); + const { devices, pnds, selectedDevice } = useAppSelector(state => state.device); const { t } = useTranslation('common'); - const { searchTerm, trClickHandler } = useDeviceTableViewModel(searchRef); + const { trClickHandler } = useDeviceTableViewModel(searchRef); const cropUUID = (uuid: string): string => { @@ -28,7 +28,7 @@ export const DeviceViewTable = (searchRef: MutableRefObject<HTMLInputElement>) = const user = pnds.find(pnd => pnd.id === device.pid); return ( - <tr key={index} onClick={() => trClickHandler(device)}> + <tr key={index} onClick={() => trClickHandler(device)} className={selectedDevice?.device.id === device.id ? 'active' : ''}> <td>{device.name}</td> <OverlayTrigger overlay={<Tooltip id={device.id}>{device.id}</Tooltip>}> <td>{cropUUID(device.id)}</td> @@ -38,7 +38,7 @@ export const DeviceViewTable = (searchRef: MutableRefObject<HTMLInputElement>) = </tr> ) }) - }, [searchTerm, devices, pnds]); + }, [devices, searchRef, pnds, selectedDevice, trClickHandler]); return ( diff --git a/react-ui/src/components/devices/view/device.view.tabs.tsx b/react-ui/src/components/devices/view/device.view.tabs.tsx index 95796741a..05e854651 100644 --- a/react-ui/src/components/devices/view/device.view.tabs.tsx +++ b/react-ui/src/components/devices/view/device.view.tabs.tsx @@ -22,8 +22,8 @@ export const DeviceViewTabs = (activeTab: DeviceViewTabValues) => { const yangModelTab = () => { return ( <> - {yang.current && - <ReactJson src={yang.current} name={false} collapsed={false} quotesOnKeys={false} /> + {selectedDevice?.json && + <ReactJson src={selectedDevice.json} name={false} collapsed={false} quotesOnKeys={false} /> } </> ); diff --git a/react-ui/src/components/devices/view_model/device.tabs.viewmodel.ts b/react-ui/src/components/devices/view_model/device.tabs.viewmodel.ts index f9d3124ea..e15f7c721 100644 --- a/react-ui/src/components/devices/view_model/device.tabs.viewmodel.ts +++ b/react-ui/src/components/devices/view_model/device.tabs.viewmodel.ts @@ -19,9 +19,11 @@ export const useDeviceTabsViewModel = () => { return } - parse(serializedYang).then((json) => { - yang.current = json - }) + console.log(serializedYang) + + // parse(serializedYang).then((json) => { + // yang.current = json + // }) }, [selectedDevice, parse]) return { diff --git a/react-ui/src/components/devices/view_model/device.viewmodel.ts b/react-ui/src/components/devices/view_model/device.viewmodel.ts index cfff6cf9a..9a0fbe17a 100644 --- a/react-ui/src/components/devices/view_model/device.viewmodel.ts +++ b/react-ui/src/components/devices/view_model/device.viewmodel.ts @@ -1,23 +1,25 @@ -import { setActiveTab as setActiveTabState } from "@component/devices/reducer/device.reducer"; -import { useAppDispatch, useAppSelector } from "@hooks"; -import { DeviceViewTabValues } from "@view/device/device.view.tabs"; +import { setActiveTab as setActiveTabState } from '@component/devices/reducer/device.reducer' +import { useAppDispatch, useAppSelector } from '@hooks' +import { DeviceViewTabValues } from '@view/device/device.view.tabs' +import { useEffect } from 'react' export const useDeviceViewModel = () => { - const {activeTab} = useAppSelector(state => state.device); - const dispatch = useAppDispatch(); - + const { activeTab } = useAppSelector((state) => state.device) + const dispatch = useAppDispatch() + + useEffect(() => {}, []) + const handleActiveTabLink = (tabLink: DeviceViewTabValues) => { - return activeTab === tabLink ? 'active' : ''; + return activeTab === tabLink ? 'active' : '' } const setActiveTab = (tab: DeviceViewTabValues) => { - dispatch(setActiveTabState(tab)); + dispatch(setActiveTabState(tab)) } - return { activeTab, setActiveTab, - handleActiveTabLink + handleActiveTabLink, } -} \ No newline at end of file +} diff --git a/react-ui/src/shared/api/api.ts b/react-ui/src/shared/api/api.ts index a5d1ebd6b..c964d9dc9 100644 --- a/react-ui/src/shared/api/api.ts +++ b/react-ui/src/shared/api/api.ts @@ -7,6 +7,7 @@ export const addTagTypes = [ 'PndService', 'RoleService', 'RoutingTableService', + 'SubscriptionManagementService', 'TopologyService', 'UserService', ] as const @@ -51,10 +52,7 @@ const injectedRtkApi = api }), invalidatesTags: ['ConfigurationManagementService'], }), - authServiceLogin: build.mutation< - AuthServiceLoginApiResponse, - AuthServiceLoginApiArg - >({ + authServiceLogin: build.mutation<AuthServiceLoginApiResponse, AuthServiceLoginApiArg>({ query: (queryArg) => ({ url: `/login`, method: 'POST', @@ -79,10 +77,7 @@ const injectedRtkApi = api >({ query: (queryArg) => ({ url: `/mnes`, - params: { - timestamp: queryArg.timestamp, - pid: queryArg.pid, - }, + params: { timestamp: queryArg.timestamp, pid: queryArg.pid }, }), providesTags: ['NetworkElementService'], }), @@ -103,10 +98,7 @@ const injectedRtkApi = api >({ query: (queryArg) => ({ url: `/mnes/changes`, - params: { - timestamp: queryArg.timestamp, - pid: queryArg.pid, - }, + params: { timestamp: queryArg.timestamp, pid: queryArg.pid }, }), providesTags: ['NetworkElementService'], }), @@ -127,10 +119,7 @@ const injectedRtkApi = api >({ query: (queryArg) => ({ url: `/mnes/changes/${queryArg.cuid}`, - params: { - timestamp: queryArg.timestamp, - pid: queryArg.pid, - }, + params: { timestamp: queryArg.timestamp, pid: queryArg.pid }, }), providesTags: ['NetworkElementService'], }), @@ -151,10 +140,7 @@ const injectedRtkApi = api >({ query: (queryArg) => ({ url: `/mnes/${queryArg.mneid}`, - params: { - timestamp: queryArg.timestamp, - pid: queryArg.pid, - }, + params: { timestamp: queryArg.timestamp, pid: queryArg.pid }, }), providesTags: ['NetworkElementService'], }), @@ -165,10 +151,7 @@ const injectedRtkApi = api query: (queryArg) => ({ url: `/mnes/${queryArg.mneid}`, method: 'DELETE', - params: { - timestamp: queryArg.timestamp, - pid: queryArg.pid, - }, + params: { timestamp: queryArg.timestamp, pid: queryArg.pid }, }), invalidatesTags: ['NetworkElementService'], }), @@ -178,10 +161,7 @@ const injectedRtkApi = api >({ query: (queryArg) => ({ url: `/mnes/${queryArg.mneid}/intendedpaths/${queryArg.intendedPath}`, - params: { - timestamp: queryArg.timestamp, - pid: queryArg.pid, - }, + params: { timestamp: queryArg.timestamp, pid: queryArg.pid }, }), providesTags: ['NetworkElementService'], }), @@ -191,10 +171,7 @@ const injectedRtkApi = api >({ query: (queryArg) => ({ url: `/mnes/${queryArg.mneid}/paths/${queryArg.path}`, - params: { - timestamp: queryArg.timestamp, - pid: queryArg.pid, - }, + params: { timestamp: queryArg.timestamp, pid: queryArg.pid }, }), providesTags: ['NetworkElementService'], }), @@ -209,10 +186,7 @@ const injectedRtkApi = api }), invalidatesTags: ['NetworkElementService'], }), - pndServiceGetPnd: build.query< - PndServiceGetPndApiResponse, - PndServiceGetPndApiArg - >({ + pndServiceGetPnd: build.query<PndServiceGetPndApiResponse, PndServiceGetPndApiArg>({ query: (queryArg) => ({ url: `/pnd/${queryArg.pid}`, params: { timestamp: queryArg.timestamp }, @@ -223,10 +197,7 @@ const injectedRtkApi = api PndServiceGetPndListApiResponse, PndServiceGetPndListApiArg >({ - query: (queryArg) => ({ - url: `/pnds`, - params: { timestamp: queryArg.timestamp }, - }), + query: (queryArg) => ({ url: `/pnds`, params: { timestamp: queryArg.timestamp } }), providesTags: ['PndService'], }), pndServiceCreatePndList: build.mutation< @@ -266,10 +237,7 @@ const injectedRtkApi = api RoleServiceGetRolesApiResponse, RoleServiceGetRolesApiArg >({ - query: (queryArg) => ({ - url: `/roles`, - params: { timestamp: queryArg.timestamp }, - }), + query: (queryArg) => ({ url: `/roles`, params: { timestamp: queryArg.timestamp } }), providesTags: ['RoleService'], }), roleServiceCreateRoles: build.mutation< @@ -290,10 +258,7 @@ const injectedRtkApi = api query: (queryArg) => ({ url: `/roles/delete`, method: 'DELETE', - params: { - timestamp: queryArg.timestamp, - roleName: queryArg.roleName, - }, + params: { timestamp: queryArg.timestamp, roleName: queryArg.roleName }, }), invalidatesTags: ['RoleService'], }), @@ -369,6 +334,58 @@ const injectedRtkApi = api }), invalidatesTags: ['RoutingTableService'], }), + subscriptionManagementServiceResetAllSubscriptions: build.query< + SubscriptionManagementServiceResetAllSubscriptionsApiResponse, + SubscriptionManagementServiceResetAllSubscriptionsApiArg + >({ + query: (queryArg) => ({ + url: `/submanagement/reset`, + params: { timestamp: queryArg.timestamp }, + }), + providesTags: ['SubscriptionManagementService'], + }), + subscriptionManagementServiceGetAll: build.query< + SubscriptionManagementServiceGetAllApiResponse, + SubscriptionManagementServiceGetAllApiArg + >({ + query: (queryArg) => ({ + url: `/submanagement/subscriptions`, + params: { timestamp: queryArg.timestamp }, + }), + providesTags: ['SubscriptionManagementService'], + }), + subscriptionManagementServiceAdd: build.mutation< + SubscriptionManagementServiceAddApiResponse, + SubscriptionManagementServiceAddApiArg + >({ + query: (queryArg) => ({ + url: `/submanagement/${queryArg.mneid}`, + method: 'POST', + body: queryArg.subscriptionmanagementSubscriptionManagementServiceAddBody, + }), + invalidatesTags: ['SubscriptionManagementService'], + }), + subscriptionManagementServiceGet: build.query< + SubscriptionManagementServiceGetApiResponse, + SubscriptionManagementServiceGetApiArg + >({ + query: (queryArg) => ({ + url: `/submanagement/${queryArg.subid}`, + params: { timestamp: queryArg.timestamp }, + }), + providesTags: ['SubscriptionManagementService'], + }), + subscriptionManagementServiceDelete: build.mutation< + SubscriptionManagementServiceDeleteApiResponse, + SubscriptionManagementServiceDeleteApiArg + >({ + query: (queryArg) => ({ + url: `/submanagement/${queryArg.subid}`, + method: 'DELETE', + params: { timestamp: queryArg.timestamp }, + }), + invalidatesTags: ['SubscriptionManagementService'], + }), topologyServiceGetTopology: build.query< TopologyServiceGetTopologyApiResponse, TopologyServiceGetTopologyApiArg @@ -416,10 +433,7 @@ const injectedRtkApi = api UserServiceGetUsersApiResponse, UserServiceGetUsersApiArg >({ - query: (queryArg) => ({ - url: `/users`, - params: { timestamp: queryArg.timestamp }, - }), + query: (queryArg) => ({ url: `/users`, params: { timestamp: queryArg.timestamp } }), providesTags: ['UserService'], }), userServiceCreateUsers: build.mutation< @@ -440,10 +454,7 @@ const injectedRtkApi = api query: (queryArg) => ({ url: `/users/delete`, method: 'DELETE', - params: { - timestamp: queryArg.timestamp, - username: queryArg.username, - }, + params: { timestamp: queryArg.timestamp, username: queryArg.username }, }), invalidatesTags: ['UserService'], }), @@ -453,11 +464,7 @@ const injectedRtkApi = api >({ query: (queryArg) => ({ url: `/users/get`, - params: { - timestamp: queryArg.timestamp, - name: queryArg.name, - id: queryArg.id, - }, + params: { timestamp: queryArg.timestamp, name: queryArg.name, id: queryArg.id }, }), providesTags: ['UserService'], }), @@ -472,6 +479,16 @@ const injectedRtkApi = api }), invalidatesTags: ['UserService'], }), + networkElementServiceParseYang: build.query< + NetworkElementServiceParseYangApiResponse, + NetworkElementServiceParseYangApiArg + >({ + query: (queryArg) => ({ + url: `/yang/parse`, + params: { timestamp: queryArg.timestamp, yang: queryArg.yang }, + }), + providesTags: ['NetworkElementService'], + }), }), overrideExisting: false, }) @@ -496,8 +513,7 @@ export type ConfigurationManagementServiceImportSdnConfigApiArg = { timestamp?: string sdnConfigData?: string } -export type AuthServiceLoginApiResponse = - /** status 200 A successful response. */ RbacLoginResponse +export type AuthServiceLoginApiResponse = /** status 200 A successful response. */ RbacLoginResponse export type AuthServiceLoginApiArg = { rbacLoginRequest: Login } @@ -582,8 +598,7 @@ export type NetworkElementServiceUpdateApiResponse = export type NetworkElementServiceUpdateApiArg = { networkelementUpdateNetworkElementRequest: TodoChangeNameToFitTheRest } -export type PndServiceGetPndApiResponse = - /** status 200 A successful response. */ PndGetPndResponse +export type PndServiceGetPndApiResponse = /** status 200 A successful response. */ PndGetPndResponse export type PndServiceGetPndApiArg = { pid: string /** Timestamp in nanoseconds since Epoch. */ @@ -663,6 +678,34 @@ export type RoutingTableServiceDeleteRouteApiArg = { timestamp?: string id?: string } +export type SubscriptionManagementServiceResetAllSubscriptionsApiResponse = + /** status 200 A successful response. */ SubscriptionmanagementResetAllSubscriptionsResponse +export type SubscriptionManagementServiceResetAllSubscriptionsApiArg = { + timestamp?: string +} +export type SubscriptionManagementServiceGetAllApiResponse = + /** status 200 A successful response. */ GosdnsubscriptionmanagementGetAllResponse +export type SubscriptionManagementServiceGetAllApiArg = { + timestamp?: string +} +export type SubscriptionManagementServiceAddApiResponse = + /** status 200 A successful response. */ SubscriptionmanagementAddResponse +export type SubscriptionManagementServiceAddApiArg = { + mneid: string + subscriptionmanagementSubscriptionManagementServiceAddBody: SubscriptionmanagementSubscriptionManagementServiceAddBody +} +export type SubscriptionManagementServiceGetApiResponse = + /** status 200 A successful response. */ GosdnsubscriptionmanagementGetResponse +export type SubscriptionManagementServiceGetApiArg = { + subid: string + timestamp?: string +} +export type SubscriptionManagementServiceDeleteApiResponse = + /** status 200 A successful response. */ GosdnsubscriptionmanagementDeleteResponse +export type SubscriptionManagementServiceDeleteApiArg = { + subid: string + timestamp?: string +} export type TopologyServiceGetTopologyApiResponse = /** status 200 A successful response. */ TopologyGetTopologyResponse export type TopologyServiceGetTopologyApiArg = { @@ -713,6 +756,13 @@ export type UserServiceUpdateUsersApiResponse = export type UserServiceUpdateUsersApiArg = { rbacUpdateUsersRequest: UpdateUsers } +export type NetworkElementServiceParseYangApiResponse = + /** status 200 A successful response. */ NetworkelementParseYangResponse +export type NetworkElementServiceParseYangApiArg = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + yang?: string +} export type AppAppDeregisterResponse = { timestamp?: string } @@ -817,11 +867,10 @@ export type TransportGnmiTransportOption = { } export type TransportRestconfTransportOption = object export type ChangedAccordingToStyleGuideHttpsDocsBufBuildBestPracticesStyleGuideEnums = - - | 'TYPE_UNSPECIFIED' - | 'TYPE_OPENCONFIG' - | 'TYPE_CONTAINERISED' - | 'TYPE_PLUGIN' + | 'TYPE_UNSPECIFIED' + | 'TYPE_OPENCONFIG' + | 'TYPE_CONTAINERISED' + | 'TYPE_PLUGIN' export type TransportTransportOption = { address?: string username?: string @@ -1147,6 +1196,43 @@ export type TopologyAddRoutingTableRequest = { export type TopologyDeleteRoutesResponse = { timestamp?: string } +export type SubscriptionmanagementResetAllSubscriptionsResponse = { + timestamp?: string +} +export type GosdnsubscriptionmanagementPath = { + elem?: string[] +} +export type SubscriptionmanagementSubscribeOptions = { + gnmiMode?: string + gnmiStreamMode?: string + sampleInterval?: string +} +export type GosdnsubscriptionmanagementSubscription = { + subid?: string + pid?: string + mneid?: string + mneName?: string + paths?: GosdnsubscriptionmanagementPath[] + subscribeOptions?: SubscriptionmanagementSubscribeOptions +} +export type GosdnsubscriptionmanagementGetAllResponse = { + timestamp?: string + subscriptions?: GosdnsubscriptionmanagementSubscription[] +} +export type SubscriptionmanagementAddResponse = { + timestamp?: string +} +export type SubscriptionmanagementSubscriptionManagementServiceAddBody = { + timestamp?: string + subscription?: GosdnsubscriptionmanagementSubscription +} +export type GosdnsubscriptionmanagementGetResponse = { + timestamp?: string + subscriptions?: GosdnsubscriptionmanagementSubscription +} +export type GosdnsubscriptionmanagementDeleteResponse = { + timestamp?: string +} export type TopologyNode = { id?: string name?: string @@ -1240,6 +1326,11 @@ export type UpdateUsers = { timestamp?: string user?: RbacUpdateUser[] } +export type NetworkelementParseYangResponse = { + /** Timestamp in nanoseconds since Epoch. */ + timestamp?: string + json?: string +} export const { useAppServiceDeregisterMutation, useConfigurationManagementServiceExportSdnConfigQuery, @@ -1271,6 +1362,11 @@ export const { useRoutingTableServiceGetRoutesQuery, useRoutingTableServiceAddRoutingTableMutation, useRoutingTableServiceDeleteRouteMutation, + useSubscriptionManagementServiceResetAllSubscriptionsQuery, + useSubscriptionManagementServiceGetAllQuery, + useSubscriptionManagementServiceAddMutation, + useSubscriptionManagementServiceGetQuery, + useSubscriptionManagementServiceDeleteMutation, useTopologyServiceGetTopologyQuery, useTopologyServiceAddLinkMutation, useTopologyServiceDeleteLinkMutation, @@ -1280,4 +1376,5 @@ export const { useUserServiceDeleteUsersMutation, useUserServiceGetUserQuery, useUserServiceUpdateUsersMutation, + useNetworkElementServiceParseYangQuery, } = injectedRtkApi diff --git a/react-ui/src/shared/provider/auth.provider.tsx b/react-ui/src/shared/provider/auth.provider.tsx index 4098eca5b..faf29847f 100644 --- a/react-ui/src/shared/provider/auth.provider.tsx +++ b/react-ui/src/shared/provider/auth.provider.tsx @@ -30,19 +30,18 @@ const AuthContext = createContext<AuthProviderType>({ }); export const AuthProvider = ({ children }) => { - const dispatch = useAppDispatch();; - const navigate = useNavigate(); - const { username } = useAppSelector(state => state.user); + const dispatch = useAppDispatch() + const navigate = useNavigate() + const { username } = useAppSelector(state => state.user) useEffect(() => { const token = getCookieValue('token'); - if (token) { - navigate(DEVICE_URL) - } else { + if (!token) { navigate(LOGIN_URL) } - }, [username]); + + }, [username, navigate]); const [ sendLogin, diff --git a/react-ui/src/shared/reducer/routine.reducer.ts b/react-ui/src/shared/reducer/routine.reducer.ts index 4cbc4b6ac..4ff9fce92 100644 --- a/react-ui/src/shared/reducer/routine.reducer.ts +++ b/react-ui/src/shared/reducer/routine.reducer.ts @@ -80,27 +80,14 @@ startListening({ const { routine } = listenerApi.getState() as RootState for (const [_, thunk] of Object.entries<ThunkEntity>(routine.thunks)) { if (!thunk) { - return + continue } - const dto: ThunkEntityDTO = thunk listenerApi.dispatch(addRoutine(dto)) } }, }) -// unsubscribe old routine -startListening({ - predicate: (action) => addRoutine.match(action), - effect: async (action, listenerApi) => { - const { routine } = listenerApi.getOriginalState() as RootState - const lastThunk = routine.thunks[CATEGORIES[action.payload.category]] - if (lastThunk) { - RoutineManager.unsubscribe(lastThunk.id) - } - }, -}) - // add new routine startListening({ predicate: (action) => addRoutine.match(action), @@ -114,4 +101,16 @@ startListening({ }, }) +// unsubscribe old routine +startListening({ + predicate: (action) => addRoutine.match(action), + effect: async (action, listenerApi) => { + const { routine } = listenerApi.getOriginalState() as RootState + const lastThunk = routine.thunks[CATEGORIES[action.payload.category]] + if (lastThunk) { + RoutineManager.unsubscribe(lastThunk.id) + } + }, +}) + export default RoutineSlice.reducer diff --git a/react-ui/src/shared/reducer/user.reducer.ts b/react-ui/src/shared/reducer/user.reducer.ts index ce9f2b502..af0f2d171 100644 --- a/react-ui/src/shared/reducer/user.reducer.ts +++ b/react-ui/src/shared/reducer/user.reducer.ts @@ -1,15 +1,14 @@ -import { api, RbacUser, UserServiceGetUsersApiArg } from '@api/api'; -import { setCookieValue } from '@helper/coookie'; -import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit'; -import { RootState } from '..'; +import { api, RbacUser, UserServiceGetUsersApiArg } from '@api/api' +import { setCookieValue } from '@helper/coookie' +import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit' +import { RootState } from '..' export interface UserSliceState { // defined by the frontend user input. This value is getting compared with the backend response - username: string, - user: RbacUser | null, + username: string + user: RbacUser | null } - const initialState: UserSliceState = { username: '', user: null, @@ -19,13 +18,15 @@ const userSlice = createSlice({ name: 'user', initialState, reducers: { - setToken: (state, action: PayloadAction<{ token: string, username: string }>) => { - const token = action.payload?.token || ''; - setCookieValue('token', token); - + setToken: (state, action: PayloadAction<{ token: string; username: string } | null>) => { + const token = action.payload?.token || '' + setCookieValue('token', token) + state.username = action.payload?.username || '' }, - setUser: (state, action: PayloadAction<RbacUser>) => { state.user = action.payload }, + setUser: (state, action: PayloadAction<RbacUser>) => { + state.user = action.payload + }, }, }) @@ -33,30 +34,27 @@ export const { setToken } = userSlice.actions export const { setUser } = userSlice.actions export default userSlice.reducer -export const userReducerPath = userSlice.reducerPath; +export const userReducerPath = userSlice.reducerPath - -export const fetchUser = createAsyncThunk( - 'user/fetchUser', - (_, thunkAPI) => { - const payload: UserServiceGetUsersApiArg = {}; +export const fetchUser = createAsyncThunk('user/fetchUser', (_, thunkAPI) => { + const payload: UserServiceGetUsersApiArg = {} thunkAPI.dispatch(api.endpoints.userServiceGetUsers.initiate(payload)).then((response) => { if (response.error || !response.data?.user?.length) { // TODO proper error handling - throw new Error('Fetching the pnd list after successful login failed'); + throw new Error('Fetching the pnd list after successful login failed') } - const { user } = thunkAPI.getState() as RootState; + const { user } = thunkAPI.getState() as RootState // TODO ask if this is the correct approach - const matchedUser = response.data.user.find((_user) => _user.name === user.username); + const matchedUser = response.data.user.find((_user) => _user.name === user.username) if (!matchedUser) { // TODO proper error handling - throw new Error('No user found with the provided username'); + throw new Error('No user found with the provided username') } - thunkAPI.dispatch(setUser(matchedUser)); - }); -}); \ No newline at end of file + thunkAPI.dispatch(setUser(matchedUser)) + }) +}) diff --git a/react-ui/src/shared/utils/routine.manager.ts b/react-ui/src/shared/utils/routine.manager.ts index 653112db7..ade079289 100644 --- a/react-ui/src/shared/utils/routine.manager.ts +++ b/react-ui/src/shared/utils/routine.manager.ts @@ -1,75 +1,72 @@ -import { QueryActionCreatorResult } from '@reduxjs/toolkit/query'; +import { QueryActionCreatorResult } from '@reduxjs/toolkit/query' -type Routine = QueryActionCreatorResult<any>; +type Routine = QueryActionCreatorResult<any> interface Entity { - routine: Routine, + routine: Routine id: number } const initialState = { - routines: [] as Entity[] + routines: [] as Entity[], } - /** * Routine manager is a singleton that holds all running routines. * The redux store holds any persistable information about the routines. * The routines objects itself are stored in the RoutineManager. */ export const RoutineManager = (() => { - const state = initialState; + const state = initialState const add = (routine: Routine): number => { - const id = state.routines.length; + const id = state.routines.length const newEntity: Entity = { routine: routine, - id + id, } - state.routines = [...state.routines, newEntity]; + state.routines = [...state.routines, newEntity] - return id; + return id } - const unsubscribeAll = () => { state.routines.forEach(({ routine: subscription }) => { _unsubscribe(subscription) - }); + }) - state.routines = initialState.routines; + state.routines = initialState.routines } /** - * @param id + * @param id * @returns returns true if the routine was stopped, false if it was not found */ const unsubscribe = (id: number): boolean => { - const routine = state.routines.find(({ id: routineId }) => routineId === id); + const routine = state.routines.find(({ id: routineId }) => routineId === id) if (routine) { - _unsubscribe(routine.routine); + _unsubscribe(routine.routine) } - return !!routine; + return !!routine } /** * Actual unsubscribe process. * This process is extracted to have a single process of unsubscribing. - * - * @param subscription + * + * @param subscription */ const _unsubscribe = (subscription: Routine) => { - subscription.unsubscribe(); + subscription.unsubscribe() // TODO remove from state } - return { add, unsubscribe, - unsubscribeAll + unsubscribeAll, } -})(); \ No newline at end of file +})() diff --git a/react-ui/src/stores/api.store.ts b/react-ui/src/stores/api.store.ts index fd894e97b..57ed95b64 100644 --- a/react-ui/src/stores/api.store.ts +++ b/react-ui/src/stores/api.store.ts @@ -1,18 +1,19 @@ -import { getCookieValue } from '@helper/coookie'; -import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'; +import { getCookieValue } from '@helper/coookie' +import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react' // initialize an empty api service that we'll inject endpoints into later as needed export const emptySplitApi = createApi({ - baseQuery: fetchBaseQuery({ - baseUrl: '/api', prepareHeaders: (headers) => { - const token = getCookieValue('token'); + baseQuery: fetchBaseQuery({ + baseUrl: '/api', + prepareHeaders: (headers) => { + const token = getCookieValue('token') - if (token) { - headers.set('authorize', `${token}`) - } + if (token) { + headers.set('authorize', `${token}`) + } - return headers - }, - }), - endpoints: () => ({}), -}) \ No newline at end of file + return headers + }, + }), + endpoints: () => ({}), +}) diff --git a/react-ui/src/stores/index.ts b/react-ui/src/stores/index.ts index e9a18016b..9b738e47f 100644 --- a/react-ui/src/stores/index.ts +++ b/react-ui/src/stores/index.ts @@ -5,20 +5,31 @@ import { setupListeners } from '@reduxjs/toolkit/query' import { FLUSH, PAUSE, PERSIST, PURGE, REGISTER, REHYDRATE } from 'redux-persist' import persistStore from 'redux-persist/es/persistStore' import { emptySplitApi } from './api.store' -import { rtkQueryErrorLogger } from './middleware/devLogging.middleware' +import { rtkQueryErrorLogger } from './middleware/api.listener.middleware' import { listenerMiddleware } from './middleware/listener.middleware' import persistedReducer from './persist.store' - export const store = configureStore({ - reducer: persistedReducer, - middleware: (getDefaultMiddleware) => - getDefaultMiddleware({ - serializableCheck: { - ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER, FETCH_DEVICE_ACTION + '/fulfilled', FETCH_MNE_ACTION + '/fulfilled', 'routine/addRoutine'], - ignoredPaths: ['routine.thunks'] - }, - }).prepend(listenerMiddleware.middleware).concat(emptySplitApi.middleware, rtkQueryErrorLogger), + reducer: persistedReducer, + middleware: (getDefaultMiddleware) => + getDefaultMiddleware({ + serializableCheck: { + ignoredActions: [ + FLUSH, + REHYDRATE, + PAUSE, + PERSIST, + PURGE, + REGISTER, + FETCH_DEVICE_ACTION + '/fulfilled', + FETCH_MNE_ACTION + '/fulfilled', + 'routine/addRoutine', + ], + ignoredPaths: ['routine.thunks'], + }, + }) + .prepend(listenerMiddleware.middleware) + .concat(emptySplitApi.middleware, rtkQueryErrorLogger), }) export const persistor = persistStore(store) @@ -26,6 +37,6 @@ export const persistor = persistStore(store) // TODO setupListeners(store.dispatch) -export type RootState = ReturnType<typeof store.getState>; -export type MyState = ReturnType<typeof persistedReducer>; -export type AppDispatch = typeof store.dispatch; \ No newline at end of file +export type RootState = ReturnType<typeof store.getState> +export type MyState = ReturnType<typeof persistedReducer> +export type AppDispatch = typeof store.dispatch diff --git a/react-ui/src/stores/middleware/api.listener.middleware.ts b/react-ui/src/stores/middleware/api.listener.middleware.ts new file mode 100644 index 000000000..b6a1a713e --- /dev/null +++ b/react-ui/src/stores/middleware/api.listener.middleware.ts @@ -0,0 +1,26 @@ +import { isRejectedWithValue } from '@reduxjs/toolkit' +import { setToken } from '@shared/reducer/user.reducer' +import { toast } from 'react-toastify' +import { Middleware, MiddlewareAPI } from 'redux' + +/** + * Log a warning and show a toast! + */ +export const rtkQueryErrorLogger: Middleware = (api: MiddlewareAPI) => (next) => (action) => { + if (!isRejectedWithValue(action)) { + return next(action) + } + + const errorCode = action.payload.status || -1 + switch (errorCode) { + case 403: + case 401: + api.dispatch(setToken(null)) + toast.info('Your session has expired. Please login again', {}) + break + default: + console.warn('An unkown error code returned: ' + errorCode) + } + + return next(action) +} diff --git a/react-ui/src/stores/middleware/devLogging.middleware.ts b/react-ui/src/stores/middleware/devLogging.middleware.ts deleted file mode 100644 index 2e58a2ea5..000000000 --- a/react-ui/src/stores/middleware/devLogging.middleware.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { isRejectedWithValue } from "@reduxjs/toolkit" -import { toast } from "react-toastify" -import { Middleware, MiddlewareAPI } from "redux" - -const environment = process.env.NODE_ENV || 'prod'; - -// TODO check env before creation of this middleware - -/** - * Log a warning and show a toast! - */ -export const rtkQueryErrorLogger: Middleware = (api: MiddlewareAPI) => (next) => (action) => { - // RTK Query uses `createAsyncThunk` from redux-toolkit under the hood, so we're able to utilize these matchers! - if (environment !== 'prod' && isRejectedWithValue(action)) { - console.warn(action.error) - toast.warn('data' in action.error - ? (action.error.data as { message: string }).message - : action.error.message, { - - }) - } - - return next(action) -} \ No newline at end of file -- GitLab From 5645c7ed0ea0d96e68eb1577808236daa3d3bc07 Mon Sep 17 00:00:00 2001 From: matthiasf <matthias.feyll@@stud.h-da.de> Date: Mon, 18 Nov 2024 15:53:22 +0100 Subject: [PATCH 33/44] implement yang model visual representation --- react-ui/.gitignore | 0 react-ui/.prettierrc | 2 +- react-ui/README.md | 0 react-ui/assets/logo.svg | 0 react-ui/dist/assets/logo-Bj6KFr1z.svg | 0 react-ui/dist/favicon.ico | Bin react-ui/dist/fonts/Inter.ttf | Bin react-ui/dist/index.html | 0 react-ui/dist/logo.png | Bin react-ui/dist/logo.svg | 0 react-ui/dist/manifest.json | 0 react-ui/dist/robots.txt | 0 react-ui/docker/wasm/Dockerfile | 0 react-ui/docs/README.md | 0 react-ui/docs/design.md | 0 react-ui/docs/development.md | 0 react-ui/docs/routine_pattern.md | 0 react-ui/docs/routine_pattern.png | Bin react-ui/eslint.config.js | 0 react-ui/index.html | 0 react-ui/package.json | 1 + react-ui/public/favicon.ico | Bin react-ui/public/fonts/Inter.ttf | Bin react-ui/public/logo.png | Bin react-ui/public/logo.svg | 0 react-ui/public/manifest.json | 0 react-ui/public/robots.txt | 0 react-ui/scripts/openapi-config.json | 0 .../src/components/devices/index.module.ts | 5 + .../devices/reducer/device.reducer.ts | 0 .../devices/routines/device.routine.ts | 0 .../src/components/devices/routines/index.ts | 0 .../devices/routines/mne.routine.ts | 0 .../src/components/devices/view/device.scss | 37 ++-- .../devices/view/device.view.table.tsx | 2 +- .../devices/view/device.view.tabs.tsx | 10 +- .../components/devices/view/device.view.tsx | 63 ++++--- .../view_model/device.table.viewmodel.ts | 0 .../view_model/device.tabs.viewmodel.ts | 28 +-- .../devices/view_model/device.viewmodel.ts | 0 .../components/login/layouts/login.layout.tsx | 0 react-ui/src/components/login/view/login.scss | 0 .../src/components/login/view/login.view.tsx | 1 + .../login/viewmodel/login.viewmodel.ts | 0 react-ui/src/hooks.ts | 0 react-ui/src/i18n/config.js | 0 .../src/i18n/locales/de/translations.json | 0 .../src/i18n/locales/en/translations.json | 0 react-ui/src/index.scss | 0 react-ui/src/index.tsx | 0 react-ui/src/routes.tsx | 0 react-ui/src/setupTests.js | 0 react-ui/src/shared/api/api.ts | 0 react-ui/src/shared/components/README.md | 3 + .../reducer/json_viewer.reducer.ts | 90 ++++++++++ .../json_viewer/view/json_viewer.scss | 47 +++++ .../json_viewer/view/json_viewer.view.tsx | 91 ++++++++++ .../viewmodel/json_viewer.viewmodel.tsx | 55 ++++++ react-ui/src/shared/helper/coookie.ts | 0 react-ui/src/shared/icons/icons.ts | 0 react-ui/src/shared/layouts/basic.layout.tsx | 0 .../protected.layout/protected.layout.scss | 0 .../protected.layout/protected.layout.tsx | 0 .../src/shared/provider/auth.provider.tsx | 0 .../src/shared/reducer/routine.reducer.ts | 29 +-- react-ui/src/shared/reducer/user.reducer.ts | 0 react-ui/src/shared/style/box.scss | 0 react-ui/src/shared/style/colors.scss | 1 + react-ui/src/shared/style/fonts.scss | 0 react-ui/src/shared/style/index.scss | 0 react-ui/src/shared/style/toast.scss | 0 react-ui/src/shared/style/utils.scss | 0 react-ui/src/shared/utils/routine.manager.ts | 0 .../shared/utils/yang_parser/go/.gitignore | 0 .../go/assets/wasm_exec.d.ts.generated | 0 .../src/shared/utils/yang_parser/go/go.env | 0 .../src/shared/utils/yang_parser/go/go.mod | 0 .../src/shared/utils/yang_parser/go/go.sum | 0 .../utils/yang_parser/go/yang_parser.go | 0 .../shared/utils/yang_parser/yang_parser.ts | 0 react-ui/src/stores/api.store.ts | 0 react-ui/src/stores/index.ts | 0 .../middleware/api.listener.middleware.ts | 0 .../stores/middleware/listener.middleware.ts | 0 react-ui/src/stores/persist.store.ts | 2 + react-ui/tsconfig.eslint.json | 0 react-ui/tsconfig.json | 0 react-ui/tsconfig.node.json | 0 react-ui/vite.config.mjs | 0 react-ui/yarn.lock | 168 +++++++++++++++++- 90 files changed, 558 insertions(+), 77 deletions(-) mode change 100644 => 100755 react-ui/.gitignore mode change 100644 => 100755 react-ui/.prettierrc mode change 100644 => 100755 react-ui/README.md mode change 100644 => 100755 react-ui/assets/logo.svg mode change 100644 => 100755 react-ui/dist/assets/logo-Bj6KFr1z.svg mode change 100644 => 100755 react-ui/dist/favicon.ico mode change 100644 => 100755 react-ui/dist/fonts/Inter.ttf mode change 100644 => 100755 react-ui/dist/index.html mode change 100644 => 100755 react-ui/dist/logo.png mode change 100644 => 100755 react-ui/dist/logo.svg mode change 100644 => 100755 react-ui/dist/manifest.json mode change 100644 => 100755 react-ui/dist/robots.txt mode change 100644 => 100755 react-ui/docker/wasm/Dockerfile mode change 100644 => 100755 react-ui/docs/README.md mode change 100644 => 100755 react-ui/docs/design.md mode change 100644 => 100755 react-ui/docs/development.md mode change 100644 => 100755 react-ui/docs/routine_pattern.md mode change 100644 => 100755 react-ui/docs/routine_pattern.png mode change 100644 => 100755 react-ui/eslint.config.js mode change 100644 => 100755 react-ui/index.html mode change 100644 => 100755 react-ui/package.json mode change 100644 => 100755 react-ui/public/favicon.ico mode change 100644 => 100755 react-ui/public/fonts/Inter.ttf mode change 100644 => 100755 react-ui/public/logo.png mode change 100644 => 100755 react-ui/public/logo.svg mode change 100644 => 100755 react-ui/public/manifest.json mode change 100644 => 100755 react-ui/public/robots.txt mode change 100644 => 100755 react-ui/scripts/openapi-config.json create mode 100755 react-ui/src/components/devices/index.module.ts mode change 100644 => 100755 react-ui/src/components/devices/reducer/device.reducer.ts mode change 100644 => 100755 react-ui/src/components/devices/routines/device.routine.ts mode change 100644 => 100755 react-ui/src/components/devices/routines/index.ts mode change 100644 => 100755 react-ui/src/components/devices/routines/mne.routine.ts mode change 100644 => 100755 react-ui/src/components/devices/view/device.scss mode change 100644 => 100755 react-ui/src/components/devices/view/device.view.table.tsx mode change 100644 => 100755 react-ui/src/components/devices/view/device.view.tabs.tsx mode change 100644 => 100755 react-ui/src/components/devices/view/device.view.tsx mode change 100644 => 100755 react-ui/src/components/devices/view_model/device.table.viewmodel.ts mode change 100644 => 100755 react-ui/src/components/devices/view_model/device.tabs.viewmodel.ts mode change 100644 => 100755 react-ui/src/components/devices/view_model/device.viewmodel.ts mode change 100644 => 100755 react-ui/src/components/login/layouts/login.layout.tsx mode change 100644 => 100755 react-ui/src/components/login/view/login.scss mode change 100644 => 100755 react-ui/src/components/login/view/login.view.tsx mode change 100644 => 100755 react-ui/src/components/login/viewmodel/login.viewmodel.ts mode change 100644 => 100755 react-ui/src/hooks.ts mode change 100644 => 100755 react-ui/src/i18n/config.js mode change 100644 => 100755 react-ui/src/i18n/locales/de/translations.json mode change 100644 => 100755 react-ui/src/i18n/locales/en/translations.json mode change 100644 => 100755 react-ui/src/index.scss mode change 100644 => 100755 react-ui/src/index.tsx mode change 100644 => 100755 react-ui/src/routes.tsx mode change 100644 => 100755 react-ui/src/setupTests.js mode change 100644 => 100755 react-ui/src/shared/api/api.ts create mode 100644 react-ui/src/shared/components/README.md create mode 100755 react-ui/src/shared/components/json_viewer/reducer/json_viewer.reducer.ts create mode 100755 react-ui/src/shared/components/json_viewer/view/json_viewer.scss create mode 100755 react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx create mode 100644 react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx mode change 100644 => 100755 react-ui/src/shared/helper/coookie.ts mode change 100644 => 100755 react-ui/src/shared/icons/icons.ts mode change 100644 => 100755 react-ui/src/shared/layouts/basic.layout.tsx mode change 100644 => 100755 react-ui/src/shared/layouts/protected.layout/protected.layout.scss mode change 100644 => 100755 react-ui/src/shared/layouts/protected.layout/protected.layout.tsx mode change 100644 => 100755 react-ui/src/shared/provider/auth.provider.tsx mode change 100644 => 100755 react-ui/src/shared/reducer/routine.reducer.ts mode change 100644 => 100755 react-ui/src/shared/reducer/user.reducer.ts mode change 100644 => 100755 react-ui/src/shared/style/box.scss mode change 100644 => 100755 react-ui/src/shared/style/colors.scss mode change 100644 => 100755 react-ui/src/shared/style/fonts.scss mode change 100644 => 100755 react-ui/src/shared/style/index.scss mode change 100644 => 100755 react-ui/src/shared/style/toast.scss mode change 100644 => 100755 react-ui/src/shared/style/utils.scss mode change 100644 => 100755 react-ui/src/shared/utils/routine.manager.ts mode change 100644 => 100755 react-ui/src/shared/utils/yang_parser/go/.gitignore mode change 100644 => 100755 react-ui/src/shared/utils/yang_parser/go/assets/wasm_exec.d.ts.generated mode change 100644 => 100755 react-ui/src/shared/utils/yang_parser/go/go.env mode change 100644 => 100755 react-ui/src/shared/utils/yang_parser/go/go.mod mode change 100644 => 100755 react-ui/src/shared/utils/yang_parser/go/go.sum mode change 100644 => 100755 react-ui/src/shared/utils/yang_parser/go/yang_parser.go mode change 100644 => 100755 react-ui/src/shared/utils/yang_parser/yang_parser.ts mode change 100644 => 100755 react-ui/src/stores/api.store.ts mode change 100644 => 100755 react-ui/src/stores/index.ts mode change 100644 => 100755 react-ui/src/stores/middleware/api.listener.middleware.ts mode change 100644 => 100755 react-ui/src/stores/middleware/listener.middleware.ts mode change 100644 => 100755 react-ui/src/stores/persist.store.ts mode change 100644 => 100755 react-ui/tsconfig.eslint.json mode change 100644 => 100755 react-ui/tsconfig.json mode change 100644 => 100755 react-ui/tsconfig.node.json mode change 100644 => 100755 react-ui/vite.config.mjs mode change 100644 => 100755 react-ui/yarn.lock diff --git a/react-ui/.gitignore b/react-ui/.gitignore old mode 100644 new mode 100755 diff --git a/react-ui/.prettierrc b/react-ui/.prettierrc old mode 100644 new mode 100755 index 5438d4a98..7ed67eff4 --- a/react-ui/.prettierrc +++ b/react-ui/.prettierrc @@ -3,5 +3,5 @@ "singleQuote": true, "trailingComma": "es5", "tabWidth": 4, - "printWidth": 100 + "printWidth": 80 } diff --git a/react-ui/README.md b/react-ui/README.md old mode 100644 new mode 100755 diff --git a/react-ui/assets/logo.svg b/react-ui/assets/logo.svg old mode 100644 new mode 100755 diff --git a/react-ui/dist/assets/logo-Bj6KFr1z.svg b/react-ui/dist/assets/logo-Bj6KFr1z.svg old mode 100644 new mode 100755 diff --git a/react-ui/dist/favicon.ico b/react-ui/dist/favicon.ico old mode 100644 new mode 100755 diff --git a/react-ui/dist/fonts/Inter.ttf b/react-ui/dist/fonts/Inter.ttf old mode 100644 new mode 100755 diff --git a/react-ui/dist/index.html b/react-ui/dist/index.html old mode 100644 new mode 100755 diff --git a/react-ui/dist/logo.png b/react-ui/dist/logo.png old mode 100644 new mode 100755 diff --git a/react-ui/dist/logo.svg b/react-ui/dist/logo.svg old mode 100644 new mode 100755 diff --git a/react-ui/dist/manifest.json b/react-ui/dist/manifest.json old mode 100644 new mode 100755 diff --git a/react-ui/dist/robots.txt b/react-ui/dist/robots.txt old mode 100644 new mode 100755 diff --git a/react-ui/docker/wasm/Dockerfile b/react-ui/docker/wasm/Dockerfile old mode 100644 new mode 100755 diff --git a/react-ui/docs/README.md b/react-ui/docs/README.md old mode 100644 new mode 100755 diff --git a/react-ui/docs/design.md b/react-ui/docs/design.md old mode 100644 new mode 100755 diff --git a/react-ui/docs/development.md b/react-ui/docs/development.md old mode 100644 new mode 100755 diff --git a/react-ui/docs/routine_pattern.md b/react-ui/docs/routine_pattern.md old mode 100644 new mode 100755 diff --git a/react-ui/docs/routine_pattern.png b/react-ui/docs/routine_pattern.png old mode 100644 new mode 100755 diff --git a/react-ui/eslint.config.js b/react-ui/eslint.config.js old mode 100644 new mode 100755 diff --git a/react-ui/index.html b/react-ui/index.html old mode 100644 new mode 100755 diff --git a/react-ui/package.json b/react-ui/package.json old mode 100644 new mode 100755 index 439250704..57c152ac4 --- a/react-ui/package.json +++ b/react-ui/package.json @@ -79,6 +79,7 @@ "globals": "^15.9.0", "prettier": "^3.3.3", "sass": "1.77.6", + "sass-embedded": "^1.80.6", "typescript": "^5.5.3", "typescript-eslint": "^8.0.1", "vite": "^5.4.9", diff --git a/react-ui/public/favicon.ico b/react-ui/public/favicon.ico old mode 100644 new mode 100755 diff --git a/react-ui/public/fonts/Inter.ttf b/react-ui/public/fonts/Inter.ttf old mode 100644 new mode 100755 diff --git a/react-ui/public/logo.png b/react-ui/public/logo.png old mode 100644 new mode 100755 diff --git a/react-ui/public/logo.svg b/react-ui/public/logo.svg old mode 100644 new mode 100755 diff --git a/react-ui/public/manifest.json b/react-ui/public/manifest.json old mode 100644 new mode 100755 diff --git a/react-ui/public/robots.txt b/react-ui/public/robots.txt old mode 100644 new mode 100755 diff --git a/react-ui/scripts/openapi-config.json b/react-ui/scripts/openapi-config.json old mode 100644 new mode 100755 diff --git a/react-ui/src/components/devices/index.module.ts b/react-ui/src/components/devices/index.module.ts new file mode 100755 index 000000000..5ef9299bd --- /dev/null +++ b/react-ui/src/components/devices/index.module.ts @@ -0,0 +1,5 @@ +import { fetchSelectedMneThunk } from './routines/mne.routine' + +const routines = { + fetchSelectedMneThunk: fetchSelectedMneThunk, +} diff --git a/react-ui/src/components/devices/reducer/device.reducer.ts b/react-ui/src/components/devices/reducer/device.reducer.ts old mode 100644 new mode 100755 diff --git a/react-ui/src/components/devices/routines/device.routine.ts b/react-ui/src/components/devices/routines/device.routine.ts old mode 100644 new mode 100755 diff --git a/react-ui/src/components/devices/routines/index.ts b/react-ui/src/components/devices/routines/index.ts old mode 100644 new mode 100755 diff --git a/react-ui/src/components/devices/routines/mne.routine.ts b/react-ui/src/components/devices/routines/mne.routine.ts old mode 100644 new mode 100755 diff --git a/react-ui/src/components/devices/view/device.scss b/react-ui/src/components/devices/view/device.scss old mode 100644 new mode 100755 index afebc6fe5..540cd4d01 --- a/react-ui/src/components/devices/view/device.scss +++ b/react-ui/src/components/devices/view/device.scss @@ -1,26 +1,27 @@ -@import '/src/shared/style/colors.scss'; +@import "/src/shared/style/colors.scss"; -thead { - font-size: 0.9em; -} - -tr:hover > td { - background-color: lighten(map-get($theme-colors, primary), 30%) !important; - cursor: pointer; -} +.device-table { + & thead { + font-size: 0.9em; + } -tr.active > td { - background-color: lighten(map-get($theme-colors, primary), 5%) !important; + & tr:hover > td { + background-color: map-get($theme-colors, "primary::hover"); + cursor: pointer; + } - color: map-get($theme-colors, 'black') !important; -} + & tr.active > td { + background-color: lighten(map-get($theme-colors, primary), 5%) !important; + color: map-get($theme-colors, "black") !important; + } -tr > td { - color: map-get($theme-colors, 'dark') !important; -} + & tr > td { + color: map-get($theme-colors, "dark") !important; + } -tr:nth-child(2n + 1) > td { - background-color: lighten(map-get($theme-colors, primary), 38%); + & tr:nth-child(2n + 1) > td { + background-color: lighten(map-get($theme-colors, primary), 38%); + } } .c-box { diff --git a/react-ui/src/components/devices/view/device.view.table.tsx b/react-ui/src/components/devices/view/device.view.table.tsx old mode 100644 new mode 100755 index 933b50a8a..312caab60 --- a/react-ui/src/components/devices/view/device.view.table.tsx +++ b/react-ui/src/components/devices/view/device.view.table.tsx @@ -42,7 +42,7 @@ export const DeviceViewTable = (searchRef: MutableRefObject<HTMLInputElement>) = return ( - <Table striped responsive> + <Table striped responsive className="device-table"> <thead> <tr> <th>{t('device.table.header.name')}</th> diff --git a/react-ui/src/components/devices/view/device.view.tabs.tsx b/react-ui/src/components/devices/view/device.view.tabs.tsx old mode 100644 new mode 100755 index 05e854651..d492c90b7 --- a/react-ui/src/components/devices/view/device.view.tabs.tsx +++ b/react-ui/src/components/devices/view/device.view.tabs.tsx @@ -1,5 +1,5 @@ import { useAppSelector } from "@hooks"; -import ReactJson from 'react-json-view'; +import { JsonViewer } from "../../../shared/components/json_viewer/view/json_viewer.view"; import { useDeviceTabsViewModel } from "../view_model/device.tabs.viewmodel"; export enum DeviceViewTabValues { @@ -9,7 +9,7 @@ export enum DeviceViewTabValues { export const DeviceViewTabs = (activeTab: DeviceViewTabValues) => { const { selectedDevice } = useAppSelector(state => state.device); - const { yang } = useDeviceTabsViewModel(); + const { jsonYang } = useDeviceTabsViewModel(); const metadataTab = () => { return ( @@ -22,8 +22,10 @@ export const DeviceViewTabs = (activeTab: DeviceViewTabValues) => { const yangModelTab = () => { return ( <> - {selectedDevice?.json && - <ReactJson src={selectedDevice.json} name={false} collapsed={false} quotesOnKeys={false} /> + {jsonYang && + <JsonViewer json={jsonYang} /> + + //<ReactJson src={selectedDevice.json} name={false} collapsed={true} quotesOnKeys={false} /> } </> ); diff --git a/react-ui/src/components/devices/view/device.view.tsx b/react-ui/src/components/devices/view/device.view.tsx old mode 100644 new mode 100755 index 0d04b959c..2602463bb --- a/react-ui/src/components/devices/view/device.view.tsx +++ b/react-ui/src/components/devices/view/device.view.tsx @@ -13,34 +13,49 @@ function DeviceView() { return ( <div className='m-4 pt-4'> - <Container className="bg-white rounded c-box" fluid> + <Container fluid> <Row> - <Col sm={7} className='border-right mt-4'><h3 className='text-black-50'>{t('device.title')}</h3></Col> - <Col sm={5} className='mt-4'> - <Nav className='justify-content-around'> - <NavLink className={handleActiveTabLink(DeviceViewTabValues.METADATA) + " tab-links"} onClick={() => setActiveTab(DeviceViewTabValues.METADATA)}>{t('device.tabs.metadata.title')}</NavLink> - <NavLink className={handleActiveTabLink(DeviceViewTabValues.YANGMODEL) + " tab-links"} onClick={() => setActiveTab(DeviceViewTabValues.YANGMODEL)}>{t('device.tabs.yang_model.title')}</NavLink> - </Nav> - </Col> - </Row> + <Col sm={5}> + <Container className='bg-white rounded c-box'> + <Row> + <Col sm={12} className='mt-4'><h3 className='text-black-50'>{t('device.title')}</h3></Col> + </Row> - <Row className='align-items-center'> - <Col sm={3}> - <Form.Group controlId='device.search' className='p-0 mx-1 pt-2'> - <Form.Control type="text" placeholder={t('device.search.placeholder')} ref={searchRef} /> - </Form.Group> - </Col> - <Col sm={{ span: 2, offset: 2 }} className='border-right pt-2'> - <Button variant='primary' className='w-100 my-auto'>{t('device.add_device_button')}</Button> - </Col> - </Row> + <Row className='align-items-center'> + <Col sm={6}> + <Form.Group controlId='device.search' className='p-0 mx-1 pt-2'> + <Form.Control type="text" placeholder={t('device.search.placeholder')} ref={searchRef} /> + </Form.Group> + </Col> + <Col sm={{ span: 3, offset: 3 }} className='pt-2'> + <Button variant='primary' className='w-100 my-auto'>{t('device.add_device_button')}</Button> + </Col> + </Row> - <Row className='align-items-start'> - <Col sm={7} className='pt-2 border-right'> - {DeviceViewTable(searchRef)} + <Row className='align-items-start'> + <Col sm={12} className='pt-2'> + {DeviceViewTable(searchRef)} + </Col> + </Row> + </Container> </Col> - <Col sm={5} className='pt-2'> - {DeviceViewTabs(activeTab)} + <Col sm={7}> + <Container className='bg-white rounded c-box'> + <Row> + <Col sm={12} className='mt-4'> + <Nav className='justify-content-around'> + <NavLink className={handleActiveTabLink(DeviceViewTabValues.METADATA) + " tab-links"} onClick={() => setActiveTab(DeviceViewTabValues.METADATA)}>{t('device.tabs.metadata.title')}</NavLink> + <NavLink className={handleActiveTabLink(DeviceViewTabValues.YANGMODEL) + " tab-links"} onClick={() => setActiveTab(DeviceViewTabValues.YANGMODEL)}>{t('device.tabs.yang_model.title')}</NavLink> + </Nav> + </Col> + </Row> + + <Row className='align-items-start'> + <Col sm={12} className='pt-2'> + {DeviceViewTabs(activeTab)} + </Col> + </Row> + </Container> </Col> </Row> </Container> diff --git a/react-ui/src/components/devices/view_model/device.table.viewmodel.ts b/react-ui/src/components/devices/view_model/device.table.viewmodel.ts old mode 100644 new mode 100755 diff --git a/react-ui/src/components/devices/view_model/device.tabs.viewmodel.ts b/react-ui/src/components/devices/view_model/device.tabs.viewmodel.ts old mode 100644 new mode 100755 index e15f7c721..4a60567b6 --- a/react-ui/src/components/devices/view_model/device.tabs.viewmodel.ts +++ b/react-ui/src/components/devices/view_model/device.tabs.viewmodel.ts @@ -1,6 +1,5 @@ import { useAppSelector } from '@hooks' -import { useYangParser } from '@utils/yang_parser/yang_parser' -import { useEffect, useRef } from 'react' +import { useMemo } from 'react' export enum DeviceViewTabValues { METADATA = 'metadata', @@ -9,24 +8,25 @@ export enum DeviceViewTabValues { export const useDeviceTabsViewModel = () => { const { selectedDevice } = useAppSelector((state) => state.device) - const { parse } = useYangParser() - const yang = useRef<JSON | null>() - useEffect(() => { - const serializedYang = selectedDevice?.mne?.model + const getYangModelJSON = (): JSON | null => { + if (!selectedDevice?.json) { + return null + } + + const key = Object.keys(selectedDevice.json).at(1) as keyof typeof selectedDevice.json + const innerJson = selectedDevice.json[key] - if (!serializedYang) { - return + if (!(innerJson instanceof Object)) { + return null } - console.log(serializedYang) + return innerJson + } - // parse(serializedYang).then((json) => { - // yang.current = json - // }) - }, [selectedDevice, parse]) + const jsonYang = useMemo<JSON | null>(getYangModelJSON, [selectedDevice]) return { - yang, + jsonYang, } } diff --git a/react-ui/src/components/devices/view_model/device.viewmodel.ts b/react-ui/src/components/devices/view_model/device.viewmodel.ts old mode 100644 new mode 100755 diff --git a/react-ui/src/components/login/layouts/login.layout.tsx b/react-ui/src/components/login/layouts/login.layout.tsx old mode 100644 new mode 100755 diff --git a/react-ui/src/components/login/view/login.scss b/react-ui/src/components/login/view/login.scss old mode 100644 new mode 100755 diff --git a/react-ui/src/components/login/view/login.view.tsx b/react-ui/src/components/login/view/login.view.tsx old mode 100644 new mode 100755 index 0db0ea206..e393bb4b3 --- a/react-ui/src/components/login/view/login.view.tsx +++ b/react-ui/src/components/login/view/login.view.tsx @@ -47,6 +47,7 @@ const LoginView = ({ children }) => { ref={usernameRef} required autoComplete='on' + autoFocus={true} /> <Form.Control.Feedback type="invalid"> {t('global.form.empty_field')} diff --git a/react-ui/src/components/login/viewmodel/login.viewmodel.ts b/react-ui/src/components/login/viewmodel/login.viewmodel.ts old mode 100644 new mode 100755 diff --git a/react-ui/src/hooks.ts b/react-ui/src/hooks.ts old mode 100644 new mode 100755 diff --git a/react-ui/src/i18n/config.js b/react-ui/src/i18n/config.js old mode 100644 new mode 100755 diff --git a/react-ui/src/i18n/locales/de/translations.json b/react-ui/src/i18n/locales/de/translations.json old mode 100644 new mode 100755 diff --git a/react-ui/src/i18n/locales/en/translations.json b/react-ui/src/i18n/locales/en/translations.json old mode 100644 new mode 100755 diff --git a/react-ui/src/index.scss b/react-ui/src/index.scss old mode 100644 new mode 100755 diff --git a/react-ui/src/index.tsx b/react-ui/src/index.tsx old mode 100644 new mode 100755 diff --git a/react-ui/src/routes.tsx b/react-ui/src/routes.tsx old mode 100644 new mode 100755 diff --git a/react-ui/src/setupTests.js b/react-ui/src/setupTests.js old mode 100644 new mode 100755 diff --git a/react-ui/src/shared/api/api.ts b/react-ui/src/shared/api/api.ts old mode 100644 new mode 100755 diff --git a/react-ui/src/shared/components/README.md b/react-ui/src/shared/components/README.md new file mode 100644 index 000000000..6694ec6f8 --- /dev/null +++ b/react-ui/src/shared/components/README.md @@ -0,0 +1,3 @@ +#### Documentation + +Shared components are components that will be reused. Each shared component is completely isolated by other components as well as the rest of the project. \ No newline at end of file diff --git a/react-ui/src/shared/components/json_viewer/reducer/json_viewer.reducer.ts b/react-ui/src/shared/components/json_viewer/reducer/json_viewer.reducer.ts new file mode 100755 index 000000000..cdd0351b1 --- /dev/null +++ b/react-ui/src/shared/components/json_viewer/reducer/json_viewer.reducer.ts @@ -0,0 +1,90 @@ +import { PayloadAction, createSlice } from '@reduxjs/toolkit' + +export enum CollapseValues { + TOGGLE, + FALSE, + TRUE +} + +const CollapseActions = { + [CollapseValues.TOGGLE]: (collapse: boolean) => { return collapse = !collapse }, + [CollapseValues.FALSE]: () => { return false }, + [CollapseValues.TRUE]: () => { return true }, +} + +type Identifier = { + key: string, + nested: number +} + + +// containg object location and collapsed information +interface CollapsedItem { + identifier: Identifier + collapsed: boolean +} + +export interface ReducerState { + breadcrumbs: Array<string>, + + /** + * Meta container containg identifier of + * all non collapsed json objects + */ + collapseContainer: Array<CollapsedItem> +} + +const initialState: ReducerState = { + breadcrumbs: [], + collapseContainer: [], +} + +export const compareIdentifier = (a: Identifier, b: Identifier): boolean => { + return a.key === b.key && a.nested === b.nested; +} + +/** + * Every component instance has its own id. + * This id is getting used as key to define the respective object container + */ +const JsonViewerSlice = createSlice({ + name: 'json_viewer', + initialState, + reducers: { + toggleCollapse: (state, { payload }: PayloadAction<{ identifier: Identifier, collapse: CollapseValues }>) => { + const { identifier, collapse } = payload + + // potentially find already collapsed + let i = state.collapseContainer.findIndex(i => compareIdentifier(identifier, i.identifier)) + + + if (i === -1) { + console.log('new ' + payload.key + " => " + payload.nested + ' end') + // create new collapse + const newItem = { identifier, collapsed: true } + state.collapseContainer = [...state.collapseContainer, newItem] + return; + } + + // update nested attribute + state.collapseContainer = state.collapseContainer.map((item, index) => { + if (index !== i) { + return item + } + + return { + ...item, + collapsed: CollapseActions[collapse](item.collapsed) + } + }) + }, + setBreadcrumbs: (state, { payload }: PayloadAction<Array<string>>) => { + state.breadcrumbs = payload + }, + }, +}) + +export const { toggleCollapse, setBreadcrumbs } = JsonViewerSlice.actions + + +export default JsonViewerSlice.reducer diff --git a/react-ui/src/shared/components/json_viewer/view/json_viewer.scss b/react-ui/src/shared/components/json_viewer/view/json_viewer.scss new file mode 100755 index 000000000..387290aaf --- /dev/null +++ b/react-ui/src/shared/components/json_viewer/view/json_viewer.scss @@ -0,0 +1,47 @@ +@import "/src/shared/style/colors.scss"; + +.list-group-tr { + list-style-type: none; + margin: 0; + padding: 0 0; +} + +.list-item-td { + & > td { + color: lighten(map-get($map: $theme-colors, $key: "black"), 20%) !important; + background-color: white !important; + border: 0; + padding: 0.1em 0 !important; + } + + & > td:nth-child(2) { + text-align: left; + } + + &:hover > td { + background-color: map-get($theme-colors, "primary::hover") !important; + } +} + +.list-item-td.object { + & > td { + color: map-get($map: $theme-colors, $key: "black") !important; + } + + &:not(:first-child) > td { + padding-top: 0.5em !important; + } + + &:hover { + cursor: pointer; + } +} + +.list-item-td:not(.object) > td:first-child { + border-left: 2px solid black; + padding-left: 0.2em !important; +} + +td .icon { + font-size: 0.8em; +} diff --git a/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx b/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx new file mode 100755 index 000000000..39bdb8738 --- /dev/null +++ b/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx @@ -0,0 +1,91 @@ +import { faAlignRight } from "@fortawesome/free-solid-svg-icons" +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" +import { useAppDispatch } from "@hooks" +import React, { Suspense, useMemo } from "react" +import { Table } from "react-bootstrap" +import { useJsonViewer } from "../viewmodel/json_viewer.viewmodel" +import './json_viewer.scss' + +type JsonViewerProbs = { + json: JSON +} + +export const JsonViewer = ({ json }: JsonViewerProbs) => { + const { getSubset, breadcrumbs, isCollapsed, collapseable, collapse } = useJsonViewer(); + const dispatch = useAppDispatch(); + + const breadcrumbHTML = useMemo(() => { + return ( + <nav aria-label="breadcrumb"> + <ol className="breadcrumb"> + {breadcrumbs.map(breadcrumb => ( + <li key={breadcrumb} className="breadcrumb-item"><a href="#">{breadcrumb}</a></li> + ))} + </ol> + </nav> + ) + }, [breadcrumbs]) + + + const renderInner = (innerJson: JSON, nested: number = 0): JSX.Element => { + return Object.entries(innerJson).map(([key, value]): JSX.Element => { + const isObject = value instanceof Object; + const readableValue = isObject ? '' : value; + + const collapsed = isCollapsed(key, nested); + + const icon = isObject ? + <span className={collapsed ? 'fa-rotate-90' : ''}>></span> : <FontAwesomeIcon className="icon fa-rotate-180" icon={faAlignRight} size="xs" /> + + + // determine the margin-left: n indent + let tabs = 0.0; + for (let i = 0; i < nested; i++) { + tabs += 0.3; + } + + return ( + <React.Fragment key={`${nested}-${key}`}> + <tr className={"list-item-td " + key + " " + nested + " " + (isObject ? 'object' : '')} onClick={() => { isObject ? collapse(key, nested, value) : null }} > + <td style={{ marginLeft: tabs + 'em' }} className={"d-flex align-items-center "}>{icon}<span> {key}</span></td> + <td>{readableValue}</td> + <td className="text-end">comands</td> + </tr > + {isObject && collapsed ? renderInner(value, nested + 1) : ''} + </React.Fragment > + ) + }) + } + + + const renderJson = (json: JSON): JSX.Element => { + return ( + <Table className="list-group-tr"> + <tbody> + { + renderInner(json) + } + </tbody> + </Table > + ) + } + + + const hierarchyHTML = useMemo(() => { + const subset = getSubset(json); + return ( + <> + <Suspense fallback={<div>loading...</div>}> + {renderJson(subset)} + </Suspense> + </> + ) + }, [json, collapseable]) + + return ( + <div> + {breadcrumbHTML} + {hierarchyHTML} + </div> + ) +} \ No newline at end of file diff --git a/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx b/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx new file mode 100644 index 000000000..d7ccd5d5a --- /dev/null +++ b/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx @@ -0,0 +1,55 @@ +import { useAppDispatch, useAppSelector } from "@hooks"; +import { compareIdentifier, toggleCollapse } from "../reducer/json_viewer.reducer"; + +export enum CollapseValues { + TOGGLE, + FALSE, + TRUE +} + + +export const useJsonViewer = () => { + const { breadcrumbs, collapseContainer } = useAppSelector(state => state.json_viwer) + const dispatch = useAppDispatch(); + + + const getSubset = (json: JSON) => { + const subset = breadcrumbs.reduce((nested, key) => nested?.[key], json); + + let inner = subset; + const keys: Array<string> = []; + while (Object.keys(inner).length === 1) { + const key: string = Object.keys(inner)[0]; + inner = inner[key]; + keys.push(key); + } + + //dispatch(setBreadcrumbs([...breadcrumbs, ...keys])) + return inner + } + + const isCollapsed = (key: string, nested: number): boolean => { + const item = collapseContainer + .filter(({ identifier, collapsed }) => compareIdentifier(identifier, { key, nested }) && collapsed); + return !!item.length; + } + + const collapse = (key: string, nested: number, json: Object, collapseState: CollapseValues = CollapseValues.TOGGLE) => { + const identifier = { key, nested }; + dispatch(toggleCollapse({ identifier, collapse: collapseState })) + + const keys = Object.keys(json) + if (keys.length === 1) { + collapse(keys[0], nested + 1, json[keys[0]], CollapseValues.TRUE) + } + + } + + return { + getSubset, + breadcrumbs, + collapseable: collapseContainer, + isCollapsed, + collapse + } +} \ No newline at end of file diff --git a/react-ui/src/shared/helper/coookie.ts b/react-ui/src/shared/helper/coookie.ts old mode 100644 new mode 100755 diff --git a/react-ui/src/shared/icons/icons.ts b/react-ui/src/shared/icons/icons.ts old mode 100644 new mode 100755 diff --git a/react-ui/src/shared/layouts/basic.layout.tsx b/react-ui/src/shared/layouts/basic.layout.tsx old mode 100644 new mode 100755 diff --git a/react-ui/src/shared/layouts/protected.layout/protected.layout.scss b/react-ui/src/shared/layouts/protected.layout/protected.layout.scss old mode 100644 new mode 100755 diff --git a/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx b/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx old mode 100644 new mode 100755 diff --git a/react-ui/src/shared/provider/auth.provider.tsx b/react-ui/src/shared/provider/auth.provider.tsx old mode 100644 new mode 100755 diff --git a/react-ui/src/shared/reducer/routine.reducer.ts b/react-ui/src/shared/reducer/routine.reducer.ts old mode 100644 new mode 100755 index 4ff9fce92..c7f9a43c1 --- a/react-ui/src/shared/reducer/routine.reducer.ts +++ b/react-ui/src/shared/reducer/routine.reducer.ts @@ -1,6 +1,5 @@ import { PayloadAction, createSlice } from '@reduxjs/toolkit' import { RoutineManager } from '@utils/routine.manager' -import { REHYDRATE } from 'redux-persist' import { RootState } from '../../stores' import { startListening } from '../../stores/middleware/listener.middleware' import { setToken } from './user.reducer' @@ -74,19 +73,21 @@ startListening({ }) // on rehydrate add all persistet routines -startListening({ - predicate: ({ type }) => type === REHYDRATE, - effect: async (_, listenerApi) => { - const { routine } = listenerApi.getState() as RootState - for (const [_, thunk] of Object.entries<ThunkEntity>(routine.thunks)) { - if (!thunk) { - continue - } - const dto: ThunkEntityDTO = thunk - listenerApi.dispatch(addRoutine(dto)) - } - }, -}) +// TODO -> thunk does not have the thunk function object due to its coming from the store that ignores the value. +// at this point we have to figure out how to get the thunk function out of the "string" name +// startListening({ +// predicate: ({ type }) => type === REHYDRATE, +// effect: async (_, listenerApi) => { +// const { routine } = listenerApi.getState() as RootState +// for (const [_, thunk] of Object.entries<ThunkEntity>(routine.thunks)) { +// if (!thunk) { +// continue +// } +// const dto: ThunkEntityDTO = thunk +// listenerApi.dispatch(addRoutine(dto)) +// } +// }, +// }) // add new routine startListening({ diff --git a/react-ui/src/shared/reducer/user.reducer.ts b/react-ui/src/shared/reducer/user.reducer.ts old mode 100644 new mode 100755 diff --git a/react-ui/src/shared/style/box.scss b/react-ui/src/shared/style/box.scss old mode 100644 new mode 100755 diff --git a/react-ui/src/shared/style/colors.scss b/react-ui/src/shared/style/colors.scss old mode 100644 new mode 100755 index 80e75f8b7..749af9e8e --- a/react-ui/src/shared/style/colors.scss +++ b/react-ui/src/shared/style/colors.scss @@ -1,5 +1,6 @@ $theme-colors: ( 'primary': #b350e0, + 'primary::hover': #ddaff3af, 'bg-primary': #E1E1E1, 'danger': #ffdcdc, 'warning': #dbd116, diff --git a/react-ui/src/shared/style/fonts.scss b/react-ui/src/shared/style/fonts.scss old mode 100644 new mode 100755 diff --git a/react-ui/src/shared/style/index.scss b/react-ui/src/shared/style/index.scss old mode 100644 new mode 100755 diff --git a/react-ui/src/shared/style/toast.scss b/react-ui/src/shared/style/toast.scss old mode 100644 new mode 100755 diff --git a/react-ui/src/shared/style/utils.scss b/react-ui/src/shared/style/utils.scss old mode 100644 new mode 100755 diff --git a/react-ui/src/shared/utils/routine.manager.ts b/react-ui/src/shared/utils/routine.manager.ts old mode 100644 new mode 100755 diff --git a/react-ui/src/shared/utils/yang_parser/go/.gitignore b/react-ui/src/shared/utils/yang_parser/go/.gitignore old mode 100644 new mode 100755 diff --git a/react-ui/src/shared/utils/yang_parser/go/assets/wasm_exec.d.ts.generated b/react-ui/src/shared/utils/yang_parser/go/assets/wasm_exec.d.ts.generated old mode 100644 new mode 100755 diff --git a/react-ui/src/shared/utils/yang_parser/go/go.env b/react-ui/src/shared/utils/yang_parser/go/go.env old mode 100644 new mode 100755 diff --git a/react-ui/src/shared/utils/yang_parser/go/go.mod b/react-ui/src/shared/utils/yang_parser/go/go.mod old mode 100644 new mode 100755 diff --git a/react-ui/src/shared/utils/yang_parser/go/go.sum b/react-ui/src/shared/utils/yang_parser/go/go.sum old mode 100644 new mode 100755 diff --git a/react-ui/src/shared/utils/yang_parser/go/yang_parser.go b/react-ui/src/shared/utils/yang_parser/go/yang_parser.go old mode 100644 new mode 100755 diff --git a/react-ui/src/shared/utils/yang_parser/yang_parser.ts b/react-ui/src/shared/utils/yang_parser/yang_parser.ts old mode 100644 new mode 100755 diff --git a/react-ui/src/stores/api.store.ts b/react-ui/src/stores/api.store.ts old mode 100644 new mode 100755 diff --git a/react-ui/src/stores/index.ts b/react-ui/src/stores/index.ts old mode 100644 new mode 100755 diff --git a/react-ui/src/stores/middleware/api.listener.middleware.ts b/react-ui/src/stores/middleware/api.listener.middleware.ts old mode 100644 new mode 100755 diff --git a/react-ui/src/stores/middleware/listener.middleware.ts b/react-ui/src/stores/middleware/listener.middleware.ts old mode 100644 new mode 100755 diff --git a/react-ui/src/stores/persist.store.ts b/react-ui/src/stores/persist.store.ts old mode 100644 new mode 100755 index c97edc465..e12467ed9 --- a/react-ui/src/stores/persist.store.ts +++ b/react-ui/src/stores/persist.store.ts @@ -1,4 +1,5 @@ import deviceReducer from '@component/devices/reducer/device.reducer' +import jsonViewerReducer from '@shared/components/json_viewer/reducer/json_viewer.reducer' import routineReducer from '@shared/reducer/routine.reducer' import userReducer from '@shared/reducer/user.reducer' import { combineReducers } from 'redux' @@ -17,6 +18,7 @@ const rootReducer = combineReducers({ user: userReducer, device: deviceReducer, routine: routineReducer, + json_viwer: jsonViewerReducer, [emptySplitApi.reducerPath]: emptySplitApi.reducer, }) diff --git a/react-ui/tsconfig.eslint.json b/react-ui/tsconfig.eslint.json old mode 100644 new mode 100755 diff --git a/react-ui/tsconfig.json b/react-ui/tsconfig.json old mode 100644 new mode 100755 diff --git a/react-ui/tsconfig.node.json b/react-ui/tsconfig.node.json old mode 100644 new mode 100755 diff --git a/react-ui/vite.config.mjs b/react-ui/vite.config.mjs old mode 100644 new mode 100755 diff --git a/react-ui/yarn.lock b/react-ui/yarn.lock old mode 100644 new mode 100755 index a52172744..5d2d968a7 --- a/react-ui/yarn.lock +++ b/react-ui/yarn.lock @@ -1204,6 +1204,11 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@bufbuild/protobuf@^2.0.0": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@bufbuild/protobuf/-/protobuf-2.2.2.tgz#1a6d89603fb215dc4d4178052d05b30b83c75402" + integrity sha512-UNtPCbrwrenpmrXuRwn9jYpPoweNXj8X5sMvYgsqYyaH8jQ6LfUJSk3dJLnBK+6sfYPrF4iAIo5sd5HQ+tg75A== + "@csstools/normalize.css@*": version "12.1.1" resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-12.1.1.tgz#f0ad221b7280f3fc814689786fd9ee092776ef8f" @@ -3742,6 +3747,11 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" +buffer-builder@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/buffer-builder/-/buffer-builder-0.2.0.tgz#3322cd307d8296dab1f604618593b261a3fade8f" + integrity sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg== + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -3989,6 +3999,11 @@ colorette@^2.0.10: resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== +colorjs.io@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/colorjs.io/-/colorjs.io-0.5.2.tgz#63b20139b007591ebc3359932bef84628eb3fcef" + integrity sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw== + combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -9450,6 +9465,13 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +rxjs@^7.4.0: + version "7.8.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" + integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== + dependencies: + tslib "^2.1.0" + safe-array-concat@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb" @@ -9489,6 +9511,140 @@ sanitize.css@*: resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-13.0.0.tgz#2675553974b27964c75562ade3bd85d79879f173" integrity sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA== +sass-embedded-android-arm64@1.80.6: + version "1.80.6" + resolved "https://registry.yarnpkg.com/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.80.6.tgz#748df1f7deabea3a81c2c647661d9696090e1b81" + integrity sha512-4rC4ZGM/k4ENVjLXnK3JTst8e8FI9MHSol2Fl7dCdYyJ3KLnlt4qL4AEYfU8zq1tcBb7CBOSZVR+CzCKubnXdg== + +sass-embedded-android-arm@1.80.6: + version "1.80.6" + resolved "https://registry.yarnpkg.com/sass-embedded-android-arm/-/sass-embedded-android-arm-1.80.6.tgz#1fa2e08e5b2a77709f6e8cb8186c801ee140c0a9" + integrity sha512-UeUKMTRsnz4/dh7IzvhjONxa4/jmVp539CHDd8VZOsqg9M3HcNJNIkUzQWbuwZ+nSlWrTuo7Tvn3XlypopCBzw== + +sass-embedded-android-ia32@1.80.6: + version "1.80.6" + resolved "https://registry.yarnpkg.com/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.80.6.tgz#43674c98454a3adb5da3cca0ba23340128bfbdff" + integrity sha512-Lxz2SXE2KdHnynuHF+D6flDvrd55/zaEAWUeka9MxEr6FmR66d8UBOIy5ETwCSUd//S/SE5Jl6oTnHppgD1zNA== + +sass-embedded-android-riscv64@1.80.6: + version "1.80.6" + resolved "https://registry.yarnpkg.com/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.80.6.tgz#59c9d53b1c800b53221d56cf55d9cf84b4418bac" + integrity sha512-hKdxY/oOqB+JJhSoBTDM5DJO1j/xtxQgayh2cLCCUx37IQQe3SEdc3V2JFf/4mIo5peaS4cjqwwSATF+l2zaXg== + +sass-embedded-android-x64@1.80.6: + version "1.80.6" + resolved "https://registry.yarnpkg.com/sass-embedded-android-x64/-/sass-embedded-android-x64-1.80.6.tgz#a06a9f55f904c3ba628a3ae03c244f134f4f2bb1" + integrity sha512-Eap2Fi3kTx/rVLBsOnOp5RYPr5+lFjTZ652zR24dmYFe9/sDgasakJIOPjOvD2bRuL9z0uWEY1AXVeeOPeZKrg== + +sass-embedded-darwin-arm64@1.80.6: + version "1.80.6" + resolved "https://registry.yarnpkg.com/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.80.6.tgz#81a7019c92a8c8f76f7f98dfe15f6adfaf621e92" + integrity sha512-0mnAx8Vq6Gxj3PQt3imgITfK33hhqrSKpyHSuab71gZZni5opsdtoggq2JawW+1taRFTEZwbZJLKZ0MBDbwCCA== + +sass-embedded-darwin-x64@1.80.6: + version "1.80.6" + resolved "https://registry.yarnpkg.com/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.80.6.tgz#d1b551443930658bfa4cc92ca026d4b22023ce9d" + integrity sha512-Ib20yNZFOrJ7YVT+ltoe+JQNKPcRclM3iLAK69XZZYcSeFM/72SCoQBAaVGIpT23dxDp7FXiE4lO602c3xTRwQ== + +sass-embedded-linux-arm64@1.80.6: + version "1.80.6" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.80.6.tgz#fe6255bbbe55590fb6405f098431b3841221a1b0" + integrity sha512-n5r98pBXawrQQKaxIYCMM1zDpnngsqxTkOrmvsYLFiAMCSbR0lWf/7sBB33k/Pm0D6dsbp3jpHilCoQNKI3jIw== + +sass-embedded-linux-arm@1.80.6: + version "1.80.6" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.80.6.tgz#a6603b1ec087762a1128e836fd36851050b537b4" + integrity sha512-QR0Q6TZox/ThuU2r9c0s3fKCgU2rXAEocpitdgxFp6tta+GsQlMFV3oON2unAa8Bwnuxkmf0YOaK0Oy/TwzkXw== + +sass-embedded-linux-ia32@1.80.6: + version "1.80.6" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.80.6.tgz#bedb53348f7e384ceabc9e0158b086045779af07" + integrity sha512-O6dWZdcOkryRdDCxVMGOeVowgblpDgVcAuRtZ1F1X7XfbpDriTQm64D+9vVZIrywYSPoJfQMJJ662cr0wUs9IQ== + +sass-embedded-linux-musl-arm64@1.80.6: + version "1.80.6" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.80.6.tgz#0f0e0bb68c90f0ae920d9a06760241f3f58c7a76" + integrity sha512-VeUSHUi3MAsvOlg9QI4X/2j04h1659aE+7qKP/282CYBTrGkjFGSXZhIki9WKWDgIpDiSInRYXfQQRWhPhjCDg== + +sass-embedded-linux-musl-arm@1.80.6: + version "1.80.6" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.80.6.tgz#41039f857684ee3470ec9e0d310add5f6f1b694d" + integrity sha512-X9FC8s8fvQGRiXc+eATlZ57N44Iq3nNa0M0ugi3ysdJwkaNYvOeS4QzBHKQAaw3QiTqdxTnLUHHVBkyzdCi9pw== + +sass-embedded-linux-musl-ia32@1.80.6: + version "1.80.6" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.80.6.tgz#8ff88c78ba3503a19d59c5b8fa172fdea00a67f8" + integrity sha512-GqitS2Nab8ah0+wfCqaxW1hnI1piC08FimL6+lM9YWK5DbCOOF82IapbvJOy0feUmd/wNnHmyNTgE9h0zVMFdQ== + +sass-embedded-linux-musl-riscv64@1.80.6: + version "1.80.6" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.80.6.tgz#aaa086a6ce9718d0fd7cbe584c0f2bf81bef3122" + integrity sha512-ySs15z7QSRRQK/aByEEqaJLYW/sTpfynefNPZCtsVNVEzNRwy+DRpxNChtxo+QjKq97ocXETbdG5KLik7QOTJg== + +sass-embedded-linux-musl-x64@1.80.6: + version "1.80.6" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.80.6.tgz#ea0bb093837be3b6f473b9a1b5d09c4633f8e504" + integrity sha512-DzeNqU/SN0mWFznoOH4RtVGcrg3Eoa41pUQhKMtrhNbCmIE1zNDunUiAEVTNpdHJF4nxf7ELUPXWmStM31CbUQ== + +sass-embedded-linux-riscv64@1.80.6: + version "1.80.6" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.80.6.tgz#bc19c15796a3b3a3d67ea626058b3bab48344b1d" + integrity sha512-AyoHJ3icV9xuJjq1YzJqpEj2XfiC/KBkVYTUrCELKiXP0DN1gi/BpUwZNCAgCM3CyEdMef4LQM/ztCYJxYzdyg== + +sass-embedded-linux-x64@1.80.6: + version "1.80.6" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.80.6.tgz#db076fdf0bc3c1382c8f73c8d396293b893b31ef" + integrity sha512-EohsE9CEqx0ycylnsEj/0DNPG99Tb0qAVZspiAs5xHFCJjXOFfp3cRQu0BRf+lZ1b72IhPFXymzVtojvzUHb7g== + +sass-embedded-win32-arm64@1.80.6: + version "1.80.6" + resolved "https://registry.yarnpkg.com/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.80.6.tgz#e889c421b0b31e1297414dd89448385fe443d5e2" + integrity sha512-29wETQi1ykeVvpd4zMVokpQKFSOZskGJzZawuuNCdo7BHjHKIRDsqbz8YT1CewHPBshI0hfD21fenmjxYjGXPQ== + +sass-embedded-win32-ia32@1.80.6: + version "1.80.6" + resolved "https://registry.yarnpkg.com/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.80.6.tgz#0934f3598e4fbe701b5e4e4d2a1fa6ef952f7024" + integrity sha512-1s3OpK2iTIfIL/a91QhAQnffsbuWfnsM8Lx4Fxt0f7ErnxjCV6q8MUFTV/UhcLtLyTFnPCA62DLjp2KGCjMI9A== + +sass-embedded-win32-x64@1.80.6: + version "1.80.6" + resolved "https://registry.yarnpkg.com/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.80.6.tgz#b7357b399c12cbb80dab2bee6f541b88a6015d76" + integrity sha512-0pH4Zr9silHkcmLPC0ghnD3DI0vMsjA7dKvGR32/RbbjOSvHV5cDQRLiuVJAPp34dfMA7kJd1ysSchRdH0igAQ== + +sass-embedded@^1.80.6: + version "1.80.6" + resolved "https://registry.yarnpkg.com/sass-embedded/-/sass-embedded-1.80.6.tgz#efd66c12c7f117c2dcb558e8bf6bd00cc5cd49b2" + integrity sha512-Og4aqBnaA3oJfIpHaLuNATAqzBRgUJDYJy2X15V59cot2wYOtiT/ciPnyuq1o7vpDEeOkHhEd+mSviSlXoETug== + dependencies: + "@bufbuild/protobuf" "^2.0.0" + buffer-builder "^0.2.0" + colorjs.io "^0.5.0" + immutable "^4.0.0" + rxjs "^7.4.0" + supports-color "^8.1.1" + varint "^6.0.0" + optionalDependencies: + sass-embedded-android-arm "1.80.6" + sass-embedded-android-arm64 "1.80.6" + sass-embedded-android-ia32 "1.80.6" + sass-embedded-android-riscv64 "1.80.6" + sass-embedded-android-x64 "1.80.6" + sass-embedded-darwin-arm64 "1.80.6" + sass-embedded-darwin-x64 "1.80.6" + sass-embedded-linux-arm "1.80.6" + sass-embedded-linux-arm64 "1.80.6" + sass-embedded-linux-ia32 "1.80.6" + sass-embedded-linux-musl-arm "1.80.6" + sass-embedded-linux-musl-arm64 "1.80.6" + sass-embedded-linux-musl-ia32 "1.80.6" + sass-embedded-linux-musl-riscv64 "1.80.6" + sass-embedded-linux-musl-x64 "1.80.6" + sass-embedded-linux-riscv64 "1.80.6" + sass-embedded-linux-x64 "1.80.6" + sass-embedded-win32-arm64 "1.80.6" + sass-embedded-win32-ia32 "1.80.6" + sass-embedded-win32-x64 "1.80.6" + sass-loader@^12.3.0: version "12.6.0" resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.6.0.tgz#5148362c8e2cdd4b950f3c63ac5d16dbfed37bcb" @@ -10132,7 +10288,7 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -supports-color@^8.0.0: +supports-color@^8.0.0, supports-color@^8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== @@ -10430,6 +10586,11 @@ tslib@^2.0.3, tslib@^2.4.0, tslib@^2.6.2: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== +tslib@^2.1.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -10733,6 +10894,11 @@ v8-to-istanbul@^8.1.0: convert-source-map "^1.6.0" source-map "^0.7.3" +varint@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" + integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== + vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" -- GitLab From 6c10a9e4f48e105828a7b51b3bd8a9b586803df6 Mon Sep 17 00:00:00 2001 From: matthiasf <matthias.feyll@@stud.h-da.de> Date: Mon, 25 Nov 2024 18:32:03 +0100 Subject: [PATCH 34/44] add menu provider --- .../src/i18n/locales/en/translations.json | 6 + react-ui/src/index.tsx | 7 +- .../json_viewer/view/json_viewer.scss | 27 +++- .../json_viewer/view/json_viewer.view.tsx | 50 ++++++- .../shared/provider/menu/menu.provider.scss | 11 ++ .../shared/provider/menu/menu.provider.tsx | 124 ++++++++++++++++++ react-ui/src/shared/utils/functions.ts | 8 ++ 7 files changed, 219 insertions(+), 14 deletions(-) create mode 100644 react-ui/src/shared/provider/menu/menu.provider.scss create mode 100644 react-ui/src/shared/provider/menu/menu.provider.tsx create mode 100644 react-ui/src/shared/utils/functions.ts diff --git a/react-ui/src/i18n/locales/en/translations.json b/react-ui/src/i18n/locales/en/translations.json index b58b299b1..c5e037548 100755 --- a/react-ui/src/i18n/locales/en/translations.json +++ b/react-ui/src/i18n/locales/en/translations.json @@ -4,8 +4,14 @@ "form": { "submit": "Submit", "empty_field": "This field can´t be empty" + }, + "toast": { + "copied": "Copied to clipboard" } }, + "json_viewer": { + "copy": "Copy" + }, "login": { "form": { "failed": "The username or password is invalid", diff --git a/react-ui/src/index.tsx b/react-ui/src/index.tsx index 384f33d82..2d157fd9b 100755 --- a/react-ui/src/index.tsx +++ b/react-ui/src/index.tsx @@ -1,3 +1,4 @@ +import { MenuProvider } from '@provider/menu/menu.provider' import i18next from 'i18next' import React from 'react' import ReactDOM from 'react-dom/client' @@ -25,8 +26,10 @@ ReactDOM.createRoot(document.getElementById("root")).render( <Provider store={store}> <PersistGate loading={null} persistor={persistor}> <I18nextProvider i18n={i18next}> - {installToastify()} - <RouterProvider router={router} /> + <MenuProvider> + {installToastify()} + <RouterProvider router={router} /> + </MenuProvider> </I18nextProvider> </PersistGate> </Provider> diff --git a/react-ui/src/shared/components/json_viewer/view/json_viewer.scss b/react-ui/src/shared/components/json_viewer/view/json_viewer.scss index 387290aaf..649f57e39 100755 --- a/react-ui/src/shared/components/json_viewer/view/json_viewer.scss +++ b/react-ui/src/shared/components/json_viewer/view/json_viewer.scss @@ -11,7 +11,7 @@ color: lighten(map-get($map: $theme-colors, $key: "black"), 20%) !important; background-color: white !important; border: 0; - padding: 0.1em 0 !important; + padding: 0.2em 0 !important; } & > td:nth-child(2) { @@ -21,6 +21,19 @@ &:hover > td { background-color: map-get($theme-colors, "primary::hover") !important; } + + &:hover .icons { + color: map-get($theme-colors, "black") !important; + opacity: 100%; + transition: gap 0.3s; + gap: 0.7em; + } + + & > .text-end { + vertical-align: middle; + padding-top: 0 !important; + padding-right: 5px !important; + } } .list-item-td.object { @@ -28,10 +41,6 @@ color: map-get($map: $theme-colors, $key: "black") !important; } - &:not(:first-child) > td { - padding-top: 0.5em !important; - } - &:hover { cursor: pointer; } @@ -45,3 +54,11 @@ td .icon { font-size: 0.8em; } + +.icons { + color: lighten(map-get($map: $theme-colors, $key: "dark"), 20%); + gap: 0.5em; + opacity: 0%; + + min-width: 3em; +} diff --git a/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx b/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx index 39bdb8738..840784c0f 100755 --- a/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx +++ b/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx @@ -1,8 +1,10 @@ -import { faAlignRight } from "@fortawesome/free-solid-svg-icons" +import { faAlignRight, faCopy, faPenToSquare, faTrashCan } from "@fortawesome/free-solid-svg-icons" import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" -import { useAppDispatch } from "@hooks" -import React, { Suspense, useMemo } from "react" +import { useMenu } from "@provider/menu/menu.provider" +import { toClipboard } from "@utils/functions" +import React, { Suspense, useEffect, useMemo, useRef } from "react" import { Table } from "react-bootstrap" +import { useTranslation } from "react-i18next" import { useJsonViewer } from "../viewmodel/json_viewer.viewmodel" import './json_viewer.scss' @@ -12,7 +14,36 @@ type JsonViewerProbs = { export const JsonViewer = ({ json }: JsonViewerProbs) => { const { getSubset, breadcrumbs, isCollapsed, collapseable, collapse } = useJsonViewer(); - const dispatch = useAppDispatch(); + const { subscribe } = useMenu(); + const htmlContainer = useRef(null); + const { t } = useTranslation('common'); + + useEffect(() => { + if (htmlContainer.current) { + const subscription = subscribe({ + target: htmlContainer.current, + actions: [ + { + key: t('json_viewer.copy'), + icon: faCopy, + action: (clickedElement) => { + let parent = clickedElement; + while (parent && parent.tagName !== 'TR') { + parent = parent.parentNode; + } + + const copyValue = parent.dataset.copyValue + toClipboard(copyValue) + } + } + ] + }) + + return () => { + subscription.unsubscribe(); + } + } + }, []) const breadcrumbHTML = useMemo(() => { return ( @@ -46,10 +77,15 @@ export const JsonViewer = ({ json }: JsonViewerProbs) => { return ( <React.Fragment key={`${nested}-${key}`}> - <tr className={"list-item-td " + key + " " + nested + " " + (isObject ? 'object' : '')} onClick={() => { isObject ? collapse(key, nested, value) : null }} > + <tr className={"list-item-td " + key + " " + nested + " " + (isObject ? 'object' : '')} data-copy-value={readableValue} onClick={() => { isObject ? collapse(key, nested, value) : null }} > <td style={{ marginLeft: tabs + 'em' }} className={"d-flex align-items-center "}>{icon}<span> {key}</span></td> <td>{readableValue}</td> - <td className="text-end">comands</td> + <td className="text-end"> + <div className="d-flex icons justify-content-end align-items-center"> + <FontAwesomeIcon icon={faPenToSquare} size="sm" /> + <FontAwesomeIcon icon={faTrashCan} size="sm" /> + </div> + </td> </tr > {isObject && collapsed ? renderInner(value, nested + 1) : ''} </React.Fragment > @@ -83,7 +119,7 @@ export const JsonViewer = ({ json }: JsonViewerProbs) => { }, [json, collapseable]) return ( - <div> + <div ref={htmlContainer}> {breadcrumbHTML} {hierarchyHTML} </div> diff --git a/react-ui/src/shared/provider/menu/menu.provider.scss b/react-ui/src/shared/provider/menu/menu.provider.scss new file mode 100644 index 000000000..12393085a --- /dev/null +++ b/react-ui/src/shared/provider/menu/menu.provider.scss @@ -0,0 +1,11 @@ +.menu-container { + box-shadow: 0px 0px 5px gray; + + border-radius: 4px !important; +} + +.menu-button { + & > span { + margin-left: 10px; + } +} diff --git a/react-ui/src/shared/provider/menu/menu.provider.tsx b/react-ui/src/shared/provider/menu/menu.provider.tsx new file mode 100644 index 000000000..3d3aebc4a --- /dev/null +++ b/react-ui/src/shared/provider/menu/menu.provider.tsx @@ -0,0 +1,124 @@ +import { IconDefinition } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import React, { createContext, useContext, useEffect, useMemo, useState } from "react"; +import './menu.provider.scss'; + +interface MenuSubscription { + unsubscribe: () => void +} + +// describes a action decorated with a item name +// on click the action is getting executed +type Action = { + key: string, + icon: IconDefinition, + action: (clickedHtmlElement: HTMLElement | undefined) => void +} + +interface MenuProviderType { + subscribe: (value: SubscriptionValue) => MenuSubscription +} + +const MenuContext = createContext<MenuProviderType>({ + subscribe: function (value: SubscriptionValue): MenuSubscription { + throw new Error("Function not implemented."); + } +}) + +interface SubscriptionValue { + target: HTMLElement, + actions: Array<Action> +} + + +export const MenuProvider = ({ children }) => { + const [menuPosition, setMenuPosition] = useState({ top: 0, left: 0 }); + const [showMenu, setShowMenu] = useState(false); + const [subscribedTargets, setSubscribedTargets] = useState<Array<SubscriptionValue>>([]) + + const [menuItems, setMenuItems] = useState<Array<SubscriptionValue>>([]); + const [clickedHtmlElement, setClickedHtmlElement] = useState<HTMLElement>() + + const handleContextMenu = (event) => { + event.preventDefault(); + const targets = subscribedTargets.filter(({ target }) => target.contains(event.target)) + + setMenuPosition({ top: event.pageY, left: event.pageX }); + setMenuItems(targets) + setClickedHtmlElement(event.target) + displayMenu() + }; + + const displayMenu = () => { + setShowMenu(true); + } + + const hideMenu = () => { + setShowMenu(false); + setMenuItems([]); + } + + const handleClick = () => hideMenu(); + + useEffect(() => { + document.addEventListener('keyup', (e) => { + if (e.code === "Escape") { + hideMenu(); + } + }); + }, []) + + const value = useMemo<MenuProviderType>(() => { + return { + subscribe(target) { + const index = subscribedTargets.length; + + setSubscribedTargets([...subscribedTargets, target]) + + const subscription: MenuSubscription = { + unsubscribe() { + setSubscribedTargets([...subscribedTargets.splice(index, 1)]) + }, + } + return subscription + }, + } as MenuProviderType + }, []) + + return ( + <MenuContext.Provider value={value}> + <div onContextMenu={handleContextMenu} onClick={handleClick} style={{ height: "100vh" }}> + <div + className={`menu-container dropdown-menu ${showMenu ? "show" : ""}`} + style={{ position: "absolute", top: `${menuPosition.top}px`, left: `${menuPosition.left}px` }} + > + { + menuItems.map((item, i) => { + // for each new action array (for each new subscription entity) draw a seperator line except the last action + const seperator = i < menuItems.length - 1 ? (<li><hr className="dropdown-divider"></hr></li>) : (<React.Fragment key={i}></React.Fragment>) + + const dropdownItems = item.actions.map(({ action, icon, key }) => { + + const disabled = !(clickedHtmlElement instanceof HTMLElement) || !clickedHtmlElement?.textContent + + return ( + <button className="menu-button dropdown-item" key={key + " " + i} disabled={disabled} onClick={() => action(clickedHtmlElement)}> + <FontAwesomeIcon icon={icon} size="sm" /> + <span>{key}</span> + </button> + ) + }) + + return [...dropdownItems, seperator] + }) + } + </div> + {children} + </div> + </MenuContext.Provider> + ) +} + +export const useMenu = () => { + return useContext(MenuContext) +} \ No newline at end of file diff --git a/react-ui/src/shared/utils/functions.ts b/react-ui/src/shared/utils/functions.ts new file mode 100644 index 000000000..e4cd80c17 --- /dev/null +++ b/react-ui/src/shared/utils/functions.ts @@ -0,0 +1,8 @@ +import { t } from "i18next"; +import { toast } from "react-toastify"; + + +export const toClipboard = (text: string) => { + navigator.clipboard.writeText(text); + toast.info(t('global.toast.copied')) +} \ No newline at end of file -- GitLab From 3b38b5c065c66781d2a7641b31ef0f76d023bfd9 Mon Sep 17 00:00:00 2001 From: matthiasf <matthias.feyll@@stud.h-da.de> Date: Mon, 25 Nov 2024 19:17:06 +0100 Subject: [PATCH 35/44] add utils provider --- react-ui/src/index.tsx | 11 +++--- .../json_viewer/view/json_viewer.view.tsx | 3 +- .../src/shared/provider/utils.provider.tsx | 36 +++++++++++++++++++ react-ui/src/shared/utils/functions.ts | 8 ----- 4 files changed, 45 insertions(+), 13 deletions(-) create mode 100644 react-ui/src/shared/provider/utils.provider.tsx delete mode 100644 react-ui/src/shared/utils/functions.ts diff --git a/react-ui/src/index.tsx b/react-ui/src/index.tsx index 2d157fd9b..48f57dcff 100755 --- a/react-ui/src/index.tsx +++ b/react-ui/src/index.tsx @@ -1,4 +1,5 @@ import { MenuProvider } from '@provider/menu/menu.provider' +import { UtilsProvider } from '@provider/utils.provider' import i18next from 'i18next' import React from 'react' import ReactDOM from 'react-dom/client' @@ -26,10 +27,12 @@ ReactDOM.createRoot(document.getElementById("root")).render( <Provider store={store}> <PersistGate loading={null} persistor={persistor}> <I18nextProvider i18n={i18next}> - <MenuProvider> - {installToastify()} - <RouterProvider router={router} /> - </MenuProvider> + <UtilsProvider> + <MenuProvider> + {installToastify()} + <RouterProvider router={router} /> + </MenuProvider> + </UtilsProvider> </I18nextProvider> </PersistGate> </Provider> diff --git a/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx b/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx index 840784c0f..9462fa4db 100755 --- a/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx +++ b/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx @@ -1,7 +1,7 @@ import { faAlignRight, faCopy, faPenToSquare, faTrashCan } from "@fortawesome/free-solid-svg-icons" import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" import { useMenu } from "@provider/menu/menu.provider" -import { toClipboard } from "@utils/functions" +import { useUtils } from "@provider/utils.provider" import React, { Suspense, useEffect, useMemo, useRef } from "react" import { Table } from "react-bootstrap" import { useTranslation } from "react-i18next" @@ -17,6 +17,7 @@ export const JsonViewer = ({ json }: JsonViewerProbs) => { const { subscribe } = useMenu(); const htmlContainer = useRef(null); const { t } = useTranslation('common'); + const { toClipboard } = useUtils(); useEffect(() => { if (htmlContainer.current) { diff --git a/react-ui/src/shared/provider/utils.provider.tsx b/react-ui/src/shared/provider/utils.provider.tsx new file mode 100644 index 000000000..e9a83034e --- /dev/null +++ b/react-ui/src/shared/provider/utils.provider.tsx @@ -0,0 +1,36 @@ +import { createContext, useContext, useMemo } from "react"; +import { useTranslation } from "react-i18next"; +import { toast } from "react-toastify"; + +interface UtilsProviderType { + toClipboard: (text: string) => void +} + +const UtilsContext = createContext<UtilsProviderType>({ + toClipboard: function (text: string): void { + throw new Error("Function not implemented."); + } +}) + +export const UtilsProvider = ({ children }) => { + const { t } = useTranslation('common'); + + const value = useMemo<UtilsProviderType>(() => { + return { + toClipboard(text) { + navigator.clipboard.writeText(text); + toast.info(t('global.toast.copied')) + }, + } as UtilsProviderType + }, []) + + return ( + <UtilsContext.Provider value={value}> + {children} + </UtilsContext.Provider> + ) +} + +export const useUtils = () => { + return useContext(UtilsContext) +} \ No newline at end of file diff --git a/react-ui/src/shared/utils/functions.ts b/react-ui/src/shared/utils/functions.ts deleted file mode 100644 index e4cd80c17..000000000 --- a/react-ui/src/shared/utils/functions.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { t } from "i18next"; -import { toast } from "react-toastify"; - - -export const toClipboard = (text: string) => { - navigator.clipboard.writeText(text); - toast.info(t('global.toast.copied')) -} \ No newline at end of file -- GitLab From 543cd2e4389954ee9e315c3ca52c0436fc2cbf6c Mon Sep 17 00:00:00 2001 From: matthiasf <matthias.feyll@@stud.h-da.de> Date: Fri, 6 Dec 2024 02:25:27 +0100 Subject: [PATCH 36/44] wip_search_complete --- react-ui/src/index.tsx | 8 +- .../json_viewer/view/json_viewer.scss | 4 + .../json_viewer/view/json_viewer.view.tsx | 77 ++++++------- .../viewmodel/json_viewer.viewmodel.tsx | 104 +++++++++++++++++- react-ui/src/shared/helper/hash.ts | 11 ++ 5 files changed, 153 insertions(+), 51 deletions(-) create mode 100644 react-ui/src/shared/helper/hash.ts diff --git a/react-ui/src/index.tsx b/react-ui/src/index.tsx index 48f57dcff..186138b89 100755 --- a/react-ui/src/index.tsx +++ b/react-ui/src/index.tsx @@ -16,12 +16,6 @@ import { router } from './routes' import './shared/icons/icons' import { persistor, store } from './stores' -const installToastify = () => { - return ( - <ToastContainer /> - ) -}; - ReactDOM.createRoot(document.getElementById("root")).render( <React.StrictMode> <Provider store={store}> @@ -29,7 +23,7 @@ ReactDOM.createRoot(document.getElementById("root")).render( <I18nextProvider i18n={i18next}> <UtilsProvider> <MenuProvider> - {installToastify()} + <ToastContainer /> <RouterProvider router={router} /> </MenuProvider> </UtilsProvider> diff --git a/react-ui/src/shared/components/json_viewer/view/json_viewer.scss b/react-ui/src/shared/components/json_viewer/view/json_viewer.scss index 649f57e39..d5b33cf98 100755 --- a/react-ui/src/shared/components/json_viewer/view/json_viewer.scss +++ b/react-ui/src/shared/components/json_viewer/view/json_viewer.scss @@ -34,6 +34,10 @@ padding-top: 0 !important; padding-right: 5px !important; } + + & > .text-element { + max-width: 100px; + } } .list-item-td.object { diff --git a/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx b/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx index 9462fa4db..635cad6ea 100755 --- a/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx +++ b/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx @@ -1,9 +1,7 @@ -import { faAlignRight, faCopy, faPenToSquare, faTrashCan } from "@fortawesome/free-solid-svg-icons" +import { faAlignRight, faPenToSquare, faTrashCan } from "@fortawesome/free-solid-svg-icons" import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" -import { useMenu } from "@provider/menu/menu.provider" -import { useUtils } from "@provider/utils.provider" -import React, { Suspense, useEffect, useMemo, useRef } from "react" -import { Table } from "react-bootstrap" +import React, { Suspense, useMemo, useRef } from "react" +import { Form, Table } from "react-bootstrap" import { useTranslation } from "react-i18next" import { useJsonViewer } from "../viewmodel/json_viewer.viewmodel" import './json_viewer.scss' @@ -13,38 +11,11 @@ type JsonViewerProbs = { } export const JsonViewer = ({ json }: JsonViewerProbs) => { - const { getSubset, breadcrumbs, isCollapsed, collapseable, collapse } = useJsonViewer(); - const { subscribe } = useMenu(); - const htmlContainer = useRef(null); const { t } = useTranslation('common'); - const { toClipboard } = useUtils(); + const htmlContainer = useRef(null); + const search = useRef<HTMLInputElement>(null); - useEffect(() => { - if (htmlContainer.current) { - const subscription = subscribe({ - target: htmlContainer.current, - actions: [ - { - key: t('json_viewer.copy'), - icon: faCopy, - action: (clickedElement) => { - let parent = clickedElement; - while (parent && parent.tagName !== 'TR') { - parent = parent.parentNode; - } - - const copyValue = parent.dataset.copyValue - toClipboard(copyValue) - } - } - ] - }) - - return () => { - subscription.unsubscribe(); - } - } - }, []) + const { getSubset, breadcrumbs, isCollapsed, collapseable, collapse, parameterizedJson, searchTerm } = useJsonViewer({ json, search, container: htmlContainer }); const breadcrumbHTML = useMemo(() => { return ( @@ -59,8 +30,17 @@ export const JsonViewer = ({ json }: JsonViewerProbs) => { }, [breadcrumbs]) - const renderInner = (innerJson: JSON, nested: number = 0): JSX.Element => { + const renderInner = (innerJson: JSON, nested: number = 0, path: string = "/network-instance/0/"): JSX.Element => { return Object.entries(innerJson).map(([key, value]): JSX.Element => { + if (searchTerm !== "") { + path += key + "/" + const is = parameterizedJson.current.filter(_path => _path === path)[0] + + if (!is) { + return (<></>) + } + } + const isObject = value instanceof Object; const readableValue = isObject ? '' : value; @@ -69,7 +49,6 @@ export const JsonViewer = ({ json }: JsonViewerProbs) => { const icon = isObject ? <span className={collapsed ? 'fa-rotate-90' : ''}>></span> : <FontAwesomeIcon className="icon fa-rotate-180" icon={faAlignRight} size="xs" /> - // determine the margin-left: n indent let tabs = 0.0; for (let i = 0; i < nested; i++) { @@ -78,9 +57,13 @@ export const JsonViewer = ({ json }: JsonViewerProbs) => { return ( <React.Fragment key={`${nested}-${key}`}> - <tr className={"list-item-td " + key + " " + nested + " " + (isObject ? 'object' : '')} data-copy-value={readableValue} onClick={() => { isObject ? collapse(key, nested, value) : null }} > + <tr + className={"list-item-td " + key + " " + nested + " " + (isObject ? 'object' : '')} + data-copy-value={readableValue} + onClick={() => { isObject ? collapse(key, nested, value) : null }} + > <td style={{ marginLeft: tabs + 'em' }} className={"d-flex align-items-center "}>{icon}<span> {key}</span></td> - <td>{readableValue}</td> + <td className="text-element text-truncate">{readableValue}</td> <td className="text-end"> <div className="d-flex icons justify-content-end align-items-center"> <FontAwesomeIcon icon={faPenToSquare} size="sm" /> @@ -88,13 +71,12 @@ export const JsonViewer = ({ json }: JsonViewerProbs) => { </div> </td> </tr > - {isObject && collapsed ? renderInner(value, nested + 1) : ''} + {isObject && collapsed ? renderInner(value, nested + 1, path) : ''} </React.Fragment > ) }) } - const renderJson = (json: JSON): JSX.Element => { return ( <Table className="list-group-tr"> @@ -117,10 +99,21 @@ export const JsonViewer = ({ json }: JsonViewerProbs) => { </Suspense> </> ) - }, [json, collapseable]) + }, [json, collapseable, searchTerm]) + + const searchHTML = () => { + return ( + <> + <Form.Group controlId='device.search' className='p-0 mx-1 pt-2'> + <Form.Control type="text" placeholder={t('device.search.placeholder')} ref={search} /> + </Form.Group> + </> + ) + } return ( <div ref={htmlContainer}> + {searchHTML()} {breadcrumbHTML} {hierarchyHTML} </div> diff --git a/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx b/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx index d7ccd5d5a..2ad0f0a6b 100644 --- a/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx +++ b/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx @@ -1,4 +1,9 @@ +import { faCopy } from "@fortawesome/free-solid-svg-icons"; import { useAppDispatch, useAppSelector } from "@hooks"; +import { useMenu } from "@provider/menu/menu.provider"; +import { useUtils } from "@provider/utils.provider"; +import React, { MutableRefObject, useEffect, useMemo, useRef, useState } from "react"; +import { useTranslation } from "react-i18next"; import { compareIdentifier, toggleCollapse } from "../reducer/json_viewer.reducer"; export enum CollapseValues { @@ -7,10 +12,25 @@ export enum CollapseValues { TRUE } +interface JsonViewerViewModelType { + json: JSON, + search: React.RefObject<HTMLInputElement>, + container: React.RefObject<HTMLElement> +} + +export const MARKED = "?marked" -export const useJsonViewer = () => { +export const useJsonViewer = ({ json, search, container }: JsonViewerViewModelType) => { const { breadcrumbs, collapseContainer } = useAppSelector(state => state.json_viwer) const dispatch = useAppDispatch(); + const [searchTerm, setSearchTerm] = useState(''); + const { toClipboard } = useUtils(); + const { t } = useTranslation('common'); + const { subscribe } = useMenu(); + + // Map that contains a filtered key list with all keys that are found by the searchTerm + // The number represents + const parameterizedJsonMap = useRef<Array<string>>([]); const getSubset = (json: JSON) => { @@ -42,14 +62,94 @@ export const useJsonViewer = () => { if (keys.length === 1) { collapse(keys[0], nested + 1, json[keys[0]], CollapseValues.TRUE) } + } + + const handleSearchInput = () => { + setSearchTerm(search.current!.value) + } + + const registerMenuOptions = () => { + if (container.current) { + const subscription = subscribe({ + target: container.current, + actions: [ + { + key: t('json_viewer.copy'), + icon: faCopy, + action: (clickedElement) => { + let parent = clickedElement; + while (parent && parent.tagName !== 'TR') { + parent = parent.parentNode; + } + + const copyValue = parent.dataset.copyValue + toClipboard(copyValue) + } + } + ] + }) + + return () => { + subscription.unsubscribe(); + } + } + } + + const innerSearch = (json: Object, searchValue: string, path: string = "/"): boolean => { + let found = false; + path = JSON.parse(JSON.stringify(path)) + + for (const [key, childJson] of Object.entries(json)) { + path += key + "/" + if (!(childJson instanceof Object)) { + const marked = key.includes(searchValue) || childJson.includes(searchValue); + if (marked) { + parameterizedJsonMap.current.push(path) + found = true + } + + continue + } + + const marked = innerSearch(childJson, searchValue, JSON.parse(JSON.stringify(path))); + if (marked) { + found = true + parameterizedJsonMap.current.push(path) + } + } + return found } + const parameterizedJson = useMemo<MutableRefObject<Array<string>>>(() => { + parameterizedJsonMap.current = [] + if (searchTerm === "") { + return json + } + + innerSearch(json, searchTerm); + return parameterizedJsonMap + }, [searchTerm]) + + useEffect(() => { + registerMenuOptions(); + + if (search.current) { + search.current.addEventListener('input', handleSearchInput) + } + + return () => { + search.current!.removeEventListener('input', handleSearchInput) + } + }, []) + return { getSubset, breadcrumbs, collapseable: collapseContainer, isCollapsed, - collapse + collapse, + searchTerm, + parameterizedJson } } \ No newline at end of file diff --git a/react-ui/src/shared/helper/hash.ts b/react-ui/src/shared/helper/hash.ts new file mode 100644 index 000000000..e185c87a5 --- /dev/null +++ b/react-ui/src/shared/helper/hash.ts @@ -0,0 +1,11 @@ +export const stringToHash = (text: string): number => { + let hash = 0; + + if (text.length === 0) return hash; + + for (const char of text) { + hash ^= char.charCodeAt(0); + } + + return hash; +} \ No newline at end of file -- GitLab From 112113b4b39e3cebbbe897fe925c68320ab13e1e Mon Sep 17 00:00:00 2001 From: matthiasf <matthias.feyll@@stud.h-da.de> Date: Tue, 10 Dec 2024 15:24:55 +0100 Subject: [PATCH 37/44] ui: implement json viewer search --- react-ui/package.json | 1 + .../json_viewer/view/json_viewer.scss | 4 ++ .../json_viewer/view/json_viewer.view.tsx | 56 ++++++++++++++----- .../viewmodel/json_viewer.viewmodel.tsx | 21 +++++-- react-ui/yarn.lock | 9 ++- 5 files changed, 69 insertions(+), 22 deletions(-) diff --git a/react-ui/package.json b/react-ui/package.json index 57c152ac4..951b1c216 100755 --- a/react-ui/package.json +++ b/react-ui/package.json @@ -10,6 +10,7 @@ "@fortawesome/react-fontawesome": "^0.2.2", "@reduxjs/toolkit": "^2.2.4", "bootstrap": "^5.3.3", + "dompurify": "^3.2.3", "i18next": "^23.11.5", "jwt-decode": "^4.0.0", "react": "^18.3.1", diff --git a/react-ui/src/shared/components/json_viewer/view/json_viewer.scss b/react-ui/src/shared/components/json_viewer/view/json_viewer.scss index d5b33cf98..20befdcbb 100755 --- a/react-ui/src/shared/components/json_viewer/view/json_viewer.scss +++ b/react-ui/src/shared/components/json_viewer/view/json_viewer.scss @@ -66,3 +66,7 @@ td .icon { min-width: 3em; } + +span.highlight { + background-color: darken(yellow, $amount: 0.5); +} diff --git a/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx b/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx index 635cad6ea..720f75c7d 100755 --- a/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx +++ b/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx @@ -1,5 +1,6 @@ import { faAlignRight, faPenToSquare, faTrashCan } from "@fortawesome/free-solid-svg-icons" import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" +import DOMPurify from 'dompurify' import React, { Suspense, useMemo, useRef } from "react" import { Form, Table } from "react-bootstrap" import { useTranslation } from "react-i18next" @@ -29,22 +30,33 @@ export const JsonViewer = ({ json }: JsonViewerProbs) => { ) }, [breadcrumbs]) + const insertMarkTags = (text: string, search: string): string => { + const start = text.indexOf(search) + const end = start + search.length - const renderInner = (innerJson: JSON, nested: number = 0, path: string = "/network-instance/0/"): JSX.Element => { - return Object.entries(innerJson).map(([key, value]): JSX.Element => { + return DOMPurify.sanitize(text.substring(0, start)) + "<span class='highlight'>" + DOMPurify.sanitize(search) + "</span>" + DOMPurify.sanitize(text.substring(end, text.length)) + } + + const renderInner = (innerJson: JSON, nested: number = 0, parentKey: string = "", path: string = "/network-instance/0/"): JSX.Element => { + path += parentKey + (parentKey === "" ? "" : "/") + + return Object.entries(innerJson).map(([key, child]): JSX.Element => { + let collapsed = isCollapsed(key, nested); + + // display only keys and values that matches if (searchTerm !== "") { - path += key + "/" - const is = parameterizedJson.current.filter(_path => _path === path)[0] + const foundPaths = parameterizedJson.current.filter(_path => _path === path) - if (!is) { - return (<></>) - } + //collapsed = !collapsed ? !!foundPaths.length : collapsed + collapsed = !!foundPaths.length } - const isObject = value instanceof Object; - const readableValue = isObject ? '' : value; + const isObject = child instanceof Object; + let readableValue: string = isObject ? '' : DOMPurify.sanitize(child); - const collapsed = isCollapsed(key, nested); + if (searchTerm !== "" && readableValue.includes(searchTerm)) { + readableValue = insertMarkTags(readableValue, searchTerm) + } const icon = isObject ? <span className={collapsed ? 'fa-rotate-90' : ''}>></span> : <FontAwesomeIcon className="icon fa-rotate-180" icon={faAlignRight} size="xs" /> @@ -52,7 +64,21 @@ export const JsonViewer = ({ json }: JsonViewerProbs) => { // determine the margin-left: n indent let tabs = 0.0; for (let i = 0; i < nested; i++) { - tabs += 0.3; + tabs += 0.4; + } + + let concatenatedKey = key + let innerChild = child + while (innerChild.length === 1) { + const innerKey = Object.keys(innerChild)[0] + concatenatedKey += '/' + innerKey + innerChild = innerChild[innerKey] + } + + concatenatedKey = DOMPurify.sanitize(concatenatedKey) + + if (searchTerm !== "" && concatenatedKey.includes(searchTerm)) { + concatenatedKey = insertMarkTags(concatenatedKey, searchTerm) } return ( @@ -60,10 +86,10 @@ export const JsonViewer = ({ json }: JsonViewerProbs) => { <tr className={"list-item-td " + key + " " + nested + " " + (isObject ? 'object' : '')} data-copy-value={readableValue} - onClick={() => { isObject ? collapse(key, nested, value) : null }} + onClick={() => { isObject ? collapse(key, nested, child) : null }} > - <td style={{ marginLeft: tabs + 'em' }} className={"d-flex align-items-center "}>{icon}<span> {key}</span></td> - <td className="text-element text-truncate">{readableValue}</td> + <td style={{ marginLeft: tabs + 'em' }} className={"d-flex align-items-center "}>{icon}<span> <span dangerouslySetInnerHTML={{ __html: concatenatedKey }} /></span></td> + <td className="text-element text-truncate" dangerouslySetInnerHTML={{ __html: readableValue }}></td> <td className="text-end"> <div className="d-flex icons justify-content-end align-items-center"> <FontAwesomeIcon icon={faPenToSquare} size="sm" /> @@ -71,7 +97,7 @@ export const JsonViewer = ({ json }: JsonViewerProbs) => { </div> </td> </tr > - {isObject && collapsed ? renderInner(value, nested + 1, path) : ''} + {isObject && collapsed ? renderInner(innerChild, nested + 1, concatenatedKey, path) : ''} </React.Fragment > ) }) diff --git a/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx b/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx index 2ad0f0a6b..a1a9c8977 100644 --- a/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx +++ b/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx @@ -95,23 +95,30 @@ export const useJsonViewer = ({ json, search, container }: JsonViewerViewModelTy } } - const innerSearch = (json: Object, searchValue: string, path: string = "/"): boolean => { + const innerSearch = (json: Object, searchValue: string, parentKey: string = "", path: string = "/"): boolean => { let found = false; - path = JSON.parse(JSON.stringify(path)) + path += parentKey + (parentKey === "" ? "" : "/") for (const [key, childJson] of Object.entries(json)) { - path += key + "/" + // leaf if (!(childJson instanceof Object)) { const marked = key.includes(searchValue) || childJson.includes(searchValue); if (marked) { - parameterizedJsonMap.current.push(path) + parameterizedJsonMap.current.push(path + key) found = true } continue } - const marked = innerSearch(childJson, searchValue, JSON.parse(JSON.stringify(path))); + if (key.includes(searchValue)) { + parameterizedJsonMap.current.push(path + key) + found = true + } + + const marked = innerSearch(childJson, searchValue, key, path); + + // if found in some child leaf save the parent if (marked) { found = true parameterizedJsonMap.current.push(path) @@ -139,7 +146,9 @@ export const useJsonViewer = ({ json, search, container }: JsonViewerViewModelTy } return () => { - search.current!.removeEventListener('input', handleSearchInput) + if (search.current) { + search.current.removeEventListener('input', handleSearchInput) + } } }, []) diff --git a/react-ui/yarn.lock b/react-ui/yarn.lock index 5d2d968a7..d60413ed6 100755 --- a/react-ui/yarn.lock +++ b/react-ui/yarn.lock @@ -2676,7 +2676,7 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== -"@types/trusted-types@^2.0.2": +"@types/trusted-types@^2.0.2", "@types/trusted-types@^2.0.7": version "2.0.7" resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== @@ -4656,6 +4656,13 @@ domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: dependencies: domelementtype "^2.2.0" +dompurify@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.2.3.tgz#05dd2175225324daabfca6603055a09b2382a4cd" + integrity sha512-U1U5Hzc2MO0oW3DF+G9qYN0aT7atAou4AgI0XjWz061nyBPbdxkfdhfy5uMgGn6+oLFCfn44ZGbdDqCzVmlOWA== + optionalDependencies: + "@types/trusted-types" "^2.0.7" + domutils@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" -- GitLab From d3ea81a6c624dcaae3dc012963ec72bbf7b70dda Mon Sep 17 00:00:00 2001 From: matthiasf <matthias.feyll@@stud.h-da.de> Date: Tue, 10 Dec 2024 15:24:55 +0100 Subject: [PATCH 38/44] ui: implement json viewer search --- react-ui/.gitignore | 2 ++ react-ui/dist/assets/logo-Bj6KFr1z.svg | 17 ----------------- react-ui/dist/favicon.ico | Bin 3870 -> 0 bytes react-ui/dist/fonts/Inter.ttf | Bin 804612 -> 0 bytes react-ui/dist/index.html | 22 ---------------------- react-ui/dist/logo.png | Bin 66912 -> 0 bytes react-ui/dist/logo.svg | 17 ----------------- react-ui/dist/manifest.json | 20 -------------------- react-ui/dist/robots.txt | 3 --- 9 files changed, 2 insertions(+), 79 deletions(-) delete mode 100755 react-ui/dist/assets/logo-Bj6KFr1z.svg delete mode 100755 react-ui/dist/favicon.ico delete mode 100755 react-ui/dist/fonts/Inter.ttf delete mode 100755 react-ui/dist/index.html delete mode 100755 react-ui/dist/logo.png delete mode 100755 react-ui/dist/logo.svg delete mode 100755 react-ui/dist/manifest.json delete mode 100755 react-ui/dist/robots.txt diff --git a/react-ui/.gitignore b/react-ui/.gitignore index 6b5757776..5ec5a7340 100755 --- a/react-ui/.gitignore +++ b/react-ui/.gitignore @@ -14,6 +14,8 @@ # production /build +/dist +.vite/ # misc .DS_Store diff --git a/react-ui/dist/assets/logo-Bj6KFr1z.svg b/react-ui/dist/assets/logo-Bj6KFr1z.svg deleted file mode 100755 index b7f71bd90..000000000 --- a/react-ui/dist/assets/logo-Bj6KFr1z.svg +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<!-- Created with Vectornator (http://vectornator.io/) --> -<svg height="100%" stroke-miterlimit="10" style="fill-rule:nonzero;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;" version="1.1" viewBox="0 0 113.4 212.625" width="100%" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:vectornator="http://vectornator.io" xmlns:xlink="http://www.w3.org/1999/xlink"> -<defs> -<radialGradient cx="170.235" cy="146.046" gradientTransform="matrix(1.00001 -8.65109e-05 8.65119e-05 1 -115.465 -116.986)" gradientUnits="userSpaceOnUse" id="RadialGradient" r="217.591"> -<stop offset="0" stop-color="#c456f7"/> -<stop offset="1" stop-color="#34054a"/> -</radialGradient> -<filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="209.692" id="Filter" width="111.957" x="0.722269" y="2.46642"> -<feDropShadow dx="-4.37114e-08" dy="1" flood-color="#050505" flood-opacity="1" in="SourceGraphic" result="Shadow" stdDeviation="1"/> -</filter> -</defs> -<g id="Layer-1" vectornator:layerName="Layer 1"> -<path d="M35.1413 3.47016L35.1416 6.93891L27.1415 6.93961L27.1464 63.3771C21.6096 65.0011 16.4869 67.0445 12.2717 69.6596C-9.35807 83.0789 12.5182 123.232 12.5264 123.222C12.5341 123.213 12.5498 123.2 12.5576 123.191C13.1518 124.609 14.5144 125.761 16.5579 126.534C18.7737 127.372 21.8204 127.855 26.8082 128.408C25.0644 132.318 24.4639 137.732 25.3409 144.846C26.0816 150.854 28.2327 155.309 32.5924 161.533C32.9615 162.06 34.1761 163.796 34.3427 164.033C35.013 164.984 35.5416 165.705 35.9991 166.408C38.1084 169.647 39.1319 172.149 39.3124 174.814C39.3701 175.665 39.3355 180.513 39.251 187.751C39.2362 189.024 39.0999 200.614 39.0959 200.907C37.7122 201.653 36.7523 203.069 36.7525 204.751C36.7527 207.19 38.7205 209.157 41.1591 209.157C43.5978 209.157 45.5653 207.189 45.5651 204.751C45.5649 203.019 44.5477 201.568 43.096 200.844C43.1023 200.341 43.2363 189.045 43.2511 187.782C43.3388 180.268 43.3816 175.583 43.3124 174.563C43.0775 171.096 41.7912 168.012 39.3427 164.251C38.854 163.5 38.3197 162.708 37.6237 161.72C37.4507 161.474 36.2342 159.766 35.8735 159.251C31.8564 153.517 29.9529 149.563 29.3096 144.346C28.2621 135.848 29.4895 130.5 32.027 127.533C32.6413 126.815 33.2789 126.306 33.9019 125.97C34.2334 125.792 34.4442 125.7 34.4956 125.689C35.5735 125.448 36.2365 124.392 35.9954 123.314C35.7543 122.236 34.6982 121.542 33.6202 121.783C33.2264 121.871 32.6655 122.078 31.9953 122.439C31.0669 122.939 30.1635 123.734 29.3079 124.658C23.0392 124.019 20.0922 123.577 17.9951 122.784C16.1482 122.086 15.9773 121.63 16.7137 120.347C25.511 115.923 43.9287 113.157 55.0885 113.156C63.8081 113.155 79.7952 116.873 90.4333 119.622C93.9977 120.542 94.7294 120.755 96.621 121.277C94.2649 123.034 89.4439 124.738 83.3087 125.247C83.0835 125.266 82.9434 125.443 82.7462 125.529C82.6074 125.348 82.5171 125.106 82.3711 124.935C81.4271 123.831 80.3863 122.999 79.3396 122.435C78.6693 122.074 78.1085 121.867 77.7145 121.779C76.6365 121.538 75.5805 122.233 75.3396 123.31C75.0987 124.388 75.7619 125.444 76.8399 125.685C76.8913 125.697 77.1021 125.788 77.4337 125.967C78.0567 126.302 78.6942 126.81 79.3088 127.529C81.8468 130.496 83.0751 135.844 82.029 144.341C81.3867 149.559 79.4839 153.513 75.4678 159.248C75.1071 159.763 73.8909 161.471 73.7179 161.717C73.0221 162.705 72.488 163.498 71.9994 164.248C69.5516 168.009 68.2658 171.094 68.0315 174.561C67.9625 175.581 68.0061 180.266 68.0951 187.78C68.1102 189.055 68.2793 200.673 68.2838 200.967C66.9421 201.725 66.0027 203.098 66.0028 204.749C66.0031 207.187 67.9709 209.155 70.4095 209.155C72.8481 209.154 74.8156 207.187 74.8154 204.748C74.8153 202.975 73.7598 201.482 72.2526 200.779C72.2461 200.277 72.1101 189.009 72.0952 187.748C72.0095 180.511 71.974 175.662 72.0316 174.811C72.2116 172.146 73.2659 169.644 75.3746 166.404C75.8321 165.701 76.3292 164.981 76.9994 164.029C77.1659 163.793 78.3803 162.056 78.7492 161.529C83.1079 155.305 85.2582 150.849 85.9979 144.841C86.8306 138.077 86.2654 132.917 84.7153 129.06C93.073 128.178 99.944 125.471 101.777 121.527C105.258 116.592 120.674 81.4184 100.46 69.1833C96.4145 66.7344 91.6503 64.7196 86.3971 63.1845L86.3922 6.93448L78.3609 6.93517L78.3606 3.46642L35.1413 3.47016ZM31.1419 10.9393L39.1107 10.9386L39.3309 27.9386C39.3406 28.6841 39.9605 29.2606 40.7061 29.2509C41.4516 29.2413 42.0593 28.6214 42.0497 27.8758L41.7983 10.9383L44.517 10.9381L44.7998 27.9381C44.8108 28.6836 45.3981 29.2615 46.1436 29.2505C46.8892 29.2394 47.4983 28.6209 47.4873 27.8753L47.2358 10.9379L49.9546 10.9376L50.2061 27.9376C50.2169 28.6831 50.8357 29.2608 51.5812 29.25C52.3267 29.2392 52.9044 28.6203 52.8936 27.8749L52.6421 10.9374L55.3609 10.9372L55.6124 27.9371C55.623 28.6827 56.242 29.2601 56.9875 29.2495C57.733 29.2389 58.3418 28.6199 58.3312 27.8744L58.0797 10.9369L60.8297 10.9367L61.05 27.9367C61.0546 28.3094 61.2147 28.6381 61.4563 28.8741C61.6979 29.1102 62.0211 29.2537 62.3938 29.2491C63.1394 29.2398 63.7468 28.6194 63.7375 27.8739L63.5173 10.9365L66.2986 10.9362L66.4875 27.905C66.4957 28.6505 67.1171 29.2568 67.8627 29.2486C68.6082 29.2404 69.1834 28.6503 69.1751 27.9047L68.9861 10.936L71.7674 10.9357L71.9564 27.9357C71.9605 28.3085 72.1132 28.6372 72.3627 28.8732C72.6122 29.1091 72.9587 29.2523 73.3315 29.2481C74.077 29.2398 74.6833 28.6498 74.6751 27.9042L74.4862 10.9355L82.3925 10.9348L82.3969 62.2473C78.1953 61.2363 73.8195 60.4151 69.2716 59.936L69.0841 59.936L69.0846 65.9672L62.3352 73.3116L62.211 82.5928L62.212 94.7803L56.5244 94.7808L50.3056 94.7814L50.2733 82.9376L50.1163 73.3126L43.1468 65.8132L43.1463 60.0945L31.1463 62.3455L31.1419 10.9393ZM46.0197 41.188L45.9904 64.3755L52.9599 71.8749L53.1492 91.9374L59.368 91.9368L59.5225 71.8743L66.2407 64.5612L66.2387 41.3425L46.0197 41.188ZM45.5578 121.282C45.0484 121.232 44.5158 121.369 44.0891 121.719C43.2356 122.421 43.1382 123.71 43.8394 124.563C43.8712 124.602 43.9181 124.67 44.0269 124.813C44.2163 125.062 44.4521 125.354 44.6832 125.688C45.3494 126.65 45.998 127.755 46.621 128.938C48.9603 133.379 50.0248 137.836 49.1222 141.875C48.4351 144.95 46.6061 147.711 43.4353 150.126C43.1568 150.338 42.1644 150.942 40.7792 151.751C40.6905 151.803 37.4839 153.662 37.4356 153.689C36.4728 154.23 36.1131 155.445 36.6545 156.408C37.1959 157.37 38.4106 157.699 39.3734 157.157C39.4251 157.128 42.7199 155.272 42.8108 155.22C44.3781 154.304 45.4057 153.669 45.8731 153.313C49.7829 150.336 52.1324 146.76 53.0285 142.75C54.1746 137.622 52.9238 132.266 50.1834 127.063C49.4811 125.729 48.7181 124.526 47.9643 123.438C47.5056 122.775 47.1244 122.271 46.9017 122C46.5511 121.574 46.0673 121.332 45.5578 121.282ZM65.7769 121.28C65.2675 121.33 64.7837 121.572 64.4331 121.999C64.2105 122.27 63.8293 122.774 63.3708 123.436C62.6172 124.525 61.8858 125.728 61.1835 127.062C58.444 132.265 57.163 137.621 58.3099 142.749C59.2067 146.759 61.5569 150.335 65.4671 153.311C65.9346 153.667 66.9935 154.302 68.5611 155.217C68.6519 155.27 71.9158 157.125 71.9675 157.154C72.9304 157.696 74.145 157.367 74.6862 156.404C75.2275 155.441 74.8676 154.227 73.9048 153.686C73.8565 153.658 70.6495 151.8 70.5608 151.748C69.1754 150.939 68.1829 150.336 67.9044 150.124C64.7332 147.71 62.9036 144.948 62.2161 141.874C61.3128 137.835 62.3766 133.378 64.715 128.936C65.3378 127.753 65.9862 126.649 66.6522 125.686C66.8833 125.352 67.1191 125.06 67.3084 124.811C67.4172 124.668 67.4953 124.6 67.5272 124.561C68.2282 123.708 68.0992 122.418 67.2457 121.717C66.8189 121.367 66.2862 121.23 65.7769 121.28ZM28.3735 160.064C27.8641 160.114 27.3492 160.357 26.9985 160.783C24.0604 164.358 22.5881 168.723 22.5621 174.253C22.5614 174.404 22.6311 200.839 22.627 200.877C21.1966 201.608 20.1896 203.036 20.1898 204.753C20.19 207.191 22.1578 209.159 24.5964 209.159C27.0351 209.158 29.0026 207.191 29.0024 204.752C29.0022 203.061 28.0235 201.65 26.627 200.908C26.6562 200.425 26.6538 197.055 26.6259 187.658C26.6229 186.662 26.5615 174.385 26.5622 174.252C26.584 169.618 27.7563 166.157 30.0925 163.314C30.7939 162.461 30.6644 161.203 29.811 160.502C29.3844 160.151 28.8829 160.015 28.3735 160.064ZM82.9679 160.06C82.4585 160.01 81.9571 160.147 81.5304 160.497C80.6772 161.199 80.5479 162.457 81.2494 163.31C83.5862 166.152 84.7591 169.613 84.7817 174.247C84.7823 174.378 84.7241 199.67 84.7527 200.841C83.3011 201.564 82.2529 203.015 82.253 204.747C82.2533 207.186 84.2524 209.153 86.691 209.153C89.1295 209.153 91.0971 207.185 91.0969 204.747C91.0967 203.049 90.1265 201.611 88.7215 200.872C88.7173 200.833 88.7318 194.753 88.7516 187.684C88.7544 186.688 88.7824 174.398 88.7817 174.247C88.7548 168.717 87.2817 164.353 84.343 160.778C83.9922 160.352 83.4774 160.109 82.9679 160.06Z" fill="url(#RadialGradient)" fill-rule="nonzero" filter="url(#Filter)" stroke="none" vectornator:shadowAngle="1.5708" vectornator:shadowColor="#050505" vectornator:shadowOffset="1" vectornator:shadowOpacity="1" vectornator:shadowRadius="2"/> -</g> -</svg> diff --git a/react-ui/dist/favicon.ico b/react-ui/dist/favicon.ico deleted file mode 100755 index a11777cc471a4344702741ab1c8a588998b1311a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3870 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 ZtMWJ#1p_C<F-T5Hu2|;y@Dg%;1puB)gNgtE diff --git a/react-ui/dist/fonts/Inter.ttf b/react-ui/dist/fonts/Inter.ttf deleted file mode 100755 index e72470871b8fc198da424b1e17ed729c202829cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 804612 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%0Ax6j{ZP3#Ka=%E2kFnV}3!H!zffX;7aA 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�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%0A&7R<ezA4~-nJxGL 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 diff --git a/react-ui/dist/index.html b/react-ui/dist/index.html deleted file mode 100755 index caad9f594..000000000 --- a/react-ui/dist/index.html +++ /dev/null @@ -1,22 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="utf-8" /> - <link rel="icon" href="favicon.ico" /> - <meta name="viewport" content="width=device-width, initial-scale=1" /> - <meta name="theme-color" content="#000000" /> - <meta - name="description" - content="Web site created using create-react-app" - /> - <link rel="apple-touch-icon" href="logo.png" /> - <link rel="manifest" href="manifest.json" /> - <title>goSDN</title> - <script type="module" crossorigin src="/assets/index-CjxHZxKK.js"></script> - <link rel="stylesheet" crossorigin href="/assets/index-CS1-FuBh.css"> - </head> - <body> - <noscript>You need to enable JavaScript to run this app.</noscript> - <div id="root"></div> - </body> -</html> diff --git a/react-ui/dist/logo.png b/react-ui/dist/logo.png deleted file mode 100755 index ad4ee061e519860d12b8fb8bb044b1df4359f20d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66912 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 diff --git a/react-ui/dist/logo.svg b/react-ui/dist/logo.svg deleted file mode 100755 index b7f71bd90..000000000 --- a/react-ui/dist/logo.svg +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<!-- Created with Vectornator (http://vectornator.io/) --> -<svg height="100%" stroke-miterlimit="10" style="fill-rule:nonzero;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;" version="1.1" viewBox="0 0 113.4 212.625" width="100%" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:vectornator="http://vectornator.io" xmlns:xlink="http://www.w3.org/1999/xlink"> -<defs> -<radialGradient cx="170.235" cy="146.046" gradientTransform="matrix(1.00001 -8.65109e-05 8.65119e-05 1 -115.465 -116.986)" gradientUnits="userSpaceOnUse" id="RadialGradient" r="217.591"> -<stop offset="0" stop-color="#c456f7"/> -<stop offset="1" stop-color="#34054a"/> -</radialGradient> -<filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="209.692" id="Filter" width="111.957" x="0.722269" y="2.46642"> -<feDropShadow dx="-4.37114e-08" dy="1" flood-color="#050505" flood-opacity="1" in="SourceGraphic" result="Shadow" stdDeviation="1"/> -</filter> -</defs> -<g id="Layer-1" vectornator:layerName="Layer 1"> -<path d="M35.1413 3.47016L35.1416 6.93891L27.1415 6.93961L27.1464 63.3771C21.6096 65.0011 16.4869 67.0445 12.2717 69.6596C-9.35807 83.0789 12.5182 123.232 12.5264 123.222C12.5341 123.213 12.5498 123.2 12.5576 123.191C13.1518 124.609 14.5144 125.761 16.5579 126.534C18.7737 127.372 21.8204 127.855 26.8082 128.408C25.0644 132.318 24.4639 137.732 25.3409 144.846C26.0816 150.854 28.2327 155.309 32.5924 161.533C32.9615 162.06 34.1761 163.796 34.3427 164.033C35.013 164.984 35.5416 165.705 35.9991 166.408C38.1084 169.647 39.1319 172.149 39.3124 174.814C39.3701 175.665 39.3355 180.513 39.251 187.751C39.2362 189.024 39.0999 200.614 39.0959 200.907C37.7122 201.653 36.7523 203.069 36.7525 204.751C36.7527 207.19 38.7205 209.157 41.1591 209.157C43.5978 209.157 45.5653 207.189 45.5651 204.751C45.5649 203.019 44.5477 201.568 43.096 200.844C43.1023 200.341 43.2363 189.045 43.2511 187.782C43.3388 180.268 43.3816 175.583 43.3124 174.563C43.0775 171.096 41.7912 168.012 39.3427 164.251C38.854 163.5 38.3197 162.708 37.6237 161.72C37.4507 161.474 36.2342 159.766 35.8735 159.251C31.8564 153.517 29.9529 149.563 29.3096 144.346C28.2621 135.848 29.4895 130.5 32.027 127.533C32.6413 126.815 33.2789 126.306 33.9019 125.97C34.2334 125.792 34.4442 125.7 34.4956 125.689C35.5735 125.448 36.2365 124.392 35.9954 123.314C35.7543 122.236 34.6982 121.542 33.6202 121.783C33.2264 121.871 32.6655 122.078 31.9953 122.439C31.0669 122.939 30.1635 123.734 29.3079 124.658C23.0392 124.019 20.0922 123.577 17.9951 122.784C16.1482 122.086 15.9773 121.63 16.7137 120.347C25.511 115.923 43.9287 113.157 55.0885 113.156C63.8081 113.155 79.7952 116.873 90.4333 119.622C93.9977 120.542 94.7294 120.755 96.621 121.277C94.2649 123.034 89.4439 124.738 83.3087 125.247C83.0835 125.266 82.9434 125.443 82.7462 125.529C82.6074 125.348 82.5171 125.106 82.3711 124.935C81.4271 123.831 80.3863 122.999 79.3396 122.435C78.6693 122.074 78.1085 121.867 77.7145 121.779C76.6365 121.538 75.5805 122.233 75.3396 123.31C75.0987 124.388 75.7619 125.444 76.8399 125.685C76.8913 125.697 77.1021 125.788 77.4337 125.967C78.0567 126.302 78.6942 126.81 79.3088 127.529C81.8468 130.496 83.0751 135.844 82.029 144.341C81.3867 149.559 79.4839 153.513 75.4678 159.248C75.1071 159.763 73.8909 161.471 73.7179 161.717C73.0221 162.705 72.488 163.498 71.9994 164.248C69.5516 168.009 68.2658 171.094 68.0315 174.561C67.9625 175.581 68.0061 180.266 68.0951 187.78C68.1102 189.055 68.2793 200.673 68.2838 200.967C66.9421 201.725 66.0027 203.098 66.0028 204.749C66.0031 207.187 67.9709 209.155 70.4095 209.155C72.8481 209.154 74.8156 207.187 74.8154 204.748C74.8153 202.975 73.7598 201.482 72.2526 200.779C72.2461 200.277 72.1101 189.009 72.0952 187.748C72.0095 180.511 71.974 175.662 72.0316 174.811C72.2116 172.146 73.2659 169.644 75.3746 166.404C75.8321 165.701 76.3292 164.981 76.9994 164.029C77.1659 163.793 78.3803 162.056 78.7492 161.529C83.1079 155.305 85.2582 150.849 85.9979 144.841C86.8306 138.077 86.2654 132.917 84.7153 129.06C93.073 128.178 99.944 125.471 101.777 121.527C105.258 116.592 120.674 81.4184 100.46 69.1833C96.4145 66.7344 91.6503 64.7196 86.3971 63.1845L86.3922 6.93448L78.3609 6.93517L78.3606 3.46642L35.1413 3.47016ZM31.1419 10.9393L39.1107 10.9386L39.3309 27.9386C39.3406 28.6841 39.9605 29.2606 40.7061 29.2509C41.4516 29.2413 42.0593 28.6214 42.0497 27.8758L41.7983 10.9383L44.517 10.9381L44.7998 27.9381C44.8108 28.6836 45.3981 29.2615 46.1436 29.2505C46.8892 29.2394 47.4983 28.6209 47.4873 27.8753L47.2358 10.9379L49.9546 10.9376L50.2061 27.9376C50.2169 28.6831 50.8357 29.2608 51.5812 29.25C52.3267 29.2392 52.9044 28.6203 52.8936 27.8749L52.6421 10.9374L55.3609 10.9372L55.6124 27.9371C55.623 28.6827 56.242 29.2601 56.9875 29.2495C57.733 29.2389 58.3418 28.6199 58.3312 27.8744L58.0797 10.9369L60.8297 10.9367L61.05 27.9367C61.0546 28.3094 61.2147 28.6381 61.4563 28.8741C61.6979 29.1102 62.0211 29.2537 62.3938 29.2491C63.1394 29.2398 63.7468 28.6194 63.7375 27.8739L63.5173 10.9365L66.2986 10.9362L66.4875 27.905C66.4957 28.6505 67.1171 29.2568 67.8627 29.2486C68.6082 29.2404 69.1834 28.6503 69.1751 27.9047L68.9861 10.936L71.7674 10.9357L71.9564 27.9357C71.9605 28.3085 72.1132 28.6372 72.3627 28.8732C72.6122 29.1091 72.9587 29.2523 73.3315 29.2481C74.077 29.2398 74.6833 28.6498 74.6751 27.9042L74.4862 10.9355L82.3925 10.9348L82.3969 62.2473C78.1953 61.2363 73.8195 60.4151 69.2716 59.936L69.0841 59.936L69.0846 65.9672L62.3352 73.3116L62.211 82.5928L62.212 94.7803L56.5244 94.7808L50.3056 94.7814L50.2733 82.9376L50.1163 73.3126L43.1468 65.8132L43.1463 60.0945L31.1463 62.3455L31.1419 10.9393ZM46.0197 41.188L45.9904 64.3755L52.9599 71.8749L53.1492 91.9374L59.368 91.9368L59.5225 71.8743L66.2407 64.5612L66.2387 41.3425L46.0197 41.188ZM45.5578 121.282C45.0484 121.232 44.5158 121.369 44.0891 121.719C43.2356 122.421 43.1382 123.71 43.8394 124.563C43.8712 124.602 43.9181 124.67 44.0269 124.813C44.2163 125.062 44.4521 125.354 44.6832 125.688C45.3494 126.65 45.998 127.755 46.621 128.938C48.9603 133.379 50.0248 137.836 49.1222 141.875C48.4351 144.95 46.6061 147.711 43.4353 150.126C43.1568 150.338 42.1644 150.942 40.7792 151.751C40.6905 151.803 37.4839 153.662 37.4356 153.689C36.4728 154.23 36.1131 155.445 36.6545 156.408C37.1959 157.37 38.4106 157.699 39.3734 157.157C39.4251 157.128 42.7199 155.272 42.8108 155.22C44.3781 154.304 45.4057 153.669 45.8731 153.313C49.7829 150.336 52.1324 146.76 53.0285 142.75C54.1746 137.622 52.9238 132.266 50.1834 127.063C49.4811 125.729 48.7181 124.526 47.9643 123.438C47.5056 122.775 47.1244 122.271 46.9017 122C46.5511 121.574 46.0673 121.332 45.5578 121.282ZM65.7769 121.28C65.2675 121.33 64.7837 121.572 64.4331 121.999C64.2105 122.27 63.8293 122.774 63.3708 123.436C62.6172 124.525 61.8858 125.728 61.1835 127.062C58.444 132.265 57.163 137.621 58.3099 142.749C59.2067 146.759 61.5569 150.335 65.4671 153.311C65.9346 153.667 66.9935 154.302 68.5611 155.217C68.6519 155.27 71.9158 157.125 71.9675 157.154C72.9304 157.696 74.145 157.367 74.6862 156.404C75.2275 155.441 74.8676 154.227 73.9048 153.686C73.8565 153.658 70.6495 151.8 70.5608 151.748C69.1754 150.939 68.1829 150.336 67.9044 150.124C64.7332 147.71 62.9036 144.948 62.2161 141.874C61.3128 137.835 62.3766 133.378 64.715 128.936C65.3378 127.753 65.9862 126.649 66.6522 125.686C66.8833 125.352 67.1191 125.06 67.3084 124.811C67.4172 124.668 67.4953 124.6 67.5272 124.561C68.2282 123.708 68.0992 122.418 67.2457 121.717C66.8189 121.367 66.2862 121.23 65.7769 121.28ZM28.3735 160.064C27.8641 160.114 27.3492 160.357 26.9985 160.783C24.0604 164.358 22.5881 168.723 22.5621 174.253C22.5614 174.404 22.6311 200.839 22.627 200.877C21.1966 201.608 20.1896 203.036 20.1898 204.753C20.19 207.191 22.1578 209.159 24.5964 209.159C27.0351 209.158 29.0026 207.191 29.0024 204.752C29.0022 203.061 28.0235 201.65 26.627 200.908C26.6562 200.425 26.6538 197.055 26.6259 187.658C26.6229 186.662 26.5615 174.385 26.5622 174.252C26.584 169.618 27.7563 166.157 30.0925 163.314C30.7939 162.461 30.6644 161.203 29.811 160.502C29.3844 160.151 28.8829 160.015 28.3735 160.064ZM82.9679 160.06C82.4585 160.01 81.9571 160.147 81.5304 160.497C80.6772 161.199 80.5479 162.457 81.2494 163.31C83.5862 166.152 84.7591 169.613 84.7817 174.247C84.7823 174.378 84.7241 199.67 84.7527 200.841C83.3011 201.564 82.2529 203.015 82.253 204.747C82.2533 207.186 84.2524 209.153 86.691 209.153C89.1295 209.153 91.0971 207.185 91.0969 204.747C91.0967 203.049 90.1265 201.611 88.7215 200.872C88.7173 200.833 88.7318 194.753 88.7516 187.684C88.7544 186.688 88.7824 174.398 88.7817 174.247C88.7548 168.717 87.2817 164.353 84.343 160.778C83.9922 160.352 83.4774 160.109 82.9679 160.06Z" fill="url(#RadialGradient)" fill-rule="nonzero" filter="url(#Filter)" stroke="none" vectornator:shadowAngle="1.5708" vectornator:shadowColor="#050505" vectornator:shadowOffset="1" vectornator:shadowOpacity="1" vectornator:shadowRadius="2"/> -</g> -</svg> diff --git a/react-ui/dist/manifest.json b/react-ui/dist/manifest.json deleted file mode 100755 index 641e73d58..000000000 --- a/react-ui/dist/manifest.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - }, - { - "src": "logo.png", - "type": "image/png", - "sizes": "400x400" - } - ], - "start_url": ".", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/react-ui/dist/robots.txt b/react-ui/dist/robots.txt deleted file mode 100755 index e9e57dc4d..000000000 --- a/react-ui/dist/robots.txt +++ /dev/null @@ -1,3 +0,0 @@ -# https://www.robotstxt.org/robotstxt.html -User-agent: * -Disallow: -- GitLab From a796b11838f1e287111e16d4101b0074fbd09107 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@@stud.h-da.de> Date: Tue, 10 Dec 2024 16:24:37 +0100 Subject: [PATCH 39/44] ui: apply gofmt to networkelement --- controller/northbound/server/networkElement.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/controller/northbound/server/networkElement.go b/controller/northbound/server/networkElement.go index 10312d0f9..08bcf2a0e 100644 --- a/controller/northbound/server/networkElement.go +++ b/controller/northbound/server/networkElement.go @@ -20,10 +20,10 @@ import ( "code.fbi.h-da.de/danet/gosdn/controller/metrics" "code.fbi.h-da.de/danet/gosdn/controller/nucleus" "code.fbi.h-da.de/danet/gosdn/controller/nucleus/types" - "code.fbi.h-da.de/danet/gosdn/models/generated/openconfig" util "code.fbi.h-da.de/danet/gosdn/controller/nucleus/util/gnmi" "code.fbi.h-da.de/danet/gosdn/controller/store" aGNMI "code.fbi.h-da.de/danet/gosdn/forks/goarista/gnmi" + "code.fbi.h-da.de/danet/gosdn/models/generated/openconfig" "github.com/bufbuild/protovalidate-go" "github.com/google/uuid" "github.com/hashicorp/go-multierror" @@ -187,7 +187,7 @@ func (n *NetworkElementServer) ParseYang(ctx context.Context, request *mnepb.Par if err := n.protoValidator.Validate(request); err != nil { return nil, status.Errorf(codes.Aborted, "%v", err) } - + device := &openconfig.Device{} if err := openconfig.Unmarshal([]byte(request.Yang), device); err != nil { @@ -210,7 +210,7 @@ func (n *NetworkElementServer) ParseYang(ctx context.Context, request *mnepb.Par return &mnepb.ParseYangResponse{ Timestamp: time.Now().UnixNano(), - Json: string(json), + Json: string(json), }, nil } -- GitLab From 343ed8a0c760e7d1df19aef0acfdd5c71718910d Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@@stud.h-da.de> Date: Wed, 11 Dec 2024 00:00:08 +0100 Subject: [PATCH 40/44] ui: add global menu item --- react-ui/README.md | 2 - react-ui/docker/wasm/Dockerfile | 13 -- react-ui/docker/wasm/entrypoint.sh | 9 - react-ui/package.json | 7 +- react-ui/scripts/build-wasm.sh | 38 ---- .../devices/routines/mne.routine.ts | 7 +- .../devices/view/device.view.tabs.tsx | 2 +- .../components/login/layouts/login.layout.tsx | 2 +- .../src/i18n/locales/en/translations.json | 3 + react-ui/src/index.tsx | 23 +-- .../reducer/json_viewer.reducer.ts | 1 - react-ui/src/shared/error/Error.ts | 1 + react-ui/src/shared/error/FetchError.ts | 5 + react-ui/src/shared/helper/interfaces.ts | 5 + react-ui/src/shared/layouts/basic.layout.tsx | 2 - .../protected.layout/protected.layout.scss | 2 +- .../protected.layout/protected.layout.tsx | 17 +- .../src/shared/provider/auth.provider.tsx | 16 +- .../shared/provider/menu/menu.provider.tsx | 37 +++- .../src/shared/provider/utils.provider.tsx | 5 +- .../shared/utils/yang_parser/go/.gitignore | 1 - .../go/assets/wasm_exec.d.ts.generated | 18 -- .../src/shared/utils/yang_parser/go/go.env | 1 - .../src/shared/utils/yang_parser/go/go.mod | 18 -- .../src/shared/utils/yang_parser/go/go.sum | 171 ------------------ .../utils/yang_parser/go/yang_parser.go | 39 ---- .../shared/utils/yang_parser/yang_parser.ts | 38 ---- react-ui/tsconfig.json | 1 - react-ui/vite.config.mjs | 5 +- react-ui/yarn.lock | 112 +----------- 30 files changed, 93 insertions(+), 508 deletions(-) delete mode 100755 react-ui/docker/wasm/Dockerfile delete mode 100755 react-ui/docker/wasm/entrypoint.sh delete mode 100755 react-ui/scripts/build-wasm.sh create mode 100644 react-ui/src/shared/error/Error.ts create mode 100644 react-ui/src/shared/error/FetchError.ts create mode 100644 react-ui/src/shared/helper/interfaces.ts delete mode 100755 react-ui/src/shared/utils/yang_parser/go/.gitignore delete mode 100755 react-ui/src/shared/utils/yang_parser/go/assets/wasm_exec.d.ts.generated delete mode 100755 react-ui/src/shared/utils/yang_parser/go/go.env delete mode 100755 react-ui/src/shared/utils/yang_parser/go/go.mod delete mode 100755 react-ui/src/shared/utils/yang_parser/go/go.sum delete mode 100755 react-ui/src/shared/utils/yang_parser/go/yang_parser.go delete mode 100755 react-ui/src/shared/utils/yang_parser/yang_parser.ts diff --git a/react-ui/README.md b/react-ui/README.md index c9208ec09..b6c8b0ba1 100755 --- a/react-ui/README.md +++ b/react-ui/README.md @@ -7,7 +7,5 @@ This is the UI for the goSDN project. It's a webapp written in react ### Requirements - Docker - - ### Author Matthias Feyll \ No newline at end of file diff --git a/react-ui/docker/wasm/Dockerfile b/react-ui/docker/wasm/Dockerfile deleted file mode 100755 index 343521154..000000000 --- a/react-ui/docker/wasm/Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -FROM golang:alpine3.20 - -WORKDIR /app - -ARG USER -ARG GROUP - -RUN mkdir /.cache && chmod -R 777 /.cache - -COPY ./docker/wasm/entrypoint.sh / - - -ENTRYPOINT ["/entrypoint.sh"] \ No newline at end of file diff --git a/react-ui/docker/wasm/entrypoint.sh b/react-ui/docker/wasm/entrypoint.sh deleted file mode 100755 index 934d25928..000000000 --- a/react-ui/docker/wasm/entrypoint.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env sh - -#go mod download && go mod verify -#ls -al $(go env GOROOT)/lib/ - -GOOS=js GOARCH=wasm "$@" - -cp "$(go env GOROOT)/misc/wasm/wasm_exec.js" ./build/wasm -cp "./src/shared/utils/yang_parser/go/assets/wasm_exec.d.ts.generated" ./build/wasm/wasm_exec.d.ts diff --git a/react-ui/package.json b/react-ui/package.json index 951b1c216..22017e594 100755 --- a/react-ui/package.json +++ b/react-ui/package.json @@ -16,6 +16,7 @@ "react": "^18.3.1", "react-bootstrap": "^2.10.2", "react-dom": "^18.3.1", + "react-error-boundary": "^4.1.2", "react-i18next": "^15.0.0", "react-json-view": "^1.21.3", "react-redux": "^9.1.2", @@ -32,8 +33,6 @@ "build": "tsc && vite build", "test": "react-scripts test", "build::api": "npx @rtk-query/codegen-openapi ./scripts/openapi-config.json", - "build::wasm": "./scripts/build-wasm.sh", - "build::cpp": "./scripts/build-cpp.sh", "lint": "eslint src", "lint::fix": "eslint src --fix", "clean": "./scripts/clean.sh" @@ -84,8 +83,6 @@ "typescript": "^5.5.3", "typescript-eslint": "^8.0.1", "vite": "^5.4.9", - "vite-bundle-visualizer": "^1.2.1", - "vite-plugin-top-level-await": "^1.4.4", - "vite-plugin-wasm": "^3.3.0" + "vite-bundle-visualizer": "^1.2.1" } } diff --git a/react-ui/scripts/build-wasm.sh b/react-ui/scripts/build-wasm.sh deleted file mode 100755 index 3b4ab1ab5..000000000 --- a/react-ui/scripts/build-wasm.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env sh - -GO_FILE=src/shared/utils/yang_parser/go -YANG_MODEL_PATH=$GO_FILE/openconfig - -OUTPUT_PATH=/build/wasm - -if [ ! -d $OUTPUT_PATH ]; then - mkdir -p $(pwd)/$OUTPUT_PATH -fi - -if [ ! -d $YANG_MODEL_PATH ]; then - mkdir $YANG_MODEL_PATH -fi - -rm $YANG_MODEL_PATH/yang_models.go -ln $(pwd)/../models/generated/openconfig/yang.go $YANG_MODEL_PATH/yang_models.go -echo 'Succesfully linked yang model' - -DOCKER_TAG=gosdn_react_ui_wasm -docker build \ - --no-cache \ - -t $DOCKER_TAG \ - -f ./docker/wasm/Dockerfile \ - --build-arg USER=$(id -u) \ - --build-arg GROUP=$(id -g) \ - . -DOCKER_PATH=/app -OUTPUT_FILE=$DOCKER_PATH$OUTPUT_PATH/ - -docker run \ - --rm \ - -v $(pwd):$DOCKER_PATH \ - -u $(id -u):$(id -g) \ - -w $DOCKER_PATH \ - $DOCKER_TAG \ - go build -C $GO_FILE -ldflags="-s -w" -o $OUTPUT_FILE/yang_parser.wasm - diff --git a/react-ui/src/components/devices/routines/mne.routine.ts b/react-ui/src/components/devices/routines/mne.routine.ts index 378e6e8cf..7de1d1814 100755 --- a/react-ui/src/components/devices/routines/mne.routine.ts +++ b/react-ui/src/components/devices/routines/mne.routine.ts @@ -32,8 +32,13 @@ export const fetchSelectedMneThunk = createAsyncThunk( async (device: Device, thunkApi) => { const { user } = thunkApi.getState() as RootState + if (!user.user?.roles || !device.id) { + throw new Error('Background MNE fetching failed! User data is missing. Reload page or logout and login again') + // TODO + } + const payload: NetworkElementServiceGetApiArg = { - pid: Object.keys(user?.user.roles)[0], + pid: Object.keys(user.user.roles)[0], timestamp: new Date().getTime().toString(), mneid: device.id, } diff --git a/react-ui/src/components/devices/view/device.view.tabs.tsx b/react-ui/src/components/devices/view/device.view.tabs.tsx index d492c90b7..2929f9b64 100755 --- a/react-ui/src/components/devices/view/device.view.tabs.tsx +++ b/react-ui/src/components/devices/view/device.view.tabs.tsx @@ -14,7 +14,7 @@ export const DeviceViewTabs = (activeTab: DeviceViewTabValues) => { const metadataTab = () => { return ( <div> - {selectedDevice.mne.name} + {selectedDevice!.mne!.name} </div> ) } diff --git a/react-ui/src/components/login/layouts/login.layout.tsx b/react-ui/src/components/login/layouts/login.layout.tsx index 323941a67..556dc6de4 100755 --- a/react-ui/src/components/login/layouts/login.layout.tsx +++ b/react-ui/src/components/login/layouts/login.layout.tsx @@ -4,7 +4,7 @@ import { useNavigate, useOutlet } from "react-router-dom"; import LoginView from "../view/login.view"; -export const LoginLayout = ({ children }) => { +export const LoginLayout = () => { const outlet = useOutlet(); const navigate = useNavigate(); const { isAuthenticated } = useAuth(); diff --git a/react-ui/src/i18n/locales/en/translations.json b/react-ui/src/i18n/locales/en/translations.json index c5e037548..46b76563c 100755 --- a/react-ui/src/i18n/locales/en/translations.json +++ b/react-ui/src/i18n/locales/en/translations.json @@ -7,6 +7,9 @@ }, "toast": { "copied": "Copied to clipboard" + }, + "menu_item": { + "logout": "Logout" } }, "json_viewer": { diff --git a/react-ui/src/index.tsx b/react-ui/src/index.tsx index 186138b89..8383248ce 100755 --- a/react-ui/src/index.tsx +++ b/react-ui/src/index.tsx @@ -1,8 +1,8 @@ -import { MenuProvider } from '@provider/menu/menu.provider' import { UtilsProvider } from '@provider/utils.provider' import i18next from 'i18next' import React from 'react' import ReactDOM from 'react-dom/client' +import { ErrorBoundary } from "react-error-boundary" import { I18nextProvider } from 'react-i18next' import { Provider } from 'react-redux' import { @@ -16,20 +16,21 @@ import { router } from './routes' import './shared/icons/icons' import { persistor, store } from './stores' + ReactDOM.createRoot(document.getElementById("root")).render( <React.StrictMode> - <Provider store={store}> - <PersistGate loading={null} persistor={persistor}> - <I18nextProvider i18n={i18next}> - <UtilsProvider> - <MenuProvider> + <ErrorBoundary fallback={<div>Something went wrong</div>}> + <Provider store={store}> + <PersistGate loading={null} persistor={persistor}> + <I18nextProvider i18n={i18next}> + <UtilsProvider> <ToastContainer /> <RouterProvider router={router} /> - </MenuProvider> - </UtilsProvider> - </I18nextProvider> - </PersistGate> - </Provider> + </UtilsProvider> + </I18nextProvider> + </PersistGate> + </Provider> + </ErrorBoundary> </React.StrictMode> ); diff --git a/react-ui/src/shared/components/json_viewer/reducer/json_viewer.reducer.ts b/react-ui/src/shared/components/json_viewer/reducer/json_viewer.reducer.ts index cdd0351b1..0779d0e18 100755 --- a/react-ui/src/shared/components/json_viewer/reducer/json_viewer.reducer.ts +++ b/react-ui/src/shared/components/json_viewer/reducer/json_viewer.reducer.ts @@ -59,7 +59,6 @@ const JsonViewerSlice = createSlice({ if (i === -1) { - console.log('new ' + payload.key + " => " + payload.nested + ' end') // create new collapse const newItem = { identifier, collapsed: true } state.collapseContainer = [...state.collapseContainer, newItem] diff --git a/react-ui/src/shared/error/Error.ts b/react-ui/src/shared/error/Error.ts new file mode 100644 index 000000000..b4c878601 --- /dev/null +++ b/react-ui/src/shared/error/Error.ts @@ -0,0 +1 @@ +export type BasicError = Error; \ No newline at end of file diff --git a/react-ui/src/shared/error/FetchError.ts b/react-ui/src/shared/error/FetchError.ts new file mode 100644 index 000000000..a1655e19d --- /dev/null +++ b/react-ui/src/shared/error/FetchError.ts @@ -0,0 +1,5 @@ +import { BasicError } from "./Error"; + +export interface FetchError extends BasicError { + action: string +} \ No newline at end of file diff --git a/react-ui/src/shared/helper/interfaces.ts b/react-ui/src/shared/helper/interfaces.ts new file mode 100644 index 000000000..97a822706 --- /dev/null +++ b/react-ui/src/shared/helper/interfaces.ts @@ -0,0 +1,5 @@ +import React from "react"; + +export interface BasicProp { + children: React.ReactNode +} \ No newline at end of file diff --git a/react-ui/src/shared/layouts/basic.layout.tsx b/react-ui/src/shared/layouts/basic.layout.tsx index 640af3e1b..e3728ac6d 100755 --- a/react-ui/src/shared/layouts/basic.layout.tsx +++ b/react-ui/src/shared/layouts/basic.layout.tsx @@ -4,8 +4,6 @@ import { useOutlet } from "react-router-dom"; export const BasicLayout = () => { const outlet = useOutlet(); - - return ( <AuthProvider> {outlet} diff --git a/react-ui/src/shared/layouts/protected.layout/protected.layout.scss b/react-ui/src/shared/layouts/protected.layout/protected.layout.scss index ffc4acf0d..07b38d5a7 100755 --- a/react-ui/src/shared/layouts/protected.layout/protected.layout.scss +++ b/react-ui/src/shared/layouts/protected.layout/protected.layout.scss @@ -1,4 +1,4 @@ -@import '/src/shared/style/colors.scss'; +@import "/src/shared/style/colors.scss"; $sidebar-width: 4.5em; diff --git a/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx b/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx index 03a188796..0708d87f1 100755 --- a/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx +++ b/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx @@ -4,6 +4,7 @@ import { faCircleUser, faRightFromBracket } from "@fortawesome/free-solid-svg-ic import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { useAppDispatch, useAppSelector } from '@hooks'; import { useAuth } from "@provider/auth.provider"; +import { MenuProvider } from '@provider/menu/menu.provider'; import { DEVICE_URL, LOGIN_URL } from '@routes'; import { fetchUser } from '@shared/reducer/user.reducer'; import React, { useEffect } from "react"; @@ -71,7 +72,7 @@ export const ProtectedLayout = () => { const VerticalSidebar = () => { return ( - <div className="d-flex fixed-top z-n1 flex-column flex-shrink-0 bg-white sidebar justify-content-end border-end border-dark py-3"> + <div className="d-flex fixed-top flex-column flex-shrink-0 bg-white sidebar justify-content-end border-end border-dark py-3 z-2"> <FontAwesomeIcon className="clickable icon" icon={faRightFromBracket} onClick={logout} size="2x" /> </div> ) @@ -79,7 +80,7 @@ export const ProtectedLayout = () => { const HorizontalNavbar = () => { return ( - <nav className="bg-white border-bottom border-dark py-2 d-flex align-items-center"> + <nav className="bg-white border-bottom border-dark py-2 d-flex align-items-center z-3 position-relative"> <Link to="/"><img src={logo} className="mx-4 me-5" width={25} alt="logo" /></Link> <Link className={"head-links" + handleActiveLink(DEVICE_URL)} to="/">{t('protected.link.device_list')}</Link> <Link className={"head-links" + handleActiveLink('/map')} to="/">{t('protected.link.map')}</Link> @@ -104,11 +105,13 @@ export const ProtectedLayout = () => { return ( <div> - {HorizontalNavbar()} - {VerticalSidebar()} - <div className='main-content'> - <Outlet /> - </div> + <MenuProvider> + {HorizontalNavbar()} + {VerticalSidebar()} + <div className='main-content'> + <Outlet /> + </div> + </MenuProvider> </div> ) }; \ No newline at end of file diff --git a/react-ui/src/shared/provider/auth.provider.tsx b/react-ui/src/shared/provider/auth.provider.tsx index faf29847f..830a4d47d 100755 --- a/react-ui/src/shared/provider/auth.provider.tsx +++ b/react-ui/src/shared/provider/auth.provider.tsx @@ -1,5 +1,6 @@ import { AuthServiceLoginApiArg, AuthServiceLoginApiResponse, useAuthServiceLoginMutation } from "@api/api"; import { getCookieValue } from "@helper/coookie"; +import { BasicProp } from "@helper/interfaces"; import { useAppDispatch, useAppSelector } from "@hooks"; import { DEVICE_URL, LOGIN_URL } from "@routes"; import { jwtDecode } from "jwt-decode"; @@ -11,14 +12,7 @@ interface AuthProviderType { login: (username: string, password: string) => void, logout: () => void, // todo figure out the type of loginProperties - loginProperties: { - isLoading: boolean, - isSuccess: boolean, - isError: boolean, - error: object, - data: object, - reset: () => void - } | undefined, + loginProperties: any, isAuthenticated: () => boolean } @@ -29,7 +23,7 @@ const AuthContext = createContext<AuthProviderType>({ isAuthenticated: () => { throw new Error("login function not implemented"); }, }); -export const AuthProvider = ({ children }) => { +export const AuthProvider: React.FC<BasicProp> = ({ children }) => { const dispatch = useAppDispatch() const navigate = useNavigate() const { username } = useAppSelector(state => state.user) @@ -75,7 +69,7 @@ export const AuthProvider = ({ children }) => { dispatch(setToken({ token: response.token, username })); navigate(DEVICE_URL); - }).catch((error) => { + }).catch(() => { // determine whether 500 or 401 err }); } @@ -102,7 +96,7 @@ export const AuthProvider = ({ children }) => { // TODO: purge other information } - const value = useMemo( + const value = useMemo<AuthProviderType>( () => ({ login: executeLogin, logout, diff --git a/react-ui/src/shared/provider/menu/menu.provider.tsx b/react-ui/src/shared/provider/menu/menu.provider.tsx index 3d3aebc4a..0cfc61f68 100644 --- a/react-ui/src/shared/provider/menu/menu.provider.tsx +++ b/react-ui/src/shared/provider/menu/menu.provider.tsx @@ -1,6 +1,9 @@ -import { IconDefinition } from "@fortawesome/free-solid-svg-icons"; +import { faRightFromBracket, IconDefinition } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { BasicProp } from "@helper/interfaces"; +import { useAuth } from "@provider/auth.provider"; import React, { createContext, useContext, useEffect, useMemo, useState } from "react"; +import { useTranslation } from "react-i18next"; import './menu.provider.scss'; interface MenuSubscription { @@ -31,21 +34,38 @@ interface SubscriptionValue { } -export const MenuProvider = ({ children }) => { +export const MenuProvider: React.FC<BasicProp> = ({ children }) => { const [menuPosition, setMenuPosition] = useState({ top: 0, left: 0 }); const [showMenu, setShowMenu] = useState(false); const [subscribedTargets, setSubscribedTargets] = useState<Array<SubscriptionValue>>([]) + const { logout } = useAuth() - const [menuItems, setMenuItems] = useState<Array<SubscriptionValue>>([]); + const { t } = useTranslation('common') + + const globalMenuItems: SubscriptionValue = { + actions: [{ + key: t('global.menu_item.logout'), + icon: faRightFromBracket, + action: logout + }], + target: document.getRootNode() as HTMLElement + } + + const [menuItems, _setMenuItems] = useState<Array<SubscriptionValue>>([]); const [clickedHtmlElement, setClickedHtmlElement] = useState<HTMLElement>() - const handleContextMenu = (event) => { + + const setMenuItems = (menuItems: Array<SubscriptionValue>) => { + _setMenuItems([...menuItems, globalMenuItems]) + } + + const handleContextMenu = (event: React.MouseEvent<HTMLElement>) => { event.preventDefault(); - const targets = subscribedTargets.filter(({ target }) => target.contains(event.target)) + const targets = subscribedTargets.filter(({ target }) => target.contains(event.target as HTMLElement)) setMenuPosition({ top: event.pageY, left: event.pageX }); setMenuItems(targets) - setClickedHtmlElement(event.target) + setClickedHtmlElement(event.target as HTMLElement) displayMenu() }; @@ -95,11 +115,12 @@ export const MenuProvider = ({ children }) => { { menuItems.map((item, i) => { // for each new action array (for each new subscription entity) draw a seperator line except the last action - const seperator = i < menuItems.length - 1 ? (<li><hr className="dropdown-divider"></hr></li>) : (<React.Fragment key={i}></React.Fragment>) + const deviderHTML = (<li key={i}><hr className="dropdown-divider"></hr></li>); + const seperator = i < menuItems.length - 1 ? deviderHTML : (<React.Fragment key={i}></React.Fragment>) const dropdownItems = item.actions.map(({ action, icon, key }) => { - const disabled = !(clickedHtmlElement instanceof HTMLElement) || !clickedHtmlElement?.textContent + const disabled = !(clickedHtmlElement instanceof HTMLElement) return ( <button className="menu-button dropdown-item" key={key + " " + i} disabled={disabled} onClick={() => action(clickedHtmlElement)}> diff --git a/react-ui/src/shared/provider/utils.provider.tsx b/react-ui/src/shared/provider/utils.provider.tsx index e9a83034e..6f6775343 100644 --- a/react-ui/src/shared/provider/utils.provider.tsx +++ b/react-ui/src/shared/provider/utils.provider.tsx @@ -1,4 +1,5 @@ -import { createContext, useContext, useMemo } from "react"; +import { BasicProp } from "@helper/interfaces"; +import React, { createContext, useContext, useMemo } from "react"; import { useTranslation } from "react-i18next"; import { toast } from "react-toastify"; @@ -12,7 +13,7 @@ const UtilsContext = createContext<UtilsProviderType>({ } }) -export const UtilsProvider = ({ children }) => { +export const UtilsProvider: React.FC<BasicProp> = ({ children }) => { const { t } = useTranslation('common'); const value = useMemo<UtilsProviderType>(() => { diff --git a/react-ui/src/shared/utils/yang_parser/go/.gitignore b/react-ui/src/shared/utils/yang_parser/go/.gitignore deleted file mode 100755 index 4be9e9e37..000000000 --- a/react-ui/src/shared/utils/yang_parser/go/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/openconfig \ No newline at end of file diff --git a/react-ui/src/shared/utils/yang_parser/go/assets/wasm_exec.d.ts.generated b/react-ui/src/shared/utils/yang_parser/go/assets/wasm_exec.d.ts.generated deleted file mode 100755 index ab9e80009..000000000 --- a/react-ui/src/shared/utils/yang_parser/go/assets/wasm_exec.d.ts.generated +++ /dev/null @@ -1,18 +0,0 @@ -declare namespace globalThis { - let fs: FileSystem - let process: Process - let crypto: Crypto - let TextEncoder: { new (encoding: string): TextEncoder } - let TextDecoder: { new (encoding: string): TextDecoder } - let Go: typeof Go -} - -interface Go { - argv: string[] - env: { [envKey: string]: string } - exit: (code: number) => void - importObject: WebAssembly.Imports - exited: boolean - mem: DataView - run(instance: WebAssembly.Instance): Promise<void> -} diff --git a/react-ui/src/shared/utils/yang_parser/go/go.env b/react-ui/src/shared/utils/yang_parser/go/go.env deleted file mode 100755 index 6a9eb46ee..000000000 --- a/react-ui/src/shared/utils/yang_parser/go/go.env +++ /dev/null @@ -1 +0,0 @@ -GOPROXY="direct" \ No newline at end of file diff --git a/react-ui/src/shared/utils/yang_parser/go/go.mod b/react-ui/src/shared/utils/yang_parser/go/go.mod deleted file mode 100755 index cd6a54898..000000000 --- a/react-ui/src/shared/utils/yang_parser/go/go.mod +++ /dev/null @@ -1,18 +0,0 @@ -module yang_parser - -go 1.21.0 - -require ( - github.com/golang/glog v1.2.2 // indirect - github.com/google/go-cmp v0.6.0 // indirect - github.com/kylelemons/godebug v1.1.0 // indirect - github.com/openconfig/gnmi v0.11.0 // indirect - github.com/openconfig/goyang v1.6.0 // indirect - github.com/openconfig/ygot v0.29.20 // indirect - golang.org/x/net v0.28.0 // indirect - golang.org/x/sys v0.24.0 // indirect - golang.org/x/text v0.17.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 // indirect - google.golang.org/grpc v1.67.1 // indirect - google.golang.org/protobuf v1.35.1 // indirect -) diff --git a/react-ui/src/shared/utils/yang_parser/go/go.sum b/react-ui/src/shared/utils/yang_parser/go/go.sum deleted file mode 100755 index fe012ebb7..000000000 --- a/react-ui/src/shared/utils/yang_parser/go/go.sum +++ /dev/null @@ -1,171 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY= -github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= -github.com/openconfig/gnmi v0.10.0/go.mod h1:Y9os75GmSkhHw2wX8sMsxfI7qRGAEcDh8NTa5a8vj6E= -github.com/openconfig/gnmi v0.11.0 h1:H7pLIb/o3xObu3+x0Fv9DCK7TH3FUh7mNwbYe+34hFw= -github.com/openconfig/gnmi v0.11.0/go.mod h1:9oJSQPPCpNvfMRj8e4ZoLVAw4wL8HyxXbiDlyuexCGU= -github.com/openconfig/goyang v0.0.0-20200115183954-d0a48929f0ea/go.mod h1:dhXaV0JgHJzdrHi2l+w0fZrwArtXL7jEFoiqLEdmkvU= -github.com/openconfig/goyang v1.6.0 h1:JjnPbLY1/y28VyTO67LsEV0TaLWNiZyDcsppGq4F4is= -github.com/openconfig/goyang v1.6.0/go.mod h1:sdNZi/wdTZyLNBNfgLzmmbi7kISm7FskMDKKzMY+x1M= -github.com/openconfig/grpctunnel v0.0.0-20220819142823-6f5422b8ca70/go.mod h1:OmTWe7RyZj2CIzIgy4ovEBzCLBJzRvWSZmn7u02U9gU= -github.com/openconfig/ygot v0.6.0/go.mod h1:o30svNf7O0xK+R35tlx95odkDmZWS9JyWWQSmIhqwAs= -github.com/openconfig/ygot v0.29.20 h1:XHLpwCN91QuKc2LAvnEqtCmH8OuxgLlErDhrdl2mJw8= -github.com/openconfig/ygot v0.29.20/go.mod h1:K8HbrPm/v8/emtGQ9+RsJXx6UPKC5JzS/FqK7pN+tMo= -github.com/pborman/getopt v1.1.0/go.mod h1:FxXoW1Re00sQG/+KIkuSqRL/LwQgSkv7uyac+STFsbk= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/protocolbuffers/txtpbfmt v0.0.0-20220608084003-fc78c767cd6a/go.mod h1:KjY0wibdYKc4DYkerHSbguaf3JeIPGhNJBp2BNiFH78= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= -golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= -golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= -golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20210811021853-ddbe55d93216/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 h1:zciRKQ4kBpFgpfC5QQCVtnnNAcLIqweL7plyZRQHVpI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= -google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= -google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/react-ui/src/shared/utils/yang_parser/go/yang_parser.go b/react-ui/src/shared/utils/yang_parser/go/yang_parser.go deleted file mode 100755 index 4314d0eb1..000000000 --- a/react-ui/src/shared/utils/yang_parser/go/yang_parser.go +++ /dev/null @@ -1,39 +0,0 @@ -package main - -import ( - "fmt" - "syscall/js" - "yang_parser/openconfig" - - "github.com/openconfig/ygot/ygot" -) - -func ParseYANGFile(this js.Value, p []js.Value) interface{} { - device := &openconfig.Device{} - - yangContent := p[0].String() - - if err := openconfig.Unmarshal([]byte(yangContent), device); err != nil { - panic(fmt.Sprintf("Cannot unmarshal JSON: %v", err)) - } - - json, err := ygot.EmitJSON(device, &ygot.EmitJSONConfig{ - Format: ygot.RFC7951, - Indent: " ", - RFC7951Config: &ygot.RFC7951JSONConfig{ - AppendModuleName: true, - }, - }) - - if err != nil { - panic(fmt.Sprintf("Cannot emit json: %v ", err)) - } - - return js.ValueOf(string(json)) -} - -func main() { - js.Global().Set("parseYANG", js.FuncOf(ParseYANGFile)) - - select {} -} diff --git a/react-ui/src/shared/utils/yang_parser/yang_parser.ts b/react-ui/src/shared/utils/yang_parser/yang_parser.ts deleted file mode 100755 index d6ca3201c..000000000 --- a/react-ui/src/shared/utils/yang_parser/yang_parser.ts +++ /dev/null @@ -1,38 +0,0 @@ -import '@build/wasm/wasm_exec.js' - -import { useEffect, useRef } from 'react' - -export const useYangParser = () => { - const wasm = useRef<Promise<ArrayBuffer>>() - const go = useRef(new Go()) - - useEffect(() => { - wasm.current = fetch('/build/wasm/yang_parser.wasm') - .then((response) => response.arrayBuffer()) - .then((bytes) => bytes) - }, []) - - /** - * Parses yang model that the backend responses to a JSON object - * - * @param uniformYang - * @returns - */ - const parse = async (modifiedYang: string): Promise<JSON> => { - try { - const bytes = await wasm.current - const { instance } = await WebAssembly.instantiate(bytes!, go.current.importObject) - go.current.run(instance) - - const jsonString = parseYANG(modifiedYang) - return JSON.parse(jsonString) - } catch (err) { - console.log('Error' + err) - return Promise.reject(err) - } - } - - return { - parse, - } -} diff --git a/react-ui/tsconfig.json b/react-ui/tsconfig.json index 10cd20012..c679b7100 100755 --- a/react-ui/tsconfig.json +++ b/react-ui/tsconfig.json @@ -45,5 +45,4 @@ "scripts/test.ts", "src/shared/utils/yang_parser/go/assets/wasm_exec.d.ts.generated" ] - //"references": [{ "path": "./tsconfig.node.json" }] } diff --git a/react-ui/vite.config.mjs b/react-ui/vite.config.mjs index 3bf58a286..fefafe05a 100755 --- a/react-ui/vite.config.mjs +++ b/react-ui/vite.config.mjs @@ -1,13 +1,12 @@ import react from '@vitejs/plugin-react' import { defineConfig } from 'vite' -import topLevelAwait from 'vite-plugin-top-level-await' -import wasm from 'vite-plugin-wasm' export default defineConfig({ - plugins: [react(), wasm(), topLevelAwait()], + plugins: [react()], build: { sourcemap: true, }, + // develop server server: { port: 3000, proxy: { diff --git a/react-ui/yarn.lock b/react-ui/yarn.lock index d60413ed6..c8a068d68 100755 --- a/react-ui/yarn.lock +++ b/react-ui/yarn.lock @@ -2009,11 +2009,6 @@ "@rollup/pluginutils" "^3.1.0" magic-string "^0.25.7" -"@rollup/plugin-virtual@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-virtual/-/plugin-virtual-3.0.2.tgz#17e17eeecb4c9fa1c0a6e72c9e5f66382fddbb82" - integrity sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A== - "@rollup/pluginutils@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" @@ -2253,80 +2248,6 @@ "@svgr/plugin-svgo" "^5.5.0" loader-utils "^2.0.0" -"@swc/core-darwin-arm64@1.7.36": - version "1.7.36" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.36.tgz#f50ecd4db72a8759c67c1eb93f942c6331e6cfe9" - integrity sha512-8vDczXzCgv3ceTPhEivlpGprN44YlrCK1nbfU9g2TrhV/Aiqi09W/eM5zLesdoM1Z3mJl492gc/8nlTkpDdusw== - -"@swc/core-darwin-x64@1.7.36": - version "1.7.36" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.7.36.tgz#14c7e5c0a9bee4ffcf05a5a62caa179ee01a68c2" - integrity sha512-Pa2Gao7+Wf5m3SsK4abKRtd48AtoUnJInvaC3d077swBfgZjbjUbQvcpdc2dOeQtWwo49rFqUZJonMsL0jnPgQ== - -"@swc/core-linux-arm-gnueabihf@1.7.36": - version "1.7.36" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.36.tgz#19d9a66606ae9fc09f3e087a1ef49d75ffd769e7" - integrity sha512-3YsMWd7V+WZEjbfBnLkkz/olcRBa8nyoK0iIOnNARJBMcYaJxjkJSMZpmSojCnIVwvjA1N83CPAbUL+W+fCnHg== - -"@swc/core-linux-arm64-gnu@1.7.36": - version "1.7.36" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.36.tgz#9834e507e75d1689913fc56d401d5921eb75be67" - integrity sha512-lqM3aBB7kJazJYOwHeA5OGNLqXoQPZ/76b3dV+XcjN1GhD0CcXz6mW5PRYVin6OSN1eKrKBKJjtDA1mqADDEvw== - -"@swc/core-linux-arm64-musl@1.7.36": - version "1.7.36" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.36.tgz#548abbec7581f06ab9f38bd6c289bd7fc9983452" - integrity sha512-bqei2YDzvUfG0pth5W2xJaj0eG4XWYk0d/NJ75vBX6bkIzK6dC8iuKQ41jOfUWonnrAs7rTDDJW0sTn/evvRdw== - -"@swc/core-linux-x64-gnu@1.7.36": - version "1.7.36" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.36.tgz#d2a4a8edcdb3b7646dade9783d6502d01ff9364c" - integrity sha512-03maXTUyaBjeCxlDltmdzHje1ryQt1C4OWmmNgSSRXjLb+GNnAenwOJMSrcvHP/aNClD2pwsFCnYKDGy+sYE6w== - -"@swc/core-linux-x64-musl@1.7.36": - version "1.7.36" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.36.tgz#ea4197cbcc23b1202cdbec82a05bee9b29aa341b" - integrity sha512-XXysqLkvjtQnXm1zHqLhy00UYPv/gk5OtwR732X+piNisnEbcJBqI8Qp9O7YvLWllRcoP8IMBGDWLGdGLSpViA== - -"@swc/core-win32-arm64-msvc@1.7.36": - version "1.7.36" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.36.tgz#1b100b809457d0ed5710956d7efb4fd0427dc2c8" - integrity sha512-k7+dmb13a/zPw+E4XYfPmLZFWJgcOcBRKIjYl9nQErtYsgsg3Ji6TBbsvJVETy23lNHyewZ17V5Vq6NzaG0hzg== - -"@swc/core-win32-ia32-msvc@1.7.36": - version "1.7.36" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.36.tgz#577e7f25a7a8496c16e9b14486cd849765bccba5" - integrity sha512-ridD3ay6YM2PEYHZXXFN+edYEv0FOynaqOBP+NSnGNHA35azItIjoIe+KNi4WltGtAjpKCHSpjGCNfna12wdYQ== - -"@swc/core-win32-x64-msvc@1.7.36": - version "1.7.36" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.36.tgz#f85ace043925a746ff40af2da1ff9ff9760525bb" - integrity sha512-j1z2Z1Ln9d0E3dHsPkC1K9XDh0ojhRPwV+GfRTu4D61PE+aYhYLvbJC6xPvL4/204QrStRS7eDu3m+BcDp3rgQ== - -"@swc/core@^1.7.0": - version "1.7.36" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.7.36.tgz#369b67cfe7be039dac2ab2180b44da8f2f8c2af0" - integrity sha512-bu7ymMX+LCJOSSrKank25Jaq66ymLVA9fOUuy4ck3/6rbXdLw+pIJPnIDKQ9uNcxww8KDxOuJk9Ui9pqR+aGFw== - dependencies: - "@swc/counter" "^0.1.3" - "@swc/types" "^0.1.13" - optionalDependencies: - "@swc/core-darwin-arm64" "1.7.36" - "@swc/core-darwin-x64" "1.7.36" - "@swc/core-linux-arm-gnueabihf" "1.7.36" - "@swc/core-linux-arm64-gnu" "1.7.36" - "@swc/core-linux-arm64-musl" "1.7.36" - "@swc/core-linux-x64-gnu" "1.7.36" - "@swc/core-linux-x64-musl" "1.7.36" - "@swc/core-win32-arm64-msvc" "1.7.36" - "@swc/core-win32-ia32-msvc" "1.7.36" - "@swc/core-win32-x64-msvc" "1.7.36" - -"@swc/counter@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" - integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== - "@swc/helpers@^0.5.0": version "0.5.12" resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.12.tgz#37aaca95284019eb5d2207101249435659709f4b" @@ -2334,13 +2255,6 @@ dependencies: tslib "^2.4.0" -"@swc/types@^0.1.13": - version "0.1.13" - resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.13.tgz#441734f8bfa6e9e738f1c68e98be6da282ecc7db" - integrity sha512-JL7eeCk6zWCbiYQg2xQSdLXQJl8Qoc9rXmG2cEKvHe3CKwMHwHGpfOb8frzNLmbycOo6I51qxnLnn9ESf4I20Q== - dependencies: - "@swc/counter" "^0.1.3" - "@testing-library/jest-dom@^6.4.8": version "6.4.8" resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.4.8.tgz#9c435742b20c6183d4e7034f2b329d562c079daa" @@ -8993,6 +8907,13 @@ react-dom@^18.3.1: loose-envify "^1.1.0" scheduler "^0.23.2" +react-error-boundary@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-4.1.2.tgz#bc750ad962edb8b135d6ae922c046051eb58f289" + integrity sha512-GQDxZ5Jd+Aq/qUxbCm1UtzmL/s++V7zKgE8yMktJiCQXCCFZnMZh9ng+6/Ne6PjNSXH0L9CjeOEREfRnq6Duag== + dependencies: + "@babel/runtime" "^7.12.5" + react-error-overlay@^6.0.11: version "6.0.11" resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" @@ -10882,11 +10803,6 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" - integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== - uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" @@ -10921,20 +10837,6 @@ vite-bundle-visualizer@^1.2.1: rollup-plugin-visualizer "^5.11.0" tmp "^0.2.1" -vite-plugin-top-level-await@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.4.4.tgz#4900e06bfb7179de20aaa9b4730d04022a9e259e" - integrity sha512-QyxQbvcMkgt+kDb12m2P8Ed35Sp6nXP+l8ptGrnHV9zgYDUpraO0CPdlqLSeBqvY2DToR52nutDG7mIHuysdiw== - dependencies: - "@rollup/plugin-virtual" "^3.0.2" - "@swc/core" "^1.7.0" - uuid "^10.0.0" - -vite-plugin-wasm@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/vite-plugin-wasm/-/vite-plugin-wasm-3.3.0.tgz#2908ef2529bf8f33f4e549c8c6fda26ad273ca15" - integrity sha512-tVhz6w+W9MVsOCHzxo6SSMSswCeIw4HTrXEi6qL3IRzATl83jl09JVO1djBqPSwfjgnpVHNLYcaMbaDX5WB/pg== - vite@^5.4.9: version "5.4.9" resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.9.tgz#215c80cbebfd09ccbb9ceb8c0621391c9abdc19c" -- GitLab From a7add3dbf560a9c8c0810a15c001050f71b3b166 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@@stud.h-da.de> Date: Wed, 11 Dec 2024 00:19:55 +0100 Subject: [PATCH 41/44] update packages --- react-ui/package.json | 9 +- react-ui/yarn.lock | 4689 ++++++++++++++++++++--------------------- 2 files changed, 2260 insertions(+), 2438 deletions(-) diff --git a/react-ui/package.json b/react-ui/package.json index 22017e594..466870928 100755 --- a/react-ui/package.json +++ b/react-ui/package.json @@ -11,14 +11,13 @@ "@reduxjs/toolkit": "^2.2.4", "bootstrap": "^5.3.3", "dompurify": "^3.2.3", - "i18next": "^23.11.5", + "i18next": "^24.0.5", "jwt-decode": "^4.0.0", "react": "^18.3.1", "react-bootstrap": "^2.10.2", "react-dom": "^18.3.1", "react-error-boundary": "^4.1.2", "react-i18next": "^15.0.0", - "react-json-view": "^1.21.3", "react-redux": "^9.1.2", "react-router-dom": "^6.23.1", "react-scripts": "5.0.1", @@ -58,7 +57,7 @@ "proxy": "http://localhost:55055", "devDependencies": { "@babel/runtime": "^7.21.5", - "@rtk-query/codegen-openapi": "^1.2.0", + "@rtk-query/codegen-openapi": "^2.0.0", "@testing-library/jest-dom": "^6.4.8", "@testing-library/react": "^16.0.0", "@testing-library/user-event": "^14.5.2", @@ -78,11 +77,11 @@ "eslint-plugin-react-refresh": "^0.4.9", "globals": "^15.9.0", "prettier": "^3.3.3", - "sass": "1.77.6", + "sass": "1.82.0", "sass-embedded": "^1.80.6", "typescript": "^5.5.3", "typescript-eslint": "^8.0.1", - "vite": "^5.4.9", + "vite": "^6.0.3", "vite-bundle-visualizer": "^1.2.1" } } diff --git a/react-ui/yarn.lock b/react-ui/yarn.lock index c8a068d68..d054db6d6 100755 --- a/react-ui/yarn.lock +++ b/react-ui/yarn.lock @@ -3,9 +3,9 @@ "@adobe/css-tools@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.4.0.tgz#728c484f4e10df03d5a3acd0d8adcbbebff8ad63" - integrity sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ== + version "4.4.1" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.4.1.tgz#2447a230bfe072c1659e6815129c03cf170710e3" + integrity sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ== "@alloc/quick-lru@^5.2.0": version "5.2.0" @@ -61,34 +61,35 @@ ajv-draft-04 "^1.0.0" call-me-maybe "^1.0.1" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.8.3": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" - integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0", "@babel/code-frame@^7.26.2", "@babel/code-frame@^7.8.3": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" + integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== dependencies: - "@babel/highlight" "^7.24.7" + "@babel/helper-validator-identifier" "^7.25.9" + js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.2": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.2.tgz#e41928bd33475305c586f6acbbb7e3ade7a6f7f5" - integrity sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.9", "@babel/compat-data@^7.26.0": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.3.tgz#99488264a56b2aded63983abd6a417f03b92ed02" + integrity sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g== -"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.24.5", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.2.tgz#ed8eec275118d7613e77a352894cd12ded8eba77" - integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== +"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.26.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40" + integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.25.0" - "@babel/helper-compilation-targets" "^7.25.2" - "@babel/helper-module-transforms" "^7.25.2" - "@babel/helpers" "^7.25.0" - "@babel/parser" "^7.25.0" - "@babel/template" "^7.25.0" - "@babel/traverse" "^7.25.2" - "@babel/types" "^7.25.2" + "@babel/code-frame" "^7.26.0" + "@babel/generator" "^7.26.0" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-module-transforms" "^7.26.0" + "@babel/helpers" "^7.26.0" + "@babel/parser" "^7.26.0" + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.26.0" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -96,76 +97,69 @@ semver "^6.3.1" "@babel/eslint-parser@^7.16.3": - version "7.25.1" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.25.1.tgz#469cee4bd18a88ff3edbdfbd227bd20e82aa9b82" - integrity sha512-Y956ghgTT4j7rKesabkh5WeqgSFZVFwaPR0IWFm7KFHFmmJ4afbG49SmfW4S+GyRPx0Dy5jxEWA5t0rpxfElWg== + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.25.9.tgz#603c68a63078796527bc9d0833f5e52dd5f9224c" + integrity sha512-5UXfgpK0j0Xr/xIdgdLEhOFxaDZ0bRPWJJchRpqOSur/3rZoPbqqki5mm0p4NE2cs28krBEiSM2MB7//afRSQQ== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.25.0", "@babel/generator@^7.7.2": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.0.tgz#f858ddfa984350bc3d3b7f125073c9af6988f18e" - integrity sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw== +"@babel/generator@^7.26.0", "@babel/generator@^7.26.3", "@babel/generator@^7.7.2": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.3.tgz#ab8d4360544a425c90c248df7059881f4b2ce019" + integrity sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ== dependencies: - "@babel/types" "^7.25.0" + "@babel/parser" "^7.26.3" + "@babel/types" "^7.26.3" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz#5373c7bc8366b12a033b4be1ac13a206c6656aab" - integrity sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg== - dependencies: - "@babel/types" "^7.24.7" + jsesc "^3.0.2" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz#37d66feb012024f2422b762b9b2a7cfe27c7fba3" - integrity sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA== +"@babel/helper-annotate-as-pure@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4" + integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" + "@babel/types" "^7.25.9" -"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7", "@babel/helper-compilation-targets@^7.24.8", "@babel/helper-compilation-targets@^7.25.2": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz#e1d9410a90974a3a5a66e84ff55ef62e3c02d06c" - integrity sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw== +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875" + integrity sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ== dependencies: - "@babel/compat-data" "^7.25.2" - "@babel/helper-validator-option" "^7.24.8" - browserslist "^4.23.1" + "@babel/compat-data" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.7", "@babel/helper-create-class-features-plugin@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz#a109bf9c3d58dfed83aaf42e85633c89f43a6253" - integrity sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-member-expression-to-functions" "^7.24.8" - "@babel/helper-optimise-call-expression" "^7.24.7" - "@babel/helper-replace-supers" "^7.25.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - "@babel/traverse" "^7.25.0" +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz#7644147706bb90ff613297d49ed5266bde729f83" + integrity sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-member-expression-to-functions" "^7.25.9" + "@babel/helper-optimise-call-expression" "^7.25.9" + "@babel/helper-replace-supers" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/traverse" "^7.25.9" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.24.7", "@babel/helper-create-regexp-features-plugin@^7.25.0": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz#24c75974ed74183797ffd5f134169316cd1808d9" - integrity sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.25.9": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz#5169756ecbe1d95f7866b90bb555b022595302a0" + integrity sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong== dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - regexpu-core "^5.3.1" + "@babel/helper-annotate-as-pure" "^7.25.9" + regexpu-core "^6.2.0" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.6.2": - version "0.6.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" - integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== +"@babel/helper-define-polyfill-provider@^0.6.2", "@babel/helper-define-polyfill-provider@^0.6.3": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz#f4f2792fae2ef382074bc2d713522cf24e6ddb21" + integrity sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg== dependencies: "@babel/helper-compilation-targets" "^7.22.6" "@babel/helper-plugin-utils" "^7.22.5" @@ -173,165 +167,146 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-member-expression-to-functions@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz#6155e079c913357d24a4c20480db7c712a5c3fb6" - integrity sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA== - dependencies: - "@babel/traverse" "^7.24.8" - "@babel/types" "^7.24.8" - -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" - integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-module-transforms@^7.24.7", "@babel/helper-module-transforms@^7.24.8", "@babel/helper-module-transforms@^7.25.0", "@babel/helper-module-transforms@^7.25.2": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz#ee713c29768100f2776edf04d4eb23b8d27a66e6" - integrity sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== - dependencies: - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-simple-access" "^7.24.7" - "@babel/helper-validator-identifier" "^7.24.7" - "@babel/traverse" "^7.25.2" - -"@babel/helper-optimise-call-expression@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz#8b0a0456c92f6b323d27cfd00d1d664e76692a0f" - integrity sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.24.8", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878" - integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== - -"@babel/helper-remap-async-to-generator@^7.24.7", "@babel/helper-remap-async-to-generator@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz#d2f0fbba059a42d68e5e378feaf181ef6055365e" - integrity sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-wrap-function" "^7.25.0" - "@babel/traverse" "^7.25.0" - -"@babel/helper-replace-supers@^7.24.7", "@babel/helper-replace-supers@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz#ff44deac1c9f619523fe2ca1fd650773792000a9" - integrity sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.24.8" - "@babel/helper-optimise-call-expression" "^7.24.7" - "@babel/traverse" "^7.25.0" - -"@babel/helper-simple-access@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" - integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz#5f8fa83b69ed5c27adc56044f8be2b3ea96669d9" - integrity sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-string-parser@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" - integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== - -"@babel/helper-validator-identifier@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" - integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== - -"@babel/helper-validator-option@^7.24.7", "@babel/helper-validator-option@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" - integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== - -"@babel/helper-wrap-function@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz#dab12f0f593d6ca48c0062c28bcfb14ebe812f81" - integrity sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ== - dependencies: - "@babel/template" "^7.25.0" - "@babel/traverse" "^7.25.0" - "@babel/types" "^7.25.0" - -"@babel/helpers@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.0.tgz#e69beb7841cb93a6505531ede34f34e6a073650a" - integrity sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw== - dependencies: - "@babel/template" "^7.25.0" - "@babel/types" "^7.25.0" - -"@babel/highlight@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" - integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.7" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" +"@babel/helper-member-expression-to-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz#9dfffe46f727005a5ea29051ac835fb735e4c1a3" + integrity sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" + integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-module-transforms@^7.25.9", "@babel/helper-module-transforms@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" + integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== + dependencies: + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/helper-optimise-call-expression@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz#3324ae50bae7e2ab3c33f60c9a877b6a0146b54e" + integrity sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ== + dependencies: + "@babel/types" "^7.25.9" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.8.0": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46" + integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw== + +"@babel/helper-remap-async-to-generator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz#e53956ab3d5b9fb88be04b3e2f31b523afd34b92" + integrity sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-wrap-function" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/helper-replace-supers@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz#ba447224798c3da3f8713fc272b145e33da6a5c5" + integrity sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.25.9" + "@babel/helper-optimise-call-expression" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz#0b2e1b62d560d6b1954893fd2b705dc17c91f0c9" + integrity sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-string-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" + integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== + +"@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== + +"@babel/helper-validator-option@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" + integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== + +"@babel/helper-wrap-function@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz#d99dfd595312e6c894bd7d237470025c85eea9d0" + integrity sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g== + dependencies: + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helpers@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.0.tgz#30e621f1eba5aa45fe6f4868d2e9154d884119a4" + integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw== + dependencies: + "@babel/template" "^7.25.9" + "@babel/types" "^7.26.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.25.0", "@babel/parser@^7.25.3": - version "7.25.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.3.tgz#91fb126768d944966263f0657ab222a642b82065" - integrity sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.3": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.3.tgz#8c51c5db6ddf08134af1ddbacf16aaab48bac234" + integrity sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA== dependencies: - "@babel/types" "^7.25.2" + "@babel/types" "^7.26.3" -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.3": - version "7.25.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz#dca427b45a6c0f5c095a1c639dfe2476a3daba7f" - integrity sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz#cc2e53ebf0a0340777fff5ed521943e253b4d8fe" + integrity sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/traverse" "^7.25.3" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/traverse" "^7.25.9" -"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz#cd0c583e01369ef51676bdb3d7b603e17d2b3f73" - integrity sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA== +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz#af9e4fb63ccb8abcb92375b2fcfe36b60c774d30" + integrity sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz#749bde80356b295390954643de7635e0dffabe73" - integrity sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz#e8dc26fcd616e6c5bf2bd0d5a2c151d4f92a9137" + integrity sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz#e4eabdd5109acc399b38d7999b2ef66fc2022f89" - integrity sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz#807a667f9158acac6f6164b4beb85ad9ebc9e1d1" + integrity sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - "@babel/plugin-transform-optional-chaining" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/plugin-transform-optional-chaining" "^7.25.9" -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz#3a82a70e7cb7294ad2559465ebcb871dfbf078fb" - integrity sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw== +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz#de7093f1e7deaf68eadd7cc6b07f2ab82543269e" + integrity sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/traverse" "^7.25.0" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/traverse" "^7.25.9" "@babel/plugin-proposal-class-properties@^7.16.0": version "7.18.6" @@ -342,13 +317,13 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-decorators@^7.16.4": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.7.tgz#7e2dcfeda4a42596b57c4c9de1f5176bbfc532e3" - integrity sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ== + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.9.tgz#8680707f943d1a3da2cd66b948179920f097e254" + integrity sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-decorators" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-syntax-decorators" "^7.25.9" "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0": version "7.18.6" @@ -402,7 +377,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": +"@babel/plugin-syntax-class-properties@^7.12.13": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== @@ -416,49 +391,35 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-decorators@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.7.tgz#e4f8a0a8778ccec669611cd5aed1ed8e6e3a6fcf" - integrity sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== +"@babel/plugin-syntax-decorators@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz#986b4ca8b7b5df3f67cee889cedeffc2e2bf14b3" + integrity sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-flow@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz#d1759e84dd4b437cf9fae69b4c06c41d7625bfb7" - integrity sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw== +"@babel/plugin-syntax-flow@^7.25.9": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.26.0.tgz#96507595c21b45fccfc2bc758d5c45452e6164fa" + integrity sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-import-assertions@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz#2a0b406b5871a20a841240586b1300ce2088a778" - integrity sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg== +"@babel/plugin-syntax-import-assertions@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz#620412405058efa56e4a564903b79355020f445f" + integrity sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-import-attributes@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz#b4f9ea95a79e6912480c4b626739f86a076624ca" - integrity sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A== +"@babel/plugin-syntax-import-attributes@^7.24.7", "@babel/plugin-syntax-import-attributes@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" + integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": +"@babel/plugin-syntax-import-meta@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== @@ -472,14 +433,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz#39a1fa4a7e3d3d7f34e2acc6be585b718d30e02d" - integrity sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ== +"@babel/plugin-syntax-jsx@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" + integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== @@ -493,7 +454,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": +"@babel/plugin-syntax-numeric-separator@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== @@ -528,19 +489,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": +"@babel/plugin-syntax-top-level-await@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.24.7", "@babel/plugin-syntax-typescript@^7.7.2": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz#58d458271b4d3b6bb27ee6ac9525acbb259bad1c" - integrity sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA== +"@babel/plugin-syntax-typescript@^7.25.9", "@babel/plugin-syntax-typescript@^7.7.2": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399" + integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" @@ -550,571 +511,551 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz#4f6886c11e423bd69f3ce51dbf42424a5f275514" - integrity sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ== +"@babel/plugin-transform-arrow-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz#7821d4410bee5daaadbb4cdd9a6649704e176845" + integrity sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-async-generator-functions@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz#b785cf35d73437f6276b1e30439a57a50747bddf" - integrity sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q== +"@babel/plugin-transform-async-generator-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz#1b18530b077d18a407c494eb3d1d72da505283a2" + integrity sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-remap-async-to-generator" "^7.25.0" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/traverse" "^7.25.0" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-remap-async-to-generator" "^7.25.9" + "@babel/traverse" "^7.25.9" -"@babel/plugin-transform-async-to-generator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz#72a3af6c451d575842a7e9b5a02863414355bdcc" - integrity sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA== +"@babel/plugin-transform-async-to-generator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz#c80008dacae51482793e5a9c08b39a5be7e12d71" + integrity sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ== dependencies: - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-remap-async-to-generator" "^7.24.7" + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-remap-async-to-generator" "^7.25.9" -"@babel/plugin-transform-block-scoped-functions@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz#a4251d98ea0c0f399dafe1a35801eaba455bbf1f" - integrity sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ== +"@babel/plugin-transform-block-scoped-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz#5700691dbd7abb93de300ca7be94203764fce458" + integrity sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-block-scoping@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz#23a6ed92e6b006d26b1869b1c91d1b917c2ea2ac" - integrity sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ== +"@babel/plugin-transform-block-scoping@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz#c33665e46b06759c93687ca0f84395b80c0473a1" + integrity sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-class-properties@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz#256879467b57b0b68c7ddfc5b76584f398cd6834" - integrity sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w== +"@babel/plugin-transform-class-properties@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz#a8ce84fedb9ad512549984101fa84080a9f5f51f" + integrity sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-class-static-block@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz#c82027ebb7010bc33c116d4b5044fbbf8c05484d" - integrity sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-transform-classes@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz#63122366527d88e0ef61b612554fe3f8c793991e" - integrity sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-compilation-targets" "^7.24.8" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-replace-supers" "^7.25.0" - "@babel/traverse" "^7.25.0" +"@babel/plugin-transform-class-static-block@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz#6c8da219f4eb15cae9834ec4348ff8e9e09664a0" + integrity sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-classes@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz#7152457f7880b593a63ade8a861e6e26a4469f52" + integrity sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-replace-supers" "^7.25.9" + "@babel/traverse" "^7.25.9" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz#4cab3214e80bc71fae3853238d13d097b004c707" - integrity sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ== +"@babel/plugin-transform-computed-properties@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz#db36492c78460e534b8852b1d5befe3c923ef10b" + integrity sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/template" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/template" "^7.25.9" -"@babel/plugin-transform-destructuring@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz#c828e814dbe42a2718a838c2a2e16a408e055550" - integrity sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ== +"@babel/plugin-transform-destructuring@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz#966ea2595c498224340883602d3cfd7a0c79cea1" + integrity sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-dotall-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz#5f8bf8a680f2116a7207e16288a5f974ad47a7a0" - integrity sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw== +"@babel/plugin-transform-dotall-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz#bad7945dd07734ca52fe3ad4e872b40ed09bb09a" + integrity sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-duplicate-keys@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz#dd20102897c9a2324e5adfffb67ff3610359a8ee" - integrity sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw== +"@babel/plugin-transform-duplicate-keys@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz#8850ddf57dce2aebb4394bb434a7598031059e6d" + integrity sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz#809af7e3339466b49c034c683964ee8afb3e2604" - integrity sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz#6f7259b4de127721a08f1e5165b852fcaa696d31" + integrity sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.0" - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-dynamic-import@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz#4d8b95e3bae2b037673091aa09cd33fecd6419f4" - integrity sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg== +"@babel/plugin-transform-dynamic-import@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz#23e917de63ed23c6600c5dd06d94669dce79f7b8" + integrity sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-exponentiation-operator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz#b629ee22645f412024297d5245bce425c31f9b0d" - integrity sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ== +"@babel/plugin-transform-exponentiation-operator@^7.25.9": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz#e29f01b6de302c7c2c794277a48f04a9ca7f03bc" + integrity sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-export-namespace-from@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz#176d52d8d8ed516aeae7013ee9556d540c53f197" - integrity sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA== +"@babel/plugin-transform-export-namespace-from@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz#90745fe55053394f554e40584cda81f2c8a402a2" + integrity sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-flow-strip-types@^7.16.0": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.2.tgz#b3aa251db44959b7a7c82abcd6b4225dec7d2258" - integrity sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg== + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.9.tgz#85879b42a8f5948fd6317069978e98f23ef8aec1" + integrity sha512-/VVukELzPDdci7UUsWQaSkhgnjIWXnIyRpM02ldxaVoFK96c41So8JcKT3m0gYjyv7j5FNPGS5vfELrWalkbDA== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/plugin-syntax-flow" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-syntax-flow" "^7.25.9" -"@babel/plugin-transform-for-of@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz#f25b33f72df1d8be76399e1b8f3f9d366eb5bc70" - integrity sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g== +"@babel/plugin-transform-for-of@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz#4bdc7d42a213397905d89f02350c5267866d5755" + integrity sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" -"@babel/plugin-transform-function-name@^7.25.1": - version "7.25.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz#b85e773097526c1a4fc4ba27322748643f26fc37" - integrity sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA== +"@babel/plugin-transform-function-name@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz#939d956e68a606661005bfd550c4fc2ef95f7b97" + integrity sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA== dependencies: - "@babel/helper-compilation-targets" "^7.24.8" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/traverse" "^7.25.1" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/traverse" "^7.25.9" -"@babel/plugin-transform-json-strings@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz#f3e9c37c0a373fee86e36880d45b3664cedaf73a" - integrity sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw== +"@babel/plugin-transform-json-strings@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz#c86db407cb827cded902a90c707d2781aaa89660" + integrity sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-literals@^7.25.2": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz#deb1ad14fc5490b9a65ed830e025bca849d8b5f3" - integrity sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw== +"@babel/plugin-transform-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz#1a1c6b4d4aa59bc4cad5b6b3a223a0abd685c9de" + integrity sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-logical-assignment-operators@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz#a58fb6eda16c9dc8f9ff1c7b1ba6deb7f4694cb0" - integrity sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw== +"@babel/plugin-transform-logical-assignment-operators@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz#b19441a8c39a2fda0902900b306ea05ae1055db7" + integrity sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-member-expression-literals@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz#3b4454fb0e302e18ba4945ba3246acb1248315df" - integrity sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw== +"@babel/plugin-transform-member-expression-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz#63dff19763ea64a31f5e6c20957e6a25e41ed5de" + integrity sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-modules-amd@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz#65090ed493c4a834976a3ca1cde776e6ccff32d7" - integrity sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg== +"@babel/plugin-transform-modules-amd@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz#49ba478f2295101544abd794486cd3088dddb6c5" + integrity sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw== dependencies: - "@babel/helper-module-transforms" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-modules-commonjs@^7.24.7", "@babel/plugin-transform-modules-commonjs@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz#ab6421e564b717cb475d6fff70ae7f103536ea3c" - integrity sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA== +"@babel/plugin-transform-modules-commonjs@^7.25.9": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz#8f011d44b20d02c3de44d8850d971d8497f981fb" + integrity sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ== dependencies: - "@babel/helper-module-transforms" "^7.24.8" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-module-transforms" "^7.26.0" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-modules-systemjs@^7.25.0": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz#8f46cdc5f9e5af74f3bd019485a6cbe59685ea33" - integrity sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw== +"@babel/plugin-transform-modules-systemjs@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz#8bd1b43836269e3d33307151a114bcf3ba6793f8" + integrity sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA== dependencies: - "@babel/helper-module-transforms" "^7.25.0" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-validator-identifier" "^7.24.7" - "@babel/traverse" "^7.25.0" + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" -"@babel/plugin-transform-modules-umd@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz#edd9f43ec549099620df7df24e7ba13b5c76efc8" - integrity sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A== +"@babel/plugin-transform-modules-umd@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz#6710079cdd7c694db36529a1e8411e49fcbf14c9" + integrity sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw== dependencies: - "@babel/helper-module-transforms" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz#9042e9b856bc6b3688c0c2e4060e9e10b1460923" - integrity sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g== +"@babel/plugin-transform-named-capturing-groups-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz#454990ae6cc22fd2a0fa60b3a2c6f63a38064e6a" + integrity sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-new-target@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz#31ff54c4e0555cc549d5816e4ab39241dfb6ab00" - integrity sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA== +"@babel/plugin-transform-new-target@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz#42e61711294b105c248336dcb04b77054ea8becd" + integrity sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-nullish-coalescing-operator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz#1de4534c590af9596f53d67f52a92f12db984120" - integrity sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ== +"@babel/plugin-transform-nullish-coalescing-operator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz#bcb1b0d9e948168102d5f7104375ca21c3266949" + integrity sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-numeric-separator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz#bea62b538c80605d8a0fac9b40f48e97efa7de63" - integrity sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA== +"@babel/plugin-transform-numeric-separator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz#bfed75866261a8b643468b0ccfd275f2033214a1" + integrity sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-object-rest-spread@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz#d13a2b93435aeb8a197e115221cab266ba6e55d6" - integrity sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q== +"@babel/plugin-transform-object-rest-spread@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz#0203725025074164808bcf1a2cfa90c652c99f18" + integrity sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg== dependencies: - "@babel/helper-compilation-targets" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.24.7" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-parameters" "^7.25.9" -"@babel/plugin-transform-object-super@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz#66eeaff7830bba945dd8989b632a40c04ed625be" - integrity sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg== +"@babel/plugin-transform-object-super@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz#385d5de135162933beb4a3d227a2b7e52bb4cf03" + integrity sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-replace-supers" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-replace-supers" "^7.25.9" -"@babel/plugin-transform-optional-catch-binding@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz#00eabd883d0dd6a60c1c557548785919b6e717b4" - integrity sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA== +"@babel/plugin-transform-optional-catch-binding@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz#10e70d96d52bb1f10c5caaac59ac545ea2ba7ff3" + integrity sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-optional-chaining@^7.24.7", "@babel/plugin-transform-optional-chaining@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz#bb02a67b60ff0406085c13d104c99a835cdf365d" - integrity sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw== +"@babel/plugin-transform-optional-chaining@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz#e142eb899d26ef715435f201ab6e139541eee7dd" + integrity sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" -"@babel/plugin-transform-parameters@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz#5881f0ae21018400e320fc7eb817e529d1254b68" - integrity sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA== +"@babel/plugin-transform-parameters@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz#b856842205b3e77e18b7a7a1b94958069c7ba257" + integrity sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-private-methods@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz#e6318746b2ae70a59d023d5cc1344a2ba7a75f5e" - integrity sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ== +"@babel/plugin-transform-private-methods@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz#847f4139263577526455d7d3223cd8bda51e3b57" + integrity sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-private-property-in-object@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz#4eec6bc701288c1fab5f72e6a4bbc9d67faca061" - integrity sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA== +"@babel/plugin-transform-private-property-in-object@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz#9c8b73e64e6cc3cbb2743633885a7dd2c385fe33" + integrity sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw== dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-create-class-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-property-literals@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz#f0d2ed8380dfbed949c42d4d790266525d63bbdc" - integrity sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA== +"@babel/plugin-transform-property-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz#d72d588bd88b0dec8b62e36f6fda91cedfe28e3f" + integrity sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-react-constant-elements@^7.12.1": - version "7.25.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.1.tgz#71a665ed16ce618067d05f4a98130207349d82ae" - integrity sha512-SLV/giH/V4SmloZ6Dt40HjTGTAIkxn33TVIHxNGNvo8ezMhrxBkzisj4op1KZYPIOHFLqhv60OHvX+YRu4xbmQ== + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.9.tgz#08a1de35a301929b60fdf2788a54b46cd8ecd0ef" + integrity sha512-Ncw2JFsJVuvfRsa2lSHiC55kETQVLSnsYGQ1JDDwkUeWGTL/8Tom8aLTnlqgoeuopWrbbGndrc9AlLYrIosrow== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz#9caff79836803bc666bcfe210aeb6626230c293b" - integrity sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg== +"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz#4b79746b59efa1f38c8695065a92a9f5afb24f7d" + integrity sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-react-jsx-development@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz#eaee12f15a93f6496d852509a850085e6361470b" - integrity sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ== +"@babel/plugin-transform-react-jsx-development@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz#8fd220a77dd139c07e25225a903b8be8c829e0d7" + integrity sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw== dependencies: - "@babel/plugin-transform-react-jsx" "^7.24.7" + "@babel/plugin-transform-react-jsx" "^7.25.9" -"@babel/plugin-transform-react-jsx-self@^7.24.5": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz#66bff0248ea0b549972e733516ffad577477bdab" - integrity sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw== +"@babel/plugin-transform-react-jsx-self@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz#c0b6cae9c1b73967f7f9eb2fca9536ba2fad2858" + integrity sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-react-jsx-source@^7.24.1": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz#1198aab2548ad19582013815c938d3ebd8291ee3" - integrity sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ== +"@babel/plugin-transform-react-jsx-source@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz#4c6b8daa520b5f155b5fb55547d7c9fa91417503" + integrity sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-react-jsx@^7.24.7": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz#e37e8ebfa77e9f0b16ba07fadcb6adb47412227a" - integrity sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA== +"@babel/plugin-transform-react-jsx@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz#06367940d8325b36edff5e2b9cbe782947ca4166" + integrity sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw== dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/plugin-syntax-jsx" "^7.24.7" - "@babel/types" "^7.25.2" + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-syntax-jsx" "^7.25.9" + "@babel/types" "^7.25.9" -"@babel/plugin-transform-react-pure-annotations@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz#bdd9d140d1c318b4f28b29a00fb94f97ecab1595" - integrity sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA== +"@babel/plugin-transform-react-pure-annotations@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz#ea1c11b2f9dbb8e2d97025f43a3b5bc47e18ae62" + integrity sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg== dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-regenerator@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz#021562de4534d8b4b1851759fd7af4e05d2c47f8" - integrity sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA== +"@babel/plugin-transform-regenerator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz#03a8a4670d6cebae95305ac6defac81ece77740b" + integrity sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" regenerator-transform "^0.15.2" -"@babel/plugin-transform-reserved-words@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz#80037fe4fbf031fc1125022178ff3938bb3743a4" - integrity sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ== +"@babel/plugin-transform-regexp-modifiers@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz#2f5837a5b5cd3842a919d8147e9903cc7455b850" + integrity sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-reserved-words@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz#0398aed2f1f10ba3f78a93db219b27ef417fb9ce" + integrity sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-runtime@^7.16.4": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz#00a5bfaf8c43cf5c8703a8a6e82b59d9c58f38ca" - integrity sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw== + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz#62723ea3f5b31ffbe676da9d6dae17138ae580ea" + integrity sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ== dependencies: - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.1" + babel-plugin-polyfill-corejs3 "^0.10.6" babel-plugin-polyfill-regenerator "^0.6.1" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz#85448c6b996e122fa9e289746140aaa99da64e73" - integrity sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA== +"@babel/plugin-transform-shorthand-properties@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz#bb785e6091f99f826a95f9894fc16fde61c163f2" + integrity sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-spread@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz#e8a38c0fde7882e0fb8f160378f74bd885cc7bb3" - integrity sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng== +"@babel/plugin-transform-spread@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz#24a35153931b4ba3d13cec4a7748c21ab5514ef9" + integrity sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" -"@babel/plugin-transform-sticky-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz#96ae80d7a7e5251f657b5cf18f1ea6bf926f5feb" - integrity sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g== +"@babel/plugin-transform-sticky-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz#c7f02b944e986a417817b20ba2c504dfc1453d32" + integrity sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-template-literals@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz#a05debb4a9072ae8f985bcf77f3f215434c8f8c8" - integrity sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw== +"@babel/plugin-transform-template-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz#6dbd4a24e8fad024df76d1fac6a03cf413f60fe1" + integrity sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-typeof-symbol@^7.24.8": - version "7.24.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz#383dab37fb073f5bfe6e60c654caac309f92ba1c" - integrity sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw== +"@babel/plugin-transform-typeof-symbol@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz#224ba48a92869ddbf81f9b4a5f1204bbf5a2bc4b" + integrity sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA== dependencies: - "@babel/helper-plugin-utils" "^7.24.8" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-typescript@^7.24.7": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz#237c5d10de6d493be31637c6b9fa30b6c5461add" - integrity sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A== +"@babel/plugin-transform-typescript@^7.25.9": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.3.tgz#3d6add9c78735623317387ee26d5ada540eee3fd" + integrity sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA== dependencies: - "@babel/helper-annotate-as-pure" "^7.24.7" - "@babel/helper-create-class-features-plugin" "^7.25.0" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" - "@babel/plugin-syntax-typescript" "^7.24.7" + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/plugin-syntax-typescript" "^7.25.9" -"@babel/plugin-transform-unicode-escapes@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz#2023a82ced1fb4971630a2e079764502c4148e0e" - integrity sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw== +"@babel/plugin-transform-unicode-escapes@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz#a75ef3947ce15363fccaa38e2dd9bc70b2788b82" + integrity sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-unicode-property-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz#9073a4cd13b86ea71c3264659590ac086605bbcd" - integrity sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w== +"@babel/plugin-transform-unicode-property-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz#a901e96f2c1d071b0d1bb5dc0d3c880ce8f53dd3" + integrity sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-unicode-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz#dfc3d4a51127108099b19817c0963be6a2adf19f" - integrity sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg== +"@babel/plugin-transform-unicode-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz#5eae747fe39eacf13a8bd006a4fb0b5d1fa5e9b1" + integrity sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-unicode-sets-regex@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz#d40705d67523803a576e29c63cef6e516b858ed9" - integrity sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg== +"@babel/plugin-transform-unicode-sets-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz#65114c17b4ffc20fa5b163c63c70c0d25621fabe" + integrity sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": - version "7.25.3" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.3.tgz#0bf4769d84ac51d1073ab4a86f00f30a3a83c67c" - integrity sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g== - dependencies: - "@babel/compat-data" "^7.25.2" - "@babel/helper-compilation-targets" "^7.25.2" - "@babel/helper-plugin-utils" "^7.24.8" - "@babel/helper-validator-option" "^7.24.8" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.3" - "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.0" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.0" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.7" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.0" + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.26.0.tgz#30e5c6bc1bcc54865bff0c5a30f6d4ccdc7fa8b1" + integrity sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw== + dependencies: + "@babel/compat-data" "^7.26.0" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.9" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.9" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.9" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.9" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.9" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.24.7" - "@babel/plugin-syntax-import-attributes" "^7.24.7" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-import-assertions" "^7.26.0" + "@babel/plugin-syntax-import-attributes" "^7.26.0" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.24.7" - "@babel/plugin-transform-async-generator-functions" "^7.25.0" - "@babel/plugin-transform-async-to-generator" "^7.24.7" - "@babel/plugin-transform-block-scoped-functions" "^7.24.7" - "@babel/plugin-transform-block-scoping" "^7.25.0" - "@babel/plugin-transform-class-properties" "^7.24.7" - "@babel/plugin-transform-class-static-block" "^7.24.7" - "@babel/plugin-transform-classes" "^7.25.0" - "@babel/plugin-transform-computed-properties" "^7.24.7" - "@babel/plugin-transform-destructuring" "^7.24.8" - "@babel/plugin-transform-dotall-regex" "^7.24.7" - "@babel/plugin-transform-duplicate-keys" "^7.24.7" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.0" - "@babel/plugin-transform-dynamic-import" "^7.24.7" - "@babel/plugin-transform-exponentiation-operator" "^7.24.7" - "@babel/plugin-transform-export-namespace-from" "^7.24.7" - "@babel/plugin-transform-for-of" "^7.24.7" - "@babel/plugin-transform-function-name" "^7.25.1" - "@babel/plugin-transform-json-strings" "^7.24.7" - "@babel/plugin-transform-literals" "^7.25.2" - "@babel/plugin-transform-logical-assignment-operators" "^7.24.7" - "@babel/plugin-transform-member-expression-literals" "^7.24.7" - "@babel/plugin-transform-modules-amd" "^7.24.7" - "@babel/plugin-transform-modules-commonjs" "^7.24.8" - "@babel/plugin-transform-modules-systemjs" "^7.25.0" - "@babel/plugin-transform-modules-umd" "^7.24.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7" - "@babel/plugin-transform-new-target" "^7.24.7" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7" - "@babel/plugin-transform-numeric-separator" "^7.24.7" - "@babel/plugin-transform-object-rest-spread" "^7.24.7" - "@babel/plugin-transform-object-super" "^7.24.7" - "@babel/plugin-transform-optional-catch-binding" "^7.24.7" - "@babel/plugin-transform-optional-chaining" "^7.24.8" - "@babel/plugin-transform-parameters" "^7.24.7" - "@babel/plugin-transform-private-methods" "^7.24.7" - "@babel/plugin-transform-private-property-in-object" "^7.24.7" - "@babel/plugin-transform-property-literals" "^7.24.7" - "@babel/plugin-transform-regenerator" "^7.24.7" - "@babel/plugin-transform-reserved-words" "^7.24.7" - "@babel/plugin-transform-shorthand-properties" "^7.24.7" - "@babel/plugin-transform-spread" "^7.24.7" - "@babel/plugin-transform-sticky-regex" "^7.24.7" - "@babel/plugin-transform-template-literals" "^7.24.7" - "@babel/plugin-transform-typeof-symbol" "^7.24.8" - "@babel/plugin-transform-unicode-escapes" "^7.24.7" - "@babel/plugin-transform-unicode-property-regex" "^7.24.7" - "@babel/plugin-transform-unicode-regex" "^7.24.7" - "@babel/plugin-transform-unicode-sets-regex" "^7.24.7" + "@babel/plugin-transform-arrow-functions" "^7.25.9" + "@babel/plugin-transform-async-generator-functions" "^7.25.9" + "@babel/plugin-transform-async-to-generator" "^7.25.9" + "@babel/plugin-transform-block-scoped-functions" "^7.25.9" + "@babel/plugin-transform-block-scoping" "^7.25.9" + "@babel/plugin-transform-class-properties" "^7.25.9" + "@babel/plugin-transform-class-static-block" "^7.26.0" + "@babel/plugin-transform-classes" "^7.25.9" + "@babel/plugin-transform-computed-properties" "^7.25.9" + "@babel/plugin-transform-destructuring" "^7.25.9" + "@babel/plugin-transform-dotall-regex" "^7.25.9" + "@babel/plugin-transform-duplicate-keys" "^7.25.9" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.9" + "@babel/plugin-transform-dynamic-import" "^7.25.9" + "@babel/plugin-transform-exponentiation-operator" "^7.25.9" + "@babel/plugin-transform-export-namespace-from" "^7.25.9" + "@babel/plugin-transform-for-of" "^7.25.9" + "@babel/plugin-transform-function-name" "^7.25.9" + "@babel/plugin-transform-json-strings" "^7.25.9" + "@babel/plugin-transform-literals" "^7.25.9" + "@babel/plugin-transform-logical-assignment-operators" "^7.25.9" + "@babel/plugin-transform-member-expression-literals" "^7.25.9" + "@babel/plugin-transform-modules-amd" "^7.25.9" + "@babel/plugin-transform-modules-commonjs" "^7.25.9" + "@babel/plugin-transform-modules-systemjs" "^7.25.9" + "@babel/plugin-transform-modules-umd" "^7.25.9" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.25.9" + "@babel/plugin-transform-new-target" "^7.25.9" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.25.9" + "@babel/plugin-transform-numeric-separator" "^7.25.9" + "@babel/plugin-transform-object-rest-spread" "^7.25.9" + "@babel/plugin-transform-object-super" "^7.25.9" + "@babel/plugin-transform-optional-catch-binding" "^7.25.9" + "@babel/plugin-transform-optional-chaining" "^7.25.9" + "@babel/plugin-transform-parameters" "^7.25.9" + "@babel/plugin-transform-private-methods" "^7.25.9" + "@babel/plugin-transform-private-property-in-object" "^7.25.9" + "@babel/plugin-transform-property-literals" "^7.25.9" + "@babel/plugin-transform-regenerator" "^7.25.9" + "@babel/plugin-transform-regexp-modifiers" "^7.26.0" + "@babel/plugin-transform-reserved-words" "^7.25.9" + "@babel/plugin-transform-shorthand-properties" "^7.25.9" + "@babel/plugin-transform-spread" "^7.25.9" + "@babel/plugin-transform-sticky-regex" "^7.25.9" + "@babel/plugin-transform-template-literals" "^7.25.9" + "@babel/plugin-transform-typeof-symbol" "^7.25.9" + "@babel/plugin-transform-unicode-escapes" "^7.25.9" + "@babel/plugin-transform-unicode-property-regex" "^7.25.9" + "@babel/plugin-transform-unicode-regex" "^7.25.9" + "@babel/plugin-transform-unicode-sets-regex" "^7.25.9" "@babel/preset-modules" "0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.4" + babel-plugin-polyfill-corejs3 "^0.10.6" babel-plugin-polyfill-regenerator "^0.6.1" - core-js-compat "^3.37.1" + core-js-compat "^3.38.1" semver "^6.3.1" "@babel/preset-modules@0.1.6-no-external-plugins": @@ -1127,77 +1068,64 @@ esutils "^2.0.2" "@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.7.tgz#480aeb389b2a798880bf1f889199e3641cbb22dc" - integrity sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag== + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.26.3.tgz#7c5e028d623b4683c1f83a0bd4713b9100560caa" + integrity sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-validator-option" "^7.24.7" - "@babel/plugin-transform-react-display-name" "^7.24.7" - "@babel/plugin-transform-react-jsx" "^7.24.7" - "@babel/plugin-transform-react-jsx-development" "^7.24.7" - "@babel/plugin-transform-react-pure-annotations" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + "@babel/plugin-transform-react-display-name" "^7.25.9" + "@babel/plugin-transform-react-jsx" "^7.25.9" + "@babel/plugin-transform-react-jsx-development" "^7.25.9" + "@babel/plugin-transform-react-pure-annotations" "^7.25.9" "@babel/preset-typescript@^7.16.0": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz#66cd86ea8f8c014855671d5ea9a737139cbbfef1" - integrity sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-validator-option" "^7.24.7" - "@babel/plugin-syntax-jsx" "^7.24.7" - "@babel/plugin-transform-modules-commonjs" "^7.24.7" - "@babel/plugin-transform-typescript" "^7.24.7" - -"@babel/regjsgen@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" - integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== - -"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.21.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.24.7", "@babel/runtime@^7.24.8", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.0.tgz#3af9a91c1b739c569d5d80cc917280919c544ecb" - integrity sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw== + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz#4a570f1b8d104a242d923957ffa1eaff142a106d" + integrity sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg== dependencies: - regenerator-runtime "^0.14.0" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + "@babel/plugin-syntax-jsx" "^7.25.9" + "@babel/plugin-transform-modules-commonjs" "^7.25.9" + "@babel/plugin-transform-typescript" "^7.25.9" -"@babel/runtime@^7.20.13": +"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.21.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.24.7", "@babel/runtime@^7.25.0", "@babel/runtime@^7.26.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": version "7.26.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.24.7", "@babel/template@^7.25.0", "@babel/template@^7.3.3": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a" - integrity sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/parser" "^7.25.0" - "@babel/types" "^7.25.0" - -"@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.3", "@babel/traverse@^7.7.2": - version "7.25.3" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.3.tgz#f1b901951c83eda2f3e29450ce92743783373490" - integrity sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.25.0" - "@babel/parser" "^7.25.3" - "@babel/template" "^7.25.0" - "@babel/types" "^7.25.2" +"@babel/template@^7.25.9", "@babel/template@^7.3.3": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" + integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/traverse@^7.25.9", "@babel/traverse@^7.7.2": + version "7.26.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.4.tgz#ac3a2a84b908dde6d463c3bfa2c5fdc1653574bd" + integrity sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w== + dependencies: + "@babel/code-frame" "^7.26.2" + "@babel/generator" "^7.26.3" + "@babel/parser" "^7.26.3" + "@babel/template" "^7.25.9" + "@babel/types" "^7.26.3" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.2.tgz#55fb231f7dc958cd69ea141a4c2997e819646125" - integrity sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q== +"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.26.3", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.3.tgz#37e79830f04c2b5687acc77db97fbc75fb81f3c0" + integrity sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA== dependencies: - "@babel/helper-string-parser" "^7.24.8" - "@babel/helper-validator-identifier" "^7.24.7" - to-fast-properties "^2.0.0" + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" "@bcoe/v8-coverage@^0.2.3": version "0.2.3" @@ -1205,9 +1133,9 @@ integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@bufbuild/protobuf@^2.0.0": - version "2.2.2" - resolved "https://registry.yarnpkg.com/@bufbuild/protobuf/-/protobuf-2.2.2.tgz#1a6d89603fb215dc4d4178052d05b30b83c75402" - integrity sha512-UNtPCbrwrenpmrXuRwn9jYpPoweNXj8X5sMvYgsqYyaH8jQ6LfUJSk3dJLnBK+6sfYPrF4iAIo5sd5HQ+tg75A== + version "2.2.3" + resolved "https://registry.yarnpkg.com/@bufbuild/protobuf/-/protobuf-2.2.3.tgz#9cd136f6b687e63e9b517b3a54211ece942897ee" + integrity sha512-tFQoXHJdkEOSwj5tRIZSPNUuXK3RaR7T1nUrPgbYX1pUbvqqaaZAsfo+NXBPsz5rZMSKVFrgK1WL8Q/MSLvprg== "@csstools/normalize.css@*": version "12.1.1" @@ -1320,146 +1248,153 @@ resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz#2cbcf822bf3764c9658c4d2e568bd0c0cb748016" integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== -"@esbuild/aix-ppc64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" - integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== - -"@esbuild/android-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" - integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== - -"@esbuild/android-arm@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" - integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== - -"@esbuild/android-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" - integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== - -"@esbuild/darwin-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" - integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== - -"@esbuild/darwin-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" - integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== - -"@esbuild/freebsd-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" - integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== - -"@esbuild/freebsd-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" - integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== - -"@esbuild/linux-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" - integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== - -"@esbuild/linux-arm@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" - integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== - -"@esbuild/linux-ia32@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" - integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== - -"@esbuild/linux-loong64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" - integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== - -"@esbuild/linux-mips64el@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" - integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== - -"@esbuild/linux-ppc64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" - integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== - -"@esbuild/linux-riscv64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" - integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== - -"@esbuild/linux-s390x@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" - integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== - -"@esbuild/linux-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" - integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== - -"@esbuild/netbsd-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" - integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== - -"@esbuild/openbsd-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" - integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== - -"@esbuild/sunos-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" - integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== - -"@esbuild/win32-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" - integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== - -"@esbuild/win32-ia32@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" - integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== - -"@esbuild/win32-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" - integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== +"@esbuild/aix-ppc64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz#b57697945b50e99007b4c2521507dc613d4a648c" + integrity sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw== + +"@esbuild/android-arm64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz#1add7e0af67acefd556e407f8497e81fddad79c0" + integrity sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w== + +"@esbuild/android-arm@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.24.0.tgz#ab7263045fa8e090833a8e3c393b60d59a789810" + integrity sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew== + +"@esbuild/android-x64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.24.0.tgz#e8f8b196cfdfdd5aeaebbdb0110983460440e705" + integrity sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ== + +"@esbuild/darwin-arm64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz#2d0d9414f2acbffd2d86e98253914fca603a53dd" + integrity sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw== + +"@esbuild/darwin-x64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz#33087aab31a1eb64c89daf3d2cf8ce1775656107" + integrity sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA== + +"@esbuild/freebsd-arm64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz#bb76e5ea9e97fa3c753472f19421075d3a33e8a7" + integrity sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA== + +"@esbuild/freebsd-x64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz#e0e2ce9249fdf6ee29e5dc3d420c7007fa579b93" + integrity sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ== + +"@esbuild/linux-arm64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz#d1b2aa58085f73ecf45533c07c82d81235388e75" + integrity sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g== + +"@esbuild/linux-arm@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz#8e4915df8ea3e12b690a057e77a47b1d5935ef6d" + integrity sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw== + +"@esbuild/linux-ia32@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz#8200b1110666c39ab316572324b7af63d82013fb" + integrity sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA== + +"@esbuild/linux-loong64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz#6ff0c99cf647504df321d0640f0d32e557da745c" + integrity sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g== + +"@esbuild/linux-mips64el@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz#3f720ccd4d59bfeb4c2ce276a46b77ad380fa1f3" + integrity sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA== + +"@esbuild/linux-ppc64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz#9d6b188b15c25afd2e213474bf5f31e42e3aa09e" + integrity sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ== + +"@esbuild/linux-riscv64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz#f989fdc9752dfda286c9cd87c46248e4dfecbc25" + integrity sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw== + +"@esbuild/linux-s390x@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz#29ebf87e4132ea659c1489fce63cd8509d1c7319" + integrity sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g== + +"@esbuild/linux-x64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz#4af48c5c0479569b1f359ffbce22d15f261c0cef" + integrity sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA== + +"@esbuild/netbsd-x64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz#1ae73d23cc044a0ebd4f198334416fb26c31366c" + integrity sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg== + +"@esbuild/openbsd-arm64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz#5d904a4f5158c89859fd902c427f96d6a9e632e2" + integrity sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg== + +"@esbuild/openbsd-x64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz#4c8aa88c49187c601bae2971e71c6dc5e0ad1cdf" + integrity sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q== + +"@esbuild/sunos-x64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz#8ddc35a0ea38575fa44eda30a5ee01ae2fa54dd4" + integrity sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA== + +"@esbuild/win32-arm64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz#6e79c8543f282c4539db684a207ae0e174a9007b" + integrity sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA== + +"@esbuild/win32-ia32@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz#057af345da256b7192d18b676a02e95d0fa39103" + integrity sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw== + +"@esbuild/win32-x64@0.24.0": + version "0.24.0" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz#168ab1c7e1c318b922637fad8f339d48b01e1244" + integrity sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA== "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + version "4.4.1" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" + integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== dependencies: - eslint-visitor-keys "^3.3.0" + eslint-visitor-keys "^3.4.3" -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.11.0", "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": - version "4.11.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae" - integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== +"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1", "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": + version "4.12.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== -"@eslint/config-array@^0.18.0": - version "0.18.0" - resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.18.0.tgz#37d8fe656e0d5e3dbaea7758ea56540867fd074d" - integrity sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw== +"@eslint/config-array@^0.19.0": + version "0.19.1" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.19.1.tgz#734aaea2c40be22bbb1f2a9dac687c57a6a4c984" + integrity sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA== dependencies: - "@eslint/object-schema" "^2.1.4" + "@eslint/object-schema" "^2.1.5" debug "^4.3.1" minimatch "^3.1.2" -"@eslint/core@^0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.7.0.tgz#a1bb4b6a4e742a5ff1894b7ee76fbf884ec72bd3" - integrity sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw== +"@eslint/core@^0.9.0": + version "0.9.1" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.9.1.tgz#31763847308ef6b7084a4505573ac9402c51f9d1" + integrity sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q== + dependencies: + "@types/json-schema" "^7.0.15" "@eslint/eslintrc@^2.1.4": version "2.1.4" @@ -1476,10 +1411,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/eslintrc@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.1.0.tgz#dbd3482bfd91efa663cbe7aa1f506839868207b6" - integrity sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ== +"@eslint/eslintrc@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.2.0.tgz#57470ac4e2e283a6bf76044d63281196e370542c" + integrity sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w== dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -1491,25 +1426,25 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== +"@eslint/js@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" + integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== -"@eslint/js@9.13.0": - version "9.13.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.13.0.tgz#c5f89bcd57eb54d5d4fa8b77693e9c28dc97e547" - integrity sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA== +"@eslint/js@9.16.0": + version "9.16.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.16.0.tgz#3df2b2dd3b9163056616886c86e4082f45dbf3f4" + integrity sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg== -"@eslint/object-schema@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.4.tgz#9e69f8bb4031e11df79e03db09f9dbbae1740843" - integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ== +"@eslint/object-schema@^2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.5.tgz#8670a8f6258a2be5b2c620ff314a1d984c23eb2e" + integrity sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ== -"@eslint/plugin-kit@^0.2.0": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.2.tgz#5eff371953bc13e3f4d88150e2c53959f64f74f6" - integrity sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw== +"@eslint/plugin-kit@^0.2.3": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz#2b78e7bb3755784bb13faa8932a1d994d6537792" + integrity sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg== dependencies: levn "^0.4.1" @@ -1518,31 +1453,31 @@ resolved "https://registry.yarnpkg.com/@exodus/schemasafe/-/schemasafe-1.3.0.tgz#731656abe21e8e769a7f70a4d833e6312fe59b7f" integrity sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw== -"@fortawesome/fontawesome-common-types@6.6.0": - version "6.6.0" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.6.0.tgz#31ab07ca6a06358c5de4d295d4711b675006163f" - integrity sha512-xyX0X9mc0kyz9plIyryrRbl7ngsA9jz77mCZJsUkLl+ZKs0KWObgaEBoSgQiYWAsSmjz/yjl0F++Got0Mdp4Rw== +"@fortawesome/fontawesome-common-types@6.7.1": + version "6.7.1" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.7.1.tgz#6201640f39fdcf8e41cd9d1a92b2da3a96817fa4" + integrity sha512-gbDz3TwRrIPT3i0cDfujhshnXO9z03IT1UKRIVi/VEjpNHtSBIP2o5XSm+e816FzzCFEzAxPw09Z13n20PaQJQ== "@fortawesome/fontawesome-svg-core@^6.6.0": - version "6.6.0" - resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.6.0.tgz#2a24c32ef92136e98eae2ff334a27145188295ff" - integrity sha512-KHwPkCk6oRT4HADE7smhfsKudt9N/9lm6EJ5BVg0tD1yPA5hht837fB87F8pn15D8JfTqQOjhKTktwmLMiD7Kg== + version "6.7.1" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.7.1.tgz#1f8ebb6f35cf02f89c110198514e848de17ac99e" + integrity sha512-8dBIHbfsKlCk2jHQ9PoRBg2Z+4TwyE3vZICSnoDlnsHA6SiMlTwfmW6yX0lHsRmWJugkeb92sA0hZdkXJhuz+g== dependencies: - "@fortawesome/fontawesome-common-types" "6.6.0" + "@fortawesome/fontawesome-common-types" "6.7.1" "@fortawesome/free-regular-svg-icons@^6.6.0": - version "6.6.0" - resolved "https://registry.yarnpkg.com/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.6.0.tgz#fc49a947ac8dfd20403c9ea5f37f0919425bdf04" - integrity sha512-Yv9hDzL4aI73BEwSEh20clrY8q/uLxawaQ98lekBx6t9dQKDHcDzzV1p2YtBGTtolYtNqcWdniOnhzB+JPnQEQ== + version "6.7.1" + resolved "https://registry.yarnpkg.com/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.7.1.tgz#d7ec06f896ee91116a388a5a234cd26420ccdfe4" + integrity sha512-e13cp+bAx716RZOTQ59DhqikAgETA9u1qTBHO3e3jMQQ+4H/N1NC1ZVeFYt1V0m+Th68BrEL1/X6XplISutbXg== dependencies: - "@fortawesome/fontawesome-common-types" "6.6.0" + "@fortawesome/fontawesome-common-types" "6.7.1" "@fortawesome/free-solid-svg-icons@^6.6.0": - version "6.6.0" - resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.6.0.tgz#061751ca43be4c4d814f0adbda8f006164ec9f3b" - integrity sha512-IYv/2skhEDFc2WGUcqvFJkeK39Q+HyPf5GHUrT/l2pKbtgEIv1al1TKd6qStR5OIwQdN1GZP54ci3y4mroJWjA== + version "6.7.1" + resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.7.1.tgz#c1f9a6c25562a12c283e87e284f9d82a5b0dbcc0" + integrity sha512-BTKc0b0mgjWZ2UDKVgmwaE0qt0cZs6ITcDgjrti5f/ki7aF5zs+N91V6hitGo3TItCFtnKg6cUVGdTmBFICFRg== dependencies: - "@fortawesome/fontawesome-common-types" "6.6.0" + "@fortawesome/fontawesome-common-types" "6.7.1" "@fortawesome/react-fontawesome@^0.2.2": version "0.2.2" @@ -1556,7 +1491,7 @@ resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== -"@humanfs/node@^0.16.5": +"@humanfs/node@^0.16.6": version "0.16.6" resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== @@ -1564,12 +1499,12 @@ "@humanfs/core" "^0.19.1" "@humanwhocodes/retry" "^0.3.0" -"@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== +"@humanwhocodes/config-array@^0.13.0": + version "0.13.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" + integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== dependencies: - "@humanwhocodes/object-schema" "^2.0.2" + "@humanwhocodes/object-schema" "^2.0.3" debug "^4.3.1" minimatch "^3.0.5" @@ -1578,21 +1513,21 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^2.0.2": +"@humanwhocodes/object-schema@^2.0.3": version "2.0.3" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== "@humanwhocodes/retry@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.0.tgz#6d86b8cb322660f03d3f0aa94b99bdd8e172d570" - integrity sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew== - -"@humanwhocodes/retry@^0.3.1": version "0.3.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== +"@humanwhocodes/retry@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.1.tgz#9a96ce501bc62df46c4031fbd970e3cc6b10f07b" + integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA== + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -1909,6 +1844,95 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@parcel/watcher-android-arm64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz#e32d3dda6647791ee930556aee206fcd5ea0fb7a" + integrity sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ== + +"@parcel/watcher-darwin-arm64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz#0d9e680b7e9ec1c8f54944f1b945aa8755afb12f" + integrity sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw== + +"@parcel/watcher-darwin-x64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz#f9f1d5ce9d5878d344f14ef1856b7a830c59d1bb" + integrity sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA== + +"@parcel/watcher-freebsd-x64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz#2b77f0c82d19e84ff4c21de6da7f7d096b1a7e82" + integrity sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw== + +"@parcel/watcher-linux-arm-glibc@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz#92ed322c56dbafa3d2545dcf2803334aee131e42" + integrity sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA== + +"@parcel/watcher-linux-arm-musl@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz#cd48e9bfde0cdbbd2ecd9accfc52967e22f849a4" + integrity sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA== + +"@parcel/watcher-linux-arm64-glibc@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz#7b81f6d5a442bb89fbabaf6c13573e94a46feb03" + integrity sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA== + +"@parcel/watcher-linux-arm64-musl@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz#dcb8ff01077cdf59a18d9e0a4dff7a0cfe5fd732" + integrity sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q== + +"@parcel/watcher-linux-x64-glibc@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz#2e254600fda4e32d83942384d1106e1eed84494d" + integrity sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw== + +"@parcel/watcher-linux-x64-musl@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz#01fcea60fedbb3225af808d3f0a7b11229792eef" + integrity sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA== + +"@parcel/watcher-win32-arm64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz#87cdb16e0783e770197e52fb1dc027bb0c847154" + integrity sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig== + +"@parcel/watcher-win32-ia32@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz#778c39b56da33e045ba21c678c31a9f9d7c6b220" + integrity sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA== + +"@parcel/watcher-win32-x64@2.5.0": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz#33873876d0bbc588aacce38e90d1d7480ce81cb7" + integrity sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw== + +"@parcel/watcher@^2.4.1": + version "2.5.0" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.0.tgz#5c88818b12b8de4307a9d3e6dc3e28eba0dfbd10" + integrity sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ== + dependencies: + detect-libc "^1.0.3" + is-glob "^4.0.3" + micromatch "^4.0.5" + node-addon-api "^7.0.0" + optionalDependencies: + "@parcel/watcher-android-arm64" "2.5.0" + "@parcel/watcher-darwin-arm64" "2.5.0" + "@parcel/watcher-darwin-x64" "2.5.0" + "@parcel/watcher-freebsd-x64" "2.5.0" + "@parcel/watcher-linux-arm-glibc" "2.5.0" + "@parcel/watcher-linux-arm-musl" "2.5.0" + "@parcel/watcher-linux-arm64-glibc" "2.5.0" + "@parcel/watcher-linux-arm64-musl" "2.5.0" + "@parcel/watcher-linux-x64-glibc" "2.5.0" + "@parcel/watcher-linux-x64-musl" "2.5.0" + "@parcel/watcher-win32-arm64" "2.5.0" + "@parcel/watcher-win32-ia32" "2.5.0" + "@parcel/watcher-win32-x64" "2.5.0" + "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" @@ -1932,32 +1956,32 @@ schema-utils "^4.2.0" source-map "^0.7.3" -"@popperjs/core@^2.11.6": +"@popperjs/core@^2.11.8": version "2.11.8" resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== "@react-aria/ssr@^3.5.0": - version "3.9.5" - resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.9.5.tgz#775d84f51f90934ff51ae74eeba3728daac1a381" - integrity sha512-xEwGKoysu+oXulibNUSkXf8itW0npHHTa6c4AyYeZIJyRoegeteYuFpZUBPtIDE8RfHdNsSmE1ssOkxRnwbkuQ== + version "3.9.7" + resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.9.7.tgz#d89d129f7bbc5148657e6c952ac31c9353183770" + integrity sha512-GQygZaGlmYjmYM+tiNBA5C6acmiDWF52Nqd40bBp0Znk4M4hP+LTmI0lpI1BuKMw45T8RIhrAsICIfKwZvi2Gg== dependencies: "@swc/helpers" "^0.5.0" "@reduxjs/toolkit@^2.2.4": - version "2.2.7" - resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-2.2.7.tgz#199e3d10ccb39267cb5aee92c0262fd9da7fdfb2" - integrity sha512-faI3cZbSdFb8yv9dhDTmGwclW0vk0z5o1cia+kf7gCbaCwHI5e+7tP57mJUv22pNcNbeA62GSrPpfrUfdXcQ6g== + version "2.4.0" + resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-2.4.0.tgz#29fd3a19530fc50d648a9b1e0132da0cd5618f19" + integrity sha512-wJZEuSKj14tvNfxiIiJws0tQN77/rDqucBq528ApebMIRHyWpCanJVQRxQ8WWZC19iCDKxDsGlbAir3F1layxA== dependencies: immer "^10.0.3" redux "^5.0.1" redux-thunk "^3.1.0" reselect "^5.1.0" -"@remix-run/router@1.19.0": - version "1.19.0" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.19.0.tgz#745dbffbce67f05386d57ca22c51dfd85c979593" - integrity sha512-zDICCLKEwbVYTS6TjYaWtHXxkdoUvD/QXvyVZjGCsWz5vyH7aFeONlPffPdW+Y/t6KT0MgXb2Mfjun9YpWN1dA== +"@remix-run/router@1.21.0": + version "1.21.0" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.21.0.tgz#c65ae4262bdcfe415dbd4f64ec87676e4a56e2b5" + integrity sha512-xfSkCAchbdG5PnbrKqFWwia4Bi61nH+wm8wLEqfHDyp7Y3dZzgqS2itV8i4gAq9pC2HsTpwyBC6Ds8VHZ96JlA== "@restart/hooks@^0.4.9": version "0.4.16" @@ -1966,19 +1990,26 @@ dependencies: dequal "^2.0.3" -"@restart/ui@^1.6.9": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@restart/ui/-/ui-1.8.0.tgz#3e8d80822b5fbef0576f94acda51d7da9e79e005" - integrity sha512-xJEOXUOTmT4FngTmhdjKFRrVVF0hwCLNPdatLCHkyS4dkiSK12cEu1Y0fjxktjJrdst9jJIc5J6ihMJCoWEN/g== +"@restart/hooks@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@restart/hooks/-/hooks-0.5.0.tgz#a594af7c3b64f5e65a7aca011551b0cdd93ec14e" + integrity sha512-wS+h6IusJCPjTkmOOrRZxIPICD/mtFA3PRZviutoM23/b7akyDGfZF/WS+nIFk27u7JDhPE2+0GBdZxjSqHZkg== + dependencies: + dequal "^2.0.3" + +"@restart/ui@^1.9.0": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@restart/ui/-/ui-1.9.1.tgz#f0f22d255470e02f6fee6dcc449e56f0f1b8ebc1" + integrity sha512-qghR21ynHiUrpcIkKCoKYB+3rJtezY5Y7ikrwradCL+7hZHdQ2Ozc5ffxtpmpahoAGgc31gyXaSx2sXXaThmqA== dependencies: - "@babel/runtime" "^7.21.0" - "@popperjs/core" "^2.11.6" + "@babel/runtime" "^7.26.0" + "@popperjs/core" "^2.11.8" "@react-aria/ssr" "^3.5.0" - "@restart/hooks" "^0.4.9" - "@types/warning" "^3.0.0" + "@restart/hooks" "^0.5.0" + "@types/warning" "^3.0.3" dequal "^2.0.3" dom-helpers "^5.2.0" - uncontrollable "^8.0.1" + uncontrollable "^8.0.4" warning "^4.0.3" "@rollup/plugin-babel@^5.2.0": @@ -2018,98 +2049,119 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@rollup/rollup-android-arm-eabi@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz#1661ff5ea9beb362795304cb916049aba7ac9c54" - integrity sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA== - -"@rollup/rollup-android-arm64@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz#2ffaa91f1b55a0082b8a722525741aadcbd3971e" - integrity sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA== - -"@rollup/rollup-darwin-arm64@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz#627007221b24b8cc3063703eee0b9177edf49c1f" - integrity sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA== - -"@rollup/rollup-darwin-x64@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz#0605506142b9e796c370d59c5984ae95b9758724" - integrity sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ== - -"@rollup/rollup-linux-arm-gnueabihf@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz#62dfd196d4b10c0c2db833897164d2d319ee0cbb" - integrity sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA== - -"@rollup/rollup-linux-arm-musleabihf@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz#53ce72aeb982f1f34b58b380baafaf6a240fddb3" - integrity sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw== - -"@rollup/rollup-linux-arm64-gnu@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz#1632990f62a75c74f43e4b14ab3597d7ed416496" - integrity sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA== - -"@rollup/rollup-linux-arm64-musl@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz#8c03a996efb41e257b414b2e0560b7a21f2d9065" - integrity sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw== - -"@rollup/rollup-linux-powerpc64le-gnu@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz#5b98729628d5bcc8f7f37b58b04d6845f85c7b5d" - integrity sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw== - -"@rollup/rollup-linux-riscv64-gnu@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz#48e42e41f4cabf3573cfefcb448599c512e22983" - integrity sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg== - -"@rollup/rollup-linux-s390x-gnu@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz#e0b4f9a966872cb7d3e21b9e412a4b7efd7f0b58" - integrity sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g== - -"@rollup/rollup-linux-x64-gnu@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz#78144741993100f47bd3da72fce215e077ae036b" - integrity sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A== - -"@rollup/rollup-linux-x64-musl@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz#d9fe32971883cd1bd858336bd33a1c3ca6146127" - integrity sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ== - -"@rollup/rollup-win32-arm64-msvc@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz#71fa3ea369316db703a909c790743972e98afae5" - integrity sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ== - -"@rollup/rollup-win32-ia32-msvc@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz#653f5989a60658e17d7576a3996deb3902e342e2" - integrity sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ== - -"@rollup/rollup-win32-x64-msvc@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz#0574d7e87b44ee8511d08cc7f914bcb802b70818" - integrity sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw== - -"@rtk-query/codegen-openapi@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@rtk-query/codegen-openapi/-/codegen-openapi-1.2.0.tgz#2c63cbbd80382c4ba6c9fab5e9004efb43637de3" - integrity sha512-Sru3aPHyFC0Tb7jeFh/kVMGBdQUcofb9frrHhjNSRLEoJWsG9fjaioUx3nPT5HZVbdAvAFF4xMWFQNfgJBrAGw== +"@rollup/rollup-android-arm-eabi@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.28.1.tgz#7f4c4d8cd5ccab6e95d6750dbe00321c1f30791e" + integrity sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ== + +"@rollup/rollup-android-arm64@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.28.1.tgz#17ea71695fb1518c2c324badbe431a0bd1879f2d" + integrity sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA== + +"@rollup/rollup-darwin-arm64@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.28.1.tgz#dac0f0d0cfa73e7d5225ae6d303c13c8979e7999" + integrity sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ== + +"@rollup/rollup-darwin-x64@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.28.1.tgz#8f63baa1d31784904a380d2e293fa1ddf53dd4a2" + integrity sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ== + +"@rollup/rollup-freebsd-arm64@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.28.1.tgz#30ed247e0df6e8858cdc6ae4090e12dbeb8ce946" + integrity sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA== + +"@rollup/rollup-freebsd-x64@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.28.1.tgz#57846f382fddbb508412ae07855b8a04c8f56282" + integrity sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ== + +"@rollup/rollup-linux-arm-gnueabihf@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.28.1.tgz#378ca666c9dae5e6f94d1d351e7497c176e9b6df" + integrity sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA== + +"@rollup/rollup-linux-arm-musleabihf@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.28.1.tgz#a692eff3bab330d5c33a5d5813a090c15374cddb" + integrity sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg== + +"@rollup/rollup-linux-arm64-gnu@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.28.1.tgz#6b1719b76088da5ac1ae1feccf48c5926b9e3db9" + integrity sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA== + +"@rollup/rollup-linux-arm64-musl@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.28.1.tgz#865baf5b6f5ff67acb32e5a359508828e8dc5788" + integrity sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A== + +"@rollup/rollup-linux-loongarch64-gnu@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.28.1.tgz#23c6609ba0f7fa7a7f2038b6b6a08555a5055a87" + integrity sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA== + +"@rollup/rollup-linux-powerpc64le-gnu@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.28.1.tgz#652ef0d9334a9f25b9daf85731242801cb0fc41c" + integrity sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A== + +"@rollup/rollup-linux-riscv64-gnu@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.28.1.tgz#1eb6651839ee6ebca64d6cc64febbd299e95e6bd" + integrity sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA== + +"@rollup/rollup-linux-s390x-gnu@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.28.1.tgz#015c52293afb3ff2a293cf0936b1d43975c1e9cd" + integrity sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg== + +"@rollup/rollup-linux-x64-gnu@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.28.1.tgz#b83001b5abed2bcb5e2dbeec6a7e69b194235c1e" + integrity sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw== + +"@rollup/rollup-linux-x64-musl@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.28.1.tgz#6cc7c84cd4563737f8593e66f33b57d8e228805b" + integrity sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g== + +"@rollup/rollup-win32-arm64-msvc@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.28.1.tgz#631ffeee094d71279fcd1fe8072bdcf25311bc11" + integrity sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A== + +"@rollup/rollup-win32-ia32-msvc@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.28.1.tgz#06d1d60d5b9f718e8a6c4a43f82e3f9e3254587f" + integrity sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA== + +"@rollup/rollup-win32-x64-msvc@4.28.1": + version "4.28.1" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.1.tgz#4dff5c4259ebe6c5b4a8f2c5bc3829b7a8447ff0" + integrity sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA== + +"@rtk-query/codegen-openapi@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@rtk-query/codegen-openapi/-/codegen-openapi-2.0.0.tgz#4ef9a2055f64a441a772912630cd8b13e091905d" + integrity sha512-uIOshfqX6bcsMpiwUMKAC+oFEw2fUxICMruhXunB6wq7tHpUg2b+gz+qGjiWAWw1Ly6g6jjvb3N4HRxWy9Yqew== dependencies: "@apidevtools/swagger-parser" "^10.0.2" commander "^6.2.0" - oazapfts "^4.8.0" - prettier "^2.2.1" + lodash.camelcase "^4.3.0" + oazapfts "^6.1.0" + prettier "^3.2.5" semver "^7.3.5" swagger2openapi "^7.0.4" - typescript "^5.0.0" + typescript "^5.5.4" + +"@rtsao/scc@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" + integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== "@rushstack/eslint-patch@^1.1.0": version "1.10.4" @@ -2249,19 +2301,18 @@ loader-utils "^2.0.0" "@swc/helpers@^0.5.0": - version "0.5.12" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.12.tgz#37aaca95284019eb5d2207101249435659709f4b" - integrity sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g== + version "0.5.15" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.15.tgz#79efab344c5819ecf83a43f3f9f811fc84b516d7" + integrity sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g== dependencies: - tslib "^2.4.0" + tslib "^2.8.0" "@testing-library/jest-dom@^6.4.8": - version "6.4.8" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.4.8.tgz#9c435742b20c6183d4e7034f2b329d562c079daa" - integrity sha512-JD0G+Zc38f5MBHA4NgxQMR5XtO5Jx9g86jqturNTt2WUfRmLDIY7iKkWHDCCTiDuFMre6nxAD5wHw9W5kI4rGw== + version "6.6.3" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.6.3.tgz#26ba906cf928c0f8172e182c6fe214eb4f9f2bd2" + integrity sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA== dependencies: "@adobe/css-tools" "^4.4.0" - "@babel/runtime" "^7.9.2" aria-query "^5.0.0" chalk "^3.0.0" css.escape "^1.5.1" @@ -2270,9 +2321,9 @@ redent "^3.0.0" "@testing-library/react@^16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-16.0.0.tgz#0a1e0c7a3de25841c3591b8cb7fb0cf0c0a27321" - integrity sha512-guuxUKRWQ+FgNX0h0NS0FIq3Q3uLtWVpBzcLOggmfMoUpgBnzBzvLLd4fbm6yS8ydJd94cIfY4yP9qUQjM2KwQ== + version "16.1.0" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-16.1.0.tgz#aa0c61398bac82eaf89776967e97de41ac742d71" + integrity sha512-Q2ToPvg0KsVL0ohND9A3zLJWcOXXcO8IDu3fj11KhNt0UlCWyFyvnCIBkd12tidB2lkiVRG8VFqdhcqhqnAQtg== dependencies: "@babel/runtime" "^7.12.5" @@ -2354,7 +2405,7 @@ dependencies: "@types/node" "*" -"@types/eslint-scope@^3.7.3": +"@types/eslint-scope@^3.7.7": version "3.7.7" resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== @@ -2363,47 +2414,62 @@ "@types/estree" "*" "@types/eslint@*": - version "9.6.0" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.0.tgz#51d4fe4d0316da9e9f2c80884f2c20ed5fb022ff" - integrity sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg== + version "9.6.1" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.1.tgz#d5795ad732ce81715f27f75da913004a56751584" + integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag== dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/eslint@^7.29.0 || ^8.4.1": - version "8.56.11" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.11.tgz#e2ff61510a3b9454b3329fe7731e3b4c6f780041" - integrity sha512-sVBpJMf7UPo/wGecYOpk2aQya2VUGeHhe38WG7/mN5FufNSubf5VT9Uh9Uyp8/eLJpu1/tuhJ/qTo4mhSB4V4Q== + version "8.56.12" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.12.tgz#1657c814ffeba4d2f84c0d4ba0f44ca7ea1ca53a" + integrity sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g== dependencies: "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== +"@types/estree@*", "@types/estree@1.0.6", "@types/estree@^1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== -"@types/estree@1.0.6", "@types/estree@^1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" - integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.2.tgz#812d2871e5eea17fb0bd5214dda7a7b748c0e12a" + integrity sha512-vluaspfvWEtE4vcSDlKRNer52DvOGrB2xv6diXy6UKyKW0lqZiWHGNApSyxOv+8DE5Z27IzVvE7hNkxg7EXIcg== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" -"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.19.5" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz#218064e321126fcf9048d1ca25dd2465da55d9c6" - integrity sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg== +"@types/express-serve-static-core@^4.17.33": + version "4.19.6" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz#e01324c2a024ff367d92c66f48553ced0ab50267" + integrity sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A== dependencies: "@types/node" "*" "@types/qs" "*" "@types/range-parser" "*" "@types/send" "*" -"@types/express@*", "@types/express@^4.17.13": +"@types/express@*": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.0.tgz#13a7d1f75295e90d19ed6e74cab3678488eaa96c" + integrity sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^5.0.0" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/express@^4.17.13": version "4.17.21" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== @@ -2431,9 +2497,9 @@ integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== "@types/http-proxy@^1.17.8": - version "1.17.14" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.14.tgz#57f8ccaa1c1c3780644f8a94f9c6b5000b5e2eec" - integrity sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w== + version "1.17.15" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.15.tgz#12118141ce9775a6499ecb4c01d02f90fc839d36" + integrity sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ== dependencies: "@types/node" "*" @@ -2479,11 +2545,11 @@ "@types/node" "*" "@types/node@*": - version "22.1.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.1.0.tgz#6d6adc648b5e03f0e83c78dc788c2b037d0ad94b" - integrity sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw== + version "22.10.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.1.tgz#41ffeee127b8975a05f8c4f83fb89bcb2987d766" + integrity sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ== dependencies: - undici-types "~6.13.0" + undici-types "~6.20.0" "@types/parse-json@^4.0.0": version "4.0.2" @@ -2496,9 +2562,9 @@ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/prop-types@*": - version "15.7.12" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" - integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== + version "15.7.14" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.14.tgz#1433419d73b2a7ebfc6918dcefd2ec0d5cd698f2" + integrity sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ== "@types/q@^1.5.1": version "1.5.8" @@ -2506,9 +2572,9 @@ integrity sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw== "@types/qs@*": - version "6.9.15" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" - integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== + version "6.9.17" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.17.tgz#fc560f60946d0aeff2f914eb41679659d3310e1a" + integrity sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ== "@types/range-parser@*": version "1.2.7" @@ -2516,23 +2582,28 @@ integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== "@types/react-dom@^18.2.22": - version "18.3.0" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.0.tgz#0cbc818755d87066ab6ca74fbedb2547d74a82b0" - integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg== - dependencies: - "@types/react" "*" + version "18.3.3" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.3.tgz#3654138d0da1b0c7916f6ed0dc1cc2b576d47650" + integrity sha512-uTYkxTLkYp41nq/ULXyXMtkNT1vu5fXJoqad6uTNCOGat5t9cLgF4vMNLBXsTOXpdOI44XzKPY1M5RRm0bQHuw== "@types/react-transition-group@^4.4.6": - version "4.4.10" - resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.10.tgz#6ee71127bdab1f18f11ad8fb3322c6da27c327ac" - integrity sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q== + version "4.4.11" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.11.tgz#d963253a611d757de01ebb241143b1017d5d63d5" + integrity sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA== dependencies: "@types/react" "*" -"@types/react@*", "@types/react@>=16.9.11", "@types/react@^18.2.66": - version "18.3.3" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.3.tgz#9679020895318b0915d7a3ab004d92d33375c45f" - integrity sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw== +"@types/react@*", "@types/react@>=16.9.11": + version "19.0.1" + resolved "https://registry.yarnpkg.com/@types/react/-/react-19.0.1.tgz#a000d5b78f473732a08cecbead0f3751e550b3df" + integrity sha512-YW6614BDhqbpR5KtUYzTA+zlA7nayzJRA9ljz9CQoxthR0sDisYZLuvSMsil36t4EH/uAt8T52Xb4sVw17G+SQ== + dependencies: + csstype "^3.0.2" + +"@types/react@^18.2.66": + version "18.3.15" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.15.tgz#14674f041072c2b17062ae2edb0eb95a45787f98" + integrity sha512-XQzbwkCwrsabawgWsvDDwsDTRuH1sf6Uj1fnFYoG03ZXfT54/aBvlylKR9ix70pXAtTn8dFzj358zVcZN4m83w== dependencies: "@types/prop-types" "*" csstype "^3.0.2" @@ -2595,20 +2666,20 @@ resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== -"@types/use-sync-external-store@^0.0.3": - version "0.0.3" - resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43" - integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA== +"@types/use-sync-external-store@^0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz#60be8d21baab8c305132eb9cb912ed497852aadc" + integrity sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg== -"@types/warning@^3.0.0": +"@types/warning@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/warning/-/warning-3.0.3.tgz#d1884c8cc4a426d1ac117ca2611bf333834c6798" integrity sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q== "@types/ws@^8.5.5": - version "8.5.12" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.12.tgz#619475fe98f35ccca2a2f6c137702d85ec247b7e" - integrity sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ== + version "8.5.13" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.13.tgz#6414c280875e2691d0d1e080b05addbf5cb91e20" + integrity sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA== dependencies: "@types/node" "*" @@ -2625,22 +2696,22 @@ "@types/yargs-parser" "*" "@types/yargs@^17.0.8": - version "17.0.32" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" - integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== + version "17.0.33" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d" + integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@8.12.0": - version "8.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.12.0.tgz#2089acb441fb5e0171e1b4cfb4291d22fb3779c0" - integrity sha512-uRqchEKT0/OwDePTwCjSFO2aH4zccdeQ7DgAzM/8fuXc+PAXvpdMRbuo+oCmK1lSfXssk2UUBNiWihobKxQp/g== +"@typescript-eslint/eslint-plugin@8.18.0", "@typescript-eslint/eslint-plugin@^8.0.1": + version "8.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.0.tgz#0901933326aea4443b81df3f740ca7dfc45c7bea" + integrity sha512-NR2yS7qUqCL7AIxdJUQf2MKKNDVNaig/dEB0GBLU7D+ZdHgK1NoH/3wsgO3OnPVipn51tG3MAwaODEGil70WEw== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.12.0" - "@typescript-eslint/type-utils" "8.12.0" - "@typescript-eslint/utils" "8.12.0" - "@typescript-eslint/visitor-keys" "8.12.0" + "@typescript-eslint/scope-manager" "8.18.0" + "@typescript-eslint/type-utils" "8.18.0" + "@typescript-eslint/utils" "8.18.0" + "@typescript-eslint/visitor-keys" "8.18.0" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" @@ -2662,21 +2733,6 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/eslint-plugin@^8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.1.tgz#5dbd1b498fdea83a16d292322d27d293ce156f94" - integrity sha512-5g3Y7GDFsJAnY4Yhvk8sZtFfV6YNF2caLzjrRPUBzewjPCaj0yokePB4LJSobyCzGMzjZZYFbwuzbfDHlimXbQ== - dependencies: - "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.0.1" - "@typescript-eslint/type-utils" "8.0.1" - "@typescript-eslint/utils" "8.0.1" - "@typescript-eslint/visitor-keys" "8.0.1" - graphemer "^1.4.0" - ignore "^5.3.1" - natural-compare "^1.4.0" - ts-api-utils "^1.3.0" - "@typescript-eslint/experimental-utils@^5.0.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz#14559bf73383a308026b427a4a6129bae2146741" @@ -2684,15 +2740,15 @@ dependencies: "@typescript-eslint/utils" "5.62.0" -"@typescript-eslint/parser@8.12.0": - version "8.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.12.0.tgz#e9a9c047310213169dd500b08622c5641f1997f6" - integrity sha512-7U20duDQWAOhCk2VtyY41Vor/CJjiEW063Zel9aoRXq89FQ/jr+0e0m3kxh9Sk5SFW9B1AblVIBtXd+1xQ1NWQ== +"@typescript-eslint/parser@8.18.0", "@typescript-eslint/parser@^8.0.1": + version "8.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.18.0.tgz#a1c9456cbb6a089730bf1d3fc47946c5fb5fe67b" + integrity sha512-hgUZ3kTEpVzKaK3uNibExUYm6SKKOmTU2BOxBSvOYwtJEPdVQ70kZJpPjstlnhCHcuc2WGfSbpKlb/69ttyN5Q== dependencies: - "@typescript-eslint/scope-manager" "8.12.0" - "@typescript-eslint/types" "8.12.0" - "@typescript-eslint/typescript-estree" "8.12.0" - "@typescript-eslint/visitor-keys" "8.12.0" + "@typescript-eslint/scope-manager" "8.18.0" + "@typescript-eslint/types" "8.18.0" + "@typescript-eslint/typescript-estree" "8.18.0" + "@typescript-eslint/visitor-keys" "8.18.0" debug "^4.3.4" "@typescript-eslint/parser@^5.5.0": @@ -2705,17 +2761,6 @@ "@typescript-eslint/typescript-estree" "5.62.0" debug "^4.3.4" -"@typescript-eslint/parser@^8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.0.1.tgz#eb0728147a3a79edf43dde84c797f117213bbfdb" - integrity sha512-5IgYJ9EO/12pOUwiBKFkpU7rS3IU21mtXzB81TNwq2xEybcmAZrE9qwDtsb5uQd9aVO9o0fdabFyAmKveXyujg== - dependencies: - "@typescript-eslint/scope-manager" "8.0.1" - "@typescript-eslint/types" "8.0.1" - "@typescript-eslint/typescript-estree" "8.0.1" - "@typescript-eslint/visitor-keys" "8.0.1" - debug "^4.3.4" - "@typescript-eslint/scope-manager@5.62.0": version "5.62.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" @@ -2724,21 +2769,13 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/scope-manager@8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.0.1.tgz#544259c29e1ebf65d30b6e99a9f420d98795a54e" - integrity sha512-NpixInP5dm7uukMiRyiHjRKkom5RIFA4dfiHvalanD2cF0CLUuQqxfg8PtEUo9yqJI2bBhF+pcSafqnG3UBnRQ== - dependencies: - "@typescript-eslint/types" "8.0.1" - "@typescript-eslint/visitor-keys" "8.0.1" - -"@typescript-eslint/scope-manager@8.12.0": - version "8.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.12.0.tgz#de23a4a652773efdd558c7e5ff7b734736f14318" - integrity sha512-jbuCXK18iEshRFUtlCIMAmOKA6OAsKjo41UcXPqx7ZWh2b4cmg6pV/pNcZSB7oW9mtgF95yizr7Jnwt3IUD2pA== +"@typescript-eslint/scope-manager@8.18.0": + version "8.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.18.0.tgz#30b040cb4557804a7e2bcc65cf8fdb630c96546f" + integrity sha512-PNGcHop0jkK2WVYGotk/hxj+UFLhXtGPiGtiaWgVBVP1jhMoMCHlTyJA+hEj4rszoSdLTK3fN4oOatrL0Cp+Xw== dependencies: - "@typescript-eslint/types" "8.12.0" - "@typescript-eslint/visitor-keys" "8.12.0" + "@typescript-eslint/types" "8.18.0" + "@typescript-eslint/visitor-keys" "8.18.0" "@typescript-eslint/type-utils@5.62.0": version "5.62.0" @@ -2750,23 +2787,13 @@ debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/type-utils@8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.0.1.tgz#a613ee2dfeed4a9781300b5d326ec7cf946eed92" - integrity sha512-+/UT25MWvXeDX9YaHv1IS6KI1fiuTto43WprE7pgSMswHbn1Jm9GEM4Txp+X74ifOWV8emu2AWcbLhpJAvD5Ng== - dependencies: - "@typescript-eslint/typescript-estree" "8.0.1" - "@typescript-eslint/utils" "8.0.1" - debug "^4.3.4" - ts-api-utils "^1.3.0" - -"@typescript-eslint/type-utils@8.12.0": - version "8.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.12.0.tgz#d1e2d2ed0b2cb5bca35312b085379fcfb5c812be" - integrity sha512-cHioAZO/nLgyzTmwv7gWIjEKMHSbioKEZqLCaItTn7RvJP1QipuGVwEjPJa6Kv9u9UiUMVAESY9JH186TjKITw== +"@typescript-eslint/type-utils@8.18.0": + version "8.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.18.0.tgz#6f0d12cf923b6fd95ae4d877708c0adaad93c471" + integrity sha512-er224jRepVAVLnMF2Q7MZJCq5CsdH2oqjP4dT7K6ij09Kyd+R21r7UVJrF0buMVdZS5QRhDzpvzAxHxabQadow== dependencies: - "@typescript-eslint/typescript-estree" "8.12.0" - "@typescript-eslint/utils" "8.12.0" + "@typescript-eslint/typescript-estree" "8.18.0" + "@typescript-eslint/utils" "8.18.0" debug "^4.3.4" ts-api-utils "^1.3.0" @@ -2775,15 +2802,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/types@8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.0.1.tgz#333e2f4c158952dbc8181a4ddcc6e49898a28918" - integrity sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw== - -"@typescript-eslint/types@8.12.0": - version "8.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.12.0.tgz#f35d846af8e2248a7e2136fe714a42be3b3154ef" - integrity sha512-Cc+iNtqBJ492f8KLEmKXe1l6683P0MlFO8Bk1NMphnzVIGH4/Wn9kvandFH+gYR1DDUjH/hgeWRGdO5Tj8gjYg== +"@typescript-eslint/types@8.18.0": + version "8.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.18.0.tgz#3afcd30def8756bc78541268ea819a043221d5f3" + integrity sha512-FNYxgyTCAnFwTrzpBGq+zrnoTO4x0c1CKYY5MuUTzpScqmY5fmsh2o3+57lqdI3NZucBDCzDgdEbIaNfAjAHQA== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" @@ -2798,27 +2820,13 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.1.tgz#64575ec7b77aedfe497acdfb2779ec942bb8d866" - integrity sha512-8V9hriRvZQXPWU3bbiUV4Epo7EvgM6RTs+sUmxp5G//dBGy402S7Fx0W0QkB2fb4obCF8SInoUzvTYtc3bkb5w== - dependencies: - "@typescript-eslint/types" "8.0.1" - "@typescript-eslint/visitor-keys" "8.0.1" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "^9.0.4" - semver "^7.6.0" - ts-api-utils "^1.3.0" - -"@typescript-eslint/typescript-estree@8.12.0": - version "8.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.12.0.tgz#6e087bd46f7682c07e971fb1d9dfa5bdc6f45f64" - integrity sha512-a4koVV7HHVOQWcGb6ZcAlunJnAdwo/CITRbleQBSjq5+2WLoAJQCAAiecvrAdSM+n/man6Ghig5YgdGVIC6xqw== +"@typescript-eslint/typescript-estree@8.18.0": + version "8.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.0.tgz#d8ca785799fbb9c700cdff1a79c046c3e633c7f9" + integrity sha512-rqQgFRu6yPkauz+ms3nQpohwejS8bvgbPyIDq13cgEDbkXt4LH4OkDMT0/fN1RUtzG8e8AKJyDBoocuQh8qNeg== dependencies: - "@typescript-eslint/types" "8.12.0" - "@typescript-eslint/visitor-keys" "8.12.0" + "@typescript-eslint/types" "8.18.0" + "@typescript-eslint/visitor-keys" "8.18.0" debug "^4.3.4" fast-glob "^3.3.2" is-glob "^4.0.3" @@ -2840,25 +2848,15 @@ eslint-scope "^5.1.1" semver "^7.3.7" -"@typescript-eslint/utils@8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.0.1.tgz#b48e3320c4f9011f97d25e0588b8c143adc38d2a" - integrity sha512-CBFR0G0sCt0+fzfnKaciu9IBsKvEKYwN9UZ+eeogK1fYHg4Qxk1yf/wLQkLXlq8wbU2dFlgAesxt8Gi76E8RTA== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.0.1" - "@typescript-eslint/types" "8.0.1" - "@typescript-eslint/typescript-estree" "8.0.1" - -"@typescript-eslint/utils@8.12.0": - version "8.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.12.0.tgz#2967a5915ad4c500486341c79c0cfbc4f276bf47" - integrity sha512-5i1tqLwlf0fpX1j05paNKyIzla/a4Y3Xhh6AFzi0do/LDJLvohtZYaisaTB9kq0D4uBocAxWDTGzNMOCCwIgXA== +"@typescript-eslint/utils@8.18.0": + version "8.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.18.0.tgz#48f67205d42b65d895797bb7349d1be5c39a62f7" + integrity sha512-p6GLdY383i7h5b0Qrfbix3Vc3+J2k6QWw6UMUeY5JGfm3C5LbZ4QIZzJNoNOfgyRe0uuYKjvVOsO/jD4SJO+xg== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.12.0" - "@typescript-eslint/types" "8.12.0" - "@typescript-eslint/typescript-estree" "8.12.0" + "@typescript-eslint/scope-manager" "8.18.0" + "@typescript-eslint/types" "8.18.0" + "@typescript-eslint/typescript-estree" "8.18.0" "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" @@ -2868,157 +2866,149 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.1.tgz#e5816803b4dad1de5e97f00df8dc15d0bcb49778" - integrity sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ== +"@typescript-eslint/visitor-keys@8.18.0": + version "8.18.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.0.tgz#7b6d33534fa808e33a19951907231ad2ea5c36dd" + integrity sha512-pCh/qEA8Lb1wVIqNvBke8UaRjJ6wrAWkJO5yyIbs8Yx6TNGYyfNjOo61tLv+WwLvoLPp4BQ8B7AHKijl8NGUfw== dependencies: - "@typescript-eslint/types" "8.0.1" - eslint-visitor-keys "^3.4.3" - -"@typescript-eslint/visitor-keys@8.12.0": - version "8.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.12.0.tgz#a9fcd973a546a7c78593d0501debdc9ebab8b340" - integrity sha512-2rXkr+AtZZLuNY18aUjv5wtB9oUiwY1WnNi7VTsdCdy1m958ULeUKoAegldQTjqpbpNJ5cQ4egR8/bh5tbrKKQ== - dependencies: - "@typescript-eslint/types" "8.12.0" - eslint-visitor-keys "^3.4.3" + "@typescript-eslint/types" "8.18.0" + eslint-visitor-keys "^4.2.0" "@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + version "1.2.1" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.1.tgz#28fa185f67daaf7b7a1a8c1d445132c5d979f8bd" + integrity sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA== "@vitejs/plugin-react@^4.2.1": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.3.1.tgz#d0be6594051ded8957df555ff07a991fb618b48e" - integrity sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg== + version "4.3.4" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz#c64be10b54c4640135a5b28a2432330e88ad7c20" + integrity sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug== dependencies: - "@babel/core" "^7.24.5" - "@babel/plugin-transform-react-jsx-self" "^7.24.5" - "@babel/plugin-transform-react-jsx-source" "^7.24.1" + "@babel/core" "^7.26.0" + "@babel/plugin-transform-react-jsx-self" "^7.25.9" + "@babel/plugin-transform-react-jsx-source" "^7.25.9" "@types/babel__core" "^7.20.5" react-refresh "^0.14.2" -"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" - integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== +"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" + integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== dependencies: - "@webassemblyjs/helper-numbers" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-numbers" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" -"@webassemblyjs/floating-point-hex-parser@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" - integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== +"@webassemblyjs/floating-point-hex-parser@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz#fcca1eeddb1cc4e7b6eed4fc7956d6813b21b9fb" + integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== -"@webassemblyjs/helper-api-error@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" - integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== +"@webassemblyjs/helper-api-error@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz#e0a16152248bc38daee76dd7e21f15c5ef3ab1e7" + integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== -"@webassemblyjs/helper-buffer@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" - integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== +"@webassemblyjs/helper-buffer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz#822a9bc603166531f7d5df84e67b5bf99b72b96b" + integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== -"@webassemblyjs/helper-numbers@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" - integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== +"@webassemblyjs/helper-numbers@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz#dbd932548e7119f4b8a7877fd5a8d20e63490b2d" + integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.6" - "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/floating-point-hex-parser" "1.13.2" + "@webassemblyjs/helper-api-error" "1.13.2" "@xtuc/long" "4.2.2" -"@webassemblyjs/helper-wasm-bytecode@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" - integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== +"@webassemblyjs/helper-wasm-bytecode@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz#e556108758f448aae84c850e593ce18a0eb31e0b" + integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== -"@webassemblyjs/helper-wasm-section@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" - integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== +"@webassemblyjs/helper-wasm-section@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz#9629dda9c4430eab54b591053d6dc6f3ba050348" + integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/wasm-gen" "1.12.1" + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/wasm-gen" "1.14.1" -"@webassemblyjs/ieee754@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" - integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== +"@webassemblyjs/ieee754@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz#1c5eaace1d606ada2c7fd7045ea9356c59ee0dba" + integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" - integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== +"@webassemblyjs/leb128@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz#57c5c3deb0105d02ce25fa3fd74f4ebc9fd0bbb0" + integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.11.6": - version "1.11.6" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" - integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== +"@webassemblyjs/utf8@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz#917a20e93f71ad5602966c2d685ae0c6c21f60f1" + integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== -"@webassemblyjs/wasm-edit@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" - integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== - dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/helper-wasm-section" "1.12.1" - "@webassemblyjs/wasm-gen" "1.12.1" - "@webassemblyjs/wasm-opt" "1.12.1" - "@webassemblyjs/wasm-parser" "1.12.1" - "@webassemblyjs/wast-printer" "1.12.1" - -"@webassemblyjs/wasm-gen@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" - integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== +"@webassemblyjs/wasm-edit@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz#ac6689f502219b59198ddec42dcd496b1004d597" + integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/helper-wasm-section" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-opt" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + "@webassemblyjs/wast-printer" "1.14.1" + +"@webassemblyjs/wasm-gen@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz#991e7f0c090cb0bb62bbac882076e3d219da9570" + integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" -"@webassemblyjs/wasm-opt@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" - integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== +"@webassemblyjs/wasm-opt@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz#e6f71ed7ccae46781c206017d3c14c50efa8106b" + integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-buffer" "1.12.1" - "@webassemblyjs/wasm-gen" "1.12.1" - "@webassemblyjs/wasm-parser" "1.12.1" + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" -"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" - integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== +"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz#b3e13f1893605ca78b52c68e54cf6a865f90b9fb" + integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== dependencies: - "@webassemblyjs/ast" "1.12.1" - "@webassemblyjs/helper-api-error" "1.11.6" - "@webassemblyjs/helper-wasm-bytecode" "1.11.6" - "@webassemblyjs/ieee754" "1.11.6" - "@webassemblyjs/leb128" "1.11.6" - "@webassemblyjs/utf8" "1.11.6" + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-api-error" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" -"@webassemblyjs/wast-printer@1.12.1": - version "1.12.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" - integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== +"@webassemblyjs/wast-printer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz#3bb3e9638a8ae5fdaf9610e7a06b4d9f9aa6fe07" + integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== dependencies: - "@webassemblyjs/ast" "1.12.1" + "@webassemblyjs/ast" "1.14.1" "@xtuc/long" "4.2.2" "@xtuc/ieee754@^1.2.0": @@ -3036,7 +3026,7 @@ abab@^2.0.3, abab@^2.0.5: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: +accepts@~1.3.4, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== @@ -3052,11 +3042,6 @@ acorn-globals@^6.0.0: acorn "^7.1.1" acorn-walk "^7.1.1" -acorn-import-attributes@^1.9.5: - version "1.9.5" - resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" - integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== - acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -3072,10 +3057,10 @@ acorn@^7.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.12.0, acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.12.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" - integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== +acorn@^8.14.0, acorn@^8.2.4, acorn@^8.8.2, acorn@^8.9.0: + version "8.14.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" + integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== address@^1.0.1, address@^1.1.2: version "1.2.2" @@ -3164,9 +3149,9 @@ ansi-regex@^5.0.1: integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" + integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== ansi-styles@^3.2.1: version "3.2.1" @@ -3222,21 +3207,12 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== -aria-query@^5.0.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" - integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== - dependencies: - dequal "^2.0.3" - -aria-query@~5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" - integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== - dependencies: - deep-equal "^2.0.5" +aria-query@^5.0.0, aria-query@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.2.tgz#93f81a43480e33a338f19163a3d10a50c01dcd59" + integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw== -array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: +array-buffer-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== @@ -3249,7 +3225,7 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -array-includes@^3.1.6, array-includes@^3.1.7, array-includes@^3.1.8: +array-includes@^3.1.6, array-includes@^3.1.8: version "3.1.8" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== @@ -3278,7 +3254,7 @@ array.prototype.findlast@^1.2.5: es-object-atoms "^1.0.0" es-shim-unscopables "^1.0.2" -array.prototype.findlastindex@^1.2.3: +array.prototype.findlastindex@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== @@ -3348,7 +3324,7 @@ arraybuffer.prototype.slice@^1.0.3: is-array-buffer "^3.0.4" is-shared-array-buffer "^1.0.2" -asap@~2.0.3, asap@~2.0.6: +asap@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== @@ -3359,9 +3335,9 @@ ast-types-flow@^0.0.8: integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ== async@^3.2.3: - version "3.2.5" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" - integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== + version "3.2.6" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" + integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== asynckit@^0.4.0: version "0.4.0" @@ -3392,17 +3368,15 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" -axe-core@^4.9.1: - version "4.10.0" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.0.tgz#d9e56ab0147278272739a000880196cdfe113b59" - integrity sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g== +axe-core@^4.10.0: + version "4.10.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.2.tgz#85228e3e1d8b8532a27659b332e39b7fa0e022df" + integrity sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w== -axobject-query@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1" - integrity sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg== - dependencies: - deep-equal "^2.0.5" +axobject-query@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-4.1.0.tgz#28768c76d0e3cff21bc62a9e2d0b6ac30042a1ee" + integrity sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ== babel-jest@^27.4.2, babel-jest@^27.5.1: version "27.5.1" @@ -3419,12 +3393,12 @@ babel-jest@^27.4.2, babel-jest@^27.5.1: slash "^3.0.0" babel-loader@^8.2.3: - version "8.3.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" - integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== + version "8.4.1" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.4.1.tgz#6ccb75c66e62c3b144e1c5f2eaec5b8f6c08c675" + integrity sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA== dependencies: find-cache-dir "^3.3.1" - loader-utils "^2.0.0" + loader-utils "^2.0.4" make-dir "^3.1.0" schema-utils "^2.6.5" @@ -3464,15 +3438,15 @@ babel-plugin-named-asset-import@^0.3.8: integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== babel-plugin-polyfill-corejs2@^0.4.10: - version "0.4.11" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" - integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== + version "0.4.12" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz#ca55bbec8ab0edeeef3d7b8ffd75322e210879a9" + integrity sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og== dependencies: "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.6.2" + "@babel/helper-define-polyfill-provider" "^0.6.3" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: +babel-plugin-polyfill-corejs3@^0.10.6: version "0.10.6" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz#2deda57caef50f59c525aeb4964d3b2f867710c7" integrity sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA== @@ -3481,11 +3455,11 @@ babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: core-js-compat "^3.38.0" babel-plugin-polyfill-regenerator@^0.6.1: - version "0.6.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e" - integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== + version "0.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz#abeb1f3f1c762eace37587f42548b08b57789bc8" + integrity sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q== dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.2" + "@babel/helper-define-polyfill-provider" "^0.6.3" babel-plugin-transform-react-remove-prop-types@^0.4.24: version "0.4.24" @@ -3493,22 +3467,25 @@ babel-plugin-transform-react-remove-prop-types@^0.4.24: integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + version "1.1.0" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz#9a929eafece419612ef4ae4f60b1862ebad8ef30" + integrity sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-import-attributes" "^7.24.7" + "@babel/plugin-syntax-import-meta" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" babel-preset-jest@^27.5.1: version "27.5.1" @@ -3545,11 +3522,6 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base16@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" - integrity sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ== - batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" @@ -3581,10 +3553,10 @@ bluebird@^3.7.2: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -body-parser@1.20.2: - version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== +body-parser@1.20.3: + version "1.20.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== dependencies: bytes "3.1.2" content-type "~1.0.5" @@ -3594,15 +3566,15 @@ body-parser@1.20.2: http-errors "2.0.0" iconv-lite "0.4.24" on-finished "2.4.1" - qs "6.11.0" + qs "6.13.0" raw-body "2.5.2" type-is "~1.6.18" unpipe "1.0.0" bonjour-service@^1.0.11: - version "1.2.1" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.2.1.tgz#eb41b3085183df3321da1264719fbada12478d02" - integrity sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw== + version "1.3.0" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.3.0.tgz#80d867430b5a0da64e82a8047fc1e355bdb71722" + integrity sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA== dependencies: fast-deep-equal "^3.1.3" multicast-dns "^7.2.5" @@ -3644,15 +3616,15 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.23.1, browserslist@^4.23.3: - version "4.23.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" - integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== +browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.4, browserslist@^4.23.3, browserslist@^4.24.0, browserslist@^4.24.2: + version "4.24.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.2.tgz#f5845bc91069dbd55ee89faf9822e1d885d16580" + integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg== dependencies: - caniuse-lite "^1.0.30001646" - electron-to-chromium "^1.5.4" + caniuse-lite "^1.0.30001669" + electron-to-chromium "^1.5.41" node-releases "^2.0.18" - update-browserslist-db "^1.1.0" + update-browserslist-db "^1.1.1" bser@2.1.1: version "2.1.1" @@ -3676,11 +3648,6 @@ builtin-modules@^3.1.0: resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== - bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" @@ -3691,16 +3658,23 @@ cac@^6.7.14: resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== -call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" - integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== +call-bind-apply-helpers@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz#32e5892e6361b29b0b545ba6f7763378daca2840" + integrity sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g== dependencies: - es-define-property "^1.0.0" es-errors "^1.3.0" function-bind "^1.1.2" + +call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7, call-bind@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" + integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-define-property "^1.0.0" get-intrinsic "^1.2.4" - set-function-length "^1.2.1" + set-function-length "^1.2.2" call-me-maybe@^1.0.1: version "1.0.2" @@ -3745,17 +3719,17 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646: - version "1.0.30001649" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001649.tgz#3ec700309ca0da2b0d3d5fb03c411b191761c992" - integrity sha512-fJegqZZ0ZX8HOWr6rcafGr72+xcgJKI9oWfDW5DrD7ExUtgZC7a7R7ZYmZqplh7XDocFdGeIFn7roAxhOeYrPQ== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001669: + version "1.0.30001687" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001687.tgz#d0ac634d043648498eedf7a3932836beba90ebae" + integrity sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ== case-sensitive-paths-webpack-plugin@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== -chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.4.1: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3786,16 +3760,16 @@ char-regex@^1.0.2: integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== char-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.1.tgz#6dafdb25f9d3349914079f010ba8d0e6ff9cd01e" - integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.2.tgz#81385bb071af4df774bff8721d0ca15ef29ea0bb" + integrity sha512-cbGOjAptfM2LVmWhwRFHEKTPkLwNddVmuqYZQt895yXwAsWsXObCG+YN4DGQ/JBtT4GP1a1lPPdio2z413LmTg== check-types@^11.2.3: version "11.2.3" resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.2.3.tgz#1ffdf68faae4e941fce252840b1787b8edc93b71" integrity sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg== -"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.2, chokidar@^3.5.3: +chokidar@^3.4.2, chokidar@^3.5.3, chokidar@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -3810,6 +3784,13 @@ check-types@^11.2.3: optionalDependencies: fsevents "~2.3.2" +chokidar@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.1.tgz#4a6dff66798fb0f72a94f616abbd7e1a19f31d41" + integrity sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA== + dependencies: + readdirp "^4.0.1" + chrome-trace-event@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" @@ -3821,9 +3802,9 @@ ci-info@^3.2.0: integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== cjs-module-lexer@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz#c485341ae8fd999ca4ee5af2d7a1c9ae01e0099c" - integrity sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q== + version "1.4.1" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz#707413784dbb3a72aa11c2f2b042a0bef4004170" + integrity sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA== classnames@^2.3.2: version "2.5.1" @@ -3960,7 +3941,7 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== -compressible@~2.0.16: +compressible@~2.0.18: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== @@ -3968,16 +3949,16 @@ compressible@~2.0.16: mime-db ">= 1.43.0 < 2" compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + version "1.7.5" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.5.tgz#fdd256c0a642e39e314c478f6c2cd654edd74c93" + integrity sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q== dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" + bytes "3.1.2" + compressible "~2.0.18" debug "2.6.9" + negotiator "~0.6.4" on-headers "~1.0.2" - safe-buffer "5.1.2" + safe-buffer "5.2.1" vary "~1.1.2" concat-map@0.0.1: @@ -4022,27 +4003,27 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -cookie@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" - integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== +cookie@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9" + integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== -core-js-compat@^3.37.1, core-js-compat@^3.38.0: - version "3.38.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.38.0.tgz#d93393b1aa346b6ee683377b0c31172ccfe607aa" - integrity sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A== +core-js-compat@^3.38.0, core-js-compat@^3.38.1: + version "3.39.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.39.0.tgz#b12dccb495f2601dc860bdbe7b4e3ffa8ba63f61" + integrity sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw== dependencies: - browserslist "^4.23.3" + browserslist "^4.24.2" core-js-pure@^3.23.3: - version "3.38.0" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.38.0.tgz#bc802cd152e33d5b0ec733b656c71cb847cac701" - integrity sha512-8balb/HAXo06aHP58mZMtXgD8vcnXz9tUDePgqBgJgKdmTlMt+jw3ujqniuBDQXMvTzxnMpxHFeuSM3g1jWQuQ== + version "3.39.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.39.0.tgz#aa0d54d70a15bdc13e7c853db87c10abc30d68f3" + integrity sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg== core-js@^3.19.2: - version "3.38.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.38.0.tgz#8acb7c050bf2ccbb35f938c0d040132f6110f636" - integrity sha512-XPpwqEodRljce9KswjZShh95qJ1URisBeKCjUdq27YdenkslVe7OO0ZJhlYXAChW7OhXaRLl8AAba7IBfoIHug== + version "3.39.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.39.0.tgz#57f7647f4d2d030c32a72ea23a0555b2eaa30f83" + integrity sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g== core-util-is@~1.0.0: version "1.0.3" @@ -4071,17 +4052,10 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -cross-fetch@^3.1.5: - version "3.1.8" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" - integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== - dependencies: - node-fetch "^2.6.12" - -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.5: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" @@ -4336,11 +4310,11 @@ debug@2.6.9, debug@^2.6.0: ms "2.0.0" debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" - integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== + version "4.4.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" + integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== dependencies: - ms "2.1.2" + ms "^2.1.3" debug@^3.2.7: version "3.2.7" @@ -4359,30 +4333,6 @@ dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== -deep-equal@^2.0.5: - version "2.2.3" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" - integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== - dependencies: - array-buffer-byte-length "^1.0.0" - call-bind "^1.0.5" - es-get-iterator "^1.1.3" - get-intrinsic "^1.2.2" - is-arguments "^1.1.1" - is-array-buffer "^3.0.2" - is-date-object "^1.0.5" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - isarray "^2.0.5" - object-is "^1.1.5" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.5.1" - side-channel "^1.0.4" - which-boxed-primitive "^1.0.2" - which-collection "^1.0.1" - which-typed-array "^1.1.13" - deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" @@ -4448,6 +4398,11 @@ destroy@1.2.0: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -4612,6 +4567,15 @@ dotenv@^10.0.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== +dunder-proto@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.0.tgz#c2fce098b3c8f8899554905f4377b6d85dabaa80" + integrity sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-errors "^1.3.0" + gopd "^1.2.0" + duplexer@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" @@ -4634,10 +4598,10 @@ ejs@^3.1.6: dependencies: jake "^10.8.5" -electron-to-chromium@^1.5.4: - version "1.5.5" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.5.tgz#03bfdf422bdd2c05ee2657efedde21264a1a566b" - integrity sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA== +electron-to-chromium@^1.5.41: + version "1.5.72" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.72.tgz#a732805986d3a5b5fedd438ddf4616c7d78ac2df" + integrity sha512-ZpSAUOZ2Izby7qnZluSrAlGgGQzucmFbN0n64dYzocYxnxV5ufurpj3VgEe4cUp7ir9LmeLxNYo8bVnlM8bQHw== emittery@^0.10.2: version "0.10.2" @@ -4669,7 +4633,12 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -enhanced-resolve@^5.17.0: +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + +enhanced-resolve@^5.17.1: version "5.17.1" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15" integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg== @@ -4696,10 +4665,10 @@ error-stack-parser@^2.0.6: dependencies: stackframe "^1.3.4" -es-abstract@^1.17.2, es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: - version "1.23.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" - integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== +es-abstract@^1.17.2, es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5: + version "1.23.5" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.5.tgz#f4599a4946d57ed467515ed10e4f157289cd52fb" + integrity sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ== dependencies: array-buffer-byte-length "^1.0.1" arraybuffer.prototype.slice "^1.0.3" @@ -4716,7 +4685,7 @@ es-abstract@^1.17.2, es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22 function.prototype.name "^1.1.6" get-intrinsic "^1.2.4" get-symbol-description "^1.0.2" - globalthis "^1.0.3" + globalthis "^1.0.4" gopd "^1.0.1" has-property-descriptors "^1.0.2" has-proto "^1.0.3" @@ -4732,10 +4701,10 @@ es-abstract@^1.17.2, es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22 is-string "^1.0.7" is-typed-array "^1.1.13" is-weakref "^1.0.2" - object-inspect "^1.13.1" + object-inspect "^1.13.3" object-keys "^1.1.1" object.assign "^4.1.5" - regexp.prototype.flags "^1.5.2" + regexp.prototype.flags "^1.5.3" safe-array-concat "^1.1.2" safe-regex-test "^1.0.3" string.prototype.trim "^1.2.9" @@ -4753,37 +4722,20 @@ es-array-method-boxes-properly@^1.0.0: resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== -es-define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" - integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== - dependencies: - get-intrinsic "^1.2.4" +es-define-property@^1.0.0, es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== es-errors@^1.2.1, es-errors@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== -es-get-iterator@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" - integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" - has-symbols "^1.0.3" - is-arguments "^1.1.1" - is-map "^2.0.2" - is-set "^2.0.2" - is-string "^1.0.7" - isarray "^2.0.5" - stop-iteration-iterator "^1.0.0" - -es-iterator-helpers@^1.0.19: - version "1.0.19" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#117003d0e5fec237b4b5c08aded722e0c6d50ca8" - integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw== +es-iterator-helpers@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.2.0.tgz#2f1a3ab998b30cb2d10b195b587c6d9ebdebf152" + integrity sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q== dependencies: call-bind "^1.0.7" define-properties "^1.2.1" @@ -4792,12 +4744,13 @@ es-iterator-helpers@^1.0.19: es-set-tostringtag "^2.0.3" function-bind "^1.1.2" get-intrinsic "^1.2.4" - globalthis "^1.0.3" + globalthis "^1.0.4" + gopd "^1.0.1" has-property-descriptors "^1.0.2" has-proto "^1.0.3" has-symbols "^1.0.3" internal-slot "^1.0.7" - iterator.prototype "^1.1.2" + iterator.prototype "^1.1.3" safe-array-concat "^1.1.2" es-module-lexer@^1.2.1: @@ -4829,52 +4782,53 @@ es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: hasown "^2.0.0" es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.3.0.tgz#96c89c82cc49fd8794a24835ba3e1ff87f214e18" + integrity sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g== dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" + is-callable "^1.2.7" + is-date-object "^1.0.5" + is-symbol "^1.0.4" es6-promise@^3.2.1: version "3.3.1" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" integrity sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg== -esbuild@^0.21.3: - version "0.21.5" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d" - integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== +esbuild@^0.24.0: + version "0.24.0" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.24.0.tgz#f2d470596885fcb2e91c21eb3da3b3c89c0b55e7" + integrity sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ== optionalDependencies: - "@esbuild/aix-ppc64" "0.21.5" - "@esbuild/android-arm" "0.21.5" - "@esbuild/android-arm64" "0.21.5" - "@esbuild/android-x64" "0.21.5" - "@esbuild/darwin-arm64" "0.21.5" - "@esbuild/darwin-x64" "0.21.5" - "@esbuild/freebsd-arm64" "0.21.5" - "@esbuild/freebsd-x64" "0.21.5" - "@esbuild/linux-arm" "0.21.5" - "@esbuild/linux-arm64" "0.21.5" - "@esbuild/linux-ia32" "0.21.5" - "@esbuild/linux-loong64" "0.21.5" - "@esbuild/linux-mips64el" "0.21.5" - "@esbuild/linux-ppc64" "0.21.5" - "@esbuild/linux-riscv64" "0.21.5" - "@esbuild/linux-s390x" "0.21.5" - "@esbuild/linux-x64" "0.21.5" - "@esbuild/netbsd-x64" "0.21.5" - "@esbuild/openbsd-x64" "0.21.5" - "@esbuild/sunos-x64" "0.21.5" - "@esbuild/win32-arm64" "0.21.5" - "@esbuild/win32-ia32" "0.21.5" - "@esbuild/win32-x64" "0.21.5" - -escalade@^3.1.1, escalade@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" - integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + "@esbuild/aix-ppc64" "0.24.0" + "@esbuild/android-arm" "0.24.0" + "@esbuild/android-arm64" "0.24.0" + "@esbuild/android-x64" "0.24.0" + "@esbuild/darwin-arm64" "0.24.0" + "@esbuild/darwin-x64" "0.24.0" + "@esbuild/freebsd-arm64" "0.24.0" + "@esbuild/freebsd-x64" "0.24.0" + "@esbuild/linux-arm" "0.24.0" + "@esbuild/linux-arm64" "0.24.0" + "@esbuild/linux-ia32" "0.24.0" + "@esbuild/linux-loong64" "0.24.0" + "@esbuild/linux-mips64el" "0.24.0" + "@esbuild/linux-ppc64" "0.24.0" + "@esbuild/linux-riscv64" "0.24.0" + "@esbuild/linux-s390x" "0.24.0" + "@esbuild/linux-x64" "0.24.0" + "@esbuild/netbsd-x64" "0.24.0" + "@esbuild/openbsd-arm64" "0.24.0" + "@esbuild/openbsd-x64" "0.24.0" + "@esbuild/sunos-x64" "0.24.0" + "@esbuild/win32-arm64" "0.24.0" + "@esbuild/win32-ia32" "0.24.0" + "@esbuild/win32-x64" "0.24.0" + +escalade@^3.1.1, escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== escape-html@~1.0.3: version "1.0.3" @@ -4970,10 +4924,10 @@ eslint-import-resolver-node@^0.3.9: is-core-module "^2.13.0" resolve "^1.22.4" -eslint-module-utils@^2.8.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" - integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== +eslint-module-utils@^2.12.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" + integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== dependencies: debug "^3.2.7" @@ -4986,26 +4940,28 @@ eslint-plugin-flowtype@^8.0.3: string-natural-compare "^3.0.1" eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.27.5: - version "2.29.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" - integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== + version "2.31.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" + integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== dependencies: - array-includes "^3.1.7" - array.prototype.findlastindex "^1.2.3" + "@rtsao/scc" "^1.1.0" + array-includes "^3.1.8" + array.prototype.findlastindex "^1.2.5" array.prototype.flat "^1.3.2" array.prototype.flatmap "^1.3.2" debug "^3.2.7" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.8.0" - hasown "^2.0.0" - is-core-module "^2.13.1" + eslint-module-utils "^2.12.0" + hasown "^2.0.2" + is-core-module "^2.15.1" is-glob "^4.0.3" minimatch "^3.1.2" - object.fromentries "^2.0.7" - object.groupby "^1.0.1" - object.values "^1.1.7" + object.fromentries "^2.0.8" + object.groupby "^1.0.3" + object.values "^1.2.0" semver "^6.3.1" + string.prototype.trimend "^1.0.8" tsconfig-paths "^3.15.0" eslint-plugin-jest@^25.3.0: @@ -5016,26 +4972,25 @@ eslint-plugin-jest@^25.3.0: "@typescript-eslint/experimental-utils" "^5.0.0" eslint-plugin-jsx-a11y@^6.5.1, eslint-plugin-jsx-a11y@^6.7.1: - version "6.9.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz#67ab8ff460d4d3d6a0b4a570e9c1670a0a8245c8" - integrity sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g== + version "6.10.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz#d2812bb23bf1ab4665f1718ea442e8372e638483" + integrity sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q== dependencies: - aria-query "~5.1.3" + aria-query "^5.3.2" array-includes "^3.1.8" array.prototype.flatmap "^1.3.2" ast-types-flow "^0.0.8" - axe-core "^4.9.1" - axobject-query "~3.1.1" + axe-core "^4.10.0" + axobject-query "^4.1.0" damerau-levenshtein "^1.0.8" emoji-regex "^9.2.2" - es-iterator-helpers "^1.0.19" hasown "^2.0.2" jsx-ast-utils "^3.3.5" language-tags "^1.0.9" minimatch "^3.1.2" object.fromentries "^2.0.8" safe-regex-test "^1.0.3" - string.prototype.includes "^2.0.0" + string.prototype.includes "^2.0.1" eslint-plugin-prettier@^5.2.1: version "5.2.1" @@ -5051,26 +5006,26 @@ eslint-plugin-react-hooks@^4.3.0: integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== eslint-plugin-react-hooks@^5.1.0-rc.0: - version "5.1.0-rc-fb9a90fa48-20240614" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0-rc-fb9a90fa48-20240614.tgz#206a7ec005f0b286aaf7091f4e566083d310b189" - integrity sha512-xsiRwaDNF5wWNC4ZHLut+x/YcAxksUd9Rizt7LaEn3bV8VyYRpXnRJQlLOfYaVy9esk4DFP4zPPnoNVjq5Gc0w== + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz#3d34e37d5770866c34b87d5b499f5f0b53bf0854" + integrity sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw== eslint-plugin-react-refresh@^0.4.9: - version "0.4.14" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.14.tgz#e3c611ead69bbf7436d01295c853d4abb8c59f68" - integrity sha512-aXvzCTK7ZBv1e7fahFuR3Z/fyQQSIQ711yPgYRj+Oj64tyTgO4iQIDmYXDBqvSWQ/FA4OSCsXOStlF+noU0/NA== + version "0.4.16" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.16.tgz#149dbc9279bd16942409f1c1d2f0dce3299430ef" + integrity sha512-slterMlxAhov/DZO8NScf6mEeMBBXodFUolijDvrtTxyezyLoTQaa73FyYus/VbTdftd8wBgBxPMRk3poleXNQ== eslint-plugin-react@^7.27.1, eslint-plugin-react@^7.32.2: - version "7.35.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz#00b1e4559896710e58af6358898f2ff917ea4c41" - integrity sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA== + version "7.37.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz#cd0935987876ba2900df2f58339f6d92305acc7a" + integrity sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w== dependencies: array-includes "^3.1.8" array.prototype.findlast "^1.2.5" array.prototype.flatmap "^1.3.2" array.prototype.tosorted "^1.1.4" doctrine "^2.1.0" - es-iterator-helpers "^1.0.19" + es-iterator-helpers "^1.1.0" estraverse "^5.3.0" hasown "^2.0.2" jsx-ast-utils "^2.4.1 || ^3.0.0" @@ -5107,10 +5062,10 @@ eslint-scope@^7.2.2: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-scope@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.1.0.tgz#70214a174d4cbffbc3e8a26911d8bf51b9ae9d30" - integrity sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw== +eslint-scope@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.2.0.tgz#377aa6f1cb5dc7592cfd0b7f892fd0cf352ce442" + integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -5125,15 +5080,10 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint-visitor-keys@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb" - integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw== - -eslint-visitor-keys@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz#1f785cc5e81eb7534523d85922248232077d2f8c" - integrity sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg== +eslint-visitor-keys@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" + integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== eslint-webpack-plugin@^3.1.1: version "3.2.0" @@ -5147,15 +5097,15 @@ eslint-webpack-plugin@^3.1.1: schema-utils "^4.0.0" eslint@^8.3.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== + version "8.57.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" + integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" + "@eslint/js" "8.57.1" + "@humanwhocodes/config-array" "^0.13.0" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" "@ungap/structured-clone" "^1.2.0" @@ -5191,30 +5141,30 @@ eslint@^8.3.0: text-table "^0.2.0" eslint@^9.9.0: - version "9.13.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.13.0.tgz#7659014b7dda1ff876ecbd990f726e11c61596e6" - integrity sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA== + version "9.16.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.16.0.tgz#66832e66258922ac0a626f803a9273e37747f2a6" + integrity sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.11.0" - "@eslint/config-array" "^0.18.0" - "@eslint/core" "^0.7.0" - "@eslint/eslintrc" "^3.1.0" - "@eslint/js" "9.13.0" - "@eslint/plugin-kit" "^0.2.0" - "@humanfs/node" "^0.16.5" + "@eslint-community/regexpp" "^4.12.1" + "@eslint/config-array" "^0.19.0" + "@eslint/core" "^0.9.0" + "@eslint/eslintrc" "^3.2.0" + "@eslint/js" "9.16.0" + "@eslint/plugin-kit" "^0.2.3" + "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" - "@humanwhocodes/retry" "^0.3.1" + "@humanwhocodes/retry" "^0.4.1" "@types/estree" "^1.0.6" "@types/json-schema" "^7.0.15" ajv "^6.12.4" chalk "^4.0.0" - cross-spawn "^7.0.2" + cross-spawn "^7.0.5" debug "^4.3.2" escape-string-regexp "^4.0.0" - eslint-scope "^8.1.0" - eslint-visitor-keys "^4.1.0" - espree "^10.2.0" + eslint-scope "^8.2.0" + eslint-visitor-keys "^4.2.0" + espree "^10.3.0" esquery "^1.5.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -5229,25 +5179,15 @@ eslint@^9.9.0: minimatch "^3.1.2" natural-compare "^1.4.0" optionator "^0.9.3" - text-table "^0.2.0" - -espree@^10.0.1: - version "10.1.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-10.1.0.tgz#8788dae611574c0f070691f522e4116c5a11fc56" - integrity sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA== - dependencies: - acorn "^8.12.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^4.0.0" -espree@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-10.2.0.tgz#f4bcead9e05b0615c968e85f83816bc386a45df6" - integrity sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g== +espree@^10.0.1, espree@^10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" + integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== dependencies: - acorn "^8.12.0" + acorn "^8.14.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^4.1.0" + eslint-visitor-keys "^4.2.0" espree@^9.6.0, espree@^9.6.1: version "9.6.1" @@ -5348,36 +5288,36 @@ expect@^27.5.1: jest-message-util "^27.5.1" express@^4.17.3: - version "4.19.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" - integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== + version "4.21.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.21.2.tgz#cf250e48362174ead6cea4a566abef0162c1ec32" + integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.2" + body-parser "1.20.3" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.6.0" + cookie "0.7.1" cookie-signature "1.0.6" debug "2.6.9" depd "2.0.0" - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "1.2.0" + finalhandler "1.3.1" fresh "0.5.2" http-errors "2.0.0" - merge-descriptors "1.0.1" + merge-descriptors "1.0.3" methods "~1.1.2" on-finished "2.4.1" parseurl "~1.3.3" - path-to-regexp "0.1.7" + path-to-regexp "0.1.12" proxy-addr "~2.0.7" - qs "6.11.0" + qs "6.13.0" range-parser "~1.2.1" safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" + send "0.19.0" + serve-static "1.16.2" setprototypeof "1.2.0" statuses "2.0.1" type-is "~1.6.18" @@ -5394,7 +5334,7 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2: +fast-glob@^3.2.9, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -5421,9 +5361,9 @@ fast-safe-stringify@^2.0.7: integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== fast-uri@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.1.tgz#cddd2eecfc83a71c1be2cc2ef2061331be8a7134" - integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw== + version "3.0.3" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.3.tgz#892a1c91802d5d7860de728f18608a0573142241" + integrity sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw== fastq@^1.6.0: version "1.17.1" @@ -5446,31 +5386,6 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -fbemitter@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/fbemitter/-/fbemitter-3.0.0.tgz#00b2a1af5411254aab416cd75f9e6289bee4bff3" - integrity sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw== - dependencies: - fbjs "^3.0.0" - -fbjs-css-vars@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" - integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== - -fbjs@^3.0.0, fbjs@^3.0.1: - version "3.0.5" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.5.tgz#aa0edb7d5caa6340011790bd9249dbef8a81128d" - integrity sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg== - dependencies: - cross-fetch "^3.1.5" - fbjs-css-vars "^1.0.0" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^1.0.35" - file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -5512,13 +5427,13 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== +finalhandler@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" + integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== dependencies: debug "2.6.9" - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" on-finished "2.4.1" parseurl "~1.3.3" @@ -5575,22 +5490,14 @@ flat-cache@^4.0.0: keyv "^4.5.4" flatted@^3.2.9: - version "3.3.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" - integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== - -flux@^4.0.1: - version "4.0.4" - resolved "https://registry.yarnpkg.com/flux/-/flux-4.0.4.tgz#9661182ea81d161ee1a6a6af10d20485ef2ac572" - integrity sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw== - dependencies: - fbemitter "^3.0.0" - fbjs "^3.0.1" + version "3.3.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.2.tgz#adba1448a9841bec72b42c532ea23dbbedef1a27" + integrity sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA== follow-redirects@^1.0.0: - version "1.15.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" - integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== + version "1.15.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" + integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== for-each@^0.3.3: version "0.3.3" @@ -5600,9 +5507,9 @@ for-each@^0.3.3: is-callable "^1.1.3" foreground-child@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.2.1.tgz#767004ccf3a5b30df39bed90718bab43fe0a59f7" - integrity sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA== + version "3.3.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" + integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== dependencies: cross-spawn "^7.0.0" signal-exit "^4.0.1" @@ -5627,9 +5534,9 @@ fork-ts-checker-webpack-plugin@^6.5.0: tapable "^1.0.0" form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + version "3.0.2" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.2.tgz#83ad9ced7c03feaad97e293d6f6091011e1659c8" + integrity sha512-sJe+TQb2vIaIyO783qN6BlMYWMw3WBOHA1Ay2qxsnjuafEOQFJ2JakedOQirT6D5XPRxDvS7AHYyem9fTpb4LQ== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" @@ -5714,16 +5621,19 @@ get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" - integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== +get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.5" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.5.tgz#dfe7dd1b30761b464fe51bf4bb00ac7c37b681e7" + integrity sha512-Y4+pKa7XeRUPWFNvOOYHkRYrfzW07oraURSvjDmRVOJ748OrVmeXtpE4+GCEHncjCjkTxPNRt8kEbxDhsn6VTg== dependencies: + call-bind-apply-helpers "^1.0.0" + dunder-proto "^1.0.0" + es-define-property "^1.0.1" es-errors "^1.3.0" function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" @@ -5826,11 +5736,11 @@ globals@^14.0.0: integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== globals@^15.9.0: - version "15.11.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-15.11.0.tgz#b96ed4c6998540c6fb824b24b5499216d2438d6e" - integrity sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw== + version "15.13.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.13.0.tgz#bbec719d69aafef188ecd67954aae76a696010fc" + integrity sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g== -globalthis@^1.0.3: +globalthis@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== @@ -5850,12 +5760,10 @@ globby@^11.0.4, globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" +gopd@^1.0.1, gopd@^1.1.0, gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" @@ -5884,7 +5792,7 @@ harmony-reflect@^1.4.6: resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== -has-bigints@^1.0.1, has-bigints@^1.0.2: +has-bigints@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== @@ -5906,15 +5814,17 @@ has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: dependencies: es-define-property "^1.0.0" -has-proto@^1.0.1, has-proto@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" - integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== +has-proto@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.2.0.tgz#5de5a6eabd95fdffd9818b43055e8065e39fe9d5" + integrity sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ== + dependencies: + dunder-proto "^1.0.0" -has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== +has-symbols@^1.0.1, has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: version "1.0.2" @@ -5988,9 +5898,9 @@ html-parse-stringify@^3.0.1: void-elements "3.1.0" html-webpack-plugin@^5.5.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz#50a8fa6709245608cb00e811eacecb8e0d7b7ea0" - integrity sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw== + version "5.6.3" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz#a31145f0fee4184d53a794f9513147df1e653685" + integrity sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg== dependencies: "@types/html-minifier-terser" "^6.0.0" html-minifier-terser "^6.0.2" @@ -6049,9 +5959,9 @@ http-proxy-agent@^4.0.1: debug "4" http-proxy-middleware@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" - integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== + version "2.0.7" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz#915f236d92ae98ef48278a95dedf17e991936ec6" + integrity sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA== dependencies: "@types/http-proxy" "^1.17.8" http-proxy "^1.18.1" @@ -6086,10 +5996,10 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -i18next@^23.11.5: - version "23.12.2" - resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.12.2.tgz#c5b44bb95e4d4a5908a51577fa06c63dc2f650a4" - integrity sha512-XIeh5V+bi8SJSWGL3jqbTEBW5oD6rbP5L+E7dVQh1MNTxxYef0x15rhJVcRb7oiuq4jLtgy2SD8eFlf6P2cmqg== +i18next@^24.0.5: + version "24.0.5" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-24.0.5.tgz#2678986eca46411cae0329542a84dd4cd7e5f2f0" + integrity sha512-1jSdEzgFPGLZRsQwydoMFCBBaV+PmrVEO5WhANllZPX4y2JSGTxUjJ+xVklHIsiS95uR8gYc/y0hYZWevucNjg== dependencies: "@babel/runtime" "^7.23.2" @@ -6125,9 +6035,9 @@ identity-obj-proxy@^3.0.0: harmony-reflect "^1.4.6" ignore@^5.2.0, ignore@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" - integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== immer@^10.0.3: version "10.1.1" @@ -6139,10 +6049,10 @@ immer@^9.0.7: resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== -immutable@^4.0.0: - version "4.3.7" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.7.tgz#c70145fc90d89fb02021e65c84eb0226e4e5a381" - integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw== +immutable@^5.0.2: + version "5.0.3" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.0.3.tgz#aa037e2313ea7b5d400cd9298fa14e404c933db1" + integrity sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw== import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" @@ -6206,7 +6116,7 @@ ini@^1.3.5: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -internal-slot@^1.0.4, internal-slot@^1.0.7: +internal-slot@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== @@ -6232,15 +6142,7 @@ ipaddr.js@^2.0.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== -is-arguments@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-array-buffer@^3.0.2, is-array-buffer@^3.0.4: +is-array-buffer@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== @@ -6260,12 +6162,12 @@ is-async-function@^2.0.0: dependencies: has-tostringtag "^1.0.0" -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== +is-bigint@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.1.0.tgz#dda7a3445df57a42583db4228682eba7c4170672" + integrity sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ== dependencies: - has-bigints "^1.0.1" + has-bigints "^1.0.2" is-binary-path@~2.1.0: version "2.1.0" @@ -6274,23 +6176,23 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== +is-boolean-object@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.2.0.tgz#9743641e80a62c094b5941c5bb791d66a88e497a" + integrity sha512-kR5g0+dXf/+kXnqI+lu0URKYPKgICtHGGNCDSB10AaUFj3o/HkB3u7WfpRBJGFopxxY0oH3ux7ZsDjLtK7xqvw== dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" + call-bind "^1.0.7" + has-tostringtag "^1.0.2" -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: +is-callable@^1.1.3, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.13.0, is-core-module@^2.13.1: - version "2.15.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.0.tgz#71c72ec5442ace7e76b306e9d48db361f22699ea" - integrity sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA== +is-core-module@^2.13.0, is-core-module@^2.15.1: + version "2.15.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" + integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== dependencies: hasown "^2.0.2" @@ -6301,7 +6203,7 @@ is-data-view@^1.0.1: dependencies: is-typed-array "^1.1.13" -is-date-object@^1.0.1, is-date-object@^1.0.5: +is-date-object@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== @@ -6318,12 +6220,12 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== -is-finalizationregistry@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" - integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== +is-finalizationregistry@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.1.0.tgz#d74a7d0c5f3578e34a20729e69202e578d495dc2" + integrity sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA== dependencies: - call-bind "^1.0.2" + call-bind "^1.0.7" is-fullwidth-code-point@^3.0.0: version "3.0.0" @@ -6349,7 +6251,7 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-map@^2.0.2, is-map@^2.0.3: +is-map@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== @@ -6364,12 +6266,13 @@ is-negative-zero@^2.0.3: resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== +is-number-object@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.1.0.tgz#5a867e9ecc3d294dda740d9f127835857af7eb05" + integrity sha512-KVSZV0Dunv9DTPkhXwcZ3Q+tUc9TsaE1ZwX5J2WMvsSGS6Md8TFPun5uwh0yRdrNerI6vf/tbJxqSx4c1ZI1Lw== dependencies: - has-tostringtag "^1.0.0" + call-bind "^1.0.7" + has-tostringtag "^1.0.2" is-number@^7.0.0: version "7.0.0" @@ -6397,12 +6300,14 @@ is-potential-custom-element-name@^1.0.1: integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.0.tgz#41b9d266e7eb7451312c64efc37e8a7d453077cf" + integrity sha512-B6ohK4ZmoftlUe+uvenXSbPJFo6U37BH7oO1B3nQH8f/7h27N56s85MhUtbFJAziz5dcmuR3i8ovUl35zp8pFA== dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" + call-bind "^1.0.7" + gopd "^1.1.0" + has-tostringtag "^1.0.2" + hasown "^2.0.2" is-regexp@^1.0.0: version "1.0.0" @@ -6414,7 +6319,7 @@ is-root@^2.1.0: resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== -is-set@^2.0.2, is-set@^2.0.3: +is-set@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== @@ -6431,19 +6336,22 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== +is-string@^1.0.7, is-string@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.1.0.tgz#8cb83c5d57311bf8058bc6c8db294711641da45d" + integrity sha512-PlfzajuF9vSo5wErv3MJAKD/nqf9ngAs1NFQYm16nUYFO2IzxJ2hcm+IOCg+EEopdykNNUhVq5cz35cAUxU8+g== dependencies: - has-tostringtag "^1.0.0" + call-bind "^1.0.7" + has-tostringtag "^1.0.2" -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== +is-symbol@^1.0.4, is-symbol@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.1.0.tgz#ae993830a56d4781886d39f9f0a46b3e89b7b60b" + integrity sha512-qS8KkNNXUZ/I+nX6QT8ZS1/Yx0A444yhzdTKxCzKkNjQ9sHErBxJnJAgh+f5YhusYECEcjo4XcyH87hn6+ks0A== dependencies: - has-symbols "^1.0.2" + call-bind "^1.0.7" + has-symbols "^1.0.3" + safe-regex-test "^1.0.3" is-typed-array@^1.1.13: version "1.1.13" @@ -6541,10 +6449,10 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -iterator.prototype@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" - integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== +iterator.prototype@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.3.tgz#016c2abe0be3bbdb8319852884f60908ac62bf9c" + integrity sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ== dependencies: define-properties "^1.2.1" get-intrinsic "^1.2.1" @@ -7053,7 +6961,7 @@ jest@^27.4.3: import-local "^3.0.2" jest-cli "^27.5.1" -jiti@^1.21.0: +jiti@^1.21.6: version "1.21.6" resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== @@ -7111,15 +7019,10 @@ jsdom@^16.6.0: ws "^7.4.6" xml-name-validator "^3.0.0" -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== +jsesc@^3.0.2, jsesc@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== json-buffer@3.0.1: version "3.0.1" @@ -7236,9 +7139,9 @@ language-tags@^1.0.9: language-subtag-registry "^0.3.20" launch-editor@^2.6.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.8.1.tgz#3bda72af213ec9b46b170e39661916ec66c2f463" - integrity sha512-elBx2l/tp9z99X5H/qev8uyDywVh0VXAwEbjk8kJhnc5grOFkGh7aW6q55me9xnYbss261XtnUrysZ+XvGbhQA== + version "2.9.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.9.1.tgz#253f173bd441e342d4344b4dae58291abb425047" + integrity sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w== dependencies: picocolors "^1.0.0" shell-quote "^1.8.1" @@ -7264,15 +7167,15 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -lilconfig@^2.0.3, lilconfig@^2.1.0: +lilconfig@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== -lilconfig@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.2.tgz#e4a7c3cb549e3a606c8dcc32e5ae1005e62c05cb" - integrity sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow== +lilconfig@^3.0.0, lilconfig@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4" + integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw== lines-and-columns@^1.1.6: version "1.2.4" @@ -7320,21 +7223,16 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash.curry@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170" - integrity sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA== +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== -lodash.flow@^3.3.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/lodash.flow/-/lodash.flow-3.5.0.tgz#87bf40292b8cf83e4e8ce1a3ae4209e20071675a" - integrity sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw== - lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -7436,10 +7334,10 @@ memfs@^3.1.2, memfs@^3.4.3: dependencies: fs-monkey "^1.0.4" -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== merge-stream@^2.0.0: version "2.0.0" @@ -7456,10 +7354,10 @@ methods@~1.1.2: resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: - version "4.0.7" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" - integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== dependencies: braces "^3.0.3" picomatch "^2.3.1" @@ -7497,9 +7395,9 @@ min-indent@^1.0.0: integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== mini-css-extract-plugin@^2.4.5: - version "2.9.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz#c73a1327ccf466f69026ac22a8e8fd707b78a235" - integrity sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA== + version "2.9.2" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz#966031b468917a5446f4c24a80854b2947503c5b" + integrity sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w== dependencies: schema-utils "^4.0.0" tapable "^2.2.1" @@ -7552,12 +7450,7 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.1.3, ms@^2.1.1: +ms@2.1.3, ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -7580,9 +7473,9 @@ mz@^2.7.0: thenify-all "^1.0.0" nanoid@^3.3.7: - version "3.3.7" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" - integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + version "3.3.8" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" + integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== natural-compare-lite@^1.4.0: version "1.4.0" @@ -7599,6 +7492,11 @@ negotiator@0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== +negotiator@~0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7" + integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== + neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" @@ -7612,6 +7510,11 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" +node-addon-api@^7.0.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" + integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== + node-fetch-h2@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz#c6188325f9bd3d834020bf0f2d6dc17ced2241ac" @@ -7619,7 +7522,7 @@ node-fetch-h2@^2.3.0: dependencies: http2-client "^1.2.5" -node-fetch@^2.6.1, node-fetch@^2.6.12: +node-fetch@^2.6.1: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -7644,9 +7547,9 @@ node-readfiles@^0.2.0: es6-promise "^3.2.1" node-releases@^2.0.18: - version "2.0.18" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" - integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== + version "2.0.19" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -7685,9 +7588,9 @@ nth-check@^2.0.1: boolbase "^1.0.0" nwsapi@^2.2.0: - version "2.2.12" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.12.tgz#fb6af5c0ec35b27b4581eb3bbad34ec9e5c696f8" - integrity sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w== + version "2.2.16" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.16.tgz#177760bba02c351df1d2644e220c31dfec8cdb43" + integrity sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ== oas-kit-common@^1.0.8: version "1.0.8" @@ -7735,18 +7638,19 @@ oas-validator@^5.0.8: should "^13.2.1" yaml "^1.10.0" -oazapfts@^4.8.0: - version "4.12.0" - resolved "https://registry.yarnpkg.com/oazapfts/-/oazapfts-4.12.0.tgz#8a86c5fe5a1237b16b05d06d05815cffa2a2b949" - integrity sha512-hNKRG4eLYceuJuqDDx7Uqsi8p3j5k83gNKSo2qnUOTiiU03sCQOjXxOqCXDbzRcuDFyK94+1PBIpotK4NoxIjw== +oazapfts@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/oazapfts/-/oazapfts-6.1.0.tgz#f986d5f02ea9a0895b9ed6237ac74a1bf1663721" + integrity sha512-+E0db72jn0AMJ36ZzEXF3qCZ+T4pnOem/tmiJVql1Kx4qkWBE4YGeiUicp3gkzLJ/OrmpvSyAufI8eZ7sODCYg== dependencies: "@apidevtools/swagger-parser" "^10.1.0" lodash "^4.17.21" minimist "^1.2.8" swagger2openapi "^7.0.8" - typescript "^5.2.2" + tapable "^2.2.1" + typescript "^5.4.5" -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -7756,18 +7660,10 @@ object-hash@^3.0.0: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== -object-inspect@^1.13.1: - version "1.13.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" - integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== - -object-is@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" - integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" +object-inspect@^1.13.1, object-inspect@^1.13.3: + version "1.13.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a" + integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA== object-keys@^1.1.1: version "1.1.1" @@ -7793,7 +7689,7 @@ object.entries@^1.1.5, object.entries@^1.1.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" -object.fromentries@^2.0.7, object.fromentries@^2.0.8: +object.fromentries@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== @@ -7816,7 +7712,7 @@ object.getownpropertydescriptors@^2.1.0: gopd "^1.0.1" safe-array-concat "^1.1.2" -object.groupby@^1.0.1: +object.groupby@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== @@ -7825,7 +7721,7 @@ object.groupby@^1.0.1: define-properties "^1.2.1" es-abstract "^1.23.2" -object.values@^1.1.0, object.values@^1.1.6, object.values@^1.1.7, object.values@^1.2.0: +object.values@^1.1.0, object.values@^1.1.6, object.values@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== @@ -7947,9 +7843,9 @@ p-try@^2.0.0: integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== package-json-from-dist@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00" - integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== param-case@^3.0.4: version "3.0.4" @@ -8027,10 +7923,10 @@ path-scurry@^1.11.1: lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== +path-to-regexp@0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7" + integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== path-type@^4.0.0: version "4.0.0" @@ -8047,15 +7943,10 @@ picocolors@^0.2.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== -picocolors@^1.0.0, picocolors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" - integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== - -picocolors@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" - integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== +picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0, picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" @@ -8285,7 +8176,7 @@ postcss-lab-function@^4.2.1: "@csstools/postcss-progressive-custom-properties" "^1.1.0" postcss-value-parser "^4.2.0" -postcss-load-config@^4.0.1: +postcss-load-config@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== @@ -8368,20 +8259,20 @@ postcss-modules-extract-imports@^3.1.0: integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== postcss-modules-local-by-default@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz#f1b9bd757a8edf4d8556e8d0f4f894260e3df78f" - integrity sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw== + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.1.0.tgz#b0db6bc81ffc7bdc52eb0f84d6ca0bedf0e36d21" + integrity sha512-rm0bdSv4jC3BDma3s9H19ZddW0aHX6EoqwDYU2IfZhRN+53QrufTRo2IdkAbRqLx4R2IYbZnbjKKxg4VN5oU9Q== dependencies: icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" + postcss-selector-parser "^7.0.0" postcss-value-parser "^4.1.0" postcss-modules-scope@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz#a43d28289a169ce2c15c00c4e64c0858e43457d5" - integrity sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ== + version "3.2.1" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz#1bbccddcb398f1d7a511e0a2d1d047718af4078c" + integrity sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA== dependencies: - postcss-selector-parser "^6.0.4" + postcss-selector-parser "^7.0.0" postcss-modules-values@^4.0.0: version "4.0.0" @@ -8390,7 +8281,7 @@ postcss-modules-values@^4.0.0: dependencies: icss-utils "^5.0.0" -postcss-nested@^6.0.1: +postcss-nested@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.2.0.tgz#4c2d22ab5f20b9cb61e2c5c5915950784d068131" integrity sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ== @@ -8598,10 +8489,18 @@ postcss-selector-not@^6.0.1: dependencies: postcss-selector-parser "^6.0.10" -postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9, postcss-selector-parser@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz#5be94b277b8955904476a2400260002ce6c56e38" - integrity sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg== +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9, postcss-selector-parser@^6.1.1, postcss-selector-parser@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" + integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-selector-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz#41bd8b56f177c093ca49435f65731befe25d6b9c" + integrity sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -8634,22 +8533,13 @@ postcss@^7.0.35: picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.3.5, postcss@^8.4.23, postcss@^8.4.33, postcss@^8.4.4: - version "8.4.41" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.41.tgz#d6104d3ba272d882fe18fc07d15dc2da62fa2681" - integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ== - dependencies: - nanoid "^3.3.7" - picocolors "^1.0.1" - source-map-js "^1.2.0" - -postcss@^8.4.43: - version "8.4.47" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365" - integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== +postcss@^8.3.5, postcss@^8.4.33, postcss@^8.4.4, postcss@^8.4.47, postcss@^8.4.49: + version "8.4.49" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.49.tgz#4ea479048ab059ab3ae61d082190fabfd994fe19" + integrity sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA== dependencies: nanoid "^3.3.7" - picocolors "^1.1.0" + picocolors "^1.1.1" source-map-js "^1.2.1" prelude-ls@^1.2.1: @@ -8669,15 +8559,10 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.2.1: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - -prettier@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" - integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== +prettier@^3.2.5, prettier@^3.3.3: + version "3.4.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.2.tgz#a5ce1fb522a588bf2b78ca44c6e6fe5aa5a2b13f" + integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ== pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: version "5.6.0" @@ -8716,13 +8601,6 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== - dependencies: - asap "~2.0.3" - promise@^8.1.0: version "8.3.0" resolved "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a" @@ -8764,31 +8642,28 @@ proxy-addr@~2.0.7: ipaddr.js "1.9.1" psl@^1.1.33: - version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== + version "1.15.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.15.0.tgz#bdace31896f1d97cec6a79e8224898ce93d974c6" + integrity sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w== + dependencies: + punycode "^2.3.1" -punycode@^2.1.0, punycode@^2.1.1: +punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -pure-color@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" - integrity sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA== - q@^1.1.2: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== +qs@6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== dependencies: - side-channel "^1.0.4" + side-channel "^1.0.6" querystringify@^2.1.1: version "2.2.0" @@ -8841,24 +8716,14 @@ react-app-polyfill@^3.0.0: regenerator-runtime "^0.13.9" whatwg-fetch "^3.6.2" -react-base16-styling@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/react-base16-styling/-/react-base16-styling-0.6.0.tgz#ef2156d66cf4139695c8a167886cb69ea660792c" - integrity sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ== - dependencies: - base16 "^1.0.0" - lodash.curry "^4.0.1" - lodash.flow "^3.3.0" - pure-color "^1.2.0" - react-bootstrap@^2.10.2: - version "2.10.4" - resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-2.10.4.tgz#ed92f5f8225a44919a7707829bac879558b71b70" - integrity sha512-W3398nBM2CBfmGP2evneEO3ZZwEMPtHs72q++eNw60uDGDAdiGn0f9yNys91eo7/y8CTF5Ke1C0QO8JFVPU40Q== + version "2.10.6" + resolved "https://registry.yarnpkg.com/react-bootstrap/-/react-bootstrap-2.10.6.tgz#cb8b6f3604480b99b1e3cfa09cf53446e760bba7" + integrity sha512-fNvKytSp0nHts1WRnRBJeBEt+I9/ZdrnhIjWOucEduRNvFRU1IXjZueDdWnBiqsTSJ7MckQJi9i/hxGolaRq+g== dependencies: "@babel/runtime" "^7.24.7" "@restart/hooks" "^0.4.9" - "@restart/ui" "^1.6.9" + "@restart/ui" "^1.9.0" "@types/react-transition-group" "^4.4.6" classnames "^2.3.2" dom-helpers "^5.2.1" @@ -8920,11 +8785,11 @@ react-error-overlay@^6.0.11: integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== react-i18next@^15.0.0: - version "15.0.0" - resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-15.0.0.tgz#4980f8edf85b9df6573d6b12d95aca5b8f0cc8b0" - integrity sha512-2O3IgF4zivg57Q6p6i+ChDgJ371IDcEWbuWC6gvoh5NbkDMs0Q+O7RPr4v61+Se32E0V+LmtwePAeqWZW0bi6g== + version "15.1.4" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-15.1.4.tgz#65c03c31a5e42202000652e163f22f23a9306a60" + integrity sha512-2tai71gmehbvl9ZIqPMqlCCkm/cbeV1G4STpmM3C8Uzo6T2l8jDvZxEVSsQKt8blP9X34iRFP/k1ROqG2296MQ== dependencies: - "@babel/runtime" "^7.24.8" + "@babel/runtime" "^7.25.0" html-parse-stringify "^3.0.1" react-is@^16.13.1, react-is@^16.3.2: @@ -8942,28 +8807,18 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== -react-json-view@^1.21.3: - version "1.21.3" - resolved "https://registry.yarnpkg.com/react-json-view/-/react-json-view-1.21.3.tgz#f184209ee8f1bf374fb0c41b0813cff54549c475" - integrity sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw== - dependencies: - flux "^4.0.1" - react-base16-styling "^0.6.0" - react-lifecycles-compat "^3.0.4" - react-textarea-autosize "^8.3.2" - react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== react-redux@^9.1.2: - version "9.1.2" - resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-9.1.2.tgz#deba38c64c3403e9abd0c3fbeab69ffd9d8a7e4b" - integrity sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w== + version "9.2.0" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-9.2.0.tgz#96c3ab23fb9a3af2cb4654be4b51c989e32366f5" + integrity sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g== dependencies: - "@types/use-sync-external-store" "^0.0.3" - use-sync-external-store "^1.0.0" + "@types/use-sync-external-store" "^0.0.6" + use-sync-external-store "^1.4.0" react-refresh@^0.11.0: version "0.11.0" @@ -8976,19 +8831,19 @@ react-refresh@^0.14.2: integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== react-router-dom@^6.23.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.26.0.tgz#8debe13295c58605c04f93018d659a763245e58c" - integrity sha512-RRGUIiDtLrkX3uYcFiCIxKFWMcWQGMojpYZfcstc63A1+sSnVgILGIm9gNUA6na3Fm1QuPGSBQH2EMbAZOnMsQ== + version "6.28.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.28.0.tgz#f73ebb3490e59ac9f299377062ad1d10a9f579e6" + integrity sha512-kQ7Unsl5YdyOltsPGl31zOjLrDv+m2VcIEcIHqYYD3Lp0UppLjrzcfJqDJwXxFw3TH/yvapbnUvPlAj7Kx5nbg== dependencies: - "@remix-run/router" "1.19.0" - react-router "6.26.0" + "@remix-run/router" "1.21.0" + react-router "6.28.0" -react-router@6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.26.0.tgz#d5af4c46835b202348ef2b7ddacd32a2db539fde" - integrity sha512-wVQq0/iFYd3iZ9H2l3N3k4PL8EEHcb0XlU2Na8nEwmiXgIUElEH6gaJDtUQxJ+JFzmIXaQjfdpcGWaM6IoQGxg== +react-router@6.28.0: + version "6.28.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.28.0.tgz#29247c86d7ba901d7e5a13aa79a96723c3e59d0d" + integrity sha512-HrYdIFqdrnhDw0PqG/AKjAqEqM7AvxCz0DQ4h2W8k6nqmc5uRBYDag0SBxx9iYz5G8gnuNVLzUe13wl9eAsXXg== dependencies: - "@remix-run/router" "1.19.0" + "@remix-run/router" "1.21.0" react-scripts@5.0.1: version "5.0.1" @@ -9045,19 +8900,10 @@ react-scripts@5.0.1: optionalDependencies: fsevents "^2.3.2" -react-textarea-autosize@^8.3.2: - version "8.5.4" - resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.5.4.tgz#1c568ad838857b6ce86ee2a96e504179305e0bf4" - integrity sha512-eSSjVtRLcLfFwFcariT77t9hcbVJHQV76b51QjQGarQIHml2+gM2lms0n3XrhnDmgK5B+/Z7TmQk5OHNzqYm/A== - dependencies: - "@babel/runtime" "^7.20.13" - use-composed-ref "^1.3.0" - use-latest "^1.2.1" - react-toastify@^10.0.5: - version "10.0.5" - resolved "https://registry.yarnpkg.com/react-toastify/-/react-toastify-10.0.5.tgz#6b8f8386060c5c856239f3036d1e76874ce3bd1e" - integrity sha512-mNKt2jBXJg4O7pSdbNUfDdTsK9FIdikfsIE/yUCxbAEXl4HMyJaivrVFcn3Elvt5xvCQYhUZm+hqTIu1UXM3Pw== + version "10.0.6" + resolved "https://registry.yarnpkg.com/react-toastify/-/react-toastify-10.0.6.tgz#19c364b1150f495522c738d592d1dcc93879ade1" + integrity sha512-yYjp+omCDf9lhZcrZHKbSq7YMuK0zcYkDFTzfRFgTXkTFHZ1ToxwAonzA4JI5CxA91JpjFLmwEsZEgfYfOqI1A== dependencies: clsx "^2.1.0" @@ -9107,6 +8953,11 @@ readable-stream@^3.0.6: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readdirp@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.0.2.tgz#388fccb8b75665da3abffe2d8f8ed59fe74c230a" + integrity sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA== + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -9149,28 +9000,29 @@ redux@^5.0.1: resolved "https://registry.yarnpkg.com/redux/-/redux-5.0.1.tgz#97fa26881ce5746500125585d5642c77b6e9447b" integrity sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w== -reflect.getprototypeof@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#3ab04c32a8390b770712b7a8633972702d278859" - integrity sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg== +reflect.getprototypeof@^1.0.4, reflect.getprototypeof@^1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.8.tgz#c58afb17a4007b4d1118c07b92c23fca422c5d82" + integrity sha512-B5dj6usc5dkk8uFliwjwDHM8To5/QwdKz9JcBZ8Ic4G1f0YmeeJTtE/ZTdgRFPAfxZFiUaPhZ1Jcs4qeagItGQ== dependencies: - call-bind "^1.0.7" + call-bind "^1.0.8" define-properties "^1.2.1" - es-abstract "^1.23.1" + dunder-proto "^1.0.0" + es-abstract "^1.23.5" es-errors "^1.3.0" get-intrinsic "^1.2.4" - globalthis "^1.0.3" - which-builtin-type "^1.1.3" + gopd "^1.2.0" + which-builtin-type "^1.2.0" reftools@^1.1.9: version "1.1.9" resolved "https://registry.yarnpkg.com/reftools/-/reftools-1.1.9.tgz#e16e19f662ccd4648605312c06d34e5da3a2b77e" integrity sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w== -regenerate-unicode-properties@^10.1.0: - version "10.1.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" - integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== +regenerate-unicode-properties@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz#626e39df8c372338ea9b8028d1f99dc3fd9c3db0" + integrity sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA== dependencies: regenerate "^1.4.2" @@ -9201,34 +9053,39 @@ regex-parser@^2.2.11: resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.3.0.tgz#4bb61461b1a19b8b913f3960364bb57887f920ee" integrity sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg== -regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" - integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== +regexp.prototype.flags@^1.5.2, regexp.prototype.flags@^1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz#b3ae40b1d2499b8350ab2c3fe6ef3845d3a96f42" + integrity sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ== dependencies: - call-bind "^1.0.6" + call-bind "^1.0.7" define-properties "^1.2.1" es-errors "^1.3.0" - set-function-name "^2.0.1" + set-function-name "^2.0.2" -regexpu-core@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" - integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== +regexpu-core@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.2.0.tgz#0e5190d79e542bf294955dccabae04d3c7d53826" + integrity sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA== dependencies: - "@babel/regjsgen" "^0.8.0" regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsparser "^0.9.1" + regenerate-unicode-properties "^10.2.0" + regjsgen "^0.8.0" + regjsparser "^0.12.0" unicode-match-property-ecmascript "^2.0.0" unicode-match-property-value-ecmascript "^2.1.0" -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== +regjsgen@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab" + integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== + +regjsparser@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.12.0.tgz#0e846df6c6530586429377de56e0475583b088dc" + integrity sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ== dependencies: - jsesc "~0.5.0" + jsesc "~3.0.2" relateurl@^0.2.7: version "0.2.7" @@ -9299,7 +9156,7 @@ resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== -resolve@^1.1.7, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.2, resolve@^1.22.4: +resolve@^1.1.7, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.4, resolve@^1.22.8: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -9355,35 +9212,38 @@ rollup-plugin-visualizer@^5.11.0: yargs "^17.5.1" rollup@^2.43.1: - version "2.79.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" - integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== + version "2.79.2" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.2.tgz#f150e4a5db4b121a21a747d762f701e5e9f49090" + integrity sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ== optionalDependencies: fsevents "~2.3.2" -rollup@^4.20.0: - version "4.24.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.24.0.tgz#c14a3576f20622ea6a5c9cad7caca5e6e9555d05" - integrity sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg== +rollup@^4.23.0: + version "4.28.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.28.1.tgz#7718ba34d62b449dfc49adbfd2f312b4fe0df4de" + integrity sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg== dependencies: "@types/estree" "1.0.6" optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.24.0" - "@rollup/rollup-android-arm64" "4.24.0" - "@rollup/rollup-darwin-arm64" "4.24.0" - "@rollup/rollup-darwin-x64" "4.24.0" - "@rollup/rollup-linux-arm-gnueabihf" "4.24.0" - "@rollup/rollup-linux-arm-musleabihf" "4.24.0" - "@rollup/rollup-linux-arm64-gnu" "4.24.0" - "@rollup/rollup-linux-arm64-musl" "4.24.0" - "@rollup/rollup-linux-powerpc64le-gnu" "4.24.0" - "@rollup/rollup-linux-riscv64-gnu" "4.24.0" - "@rollup/rollup-linux-s390x-gnu" "4.24.0" - "@rollup/rollup-linux-x64-gnu" "4.24.0" - "@rollup/rollup-linux-x64-musl" "4.24.0" - "@rollup/rollup-win32-arm64-msvc" "4.24.0" - "@rollup/rollup-win32-ia32-msvc" "4.24.0" - "@rollup/rollup-win32-x64-msvc" "4.24.0" + "@rollup/rollup-android-arm-eabi" "4.28.1" + "@rollup/rollup-android-arm64" "4.28.1" + "@rollup/rollup-darwin-arm64" "4.28.1" + "@rollup/rollup-darwin-x64" "4.28.1" + "@rollup/rollup-freebsd-arm64" "4.28.1" + "@rollup/rollup-freebsd-x64" "4.28.1" + "@rollup/rollup-linux-arm-gnueabihf" "4.28.1" + "@rollup/rollup-linux-arm-musleabihf" "4.28.1" + "@rollup/rollup-linux-arm64-gnu" "4.28.1" + "@rollup/rollup-linux-arm64-musl" "4.28.1" + "@rollup/rollup-linux-loongarch64-gnu" "4.28.1" + "@rollup/rollup-linux-powerpc64le-gnu" "4.28.1" + "@rollup/rollup-linux-riscv64-gnu" "4.28.1" + "@rollup/rollup-linux-s390x-gnu" "4.28.1" + "@rollup/rollup-linux-x64-gnu" "4.28.1" + "@rollup/rollup-linux-x64-musl" "4.28.1" + "@rollup/rollup-win32-arm64-msvc" "4.28.1" + "@rollup/rollup-win32-ia32-msvc" "4.28.1" + "@rollup/rollup-win32-x64-msvc" "4.28.1" fsevents "~2.3.2" run-parallel@^1.1.9: @@ -9410,16 +9270,16 @@ safe-array-concat@^1.1.2: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + safe-regex-test@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" @@ -9439,139 +9299,140 @@ sanitize.css@*: resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-13.0.0.tgz#2675553974b27964c75562ade3bd85d79879f173" integrity sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA== -sass-embedded-android-arm64@1.80.6: - version "1.80.6" - resolved "https://registry.yarnpkg.com/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.80.6.tgz#748df1f7deabea3a81c2c647661d9696090e1b81" - integrity sha512-4rC4ZGM/k4ENVjLXnK3JTst8e8FI9MHSol2Fl7dCdYyJ3KLnlt4qL4AEYfU8zq1tcBb7CBOSZVR+CzCKubnXdg== - -sass-embedded-android-arm@1.80.6: - version "1.80.6" - resolved "https://registry.yarnpkg.com/sass-embedded-android-arm/-/sass-embedded-android-arm-1.80.6.tgz#1fa2e08e5b2a77709f6e8cb8186c801ee140c0a9" - integrity sha512-UeUKMTRsnz4/dh7IzvhjONxa4/jmVp539CHDd8VZOsqg9M3HcNJNIkUzQWbuwZ+nSlWrTuo7Tvn3XlypopCBzw== - -sass-embedded-android-ia32@1.80.6: - version "1.80.6" - resolved "https://registry.yarnpkg.com/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.80.6.tgz#43674c98454a3adb5da3cca0ba23340128bfbdff" - integrity sha512-Lxz2SXE2KdHnynuHF+D6flDvrd55/zaEAWUeka9MxEr6FmR66d8UBOIy5ETwCSUd//S/SE5Jl6oTnHppgD1zNA== - -sass-embedded-android-riscv64@1.80.6: - version "1.80.6" - resolved "https://registry.yarnpkg.com/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.80.6.tgz#59c9d53b1c800b53221d56cf55d9cf84b4418bac" - integrity sha512-hKdxY/oOqB+JJhSoBTDM5DJO1j/xtxQgayh2cLCCUx37IQQe3SEdc3V2JFf/4mIo5peaS4cjqwwSATF+l2zaXg== - -sass-embedded-android-x64@1.80.6: - version "1.80.6" - resolved "https://registry.yarnpkg.com/sass-embedded-android-x64/-/sass-embedded-android-x64-1.80.6.tgz#a06a9f55f904c3ba628a3ae03c244f134f4f2bb1" - integrity sha512-Eap2Fi3kTx/rVLBsOnOp5RYPr5+lFjTZ652zR24dmYFe9/sDgasakJIOPjOvD2bRuL9z0uWEY1AXVeeOPeZKrg== - -sass-embedded-darwin-arm64@1.80.6: - version "1.80.6" - resolved "https://registry.yarnpkg.com/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.80.6.tgz#81a7019c92a8c8f76f7f98dfe15f6adfaf621e92" - integrity sha512-0mnAx8Vq6Gxj3PQt3imgITfK33hhqrSKpyHSuab71gZZni5opsdtoggq2JawW+1taRFTEZwbZJLKZ0MBDbwCCA== - -sass-embedded-darwin-x64@1.80.6: - version "1.80.6" - resolved "https://registry.yarnpkg.com/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.80.6.tgz#d1b551443930658bfa4cc92ca026d4b22023ce9d" - integrity sha512-Ib20yNZFOrJ7YVT+ltoe+JQNKPcRclM3iLAK69XZZYcSeFM/72SCoQBAaVGIpT23dxDp7FXiE4lO602c3xTRwQ== - -sass-embedded-linux-arm64@1.80.6: - version "1.80.6" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.80.6.tgz#fe6255bbbe55590fb6405f098431b3841221a1b0" - integrity sha512-n5r98pBXawrQQKaxIYCMM1zDpnngsqxTkOrmvsYLFiAMCSbR0lWf/7sBB33k/Pm0D6dsbp3jpHilCoQNKI3jIw== - -sass-embedded-linux-arm@1.80.6: - version "1.80.6" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.80.6.tgz#a6603b1ec087762a1128e836fd36851050b537b4" - integrity sha512-QR0Q6TZox/ThuU2r9c0s3fKCgU2rXAEocpitdgxFp6tta+GsQlMFV3oON2unAa8Bwnuxkmf0YOaK0Oy/TwzkXw== - -sass-embedded-linux-ia32@1.80.6: - version "1.80.6" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.80.6.tgz#bedb53348f7e384ceabc9e0158b086045779af07" - integrity sha512-O6dWZdcOkryRdDCxVMGOeVowgblpDgVcAuRtZ1F1X7XfbpDriTQm64D+9vVZIrywYSPoJfQMJJ662cr0wUs9IQ== - -sass-embedded-linux-musl-arm64@1.80.6: - version "1.80.6" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.80.6.tgz#0f0e0bb68c90f0ae920d9a06760241f3f58c7a76" - integrity sha512-VeUSHUi3MAsvOlg9QI4X/2j04h1659aE+7qKP/282CYBTrGkjFGSXZhIki9WKWDgIpDiSInRYXfQQRWhPhjCDg== - -sass-embedded-linux-musl-arm@1.80.6: - version "1.80.6" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.80.6.tgz#41039f857684ee3470ec9e0d310add5f6f1b694d" - integrity sha512-X9FC8s8fvQGRiXc+eATlZ57N44Iq3nNa0M0ugi3ysdJwkaNYvOeS4QzBHKQAaw3QiTqdxTnLUHHVBkyzdCi9pw== - -sass-embedded-linux-musl-ia32@1.80.6: - version "1.80.6" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.80.6.tgz#8ff88c78ba3503a19d59c5b8fa172fdea00a67f8" - integrity sha512-GqitS2Nab8ah0+wfCqaxW1hnI1piC08FimL6+lM9YWK5DbCOOF82IapbvJOy0feUmd/wNnHmyNTgE9h0zVMFdQ== - -sass-embedded-linux-musl-riscv64@1.80.6: - version "1.80.6" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.80.6.tgz#aaa086a6ce9718d0fd7cbe584c0f2bf81bef3122" - integrity sha512-ySs15z7QSRRQK/aByEEqaJLYW/sTpfynefNPZCtsVNVEzNRwy+DRpxNChtxo+QjKq97ocXETbdG5KLik7QOTJg== - -sass-embedded-linux-musl-x64@1.80.6: - version "1.80.6" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.80.6.tgz#ea0bb093837be3b6f473b9a1b5d09c4633f8e504" - integrity sha512-DzeNqU/SN0mWFznoOH4RtVGcrg3Eoa41pUQhKMtrhNbCmIE1zNDunUiAEVTNpdHJF4nxf7ELUPXWmStM31CbUQ== - -sass-embedded-linux-riscv64@1.80.6: - version "1.80.6" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.80.6.tgz#bc19c15796a3b3a3d67ea626058b3bab48344b1d" - integrity sha512-AyoHJ3icV9xuJjq1YzJqpEj2XfiC/KBkVYTUrCELKiXP0DN1gi/BpUwZNCAgCM3CyEdMef4LQM/ztCYJxYzdyg== - -sass-embedded-linux-x64@1.80.6: - version "1.80.6" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.80.6.tgz#db076fdf0bc3c1382c8f73c8d396293b893b31ef" - integrity sha512-EohsE9CEqx0ycylnsEj/0DNPG99Tb0qAVZspiAs5xHFCJjXOFfp3cRQu0BRf+lZ1b72IhPFXymzVtojvzUHb7g== - -sass-embedded-win32-arm64@1.80.6: - version "1.80.6" - resolved "https://registry.yarnpkg.com/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.80.6.tgz#e889c421b0b31e1297414dd89448385fe443d5e2" - integrity sha512-29wETQi1ykeVvpd4zMVokpQKFSOZskGJzZawuuNCdo7BHjHKIRDsqbz8YT1CewHPBshI0hfD21fenmjxYjGXPQ== - -sass-embedded-win32-ia32@1.80.6: - version "1.80.6" - resolved "https://registry.yarnpkg.com/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.80.6.tgz#0934f3598e4fbe701b5e4e4d2a1fa6ef952f7024" - integrity sha512-1s3OpK2iTIfIL/a91QhAQnffsbuWfnsM8Lx4Fxt0f7ErnxjCV6q8MUFTV/UhcLtLyTFnPCA62DLjp2KGCjMI9A== - -sass-embedded-win32-x64@1.80.6: - version "1.80.6" - resolved "https://registry.yarnpkg.com/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.80.6.tgz#b7357b399c12cbb80dab2bee6f541b88a6015d76" - integrity sha512-0pH4Zr9silHkcmLPC0ghnD3DI0vMsjA7dKvGR32/RbbjOSvHV5cDQRLiuVJAPp34dfMA7kJd1ysSchRdH0igAQ== +sass-embedded-android-arm64@1.82.0: + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.82.0.tgz#f67352258d52c655dcfa9ca444d0cdcc2d5a9232" + integrity sha512-bldHMs02QQWXsgHUZRgolNnZdMjN6XHvmUYoRkzmFq7lsvtLU6SJg2S1Wa9IZJs9jRWdTmOgA6YibSf3pROyFQ== + +sass-embedded-android-arm@1.82.0: + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass-embedded-android-arm/-/sass-embedded-android-arm-1.82.0.tgz#9600c0c980f08be2b8bcd765d78bdd765d776ab9" + integrity sha512-ttGMvWnA/5TYdZTjr5fWHDbb9nZgKipHKCc9zZQRF5HjUydOYWKNqmAJHQtbFWaq35kd5qn6yiE73IJN6eJ6wA== + +sass-embedded-android-ia32@1.82.0: + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.82.0.tgz#448f7f39f3d8fb4d759ba9ab54b94be9904c3c10" + integrity sha512-FUJOnxw8IYKuYuxxiOkk6QXle8/yQFtKjnuSAJuZ5ZpLVMcSZzLc3SWOtuEXYx5iSAfJCO075o2ZoG/pPrJ9aw== + +sass-embedded-android-riscv64@1.82.0: + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.82.0.tgz#20a8a890bd0cba3487d67d2ab7059c30694c68ad" + integrity sha512-rd+vc+sxJxNnbhaubiIJmnb1b3FvC9wxCIq8spstopbO7o1uufvBBDeRoFSJaN+7oNhamzjlYGdu6aQoQNs3+A== + +sass-embedded-android-x64@1.82.0: + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass-embedded-android-x64/-/sass-embedded-android-x64-1.82.0.tgz#e56065192cd68d4e14634e84f230a2f1ab7cfad6" + integrity sha512-EVlybGTgJ8wNLyWj8RUatPXSnmIcvCsx3EfsRfBfhGihLbn4NNpavYO9QsvZzI2XWbJqHLBCd+CvkTcDw/TaSQ== + +sass-embedded-darwin-arm64@1.82.0: + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.82.0.tgz#50c1f2fa71294b7fccfc7998d31bd52ebf72fd2c" + integrity sha512-LvdJPojjKlNGYOB0nSUR/ZtMDuAF4puspHlwK42aA/qK292bfSkMUKZPPapB2aSRwccc/ieBq5fI7n/WHrOCVw== + +sass-embedded-darwin-x64@1.82.0: + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.82.0.tgz#8251268ec519472415918e04ed8501a0c1491547" + integrity sha512-6LfnD6YmG1aBfd3ReqMOJDb6Pg2Z/hmlJB7nU+Lb3E+hCNjAZAgeUHQxU/Pm1eIqJJTU/h4ib5QP0Pt9O8yVnw== + +sass-embedded-linux-arm64@1.82.0: + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.82.0.tgz#149d8620d5d371feb32abec6e7e917805209baf1" + integrity sha512-590/y0HJr/JiyxaqgR7Xf9P20BIhJ+zhB/afAnVuZe/4lEfCpTyM5xMe2+sKLsqtrVyzs9Zm/M4S4ASUOPCggA== + +sass-embedded-linux-arm@1.82.0: + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.82.0.tgz#c48a57c3e00050bb16a3195f10f5b863e856c777" + integrity sha512-ozjdC5rWzyi5Vo300I4tVZzneXOTQUiaxOr7DjtN26HuFaGAGCGmvThh2BRV4RvySg++5H9rdFu+VgyUQ5iukw== + +sass-embedded-linux-ia32@1.82.0: + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.82.0.tgz#a4ff182f47b703d953364751073a1e576823a168" + integrity sha512-hpc4acZ3UTjjJ3Q/GUXqQOCSml6AFKaku0HMawra9bKyRmOpxn8V5hqgXeOWVjK2oQzCmCnJvwKoQUP+S/SIYQ== + +sass-embedded-linux-musl-arm64@1.82.0: + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.82.0.tgz#fed3baf77431637d97d50db63630aa13e5324594" + integrity sha512-bc2MUSMv/jabnNGEyKP2jQAYZoEzTT/c633W6QoeSEWETGCuTNjaHvWWE6qSI6/UfRg1EpuV1LQA2jPMzZfv/w== + +sass-embedded-linux-musl-arm@1.82.0: + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.82.0.tgz#5799eb6de083a08f47a4eb925ff2c7b70ed65656" + integrity sha512-R5PQmY/I+GSoMtfLo8GgHkvF/q6x6y8VNM7yu/Ac1mJj86n48VFi29W1HfY2496+Q6cpAq7toobDj7YfldIdVA== + +sass-embedded-linux-musl-ia32@1.82.0: + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.82.0.tgz#39a3f41d95c47610c9f9ea3d19ab5894dcd2b9cf" + integrity sha512-ZQKCFKm5TBcJ19UG6uUQmIKfVCJIWMb7e1a93lGeujSb9gyKF5Fb6MN3tuExoT7iFK8zU0Z9iyHqh93F58lcCw== + +sass-embedded-linux-musl-riscv64@1.82.0: + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.82.0.tgz#337c57a8b4320e1b5c05f4864fa89824c052164a" + integrity sha512-5meSU8BHFeaT09RWfkuUrikRlC+WZcYb9To7MpfV1d9nlD7CZ2xydPExK+mj3DqRuQvTbvhMPcr7f+pHlgHINQ== + +sass-embedded-linux-musl-x64@1.82.0: + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.82.0.tgz#2a24459f8d41e53773d07cec80b4ac36de98f598" + integrity sha512-ASLAMfjWv7YEPBvEOVlb3zzHq8l4Y9Eh4x3m7B1dNauGVbO11Yng5cPCX/XbwGVf30BtE75pwqvV7oXxBtN15w== + +sass-embedded-linux-riscv64@1.82.0: + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.82.0.tgz#623a30b4c2a0eccacb2bcfe3864289c8be34d80c" + integrity sha512-qWvRDXCXH3GzD8OcP0ntd8gBTK3kZyUeyXmxQDZyEtMAM4STC2Tn7+5+2JYYHlppzqWnZPFBNESvpKeOtHaBBw== + +sass-embedded-linux-x64@1.82.0: + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.82.0.tgz#e119374e0ecb3675515c49bac782c34f8a12dd60" + integrity sha512-AmRaHqShztwfep+M4NagdGaY7fTyWGSOM3k4Z/dd7q4nZclXbALLqNJtKx8xOM7A41LHYJ9zDpIBVRkrh0PzTA== + +sass-embedded-win32-arm64@1.82.0: + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.82.0.tgz#d1db895b7314412c14542aee7a794ed5cad2e116" + integrity sha512-zL9JDQZHXHSGAZe5DqSrR86wMHbm9QPziU4/3hoIG+99StuS74CuV42+hw/+FXXBkXMWbjKWsyF/HZt+I/wJuw== + +sass-embedded-win32-ia32@1.82.0: + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.82.0.tgz#55cab8c42d9df4853cd35354055326f00b963dae" + integrity sha512-xE+AzLquCkFPnnpo0NHjQdLRIhG1bVs42xIKx42aUbVLYKkBDvbBGpw6EtTscRMyvcjoOqGH5saRvSFComUQcw== + +sass-embedded-win32-x64@1.82.0: + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.82.0.tgz#b95082047a18346452ee19a2dd92c2d6abab466c" + integrity sha512-cEgfOQG5womOzzk16ReTv2dxPq5BG16LgLUold/LH9IZH86u4E/MN7Fspf4RWeEJ2EcLdew9QYSC2YWs1l98dQ== sass-embedded@^1.80.6: - version "1.80.6" - resolved "https://registry.yarnpkg.com/sass-embedded/-/sass-embedded-1.80.6.tgz#efd66c12c7f117c2dcb558e8bf6bd00cc5cd49b2" - integrity sha512-Og4aqBnaA3oJfIpHaLuNATAqzBRgUJDYJy2X15V59cot2wYOtiT/ciPnyuq1o7vpDEeOkHhEd+mSviSlXoETug== + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass-embedded/-/sass-embedded-1.82.0.tgz#2fe1f592840458d08c0b6d4893f8af6cdad7b379" + integrity sha512-v13sRVVZtWAQLpAGTz5D8hy+oyNKRHao5tKVc/P6AMqSP+jDM8X6GkEpL0jfbu3MaN2/hAQsd4Qx14GG1u0prQ== dependencies: "@bufbuild/protobuf" "^2.0.0" buffer-builder "^0.2.0" colorjs.io "^0.5.0" - immutable "^4.0.0" + immutable "^5.0.2" rxjs "^7.4.0" supports-color "^8.1.1" + sync-child-process "^1.0.2" varint "^6.0.0" optionalDependencies: - sass-embedded-android-arm "1.80.6" - sass-embedded-android-arm64 "1.80.6" - sass-embedded-android-ia32 "1.80.6" - sass-embedded-android-riscv64 "1.80.6" - sass-embedded-android-x64 "1.80.6" - sass-embedded-darwin-arm64 "1.80.6" - sass-embedded-darwin-x64 "1.80.6" - sass-embedded-linux-arm "1.80.6" - sass-embedded-linux-arm64 "1.80.6" - sass-embedded-linux-ia32 "1.80.6" - sass-embedded-linux-musl-arm "1.80.6" - sass-embedded-linux-musl-arm64 "1.80.6" - sass-embedded-linux-musl-ia32 "1.80.6" - sass-embedded-linux-musl-riscv64 "1.80.6" - sass-embedded-linux-musl-x64 "1.80.6" - sass-embedded-linux-riscv64 "1.80.6" - sass-embedded-linux-x64 "1.80.6" - sass-embedded-win32-arm64 "1.80.6" - sass-embedded-win32-ia32 "1.80.6" - sass-embedded-win32-x64 "1.80.6" + sass-embedded-android-arm "1.82.0" + sass-embedded-android-arm64 "1.82.0" + sass-embedded-android-ia32 "1.82.0" + sass-embedded-android-riscv64 "1.82.0" + sass-embedded-android-x64 "1.82.0" + sass-embedded-darwin-arm64 "1.82.0" + sass-embedded-darwin-x64 "1.82.0" + sass-embedded-linux-arm "1.82.0" + sass-embedded-linux-arm64 "1.82.0" + sass-embedded-linux-ia32 "1.82.0" + sass-embedded-linux-musl-arm "1.82.0" + sass-embedded-linux-musl-arm64 "1.82.0" + sass-embedded-linux-musl-ia32 "1.82.0" + sass-embedded-linux-musl-riscv64 "1.82.0" + sass-embedded-linux-musl-x64 "1.82.0" + sass-embedded-linux-riscv64 "1.82.0" + sass-embedded-linux-x64 "1.82.0" + sass-embedded-win32-arm64 "1.82.0" + sass-embedded-win32-ia32 "1.82.0" + sass-embedded-win32-x64 "1.82.0" sass-loader@^12.3.0: version "12.6.0" @@ -9581,14 +9442,16 @@ sass-loader@^12.3.0: klona "^2.0.4" neo-async "^2.6.2" -sass@1.77.6: - version "1.77.6" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.77.6.tgz#898845c1348078c2e6d1b64f9ee06b3f8bd489e4" - integrity sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q== +sass@1.82.0: + version "1.82.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.82.0.tgz#30da277af3d0fa6042e9ceabd0d984ed6d07df70" + integrity sha512-j4GMCTa8elGyN9A7x7bEglx0VgSpNUG4W4wNedQ33wSMdnkqQCT8HTwOaVSV4e6yQovcu/3Oc4coJP/l0xhL2Q== dependencies: - chokidar ">=3.0.0 <4.0.0" - immutable "^4.0.0" + chokidar "^4.0.0" + immutable "^5.0.2" source-map-js ">=0.6.2 <2.0.0" + optionalDependencies: + "@parcel/watcher" "^2.4.1" sax@~1.2.4: version "1.2.4" @@ -9669,10 +9532,10 @@ semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semve resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== +send@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== dependencies: debug "2.6.9" depd "2.0.0" @@ -9715,17 +9578,17 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== +serve-static@1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296" + integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== dependencies: - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.18.0" + send "0.19.0" -set-function-length@^1.2.1: +set-function-length@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== @@ -9747,11 +9610,6 @@ set-function-name@^2.0.1, set-function-name@^2.0.2: functions-have-names "^1.2.3" has-property-descriptors "^1.0.2" -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - setprototypeof@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" @@ -9775,9 +9633,9 @@ shebang-regex@^3.0.0: integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.7.3, shell-quote@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" - integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + version "1.8.2" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.2.tgz#d2d83e057959d53ec261311e9e9b8f51dcb2934a" + integrity sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA== should-equal@^2.0.0: version "2.0.0" @@ -9872,12 +9730,7 @@ source-list-map@^2.0.0, source-list-map@^2.0.1: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" - integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== - -source-map-js@^1.2.1: +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== @@ -9983,13 +9836,6 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== -stop-iteration-iterator@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" - integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== - dependencies: - internal-slot "^1.0.4" - string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -10038,13 +9884,14 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string.prototype.includes@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz#8986d57aee66d5460c144620a6d873778ad7289f" - integrity sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg== +string.prototype.includes@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz#eceef21283640761a81dbe16d6c7171a4edf7d92" + integrity sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg== dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.5" + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.3" string.prototype.matchall@^4.0.11, string.prototype.matchall@^4.0.6: version "4.0.11" @@ -10189,7 +10036,7 @@ stylehacks@^5.1.1: browserslist "^4.21.4" postcss-selector-parser "^6.0.4" -sucrase@^3.32.0: +sucrase@^3.35.0: version "3.35.0" resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== @@ -10295,41 +10142,53 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +sync-child-process@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/sync-child-process/-/sync-child-process-1.0.2.tgz#45e7c72e756d1243e80b547ea2e17957ab9e367f" + integrity sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA== + dependencies: + sync-message-port "^1.0.0" + +sync-message-port@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sync-message-port/-/sync-message-port-1.1.3.tgz#6055c565ee8c81d2f9ee5aae7db757e6d9088c0c" + integrity sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg== + synckit@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.1.tgz#febbfbb6649979450131f64735aa3f6c14575c88" - integrity sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A== + version "0.9.2" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.2.tgz#a3a935eca7922d48b9e7d6c61822ee6c3ae4ec62" + integrity sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw== dependencies: "@pkgr/core" "^0.1.0" tslib "^2.6.2" tailwindcss@^3.0.2: - version "3.4.7" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.7.tgz#6092f18767f5933f59375b9afe558e592fc77201" - integrity sha512-rxWZbe87YJb4OcSopb7up2Ba4U82BoiSGUdoDr3Ydrg9ckxFS/YWsvhN323GMcddgU65QRy7JndC7ahhInhvlQ== + version "3.4.16" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.16.tgz#35a7c3030844d6000fc271878db4096b6a8d2ec9" + integrity sha512-TI4Cyx7gDiZ6r44ewaJmt0o6BrMCT5aK5e0rmJ/G9Xq3w7CX/5VXl/zIPEJZFUK5VEqwByyhqNPycPlvcK4ZNw== dependencies: "@alloc/quick-lru" "^5.2.0" arg "^5.0.2" - chokidar "^3.5.3" + chokidar "^3.6.0" didyoumean "^1.2.2" dlv "^1.1.3" - fast-glob "^3.3.0" + fast-glob "^3.3.2" glob-parent "^6.0.2" is-glob "^4.0.3" - jiti "^1.21.0" - lilconfig "^2.1.0" - micromatch "^4.0.5" + jiti "^1.21.6" + lilconfig "^3.1.3" + micromatch "^4.0.8" normalize-path "^3.0.0" object-hash "^3.0.0" - picocolors "^1.0.0" - postcss "^8.4.23" + picocolors "^1.1.1" + postcss "^8.4.47" postcss-import "^15.1.0" postcss-js "^4.0.1" - postcss-load-config "^4.0.1" - postcss-nested "^6.0.1" - postcss-selector-parser "^6.0.11" - resolve "^1.22.2" - sucrase "^3.32.0" + postcss-load-config "^4.0.2" + postcss-nested "^6.2.0" + postcss-selector-parser "^6.1.2" + resolve "^1.22.8" + sucrase "^3.35.0" tapable@^1.0.0: version "1.1.3" @@ -10376,9 +10235,9 @@ terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.10: terser "^5.26.0" terser@^5.0.0, terser@^5.10.0, terser@^5.26.0: - version "5.31.3" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.3.tgz#b24b7beb46062f4653f049eea4f0cd165d0f0c38" - integrity sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA== + version "5.37.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.37.0.tgz#38aa66d1cfc43d0638fab54e43ff8a4f72a21ba3" + integrity sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -10433,11 +10292,6 @@ tmpl@1.0.5: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -10485,9 +10339,9 @@ tryer@^1.0.1: integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== ts-api-utils@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" - integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== + version "1.4.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz#bfc2215fe6528fecab2b0fba570a2e8a4263b064" + integrity sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw== ts-interface-checker@^0.1.9: version "0.1.13" @@ -10509,12 +10363,7 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.3, tslib@^2.4.0, tslib@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" - integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== - -tslib@^2.1.0: +tslib@^2.0.3, tslib@^2.1.0, tslib@^2.6.2, tslib@^2.8.0: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -10589,9 +10438,9 @@ typed-array-byte-length@^1.0.1: is-typed-array "^1.1.13" typed-array-byte-offset@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" - integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== + version "1.0.3" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.3.tgz#3fa9f22567700cc86aaf86a1e7176f74b59600f2" + integrity sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw== dependencies: available-typed-arrays "^1.0.7" call-bind "^1.0.7" @@ -10599,18 +10448,19 @@ typed-array-byte-offset@^1.0.2: gopd "^1.0.1" has-proto "^1.0.3" is-typed-array "^1.1.13" + reflect.getprototypeof "^1.0.6" typed-array-length@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3" - integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g== + version "1.0.7" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.7.tgz#ee4deff984b64be1e118b0de8c9c877d5ce73d3d" + integrity sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg== dependencies: call-bind "^1.0.7" for-each "^0.3.3" gopd "^1.0.1" - has-proto "^1.0.3" is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" + reflect.getprototypeof "^1.0.6" typedarray-to-buffer@^3.1.5: version "3.1.5" @@ -10620,28 +10470,18 @@ typedarray-to-buffer@^3.1.5: is-typedarray "^1.0.0" typescript-eslint@^8.0.1: - version "8.12.0" - resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.12.0.tgz#507f227097836a8b679108d2a80a3e9f20c5e74a" - integrity sha512-m8aQM4pqc17dcD3BsQzUqVXkcclCspuCCv7GhYlwMWNYAXFV8xJkn8vUM8YxoR78BY6S+NX/J7rfNVaGNLgXgQ== + version "8.18.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.18.0.tgz#41026f27a3481185f3239d817ae5b960572145a0" + integrity sha512-Xq2rRjn6tzVpAyHr3+nmSg1/9k9aIHnJ2iZeOH7cfGOWqTkXTm3kwpQglEuLGdNrYvPF+2gtAs+/KF5rjVo+WQ== dependencies: - "@typescript-eslint/eslint-plugin" "8.12.0" - "@typescript-eslint/parser" "8.12.0" - "@typescript-eslint/utils" "8.12.0" - -typescript@^5.0.0, typescript@^5.2.2: - version "5.5.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" - integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== - -typescript@^5.5.3: - version "5.6.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b" - integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== + "@typescript-eslint/eslint-plugin" "8.18.0" + "@typescript-eslint/parser" "8.18.0" + "@typescript-eslint/utils" "8.18.0" -ua-parser-js@^1.0.35: - version "1.0.39" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.39.tgz#bfc07f361549bf249bd8f4589a4cccec18fd2018" - integrity sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw== +typescript@^5.4.5, typescript@^5.5.3, typescript@^5.5.4: + version "5.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6" + integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg== unbox-primitive@^1.0.2: version "1.0.2" @@ -10663,7 +10503,7 @@ uncontrollable@^7.2.1: invariant "^2.2.4" react-lifecycles-compat "^3.0.4" -uncontrollable@^8.0.1: +uncontrollable@^8.0.4: version "8.0.4" resolved "https://registry.yarnpkg.com/uncontrollable/-/uncontrollable-8.0.4.tgz#a0a8307f638795162fafd0550f4a1efa0f8c5eb6" integrity sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ== @@ -10673,15 +10513,15 @@ underscore@1.12.1: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e" integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== -undici-types@~6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.13.0.tgz#e3e79220ab8c81ed1496b5812471afd7cf075ea5" - integrity sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg== +undici-types@~6.20.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" + integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + version "2.0.1" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz#cb3173fe47ca743e228216e4a3ddc4c84d628cc2" + integrity sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg== unicode-match-property-ecmascript@^2.0.0: version "2.0.0" @@ -10692,9 +10532,9 @@ unicode-match-property-ecmascript@^2.0.0: unicode-property-aliases-ecmascript "^2.0.0" unicode-match-property-value-ecmascript@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== + version "2.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz#a0401aee72714598f739b68b104e4fe3a0cb3c71" + integrity sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg== unicode-property-aliases-ecmascript@^2.0.0: version "2.1.0" @@ -10733,13 +10573,13 @@ upath@^1.2.0: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-browserslist-db@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" - integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== +update-browserslist-db@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== dependencies: - escalade "^3.1.2" - picocolors "^1.0.1" + escalade "^3.2.0" + picocolors "^1.1.0" uri-js@^4.2.2: version "4.4.1" @@ -10756,27 +10596,10 @@ url-parse@^1.5.3: querystringify "^2.1.1" requires-port "^1.0.0" -use-composed-ref@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" - integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== - -use-isomorphic-layout-effect@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" - integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== - -use-latest@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.1.tgz#d13dfb4b08c28e3e33991546a2cee53e14038cf2" - integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== - dependencies: - use-isomorphic-layout-effect "^1.1.1" - -use-sync-external-store@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz#c3b6390f3a30eba13200d2302dcdf1e7b57b2ef9" - integrity sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw== +use-sync-external-store@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz#adbc795d8eeb47029963016cefdf89dc799fcebc" + integrity sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw== util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" @@ -10837,14 +10660,14 @@ vite-bundle-visualizer@^1.2.1: rollup-plugin-visualizer "^5.11.0" tmp "^0.2.1" -vite@^5.4.9: - version "5.4.9" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.9.tgz#215c80cbebfd09ccbb9ceb8c0621391c9abdc19c" - integrity sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg== +vite@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/vite/-/vite-6.0.3.tgz#cc01f403e326a9fc1e064235df8a6de084c8a491" + integrity sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw== dependencies: - esbuild "^0.21.3" - postcss "^8.4.43" - rollup "^4.20.0" + esbuild "^0.24.0" + postcss "^8.4.49" + rollup "^4.23.0" optionalDependencies: fsevents "~2.3.3" @@ -10882,9 +10705,9 @@ warning@^4.0.0, warning@^4.0.3: loose-envify "^1.0.0" watchpack@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.1.tgz#29308f2cac150fa8e4c92f90e0ec954a9fed7fff" - integrity sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg== + version "2.4.2" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da" + integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" @@ -10897,9 +10720,9 @@ wbuf@^1.1.0, wbuf@^1.7.3: minimalistic-assert "^1.0.0" web-vitals@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-4.2.2.tgz#e883245180b95e175eb75a5ca8903b1a11597d7a" - integrity sha512-nYfoOqb4EmElljyXU2qdeE76KsvoHdftQKY4DzA9Aw8DervCg2bG634pHLrJ/d6+B4mE3nWTSJv8Mo7B2mbZkw== + version "4.2.4" + resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-4.2.4.tgz#1d20bc8590a37769bd0902b289550936069184b7" + integrity sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw== webidl-conversions@^3.0.0: version "3.0.1" @@ -10998,20 +10821,19 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.64.4: - version "5.93.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.93.0.tgz#2e89ec7035579bdfba9760d26c63ac5c3462a5e5" - integrity sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^1.0.5" - "@webassemblyjs/ast" "^1.12.1" - "@webassemblyjs/wasm-edit" "^1.12.1" - "@webassemblyjs/wasm-parser" "^1.12.1" - acorn "^8.7.1" - acorn-import-attributes "^1.9.5" - browserslist "^4.21.10" + version "5.97.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.97.1.tgz#972a8320a438b56ff0f1d94ade9e82eac155fa58" + integrity sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg== + dependencies: + "@types/eslint-scope" "^3.7.7" + "@types/estree" "^1.0.6" + "@webassemblyjs/ast" "^1.14.1" + "@webassemblyjs/wasm-edit" "^1.14.1" + "@webassemblyjs/wasm-parser" "^1.14.1" + acorn "^8.14.0" + browserslist "^4.24.0" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.17.0" + enhanced-resolve "^5.17.1" es-module-lexer "^1.2.1" eslint-scope "5.1.1" events "^3.2.0" @@ -11085,26 +10907,27 @@ whatwg-url@^8.0.0, whatwg-url@^8.5.0: webidl-conversions "^6.1.0" which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + version "1.1.0" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.1.0.tgz#2d850d6c4ac37b95441a67890e19f3fda8b6c6d9" + integrity sha512-Ei7Miu/AXe2JJ4iNF5j/UphAgRoma4trE6PtisM09bPygb3egMH3YLW/befsWb1A1AxvNSFidOFTB18XtnIIng== dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" + is-bigint "^1.1.0" + is-boolean-object "^1.2.0" + is-number-object "^1.1.0" + is-string "^1.1.0" + is-symbol "^1.1.0" -which-builtin-type@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.4.tgz#592796260602fc3514a1b5ee7fa29319b72380c3" - integrity sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w== +which-builtin-type@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.2.0.tgz#58042ac9602d78a6d117c7e811349df1268ba63c" + integrity sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA== dependencies: + call-bind "^1.0.7" function.prototype.name "^1.1.6" has-tostringtag "^1.0.2" is-async-function "^2.0.0" is-date-object "^1.0.5" - is-finalizationregistry "^1.0.2" + is-finalizationregistry "^1.1.0" is-generator-function "^1.0.10" is-regex "^1.1.4" is-weakref "^1.0.2" @@ -11113,7 +10936,7 @@ which-builtin-type@^1.1.3: which-collection "^1.0.2" which-typed-array "^1.1.15" -which-collection@^1.0.1, which-collection@^1.0.2: +which-collection@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== @@ -11123,10 +10946,10 @@ which-collection@^1.0.1, which-collection@^1.0.2: is-weakmap "^2.0.2" is-weakset "^2.0.3" -which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15: - version "1.1.15" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" - integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== +which-typed-array@^1.1.14, which-typed-array@^1.1.15: + version "1.1.16" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.16.tgz#db4db429c4706feca2f01677a144278e4a8c216b" + integrity sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ== dependencies: available-typed-arrays "^1.0.7" call-bind "^1.0.7" @@ -11400,9 +11223,9 @@ yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yaml@^2.3.4: - version "2.5.0" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.0.tgz#c6165a721cf8000e91c36490a41d7be25176cf5d" - integrity sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw== + version "2.6.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.6.1.tgz#42f2b1ba89203f374609572d5349fb8686500773" + integrity sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg== yargs-parser@^20.2.2: version "20.2.9" -- GitLab From a50e58baa045dd95bc9753c8e5be35e2aecd477c Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@@stud.h-da.de> Date: Wed, 11 Dec 2024 00:37:35 +0100 Subject: [PATCH 42/44] ui: fix linting issues --- react-ui/src/components/devices/index.module.ts | 5 ----- react-ui/src/components/login/view/login.view.tsx | 10 +++++----- .../json_viewer/reducer/json_viewer.reducer.ts | 2 +- .../json_viewer/viewmodel/json_viewer.viewmodel.tsx | 4 ++-- .../layouts/protected.layout/protected.layout.tsx | 2 +- react-ui/src/shared/provider/auth.provider.tsx | 2 +- react-ui/src/shared/provider/menu/menu.provider.tsx | 4 ++-- react-ui/src/shared/provider/utils.provider.tsx | 4 ++-- react-ui/src/shared/reducer/routine.reducer.ts | 13 +++++++++---- 9 files changed, 23 insertions(+), 23 deletions(-) delete mode 100755 react-ui/src/components/devices/index.module.ts diff --git a/react-ui/src/components/devices/index.module.ts b/react-ui/src/components/devices/index.module.ts deleted file mode 100755 index 5ef9299bd..000000000 --- a/react-ui/src/components/devices/index.module.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { fetchSelectedMneThunk } from './routines/mne.routine' - -const routines = { - fetchSelectedMneThunk: fetchSelectedMneThunk, -} diff --git a/react-ui/src/components/login/view/login.view.tsx b/react-ui/src/components/login/view/login.view.tsx index e393bb4b3..03d7406f4 100755 --- a/react-ui/src/components/login/view/login.view.tsx +++ b/react-ui/src/components/login/view/login.view.tsx @@ -1,12 +1,12 @@ -import { Alert, Button, Col, Container, Form, Image, Row, Spinner } from 'react-bootstrap' -import { useTranslation } from 'react-i18next' -import './login.scss' - import logo from '@assets/logo.svg' +import { BasicProp } from '@helper/interfaces' import React, { useRef } from 'react' +import { Alert, Button, Col, Container, Form, Image, Row, Spinner } from 'react-bootstrap' +import { useTranslation } from 'react-i18next' import useLoginViewModel from '../viewmodel/login.viewmodel' +import './login.scss' -const LoginView = ({ children }) => { +const LoginView: React.FC<BasicProp> = () => { const { t } = useTranslation('common') const { login, handleErrorMessageRendering, displayFormFieldChecks, loginLoading } = useLoginViewModel(); diff --git a/react-ui/src/shared/components/json_viewer/reducer/json_viewer.reducer.ts b/react-ui/src/shared/components/json_viewer/reducer/json_viewer.reducer.ts index 0779d0e18..dd432535c 100755 --- a/react-ui/src/shared/components/json_viewer/reducer/json_viewer.reducer.ts +++ b/react-ui/src/shared/components/json_viewer/reducer/json_viewer.reducer.ts @@ -55,7 +55,7 @@ const JsonViewerSlice = createSlice({ const { identifier, collapse } = payload // potentially find already collapsed - let i = state.collapseContainer.findIndex(i => compareIdentifier(identifier, i.identifier)) + const i = state.collapseContainer.findIndex(i => compareIdentifier(identifier, i.identifier)) if (i === -1) { diff --git a/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx b/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx index a1a9c8977..da78528f2 100644 --- a/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx +++ b/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx @@ -54,7 +54,7 @@ export const useJsonViewer = ({ json, search, container }: JsonViewerViewModelTy return !!item.length; } - const collapse = (key: string, nested: number, json: Object, collapseState: CollapseValues = CollapseValues.TOGGLE) => { + const collapse = (key: string, nested: number, json: object, collapseState: CollapseValues = CollapseValues.TOGGLE) => { const identifier = { key, nested }; dispatch(toggleCollapse({ identifier, collapse: collapseState })) @@ -95,7 +95,7 @@ export const useJsonViewer = ({ json, search, container }: JsonViewerViewModelTy } } - const innerSearch = (json: Object, searchValue: string, parentKey: string = "", path: string = "/"): boolean => { + const innerSearch = (json: object, searchValue: string, parentKey: string = "", path: string = "/"): boolean => { let found = false; path += parentKey + (parentKey === "" ? "" : "/") diff --git a/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx b/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx index 0708d87f1..c7e13c6fe 100755 --- a/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx +++ b/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx @@ -29,7 +29,7 @@ export const ProtectedLayout = () => { dispatch(fetchUser()); dispatch(fetchPnds()); - }, []); + }, [dispatch]); /** * Applies active css class to link if the link is active diff --git a/react-ui/src/shared/provider/auth.provider.tsx b/react-ui/src/shared/provider/auth.provider.tsx index 830a4d47d..69bdccbdf 100755 --- a/react-ui/src/shared/provider/auth.provider.tsx +++ b/react-ui/src/shared/provider/auth.provider.tsx @@ -103,7 +103,7 @@ export const AuthProvider: React.FC<BasicProp> = ({ children }) => { isAuthenticated, loginProperties }), - [] + [executeLogin, loginProperties, logout] ); return ( diff --git a/react-ui/src/shared/provider/menu/menu.provider.tsx b/react-ui/src/shared/provider/menu/menu.provider.tsx index 0cfc61f68..a91f46639 100644 --- a/react-ui/src/shared/provider/menu/menu.provider.tsx +++ b/react-ui/src/shared/provider/menu/menu.provider.tsx @@ -23,7 +23,7 @@ interface MenuProviderType { } const MenuContext = createContext<MenuProviderType>({ - subscribe: function (value: SubscriptionValue): MenuSubscription { + subscribe: function (): MenuSubscription { throw new Error("Function not implemented."); } }) @@ -86,7 +86,7 @@ export const MenuProvider: React.FC<BasicProp> = ({ children }) => { hideMenu(); } }); - }, []) + }, [hideMenu]) const value = useMemo<MenuProviderType>(() => { return { diff --git a/react-ui/src/shared/provider/utils.provider.tsx b/react-ui/src/shared/provider/utils.provider.tsx index 6f6775343..ca6aa1d32 100644 --- a/react-ui/src/shared/provider/utils.provider.tsx +++ b/react-ui/src/shared/provider/utils.provider.tsx @@ -8,7 +8,7 @@ interface UtilsProviderType { } const UtilsContext = createContext<UtilsProviderType>({ - toClipboard: function (text: string): void { + toClipboard: function (): void { throw new Error("Function not implemented."); } }) @@ -23,7 +23,7 @@ export const UtilsProvider: React.FC<BasicProp> = ({ children }) => { toast.info(t('global.toast.copied')) }, } as UtilsProviderType - }, []) + }, [t]) return ( <UtilsContext.Provider value={value}> diff --git a/react-ui/src/shared/reducer/routine.reducer.ts b/react-ui/src/shared/reducer/routine.reducer.ts index c7f9a43c1..a52ee84d3 100755 --- a/react-ui/src/shared/reducer/routine.reducer.ts +++ b/react-ui/src/shared/reducer/routine.reducer.ts @@ -6,7 +6,7 @@ import { setToken } from './user.reducer' interface ThunkEntityDTO { thunk: any - payload: any + payload: Object /** * Only one subscription per category is allowed. New subscription will unsubscribe and overwrite the old one @@ -45,14 +45,14 @@ const RoutineSlice = createSlice({ }, setThunkId: (state, { payload }: PayloadAction<{ id: number; category: CATEGORIES }>) => { - const thunk = state.thunks[CATEGORIES[payload.category]] + const thunk = state.thunks[CATEGORIES[payload.category] as any] if (!thunk) { // TODO throw new Error('Thunk not found') } - state.thunks[CATEGORIES[payload.category]] = { ...thunk, id: payload.id, locked: false } + state.thunks[CATEGORIES[payload.category] as any] = { ...thunk, id: payload.id, locked: false } }, removeAll: (state) => { @@ -107,8 +107,13 @@ startListening({ predicate: (action) => addRoutine.match(action), effect: async (action, listenerApi) => { const { routine } = listenerApi.getOriginalState() as RootState - const lastThunk = routine.thunks[CATEGORIES[action.payload.category]] + const lastThunk = routine.thunks[CATEGORIES[action.payload.category] as any] if (lastThunk) { + if (!lastThunk.id) { + throw new Error() + // TODO + } + RoutineManager.unsubscribe(lastThunk.id) } }, -- GitLab From c11b1bca406be9d8d2b59c126d592fa6e4d83df7 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@@stud.h-da.de> Date: Wed, 18 Dec 2024 14:45:40 +0100 Subject: [PATCH 43/44] create nginx webserver --- react-ui/.gitignore | 1 + react-ui/docker/webserver/Dockerfile | 4 + react-ui/docker/webserver/nginx.conf | 154 ++++++++++++++++++ react-ui/package.json | 17 +- react-ui/scripts/build.sh | 17 ++ react-ui/scripts/clean.sh | 5 - react-ui/src/shared/api/api.ts | 152 +++++++++++++---- .../viewmodel/json_viewer.viewmodel.tsx | 4 +- 8 files changed, 304 insertions(+), 50 deletions(-) create mode 100644 react-ui/docker/webserver/Dockerfile create mode 100644 react-ui/docker/webserver/nginx.conf create mode 100755 react-ui/scripts/build.sh delete mode 100755 react-ui/scripts/clean.sh diff --git a/react-ui/.gitignore b/react-ui/.gitignore index 5ec5a7340..2773d47af 100755 --- a/react-ui/.gitignore +++ b/react-ui/.gitignore @@ -8,6 +8,7 @@ # testing /coverage +/tmp # api /src/api/** diff --git a/react-ui/docker/webserver/Dockerfile b/react-ui/docker/webserver/Dockerfile new file mode 100644 index 000000000..f4644ee10 --- /dev/null +++ b/react-ui/docker/webserver/Dockerfile @@ -0,0 +1,4 @@ +FROM nginx:alpine3.20 + +COPY dist /usr/share/nginx/html +COPY docker/webserver/nginx.conf /etc/nginx/nginx.conf \ No newline at end of file diff --git a/react-ui/docker/webserver/nginx.conf b/react-ui/docker/webserver/nginx.conf new file mode 100644 index 000000000..87066f6ab --- /dev/null +++ b/react-ui/docker/webserver/nginx.conf @@ -0,0 +1,154 @@ + +#user nobody; +worker_processes 1; + +#error_log logs/error.log; +#error_log logs/error.log notice; +#error_log logs/error.log info; + +#pid logs/nginx.pid; + + +events { + worker_connections 1024; +} + +http { + include mime.types; + default_type application/octet-stream; + + #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + # '$status $body_bytes_sent "$http_referer" ' + # '"$http_user_agent" "$http_x_forwarded_for"'; + + #access_log logs/access.log main; + + sendfile on; + #tcp_nopush on; + + #keepalive_timeout 0; + keepalive_timeout 65; + + resolver 127.0.0.11 ipv6=off; + + #gzip on; + + server { + listen 80; + server_name localhost; + + #charset koi8-r; + + #access_log logs/host.access.log main; + + + location ^~ /api/ { + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + + # CORS headers + add_header 'Access-Control-Allow-Origin' '*' always; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' always; + add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range' always; + add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range' always; + + if ($request_method = 'OPTIONS') { + add_header 'Access-Control-Allow-Origin' '*'; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; + add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; + add_header 'Access-Control-Max-Age' 1728000; + add_header 'Content-Type' 'text/plain; charset=utf-8'; + add_header 'Content-Length' 0; + return 204; + } + + # Remove /api prefix when proxying + rewrite ^/api/(.*) /$1 break; + proxy_pass http://clab-gosdn_csbi_arista_base-gosdn:8080; + } + + location / { + root /usr/share/nginx/html; + index index.html; + try_files $uri $uri/ /index.html; + } + + location ~* \.(js|css|jpg|png|svg|woff|woff2|ttf|otf|eot|ico)$ { + root /usr/share/nginx/html; + add_header 'Access-Control-Allow-Origin' '*' always; + expires 30d; + add_header Cache-Control "public"; + } + + # #error_page 404 /404.html; + + # # redirect server error pages to the static page /50x.html + # # + # error_page 500 502 503 504 /50x.html; + # location = /50x.html { + # root html; + # } + + # proxy the PHP scripts to Apache listening on 127.0.0.1:80 + # + #location ~ \.php$ { + # proxy_pass http://127.0.0.1; + #} + + # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 + # + #location ~ \.php$ { + # root html; + # fastcgi_pass 127.0.0.1:9000; + # fastcgi_index index.php; + # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; + # include fastcgi_params; + #} + + # deny access to .htaccess files, if Apache's document root + # concurs with nginx's one + # + #location ~ /\.ht { + # deny all; + #} + } + + + # another virtual host using mix of IP-, name-, and port-based configuration + # + #server { + # listen 8000; + # listen somename:8080; + # server_name somename alias another.alias; + + # location / { + # root html; + # index index.html index.htm; + # } + #} + + + # HTTPS server + # + #server { + # listen 443 ssl; + # server_name localhost; + + # ssl_certificate cert.pem; + # ssl_certificate_key cert.key; + + # ssl_session_cache shared:SSL:1m; + # ssl_session_timeout 5m; + + # ssl_ciphers HIGH:!aNULL:!MD5; + # ssl_prefer_server_ciphers on; + + # location / { + # root html; + # index index.html index.htm; + # } + #} + +} \ No newline at end of file diff --git a/react-ui/package.json b/react-ui/package.json index 466870928..709c5bfcb 100755 --- a/react-ui/package.json +++ b/react-ui/package.json @@ -1,6 +1,10 @@ { "name": "react-ui", "version": "0.1.0", + "author": { + "name": "Matthias Feyll", + "email": "matthias.feyll@stud.h-da.de" + }, "private": true, "type": "module", "dependencies": { @@ -29,17 +33,15 @@ }, "scripts": { "start": "vite", - "build": "tsc && vite build", - "test": "react-scripts test", + "build::frontend": "vite build", "build::api": "npx @rtk-query/codegen-openapi ./scripts/openapi-config.json", + "build": "yarn build::api && yarn build::frontend", "lint": "eslint src", - "lint::fix": "eslint src --fix", - "clean": "./scripts/clean.sh" + "lint::fix": "eslint src --fix" }, "eslintConfig": { "extends": [ - "react-app", - "react-app/jest" + "react-app" ] }, "browserslist": { @@ -54,7 +56,6 @@ "last 1 safari version" ] }, - "proxy": "http://localhost:55055", "devDependencies": { "@babel/runtime": "^7.21.5", "@rtk-query/codegen-openapi": "^2.0.0", @@ -84,4 +85,4 @@ "vite": "^6.0.3", "vite-bundle-visualizer": "^1.2.1" } -} +} \ No newline at end of file diff --git a/react-ui/scripts/build.sh b/react-ui/scripts/build.sh new file mode 100755 index 000000000..ad0f0cd0b --- /dev/null +++ b/react-ui/scripts/build.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env sh + +IMAGE=node:23-alpine3.20 + +docker run --rm \ + -v $(pwd):/app \ + -w /app \ + -u $(id -u):$(id -g) \ + $IMAGE \ + yarn install && yarn build + +if [ $? -ne 0 ]; then + echo "Error while building frontend app" + exit 1 +fi + +echo "Build successfully in $(pwd)/dist" diff --git a/react-ui/scripts/clean.sh b/react-ui/scripts/clean.sh deleted file mode 100755 index 4220321a8..000000000 --- a/react-ui/scripts/clean.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env sh - -docker rmi react-ui-cpp-build - -rm -rf ./build \ No newline at end of file diff --git a/react-ui/src/shared/api/api.ts b/react-ui/src/shared/api/api.ts index c964d9dc9..32969f168 100755 --- a/react-ui/src/shared/api/api.ts +++ b/react-ui/src/shared/api/api.ts @@ -34,7 +34,9 @@ const injectedRtkApi = api >({ query: (queryArg) => ({ url: `/export/${queryArg.pid}`, - params: { timestamp: queryArg.timestamp }, + params: { + timestamp: queryArg.timestamp, + }, }), providesTags: ['ConfigurationManagementService'], }), @@ -52,7 +54,10 @@ const injectedRtkApi = api }), invalidatesTags: ['ConfigurationManagementService'], }), - authServiceLogin: build.mutation<AuthServiceLoginApiResponse, AuthServiceLoginApiArg>({ + authServiceLogin: build.mutation< + AuthServiceLoginApiResponse, + AuthServiceLoginApiArg + >({ query: (queryArg) => ({ url: `/login`, method: 'POST', @@ -67,7 +72,9 @@ const injectedRtkApi = api query: (queryArg) => ({ url: `/logout/${queryArg.username}`, method: 'POST', - params: { timestamp: queryArg.timestamp }, + params: { + timestamp: queryArg.timestamp, + }, }), invalidatesTags: ['AuthService'], }), @@ -77,7 +84,10 @@ const injectedRtkApi = api >({ query: (queryArg) => ({ url: `/mnes`, - params: { timestamp: queryArg.timestamp, pid: queryArg.pid }, + params: { + timestamp: queryArg.timestamp, + pid: queryArg.pid, + }, }), providesTags: ['NetworkElementService'], }), @@ -98,7 +108,10 @@ const injectedRtkApi = api >({ query: (queryArg) => ({ url: `/mnes/changes`, - params: { timestamp: queryArg.timestamp, pid: queryArg.pid }, + params: { + timestamp: queryArg.timestamp, + pid: queryArg.pid, + }, }), providesTags: ['NetworkElementService'], }), @@ -119,7 +132,10 @@ const injectedRtkApi = api >({ query: (queryArg) => ({ url: `/mnes/changes/${queryArg.cuid}`, - params: { timestamp: queryArg.timestamp, pid: queryArg.pid }, + params: { + timestamp: queryArg.timestamp, + pid: queryArg.pid, + }, }), providesTags: ['NetworkElementService'], }), @@ -140,7 +156,10 @@ const injectedRtkApi = api >({ query: (queryArg) => ({ url: `/mnes/${queryArg.mneid}`, - params: { timestamp: queryArg.timestamp, pid: queryArg.pid }, + params: { + timestamp: queryArg.timestamp, + pid: queryArg.pid, + }, }), providesTags: ['NetworkElementService'], }), @@ -151,7 +170,10 @@ const injectedRtkApi = api query: (queryArg) => ({ url: `/mnes/${queryArg.mneid}`, method: 'DELETE', - params: { timestamp: queryArg.timestamp, pid: queryArg.pid }, + params: { + timestamp: queryArg.timestamp, + pid: queryArg.pid, + }, }), invalidatesTags: ['NetworkElementService'], }), @@ -161,7 +183,10 @@ const injectedRtkApi = api >({ query: (queryArg) => ({ url: `/mnes/${queryArg.mneid}/intendedpaths/${queryArg.intendedPath}`, - params: { timestamp: queryArg.timestamp, pid: queryArg.pid }, + params: { + timestamp: queryArg.timestamp, + pid: queryArg.pid, + }, }), providesTags: ['NetworkElementService'], }), @@ -171,7 +196,10 @@ const injectedRtkApi = api >({ query: (queryArg) => ({ url: `/mnes/${queryArg.mneid}/paths/${queryArg.path}`, - params: { timestamp: queryArg.timestamp, pid: queryArg.pid }, + params: { + timestamp: queryArg.timestamp, + pid: queryArg.pid, + }, }), providesTags: ['NetworkElementService'], }), @@ -186,10 +214,15 @@ const injectedRtkApi = api }), invalidatesTags: ['NetworkElementService'], }), - pndServiceGetPnd: build.query<PndServiceGetPndApiResponse, PndServiceGetPndApiArg>({ + pndServiceGetPnd: build.query< + PndServiceGetPndApiResponse, + PndServiceGetPndApiArg + >({ query: (queryArg) => ({ url: `/pnd/${queryArg.pid}`, - params: { timestamp: queryArg.timestamp }, + params: { + timestamp: queryArg.timestamp, + }, }), providesTags: ['PndService'], }), @@ -197,7 +230,12 @@ const injectedRtkApi = api PndServiceGetPndListApiResponse, PndServiceGetPndListApiArg >({ - query: (queryArg) => ({ url: `/pnds`, params: { timestamp: queryArg.timestamp } }), + query: (queryArg) => ({ + url: `/pnds`, + params: { + timestamp: queryArg.timestamp, + }, + }), providesTags: ['PndService'], }), pndServiceCreatePndList: build.mutation< @@ -218,7 +256,9 @@ const injectedRtkApi = api query: (queryArg) => ({ url: `/pnds/${queryArg.pid}`, method: 'DELETE', - params: { timestamp: queryArg.timestamp }, + params: { + timestamp: queryArg.timestamp, + }, }), invalidatesTags: ['PndService'], }), @@ -237,7 +277,12 @@ const injectedRtkApi = api RoleServiceGetRolesApiResponse, RoleServiceGetRolesApiArg >({ - query: (queryArg) => ({ url: `/roles`, params: { timestamp: queryArg.timestamp } }), + query: (queryArg) => ({ + url: `/roles`, + params: { + timestamp: queryArg.timestamp, + }, + }), providesTags: ['RoleService'], }), roleServiceCreateRoles: build.mutation< @@ -258,7 +303,10 @@ const injectedRtkApi = api query: (queryArg) => ({ url: `/roles/delete`, method: 'DELETE', - params: { timestamp: queryArg.timestamp, roleName: queryArg.roleName }, + params: { + timestamp: queryArg.timestamp, + roleName: queryArg.roleName, + }, }), invalidatesTags: ['RoleService'], }), @@ -308,7 +356,9 @@ const injectedRtkApi = api >({ query: (queryArg) => ({ url: `/routing`, - params: { timestamp: queryArg.timestamp }, + params: { + timestamp: queryArg.timestamp, + }, }), providesTags: ['RoutingTableService'], }), @@ -330,7 +380,10 @@ const injectedRtkApi = api query: (queryArg) => ({ url: `/routing/delete`, method: 'DELETE', - params: { timestamp: queryArg.timestamp, id: queryArg.id }, + params: { + timestamp: queryArg.timestamp, + id: queryArg.id, + }, }), invalidatesTags: ['RoutingTableService'], }), @@ -340,7 +393,9 @@ const injectedRtkApi = api >({ query: (queryArg) => ({ url: `/submanagement/reset`, - params: { timestamp: queryArg.timestamp }, + params: { + timestamp: queryArg.timestamp, + }, }), providesTags: ['SubscriptionManagementService'], }), @@ -350,7 +405,9 @@ const injectedRtkApi = api >({ query: (queryArg) => ({ url: `/submanagement/subscriptions`, - params: { timestamp: queryArg.timestamp }, + params: { + timestamp: queryArg.timestamp, + }, }), providesTags: ['SubscriptionManagementService'], }), @@ -371,7 +428,9 @@ const injectedRtkApi = api >({ query: (queryArg) => ({ url: `/submanagement/${queryArg.subid}`, - params: { timestamp: queryArg.timestamp }, + params: { + timestamp: queryArg.timestamp, + }, }), providesTags: ['SubscriptionManagementService'], }), @@ -382,7 +441,9 @@ const injectedRtkApi = api query: (queryArg) => ({ url: `/submanagement/${queryArg.subid}`, method: 'DELETE', - params: { timestamp: queryArg.timestamp }, + params: { + timestamp: queryArg.timestamp, + }, }), invalidatesTags: ['SubscriptionManagementService'], }), @@ -392,7 +453,9 @@ const injectedRtkApi = api >({ query: (queryArg) => ({ url: `/topology`, - params: { timestamp: queryArg.timestamp }, + params: { + timestamp: queryArg.timestamp, + }, }), providesTags: ['TopologyService'], }), @@ -414,7 +477,10 @@ const injectedRtkApi = api query: (queryArg) => ({ url: `/topology/delete`, method: 'DELETE', - params: { timestamp: queryArg.timestamp, id: queryArg.id }, + params: { + timestamp: queryArg.timestamp, + id: queryArg.id, + }, }), invalidatesTags: ['TopologyService'], }), @@ -433,7 +499,12 @@ const injectedRtkApi = api UserServiceGetUsersApiResponse, UserServiceGetUsersApiArg >({ - query: (queryArg) => ({ url: `/users`, params: { timestamp: queryArg.timestamp } }), + query: (queryArg) => ({ + url: `/users`, + params: { + timestamp: queryArg.timestamp, + }, + }), providesTags: ['UserService'], }), userServiceCreateUsers: build.mutation< @@ -454,7 +525,10 @@ const injectedRtkApi = api query: (queryArg) => ({ url: `/users/delete`, method: 'DELETE', - params: { timestamp: queryArg.timestamp, username: queryArg.username }, + params: { + timestamp: queryArg.timestamp, + username: queryArg.username, + }, }), invalidatesTags: ['UserService'], }), @@ -464,7 +538,11 @@ const injectedRtkApi = api >({ query: (queryArg) => ({ url: `/users/get`, - params: { timestamp: queryArg.timestamp, name: queryArg.name, id: queryArg.id }, + params: { + timestamp: queryArg.timestamp, + name: queryArg.name, + id: queryArg.id, + }, }), providesTags: ['UserService'], }), @@ -485,7 +563,10 @@ const injectedRtkApi = api >({ query: (queryArg) => ({ url: `/yang/parse`, - params: { timestamp: queryArg.timestamp, yang: queryArg.yang }, + params: { + timestamp: queryArg.timestamp, + yang: queryArg.yang, + }, }), providesTags: ['NetworkElementService'], }), @@ -513,7 +594,8 @@ export type ConfigurationManagementServiceImportSdnConfigApiArg = { timestamp?: string sdnConfigData?: string } -export type AuthServiceLoginApiResponse = /** status 200 A successful response. */ RbacLoginResponse +export type AuthServiceLoginApiResponse = + /** status 200 A successful response. */ RbacLoginResponse export type AuthServiceLoginApiArg = { rbacLoginRequest: Login } @@ -598,7 +680,8 @@ export type NetworkElementServiceUpdateApiResponse = export type NetworkElementServiceUpdateApiArg = { networkelementUpdateNetworkElementRequest: TodoChangeNameToFitTheRest } -export type PndServiceGetPndApiResponse = /** status 200 A successful response. */ PndGetPndResponse +export type PndServiceGetPndApiResponse = + /** status 200 A successful response. */ PndGetPndResponse export type PndServiceGetPndApiArg = { pid: string /** Timestamp in nanoseconds since Epoch. */ @@ -867,10 +950,11 @@ export type TransportGnmiTransportOption = { } export type TransportRestconfTransportOption = object export type ChangedAccordingToStyleGuideHttpsDocsBufBuildBestPracticesStyleGuideEnums = - | 'TYPE_UNSPECIFIED' - | 'TYPE_OPENCONFIG' - | 'TYPE_CONTAINERISED' - | 'TYPE_PLUGIN' + + | 'TYPE_UNSPECIFIED' + | 'TYPE_OPENCONFIG' + | 'TYPE_CONTAINERISED' + | 'TYPE_PLUGIN' export type TransportTransportOption = { address?: string username?: string diff --git a/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx b/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx index da78528f2..6c3ac78f3 100644 --- a/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx +++ b/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx @@ -18,8 +18,6 @@ interface JsonViewerViewModelType { container: React.RefObject<HTMLElement> } -export const MARKED = "?marked" - export const useJsonViewer = ({ json, search, container }: JsonViewerViewModelType) => { const { breadcrumbs, collapseContainer } = useAppSelector(state => state.json_viwer) const dispatch = useAppDispatch(); @@ -128,7 +126,7 @@ export const useJsonViewer = ({ json, search, container }: JsonViewerViewModelTy return found } - const parameterizedJson = useMemo<MutableRefObject<Array<string>>>(() => { + const parameterizedJson = useMemo<MutableRefObject<string[]>>(() => { parameterizedJsonMap.current = [] if (searchTerm === "") { return json -- GitLab From 17d13aa47cec7a8689f21a858250610f0fd87cf5 Mon Sep 17 00:00:00 2001 From: Matthias Feyll <matthias.feyll@stud.h-da.de> Date: Thu, 16 Jan 2025 01:14:07 +0000 Subject: [PATCH 44/44] Ui refactor style See merge request danet/gosdn!1161 Co-authored-by: renovate_bot <group_8045_bot_08826d7c233c44435d2dae5013b96892@noreply.code.fbi.h-da.de> Co-authored-by: Fabian Seidl <fabian.seidl@h-da.de> Co-authored-by: Matthias Feyll <matthias.feyll@@stud.h-da.de> Co-authored-by: Ghost User <ghost@example.com> --- .gitlab/ci/.build-binaries.yml | 1 + .gitlab/ci/.build-container-images.yml | 10 ++ .gitlab/ci/.code-quality-ci.yml | 2 +- .gitlab/ci/.react-ui.yml | 3 - .gitlab/ci/.renovate.yml | 2 +- .golangci.yml | 2 +- Makefile | 4 +- controller/northbound/server/auth_test.go | 16 +- controller/northbound/server/role_test.go | 71 ++++++++- controller/northbound/server/topology_test.go | 63 +++++++- controller/northbound/server/user_test.go | 30 +++- controller/northbound/server/utils_test.go | 3 +- controller/nucleus/networkElementWatcher.go | 7 + dev_env_data/clab/gosdn_slim.clab.yaml | 7 + .../docker-compose/basic_docker-compose.yml | 5 + go.mod | 39 ++--- go.sum | 57 +++++++ makefiles/container/Makefile | 3 + plugin-registry/plugin-registry.Dockerfile | 7 +- react-ui/.dockerignore | 5 + react-ui/assets/logo.svg | 17 --- react-ui/docker/webserver/Dockerfile | 19 ++- react-ui/docker/webserver/nginx.conf | 143 +++++++++--------- react-ui/index.html | 5 +- react-ui/package.json | 70 +++++---- react-ui/public/favicon.ico | Bin 3870 -> 31533 bytes react-ui/public/fonts/inter-webfont.woff | Bin 0 -> 26796 bytes react-ui/public/fonts/inter-webfont.woff2 | Bin 0 -> 21204 bytes react-ui/scripts/build.sh | 2 +- react-ui/scripts/dev.sh | 11 ++ .../devices/reducer/device.reducer.ts | 137 ++++++++++++----- .../devices/routines/device.routine.ts | 19 ++- .../devices/routines/mne.routine.ts | 40 ++++- .../src/components/devices/view/device.scss | 6 +- .../devices/view/device.view.table.tsx | 60 +++++--- .../devices/view/device.view.tabs.tsx | 4 +- .../components/devices/view/device.view.tsx | 74 ++++++--- .../view_model/device.table.viewmodel.ts | 86 +++++++++-- .../view_model/device.tabs.viewmodel.ts | 2 +- .../devices/view_model/device.viewmodel.ts | 2 +- .../components/login/layouts/login.layout.tsx | 4 +- .../src/components/login/view/login.view.tsx | 4 +- .../login/viewmodel/login.viewmodel.ts | 6 +- .../src/i18n/locales/en/translations.json | 10 +- react-ui/src/index.scss | 2 +- react-ui/src/index.tsx | 1 + react-ui/src/routes.tsx | 43 +++++- .../json_viewer/view/json_viewer.view.tsx | 10 +- .../viewmodel/json_viewer.viewmodel.tsx | 45 +++--- react-ui/src/shared/helper/debug.ts | 11 ++ react-ui/src/shared/helper/text.ts | 12 ++ react-ui/src/shared/icons/icons.ts | 4 +- .../layouts/grid.layout/grid.layout.scss | 81 ++++++++++ .../layouts/grid.layout/grid.layout.tsx | 61 ++++++++ .../update-indicator.layout.tsx | 52 +++++++ .../update-indicator.viewmodel.tsx | 39 +++++ .../protected.layout/protected.layout.scss | 48 +++++- .../protected.layout/protected.layout.tsx | 73 +++++---- .../src/shared/provider/auth.provider.tsx | 2 +- .../shared/provider/menu/menu.provider.tsx | 45 ++++-- .../src/shared/provider/utils.provider.tsx | 2 +- .../src/shared/reducer/routine.reducer.ts | 104 +++++-------- react-ui/src/shared/reducer/user.reducer.ts | 30 +--- react-ui/src/shared/routine/user.routine.ts | 37 +++++ react-ui/src/shared/style/box.scss | 61 ++++++-- react-ui/src/shared/style/colors.scss | 20 +-- react-ui/src/shared/style/fonts.scss | 9 +- react-ui/src/shared/style/utils.scss | 4 - react-ui/src/shared/types/category.type.ts | 17 +++ .../interfaces.type.ts} | 0 react-ui/src/shared/types/thunk.type.ts | 24 +++ .../src/shared/utils/loading-fallback.tsx | 117 ++++++++++++++ react-ui/src/shared/utils/routine.manager.ts | 76 +++++----- react-ui/tsconfig.json | 1 - react-ui/vite.config.mjs | 31 +++- react-ui/yarn.lock | 120 ++++++++++++++- 76 files changed, 1666 insertions(+), 574 deletions(-) delete mode 100644 .gitlab/ci/.react-ui.yml create mode 100644 react-ui/.dockerignore delete mode 100755 react-ui/assets/logo.svg mode change 100755 => 100644 react-ui/public/favicon.ico create mode 100644 react-ui/public/fonts/inter-webfont.woff create mode 100644 react-ui/public/fonts/inter-webfont.woff2 create mode 100755 react-ui/scripts/dev.sh create mode 100644 react-ui/src/shared/helper/debug.ts create mode 100644 react-ui/src/shared/helper/text.ts create mode 100644 react-ui/src/shared/layouts/grid.layout/grid.layout.scss create mode 100644 react-ui/src/shared/layouts/grid.layout/grid.layout.tsx create mode 100644 react-ui/src/shared/layouts/grid.layout/update-inidicator.layout/update-indicator.layout.tsx create mode 100644 react-ui/src/shared/layouts/grid.layout/update-inidicator.layout/update-indicator.viewmodel.tsx create mode 100644 react-ui/src/shared/routine/user.routine.ts create mode 100644 react-ui/src/shared/types/category.type.ts rename react-ui/src/shared/{helper/interfaces.ts => types/interfaces.type.ts} (100%) create mode 100644 react-ui/src/shared/types/thunk.type.ts create mode 100644 react-ui/src/shared/utils/loading-fallback.tsx diff --git a/.gitlab/ci/.build-binaries.yml b/.gitlab/ci/.build-binaries.yml index 174203fdc..4877cd169 100644 --- a/.gitlab/ci/.build-binaries.yml +++ b/.gitlab/ci/.build-binaries.yml @@ -16,5 +16,6 @@ build-all-binaries: - artifacts/venv-manager - artifacts/inventory-manager - artifacts/plugin-registry + - artifacts/react-ui expire_in: 1 week <<: *build-binaries diff --git a/.gitlab/ci/.build-container-images.yml b/.gitlab/ci/.build-container-images.yml index da70dcba2..7fda52178 100644 --- a/.gitlab/ci/.build-container-images.yml +++ b/.gitlab/ci/.build-container-images.yml @@ -75,6 +75,16 @@ build-inventory-manager-image: - docker push "$INVENTORY_MANAGER_IMAGE_NAME:$CI_COMMIT_REF_SLUG" <<: *build +build-react-ui-image: + script: + - REACT_UI_IMAGE_NAME="${CI_REGISTRY_IMAGE}/react-ui" + - docker buildx build -t "$REACT_UI_IMAGE_NAME:$CI_COMMIT_SHA" -f "${CI_PROJECT_DIR}/react-ui/docker/webserver/Dockerfile" . + - docker push "$REACT_UI_IMAGE_NAME:$CI_COMMIT_SHA" + - docker tag "$REACT_UI_IMAGE_NAME:$CI_COMMIT_SHA" "$REACT_UI_IMAGE_NAME:$CI_COMMIT_REF_SLUG" + - docker push "$REACT_UI_IMAGE_NAME:$CI_COMMIT_REF_SLUG" + <<: *build + + build-integration-test-images: needs: ["build-controller-image"] script: diff --git a/.gitlab/ci/.code-quality-ci.yml b/.gitlab/ci/.code-quality-ci.yml index d054508c4..95ed3abe9 100644 --- a/.gitlab/ci/.code-quality-ci.yml +++ b/.gitlab/ci/.code-quality-ci.yml @@ -1,5 +1,5 @@ code-quality: - image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/golangci/golangci-lint:v1.62.2-alpine + image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/golangci/golangci-lint:v1.63.4-alpine stage: analyze script: # writes golangci-lint output to gl-code-quality-report.json diff --git a/.gitlab/ci/.react-ui.yml b/.gitlab/ci/.react-ui.yml deleted file mode 100644 index 873b694c8..000000000 --- a/.gitlab/ci/.react-ui.yml +++ /dev/null @@ -1,3 +0,0 @@ -build-react-ui: - stage: build - \ No newline at end of file diff --git a/.gitlab/ci/.renovate.yml b/.gitlab/ci/.renovate.yml index 55c8ea335..81070e9da 100644 --- a/.gitlab/ci/.renovate.yml +++ b/.gitlab/ci/.renovate.yml @@ -1,7 +1,7 @@ renovate: stage: tools - image: renovate/renovate:39.48.1 + image: renovate/renovate:39.107.0 variables: LOG_LEVEL: debug diff --git a/.golangci.yml b/.golangci.yml index cdd404e55..42bb6ac6b 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -14,13 +14,13 @@ output: - format: colored-line-number print-issued-lines: true print-linter-name: true - uniq-by-line: true path-prefix: "" issues: exclude-use-default: false max-issues-per-linter: 0 max-same-issues: 0 + uniq-by-line: true exclude-files: - http.go # directories to be ignored by linters diff --git a/Makefile b/Makefile index 888644abe..693329772 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ PLUGIN_NAME= bundled_plugin.zip # Tool Versions GOTESTSUM_VERSION=v1.8.1 -GOLANGCI_LINT_VERSION=v1.62.0 +GOLANGCI_LINT_VERSION=v1.63.4 MOCKERY_VERSION=v2.20.0 YGOT_GENERATOR_VERSION=v0.27.0 YGOT_GENERATOR_GENERATOR_VERSION=v0.0.4 @@ -60,7 +60,7 @@ lint-fix: install-tools build: pre build-gosdn build-gosdnc build-plugin-registry build-venv-manager build-arista-routing-engine-app build-hostname-checker-app build-basic-interface-monitoring-app build-inventory-manager -containerize-all: containerize-gosdn containerize-gosdnc containerize-plugin-registry containerize-venv-manager containerize-arista-routing-engine-app containerize-inventory-manager +containerize-all: containerize-gosdn containerize-gosdnc containerize-plugin-registry containerize-venv-manager containerize-arista-routing-engine-app containerize-inventory-manager containerize-react-ui generate-all-certs: pre generate-root-ca generate-gosdn-certs generate-gnmi-target-certs diff --git a/controller/northbound/server/auth_test.go b/controller/northbound/server/auth_test.go index e5c9e7389..956ef2be1 100644 --- a/controller/northbound/server/auth_test.go +++ b/controller/northbound/server/auth_test.go @@ -89,7 +89,13 @@ func TestAuth_Login(t *testing.T) { wantErr: true, validationErrors: []*validate.Violation{ { - FieldPath: stringToPointer("username"), + Field: &validate.FieldPath{ + Elements: []*validate.FieldPathElement{ + { + FieldName: stringToPointer("username"), + }, + }, + }, ConstraintId: stringToPointer("required"), Message: stringToPointer("value is required"), }}, @@ -160,7 +166,13 @@ func TestAuth_Logout(t *testing.T) { wantErr: true, validationErrors: []*validate.Violation{ { - FieldPath: stringToPointer("username"), + Field: &validate.FieldPath{ + Elements: []*validate.FieldPathElement{ + { + FieldName: stringToPointer("username"), + }, + }, + }, ConstraintId: stringToPointer("required"), Message: stringToPointer("value is required"), }}, diff --git a/controller/northbound/server/role_test.go b/controller/northbound/server/role_test.go index bb787a416..2d75e0678 100644 --- a/controller/northbound/server/role_test.go +++ b/controller/northbound/server/role_test.go @@ -84,10 +84,20 @@ func TestRole_CreateRoles(t *testing.T) { wantErr: true, validationErrors: []*validate.Violation{ { - FieldPath: stringToPointer("roles[0].name"), + Field: &validate.FieldPath{ + Elements: []*validate.FieldPathElement{ + { + FieldName: stringToPointer("roles"), + }, + { + FieldName: stringToPointer("name"), + }, + }, + }, ConstraintId: stringToPointer("string.min_len"), Message: stringToPointer("value length must be at least 3 characters"), - }}, + }, + }, }, { name: "role with too short description should fail", @@ -105,7 +115,16 @@ func TestRole_CreateRoles(t *testing.T) { want: &apb.CreateRolesResponse{}, wantErr: true, validationErrors: []*validate.Violation{{ - FieldPath: stringToPointer("roles[0].description"), + Field: &validate.FieldPath{ + Elements: []*validate.FieldPathElement{ + { + FieldName: stringToPointer("roles"), + }, + { + FieldName: stringToPointer("description"), + }, + }, + }, ConstraintId: stringToPointer("string.min_len"), Message: stringToPointer("value length must be at least 3 characters"), }}, @@ -181,7 +200,13 @@ func TestRole_GetRole(t *testing.T) { wantErr: true, validationErrors: []*validate.Violation{ { - FieldPath: stringToPointer("role_name"), + Field: &validate.FieldPath{ + Elements: []*validate.FieldPathElement{ + { + FieldName: stringToPointer("role_name"), + }, + }, + }, ConstraintId: stringToPointer("required"), Message: stringToPointer("value is required"), }, @@ -355,7 +380,16 @@ func TestRole_UpdateRoles(t *testing.T) { wantErr: true, validationErrors: []*validate.Violation{ { - FieldPath: stringToPointer("roles[0].name"), + Field: &validate.FieldPath{ + Elements: []*validate.FieldPathElement{ + { + FieldName: stringToPointer("roles"), + }, + { + FieldName: stringToPointer("name"), + }, + }, + }, ConstraintId: stringToPointer("string.min_len"), Message: stringToPointer("value length must be at least 3 characters"), }, @@ -379,7 +413,16 @@ func TestRole_UpdateRoles(t *testing.T) { wantErr: true, validationErrors: []*validate.Violation{ { - FieldPath: stringToPointer("roles[0].description"), + Field: &validate.FieldPath{ + Elements: []*validate.FieldPathElement{ + { + FieldName: stringToPointer("roles"), + }, + { + FieldName: stringToPointer("description"), + }, + }, + }, ConstraintId: stringToPointer("string.min_len"), Message: stringToPointer("value length must be at least 3 characters"), }, @@ -456,12 +499,24 @@ func TestRole_DeletePermissionsForRole(t *testing.T) { wantErr: true, validationErrors: []*validate.Violation{ { - FieldPath: stringToPointer("role_name"), + Field: &validate.FieldPath{ + Elements: []*validate.FieldPathElement{ + { + FieldName: stringToPointer("role_name"), + }, + }, + }, ConstraintId: stringToPointer("required"), Message: stringToPointer("value is required"), }, { - FieldPath: stringToPointer("permissions_to_delete"), + Field: &validate.FieldPath{ + Elements: []*validate.FieldPathElement{ + { + FieldName: stringToPointer("permissions_to_delete"), + }, + }, + }, ConstraintId: stringToPointer("required"), Message: stringToPointer("value is required"), }, diff --git a/controller/northbound/server/topology_test.go b/controller/northbound/server/topology_test.go index 44ce77b57..dea560a45 100644 --- a/controller/northbound/server/topology_test.go +++ b/controller/northbound/server/topology_test.go @@ -285,27 +285,72 @@ func TestTopology_AddLink(t *testing.T) { wantErr: true, validationErrors: []*validate.Violation{ { - FieldPath: stringToPointer("link.name"), + Field: &validate.FieldPath{ + Elements: []*validate.FieldPathElement{ + { + FieldName: stringToPointer("link"), + }, + { + FieldName: stringToPointer("name"), + }, + }, + }, ConstraintId: stringToPointer("string.min_len"), Message: stringToPointer("value length must be at least 1 characters"), }, { - FieldPath: stringToPointer("link.sourceNode"), + Field: &validate.FieldPath{ + Elements: []*validate.FieldPathElement{ + { + FieldName: stringToPointer("link"), + }, + { + FieldName: stringToPointer("sourceNode"), + }, + }, + }, ConstraintId: stringToPointer("required"), Message: stringToPointer("value is required"), }, { - FieldPath: stringToPointer("link.targetNode"), + Field: &validate.FieldPath{ + Elements: []*validate.FieldPathElement{ + { + FieldName: stringToPointer("link"), + }, + { + FieldName: stringToPointer("targetNode"), + }, + }, + }, ConstraintId: stringToPointer("required"), Message: stringToPointer("value is required"), }, { - FieldPath: stringToPointer("link.sourcePort"), + Field: &validate.FieldPath{ + Elements: []*validate.FieldPathElement{ + { + FieldName: stringToPointer("link"), + }, + { + FieldName: stringToPointer("sourcePort"), + }, + }, + }, ConstraintId: stringToPointer("required"), Message: stringToPointer("value is required"), }, { - FieldPath: stringToPointer("link.targetPort"), + Field: &validate.FieldPath{ + Elements: []*validate.FieldPathElement{ + { + FieldName: stringToPointer("link"), + }, + { + FieldName: stringToPointer("targetPort"), + }, + }, + }, ConstraintId: stringToPointer("required"), Message: stringToPointer("value is required"), }, @@ -461,7 +506,13 @@ func TestTopology_DeleteLink(t *testing.T) { wantErr: true, validationErrors: []*validate.Violation{ { - FieldPath: stringToPointer("id"), + Field: &validate.FieldPath{ + Elements: []*validate.FieldPathElement{ + { + FieldName: stringToPointer("id"), + }, + }, + }, ConstraintId: stringToPointer("required"), Message: stringToPointer("value is required"), }}, diff --git a/controller/northbound/server/user_test.go b/controller/northbound/server/user_test.go index 4a1c66327..9fcdf4d61 100644 --- a/controller/northbound/server/user_test.go +++ b/controller/northbound/server/user_test.go @@ -90,7 +90,16 @@ func TestUser_CreateUsers(t *testing.T) { wantErr: true, validationErrors: []*validate.Violation{ { - FieldPath: stringToPointer("user[0].password"), + Field: &validate.FieldPath{ + Elements: []*validate.FieldPathElement{ + { + FieldName: stringToPointer("user"), + }, + { + FieldName: stringToPointer("password"), + }, + }, + }, ConstraintId: stringToPointer("string.min_len"), Message: stringToPointer("value length must be at least 5 characters"), }}, @@ -116,7 +125,16 @@ func TestUser_CreateUsers(t *testing.T) { wantErr: true, validationErrors: []*validate.Violation{ { - FieldPath: stringToPointer("user[0].name"), + Field: &validate.FieldPath{ + Elements: []*validate.FieldPathElement{ + { + FieldName: stringToPointer("user"), + }, + { + FieldName: stringToPointer("name"), + }, + }, + }, ConstraintId: stringToPointer("string.min_len"), Message: stringToPointer("value length must be at least 3 characters"), }}, @@ -190,7 +208,13 @@ func TestUser_GetUser(t *testing.T) { wantErr: true, validationErrors: []*validate.Violation{ { - FieldPath: stringToPointer("name"), + Field: &validate.FieldPath{ + Elements: []*validate.FieldPathElement{ + { + FieldName: stringToPointer("name"), + }, + }, + }, ConstraintId: stringToPointer("required"), Message: stringToPointer("value is required"), }}, diff --git a/controller/northbound/server/utils_test.go b/controller/northbound/server/utils_test.go index 7a4636caa..dd95d8f2e 100644 --- a/controller/northbound/server/utils_test.go +++ b/controller/northbound/server/utils_test.go @@ -23,7 +23,8 @@ func isEqualFieldPaths(violationFieldPath, errFieldPath *validate.FieldPath) boo } for i, elem := range violationFieldPath.GetElements() { - if elem != errFieldPath.GetElements()[i] { + errElem := errFieldPath.GetElements()[i] + if *elem.FieldName != *errElem.FieldName { return false } } diff --git a/controller/nucleus/networkElementWatcher.go b/controller/nucleus/networkElementWatcher.go index 8b542d086..07ad775f2 100644 --- a/controller/nucleus/networkElementWatcher.go +++ b/controller/nucleus/networkElementWatcher.go @@ -200,6 +200,8 @@ func (n *NetworkElementWatcher) StopAndRemoveNetworkElementSubscription(subID uu // handleSubscribeResponse takes the subscribe response and additional information about the network element to distinguish // from which network element a subscribe response was sent including improved error handling. func (n *NetworkElementWatcher) handleSubscribeResponse(subscriptionInfo *transport.SubscriptionInformation, workerName string) { + log.Debugf("Received Subscribe response: MNE ID: %s, MNE Name: %s, SubResponse: %v", subscriptionInfo.NetworkElementID, subscriptionInfo.NetworkElementName, subscriptionInfo.SubResponse) + if subscriptionInfo.SubResponse == nil { // Note: This needs proper error handling, no idea how yet. Simply logging would lead to spam in the console // if the target that was subscribed to is not reachable anymore. @@ -232,6 +234,11 @@ func (n *NetworkElementWatcher) handleSubscribeResponse(subscriptionInfo *transp func (n *NetworkElementWatcher) handleSubscribeResponseUpdate(resp *gpb.SubscribeResponse_Update, subscriptionInfo *transport.SubscriptionInformation) { pathsAndValues := make(map[string]string, len(resp.Update.Update)) + if resp.Update == nil || len(resp.Update.Update) == 0 { + log.Debugf("handleSubscribeResponseUpdate empty update or updates; Update: %v, InnerUpdates: %v", resp.Update, resp.Update.Update) + return + } + for _, update := range resp.Update.Update { pathString, err := ygot.PathToString(update.Path) if err != nil { diff --git a/dev_env_data/clab/gosdn_slim.clab.yaml b/dev_env_data/clab/gosdn_slim.clab.yaml index f4d76846c..b3ef8eb08 100644 --- a/dev_env_data/clab/gosdn_slim.clab.yaml +++ b/dev_env_data/clab/gosdn_slim.clab.yaml @@ -13,6 +13,13 @@ topology: image: plugin-registry mgmt-ipv4: 172.100.0.16 + react-ui: + kind: linux + image: react-ui + ports: + - 127.0.0.1:8088:80 + mgmt-ipv4: 172.100.0.6 + gosdn: kind: linux image: gosdn diff --git a/dev_env_data/docker-compose/basic_docker-compose.yml b/dev_env_data/docker-compose/basic_docker-compose.yml index 4e7664161..2544e7b0f 100644 --- a/dev_env_data/docker-compose/basic_docker-compose.yml +++ b/dev_env_data/docker-compose/basic_docker-compose.yml @@ -75,5 +75,10 @@ services: command: start --cert /etc/gnmi-target/ssl/certs/gnmi-target-selfsigned.crt --key /etc/gnmi-target/ssl/private/gnmi-target-selfsigned.key --ca_file /etc/gnmi-target/ssl/ca.crt + react-ui: + image: react-ui + ports: + - 127.0.0.1:8088:80 + volumes: mongo-db-basic: diff --git a/go.mod b/go.mod index 2879fe711..f48265086 100644 --- a/go.mod +++ b/go.mod @@ -3,14 +3,14 @@ module code.fbi.h-da.de/danet/gosdn go 1.23 require ( - github.com/aristanetworks/goarista v0.0.0-20241115153057-bd75d7f26a44 + github.com/aristanetworks/goarista v0.0.0-20250108234106-1f88a86e2265 github.com/c-bata/go-prompt v0.2.6 github.com/docker/docker v24.0.9+incompatible github.com/google/go-cmp v0.6.0 github.com/google/uuid v1.6.0 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1 github.com/mitchellh/go-homedir v1.1.0 - github.com/openconfig/gnmi v0.11.0 + github.com/openconfig/gnmi v0.12.0 github.com/openconfig/goyang v1.6.0 github.com/openconfig/ygot v0.29.20 github.com/prometheus/client_golang v1.20.5 @@ -22,10 +22,10 @@ require ( github.com/spf13/viper v1.19.0 github.com/stretchr/objx v0.5.2 // indirect github.com/stretchr/testify v1.10.0 - go.mongodb.org/mongo-driver v1.17.1 + go.mongodb.org/mongo-driver/v2 v2.0.0 golang.org/x/sync v0.10.0 - google.golang.org/grpc v1.68.1 - google.golang.org/protobuf v1.35.2 + google.golang.org/grpc v1.69.4 + google.golang.org/protobuf v1.36.2 gopkg.in/yaml.v3 v3.0.1 ) @@ -41,13 +41,13 @@ require ( github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt v3.2.2+incompatible - github.com/golang/glog v1.2.3 + github.com/golang/glog v1.2.4 github.com/golang/protobuf v1.5.4 github.com/golang/snappy v0.0.4 // indirect github.com/gookit/color v1.5.4 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/compress v1.17.11 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect @@ -64,7 +64,7 @@ require ( github.com/pkg/term v1.2.0-beta.2 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.57.0 // indirect + github.com/prometheus/common v0.61.0 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/rabbitmq/amqp091-go v1.10.0 github.com/rivo/uniseg v0.4.4 // indirect @@ -77,21 +77,22 @@ require ( github.com/xdg-go/stringprep v1.0.4 // indirect github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect - golang.org/x/crypto v0.30.0 - golang.org/x/net v0.31.0 - golang.org/x/sys v0.28.0 // indirect - golang.org/x/term v0.27.0 // indirect + golang.org/x/crypto v0.32.0 + golang.org/x/net v0.34.0 + golang.org/x/sys v0.29.0 // indirect + golang.org/x/term v0.28.0 // indirect golang.org/x/text v0.21.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect ) require ( - buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.35.2-20241127180247-a33202765966.1 - github.com/bufbuild/protovalidate-go v0.7.3 + buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.2-20241127180247-a33202765966.1 + github.com/bufbuild/protovalidate-go v0.8.2 github.com/hashicorp/go-multierror v1.1.1 github.com/hashicorp/go-plugin v1.4.10 github.com/lesismal/nbio v1.5.12 - google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a + go.mongodb.org/mongo-driver v1.17.2 + google.golang.org/genproto/googleapis/api v0.0.0-20250106144421-5f5ef82da422 ) require ( @@ -103,7 +104,7 @@ require ( github.com/antlr4-go/antlr/v4 v4.13.0 // indirect github.com/containerd/console v1.0.3 // indirect github.com/fatih/color v1.15.0 // indirect - github.com/google/cel-go v0.22.0 // indirect + github.com/google/cel-go v0.22.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-hclog v1.5.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect @@ -122,7 +123,7 @@ require ( github.com/stoewer/go-strcase v1.3.0 // indirect go.uber.org/atomic v1.9.0 // indirect go.uber.org/multierr v1.9.0 // indirect - golang.org/x/exp v0.0.0-20240716175740-e3f259677ff7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 // indirect + golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250106144421-5f5ef82da422 // indirect gotest.tools/v3 v3.5.1 // indirect ) diff --git a/go.sum b/go.sum index 880acc9d1..2fc1f0098 100644 --- a/go.sum +++ b/go.sum @@ -16,6 +16,10 @@ buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.35.2-2024092016423 buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.35.2-20240920164238-5a7b106cbb87.1/go.mod h1:mnHCFccv4HwuIAOHNGdiIc5ZYbBCvbTWZcodLN5wITI= buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.35.2-20241127180247-a33202765966.1 h1:jLd96rDDNJ+zIJxvV/L855VEtrjR0G4aePVDlCpf6kw= buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.35.2-20241127180247-a33202765966.1/go.mod h1:mnHCFccv4HwuIAOHNGdiIc5ZYbBCvbTWZcodLN5wITI= +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.1-20241127180247-a33202765966.1 h1:v223wh/bhlSHSc0tU9PXRWXHhkw3UWMtth7TmYGfHAQ= +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.1-20241127180247-a33202765966.1/go.mod h1:/zlFuuECgFgewxwW6qQKgvMJ07YZkWlVkcSxEhJprJw= +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.2-20241127180247-a33202765966.1 h1:BICM6du/XzvEgeorNo4xgohK3nMTmEPViGyd5t7xVqk= +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.2-20241127180247-a33202765966.1/go.mod h1:JnMVLi3qrNYPODVpEKG7UjHLl/d2zR221e66YCSmP2Q= cel.dev/expr v0.18.0 h1:CJ6drgk+Hf96lkLikr4rFf19WrU0BOWEihyZnI2TAzo= cel.dev/expr v0.18.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= @@ -56,6 +60,10 @@ github.com/aristanetworks/goarista v0.0.0-20241101122619-a6d58bf1ed81 h1:CpeoPCo github.com/aristanetworks/goarista v0.0.0-20241101122619-a6d58bf1ed81/go.mod h1:C+YeQrhbMvCPh5wG6iqGiCD/zcITTpt4YQ1v4K0g5Vc= github.com/aristanetworks/goarista v0.0.0-20241115153057-bd75d7f26a44 h1:vb3HPPa1CegMZY90JF8mDyxXiV+qJJuSWwMhBZCcsws= github.com/aristanetworks/goarista v0.0.0-20241115153057-bd75d7f26a44/go.mod h1:C+YeQrhbMvCPh5wG6iqGiCD/zcITTpt4YQ1v4K0g5Vc= +github.com/aristanetworks/goarista v0.0.0-20250108214730-362a04c9d029 h1:bvw2TILeXtuYfZ9rip/4DY933UuIvCwtvJmwvz978ac= +github.com/aristanetworks/goarista v0.0.0-20250108214730-362a04c9d029/go.mod h1:C+YeQrhbMvCPh5wG6iqGiCD/zcITTpt4YQ1v4K0g5Vc= +github.com/aristanetworks/goarista v0.0.0-20250108234106-1f88a86e2265 h1:NPQhasGGtAIxtDG4KQTcQviV9T6a98kbKSO0VKFRS+E= +github.com/aristanetworks/goarista v0.0.0-20250108234106-1f88a86e2265/go.mod h1:1xldiSdHhqa1XIr6EPNnSBfwZEAMZwwJIiEtMS8yzkU= github.com/aristanetworks/gomap v0.0.0-20240724180630-b4cffb90720f h1:3GwV1IeLp0PwWcnbc9ZihE3osvexJf3PMjWSCGjtIqc= github.com/aristanetworks/gomap v0.0.0-20240724180630-b4cffb90720f/go.mod h1:bNzH6HFWav8D/ws3QlkjLpf9ZOdsUTDx+qJikWCcGRc= github.com/atomicgo/cursor v0.0.1/go.mod h1:cBON2QmmrysudxNBFthvMtN32r3jxVRIvzkUiF/RuIk= @@ -71,6 +79,8 @@ github.com/bufbuild/protovalidate-go v0.7.2 h1:UuvKyZHl5p7u3ztEjtRtqtDxOjRKX5VUO github.com/bufbuild/protovalidate-go v0.7.2/go.mod h1:PHV5pFuWlRzdDW02/cmVyNzdiQ+RNNwo7idGxdzS7o4= github.com/bufbuild/protovalidate-go v0.7.3 h1:kKnoSueygR3xxppvuBpm9SEwIsP359MMRfMBGmRByPg= github.com/bufbuild/protovalidate-go v0.7.3/go.mod h1:CFv34wMqiBzAHdQ4q/tWYi9ILFYKuaC3/4zh6eqdUck= +github.com/bufbuild/protovalidate-go v0.8.2 h1:sgzXHkHYP6HnAsL2Rd3I1JxkYUyEQUv9awU1PduMxbM= +github.com/bufbuild/protovalidate-go v0.8.2/go.mod h1:K6w8iPNAXBoIivVueSELbUeUl+MmeTQfCDSug85pn3M= github.com/c-bata/go-prompt v0.2.6 h1:POP+nrHE+DfLYx370bedwNhsqmpCUynWPxuHi0C5vZI= github.com/c-bata/go-prompt v0.2.6/go.mod h1:/LMAke8wD2FsNu9EXNdHxNLbd9MedkPnCdfpU9wwHfY= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= @@ -124,6 +134,8 @@ github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY= github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/glog v1.2.3 h1:oDTdz9f5VGVVNGu/Q7UXKWYsD0873HXLHdJUNBsSEKM= github.com/golang/glog v1.2.3/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.4 h1:CNNw5U8lSiiBk7druxtSHHTsRWcxKoac6kZKm2peBBc= +github.com/golang/glog v1.2.4/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -146,6 +158,8 @@ github.com/google/cel-go v0.21.0 h1:cl6uW/gxN+Hy50tNYvI691+sXxioCnstFzLp2WO4GCI= github.com/google/cel-go v0.21.0/go.mod h1:rHUlWCcBKgyEk+eV03RPdZUekPp6YcJwV0FxuUksYxc= github.com/google/cel-go v0.22.0 h1:b3FJZxpiv1vTMo2/5RDUqAHPxkT8mmMfJIrq1llbf7g= github.com/google/cel-go v0.22.0/go.mod h1:BuznPXXfQDpXKWQ9sPW3TzlAJN5zzFe+i9tIs0yC4s8= +github.com/google/cel-go v0.22.1 h1:AfVXx3chM2qwoSbM7Da8g8hX8OVSkBFwX+rz2+PcK40= +github.com/google/cel-go v0.22.1/go.mod h1:BuznPXXfQDpXKWQ9sPW3TzlAJN5zzFe+i9tIs0yC4s8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -169,6 +183,8 @@ github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 h1:ad0vkEBuk23VJzZR9nkLVG0YAoN github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0/go.mod h1:igFoXX2ELCW06bol23DWPB5BEWfZISOzSP5K2sbLea0= github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0 h1:TmHmbvxPmaegwhDubVz0lICL0J5Ka2vwTzhoePEXsGE= github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0/go.mod h1:qztMSjm835F2bXf+5HKAPIS5qsmQDqZna/PgVt4rWtI= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1 h1:VNqngBF40hVlDloBruUehVYC3ArSgIyScOAyMRqBxRg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1/go.mod h1:RBRO7fro65R6tjKzYgLAFo0t1QEXY1Dp+i/bvpRiqiQ= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -190,6 +206,8 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= +github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.10/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= github.com/klauspost/cpuid/v2 v2.0.12/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= @@ -262,6 +280,8 @@ github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DV github.com/openconfig/gnmi v0.10.0/go.mod h1:Y9os75GmSkhHw2wX8sMsxfI7qRGAEcDh8NTa5a8vj6E= github.com/openconfig/gnmi v0.11.0 h1:H7pLIb/o3xObu3+x0Fv9DCK7TH3FUh7mNwbYe+34hFw= github.com/openconfig/gnmi v0.11.0/go.mod h1:9oJSQPPCpNvfMRj8e4ZoLVAw4wL8HyxXbiDlyuexCGU= +github.com/openconfig/gnmi v0.12.0 h1:aPkmcX9pdcz6QqsBsXXg5UQooqhnmlHD3JtdtvtzmaU= +github.com/openconfig/gnmi v0.12.0/go.mod h1:5a/cIOZevJLfJgd1qWkgYROE8xfgEbaSJXpdD8xk/LQ= github.com/openconfig/goyang v0.0.0-20200115183954-d0a48929f0ea/go.mod h1:dhXaV0JgHJzdrHi2l+w0fZrwArtXL7jEFoiqLEdmkvU= github.com/openconfig/goyang v1.6.0 h1:JjnPbLY1/y28VyTO67LsEV0TaLWNiZyDcsppGq4F4is= github.com/openconfig/goyang v1.6.0/go.mod h1:sdNZi/wdTZyLNBNfgLzmmbi7kISm7FskMDKKzMY+x1M= @@ -296,6 +316,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.57.0 h1:Ro/rKjwdq9mZn1K5QPctzh+MA4Lp0BuYk5ZZEVhoNcY= github.com/prometheus/common v0.57.0/go.mod h1:7uRPFSUTbfZWsJ7MHY56sqt7hLQu3bxXHDnNhl8E9qI= +github.com/prometheus/common v0.61.0 h1:3gv/GThfX0cV2lpO7gkTUwZru38mxevy90Bj8YFSRQQ= +github.com/prometheus/common v0.61.0/go.mod h1:zr29OCN/2BsJRaFwG8QOBr41D6kkchKbpeNH7pAjb/s= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/protocolbuffers/txtpbfmt v0.0.0-20220608084003-fc78c767cd6a/go.mod h1:KjY0wibdYKc4DYkerHSbguaf3JeIPGhNJBp2BNiFH78= @@ -390,6 +412,9 @@ go.mongodb.org/mongo-driver v1.17.0 h1:Hp4q2MCjvY19ViwimTs00wHi7G4yzxh4/2+nTx8r4 go.mongodb.org/mongo-driver v1.17.0/go.mod h1:wwWm/+BuOddhcq3n68LKRmgk2wXzmF6s0SFOa0GINL4= go.mongodb.org/mongo-driver v1.17.1 h1:Wic5cJIwJgSpBhe3lx3+/RybR5PiYRMpVFgO7cOHyIM= go.mongodb.org/mongo-driver v1.17.1/go.mod h1:wwWm/+BuOddhcq3n68LKRmgk2wXzmF6s0SFOa0GINL4= +go.mongodb.org/mongo-driver v1.17.2 h1:gvZyk8352qSfzyZ2UMWcpDpMSGEr1eqE4T793SqyhzM= +go.mongodb.org/mongo-driver v1.17.2/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= +go.mongodb.org/mongo-driver/v2 v2.0.0/go.mod h1:nSjmNq4JUstE8IRZKTktLgMHM4F1fccL6HGX1yh+8RA= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= @@ -411,9 +436,15 @@ golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20240716175740-e3f259677ff7 h1:wDLEX9a7YQoKdKNQt88rtydkqDxeGaBUTnIYc3iG/mA= golang.org/x/exp v0.0.0-20240716175740-e3f259677ff7/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= +golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= +golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -446,6 +477,10 @@ golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -501,6 +536,8 @@ golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -514,6 +551,8 @@ golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= +golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= +golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -575,6 +614,10 @@ google.golang.org/genproto/googleapis/api v0.0.0-20241118233622-e639e219e697 h1: google.golang.org/genproto/googleapis/api v0.0.0-20241118233622-e639e219e697/go.mod h1:+D9ySVjN8nY8YCVjc5O7PZDIdZporIDY3KaGfJunh88= google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a h1:OAiGFfOiA0v9MRYsSidp3ubZaBnteRUyn3xB2ZQ5G/E= google.golang.org/genproto/googleapis/api v0.0.0-20241202173237-19429a94021a/go.mod h1:jehYqy3+AhJU9ve55aNOaSml7wUXjF9x6z2LcCfpAhY= +google.golang.org/genproto/googleapis/api v0.0.0-20250102185135-69823020774d h1:H8tOf8XM88HvKqLTxe755haY6r1fqqzLbEnfrmLXlSA= +google.golang.org/genproto/googleapis/api v0.0.0-20250102185135-69823020774d/go.mod h1:2v7Z7gP2ZUOGsaFyxATQSRoBnKygqVq2Cwnvom7QiqY= +google.golang.org/genproto/googleapis/api v0.0.0-20250106144421-5f5ef82da422 h1:GVIKPyP/kLIyVOgOnTwFOrvQaQUzOzGMCxgFUOEmm24= +google.golang.org/genproto/googleapis/api v0.0.0-20250106144421-5f5ef82da422/go.mod h1:b6h1vNKhxaSoEI+5jc3PJUCustfli/mRab7295pY7rw= google.golang.org/genproto/googleapis/rpc v0.0.0-20240827150818-7e3bb234dfed h1:J6izYgfBXAI3xTKLgxzTmUltdYaLsuBxFCgDHWJ/eXg= google.golang.org/genproto/googleapis/rpc v0.0.0-20240827150818-7e3bb234dfed/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= @@ -595,6 +638,12 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 h1:LWZqQOEjDyONlF1H6afSWpAL/znlREo2tHfLoe+8LMA= google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8 h1:TqExAhdPaB60Ux47Cn0oLV07rGnxZzIsaRhQaqS666A= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241223144023-3abc09e42ca8/go.mod h1:lcTa1sDdWEIHMWlITnIczmw5w60CF9ffkb8Z+DVmmjA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250102185135-69823020774d h1:xJJRGY7TJcvIlpSrN3K6LAWgNFUILlO+OMAqtg9aqnw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250102185135-69823020774d/go.mod h1:3ENsm/5D1mzDyhpzeRi1NR784I0BcofWBoSc5QqqMK4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250106144421-5f5ef82da422 h1:3UsHvIr4Wc2aW4brOaSCmcxh9ksica6fHEr8P1XhkYw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250106144421-5f5ef82da422/go.mod h1:3ENsm/5D1mzDyhpzeRi1NR784I0BcofWBoSc5QqqMK4= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -613,6 +662,10 @@ google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= +google.golang.org/grpc v1.69.2 h1:U3S9QEtbXC0bYNvRtcoklF3xGtLViumSYxWykJS+7AU= +google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= +google.golang.org/grpc v1.69.4 h1:MF5TftSMkd8GLw/m0KM6V8CMOCY6NZ1NQDPGFgbTt4A= +google.golang.org/grpc v1.69.4/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -633,6 +686,10 @@ google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFyt google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.2 h1:R8FeyR1/eLmkutZOM5CWghmo5itiG9z0ktFlTVLuTmU= +google.golang.org/protobuf v1.36.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= diff --git a/makefiles/container/Makefile b/makefiles/container/Makefile index c9c21b972..6e3b97242 100644 --- a/makefiles/container/Makefile +++ b/makefiles/container/Makefile @@ -25,3 +25,6 @@ containerize-ws-events-app: containerize-inventory-manager: docker buildx build --rm -t venv-manager --load -f applications/inventory-manager/inventory-manager.Dockerfile . + +containerize-react-ui: + docker buildx build --rm --load -t react-ui -f react-ui/docker/webserver/Dockerfile . diff --git a/plugin-registry/plugin-registry.Dockerfile b/plugin-registry/plugin-registry.Dockerfile index 05d3aad83..292a134fd 100644 --- a/plugin-registry/plugin-registry.Dockerfile +++ b/plugin-registry/plugin-registry.Dockerfile @@ -4,8 +4,9 @@ ARG GITLAB_PROXY FROM ${GITLAB_PROXY}golang:$GOLANG_VERSION-bookworm as builder WORKDIR /plugin-registry/ -RUN apt-get update -RUN apt-get -y install --no-install-recommends zip +RUN apt-get update && \ + apt-get -y install --no-install-recommends zip && \ + rm -rf /var/lib/apt/lists/* COPY . . RUN --mount=type=cache,target=/root/go/pkg/mod \ --mount=type=cache,target=/root/.cache/go-build \ @@ -21,4 +22,4 @@ WORKDIR /app/ COPY --from=builder /plugin-registry/artifacts/plugin-registry . COPY --from=builder /plugin-registry/plugin-registry/plugins ./plugins COPY --from=builder /plugin-registry/dev_env_data/plugin-registry/plugin-store.json ./plugin-store.json -ENTRYPOINT ["./plugin-registry", "-socket", "55057"] +ENTRYPOINT ["./plugin-registry", "-socket", "55057"] \ No newline at end of file diff --git a/react-ui/.dockerignore b/react-ui/.dockerignore new file mode 100644 index 000000000..5ecec0472 --- /dev/null +++ b/react-ui/.dockerignore @@ -0,0 +1,5 @@ +node_modules/ +dist/ +vite/ +tmp/ +.vscode/ \ No newline at end of file diff --git a/react-ui/assets/logo.svg b/react-ui/assets/logo.svg deleted file mode 100755 index b7f71bd90..000000000 --- a/react-ui/assets/logo.svg +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<!-- Created with Vectornator (http://vectornator.io/) --> -<svg height="100%" stroke-miterlimit="10" style="fill-rule:nonzero;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;" version="1.1" viewBox="0 0 113.4 212.625" width="100%" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:vectornator="http://vectornator.io" xmlns:xlink="http://www.w3.org/1999/xlink"> -<defs> -<radialGradient cx="170.235" cy="146.046" gradientTransform="matrix(1.00001 -8.65109e-05 8.65119e-05 1 -115.465 -116.986)" gradientUnits="userSpaceOnUse" id="RadialGradient" r="217.591"> -<stop offset="0" stop-color="#c456f7"/> -<stop offset="1" stop-color="#34054a"/> -</radialGradient> -<filter color-interpolation-filters="sRGB" filterUnits="userSpaceOnUse" height="209.692" id="Filter" width="111.957" x="0.722269" y="2.46642"> -<feDropShadow dx="-4.37114e-08" dy="1" flood-color="#050505" flood-opacity="1" in="SourceGraphic" result="Shadow" stdDeviation="1"/> -</filter> -</defs> -<g id="Layer-1" vectornator:layerName="Layer 1"> -<path d="M35.1413 3.47016L35.1416 6.93891L27.1415 6.93961L27.1464 63.3771C21.6096 65.0011 16.4869 67.0445 12.2717 69.6596C-9.35807 83.0789 12.5182 123.232 12.5264 123.222C12.5341 123.213 12.5498 123.2 12.5576 123.191C13.1518 124.609 14.5144 125.761 16.5579 126.534C18.7737 127.372 21.8204 127.855 26.8082 128.408C25.0644 132.318 24.4639 137.732 25.3409 144.846C26.0816 150.854 28.2327 155.309 32.5924 161.533C32.9615 162.06 34.1761 163.796 34.3427 164.033C35.013 164.984 35.5416 165.705 35.9991 166.408C38.1084 169.647 39.1319 172.149 39.3124 174.814C39.3701 175.665 39.3355 180.513 39.251 187.751C39.2362 189.024 39.0999 200.614 39.0959 200.907C37.7122 201.653 36.7523 203.069 36.7525 204.751C36.7527 207.19 38.7205 209.157 41.1591 209.157C43.5978 209.157 45.5653 207.189 45.5651 204.751C45.5649 203.019 44.5477 201.568 43.096 200.844C43.1023 200.341 43.2363 189.045 43.2511 187.782C43.3388 180.268 43.3816 175.583 43.3124 174.563C43.0775 171.096 41.7912 168.012 39.3427 164.251C38.854 163.5 38.3197 162.708 37.6237 161.72C37.4507 161.474 36.2342 159.766 35.8735 159.251C31.8564 153.517 29.9529 149.563 29.3096 144.346C28.2621 135.848 29.4895 130.5 32.027 127.533C32.6413 126.815 33.2789 126.306 33.9019 125.97C34.2334 125.792 34.4442 125.7 34.4956 125.689C35.5735 125.448 36.2365 124.392 35.9954 123.314C35.7543 122.236 34.6982 121.542 33.6202 121.783C33.2264 121.871 32.6655 122.078 31.9953 122.439C31.0669 122.939 30.1635 123.734 29.3079 124.658C23.0392 124.019 20.0922 123.577 17.9951 122.784C16.1482 122.086 15.9773 121.63 16.7137 120.347C25.511 115.923 43.9287 113.157 55.0885 113.156C63.8081 113.155 79.7952 116.873 90.4333 119.622C93.9977 120.542 94.7294 120.755 96.621 121.277C94.2649 123.034 89.4439 124.738 83.3087 125.247C83.0835 125.266 82.9434 125.443 82.7462 125.529C82.6074 125.348 82.5171 125.106 82.3711 124.935C81.4271 123.831 80.3863 122.999 79.3396 122.435C78.6693 122.074 78.1085 121.867 77.7145 121.779C76.6365 121.538 75.5805 122.233 75.3396 123.31C75.0987 124.388 75.7619 125.444 76.8399 125.685C76.8913 125.697 77.1021 125.788 77.4337 125.967C78.0567 126.302 78.6942 126.81 79.3088 127.529C81.8468 130.496 83.0751 135.844 82.029 144.341C81.3867 149.559 79.4839 153.513 75.4678 159.248C75.1071 159.763 73.8909 161.471 73.7179 161.717C73.0221 162.705 72.488 163.498 71.9994 164.248C69.5516 168.009 68.2658 171.094 68.0315 174.561C67.9625 175.581 68.0061 180.266 68.0951 187.78C68.1102 189.055 68.2793 200.673 68.2838 200.967C66.9421 201.725 66.0027 203.098 66.0028 204.749C66.0031 207.187 67.9709 209.155 70.4095 209.155C72.8481 209.154 74.8156 207.187 74.8154 204.748C74.8153 202.975 73.7598 201.482 72.2526 200.779C72.2461 200.277 72.1101 189.009 72.0952 187.748C72.0095 180.511 71.974 175.662 72.0316 174.811C72.2116 172.146 73.2659 169.644 75.3746 166.404C75.8321 165.701 76.3292 164.981 76.9994 164.029C77.1659 163.793 78.3803 162.056 78.7492 161.529C83.1079 155.305 85.2582 150.849 85.9979 144.841C86.8306 138.077 86.2654 132.917 84.7153 129.06C93.073 128.178 99.944 125.471 101.777 121.527C105.258 116.592 120.674 81.4184 100.46 69.1833C96.4145 66.7344 91.6503 64.7196 86.3971 63.1845L86.3922 6.93448L78.3609 6.93517L78.3606 3.46642L35.1413 3.47016ZM31.1419 10.9393L39.1107 10.9386L39.3309 27.9386C39.3406 28.6841 39.9605 29.2606 40.7061 29.2509C41.4516 29.2413 42.0593 28.6214 42.0497 27.8758L41.7983 10.9383L44.517 10.9381L44.7998 27.9381C44.8108 28.6836 45.3981 29.2615 46.1436 29.2505C46.8892 29.2394 47.4983 28.6209 47.4873 27.8753L47.2358 10.9379L49.9546 10.9376L50.2061 27.9376C50.2169 28.6831 50.8357 29.2608 51.5812 29.25C52.3267 29.2392 52.9044 28.6203 52.8936 27.8749L52.6421 10.9374L55.3609 10.9372L55.6124 27.9371C55.623 28.6827 56.242 29.2601 56.9875 29.2495C57.733 29.2389 58.3418 28.6199 58.3312 27.8744L58.0797 10.9369L60.8297 10.9367L61.05 27.9367C61.0546 28.3094 61.2147 28.6381 61.4563 28.8741C61.6979 29.1102 62.0211 29.2537 62.3938 29.2491C63.1394 29.2398 63.7468 28.6194 63.7375 27.8739L63.5173 10.9365L66.2986 10.9362L66.4875 27.905C66.4957 28.6505 67.1171 29.2568 67.8627 29.2486C68.6082 29.2404 69.1834 28.6503 69.1751 27.9047L68.9861 10.936L71.7674 10.9357L71.9564 27.9357C71.9605 28.3085 72.1132 28.6372 72.3627 28.8732C72.6122 29.1091 72.9587 29.2523 73.3315 29.2481C74.077 29.2398 74.6833 28.6498 74.6751 27.9042L74.4862 10.9355L82.3925 10.9348L82.3969 62.2473C78.1953 61.2363 73.8195 60.4151 69.2716 59.936L69.0841 59.936L69.0846 65.9672L62.3352 73.3116L62.211 82.5928L62.212 94.7803L56.5244 94.7808L50.3056 94.7814L50.2733 82.9376L50.1163 73.3126L43.1468 65.8132L43.1463 60.0945L31.1463 62.3455L31.1419 10.9393ZM46.0197 41.188L45.9904 64.3755L52.9599 71.8749L53.1492 91.9374L59.368 91.9368L59.5225 71.8743L66.2407 64.5612L66.2387 41.3425L46.0197 41.188ZM45.5578 121.282C45.0484 121.232 44.5158 121.369 44.0891 121.719C43.2356 122.421 43.1382 123.71 43.8394 124.563C43.8712 124.602 43.9181 124.67 44.0269 124.813C44.2163 125.062 44.4521 125.354 44.6832 125.688C45.3494 126.65 45.998 127.755 46.621 128.938C48.9603 133.379 50.0248 137.836 49.1222 141.875C48.4351 144.95 46.6061 147.711 43.4353 150.126C43.1568 150.338 42.1644 150.942 40.7792 151.751C40.6905 151.803 37.4839 153.662 37.4356 153.689C36.4728 154.23 36.1131 155.445 36.6545 156.408C37.1959 157.37 38.4106 157.699 39.3734 157.157C39.4251 157.128 42.7199 155.272 42.8108 155.22C44.3781 154.304 45.4057 153.669 45.8731 153.313C49.7829 150.336 52.1324 146.76 53.0285 142.75C54.1746 137.622 52.9238 132.266 50.1834 127.063C49.4811 125.729 48.7181 124.526 47.9643 123.438C47.5056 122.775 47.1244 122.271 46.9017 122C46.5511 121.574 46.0673 121.332 45.5578 121.282ZM65.7769 121.28C65.2675 121.33 64.7837 121.572 64.4331 121.999C64.2105 122.27 63.8293 122.774 63.3708 123.436C62.6172 124.525 61.8858 125.728 61.1835 127.062C58.444 132.265 57.163 137.621 58.3099 142.749C59.2067 146.759 61.5569 150.335 65.4671 153.311C65.9346 153.667 66.9935 154.302 68.5611 155.217C68.6519 155.27 71.9158 157.125 71.9675 157.154C72.9304 157.696 74.145 157.367 74.6862 156.404C75.2275 155.441 74.8676 154.227 73.9048 153.686C73.8565 153.658 70.6495 151.8 70.5608 151.748C69.1754 150.939 68.1829 150.336 67.9044 150.124C64.7332 147.71 62.9036 144.948 62.2161 141.874C61.3128 137.835 62.3766 133.378 64.715 128.936C65.3378 127.753 65.9862 126.649 66.6522 125.686C66.8833 125.352 67.1191 125.06 67.3084 124.811C67.4172 124.668 67.4953 124.6 67.5272 124.561C68.2282 123.708 68.0992 122.418 67.2457 121.717C66.8189 121.367 66.2862 121.23 65.7769 121.28ZM28.3735 160.064C27.8641 160.114 27.3492 160.357 26.9985 160.783C24.0604 164.358 22.5881 168.723 22.5621 174.253C22.5614 174.404 22.6311 200.839 22.627 200.877C21.1966 201.608 20.1896 203.036 20.1898 204.753C20.19 207.191 22.1578 209.159 24.5964 209.159C27.0351 209.158 29.0026 207.191 29.0024 204.752C29.0022 203.061 28.0235 201.65 26.627 200.908C26.6562 200.425 26.6538 197.055 26.6259 187.658C26.6229 186.662 26.5615 174.385 26.5622 174.252C26.584 169.618 27.7563 166.157 30.0925 163.314C30.7939 162.461 30.6644 161.203 29.811 160.502C29.3844 160.151 28.8829 160.015 28.3735 160.064ZM82.9679 160.06C82.4585 160.01 81.9571 160.147 81.5304 160.497C80.6772 161.199 80.5479 162.457 81.2494 163.31C83.5862 166.152 84.7591 169.613 84.7817 174.247C84.7823 174.378 84.7241 199.67 84.7527 200.841C83.3011 201.564 82.2529 203.015 82.253 204.747C82.2533 207.186 84.2524 209.153 86.691 209.153C89.1295 209.153 91.0971 207.185 91.0969 204.747C91.0967 203.049 90.1265 201.611 88.7215 200.872C88.7173 200.833 88.7318 194.753 88.7516 187.684C88.7544 186.688 88.7824 174.398 88.7817 174.247C88.7548 168.717 87.2817 164.353 84.343 160.778C83.9922 160.352 83.4774 160.109 82.9679 160.06Z" fill="url(#RadialGradient)" fill-rule="nonzero" filter="url(#Filter)" stroke="none" vectornator:shadowAngle="1.5708" vectornator:shadowColor="#050505" vectornator:shadowOffset="1" vectornator:shadowOpacity="1" vectornator:shadowRadius="2"/> -</g> -</svg> diff --git a/react-ui/docker/webserver/Dockerfile b/react-ui/docker/webserver/Dockerfile index f4644ee10..9c4f3f676 100644 --- a/react-ui/docker/webserver/Dockerfile +++ b/react-ui/docker/webserver/Dockerfile @@ -1,4 +1,17 @@ -FROM nginx:alpine3.20 +FROM node:alpine3.20 as builder + +COPY ./api/openapiv2/gosdn_northbound.swagger.json /app/api/openapiv2/gosdn_northbound.swagger.json +COPY ./react-ui /app/react-ui + +RUN cd /app/react-ui && \ + rm -rf node_modules && \ + rm yarn.lock && \ + yarn install --production && \ + yarn build -COPY dist /usr/share/nginx/html -COPY docker/webserver/nginx.conf /etc/nginx/nginx.conf \ No newline at end of file + +# webserver +FROM nginx:alpine3.20 +COPY --from=builder /app/react-ui/dist /usr/share/nginx/html +COPY --from=builder /app/react-ui/docker/webserver/nginx.conf /etc/nginx/nginx.conf +EXPOSE 80 \ No newline at end of file diff --git a/react-ui/docker/webserver/nginx.conf b/react-ui/docker/webserver/nginx.conf index 87066f6ab..b9028bec3 100644 --- a/react-ui/docker/webserver/nginx.conf +++ b/react-ui/docker/webserver/nginx.conf @@ -1,52 +1,82 @@ - -#user nobody; worker_processes 1; -#error_log logs/error.log; -#error_log logs/error.log notice; -#error_log logs/error.log info; - -#pid logs/nginx.pid; - - events { worker_connections 1024; + multi_accept on; + use epoll; } http { include mime.types; default_type application/octet-stream; - #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - # '$status $body_bytes_sent "$http_referer" ' - # '"$http_user_agent" "$http_x_forwarded_for"'; - - #access_log logs/access.log main; - - sendfile on; - #tcp_nopush on; - - #keepalive_timeout 0; - keepalive_timeout 65; + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main buffer=16k; + + sendfile on; + tcp_nopush on; + tcp_nodelay on; + keepalive_timeout 65; + types_hash_max_size 2048; + server_tokens off; + + # Buffer size settings + client_body_buffer_size 10K; + client_header_buffer_size 8k; + client_max_body_size 8m; + large_client_header_buffers 4 8k; + + # File descriptor cache + open_file_cache max=2000 inactive=20s; + open_file_cache_valid 60s; + open_file_cache_min_uses 5; + open_file_cache_errors off; + + # Compression settings + gzip on; + gzip_comp_level 6; + gzip_min_length 256; + gzip_proxied any; + gzip_vary on; + gzip_types + application/javascript + application/json + application/x-javascript + application/xml + text/css + text/javascript + text/plain + text/xml + text/html + application/x-font-ttf + font/opentype + application/vnd.ms-fontobject + image/svg+xml; resolver 127.0.0.11 ipv6=off; - #gzip on; - server { listen 80; server_name localhost; - #charset koi8-r; - - #access_log logs/host.access.log main; - - location ^~ /api/ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; + + # Proxy timeouts + proxy_connect_timeout 60s; + proxy_send_timeout 60s; + proxy_read_timeout 60s; + + # Proxy buffering + proxy_buffering on; + proxy_buffer_size 4k; + proxy_buffers 8 16k; # CORS headers add_header 'Access-Control-Allow-Origin' '*' always; @@ -75,59 +105,23 @@ http { try_files $uri $uri/ /index.html; } - location ~* \.(js|css|jpg|png|svg|woff|woff2|ttf|otf|eot|ico)$ { + + # Static asset handling with improved caching + location ~* \.(js|css|jpg|jpeg|png|gif|ico|svg|woff|woff2|ttf|otf|eot)$ { root /usr/share/nginx/html; - add_header 'Access-Control-Allow-Origin' '*' always; expires 30d; - add_header Cache-Control "public"; + add_header Cache-Control "public, no-transform"; + add_header 'Access-Control-Allow-Origin' '*' always; + + # Enable compression for these files + gzip_static on; # Serve pre-compressed files if available + + # Disable access logs for static files + access_log off; } - - # #error_page 404 /404.html; - - # # redirect server error pages to the static page /50x.html - # # - # error_page 500 502 503 504 /50x.html; - # location = /50x.html { - # root html; - # } - - # proxy the PHP scripts to Apache listening on 127.0.0.1:80 - # - #location ~ \.php$ { - # proxy_pass http://127.0.0.1; - #} - - # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 - # - #location ~ \.php$ { - # root html; - # fastcgi_pass 127.0.0.1:9000; - # fastcgi_index index.php; - # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; - # include fastcgi_params; - #} - - # deny access to .htaccess files, if Apache's document root - # concurs with nginx's one - # - #location ~ /\.ht { - # deny all; - #} } - # another virtual host using mix of IP-, name-, and port-based configuration - # - #server { - # listen 8000; - # listen somename:8080; - # server_name somename alias another.alias; - - # location / { - # root html; - # index index.html index.htm; - # } - #} # HTTPS server @@ -150,5 +144,4 @@ http { # index index.html index.htm; # } #} - } \ No newline at end of file diff --git a/react-ui/index.html b/react-ui/index.html index 91d50a11c..3dc374a59 100755 --- a/react-ui/index.html +++ b/react-ui/index.html @@ -5,13 +5,14 @@ <link rel="icon" href="favicon.ico" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="theme-color" content="#000000" /> + <meta name="author" content="Matthias Feyll" /> <meta name="description" - content="Web site created using create-react-app" + content="goSDN web ui" /> <link rel="apple-touch-icon" href="logo.png" /> <link rel="manifest" href="manifest.json" /> - <title>goSDN</title> + <title>goSDN - ui</title> </head> <body> <noscript>You need to enable JavaScript to run this app.</noscript> diff --git a/react-ui/package.json b/react-ui/package.json index 709c5bfcb..1f742d78d 100755 --- a/react-ui/package.json +++ b/react-ui/package.json @@ -12,8 +12,12 @@ "@fortawesome/free-regular-svg-icons": "^6.6.0", "@fortawesome/free-solid-svg-icons": "^6.6.0", "@fortawesome/react-fontawesome": "^0.2.2", + "@fullhuman/postcss-purgecss": "^7.0.2", "@reduxjs/toolkit": "^2.2.4", + "@types/react-grid-layout": "^1.3.5", + "@vitejs/plugin-react": "^4.2.1", "bootstrap": "^5.3.3", + "crypto-js": "^4.2.0", "dompurify": "^3.2.3", "i18next": "^24.0.5", "jwt-decode": "^4.0.0", @@ -21,14 +25,43 @@ "react-bootstrap": "^2.10.2", "react-dom": "^18.3.1", "react-error-boundary": "^4.1.2", + "react-grid-layout": "^1.5.0", "react-i18next": "^15.0.0", "react-redux": "^9.1.2", "react-router-dom": "^6.23.1", - "react-scripts": "5.0.1", "react-toastify": "^10.0.5", "redux": "^5.0.1", "redux-observable": "^3.0.0-rc.2", "redux-persist": "^6.0.0", + "sass": "1.82.0", + "sass-embedded": "^1.80.6", + "vite": "^6.0.3" + }, + "devDependencies": { + "@babel/runtime": "^7.21.5", + "@rtk-query/codegen-openapi": "^2.0.0", + "@testing-library/jest-dom": "^6.4.8", + "@testing-library/react": "^16.0.0", + "@testing-library/user-event": "^14.5.2", + "@types/react": "^18.2.66", + "@types/react-dom": "^18.2.22", + "@typescript-eslint/eslint-plugin": "^8.0.1", + "@typescript-eslint/parser": "^8.0.1", + "eslint": "^9.9.0", + "eslint-config-airbnb-typescript": "^18.0.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-react": "^7.32.2", + "eslint-plugin-react-hooks": "^5.1.0-rc.0", + "eslint-plugin-react-refresh": "^0.4.9", + "globals": "^15.9.0", + "prettier": "^3.3.3", + "react-scripts": "5.0.1", + "typescript": "^5.5.3", + "typescript-eslint": "^8.0.1", + "vite-bundle-visualizer": "^1.2.1", "web-vitals": "^4.2.2" }, "scripts": { @@ -37,7 +70,9 @@ "build::api": "npx @rtk-query/codegen-openapi ./scripts/openapi-config.json", "build": "yarn build::api && yarn build::frontend", "lint": "eslint src", - "lint::fix": "eslint src --fix" + "lint::fix": "eslint src --fix", + "dev": "./scripts/dev.sh", + "postbuild": "purgecss --css dist/assets/*.css --content dist/index.html dist/assets/*.js --output dist/purged" }, "eslintConfig": { "extends": [ @@ -55,34 +90,5 @@ "last 1 firefox version", "last 1 safari version" ] - }, - "devDependencies": { - "@babel/runtime": "^7.21.5", - "@rtk-query/codegen-openapi": "^2.0.0", - "@testing-library/jest-dom": "^6.4.8", - "@testing-library/react": "^16.0.0", - "@testing-library/user-event": "^14.5.2", - "@types/react": "^18.2.66", - "@types/react-dom": "^18.2.22", - "@typescript-eslint/eslint-plugin": "^8.0.1", - "@typescript-eslint/parser": "^8.0.1", - "@vitejs/plugin-react": "^4.2.1", - "eslint": "^9.9.0", - "eslint-config-airbnb-typescript": "^18.0.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-prettier": "^5.2.1", - "eslint-plugin-react": "^7.32.2", - "eslint-plugin-react-hooks": "^5.1.0-rc.0", - "eslint-plugin-react-refresh": "^0.4.9", - "globals": "^15.9.0", - "prettier": "^3.3.3", - "sass": "1.82.0", - "sass-embedded": "^1.80.6", - "typescript": "^5.5.3", - "typescript-eslint": "^8.0.1", - "vite": "^6.0.3", - "vite-bundle-visualizer": "^1.2.1" } -} \ No newline at end of file +} diff --git a/react-ui/public/favicon.ico b/react-ui/public/favicon.ico old mode 100755 new mode 100644 index a11777cc471a4344702741ab1c8a588998b1311a..ae6dcf05241b89f446e88d15b81ffd69202fa83a GIT binary patch literal 31533 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 UF6((4fUd^&boFyt=akR{0H5d7UH||9 literal 3870 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 ZtMWJ#1p_C<F-T5Hu2|;y@Dg%;1puB)gNgtE diff --git a/react-ui/public/fonts/inter-webfont.woff b/react-ui/public/fonts/inter-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..7eca6fe75d3ba56e14981e8f8e1c50d948bb8b56 GIT binary patch literal 26796 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 literal 0 HcmV?d00001 diff --git a/react-ui/public/fonts/inter-webfont.woff2 b/react-ui/public/fonts/inter-webfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..25ef870d53d5616ee3e92bbe3e85b5ed164fe4d2 GIT binary patch literal 21204 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 Q-fa1H`MqE#XV7g%0OKi>>Hq)$ literal 0 HcmV?d00001 diff --git a/react-ui/scripts/build.sh b/react-ui/scripts/build.sh index ad0f0cd0b..fb6cb2a21 100755 --- a/react-ui/scripts/build.sh +++ b/react-ui/scripts/build.sh @@ -7,7 +7,7 @@ docker run --rm \ -w /app \ -u $(id -u):$(id -g) \ $IMAGE \ - yarn install && yarn build + yarn && yarn build if [ $? -ne 0 ]; then echo "Error while building frontend app" diff --git a/react-ui/scripts/dev.sh b/react-ui/scripts/dev.sh new file mode 100755 index 000000000..3a2d20885 --- /dev/null +++ b/react-ui/scripts/dev.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env sh + +docker run \ + -it \ + --rm \ + -v $(pwd):/app \ + -w /app \ + -p 127.0.0.1:3000:3000 \ + --network gosdn-csbi-arista-base-net \ + node:20-alpine3.20 \ + npx vite diff --git a/react-ui/src/components/devices/reducer/device.reducer.ts b/react-ui/src/components/devices/reducer/device.reducer.ts index 8e4454bd2..f211fe024 100755 --- a/react-ui/src/components/devices/reducer/device.reducer.ts +++ b/react-ui/src/components/devices/reducer/device.reducer.ts @@ -1,107 +1,162 @@ import { - api, NetworkelementFlattenedManagedNetworkElement, NetworkelementManagedNetworkElement, - PndPrincipalNetworkDomain, - PndServiceGetPndListApiArg, + PndPrincipalNetworkDomain } from '@api/api' import { DeviceViewTabValues } from '@component/devices/view/device.view.tabs' -import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit' +import { createSlice, PayloadAction } from '@reduxjs/toolkit' +import { refreshUpdateTimer } from '@shared/reducer/routine.reducer' +import { Category, CategoryType } from '@shared/types/category.type' +import { REHYDRATE } from 'redux-persist' import { RootState } from 'src/stores' import '../routines/index' import { startListening } from '/src/stores/middleware/listener.middleware' export type Device = NetworkelementFlattenedManagedNetworkElement -interface SelectedDeviceInterface { +interface SelectedObject { device: Device mne: NetworkelementManagedNetworkElement | null json: JSON | null } -type SelectedDeviceType = SelectedDeviceInterface | null - export interface DeviceSliceState { devices: Device[] pnds: PndPrincipalNetworkDomain[] activeTab: DeviceViewTabValues - selectedDevice: SelectedDeviceType + selected: SelectedObject | null } const initialState: DeviceSliceState = { devices: [], pnds: [], activeTab: DeviceViewTabValues.METADATA, - selectedDevice: null, + selected: null, +} + +interface SetSelectedDeviceType { + device: Device | null, + options?: { + bypassCheck: boolean + } } const deviceSlice = createSlice({ name: 'device', initialState, reducers: { - setDevices: (state, action: PayloadAction<Device[]>) => { - state.devices = action.payload + setDevices: (state, action: PayloadAction<Device[] | undefined>) => { + state.devices = action.payload || [] }, - setPnds: (state, action: PayloadAction<PndPrincipalNetworkDomain[]>) => { - state.pnds = action.payload + setPnds: (state, action: PayloadAction<PndPrincipalNetworkDomain[] | undefined>) => { + state.pnds = action.payload || [] }, setActiveTab: (state, action: PayloadAction<DeviceViewTabValues>) => { state.activeTab = action.payload }, - setSelectedDevice: (state, action: PayloadAction<Device | null>) => { - let selectedDevice: SelectedDeviceType = null - if (action.payload) { - selectedDevice = { device: action.payload, mne: null, json: null } + setSelectedDevice: { + reducer: (state, { payload, meta }: PayloadAction<SetSelectedDeviceType, string, { skipListener?: boolean }>) => { + /** + * Do nothing if desired device is already selected + * Bypass the check if the flag is set to true. We + * use this bypass to trigger the listener functions + * accordingly + */ + if (!payload?.options?.bypassCheck && state.selected?.device.id === payload.device?.id) { + meta.skipListener = true + return + } + + if (!payload.device) { + throw Error('Passed null device as parameter while bypassing the safety check') + } + + let selectedObject: SelectedObject | null = null; + if (payload) { + selectedObject = { device: payload.device, mne: null, json: null } + } + + state.selected = selectedObject + }, + prepare: (payload) => { + return { + payload, + meta: { skipListener: false } + } } - - state.selectedDevice = selectedDevice }, setSelectedMne: (state, action: PayloadAction<NetworkelementManagedNetworkElement>) => { - if (!state.selectedDevice) { - throw new Error('Selected Device is null where it shouldn´t be null') + if (!state.selected) { + throw new Error('Can not find corresponding device') + } + + // safety check to prevent possible race conditions + if (state.selected.device.id !== action.payload.id) { + // TODO proper error handling by retry fetching the device object + throw new Error('Device and mne id does not match') } - state.selectedDevice.mne = action.payload - // TODO maybe don´t take the device of "selected device" instead search in the devices array for the proper device - // should not make a diffrence due to pointer but dunno + state.selected.mne = action.payload }, setSelectedJson: (state, action: PayloadAction<JSON>) => { - if (!state.selectedDevice) { + if (!state.selected) { throw new Error('Selected Device is null where it shouldn´t be null') } - state.selectedDevice.json = action.payload || null + state.selected.json = action.payload || null }, }, }) -export const { setDevices, setActiveTab, setSelectedDevice, setSelectedMne, setSelectedJson } = +export const { setDevices, setActiveTab, setSelectedDevice, setSelectedMne, setSelectedJson, setPnds } = deviceSlice.actions -const { setPnds } = deviceSlice.actions export default deviceSlice.reducer export const deviceReducerPath = deviceSlice.reducerPath -export const fetchPnds = createAsyncThunk('device/fetchPnds', (_, thunkApi) => { - const payload: PndServiceGetPndListApiArg = { - timestamp: new Date().getTime().toString(), - } +// add default selected device if no selected device is set +startListening({ + predicate: (action) => setDevices.match(action), + effect: async (action, listenerApi) => { + const { device: state } = listenerApi.getOriginalState() as RootState + if (state.selected) { + return + } - const subscription = thunkApi.dispatch(api.endpoints.pndServiceGetPndList.initiate(payload)) - subscription.unwrap().then((response) => { - thunkApi.dispatch(setPnds(response.pnd)) - }) + // if there are no devices available do set null + const device = action.payload?.[0] || null + listenerApi.dispatch(setSelectedDevice({ device } as SetSelectedDeviceType)) + }, +}) + +startListening({ + predicate: (action) => setSelectedMne.match(action), + effect: async (action, listenerApi) => { + listenerApi.dispatch(refreshUpdateTimer(Category.TAB as CategoryType)) + }, }) -// add default selected device if no selected device is set startListening({ predicate: (action) => setDevices.match(action), effect: async (action, listenerApi) => { - const { device } = listenerApi.getOriginalState() as RootState - if (!device.selectedDevice && !!action.payload[0]) { - listenerApi.dispatch(setSelectedDevice(action.payload[0])) - } + listenerApi.dispatch(refreshUpdateTimer(Category.DEVICE as CategoryType)) }, }) + +/** + * On startup reset the selected device + */ +startListening({ + predicate: ({ type }: any) => type === REHYDRATE, + effect: async (_, listenerApi) => { + const { device: state } = listenerApi.getState() as RootState + const device = state.selected?.device + if (!device) { + return + } + + listenerApi.dispatch(setSelectedDevice({ device, options: { bypassCheck: true } } as SetSelectedDeviceType)) + }, +}) \ No newline at end of file diff --git a/react-ui/src/components/devices/routines/device.routine.ts b/react-ui/src/components/devices/routines/device.routine.ts index 10caffa2f..058f65f9f 100755 --- a/react-ui/src/components/devices/routines/device.routine.ts +++ b/react-ui/src/components/devices/routines/device.routine.ts @@ -1,26 +1,39 @@ import { NetworkElementServiceGetAllFlattenedApiArg, api } from '@api/api' import { setDevices } from '@component/devices/reducer/device.reducer' import { createAsyncThunk } from '@reduxjs/toolkit' +import { addRoutine } from '@shared/reducer/routine.reducer' import { setUser } from '@shared/reducer/user.reducer' +import { Category, CategoryType } from '@shared/types/category.type' import { RootState } from 'src/stores' import { startListening } from '../../../stores/middleware/listener.middleware' export const FETCH_DEVICE_ACTION = 'subscription/device/fetchDevices' // continously fetch devices -const FETCH_DEVICES_INTERVAL = 15000 // in ms startListening({ actionCreator: setUser, effect: async (_, listenerApi) => { - listenerApi.dispatch(fetchDevicesThunk()) + listenerApi.dispatch( + addRoutine({ + thunk: fetchDevicesThunk, + category: Category.DEVICE as CategoryType, + payload: {}, + }) + ) }, }) +const FETCH_DEVICES_INTERVAL = 15000 // in ms export const fetchDevicesThunk = createAsyncThunk(FETCH_DEVICE_ACTION, (_, thunkApi) => { const { user } = thunkApi.getState() as RootState + if (!user.user?.roles) { + throw new Error('Background device fetching failed! User data is missing. Reload page or logout and login again') + // TODO + } + const payload: NetworkElementServiceGetAllFlattenedApiArg = { - pid: Object.keys(user?.user.roles)[0], + pid: Object.keys(user.user.roles)[0], timestamp: new Date().getTime().toString(), } diff --git a/react-ui/src/components/devices/routines/mne.routine.ts b/react-ui/src/components/devices/routines/mne.routine.ts index 7de1d1814..292869307 100755 --- a/react-ui/src/components/devices/routines/mne.routine.ts +++ b/react-ui/src/components/devices/routines/mne.routine.ts @@ -6,26 +6,42 @@ import { setSelectedMne, } from '@component/devices/reducer/device.reducer' import { createAsyncThunk } from '@reduxjs/toolkit' -import { addRoutine, CATEGORIES } from '@shared/reducer/routine.reducer' +import { addRoutine } from '@shared/reducer/routine.reducer' +import { Category, CategoryType } from '@shared/types/category.type' import { RootState } from 'src/stores' import { startListening } from '../../../stores/middleware/listener.middleware' export const FETCH_MNE_ACTION = 'subscription/device/fetchSelectedMNE' -// fetch mne if selected device is set + +/** + * #0 + * Trigger fetch MNE (#1) + * + * Triggered by a selectedDevice + */ startListening({ - predicate: (action) => setSelectedDevice.match(action) && !!action.payload, + predicate: (action) => setSelectedDevice.match(action) && !!action.payload.device && !action.meta?.skipListener, effect: async (action, listenerApi) => { + + const device = action.payload.device + listenerApi.dispatch( addRoutine({ thunk: fetchSelectedMneThunk, - category: CATEGORIES.TAB, - payload: action.payload, + category: Category.TAB as CategoryType, + payload: device, }) ) }, }) +/** + * #1 + * Fetch MNE + * + * Triggered by #0 + */ const FETCH_MNE_INTERVAL = 5000 // in ms export const fetchSelectedMneThunk = createAsyncThunk( FETCH_MNE_ACTION, @@ -56,7 +72,12 @@ export const fetchSelectedMneThunk = createAsyncThunk( } ) -// save fetched mne +/** + * #2 + * Received MNE + * + * Triggered by #1 + */ startListening({ predicate: (action) => api.endpoints.networkElementServiceGet.matchFulfilled(action), effect: async (action, listenerApi) => { @@ -64,7 +85,12 @@ startListening({ }, }) -// save fetched mne +/** + * #3 + * Fetch & receive json + * + * Triggered by #2 + */ startListening({ predicate: (action) => setSelectedMne.match(action), effect: async (action, listenerApi) => { diff --git a/react-ui/src/components/devices/view/device.scss b/react-ui/src/components/devices/view/device.scss index 540cd4d01..8d4099fc8 100755 --- a/react-ui/src/components/devices/view/device.scss +++ b/react-ui/src/components/devices/view/device.scss @@ -24,11 +24,6 @@ } } -.c-box { - padding: 2em !important; - padding-top: 1em !important; -} - .border-right { $border-padding: 2em; @@ -57,5 +52,6 @@ &.active { color: map-get($theme-colors, primary); font-weight: 500; + text-decoration: underline; } } diff --git a/react-ui/src/components/devices/view/device.view.table.tsx b/react-ui/src/components/devices/view/device.view.table.tsx index 312caab60..1f7221ead 100755 --- a/react-ui/src/components/devices/view/device.view.table.tsx +++ b/react-ui/src/components/devices/view/device.view.table.tsx @@ -1,54 +1,66 @@ +import { insertMarkTags } from "@helper/text"; import { useAppSelector } from "@hooks"; -import { MutableRefObject, useCallback } from "react"; +import DOMPurify from 'dompurify'; +import { MutableRefObject, useCallback, useRef } from "react"; import { OverlayTrigger, Table, Tooltip } from "react-bootstrap"; import { useTranslation } from "react-i18next"; import { useDeviceTableViewModel } from "../view_model/device.table.viewmodel"; +const cropUUID = (uuid: string): string => { + return uuid.substring(0, 3) + "..." + uuid.substring(uuid.length - 3, uuid.length); +} + export const DeviceViewTable = (searchRef: MutableRefObject<HTMLInputElement>) => { - const { devices, pnds, selectedDevice } = useAppSelector(state => state.device); + const { devices, pnds, selected: selectedDevice } = useAppSelector(state => state.device); const { t } = useTranslation('common'); - const { trClickHandler } = useDeviceTableViewModel(searchRef); + const tableRef = useRef(); + const { trClickHandler } = useDeviceTableViewModel(searchRef, tableRef); + const getDeviceTable = useCallback(() => { + const search = searchRef.current?.value; + let filtered = devices - const cropUUID = (uuid: string): string => { - return uuid.substring(0, 3) + "..." + uuid.substring(uuid.length - 3, uuid.length); - } + // filter if something is in search + if (search) { + filtered = devices.filter((device) => { + const user = pnds.find(pnd => pnd.id === device.pid); - const getDeviceTable = useCallback(() => { - return devices.filter((device) => { - if (!searchRef.current?.value) { - return true; - } + return device.id?.includes(search) || + device.name?.includes(search) || + user?.name?.includes(search); + }) + } - const searchInput = searchRef.current!.value; + return filtered.map((device, index) => { const user = pnds.find(pnd => pnd.id === device.pid); - return device.id.includes(searchInput) || device.name.includes(searchInput) || user?.name.includes(searchInput); - }).map((device, index) => { - const user = pnds.find(pnd => pnd.id === device.pid); + const username = user?.name || '' + const deviceId = device.id!; + const cropedId = cropUUID(deviceId) + const devicename = device.name || ''; + + const rowData = username + ";" + deviceId + ";" + devicename return ( - <tr key={index} onClick={() => trClickHandler(device)} className={selectedDevice?.device.id === device.id ? 'active' : ''}> - <td>{device.name}</td> - <OverlayTrigger overlay={<Tooltip id={device.id}>{device.id}</Tooltip>}> - <td>{cropUUID(device.id)}</td> + <tr data-copy-value={rowData} key={index} onClick={() => trClickHandler(device)} className={selectedDevice?.device.id === deviceId ? 'active' : ''}> + <td data-copy-value={devicename} dangerouslySetInnerHTML={{ __html: search ? insertMarkTags(devicename, search) : DOMPurify.sanitize(devicename) }}></td> + <OverlayTrigger overlay={<Tooltip id={device.id}>{deviceId}</Tooltip>}> + <td data-copy-value={deviceId} dangerouslySetInnerHTML={{ __html: search ? insertMarkTags(cropedId, search) : DOMPurify.sanitize(cropedId) }}></td> </OverlayTrigger> - <td>{user?.name || ''}</td> - <td></td> + <td data-copy-value={username} dangerouslySetInnerHTML={{ __html: search ? insertMarkTags(username, search) : DOMPurify.sanitize(username) }}></td> </tr> + ) }) }, [devices, searchRef, pnds, selectedDevice, trClickHandler]); - return ( - <Table striped responsive className="device-table"> + <Table striped responsive className="device-table" ref={tableRef}> <thead> <tr> <th>{t('device.table.header.name')}</th> <th>{t('device.table.header.uuid')}</th> <th>{t('device.table.header.user')}</th> - <th>{t('device.table.header.last_updated')}</th> </tr> </thead> <tbody> diff --git a/react-ui/src/components/devices/view/device.view.tabs.tsx b/react-ui/src/components/devices/view/device.view.tabs.tsx index 2929f9b64..ef8ba120f 100755 --- a/react-ui/src/components/devices/view/device.view.tabs.tsx +++ b/react-ui/src/components/devices/view/device.view.tabs.tsx @@ -8,7 +8,7 @@ export enum DeviceViewTabValues { } export const DeviceViewTabs = (activeTab: DeviceViewTabValues) => { - const { selectedDevice } = useAppSelector(state => state.device); + const { selected: selectedDevice } = useAppSelector(state => state.device); const { jsonYang } = useDeviceTabsViewModel(); const metadataTab = () => { @@ -24,8 +24,6 @@ export const DeviceViewTabs = (activeTab: DeviceViewTabValues) => { <> {jsonYang && <JsonViewer json={jsonYang} /> - - //<ReactJson src={selectedDevice.json} name={false} collapsed={true} quotesOnKeys={false} /> } </> ); diff --git a/react-ui/src/components/devices/view/device.view.tsx b/react-ui/src/components/devices/view/device.view.tsx index 2602463bb..6bd702bf7 100755 --- a/react-ui/src/components/devices/view/device.view.tsx +++ b/react-ui/src/components/devices/view/device.view.tsx @@ -1,33 +1,44 @@ +import { faGripVertical } from '@fortawesome/free-solid-svg-icons'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { GridLayout } from '@layout/grid.layout/grid.layout'; +import UpdateIndicator from '@layout/grid.layout/update-inidicator.layout/update-indicator.layout'; +import { Category, CategoryType } from '@shared/types/category.type'; import { useRef } from 'react'; import { Button, Col, Container, Form, Nav, NavLink, Row } from 'react-bootstrap'; import { useTranslation } from 'react-i18next'; import { useDeviceViewModel } from '../view_model/device.viewmodel'; import './device.scss'; import { DeviceViewTable } from './device.view.table'; -import { DeviceViewTabs, DeviceViewTabValues } from './device.view.tabs'; +import { DeviceViewTabValues, DeviceViewTabs } from './device.view.tabs'; -function DeviceView() { +const DeviceView = () => { const { t } = useTranslation('common'); const searchRef = useRef<HTMLInputElement>(null); const { activeTab, setActiveTab, handleActiveTabLink } = useDeviceViewModel(); return ( <div className='m-4 pt-4'> - <Container fluid> - <Row> - <Col sm={5}> - <Container className='bg-white rounded c-box'> + <GridLayout> + <> + <div key="device-list"> + <Container className='c-box hoverable h-100'> + <UpdateIndicator + category={Category.DEVICE as CategoryType} + updateInterval={15000} + /> + <FontAwesomeIcon icon={faGripVertical} className="drag-handle" /> <Row> - <Col sm={12} className='mt-4'><h3 className='text-black-50'>{t('device.title')}</h3></Col> + <Col sm={12} className='mt-4'> + <h3 className='text-black-50'>{t('device.title')}</h3> + </Col> </Row> - <Row className='align-items-center'> - <Col sm={6}> + <Col xs={12} sm={6}> <Form.Group controlId='device.search' className='p-0 mx-1 pt-2'> <Form.Control type="text" placeholder={t('device.search.placeholder')} ref={searchRef} /> </Form.Group> </Col> - <Col sm={{ span: 3, offset: 3 }} className='pt-2'> + <Col xs={12} sm={6} className='pt-2'> <Button variant='primary' className='w-100 my-auto'>{t('device.add_device_button')}</Button> </Col> </Row> @@ -38,29 +49,44 @@ function DeviceView() { </Col> </Row> </Container> - </Col> - <Col sm={7}> - <Container className='bg-white rounded c-box'> + </div> + + <div key="device-details"> + <Container className='c-box hoverable h-100'> + <UpdateIndicator + category={Category.TAB as CategoryType} + updateInterval={5000} + /> + <FontAwesomeIcon icon={faGripVertical} className="drag-handle" /> <Row> - <Col sm={12} className='mt-4'> + <Col xs={12} className='mt-4'> <Nav className='justify-content-around'> - <NavLink className={handleActiveTabLink(DeviceViewTabValues.METADATA) + " tab-links"} onClick={() => setActiveTab(DeviceViewTabValues.METADATA)}>{t('device.tabs.metadata.title')}</NavLink> - <NavLink className={handleActiveTabLink(DeviceViewTabValues.YANGMODEL) + " tab-links"} onClick={() => setActiveTab(DeviceViewTabValues.YANGMODEL)}>{t('device.tabs.yang_model.title')}</NavLink> + <NavLink + className={handleActiveTabLink(DeviceViewTabValues.METADATA) + " tab-links"} + onClick={() => setActiveTab(DeviceViewTabValues.METADATA)} + > + {t('device.tabs.metadata.title')} + </NavLink> + <NavLink + className={handleActiveTabLink(DeviceViewTabValues.YANGMODEL) + " tab-links"} + onClick={() => setActiveTab(DeviceViewTabValues.YANGMODEL)} + > + {t('device.tabs.yang_model.title')} + </NavLink> </Nav> </Col> </Row> - <Row className='align-items-start'> - <Col sm={12} className='pt-2'> + <Col xs={12}> {DeviceViewTabs(activeTab)} </Col> </Row> </Container> - </Col> - </Row> - </Container> + </div> + </> + </GridLayout> </div> - ) -} + ); +}; -export default DeviceView +export default DeviceView; \ No newline at end of file diff --git a/react-ui/src/components/devices/view_model/device.table.viewmodel.ts b/react-ui/src/components/devices/view_model/device.table.viewmodel.ts index df7595328..4b328d639 100755 --- a/react-ui/src/components/devices/view_model/device.table.viewmodel.ts +++ b/react-ui/src/components/devices/view_model/device.table.viewmodel.ts @@ -1,32 +1,100 @@ import { Device, setSelectedDevice } from "@component/devices/reducer/device.reducer"; +import { faCopy } from "@fortawesome/free-solid-svg-icons"; import { useAppDispatch } from "@hooks"; +import { useMenu } from "@provider/menu/menu.provider"; +import { useUtils } from "@provider/utils.provider"; import { useEffect, useState } from "react"; +import { useTranslation } from "react-i18next"; +import { toast } from "react-toastify"; -export const useDeviceTableViewModel = (searchRef) => { +export const useDeviceTableViewModel = (searchRef, tableRef) => { const [searchTerm, setSearchTerm] = useState(''); const dispatch = useAppDispatch(); + const { subscribe } = useMenu(); + const { toClipboard } = useUtils(); + const { t } = useTranslation('common'); + + + const registerMenuOptions = () => { + const subscription = subscribe({ + target: tableRef.current, + actions: [ + { + key: t('device.table.actions.copy'), + icon: faCopy, + action: (clickedElement) => { + if (clickedElement) { + const text = clickedElement.dataset.copyValue + if (!text) { + toast.warn(t('global.toast.copied_failed')) + return + } + + + toClipboard(text) + } + } + }, + + { + key: t('device.table.actions.copy_row'), + icon: faCopy, + action: (clickedElement) => { + let parent = clickedElement; + while (parent && parent.tagName !== 'TR') { + parent = parent.parentNode; + } + + const text = parent.dataset.copyValue + if (!text) { + toast.warn(t('global.toast.copied_failed')) + return + } + toClipboard(text) + } + } + ] + }) + + return () => { + subscription.unsubscribe() + } + } + + // seperate use effect to rerun this after tableref and subscribe are initialized + useEffect(() => { + if (!subscribe || !tableRef.current) { + return + } + + const unsubscribe = registerMenuOptions() + + return () => { + unsubscribe() + } + }, [tableRef, subscribe]) useEffect(() => { + if (!searchRef.current) { + return + } + const handleSearchChange = () => { - if (searchRef.current) { - setSearchTerm(searchRef.current.value); - } + setSearchTerm(searchRef.current.value); }; - if (searchRef.current) { - searchRef.current.addEventListener('input', handleSearchChange); - } + searchRef.current.addEventListener('input', handleSearchChange); return () => { if (searchRef.current) { searchRef.current.removeEventListener('input', handleSearchChange); } }; - }, []); + }, [searchRef]); const trClickHandler = (device: Device) => { - dispatch(setSelectedDevice(device)); + dispatch(setSelectedDevice({ device })); } diff --git a/react-ui/src/components/devices/view_model/device.tabs.viewmodel.ts b/react-ui/src/components/devices/view_model/device.tabs.viewmodel.ts index 4a60567b6..af4cc3abb 100755 --- a/react-ui/src/components/devices/view_model/device.tabs.viewmodel.ts +++ b/react-ui/src/components/devices/view_model/device.tabs.viewmodel.ts @@ -7,7 +7,7 @@ export enum DeviceViewTabValues { } export const useDeviceTabsViewModel = () => { - const { selectedDevice } = useAppSelector((state) => state.device) + const { selected: selectedDevice } = useAppSelector((state) => state.device) const getYangModelJSON = (): JSON | null => { if (!selectedDevice?.json) { diff --git a/react-ui/src/components/devices/view_model/device.viewmodel.ts b/react-ui/src/components/devices/view_model/device.viewmodel.ts index 9a0fbe17a..1cce2d59a 100755 --- a/react-ui/src/components/devices/view_model/device.viewmodel.ts +++ b/react-ui/src/components/devices/view_model/device.viewmodel.ts @@ -7,7 +7,7 @@ export const useDeviceViewModel = () => { const { activeTab } = useAppSelector((state) => state.device) const dispatch = useAppDispatch() - useEffect(() => {}, []) + useEffect(() => { }, []) const handleActiveTabLink = (tabLink: DeviceViewTabValues) => { return activeTab === tabLink ? 'active' : '' diff --git a/react-ui/src/components/login/layouts/login.layout.tsx b/react-ui/src/components/login/layouts/login.layout.tsx index 556dc6de4..58e8fc991 100755 --- a/react-ui/src/components/login/layouts/login.layout.tsx +++ b/react-ui/src/components/login/layouts/login.layout.tsx @@ -20,4 +20,6 @@ export const LoginLayout = () => { return ( <LoginView>{outlet}</LoginView> ) -} \ No newline at end of file +} + +export default LoginLayout \ No newline at end of file diff --git a/react-ui/src/components/login/view/login.view.tsx b/react-ui/src/components/login/view/login.view.tsx index 03d7406f4..62c84eeb8 100755 --- a/react-ui/src/components/login/view/login.view.tsx +++ b/react-ui/src/components/login/view/login.view.tsx @@ -1,10 +1,10 @@ -import logo from '@assets/logo.svg' -import { BasicProp } from '@helper/interfaces' +import { BasicProp } from '@shared/types/interfaces.type' import React, { useRef } from 'react' import { Alert, Button, Col, Container, Form, Image, Row, Spinner } from 'react-bootstrap' import { useTranslation } from 'react-i18next' import useLoginViewModel from '../viewmodel/login.viewmodel' import './login.scss' +import logo from '/public/logo.svg' const LoginView: React.FC<BasicProp> = () => { const { t } = useTranslation('common') diff --git a/react-ui/src/components/login/viewmodel/login.viewmodel.ts b/react-ui/src/components/login/viewmodel/login.viewmodel.ts index 60c39b55a..fabb0a861 100755 --- a/react-ui/src/components/login/viewmodel/login.viewmodel.ts +++ b/react-ui/src/components/login/viewmodel/login.viewmodel.ts @@ -7,9 +7,9 @@ export interface PageLoginState { } export default function useLoginViewModel() { - const {login, loginProperties} = useAuth(); - const {isLoading: loginLoading, error: loginError, reset: resetLogin} = loginProperties!; - + const { login, loginProperties } = useAuth(); + const { isLoading: loginLoading, error: loginError, reset: resetLogin } = loginProperties; + const [localFormState, updateLocalFormState] = useState({ submitted: false, valid: false, diff --git a/react-ui/src/i18n/locales/en/translations.json b/react-ui/src/i18n/locales/en/translations.json index 46b76563c..53444b9e0 100755 --- a/react-ui/src/i18n/locales/en/translations.json +++ b/react-ui/src/i18n/locales/en/translations.json @@ -6,7 +6,8 @@ "empty_field": "This field can´t be empty" }, "toast": { - "copied": "Copied to clipboard" + "copied": "Copied to clipboard", + "copied_failed": "Copying to clipboard failed" }, "menu_item": { "logout": "Logout" @@ -35,6 +36,10 @@ "uuid": "UUID", "user": "User", "last_updated": "Last updated" + }, + "actions": { + "copy": "Copy", + "copy_row": "Copy row" } }, "search": { @@ -48,6 +53,9 @@ "yang_model": { "title": "YANG Model" } + }, + "box": { + "lastUpdate": "Last updated {{seconds}} seconds ago" } }, "protected": { diff --git a/react-ui/src/index.scss b/react-ui/src/index.scss index 8dd280e64..5c9f184b7 100755 --- a/react-ui/src/index.scss +++ b/react-ui/src/index.scss @@ -1,4 +1,4 @@ -@import './shared/style/index.scss'; +@import "./shared/style/index.scss"; body { margin: 0; diff --git a/react-ui/src/index.tsx b/react-ui/src/index.tsx index 8383248ce..3697efd07 100755 --- a/react-ui/src/index.tsx +++ b/react-ui/src/index.tsx @@ -16,6 +16,7 @@ import { router } from './routes' import './shared/icons/icons' import { persistor, store } from './stores' +window.env = window.location.hostname === 'localhost' ? 'development' : 'production'; ReactDOM.createRoot(document.getElementById("root")).render( <React.StrictMode> diff --git a/react-ui/src/routes.tsx b/react-ui/src/routes.tsx index 368df55a4..a476feaae 100755 --- a/react-ui/src/routes.tsx +++ b/react-ui/src/routes.tsx @@ -1,21 +1,50 @@ import { BasicLayout } from "@layout/basic.layout"; import { ProtectedLayout } from "@layout/protected.layout/protected.layout"; +import DelayedRender, { SplashScreen } from "@utils/loading-fallback"; +import { lazy, Suspense } from 'react'; import { createBrowserRouter, createRoutesFromElements, Navigate, Route } from "react-router-dom"; -import DeviceView from "./components/devices/view/device.view"; -import { LoginLayout } from "./components/login/layouts/login.layout"; export const DEVICE_URL = '/device/'; export const LOGIN_URL = '/login'; +// Lazy load components +const DeviceView = lazy(() => import('./components/devices/view/device.view')); +const LoginLayout = lazy(() => import('./components/login/layouts/login.layout')); export const router = createBrowserRouter( createRoutesFromElements( <Route element={<BasicLayout />}> - <Route path={LOGIN_URL} element={<LoginLayout />} /> + <Route + path={LOGIN_URL} + element={ + <Suspense fallback={null}> + <DelayedRender> + <LoginLayout /> + </DelayedRender> + </Suspense> + } + /> <Route element={<ProtectedLayout />}> - <Route path={DEVICE_URL} element={<DeviceView />} /> - <Route path="/" element={<Navigate to={DEVICE_URL} replace={true} />} /> + <Route + path={DEVICE_URL} + element={ + <DelayedRender + loading={{ + minimumLoadingTime: 1000, + component: SplashScreen + }} + > + <Suspense fallback={null}> + <DeviceView /> + </Suspense> + </DelayedRender> + } + /> + <Route + path="/" + element={<Navigate to={DEVICE_URL} replace={true} />} + /> </Route> - </Route> + </Route > ) -) \ No newline at end of file +); \ No newline at end of file diff --git a/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx b/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx index 720f75c7d..33e52a397 100755 --- a/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx +++ b/react-ui/src/shared/components/json_viewer/view/json_viewer.view.tsx @@ -1,5 +1,6 @@ import { faAlignRight, faPenToSquare, faTrashCan } from "@fortawesome/free-solid-svg-icons" import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" +import { insertMarkTags } from "@helper/text" import DOMPurify from 'dompurify' import React, { Suspense, useMemo, useRef } from "react" import { Form, Table } from "react-bootstrap" @@ -30,13 +31,6 @@ export const JsonViewer = ({ json }: JsonViewerProbs) => { ) }, [breadcrumbs]) - const insertMarkTags = (text: string, search: string): string => { - const start = text.indexOf(search) - const end = start + search.length - - return DOMPurify.sanitize(text.substring(0, start)) + "<span class='highlight'>" + DOMPurify.sanitize(search) + "</span>" + DOMPurify.sanitize(text.substring(end, text.length)) - } - const renderInner = (innerJson: JSON, nested: number = 0, parentKey: string = "", path: string = "/network-instance/0/"): JSX.Element => { path += parentKey + (parentKey === "" ? "" : "/") @@ -130,7 +124,7 @@ export const JsonViewer = ({ json }: JsonViewerProbs) => { const searchHTML = () => { return ( <> - <Form.Group controlId='device.search' className='p-0 mx-1 pt-2'> + <Form.Group controlId='json_viewer.search' className='p-0 mx-1 pt-2'> <Form.Control type="text" placeholder={t('device.search.placeholder')} ref={search} /> </Form.Group> </> diff --git a/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx b/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx index 6c3ac78f3..f0bc92212 100644 --- a/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx +++ b/react-ui/src/shared/components/json_viewer/viewmodel/json_viewer.viewmodel.tsx @@ -67,29 +67,31 @@ export const useJsonViewer = ({ json, search, container }: JsonViewerViewModelTy } const registerMenuOptions = () => { - if (container.current) { - const subscription = subscribe({ - target: container.current, - actions: [ - { - key: t('json_viewer.copy'), - icon: faCopy, - action: (clickedElement) => { - let parent = clickedElement; - while (parent && parent.tagName !== 'TR') { - parent = parent.parentNode; - } - - const copyValue = parent.dataset.copyValue - toClipboard(copyValue) + if (!container.current) { + return () => { } + } + + const subscription = subscribe({ + target: container.current, + actions: [ + { + key: t('json_viewer.copy'), + icon: faCopy, + action: (clickedElement) => { + let parent = clickedElement; + while (parent && parent.tagName !== 'TR') { + parent = parent.parentNode; } + + const copyValue = parent.dataset.copyValue + toClipboard(copyValue) } - ] - }) + } + ] + }) - return () => { - subscription.unsubscribe(); - } + return () => { + subscription.unsubscribe(); } } @@ -137,7 +139,7 @@ export const useJsonViewer = ({ json, search, container }: JsonViewerViewModelTy }, [searchTerm]) useEffect(() => { - registerMenuOptions(); + const unsubscribe = registerMenuOptions(); if (search.current) { search.current.addEventListener('input', handleSearchInput) @@ -147,6 +149,7 @@ export const useJsonViewer = ({ json, search, container }: JsonViewerViewModelTy if (search.current) { search.current.removeEventListener('input', handleSearchInput) } + unsubscribe() } }, []) diff --git a/react-ui/src/shared/helper/debug.ts b/react-ui/src/shared/helper/debug.ts new file mode 100644 index 000000000..db10a0979 --- /dev/null +++ b/react-ui/src/shared/helper/debug.ts @@ -0,0 +1,11 @@ +export const warnMessage = (message: string) => { + if (window?.env === 'development') { + console.warn("Debug: \n" + message) + } +} + +export const infoMessage = (message: string) => { + if (window?.env === 'development') { + console.info("Info: \n" + message) + } +} \ No newline at end of file diff --git a/react-ui/src/shared/helper/text.ts b/react-ui/src/shared/helper/text.ts new file mode 100644 index 000000000..6aee13790 --- /dev/null +++ b/react-ui/src/shared/helper/text.ts @@ -0,0 +1,12 @@ + +import DOMPurify from 'dompurify' + +export const insertMarkTags = (text: string, search: string): string => { + const start = text.indexOf(search) + if (start === -1) { + return DOMPurify.sanitize(text) + } + const end = start + search.length + + return DOMPurify.sanitize(text.substring(0, start)) + "<span class='highlight'>" + DOMPurify.sanitize(search) + "</span>" + DOMPurify.sanitize(text.substring(end, text.length)) +} \ No newline at end of file diff --git a/react-ui/src/shared/icons/icons.ts b/react-ui/src/shared/icons/icons.ts index 00021aa11..9c8791cc9 100755 --- a/react-ui/src/shared/icons/icons.ts +++ b/react-ui/src/shared/icons/icons.ts @@ -1,4 +1,4 @@ import { library } from '@fortawesome/fontawesome-svg-core' -import { faSpinner, fas } from '@fortawesome/free-solid-svg-icons' +import { faSpinner } from '@fortawesome/free-solid-svg-icons' -library.add(fas, faSpinner) \ No newline at end of file +library.add(faSpinner) \ No newline at end of file diff --git a/react-ui/src/shared/layouts/grid.layout/grid.layout.scss b/react-ui/src/shared/layouts/grid.layout/grid.layout.scss new file mode 100644 index 000000000..c90375d37 --- /dev/null +++ b/react-ui/src/shared/layouts/grid.layout/grid.layout.scss @@ -0,0 +1,81 @@ +@import "/src/shared/style/colors.scss"; + +.drag-handle { + position: absolute; + top: 0; + right: 0; + padding: 10px; + cursor: grab; + color: map-get($theme-colors, "dark"); + background-color: lighten(map-get($theme-colors, primary), 38%); + border-radius: 0 0.25rem 0 0.25rem; + border-left: 1px solid lighten(map-get($theme-colors, dark), 35%); + border-bottom: 1px solid lighten(map-get($theme-colors, dark), 35%); + z-index: 10; + + &:hover { + color: map-get($theme-colors, primary); + background-color: lighten(map-get($theme-colors, primary), 35%); + } + + &:active { + cursor: grabbing; + } +} + +.react-grid-item { + min-height: 600px !important; + + &.react-draggable-dragging { + z-index: 100; + + .drag-handle { + cursor: grabbing; + } + } +} + +.react-grid-layout { + width: 100% !important; +} + +.react-grid-item.react-grid-placeholder { + background: lighten(map-get($theme-colors, primary), 30%) !important; + opacity: 0.2; + transition-duration: 100ms; + z-index: 2; + border-radius: 4px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + -o-user-select: none; + user-select: none; +} + +.react-grid-item { + /* Hide resize handle by default */ + .react-resizable-handle-se { + opacity: 0; + transition: opacity 0.2s ease-in-out; + } + + /* Show resize handle on container hover */ + &:hover .react-resizable-handle-se { + opacity: 1; + } +} + +/* Style the resize handle */ +.react-resizable-handle-se { + position: absolute; + right: 0; + bottom: 0; + width: 20px; + height: 20px; + background-image: url("data:image/svg+xml;charset=utf-8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiPjxwYXRoIGQ9Ik02IDZIMHYtNmg2djZ6TTUgMUgxdjRoNFYxeiIgZmlsbD0iIzk5OTk5OSIvPjwvc3ZnPg=="); + background-position: bottom right; + background-repeat: no-repeat; + background-size: 10px 10px; + cursor: se-resize; + z-index: 10; +} diff --git a/react-ui/src/shared/layouts/grid.layout/grid.layout.tsx b/react-ui/src/shared/layouts/grid.layout/grid.layout.tsx new file mode 100644 index 000000000..c184e655b --- /dev/null +++ b/react-ui/src/shared/layouts/grid.layout/grid.layout.tsx @@ -0,0 +1,61 @@ +import React, { ReactElement, useEffect, useState } from 'react'; +import { Responsive, WidthProvider } from 'react-grid-layout'; +import 'react-grid-layout/css/styles.css'; +import 'react-resizable/css/styles.css'; +import './grid.layout.scss'; + +const ResponsiveGridLayout = WidthProvider(Responsive); + +interface GridLayoutProps { + children: ReactElement; +} + +export const GridLayout: React.FC<GridLayoutProps> = ({ children }) => { + const rowHeight = 50; + const [mounted, setMounted] = useState(false); + const layouts = { + lg: [ + { i: 'device-list', x: 0, y: 0, w: 1, h: 1, minW: 1, minH: 1 }, + { i: 'device-details', x: 2, y: 0, w: 2, h: 1, minW: 2, minH: 1 } + ] + }; + + useEffect(() => { + setMounted(true); + // Force layout recalculation after mount + window.dispatchEvent(new Event('resize')); + }, []); + + const gridItems = React.Children.map(children.props.children, (child, index) => { + if (!React.isValidElement(child)) return null; + + return React.cloneElement(child, { + key: index === 0 ? 'device-list' : 'device-details', + 'data-grid': layouts.lg[index] + }); + }); + + return ( + <div style={{ display: mounted ? 'block' : 'none' }}> + <ResponsiveGridLayout + className="layout" + layouts={layouts} + breakpoints={{ lg: 996, sm: 480 }} + cols={{ lg: 4, sm: 3 }} + rowHeight={rowHeight} + margin={[20, 20]} + draggableHandle=".drag-handle" + isDraggable={true} + isResizable={true} + preventCollision={true} + compactType={null} + useCSSTransforms={mounted} + resizeHandles={['se']} // Only show resize handle in bottom right corner + > + {gridItems} + </ResponsiveGridLayout> + </div> + ); +}; + +export default GridLayout; \ No newline at end of file diff --git a/react-ui/src/shared/layouts/grid.layout/update-inidicator.layout/update-indicator.layout.tsx b/react-ui/src/shared/layouts/grid.layout/update-inidicator.layout/update-indicator.layout.tsx new file mode 100644 index 000000000..d71bb6cce --- /dev/null +++ b/react-ui/src/shared/layouts/grid.layout/update-inidicator.layout/update-indicator.layout.tsx @@ -0,0 +1,52 @@ +import { faCircle } from '@fortawesome/free-solid-svg-icons' +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import React, { useState } from 'react' +import { Overlay, Tooltip } from 'react-bootstrap' +import { useTranslation } from 'react-i18next' +import { CategoryType } from '../types' +import { useUpdateIndicatorViewModel } from './update-indicator.viewmodel' + +interface UpdateIndicatorProps { + category: CategoryType + updateInterval: number +} + +const UpdateIndicator: React.FC<UpdateIndicatorProps> = ({ category, updateInterval }) => { + const [showTooltip, setShowTooltip] = useState(false) + const { t } = useTranslation('common') + const target = React.useRef(null) + const { secondsSinceUpdate, getStatusColor } = useUpdateIndicatorViewModel(category) + + return ( + <div + className="position-absolute" + style={{ + top: 0, + right: '40px', + padding: '10px', + zIndex: 10 + }} + > + <div + ref={target} + onMouseEnter={() => setShowTooltip(true)} + onMouseLeave={() => setShowTooltip(false)} + style={{ cursor: 'pointer' }} + > + <FontAwesomeIcon + icon={faCircle} + className={getStatusColor(updateInterval)} + size="sm" + /> + </div> + + <Overlay target={target.current} show={showTooltip} placement="bottom"> + <Tooltip id="update-tooltip"> + {t('device.box.lastUpdate', { seconds: secondsSinceUpdate })} + </Tooltip> + </Overlay> + </div> + ) +} + +export default UpdateIndicator \ No newline at end of file diff --git a/react-ui/src/shared/layouts/grid.layout/update-inidicator.layout/update-indicator.viewmodel.tsx b/react-ui/src/shared/layouts/grid.layout/update-inidicator.layout/update-indicator.viewmodel.tsx new file mode 100644 index 000000000..bb91b0b17 --- /dev/null +++ b/react-ui/src/shared/layouts/grid.layout/update-inidicator.layout/update-indicator.viewmodel.tsx @@ -0,0 +1,39 @@ +import { useAppSelector } from "@hooks" +import { CategoryType } from "@shared/types/category.type" +import { useEffect, useState } from 'react' + +export const useUpdateIndicatorViewModel = (category: CategoryType) => { + const { thunks } = useAppSelector((state) => state.routine) + const [secondsSinceUpdate, setSecondsSinceUpdate] = useState<number>(-1) + + useEffect(() => { + const updateTimer = () => { + const lastupdate = thunks[category]?.lastupdate + if (lastupdate) { + setSecondsSinceUpdate(Math.round((Date.now() - lastupdate) / 1000)) + } else { + setSecondsSinceUpdate(-1) + } + } + + // Initial update + updateTimer() + + // Set up interval for updates + const intervalId = setInterval(updateTimer, 1000) + + return () => clearInterval(intervalId) + }, [category, thunks]) + + const getStatusColor = (updateInterval: number) => { + const updateIntervalSeconds = updateInterval / 1000 + if (secondsSinceUpdate > updateIntervalSeconds * 0.9) return "text-primary" + if (secondsSinceUpdate > updateIntervalSeconds * 1.3) return "text-danger" + return "text-bg-primary" + } + + return { + secondsSinceUpdate, + getStatusColor + } +} \ No newline at end of file diff --git a/react-ui/src/shared/layouts/protected.layout/protected.layout.scss b/react-ui/src/shared/layouts/protected.layout/protected.layout.scss index 07b38d5a7..52429031b 100755 --- a/react-ui/src/shared/layouts/protected.layout/protected.layout.scss +++ b/react-ui/src/shared/layouts/protected.layout/protected.layout.scss @@ -1,7 +1,5 @@ @import "/src/shared/style/colors.scss"; -$sidebar-width: 4.5em; - .head-links { text-decoration: none; color: map-get($theme-colors, dark); @@ -10,7 +8,6 @@ $sidebar-width: 4.5em; &:hover { color: map-get($theme-colors, primary); - font-weight: 600; } &.active { @@ -19,11 +16,46 @@ $sidebar-width: 4.5em; } } -.sidebar { - width: $sidebar-width; - height: 100vh; +#navbar { + padding: 1em !important; } -.main-content { - margin-left: $sidebar-width; +// Add these styles to your protected.layout.scss +nav { + border-radius: $border-radius $border-radius; + padding: 0 !important; + + .head-links { + text-decoration: none; + color: map-get($theme-colors, "dark"); + padding: 8px 16px; + margin: 0 4px; + border-radius: 12px; + transition: all 0.2s ease; + + &:hover { + background-color: map-get($theme-colors, "bg-primary"); + } + + &.active { + color: map-get($theme-colors, "primary"); + background-color: map-get($theme-colors, "primary::hover"); + } + } + + .dropdown-menu { + border-radius: $border-radius; + box-shadow: $box-shadow; + border: none; + padding: 8px; + + .dropdown-item { + border-radius: 8px; + padding: 8px 16px; + + &:hover { + background-color: map-get($theme-colors, "bg-primary"); + } + } + } } diff --git a/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx b/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx index c7e13c6fe..dbcb49192 100755 --- a/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx +++ b/react-ui/src/shared/layouts/protected.layout/protected.layout.tsx @@ -1,17 +1,16 @@ -import logo from '@assets/logo.svg'; -import { fetchPnds } from '@component/devices/reducer/device.reducer'; import { faCircleUser, faRightFromBracket } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { useAppDispatch, useAppSelector } from '@hooks'; import { useAuth } from "@provider/auth.provider"; import { MenuProvider } from '@provider/menu/menu.provider'; import { DEVICE_URL, LOGIN_URL } from '@routes'; -import { fetchUser } from '@shared/reducer/user.reducer'; +import { fetchPnds, fetchUser } from '@shared/routine/user.routine'; import React, { useEffect } from "react"; -import { Dropdown } from "react-bootstrap"; +import { Col, Container, Dropdown, Row } from "react-bootstrap"; import { useTranslation } from "react-i18next"; import { Link, Outlet, useNavigate } from "react-router-dom"; import "./protected.layout.scss"; +import logo from '/public/logo.png'; export const ProtectedLayout = () => { @@ -70,48 +69,44 @@ export const ProtectedLayout = () => { } ); - const VerticalSidebar = () => { - return ( - <div className="d-flex fixed-top flex-column flex-shrink-0 bg-white sidebar justify-content-end border-end border-dark py-3 z-2"> - <FontAwesomeIcon className="clickable icon" icon={faRightFromBracket} onClick={logout} size="2x" /> - </div> - ) - } - const HorizontalNavbar = () => { return ( - <nav className="bg-white border-bottom border-dark py-2 d-flex align-items-center z-3 position-relative"> - <Link to="/"><img src={logo} className="mx-4 me-5" width={25} alt="logo" /></Link> - <Link className={"head-links" + handleActiveLink(DEVICE_URL)} to="/">{t('protected.link.device_list')}</Link> - <Link className={"head-links" + handleActiveLink('/map')} to="/">{t('protected.link.map')}</Link> - <Link className={"head-links" + handleActiveLink('/configuration_management')} to="/">{t('protected.link.configuration_mgmt')}</Link> + <Container fluid> + <Row> + <Col> + <nav id="navbar" className="bg-white mx-4 mt-4 d-flex align-items-center c-box"> + <Link to="/"><img src={logo} className="mx-4" width={45} alt="logo" /></Link> + <Link className={"head-links" + handleActiveLink(DEVICE_URL)} to="/">{t('protected.link.device_list')}</Link> + <Link className={"head-links" + handleActiveLink('/map')} to="/">{t('protected.link.map')}</Link> + <Link className={"head-links" + handleActiveLink('/configuration_management')} to="/">{t('protected.link.configuration_mgmt')}</Link> - <Dropdown className="ms-auto px-3"> - <Dropdown.Toggle as={UserIconToggle}> - <FontAwesomeIcon icon={faCircleUser} className="icon clickable" /> - </Dropdown.Toggle> + <Dropdown className="ms-auto px-3"> + <Dropdown.Toggle as={UserIconToggle}> + <FontAwesomeIcon icon={faCircleUser} className="clickable" size="2x" /> + </Dropdown.Toggle> - <Dropdown.Menu as={UserIconMenu}> - <Dropdown.Item eventKey="1">{user?.name}</Dropdown.Item> - <hr /> - <Dropdown.Item eventKey="1"> - <Link className="text-decoration-none text-reset" to="/">{t('protected.link.settings')}</Link> - </Dropdown.Item> - </Dropdown.Menu> - </Dropdown> - </nav> + <Dropdown.Menu as={UserIconMenu}> + <Dropdown.Item eventKey="1">{user?.name}</Dropdown.Item> + <hr /> + <Dropdown.Item eventKey="2"> + <Link className="text-decoration-none text-reset" to="/">{t('protected.link.settings')}</Link> + </Dropdown.Item> + <Dropdown.Item eventKey="3" onClick={logout}> + <Link className="text-decoration-none text-reset" to="/"><FontAwesomeIcon className="clickable" icon={faRightFromBracket} /><span className="ms-1">{t('global.menu_item.logout')}</span></Link> + </Dropdown.Item> + </Dropdown.Menu> + </Dropdown> + </nav> + </Col> + </Row> + </Container> ) } return ( - <div> - <MenuProvider> - {HorizontalNavbar()} - {VerticalSidebar()} - <div className='main-content'> - <Outlet /> - </div> - </MenuProvider> - </div> + <MenuProvider> + {HorizontalNavbar()} + <Outlet /> + </MenuProvider> ) }; \ No newline at end of file diff --git a/react-ui/src/shared/provider/auth.provider.tsx b/react-ui/src/shared/provider/auth.provider.tsx index 69bdccbdf..77219bdce 100755 --- a/react-ui/src/shared/provider/auth.provider.tsx +++ b/react-ui/src/shared/provider/auth.provider.tsx @@ -1,8 +1,8 @@ import { AuthServiceLoginApiArg, AuthServiceLoginApiResponse, useAuthServiceLoginMutation } from "@api/api"; import { getCookieValue } from "@helper/coookie"; -import { BasicProp } from "@helper/interfaces"; import { useAppDispatch, useAppSelector } from "@hooks"; import { DEVICE_URL, LOGIN_URL } from "@routes"; +import { BasicProp } from "@shared/types/interfaces.type"; import { jwtDecode } from "jwt-decode"; import { createContext, useContext, useEffect, useMemo } from "react"; import { useNavigate } from "react-router-dom"; diff --git a/react-ui/src/shared/provider/menu/menu.provider.tsx b/react-ui/src/shared/provider/menu/menu.provider.tsx index a91f46639..f3af8e5c1 100644 --- a/react-ui/src/shared/provider/menu/menu.provider.tsx +++ b/react-ui/src/shared/provider/menu/menu.provider.tsx @@ -1,7 +1,7 @@ import { faRightFromBracket, IconDefinition } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { BasicProp } from "@helper/interfaces"; import { useAuth } from "@provider/auth.provider"; +import { BasicProp } from "@shared/types/interfaces.type"; import React, { createContext, useContext, useEffect, useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import './menu.provider.scss'; @@ -19,13 +19,11 @@ type Action = { } interface MenuProviderType { - subscribe: (value: SubscriptionValue) => MenuSubscription + subscribe: ((value: SubscriptionValue) => MenuSubscription) | null; } const MenuContext = createContext<MenuProviderType>({ - subscribe: function (): MenuSubscription { - throw new Error("Function not implemented."); - } + subscribe: null }) interface SubscriptionValue { @@ -33,11 +31,16 @@ interface SubscriptionValue { actions: Array<Action> } +interface SubscriptionMap { + [id: string]: SubscriptionValue +} + export const MenuProvider: React.FC<BasicProp> = ({ children }) => { const [menuPosition, setMenuPosition] = useState({ top: 0, left: 0 }); const [showMenu, setShowMenu] = useState(false); - const [subscribedTargets, setSubscribedTargets] = useState<Array<SubscriptionValue>>([]) + const [subscribedTargets, setSubscribedTargets] = useState<SubscriptionMap>({}); + const { logout } = useAuth() const { t } = useTranslation('common') @@ -61,12 +64,15 @@ export const MenuProvider: React.FC<BasicProp> = ({ children }) => { const handleContextMenu = (event: React.MouseEvent<HTMLElement>) => { event.preventDefault(); - const targets = subscribedTargets.filter(({ target }) => target.contains(event.target as HTMLElement)) + + const targets = Object.values(subscribedTargets).filter( + ({ target }) => target.contains(event.target as HTMLElement) + ); setMenuPosition({ top: event.pageY, left: event.pageX }); - setMenuItems(targets) - setClickedHtmlElement(event.target as HTMLElement) - displayMenu() + setMenuItems(targets); + setClickedHtmlElement(event.target as HTMLElement); + displayMenu(); }; const displayMenu = () => { @@ -90,20 +96,27 @@ export const MenuProvider: React.FC<BasicProp> = ({ children }) => { const value = useMemo<MenuProviderType>(() => { return { - subscribe(target) { - const index = subscribedTargets.length; + subscribe(target: SubscriptionValue) { + const subscriptionId = crypto.randomUUID(); // Generate unique ID - setSubscribedTargets([...subscribedTargets, target]) + setSubscribedTargets(prev => ({ + ...prev, + [subscriptionId]: target + })); const subscription: MenuSubscription = { unsubscribe() { - setSubscribedTargets([...subscribedTargets.splice(index, 1)]) + setSubscribedTargets(prev => { + const next = { ...prev }; + delete next[subscriptionId]; + return next; + }); }, } - return subscription + return subscription; }, } as MenuProviderType - }, []) + }, []); return ( <MenuContext.Provider value={value}> diff --git a/react-ui/src/shared/provider/utils.provider.tsx b/react-ui/src/shared/provider/utils.provider.tsx index ca6aa1d32..3a76bbe69 100644 --- a/react-ui/src/shared/provider/utils.provider.tsx +++ b/react-ui/src/shared/provider/utils.provider.tsx @@ -1,4 +1,4 @@ -import { BasicProp } from "@helper/interfaces"; +import { BasicProp } from "@shared/types/interfaces.type"; import React, { createContext, useContext, useMemo } from "react"; import { useTranslation } from "react-i18next"; import { toast } from "react-toastify"; diff --git a/react-ui/src/shared/reducer/routine.reducer.ts b/react-ui/src/shared/reducer/routine.reducer.ts index a52ee84d3..95d5f06e7 100755 --- a/react-ui/src/shared/reducer/routine.reducer.ts +++ b/react-ui/src/shared/reducer/routine.reducer.ts @@ -1,58 +1,42 @@ import { PayloadAction, createSlice } from '@reduxjs/toolkit' +import { CategoryType } from '@shared/types/category.type' +import { ThunkDTO, ThunkPersist } from '@shared/types/thunk.type' import { RoutineManager } from '@utils/routine.manager' import { RootState } from '../../stores' import { startListening } from '../../stores/middleware/listener.middleware' import { setToken } from './user.reducer' -interface ThunkEntityDTO { - thunk: any - payload: Object - - /** - * Only one subscription per category is allowed. New subscription will unsubscribe and overwrite the old one - */ - category: CATEGORIES -} - -interface ThunkEntity extends ThunkEntityDTO { - id?: number - locked: boolean -} - export interface ReducerState { - thunks: { [key in keyof typeof CATEGORIES]: ThunkEntity | null } -} - -export enum CATEGORIES { - TABLE, - TAB, + thunks: Record<CategoryType, ThunkPersist | null> } const initialState: ReducerState = { thunks: { + DEVICE: null, TABLE: null, - TAB: null, + TAB: null }, + } + const RoutineSlice = createSlice({ name: 'routine', initialState, reducers: { - addRoutine: (state: any, { payload }: PayloadAction<ThunkEntityDTO>) => { - const newThunk: ThunkEntity = { ...payload, locked: true } - state.thunks[CATEGORIES[payload.category]] = newThunk - }, - - setThunkId: (state, { payload }: PayloadAction<{ id: number; category: CATEGORIES }>) => { - const thunk = state.thunks[CATEGORIES[payload.category] as any] - - if (!thunk) { - // TODO - throw new Error('Thunk not found') + addRoutine: (state: any, { payload }: PayloadAction<ThunkDTO>) => { + const thunk: ThunkPersist = { + category: payload.category, + payload: payload.payload, + thunkId: payload.thunk.id, + lastupdate: Date.now() } - state.thunks[CATEGORIES[payload.category] as any] = { ...thunk, id: payload.id, locked: false } + state.thunks[payload.category] = thunk + }, + + refreshUpdateTimer: (state: any, { payload }: PayloadAction<CategoryType>) => { + state.thunks[payload].lastupdate = Date.now() }, removeAll: (state) => { @@ -61,7 +45,7 @@ const RoutineSlice = createSlice({ }, }) -export const { addRoutine } = RoutineSlice.actions +export const { addRoutine, refreshUpdateTimer } = RoutineSlice.actions // on logout remove all routine startListening({ @@ -72,49 +56,37 @@ startListening({ }, }) -// on rehydrate add all persistet routines -// TODO -> thunk does not have the thunk function object due to its coming from the store that ignores the value. -// at this point we have to figure out how to get the thunk function out of the "string" name -// startListening({ -// predicate: ({ type }) => type === REHYDRATE, -// effect: async (_, listenerApi) => { -// const { routine } = listenerApi.getState() as RootState -// for (const [_, thunk] of Object.entries<ThunkEntity>(routine.thunks)) { -// if (!thunk) { -// continue -// } -// const dto: ThunkEntityDTO = thunk -// listenerApi.dispatch(addRoutine(dto)) -// } -// }, -// }) - -// add new routine +/** + * Add new routine + * + * This listener handles the connection between the RoutingManager that + * stores the non persistable thunk object and the peristable thunk information. + * The persistable information are stored in this reducer + */ startListening({ predicate: (action) => addRoutine.match(action), effect: async (action, listenerApi) => { - const { thunk } = action.payload as ThunkEntity + const { thunk } = action.payload as ThunkDTO const subscription = await listenerApi.dispatch(thunk(action.payload.payload)) - const thunkId = await RoutineManager.add(subscription.payload) - listenerApi.dispatch( - RoutineSlice.actions.setThunkId({ id: thunkId, category: action.payload.category }) - ) + + if (subscription.error) { + throw new Error('Error during routine execution: ' + subscription.error.message) + } + + RoutineManager.add(subscription.payload, action.payload.category) }, }) -// unsubscribe old routine +// unsubscribe old routine that is in the same category startListening({ predicate: (action) => addRoutine.match(action), effect: async (action, listenerApi) => { const { routine } = listenerApi.getOriginalState() as RootState - const lastThunk = routine.thunks[CATEGORIES[action.payload.category] as any] - if (lastThunk) { - if (!lastThunk.id) { - throw new Error() - // TODO - } + const category = action.payload.category; - RoutineManager.unsubscribe(lastThunk.id) + const lastThunk = routine.thunks[category as CategoryType] + if (lastThunk) { + RoutineManager.unsubscribe(category) } }, }) diff --git a/react-ui/src/shared/reducer/user.reducer.ts b/react-ui/src/shared/reducer/user.reducer.ts index af0f2d171..a0f2d4222 100755 --- a/react-ui/src/shared/reducer/user.reducer.ts +++ b/react-ui/src/shared/reducer/user.reducer.ts @@ -1,7 +1,6 @@ -import { api, RbacUser, UserServiceGetUsersApiArg } from '@api/api' +import { RbacUser } from '@api/api' import { setCookieValue } from '@helper/coookie' -import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit' -import { RootState } from '..' +import { createSlice, PayloadAction } from '@reduxjs/toolkit' export interface UserSliceState { // defined by the frontend user input. This value is getting compared with the backend response @@ -34,27 +33,4 @@ export const { setToken } = userSlice.actions export const { setUser } = userSlice.actions export default userSlice.reducer -export const userReducerPath = userSlice.reducerPath - -export const fetchUser = createAsyncThunk('user/fetchUser', (_, thunkAPI) => { - const payload: UserServiceGetUsersApiArg = {} - - thunkAPI.dispatch(api.endpoints.userServiceGetUsers.initiate(payload)).then((response) => { - if (response.error || !response.data?.user?.length) { - // TODO proper error handling - throw new Error('Fetching the pnd list after successful login failed') - } - - const { user } = thunkAPI.getState() as RootState - - // TODO ask if this is the correct approach - const matchedUser = response.data.user.find((_user) => _user.name === user.username) - - if (!matchedUser) { - // TODO proper error handling - throw new Error('No user found with the provided username') - } - - thunkAPI.dispatch(setUser(matchedUser)) - }) -}) +export const userReducerPath = userSlice.reducerPath \ No newline at end of file diff --git a/react-ui/src/shared/routine/user.routine.ts b/react-ui/src/shared/routine/user.routine.ts new file mode 100644 index 000000000..368ccf412 --- /dev/null +++ b/react-ui/src/shared/routine/user.routine.ts @@ -0,0 +1,37 @@ +import { api, PndServiceGetPndListApiArg, UserServiceGetUsersApiArg } from "@api/api" +import { setPnds } from "@component/devices/reducer/device.reducer" +import { createAsyncThunk } from "@reduxjs/toolkit" +import { setUser } from "@shared/reducer/user.reducer" +import { RootState } from "src/stores" + +export const fetchUser = createAsyncThunk('user/fetchUser', (_, thunkAPI) => { + const payload: UserServiceGetUsersApiArg = {} + + thunkAPI.dispatch(api.endpoints.userServiceGetUsers.initiate(payload)).then((response) => { + if (response.error || !response.data?.user?.length) { + // TODO proper error handling + throw new Error('Fetching the pnd list after successful login failed') + } + + const { user } = thunkAPI.getState() as RootState + const matchedUser = response.data.user.find((_user) => _user.name === user.username) + + if (!matchedUser) { + // TODO proper error handling => logout + throw new Error('No user found with the provided username') + } + + thunkAPI.dispatch(setUser(matchedUser)) + }) +}) + +export const fetchPnds = createAsyncThunk('device/fetchPnds', (_, thunkApi) => { + const payload: PndServiceGetPndListApiArg = { + timestamp: new Date().getTime().toString(), + } + + const subscription = thunkApi.dispatch(api.endpoints.pndServiceGetPndList.initiate(payload)) + subscription.unwrap().then((response) => { + thunkApi.dispatch(setPnds(response.pnd)) + }) +}) \ No newline at end of file diff --git a/react-ui/src/shared/style/box.scss b/react-ui/src/shared/style/box.scss index bd75fb00a..53158f515 100755 --- a/react-ui/src/shared/style/box.scss +++ b/react-ui/src/shared/style/box.scss @@ -1,26 +1,59 @@ -@import './colors.scss'; +@import "./colors.scss"; $box-padding: 10px; -$border-radius: 20px; - +$border-radius: 0.25em; +$border-width: 2px; +$transition-duration: 0.3s; .c-box { padding: $box-padding; background-color: white; - box-shadow: 0px 4px 4px rgba(0,0,0, .35); + position: relative; border-radius: $border-radius; + transition: box-shadow $transition-duration ease-in-out; + + background: + linear-gradient(white, white) padding-box, + linear-gradient( + 180deg, + rgba(map-get($theme-colors, "primary"), 0.4) 0%, + rgba(map-get($theme-colors, "primary"), 0.2) 40%, + rgba(map-get($theme-colors, "primary"), 0.1) 100% + ) + border-box; + border: $border-width solid transparent; + box-shadow: $box-shadow; + + &::before { + content: ""; + position: absolute; + top: -$border-width; + left: -$border-width; + right: -$border-width; + bottom: -$border-width; + background: linear-gradient( + 180deg, + rgba(map-get($theme-colors, "primary"), 0.4) 0%, + rgba(map-get($theme-colors, "primary"), 0.2) 60%, + rgba(map-get($theme-colors, "primary"), 0.1) 100% + ); + border-radius: inherit; + z-index: -1; + opacity: 0; + transition: opacity $transition-duration ease-in-out; + } + + &:hover { + box-shadow: 0 0.5rem 1rem rgba(map-get($theme-colors, "primary"), 0.2); + + &::before { + opacity: 1; + } + } } .abstract-box { - padding: 16px $box-padding; - font-size: .90em; + padding: $box-padding; + font-size: 0.9em; border-radius: calc($border-radius / 2); } - - -// @each $color, $value in $theme-colors { -// .#{$color}-box { -// @extend .abstract-box; -// background-color: $value !important; -// } -// } diff --git a/react-ui/src/shared/style/colors.scss b/react-ui/src/shared/style/colors.scss index 749af9e8e..4469a4a5b 100755 --- a/react-ui/src/shared/style/colors.scss +++ b/react-ui/src/shared/style/colors.scss @@ -1,11 +1,13 @@ $theme-colors: ( - 'primary': #b350e0, - 'primary::hover': #ddaff3af, - 'bg-primary': #E1E1E1, - 'danger': #ffdcdc, - 'warning': #dbd116, - 'dark': #595959, - 'black': #000000, + "primary": #b350e0, + "primary::hover": #ddaff3af, + "bg-primary": #ededed, + "danger": #ff0000, + "warning": #dbd116, + "dark": #595959, + "black": #000000 ); - -@import '/node_modules/bootstrap/scss/bootstrap'; + +$box-shadow: 0px 4px 8px rgba(map-get($theme-colors, "primary"), 0.2); + +@import "/node_modules/bootstrap/scss/bootstrap"; diff --git a/react-ui/src/shared/style/fonts.scss b/react-ui/src/shared/style/fonts.scss index c47d1a52f..3af44e155 100755 --- a/react-ui/src/shared/style/fonts.scss +++ b/react-ui/src/shared/style/fonts.scss @@ -1,9 +1,12 @@ @font-face { font-family: Inter; - src: url("/fonts/Inter.ttf"); + src: + url("/fonts/inter-webfont.woff2") format("woff2"), + url("/fonts/inter-webfont.woff") format("woff"); + font-weight: normal; + font-style: normal; } - * { font-family: Inter; -} \ No newline at end of file +} diff --git a/react-ui/src/shared/style/utils.scss b/react-ui/src/shared/style/utils.scss index d8be654f7..d6f34d301 100755 --- a/react-ui/src/shared/style/utils.scss +++ b/react-ui/src/shared/style/utils.scss @@ -7,7 +7,3 @@ cursor: pointer; } } - -.icon { - font-size: 1.75em; -} diff --git a/react-ui/src/shared/types/category.type.ts b/react-ui/src/shared/types/category.type.ts new file mode 100644 index 000000000..e08282341 --- /dev/null +++ b/react-ui/src/shared/types/category.type.ts @@ -0,0 +1,17 @@ + +const DeviceListView = { + TABLE: "device_list/table", + TAB: "device_list/tab", +} + +const Shared = { + DEVICE: 'objects/device' +} + + +export const Category = { + ...DeviceListView, + ...Shared +} + +export type CategoryType = keyof typeof Category \ No newline at end of file diff --git a/react-ui/src/shared/helper/interfaces.ts b/react-ui/src/shared/types/interfaces.type.ts similarity index 100% rename from react-ui/src/shared/helper/interfaces.ts rename to react-ui/src/shared/types/interfaces.type.ts diff --git a/react-ui/src/shared/types/thunk.type.ts b/react-ui/src/shared/types/thunk.type.ts new file mode 100644 index 000000000..ff037d796 --- /dev/null +++ b/react-ui/src/shared/types/thunk.type.ts @@ -0,0 +1,24 @@ +import { CategoryType } from "./category.type" + + +// The actual Thunk type is hard to determine because is very generic +export type ThunkFunc = any + + +export interface ThunkDTO { + thunk: ThunkFunc + payload: Object + + /** + * Only one subscription per category is allowed. + * New subscription will unsubscribe and overwrite the old one + */ + category: CategoryType +} + +export interface ThunkPersist { + thunkId: number, + payload: Object + category: CategoryType, + lastupdate: number +} diff --git a/react-ui/src/shared/utils/loading-fallback.tsx b/react-ui/src/shared/utils/loading-fallback.tsx new file mode 100644 index 000000000..d1c6daa4a --- /dev/null +++ b/react-ui/src/shared/utils/loading-fallback.tsx @@ -0,0 +1,117 @@ +import React, { useEffect, useState } from 'react'; +import { Col, Container, Row } from 'react-bootstrap'; +import logo from '/public/logo.png'; + +interface DelayedRenderProps { + children: React.ReactNode; + loading?: { + minimumLoadingTime: number; + component: () => JSX.Element + } +} + +export const SplashScreen = () => { + const [dots, setDots] = useState(''); + + useEffect(() => { + const dotsInterval = setInterval(() => { + setDots(prev => prev.length >= 3 ? '' : prev + '.'); + }, 500); + + return () => clearInterval(dotsInterval); + }, []); + + return ( + <div className="splash-screen-overlay"> + <Container fluid className="h-100 d-flex align-items-center justify-content-center bg-bg-primary"> + <Row> + <Col className="text-center"> + <div className="loading-bounce mb-4"> + <img + src={logo} + alt="Logo" + className="img-fluid" + style={{ width: '120px', height: '120px', objectFit: 'contain' }} + /> + </div> + <div className="loading-text"> + <span className="h4 text-secondary">Loading</span> + <span className="h4 text-secondary dots-width">{dots}</span> + </div> + </Col> + </Row> + </Container> + + <style> + {` + .splash-screen-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: #f8f9fa; + z-index: 0; + display: flex; + align-items: center; + justify-content: center; + } + + .loading-bounce { + animation: bounce 1s infinite; + } + + @keyframes bounce { + 0%, 100% { + transform: translateY(0); + } + 50% { + transform: translateY(-20px); + } + } + + .loading-text { + display: flex; + justify-content: center; + align-items: center; + } + + .dots-width { + min-width: 24px; + text-align: left; + margin-left: 2px; + } + `} + </style> + </div> + ); +}; + +export const DelayedRender: React.FC<DelayedRenderProps> = ({ + children, + loading +}) => { + const [shouldRender, setShouldRender] = useState(false); + + useEffect(() => { + if (!loading) { + setShouldRender(true); + return; + } + + const timer = setTimeout(() => { + setShouldRender(true); + }, loading.minimumLoadingTime); + + return () => clearTimeout(timer); + }, [loading]); + + if (!shouldRender && loading) { + const LoadingComponent = loading.component; + return <LoadingComponent />; + } + + return <>{children}</>; +}; + +export default DelayedRender; \ No newline at end of file diff --git a/react-ui/src/shared/utils/routine.manager.ts b/react-ui/src/shared/utils/routine.manager.ts index ade079289..1fee6723e 100755 --- a/react-ui/src/shared/utils/routine.manager.ts +++ b/react-ui/src/shared/utils/routine.manager.ts @@ -1,67 +1,75 @@ +import { infoMessage, warnMessage } from '@helper/debug' import { QueryActionCreatorResult } from '@reduxjs/toolkit/query' +import { Category, CategoryType } from '@shared/types/category.type' type Routine = QueryActionCreatorResult<any> interface Entity { routine: Routine - id: number } -const initialState = { - routines: [] as Entity[], + +interface RoutineState { + routines: Record<CategoryType, Entity | null> +} + +const initalState: RoutineState = { + routines: { + DEVICE: null, + TABLE: null, + TAB: null + } } /** - * Routine manager is a singleton that holds all running routines. - * The redux store holds any persistable information about the routines. - * The routines objects itself are stored in the RoutineManager. - */ +* Routine manager is a singleton that holds all running routines. +* The redux store holds any persistable information about the routines. +* The routine objects itself are stored in the RoutineManager. +*/ export const RoutineManager = (() => { - const state = initialState - const add = (routine: Routine): number => { - const id = state.routines.length + let state = initalState - const newEntity: Entity = { + const add = (routine: Routine, category: CategoryType): boolean => { + const entity: Entity = { routine: routine, - id, } - state.routines = [...state.routines, newEntity] + state.routines = { + ...state.routines, + [category]: entity + } + infoMessage("Routine subscribed to category " + category) - return id + return true } const unsubscribeAll = () => { - state.routines.forEach(({ routine: subscription }) => { - _unsubscribe(subscription) - }) + Object.keys(state.routines) + .forEach((category) => { + unsubscribe(category as CategoryType) + }) - state.routines = initialState.routines + state = initalState } /** * @param id * @returns returns true if the routine was stopped, false if it was not found */ - const unsubscribe = (id: number): boolean => { - const routine = state.routines.find(({ id: routineId }) => routineId === id) + const unsubscribe = (category: CategoryType): boolean => { + const entity = state.routines[category] - if (routine) { - _unsubscribe(routine.routine) + if (entity) { + entity.routine.unsubscribe() + state.routines[category] = null + infoMessage("Routine unsubscribed from category " + category) } - return !!routine - } + if (!!entity) { + warnMessage("Desired routine to unsubscribe does not exist in category " + Category[category]) + } - /** - * Actual unsubscribe process. - * This process is extracted to have a single process of unsubscribing. - * - * @param subscription - */ - const _unsubscribe = (subscription: Routine) => { - subscription.unsubscribe() - // TODO remove from state + return !!entity } return { @@ -69,4 +77,4 @@ export const RoutineManager = (() => { unsubscribe, unsubscribeAll, } -})() +})() \ No newline at end of file diff --git a/react-ui/tsconfig.json b/react-ui/tsconfig.json index c679b7100..d40af31cc 100755 --- a/react-ui/tsconfig.json +++ b/react-ui/tsconfig.json @@ -22,7 +22,6 @@ "baseUrl": ".", "paths": { - "@assets/*": ["assets/*"], "@api/*": ["src/shared/api/*"], "@reducer/*": ["src/stores/reducer/*"], "@provider/*": ["src/shared/provider/*"], diff --git a/react-ui/vite.config.mjs b/react-ui/vite.config.mjs index fefafe05a..33fd69cc7 100755 --- a/react-ui/vite.config.mjs +++ b/react-ui/vite.config.mjs @@ -1,17 +1,39 @@ -import react from '@vitejs/plugin-react' -import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react'; +import { defineConfig } from 'vite'; export default defineConfig({ plugins: [react()], build: { - sourcemap: true, + sourcemap: false, + + rollupOptions: { + output: { + manualChunks: { + 'required': [ + 'bootstrap', 'react-bootstrap', + 'react', 'react-dom', 'react-router-dom', + 'redux', '@reduxjs/toolkit', 'react-redux', 'redux-observable', 'redux-persist', + 'i18next', 'react-i18next', + '@fortawesome/fontawesome-svg-core', + '@fortawesome/free-regular-svg-icons', + '@fortawesome/free-solid-svg-icons', + '@fortawesome/react-fontawesome' + ], + 'lazy': [ + 'react-toastify' + ] + } + } + } }, // develop server server: { + sourcemap: true, + host: true, port: 3000, proxy: { '/api': { - target: 'http://127.0.0.1:8080', + target: 'http://clab-gosdn_csbi_arista_base-gosdn:8080', changeOrigin: true, secure: false, rewrite: (path) => path.replace(/^\/api/, ''), @@ -35,7 +57,6 @@ export default defineConfig({ }, resolve: { alias: { - '@assets': '/assets', '@api': '/src/shared/api', '@reducer': '/src/stores/reducer', '@provider': '/src/shared/provider', diff --git a/react-ui/yarn.lock b/react-ui/yarn.lock index d054db6d6..db8fb7d3c 100755 --- a/react-ui/yarn.lock +++ b/react-ui/yarn.lock @@ -1486,6 +1486,13 @@ dependencies: prop-types "^15.8.1" +"@fullhuman/postcss-purgecss@^7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@fullhuman/postcss-purgecss/-/postcss-purgecss-7.0.2.tgz#ccacdbc312248c76c42cfac359f4ca5121001e67" + integrity sha512-U4zAXNaVztbDxO9EdcLp51F3UxxYsb/7DN89rFxFJhfk2Wua2pvw2Kf3HdspbPhW/wpHjSjsxWYoIlbTgRSjbQ== + dependencies: + purgecss "^7.0.2" + "@humanfs/core@^0.19.1": version "0.19.1" resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" @@ -2586,6 +2593,13 @@ resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.3.tgz#3654138d0da1b0c7916f6ed0dc1cc2b576d47650" integrity sha512-uTYkxTLkYp41nq/ULXyXMtkNT1vu5fXJoqad6uTNCOGat5t9cLgF4vMNLBXsTOXpdOI44XzKPY1M5RRm0bQHuw== +"@types/react-grid-layout@^1.3.5": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/react-grid-layout/-/react-grid-layout-1.3.5.tgz#f4b52bf27775290ee0523214be0987be14e66823" + integrity sha512-WH/po1gcEcoR6y857yAnPGug+ZhkF4PaTUxgAbwfeSH/QOgVSakKHBXoPGad/sEznmkiaK3pqHk+etdWisoeBQ== + dependencies: + "@types/react" "*" + "@types/react-transition-group@^4.4.6": version "4.4.11" resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.11.tgz#d963253a611d757de01ebb241143b1017d5d63d5" @@ -3836,7 +3850,12 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" -clsx@^2.1.0: +clsx@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" + integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== + +clsx@^2.0.0, clsx@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== @@ -3906,6 +3925,11 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" +commander@^12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" + integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== + commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -4061,6 +4085,11 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.5: shebang-command "^2.0.0" which "^2.0.1" +crypto-js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" + integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== + crypto-random-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" @@ -5334,6 +5363,11 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== +fast-equals@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-4.0.3.tgz#72884cc805ec3c6679b99875f6b7654f39f0e8c7" + integrity sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg== + fast-glob@^3.2.9, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" @@ -5690,6 +5724,18 @@ glob@^10.3.10: package-json-from-dist "^1.0.0" path-scurry "^1.11.1" +glob@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-11.0.0.tgz#6031df0d7b65eaa1ccb9b29b5ced16cea658e77e" + integrity sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g== + dependencies: + foreground-child "^3.1.0" + jackspeak "^4.0.1" + minimatch "^10.0.0" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^2.0.0" + glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -6469,6 +6515,13 @@ jackspeak@^3.1.2: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" +jackspeak@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.0.2.tgz#11f9468a3730c6ff6f56823a820d7e3be9bef015" + integrity sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw== + dependencies: + "@isaacs/cliui" "^8.0.2" + jake@^10.8.5: version "10.9.2" resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f" @@ -7277,6 +7330,11 @@ lru-cache@^10.2.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== +lru-cache@^11.0.0: + version "11.0.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.0.2.tgz#fbd8e7cf8211f5e7e5d91905c415a3f55755ca39" + integrity sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -7407,6 +7465,13 @@ minimalistic-assert@^1.0.0: resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== +minimatch@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.1.tgz#ce0521856b453c86e25f2c4c0d03e6ff7ddc440b" + integrity sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ== + dependencies: + brace-expansion "^2.0.1" + minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -7923,6 +7988,14 @@ path-scurry@^1.11.1: lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" +path-scurry@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.0.tgz#9f052289f23ad8bf9397a2a0425e7b8615c58580" + integrity sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg== + dependencies: + lru-cache "^11.0.0" + minipass "^7.1.2" + path-to-regexp@0.1.12: version "0.1.12" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7" @@ -8624,7 +8697,7 @@ prop-types-extra@^1.1.0: react-is "^16.3.2" warning "^4.0.0" -prop-types@^15.6.2, prop-types@^15.8.1: +prop-types@15.x, prop-types@^15.6.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -8653,6 +8726,16 @@ punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== +purgecss@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/purgecss/-/purgecss-7.0.2.tgz#b7dccc3ead65a4301eed98e014793719a511c633" + integrity sha512-4Ku8KoxNhOWi9X1XJ73XY5fv+I+hhTRedKpGs/2gaBKU8ijUiIKF/uyyIyh7Wo713bELSICF5/NswjcuOqYouQ== + dependencies: + commander "^12.1.0" + glob "^11.0.0" + postcss "^8.4.47" + postcss-selector-parser "^6.1.2" + q@^1.1.2: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" @@ -8772,6 +8855,14 @@ react-dom@^18.3.1: loose-envify "^1.1.0" scheduler "^0.23.2" +react-draggable@^4.0.3, react-draggable@^4.4.5: + version "4.4.6" + resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.4.6.tgz#63343ee945770881ca1256a5b6fa5c9f5983fe1e" + integrity sha512-LtY5Xw1zTPqHkVmtM3X8MUOxNDOUhv/khTgBgrUvwaS064bwVvxT+q5El0uUFNx5IEPKXuRejr7UqLwBIg5pdw== + dependencies: + clsx "^1.1.1" + prop-types "^15.8.1" + react-error-boundary@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-4.1.2.tgz#bc750ad962edb8b135d6ae922c046051eb58f289" @@ -8784,6 +8875,18 @@ react-error-overlay@^6.0.11: resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== +react-grid-layout@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/react-grid-layout/-/react-grid-layout-1.5.0.tgz#b6cc9412b58cf8226aebc0df7673d6fa782bdee2" + integrity sha512-WBKX7w/LsTfI99WskSu6nX2nbJAUD7GD6nIXcwYLyPpnslojtmql2oD3I2g5C3AK8hrxIarYT8awhuDIp7iQ5w== + dependencies: + clsx "^2.0.0" + fast-equals "^4.0.3" + prop-types "^15.8.1" + react-draggable "^4.4.5" + react-resizable "^3.0.5" + resize-observer-polyfill "^1.5.1" + react-i18next@^15.0.0: version "15.1.4" resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-15.1.4.tgz#65c03c31a5e42202000652e163f22f23a9306a60" @@ -8830,6 +8933,14 @@ react-refresh@^0.14.2: resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.2.tgz#3833da01ce32da470f1f936b9d477da5c7028bf9" integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA== +react-resizable@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/react-resizable/-/react-resizable-3.0.5.tgz#362721f2efbd094976f1780ae13f1ad7739786c1" + integrity sha512-vKpeHhI5OZvYn82kXOs1bC8aOXktGU5AmKAgaZS4F5JPburCtbmDPqE7Pzp+1kN4+Wb81LlF33VpGwWwtXem+w== + dependencies: + prop-types "15.x" + react-draggable "^4.0.3" + react-router-dom@^6.23.1: version "6.28.0" resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.28.0.tgz#f73ebb3490e59ac9f299377062ad1d10a9f579e6" @@ -9123,6 +9234,11 @@ reselect@^5.1.0: resolved "https://registry.yarnpkg.com/reselect/-/reselect-5.1.1.tgz#c766b1eb5d558291e5e550298adb0becc24bb72e" integrity sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w== +resize-observer-polyfill@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" -- GitLab