├── src ├── panel │ ├── components │ │ ├── .gitkeep │ │ └── edit.vue │ ├── views │ │ ├── Home.vue │ │ ├── Popup.vue │ │ └── DevTool.vue │ ├── utils │ │ ├── index.ts │ │ └── is.ts │ ├── index.html │ ├── router │ │ └── index.ts │ ├── App.vue │ ├── main.ts │ └── themes │ │ └── app.scss ├── devtools │ ├── index.html │ └── main.ts ├── background │ └── index.ts └── content-script │ └── index.ts ├── public ├── logo.png ├── favicon.ico └── logo_128.png ├── .vscode └── settings.json ├── preview ├── Add Item.png └── preview.png ├── tsconfig.node.json ├── vite.config.ts ├── tsconfig.json ├── package.json ├── README.md ├── manifest.json ├── .gitignore ├── LICENSE └── pnpm-lock.yaml /src/panel/components/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/devtools/index.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imlinhanchao/crx_storage_editor/HEAD/public/logo.png -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "GitCommitPlugin.ShowEmoji": true, 3 | "files.autoSave": "off" 4 | } -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imlinhanchao/crx_storage_editor/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /preview/Add Item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imlinhanchao/crx_storage_editor/HEAD/preview/Add Item.png -------------------------------------------------------------------------------- /preview/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imlinhanchao/crx_storage_editor/HEAD/preview/preview.png -------------------------------------------------------------------------------- /public/logo_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/imlinhanchao/crx_storage_editor/HEAD/public/logo_128.png -------------------------------------------------------------------------------- /src/panel/views/Home.vue: -------------------------------------------------------------------------------- 1 | 2 | 5 | 7 | -------------------------------------------------------------------------------- /src/panel/utils/index.ts: -------------------------------------------------------------------------------- 1 | 2 | export function copyText(text: string) { 3 | const copyFrom = document.createElement("textarea"); 4 | copyFrom.textContent = text; 5 | document.body.appendChild(copyFrom); 6 | copyFrom.select(); 7 | document.execCommand('copy'); 8 | copyFrom.blur(); 9 | document.body.removeChild(copyFrom); 10 | } -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "esnext", 5 | "allowSyntheticDefaultImports": true, 6 | "moduleResolution": "node", 7 | "resolveJsonModule": true, 8 | "types": [ 9 | "element-plus/global" 10 | ] 11 | }, 12 | "include": [ 13 | "vite.config.ts", 14 | "src/**/*.json", 15 | "manifest.json", 16 | "package.json" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /src/panel/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Storage Editor 9 | 10 | 11 | 12 |
13 | 14 |
15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/panel/views/Popup.vue: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { crx, ManifestV3Export } from '@crxjs/vite-plugin' 2 | import vue from '@vitejs/plugin-vue' 3 | import { defineConfig } from 'vite' 4 | import manifest from './manifest.json' 5 | 6 | // https://vitejs.dev/config/ 7 | export default defineConfig({ 8 | build: { 9 | rollupOptions: { 10 | input: { 11 | panel: 'src/panel/index.html', 12 | devtools: 'src/devtools/index.html', 13 | }, 14 | }, 15 | }, 16 | plugins: [vue(), crx({ manifest: manifest as ManifestV3Export }),] 17 | }) 18 | -------------------------------------------------------------------------------- /src/panel/router/index.ts: -------------------------------------------------------------------------------- 1 | import Popup from "../views/Popup.vue"; 2 | import Home from "../views/DevTool.vue"; 3 | import { createRouter, createWebHashHistory } from "vue-router"; 4 | 5 | const routes = [ 6 | { path: '/devtools', component: Home, name: 'devtools' }, 7 | { path: '/popup', component: Popup, name: 'popup' }, 8 | ] 9 | 10 | export const router = createRouter({ 11 | history: createWebHashHistory(), 12 | routes, 13 | }); 14 | 15 | router.beforeEach((to, from, next) => { 16 | document.querySelector('html')!.id = to.name?.toString() || ''; 17 | next(); 18 | }) -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "allowSyntheticDefaultImports": true, 5 | "useDefineForClassFields": true, 6 | "module": "esnext", 7 | "moduleResolution": "node", 8 | "strict": true, 9 | "jsx": "preserve", 10 | "sourceMap": true, 11 | "resolveJsonModule": true, 12 | "isolatedModules": true, 13 | "esModuleInterop": true, 14 | "lib": [ 15 | "esnext", 16 | "dom" 17 | ], 18 | "types": [ 19 | "element-plus/global", 20 | "chrome" 21 | ], 22 | "skipLibCheck": true 23 | }, 24 | "include": [ 25 | "src/**/*.ts", 26 | "src/**/*.d.ts", 27 | "src/**/*.tsx", 28 | "src/**/*.vue", 29 | "src/**/*.json", 30 | "manifest.json", 31 | "package.json" 32 | ], 33 | "references": [ 34 | { 35 | "path": "./tsconfig.node.json" 36 | } 37 | ] 38 | } 39 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "storage-editor", 3 | "version": "1.0.2", 4 | "private": true, 5 | "scripts": { 6 | "build": "vue-tsc --noEmit && vite build", 7 | "dev": "vite", 8 | "preview": "vite preview" 9 | }, 10 | "dependencies": { 11 | "@element-plus/icons-vue": "^2.0.6", 12 | "@fortawesome/fontawesome-svg-core": "^6.3.0", 13 | "@fortawesome/free-regular-svg-icons": "^6.4.0", 14 | "@fortawesome/free-solid-svg-icons": "^6.3.0", 15 | "@fortawesome/vue-fontawesome": "^3.0.3", 16 | "@vueuse/core": "^9.12.0", 17 | "element-plus": "^2.2.9", 18 | "vue": "^3.2.37", 19 | "vue-router": "^4.1.6" 20 | }, 21 | "devDependencies": { 22 | "@crxjs/vite-plugin": "^1.0.12", 23 | "@types/chrome": "^0.0.212", 24 | "@vitejs/plugin-vue": "^2.3.3", 25 | "sass": "^1.58.0", 26 | "typescript": "^4.7.4", 27 | "vite": "^2.9.14", 28 | "vue-tsc": "^0.38.5" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/background/index.ts: -------------------------------------------------------------------------------- 1 | let id = null; 2 | const connections:any = {}; 3 | 4 | chrome.runtime.onConnect.addListener(devToolsConnection => { 5 | // Assign the listener function to a variable so we can remove it later 6 | let devToolsListener = (message :any, sender: chrome.runtime.MessageSender, sendResponse: (response?: any) => void) => { 7 | if (message.name == "init") { 8 | id = message.tabId; 9 | connections[id] = devToolsConnection; 10 | // Send a message back to DevTools 11 | connections[id].postMessage("Connected!"); 12 | } 13 | }; 14 | 15 | // Listen to messages sent from the DevTools page 16 | devToolsConnection.onMessage.addListener(devToolsListener as any); 17 | 18 | devToolsConnection.onDisconnect.addListener(() => { 19 | devToolsConnection.onMessage.removeListener(devToolsListener as any); 20 | }); 21 | }); 22 | 23 | export { } 24 | -------------------------------------------------------------------------------- /src/panel/App.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 8 | 9 | 56 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

4 | 5 |

Storage Editor

6 |

A Editor for Local Storage and Session Storage.

7 | 8 | ## ✨ Feature 9 | 1. 🙈 Preview Local Storage and Session Storage Data as a tree. 10 | 2. ✏️ Edit, Add, Remove or Clear Storage Data. 11 | 3. 🔌 Add a New Node or Data to Object or Array. 12 | 4. 🔍 Search Value or Key in Storage Data Tree. 13 | 14 | ## ⚙️ Debug 15 | 1. Clone git repository in local. 16 | 2. Execute `npm install` to install dependencies. 17 | 3. Execute `npm run dev`. 18 | 4. Open browser and enable "Developer mode". 19 | 5. Click load an unpacked directory, and then choose `//dist`. 20 | 6. Restart Browser. 21 | 22 | ## 👀 Preview 23 | 1. Data Preview: 24 | ![](./preview/preview.png) 25 | 2. Edit Preview: 26 | ![](./preview/Add%20Item.png) 27 | 28 | ## 🔔 Others 29 | * Chrome Web Store: https://chrome.google.com/webstore/detail/lpmmcjhefcghagdhnpbodfdamfmlicfn 30 | * Icon made by [Freepik](https://www.flaticon.com/authors/freepik) from www.flaticon.com -------------------------------------------------------------------------------- /src/panel/main.ts: -------------------------------------------------------------------------------- 1 | import { library } from "@fortawesome/fontawesome-svg-core"; 2 | import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; 3 | import { fas } from "@fortawesome/free-solid-svg-icons"; 4 | import { far } from "@fortawesome/free-regular-svg-icons"; 5 | import { IconPack } from "@fortawesome/fontawesome-svg-core"; 6 | import * as ElementPlusIconsVue from '@element-plus/icons-vue' 7 | import ElementPlus from "element-plus"; 8 | import "element-plus/dist/index.css"; 9 | import "element-plus/theme-chalk/dark/css-vars.css"; 10 | import "./themes/app.scss"; 11 | import { createApp } from "vue"; 12 | import App from "./App.vue"; 13 | import { router } from "./router"; 14 | import { useDark, useToggle } from '@vueuse/core' 15 | 16 | const isDark = useDark() 17 | useToggle(isDark); 18 | 19 | library.add(fas as IconPack); 20 | library.add(far as IconPack); 21 | 22 | const app = createApp(App) 23 | for (const [key, component] of Object.entries(ElementPlusIconsVue)) { 24 | app.component(key, component) 25 | } 26 | app.component("font-awesome-icon", FontAwesomeIcon) 27 | app.use(router); 28 | app.use(ElementPlus).mount('#app') 29 | -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 3, 3 | "name": "Storage Editor", 4 | "version": "1.0.2", 5 | "action": { 6 | "default_popup": "src/panel/index.html#/popup" 7 | }, 8 | "description": "Editor for Local Storage and Session Storage.", 9 | "icons": { 10 | "128": "public/logo.png", 11 | "16": "public/logo.png", 12 | "48": "public/logo.png" 13 | }, 14 | "author": "Hancel.Lin", 15 | "homepage_url": "https://github.com/imlinhanchao/crx_storage_editor", 16 | "background": { 17 | "service_worker": "src/background/index.ts", 18 | "type": "module" 19 | }, 20 | "content_scripts": [ 21 | { 22 | "all_frames": true, 23 | "js": [ 24 | "src/content-script/index.ts" 25 | ], 26 | "matches": [ 27 | "*://*/*" 28 | ], 29 | "run_at": "document_idle" 30 | } 31 | ], 32 | "host_permissions": [ 33 | "*://*/*" 34 | ], 35 | "devtools_page": "src/devtools/index.html", 36 | "permissions": [ 37 | "activeTab" 38 | ], 39 | "web_accessible_resources": [ 40 | { 41 | "matches": [ 42 | "*://*/*" 43 | ], 44 | "resources": [ 45 | "src/content-script/index.ts", 46 | "public/logo_128.png" 47 | ] 48 | } 49 | ] 50 | } 51 | -------------------------------------------------------------------------------- /src/content-script/index.ts: -------------------------------------------------------------------------------- 1 | function sendStorage(storage: Storage) { 2 | chrome.runtime.sendMessage({ 3 | message: 'update', 4 | type: getType(storage), 5 | data: { ...storage } 6 | }, response => { 7 | }) 8 | return storage; 9 | } 10 | 11 | function getType(storage: Storage) { 12 | return storage == localStorage ? 'local' : 'session' 13 | } 14 | 15 | window.addEventListener('message', ({ data }) => { 16 | if (data.from != 'tab_storage_editor') return; 17 | switch (data.message) { 18 | case 'storage': 19 | sendStorage(data.data == 'local' ? localStorage : sessionStorage); 20 | break; 21 | 22 | default: 23 | break; 24 | } 25 | }) 26 | 27 | chrome.runtime.onMessage.addListener(function (message, sender) { 28 | let request = message; 29 | if (request.from != '__devtools_storage_editor') return; 30 | switch(request.message) { 31 | case 'send': 32 | send(request.data) 33 | break; 34 | case 'listen': 35 | window.postMessage({ 36 | from: '__content_script_storage_editor', 37 | message: 'listen' 38 | }) 39 | break; 40 | case 'setItem': 41 | setItem(request.data); 42 | break; 43 | case 'removeItem': 44 | removeItem(request.data); 45 | break; 46 | } 47 | }); 48 | 49 | function setItem({ type, key, data }: { type: string, key: string, data: string }) { 50 | switch(type) { 51 | case 'local': 52 | localStorage.setItem(key, data); 53 | break; 54 | case 'session': 55 | sessionStorage.setItem(key, data); 56 | break; 57 | } 58 | } 59 | 60 | function removeItem({ type, key }: { type: string, key: string }) { 61 | switch(type) { 62 | case 'local': 63 | localStorage.removeItem(key); 64 | break; 65 | case 'session': 66 | sessionStorage.removeItem(key); 67 | break; 68 | } 69 | } 70 | 71 | function send(type: string) { 72 | switch (type) { 73 | case 'local': 74 | sendStorage(localStorage); 75 | break; 76 | case 'session': 77 | sendStorage(sessionStorage); 78 | break; 79 | default: 80 | break; 81 | } 82 | } 83 | 84 | export { } 85 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | 106 | # Lock file 107 | yarn.lock 108 | package-lock.json 109 | 110 | # crx file 111 | *.crx 112 | *.pem -------------------------------------------------------------------------------- /src/panel/utils/is.ts: -------------------------------------------------------------------------------- 1 | const toString = Object.prototype.toString; 2 | 3 | export const asStr = toString; 4 | 5 | export function is(val: unknown, type: string) { 6 | return toString.call(val) === `[object ${type}]`; 7 | } 8 | 9 | export function isDef(val?: T): val is T { 10 | return typeof val !== 'undefined'; 11 | } 12 | 13 | export function isUnDef(val?: T): val is T { 14 | return !isDef(val); 15 | } 16 | 17 | export function isObject(val: any): val is Record { 18 | return val !== null && is(val, 'Object'); 19 | } 20 | 21 | export function isEmpty(val: T): val is T { 22 | if (isArray(val) || isString(val)) { 23 | return val.length === 0; 24 | } 25 | 26 | if (val instanceof Map || val instanceof Set) { 27 | return val.size === 0; 28 | } 29 | 30 | if (isObject(val)) { 31 | return Object.keys(val).length === 0; 32 | } 33 | 34 | return val == null; 35 | } 36 | 37 | export function isDate(val: unknown): val is Date { 38 | return is(val, 'Date'); 39 | } 40 | 41 | export function isNull(val: unknown): val is null { 42 | return val === null; 43 | } 44 | 45 | export function isNullAndUnDef(val: unknown): val is null | undefined { 46 | return isUnDef(val) && isNull(val); 47 | } 48 | 49 | export function isNullOrUnDef(val: unknown): val is null | undefined { 50 | return isUnDef(val) || isNull(val); 51 | } 52 | 53 | export function isNumber(val: unknown): val is number { 54 | return is(val, 'Number'); 55 | } 56 | 57 | export function isPromise(val: unknown): val is Promise { 58 | return is(val, 'Promise') && isObject(val) && isFunction(val.then) && isFunction(val.catch); 59 | } 60 | 61 | export function isString(val: unknown): val is string { 62 | return is(val, 'String'); 63 | } 64 | 65 | export function isFunction(val: unknown): val is Function { 66 | return typeof val === 'function'; 67 | } 68 | 69 | export function isBoolean(val: unknown): val is boolean { 70 | return is(val, 'Boolean'); 71 | } 72 | 73 | export function isRegExp(val: unknown): val is RegExp { 74 | return is(val, 'RegExp'); 75 | } 76 | 77 | export function isArray(val: any): val is Array { 78 | return val && Array.isArray(val); 79 | } 80 | 81 | export function isWindow(val: any): val is Window { 82 | return typeof window !== 'undefined' && is(val, 'Window'); 83 | } 84 | 85 | export function isElement(val: unknown): val is Element { 86 | return isObject(val) && !!val.tagName; 87 | } 88 | 89 | export function isMap(val: unknown): val is Map { 90 | return is(val, 'Map'); 91 | } 92 | 93 | export const isServer = typeof window === 'undefined'; 94 | 95 | export const isClient = !isServer; 96 | 97 | export function isUrl(path: string): boolean { 98 | const reg = 99 | /(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/; 100 | return reg.test(path); 101 | } 102 | 103 | /** 104 | * @description props简写方法 105 | * @param {*} [def={}] 默认值 106 | * @param {*} [conf={}] 扩展字段 107 | */ 108 | export const defType = (def = {}, conf = {}) => ({ 109 | type: Object(def).constructor, 110 | default: () => def, 111 | ...conf, 112 | }); 113 | -------------------------------------------------------------------------------- /src/devtools/main.ts: -------------------------------------------------------------------------------- 1 | 2 | let panelWindow: { [key:number]: Window} = {}; 3 | let tabListener: { [key:number]: ({ data }: { data: any}) => void } = {} 4 | chrome.devtools.panels.create("Storage Editor", "public/logo_128.png", "src/panel/index.html#/devtools", panel => { 5 | // code invoked on panel creation 6 | panel.onShown.addListener( (extPanelWindow) => { 7 | panelWindow[chrome.devtools.inspectedWindow.tabId] = extPanelWindow; 8 | const tabId = chrome.devtools.inspectedWindow.tabId; 9 | if (tabListener[tabId]) panelWindow[tabId].removeEventListener('message', tabListener[tabId]); 10 | tabListener[tabId] = panelListener(chrome.devtools.inspectedWindow.tabId); 11 | panelWindow[chrome.devtools.inspectedWindow.tabId].addEventListener('message', tabListener[tabId]); 12 | initTabWindow(tabId) 13 | }); 14 | }); 15 | 16 | function initTabWindow(tabId: number) { 17 | chrome.devtools.inspectedWindow.eval(` 18 | try { 19 | if (!window.postStorage) { 20 | window.postStorage = (storage) => { 21 | try { 22 | window.postMessage({ 23 | from: 'tab_storage_editor', 24 | message: 'storage', 25 | data: storage == localStorage ? 'local' : 'session' 26 | }, '*') 27 | } catch (e) { 28 | 29 | } 30 | } 31 | const _setItem = Storage.prototype.setItem; 32 | Storage.prototype.setItem = function(keyName, keyValue) { 33 | postStorage(this) 34 | return _setItem.call(this, keyName, keyValue) 35 | } 36 | window.addEventListener('message', function({ data }) { 37 | if (data && data.from === '__content_script_storage_editor') { 38 | switch(data.message) { 39 | case 'listen': 40 | window.addEventListener('storage', (e) => { 41 | postStorage(e.storageArea) 42 | } 43 | ) 44 | } 45 | } 46 | }); 47 | } 48 | postStorage(localStorage) 49 | postStorage(sessionStorage) 50 | } catch (e) { 51 | 52 | } 53 | `) 54 | 55 | chrome.tabs.sendMessage(tabId, 56 | { from: '__devtools_storage_editor', message: 'listen' }, 57 | function(response) { 58 | }); 59 | } 60 | 61 | chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { 62 | // Messages from content scripts should have sender.tab set 63 | if (sender.tab && sender.tab.active 64 | && chrome.devtools.inspectedWindow.tabId == sender.tab.id 65 | && panelWindow) { 66 | panelWindow[chrome.devtools.inspectedWindow.tabId].postMessage({ ...request, from: '__devtools_storage_editor'}); 67 | sendResponse({ 68 | result: 'success' 69 | }) 70 | } 71 | }); 72 | 73 | function panelListener(tabId: number) { 74 | return async function({ data }: { data: any}) { 75 | chrome.tabs.sendMessage(tabId, 76 | { from: '__devtools_storage_editor', ...data }, 77 | function(response) { 78 | }); 79 | } 80 | } 81 | 82 | chrome.tabs.onUpdated.addListener((tabId, change) => { 83 | if (change.status != 'complete') return; 84 | initTabWindow(tabId); 85 | }) 86 | 87 | // Create a connection to the background service worker 88 | const backgroundPageConnection = chrome.runtime.connect({ 89 | name: "devtools-page" 90 | }); 91 | 92 | // Relay the tab ID to the background service worker 93 | backgroundPageConnection.postMessage({ 94 | name: 'init', 95 | tabId: chrome.devtools.inspectedWindow.tabId 96 | }); 97 | 98 | export {}; -------------------------------------------------------------------------------- /src/panel/components/edit.vue: -------------------------------------------------------------------------------- 1 | 52 | 53 | 100 | 101 | -------------------------------------------------------------------------------- /src/panel/themes/app.scss: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: var(--el-bg-color); 3 | font-family: "Roboto Mono", Menlo, Consolas, monospace; 4 | margin: 0; 5 | padding: 5px 0; 6 | height: calc(100% - 10px); 7 | } 8 | @media (prefers-color-scheme: dark) { 9 | body { 10 | background-color: #0b1015; 11 | } 12 | } 13 | #app, html { 14 | height: 100%; 15 | } 16 | html#popup { 17 | height: auto; 18 | #app { 19 | height: auto; 20 | } 21 | } 22 | img#preload { 23 | width: 128px; 24 | height: 128px; 25 | position: absolute; 26 | top: 0; 27 | left: 0; 28 | bottom: 0; 29 | right: 0; 30 | margin: auto; 31 | } 32 | html.dark, html, :root { 33 | --el-color-primary: #42b983; 34 | .el-dialog { 35 | --el-dialog-padding-primary: 10px; 36 | display: flex; 37 | flex-direction: column; 38 | } 39 | .el-dialog__body { 40 | padding: var(--el-dialog-padding-primary); 41 | height: 100%; 42 | overflow: auto; 43 | } 44 | .el-tree { 45 | --el-tree-node-hover-bg-color: transparent; 46 | } 47 | } 48 | * { 49 | font-family: inherit; 50 | } 51 | .el-input__inner { 52 | color: inherit; 53 | } 54 | .el-tabs__header { 55 | margin: 0; 56 | } 57 | .el-tabs--card>.el-tabs__header { 58 | .el-tabs__item { 59 | background-color: rgba($color: #aaa, $alpha: .2); 60 | border-bottom: 1px solid var(--el-border-color-light); 61 | &.is-active { 62 | background-color: transparent; 63 | border-bottom: 1px solid #FFF; 64 | } 65 | &:first-child { 66 | border-left: none; 67 | } 68 | } 69 | } 70 | .el-tabs { 71 | height: 100%; 72 | display: flex; 73 | flex-direction: column; 74 | } 75 | .el-tabs__nav-scroll { 76 | padding-left: 50px; 77 | } 78 | .el-tabs__content { 79 | overflow: auto; 80 | flex: 1; 81 | padding: 2px; 82 | } 83 | .el-tabs__item { 84 | font-weight: bold; 85 | } 86 | .el-message { 87 | .el-message__content { 88 | white-space: nowrap; 89 | } 90 | } 91 | ::-webkit-scrollbar-track-piece { 92 | background: 0 0; 93 | } 94 | ::-webkit-scrollbar-thumb { 95 | background-color: #b6c6ce; 96 | border: 3px solid transparent; 97 | background-clip: padding-box; 98 | border-radius: 5px; 99 | } 100 | ::-webkit-scrollbar { 101 | width: 10px; 102 | height: 10px; 103 | } 104 | .el-button--primary { 105 | .is-link, 106 | .is-plain, 107 | .is-text { 108 | color: inherit; 109 | margin: 0 2px; 110 | } 111 | } 112 | .el-button.is-link:not(.is-disabled) { 113 | color: #2c3e50; 114 | margin-left: 5px; 115 | &:focus, 116 | &:hover { 117 | color: #2c3e50; 118 | background-color: #e8faf2; 119 | } 120 | } 121 | .value { 122 | color: #bdc6cf; 123 | } 124 | .data-boolean { 125 | display: inline-block; 126 | width: 3em; 127 | } 128 | .data-boolean, .data-number { 129 | color: #03c; 130 | } 131 | .data-string { 132 | color: #c41a16; 133 | } 134 | .data-null { 135 | color: #999; 136 | } 137 | .dark { 138 | --el-bg-color: #0b1015; 139 | ::-webkit-scrollbar-thumb { 140 | background-color: #2c3e50; 141 | } 142 | .el-button.is-link { 143 | color: #fff; 144 | &:focus, 145 | &:hover { 146 | color: #fff; 147 | background: #4e6e8e; 148 | } 149 | } 150 | .data-boolean, .data-number { 151 | color: #997fff; 152 | } 153 | .data-string { 154 | color: #e33e3a; 155 | } 156 | .el-tabs--card>.el-tabs__header { 157 | .el-tabs__item { 158 | background-color: rgba($color: #666, $alpha: .2); 159 | &.is-active { 160 | background-color: transparent; 161 | border-bottom: 1px solid var(--el-bg-color); 162 | } 163 | &:first-child { 164 | border-left: none; 165 | } 166 | } 167 | } 168 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /src/panel/views/DevTool.vue: -------------------------------------------------------------------------------- 1 | 252 | 350 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | specifiers: 4 | '@crxjs/vite-plugin': ^1.0.12 5 | '@element-plus/icons-vue': ^2.0.6 6 | '@fortawesome/fontawesome-svg-core': ^6.3.0 7 | '@fortawesome/free-regular-svg-icons': ^6.4.0 8 | '@fortawesome/free-solid-svg-icons': ^6.3.0 9 | '@fortawesome/vue-fontawesome': ^3.0.3 10 | '@types/chrome': ^0.0.212 11 | '@vitejs/plugin-vue': ^2.3.3 12 | '@vueuse/core': ^9.12.0 13 | element-plus: ^2.2.9 14 | sass: ^1.58.0 15 | typescript: ^4.7.4 16 | vite: ^2.9.14 17 | vue: ^3.2.37 18 | vue-router: ^4.1.6 19 | vue-tsc: ^0.38.5 20 | 21 | dependencies: 22 | '@element-plus/icons-vue': 2.0.10_vue@3.2.47 23 | '@fortawesome/fontawesome-svg-core': 6.3.0 24 | '@fortawesome/free-regular-svg-icons': 6.4.0 25 | '@fortawesome/free-solid-svg-icons': 6.3.0 26 | '@fortawesome/vue-fontawesome': 3.0.3_g53m6cvcbg5vm4kvi53csl4bcu 27 | '@vueuse/core': 9.12.0_vue@3.2.47 28 | element-plus: 2.2.29_vue@3.2.47 29 | vue: 3.2.47 30 | vue-router: 4.1.6_vue@3.2.47 31 | 32 | devDependencies: 33 | '@crxjs/vite-plugin': 1.0.14_vite@2.9.15 34 | '@types/chrome': 0.0.212 35 | '@vitejs/plugin-vue': 2.3.4_vite@2.9.15+vue@3.2.47 36 | sass: 1.58.0 37 | typescript: 4.9.5 38 | vite: 2.9.15_sass@1.58.0 39 | vue-tsc: 0.38.9_typescript@4.9.5 40 | 41 | packages: 42 | 43 | /@ampproject/remapping/2.2.0: 44 | resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} 45 | engines: {node: '>=6.0.0'} 46 | dependencies: 47 | '@jridgewell/gen-mapping': 0.1.1 48 | '@jridgewell/trace-mapping': 0.3.17 49 | dev: true 50 | optional: true 51 | 52 | /@babel/code-frame/7.18.6: 53 | resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} 54 | engines: {node: '>=6.9.0'} 55 | dependencies: 56 | '@babel/highlight': 7.18.6 57 | dev: true 58 | optional: true 59 | 60 | /@babel/compat-data/7.20.14: 61 | resolution: {integrity: sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==} 62 | engines: {node: '>=6.9.0'} 63 | dev: true 64 | optional: true 65 | 66 | /@babel/core/7.20.12: 67 | resolution: {integrity: sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==} 68 | engines: {node: '>=6.9.0'} 69 | dependencies: 70 | '@ampproject/remapping': 2.2.0 71 | '@babel/code-frame': 7.18.6 72 | '@babel/generator': 7.20.14 73 | '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 74 | '@babel/helper-module-transforms': 7.20.11 75 | '@babel/helpers': 7.20.13 76 | '@babel/parser': 7.20.15 77 | '@babel/template': 7.20.7 78 | '@babel/traverse': 7.20.13 79 | '@babel/types': 7.20.7 80 | convert-source-map: 1.9.0 81 | debug: 4.3.4 82 | gensync: 1.0.0-beta.2 83 | json5: 2.2.3 84 | semver: 6.3.0 85 | transitivePeerDependencies: 86 | - supports-color 87 | dev: true 88 | optional: true 89 | 90 | /@babel/generator/7.20.14: 91 | resolution: {integrity: sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==} 92 | engines: {node: '>=6.9.0'} 93 | dependencies: 94 | '@babel/types': 7.20.7 95 | '@jridgewell/gen-mapping': 0.3.2 96 | jsesc: 2.5.2 97 | dev: true 98 | optional: true 99 | 100 | /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.12: 101 | resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} 102 | engines: {node: '>=6.9.0'} 103 | peerDependencies: 104 | '@babel/core': ^7.0.0 105 | dependencies: 106 | '@babel/compat-data': 7.20.14 107 | '@babel/core': 7.20.12 108 | '@babel/helper-validator-option': 7.18.6 109 | browserslist: 4.21.5 110 | lru-cache: 5.1.1 111 | semver: 6.3.0 112 | dev: true 113 | optional: true 114 | 115 | /@babel/helper-environment-visitor/7.18.9: 116 | resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} 117 | engines: {node: '>=6.9.0'} 118 | dev: true 119 | optional: true 120 | 121 | /@babel/helper-function-name/7.19.0: 122 | resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} 123 | engines: {node: '>=6.9.0'} 124 | dependencies: 125 | '@babel/template': 7.20.7 126 | '@babel/types': 7.20.7 127 | dev: true 128 | optional: true 129 | 130 | /@babel/helper-hoist-variables/7.18.6: 131 | resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} 132 | engines: {node: '>=6.9.0'} 133 | dependencies: 134 | '@babel/types': 7.20.7 135 | dev: true 136 | optional: true 137 | 138 | /@babel/helper-module-imports/7.18.6: 139 | resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} 140 | engines: {node: '>=6.9.0'} 141 | dependencies: 142 | '@babel/types': 7.20.7 143 | dev: true 144 | optional: true 145 | 146 | /@babel/helper-module-transforms/7.20.11: 147 | resolution: {integrity: sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==} 148 | engines: {node: '>=6.9.0'} 149 | dependencies: 150 | '@babel/helper-environment-visitor': 7.18.9 151 | '@babel/helper-module-imports': 7.18.6 152 | '@babel/helper-simple-access': 7.20.2 153 | '@babel/helper-split-export-declaration': 7.18.6 154 | '@babel/helper-validator-identifier': 7.19.1 155 | '@babel/template': 7.20.7 156 | '@babel/traverse': 7.20.13 157 | '@babel/types': 7.20.7 158 | transitivePeerDependencies: 159 | - supports-color 160 | dev: true 161 | optional: true 162 | 163 | /@babel/helper-plugin-utils/7.20.2: 164 | resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} 165 | engines: {node: '>=6.9.0'} 166 | dev: true 167 | optional: true 168 | 169 | /@babel/helper-simple-access/7.20.2: 170 | resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} 171 | engines: {node: '>=6.9.0'} 172 | dependencies: 173 | '@babel/types': 7.20.7 174 | dev: true 175 | optional: true 176 | 177 | /@babel/helper-split-export-declaration/7.18.6: 178 | resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} 179 | engines: {node: '>=6.9.0'} 180 | dependencies: 181 | '@babel/types': 7.20.7 182 | dev: true 183 | optional: true 184 | 185 | /@babel/helper-string-parser/7.19.4: 186 | resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} 187 | engines: {node: '>=6.9.0'} 188 | 189 | /@babel/helper-validator-identifier/7.19.1: 190 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} 191 | engines: {node: '>=6.9.0'} 192 | 193 | /@babel/helper-validator-option/7.18.6: 194 | resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} 195 | engines: {node: '>=6.9.0'} 196 | dev: true 197 | optional: true 198 | 199 | /@babel/helpers/7.20.13: 200 | resolution: {integrity: sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==} 201 | engines: {node: '>=6.9.0'} 202 | dependencies: 203 | '@babel/template': 7.20.7 204 | '@babel/traverse': 7.20.13 205 | '@babel/types': 7.20.7 206 | transitivePeerDependencies: 207 | - supports-color 208 | dev: true 209 | optional: true 210 | 211 | /@babel/highlight/7.18.6: 212 | resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} 213 | engines: {node: '>=6.9.0'} 214 | dependencies: 215 | '@babel/helper-validator-identifier': 7.19.1 216 | chalk: 2.4.2 217 | js-tokens: 4.0.0 218 | dev: true 219 | optional: true 220 | 221 | /@babel/parser/7.20.15: 222 | resolution: {integrity: sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==} 223 | engines: {node: '>=6.0.0'} 224 | hasBin: true 225 | dependencies: 226 | '@babel/types': 7.20.7 227 | 228 | /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.20.12: 229 | resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} 230 | engines: {node: '>=6.9.0'} 231 | peerDependencies: 232 | '@babel/core': ^7.0.0-0 233 | dependencies: 234 | '@babel/core': 7.20.12 235 | '@babel/helper-plugin-utils': 7.20.2 236 | dev: true 237 | optional: true 238 | 239 | /@babel/plugin-transform-react-jsx-source/7.19.6_@babel+core@7.20.12: 240 | resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} 241 | engines: {node: '>=6.9.0'} 242 | peerDependencies: 243 | '@babel/core': ^7.0.0-0 244 | dependencies: 245 | '@babel/core': 7.20.12 246 | '@babel/helper-plugin-utils': 7.20.2 247 | dev: true 248 | optional: true 249 | 250 | /@babel/template/7.20.7: 251 | resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} 252 | engines: {node: '>=6.9.0'} 253 | dependencies: 254 | '@babel/code-frame': 7.18.6 255 | '@babel/parser': 7.20.15 256 | '@babel/types': 7.20.7 257 | dev: true 258 | optional: true 259 | 260 | /@babel/traverse/7.20.13: 261 | resolution: {integrity: sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==} 262 | engines: {node: '>=6.9.0'} 263 | dependencies: 264 | '@babel/code-frame': 7.18.6 265 | '@babel/generator': 7.20.14 266 | '@babel/helper-environment-visitor': 7.18.9 267 | '@babel/helper-function-name': 7.19.0 268 | '@babel/helper-hoist-variables': 7.18.6 269 | '@babel/helper-split-export-declaration': 7.18.6 270 | '@babel/parser': 7.20.15 271 | '@babel/types': 7.20.7 272 | debug: 4.3.4 273 | globals: 11.12.0 274 | transitivePeerDependencies: 275 | - supports-color 276 | dev: true 277 | optional: true 278 | 279 | /@babel/types/7.20.7: 280 | resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==} 281 | engines: {node: '>=6.9.0'} 282 | dependencies: 283 | '@babel/helper-string-parser': 7.19.4 284 | '@babel/helper-validator-identifier': 7.19.1 285 | to-fast-properties: 2.0.0 286 | 287 | /@crxjs/vite-plugin/1.0.14_vite@2.9.15: 288 | resolution: {integrity: sha512-emOueVCqFRFmpcfT80Xsm4mfuFw9VSp5GY4eh5qeLDeiP81g0hddlobVQCo0pE2ZvNnWbyhLrXEYAaMAXjNL6A==} 289 | engines: {node: '>=14'} 290 | peerDependencies: 291 | vite: ^2.9.0 292 | dependencies: 293 | '@rollup/pluginutils': 4.2.1 294 | '@webcomponents/custom-elements': 1.5.1 295 | acorn-walk: 8.2.0 296 | cheerio: 1.0.0-rc.12 297 | connect-injector: 0.4.4 298 | debug: 4.3.4 299 | es-module-lexer: 0.10.5 300 | fast-glob: 3.2.12 301 | fs-extra: 10.1.0 302 | jsesc: 3.0.2 303 | magic-string: 0.26.7 304 | picocolors: 1.0.0 305 | react-refresh: 0.13.0 306 | rollup: 2.79.1 307 | vite: 2.9.15_sass@1.58.0 308 | optionalDependencies: 309 | '@vitejs/plugin-react': 3.1.0_vite@2.9.15 310 | transitivePeerDependencies: 311 | - supports-color 312 | dev: true 313 | 314 | /@ctrl/tinycolor/3.5.0: 315 | resolution: {integrity: sha512-tlJpwF40DEQcfR/QF+wNMVyGMaO9FQp6Z1Wahj4Gk3CJQYHwA2xVG7iKDFdW6zuxZY9XWOpGcfNCTsX4McOsOg==} 316 | engines: {node: '>=10'} 317 | dev: false 318 | 319 | /@element-plus/icons-vue/2.0.10_vue@3.2.47: 320 | resolution: {integrity: sha512-ygEZ1mwPjcPo/OulhzLE7mtDrQBWI8vZzEWSNB2W/RNCRjoQGwbaK4N8lV4rid7Ts4qvySU3njMN7YCiSlSaTQ==} 321 | peerDependencies: 322 | vue: ^3.2.0 323 | dependencies: 324 | vue: 3.2.47 325 | dev: false 326 | 327 | /@esbuild/linux-loong64/0.14.54: 328 | resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} 329 | engines: {node: '>=12'} 330 | cpu: [loong64] 331 | os: [linux] 332 | requiresBuild: true 333 | dev: true 334 | optional: true 335 | 336 | /@floating-ui/core/1.2.0: 337 | resolution: {integrity: sha512-GHUXPEhMEmTpnpIfesFA2KAoMJPb1SPQw964tToQwt+BbGXdhqTCWT1rOb0VURGylsxsYxiGMnseJ3IlclVpVA==} 338 | dev: false 339 | 340 | /@floating-ui/dom/1.2.0: 341 | resolution: {integrity: sha512-QXzg57o1cjLz3cGETzKXjI3kx1xyS49DW9l7kV2jw2c8Yftd434t2hllX0sVGn2Q8MtcW/4pNm8bfE1/4n6mng==} 342 | dependencies: 343 | '@floating-ui/core': 1.2.0 344 | dev: false 345 | 346 | /@fortawesome/fontawesome-common-types/6.3.0: 347 | resolution: {integrity: sha512-4BC1NMoacEBzSXRwKjZ/X/gmnbp/HU5Qqat7E8xqorUtBFZS+bwfGH5/wqOC2K6GV0rgEobp3OjGRMa5fK9pFg==} 348 | engines: {node: '>=6'} 349 | requiresBuild: true 350 | dev: false 351 | 352 | /@fortawesome/fontawesome-common-types/6.4.0: 353 | resolution: {integrity: sha512-HNii132xfomg5QVZw0HwXXpN22s7VBHQBv9CeOu9tfJnhsWQNd2lmTNi8CSrnw5B+5YOmzu1UoPAyxaXsJ6RgQ==} 354 | engines: {node: '>=6'} 355 | requiresBuild: true 356 | dev: false 357 | 358 | /@fortawesome/fontawesome-svg-core/6.3.0: 359 | resolution: {integrity: sha512-uz9YifyKlixV6AcKlOX8WNdtF7l6nakGyLYxYaCa823bEBqyj/U2ssqtctO38itNEwXb8/lMzjdoJ+aaJuOdrw==} 360 | engines: {node: '>=6'} 361 | requiresBuild: true 362 | dependencies: 363 | '@fortawesome/fontawesome-common-types': 6.3.0 364 | dev: false 365 | 366 | /@fortawesome/free-regular-svg-icons/6.4.0: 367 | resolution: {integrity: sha512-ZfycI7D0KWPZtf7wtMFnQxs8qjBXArRzczABuMQqecA/nXohquJ5J/RCR77PmY5qGWkxAZDxpnUFVXKwtY/jPw==} 368 | engines: {node: '>=6'} 369 | requiresBuild: true 370 | dependencies: 371 | '@fortawesome/fontawesome-common-types': 6.4.0 372 | dev: false 373 | 374 | /@fortawesome/free-solid-svg-icons/6.3.0: 375 | resolution: {integrity: sha512-x5tMwzF2lTH8pyv8yeZRodItP2IVlzzmBuD1M7BjawWgg9XAvktqJJ91Qjgoaf8qJpHQ8FEU9VxRfOkLhh86QA==} 376 | engines: {node: '>=6'} 377 | requiresBuild: true 378 | dependencies: 379 | '@fortawesome/fontawesome-common-types': 6.3.0 380 | dev: false 381 | 382 | /@fortawesome/vue-fontawesome/3.0.3_g53m6cvcbg5vm4kvi53csl4bcu: 383 | resolution: {integrity: sha512-KCPHi9QemVXGMrfuwf3nNnNo129resAIQWut9QTAMXmXqL2ErABC6ohd2yY5Ipq0CLWNbKHk8TMdTXL/Zf3ZhA==} 384 | peerDependencies: 385 | '@fortawesome/fontawesome-svg-core': ~1 || ~6 386 | vue: '>= 3.0.0 < 4' 387 | dependencies: 388 | '@fortawesome/fontawesome-svg-core': 6.3.0 389 | vue: 3.2.47 390 | dev: false 391 | 392 | /@jridgewell/gen-mapping/0.1.1: 393 | resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} 394 | engines: {node: '>=6.0.0'} 395 | dependencies: 396 | '@jridgewell/set-array': 1.1.2 397 | '@jridgewell/sourcemap-codec': 1.4.14 398 | dev: true 399 | optional: true 400 | 401 | /@jridgewell/gen-mapping/0.3.2: 402 | resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} 403 | engines: {node: '>=6.0.0'} 404 | dependencies: 405 | '@jridgewell/set-array': 1.1.2 406 | '@jridgewell/sourcemap-codec': 1.4.14 407 | '@jridgewell/trace-mapping': 0.3.17 408 | dev: true 409 | optional: true 410 | 411 | /@jridgewell/resolve-uri/3.1.0: 412 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 413 | engines: {node: '>=6.0.0'} 414 | dev: true 415 | optional: true 416 | 417 | /@jridgewell/set-array/1.1.2: 418 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 419 | engines: {node: '>=6.0.0'} 420 | dev: true 421 | optional: true 422 | 423 | /@jridgewell/sourcemap-codec/1.4.14: 424 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 425 | dev: true 426 | optional: true 427 | 428 | /@jridgewell/trace-mapping/0.3.17: 429 | resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} 430 | dependencies: 431 | '@jridgewell/resolve-uri': 3.1.0 432 | '@jridgewell/sourcemap-codec': 1.4.14 433 | dev: true 434 | optional: true 435 | 436 | /@nodelib/fs.scandir/2.1.5: 437 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 438 | engines: {node: '>= 8'} 439 | dependencies: 440 | '@nodelib/fs.stat': 2.0.5 441 | run-parallel: 1.2.0 442 | dev: true 443 | 444 | /@nodelib/fs.stat/2.0.5: 445 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 446 | engines: {node: '>= 8'} 447 | dev: true 448 | 449 | /@nodelib/fs.walk/1.2.8: 450 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 451 | engines: {node: '>= 8'} 452 | dependencies: 453 | '@nodelib/fs.scandir': 2.1.5 454 | fastq: 1.15.0 455 | dev: true 456 | 457 | /@rollup/pluginutils/4.2.1: 458 | resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} 459 | engines: {node: '>= 8.0.0'} 460 | dependencies: 461 | estree-walker: 2.0.2 462 | picomatch: 2.3.1 463 | dev: true 464 | 465 | /@sxzz/popperjs-es/2.11.7: 466 | resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==} 467 | dev: false 468 | 469 | /@types/chrome/0.0.212: 470 | resolution: {integrity: sha512-O9blKfj6mQyBvkexEa71xcpRfkjAu8izQD3qGYfdwffk+mJhF7eogz628bZr5dETT6Eu7vU0stUGYG/+EQWj9g==} 471 | dependencies: 472 | '@types/filesystem': 0.0.32 473 | '@types/har-format': 1.2.10 474 | dev: true 475 | 476 | /@types/filesystem/0.0.32: 477 | resolution: {integrity: sha512-Yuf4jR5YYMR2DVgwuCiP11s0xuVRyPKmz8vo6HBY3CGdeMj8af93CFZX+T82+VD1+UqHOxTq31lO7MI7lepBtQ==} 478 | dependencies: 479 | '@types/filewriter': 0.0.29 480 | dev: true 481 | 482 | /@types/filewriter/0.0.29: 483 | resolution: {integrity: sha512-BsPXH/irW0ht0Ji6iw/jJaK8Lj3FJemon2gvEqHKpCdDCeemHa+rI3WBGq5z7cDMZgoLjY40oninGxqk+8NzNQ==} 484 | dev: true 485 | 486 | /@types/har-format/1.2.10: 487 | resolution: {integrity: sha512-o0J30wqycjF5miWDKYKKzzOU1ZTLuA42HZ4HE7/zqTOc/jTLdQ5NhYWvsRQo45Nfi1KHoRdNhteSI4BAxTF1Pg==} 488 | dev: true 489 | 490 | /@types/lodash-es/4.17.6: 491 | resolution: {integrity: sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==} 492 | dependencies: 493 | '@types/lodash': 4.14.191 494 | dev: false 495 | 496 | /@types/lodash/4.14.191: 497 | resolution: {integrity: sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==} 498 | dev: false 499 | 500 | /@types/web-bluetooth/0.0.16: 501 | resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==} 502 | dev: false 503 | 504 | /@vitejs/plugin-react/3.1.0_vite@2.9.15: 505 | resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} 506 | engines: {node: ^14.18.0 || >=16.0.0} 507 | requiresBuild: true 508 | peerDependencies: 509 | vite: ^4.1.0-beta.0 510 | dependencies: 511 | '@babel/core': 7.20.12 512 | '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.20.12 513 | '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 514 | magic-string: 0.27.0 515 | react-refresh: 0.14.0 516 | vite: 2.9.15_sass@1.58.0 517 | transitivePeerDependencies: 518 | - supports-color 519 | dev: true 520 | optional: true 521 | 522 | /@vitejs/plugin-vue/2.3.4_vite@2.9.15+vue@3.2.47: 523 | resolution: {integrity: sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg==} 524 | engines: {node: '>=12.0.0'} 525 | peerDependencies: 526 | vite: ^2.5.10 527 | vue: ^3.2.25 528 | dependencies: 529 | vite: 2.9.15_sass@1.58.0 530 | vue: 3.2.47 531 | dev: true 532 | 533 | /@volar/code-gen/0.38.9: 534 | resolution: {integrity: sha512-n6LClucfA+37rQeskvh9vDoZV1VvCVNy++MAPKj2dT4FT+Fbmty/SDQqnsEBtdEe6E3OQctFvA/IcKsx3Mns0A==} 535 | dependencies: 536 | '@volar/source-map': 0.38.9 537 | dev: true 538 | 539 | /@volar/source-map/0.38.9: 540 | resolution: {integrity: sha512-ba0UFoHDYry+vwKdgkWJ6xlQT+8TFtZg1zj9tSjj4PykW1JZDuM0xplMotLun4h3YOoYfY9K1huY5gvxmrNLIw==} 541 | dev: true 542 | 543 | /@volar/vue-code-gen/0.38.9: 544 | resolution: {integrity: sha512-tzj7AoarFBKl7e41MR006ncrEmNPHALuk8aG4WdDIaG387X5//5KhWC5Ff3ZfB2InGSeNT+CVUd74M0gS20rjA==} 545 | dependencies: 546 | '@volar/code-gen': 0.38.9 547 | '@volar/source-map': 0.38.9 548 | '@vue/compiler-core': 3.2.47 549 | '@vue/compiler-dom': 3.2.47 550 | '@vue/shared': 3.2.47 551 | dev: true 552 | 553 | /@volar/vue-typescript/0.38.9: 554 | resolution: {integrity: sha512-iJMQGU91ADi98u8V1vXd2UBmELDAaeSP0ZJaFjwosClQdKlJQYc6MlxxKfXBZisHqfbhdtrGRyaryulnYtliZw==} 555 | dependencies: 556 | '@volar/code-gen': 0.38.9 557 | '@volar/source-map': 0.38.9 558 | '@volar/vue-code-gen': 0.38.9 559 | '@vue/compiler-sfc': 3.2.47 560 | '@vue/reactivity': 3.2.47 561 | dev: true 562 | 563 | /@vue/compiler-core/3.2.47: 564 | resolution: {integrity: sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==} 565 | dependencies: 566 | '@babel/parser': 7.20.15 567 | '@vue/shared': 3.2.47 568 | estree-walker: 2.0.2 569 | source-map: 0.6.1 570 | 571 | /@vue/compiler-dom/3.2.47: 572 | resolution: {integrity: sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==} 573 | dependencies: 574 | '@vue/compiler-core': 3.2.47 575 | '@vue/shared': 3.2.47 576 | 577 | /@vue/compiler-sfc/3.2.47: 578 | resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==} 579 | dependencies: 580 | '@babel/parser': 7.20.15 581 | '@vue/compiler-core': 3.2.47 582 | '@vue/compiler-dom': 3.2.47 583 | '@vue/compiler-ssr': 3.2.47 584 | '@vue/reactivity-transform': 3.2.47 585 | '@vue/shared': 3.2.47 586 | estree-walker: 2.0.2 587 | magic-string: 0.25.9 588 | postcss: 8.4.21 589 | source-map: 0.6.1 590 | 591 | /@vue/compiler-ssr/3.2.47: 592 | resolution: {integrity: sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==} 593 | dependencies: 594 | '@vue/compiler-dom': 3.2.47 595 | '@vue/shared': 3.2.47 596 | 597 | /@vue/devtools-api/6.5.0: 598 | resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==} 599 | dev: false 600 | 601 | /@vue/reactivity-transform/3.2.47: 602 | resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==} 603 | dependencies: 604 | '@babel/parser': 7.20.15 605 | '@vue/compiler-core': 3.2.47 606 | '@vue/shared': 3.2.47 607 | estree-walker: 2.0.2 608 | magic-string: 0.25.9 609 | 610 | /@vue/reactivity/3.2.47: 611 | resolution: {integrity: sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==} 612 | dependencies: 613 | '@vue/shared': 3.2.47 614 | 615 | /@vue/runtime-core/3.2.47: 616 | resolution: {integrity: sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==} 617 | dependencies: 618 | '@vue/reactivity': 3.2.47 619 | '@vue/shared': 3.2.47 620 | 621 | /@vue/runtime-dom/3.2.47: 622 | resolution: {integrity: sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==} 623 | dependencies: 624 | '@vue/runtime-core': 3.2.47 625 | '@vue/shared': 3.2.47 626 | csstype: 2.6.21 627 | 628 | /@vue/server-renderer/3.2.47_vue@3.2.47: 629 | resolution: {integrity: sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==} 630 | peerDependencies: 631 | vue: 3.2.47 632 | dependencies: 633 | '@vue/compiler-ssr': 3.2.47 634 | '@vue/shared': 3.2.47 635 | vue: 3.2.47 636 | 637 | /@vue/shared/3.2.47: 638 | resolution: {integrity: sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==} 639 | 640 | /@vueuse/core/9.12.0_vue@3.2.47: 641 | resolution: {integrity: sha512-h/Di8Bvf6xRcvS/PvUVheiMYYz3U0tH3X25YxONSaAUBa841ayMwxkuzx/DGUMCW/wHWzD8tRy2zYmOC36r4sg==} 642 | dependencies: 643 | '@types/web-bluetooth': 0.0.16 644 | '@vueuse/metadata': 9.12.0 645 | '@vueuse/shared': 9.12.0_vue@3.2.47 646 | vue-demi: 0.13.11_vue@3.2.47 647 | transitivePeerDependencies: 648 | - '@vue/composition-api' 649 | - vue 650 | dev: false 651 | 652 | /@vueuse/metadata/9.12.0: 653 | resolution: {integrity: sha512-9oJ9MM9lFLlmvxXUqsR1wLt1uF7EVbP5iYaHJYqk+G2PbMjY6EXvZeTjbdO89HgoF5cI6z49o2zT/jD9SVoNpQ==} 654 | dev: false 655 | 656 | /@vueuse/shared/9.12.0_vue@3.2.47: 657 | resolution: {integrity: sha512-TWuJLACQ0BVithVTRbex4Wf1a1VaRuSpVeyEd4vMUWl54PzlE0ciFUshKCXnlLuD0lxIaLK4Ypj3NXYzZh4+SQ==} 658 | dependencies: 659 | vue-demi: 0.13.11_vue@3.2.47 660 | transitivePeerDependencies: 661 | - '@vue/composition-api' 662 | - vue 663 | dev: false 664 | 665 | /@webcomponents/custom-elements/1.5.1: 666 | resolution: {integrity: sha512-6T/XT3S1UHDlRWFSxRXdeSoYWczEl78sygNPS7jDyHVrfZcF/pUtWGYgxF4uviH59iPVw1eOWbhubm8CqO0MpA==} 667 | dev: true 668 | 669 | /acorn-walk/8.2.0: 670 | resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} 671 | engines: {node: '>=0.4.0'} 672 | dev: true 673 | 674 | /ansi-styles/3.2.1: 675 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 676 | engines: {node: '>=4'} 677 | dependencies: 678 | color-convert: 1.9.3 679 | dev: true 680 | optional: true 681 | 682 | /anymatch/3.1.3: 683 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 684 | engines: {node: '>= 8'} 685 | dependencies: 686 | normalize-path: 3.0.0 687 | picomatch: 2.3.1 688 | dev: true 689 | 690 | /async-validator/4.2.5: 691 | resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} 692 | dev: false 693 | 694 | /binary-extensions/2.2.0: 695 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 696 | engines: {node: '>=8'} 697 | dev: true 698 | 699 | /boolbase/1.0.0: 700 | resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} 701 | dev: true 702 | 703 | /braces/3.0.2: 704 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 705 | engines: {node: '>=8'} 706 | dependencies: 707 | fill-range: 7.0.1 708 | dev: true 709 | 710 | /browserslist/4.21.5: 711 | resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} 712 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 713 | hasBin: true 714 | dependencies: 715 | caniuse-lite: 1.0.30001450 716 | electron-to-chromium: 1.4.286 717 | node-releases: 2.0.10 718 | update-browserslist-db: 1.0.10_browserslist@4.21.5 719 | dev: true 720 | optional: true 721 | 722 | /caniuse-lite/1.0.30001450: 723 | resolution: {integrity: sha512-qMBmvmQmFXaSxexkjjfMvD5rnDL0+m+dUMZKoDYsGG8iZN29RuYh9eRoMvKsT6uMAWlyUUGDEQGJJYjzCIO9ew==} 724 | dev: true 725 | optional: true 726 | 727 | /chalk/2.4.2: 728 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 729 | engines: {node: '>=4'} 730 | dependencies: 731 | ansi-styles: 3.2.1 732 | escape-string-regexp: 1.0.5 733 | supports-color: 5.5.0 734 | dev: true 735 | optional: true 736 | 737 | /cheerio-select/2.1.0: 738 | resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} 739 | dependencies: 740 | boolbase: 1.0.0 741 | css-select: 5.1.0 742 | css-what: 6.1.0 743 | domelementtype: 2.3.0 744 | domhandler: 5.0.3 745 | domutils: 3.0.1 746 | dev: true 747 | 748 | /cheerio/1.0.0-rc.12: 749 | resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} 750 | engines: {node: '>= 6'} 751 | dependencies: 752 | cheerio-select: 2.1.0 753 | dom-serializer: 2.0.0 754 | domhandler: 5.0.3 755 | domutils: 3.0.1 756 | htmlparser2: 8.0.1 757 | parse5: 7.1.2 758 | parse5-htmlparser2-tree-adapter: 7.0.0 759 | dev: true 760 | 761 | /chokidar/3.5.3: 762 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 763 | engines: {node: '>= 8.10.0'} 764 | dependencies: 765 | anymatch: 3.1.3 766 | braces: 3.0.2 767 | glob-parent: 5.1.2 768 | is-binary-path: 2.1.0 769 | is-glob: 4.0.3 770 | normalize-path: 3.0.0 771 | readdirp: 3.6.0 772 | optionalDependencies: 773 | fsevents: 2.3.2 774 | dev: true 775 | 776 | /color-convert/1.9.3: 777 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 778 | dependencies: 779 | color-name: 1.1.3 780 | dev: true 781 | optional: true 782 | 783 | /color-name/1.1.3: 784 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 785 | dev: true 786 | optional: true 787 | 788 | /connect-injector/0.4.4: 789 | resolution: {integrity: sha512-hdBG8nXop42y2gWCqOV8y1O3uVk4cIU+SoxLCPyCUKRImyPiScoNiSulpHjoktRU1BdI0UzoUdxUa87thrcmHw==} 790 | engines: {node: '>= 0.8.0'} 791 | dependencies: 792 | debug: 2.6.9 793 | q: 1.5.1 794 | stream-buffers: 0.2.6 795 | uberproto: 1.2.0 796 | transitivePeerDependencies: 797 | - supports-color 798 | dev: true 799 | 800 | /convert-source-map/1.9.0: 801 | resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} 802 | dev: true 803 | optional: true 804 | 805 | /css-select/5.1.0: 806 | resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} 807 | dependencies: 808 | boolbase: 1.0.0 809 | css-what: 6.1.0 810 | domhandler: 5.0.3 811 | domutils: 3.0.1 812 | nth-check: 2.1.1 813 | dev: true 814 | 815 | /css-what/6.1.0: 816 | resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} 817 | engines: {node: '>= 6'} 818 | dev: true 819 | 820 | /csstype/2.6.21: 821 | resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} 822 | 823 | /dayjs/1.11.7: 824 | resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} 825 | dev: false 826 | 827 | /debug/2.6.9: 828 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 829 | peerDependencies: 830 | supports-color: '*' 831 | peerDependenciesMeta: 832 | supports-color: 833 | optional: true 834 | dependencies: 835 | ms: 2.0.0 836 | dev: true 837 | 838 | /debug/4.3.4: 839 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 840 | engines: {node: '>=6.0'} 841 | peerDependencies: 842 | supports-color: '*' 843 | peerDependenciesMeta: 844 | supports-color: 845 | optional: true 846 | dependencies: 847 | ms: 2.1.2 848 | dev: true 849 | 850 | /dom-serializer/2.0.0: 851 | resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} 852 | dependencies: 853 | domelementtype: 2.3.0 854 | domhandler: 5.0.3 855 | entities: 4.4.0 856 | dev: true 857 | 858 | /domelementtype/2.3.0: 859 | resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} 860 | dev: true 861 | 862 | /domhandler/5.0.3: 863 | resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} 864 | engines: {node: '>= 4'} 865 | dependencies: 866 | domelementtype: 2.3.0 867 | dev: true 868 | 869 | /domutils/3.0.1: 870 | resolution: {integrity: sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==} 871 | dependencies: 872 | dom-serializer: 2.0.0 873 | domelementtype: 2.3.0 874 | domhandler: 5.0.3 875 | dev: true 876 | 877 | /electron-to-chromium/1.4.286: 878 | resolution: {integrity: sha512-Vp3CVhmYpgf4iXNKAucoQUDcCrBQX3XLBtwgFqP9BUXuucgvAV9zWp1kYU7LL9j4++s9O+12cb3wMtN4SJy6UQ==} 879 | dev: true 880 | optional: true 881 | 882 | /element-plus/2.2.29_vue@3.2.47: 883 | resolution: {integrity: sha512-g4dcrURrKkR5uUX8n5RVnnqGnimoki9HfqS4yHHG6XwCHBkZGozdq4x+478BzeWUe31h++BO+7dakSx4VnM8RQ==} 884 | peerDependencies: 885 | vue: ^3.2.0 886 | dependencies: 887 | '@ctrl/tinycolor': 3.5.0 888 | '@element-plus/icons-vue': 2.0.10_vue@3.2.47 889 | '@floating-ui/dom': 1.2.0 890 | '@popperjs/core': /@sxzz/popperjs-es/2.11.7 891 | '@types/lodash': 4.14.191 892 | '@types/lodash-es': 4.17.6 893 | '@vueuse/core': 9.12.0_vue@3.2.47 894 | async-validator: 4.2.5 895 | dayjs: 1.11.7 896 | escape-html: 1.0.3 897 | lodash: 4.17.21 898 | lodash-es: 4.17.21 899 | lodash-unified: 1.0.3_3ib2ivapxullxkx3xftsimdk7u 900 | memoize-one: 6.0.0 901 | normalize-wheel-es: 1.2.0 902 | vue: 3.2.47 903 | transitivePeerDependencies: 904 | - '@vue/composition-api' 905 | dev: false 906 | 907 | /entities/4.4.0: 908 | resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} 909 | engines: {node: '>=0.12'} 910 | dev: true 911 | 912 | /es-module-lexer/0.10.5: 913 | resolution: {integrity: sha512-+7IwY/kiGAacQfY+YBhKMvEmyAJnw5grTUgjG85Pe7vcUI/6b7pZjZG8nQ7+48YhzEAEqrEgD2dCz/JIK+AYvw==} 914 | dev: true 915 | 916 | /esbuild-android-64/0.14.54: 917 | resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==} 918 | engines: {node: '>=12'} 919 | cpu: [x64] 920 | os: [android] 921 | requiresBuild: true 922 | dev: true 923 | optional: true 924 | 925 | /esbuild-android-arm64/0.14.54: 926 | resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==} 927 | engines: {node: '>=12'} 928 | cpu: [arm64] 929 | os: [android] 930 | requiresBuild: true 931 | dev: true 932 | optional: true 933 | 934 | /esbuild-darwin-64/0.14.54: 935 | resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==} 936 | engines: {node: '>=12'} 937 | cpu: [x64] 938 | os: [darwin] 939 | requiresBuild: true 940 | dev: true 941 | optional: true 942 | 943 | /esbuild-darwin-arm64/0.14.54: 944 | resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==} 945 | engines: {node: '>=12'} 946 | cpu: [arm64] 947 | os: [darwin] 948 | requiresBuild: true 949 | dev: true 950 | optional: true 951 | 952 | /esbuild-freebsd-64/0.14.54: 953 | resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==} 954 | engines: {node: '>=12'} 955 | cpu: [x64] 956 | os: [freebsd] 957 | requiresBuild: true 958 | dev: true 959 | optional: true 960 | 961 | /esbuild-freebsd-arm64/0.14.54: 962 | resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==} 963 | engines: {node: '>=12'} 964 | cpu: [arm64] 965 | os: [freebsd] 966 | requiresBuild: true 967 | dev: true 968 | optional: true 969 | 970 | /esbuild-linux-32/0.14.54: 971 | resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==} 972 | engines: {node: '>=12'} 973 | cpu: [ia32] 974 | os: [linux] 975 | requiresBuild: true 976 | dev: true 977 | optional: true 978 | 979 | /esbuild-linux-64/0.14.54: 980 | resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==} 981 | engines: {node: '>=12'} 982 | cpu: [x64] 983 | os: [linux] 984 | requiresBuild: true 985 | dev: true 986 | optional: true 987 | 988 | /esbuild-linux-arm/0.14.54: 989 | resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==} 990 | engines: {node: '>=12'} 991 | cpu: [arm] 992 | os: [linux] 993 | requiresBuild: true 994 | dev: true 995 | optional: true 996 | 997 | /esbuild-linux-arm64/0.14.54: 998 | resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==} 999 | engines: {node: '>=12'} 1000 | cpu: [arm64] 1001 | os: [linux] 1002 | requiresBuild: true 1003 | dev: true 1004 | optional: true 1005 | 1006 | /esbuild-linux-mips64le/0.14.54: 1007 | resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==} 1008 | engines: {node: '>=12'} 1009 | cpu: [mips64el] 1010 | os: [linux] 1011 | requiresBuild: true 1012 | dev: true 1013 | optional: true 1014 | 1015 | /esbuild-linux-ppc64le/0.14.54: 1016 | resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==} 1017 | engines: {node: '>=12'} 1018 | cpu: [ppc64] 1019 | os: [linux] 1020 | requiresBuild: true 1021 | dev: true 1022 | optional: true 1023 | 1024 | /esbuild-linux-riscv64/0.14.54: 1025 | resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==} 1026 | engines: {node: '>=12'} 1027 | cpu: [riscv64] 1028 | os: [linux] 1029 | requiresBuild: true 1030 | dev: true 1031 | optional: true 1032 | 1033 | /esbuild-linux-s390x/0.14.54: 1034 | resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==} 1035 | engines: {node: '>=12'} 1036 | cpu: [s390x] 1037 | os: [linux] 1038 | requiresBuild: true 1039 | dev: true 1040 | optional: true 1041 | 1042 | /esbuild-netbsd-64/0.14.54: 1043 | resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==} 1044 | engines: {node: '>=12'} 1045 | cpu: [x64] 1046 | os: [netbsd] 1047 | requiresBuild: true 1048 | dev: true 1049 | optional: true 1050 | 1051 | /esbuild-openbsd-64/0.14.54: 1052 | resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==} 1053 | engines: {node: '>=12'} 1054 | cpu: [x64] 1055 | os: [openbsd] 1056 | requiresBuild: true 1057 | dev: true 1058 | optional: true 1059 | 1060 | /esbuild-sunos-64/0.14.54: 1061 | resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==} 1062 | engines: {node: '>=12'} 1063 | cpu: [x64] 1064 | os: [sunos] 1065 | requiresBuild: true 1066 | dev: true 1067 | optional: true 1068 | 1069 | /esbuild-windows-32/0.14.54: 1070 | resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==} 1071 | engines: {node: '>=12'} 1072 | cpu: [ia32] 1073 | os: [win32] 1074 | requiresBuild: true 1075 | dev: true 1076 | optional: true 1077 | 1078 | /esbuild-windows-64/0.14.54: 1079 | resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==} 1080 | engines: {node: '>=12'} 1081 | cpu: [x64] 1082 | os: [win32] 1083 | requiresBuild: true 1084 | dev: true 1085 | optional: true 1086 | 1087 | /esbuild-windows-arm64/0.14.54: 1088 | resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==} 1089 | engines: {node: '>=12'} 1090 | cpu: [arm64] 1091 | os: [win32] 1092 | requiresBuild: true 1093 | dev: true 1094 | optional: true 1095 | 1096 | /esbuild/0.14.54: 1097 | resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==} 1098 | engines: {node: '>=12'} 1099 | hasBin: true 1100 | requiresBuild: true 1101 | optionalDependencies: 1102 | '@esbuild/linux-loong64': 0.14.54 1103 | esbuild-android-64: 0.14.54 1104 | esbuild-android-arm64: 0.14.54 1105 | esbuild-darwin-64: 0.14.54 1106 | esbuild-darwin-arm64: 0.14.54 1107 | esbuild-freebsd-64: 0.14.54 1108 | esbuild-freebsd-arm64: 0.14.54 1109 | esbuild-linux-32: 0.14.54 1110 | esbuild-linux-64: 0.14.54 1111 | esbuild-linux-arm: 0.14.54 1112 | esbuild-linux-arm64: 0.14.54 1113 | esbuild-linux-mips64le: 0.14.54 1114 | esbuild-linux-ppc64le: 0.14.54 1115 | esbuild-linux-riscv64: 0.14.54 1116 | esbuild-linux-s390x: 0.14.54 1117 | esbuild-netbsd-64: 0.14.54 1118 | esbuild-openbsd-64: 0.14.54 1119 | esbuild-sunos-64: 0.14.54 1120 | esbuild-windows-32: 0.14.54 1121 | esbuild-windows-64: 0.14.54 1122 | esbuild-windows-arm64: 0.14.54 1123 | dev: true 1124 | 1125 | /escalade/3.1.1: 1126 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1127 | engines: {node: '>=6'} 1128 | dev: true 1129 | optional: true 1130 | 1131 | /escape-html/1.0.3: 1132 | resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 1133 | dev: false 1134 | 1135 | /escape-string-regexp/1.0.5: 1136 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1137 | engines: {node: '>=0.8.0'} 1138 | dev: true 1139 | optional: true 1140 | 1141 | /estree-walker/2.0.2: 1142 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1143 | 1144 | /fast-glob/3.2.12: 1145 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 1146 | engines: {node: '>=8.6.0'} 1147 | dependencies: 1148 | '@nodelib/fs.stat': 2.0.5 1149 | '@nodelib/fs.walk': 1.2.8 1150 | glob-parent: 5.1.2 1151 | merge2: 1.4.1 1152 | micromatch: 4.0.5 1153 | dev: true 1154 | 1155 | /fastq/1.15.0: 1156 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 1157 | dependencies: 1158 | reusify: 1.0.4 1159 | dev: true 1160 | 1161 | /fill-range/7.0.1: 1162 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1163 | engines: {node: '>=8'} 1164 | dependencies: 1165 | to-regex-range: 5.0.1 1166 | dev: true 1167 | 1168 | /fs-extra/10.1.0: 1169 | resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} 1170 | engines: {node: '>=12'} 1171 | dependencies: 1172 | graceful-fs: 4.2.10 1173 | jsonfile: 6.1.0 1174 | universalify: 2.0.0 1175 | dev: true 1176 | 1177 | /fsevents/2.3.2: 1178 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1179 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1180 | os: [darwin] 1181 | requiresBuild: true 1182 | dev: true 1183 | optional: true 1184 | 1185 | /function-bind/1.1.1: 1186 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1187 | dev: true 1188 | 1189 | /gensync/1.0.0-beta.2: 1190 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1191 | engines: {node: '>=6.9.0'} 1192 | dev: true 1193 | optional: true 1194 | 1195 | /glob-parent/5.1.2: 1196 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1197 | engines: {node: '>= 6'} 1198 | dependencies: 1199 | is-glob: 4.0.3 1200 | dev: true 1201 | 1202 | /globals/11.12.0: 1203 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1204 | engines: {node: '>=4'} 1205 | dev: true 1206 | optional: true 1207 | 1208 | /graceful-fs/4.2.10: 1209 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} 1210 | dev: true 1211 | 1212 | /has-flag/3.0.0: 1213 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1214 | engines: {node: '>=4'} 1215 | dev: true 1216 | optional: true 1217 | 1218 | /has/1.0.3: 1219 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1220 | engines: {node: '>= 0.4.0'} 1221 | dependencies: 1222 | function-bind: 1.1.1 1223 | dev: true 1224 | 1225 | /htmlparser2/8.0.1: 1226 | resolution: {integrity: sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==} 1227 | dependencies: 1228 | domelementtype: 2.3.0 1229 | domhandler: 5.0.3 1230 | domutils: 3.0.1 1231 | entities: 4.4.0 1232 | dev: true 1233 | 1234 | /immutable/4.2.4: 1235 | resolution: {integrity: sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==} 1236 | dev: true 1237 | 1238 | /is-binary-path/2.1.0: 1239 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1240 | engines: {node: '>=8'} 1241 | dependencies: 1242 | binary-extensions: 2.2.0 1243 | dev: true 1244 | 1245 | /is-core-module/2.11.0: 1246 | resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} 1247 | dependencies: 1248 | has: 1.0.3 1249 | dev: true 1250 | 1251 | /is-extglob/2.1.1: 1252 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1253 | engines: {node: '>=0.10.0'} 1254 | dev: true 1255 | 1256 | /is-glob/4.0.3: 1257 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1258 | engines: {node: '>=0.10.0'} 1259 | dependencies: 1260 | is-extglob: 2.1.1 1261 | dev: true 1262 | 1263 | /is-number/7.0.0: 1264 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1265 | engines: {node: '>=0.12.0'} 1266 | dev: true 1267 | 1268 | /js-tokens/4.0.0: 1269 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1270 | dev: true 1271 | optional: true 1272 | 1273 | /jsesc/2.5.2: 1274 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 1275 | engines: {node: '>=4'} 1276 | hasBin: true 1277 | dev: true 1278 | optional: true 1279 | 1280 | /jsesc/3.0.2: 1281 | resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} 1282 | engines: {node: '>=6'} 1283 | hasBin: true 1284 | dev: true 1285 | 1286 | /json5/2.2.3: 1287 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1288 | engines: {node: '>=6'} 1289 | hasBin: true 1290 | dev: true 1291 | optional: true 1292 | 1293 | /jsonfile/6.1.0: 1294 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} 1295 | dependencies: 1296 | universalify: 2.0.0 1297 | optionalDependencies: 1298 | graceful-fs: 4.2.10 1299 | dev: true 1300 | 1301 | /lodash-es/4.17.21: 1302 | resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} 1303 | dev: false 1304 | 1305 | /lodash-unified/1.0.3_3ib2ivapxullxkx3xftsimdk7u: 1306 | resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==} 1307 | peerDependencies: 1308 | '@types/lodash-es': '*' 1309 | lodash: '*' 1310 | lodash-es: '*' 1311 | dependencies: 1312 | '@types/lodash-es': 4.17.6 1313 | lodash: 4.17.21 1314 | lodash-es: 4.17.21 1315 | dev: false 1316 | 1317 | /lodash/4.17.21: 1318 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1319 | dev: false 1320 | 1321 | /lru-cache/5.1.1: 1322 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1323 | dependencies: 1324 | yallist: 3.1.1 1325 | dev: true 1326 | optional: true 1327 | 1328 | /magic-string/0.25.9: 1329 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} 1330 | dependencies: 1331 | sourcemap-codec: 1.4.8 1332 | 1333 | /magic-string/0.26.7: 1334 | resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} 1335 | engines: {node: '>=12'} 1336 | dependencies: 1337 | sourcemap-codec: 1.4.8 1338 | dev: true 1339 | 1340 | /magic-string/0.27.0: 1341 | resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} 1342 | engines: {node: '>=12'} 1343 | dependencies: 1344 | '@jridgewell/sourcemap-codec': 1.4.14 1345 | dev: true 1346 | optional: true 1347 | 1348 | /memoize-one/6.0.0: 1349 | resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} 1350 | dev: false 1351 | 1352 | /merge2/1.4.1: 1353 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1354 | engines: {node: '>= 8'} 1355 | dev: true 1356 | 1357 | /micromatch/4.0.5: 1358 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1359 | engines: {node: '>=8.6'} 1360 | dependencies: 1361 | braces: 3.0.2 1362 | picomatch: 2.3.1 1363 | dev: true 1364 | 1365 | /ms/2.0.0: 1366 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 1367 | dev: true 1368 | 1369 | /ms/2.1.2: 1370 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1371 | dev: true 1372 | 1373 | /nanoid/3.3.4: 1374 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 1375 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1376 | hasBin: true 1377 | 1378 | /node-releases/2.0.10: 1379 | resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} 1380 | dev: true 1381 | optional: true 1382 | 1383 | /normalize-path/3.0.0: 1384 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1385 | engines: {node: '>=0.10.0'} 1386 | dev: true 1387 | 1388 | /normalize-wheel-es/1.2.0: 1389 | resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==} 1390 | dev: false 1391 | 1392 | /nth-check/2.1.1: 1393 | resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} 1394 | dependencies: 1395 | boolbase: 1.0.0 1396 | dev: true 1397 | 1398 | /parse5-htmlparser2-tree-adapter/7.0.0: 1399 | resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} 1400 | dependencies: 1401 | domhandler: 5.0.3 1402 | parse5: 7.1.2 1403 | dev: true 1404 | 1405 | /parse5/7.1.2: 1406 | resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} 1407 | dependencies: 1408 | entities: 4.4.0 1409 | dev: true 1410 | 1411 | /path-parse/1.0.7: 1412 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1413 | dev: true 1414 | 1415 | /picocolors/1.0.0: 1416 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1417 | 1418 | /picomatch/2.3.1: 1419 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1420 | engines: {node: '>=8.6'} 1421 | dev: true 1422 | 1423 | /postcss/8.4.21: 1424 | resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} 1425 | engines: {node: ^10 || ^12 || >=14} 1426 | dependencies: 1427 | nanoid: 3.3.4 1428 | picocolors: 1.0.0 1429 | source-map-js: 1.0.2 1430 | 1431 | /q/1.5.1: 1432 | resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} 1433 | engines: {node: '>=0.6.0', teleport: '>=0.2.0'} 1434 | dev: true 1435 | 1436 | /queue-microtask/1.2.3: 1437 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1438 | dev: true 1439 | 1440 | /react-refresh/0.13.0: 1441 | resolution: {integrity: sha512-XP8A9BT0CpRBD+NYLLeIhld/RqG9+gktUjW1FkE+Vm7OCinbG1SshcK5tb9ls4kzvjZr9mOQc7HYgBngEyPAXg==} 1442 | engines: {node: '>=0.10.0'} 1443 | dev: true 1444 | 1445 | /react-refresh/0.14.0: 1446 | resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} 1447 | engines: {node: '>=0.10.0'} 1448 | dev: true 1449 | optional: true 1450 | 1451 | /readdirp/3.6.0: 1452 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1453 | engines: {node: '>=8.10.0'} 1454 | dependencies: 1455 | picomatch: 2.3.1 1456 | dev: true 1457 | 1458 | /resolve/1.22.1: 1459 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 1460 | hasBin: true 1461 | dependencies: 1462 | is-core-module: 2.11.0 1463 | path-parse: 1.0.7 1464 | supports-preserve-symlinks-flag: 1.0.0 1465 | dev: true 1466 | 1467 | /reusify/1.0.4: 1468 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1469 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1470 | dev: true 1471 | 1472 | /rollup/2.77.3: 1473 | resolution: {integrity: sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==} 1474 | engines: {node: '>=10.0.0'} 1475 | hasBin: true 1476 | optionalDependencies: 1477 | fsevents: 2.3.2 1478 | dev: true 1479 | 1480 | /rollup/2.79.1: 1481 | resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} 1482 | engines: {node: '>=10.0.0'} 1483 | hasBin: true 1484 | optionalDependencies: 1485 | fsevents: 2.3.2 1486 | dev: true 1487 | 1488 | /run-parallel/1.2.0: 1489 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1490 | dependencies: 1491 | queue-microtask: 1.2.3 1492 | dev: true 1493 | 1494 | /sass/1.58.0: 1495 | resolution: {integrity: sha512-PiMJcP33DdKtZ/1jSjjqVIKihoDc6yWmYr9K/4r3fVVIEDAluD0q7XZiRKrNJcPK3qkLRF/79DND1H5q1LBjgg==} 1496 | engines: {node: '>=12.0.0'} 1497 | hasBin: true 1498 | dependencies: 1499 | chokidar: 3.5.3 1500 | immutable: 4.2.4 1501 | source-map-js: 1.0.2 1502 | dev: true 1503 | 1504 | /semver/6.3.0: 1505 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 1506 | hasBin: true 1507 | dev: true 1508 | optional: true 1509 | 1510 | /source-map-js/1.0.2: 1511 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 1512 | engines: {node: '>=0.10.0'} 1513 | 1514 | /source-map/0.6.1: 1515 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1516 | engines: {node: '>=0.10.0'} 1517 | 1518 | /sourcemap-codec/1.4.8: 1519 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 1520 | deprecated: Please use @jridgewell/sourcemap-codec instead 1521 | 1522 | /stream-buffers/0.2.6: 1523 | resolution: {integrity: sha512-ZRpmWyuCdg0TtNKk8bEqvm13oQvXMmzXDsfD4cBgcx5LouborvU5pm3JMkdTP3HcszyUI08AM1dHMXA5r2g6Sg==} 1524 | engines: {node: '>= 0.3.0'} 1525 | dev: true 1526 | 1527 | /supports-color/5.5.0: 1528 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 1529 | engines: {node: '>=4'} 1530 | dependencies: 1531 | has-flag: 3.0.0 1532 | dev: true 1533 | optional: true 1534 | 1535 | /supports-preserve-symlinks-flag/1.0.0: 1536 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1537 | engines: {node: '>= 0.4'} 1538 | dev: true 1539 | 1540 | /to-fast-properties/2.0.0: 1541 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 1542 | engines: {node: '>=4'} 1543 | 1544 | /to-regex-range/5.0.1: 1545 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1546 | engines: {node: '>=8.0'} 1547 | dependencies: 1548 | is-number: 7.0.0 1549 | dev: true 1550 | 1551 | /typescript/4.9.5: 1552 | resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} 1553 | engines: {node: '>=4.2.0'} 1554 | hasBin: true 1555 | dev: true 1556 | 1557 | /uberproto/1.2.0: 1558 | resolution: {integrity: sha512-pGtPAQmLwh+R9w81WVHzui1FfedpQWQpiaIIfPCwhtsBez4q6DYbJFfyXPVHPUTNFnedAvNEnkoFiLuhXIR94w==} 1559 | dev: true 1560 | 1561 | /universalify/2.0.0: 1562 | resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} 1563 | engines: {node: '>= 10.0.0'} 1564 | dev: true 1565 | 1566 | /update-browserslist-db/1.0.10_browserslist@4.21.5: 1567 | resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} 1568 | hasBin: true 1569 | peerDependencies: 1570 | browserslist: '>= 4.21.0' 1571 | dependencies: 1572 | browserslist: 4.21.5 1573 | escalade: 3.1.1 1574 | picocolors: 1.0.0 1575 | dev: true 1576 | optional: true 1577 | 1578 | /vite/2.9.15_sass@1.58.0: 1579 | resolution: {integrity: sha512-fzMt2jK4vQ3yK56te3Kqpkaeq9DkcZfBbzHwYpobasvgYmP2SoAr6Aic05CsB4CzCZbsDv4sujX3pkEGhLabVQ==} 1580 | engines: {node: '>=12.2.0'} 1581 | hasBin: true 1582 | peerDependencies: 1583 | less: '*' 1584 | sass: '*' 1585 | stylus: '*' 1586 | peerDependenciesMeta: 1587 | less: 1588 | optional: true 1589 | sass: 1590 | optional: true 1591 | stylus: 1592 | optional: true 1593 | dependencies: 1594 | esbuild: 0.14.54 1595 | postcss: 8.4.21 1596 | resolve: 1.22.1 1597 | rollup: 2.77.3 1598 | sass: 1.58.0 1599 | optionalDependencies: 1600 | fsevents: 2.3.2 1601 | dev: true 1602 | 1603 | /vue-demi/0.13.11_vue@3.2.47: 1604 | resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} 1605 | engines: {node: '>=12'} 1606 | hasBin: true 1607 | requiresBuild: true 1608 | peerDependencies: 1609 | '@vue/composition-api': ^1.0.0-rc.1 1610 | vue: ^3.0.0-0 || ^2.6.0 1611 | peerDependenciesMeta: 1612 | '@vue/composition-api': 1613 | optional: true 1614 | dependencies: 1615 | vue: 3.2.47 1616 | dev: false 1617 | 1618 | /vue-router/4.1.6_vue@3.2.47: 1619 | resolution: {integrity: sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==} 1620 | peerDependencies: 1621 | vue: ^3.2.0 1622 | dependencies: 1623 | '@vue/devtools-api': 6.5.0 1624 | vue: 3.2.47 1625 | dev: false 1626 | 1627 | /vue-tsc/0.38.9_typescript@4.9.5: 1628 | resolution: {integrity: sha512-Yoy5phgvGqyF98Fb4mYqboR4Q149jrdcGv5kSmufXJUq++RZJ2iMVG0g6zl+v3t4ORVWkQmRpsV4x2szufZ0LQ==} 1629 | hasBin: true 1630 | peerDependencies: 1631 | typescript: '*' 1632 | dependencies: 1633 | '@volar/vue-typescript': 0.38.9 1634 | typescript: 4.9.5 1635 | dev: true 1636 | 1637 | /vue/3.2.47: 1638 | resolution: {integrity: sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==} 1639 | dependencies: 1640 | '@vue/compiler-dom': 3.2.47 1641 | '@vue/compiler-sfc': 3.2.47 1642 | '@vue/runtime-dom': 3.2.47 1643 | '@vue/server-renderer': 3.2.47_vue@3.2.47 1644 | '@vue/shared': 3.2.47 1645 | 1646 | /yallist/3.1.1: 1647 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 1648 | dev: true 1649 | optional: true 1650 | --------------------------------------------------------------------------------