From 2d81ced29ad2ef237b0d508569dc9a55b21283fc Mon Sep 17 00:00:00 2001 From: lichx Date: Wed, 4 Dec 2024 22:01:33 +0800 Subject: [PATCH] [feature] First Update --- .gitignore | 24 + .vscode/extensions.json | 3 + README.md | 5 + index.html | 13 + package-lock.json | 2502 +++++++++++++++++++++++ package.json | 26 + public/vite.svg | 1 + src/App.vue | 30 + src/assets/Disk.png | Bin 0 -> 15301 bytes src/assets/Pin.png | Bin 0 -> 8037 bytes src/components/expr1.vue | 29 + src/components/expr1/ControlPanel.vue | 34 + src/components/expr1/OperationTable.vue | 239 +++ src/components/expr1/RAM.vue | 115 ++ src/components/expr2.vue | 24 + src/components/expr2/ControlPanel.vue | 34 + src/components/expr2/DISK.vue | 131 ++ src/components/expr2/OperationGraph.vue | 76 + src/components/expr2/OperationTable.vue | 208 ++ src/logical/expr1/ram.ts | 206 ++ src/logical/expr2/disk.ts | 140 ++ src/main.ts | 13 + src/router.ts | 19 + src/store/expr1/defaultOperation.ts | 20 + src/store/expr1/expr1Store.ts | 16 + src/store/expr2/defaultOperation.ts | 17 + src/store/expr2/expr2Store.ts | 25 + src/style.css | 26 + src/vite-env.d.ts | 1 + tsconfig.app.json | 33 + tsconfig.json | 7 + tsconfig.node.json | 24 + vite.config.ts | 15 + 33 files changed, 4056 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/extensions.json create mode 100644 README.md create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/vite.svg create mode 100644 src/App.vue create mode 100644 src/assets/Disk.png create mode 100644 src/assets/Pin.png create mode 100644 src/components/expr1.vue create mode 100644 src/components/expr1/ControlPanel.vue create mode 100644 src/components/expr1/OperationTable.vue create mode 100644 src/components/expr1/RAM.vue create mode 100644 src/components/expr2.vue create mode 100644 src/components/expr2/ControlPanel.vue create mode 100644 src/components/expr2/DISK.vue create mode 100644 src/components/expr2/OperationGraph.vue create mode 100644 src/components/expr2/OperationTable.vue create mode 100644 src/logical/expr1/ram.ts create mode 100644 src/logical/expr2/disk.ts create mode 100644 src/main.ts create mode 100644 src/router.ts create mode 100644 src/store/expr1/defaultOperation.ts create mode 100644 src/store/expr1/expr1Store.ts create mode 100644 src/store/expr2/defaultOperation.ts create mode 100644 src/store/expr2/expr2Store.ts create mode 100644 src/style.css create mode 100644 src/vite-env.d.ts create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..a7cea0b --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["Vue.volar"] +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..33895ab --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# Vue 3 + TypeScript + Vite + +This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 ` + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..d1b7a8d --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2502 @@ +{ + "name": "operating-system", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "operating-system", + "version": "0.0.0", + "dependencies": { + "echarts": "^5.5.1", + "pinia": "^2.2.6", + "tdesign-vue-next": "^1.10.4", + "vue": "^3.5.13", + "vue-router": "^4.5.0" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.2.1", + "@vitejs/plugin-vue-jsx": "^4.1.1", + "less": "^4.2.1", + "typescript": "~5.6.2", + "vite": "^6.0.1", + "vue-tsc": "^2.1.10" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.26.2", + "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.26.2.tgz", + "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.0", + "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@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", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.26.2", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.26.2.tgz", + "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.26.2", + "@babel/types": "^7.26.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@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" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "dev": true, + "license": "MIT", + "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" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", + "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.26.0", + "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.2", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.26.2.tgz", + "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.9.tgz", + "integrity": "sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@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" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.25.9.tgz", + "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/template": "^7.25.9", + "@babel/types": "^7.25.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.26.0", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", + "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.24.0.tgz", + "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", + "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.24.0.tgz", + "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", + "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", + "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", + "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", + "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", + "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", + "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", + "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", + "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", + "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", + "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", + "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", + "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", + "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", + "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", + "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", + "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", + "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", + "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", + "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", + "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.27.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.27.4.tgz", + "integrity": "sha512-2Y3JT6f5MrQkICUyRVCw4oa0sutfAsgaSsb0Lmmy1Wi2y7X5vT9Euqw4gOsCyy0YfKURBg35nhUKZS4mDcfULw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.27.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.27.4.tgz", + "integrity": "sha512-wzKRQXISyi9UdCVRqEd0H4cMpzvHYt1f/C3CoIjES6cG++RHKhrBj2+29nPF0IB5kpy9MS71vs07fvrNGAl/iA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.27.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.27.4.tgz", + "integrity": "sha512-PlNiRQapift4LNS8DPUHuDX/IdXiLjf8mc5vdEmUR0fF/pyy2qWwzdLjB+iZquGr8LuN4LnUoSEvKRwjSVYz3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.27.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.27.4.tgz", + "integrity": "sha512-o9bH2dbdgBDJaXWJCDTNDYa171ACUdzpxSZt+u/AAeQ20Nk5x+IhA+zsGmrQtpkLiumRJEYef68gcpn2ooXhSQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.27.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.27.4.tgz", + "integrity": "sha512-NBI2/i2hT9Q+HySSHTBh52da7isru4aAAo6qC3I7QFVsuhxi2gM8t/EI9EVcILiHLj1vfi+VGGPaLOUENn7pmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.27.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.27.4.tgz", + "integrity": "sha512-wYcC5ycW2zvqtDYrE7deary2P2UFmSh85PUpAx+dwTCO9uw3sgzD6Gv9n5X4vLaQKsrfTSZZ7Z7uynQozPVvWA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.27.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.27.4.tgz", + "integrity": "sha512-9OwUnK/xKw6DyRlgx8UizeqRFOfi9mf5TYCw1uolDaJSbUmBxP85DE6T4ouCMoN6pXw8ZoTeZCSEfSaYo+/s1w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.27.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.27.4.tgz", + "integrity": "sha512-Vgdo4fpuphS9V24WOV+KwkCVJ72u7idTgQaBoLRD0UxBAWTF9GWurJO9YD9yh00BzbkhpeXtm6na+MvJU7Z73A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.27.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.27.4.tgz", + "integrity": "sha512-pleyNgyd1kkBkw2kOqlBx+0atfIIkkExOTiifoODo6qKDSpnc6WzUY5RhHdmTdIJXBdSnh6JknnYTtmQyobrVg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.27.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.27.4.tgz", + "integrity": "sha512-caluiUXvUuVyCHr5DxL8ohaaFFzPGmgmMvwmqAITMpV/Q+tPoaHZ/PWa3t8B2WyoRcIIuu1hkaW5KkeTDNSnMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.27.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.27.4.tgz", + "integrity": "sha512-FScrpHrO60hARyHh7s1zHE97u0KlT/RECzCKAdmI+LEoC1eDh/RDji9JgFqyO+wPDb86Oa/sXkily1+oi4FzJQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.27.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.27.4.tgz", + "integrity": "sha512-qyyprhyGb7+RBfMPeww9FlHwKkCXdKHeGgSqmIXw9VSUtvyFZ6WZRtnxgbuz76FK7LyoN8t/eINRbPUcvXB5fw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.27.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.27.4.tgz", + "integrity": "sha512-PFz+y2kb6tbh7m3A7nA9++eInGcDVZUACulf/KzDtovvdTizHpZaJty7Gp0lFwSQcrnebHOqxF1MaKZd7psVRg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.27.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.27.4.tgz", + "integrity": "sha512-Ni8mMtfo+o/G7DVtweXXV/Ol2TFf63KYjTtoZ5f078AUgJTmaIJnj4JFU7TK/9SVWTaSJGxPi5zMDgK4w+Ez7Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.27.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.27.4.tgz", + "integrity": "sha512-5AeeAF1PB9TUzD+3cROzFTnAJAcVUGLuR8ng0E0WXGkYhp6RD6L+6szYVX+64Rs0r72019KHZS1ka1q+zU/wUw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.27.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.27.4.tgz", + "integrity": "sha512-yOpVsA4K5qVwu2CaS3hHxluWIK5HQTjNV4tWjQXluMiiiu4pJj4BN98CvxohNCpcjMeTXk/ZMJBRbgRg8HBB6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.27.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.27.4.tgz", + "integrity": "sha512-KtwEJOaHAVJlxV92rNYiG9JQwQAdhBlrjNRp7P9L8Cb4Rer3in+0A+IPhJC9y68WAi9H0sX4AiG2NTsVlmqJeQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.27.4", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.27.4.tgz", + "integrity": "sha512-3j4jx1TppORdTAoBJRd+/wJRGCPC0ETWkXOecJ6PPZLj6SptXkrXcNqdj0oclbKML6FkQltdz7bBA3rUSirZug==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/lodash": { + "version": "4.14.182", + "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.182.tgz", + "integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==", + "license": "MIT" + }, + "node_modules/@types/sortablejs": { + "version": "1.15.8", + "resolved": "https://registry.npmmirror.com/@types/sortablejs/-/sortablejs-1.15.8.tgz", + "integrity": "sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg==", + "license": "MIT" + }, + "node_modules/@types/tinycolor2": { + "version": "1.4.6", + "resolved": "https://registry.npmmirror.com/@types/tinycolor2/-/tinycolor2-1.4.6.tgz", + "integrity": "sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==", + "license": "MIT" + }, + "node_modules/@types/validator": { + "version": "13.12.2", + "resolved": "https://registry.npmmirror.com/@types/validator/-/validator-13.12.2.tgz", + "integrity": "sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA==", + "license": "MIT" + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz", + "integrity": "sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vitejs/plugin-vue-jsx": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-4.1.1.tgz", + "integrity": "sha512-uMJqv/7u1zz/9NbWAD3XdjaY20tKTf17XVfQ9zq4wY1BjsB/PjpJPMe2xiG39QpP4ZdhYNhm4Hvo66uJrykNLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.26.0", + "@babel/plugin-transform-typescript": "^7.25.9", + "@vue/babel-plugin-jsx": "^1.2.5" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0", + "vue": "^3.0.0" + } + }, + "node_modules/@volar/language-core": { + "version": "2.4.10", + "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-2.4.10.tgz", + "integrity": "sha512-hG3Z13+nJmGaT+fnQzAkS0hjJRa2FCeqZt6Bd+oGNhUkQ+mTFsDETg5rqUTxyzIh5pSOGY7FHCWUS8G82AzLCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/source-map": "2.4.10" + } + }, + "node_modules/@volar/source-map": { + "version": "2.4.10", + "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-2.4.10.tgz", + "integrity": "sha512-OCV+b5ihV0RF3A7vEvNyHPi4G4kFa6ukPmyVocmqm5QzOd8r5yAtiNvaPEjl8dNvgC/lj4JPryeeHLdXd62rWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@volar/typescript": { + "version": "2.4.10", + "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-2.4.10.tgz", + "integrity": "sha512-F8ZtBMhSXyYKuBfGpYwqA5rsONnOwAVvjyE7KPYJ7wgZqo2roASqNWUnianOomJX5u1cxeRooHV59N0PhvEOgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.10", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.5.tgz", + "integrity": "sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.5.tgz", + "integrity": "sha512-zTrNmOd4939H9KsRIGmmzn3q2zvv1mjxkYZHgqHZgDrXz5B1Q3WyGEjO2f+JrmKghvl1JIRcvo63LgM1kH5zFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/plugin-syntax-jsx": "^7.24.7", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.6", + "@babel/types": "^7.25.6", + "@vue/babel-helper-vue-transform-on": "1.2.5", + "@vue/babel-plugin-resolve-type": "1.2.5", + "html-tags": "^3.3.1", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + } + } + }, + "node_modules/@vue/babel-plugin-resolve-type": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.5.tgz", + "integrity": "sha512-U/ibkQrf5sx0XXRnUZD1mo5F7PkpKyTbfXM3a3rC4YnUz6crHEz9Jg09jzzL6QYlXNto/9CePdOg/c87O4Nlfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/parser": "^7.25.6", + "@vue/compiler-sfc": "^3.5.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.13", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.48", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", + "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/compiler-vue2": { + "version": "2.7.16", + "resolved": "https://registry.npmmirror.com/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz", + "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==", + "dev": true, + "license": "MIT", + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "license": "MIT" + }, + "node_modules/@vue/language-core": { + "version": "2.1.10", + "resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-2.1.10.tgz", + "integrity": "sha512-DAI289d0K3AB5TUG3xDp9OuQ71CnrujQwJrQnfuZDwo6eGNf0UoRlPuaVNO+Zrn65PC3j0oB2i7mNmVPggeGeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/language-core": "~2.4.8", + "@vue/compiler-dom": "^3.5.0", + "@vue/compiler-vue2": "^2.7.16", + "@vue/shared": "^3.5.0", + "alien-signals": "^0.2.0", + "minimatch": "^9.0.3", + "muggle-string": "^0.4.1", + "path-browserify": "^1.0.1" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.13.tgz", + "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.13.tgz", + "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", + "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.13", + "@vue/runtime-core": "3.5.13", + "@vue/shared": "3.5.13", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.13.tgz", + "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "vue": "3.5.13" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "license": "MIT" + }, + "node_modules/alien-signals": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/alien-signals/-/alien-signals-0.2.2.tgz", + "integrity": "sha512-cZIRkbERILsBOXTQmMrxc9hgpxglstn69zm+F1ARf4aPAzdAFYd6sBq87ErO0Fj3DV94tglcyHG5kQz9nDC/8A==", + "dev": true, + "license": "MIT" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/browserslist": { + "version": "4.24.2", + "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001684", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz", + "integrity": "sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==", + "license": "MIT" + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/echarts": { + "version": "5.5.1", + "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.5.1.tgz", + "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "2.3.0", + "zrender": "5.6.0" + } + }, + "node_modules/echarts/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "license": "0BSD" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.65", + "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.65.tgz", + "integrity": "sha512-PWVzBjghx7/wop6n22vS2MLU8tKGd4Q91aCEGhG/TYmW6PP5OcSXcdnxTe1NNt0T66N8D6jxh4kC8UsdzOGaIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/esbuild": { + "version": "0.24.0", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.24.0.tgz", + "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@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" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/less/-/less-4.2.1.tgz", + "integrity": "sha512-CasaJidTIhWmjcqv0Uj5vccMI7pJgfD9lMkKtlnTHAdJdYK/7l8pM9tumLyJ0zhbD4KJLo/YvTj+xznQd5NBhg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.14", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.14.tgz", + "integrity": "sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/needle": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true, + "license": "MIT" + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pinia": { + "version": "2.2.6", + "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.2.6.tgz", + "integrity": "sha512-vIsR8JkDN5Ga2vAxqOE2cJj4VtsHnzpR1Fz30kClxlh0yCHfec6uoMeM3e/ddqmwFUejK3NlrcQa/shnpyT4hA==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.3", + "vue-demi": "^0.14.10" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "@vue/composition-api": "^1.4.0", + "typescript": ">=4.4.4", + "vue": "^2.6.14 || ^3.5.11" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, + "node_modules/rollup": { + "version": "4.27.4", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.27.4.tgz", + "integrity": "sha512-RLKxqHEMjh/RGLsDxAEsaLO3mWgyoU6x9w6n1ikAzet4B3gI2/3yP6PWY2p9QzRTh6MfEIXB3MwsOY0Iv3vNrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.27.4", + "@rollup/rollup-android-arm64": "4.27.4", + "@rollup/rollup-darwin-arm64": "4.27.4", + "@rollup/rollup-darwin-x64": "4.27.4", + "@rollup/rollup-freebsd-arm64": "4.27.4", + "@rollup/rollup-freebsd-x64": "4.27.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.27.4", + "@rollup/rollup-linux-arm-musleabihf": "4.27.4", + "@rollup/rollup-linux-arm64-gnu": "4.27.4", + "@rollup/rollup-linux-arm64-musl": "4.27.4", + "@rollup/rollup-linux-powerpc64le-gnu": "4.27.4", + "@rollup/rollup-linux-riscv64-gnu": "4.27.4", + "@rollup/rollup-linux-s390x-gnu": "4.27.4", + "@rollup/rollup-linux-x64-gnu": "4.27.4", + "@rollup/rollup-linux-x64-musl": "4.27.4", + "@rollup/rollup-win32-arm64-msvc": "4.27.4", + "@rollup/rollup-win32-ia32-msvc": "4.27.4", + "@rollup/rollup-win32-x64-msvc": "4.27.4", + "fsevents": "~2.3.2" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sortablejs": { + "version": "1.15.4", + "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.4.tgz", + "integrity": "sha512-wr7G5Id/WNllca5yF9I2vsz/2wDKJebX5FJBtfUFBGGpaaIVjW4kziAnNMEcigaTZAaPLB92NYBGqWenGDH++g==", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "node_modules/tdesign-icons-vue-next": { + "version": "0.2.6", + "resolved": "https://registry.npmmirror.com/tdesign-icons-vue-next/-/tdesign-icons-vue-next-0.2.6.tgz", + "integrity": "sha512-Se/3N6AAfbpEyJfuBUCMcBl26FCfwUYCf9OwEFp1dw0HhMeCd6LENoZx0o43/V69NpcUGp+0Ya+xVuNKiP8M+Q==", + "dependencies": { + "@babel/runtime": "^7.16.3" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/tdesign-vue-next": { + "version": "1.10.4", + "resolved": "https://registry.npmmirror.com/tdesign-vue-next/-/tdesign-vue-next-1.10.4.tgz", + "integrity": "sha512-DdRf2WZKNwDVZ3y9+xxJi9XJmYyZjSnkJDDlDsUopPhg3jiUiJEdyUuAkAJIljgda6GZk+scrg8b8Am+kySbrw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.22.6", + "@popperjs/core": "^2.11.8", + "@types/lodash": "4.14.182", + "@types/sortablejs": "^1.15.1", + "@types/tinycolor2": "^1.4.3", + "@types/validator": "^13.7.17", + "dayjs": "1.11.10", + "lodash": "^4.17.21", + "mitt": "^3.0.1", + "sortablejs": "^1.15.0", + "tdesign-icons-vue-next": "^0.2.4", + "tinycolor2": "^1.6.0", + "validator": "^13.9.0" + }, + "peerDependencies": { + "vue": ">=3.1.0" + } + }, + "node_modules/tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", + "license": "MIT" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/validator": { + "version": "13.12.0", + "resolved": "https://registry.npmmirror.com/validator/-/validator-13.12.0.tgz", + "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vite": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/vite/-/vite-6.0.1.tgz", + "integrity": "sha512-Ldn6gorLGr4mCdFnmeAOLweJxZ34HjKnDm4HGo6P66IEqTxQb36VEdFJQENKxWjupNfoIjvRUnswjn1hpYEpjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.24.0", + "postcss": "^8.4.49", + "rollup": "^4.23.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmmirror.com/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/vue": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.13.tgz", + "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-sfc": "3.5.13", + "@vue/runtime-dom": "3.5.13", + "@vue/server-renderer": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-router": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.5.0.tgz", + "integrity": "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "2.1.10", + "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-2.1.10.tgz", + "integrity": "sha512-RBNSfaaRHcN5uqVqJSZh++Gy/YUzryuv9u1aFWhsammDJXNtUiJMNoJ747lZcQ68wUQFx6E73y4FY3D8E7FGMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@volar/typescript": "~2.4.8", + "@vue/language-core": "2.1.10", + "semver": "^7.5.4" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": ">=5.0.0" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/zrender": { + "version": "5.6.0", + "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.0.tgz", + "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==", + "license": "BSD-3-Clause", + "dependencies": { + "tslib": "2.3.0" + } + }, + "node_modules/zrender/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "license": "0BSD" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..da4806f --- /dev/null +++ b/package.json @@ -0,0 +1,26 @@ +{ + "name": "operating-system", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vue-tsc -b && vite build", + "preview": "vite preview" + }, + "dependencies": { + "echarts": "^5.5.1", + "pinia": "^2.2.6", + "tdesign-vue-next": "^1.10.4", + "vue": "^3.5.13", + "vue-router": "^4.5.0" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.2.1", + "@vitejs/plugin-vue-jsx": "^4.1.1", + "less": "^4.2.1", + "typescript": "~5.6.2", + "vite": "^6.0.1", + "vue-tsc": "^2.1.10" + } +} diff --git a/public/vite.svg b/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..0401797 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/src/assets/Disk.png b/src/assets/Disk.png new file mode 100644 index 0000000000000000000000000000000000000000..ca02a9719ceec7db245dc5c14cc73318c833e0da GIT binary patch literal 15301 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 literal 0 HcmV?d00001 diff --git a/src/assets/Pin.png b/src/assets/Pin.png new file mode 100644 index 0000000000000000000000000000000000000000..53926f3cc7f88cc859fc4494baf53f775695a3b4 GIT binary patch literal 8037 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
ugqVVwmDyTJfUVIGw?)e&b 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 PdqU9BFu3&^V;}K9qI$-I literal 0 HcmV?d00001 diff --git a/src/components/expr1.vue b/src/components/expr1.vue new file mode 100644 index 0000000..89db03c --- /dev/null +++ b/src/components/expr1.vue @@ -0,0 +1,29 @@ + + + + + \ No newline at end of file diff --git a/src/components/expr1/ControlPanel.vue b/src/components/expr1/ControlPanel.vue new file mode 100644 index 0000000..b5c82b2 --- /dev/null +++ b/src/components/expr1/ControlPanel.vue @@ -0,0 +1,34 @@ + + + + + \ No newline at end of file diff --git a/src/components/expr1/OperationTable.vue b/src/components/expr1/OperationTable.vue new file mode 100644 index 0000000..5d3ab05 --- /dev/null +++ b/src/components/expr1/OperationTable.vue @@ -0,0 +1,239 @@ + + + + + \ No newline at end of file diff --git a/src/components/expr1/RAM.vue b/src/components/expr1/RAM.vue new file mode 100644 index 0000000..6a8082f --- /dev/null +++ b/src/components/expr1/RAM.vue @@ -0,0 +1,115 @@ + + + + + \ No newline at end of file diff --git a/src/components/expr2.vue b/src/components/expr2.vue new file mode 100644 index 0000000..878c8db --- /dev/null +++ b/src/components/expr2.vue @@ -0,0 +1,24 @@ + + + + + \ No newline at end of file diff --git a/src/components/expr2/ControlPanel.vue b/src/components/expr2/ControlPanel.vue new file mode 100644 index 0000000..ff20d96 --- /dev/null +++ b/src/components/expr2/ControlPanel.vue @@ -0,0 +1,34 @@ + + + + + \ No newline at end of file diff --git a/src/components/expr2/DISK.vue b/src/components/expr2/DISK.vue new file mode 100644 index 0000000..6b22cbc --- /dev/null +++ b/src/components/expr2/DISK.vue @@ -0,0 +1,131 @@ + + + + + \ No newline at end of file diff --git a/src/components/expr2/OperationGraph.vue b/src/components/expr2/OperationGraph.vue new file mode 100644 index 0000000..375b685 --- /dev/null +++ b/src/components/expr2/OperationGraph.vue @@ -0,0 +1,76 @@ + + + + + \ No newline at end of file diff --git a/src/components/expr2/OperationTable.vue b/src/components/expr2/OperationTable.vue new file mode 100644 index 0000000..44590db --- /dev/null +++ b/src/components/expr2/OperationTable.vue @@ -0,0 +1,208 @@ + + + + + \ No newline at end of file diff --git a/src/logical/expr1/ram.ts b/src/logical/expr1/ram.ts new file mode 100644 index 0000000..768865d --- /dev/null +++ b/src/logical/expr1/ram.ts @@ -0,0 +1,206 @@ +import {Ref, ref, watch} from "vue"; +import useExpr1Store from "@/store/expr1/expr1Store.ts"; +import {storeToRefs} from "pinia"; +import {Operation} from "@/store/expr1/defaultOperation.ts"; + +export enum Selector { + FirstFit, + BestFit, + WorstFit +} + +export class Ram { + _memSize: Ref; + _memory: Ref; + _operations: Ref; + _selectors: ((operation: Operation) => number)[]; + _currentSelector: number = 0; + _nextOperation: number = 0; + _currentState: Ref; + _allStates: Ref = ref([]); + _releaseHistory: Map + + static OperationToProcess(operation: Operation): Block { + return new Block(operation.id, operation.memorySize); + } + + constructor() { + let store = useExpr1Store(); + let {operations, memSize, tableChanged} = storeToRefs(store); + this._operations = operations; + this._memSize = memSize; + this._memory = ref([new Block(0, memSize.value, "Space")]); + this._selectors = [this.FirstFit.bind(this), this.BestFit.bind(this), this.WorstFit.bind(this)]; + this._currentState = storeToRefs(store).currentState; + this._allStates.value.push(this._memory.value.map(x => x)); + this._releaseHistory = new Map(); + let {failInfo} = storeToRefs(store); + while (this._nextOperation < operations.value.length) { + this.Process(); + this._allStates.value.push(this._memory.value.map(x => Block.Clone(x))); + } + watch(tableChanged, (val) => { + if (!val) + return; + this._nextOperation = 0; + this._allStates.value = []; + failInfo.value = ""; + this._releaseHistory = new Map(); + this._memory.value = [new Block(0, memSize.value, "Space")]; + this._allStates.value.push(this._memory.value.map(x => Block.Clone(x))); + while (this._nextOperation < this._operations.value.length) { + try { + this.Process(); + this._allStates.value.push(this._memory.value.map(x => Block.Clone(x))); + } catch (e:any) { + e = e as Error; + console.log(this._nextOperation, e); + failInfo.value = "任务" + this._nextOperation + '\t' +e.message; + while (this._nextOperation < operations.value.length) { + this._allStates.value.push(this._memory.value.map(x => Block.Clone(x))); + this._nextOperation++; + } + break; + } + } + tableChanged.value = false; + }); + } + + set CurrentSelector(value: Selector) { + this._currentSelector = value; + console.log(this._currentSelector); + } + + GetMemory() { + if (this._currentState.value >= this._allStates.value.length) + this._currentState.value = this._allStates.value.length - 1; + return this._allStates.value[this._currentState.value]; + } + + GetReleaseHistory(processID: number) { + if (this._releaseHistory.has(processID)) + return this._releaseHistory.get(processID)!; + else + return '-'; + } + + FirstFit(operation: Operation): number { + for (let i = 0; i < this._memory.value.length; i++) { + if (this._memory.value[i].Type === "Process") { + continue; + } + if (this._memory.value[i].MemorySize >= operation.memorySize) { + return i; + } + } + return -1; + } + + BestFit(operation: Operation): number { + let memories: Map = new Map(); + for (let i = 0; i < this._memory.value.length; i++) { + if (this._memory.value[i].Type === "Process") { + continue; + } + memories.set(i, this._memory.value[i].MemorySize); + } + let sorted = Array.from(memories).sort((a, b) => a[1] - b[1]); + for (let i = 0; i < sorted.length; i++) { + if (sorted[i][1] >= operation.memorySize) { + return sorted[i][0]; + } + } + return -1; + } + + WorstFit(operation: Operation): number { + let memories: Map = new Map(); + for (let i = 0; i < this._memory.value.length; i++) { + if (this._memory.value[i].Type === "Process") { + continue; + } + memories.set(i, this._memory.value[i].MemorySize); + } + let sorted = Array.from(memories).sort((a, b) => b[1] - a[1]); + for (let i = 0; i < sorted.length; i++) { + if (sorted[i][1] >= operation.memorySize) { + return sorted[i][0]; + } + } + return -1; + } + + Process() { + if (this._nextOperation >= this._operations.value.length) + return; + let operation = this._operations.value[this._nextOperation]; + if (operation.type === 'request' && operation.memorySize === 0) { + this._nextOperation++; + return; + } + this._nextOperation++; + let process = Ram.OperationToProcess(operation); + if (operation.type === 'release') { + let index = this._memory.value.findIndex((value) => value.Type === "Process" && value.ProcessID == process.ProcessID); + if (index == -1) { + throw Error("Process not found"); + } + if (process.MemorySize !== this._memory.value[index].MemorySize) { + console.warn("Memory size not match"); + process.MemorySize = this._memory.value[index].MemorySize; + } + this._releaseHistory.set(process.ProcessID, this._memory.value[index].MemorySize); + let space = new Block(this._memory.value[index].ProcessID, process.MemorySize, "Space"); + space.Start = this._memory.value[index].Start; + this._memory.value[index] = space; + if (index > 0 && this._memory.value[index - 1].Type === "Space") { + let prev = this._memory.value[index - 1]; + prev.MemorySize += space.MemorySize; + this._memory.value.splice(index, 1); + index--; + space = prev; + } + if (index < this._memory.value.length - 1 && this._memory.value[index + 1].Type === "Space") { + let next = this._memory.value[index + 1]; + space.MemorySize += next.MemorySize; + this._memory.value.splice(index + 1, 1); + } + return; + } + + let index = this._selectors[this._currentSelector](operation); + if (index == -1) { + throw Error("No enough memory"); + } + let space = this._memory.value[index]; + process.Start = space.Start; + if (space.MemorySize == process.MemorySize) { + this._memory.value.splice(index, 1); + } else { + space.Start += process.MemorySize; + space.MemorySize -= process.MemorySize; + } + this._memory.value.push(process); + this._memory.value.sort((a, b) => a.Start - b.Start); + } +} + +export class Block { + ProcessID = 0; + MemorySize = 0; + Start = 0; + Type: "Process" | "Space" = "Process"; + + constructor(processID: number, memorySize: number, type: "Process" | "Space" = "Process") { + this.ProcessID = processID; + this.MemorySize = memorySize; + this.Type = type; + } + + static Clone(block: Block) { + let newBlock = new Block(block.ProcessID, block.MemorySize, block.Type); + newBlock.Start = block.Start; + return newBlock; + } +} diff --git a/src/logical/expr2/disk.ts b/src/logical/expr2/disk.ts new file mode 100644 index 0000000..2457708 --- /dev/null +++ b/src/logical/expr2/disk.ts @@ -0,0 +1,140 @@ +import {watch} from "vue"; +import useExpr2Store from "@/store/expr2/expr2Store.ts"; +import {storeToRefs} from "pinia"; +import {Operation} from "@/store/expr2/defaultOperation.ts"; + +export enum Algorithm { + FCFS, + SSTF, + SCAN_FirstDown, + SCAN_FirstUp +} + +export class Disk { + constructor() { + const { + algorithm, + operations, + originOperations, + startTrack, + trackCount, + failInfo, + tableChanged, + dataChanged + } = storeToRefs(useExpr2Store()); + watch(tableChanged, (newVal) => { + if(newVal === false) + return; + failInfo.value = ""; + switch (algorithm.value) { + case Algorithm.FCFS: + operations.value = originOperations.value.map(x => x); + break; + case Algorithm.SSTF: + operations.value = this.SSTF(originOperations.value.map(x => x), startTrack.value); + break; + case Algorithm.SCAN_FirstDown: + operations.value = this.SCAN(originOperations.value.map(x => x), startTrack.value, false); + break; + case Algorithm.SCAN_FirstUp: + operations.value = this.SCAN(originOperations.value.map(x => x), startTrack.value, true); + break; + } + for (let i = 0; i < operations.value.length; i++) { + if (operations.value[i].track < 0 || operations.value[i].track > trackCount.value) { + failInfo.value = i + `: track(${operations.value[i].track}) out of range`; + } + } + dataChanged.value = true; + tableChanged.value = false; + }); + } + + SSTF(operations: Operation[], startTrack: number): Operation[] { + let ans: Operation[] = []; + operations.sort((a, b) => a.track - b.track); + let set: Set = new Set(); + + function FindTrack(): number { + let track = startTrack; + if (track < operations[0].track) + track = 0; + else if (track > operations[operations.length - 1].track) + track = operations.length - 1; + else + for (let i = 0; i < operations.length - 1; i++) { + if (operations[i].track === track) { + track = i; + break; + } else if (operations[i].track <= track && track <= operations[i + 1].track) { + track = track - operations[i].track < operations[i + 1].track - track ? i : i + 1; + break; + } + } + return track; + } + + let track = FindTrack(); + ans.push(operations[track]) + set.add(track); + //O(n) + while (set.size < operations.length) { + let candidate: number[] = []; + + let left = track, right = track; + while (left >= 0) { + if (set.has(left)) + left--; + else { + candidate.push(left); + break; + } + } + while (right <= operations.length - 1) { + if (set.has(right)) + right++; + else { + candidate.push(right); + break; + } + } + let min = Number.MAX_VALUE; + for (let t of candidate) { + if (Math.abs(operations[t].track - operations[track].track) < min) { + min = Math.abs(operations[t].track - operations[track].track); + track = t; + } + } + ans.push(operations[track]); + set.add(track); + } + return ans; + } + + SCAN(operations: Operation[], startTrack: number, direction: boolean): Operation[] { + let ans: Operation[] = []; + operations.sort((a, b) => a.track - b.track); + let track; + + if(direction) + track = operations.findIndex(x => x.track >= startTrack); + else + track = operations.length - 1 - operations.slice().reverse().findIndex(x => x.track <= startTrack); + if(track === -1) + track = operations.length - 1; + if(track === operations.length) + track = 0; + startTrack = track; + ans.push(operations[track]); + while (track + (direction ? 1 : -1) >= 0 && track + (direction ? 1 : -1) < operations.length) { + track += (direction) ? 1 : -1; + ans.push(operations[track]); + } + track = startTrack; + while (track + (direction ? -1 : 1) >= 0 && track + (direction ? -1 : 1) < operations.length) { + track += (direction) ? -1 : 1; + ans.push(operations[track]); + } + return ans; + } +} \ No newline at end of file diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..092d4ad --- /dev/null +++ b/src/main.ts @@ -0,0 +1,13 @@ +import { createApp } from 'vue' +import './style.css' +import App from './App.vue' +import router from './router.ts' +import TDesign from 'tdesign-vue-next' +import 'tdesign-vue-next/es/style/index.css' +import {createPinia} from "pinia"; +document.documentElement.setAttribute('theme-mode', 'dark'); +createApp(App) + .use(router) + .use(TDesign) + .use(createPinia()) + .mount('#app') diff --git a/src/router.ts b/src/router.ts new file mode 100644 index 0000000..5ee24a2 --- /dev/null +++ b/src/router.ts @@ -0,0 +1,19 @@ +import {createRouter, createWebHashHistory} from 'vue-router' +const router = createRouter({ + history: createWebHashHistory(), + routes: [ + { + path: '/', + redirect: '/expr1' + }, + { + path: '/expr1', + component: () => import('@/components/expr1.vue') + }, + { + path: '/expr2', + component: () => import('@/components/expr2.vue') + } + ] +}) +export default router; \ No newline at end of file diff --git a/src/store/expr1/defaultOperation.ts b/src/store/expr1/defaultOperation.ts new file mode 100644 index 0000000..c5905a4 --- /dev/null +++ b/src/store/expr1/defaultOperation.ts @@ -0,0 +1,20 @@ +const operations: Operation[] = [ + { id: 1, memorySize: 200, type: 'request' }, + { id: 2, memorySize: 200, type: 'request' }, + { id: 3, memorySize: 300, type: 'request' }, + { id: 4, memorySize: 200, type: 'request' }, + { id: 5, memorySize: 100, type: 'request' }, + { id: 1, memorySize: 200, type: 'release' }, + { id: 3, memorySize: 300, type: 'release' }, + { id: 5, memorySize: 100, type: 'release' }, + { id: 6, memorySize: 50, type: 'request' }, + // { id: 4, memorySize: 450, type: 'release' }, + // { id: 5, memorySize: 500, type: 'request' }, + // { id: 5, memorySize: 550, type: 'release' }, +]; +export default operations; +export interface Operation { + id: number; + memorySize: number; + type: 'request' | 'release'; +} \ No newline at end of file diff --git a/src/store/expr1/expr1Store.ts b/src/store/expr1/expr1Store.ts new file mode 100644 index 0000000..319ae36 --- /dev/null +++ b/src/store/expr1/expr1Store.ts @@ -0,0 +1,16 @@ +import {defineStore} from "pinia"; +import operations from '@/store/expr1/defaultOperation.ts' + +const useExpr1Store = defineStore('expr1', { + state: () => ({ + operations: operations, + memSize: 1000, + detailMemoryIndex: -1, + currentState: operations.length, + tableChanged: false, + failInfo: '' + }), + getters: {}, + actions: {} +}) +export default useExpr1Store; \ No newline at end of file diff --git a/src/store/expr2/defaultOperation.ts b/src/store/expr2/defaultOperation.ts new file mode 100644 index 0000000..d6d67d2 --- /dev/null +++ b/src/store/expr2/defaultOperation.ts @@ -0,0 +1,17 @@ +const operations: Operation[] = [ + {id: 1, track: 80}, + {id: 2, track: 60}, + {id: 3, track: 90}, + {id: 4, track: 70}, + {id: 5, track: 10}, + {id: 6, track: 30}, + {id: 7, track: 20}, + {id: 8, track: 99}, + {id: 9, track: 50}, +]; +export default operations; + +export interface Operation { + id: number; + track: number; +} \ No newline at end of file diff --git a/src/store/expr2/expr2Store.ts b/src/store/expr2/expr2Store.ts new file mode 100644 index 0000000..7587bae --- /dev/null +++ b/src/store/expr2/expr2Store.ts @@ -0,0 +1,25 @@ +import {defineStore} from "pinia"; +import operations from "@/store/expr2/defaultOperation.ts"; +import {Algorithm} from "@/logical/expr2/disk.ts"; + + +const useExpr2Store = defineStore('expr2', { + state: () => ({ + trackCount: 100, + currentTrack: 0, + startTrack: 50, + operations: operations, + originOperations: operations, + tableChanged: false, + dataChanged: false, + algorithm: Algorithm.FCFS, + failInfo: "", + trackFromIndex: 0, + trackToIndex: 0, + selectTrackFromIndex: 0, + selectTrackToIndex: 0 + }), + getters: {}, + actions: {} +}) +export default useExpr2Store; \ No newline at end of file diff --git a/src/style.css b/src/style.css new file mode 100644 index 0000000..4b2fc1f --- /dev/null +++ b/src/style.css @@ -0,0 +1,26 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + + +#app { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; +} diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..a140663 --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,33 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "preserve", + "jsxImportSource": "vue", + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true, + + "baseUrl": "./", + "paths": { + "@/*": [ + "./src/*" + ] + } + }, + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..1ffef60 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..db0becc --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..70507be --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +import vueJsx from '@vitejs/plugin-vue-jsx' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [vue(), + vueJsx() + ], + resolve: { + alias: { + '@': '/src' + } + } +})