From b29e6179f37aefae01e9a26393cb6dc36edd461e8c89c425a0585a68f7e05990 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 22 Dec 2025 16:23:48 +0100 Subject: [PATCH] Initiliazation --- full/Angel-client/.gitignore | 24 + full/Angel-client/.vscode/extensions.json | 3 + full/Angel-client/README.txt | 1 + full/Angel-client/components.json | 20 + full/Angel-client/index.html | 14 + full/Angel-client/package.json | 57 + full/Angel-client/postcss.config.js | 6 + full/Angel-client/public/angel.png | Bin 0 -> 114829 bytes full/Angel-client/public/close.svg | 152 + full/Angel-client/public/close_hover.svg | 161 + .../d7b98a17f63ffc3ae473e8d5f0b23106.jpg | Bin 0 -> 24555 bytes full/Angel-client/public/maximize.svg | 151 + full/Angel-client/public/maximize_hover.svg | 161 + full/Angel-client/public/minimize.svg | 151 + full/Angel-client/public/minimize_hover.svg | 165 + full/Angel-client/public/oneko.gif | Bin 0 -> 3316 bytes full/Angel-client/src-tauri/.gitignore | 7 + full/Angel-client/src-tauri/Cargo.lock | 4319 +++++++++++++++++ full/Angel-client/src-tauri/Cargo.toml | 24 + full/Angel-client/src-tauri/build.rs | 3 + full/Angel-client/src-tauri/bun.lockb | Bin 0 -> 143574 bytes .../src-tauri/capabilities/default.json | 7 + .../src-tauri/gen/schemas/acl-manifests.json | 1 + .../src-tauri/gen/schemas/capabilities.json | 1 + .../src-tauri/gen/schemas/desktop-schema.json | 2054 ++++++++ .../src-tauri/gen/schemas/linux-schema.json | 2054 ++++++++ .../src-tauri/gen/schemas/windows-schema.json | 2054 ++++++++ full/Angel-client/src-tauri/icons/128x128.png | Bin 0 -> 16530 bytes full/Angel-client/src-tauri/icons/32x32.png | Bin 0 -> 2262 bytes full/Angel-client/src-tauri/icons/icon.icns | Bin 0 -> 34216 bytes full/Angel-client/src-tauri/icons/icon.ico | Bin 0 -> 210255 bytes full/Angel-client/src-tauri/src/commands.rs | 14 + full/Angel-client/src-tauri/src/lib.rs | 27 + full/Angel-client/src-tauri/src/main.rs | 5 + full/Angel-client/src-tauri/tauri.conf.json | 34 + full/Angel-client/src/App.scss | 254 + full/Angel-client/src/App.tsx | 80 + full/Angel-client/src/alert.tsx | 63 + full/Angel-client/src/assets/react.svg | 1 + full/Angel-client/src/components/sidebar.tsx | 199 + full/Angel-client/src/components/ui/alert.tsx | 59 + .../Angel-client/src/components/ui/avatar.tsx | 48 + .../Angel-client/src/components/ui/button.tsx | 57 + full/Angel-client/src/components/ui/card.tsx | 76 + .../src/components/ui/checkbox.tsx | 28 + .../src/components/ui/collapsible.tsx | 9 + .../src/components/ui/command.tsx | 153 + .../src/components/ui/context-menu.tsx | 202 + .../Angel-client/src/components/ui/dialog.tsx | 120 + .../src/components/ui/dropdown-menu.tsx | 203 + full/Angel-client/src/components/ui/form.tsx | 176 + full/Angel-client/src/components/ui/input.tsx | 25 + full/Angel-client/src/components/ui/label.tsx | 24 + .../src/components/ui/popover.tsx | 31 + .../src/components/ui/separator.tsx | 29 + full/Angel-client/src/components/ui/sheet.tsx | 138 + .../src/components/ui/sidebar.tsx | 762 +++ .../src/components/ui/skeleton.tsx | 15 + full/Angel-client/src/components/ui/table.tsx | 120 + full/Angel-client/src/components/ui/tabs.tsx | 53 + full/Angel-client/src/components/ui/toast.tsx | 127 + .../src/components/ui/toaster.tsx | 33 + .../src/components/ui/tooltip.tsx | 30 + full/Angel-client/src/dash.tsx | 542 +++ full/Angel-client/src/global.ts | 24 + full/Angel-client/src/hooks/use-mobile.tsx | 19 + full/Angel-client/src/hooks/use-toast.ts | 191 + full/Angel-client/src/layout.tsx | 50 + full/Angel-client/src/lib/utils.ts | 6 + full/Angel-client/src/main.tsx | 14 + full/Angel-client/src/oneko.js | 162 + full/Angel-client/src/privacy.tsx | 27 + full/Angel-client/src/sign_in.tsx | 129 + full/Angel-client/src/sign_up.tsx | 228 + full/Angel-client/src/splashscreen.tsx | 13 + full/Angel-client/src/terms.tsx | 27 + full/Angel-client/src/vite-env.d.ts | 1 + full/Angel-client/tailwind.config.ts | 75 + full/Angel-client/tsconfig.json | 29 + full/Angel-client/tsconfig.node.json | 16 + full/Angel-client/vite.config.ts | 36 + full/Angel-payload/.gitignore | 16 + full/Angel-payload/LICENSE | 0 full/Angel-payload/README.txt | 3 + full/Angel-payload/angel/config.d | 188 + .../angel/exfil/browser/browser.d | 64 + .../angel/exfil/browser/chromium/chromium.d | 77 + .../angel/exfil/browser/chromium/dpapi.d | 46 + .../angel/exfil/browser/chromium/inject.d | 2 + .../angel/exfil/browser/gecko/gecko.d | 20 + .../angel/exfil/browser/gecko/inject.d | 2 + .../angel/exfil/browser/inject.d | 15 + full/Angel-payload/angel/main.d | 158 + full/Angel-payload/angel/utils/clean.d | 9 + full/Angel-payload/angel/utils/constants.d | 36 + .../angel/utils/cryptography/aead.d | 198 + .../angel/utils/cryptography/aes.d | 549 +++ .../angel/utils/cryptography/bitmanip.d | 416 ++ .../angel/utils/cryptography/blockcipher.d | 191 + .../angel/utils/cryptography/cryptography.d | 33 + .../angel/utils/cryptography/curve25519.d | 136 + .../angel/utils/cryptography/exceptions.d | 36 + .../angel/utils/cryptography/fieldelem.d | 1239 +++++ .../utils/cryptography/gcm/galoisfield.d | 331 ++ .../angel/utils/cryptography/gcm/gcm.d | 840 ++++ .../angel/utils/cryptography/gcm/ghash.d | 373 ++ .../angel/utils/cryptography/gcm/multiplier.d | 493 ++ .../angel/utils/cryptography/serpent.d | 1030 ++++ .../angel/utils/cryptography/threefish.d | 261 + .../angel/utils/cryptography/utils.d | 109 + full/Angel-payload/angel/utils/init.d | 14 + full/Angel-payload/angel/utils/logging.d | 58 + full/Angel-payload/angel/utils/utils.d | 81 + full/Angel-payload/decrypt.py | 99 + full/Angel-payload/dub.json | 12 + full/Angel-payload/generator.py | 25 + full/Angel-server/README.txt | 0 vv1/LICENSE | 16 + vv1/LICENSE.txt | 0 vv1/README.md | 3 + vv1/README.txt | 1 + vv1/agent/.gitignore | 16 + vv1/agent/angel/angel.d | 76 + vv1/agent/angel/antidbg/anti_analysis.d | 0 vv1/agent/angel/antidbg/anti_debug.d | 0 vv1/agent/angel/antidbg/anti_vm.d | 0 vv1/agent/angel/config.d | 213 + vv1/agent/angel/conn.d | 58 + vv1/agent/angel/linux/linux_core.d | 0 vv1/agent/angel/parse.d | 0 vv1/agent/angel/utils/clean.d | 9 + vv1/agent/angel/utils/constants.d | 36 + vv1/agent/angel/utils/cryptography/bitmanip.d | 416 ++ .../angel/utils/cryptography/blockcipher.d | 191 + .../angel/utils/cryptography/cryptography.d | 148 + .../angel/utils/cryptography/curve25519.d | 136 + .../angel/utils/cryptography/fieldelem.d | 1239 +++++ vv1/agent/angel/utils/cryptography/serpent.d | 1030 ++++ .../angel/utils/cryptography/threefish.d | 261 + vv1/agent/angel/utils/cryptography/utils.d | 109 + vv1/agent/angel/utils/init.d | 14 + vv1/agent/angel/utils/logging.d | 58 + vv1/agent/angel/utils/utils.d | 81 + vv1/agent/angel/windows/windows_core.d | 0 vv1/agent/dev.txt | 5 + vv1/agent/dub.json | 25 + vv1/server/conn/agent.go | 18 + vv1/server/conn/conn.go | 43 + vv1/server/conn/controller.go | 7 + vv1/server/conn/handler.go | 36 + vv1/server/consts/consts.go | 11 + vv1/server/cryptmeow/cryptmeow.go | 23 + vv1/server/db/database.go | 22 + vv1/server/extra/conf.go | 3 + vv1/server/extra/extra.go | 48 + vv1/server/go.mod | 8 + vv1/server/go.sum | 4 + vv1/server/logging/logging.go | 69 + vv1/server/main.go | 13 + vv1/ssh/config.py | 2 + vv1/ssh/constants.py | 17 + vv1/ssh/main.py | 24 + vv1/ssh/utils/conn.py | 18 + vv1/ssh/utils/logger.py | 18 + vv1/ssh/utils/mod.py | 11 + 165 files changed, 28070 insertions(+) create mode 100644 full/Angel-client/.gitignore create mode 100644 full/Angel-client/.vscode/extensions.json create mode 100644 full/Angel-client/README.txt create mode 100644 full/Angel-client/components.json create mode 100644 full/Angel-client/index.html create mode 100644 full/Angel-client/package.json create mode 100644 full/Angel-client/postcss.config.js create mode 100644 full/Angel-client/public/angel.png create mode 100644 full/Angel-client/public/close.svg create mode 100644 full/Angel-client/public/close_hover.svg create mode 100644 full/Angel-client/public/d7b98a17f63ffc3ae473e8d5f0b23106.jpg create mode 100644 full/Angel-client/public/maximize.svg create mode 100644 full/Angel-client/public/maximize_hover.svg create mode 100644 full/Angel-client/public/minimize.svg create mode 100644 full/Angel-client/public/minimize_hover.svg create mode 100644 full/Angel-client/public/oneko.gif create mode 100644 full/Angel-client/src-tauri/.gitignore create mode 100644 full/Angel-client/src-tauri/Cargo.lock create mode 100644 full/Angel-client/src-tauri/Cargo.toml create mode 100644 full/Angel-client/src-tauri/build.rs create mode 100644 full/Angel-client/src-tauri/bun.lockb create mode 100644 full/Angel-client/src-tauri/capabilities/default.json create mode 100644 full/Angel-client/src-tauri/gen/schemas/acl-manifests.json create mode 100644 full/Angel-client/src-tauri/gen/schemas/capabilities.json create mode 100644 full/Angel-client/src-tauri/gen/schemas/desktop-schema.json create mode 100644 full/Angel-client/src-tauri/gen/schemas/linux-schema.json create mode 100644 full/Angel-client/src-tauri/gen/schemas/windows-schema.json create mode 100644 full/Angel-client/src-tauri/icons/128x128.png create mode 100644 full/Angel-client/src-tauri/icons/32x32.png create mode 100644 full/Angel-client/src-tauri/icons/icon.icns create mode 100644 full/Angel-client/src-tauri/icons/icon.ico create mode 100644 full/Angel-client/src-tauri/src/commands.rs create mode 100644 full/Angel-client/src-tauri/src/lib.rs create mode 100644 full/Angel-client/src-tauri/src/main.rs create mode 100644 full/Angel-client/src-tauri/tauri.conf.json create mode 100644 full/Angel-client/src/App.scss create mode 100644 full/Angel-client/src/App.tsx create mode 100644 full/Angel-client/src/alert.tsx create mode 100644 full/Angel-client/src/assets/react.svg create mode 100644 full/Angel-client/src/components/sidebar.tsx create mode 100644 full/Angel-client/src/components/ui/alert.tsx create mode 100644 full/Angel-client/src/components/ui/avatar.tsx create mode 100644 full/Angel-client/src/components/ui/button.tsx create mode 100644 full/Angel-client/src/components/ui/card.tsx create mode 100644 full/Angel-client/src/components/ui/checkbox.tsx create mode 100644 full/Angel-client/src/components/ui/collapsible.tsx create mode 100644 full/Angel-client/src/components/ui/command.tsx create mode 100644 full/Angel-client/src/components/ui/context-menu.tsx create mode 100644 full/Angel-client/src/components/ui/dialog.tsx create mode 100644 full/Angel-client/src/components/ui/dropdown-menu.tsx create mode 100644 full/Angel-client/src/components/ui/form.tsx create mode 100644 full/Angel-client/src/components/ui/input.tsx create mode 100644 full/Angel-client/src/components/ui/label.tsx create mode 100644 full/Angel-client/src/components/ui/popover.tsx create mode 100644 full/Angel-client/src/components/ui/separator.tsx create mode 100644 full/Angel-client/src/components/ui/sheet.tsx create mode 100644 full/Angel-client/src/components/ui/sidebar.tsx create mode 100644 full/Angel-client/src/components/ui/skeleton.tsx create mode 100644 full/Angel-client/src/components/ui/table.tsx create mode 100644 full/Angel-client/src/components/ui/tabs.tsx create mode 100644 full/Angel-client/src/components/ui/toast.tsx create mode 100644 full/Angel-client/src/components/ui/toaster.tsx create mode 100644 full/Angel-client/src/components/ui/tooltip.tsx create mode 100644 full/Angel-client/src/dash.tsx create mode 100644 full/Angel-client/src/global.ts create mode 100644 full/Angel-client/src/hooks/use-mobile.tsx create mode 100644 full/Angel-client/src/hooks/use-toast.ts create mode 100644 full/Angel-client/src/layout.tsx create mode 100644 full/Angel-client/src/lib/utils.ts create mode 100644 full/Angel-client/src/main.tsx create mode 100644 full/Angel-client/src/oneko.js create mode 100644 full/Angel-client/src/privacy.tsx create mode 100644 full/Angel-client/src/sign_in.tsx create mode 100644 full/Angel-client/src/sign_up.tsx create mode 100644 full/Angel-client/src/splashscreen.tsx create mode 100644 full/Angel-client/src/terms.tsx create mode 100644 full/Angel-client/src/vite-env.d.ts create mode 100644 full/Angel-client/tailwind.config.ts create mode 100644 full/Angel-client/tsconfig.json create mode 100644 full/Angel-client/tsconfig.node.json create mode 100644 full/Angel-client/vite.config.ts create mode 100644 full/Angel-payload/.gitignore create mode 100644 full/Angel-payload/LICENSE create mode 100644 full/Angel-payload/README.txt create mode 100644 full/Angel-payload/angel/config.d create mode 100644 full/Angel-payload/angel/exfil/browser/browser.d create mode 100644 full/Angel-payload/angel/exfil/browser/chromium/chromium.d create mode 100644 full/Angel-payload/angel/exfil/browser/chromium/dpapi.d create mode 100644 full/Angel-payload/angel/exfil/browser/chromium/inject.d create mode 100644 full/Angel-payload/angel/exfil/browser/gecko/gecko.d create mode 100644 full/Angel-payload/angel/exfil/browser/gecko/inject.d create mode 100644 full/Angel-payload/angel/exfil/browser/inject.d create mode 100644 full/Angel-payload/angel/main.d create mode 100644 full/Angel-payload/angel/utils/clean.d create mode 100644 full/Angel-payload/angel/utils/constants.d create mode 100644 full/Angel-payload/angel/utils/cryptography/aead.d create mode 100644 full/Angel-payload/angel/utils/cryptography/aes.d create mode 100644 full/Angel-payload/angel/utils/cryptography/bitmanip.d create mode 100644 full/Angel-payload/angel/utils/cryptography/blockcipher.d create mode 100644 full/Angel-payload/angel/utils/cryptography/cryptography.d create mode 100644 full/Angel-payload/angel/utils/cryptography/curve25519.d create mode 100644 full/Angel-payload/angel/utils/cryptography/exceptions.d create mode 100644 full/Angel-payload/angel/utils/cryptography/fieldelem.d create mode 100644 full/Angel-payload/angel/utils/cryptography/gcm/galoisfield.d create mode 100644 full/Angel-payload/angel/utils/cryptography/gcm/gcm.d create mode 100644 full/Angel-payload/angel/utils/cryptography/gcm/ghash.d create mode 100644 full/Angel-payload/angel/utils/cryptography/gcm/multiplier.d create mode 100644 full/Angel-payload/angel/utils/cryptography/serpent.d create mode 100644 full/Angel-payload/angel/utils/cryptography/threefish.d create mode 100644 full/Angel-payload/angel/utils/cryptography/utils.d create mode 100644 full/Angel-payload/angel/utils/init.d create mode 100644 full/Angel-payload/angel/utils/logging.d create mode 100644 full/Angel-payload/angel/utils/utils.d create mode 100644 full/Angel-payload/decrypt.py create mode 100644 full/Angel-payload/dub.json create mode 100644 full/Angel-payload/generator.py create mode 100644 full/Angel-server/README.txt create mode 100644 vv1/LICENSE create mode 100644 vv1/LICENSE.txt create mode 100644 vv1/README.md create mode 100644 vv1/README.txt create mode 100644 vv1/agent/.gitignore create mode 100644 vv1/agent/angel/angel.d create mode 100644 vv1/agent/angel/antidbg/anti_analysis.d create mode 100644 vv1/agent/angel/antidbg/anti_debug.d create mode 100644 vv1/agent/angel/antidbg/anti_vm.d create mode 100644 vv1/agent/angel/config.d create mode 100644 vv1/agent/angel/conn.d create mode 100644 vv1/agent/angel/linux/linux_core.d create mode 100644 vv1/agent/angel/parse.d create mode 100644 vv1/agent/angel/utils/clean.d create mode 100644 vv1/agent/angel/utils/constants.d create mode 100644 vv1/agent/angel/utils/cryptography/bitmanip.d create mode 100644 vv1/agent/angel/utils/cryptography/blockcipher.d create mode 100644 vv1/agent/angel/utils/cryptography/cryptography.d create mode 100644 vv1/agent/angel/utils/cryptography/curve25519.d create mode 100644 vv1/agent/angel/utils/cryptography/fieldelem.d create mode 100644 vv1/agent/angel/utils/cryptography/serpent.d create mode 100644 vv1/agent/angel/utils/cryptography/threefish.d create mode 100644 vv1/agent/angel/utils/cryptography/utils.d create mode 100644 vv1/agent/angel/utils/init.d create mode 100644 vv1/agent/angel/utils/logging.d create mode 100644 vv1/agent/angel/utils/utils.d create mode 100644 vv1/agent/angel/windows/windows_core.d create mode 100644 vv1/agent/dev.txt create mode 100644 vv1/agent/dub.json create mode 100644 vv1/server/conn/agent.go create mode 100644 vv1/server/conn/conn.go create mode 100644 vv1/server/conn/controller.go create mode 100644 vv1/server/conn/handler.go create mode 100644 vv1/server/consts/consts.go create mode 100644 vv1/server/cryptmeow/cryptmeow.go create mode 100644 vv1/server/db/database.go create mode 100644 vv1/server/extra/conf.go create mode 100644 vv1/server/extra/extra.go create mode 100644 vv1/server/go.mod create mode 100644 vv1/server/go.sum create mode 100644 vv1/server/logging/logging.go create mode 100644 vv1/server/main.go create mode 100644 vv1/ssh/config.py create mode 100644 vv1/ssh/constants.py create mode 100644 vv1/ssh/main.py create mode 100644 vv1/ssh/utils/conn.py create mode 100644 vv1/ssh/utils/logger.py create mode 100644 vv1/ssh/utils/mod.py diff --git a/full/Angel-client/.gitignore b/full/Angel-client/.gitignore new file mode 100644 index 0000000..baf4510 --- /dev/null +++ b/full/Angel-client/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/full/Angel-client/.vscode/extensions.json b/full/Angel-client/.vscode/extensions.json new file mode 100644 index 0000000..43660a1 --- /dev/null +++ b/full/Angel-client/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["tauri-apps.tauri-vscode", "rust-lang.rust-analyzer"] +} diff --git a/full/Angel-client/README.txt b/full/Angel-client/README.txt new file mode 100644 index 0000000..8909349 --- /dev/null +++ b/full/Angel-client/README.txt @@ -0,0 +1 @@ +meow~ diff --git a/full/Angel-client/components.json b/full/Angel-client/components.json new file mode 100644 index 0000000..fdd14ae --- /dev/null +++ b/full/Angel-client/components.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "src/App.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + } +} \ No newline at end of file diff --git a/full/Angel-client/index.html b/full/Angel-client/index.html new file mode 100644 index 0000000..514da16 --- /dev/null +++ b/full/Angel-client/index.html @@ -0,0 +1,14 @@ + + + + + + + + + +
+ + + + diff --git a/full/Angel-client/package.json b/full/Angel-client/package.json new file mode 100644 index 0000000..a3ea9ba --- /dev/null +++ b/full/Angel-client/package.json @@ -0,0 +1,57 @@ +{ + "name": "angel", + "private": true, + "version": "0.1.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview", + "tauri": "tauri" + }, + "dependencies": { + "@hookform/resolvers": "^3.9.0", + "@radix-ui/react-avatar": "^1.1.1", + "@radix-ui/react-checkbox": "^1.1.2", + "@radix-ui/react-collapsible": "^1.1.1", + "@radix-ui/react-context-menu": "^2.2.2", + "@radix-ui/react-dialog": "^1.1.2", + "@radix-ui/react-dropdown-menu": "^2.1.2", + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/react-label": "^2.1.0", + "@radix-ui/react-popover": "^1.1.2", + "@radix-ui/react-separator": "^1.1.0", + "@radix-ui/react-slot": "^1.1.0", + "@radix-ui/react-tabs": "^1.1.1", + "@radix-ui/react-toast": "^1.2.2", + "@radix-ui/react-tooltip": "^1.1.3", + "@tanstack/react-table": "^8.20.5", + "@tauri-apps/api": "^2", + "@tauri-apps/plugin-shell": "^2", + "@types/node": "^22.7.7", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "cmdk": "1.0.0", + "lucide-react": "^0.453.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-hook-form": "^7.53.0", + "react-router-dom": "^6.27.0", + "tailwind-merge": "^2.5.4", + "tailwindcss-animate": "^1.0.7", + "zod": "^3.23.8" + }, + "devDependencies": { + "@tauri-apps/cli": "^2", + "@types/react": "^18.2.15", + "@types/react-dom": "^18.2.7", + "@vitejs/plugin-react": "^4.2.1", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.47", + "sass": "^1.80.3", + "tailwindcss": "^3.4.14", + "typescript": "^5.2.2", + "vite": "^5.3.1", + "vite-plugin-sass": "^0.1.0" + } +} diff --git a/full/Angel-client/postcss.config.js b/full/Angel-client/postcss.config.js new file mode 100644 index 0000000..f47c293 --- /dev/null +++ b/full/Angel-client/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/full/Angel-client/public/angel.png b/full/Angel-client/public/angel.png new file mode 100644 index 0000000000000000000000000000000000000000000000000000000000000000..25f7b5465b3fa8fdfc48fc811367ccc450e5593f93f57ac42f7a54d3d749ab05 GIT binary patch literal 114829 zcmZ7ecQ~Bi_XP}(Uc&^5(Sjg4qxUX)7ozvxMen^N(V``~C_w}t(R+yyM2}uZNel*~ z4@P-z-{14c`#x6$*F7_LIcJ}}*IsKKZ*{bk9}!X$fI^f%dFGAn{Ki5T#dsyRIbg0hJDy1NL2 z<5i{3XZbk7C;xxHY-o};FXDN%ZR|{y`a&1RCJLo$MbJk7dr!YBY5T)#)}jLo5qA?Z zXrBP{px5pVspbDWP3J`=A*{T(BVb}eFz?(oV68m@;XtqPzbgbD=sxLww9w{Lk*2Zo zX7A7Ga&7nZo_SuFN8g$+ID~>i_Pn8MrfC4Xu=x z_?Rfiqz|^XUi>{nOj*vDyFo`qv|O zS;3_7H-lR9)Q`M)0()R}sj0}VyfCx>_wf~g$6qJCKWd=Ne*IcYo&9sBjlTX2p8vs; zc+29D!T;vTLgH1NC)TFuREn=3ZG}!enEhX^LyHt%q}xTk!T;uR9@k)FIg;D-%fE%d z7KbDZPziBPeqKSx-nfL!zyHs>u<&Y6w7ZUM#=L2r9y!&7!B8H{EuLS=zP|=e)o+UZ zaHiqKwf;(2(LM?disTwELkju(bsWSbkkEZyD0sN>qo=aKeKWk9nS6W~RPz|O6n_x% z?OUxzfcU{O={ViDldJ!G{z#6fFs#ZP%l)%ZDKRO(m?AGRzL05h55-nVZ ziwzYah?)SAo~yAsoV>8kCu?L3Mc02SR{T4XGg!6v#-u+HK3OAqm`BOmvw4HLH-*bB zVfT030u3SYKcb8*O_}lqn!k6RmH+(r_hkn2@?QAu9No+*Z(-oIqQTADw&vhXVBIr}#dHiLC_HKA+JMQnS1*z{C%Z(gjOJ-dj z^K?D^{3e2y^*pO-N*+9jT=ib>?PF3-c|}U%=?Na%)zHvJie5&Mh87=xUE2WJQD7$o z&vdyW+u+aI7U?U25W@P}k0J}as7jzGQd$}5(F=(TliN2cXv+SoO*`)CUAZwDQ8UcSgQ4rE;h_cxYuAHS#?^sJFJnKmnTGNCSrT2GjT`YU{Jf0N`UA74g zP2i=4Z`YijB9|IMV64r_^!uIDD5vD6?F!Zk63^xOg93>QkLA=6E+Fvc>1HbrS&n`S zOxOi9s}B4F;7*hDx(For1q9doJOmMWKg(8=SKpVyU4@PM)FP7HRUF@O1ZUN#kq6 zAs%(}_ADL|c_mYo?ggd`?W@&SO}Y?|99Z{lvr_3s&&s^dcmcO*^KSvQj+pQs-RgPN z*aWhA5dMUta~y~&RPQb7esd)5UqcbrnGSngeLY{J3Ab;Dxi}wRAMHe4T&Yu`PXyU) z;GTOzsdDP{F82(P>2^zsk8=NcS3IJ9euBrW{^$)%VT9liefJHHj@IEYo5;(}%Y!BF z!GJVX#|eZ$*XOvcZk@XM`RtD$H7HWRLwremUR~72=12+NLaBzWBW{tfv!U?)8QZ+D z|DLQFNnY=icFuTAkgFlg@OAofOixj6IXTPkKN`12GYF2b>3IsPG%S{xy|bv8Sq|93)MUSIF#&-r5XcdG#0fgM-YWf8e|D9><6nl%5f~ zmC~FilZx0swV_pELM%Dv1PuHDyShb}uG5U78+wbmR)NtZEwU^n=V)tazZKL;QzHo( zjOu9V+4pt^@~?#$a5<56UYUEm3hn&BGZ9C}FWIKa@y>$OztSnHMkbwv>c4+idlvq8 zstOD5BJ6KrNbSP+#Uay;WQFuzXTd$&Og$wrg&JMueC8B5+Nbx(esS4b%PCVaorq)z zl~(z?Jaa#{py2BZd|+#7(2dtNXTDU~wPzP1viwhjx6H0*d! zX%Q&L!&~DKh73X8E-2B>Pn9Z*eKj95eX9BS){3H05JPCtiXzU)*z`$!+AfVpmmitv zby!3Tgy~Q9ydA|5^E=xCRe7q9%T%^mg>}FhcxizfEhwGl(miuscKm}Ct>aW6k zQmL~sOE?89PQ_9diKzWAz2xIz0&MFfcu~aKWBGBPaS_Sg)DGp;XEjMRu#!*9T^&4}%d9gaaQWLO{oyi;|=aV<)AA2Dj=9Hjb2$OTRut}FkK!c2B9HFQE zt2o{vJekYm>hK*~nKNX>h2#CzEY1DRLcQ%G@@CNUwoNO;bB>lOSxG@KPxA~N2Hf3@ z5rXvihN$9pxT>leNJX}I@8$_U2s$_h9EiR7tHKfx`2L~DH!izqlslV<41z&vdi{Rp zkn-i|qXU72qcGcV^0+)wE#(+$qF5VAxVlF4MUZ7+$)XJSjDU&Isw6DJ$;qe9W6nGa z)+e9e>QKr|AxFKPhKaY{%R<)>Ib51kE=_671mC%S2uu_*^LBa#J0SXRW`Aj7^n2}S zX=;S-m?N)yJzl}DxZ{-R!!mXH?5k%OKxu<~AO?I)ryBD|Zp(ba_hILO`sdj&#QBTN zkxE}W9kmZtzpLgE%Z9ImUS@yQ+3=J1Qy8!B?EKabbx!qTJ-j`uh&UvB(^qdh^gUxj z`ifFN!xmAyo=aXl>sGSrq2QWKG^#G@b7$rgj_4=7o#wr5A-!El4GRu+cL(cF)^pY^ z+y_YCY-k(W#kGJBd+sBxGdfUBX&F}(`V?h&DWXZm9e{gV3-VapGXst#}DWDz{lmh>Q9$wNLEi)hlx=4hxAe% zjjfk)2ogHNP*_4H*;p`EfdyqOIA1d8d$aUDvJHKRy30rn{mT?kUi#ndjxFn^M}-es zSvnA@Svh`gimRN8*^M0d(Fdg=Nk}Zg_Xf+e$A$N3rwbMoXWk@ZX8|Q@QmL+q8y|DN zdR8U>g^pU3E{9&t5*mf9Wq$O(IrJD5>pm;zEubTb`42{~acHz~_2Kw9?l?K(eo|p8 zrs>}-@0?_W^BWt?l(b*piRJO}8NCkoas02(s;+luDh69T%rAfSkJF*JxOptoC{0kceJpruQVJD%9g@N+ zQ9x3IKF_fde6E@fwk2jOhk`Vx8{6!yt*M`IwgT%92Uvf7LAk$qxtL@6dM#88}#TY`rCz#9|@c#qo!EfZIne_>k{K}?QjR?8HQLZDD89ITrM8&S-tWL z4b9J2U2E%SyEB67{1}m>xL7LlabC>C7>UB}6E$O4%GLd^KldXdzaIVDL8(%IIsWDP zM~JP!^}L<_7PtuB$H|fVecorGzTU?xmYSL=sO6g6-R8W+Xl!Gbv=`J9g`rX0b);80 zM5A5U3$uB-U(ZV;WxP)ocgO!;Na{RRih(RQK3P~FJV2V|?t-+F&{FL*O*8*ybxz?a%4Z#Sm& zXoftaIFl(+Uh;IsXaCPGWy8<%tk^elE;Uc72KfZ-ZJ^Z8j%ehW4n^$dZh-fQ2dc0_ESTHcJ3-c?7SklROu;q-Scmbb9z+4J){zO<}B3WgNhKQxcL z7^n7pof~G?YBvb@iE7TuK#-y&U#vX zHH$Mz-l|y_J1C@ayLr4T1lH~9ARIoA48NGyw&S>69UdP385f6>!7AL#_Q)nu`B{+S z{m*(^b#1A0-~93_XW_iWtxpcdb8WlZKadg+Ino7YHo5H4fu2N5Ut-;>cPvZn1+7h- z4-VarrQS`lMx4PT?%*_a>tVmIm-c+TX^Vto8IsAJY90^qB?=d3`sR&of5yV|2p;x! z>CeO89bHqFtwRrk?1iWa0^ORxRfHy8GLR`=7b5(FHZ8Ej;A%jfi%qCKCurLg2|T z>(ww^TY{2@E6Q6H(!gtOX5p@Lgg8X+7PXNW%(pmS##!EsaRPHvaQ{51v?GH#FMImn z9DOV0il|NqIOuVKa|YE76@_09GpnYCbZ0QDMq3F+Bif5IpQqR=i?11+3M{vTr+%y! zCA3_ZSJI`Rsu2PeThuAElHh!9Q2X4y2(JbZ@AI$yEf_thMX$$$}(MrVq?cM;nwzMWY z9aYUE5XAPL?xn6`7|fHbgp>ajfTpm%(i}ZB9r~j}u#hOdcZ-Y0#JE_8t%q62z#+Pp zh?ZJp(cMf@;J!f7RZT?MtCLx&5dXMGJ@G)SF$4Itrsh05JNxg+G{@i&Yag3(kBnm1 zq6c1Ss}H;&z>p61!YVX$l$NnIsHta-CJuuj8kB!pvhb;?$^Lv~%~R6c)H3W16oQSt zgg=s|$d{>igb*UsV)fr&@RP08{Ri@hAzs=zc!DZM&6Plz{J^4bt6!QBJrBgkN5AWoYl3G>}dRnKmA@o2EtZUz&Y5!m?3f@!9 zwwFscVoeV28kZZEkhwliT}kQ*C!fB*gx_7F?sri4>y7~)uq&%l!}l$2iByM*vXH(QFsrXU76ZKj^9SW6>5 zPx%m4(96=FKn2^IshB84xvu@tJ4u5ii{d{fQHG=_?IfqxH=Q@N<+Rlx?~f9S4nk1~ z?ZO)^%ZfcB63XgWFaTAU35aEP=@rD;cxt>t1~UO$i+NGzw7W13(TvTjC*44l*}jTH>ZO@W_`3-W9<{?`z?keT zQ?g^nE2y>O+U4+*gow-T9tY8|n@ip@#j1q7QM<8do(x(3-5v zrfT>W1*@ADy-6|L`)%b;SDTqwiofy!g3Fj~Xqcnt@^ywTuv6eaj$PLCnNrBV)m(gV_&Vo;vM~4{=CggKe;a;p z>erKvEtl3HLDiW{3VnAj2iqmR?y52Eh)5Q?PWF_nzwRgE4JYblQzgS%h~UlCbAaTw zth`x9C5r%@RX?YK-_~lR?NExn-4RKo$N+^L32F{K~Fj2OB>`ZhnQKRs&S0 z)Rb}xAw??U1zOXH^WSS-AsB?;YHK(9P;%|DvsxIxUW09Dj_`8w>Q8)nzD5cD* zAlpIL!XBL*gV&WuOC=nk5p>tuGU!EK>Kb~SG&S}K@HdH1Uq#V3=Rc&^dnSA@326coda{;>$!l_t*#82WNZrVUvbB7Hy` zJYOI%ZJiMxNyPY{C+ykp-x_@=b35aB4VE2JJRthst8;?3YJEEw^I%uwE)yv65$6(cYIJ{a6|ojq0514u|k09 z?-YEPr%!pyoS&TwbjNXH{Jz!H$SN>0v43Lf4Ndr#qEw)pyVm78@#KC3NDfl>TOEhN zC>hO1U2DgkN?pdKgj60~2M)CDhtzf)QSp7J6GekFtlH1jDEbwrL{(AUsEdHr#>FC3 zO%fY5!H6+al00=hlT(eZ=r^aD4}A<%gr%a)uC9njwrArTUVF2?8xAfm7e4_UQFzd7 zn)8-CY3`aKCw`6^Q3|5GzHPTecHf85x58IHcAr&Bhi$L?s3?@U8uO^B61B&V0sVlM zsB?0Xi>!LhbjaN9A`7-H0K)Qh{MVx{?89y}maR~a^kbZ;NfRtZg(`|nJ)J&THk=Rn zE+b31^)y`$r}X0C2R~G^$K$;J+8ZlDn2y3IA0Qos1_3}_t{SebWmq^wTk>2Gw-jXk zDM@o;eC?`12Hh}Qi1h2<-%o;?%=SZ>YvF$fKH$fKW38RYCvqZ@Xe0WhJ$1@#M~{^` z^15wDI+?qxp>)yUKx=DPK{4ql>j=6Z=hFQQnAQ|I7{+F%%VI)8w^P~?n=>C1|MlD~ z%v*$B@4}z8dL7=RIYs)Au(PByAIl9l|NHmtds{UCh~y0}EilQ+&-rAN#Zv5)oS}mw zT|}~J_Jo;GJ2k9$(fqfD>E+3HUJMOfO!+<(mgMB*3mpNxl0$LuR-iBeU{^A#oap_e zNeH%R=&ZqOci8^Kjp0ux!D(At+eX7`MooPcc6C?iyx(JDW$1{BFaO|*M_ot6#@DV4 z;Cb3=JMI8BI8=$|R=#3pYDQlGKz5?EoBh-L@jn>*p=WgLp0M!MrjO9zjG2lpCy2BN zElGm9x;g|0qhGY&O3?R{umA0U_RZgYhoVt{)#v!%BGaoH8X8L85{(CA%28<)epF(| zfyDXJiKbvFfD|G{Qy#}NX6pSDVS=QB zU&-7YZE4qW)rB&tPM6K>MoN$+D`DmPD5?_L6Nhd5Zu96`Y`f}4A9B`RJ=o%g{wGifFLX?@PbUIe!k3TJnWMnj zv{N1}x}L%ev;;gj_@z*6mG2a{8@(ph&W~*I{gG?$5w#uTYrYv26@dxTz^tgWWt}i+k{q%w= z0@;{}V%39Y%a%@Dc+MNLRgs;|6M8!EmfWF1=H8Sb|I}@w5XWNVO3b5E}wzXT!& zE?IM0B9WR&j0Qy$LFMC$HChYN_>9BDuY;wu3MCypI<~s}cm@t)r-x^o{N$-#*3HMP zlX+9vxVtA`h9~nWb>G4*FJoBW%^$XI3(vaFqAtX{T$}jh2{ForXm_C_ts2)Gmf;tq z;fNcDq8T7C_a6e&3Ncr+x8CQPe;9~t797pZ8OO(n;-`jEU{g4!%h5!tr@XRH%m9c# z4X@?fsQ$=aKUziISi^?5<>f5-Qa*F-NFoebTf`id&PaY$Rn9RRe-V1$F(Tl<#iIL~ z*bG*gIM-St32QJ+Ttq}fu1z+x3_Kkrj0?o}yr109Z(!{bd$v`F^5v_8cqYGzFt8~wMyI4h%m~@ad&QJ%3^|Pg@qa+)?-r%V;Izis8@*9jUbJ{gd`U`7 zlBk>0z~lWOw(^3Xx)l4BSOkAt0MOKavN%xocPmMqK=g}E#pr2jN z-(Oo6YHh8jVpqV;UOy+qx-29bW{>tt6x96ig&p8v`EZ*|#tuCfb^{X3?_%<3hOJ}>M(=4nBDH3SVn zbKS02NT0K#vYtIi;XEbOe&L>kR{*kUmkBAJ4D>I5SEqQ#$B!caF=NA zk-#qvh72i+^UR?U3=GA%Dowc7*g1yad^uOmezw{Q=cP{tg~4Y)mvBI7aX2C2y&2nf zY98R%(Y1yqC|$LNGCSw?pPF5Eld2IU8LE_iy42HXul>6muy)q_y62j8DhjKGpK;Ny zVy3HP>YKKBp#n|Ki^eIPoRSTvzy8Yy4aOYw*BLTbT}}-X?tnC;1T@~By&2llITk@j zUwzQ1Lm0jC@zbHxd}h^}C@3R9`A5nUTED012ozT?)inmOmrtt2=n?X2JGOYge18;1 zuM2rjjA<5fz{psh*`$P)pxC?GdwbW^H=MzGes*?PEV0(@B1jl;HW;$Ma`jTto7f?d z?j@GW3~?;kfHUF5d9i`gN6L>KGcy?r0B}@@IDc&!x;Riue|1^$BDY`-Z(5LM#)N!O zly*J}AznGV7l{#%2rDsokt9rB`=bQm*?RtRknDSF>k5D7{%*4Nen~!G&xUPRPrO65 zT+*~wy5izt!Sb`)tD^f<-VO-hPS^mbMN}9VJLViwC!;~fUQ4EzWbdqo&s3bmsH(5i zFG~=$P8;o0W{f*%)P_}-8N)|1@BOC1C2q}#)Wlg5wc_(D6PJ-#m)7=;P5$q3jgVxe zFt3wER{ERk`JQKP7x11HK{{r10B*UkV^-|WZzOgMaK#>3Oa(KB=t zivM`}IIWC5Y1&`000C{{Q%Q%^`u4K1^m#GISWo8X&b4`Y;r zM7|-!1bWd|x!2uW`Nqasu;8{KeE{gb2g(!bfAiEwht7sKd&1<1{bTeJyy7)zdLgo| zWzL5DIFEFeY%n4b!HHWCA=m^FBcKF037HyMS`KZc%DgqHNokrj5Um|(t|1CVryP*i z`W7vK0s{2mYgwo2FGGSRJYIM-Idn=k6U zTX_k1Ot!@fTbbTvo7L#hCKztt6YGxLdT&+5H=2;-iT_US^O@I|p` z^l;(3{pjc6#a*6{(Jwe&x=_$gC}h9zDpTxO^mQ%Nm+)Qf zKroH@6Nx}cUMLCOakRO;(O~T#9t51`GKIZ^emdC6WRH%%*i1(CWyv^R6 zAF;3Z_q@r38=nz?MLq4SZmTpyw!Da3w(=yy9FNOqH@QUYVr74iBuVwuz)G?#3Z;v& zFJuYFh*=(VO!xjAGZW(%7Z~b4yv+wxG5aeE1S>TLRKJg+3QPf5WIX%;N#iQTyFW%f z7-@dYuYr+0CnGea%sIBvKIKAb9Xl1Ogd^YRvXN*YNK`!%-IC(BS`)Vx)aVhGlpE5ke%73dNE;@O_fQ_TBi7pD+==K- z=^wGOmkN$iC|O4`tGY+wF!*FUb}h<6sXwn(#(1Zc|Fh?EGwpSWpi2^fj<2hbC_#L) z8OO*Pm$+HgHi;yf55kY;!w)`Q=Y?qk<0SBT@6zIh^!@81nGkF5WAy^9I!}JAT96CK z22{7rq)G-5DYl~fF+PMg6u#NL0W8=|R!Iz_WXv2`PiTKYF*k@`)3;NjFAn5dmS0l5 z5Dhw^=!f=Q`KX)vyTQ;OP@V8w3BcK6=}|d)ja|C--x}1I<9%YF?NWFeDBC8B>}+%HB@ZT>*h};IS5Uqr*c6o`Gj*uomrXB& z;-*bw;I9WhGgIyd_h*Rac!dqQt#%Vu{%B?+Xn$3cl7 z4-quZS*}z$4#j0B~Y-66L+ZQ`_E0STt#EwGG#F)@ZmJ07PMJ5@bkSlvNE^`l9?|{BYtWhCF zS|%j@H)&vj?A8)j5=ED9Im-~Ck^D=(W|T?lAnZ&5ufDzdMf;~uxeW5(=l=ZuEnhto_CkFVzIM3OJy;lXqCnq@*f#a-+3Fh8Y6;u>DG)0_ z2s=GpV8g8uY+Z+{&6YA~xZDlwa@LtIv^(D4k@^Q0xUxA)YS}os%gV|^u;7@vAdY#{ zXq{N=L^k66rZ~BD=ESX7JLe@_mSxlah+ylxFZ!@9q(tx;8&YF@ZBGU6fpr;6CW{rT zhwm&UXYd7}C-7Cq2_4#+3YzaztYq0=)@&=_6R4?58^}_<+gBNe;1uK*il45`XiJ+N zM036h3S8rRBtz9MqAy(xp zj6qq>7{lshXre5>95_C)1OlhzwSwJ+=@=`u+Kssr5ozuvCWIqf!d;ykwEG=4^^304 z!vAi-Ul`6AB3=AKR_ot-%Tpz=5008WPq6{y*i3%R%rR!;=26t`^3dRrXThg@H@;yf zFmU^_Y%y~|UBwr{R5lrFSq%AknCgQu@5fC9ba2ex}I@H0~x z`h2d`Q0TCGp$pzOqpuBcIj26Q5%L<|2qb}&|I&-&n$Y|6pLDg_Zs;E)1u$-QJ!00a zzJ7b|+cr8Q#n&-CRw{7WeZGd`C-R-CM;*+2Mw5Pi(5x!i0e7y{K$MJO;3?F7Xw%v% zr%--De%?)(AvQA4l@J4y9fx)Z$4Wv9q{D$#N+AR*kLgRh3P0$xyzU9#xEkx02AXxM zhvC7O|MET0v)x6xVM@F#^P~#QMw}S;Ur3%!k}-vp1SUWs$1yQu!+(9JP{PXeR=K^nR~ zH1wjP){>rNfGtU-MpvO>3gn2{2hdD2i5V2eU(y`j&Cxv4b-jG9MlKJ*u?FF<2S3Z? z*I7C=!H5)z5SW!1Zp5Z8mu7d_^0w#La@_qw z2(Zq*0mO9+F^vj=Ss38bXjW>dr=jr3E@xJskrW?H5$R(~7kv4J0>6}DP}Y@GZ{j;e zx=)AlbgvUduMP+bmhU|_eS&md1eddii7=JL)1qymwAY!Z1>`g2=m2E5%X0rpN*?i4%VYVW?57_w zC~;98Nfxw^Nd=QjDWl>V0SM|o!-7+@Ne0gXu%?j&R~IoNwH zi7f}x-%mNYEtZsCs^l9yWH zk5df}4a!jg%RtL2X?U!P9K`&Q+{nNDppk;DKH^2JBH$j#?DLa!WpUVrT9o{eZ<%TH z@b@@uHz}1~M4}e01OXvBdqJMNK28s6K&9fT2xqDw6%!mZ{0;}M%)M`l2&iMt@UX{;fd+L4#PBX)%KH9`Ov|b#V~pX z2=1rC!f1+Uj2$hF4km2Jo==WeU9Dh-yo~DOl$_7 z99&z96x#sDT0|r`I=B?K*Wb7hE=Ty5S+n@fMa>j|Fd53M%rOO#lU7MxwLt+n%ml6f zg^1K-9Z=w~QpXc9n(1t|)&5W%pVUaluKKRD9oMZ-5nkLDD@T(N@;fb5!=uPiwB^fO z5}%?scFlqGq){-d*+jw!e^NY_@Ejtra4X!=-F|nsWlOMFKJMdtKw?s(mAT8>*{k*- zZgI=$;v1bNfSu>0kr{t+yLiS3Vu`Hhk}QB-8WsNWNWx$%#u!~XWo|SCI;=q_{Ec33 zNiN=+-oLrL<6?t@AztQ;O9gX(o82X-3;&Xa?y6e`FN3MWx9=|mOg*}8Q<#1*EOgJ& zLkFoc=h~VdLI1;vihQ1=1U8G-u_foZm1Qq%+G^ugYhaS(!!h#cMeJYK$J?XRDE8Ph-b< z0V!hwc-h!>z`RreZdOm78LcCGyUa8g)xtI=LzEr`5e90=nA7N&m>GCvVOlgOL2VcX_|)gH%w z&f?d>WoOA82V-NTv*Fqjr(_C)vdGwKWU1odA#EY*#A=XOuMdg@Y)z#t%*l^qnf8|& z$c?k*RSt#2>O_Qvk2h=0B??0&{(k4?($If$%-*xs&ZJ?Zt%9NO?Wl9-iyPcQHj$m> zMJ*y5$ylyP@zTp2FLD)wfAHIrPr@vml%Rg-cemA0yh`;6gVAZ?=*MNQoDEP@{lj&CrN1Qc}>MN>AegwE#YbxzG8Sy6gSlJlSY>%w;DBmTWM6hW6f zq}Yd0QP1xsXs{icBQkAq^T|73T4UB)GR_50oPSQjjf#p7o35KjuyC)jxoYHpB`(~` z^7Su$#Aa`m`MGB;0ZfKKxUT2RiDO!fDNx{i$}d!U$~vj$t^95qa9DgdbiG(6l{|{G zYM2;CL`B@B-WTb=HupPcZT`)3Q#O6AWL$T}5DRdpfI9iIJHv+|)_zQFh+2VCTx{ah zDs%Y#Tf9Lw>SS?Wt!M1wT_v2O--)~7aJt+ljXvyZ3eo*>%0EC#KTu(cy7-LPkkZQ8 zuFyYfQ8yTDqu-}zhfXCCkG~3Siq?yzsG8ihh+a4}8F z-#Klpu8QP*MJ+;#Uqa~WHz2uk+yidLZX$z?kVk;7MQVS#B~WoeC%WKzc~|Qtcv5Ac z%w#}S!W^~L9wgFNtdFAv0TB-QL1~HA%|98+c3CI`9n%b?N)60{VKPRYsrEQYNo5l| zUHxouP!^vtlW*eqmTKc<7Afg_v+?ui&z3)9hY!2v)11mDAyp|WoECzkX&h#nch>4Hd zYD?UNO#Ah=%6@s0&a9BTRLiYOhClvTna@o5`CHr86kDt~96ZMhjCkEhy=dmQ2PBhD zVEKdEIzuc*%H+`)T`Te>f}bNJ{GezC{Nl_(CyGcuTy{Dq`!suM=PzzX+~g{HkA}S8 z^8God^EBYRNQPb4Oe6`TuYr(i`wUd=$FaQqbf+B_w1{(()Zfhf;A8*E+Bc$pBtus`z%Bmqq8oo+=l z!S9&s!}FYLKl;$pz_E(=`w1V5GE!y;Ml*Dlp?%DGDYKYb${WPHnd{R59otU1e8qo1 zX>q0VdBO)iJ@HGU=E{+`e9pDYTjezcP3;YCTJn_z#E@bb(iU(*RaaLFb6be(jQGE; zg#%7JuRcaPyl6GHEP@wQxnpy0YfN8gchmU;5U-OA5KV;o9|Vr!nTcPk*#Or^yx|>!a1LeqGqb6!njOPm$~C+k3bw?=PF5n<6A!BAi)36+g2z5pm#)YD z)W5`qWlLd_m;YGp1Zl8NWAw?ST0M3*(mw8sb9So!0qpHcYoq`PBep0del!U1Y}$y@ zZZ`+80}iNuXzUh#Qu29PnZM#lP$B>4M{GEc&BVuYBd+_erWA_ME1o^>e|dnxp?w&f zfyD;L^I`b>ghjn4+($n{-?Vq9jLBSCluQ?5{H3BfJYNYb#Z|~*Wak7|>r}^dFtAp$ z6p(14AMRwYu5085I*rig2j}K#j)YF@1z9}1iGbD3+_x9~@ z5p+<4t@N!S?vE*O&YbYk6$0qph`G9x+`!hPWnv*VTOed^9Dp98OOv1iT3{cCzzFWl3MM==OQaiQ%nnI?LN-XOZRZc}c&E{VG=2Z>EV5WY;Bk;U|^pOBLrv1 zzg;IMIuB|09zph!vC$9;V>8@8scz2~i>s+*mh zf6BF>@1Fk^=CP0T)?NSMl^IZF*uNo8Vimbz1)4ZLF}KBJ$M&OT5B(@(QaxPJeRp2h zQ-0A6G)3+J+c1yuuy@wPLMp;xG~3g`sJyYfaU%usmxn$QOa@3MDe&IYPCeJ` z0q61S8T-x;TcSs_64%7hP!SFX1_lU8JYaGzUG*qkbdy(;ONi06^>+x?b3Gs6ZlRSv zbyz)K@%rIzYw7?$q`~R)pFel{lEo6}6%TE8CP>-JG|%LtOfGoeWt?qK;~&h$8~pSq z>asg^!z=Op{JayqtoK5POKCm40`*%FslL8lRex;qyHE z3gwY#JO)<0X?k~ag{Rc(|G&2FpH9!+1O z*~rvf@s+c;TDV3>c$I40jdh9N(^zLaOq%>ax&9lI1YC?>AM6QTT{$B$nBhCge#6&G zxeywfWqv;Cn!&*(SdhRWx^^MNwq?;JtaHjqqrzFK3}JG*z493Tdy%rfxj9;?G|C^? zs9R#BJ^G%>E~MMn<8DmtUQ>d){9np{3_mqAH5paO07u(F!JPk%ahcb`Jg4Y1_fYoF z%9*EH=Fb#9^ZJ^Pa&ap){6vVtRni;n%9c>gTW*8&!~rk9kQ z8pR*2RiQ9m7%`QTo11H7PA}=R{Zk+KgA5@TnoUTc1CQ70(!I9^Wt<1cFdGw2oc4)g zeUuc5-2OOl3#ggzCb>)XGykTSm~yP>?4uUwEP%#tU;sOsp;4|uNaBu*Yf^IJB^diC z>^_}DN|j&n{~_rtqpJG8E=+T2gsWVn8>GAIA}y_SHzF-1(kUGmkZu&EyHi3sq`N^< zk*;_D{_i)(aHzw>IeV|Q=A6&ccpXdG!&S*R)whuK1m1-{)*>p3LV=6nY}9}dfLa#Q zUN0xU^%CwwSLe~dswz1QwQK4@Z$640p|oTp7)KZDmrbW9%&Z2+kGIgBz_E`zsbh{8 z{AFOs1bV|2BygJY7zp#~cI<@7cnW1V@T(FjF^9$zX_RAa8X^Si;eysqk>26CEqYZa8-jarc0m&s;n)yGuMC_>x`ZKR-z(Z(L5y_NhJbv|?e|FS$zsdp;7!Ur zJ5@?7ujq4h1XmcF7I0)Cc=?{=A^j)hDkkQF*yoOmq`rNIA9dttn&ICSk73eeS75OM z#-9*EActdG)Up+N*w~IeI@`un1XB;VozWM*S31gJ==|&&on|HQ_M4Zak9b{7=3s^U z`iNbBYO`gOKB;UFII9OK3}@@`r4S3@S@hBc69G_^=f%T>(cOf+yi*EOh!_miX8X(0 z?X%r~f~uKUZ?{+V)*T3L8vLWMIZ?ODeU8(gA9#@IrBwa*A~)deM`+qJqJ?XwxSAY( zj&$rfj%2f_q89i?#{cToD_~6Qc2~C-05jH6Bi;XUOL(v_jn7hcjZsmon3qN_+i}P% z!`3+wIw%$!mhSHES%mrGW5}Cm0dnNw5u1cPW>j_hc-gza;|W~U;5f-JKY=)_4xK3o zL@XZ#2Os4E8`R0|wyqWgW3puEG_3yA2z~iFo8fFk)kpYsiE;#k z5LKG+zof2_?e(N9bPyJp(K29LFgV8KcK-!I1pXlqC!BwmKYI}1rrfS)Y%B+57}&t= zi(e8G?VPXK%|jqt)v7?m-(M~Z9?u=x>w}Xu;M=ATYNh|9-?iGqe#f2k?Ac1j^JV&I zcvmMOO5!T44AFIbSBT(xeyuQa99zA#U% zhde^WV!4XKBFSQ6%WL-sDkwjSPtTU>4j89wf8o2*l<%K^(Cm_O{em z=;KuKshn{aFUJ6aNA@f&R^DD_C?O%-xS9-&t)w^d2L;GRgqT4H4NA%TS?E4>kH5XZ zMs8capC4sYDcdbR@v)jfVe7J{Yk6``K?l$}1%7Uc{{38Y`M2vrRDI z_EZ0I;3(rZ$PE|2vudBHmMu7#RCyd z-!|N0n<%Ak0D}VyL`)$OiatweS-FLS1Kt9tsDb@APJ;`c*r%}BD8|G;yFDUDY-8Md z+AI06Df#tIl(n@CgeC=%KMWR}e? z*>HMloPqXpxMk(fgKEuk6L;*U9ePGJfH+A1eg9sG{h%5~`XSrkc;|3W)9|l}Lu9Q- zqK^Z{Ky~S_AM^j*5X+mO&lqw9e@r=oJCr`3dP?^?=}~!FEZ_uixJGY%_?Fh=d0ojY8WO> zm|ZeI6Jy_REn?sY9IUw80DX;PJC(%0JhfV<_U&R(w=v{buqdRs6K4ZA%8cCv$t1L5u-1QHGkhNkBZtV|rjrCcG$%2I7 z1uHLWrbB-Eii(19+r7J2xlAoj_vL|2OIDTBwkzKK_r6)$0G0@$yX3* zQc}hQrO+@3zl=ftxZ3ffXQFQ^q$nbtFo>^S(4g#TAv9tWt)NqG4qUC_I4{j2jGb_S zhh04lUNP0P87CeFoF(Lq=2XlymTeu3A7|}}RksfRwPSL4I?O)YWByYKcM>(M5WG-T z8>=*G@k9*?z{2P|gniZop2Xkh`ukRThmQ~%?=SB>?F0(OVxPuvdryW^xZq=;{*T~r zulWo_AY*_*k&TnHVDTs=lnsIceg~<~xI@hPtAbBufilKw1x+Lhs28?3)%AGbbpp;t zOslB+D9R}%)zk)QA#9)cL$fQ#>FS@Wgh)s9_R5m=k@fGLH_z2OAdi6lZI}8}*@~KL ztXvsQ%d)`kr0=1Q|29eX{Gq);Ubi)v8aN@1W{cZP{PBGBn@V0`51C|fz6-!efX8y z`fwUA3>Rar!(TE4p)fUkX6RonYD^VY&}G4-nyDagOYY10zD37IYbvIS0%y^Y5$)k7 zm*C5e`8#u5&<>w}V4wXtf2M^tgpc9dm~DRQhEsr>MzJfI#eWu& zh3EC}(n1M|)WrVKHxkY@yR%~S(2UfUsHv%pIb`LCo|*U^=}@g6o}IOw{+lwHoi*~V zS@7u%^x-WMLAd2(5%xZTd~sGX84mgdS4!|sq~Cil;_)iYpyO%f51ItesQjhtr`o27 z@yYdGnAS5;XorBprn#H%d5rSk3ta55FBC=AFIeTj&P2u{(pzbtV@WlQS$VT*tc$-m z%h&%w^z@krdd+JEOkk@NBBzd|tzA^1SBw^lOPG0U43O!WA7N~Wb6B+IjD&*&C+EHLPcQ8ky|H6-VZb_ zj-LwBrqeW;ZnjoYoTi~$(F-n21#DCn#$vrGA#|KrU->Z@WTs)Lqh3GB*>UkAyG!ci zdMXNxzncl|Sy*|KPFA&yfG_?wU8w5axLEsuJ3X=Hsj<_YY+2BW*uQa^RPh$@M$JA4 zL(pJnaN-|c7_3sfn-}pUgIGt;yv7b>JK+&{CgDSunrhjIOhOu>sZ=TE8opB)Nw28! zeY%rWp1j{VWSO+AytLEBP^dh(uFn1Is~#5$vgYT}FysZTDXmS7bnypy|5Kk`fm<^9eBm4!o%`tkzjym2ft%!hX1fa78Osd380i zi3zduB2v5~;1P*1R3r^(YP2dG^7~u_JV_iSV6w*y_={ZRrSiw7SE%N6hfQP{&TE_2 z_%G3UX%Zp!*pQ2OD7VB6i?JgP(o1^V33Q;RAfi`fG5q`Y3&Z{VseNiKmRe21Ng6vM z;mysq@?mm_&E|Y#F z@cif*E^Y{d>%|DaYl_kSEv4b?bGRTdmBqzv%jQGEiiEF!U`*(DiHzNA5?kt}+x(u_ zu=ze+OZt(YN&`x(rG0t%PfKl=7tkjF8p+O2kW{AZn)o!)D#yn#tvB$nk5*q&)I zC>I;P*hzo$$M+4}O=Y6&vI)D^gi@}Xyw=6Sf+cbT<=XK38r`oz)ND|SRJNE%-)Uw$ zWxk2Yb68E%rOEIFJTd0~Juy(@RFgTimiV8pP0#ka@FlS@KrC{jQGUd7;~@KRZ$O1{ zCW=4QBo=)x-e)M#I5RpnK;TM-C1zy~h7nBTLa`nj z6Qcqg3r~sHMu|JFP5h6l=k7o5$>i)EE>+$4C(*BrG{)a|A(@dE@Xnw@2>Xz8-|vrM z&5^gkZFKf7g>1e~f8?@u_aLM5-MFGHsjK8?#a5q4PL5V*QD&_%Mex3LOWLO;zsfI# zJ1GQIR;+%0u5sn|w-tx2S+?jshehQh{vL+7O&407$k?5DGRu4+$Q+%^vCk4*xP^T` z|4UAGu-#vhun&#qmEf0H@xRJrYX94bYT`A;;0Y{94btH3HvM?)=HGY+=x+4sIg8C& z&Jx8CArcfc3^~@qCe^qtiilAsM6`x;7d1I1b$|c{tqrRZi`#nrQ>nP1CzC>Q1sa$% z+QZ9a2kW6ECY}3JoB;QLGA>1kF(=SL!D??m@cuWyLCg^#)AT0GOI%dhJdQp7%P|gc z_#}WAPS82e+D6Bm_W9kEMOq-T&q1aBCY~l~^zs(fM9zI5m*->1$xwR-X0S6+^ znNb@T`Floe?~D0pIpMApvp<);bnRXlMT;OKT9&(OlDX4Q7?0`%2DehI!S~xUcLnR~ z@6Su_OXIbPr@uh9J6Z9y^<0?QW{OfQ)|9tbxdg|B%)04yFJP6tHZloqzymB0EL{^F z&XxB)=eD)!E!AxHPeygQS6-lvYbx1VNJ*(X2`I6$_sM!s4Oip7&?2LC+~AoT z=i>k_i>`q|k1b!&8aZd{DQ!MiclNRmH5vmeYm}yyi;Ziw=(O!6<;@vLW`co|n&h3u zWz31;=SNE-rlh(LSs$`7Ww0oHHe3Rb>f|WoY^=ChMrEGNTe!RE&7;d{pb?_(M@-Tb zF~ep1>s@O1nmKCgDL$(R$AK)aGG;2c1rrUhFQ1jE?BnVGc#7OuXu#PjcqF8iigK4P z!~UwqA@3JMaIJG8i$}Z$6mE0ToYZ|Aiv%*4FshsY%@+-?rW*hBk#Y0##t6j{$|8rv z(~p=>9Pp{#;NM>ShX*pMPfP(eC40c>AU?g?B#<2wyS*w1cWSL$+4u0YQJO|4;Zp|I zpa8y_L-E1SPq|n_HDFtGoI|>`8%Jn}=K(Oncl0vMwn&QUfxO1YX<}nCHS>Ky!M8u~ z}g^*@A7D5(-{a29U~~Kjq1fa z{t>0UobX2Pg1~hTs)S;ZKD&l|Lj+A?yATDtV9dJ5({tm#vJ?JN*XJxW9BffG`)yOm zirPhE3)_=KNsq&#aljBAX{-jH3yt0;srs)Td=Zen@ zBw?80-RJEOtA3juhI5CjQU8C0IVJsvC@eg>0AC(+& zrtldGjLufTK4LS%c{F4#UtF-kLP%WTA`94-9U{lCPw_k>vP3;r%%bOaK2Q=AKqlR} zxcNVMd_l!Sl~X_7z%DbAe#Y|P*|k?2HbNqwpaJbVyVE50oVYVcCBQ*Pt#Q_7S!tM~ znK^Jrl7e9%LEhFqPak0{L|EB;wj%8|lrs6OiL4&05G9_&-ALa)U=8`5 z*!!G`C8CNz1_=xf^O;d>1ipH5k^fg;f6mGRxyR7>`WkW!85pdaC4m>TYukL_5`HSbYn@cLaXyC777&ivY zJ__Jho*Bn4eC6p~PB;3pmMB9O!~ALOh65L=V~0+Q^d?vWBN%y-t@rO=BE~O_T;jYj z>$Wdr;1=fZKDJMhwK$Ku<$U-+j9Vt$!QS*Ro0T;EdwhxE8acFpl0Rh9HE9dndau8Z)+l(%&2`wlrs z=Vykfxy#ry6c+XG*I%da?)Ycu-V2cjxM1|VOR-3|X*U!c;dRxae=3USwA8~uu{T$L zU)C#BJ4eFPmtYtAx+phVnlzLv7Re!|F^R2bV}q8wU%F*EXtT-IbCDVihL364*nX@U z9mAAg-hPMKai5VfvkZD{IZ&}?L|gPf(Bp9j?i2COwXvJoQ1@NozZsyiJp2N8^UC;!=ie>v`yR=EC1oL#8MndG87}xTNQ2;k zK!AwrFgNyeS5D~@7q0TUca=ZukA2xd8gHJkryyt+o?`w_H*+k=&>Uw(mPPT8ThuI< zwR~RBIwaE#j7V=!6UZz{WSd}SavC9g%0n8~RhVodJ>7v{Om`jWo1hj({b%vODGyQ7 zgwmjm&uEs-1BTwg#-=w1uyS{~BdqCPqCsH!sA-iViun!IXd_U(CL8h{$3HIFds>IK=2a56!1mv3U~G6(f0{&PwWp-}`=U;FAvZwpO&nzWKb4=-=sz^+{=(@Wm}07F~)W0=pw>V<*KTovSzt6(e0z*-6OpLZ?{>R~P`XcLponfMY3 z=tFtSj=@z?FB9SYHU)8BX(u|C*Dj3I^sMqD=tEP-$3m8rbPPpWL~kNPJOEFipBq?` zxn;?pvWRxaP_T?-8CA2fUdHrZ_SvCylfHGQa$jvYT)sPxegAhXDVYF8Svd+uMg?RG zSP0=)AIjGNv17jSt{y>Wzj~FmdR+&6MeFQw-%gF>u0}m6$&vTzFbRx_`3y!J+l1;MIIyWhM?xgsrNR64=oUCKy zy?J%z<=|rVWK(O?S)2ePz*L(<9V%Idnb6f10q$7Crd7WS2X{KhU*slJg(-R)H%2ShAoc<6NK-1+0fyq)P`?W5 z1~fAyFtxjtFr2mihZo-C%JkWi6t?RuPU2UF(It$Sk#gMblhQc*=*(go9R?*TvqlXe zvQ)%Xg~YQo&zS65v>i`bSm;PFVI%;A-Z#c)aX$QDXe%e(pf;PU3!FO;qw+>+$c+ir4KX zfbuT8{ruq<-KefR-jexGf^cZuIGT^HO?i>BHuOUa9sKhNDNXo*r56PNi;k*w&T81 zO$O*fK&EKNUd$z<9Pycj$!*!#ou;g7$!Ut*n=20G%wKxX$`4mPdoQe8ycIsg(noiz z2e?M^DI;5TlFGp3N#sqMBcUb&68+H0u?Qy@O$z%1Y&!a}$#NF4` z(i22GYp~GEg5?n8LE0qxDu(y!qS)4%z(AF;)F~{qO+Dc5krwuok9-~YLdu{)wrCDK zLX#}KCyDeJ7QbTIikQ!R>mw31&%PkwJr#5?^Z;aX8i(?HLc+{oSO70}!PDA7(^?c8 zC;};yn@fqXmwSUg5P{-1(!jxm*cvuOmv06?`*7_AKReX1b16vhgz$bSp*ox}lum(# zx+s9q<0SP3x;m@p_`;Te0~Ul?#EME5fio}KI!y@~+c||P{0lcvGRl@Fwpf6&?H{ySa{p&U;pUG;uQAF3 zy8g2-9NDt3eu@c`Aw-J#Kl>uPXzPshye~eG~1%)L( z{QK(D`*83eVReWZUNC{?$zT%{tc*n?drgWwgcy#lm)%K>$XjAZPu)4??(Sm7WB^7I zv=EduCF!)0o+Ql_Zs}g*csGr=D0MSUDw&uCDoy^Z7r~(`6$*Zw{{nk;%+ehkrWGW@ z-Y{hRa>@Mbg_Q?>@$m6YY#nJqJRF6KOQhuo=4(jGVtPqtqs&>i11~y7zaPhb6H=b8 zv0=BV@A7iHgPDW3)qR)b{gfoGz^x~+9?#-@tRcwlHtA2em)|n-Y}@rM(>@q1O13h7 z+scewaDh?k7U&N9V)a7mi3x&UQ4cK&5!lVE$)d$WQG`%1PhRw905TM$hfpsCI8)}F zr?>*>#P2}FpQoCwOVp_&)VAPb^1iQM+k;D|F#g(>{q=QlCmBx9nq0@56Wk!=Ki(9t z)rHF0+zpflHii_nPf!L)&jWg zSe#}GE$x*OYEa#@?2%FrFOd+3KZ5woeCarMx{QY7Yg#&^{F2ey59YH>pn218H@dIS zyiTuz8y}j<)X&6u$fFHAw5d9dZw_`HeRqvkuVYLelj~+TYW~BVZ?v5}u4QGPJZ9BB zyd5jM&W-NcGR~AHL~I(4!ZO7&;<=5F*J@`jPRNI2=>yz+G*W!Hi?L zKA`3G35A5T^g^V%x-zV(&S=7FVOTP(%M_rlfcA7IP8<0C<-X;VqX078mMFyW%apIn z<#CgfQ;G#xy-*TKnr#ur1v4j8-4pZv*zH#NG2kAP8fJUg_R;aUNSIum9 z)aY}Li4-i%xXn0ciHHBqW+u7+S|H}b%x2a7?dtmShl3a@%UG|5ydQtwO7L+D@MmcN zODPN$gIcwWK9C4o4h#Xuy=iK$-wPCs$C6>ezEDR8@SqTC9b?zL%7fgv8&!y<d9Io`h^{X&>1qu?kCH$UVbG%^F>Mb9d`^es9K6dFqw zd+N|kbOF5{X~Y%xA-rQu>WKxP#~vHH0&ppl{r0 zq(6x<(Ny9ZRMu#4e~>@EwZ$TM!TBvS%GE{|(p9;NImRD^)V1)N2VAN#fD_$q%SWqZ zRj0qa`eAxHd_jk@bzQXM(&v)kQGn_p=e{P#eq?xLg^X$63|$2aJP|l5NVBSYU^2q` zZMi}Qt6eE|Y+-_o9EQL6jo-Jj9Ck)7>zPTFAx6(G4IU>JtKh0I#P}Gr+_Bd zE)PE;19Lmih+8Rq&p&jt<A!LwPO9jqkI5n0v*i~54SIGf95wrv%nnZDlzq&&zn4v z7=Rqkb(XJvujD1>kKXsKe1GNfreK2lCD-Z4)~|IKLy}DBEd4>D=Zam9h14@PRx%Ja zGc-fz?^aN9IJUyR6f3%_5F}!{-3}ck;0d-WX*YGqAT)wo;J2c^I$R0~Rzy?ShA;a| z-ONt=|IK>K zos`5q@8kWk{)oSPVv)E5A7WxAK=)uND7rJ*!?QqRtLdjQ(R|c|br*dIjn(=hECQPl zL>5*nkfr94!}8izOZa4%@RzbDTe%`z#Thaf-E)Gwn%!j^JI&a!qc454E{>lhe&A;PVU zmT#3R7r{^iCBTsV4Nqq@1z}wPdHfs4PKmBe%#5wA{j4m1vBp2O>+;@pOb6N;wSUt3 zPji`>pQTx{h#!arBf;S@(#QAv3xAkXozE)uTWT1*t*O_VjDONIprsZ{LtBiCcpB@I zf_J^QxuKz8bAw|84$bFtK`UU4ckTO1936yN(PVvslUxh7n&5%wg$v*w{XR)aQw=ss zPI(9!VsjZg7W7>reX_!;Bd!oO$9j)Tt^Wj51`?%tlHn`|IQv5QLJh*cF67Cv z9GN%@G-vodVU^aOP$UWwTwChi~o`gkPK2IaJHKj*! zN#`-%j)$R+)(0iY+x1Jokdx)M`<*URXWy1-^Igu&;N2#vJuZdkR19cJR@Bg<%Wu>B zibAmrBh1O$A7u0*X9b^K(avXSrkq@=$5xjur-Pr`XBbsD9m6CW#%?sD-fz{hSL~8k zTXd^;zpE_X%<8POhk{Qy>}uRcQfa{=OEi&h84s@TEqVC_S$%MF|BY&+x?D1ycnapM zz#-h%igb=EXkhM zwf}BvDTo4348GUUD=HC;(#BPc|8*FiXYHTPq*K&tEYCR6d*kQF`OKn)t`-f}pWs}G zqlA@65467~%F~U9Dj`hSFLo6UnmafP8!XBsFxEM>cbG>?_E^fugI}SVrp>(Pa}|%j z{r&uE{FwkYfc?Mzi*WW(LZPB*Kg;u>IGc_l zr3l*$)@6&DY$@=jtHOc{MyqIU*<`QsCoPKp1H7~|;|T_%>rnmrGGn5h15KYVbk7SzrVYdm4i zdCXe%o);YbRJF6v?yIBr??YQ#!Nk{}LZ~*liHjP>>BWSZi?2V>bk6lAFa=a|8Ex1m zWi&wLrUe#0b-T4C&fE3Jm6BsVi`MNt9t%)TD~RT{1$iXt`T6U1lXicXm8eZ5XT@AL zQ->|=q(gHnVYD&uoZ8MuE9g5HFLLQ8RHC6-l?Iz_Z zlZFM4zB7y5{7R2NLZV}%awrbqo=QI~iPwZdiKRqg zW_pBC6mMy)=9q1m`2s!ur6DZ(V;JXp%g2w&1>e7y3npAlYtBX`{Jv<}wC`SZ!mgK} zFJygtO4~SnPwJ5S8iPfMTplbrkdi3?Y#EIp`dIEm0%it8-S4BM?3VLC6@KSxEAcO5 zftus=Unh%Blhu_cgJ}>lX^&;YPx!X(qxX7n{X!W%i8u*c8%poWmp!!5`0bHY!XP0f zaM@$9up7kZ&IQju`D_)065KWZ@G46*yVFC)4tQ2P#^w%d6Z)`%n12AifBxc8-r`a2 zjt{OB1=rN<>ib2v$Nk4Ef5}T%$;TK$<7vtJ?#Zb$gB?av8(zOM?FNidKzszEKN6Zt ziXrVLHHLp#BebhcyWg{9NTn;FmiE2qN?mA3s%)u{4OyEMPE7#ZQEH%fbi}yhwZaW0Q%li1JBpc%G~Z1v zWQjUrOO^4~P<4#lD$yZ%mL0s5i+0(ib=9g^APhc+(ew!nv!H)Hl zewv)Lv@|<`^jY6MOi90u5++LDKig>YlmHO37Tob=f zm_I*VZsBHtTl%ei`ec)=ea4-ss5xrc zt0qx)5xA&k8?!evCEGhQrJ<_rUVGOGu2$yU@&m+HlKGt>wAcKjeMJrpkfUkX)k1>VgU`DSo_6T@x=~1(WHwfqHer(B8tLP z+L=WJGfkNqW?_|@UpE-VFx19cCI;WlE2al)ChUR$lqv0~^|Pr0@zAToic65yO{DMT z9g_&YE;Hbk;Ko9!c6?Pm!-ELiyS%{61amLh33DQ6=;w21T@&=elgI>xqAh+%q|@!m>g zs|>2qLQD~`m%Vu~G4gN@7i04f3>G!CZtUCR%(}Pou?x z+M5!rL)qx)w|Ft3`^EPLEPYz{^xskQzj@re8&>oCK(KbNUNdzKQonb9*v}SEU}yz1 zT)00sHi%MEbO>diNMS*2C7QLo8?179&`cI~{$;Etuke)(-3E<+HFymQ$Ig&Q zP&R)z>x9#G&`do%ND8z1I{Vg{f+QB28!g3RpWoKLLQGUvbV!ZG_jrZZd z9gbG9oc`CNYvrD|B*jcj_@qhhb=o|y;2X^n-9kvn0L-10^fbDD`Bh4ZAt$4&e%ntv zHz5c*q>4>$)N&r{8HI9+l|nU|5{W1+3LM5jJW^C^i1|yd3r?W=>7R{}D{2sCDPQot^@BtAnXkVPb_7_N0;i5W%a>=vq8m+%(iFKqj@iu-M2%+2QWdCXITEhE z)%a|9lc4M3-Q~)D;a6{8gW`IS-(5NrGgm&F4nIg#&^pAR=$B5>8yn`r9qJfzMTy-M zirC;1BqL0%bQa{%!qK*^`oh*%*z1DAEZWMZ+yz4)n|e|DsfnQjx_JtpjJHZT)Z}_I z#Wor@)p<@19ABnT>7H@x0@*@3HOH(huPyL0{a3@Q#DFv7LdY7JwCcQ$>SoJEhewa~ zjSML4Jr-zjEfnN~cHc>)CBa~A3VED8)@~~L>H6&Hfuoo30B(94Uy)O>ieKOCbi1S1 zc$hvx5q?03N^_@GJW@$=K_+CaspQ}RqUVpBo998MAxEN~`HKf#wj&hs_0j_u22M>c z-st`PG28KQel?IlcPM_+)uU&8e8HkPUjnKO@ z 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
  • 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/full/Angel-client/public/close_hover.svg b/full/Angel-client/public/close_hover.svg new file mode 100644 index 0000000..b26b734 --- /dev/null +++ b/full/Angel-client/public/close_hover.svg @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/full/Angel-client/public/d7b98a17f63ffc3ae473e8d5f0b23106.jpg b/full/Angel-client/public/d7b98a17f63ffc3ae473e8d5f0b23106.jpg new file mode 100644 index 0000000000000000000000000000000000000000000000000000000000000000..bf1fe6aa7a4e09a21d374aa7431bbee6b866c27bc2e80a0069fbea037405fbbc GIT binary patch literal 24555 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/full/Angel-client/public/maximize_hover.svg b/full/Angel-client/public/maximize_hover.svg new file mode 100644 index 0000000..cd21e92 --- /dev/null +++ b/full/Angel-client/public/maximize_hover.svg @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/full/Angel-client/public/minimize.svg b/full/Angel-client/public/minimize.svg new file mode 100644 index 0000000..d995af9 --- /dev/null +++ b/full/Angel-client/public/minimize.svg @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/full/Angel-client/public/minimize_hover.svg b/full/Angel-client/public/minimize_hover.svg new file mode 100644 index 0000000..a5075e9 --- /dev/null +++ b/full/Angel-client/public/minimize_hover.svg @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/full/Angel-client/public/oneko.gif b/full/Angel-client/public/oneko.gif new file mode 100644 index 0000000000000000000000000000000000000000000000000000000000000000..c387db59dcecd7311f79d8a9a6bcb8fb21590482fd2e0ce459b72bd1c7538bbe GIT binary patch literal 3316 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 yo73M10028!@k;#w literal 0 HcmV?d00001 diff --git a/full/Angel-client/src-tauri/.gitignore b/full/Angel-client/src-tauri/.gitignore new file mode 100644 index 0000000..37da797 --- /dev/null +++ b/full/Angel-client/src-tauri/.gitignore @@ -0,0 +1,7 @@ +# Generated by Cargo +# will have compiled files and executables +/target/ + +# Generated by Tauri +# will have schema files for capabilities auto-completion +/gen/schemas diff --git a/full/Angel-client/src-tauri/Cargo.lock b/full/Angel-client/src-tauri/Cargo.lock new file mode 100644 index 0000000..997c006 --- /dev/null +++ b/full/Angel-client/src-tauri/Cargo.lock @@ -0,0 +1,4319 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "angel" +version = "0.1.0" +dependencies = [ + "serde", + "serde_json", + "tauri", + "tauri-build", + "tauri-plugin-shell", +] + +[[package]] +name = "anyhow" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" + +[[package]] +name = "atk" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4af014b17dd80e8af9fa689b2d4a211ddba6eb583c1622f35d0cb543f6b17e4" +dependencies = [ + "atk-sys", + "glib", + "libc", +] + +[[package]] +name = "atk-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "251e0b7d90e33e0ba930891a505a9a35ece37b2dd37a14f3ffc306c13b980009" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "backtrace" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +dependencies = [ + "serde", +] + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2", +] + +[[package]] +name = "brotli" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "bytemuck" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" +dependencies = [ + "serde", +] + +[[package]] +name = "cairo-rs" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" +dependencies = [ + "bitflags 2.6.0", + "cairo-sys-rs", + "glib", + "libc", + "once_cell", + "thiserror", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "camino" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "cargo_toml" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a969e13a7589e9e3e4207e153bae624ade2b5622fb4684a4923b23ec3d57719" +dependencies = [ + "serde", + "toml 0.8.2", +] + +[[package]] +name = "cc" +version = "1.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b16803a61b81d9eabb7eae2588776c4c1e584b738ede45fdbb4c972cec1e9945" +dependencies = [ + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfb" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" +dependencies = [ + "byteorder", + "fnv", + "uuid", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "serde", + "windows-targets 0.52.6", +] + +[[package]] +name = "cocoa" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2" +dependencies = [ + "bitflags 2.6.0", + "block", + "cocoa-foundation", + "core-foundation", + "core-graphics", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14045fb83be07b5acf1c0884b2180461635b433455fa35d1cd6f17f1450679d" +dependencies = [ + "bitflags 2.6.0", + "block", + "core-foundation", + "core-graphics-types", + "libc", + "objc", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.6.0", + "core-foundation", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cssparser" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa 0.4.8", + "matches", + "phf 0.8.0", + "proc-macro2", + "quote", + "smallvec", + "syn 1.0.109", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +dependencies = [ + "quote", + "syn 2.0.79", +] + +[[package]] +name = "ctor" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" +dependencies = [ + "quote", + "syn 2.0.79", +] + +[[package]] +name = "darling" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.79", +] + +[[package]] +name = "darling_macro" +version = "0.20.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", + "serde", +] + +[[package]] +name = "derive_more" +version = "0.99.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.79", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dlopen2" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "dpi" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" +dependencies = [ + "serde", +] + +[[package]] +name = "dtoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" + +[[package]] +name = "dtoa-short" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" +dependencies = [ + "dtoa", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" + +[[package]] +name = "embed-resource" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4e24052d7be71f0efb50c201557f6fe7d237cfd5a64fd5bcd7fd8fe32dbbffa" +dependencies = [ + "cc", + "memchr", + "rustc_version", + "toml 0.8.2", + "vswhom", + "winreg", +] + +[[package]] +name = "embed_plist" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" + +[[package]] +name = "encoding_rs" +version = "0.8.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "erased-serde" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" +dependencies = [ + "serde", + "typeid", +] + +[[package]] +name = "fdeflate" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8090f921a24b04994d9929e204f50b498a33ea6ba559ffaa05e04f7ee7fb5ab" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "field-offset" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +dependencies = [ + "memoffset", + "rustc_version", +] + +[[package]] +name = "flate2" +version = "1.0.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fluent-uri" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17c704e9dbe1ddd863da1e6ff3567795087b1eb201ce80d8fa81162e1516500d" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gdk" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5ba081bdef3b75ebcdbfc953699ed2d7417d6bd853347a42a37d76406a33646" +dependencies = [ + "cairo-rs", + "gdk-pixbuf", + "gdk-sys", + "gio", + "glib", + "libc", + "pango", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" +dependencies = [ + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", + "once_cell", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31ff856cb3386dae1703a920f803abafcc580e9b5f711ca62ed1620c25b51ff2" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkwayland-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a90fbf5c033c65d93792192a49a8efb5bb1e640c419682a58bb96f5ae77f3d4a" +dependencies = [ + "gdk-sys", + "glib-sys", + "gobject-sys", + "libc", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkx11" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2ea8a4909d530f79921290389cbd7c34cb9d623bfe970eaae65ca5f9cd9cce" +dependencies = [ + "gdk", + "gdkx11-sys", + "gio", + "glib", + "libc", + "x11", +] + +[[package]] +name = "gdkx11-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fee8f00f4ee46cad2939b8990f5c70c94ff882c3028f3cc5abf950fa4ab53043" +dependencies = [ + "gdk-sys", + "glib-sys", + "libc", + "system-deps", + "x11", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "gio" +version = "0.18.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "gio-sys", + "glib", + "libc", + "once_cell", + "pin-project-lite", + "smallvec", + "thiserror", +] + +[[package]] +name = "gio-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + +[[package]] +name = "glib" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" +dependencies = [ + "bitflags 2.6.0", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "futures-util", + "gio-sys", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "memchr", + "once_cell", + "smallvec", + "thiserror", +] + +[[package]] +name = "glib-macros" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" +dependencies = [ + "heck 0.4.1", + "proc-macro-crate 2.0.2", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "glib-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "gobject-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gtk" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93c4f5e0e20b60e10631a5f06da7fe3dda744b05ad0ea71fee2f47adf865890c" +dependencies = [ + "atk", + "cairo-rs", + "field-offset", + "futures-channel", + "gdk", + "gdk-pixbuf", + "gio", + "glib", + "gtk-sys", + "gtk3-macros", + "libc", + "pango", + "pkg-config", +] + +[[package]] +name = "gtk-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771437bf1de2c1c0b496c11505bdf748e26066bbe942dfc8f614c9460f6d7722" +dependencies = [ + "atk-sys", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "gtk3-macros" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6063efb63db582968fb7df72e1ae68aa6360dcfb0a75143f34fc7d616bad75e" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "html5ever" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" +dependencies = [ + "log", + "mac", + "markup5ever", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +dependencies = [ + "bytes", + "fnv", + "itoa 1.0.11", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" + +[[package]] +name = "hyper" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "httparse", + "itoa 1.0.11", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core 0.52.0", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ico" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3804960be0bb5e4edb1e1ad67afd321a9ecfd875c3e65c099468fd2717d7cae" +dependencies = [ + "byteorder", + "png", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +dependencies = [ + "equivalent", + "hashbrown 0.15.0", + "serde", +] + +[[package]] +name = "infer" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc150e5ce2330295b8616ce0e3f53250e53af31759a9dbedad1621ba29151847" +dependencies = [ + "cfb", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ipnet" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" + +[[package]] +name = "is-docker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +dependencies = [ + "once_cell", +] + +[[package]] +name = "is-wsl" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" +dependencies = [ + "is-docker", + "once_cell", +] + +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "javascriptcore-rs" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" +dependencies = [ + "bitflags 1.3.2", + "glib", + "javascriptcore-rs-sys", +] + +[[package]] +name = "javascriptcore-rs-sys" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "js-sys" +version = "0.3.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "json-patch" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b1fb8864823fad91877e6caea0baca82e49e8db50f8e5c9f9a453e27d3330fc" +dependencies = [ + "jsonptr", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "jsonptr" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c6e529149475ca0b2820835d3dce8fcc41c6b943ca608d32f35b449255e4627" +dependencies = [ + "fluent-uri", + "serde", + "serde_json", +] + +[[package]] +name = "keyboard-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +dependencies = [ + "bitflags 2.6.0", + "serde", + "unicode-segmentation", +] + +[[package]] +name = "kuchikiki" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e4755b7b995046f510a7520c42b2fed58b77bd94d5a87a8eb43d2fd126da8" +dependencies = [ + "cssparser", + "html5ever", + "indexmap 1.9.3", + "matches", + "selectors", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libappindicator" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" +dependencies = [ + "glib", + "gtk", + "gtk-sys", + "libappindicator-sys", + "log", +] + +[[package]] +name = "libappindicator-sys" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" +dependencies = [ + "gtk-sys", + "libloading", + "once_cell", +] + +[[package]] +name = "libc" +version = "0.2.160" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0b21006cd1874ae9e650973c565615676dc4a274c965bb0a73796dac838ce4f" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.6.0", + "libc", +] + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "markup5ever" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" +dependencies = [ + "log", + "phf 0.10.1", + "phf_codegen 0.10.0", + "string_cache", + "string_cache_codegen", + "tendril", +] + +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +dependencies = [ + "hermit-abi", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.52.0", +] + +[[package]] +name = "muda" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8123dfd4996055ac9b15a60ad263b44b01e539007523ad7a4a533a3d93b0591" +dependencies = [ + "crossbeam-channel", + "dpi", + "gtk", + "keyboard-types", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "once_cell", + "png", + "serde", + "thiserror", + "windows-sys 0.59.0", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.6.0", + "jni-sys", + "log", + "ndk-sys", + "num_enum", + "raw-window-handle", + "thiserror", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +dependencies = [ + "proc-macro-crate 2.0.2", + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "objc-sys" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" +dependencies = [ + "cc", +] + +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.6.0", + "block2", + "libc", + "objc2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-cloud-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-core-location", + "objc2-foundation", +] + +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-core-location" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +dependencies = [ + "block2", + "objc2", + "objc2-contacts", + "objc2-foundation", +] + +[[package]] +name = "objc2-encode" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.6.0", + "block2", + "libc", + "objc2", +] + +[[package]] +name = "objc2-link-presentation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +dependencies = [ + "block2", + "objc2", + "objc2-app-kit", + "objc2-foundation", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-foundation", + "objc2-metal", +] + +[[package]] +name = "objc2-symbols" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" +dependencies = [ + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation", + "objc2-link-presentation", + "objc2-quartz-core", + "objc2-symbols", + "objc2-uniform-type-identifiers", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-uniform-type-identifiers" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-core-location", + "objc2-foundation", +] + +[[package]] +name = "objc2-web-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68bc69301064cebefc6c4c90ce9cba69225239e4b8ff99d445a2b5563797da65" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-app-kit", + "objc2-foundation", +] + +[[package]] +name = "object" +version = "0.36.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + +[[package]] +name = "open" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61a877bf6abd716642a53ef1b89fb498923a4afca5c754f9050b4d081c05c4b3" +dependencies = [ + "is-wsl", + "libc", + "pathdiff", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "os_pipe" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ffd2b0a5634335b135d5728d84c5e0fd726954b87111f7506a61c502280d982" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "pango" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" +dependencies = [ + "gio", + "glib", + "libc", + "once_cell", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "pathdiff" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61c5ce1153ab5b689d0c074c4e7fc613e942dfb7dd9eea5ab202d2ad91fe361" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "phf" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" +dependencies = [ + "phf_macros 0.8.0", + "phf_shared 0.8.0", + "proc-macro-hack", +] + +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_shared 0.10.0", +] + +[[package]] +name = "phf" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +dependencies = [ + "phf_macros 0.11.2", + "phf_shared 0.11.2", +] + +[[package]] +name = "phf_codegen" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", +] + +[[package]] +name = "phf_codegen" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", +] + +[[package]] +name = "phf_generator" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" +dependencies = [ + "phf_shared 0.8.0", + "rand 0.7.3", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared 0.10.0", + "rand 0.8.5", +] + +[[package]] +name = "phf_generator" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +dependencies = [ + "phf_shared 0.11.2", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "phf_macros" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +dependencies = [ + "phf_generator 0.11.2", + "phf_shared 0.11.2", + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "phf_shared" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" +dependencies = [ + "siphasher", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "phf_shared" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" + +[[package]] +name = "plist" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016" +dependencies = [ + "base64 0.22.1", + "indexmap 2.6.0", + "quick-xml", + "serde", + "time", +] + +[[package]] +name = "png" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52f9d46a34a05a6a57566bc2bfae066ef07585a6e3fa30fbbdff5936380623f0" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" +dependencies = [ + "toml_datetime", + "toml_edit 0.20.2", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] +name = "proc-macro2" +version = "1.0.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c3a7fc5db1e57d5a779a352c8cdb57b29aa4c40cc69c3a68a7fedc815fbf2f9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quick-xml" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", + "rand_pcg", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.15", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_pcg" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "redox_syscall" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom 0.2.15", + "libredox", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "reqwest" +version = "0.12.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f713147fbe92361e52392c73b8c9e48c04c6625bce969ef54dc901e58e042a7b" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-util", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", + "windows-registry", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schemars" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +dependencies = [ + "dyn-clone", + "indexmap 1.9.3", + "schemars_derive", + "serde", + "serde_json", + "url", + "uuid", +] + +[[package]] +name = "schemars_derive" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.79", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "selectors" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe" +dependencies = [ + "bitflags 1.3.2", + "cssparser", + "derive_more", + "fxhash", + "log", + "matches", + "phf 0.8.0", + "phf_codegen 0.8.0", + "precomputed-hash", + "servo_arc", + "smallvec", + "thin-slice", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +dependencies = [ + "serde", +] + +[[package]] +name = "serde" +version = "1.0.210" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-untagged" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2676ba99bd82f75cae5cbd2c8eda6fa0b8760f18978ea840e980dd5567b5c5b6" +dependencies = [ + "erased-serde", + "serde", + "typeid", +] + +[[package]] +name = "serde_derive" +version = "1.0.210" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "serde_json" +version = "1.0.128" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +dependencies = [ + "itoa 1.0.11", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa 1.0.11", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.6.0", + "serde", + "serde_derive", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "serialize-to-javascript" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb" +dependencies = [ + "serde", + "serde_json", + "serialize-to-javascript-impl", +] + +[[package]] +name = "serialize-to-javascript-impl" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "servo_arc" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" +dependencies = [ + "nodrop", + "stable_deref_trait", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shared_child" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09fa9338aed9a1df411814a5b2252f7cd206c55ae9bf2fa763f8de84603aa60c" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "softbuffer" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18051cdd562e792cad055119e0cdb2cfc137e44e3987532e0f9659a77931bb08" +dependencies = [ + "bytemuck", + "cfg_aliases", + "core-graphics", + "foreign-types", + "js-sys", + "log", + "objc2", + "objc2-foundation", + "objc2-quartz-core", + "raw-window-handle", + "redox_syscall", + "wasm-bindgen", + "web-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "soup3" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" +dependencies = [ + "futures-channel", + "gio", + "glib", + "libc", + "soup3-sys", +] + +[[package]] +name = "soup3-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared 0.10.0", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro2", + "quote", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "swift-rs" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" +dependencies = [ + "base64 0.21.7", + "serde", + "serde_json", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +dependencies = [ + "futures-core", +] + +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck 0.5.0", + "pkg-config", + "toml 0.8.2", + "version-compare", +] + +[[package]] +name = "tao" +version = "0.30.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0dbbebe82d02044dfa481adca1550d6dd7bd16e086bc34fa0fbecceb5a63751" +dependencies = [ + "bitflags 2.6.0", + "cocoa", + "core-foundation", + "core-graphics", + "crossbeam-channel", + "dispatch", + "dlopen2", + "dpi", + "gdkwayland-sys", + "gdkx11-sys", + "gtk", + "instant", + "jni", + "lazy_static", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "objc", + "once_cell", + "parking_lot", + "raw-window-handle", + "scopeguard", + "tao-macros", + "unicode-segmentation", + "url", + "windows", + "windows-core 0.58.0", + "windows-version", + "x11-dl", +] + +[[package]] +name = "tao-macros" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "tauri" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44438500b50708bfc1e6083844e135d1b516325aae58710dcd8fb67e050ae87c" +dependencies = [ + "anyhow", + "bytes", + "dirs", + "dunce", + "embed_plist", + "futures-util", + "getrandom 0.2.15", + "glob", + "gtk", + "heck 0.5.0", + "http", + "jni", + "libc", + "log", + "mime", + "muda", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "percent-encoding", + "plist", + "raw-window-handle", + "reqwest", + "serde", + "serde_json", + "serde_repr", + "serialize-to-javascript", + "swift-rs", + "tauri-build", + "tauri-macros", + "tauri-runtime", + "tauri-runtime-wry", + "tauri-utils", + "thiserror", + "tokio", + "tray-icon", + "url", + "urlpattern", + "webkit2gtk", + "webview2-com", + "window-vibrancy", + "windows", +] + +[[package]] +name = "tauri-build" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "935f9b3c49b22b3e2e485a57f46d61cd1ae07b1cbb2ba87387a387caf2d8c4e7" +dependencies = [ + "anyhow", + "cargo_toml", + "dirs", + "glob", + "heck 0.5.0", + "json-patch", + "schemars", + "semver", + "serde", + "serde_json", + "tauri-utils", + "tauri-winres", + "toml 0.8.2", + "walkdir", +] + +[[package]] +name = "tauri-codegen" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95d7443dd4f0b597704b6a14b964ee2ed16e99928d8e6292ae9825f09fbcd30e" +dependencies = [ + "base64 0.22.1", + "brotli", + "ico", + "json-patch", + "plist", + "png", + "proc-macro2", + "quote", + "semver", + "serde", + "serde_json", + "sha2", + "syn 2.0.79", + "tauri-utils", + "thiserror", + "time", + "url", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-macros" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d2c0963ccfc3f5194415f2cce7acc975942a8797fbabfb0aa1ed6f59326ae7f" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.79", + "tauri-codegen", + "tauri-utils", +] + +[[package]] +name = "tauri-plugin" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2e6660a409963e4d57b9bfab4addd141eeff41bd3a7fb14e13004a832cf7ef6" +dependencies = [ + "anyhow", + "glob", + "plist", + "schemars", + "serde", + "serde_json", + "tauri-utils", + "toml 0.8.2", + "walkdir", +] + +[[package]] +name = "tauri-plugin-shell" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "371fb9aca2823990a2d0db7970573be5fdf07881fcaa2b835b29631feb84aec1" +dependencies = [ + "encoding_rs", + "log", + "open", + "os_pipe", + "regex", + "schemars", + "serde", + "serde_json", + "shared_child", + "tauri", + "tauri-plugin", + "thiserror", + "tokio", +] + +[[package]] +name = "tauri-runtime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8f437293d6f5e5dce829250f4dbdce4e0b52905e297a6689cc2963eb53ac728" +dependencies = [ + "dpi", + "gtk", + "http", + "jni", + "raw-window-handle", + "serde", + "serde_json", + "tauri-utils", + "thiserror", + "url", + "windows", +] + +[[package]] +name = "tauri-runtime-wry" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1431602bcc71f2f840ad623915c9842ecc32999b867c4a787d975a17a9625cc6" +dependencies = [ + "gtk", + "http", + "jni", + "log", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "percent-encoding", + "raw-window-handle", + "softbuffer", + "tao", + "tauri-runtime", + "tauri-utils", + "url", + "webkit2gtk", + "webview2-com", + "windows", + "wry", +] + +[[package]] +name = "tauri-utils" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c38b0230d6880cf6dd07b6d7dd7789a0869f98ac12146e0d18d1c1049215a045" +dependencies = [ + "brotli", + "cargo_metadata", + "ctor", + "dunce", + "glob", + "html5ever", + "infer", + "json-patch", + "kuchikiki", + "log", + "memchr", + "phf 0.11.2", + "proc-macro2", + "quote", + "regex", + "schemars", + "semver", + "serde", + "serde-untagged", + "serde_json", + "serde_with", + "swift-rs", + "thiserror", + "toml 0.8.2", + "url", + "urlpattern", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-winres" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5993dc129e544393574288923d1ec447c857f3f644187f4fbf7d9a875fbfc4fb" +dependencies = [ + "embed-resource", + "toml 0.7.8", +] + +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + +[[package]] +name = "thin-slice" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" + +[[package]] +name = "thiserror" +version = "1.0.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa 1.0.11", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-util" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.19.15", +] + +[[package]] +name = "toml" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.20.2", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.6.0", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap 2.6.0", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tray-icon" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c92af36a182b46206723bdf8a7942e20838cde1cf062e5b97854d57eb01763b" +dependencies = [ + "core-graphics", + "crossbeam-channel", + "dirs", + "libappindicator", + "muda", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "once_cell", + "png", + "serde", + "thiserror", + "windows-sys 0.59.0", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typeid" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-ucd-ident" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" + +[[package]] +name = "unicode-ident" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" + +[[package]] +name = "unicode-normalization" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + +[[package]] +name = "url" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", +] + +[[package]] +name = "urlpattern" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" +dependencies = [ + "regex", + "serde", + "unic-ucd-ident", + "url", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "uuid" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +dependencies = [ + "getrandom 0.2.15", + "serde", +] + +[[package]] +name = "version-compare" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "vswhom" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" +dependencies = [ + "libc", + "vswhom-sys", +] + +[[package]] +name = "vswhom-sys" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3b17ae1f6c8a2b28506cd96d412eebf83b4a0ff2cbefeeb952f2f9dfa44ba18" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +dependencies = [ + "cfg-if", + "once_cell", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.79", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" + +[[package]] +name = "wasm-streams" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e072d4e72f700fb3443d8fe94a39315df013eef1104903cdb0a2abd322bbecd" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "web-sys" +version = "0.3.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webkit2gtk" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76b1bc1e54c581da1e9f179d0b38512ba358fb1af2d634a1affe42e37172361a" +dependencies = [ + "bitflags 1.3.2", + "cairo-rs", + "gdk", + "gdk-sys", + "gio", + "gio-sys", + "glib", + "glib-sys", + "gobject-sys", + "gtk", + "gtk-sys", + "javascriptcore-rs", + "libc", + "once_cell", + "soup3", + "webkit2gtk-sys", +] + +[[package]] +name = "webkit2gtk-sys" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62daa38afc514d1f8f12b8693d30d5993ff77ced33ce30cd04deebc267a6d57c" +dependencies = [ + "bitflags 1.3.2", + "cairo-sys-rs", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk-sys", + "javascriptcore-rs-sys", + "libc", + "pkg-config", + "soup3-sys", + "system-deps", +] + +[[package]] +name = "webview2-com" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f61ff3d9d0ee4efcb461b14eb3acfda2702d10dc329f339303fc3e57215ae2c" +dependencies = [ + "webview2-com-macros", + "webview2-com-sys", + "windows", + "windows-core 0.58.0", + "windows-implement", + "windows-interface", +] + +[[package]] +name = "webview2-com-macros" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "webview2-com-sys" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3a3e2eeb58f82361c93f9777014668eb3d07e7d174ee4c819575a9208011886" +dependencies = [ + "thiserror", + "windows", + "windows-core 0.58.0", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "window-vibrancy" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ea403deff7b51fff19e261330f71608ff2cdef5721d72b64180bb95be7c4150" +dependencies = [ + "objc2", + "objc2-app-kit", + "objc2-foundation", + "raw-window-handle", + "windows-sys 0.59.0", + "windows-version", +] + +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] + +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-version" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6998aa457c9ba8ff2fb9f13e9d2a930dabcea28f1d0ab94d687d8b3654844515" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "wry" +version = "0.46.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fa1c8c760041c64ce6be99f83d6cb55fe3fcd85a1ad46d32895f6e65cee87ba" +dependencies = [ + "base64 0.22.1", + "block2", + "crossbeam-channel", + "dpi", + "dunce", + "gdkx11", + "gtk", + "html5ever", + "http", + "javascriptcore-rs", + "jni", + "kuchikiki", + "libc", + "ndk", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", + "objc2-web-kit", + "once_cell", + "percent-encoding", + "raw-window-handle", + "sha2", + "soup3", + "tao-macros", + "thiserror", + "webkit2gtk", + "webkit2gtk-sys", + "webview2-com", + "windows", + "windows-core 0.58.0", + "windows-version", + "x11-dl", +] + +[[package]] +name = "x11" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.79", +] diff --git a/full/Angel-client/src-tauri/Cargo.toml b/full/Angel-client/src-tauri/Cargo.toml new file mode 100644 index 0000000..6223363 --- /dev/null +++ b/full/Angel-client/src-tauri/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "angel" +version = "0.1.0" +description = "Angel: lightweight & minimalistic, yet powerful and extensible C2 framework" +authors = ["0xkiss"] +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +# The `_lib` suffix may seem redundant but it is necessary +# to make the lib name unique and wouldn't conflict with the bin name. +# This seems to be only an issue on Windows, see https://github.com/rust-lang/cargo/issues/8519 +name = "angel_lib" +crate-type = ["staticlib", "cdylib", "rlib"] + +[build-dependencies] +tauri-build = { version = "2", features = [] } + +[dependencies] +tauri = { version = "2", features = [] } +tauri-plugin-shell = "2" +serde = { version = "1", features = ["derive"] } +serde_json = "1" diff --git a/full/Angel-client/src-tauri/build.rs b/full/Angel-client/src-tauri/build.rs new file mode 100644 index 0000000..d9f5f1d --- /dev/null +++ b/full/Angel-client/src-tauri/build.rs @@ -0,0 +1,3 @@ +fn main() { + tauri_build::build() +} diff --git a/full/Angel-client/src-tauri/bun.lockb b/full/Angel-client/src-tauri/bun.lockb new file mode 100644 index 0000000000000000000000000000000000000000000000000000000000000000..dc83c0e0215b43194988618bafd9fbb96a05563a8b34aaf3fff206a4feb56a0b GIT binary patch literal 143574 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 z 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

    AB7r&=&2eWAl)| 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 L{uJwf;h+Blx$2^r literal 0 HcmV?d00001 diff --git a/full/Angel-client/src-tauri/capabilities/default.json b/full/Angel-client/src-tauri/capabilities/default.json new file mode 100644 index 0000000..2a8c7a6 --- /dev/null +++ b/full/Angel-client/src-tauri/capabilities/default.json @@ -0,0 +1,7 @@ +{ + "$schema": "../gen/schemas/desktop-schema.json", + "identifier": "default", + "description": "Capability for the main window", + "windows": ["main"], + "permissions": ["core:default", "shell:allow-open"] +} diff --git a/full/Angel-client/src-tauri/gen/schemas/acl-manifests.json b/full/Angel-client/src-tauri/gen/schemas/acl-manifests.json new file mode 100644 index 0000000..29c8ec7 --- /dev/null +++ b/full/Angel-client/src-tauri/gen/schemas/acl-manifests.json @@ -0,0 +1 @@ +{"core":{"default_permission":{"identifier":"default","description":"Default core plugins set which includes:\n- 'core:path:default'\n- 'core:event:default'\n- 'core:window:default'\n- 'core:webview:default'\n- 'core:app:default'\n- 'core:image:default'\n- 'core:resources:default'\n- 'core:menu:default'\n- 'core:tray:default'\n","permissions":["core:path:default","core:event:default","core:window:default","core:webview:default","core:app:default","core:image:default","core:resources:default","core:menu:default","core:tray:default"]},"permissions":{},"permission_sets":{},"global_scope_schema":null},"core:app":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-version","allow-name","allow-tauri-version"]},"permissions":{"allow-app-hide":{"identifier":"allow-app-hide","description":"Enables the app_hide command without any pre-configured scope.","commands":{"allow":["app_hide"],"deny":[]}},"allow-app-show":{"identifier":"allow-app-show","description":"Enables the app_show command without any pre-configured scope.","commands":{"allow":["app_show"],"deny":[]}},"allow-default-window-icon":{"identifier":"allow-default-window-icon","description":"Enables the default_window_icon command without any pre-configured scope.","commands":{"allow":["default_window_icon"],"deny":[]}},"allow-name":{"identifier":"allow-name","description":"Enables the name command without any pre-configured scope.","commands":{"allow":["name"],"deny":[]}},"allow-set-app-theme":{"identifier":"allow-set-app-theme","description":"Enables the set_app_theme command without any pre-configured scope.","commands":{"allow":["set_app_theme"],"deny":[]}},"allow-tauri-version":{"identifier":"allow-tauri-version","description":"Enables the tauri_version command without any pre-configured scope.","commands":{"allow":["tauri_version"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-app-hide":{"identifier":"deny-app-hide","description":"Denies the app_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["app_hide"]}},"deny-app-show":{"identifier":"deny-app-show","description":"Denies the app_show command without any pre-configured scope.","commands":{"allow":[],"deny":["app_show"]}},"deny-default-window-icon":{"identifier":"deny-default-window-icon","description":"Denies the default_window_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["default_window_icon"]}},"deny-name":{"identifier":"deny-name","description":"Denies the name command without any pre-configured scope.","commands":{"allow":[],"deny":["name"]}},"deny-set-app-theme":{"identifier":"deny-set-app-theme","description":"Denies the set_app_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_app_theme"]}},"deny-tauri-version":{"identifier":"deny-tauri-version","description":"Denies the tauri_version command without any pre-configured scope.","commands":{"allow":[],"deny":["tauri_version"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"core:event":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-listen","allow-unlisten","allow-emit","allow-emit-to"]},"permissions":{"allow-emit":{"identifier":"allow-emit","description":"Enables the emit command without any pre-configured scope.","commands":{"allow":["emit"],"deny":[]}},"allow-emit-to":{"identifier":"allow-emit-to","description":"Enables the emit_to command without any pre-configured scope.","commands":{"allow":["emit_to"],"deny":[]}},"allow-listen":{"identifier":"allow-listen","description":"Enables the listen command without any pre-configured scope.","commands":{"allow":["listen"],"deny":[]}},"allow-unlisten":{"identifier":"allow-unlisten","description":"Enables the unlisten command without any pre-configured scope.","commands":{"allow":["unlisten"],"deny":[]}},"deny-emit":{"identifier":"deny-emit","description":"Denies the emit command without any pre-configured scope.","commands":{"allow":[],"deny":["emit"]}},"deny-emit-to":{"identifier":"deny-emit-to","description":"Denies the emit_to command without any pre-configured scope.","commands":{"allow":[],"deny":["emit_to"]}},"deny-listen":{"identifier":"deny-listen","description":"Denies the listen command without any pre-configured scope.","commands":{"allow":[],"deny":["listen"]}},"deny-unlisten":{"identifier":"deny-unlisten","description":"Denies the unlisten command without any pre-configured scope.","commands":{"allow":[],"deny":["unlisten"]}}},"permission_sets":{},"global_scope_schema":null},"core:image":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-from-bytes","allow-from-path","allow-rgba","allow-size"]},"permissions":{"allow-from-bytes":{"identifier":"allow-from-bytes","description":"Enables the from_bytes command without any pre-configured scope.","commands":{"allow":["from_bytes"],"deny":[]}},"allow-from-path":{"identifier":"allow-from-path","description":"Enables the from_path command without any pre-configured scope.","commands":{"allow":["from_path"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-rgba":{"identifier":"allow-rgba","description":"Enables the rgba command without any pre-configured scope.","commands":{"allow":["rgba"],"deny":[]}},"allow-size":{"identifier":"allow-size","description":"Enables the size command without any pre-configured scope.","commands":{"allow":["size"],"deny":[]}},"deny-from-bytes":{"identifier":"deny-from-bytes","description":"Denies the from_bytes command without any pre-configured scope.","commands":{"allow":[],"deny":["from_bytes"]}},"deny-from-path":{"identifier":"deny-from-path","description":"Denies the from_path command without any pre-configured scope.","commands":{"allow":[],"deny":["from_path"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-rgba":{"identifier":"deny-rgba","description":"Denies the rgba command without any pre-configured scope.","commands":{"allow":[],"deny":["rgba"]}},"deny-size":{"identifier":"deny-size","description":"Denies the size command without any pre-configured scope.","commands":{"allow":[],"deny":["size"]}}},"permission_sets":{},"global_scope_schema":null},"core:menu":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-append","allow-prepend","allow-insert","allow-remove","allow-remove-at","allow-items","allow-get","allow-popup","allow-create-default","allow-set-as-app-menu","allow-set-as-window-menu","allow-text","allow-set-text","allow-is-enabled","allow-set-enabled","allow-set-accelerator","allow-set-as-windows-menu-for-nsapp","allow-set-as-help-menu-for-nsapp","allow-is-checked","allow-set-checked","allow-set-icon"]},"permissions":{"allow-append":{"identifier":"allow-append","description":"Enables the append command without any pre-configured scope.","commands":{"allow":["append"],"deny":[]}},"allow-create-default":{"identifier":"allow-create-default","description":"Enables the create_default command without any pre-configured scope.","commands":{"allow":["create_default"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-insert":{"identifier":"allow-insert","description":"Enables the insert command without any pre-configured scope.","commands":{"allow":["insert"],"deny":[]}},"allow-is-checked":{"identifier":"allow-is-checked","description":"Enables the is_checked command without any pre-configured scope.","commands":{"allow":["is_checked"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-items":{"identifier":"allow-items","description":"Enables the items command without any pre-configured scope.","commands":{"allow":["items"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-popup":{"identifier":"allow-popup","description":"Enables the popup command without any pre-configured scope.","commands":{"allow":["popup"],"deny":[]}},"allow-prepend":{"identifier":"allow-prepend","description":"Enables the prepend command without any pre-configured scope.","commands":{"allow":["prepend"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-remove-at":{"identifier":"allow-remove-at","description":"Enables the remove_at command without any pre-configured scope.","commands":{"allow":["remove_at"],"deny":[]}},"allow-set-accelerator":{"identifier":"allow-set-accelerator","description":"Enables the set_accelerator command without any pre-configured scope.","commands":{"allow":["set_accelerator"],"deny":[]}},"allow-set-as-app-menu":{"identifier":"allow-set-as-app-menu","description":"Enables the set_as_app_menu command without any pre-configured scope.","commands":{"allow":["set_as_app_menu"],"deny":[]}},"allow-set-as-help-menu-for-nsapp":{"identifier":"allow-set-as-help-menu-for-nsapp","description":"Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_help_menu_for_nsapp"],"deny":[]}},"allow-set-as-window-menu":{"identifier":"allow-set-as-window-menu","description":"Enables the set_as_window_menu command without any pre-configured scope.","commands":{"allow":["set_as_window_menu"],"deny":[]}},"allow-set-as-windows-menu-for-nsapp":{"identifier":"allow-set-as-windows-menu-for-nsapp","description":"Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_windows_menu_for_nsapp"],"deny":[]}},"allow-set-checked":{"identifier":"allow-set-checked","description":"Enables the set_checked command without any pre-configured scope.","commands":{"allow":["set_checked"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-text":{"identifier":"allow-set-text","description":"Enables the set_text command without any pre-configured scope.","commands":{"allow":["set_text"],"deny":[]}},"allow-text":{"identifier":"allow-text","description":"Enables the text command without any pre-configured scope.","commands":{"allow":["text"],"deny":[]}},"deny-append":{"identifier":"deny-append","description":"Denies the append command without any pre-configured scope.","commands":{"allow":[],"deny":["append"]}},"deny-create-default":{"identifier":"deny-create-default","description":"Denies the create_default command without any pre-configured scope.","commands":{"allow":[],"deny":["create_default"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-insert":{"identifier":"deny-insert","description":"Denies the insert command without any pre-configured scope.","commands":{"allow":[],"deny":["insert"]}},"deny-is-checked":{"identifier":"deny-is-checked","description":"Denies the is_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["is_checked"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-items":{"identifier":"deny-items","description":"Denies the items command without any pre-configured scope.","commands":{"allow":[],"deny":["items"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-popup":{"identifier":"deny-popup","description":"Denies the popup command without any pre-configured scope.","commands":{"allow":[],"deny":["popup"]}},"deny-prepend":{"identifier":"deny-prepend","description":"Denies the prepend command without any pre-configured scope.","commands":{"allow":[],"deny":["prepend"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-remove-at":{"identifier":"deny-remove-at","description":"Denies the remove_at command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_at"]}},"deny-set-accelerator":{"identifier":"deny-set-accelerator","description":"Denies the set_accelerator command without any pre-configured scope.","commands":{"allow":[],"deny":["set_accelerator"]}},"deny-set-as-app-menu":{"identifier":"deny-set-as-app-menu","description":"Denies the set_as_app_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_app_menu"]}},"deny-set-as-help-menu-for-nsapp":{"identifier":"deny-set-as-help-menu-for-nsapp","description":"Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_help_menu_for_nsapp"]}},"deny-set-as-window-menu":{"identifier":"deny-set-as-window-menu","description":"Denies the set_as_window_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_window_menu"]}},"deny-set-as-windows-menu-for-nsapp":{"identifier":"deny-set-as-windows-menu-for-nsapp","description":"Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_windows_menu_for_nsapp"]}},"deny-set-checked":{"identifier":"deny-set-checked","description":"Denies the set_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["set_checked"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-text":{"identifier":"deny-set-text","description":"Denies the set_text command without any pre-configured scope.","commands":{"allow":[],"deny":["set_text"]}},"deny-text":{"identifier":"deny-text","description":"Denies the text command without any pre-configured scope.","commands":{"allow":[],"deny":["text"]}}},"permission_sets":{},"global_scope_schema":null},"core:path":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-resolve-directory","allow-resolve","allow-normalize","allow-join","allow-dirname","allow-extname","allow-basename","allow-is-absolute"]},"permissions":{"allow-basename":{"identifier":"allow-basename","description":"Enables the basename command without any pre-configured scope.","commands":{"allow":["basename"],"deny":[]}},"allow-dirname":{"identifier":"allow-dirname","description":"Enables the dirname command without any pre-configured scope.","commands":{"allow":["dirname"],"deny":[]}},"allow-extname":{"identifier":"allow-extname","description":"Enables the extname command without any pre-configured scope.","commands":{"allow":["extname"],"deny":[]}},"allow-is-absolute":{"identifier":"allow-is-absolute","description":"Enables the is_absolute command without any pre-configured scope.","commands":{"allow":["is_absolute"],"deny":[]}},"allow-join":{"identifier":"allow-join","description":"Enables the join command without any pre-configured scope.","commands":{"allow":["join"],"deny":[]}},"allow-normalize":{"identifier":"allow-normalize","description":"Enables the normalize command without any pre-configured scope.","commands":{"allow":["normalize"],"deny":[]}},"allow-resolve":{"identifier":"allow-resolve","description":"Enables the resolve command without any pre-configured scope.","commands":{"allow":["resolve"],"deny":[]}},"allow-resolve-directory":{"identifier":"allow-resolve-directory","description":"Enables the resolve_directory command without any pre-configured scope.","commands":{"allow":["resolve_directory"],"deny":[]}},"deny-basename":{"identifier":"deny-basename","description":"Denies the basename command without any pre-configured scope.","commands":{"allow":[],"deny":["basename"]}},"deny-dirname":{"identifier":"deny-dirname","description":"Denies the dirname command without any pre-configured scope.","commands":{"allow":[],"deny":["dirname"]}},"deny-extname":{"identifier":"deny-extname","description":"Denies the extname command without any pre-configured scope.","commands":{"allow":[],"deny":["extname"]}},"deny-is-absolute":{"identifier":"deny-is-absolute","description":"Denies the is_absolute command without any pre-configured scope.","commands":{"allow":[],"deny":["is_absolute"]}},"deny-join":{"identifier":"deny-join","description":"Denies the join command without any pre-configured scope.","commands":{"allow":[],"deny":["join"]}},"deny-normalize":{"identifier":"deny-normalize","description":"Denies the normalize command without any pre-configured scope.","commands":{"allow":[],"deny":["normalize"]}},"deny-resolve":{"identifier":"deny-resolve","description":"Denies the resolve command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve"]}},"deny-resolve-directory":{"identifier":"deny-resolve-directory","description":"Denies the resolve_directory command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve_directory"]}}},"permission_sets":{},"global_scope_schema":null},"core:resources":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-close"]},"permissions":{"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}}},"permission_sets":{},"global_scope_schema":null},"core:tray":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-get-by-id","allow-remove-by-id","allow-set-icon","allow-set-menu","allow-set-tooltip","allow-set-title","allow-set-visible","allow-set-temp-dir-path","allow-set-icon-as-template","allow-set-show-menu-on-left-click"]},"permissions":{"allow-get-by-id":{"identifier":"allow-get-by-id","description":"Enables the get_by_id command without any pre-configured scope.","commands":{"allow":["get_by_id"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-remove-by-id":{"identifier":"allow-remove-by-id","description":"Enables the remove_by_id command without any pre-configured scope.","commands":{"allow":["remove_by_id"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-icon-as-template":{"identifier":"allow-set-icon-as-template","description":"Enables the set_icon_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_as_template"],"deny":[]}},"allow-set-menu":{"identifier":"allow-set-menu","description":"Enables the set_menu command without any pre-configured scope.","commands":{"allow":["set_menu"],"deny":[]}},"allow-set-show-menu-on-left-click":{"identifier":"allow-set-show-menu-on-left-click","description":"Enables the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":["set_show_menu_on_left_click"],"deny":[]}},"allow-set-temp-dir-path":{"identifier":"allow-set-temp-dir-path","description":"Enables the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":["set_temp_dir_path"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-tooltip":{"identifier":"allow-set-tooltip","description":"Enables the set_tooltip command without any pre-configured scope.","commands":{"allow":["set_tooltip"],"deny":[]}},"allow-set-visible":{"identifier":"allow-set-visible","description":"Enables the set_visible command without any pre-configured scope.","commands":{"allow":["set_visible"],"deny":[]}},"deny-get-by-id":{"identifier":"deny-get-by-id","description":"Denies the get_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["get_by_id"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-remove-by-id":{"identifier":"deny-remove-by-id","description":"Denies the remove_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_by_id"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-icon-as-template":{"identifier":"deny-set-icon-as-template","description":"Denies the set_icon_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_as_template"]}},"deny-set-menu":{"identifier":"deny-set-menu","description":"Denies the set_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_menu"]}},"deny-set-show-menu-on-left-click":{"identifier":"deny-set-show-menu-on-left-click","description":"Denies the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":[],"deny":["set_show_menu_on_left_click"]}},"deny-set-temp-dir-path":{"identifier":"deny-set-temp-dir-path","description":"Denies the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":[],"deny":["set_temp_dir_path"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-tooltip":{"identifier":"deny-set-tooltip","description":"Denies the set_tooltip command without any pre-configured scope.","commands":{"allow":[],"deny":["set_tooltip"]}},"deny-set-visible":{"identifier":"deny-set-visible","description":"Denies the set_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible"]}}},"permission_sets":{},"global_scope_schema":null},"core:webview":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-webviews","allow-webview-position","allow-webview-size","allow-internal-toggle-devtools"]},"permissions":{"allow-clear-all-browsing-data":{"identifier":"allow-clear-all-browsing-data","description":"Enables the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":["clear_all_browsing_data"],"deny":[]}},"allow-create-webview":{"identifier":"allow-create-webview","description":"Enables the create_webview command without any pre-configured scope.","commands":{"allow":["create_webview"],"deny":[]}},"allow-create-webview-window":{"identifier":"allow-create-webview-window","description":"Enables the create_webview_window command without any pre-configured scope.","commands":{"allow":["create_webview_window"],"deny":[]}},"allow-get-all-webviews":{"identifier":"allow-get-all-webviews","description":"Enables the get_all_webviews command without any pre-configured scope.","commands":{"allow":["get_all_webviews"],"deny":[]}},"allow-internal-toggle-devtools":{"identifier":"allow-internal-toggle-devtools","description":"Enables the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":["internal_toggle_devtools"],"deny":[]}},"allow-print":{"identifier":"allow-print","description":"Enables the print command without any pre-configured scope.","commands":{"allow":["print"],"deny":[]}},"allow-reparent":{"identifier":"allow-reparent","description":"Enables the reparent command without any pre-configured scope.","commands":{"allow":["reparent"],"deny":[]}},"allow-set-webview-focus":{"identifier":"allow-set-webview-focus","description":"Enables the set_webview_focus command without any pre-configured scope.","commands":{"allow":["set_webview_focus"],"deny":[]}},"allow-set-webview-position":{"identifier":"allow-set-webview-position","description":"Enables the set_webview_position command without any pre-configured scope.","commands":{"allow":["set_webview_position"],"deny":[]}},"allow-set-webview-size":{"identifier":"allow-set-webview-size","description":"Enables the set_webview_size command without any pre-configured scope.","commands":{"allow":["set_webview_size"],"deny":[]}},"allow-set-webview-zoom":{"identifier":"allow-set-webview-zoom","description":"Enables the set_webview_zoom command without any pre-configured scope.","commands":{"allow":["set_webview_zoom"],"deny":[]}},"allow-webview-close":{"identifier":"allow-webview-close","description":"Enables the webview_close command without any pre-configured scope.","commands":{"allow":["webview_close"],"deny":[]}},"allow-webview-hide":{"identifier":"allow-webview-hide","description":"Enables the webview_hide command without any pre-configured scope.","commands":{"allow":["webview_hide"],"deny":[]}},"allow-webview-position":{"identifier":"allow-webview-position","description":"Enables the webview_position command without any pre-configured scope.","commands":{"allow":["webview_position"],"deny":[]}},"allow-webview-show":{"identifier":"allow-webview-show","description":"Enables the webview_show command without any pre-configured scope.","commands":{"allow":["webview_show"],"deny":[]}},"allow-webview-size":{"identifier":"allow-webview-size","description":"Enables the webview_size command without any pre-configured scope.","commands":{"allow":["webview_size"],"deny":[]}},"deny-clear-all-browsing-data":{"identifier":"deny-clear-all-browsing-data","description":"Denies the clear_all_browsing_data command without any pre-configured scope.","commands":{"allow":[],"deny":["clear_all_browsing_data"]}},"deny-create-webview":{"identifier":"deny-create-webview","description":"Denies the create_webview command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview"]}},"deny-create-webview-window":{"identifier":"deny-create-webview-window","description":"Denies the create_webview_window command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview_window"]}},"deny-get-all-webviews":{"identifier":"deny-get-all-webviews","description":"Denies the get_all_webviews command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_webviews"]}},"deny-internal-toggle-devtools":{"identifier":"deny-internal-toggle-devtools","description":"Denies the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_devtools"]}},"deny-print":{"identifier":"deny-print","description":"Denies the print command without any pre-configured scope.","commands":{"allow":[],"deny":["print"]}},"deny-reparent":{"identifier":"deny-reparent","description":"Denies the reparent command without any pre-configured scope.","commands":{"allow":[],"deny":["reparent"]}},"deny-set-webview-focus":{"identifier":"deny-set-webview-focus","description":"Denies the set_webview_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_focus"]}},"deny-set-webview-position":{"identifier":"deny-set-webview-position","description":"Denies the set_webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_position"]}},"deny-set-webview-size":{"identifier":"deny-set-webview-size","description":"Denies the set_webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_size"]}},"deny-set-webview-zoom":{"identifier":"deny-set-webview-zoom","description":"Denies the set_webview_zoom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_zoom"]}},"deny-webview-close":{"identifier":"deny-webview-close","description":"Denies the webview_close command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_close"]}},"deny-webview-hide":{"identifier":"deny-webview-hide","description":"Denies the webview_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_hide"]}},"deny-webview-position":{"identifier":"deny-webview-position","description":"Denies the webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_position"]}},"deny-webview-show":{"identifier":"deny-webview-show","description":"Denies the webview_show command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_show"]}},"deny-webview-size":{"identifier":"deny-webview-size","description":"Denies the webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_size"]}}},"permission_sets":{},"global_scope_schema":null},"core:window":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-get-all-windows","allow-scale-factor","allow-inner-position","allow-outer-position","allow-inner-size","allow-outer-size","allow-is-fullscreen","allow-is-minimized","allow-is-maximized","allow-is-focused","allow-is-decorated","allow-is-resizable","allow-is-maximizable","allow-is-minimizable","allow-is-closable","allow-is-visible","allow-is-enabled","allow-title","allow-current-monitor","allow-primary-monitor","allow-monitor-from-point","allow-available-monitors","allow-cursor-position","allow-theme","allow-internal-toggle-maximize"]},"permissions":{"allow-available-monitors":{"identifier":"allow-available-monitors","description":"Enables the available_monitors command without any pre-configured scope.","commands":{"allow":["available_monitors"],"deny":[]}},"allow-center":{"identifier":"allow-center","description":"Enables the center command without any pre-configured scope.","commands":{"allow":["center"],"deny":[]}},"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-current-monitor":{"identifier":"allow-current-monitor","description":"Enables the current_monitor command without any pre-configured scope.","commands":{"allow":["current_monitor"],"deny":[]}},"allow-cursor-position":{"identifier":"allow-cursor-position","description":"Enables the cursor_position command without any pre-configured scope.","commands":{"allow":["cursor_position"],"deny":[]}},"allow-destroy":{"identifier":"allow-destroy","description":"Enables the destroy command without any pre-configured scope.","commands":{"allow":["destroy"],"deny":[]}},"allow-get-all-windows":{"identifier":"allow-get-all-windows","description":"Enables the get_all_windows command without any pre-configured scope.","commands":{"allow":["get_all_windows"],"deny":[]}},"allow-hide":{"identifier":"allow-hide","description":"Enables the hide command without any pre-configured scope.","commands":{"allow":["hide"],"deny":[]}},"allow-inner-position":{"identifier":"allow-inner-position","description":"Enables the inner_position command without any pre-configured scope.","commands":{"allow":["inner_position"],"deny":[]}},"allow-inner-size":{"identifier":"allow-inner-size","description":"Enables the inner_size command without any pre-configured scope.","commands":{"allow":["inner_size"],"deny":[]}},"allow-internal-toggle-maximize":{"identifier":"allow-internal-toggle-maximize","description":"Enables the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":["internal_toggle_maximize"],"deny":[]}},"allow-is-closable":{"identifier":"allow-is-closable","description":"Enables the is_closable command without any pre-configured scope.","commands":{"allow":["is_closable"],"deny":[]}},"allow-is-decorated":{"identifier":"allow-is-decorated","description":"Enables the is_decorated command without any pre-configured scope.","commands":{"allow":["is_decorated"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-is-focused":{"identifier":"allow-is-focused","description":"Enables the is_focused command without any pre-configured scope.","commands":{"allow":["is_focused"],"deny":[]}},"allow-is-fullscreen":{"identifier":"allow-is-fullscreen","description":"Enables the is_fullscreen command without any pre-configured scope.","commands":{"allow":["is_fullscreen"],"deny":[]}},"allow-is-maximizable":{"identifier":"allow-is-maximizable","description":"Enables the is_maximizable command without any pre-configured scope.","commands":{"allow":["is_maximizable"],"deny":[]}},"allow-is-maximized":{"identifier":"allow-is-maximized","description":"Enables the is_maximized command without any pre-configured scope.","commands":{"allow":["is_maximized"],"deny":[]}},"allow-is-minimizable":{"identifier":"allow-is-minimizable","description":"Enables the is_minimizable command without any pre-configured scope.","commands":{"allow":["is_minimizable"],"deny":[]}},"allow-is-minimized":{"identifier":"allow-is-minimized","description":"Enables the is_minimized command without any pre-configured scope.","commands":{"allow":["is_minimized"],"deny":[]}},"allow-is-resizable":{"identifier":"allow-is-resizable","description":"Enables the is_resizable command without any pre-configured scope.","commands":{"allow":["is_resizable"],"deny":[]}},"allow-is-visible":{"identifier":"allow-is-visible","description":"Enables the is_visible command without any pre-configured scope.","commands":{"allow":["is_visible"],"deny":[]}},"allow-maximize":{"identifier":"allow-maximize","description":"Enables the maximize command without any pre-configured scope.","commands":{"allow":["maximize"],"deny":[]}},"allow-minimize":{"identifier":"allow-minimize","description":"Enables the minimize command without any pre-configured scope.","commands":{"allow":["minimize"],"deny":[]}},"allow-monitor-from-point":{"identifier":"allow-monitor-from-point","description":"Enables the monitor_from_point command without any pre-configured scope.","commands":{"allow":["monitor_from_point"],"deny":[]}},"allow-outer-position":{"identifier":"allow-outer-position","description":"Enables the outer_position command without any pre-configured scope.","commands":{"allow":["outer_position"],"deny":[]}},"allow-outer-size":{"identifier":"allow-outer-size","description":"Enables the outer_size command without any pre-configured scope.","commands":{"allow":["outer_size"],"deny":[]}},"allow-primary-monitor":{"identifier":"allow-primary-monitor","description":"Enables the primary_monitor command without any pre-configured scope.","commands":{"allow":["primary_monitor"],"deny":[]}},"allow-request-user-attention":{"identifier":"allow-request-user-attention","description":"Enables the request_user_attention command without any pre-configured scope.","commands":{"allow":["request_user_attention"],"deny":[]}},"allow-scale-factor":{"identifier":"allow-scale-factor","description":"Enables the scale_factor command without any pre-configured scope.","commands":{"allow":["scale_factor"],"deny":[]}},"allow-set-always-on-bottom":{"identifier":"allow-set-always-on-bottom","description":"Enables the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":["set_always_on_bottom"],"deny":[]}},"allow-set-always-on-top":{"identifier":"allow-set-always-on-top","description":"Enables the set_always_on_top command without any pre-configured scope.","commands":{"allow":["set_always_on_top"],"deny":[]}},"allow-set-closable":{"identifier":"allow-set-closable","description":"Enables the set_closable command without any pre-configured scope.","commands":{"allow":["set_closable"],"deny":[]}},"allow-set-content-protected":{"identifier":"allow-set-content-protected","description":"Enables the set_content_protected command without any pre-configured scope.","commands":{"allow":["set_content_protected"],"deny":[]}},"allow-set-cursor-grab":{"identifier":"allow-set-cursor-grab","description":"Enables the set_cursor_grab command without any pre-configured scope.","commands":{"allow":["set_cursor_grab"],"deny":[]}},"allow-set-cursor-icon":{"identifier":"allow-set-cursor-icon","description":"Enables the set_cursor_icon command without any pre-configured scope.","commands":{"allow":["set_cursor_icon"],"deny":[]}},"allow-set-cursor-position":{"identifier":"allow-set-cursor-position","description":"Enables the set_cursor_position command without any pre-configured scope.","commands":{"allow":["set_cursor_position"],"deny":[]}},"allow-set-cursor-visible":{"identifier":"allow-set-cursor-visible","description":"Enables the set_cursor_visible command without any pre-configured scope.","commands":{"allow":["set_cursor_visible"],"deny":[]}},"allow-set-decorations":{"identifier":"allow-set-decorations","description":"Enables the set_decorations command without any pre-configured scope.","commands":{"allow":["set_decorations"],"deny":[]}},"allow-set-effects":{"identifier":"allow-set-effects","description":"Enables the set_effects command without any pre-configured scope.","commands":{"allow":["set_effects"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-focus":{"identifier":"allow-set-focus","description":"Enables the set_focus command without any pre-configured scope.","commands":{"allow":["set_focus"],"deny":[]}},"allow-set-fullscreen":{"identifier":"allow-set-fullscreen","description":"Enables the set_fullscreen command without any pre-configured scope.","commands":{"allow":["set_fullscreen"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-ignore-cursor-events":{"identifier":"allow-set-ignore-cursor-events","description":"Enables the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":["set_ignore_cursor_events"],"deny":[]}},"allow-set-max-size":{"identifier":"allow-set-max-size","description":"Enables the set_max_size command without any pre-configured scope.","commands":{"allow":["set_max_size"],"deny":[]}},"allow-set-maximizable":{"identifier":"allow-set-maximizable","description":"Enables the set_maximizable command without any pre-configured scope.","commands":{"allow":["set_maximizable"],"deny":[]}},"allow-set-min-size":{"identifier":"allow-set-min-size","description":"Enables the set_min_size command without any pre-configured scope.","commands":{"allow":["set_min_size"],"deny":[]}},"allow-set-minimizable":{"identifier":"allow-set-minimizable","description":"Enables the set_minimizable command without any pre-configured scope.","commands":{"allow":["set_minimizable"],"deny":[]}},"allow-set-position":{"identifier":"allow-set-position","description":"Enables the set_position command without any pre-configured scope.","commands":{"allow":["set_position"],"deny":[]}},"allow-set-progress-bar":{"identifier":"allow-set-progress-bar","description":"Enables the set_progress_bar command without any pre-configured scope.","commands":{"allow":["set_progress_bar"],"deny":[]}},"allow-set-resizable":{"identifier":"allow-set-resizable","description":"Enables the set_resizable command without any pre-configured scope.","commands":{"allow":["set_resizable"],"deny":[]}},"allow-set-shadow":{"identifier":"allow-set-shadow","description":"Enables the set_shadow command without any pre-configured scope.","commands":{"allow":["set_shadow"],"deny":[]}},"allow-set-size":{"identifier":"allow-set-size","description":"Enables the set_size command without any pre-configured scope.","commands":{"allow":["set_size"],"deny":[]}},"allow-set-size-constraints":{"identifier":"allow-set-size-constraints","description":"Enables the set_size_constraints command without any pre-configured scope.","commands":{"allow":["set_size_constraints"],"deny":[]}},"allow-set-skip-taskbar":{"identifier":"allow-set-skip-taskbar","description":"Enables the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":["set_skip_taskbar"],"deny":[]}},"allow-set-theme":{"identifier":"allow-set-theme","description":"Enables the set_theme command without any pre-configured scope.","commands":{"allow":["set_theme"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-title-bar-style":{"identifier":"allow-set-title-bar-style","description":"Enables the set_title_bar_style command without any pre-configured scope.","commands":{"allow":["set_title_bar_style"],"deny":[]}},"allow-set-visible-on-all-workspaces":{"identifier":"allow-set-visible-on-all-workspaces","description":"Enables the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":["set_visible_on_all_workspaces"],"deny":[]}},"allow-show":{"identifier":"allow-show","description":"Enables the show command without any pre-configured scope.","commands":{"allow":["show"],"deny":[]}},"allow-start-dragging":{"identifier":"allow-start-dragging","description":"Enables the start_dragging command without any pre-configured scope.","commands":{"allow":["start_dragging"],"deny":[]}},"allow-start-resize-dragging":{"identifier":"allow-start-resize-dragging","description":"Enables the start_resize_dragging command without any pre-configured scope.","commands":{"allow":["start_resize_dragging"],"deny":[]}},"allow-theme":{"identifier":"allow-theme","description":"Enables the theme command without any pre-configured scope.","commands":{"allow":["theme"],"deny":[]}},"allow-title":{"identifier":"allow-title","description":"Enables the title command without any pre-configured scope.","commands":{"allow":["title"],"deny":[]}},"allow-toggle-maximize":{"identifier":"allow-toggle-maximize","description":"Enables the toggle_maximize command without any pre-configured scope.","commands":{"allow":["toggle_maximize"],"deny":[]}},"allow-unmaximize":{"identifier":"allow-unmaximize","description":"Enables the unmaximize command without any pre-configured scope.","commands":{"allow":["unmaximize"],"deny":[]}},"allow-unminimize":{"identifier":"allow-unminimize","description":"Enables the unminimize command without any pre-configured scope.","commands":{"allow":["unminimize"],"deny":[]}},"deny-available-monitors":{"identifier":"deny-available-monitors","description":"Denies the available_monitors command without any pre-configured scope.","commands":{"allow":[],"deny":["available_monitors"]}},"deny-center":{"identifier":"deny-center","description":"Denies the center command without any pre-configured scope.","commands":{"allow":[],"deny":["center"]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-current-monitor":{"identifier":"deny-current-monitor","description":"Denies the current_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["current_monitor"]}},"deny-cursor-position":{"identifier":"deny-cursor-position","description":"Denies the cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["cursor_position"]}},"deny-destroy":{"identifier":"deny-destroy","description":"Denies the destroy command without any pre-configured scope.","commands":{"allow":[],"deny":["destroy"]}},"deny-get-all-windows":{"identifier":"deny-get-all-windows","description":"Denies the get_all_windows command without any pre-configured scope.","commands":{"allow":[],"deny":["get_all_windows"]}},"deny-hide":{"identifier":"deny-hide","description":"Denies the hide command without any pre-configured scope.","commands":{"allow":[],"deny":["hide"]}},"deny-inner-position":{"identifier":"deny-inner-position","description":"Denies the inner_position command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_position"]}},"deny-inner-size":{"identifier":"deny-inner-size","description":"Denies the inner_size command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_size"]}},"deny-internal-toggle-maximize":{"identifier":"deny-internal-toggle-maximize","description":"Denies the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_maximize"]}},"deny-is-closable":{"identifier":"deny-is-closable","description":"Denies the is_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_closable"]}},"deny-is-decorated":{"identifier":"deny-is-decorated","description":"Denies the is_decorated command without any pre-configured scope.","commands":{"allow":[],"deny":["is_decorated"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-is-focused":{"identifier":"deny-is-focused","description":"Denies the is_focused command without any pre-configured scope.","commands":{"allow":[],"deny":["is_focused"]}},"deny-is-fullscreen":{"identifier":"deny-is-fullscreen","description":"Denies the is_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["is_fullscreen"]}},"deny-is-maximizable":{"identifier":"deny-is-maximizable","description":"Denies the is_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximizable"]}},"deny-is-maximized":{"identifier":"deny-is-maximized","description":"Denies the is_maximized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximized"]}},"deny-is-minimizable":{"identifier":"deny-is-minimizable","description":"Denies the is_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimizable"]}},"deny-is-minimized":{"identifier":"deny-is-minimized","description":"Denies the is_minimized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimized"]}},"deny-is-resizable":{"identifier":"deny-is-resizable","description":"Denies the is_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_resizable"]}},"deny-is-visible":{"identifier":"deny-is-visible","description":"Denies the is_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["is_visible"]}},"deny-maximize":{"identifier":"deny-maximize","description":"Denies the maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["maximize"]}},"deny-minimize":{"identifier":"deny-minimize","description":"Denies the minimize command without any pre-configured scope.","commands":{"allow":[],"deny":["minimize"]}},"deny-monitor-from-point":{"identifier":"deny-monitor-from-point","description":"Denies the monitor_from_point command without any pre-configured scope.","commands":{"allow":[],"deny":["monitor_from_point"]}},"deny-outer-position":{"identifier":"deny-outer-position","description":"Denies the outer_position command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_position"]}},"deny-outer-size":{"identifier":"deny-outer-size","description":"Denies the outer_size command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_size"]}},"deny-primary-monitor":{"identifier":"deny-primary-monitor","description":"Denies the primary_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["primary_monitor"]}},"deny-request-user-attention":{"identifier":"deny-request-user-attention","description":"Denies the request_user_attention command without any pre-configured scope.","commands":{"allow":[],"deny":["request_user_attention"]}},"deny-scale-factor":{"identifier":"deny-scale-factor","description":"Denies the scale_factor command without any pre-configured scope.","commands":{"allow":[],"deny":["scale_factor"]}},"deny-set-always-on-bottom":{"identifier":"deny-set-always-on-bottom","description":"Denies the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_bottom"]}},"deny-set-always-on-top":{"identifier":"deny-set-always-on-top","description":"Denies the set_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_top"]}},"deny-set-closable":{"identifier":"deny-set-closable","description":"Denies the set_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_closable"]}},"deny-set-content-protected":{"identifier":"deny-set-content-protected","description":"Denies the set_content_protected command without any pre-configured scope.","commands":{"allow":[],"deny":["set_content_protected"]}},"deny-set-cursor-grab":{"identifier":"deny-set-cursor-grab","description":"Denies the set_cursor_grab command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_grab"]}},"deny-set-cursor-icon":{"identifier":"deny-set-cursor-icon","description":"Denies the set_cursor_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_icon"]}},"deny-set-cursor-position":{"identifier":"deny-set-cursor-position","description":"Denies the set_cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_position"]}},"deny-set-cursor-visible":{"identifier":"deny-set-cursor-visible","description":"Denies the set_cursor_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_visible"]}},"deny-set-decorations":{"identifier":"deny-set-decorations","description":"Denies the set_decorations command without any pre-configured scope.","commands":{"allow":[],"deny":["set_decorations"]}},"deny-set-effects":{"identifier":"deny-set-effects","description":"Denies the set_effects command without any pre-configured scope.","commands":{"allow":[],"deny":["set_effects"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-focus":{"identifier":"deny-set-focus","description":"Denies the set_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focus"]}},"deny-set-fullscreen":{"identifier":"deny-set-fullscreen","description":"Denies the set_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_fullscreen"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-ignore-cursor-events":{"identifier":"deny-set-ignore-cursor-events","description":"Denies the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":[],"deny":["set_ignore_cursor_events"]}},"deny-set-max-size":{"identifier":"deny-set-max-size","description":"Denies the set_max_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_max_size"]}},"deny-set-maximizable":{"identifier":"deny-set-maximizable","description":"Denies the set_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_maximizable"]}},"deny-set-min-size":{"identifier":"deny-set-min-size","description":"Denies the set_min_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_min_size"]}},"deny-set-minimizable":{"identifier":"deny-set-minimizable","description":"Denies the set_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_minimizable"]}},"deny-set-position":{"identifier":"deny-set-position","description":"Denies the set_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_position"]}},"deny-set-progress-bar":{"identifier":"deny-set-progress-bar","description":"Denies the set_progress_bar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_progress_bar"]}},"deny-set-resizable":{"identifier":"deny-set-resizable","description":"Denies the set_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_resizable"]}},"deny-set-shadow":{"identifier":"deny-set-shadow","description":"Denies the set_shadow command without any pre-configured scope.","commands":{"allow":[],"deny":["set_shadow"]}},"deny-set-size":{"identifier":"deny-set-size","description":"Denies the set_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size"]}},"deny-set-size-constraints":{"identifier":"deny-set-size-constraints","description":"Denies the set_size_constraints command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size_constraints"]}},"deny-set-skip-taskbar":{"identifier":"deny-set-skip-taskbar","description":"Denies the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_skip_taskbar"]}},"deny-set-theme":{"identifier":"deny-set-theme","description":"Denies the set_theme command without any pre-configured scope.","commands":{"allow":[],"deny":["set_theme"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-title-bar-style":{"identifier":"deny-set-title-bar-style","description":"Denies the set_title_bar_style command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title_bar_style"]}},"deny-set-visible-on-all-workspaces":{"identifier":"deny-set-visible-on-all-workspaces","description":"Denies the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible_on_all_workspaces"]}},"deny-show":{"identifier":"deny-show","description":"Denies the show command without any pre-configured scope.","commands":{"allow":[],"deny":["show"]}},"deny-start-dragging":{"identifier":"deny-start-dragging","description":"Denies the start_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_dragging"]}},"deny-start-resize-dragging":{"identifier":"deny-start-resize-dragging","description":"Denies the start_resize_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_resize_dragging"]}},"deny-theme":{"identifier":"deny-theme","description":"Denies the theme command without any pre-configured scope.","commands":{"allow":[],"deny":["theme"]}},"deny-title":{"identifier":"deny-title","description":"Denies the title command without any pre-configured scope.","commands":{"allow":[],"deny":["title"]}},"deny-toggle-maximize":{"identifier":"deny-toggle-maximize","description":"Denies the toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["toggle_maximize"]}},"deny-unmaximize":{"identifier":"deny-unmaximize","description":"Denies the unmaximize command without any pre-configured scope.","commands":{"allow":[],"deny":["unmaximize"]}},"deny-unminimize":{"identifier":"deny-unminimize","description":"Denies the unminimize command without any pre-configured scope.","commands":{"allow":[],"deny":["unminimize"]}}},"permission_sets":{},"global_scope_schema":null},"shell":{"default_permission":{"identifier":"default","description":"This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n","permissions":["allow-open"]},"permissions":{"allow-execute":{"identifier":"allow-execute","description":"Enables the execute command without any pre-configured scope.","commands":{"allow":["execute"],"deny":[]}},"allow-kill":{"identifier":"allow-kill","description":"Enables the kill command without any pre-configured scope.","commands":{"allow":["kill"],"deny":[]}},"allow-open":{"identifier":"allow-open","description":"Enables the open command without any pre-configured scope.","commands":{"allow":["open"],"deny":[]}},"allow-spawn":{"identifier":"allow-spawn","description":"Enables the spawn command without any pre-configured scope.","commands":{"allow":["spawn"],"deny":[]}},"allow-stdin-write":{"identifier":"allow-stdin-write","description":"Enables the stdin_write command without any pre-configured scope.","commands":{"allow":["stdin_write"],"deny":[]}},"deny-execute":{"identifier":"deny-execute","description":"Denies the execute command without any pre-configured scope.","commands":{"allow":[],"deny":["execute"]}},"deny-kill":{"identifier":"deny-kill","description":"Denies the kill command without any pre-configured scope.","commands":{"allow":[],"deny":["kill"]}},"deny-open":{"identifier":"deny-open","description":"Denies the open command without any pre-configured scope.","commands":{"allow":[],"deny":["open"]}},"deny-spawn":{"identifier":"deny-spawn","description":"Denies the spawn command without any pre-configured scope.","commands":{"allow":[],"deny":["spawn"]}},"deny-stdin-write":{"identifier":"deny-stdin-write","description":"Denies the stdin_write command without any pre-configured scope.","commands":{"allow":[],"deny":["stdin_write"]}}},"permission_sets":{},"global_scope_schema":{"$schema":"http://json-schema.org/draft-07/schema#","anyOf":[{"additionalProperties":false,"properties":{"args":{"allOf":[{"$ref":"#/definitions/ShellScopeEntryAllowedArgs"}],"description":"The allowed arguments for the command execution."},"cmd":{"description":"The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.","type":"string"},"name":{"description":"The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.","type":"string"}},"required":["cmd","name"],"type":"object"},{"additionalProperties":false,"properties":{"args":{"allOf":[{"$ref":"#/definitions/ShellScopeEntryAllowedArgs"}],"description":"The allowed arguments for the command execution."},"name":{"description":"The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.","type":"string"},"sidecar":{"description":"If this command is a sidecar command.","type":"boolean"}},"required":["name","sidecar"],"type":"object"}],"definitions":{"ShellScopeEntryAllowedArg":{"anyOf":[{"description":"A non-configurable argument that is passed to the command in the order it was specified.","type":"string"},{"additionalProperties":false,"description":"A variable that is set while calling the command from the webview API.","properties":{"raw":{"default":false,"description":"Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.","type":"boolean"},"validator":{"description":"[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: ","type":"string"}},"required":["validator"],"type":"object"}],"description":"A command argument allowed to be executed by the webview API."},"ShellScopeEntryAllowedArgs":{"anyOf":[{"description":"Use a simple boolean to allow all or disable all arguments to this command configuration.","type":"boolean"},{"description":"A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.","items":{"$ref":"#/definitions/ShellScopeEntryAllowedArg"},"type":"array"}],"description":"A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration."}},"description":"Shell scope entry.","title":"ShellScopeEntry"}}} \ No newline at end of file diff --git a/full/Angel-client/src-tauri/gen/schemas/capabilities.json b/full/Angel-client/src-tauri/gen/schemas/capabilities.json new file mode 100644 index 0000000..eafd111 --- /dev/null +++ b/full/Angel-client/src-tauri/gen/schemas/capabilities.json @@ -0,0 +1 @@ +{"default":{"identifier":"default","description":"Capability for the main window","local":true,"windows":["main"],"permissions":["core:default","shell:allow-open"]}} \ No newline at end of file diff --git a/full/Angel-client/src-tauri/gen/schemas/desktop-schema.json b/full/Angel-client/src-tauri/gen/schemas/desktop-schema.json new file mode 100644 index 0000000..5a0123f --- /dev/null +++ b/full/Angel-client/src-tauri/gen/schemas/desktop-schema.json @@ -0,0 +1,2054 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CapabilityFile", + "description": "Capability formats accepted in a capability file.", + "anyOf": [ + { + "description": "A single capability.", + "allOf": [ + { + "$ref": "#/definitions/Capability" + } + ] + }, + { + "description": "A list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + }, + { + "description": "A list of capabilities.", + "type": "object", + "required": [ + "capabilities" + ], + "properties": { + "capabilities": { + "description": "The list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + } + } + } + ], + "definitions": { + "Capability": { + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, \"platforms\": [\"macOS\",\"windows\"] } ```", + "type": "object", + "required": [ + "identifier", + "permissions" + ], + "properties": { + "identifier": { + "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", + "type": "string" + }, + "description": { + "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.", + "default": "", + "type": "string" + }, + "remote": { + "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", + "anyOf": [ + { + "$ref": "#/definitions/CapabilityRemote" + }, + { + "type": "null" + } + ] + }, + "local": { + "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.", + "default": true, + "type": "boolean" + }, + "windows": { + "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nOn multiwebview windows, prefer [`Self::webviews`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "webviews": { + "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThis is only required when using on multiwebview contexts, by default all child webviews of a window that matches [`Self::windows`] are linked.\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ```", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionEntry" + }, + "uniqueItems": true + }, + "platforms": { + "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Target" + } + } + } + }, + "CapabilityRemote": { + "description": "Configuration for remote URLs that are associated with the capability.", + "type": "object", + "required": [ + "urls" + ], + "properties": { + "urls": { + "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PermissionEntry": { + "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.", + "anyOf": [ + { + "description": "Reference a permission or permission set by identifier.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + { + "description": "Reference a permission or permission set by identifier and extends its scope.", + "type": "object", + "allOf": [ + { + "if": { + "properties": { + "identifier": { + "anyOf": [ + { + "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", + "type": "string", + "const": "shell:default" + }, + { + "description": "Enables the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-execute" + }, + { + "description": "Enables the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-kill" + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-open" + }, + { + "description": "Enables the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-spawn" + }, + { + "description": "Enables the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-stdin-write" + }, + { + "description": "Denies the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-execute" + }, + { + "description": "Denies the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-kill" + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-open" + }, + { + "description": "Denies the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-spawn" + }, + { + "description": "Denies the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-stdin-write" + } + ] + } + } + }, + "then": { + "properties": { + "allow": { + "items": { + "title": "ShellScopeEntry", + "description": "Shell scope entry.", + "anyOf": [ + { + "type": "object", + "required": [ + "cmd", + "name" + ], + "properties": { + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + }, + "cmd": { + "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + }, + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "name", + "sidecar" + ], + "properties": { + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + }, + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "sidecar": { + "description": "If this command is a sidecar command.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "deny": { + "items": { + "title": "ShellScopeEntry", + "description": "Shell scope entry.", + "anyOf": [ + { + "type": "object", + "required": [ + "cmd", + "name" + ], + "properties": { + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + }, + "cmd": { + "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + }, + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "name", + "sidecar" + ], + "properties": { + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + }, + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "sidecar": { + "description": "If this command is a sidecar command.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + } + } + }, + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + } + } + }, + { + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + "allow": { + "description": "Data that defines what is allowed by the scope.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + }, + "deny": { + "description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + } + } + } + ], + "required": [ + "identifier" + ] + } + ] + }, + "Identifier": { + "description": "Permission identifier", + "oneOf": [ + { + "description": "Default core plugins set which includes:\n- 'core:path:default'\n- 'core:event:default'\n- 'core:window:default'\n- 'core:webview:default'\n- 'core:app:default'\n- 'core:image:default'\n- 'core:resources:default'\n- 'core:menu:default'\n- 'core:tray:default'\n", + "type": "string", + "const": "core:default" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:app:default" + }, + { + "description": "Enables the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-hide" + }, + { + "description": "Enables the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-show" + }, + { + "description": "Enables the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-default-window-icon" + }, + { + "description": "Enables the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-name" + }, + { + "description": "Enables the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-app-theme" + }, + { + "description": "Enables the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-tauri-version" + }, + { + "description": "Enables the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-version" + }, + { + "description": "Denies the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-hide" + }, + { + "description": "Denies the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-show" + }, + { + "description": "Denies the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-default-window-icon" + }, + { + "description": "Denies the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-name" + }, + { + "description": "Denies the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-app-theme" + }, + { + "description": "Denies the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-tauri-version" + }, + { + "description": "Denies the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-version" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:event:default" + }, + { + "description": "Enables the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit" + }, + { + "description": "Enables the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit-to" + }, + { + "description": "Enables the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-listen" + }, + { + "description": "Enables the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-unlisten" + }, + { + "description": "Denies the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit" + }, + { + "description": "Denies the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit-to" + }, + { + "description": "Denies the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-listen" + }, + { + "description": "Denies the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-unlisten" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:image:default" + }, + { + "description": "Enables the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-bytes" + }, + { + "description": "Enables the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-path" + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-new" + }, + { + "description": "Enables the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-rgba" + }, + { + "description": "Enables the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-size" + }, + { + "description": "Denies the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-bytes" + }, + { + "description": "Denies the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-path" + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-new" + }, + { + "description": "Denies the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-rgba" + }, + { + "description": "Denies the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-size" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:menu:default" + }, + { + "description": "Enables the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-append" + }, + { + "description": "Enables the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-create-default" + }, + { + "description": "Enables the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-get" + }, + { + "description": "Enables the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-insert" + }, + { + "description": "Enables the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-checked" + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-enabled" + }, + { + "description": "Enables the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-items" + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-new" + }, + { + "description": "Enables the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-popup" + }, + { + "description": "Enables the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-prepend" + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove" + }, + { + "description": "Enables the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove-at" + }, + { + "description": "Enables the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-accelerator" + }, + { + "description": "Enables the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-app-menu" + }, + { + "description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-help-menu-for-nsapp" + }, + { + "description": "Enables the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-window-menu" + }, + { + "description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-windows-menu-for-nsapp" + }, + { + "description": "Enables the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-checked" + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-enabled" + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-icon" + }, + { + "description": "Enables the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-text" + }, + { + "description": "Enables the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-text" + }, + { + "description": "Denies the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-append" + }, + { + "description": "Denies the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-create-default" + }, + { + "description": "Denies the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-get" + }, + { + "description": "Denies the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-insert" + }, + { + "description": "Denies the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-checked" + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-enabled" + }, + { + "description": "Denies the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-items" + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-new" + }, + { + "description": "Denies the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-popup" + }, + { + "description": "Denies the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-prepend" + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove" + }, + { + "description": "Denies the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove-at" + }, + { + "description": "Denies the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-accelerator" + }, + { + "description": "Denies the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-app-menu" + }, + { + "description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-help-menu-for-nsapp" + }, + { + "description": "Denies the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-window-menu" + }, + { + "description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-windows-menu-for-nsapp" + }, + { + "description": "Denies the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-checked" + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-enabled" + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-icon" + }, + { + "description": "Denies the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-text" + }, + { + "description": "Denies the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-text" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:path:default" + }, + { + "description": "Enables the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-basename" + }, + { + "description": "Enables the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-dirname" + }, + { + "description": "Enables the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-extname" + }, + { + "description": "Enables the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-is-absolute" + }, + { + "description": "Enables the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-join" + }, + { + "description": "Enables the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-normalize" + }, + { + "description": "Enables the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve" + }, + { + "description": "Enables the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve-directory" + }, + { + "description": "Denies the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-basename" + }, + { + "description": "Denies the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-dirname" + }, + { + "description": "Denies the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-extname" + }, + { + "description": "Denies the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-is-absolute" + }, + { + "description": "Denies the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-join" + }, + { + "description": "Denies the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-normalize" + }, + { + "description": "Denies the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve" + }, + { + "description": "Denies the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve-directory" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:resources:default" + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:allow-close" + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:deny-close" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:tray:default" + }, + { + "description": "Enables the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-get-by-id" + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-new" + }, + { + "description": "Enables the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-remove-by-id" + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon" + }, + { + "description": "Enables the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon-as-template" + }, + { + "description": "Enables the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-menu" + }, + { + "description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-show-menu-on-left-click" + }, + { + "description": "Enables the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-temp-dir-path" + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-title" + }, + { + "description": "Enables the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-tooltip" + }, + { + "description": "Enables the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-visible" + }, + { + "description": "Denies the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-get-by-id" + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-new" + }, + { + "description": "Denies the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-remove-by-id" + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon" + }, + { + "description": "Denies the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon-as-template" + }, + { + "description": "Denies the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-menu" + }, + { + "description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-show-menu-on-left-click" + }, + { + "description": "Denies the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-temp-dir-path" + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-title" + }, + { + "description": "Denies the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-tooltip" + }, + { + "description": "Denies the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-visible" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:webview:default" + }, + { + "description": "Enables the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-clear-all-browsing-data" + }, + { + "description": "Enables the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview" + }, + { + "description": "Enables the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview-window" + }, + { + "description": "Enables the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-get-all-webviews" + }, + { + "description": "Enables the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-internal-toggle-devtools" + }, + { + "description": "Enables the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-print" + }, + { + "description": "Enables the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-reparent" + }, + { + "description": "Enables the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-focus" + }, + { + "description": "Enables the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-position" + }, + { + "description": "Enables the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-size" + }, + { + "description": "Enables the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-zoom" + }, + { + "description": "Enables the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-close" + }, + { + "description": "Enables the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-hide" + }, + { + "description": "Enables the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-position" + }, + { + "description": "Enables the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-show" + }, + { + "description": "Enables the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-size" + }, + { + "description": "Denies the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-clear-all-browsing-data" + }, + { + "description": "Denies the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview" + }, + { + "description": "Denies the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview-window" + }, + { + "description": "Denies the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-get-all-webviews" + }, + { + "description": "Denies the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-internal-toggle-devtools" + }, + { + "description": "Denies the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-print" + }, + { + "description": "Denies the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-reparent" + }, + { + "description": "Denies the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-focus" + }, + { + "description": "Denies the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-position" + }, + { + "description": "Denies the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-size" + }, + { + "description": "Denies the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-zoom" + }, + { + "description": "Denies the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-close" + }, + { + "description": "Denies the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-hide" + }, + { + "description": "Denies the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-position" + }, + { + "description": "Denies the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-show" + }, + { + "description": "Denies the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-size" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:window:default" + }, + { + "description": "Enables the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-available-monitors" + }, + { + "description": "Enables the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-center" + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-close" + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-create" + }, + { + "description": "Enables the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-current-monitor" + }, + { + "description": "Enables the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-cursor-position" + }, + { + "description": "Enables the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-destroy" + }, + { + "description": "Enables the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-get-all-windows" + }, + { + "description": "Enables the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-hide" + }, + { + "description": "Enables the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-position" + }, + { + "description": "Enables the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-size" + }, + { + "description": "Enables the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-internal-toggle-maximize" + }, + { + "description": "Enables the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-closable" + }, + { + "description": "Enables the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-decorated" + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-enabled" + }, + { + "description": "Enables the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-focused" + }, + { + "description": "Enables the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-fullscreen" + }, + { + "description": "Enables the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximizable" + }, + { + "description": "Enables the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximized" + }, + { + "description": "Enables the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimizable" + }, + { + "description": "Enables the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimized" + }, + { + "description": "Enables the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-resizable" + }, + { + "description": "Enables the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-visible" + }, + { + "description": "Enables the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-maximize" + }, + { + "description": "Enables the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-minimize" + }, + { + "description": "Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-monitor-from-point" + }, + { + "description": "Enables the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-position" + }, + { + "description": "Enables the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-size" + }, + { + "description": "Enables the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-primary-monitor" + }, + { + "description": "Enables the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-request-user-attention" + }, + { + "description": "Enables the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-scale-factor" + }, + { + "description": "Enables the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-bottom" + }, + { + "description": "Enables the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-top" + }, + { + "description": "Enables the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-closable" + }, + { + "description": "Enables the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-content-protected" + }, + { + "description": "Enables the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-grab" + }, + { + "description": "Enables the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-icon" + }, + { + "description": "Enables the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-position" + }, + { + "description": "Enables the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-visible" + }, + { + "description": "Enables the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-decorations" + }, + { + "description": "Enables the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-effects" + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-enabled" + }, + { + "description": "Enables the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focus" + }, + { + "description": "Enables the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-fullscreen" + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-icon" + }, + { + "description": "Enables the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-ignore-cursor-events" + }, + { + "description": "Enables the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-max-size" + }, + { + "description": "Enables the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-maximizable" + }, + { + "description": "Enables the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-min-size" + }, + { + "description": "Enables the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-minimizable" + }, + { + "description": "Enables the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-position" + }, + { + "description": "Enables the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-progress-bar" + }, + { + "description": "Enables the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-resizable" + }, + { + "description": "Enables the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-shadow" + }, + { + "description": "Enables the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size" + }, + { + "description": "Enables the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size-constraints" + }, + { + "description": "Enables the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-skip-taskbar" + }, + { + "description": "Enables the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-theme" + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title" + }, + { + "description": "Enables the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title-bar-style" + }, + { + "description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-visible-on-all-workspaces" + }, + { + "description": "Enables the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-show" + }, + { + "description": "Enables the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-dragging" + }, + { + "description": "Enables the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-resize-dragging" + }, + { + "description": "Enables the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-theme" + }, + { + "description": "Enables the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-title" + }, + { + "description": "Enables the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-toggle-maximize" + }, + { + "description": "Enables the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unmaximize" + }, + { + "description": "Enables the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unminimize" + }, + { + "description": "Denies the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-available-monitors" + }, + { + "description": "Denies the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-center" + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-close" + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-create" + }, + { + "description": "Denies the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-current-monitor" + }, + { + "description": "Denies the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-cursor-position" + }, + { + "description": "Denies the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-destroy" + }, + { + "description": "Denies the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-get-all-windows" + }, + { + "description": "Denies the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-hide" + }, + { + "description": "Denies the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-position" + }, + { + "description": "Denies the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-size" + }, + { + "description": "Denies the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-internal-toggle-maximize" + }, + { + "description": "Denies the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-closable" + }, + { + "description": "Denies the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-decorated" + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-enabled" + }, + { + "description": "Denies the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-focused" + }, + { + "description": "Denies the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-fullscreen" + }, + { + "description": "Denies the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximizable" + }, + { + "description": "Denies the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximized" + }, + { + "description": "Denies the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimizable" + }, + { + "description": "Denies the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimized" + }, + { + "description": "Denies the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-resizable" + }, + { + "description": "Denies the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-visible" + }, + { + "description": "Denies the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-maximize" + }, + { + "description": "Denies the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-minimize" + }, + { + "description": "Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-monitor-from-point" + }, + { + "description": "Denies the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-position" + }, + { + "description": "Denies the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-size" + }, + { + "description": "Denies the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-primary-monitor" + }, + { + "description": "Denies the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-request-user-attention" + }, + { + "description": "Denies the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-scale-factor" + }, + { + "description": "Denies the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-bottom" + }, + { + "description": "Denies the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-top" + }, + { + "description": "Denies the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-closable" + }, + { + "description": "Denies the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-content-protected" + }, + { + "description": "Denies the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-grab" + }, + { + "description": "Denies the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-icon" + }, + { + "description": "Denies the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-position" + }, + { + "description": "Denies the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-visible" + }, + { + "description": "Denies the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-decorations" + }, + { + "description": "Denies the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-effects" + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-enabled" + }, + { + "description": "Denies the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focus" + }, + { + "description": "Denies the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-fullscreen" + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-icon" + }, + { + "description": "Denies the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-ignore-cursor-events" + }, + { + "description": "Denies the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-max-size" + }, + { + "description": "Denies the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-maximizable" + }, + { + "description": "Denies the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-min-size" + }, + { + "description": "Denies the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-minimizable" + }, + { + "description": "Denies the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-position" + }, + { + "description": "Denies the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-progress-bar" + }, + { + "description": "Denies the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-resizable" + }, + { + "description": "Denies the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-shadow" + }, + { + "description": "Denies the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size" + }, + { + "description": "Denies the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size-constraints" + }, + { + "description": "Denies the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-skip-taskbar" + }, + { + "description": "Denies the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-theme" + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title" + }, + { + "description": "Denies the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title-bar-style" + }, + { + "description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-visible-on-all-workspaces" + }, + { + "description": "Denies the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-show" + }, + { + "description": "Denies the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-dragging" + }, + { + "description": "Denies the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-resize-dragging" + }, + { + "description": "Denies the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-theme" + }, + { + "description": "Denies the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-title" + }, + { + "description": "Denies the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-toggle-maximize" + }, + { + "description": "Denies the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unmaximize" + }, + { + "description": "Denies the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unminimize" + }, + { + "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", + "type": "string", + "const": "shell:default" + }, + { + "description": "Enables the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-execute" + }, + { + "description": "Enables the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-kill" + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-open" + }, + { + "description": "Enables the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-spawn" + }, + { + "description": "Enables the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-stdin-write" + }, + { + "description": "Denies the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-execute" + }, + { + "description": "Denies the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-kill" + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-open" + }, + { + "description": "Denies the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-spawn" + }, + { + "description": "Denies the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-stdin-write" + } + ] + }, + "Value": { + "description": "All supported ACL values.", + "anyOf": [ + { + "description": "Represents a null JSON value.", + "type": "null" + }, + { + "description": "Represents a [`bool`].", + "type": "boolean" + }, + { + "description": "Represents a valid ACL [`Number`].", + "allOf": [ + { + "$ref": "#/definitions/Number" + } + ] + }, + { + "description": "Represents a [`String`].", + "type": "string" + }, + { + "description": "Represents a list of other [`Value`]s.", + "type": "array", + "items": { + "$ref": "#/definitions/Value" + } + }, + { + "description": "Represents a map of [`String`] keys to [`Value`]s.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Value" + } + } + ] + }, + "Number": { + "description": "A valid ACL number.", + "anyOf": [ + { + "description": "Represents an [`i64`].", + "type": "integer", + "format": "int64" + }, + { + "description": "Represents a [`f64`].", + "type": "number", + "format": "double" + } + ] + }, + "Target": { + "description": "Platform target.", + "oneOf": [ + { + "description": "MacOS.", + "type": "string", + "enum": [ + "macOS" + ] + }, + { + "description": "Windows.", + "type": "string", + "enum": [ + "windows" + ] + }, + { + "description": "Linux.", + "type": "string", + "enum": [ + "linux" + ] + }, + { + "description": "Android.", + "type": "string", + "enum": [ + "android" + ] + }, + { + "description": "iOS.", + "type": "string", + "enum": [ + "iOS" + ] + } + ] + }, + "ShellScopeEntryAllowedArg": { + "description": "A command argument allowed to be executed by the webview API.", + "anyOf": [ + { + "description": "A non-configurable argument that is passed to the command in the order it was specified.", + "type": "string" + }, + { + "description": "A variable that is set while calling the command from the webview API.", + "type": "object", + "required": [ + "validator" + ], + "properties": { + "raw": { + "description": "Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.", + "default": false, + "type": "boolean" + }, + "validator": { + "description": "[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: ", + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "ShellScopeEntryAllowedArgs": { + "description": "A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration.", + "anyOf": [ + { + "description": "Use a simple boolean to allow all or disable all arguments to this command configuration.", + "type": "boolean" + }, + { + "description": "A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.", + "type": "array", + "items": { + "$ref": "#/definitions/ShellScopeEntryAllowedArg" + } + } + ] + } + } +} \ No newline at end of file diff --git a/full/Angel-client/src-tauri/gen/schemas/linux-schema.json b/full/Angel-client/src-tauri/gen/schemas/linux-schema.json new file mode 100644 index 0000000..5a0123f --- /dev/null +++ b/full/Angel-client/src-tauri/gen/schemas/linux-schema.json @@ -0,0 +1,2054 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CapabilityFile", + "description": "Capability formats accepted in a capability file.", + "anyOf": [ + { + "description": "A single capability.", + "allOf": [ + { + "$ref": "#/definitions/Capability" + } + ] + }, + { + "description": "A list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + }, + { + "description": "A list of capabilities.", + "type": "object", + "required": [ + "capabilities" + ], + "properties": { + "capabilities": { + "description": "The list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + } + } + } + ], + "definitions": { + "Capability": { + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, \"platforms\": [\"macOS\",\"windows\"] } ```", + "type": "object", + "required": [ + "identifier", + "permissions" + ], + "properties": { + "identifier": { + "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", + "type": "string" + }, + "description": { + "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.", + "default": "", + "type": "string" + }, + "remote": { + "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", + "anyOf": [ + { + "$ref": "#/definitions/CapabilityRemote" + }, + { + "type": "null" + } + ] + }, + "local": { + "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.", + "default": true, + "type": "boolean" + }, + "windows": { + "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nOn multiwebview windows, prefer [`Self::webviews`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "webviews": { + "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThis is only required when using on multiwebview contexts, by default all child webviews of a window that matches [`Self::windows`] are linked.\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ```", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionEntry" + }, + "uniqueItems": true + }, + "platforms": { + "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Target" + } + } + } + }, + "CapabilityRemote": { + "description": "Configuration for remote URLs that are associated with the capability.", + "type": "object", + "required": [ + "urls" + ], + "properties": { + "urls": { + "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PermissionEntry": { + "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.", + "anyOf": [ + { + "description": "Reference a permission or permission set by identifier.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + { + "description": "Reference a permission or permission set by identifier and extends its scope.", + "type": "object", + "allOf": [ + { + "if": { + "properties": { + "identifier": { + "anyOf": [ + { + "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", + "type": "string", + "const": "shell:default" + }, + { + "description": "Enables the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-execute" + }, + { + "description": "Enables the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-kill" + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-open" + }, + { + "description": "Enables the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-spawn" + }, + { + "description": "Enables the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-stdin-write" + }, + { + "description": "Denies the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-execute" + }, + { + "description": "Denies the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-kill" + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-open" + }, + { + "description": "Denies the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-spawn" + }, + { + "description": "Denies the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-stdin-write" + } + ] + } + } + }, + "then": { + "properties": { + "allow": { + "items": { + "title": "ShellScopeEntry", + "description": "Shell scope entry.", + "anyOf": [ + { + "type": "object", + "required": [ + "cmd", + "name" + ], + "properties": { + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + }, + "cmd": { + "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + }, + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "name", + "sidecar" + ], + "properties": { + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + }, + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "sidecar": { + "description": "If this command is a sidecar command.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "deny": { + "items": { + "title": "ShellScopeEntry", + "description": "Shell scope entry.", + "anyOf": [ + { + "type": "object", + "required": [ + "cmd", + "name" + ], + "properties": { + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + }, + "cmd": { + "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + }, + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "name", + "sidecar" + ], + "properties": { + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + }, + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "sidecar": { + "description": "If this command is a sidecar command.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + } + } + }, + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + } + } + }, + { + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + "allow": { + "description": "Data that defines what is allowed by the scope.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + }, + "deny": { + "description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + } + } + } + ], + "required": [ + "identifier" + ] + } + ] + }, + "Identifier": { + "description": "Permission identifier", + "oneOf": [ + { + "description": "Default core plugins set which includes:\n- 'core:path:default'\n- 'core:event:default'\n- 'core:window:default'\n- 'core:webview:default'\n- 'core:app:default'\n- 'core:image:default'\n- 'core:resources:default'\n- 'core:menu:default'\n- 'core:tray:default'\n", + "type": "string", + "const": "core:default" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:app:default" + }, + { + "description": "Enables the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-hide" + }, + { + "description": "Enables the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-show" + }, + { + "description": "Enables the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-default-window-icon" + }, + { + "description": "Enables the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-name" + }, + { + "description": "Enables the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-app-theme" + }, + { + "description": "Enables the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-tauri-version" + }, + { + "description": "Enables the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-version" + }, + { + "description": "Denies the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-hide" + }, + { + "description": "Denies the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-show" + }, + { + "description": "Denies the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-default-window-icon" + }, + { + "description": "Denies the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-name" + }, + { + "description": "Denies the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-app-theme" + }, + { + "description": "Denies the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-tauri-version" + }, + { + "description": "Denies the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-version" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:event:default" + }, + { + "description": "Enables the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit" + }, + { + "description": "Enables the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit-to" + }, + { + "description": "Enables the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-listen" + }, + { + "description": "Enables the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-unlisten" + }, + { + "description": "Denies the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit" + }, + { + "description": "Denies the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit-to" + }, + { + "description": "Denies the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-listen" + }, + { + "description": "Denies the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-unlisten" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:image:default" + }, + { + "description": "Enables the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-bytes" + }, + { + "description": "Enables the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-path" + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-new" + }, + { + "description": "Enables the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-rgba" + }, + { + "description": "Enables the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-size" + }, + { + "description": "Denies the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-bytes" + }, + { + "description": "Denies the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-path" + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-new" + }, + { + "description": "Denies the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-rgba" + }, + { + "description": "Denies the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-size" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:menu:default" + }, + { + "description": "Enables the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-append" + }, + { + "description": "Enables the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-create-default" + }, + { + "description": "Enables the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-get" + }, + { + "description": "Enables the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-insert" + }, + { + "description": "Enables the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-checked" + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-enabled" + }, + { + "description": "Enables the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-items" + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-new" + }, + { + "description": "Enables the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-popup" + }, + { + "description": "Enables the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-prepend" + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove" + }, + { + "description": "Enables the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove-at" + }, + { + "description": "Enables the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-accelerator" + }, + { + "description": "Enables the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-app-menu" + }, + { + "description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-help-menu-for-nsapp" + }, + { + "description": "Enables the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-window-menu" + }, + { + "description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-windows-menu-for-nsapp" + }, + { + "description": "Enables the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-checked" + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-enabled" + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-icon" + }, + { + "description": "Enables the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-text" + }, + { + "description": "Enables the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-text" + }, + { + "description": "Denies the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-append" + }, + { + "description": "Denies the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-create-default" + }, + { + "description": "Denies the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-get" + }, + { + "description": "Denies the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-insert" + }, + { + "description": "Denies the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-checked" + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-enabled" + }, + { + "description": "Denies the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-items" + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-new" + }, + { + "description": "Denies the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-popup" + }, + { + "description": "Denies the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-prepend" + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove" + }, + { + "description": "Denies the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove-at" + }, + { + "description": "Denies the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-accelerator" + }, + { + "description": "Denies the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-app-menu" + }, + { + "description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-help-menu-for-nsapp" + }, + { + "description": "Denies the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-window-menu" + }, + { + "description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-windows-menu-for-nsapp" + }, + { + "description": "Denies the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-checked" + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-enabled" + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-icon" + }, + { + "description": "Denies the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-text" + }, + { + "description": "Denies the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-text" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:path:default" + }, + { + "description": "Enables the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-basename" + }, + { + "description": "Enables the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-dirname" + }, + { + "description": "Enables the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-extname" + }, + { + "description": "Enables the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-is-absolute" + }, + { + "description": "Enables the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-join" + }, + { + "description": "Enables the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-normalize" + }, + { + "description": "Enables the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve" + }, + { + "description": "Enables the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve-directory" + }, + { + "description": "Denies the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-basename" + }, + { + "description": "Denies the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-dirname" + }, + { + "description": "Denies the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-extname" + }, + { + "description": "Denies the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-is-absolute" + }, + { + "description": "Denies the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-join" + }, + { + "description": "Denies the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-normalize" + }, + { + "description": "Denies the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve" + }, + { + "description": "Denies the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve-directory" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:resources:default" + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:allow-close" + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:deny-close" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:tray:default" + }, + { + "description": "Enables the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-get-by-id" + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-new" + }, + { + "description": "Enables the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-remove-by-id" + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon" + }, + { + "description": "Enables the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon-as-template" + }, + { + "description": "Enables the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-menu" + }, + { + "description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-show-menu-on-left-click" + }, + { + "description": "Enables the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-temp-dir-path" + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-title" + }, + { + "description": "Enables the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-tooltip" + }, + { + "description": "Enables the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-visible" + }, + { + "description": "Denies the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-get-by-id" + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-new" + }, + { + "description": "Denies the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-remove-by-id" + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon" + }, + { + "description": "Denies the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon-as-template" + }, + { + "description": "Denies the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-menu" + }, + { + "description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-show-menu-on-left-click" + }, + { + "description": "Denies the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-temp-dir-path" + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-title" + }, + { + "description": "Denies the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-tooltip" + }, + { + "description": "Denies the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-visible" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:webview:default" + }, + { + "description": "Enables the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-clear-all-browsing-data" + }, + { + "description": "Enables the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview" + }, + { + "description": "Enables the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview-window" + }, + { + "description": "Enables the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-get-all-webviews" + }, + { + "description": "Enables the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-internal-toggle-devtools" + }, + { + "description": "Enables the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-print" + }, + { + "description": "Enables the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-reparent" + }, + { + "description": "Enables the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-focus" + }, + { + "description": "Enables the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-position" + }, + { + "description": "Enables the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-size" + }, + { + "description": "Enables the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-zoom" + }, + { + "description": "Enables the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-close" + }, + { + "description": "Enables the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-hide" + }, + { + "description": "Enables the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-position" + }, + { + "description": "Enables the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-show" + }, + { + "description": "Enables the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-size" + }, + { + "description": "Denies the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-clear-all-browsing-data" + }, + { + "description": "Denies the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview" + }, + { + "description": "Denies the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview-window" + }, + { + "description": "Denies the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-get-all-webviews" + }, + { + "description": "Denies the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-internal-toggle-devtools" + }, + { + "description": "Denies the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-print" + }, + { + "description": "Denies the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-reparent" + }, + { + "description": "Denies the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-focus" + }, + { + "description": "Denies the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-position" + }, + { + "description": "Denies the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-size" + }, + { + "description": "Denies the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-zoom" + }, + { + "description": "Denies the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-close" + }, + { + "description": "Denies the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-hide" + }, + { + "description": "Denies the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-position" + }, + { + "description": "Denies the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-show" + }, + { + "description": "Denies the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-size" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:window:default" + }, + { + "description": "Enables the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-available-monitors" + }, + { + "description": "Enables the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-center" + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-close" + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-create" + }, + { + "description": "Enables the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-current-monitor" + }, + { + "description": "Enables the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-cursor-position" + }, + { + "description": "Enables the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-destroy" + }, + { + "description": "Enables the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-get-all-windows" + }, + { + "description": "Enables the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-hide" + }, + { + "description": "Enables the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-position" + }, + { + "description": "Enables the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-size" + }, + { + "description": "Enables the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-internal-toggle-maximize" + }, + { + "description": "Enables the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-closable" + }, + { + "description": "Enables the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-decorated" + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-enabled" + }, + { + "description": "Enables the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-focused" + }, + { + "description": "Enables the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-fullscreen" + }, + { + "description": "Enables the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximizable" + }, + { + "description": "Enables the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximized" + }, + { + "description": "Enables the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimizable" + }, + { + "description": "Enables the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimized" + }, + { + "description": "Enables the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-resizable" + }, + { + "description": "Enables the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-visible" + }, + { + "description": "Enables the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-maximize" + }, + { + "description": "Enables the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-minimize" + }, + { + "description": "Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-monitor-from-point" + }, + { + "description": "Enables the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-position" + }, + { + "description": "Enables the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-size" + }, + { + "description": "Enables the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-primary-monitor" + }, + { + "description": "Enables the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-request-user-attention" + }, + { + "description": "Enables the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-scale-factor" + }, + { + "description": "Enables the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-bottom" + }, + { + "description": "Enables the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-top" + }, + { + "description": "Enables the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-closable" + }, + { + "description": "Enables the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-content-protected" + }, + { + "description": "Enables the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-grab" + }, + { + "description": "Enables the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-icon" + }, + { + "description": "Enables the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-position" + }, + { + "description": "Enables the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-visible" + }, + { + "description": "Enables the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-decorations" + }, + { + "description": "Enables the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-effects" + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-enabled" + }, + { + "description": "Enables the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focus" + }, + { + "description": "Enables the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-fullscreen" + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-icon" + }, + { + "description": "Enables the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-ignore-cursor-events" + }, + { + "description": "Enables the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-max-size" + }, + { + "description": "Enables the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-maximizable" + }, + { + "description": "Enables the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-min-size" + }, + { + "description": "Enables the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-minimizable" + }, + { + "description": "Enables the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-position" + }, + { + "description": "Enables the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-progress-bar" + }, + { + "description": "Enables the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-resizable" + }, + { + "description": "Enables the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-shadow" + }, + { + "description": "Enables the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size" + }, + { + "description": "Enables the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size-constraints" + }, + { + "description": "Enables the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-skip-taskbar" + }, + { + "description": "Enables the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-theme" + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title" + }, + { + "description": "Enables the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title-bar-style" + }, + { + "description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-visible-on-all-workspaces" + }, + { + "description": "Enables the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-show" + }, + { + "description": "Enables the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-dragging" + }, + { + "description": "Enables the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-resize-dragging" + }, + { + "description": "Enables the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-theme" + }, + { + "description": "Enables the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-title" + }, + { + "description": "Enables the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-toggle-maximize" + }, + { + "description": "Enables the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unmaximize" + }, + { + "description": "Enables the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unminimize" + }, + { + "description": "Denies the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-available-monitors" + }, + { + "description": "Denies the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-center" + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-close" + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-create" + }, + { + "description": "Denies the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-current-monitor" + }, + { + "description": "Denies the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-cursor-position" + }, + { + "description": "Denies the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-destroy" + }, + { + "description": "Denies the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-get-all-windows" + }, + { + "description": "Denies the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-hide" + }, + { + "description": "Denies the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-position" + }, + { + "description": "Denies the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-size" + }, + { + "description": "Denies the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-internal-toggle-maximize" + }, + { + "description": "Denies the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-closable" + }, + { + "description": "Denies the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-decorated" + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-enabled" + }, + { + "description": "Denies the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-focused" + }, + { + "description": "Denies the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-fullscreen" + }, + { + "description": "Denies the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximizable" + }, + { + "description": "Denies the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximized" + }, + { + "description": "Denies the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimizable" + }, + { + "description": "Denies the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimized" + }, + { + "description": "Denies the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-resizable" + }, + { + "description": "Denies the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-visible" + }, + { + "description": "Denies the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-maximize" + }, + { + "description": "Denies the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-minimize" + }, + { + "description": "Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-monitor-from-point" + }, + { + "description": "Denies the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-position" + }, + { + "description": "Denies the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-size" + }, + { + "description": "Denies the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-primary-monitor" + }, + { + "description": "Denies the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-request-user-attention" + }, + { + "description": "Denies the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-scale-factor" + }, + { + "description": "Denies the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-bottom" + }, + { + "description": "Denies the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-top" + }, + { + "description": "Denies the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-closable" + }, + { + "description": "Denies the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-content-protected" + }, + { + "description": "Denies the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-grab" + }, + { + "description": "Denies the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-icon" + }, + { + "description": "Denies the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-position" + }, + { + "description": "Denies the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-visible" + }, + { + "description": "Denies the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-decorations" + }, + { + "description": "Denies the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-effects" + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-enabled" + }, + { + "description": "Denies the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focus" + }, + { + "description": "Denies the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-fullscreen" + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-icon" + }, + { + "description": "Denies the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-ignore-cursor-events" + }, + { + "description": "Denies the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-max-size" + }, + { + "description": "Denies the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-maximizable" + }, + { + "description": "Denies the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-min-size" + }, + { + "description": "Denies the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-minimizable" + }, + { + "description": "Denies the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-position" + }, + { + "description": "Denies the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-progress-bar" + }, + { + "description": "Denies the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-resizable" + }, + { + "description": "Denies the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-shadow" + }, + { + "description": "Denies the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size" + }, + { + "description": "Denies the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size-constraints" + }, + { + "description": "Denies the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-skip-taskbar" + }, + { + "description": "Denies the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-theme" + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title" + }, + { + "description": "Denies the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title-bar-style" + }, + { + "description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-visible-on-all-workspaces" + }, + { + "description": "Denies the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-show" + }, + { + "description": "Denies the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-dragging" + }, + { + "description": "Denies the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-resize-dragging" + }, + { + "description": "Denies the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-theme" + }, + { + "description": "Denies the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-title" + }, + { + "description": "Denies the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-toggle-maximize" + }, + { + "description": "Denies the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unmaximize" + }, + { + "description": "Denies the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unminimize" + }, + { + "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", + "type": "string", + "const": "shell:default" + }, + { + "description": "Enables the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-execute" + }, + { + "description": "Enables the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-kill" + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-open" + }, + { + "description": "Enables the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-spawn" + }, + { + "description": "Enables the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-stdin-write" + }, + { + "description": "Denies the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-execute" + }, + { + "description": "Denies the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-kill" + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-open" + }, + { + "description": "Denies the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-spawn" + }, + { + "description": "Denies the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-stdin-write" + } + ] + }, + "Value": { + "description": "All supported ACL values.", + "anyOf": [ + { + "description": "Represents a null JSON value.", + "type": "null" + }, + { + "description": "Represents a [`bool`].", + "type": "boolean" + }, + { + "description": "Represents a valid ACL [`Number`].", + "allOf": [ + { + "$ref": "#/definitions/Number" + } + ] + }, + { + "description": "Represents a [`String`].", + "type": "string" + }, + { + "description": "Represents a list of other [`Value`]s.", + "type": "array", + "items": { + "$ref": "#/definitions/Value" + } + }, + { + "description": "Represents a map of [`String`] keys to [`Value`]s.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Value" + } + } + ] + }, + "Number": { + "description": "A valid ACL number.", + "anyOf": [ + { + "description": "Represents an [`i64`].", + "type": "integer", + "format": "int64" + }, + { + "description": "Represents a [`f64`].", + "type": "number", + "format": "double" + } + ] + }, + "Target": { + "description": "Platform target.", + "oneOf": [ + { + "description": "MacOS.", + "type": "string", + "enum": [ + "macOS" + ] + }, + { + "description": "Windows.", + "type": "string", + "enum": [ + "windows" + ] + }, + { + "description": "Linux.", + "type": "string", + "enum": [ + "linux" + ] + }, + { + "description": "Android.", + "type": "string", + "enum": [ + "android" + ] + }, + { + "description": "iOS.", + "type": "string", + "enum": [ + "iOS" + ] + } + ] + }, + "ShellScopeEntryAllowedArg": { + "description": "A command argument allowed to be executed by the webview API.", + "anyOf": [ + { + "description": "A non-configurable argument that is passed to the command in the order it was specified.", + "type": "string" + }, + { + "description": "A variable that is set while calling the command from the webview API.", + "type": "object", + "required": [ + "validator" + ], + "properties": { + "raw": { + "description": "Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.", + "default": false, + "type": "boolean" + }, + "validator": { + "description": "[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: ", + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "ShellScopeEntryAllowedArgs": { + "description": "A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration.", + "anyOf": [ + { + "description": "Use a simple boolean to allow all or disable all arguments to this command configuration.", + "type": "boolean" + }, + { + "description": "A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.", + "type": "array", + "items": { + "$ref": "#/definitions/ShellScopeEntryAllowedArg" + } + } + ] + } + } +} \ No newline at end of file diff --git a/full/Angel-client/src-tauri/gen/schemas/windows-schema.json b/full/Angel-client/src-tauri/gen/schemas/windows-schema.json new file mode 100644 index 0000000..5a0123f --- /dev/null +++ b/full/Angel-client/src-tauri/gen/schemas/windows-schema.json @@ -0,0 +1,2054 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CapabilityFile", + "description": "Capability formats accepted in a capability file.", + "anyOf": [ + { + "description": "A single capability.", + "allOf": [ + { + "$ref": "#/definitions/Capability" + } + ] + }, + { + "description": "A list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + }, + { + "description": "A list of capabilities.", + "type": "object", + "required": [ + "capabilities" + ], + "properties": { + "capabilities": { + "description": "The list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + } + } + } + ], + "definitions": { + "Capability": { + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, \"platforms\": [\"macOS\",\"windows\"] } ```", + "type": "object", + "required": [ + "identifier", + "permissions" + ], + "properties": { + "identifier": { + "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", + "type": "string" + }, + "description": { + "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.", + "default": "", + "type": "string" + }, + "remote": { + "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", + "anyOf": [ + { + "$ref": "#/definitions/CapabilityRemote" + }, + { + "type": "null" + } + ] + }, + "local": { + "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.", + "default": true, + "type": "boolean" + }, + "windows": { + "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nOn multiwebview windows, prefer [`Self::webviews`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "webviews": { + "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThis is only required when using on multiwebview contexts, by default all child webviews of a window that matches [`Self::windows`] are linked.\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ```", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionEntry" + }, + "uniqueItems": true + }, + "platforms": { + "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Target" + } + } + } + }, + "CapabilityRemote": { + "description": "Configuration for remote URLs that are associated with the capability.", + "type": "object", + "required": [ + "urls" + ], + "properties": { + "urls": { + "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PermissionEntry": { + "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.", + "anyOf": [ + { + "description": "Reference a permission or permission set by identifier.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + { + "description": "Reference a permission or permission set by identifier and extends its scope.", + "type": "object", + "allOf": [ + { + "if": { + "properties": { + "identifier": { + "anyOf": [ + { + "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", + "type": "string", + "const": "shell:default" + }, + { + "description": "Enables the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-execute" + }, + { + "description": "Enables the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-kill" + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-open" + }, + { + "description": "Enables the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-spawn" + }, + { + "description": "Enables the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-stdin-write" + }, + { + "description": "Denies the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-execute" + }, + { + "description": "Denies the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-kill" + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-open" + }, + { + "description": "Denies the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-spawn" + }, + { + "description": "Denies the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-stdin-write" + } + ] + } + } + }, + "then": { + "properties": { + "allow": { + "items": { + "title": "ShellScopeEntry", + "description": "Shell scope entry.", + "anyOf": [ + { + "type": "object", + "required": [ + "cmd", + "name" + ], + "properties": { + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + }, + "cmd": { + "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + }, + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "name", + "sidecar" + ], + "properties": { + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + }, + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "sidecar": { + "description": "If this command is a sidecar command.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + }, + "deny": { + "items": { + "title": "ShellScopeEntry", + "description": "Shell scope entry.", + "anyOf": [ + { + "type": "object", + "required": [ + "cmd", + "name" + ], + "properties": { + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + }, + "cmd": { + "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + }, + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "name", + "sidecar" + ], + "properties": { + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellScopeEntryAllowedArgs" + } + ] + }, + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "sidecar": { + "description": "If this command is a sidecar command.", + "type": "boolean" + } + }, + "additionalProperties": false + } + ] + } + } + } + }, + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + } + } + }, + { + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + "allow": { + "description": "Data that defines what is allowed by the scope.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + }, + "deny": { + "description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + } + } + } + ], + "required": [ + "identifier" + ] + } + ] + }, + "Identifier": { + "description": "Permission identifier", + "oneOf": [ + { + "description": "Default core plugins set which includes:\n- 'core:path:default'\n- 'core:event:default'\n- 'core:window:default'\n- 'core:webview:default'\n- 'core:app:default'\n- 'core:image:default'\n- 'core:resources:default'\n- 'core:menu:default'\n- 'core:tray:default'\n", + "type": "string", + "const": "core:default" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:app:default" + }, + { + "description": "Enables the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-hide" + }, + { + "description": "Enables the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-app-show" + }, + { + "description": "Enables the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-default-window-icon" + }, + { + "description": "Enables the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-name" + }, + { + "description": "Enables the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-set-app-theme" + }, + { + "description": "Enables the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-tauri-version" + }, + { + "description": "Enables the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:allow-version" + }, + { + "description": "Denies the app_hide command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-hide" + }, + { + "description": "Denies the app_show command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-app-show" + }, + { + "description": "Denies the default_window_icon command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-default-window-icon" + }, + { + "description": "Denies the name command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-name" + }, + { + "description": "Denies the set_app_theme command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-set-app-theme" + }, + { + "description": "Denies the tauri_version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-tauri-version" + }, + { + "description": "Denies the version command without any pre-configured scope.", + "type": "string", + "const": "core:app:deny-version" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:event:default" + }, + { + "description": "Enables the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit" + }, + { + "description": "Enables the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-emit-to" + }, + { + "description": "Enables the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-listen" + }, + { + "description": "Enables the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:allow-unlisten" + }, + { + "description": "Denies the emit command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit" + }, + { + "description": "Denies the emit_to command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-emit-to" + }, + { + "description": "Denies the listen command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-listen" + }, + { + "description": "Denies the unlisten command without any pre-configured scope.", + "type": "string", + "const": "core:event:deny-unlisten" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:image:default" + }, + { + "description": "Enables the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-bytes" + }, + { + "description": "Enables the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-from-path" + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-new" + }, + { + "description": "Enables the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-rgba" + }, + { + "description": "Enables the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:allow-size" + }, + { + "description": "Denies the from_bytes command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-bytes" + }, + { + "description": "Denies the from_path command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-from-path" + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-new" + }, + { + "description": "Denies the rgba command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-rgba" + }, + { + "description": "Denies the size command without any pre-configured scope.", + "type": "string", + "const": "core:image:deny-size" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:menu:default" + }, + { + "description": "Enables the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-append" + }, + { + "description": "Enables the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-create-default" + }, + { + "description": "Enables the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-get" + }, + { + "description": "Enables the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-insert" + }, + { + "description": "Enables the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-checked" + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-is-enabled" + }, + { + "description": "Enables the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-items" + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-new" + }, + { + "description": "Enables the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-popup" + }, + { + "description": "Enables the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-prepend" + }, + { + "description": "Enables the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove" + }, + { + "description": "Enables the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-remove-at" + }, + { + "description": "Enables the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-accelerator" + }, + { + "description": "Enables the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-app-menu" + }, + { + "description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-help-menu-for-nsapp" + }, + { + "description": "Enables the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-window-menu" + }, + { + "description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-as-windows-menu-for-nsapp" + }, + { + "description": "Enables the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-checked" + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-enabled" + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-icon" + }, + { + "description": "Enables the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-set-text" + }, + { + "description": "Enables the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:allow-text" + }, + { + "description": "Denies the append command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-append" + }, + { + "description": "Denies the create_default command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-create-default" + }, + { + "description": "Denies the get command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-get" + }, + { + "description": "Denies the insert command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-insert" + }, + { + "description": "Denies the is_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-checked" + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-is-enabled" + }, + { + "description": "Denies the items command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-items" + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-new" + }, + { + "description": "Denies the popup command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-popup" + }, + { + "description": "Denies the prepend command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-prepend" + }, + { + "description": "Denies the remove command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove" + }, + { + "description": "Denies the remove_at command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-remove-at" + }, + { + "description": "Denies the set_accelerator command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-accelerator" + }, + { + "description": "Denies the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-app-menu" + }, + { + "description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-help-menu-for-nsapp" + }, + { + "description": "Denies the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-window-menu" + }, + { + "description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-as-windows-menu-for-nsapp" + }, + { + "description": "Denies the set_checked command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-checked" + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-enabled" + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-icon" + }, + { + "description": "Denies the set_text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-set-text" + }, + { + "description": "Denies the text command without any pre-configured scope.", + "type": "string", + "const": "core:menu:deny-text" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:path:default" + }, + { + "description": "Enables the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-basename" + }, + { + "description": "Enables the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-dirname" + }, + { + "description": "Enables the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-extname" + }, + { + "description": "Enables the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-is-absolute" + }, + { + "description": "Enables the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-join" + }, + { + "description": "Enables the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-normalize" + }, + { + "description": "Enables the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve" + }, + { + "description": "Enables the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:allow-resolve-directory" + }, + { + "description": "Denies the basename command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-basename" + }, + { + "description": "Denies the dirname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-dirname" + }, + { + "description": "Denies the extname command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-extname" + }, + { + "description": "Denies the is_absolute command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-is-absolute" + }, + { + "description": "Denies the join command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-join" + }, + { + "description": "Denies the normalize command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-normalize" + }, + { + "description": "Denies the resolve command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve" + }, + { + "description": "Denies the resolve_directory command without any pre-configured scope.", + "type": "string", + "const": "core:path:deny-resolve-directory" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:resources:default" + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:allow-close" + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:resources:deny-close" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:tray:default" + }, + { + "description": "Enables the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-get-by-id" + }, + { + "description": "Enables the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-new" + }, + { + "description": "Enables the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-remove-by-id" + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon" + }, + { + "description": "Enables the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-icon-as-template" + }, + { + "description": "Enables the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-menu" + }, + { + "description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-show-menu-on-left-click" + }, + { + "description": "Enables the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-temp-dir-path" + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-title" + }, + { + "description": "Enables the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-tooltip" + }, + { + "description": "Enables the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:allow-set-visible" + }, + { + "description": "Denies the get_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-get-by-id" + }, + { + "description": "Denies the new command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-new" + }, + { + "description": "Denies the remove_by_id command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-remove-by-id" + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon" + }, + { + "description": "Denies the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-icon-as-template" + }, + { + "description": "Denies the set_menu command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-menu" + }, + { + "description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-show-menu-on-left-click" + }, + { + "description": "Denies the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-temp-dir-path" + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-title" + }, + { + "description": "Denies the set_tooltip command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-tooltip" + }, + { + "description": "Denies the set_visible command without any pre-configured scope.", + "type": "string", + "const": "core:tray:deny-set-visible" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:webview:default" + }, + { + "description": "Enables the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-clear-all-browsing-data" + }, + { + "description": "Enables the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview" + }, + { + "description": "Enables the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-create-webview-window" + }, + { + "description": "Enables the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-get-all-webviews" + }, + { + "description": "Enables the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-internal-toggle-devtools" + }, + { + "description": "Enables the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-print" + }, + { + "description": "Enables the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-reparent" + }, + { + "description": "Enables the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-focus" + }, + { + "description": "Enables the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-position" + }, + { + "description": "Enables the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-size" + }, + { + "description": "Enables the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-set-webview-zoom" + }, + { + "description": "Enables the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-close" + }, + { + "description": "Enables the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-hide" + }, + { + "description": "Enables the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-position" + }, + { + "description": "Enables the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-show" + }, + { + "description": "Enables the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:allow-webview-size" + }, + { + "description": "Denies the clear_all_browsing_data command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-clear-all-browsing-data" + }, + { + "description": "Denies the create_webview command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview" + }, + { + "description": "Denies the create_webview_window command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-create-webview-window" + }, + { + "description": "Denies the get_all_webviews command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-get-all-webviews" + }, + { + "description": "Denies the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-internal-toggle-devtools" + }, + { + "description": "Denies the print command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-print" + }, + { + "description": "Denies the reparent command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-reparent" + }, + { + "description": "Denies the set_webview_focus command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-focus" + }, + { + "description": "Denies the set_webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-position" + }, + { + "description": "Denies the set_webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-size" + }, + { + "description": "Denies the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-set-webview-zoom" + }, + { + "description": "Denies the webview_close command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-close" + }, + { + "description": "Denies the webview_hide command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-hide" + }, + { + "description": "Denies the webview_position command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-position" + }, + { + "description": "Denies the webview_show command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-show" + }, + { + "description": "Denies the webview_size command without any pre-configured scope.", + "type": "string", + "const": "core:webview:deny-webview-size" + }, + { + "description": "Default permissions for the plugin.", + "type": "string", + "const": "core:window:default" + }, + { + "description": "Enables the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-available-monitors" + }, + { + "description": "Enables the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-center" + }, + { + "description": "Enables the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-close" + }, + { + "description": "Enables the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-create" + }, + { + "description": "Enables the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-current-monitor" + }, + { + "description": "Enables the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-cursor-position" + }, + { + "description": "Enables the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-destroy" + }, + { + "description": "Enables the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-get-all-windows" + }, + { + "description": "Enables the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-hide" + }, + { + "description": "Enables the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-position" + }, + { + "description": "Enables the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-inner-size" + }, + { + "description": "Enables the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-internal-toggle-maximize" + }, + { + "description": "Enables the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-closable" + }, + { + "description": "Enables the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-decorated" + }, + { + "description": "Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-enabled" + }, + { + "description": "Enables the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-focused" + }, + { + "description": "Enables the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-fullscreen" + }, + { + "description": "Enables the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximizable" + }, + { + "description": "Enables the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-maximized" + }, + { + "description": "Enables the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimizable" + }, + { + "description": "Enables the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-minimized" + }, + { + "description": "Enables the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-resizable" + }, + { + "description": "Enables the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-is-visible" + }, + { + "description": "Enables the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-maximize" + }, + { + "description": "Enables the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-minimize" + }, + { + "description": "Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-monitor-from-point" + }, + { + "description": "Enables the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-position" + }, + { + "description": "Enables the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-outer-size" + }, + { + "description": "Enables the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-primary-monitor" + }, + { + "description": "Enables the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-request-user-attention" + }, + { + "description": "Enables the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-scale-factor" + }, + { + "description": "Enables the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-bottom" + }, + { + "description": "Enables the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-always-on-top" + }, + { + "description": "Enables the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-closable" + }, + { + "description": "Enables the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-content-protected" + }, + { + "description": "Enables the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-grab" + }, + { + "description": "Enables the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-icon" + }, + { + "description": "Enables the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-position" + }, + { + "description": "Enables the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-cursor-visible" + }, + { + "description": "Enables the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-decorations" + }, + { + "description": "Enables the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-effects" + }, + { + "description": "Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-enabled" + }, + { + "description": "Enables the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-focus" + }, + { + "description": "Enables the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-fullscreen" + }, + { + "description": "Enables the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-icon" + }, + { + "description": "Enables the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-ignore-cursor-events" + }, + { + "description": "Enables the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-max-size" + }, + { + "description": "Enables the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-maximizable" + }, + { + "description": "Enables the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-min-size" + }, + { + "description": "Enables the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-minimizable" + }, + { + "description": "Enables the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-position" + }, + { + "description": "Enables the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-progress-bar" + }, + { + "description": "Enables the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-resizable" + }, + { + "description": "Enables the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-shadow" + }, + { + "description": "Enables the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size" + }, + { + "description": "Enables the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-size-constraints" + }, + { + "description": "Enables the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-skip-taskbar" + }, + { + "description": "Enables the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-theme" + }, + { + "description": "Enables the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title" + }, + { + "description": "Enables the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-title-bar-style" + }, + { + "description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-set-visible-on-all-workspaces" + }, + { + "description": "Enables the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-show" + }, + { + "description": "Enables the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-dragging" + }, + { + "description": "Enables the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-start-resize-dragging" + }, + { + "description": "Enables the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-theme" + }, + { + "description": "Enables the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-title" + }, + { + "description": "Enables the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-toggle-maximize" + }, + { + "description": "Enables the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unmaximize" + }, + { + "description": "Enables the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:allow-unminimize" + }, + { + "description": "Denies the available_monitors command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-available-monitors" + }, + { + "description": "Denies the center command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-center" + }, + { + "description": "Denies the close command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-close" + }, + { + "description": "Denies the create command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-create" + }, + { + "description": "Denies the current_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-current-monitor" + }, + { + "description": "Denies the cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-cursor-position" + }, + { + "description": "Denies the destroy command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-destroy" + }, + { + "description": "Denies the get_all_windows command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-get-all-windows" + }, + { + "description": "Denies the hide command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-hide" + }, + { + "description": "Denies the inner_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-position" + }, + { + "description": "Denies the inner_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-inner-size" + }, + { + "description": "Denies the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-internal-toggle-maximize" + }, + { + "description": "Denies the is_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-closable" + }, + { + "description": "Denies the is_decorated command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-decorated" + }, + { + "description": "Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-enabled" + }, + { + "description": "Denies the is_focused command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-focused" + }, + { + "description": "Denies the is_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-fullscreen" + }, + { + "description": "Denies the is_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximizable" + }, + { + "description": "Denies the is_maximized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-maximized" + }, + { + "description": "Denies the is_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimizable" + }, + { + "description": "Denies the is_minimized command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-minimized" + }, + { + "description": "Denies the is_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-resizable" + }, + { + "description": "Denies the is_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-is-visible" + }, + { + "description": "Denies the maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-maximize" + }, + { + "description": "Denies the minimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-minimize" + }, + { + "description": "Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-monitor-from-point" + }, + { + "description": "Denies the outer_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-position" + }, + { + "description": "Denies the outer_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-outer-size" + }, + { + "description": "Denies the primary_monitor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-primary-monitor" + }, + { + "description": "Denies the request_user_attention command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-request-user-attention" + }, + { + "description": "Denies the scale_factor command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-scale-factor" + }, + { + "description": "Denies the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-bottom" + }, + { + "description": "Denies the set_always_on_top command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-always-on-top" + }, + { + "description": "Denies the set_closable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-closable" + }, + { + "description": "Denies the set_content_protected command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-content-protected" + }, + { + "description": "Denies the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-grab" + }, + { + "description": "Denies the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-icon" + }, + { + "description": "Denies the set_cursor_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-position" + }, + { + "description": "Denies the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-cursor-visible" + }, + { + "description": "Denies the set_decorations command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-decorations" + }, + { + "description": "Denies the set_effects command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-effects" + }, + { + "description": "Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-enabled" + }, + { + "description": "Denies the set_focus command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-focus" + }, + { + "description": "Denies the set_fullscreen command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-fullscreen" + }, + { + "description": "Denies the set_icon command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-icon" + }, + { + "description": "Denies the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-ignore-cursor-events" + }, + { + "description": "Denies the set_max_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-max-size" + }, + { + "description": "Denies the set_maximizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-maximizable" + }, + { + "description": "Denies the set_min_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-min-size" + }, + { + "description": "Denies the set_minimizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-minimizable" + }, + { + "description": "Denies the set_position command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-position" + }, + { + "description": "Denies the set_progress_bar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-progress-bar" + }, + { + "description": "Denies the set_resizable command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-resizable" + }, + { + "description": "Denies the set_shadow command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-shadow" + }, + { + "description": "Denies the set_size command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size" + }, + { + "description": "Denies the set_size_constraints command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-size-constraints" + }, + { + "description": "Denies the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-skip-taskbar" + }, + { + "description": "Denies the set_theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-theme" + }, + { + "description": "Denies the set_title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title" + }, + { + "description": "Denies the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-title-bar-style" + }, + { + "description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-set-visible-on-all-workspaces" + }, + { + "description": "Denies the show command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-show" + }, + { + "description": "Denies the start_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-dragging" + }, + { + "description": "Denies the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-start-resize-dragging" + }, + { + "description": "Denies the theme command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-theme" + }, + { + "description": "Denies the title command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-title" + }, + { + "description": "Denies the toggle_maximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-toggle-maximize" + }, + { + "description": "Denies the unmaximize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unmaximize" + }, + { + "description": "Denies the unminimize command without any pre-configured scope.", + "type": "string", + "const": "core:window:deny-unminimize" + }, + { + "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", + "type": "string", + "const": "shell:default" + }, + { + "description": "Enables the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-execute" + }, + { + "description": "Enables the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-kill" + }, + { + "description": "Enables the open command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-open" + }, + { + "description": "Enables the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-spawn" + }, + { + "description": "Enables the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:allow-stdin-write" + }, + { + "description": "Denies the execute command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-execute" + }, + { + "description": "Denies the kill command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-kill" + }, + { + "description": "Denies the open command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-open" + }, + { + "description": "Denies the spawn command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-spawn" + }, + { + "description": "Denies the stdin_write command without any pre-configured scope.", + "type": "string", + "const": "shell:deny-stdin-write" + } + ] + }, + "Value": { + "description": "All supported ACL values.", + "anyOf": [ + { + "description": "Represents a null JSON value.", + "type": "null" + }, + { + "description": "Represents a [`bool`].", + "type": "boolean" + }, + { + "description": "Represents a valid ACL [`Number`].", + "allOf": [ + { + "$ref": "#/definitions/Number" + } + ] + }, + { + "description": "Represents a [`String`].", + "type": "string" + }, + { + "description": "Represents a list of other [`Value`]s.", + "type": "array", + "items": { + "$ref": "#/definitions/Value" + } + }, + { + "description": "Represents a map of [`String`] keys to [`Value`]s.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Value" + } + } + ] + }, + "Number": { + "description": "A valid ACL number.", + "anyOf": [ + { + "description": "Represents an [`i64`].", + "type": "integer", + "format": "int64" + }, + { + "description": "Represents a [`f64`].", + "type": "number", + "format": "double" + } + ] + }, + "Target": { + "description": "Platform target.", + "oneOf": [ + { + "description": "MacOS.", + "type": "string", + "enum": [ + "macOS" + ] + }, + { + "description": "Windows.", + "type": "string", + "enum": [ + "windows" + ] + }, + { + "description": "Linux.", + "type": "string", + "enum": [ + "linux" + ] + }, + { + "description": "Android.", + "type": "string", + "enum": [ + "android" + ] + }, + { + "description": "iOS.", + "type": "string", + "enum": [ + "iOS" + ] + } + ] + }, + "ShellScopeEntryAllowedArg": { + "description": "A command argument allowed to be executed by the webview API.", + "anyOf": [ + { + "description": "A non-configurable argument that is passed to the command in the order it was specified.", + "type": "string" + }, + { + "description": "A variable that is set while calling the command from the webview API.", + "type": "object", + "required": [ + "validator" + ], + "properties": { + "raw": { + "description": "Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.", + "default": false, + "type": "boolean" + }, + "validator": { + "description": "[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: ", + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "ShellScopeEntryAllowedArgs": { + "description": "A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellScopeEntryAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration.", + "anyOf": [ + { + "description": "Use a simple boolean to allow all or disable all arguments to this command configuration.", + "type": "boolean" + }, + { + "description": "A specific set of [`ShellScopeEntryAllowedArg`] that are valid to call for the command configuration.", + "type": "array", + "items": { + "$ref": "#/definitions/ShellScopeEntryAllowedArg" + } + } + ] + } + } +} \ No newline at end of file diff --git a/full/Angel-client/src-tauri/icons/128x128.png b/full/Angel-client/src-tauri/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000000000000000000000000000..80ff1bd1b4c4bd256cdc6777fb0a5a2926f36328752fc174d970bda00f4047ad GIT binary patch literal 16530 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 literal 0 HcmV?d00001 diff --git a/full/Angel-client/src-tauri/icons/32x32.png b/full/Angel-client/src-tauri/icons/32x32.png new file mode 100644 index 0000000000000000000000000000000000000000000000000000000000000000..0fe1d59fc2de8ea378df62f3414f93dc5856e5db6eae8c3c9901c44e2bce2dd8 GIT binary patch literal 2262 zcmZ{mc{tQ<7sr2NZ|pR(8?+3W%#3A_dM!g^4cSY^G9r{1`#NI@y~H#lkx2?sXbP1r z%fn!@q(l*qr5KThLbiFPf8Oi;=ef>xpYL^l&-J;^U+2D0mV^BnQLsE1002=dEXIke z&_72=fSV)Y;(q?Q_+g#w03hxt0HmY=z&6)PSp^}T!`PBaT@)U&gS6fv&m3RC)c@+y~v?c+imNMiLX^uQj6=^T_r%FnzcC? z!Gd^uWpG|>6^l38NM;a`x|HgD*3ElUdn3$XcCj~Sxu9%}^Ae<5UZyFDEVDM9YFvLz zi(MiDay9TYY3AX8;>pj?$rATrLM#F;uTL}I z!_JMN0%Al6X$;ssq8YS)b8`Fb&DrQs06txv6t5h?b!4_wz{8cIuLl{5+>@`#v8?Ze z3Z0u1$m0`(>|>wVLR0E~$g`bXw-(nGl!0 zSEet=1ve&=o(`}rP18t75Q4MkH=QqoIH*&C*o9K%k-Ap9QI`)l2bZD`j6KV|a4`Pt zhk0rlbc?JN7dw$JC*RWgl)k@Ha(icwA%i}(B?187;;>YPy%lD>RKZj0*7IZ+sT^m> zF<%F;h~4PCyjm8{JtNxdY=uwe6z#FihN7`vd1Ynt8_7u?hie;$`$y!k#;^N^sZq4d zh^C!wZ+PACgNBA%S z%J0dhkg3?(FYoWP%PZ}_+vSg#UhfDwnC0F_AG3)FP-YQico@njG*Gl3sklJXcZZZG zL4Z(4Y1a!F_Rmer3&1fWmbH9 z@O)?g!Ap4if48rOdmM@Zh9ZD+2|i^~@6e0H ztNE-~vh+?iNLSysgW7g~x7TE&VL5CA;;_^`>*!u^y>(y*8m2|?N{4~-@CTZX5;IB5 z;#HHIGY^(K?);_;*Ku1n_fn+DmCyH)%ZtmX6zMmA>JoVS}nv%e&eR12zbv@$V zTaw(Nhbc0;yKl5^F%@2`7(J~tv>;BkZzj*gerM0d@Qjh&dcL-c_K`)phP556hf;Z( z?yE}W_%JK%43d7z?n2XoJ}!Q5BcZ*$Z+LM&Nkv?U&n`jV-lFZae!5;%XnXYJhR~Hv zERVj5LEfDES11$Z;4FuSNdNunw0_IZiEt0;E|$-ekxjuH zWMLDq8fzOXUN0+oBUGwVYpsV}ez#O(HE0VnuTF@lgY&WD^hn{g0^T^kN3sHCSeWWs zUbXCmB`VdB2oqNZ0Wgf2m2n&i|Iv@)G`}u`Q8RVa8*k+8msqqsXsm5E3Wf@$&BWgS zk4(<0-CxXn`6W3O00^0i?EUKgHE(st+0i-B6NDkQqaqM?($%hjn#S-?p$kL&qFusO z9rOH5-PKQ)SrjibeUp30gBgbn5fU4`acAD+klC5_}+4(Fnz3 zX~x=7!DM?gc~7}u|6MWLT1{TZ@+nN&qLSShsWVWuR&WSsKuueX$Hgj(gcah4Z8Fz9 zh!-ihA2!!r-V~M4(S0ajnP*#pZcO;F&o&8{5Mi32!9I5k{Vm_&C55AaTw zX~h^UN#;z00F#|`SBjgfy3p>K8?#wg^^8%)Ukt?D; zQa2N~04GG%SNX{5_gA}GYJ|?l%vAMPf2y+~YkHrae)js>pj2GN%DWxjM^!Wd^rf}W ztq*K|71E6W&Mq$QCp%>Du0d5(V^YtPGslSAUn=fA*0iFOMO{|%JbN!K^gIGwR!Tu( z$b6>IA}E;{sM~1B*V$O0elLC@*Szd8IlS&gwobc#o^kbh6`0C^}m6(_% zt=??UJAMAucn=nHqJa7Wt}O+xV9%nuHe2N{N-XqOw^1ZeU5#*JMojGD(wAT6UFK(@ z{!)s}nwyM%ZN<~uLnkd0hSKNlJsW>mQHu4OL=5x$0%V-zHH#`%eyk*b8;4 z{(wVvL-55GzkA8NA2xAj6NT@&-#&1JVBt>i_aWeo{KD~E0Z<5(E*yz~Bhk)Cq!9{j zgfu*kKo}tq%gSopo#Fq0(5wDI0kQuMl$aM8Z~@r=IuL?F@eu@{(6E1J`dynBxC~%r LVUMXb!;$_0hjtW2 literal 0 HcmV?d00001 diff --git a/full/Angel-client/src-tauri/icons/icon.icns b/full/Angel-client/src-tauri/icons/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000000000000000000000000000..feb7314ab0029cf974eaf01e28d94ec806d0bd5e5c349871922cd0b19b77f730 GIT binary patch literal 34216 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 literal 0 HcmV?d00001 diff --git a/full/Angel-client/src-tauri/icons/icon.ico b/full/Angel-client/src-tauri/icons/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000000000000000000000000000..724b26a18cbd846a8b76f9e6b87aaad251ae4e2a36beb4878bd420465ebe68fe GIT binary patch literal 210255 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 literal 0 HcmV?d00001 diff --git a/full/Angel-client/src-tauri/src/commands.rs b/full/Angel-client/src-tauri/src/commands.rs new file mode 100644 index 0000000..14f202b --- /dev/null +++ b/full/Angel-client/src-tauri/src/commands.rs @@ -0,0 +1,14 @@ +#[tauri::command(rename_all = "snake_case")] +pub fn validate_license(_license: String) -> bool { + return true; +} + +#[tauri::command(rename_all = "snake_case")] +pub fn validate_username(_username: String) -> bool { + return true; +} + +#[tauri::command(rename_all = "snake_case")] +pub fn get_app_version() -> String { + env!("CARGO_PKG_VERSION").to_string() +} diff --git a/full/Angel-client/src-tauri/src/lib.rs b/full/Angel-client/src-tauri/src/lib.rs new file mode 100644 index 0000000..71f5c4b --- /dev/null +++ b/full/Angel-client/src-tauri/src/lib.rs @@ -0,0 +1,27 @@ +use tauri::Manager; + +mod commands; + +#[cfg_attr(mobile, tauri::mobile_entry_point)] +pub fn run() { + tauri::Builder::default() + .setup(|app| { + let version = app + .config() + .version + .clone() + .unwrap_or_else(|| "".to_string()); + let title = format!("Angel C2 - v{}", version); + let window = app.get_webview_window("main").unwrap(); + window.set_title(&title).unwrap(); + Ok(()) + }) + .plugin(tauri_plugin_shell::init()) + .invoke_handler(tauri::generate_handler![ + commands::validate_username, + commands::validate_license, + commands::get_app_version, + ]) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); +} diff --git a/full/Angel-client/src-tauri/src/main.rs b/full/Angel-client/src-tauri/src/main.rs new file mode 100644 index 0000000..7bcf867 --- /dev/null +++ b/full/Angel-client/src-tauri/src/main.rs @@ -0,0 +1,5 @@ +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + +fn main() { + angel_lib::run() +} diff --git a/full/Angel-client/src-tauri/tauri.conf.json b/full/Angel-client/src-tauri/tauri.conf.json new file mode 100644 index 0000000..5244e66 --- /dev/null +++ b/full/Angel-client/src-tauri/tauri.conf.json @@ -0,0 +1,34 @@ +{ + "$schema": "https://schema.tauri.app/config/2", + "productName": "angel", + "version": "0.1.0", + "identifier": "net.angel.app", + "build": { + "beforeDevCommand": "bun run dev", + "devUrl": "http://localhost:1420", + "beforeBuildCommand": "bun run build", + "frontendDist": "../dist" + }, + "app": { + "windows": [ + { + "title": "angel", + "width": 1100, + "height": 750 + } + ], + "security": { + "csp": null + } + }, + "bundle": { + "active": true, + "targets": "all", + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/icon.icns", + "icons/icon.ico" + ] + } +} diff --git a/full/Angel-client/src/App.scss b/full/Angel-client/src/App.scss new file mode 100644 index 0000000..e1db318 --- /dev/null +++ b/full/Angel-client/src/App.scss @@ -0,0 +1,254 @@ +@import url("https://fonts.googleapis.com/css2?family=Fira+Code:wght@300..700&display=swap"); + +@tailwind base; +@tailwind components; +@tailwind utilities; + +:root { + font-family: Inter, Avenir, Helvetica, Arial, sans-serif; + font-size: 16px; + line-height: 24px; + font-weight: 400; + + color: #0f0f0f; + background-color: #f6f6f6; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-text-size-adjust: 100%; +} + +html, +body { + height: 100%; + margin: 0; + padding: 0; + display: flex; + justify-content: center; + align-items: center; + overflow: hidden; +} + +.login-box { + min-height: 700px; + max-width: 475px; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + display: flex; + position: absolute; + flex-direction: column; + justify-content: center; + align-items: center; + padding: 20px; +} + +@keyframes fadeOut { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} + +.fade-out { + animation: fadeOut 0.5s forwards; +} + +.dialog-overlay { + background-color: transparent !important; +} + +.dialog-open ~ .other-components { + filter: blur(4px); +} + +.fixed { + z-index: 10; +} + +.sidebar { + top: 60px; +} + +.splash-screen { + display: inline-flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 100vh; + width: 100vw; + background-color: #ffffff; + position: relative; +} + +.splash-image { + width: 512px; + height: 512px; + opacity: 0; + animation: fadeIn 2s ease-in-out forwards; +} + +.loader { + width: 20px; + height: 20px; + border: 5px solid black; + border-radius: 50%; + position: relative; + border-top-color: transparent; + animation: spin 2s linear infinite; + margin-top: 20px; + margin-right: 13px; +} + +@keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@keyframes spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + +.container { + /*display: flex; + flex-direction: column; + justify-content: center; + align-items: center;*/ + //width: 100%; + height: 100vh; + /*margin: 0; + padding: 0; + box-sizing: border-box;*/ + background-color: #f6f6f6; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: 0.75s; +} + +.logo.tauri:hover { + filter: drop-shadow(0 0 2em #24c8db); +} + +.row { + display: flex; + justify-content: center; +} + +@media (prefers-color-scheme: dark) { + :root { + color: #f6f6f6; + background-color: #2f2f2f; + } + + a:hover { + color: #24c8db; + } + + input, + button { + color: #ffffff; + background-color: #0f0f0f98; + } + button:active { + background-color: #0f0f0f69; + } +} + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 224 71.4% 4.1%; + --card: 0 0% 100%; + --card-foreground: 224 71.4% 4.1%; + --popover: 0 0% 100%; + --popover-foreground: 224 71.4% 4.1%; + --primary: 220.9 39.3% 11%; + --primary-foreground: 210 20% 98%; + --secondary: 220 14.3% 95.9%; + --secondary-foreground: 220.9 39.3% 11%; + --muted: 220 14.3% 95.9%; + --muted-foreground: 220 8.9% 46.1%; + --accent: 220 14.3% 95.9%; + --accent-foreground: 220.9 39.3% 11%; + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 210 20% 98%; + --border: 220 13% 91%; + --input: 220 13% 91%; + --ring: 224 71.4% 4.1%; + --radius: 0.5rem; + --chart-1: 12 76% 61%; + --chart-2: 173 58% 39%; + --chart-3: 197 37% 24%; + --chart-4: 43 74% 66%; + --chart-5: 27 87% 67%; + --sidebar-background: 0 0% 98%; + --sidebar-foreground: 240 5.3% 26.1%; + --sidebar-primary: 240 5.9% 10%; + --sidebar-primary-foreground: 0 0% 98%; + --sidebar-accent: 240 4.8% 95.9%; + --sidebar-accent-foreground: 240 5.9% 10%; + --sidebar-border: 220 13% 91%; + --sidebar-ring: 217.2 91.2% 59.8%; + } + + .dark { + --background: 224 71.4% 4.1%; + --foreground: 210 20% 98%; + --card: 224 71.4% 4.1%; + --card-foreground: 210 20% 98%; + --popover: 224 71.4% 4.1%; + --popover-foreground: 210 20% 98%; + --primary: 210 20% 98%; + --primary-foreground: 220.9 39.3% 11%; + --secondary: 215 27.9% 16.9%; + --secondary-foreground: 210 20% 98%; + --muted: 215 27.9% 16.9%; + --muted-foreground: 217.9 10.6% 64.9%; + --accent: 215 27.9% 16.9%; + --accent-foreground: 210 20% 98%; + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 210 20% 98%; + --border: 215 27.9% 16.9%; + --input: 215 27.9% 16.9%; + --ring: 216 12.2% 83.9%; + --chart-1: 220 70% 50%; + --chart-2: 160 60% 45%; + --chart-3: 30 80% 55%; + --chart-4: 280 65% 60%; + --chart-5: 340 75% 55%; + --sidebar-background: 240 5.9% 10%; + --sidebar-foreground: 240 4.8% 95.9%; + --sidebar-primary: 224.3 76.3% 48%; + --sidebar-primary-foreground: 0 0% 100%; + --sidebar-accent: 240 3.7% 15.9%; + --sidebar-accent-foreground: 240 4.8% 95.9%; + --sidebar-border: 240 3.7% 15.9%; + --sidebar-ring: 217.2 91.2% 59.8%; + } +} + +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/full/Angel-client/src/App.tsx b/full/Angel-client/src/App.tsx new file mode 100644 index 0000000..9f3ad7a --- /dev/null +++ b/full/Angel-client/src/App.tsx @@ -0,0 +1,80 @@ +"use client"; + +import "./App.scss"; +import Sign_in from "./sign_in"; +import Sign_up from "./sign_up"; +import Dashboard from "./dash"; +import { useState, useEffect } from "react"; +import { + BrowserRouter as Router, + Route, + Routes, + useNavigate, +} from "react-router-dom"; +import { Button } from "./components/ui/button"; +import { useAlert } from "./alert"; +import SplashScreen from "./splashscreen"; +import { getShowSplash, setShowSplash } from "./global"; + +function App() { + const { triggerAlert, AlertComponent } = useAlert(); + const [showSplash, setShowSplashState] = useState(getShowSplash()); + + useEffect(() => { + if (showSplash) { + const splashTimeout = setTimeout(() => { + setShowSplashState(false); + setShowSplash(false); + }, 5000); + + return () => clearTimeout(splashTimeout); + } + }, [showSplash]); + + if (showSplash) { + return ; + } + + return ( + +
    + {AlertComponent} + + } /> + } /> + } /> + } /> + +
    +
    + ); +} + +function Home({ + triggerAlert, +}: { + triggerAlert: ( + title: string, + description: string, + type?: "default" | "error", + ) => void; +}) { + const nav = useNavigate(); + return ( + <> +

    Welcome to Tauri + React

    + + + + + + ); +} + +export default App; diff --git a/full/Angel-client/src/alert.tsx b/full/Angel-client/src/alert.tsx new file mode 100644 index 0000000..1823d49 --- /dev/null +++ b/full/Angel-client/src/alert.tsx @@ -0,0 +1,63 @@ +import { RocketIcon, ExclamationTriangleIcon } from "@radix-ui/react-icons"; +import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; +import { useState, useEffect } from "react"; + +export function useAlert() { + const [alertData, setAlertData] = useState<{ + title: string; + description: string; + type: "default" | "error"; + } | null>(null); + + const [visible, setVisible] = useState(false); + + const triggerAlert = ( + title: string, + description: string, + type: "default" | "error" = "default" + ) => { + setAlertData({ title, description, type }); + setVisible(true); + + setTimeout(() => { + setVisible(false); + }, 3000); + }; + + useEffect(() => { + if (!visible) { + const timer = setTimeout(() => { + setAlertData(null); + }, 300); + + return () => clearTimeout(timer); + } + }, [visible]); + + const AlertComponent = alertData ? ( +
    + + {alertData.type === "error" ? ( + + ) : ( + + )} + + {alertData.type === "error" + ? `Error - ${alertData.title}` + : `Event - ${alertData.title}`} + + {alertData.description} + +
    + ) : null; + + return { triggerAlert, AlertComponent }; +} diff --git a/full/Angel-client/src/assets/react.svg b/full/Angel-client/src/assets/react.svg new file mode 100644 index 0000000..55a3be0 --- /dev/null +++ b/full/Angel-client/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/full/Angel-client/src/components/sidebar.tsx b/full/Angel-client/src/components/sidebar.tsx new file mode 100644 index 0000000..0f92d7f --- /dev/null +++ b/full/Angel-client/src/components/sidebar.tsx @@ -0,0 +1,199 @@ +import { + Calendar, + Home, + Inbox, + Search, + Settings, + Boxes, + ChartNoAxesCombined, + Waypoints, + DatabaseBackup, + ReceiptText, + Computer, + HardDrive, + Dot, +} from "lucide-react"; +import { invoke } from "@tauri-apps/api/core"; +import { useState, useEffect } from "react"; +import { + Sidebar, + SidebarContent, + SidebarGroup, + SidebarGroupContent, + SidebarGroupLabel, + SidebarMenu, + SidebarMenuButton, + SidebarMenuItem, + SidebarSeparator, + SidebarMenuSub, + SidebarMenuSubItem, +} from "@/components/ui/sidebar"; +import { + CollapsibleTrigger, + Collapsible, + CollapsibleContent, +} from "@/components/ui/collapsible"; +const settingsitems = [ + { + title: "Preferences", + url: "#", + icon: Waypoints, + }, + { + title: "Privacy Policy", + url: "#", + icon: DatabaseBackup, + }, + { + title: "Terms & Conditions", + url: "#", + icon: ReceiptText, + }, +]; + +const dashitems = [ + { + title: "Agents", + url: "#", + icon: Computer, + }, + { + title: "Build", + url: "#", + icon: Boxes, + }, +]; + +const DashSidebar = () => { + const [versionApp, setVersionApp] = useState(""); + + useEffect(() => { + const fetchVersion = async () => { + const version: string = await invoke("get_app_version"); + setVersionApp(version); + }; + + fetchVersion(); + }, []); + + const new_messages = true; + const messages = ["meow", "meow"]; + + return ( + + + + Angel Panel v{versionApp} + + + + + + + Inbox + + {new_messages && ( +
    + + {messages.length} +
    + )} +
    +
    +
    +
    +
    +
    + + + + + + + + + + + Analytics + + + + + + + + + + Overview + + + + + + + Infects + + + + + + + Drainer + + + + + + + + {dashitems.map((item) => ( + + + + + {item.title} + + + + ))} + + + + + + + + {settingsitems.map((item) => ( + + + + + {item.title} + + + + ))} + + + + + + + + + + + + Settings + + + + + + +
    +
    + ); +}; + +export default DashSidebar; diff --git a/full/Angel-client/src/components/ui/alert.tsx b/full/Angel-client/src/components/ui/alert.tsx new file mode 100644 index 0000000..844d093 --- /dev/null +++ b/full/Angel-client/src/components/ui/alert.tsx @@ -0,0 +1,59 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const alertVariants = cva( + "relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7", + { + variants: { + variant: { + default: "bg-background text-foreground", + destructive: + "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +const Alert = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes & VariantProps +>(({ className, variant, ...props }, ref) => ( +
    +)) +Alert.displayName = "Alert" + +const AlertTitle = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
    +)) +AlertTitle.displayName = "AlertTitle" + +const AlertDescription = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
    +)) +AlertDescription.displayName = "AlertDescription" + +export { Alert, AlertTitle, AlertDescription } diff --git a/full/Angel-client/src/components/ui/avatar.tsx b/full/Angel-client/src/components/ui/avatar.tsx new file mode 100644 index 0000000..7f8eeb6 --- /dev/null +++ b/full/Angel-client/src/components/ui/avatar.tsx @@ -0,0 +1,48 @@ +import * as React from "react" +import * as AvatarPrimitive from "@radix-ui/react-avatar" + +import { cn } from "@/lib/utils" + +const Avatar = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +Avatar.displayName = AvatarPrimitive.Root.displayName + +const AvatarImage = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AvatarImage.displayName = AvatarPrimitive.Image.displayName + +const AvatarFallback = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName + +export { Avatar, AvatarImage, AvatarFallback } diff --git a/full/Angel-client/src/components/ui/button.tsx b/full/Angel-client/src/components/ui/button.tsx new file mode 100644 index 0000000..c2a53a7 --- /dev/null +++ b/full/Angel-client/src/components/ui/button.tsx @@ -0,0 +1,57 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const buttonVariants = cva( + "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", + { + variants: { + variant: { + default: + "bg-primary text-primary-foreground shadow hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90", + outline: + "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground", + secondary: + "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-9 px-4 py-2", + sm: "h-8 rounded-md px-3 text-xs", + lg: "h-10 rounded-md px-8", + icon: "h-9 w-9", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean +} + +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button" + return ( + + ) + } +) +Button.displayName = "Button" + +export { Button, buttonVariants } diff --git a/full/Angel-client/src/components/ui/card.tsx b/full/Angel-client/src/components/ui/card.tsx new file mode 100644 index 0000000..e267198 --- /dev/null +++ b/full/Angel-client/src/components/ui/card.tsx @@ -0,0 +1,76 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +const Card = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
    +)) +Card.displayName = "Card" + +const CardHeader = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
    +)) +CardHeader.displayName = "CardHeader" + +const CardTitle = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

    +)) +CardTitle.displayName = "CardTitle" + +const CardDescription = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

    +)) +CardDescription.displayName = "CardDescription" + +const CardContent = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

    +)) +CardContent.displayName = "CardContent" + +const CardFooter = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
    +)) +CardFooter.displayName = "CardFooter" + +export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent } diff --git a/full/Angel-client/src/components/ui/checkbox.tsx b/full/Angel-client/src/components/ui/checkbox.tsx new file mode 100644 index 0000000..fbfa173 --- /dev/null +++ b/full/Angel-client/src/components/ui/checkbox.tsx @@ -0,0 +1,28 @@ +import * as React from "react" +import * as CheckboxPrimitive from "@radix-ui/react-checkbox" +import { CheckIcon } from "@radix-ui/react-icons" + +import { cn } from "@/lib/utils" + +const Checkbox = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + + + +)) +Checkbox.displayName = CheckboxPrimitive.Root.displayName + +export { Checkbox } diff --git a/full/Angel-client/src/components/ui/collapsible.tsx b/full/Angel-client/src/components/ui/collapsible.tsx new file mode 100644 index 0000000..496b6ac --- /dev/null +++ b/full/Angel-client/src/components/ui/collapsible.tsx @@ -0,0 +1,9 @@ +import * as CollapsiblePrimitive from "@radix-ui/react-collapsible" + +const Collapsible = CollapsiblePrimitive.Root + +const CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger + +const CollapsibleContent = CollapsiblePrimitive.CollapsibleContent + +export { Collapsible, CollapsibleTrigger, CollapsibleContent } diff --git a/full/Angel-client/src/components/ui/command.tsx b/full/Angel-client/src/components/ui/command.tsx new file mode 100644 index 0000000..6a20caf --- /dev/null +++ b/full/Angel-client/src/components/ui/command.tsx @@ -0,0 +1,153 @@ +import * as React from "react" +import { type DialogProps } from "@radix-ui/react-dialog" +import { MagnifyingGlassIcon } from "@radix-ui/react-icons" +import { Command as CommandPrimitive } from "cmdk" + +import { cn } from "@/lib/utils" +import { Dialog, DialogContent } from "@/components/ui/dialog" + +const Command = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +Command.displayName = CommandPrimitive.displayName + +interface CommandDialogProps extends DialogProps {} + +const CommandDialog = ({ children, ...props }: CommandDialogProps) => { + return ( + + + + {children} + + + + ) +} + +const CommandInput = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( +
    + + +
    +)) + +CommandInput.displayName = CommandPrimitive.Input.displayName + +const CommandList = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) + +CommandList.displayName = CommandPrimitive.List.displayName + +const CommandEmpty = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>((props, ref) => ( + +)) + +CommandEmpty.displayName = CommandPrimitive.Empty.displayName + +const CommandGroup = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) + +CommandGroup.displayName = CommandPrimitive.Group.displayName + +const CommandSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +CommandSeparator.displayName = CommandPrimitive.Separator.displayName + +const CommandItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) + +CommandItem.displayName = CommandPrimitive.Item.displayName + +const CommandShortcut = ({ + className, + ...props +}: React.HTMLAttributes) => { + return ( + + ) +} +CommandShortcut.displayName = "CommandShortcut" + +export { + Command, + CommandDialog, + CommandInput, + CommandList, + CommandEmpty, + CommandGroup, + CommandItem, + CommandShortcut, + CommandSeparator, +} diff --git a/full/Angel-client/src/components/ui/context-menu.tsx b/full/Angel-client/src/components/ui/context-menu.tsx new file mode 100644 index 0000000..6c261ee --- /dev/null +++ b/full/Angel-client/src/components/ui/context-menu.tsx @@ -0,0 +1,202 @@ +import * as React from "react" +import * as ContextMenuPrimitive from "@radix-ui/react-context-menu" +import { + CheckIcon, + ChevronRightIcon, + DotFilledIcon, +} from "@radix-ui/react-icons" + +import { cn } from "@/lib/utils" + +const ContextMenu = ContextMenuPrimitive.Root + +const ContextMenuTrigger = ContextMenuPrimitive.Trigger + +const ContextMenuGroup = ContextMenuPrimitive.Group + +const ContextMenuPortal = ContextMenuPrimitive.Portal + +const ContextMenuSub = ContextMenuPrimitive.Sub + +const ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup + +const ContextMenuSubTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, children, ...props }, ref) => ( + + {children} + + +)) +ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName + +const ContextMenuSubContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName + +const ContextMenuContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + + + +)) +ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName + +const ContextMenuItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, ...props }, ref) => ( + +)) +ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName + +const ContextMenuCheckboxItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, checked, ...props }, ref) => ( + + + + + + + {children} + +)) +ContextMenuCheckboxItem.displayName = + ContextMenuPrimitive.CheckboxItem.displayName + +const ContextMenuRadioItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + + + + {children} + +)) +ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName + +const ContextMenuLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, ...props }, ref) => ( + +)) +ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName + +const ContextMenuSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName + +const ContextMenuShortcut = ({ + className, + ...props +}: React.HTMLAttributes) => { + return ( + + ) +} +ContextMenuShortcut.displayName = "ContextMenuShortcut" + +export { + ContextMenu, + ContextMenuTrigger, + ContextMenuContent, + ContextMenuItem, + ContextMenuCheckboxItem, + ContextMenuRadioItem, + ContextMenuLabel, + ContextMenuSeparator, + ContextMenuShortcut, + ContextMenuGroup, + ContextMenuPortal, + ContextMenuSub, + ContextMenuSubContent, + ContextMenuSubTrigger, + ContextMenuRadioGroup, +} diff --git a/full/Angel-client/src/components/ui/dialog.tsx b/full/Angel-client/src/components/ui/dialog.tsx new file mode 100644 index 0000000..a3762e6 --- /dev/null +++ b/full/Angel-client/src/components/ui/dialog.tsx @@ -0,0 +1,120 @@ +import * as React from "react" +import * as DialogPrimitive from "@radix-ui/react-dialog" +import { Cross2Icon } from "@radix-ui/react-icons" + +import { cn } from "@/lib/utils" + +const Dialog = DialogPrimitive.Root + +const DialogTrigger = DialogPrimitive.Trigger + +const DialogPortal = DialogPrimitive.Portal + +const DialogClose = DialogPrimitive.Close + +const DialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogOverlay.displayName = DialogPrimitive.Overlay.displayName + +const DialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + {children} + + + Close + + + +)) +DialogContent.displayName = DialogPrimitive.Content.displayName + +const DialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
    +) +DialogHeader.displayName = "DialogHeader" + +const DialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
    +) +DialogFooter.displayName = "DialogFooter" + +const DialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogTitle.displayName = DialogPrimitive.Title.displayName + +const DialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogDescription.displayName = DialogPrimitive.Description.displayName + +export { + Dialog, + DialogPortal, + DialogOverlay, + DialogTrigger, + DialogClose, + DialogContent, + DialogHeader, + DialogFooter, + DialogTitle, + DialogDescription, +} diff --git a/full/Angel-client/src/components/ui/dropdown-menu.tsx b/full/Angel-client/src/components/ui/dropdown-menu.tsx new file mode 100644 index 0000000..8f6f44c --- /dev/null +++ b/full/Angel-client/src/components/ui/dropdown-menu.tsx @@ -0,0 +1,203 @@ +import * as React from "react" +import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu" +import { + CheckIcon, + ChevronRightIcon, + DotFilledIcon, +} from "@radix-ui/react-icons" + +import { cn } from "@/lib/utils" + +const DropdownMenu = DropdownMenuPrimitive.Root + +const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger + +const DropdownMenuGroup = DropdownMenuPrimitive.Group + +const DropdownMenuPortal = DropdownMenuPrimitive.Portal + +const DropdownMenuSub = DropdownMenuPrimitive.Sub + +const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup + +const DropdownMenuSubTrigger = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, children, ...props }, ref) => ( + + {children} + + +)) +DropdownMenuSubTrigger.displayName = + DropdownMenuPrimitive.SubTrigger.displayName + +const DropdownMenuSubContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DropdownMenuSubContent.displayName = + DropdownMenuPrimitive.SubContent.displayName + +const DropdownMenuContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, sideOffset = 4, ...props }, ref) => ( + + + +)) +DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName + +const DropdownMenuItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, ...props }, ref) => ( + svg]:size-4 [&>svg]:shrink-0", + inset && "pl-8", + className + )} + {...props} + /> +)) +DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName + +const DropdownMenuCheckboxItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, checked, ...props }, ref) => ( + + + + + + + {children} + +)) +DropdownMenuCheckboxItem.displayName = + DropdownMenuPrimitive.CheckboxItem.displayName + +const DropdownMenuRadioItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + + + + {children} + +)) +DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName + +const DropdownMenuLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & { + inset?: boolean + } +>(({ className, inset, ...props }, ref) => ( + +)) +DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName + +const DropdownMenuSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName + +const DropdownMenuShortcut = ({ + className, + ...props +}: React.HTMLAttributes) => { + return ( + + ) +} +DropdownMenuShortcut.displayName = "DropdownMenuShortcut" + +export { + DropdownMenu, + DropdownMenuTrigger, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuCheckboxItem, + DropdownMenuRadioItem, + DropdownMenuLabel, + DropdownMenuSeparator, + DropdownMenuShortcut, + DropdownMenuGroup, + DropdownMenuPortal, + DropdownMenuSub, + DropdownMenuSubContent, + DropdownMenuSubTrigger, + DropdownMenuRadioGroup, +} diff --git a/full/Angel-client/src/components/ui/form.tsx b/full/Angel-client/src/components/ui/form.tsx new file mode 100644 index 0000000..ace879f --- /dev/null +++ b/full/Angel-client/src/components/ui/form.tsx @@ -0,0 +1,176 @@ +import * as React from "react" +import * as LabelPrimitive from "@radix-ui/react-label" +import { Slot } from "@radix-ui/react-slot" +import { + Controller, + ControllerProps, + FieldPath, + FieldValues, + FormProvider, + useFormContext, +} from "react-hook-form" + +import { cn } from "@/lib/utils" +import { Label } from "@/components/ui/label" + +const Form = FormProvider + +type FormFieldContextValue< + TFieldValues extends FieldValues = FieldValues, + TName extends FieldPath = FieldPath +> = { + name: TName +} + +const FormFieldContext = React.createContext( + {} as FormFieldContextValue +) + +const FormField = < + TFieldValues extends FieldValues = FieldValues, + TName extends FieldPath = FieldPath +>({ + ...props +}: ControllerProps) => { + return ( + + + + ) +} + +const useFormField = () => { + const fieldContext = React.useContext(FormFieldContext) + const itemContext = React.useContext(FormItemContext) + const { getFieldState, formState } = useFormContext() + + const fieldState = getFieldState(fieldContext.name, formState) + + if (!fieldContext) { + throw new Error("useFormField should be used within ") + } + + const { id } = itemContext + + return { + id, + name: fieldContext.name, + formItemId: `${id}-form-item`, + formDescriptionId: `${id}-form-item-description`, + formMessageId: `${id}-form-item-message`, + ...fieldState, + } +} + +type FormItemContextValue = { + id: string +} + +const FormItemContext = React.createContext( + {} as FormItemContextValue +) + +const FormItem = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => { + const id = React.useId() + + return ( + +
    + + ) +}) +FormItem.displayName = "FormItem" + +const FormLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => { + const { error, formItemId } = useFormField() + + return ( +