作者 万志伟

0.0.1

要显示太多修改。

为保证性能只显示 25 of 25+ 个文件。

  1 +# .env 通用环境配置
  2 +
  3 +VITE_APP_TITLE=系统
  4 +
  5 +#请求前缀
  6 +VITE_APP_CONTENT_TEXT_PATH=/package
  7 +
  8 +
  1 +# .env.development 开发环境配置
  2 +
  3 +#dev请求地址
  4 +VITE_APP_BASE_URL=http://127.0.0.1:8080
  5 +#dev代理前缀
  6 +VITE_APP_PROXY_URL=/proxy-api
  7 +
  8 +VITE_APP_BASE_USERNAME=admin
  9 +VITE_APP_BASE_PASSWORD=123456
  1 +# .env.production 生产环境配置
  2 +VITE_APP_BASE_URL=http://47.104.158.209:8080
  1 +# Logs
  2 +logs
  3 +*.log
  4 +npm-debug.log*
  5 +yarn-debug.log*
  6 +yarn-error.log*
  7 +pnpm-debug.log*
  8 +lerna-debug.log*
  9 +
  10 +node_modules
  11 +dist
  12 +dist-ssr
  13 +*.local
  14 +
  15 +# Editor directories and files
  16 +.vscode/*
  17 +!.vscode/extensions.json
  18 +.idea
  19 +.DS_Store
  20 +*.suo
  21 +*.ntvs*
  22 +*.njsproj
  23 +*.sln
  24 +*.sw?
  1 +{
  2 + "recommendations": ["Vue.volar"]
  3 +}
  1 +# Vue 3 + TypeScript + Vite
  2 +
  3 +This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.
  4 +
  5 +Learn more about the recommended Project Setup and IDE Support in the [Vue Docs TypeScript Guide](https://vuejs.org/guide/typescript/overview.html#project-setup).
  1 +<html lang="en">
  2 + <head>
  3 + <meta charset="UTF-8" />
  4 + <link rel="icon" type="image/svg+xml" href="/vite.svg" />
  5 + <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6 + <title>Vite + Vue + TS</title>
  7 + </head>
  8 + <body>
  9 + <div id="app"></div>
  10 + <script type="module" src="/src/main.ts"></script>
  11 + </body>
  12 +</html>
  1 +{
  2 + "name": "web-package",
  3 + "version": "0.0.0",
  4 + "lockfileVersion": 3,
  5 + "requires": true,
  6 + "packages": {
  7 + "": {
  8 + "name": "web-package",
  9 + "version": "0.0.0",
  10 + "dependencies": {
  11 + "ant-design-vue": "^4.2.6",
  12 + "axios": "^1.8.1",
  13 + "cesium": "^1.127.0",
  14 + "dayjs": "^1.11.13",
  15 + "vue": "^3.5.13"
  16 + },
  17 + "devDependencies": {
  18 + "@types/cesium": "^1.67.14",
  19 + "@vitejs/plugin-vue": "^5.2.1",
  20 + "@vue/tsconfig": "^0.7.0",
  21 + "typescript": "~5.7.2",
  22 + "vite": "^6.2.0",
  23 + "vue-tsc": "^2.2.4"
  24 + }
  25 + },
  26 + "node_modules/@ant-design/colors": {
  27 + "version": "6.0.0",
  28 + "resolved": "https://registry.npmmirror.com/@ant-design/colors/-/colors-6.0.0.tgz",
  29 + "integrity": "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==",
  30 + "license": "MIT",
  31 + "dependencies": {
  32 + "@ctrl/tinycolor": "^3.4.0"
  33 + }
  34 + },
  35 + "node_modules/@ant-design/icons-svg": {
  36 + "version": "4.4.2",
  37 + "resolved": "https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz",
  38 + "integrity": "sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==",
  39 + "license": "MIT"
  40 + },
  41 + "node_modules/@ant-design/icons-vue": {
  42 + "version": "7.0.1",
  43 + "resolved": "https://registry.npmmirror.com/@ant-design/icons-vue/-/icons-vue-7.0.1.tgz",
  44 + "integrity": "sha512-eCqY2unfZK6Fe02AwFlDHLfoyEFreP6rBwAZMIJ1LugmfMiVgwWDYlp1YsRugaPtICYOabV1iWxXdP12u9U43Q==",
  45 + "license": "MIT",
  46 + "dependencies": {
  47 + "@ant-design/colors": "^6.0.0",
  48 + "@ant-design/icons-svg": "^4.2.1"
  49 + },
  50 + "peerDependencies": {
  51 + "vue": ">=3.0.3"
  52 + }
  53 + },
  54 + "node_modules/@babel/helper-string-parser": {
  55 + "version": "7.25.9",
  56 + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
  57 + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
  58 + "license": "MIT",
  59 + "engines": {
  60 + "node": ">=6.9.0"
  61 + }
  62 + },
  63 + "node_modules/@babel/helper-validator-identifier": {
  64 + "version": "7.25.9",
  65 + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
  66 + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
  67 + "license": "MIT",
  68 + "engines": {
  69 + "node": ">=6.9.0"
  70 + }
  71 + },
  72 + "node_modules/@babel/parser": {
  73 + "version": "7.26.9",
  74 + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.26.9.tgz",
  75 + "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==",
  76 + "license": "MIT",
  77 + "dependencies": {
  78 + "@babel/types": "^7.26.9"
  79 + },
  80 + "bin": {
  81 + "parser": "bin/babel-parser.js"
  82 + },
  83 + "engines": {
  84 + "node": ">=6.0.0"
  85 + }
  86 + },
  87 + "node_modules/@babel/runtime": {
  88 + "version": "7.26.9",
  89 + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.26.9.tgz",
  90 + "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==",
  91 + "license": "MIT",
  92 + "dependencies": {
  93 + "regenerator-runtime": "^0.14.0"
  94 + },
  95 + "engines": {
  96 + "node": ">=6.9.0"
  97 + }
  98 + },
  99 + "node_modules/@babel/types": {
  100 + "version": "7.26.9",
  101 + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.26.9.tgz",
  102 + "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==",
  103 + "license": "MIT",
  104 + "dependencies": {
  105 + "@babel/helper-string-parser": "^7.25.9",
  106 + "@babel/helper-validator-identifier": "^7.25.9"
  107 + },
  108 + "engines": {
  109 + "node": ">=6.9.0"
  110 + }
  111 + },
  112 + "node_modules/@cesium/engine": {
  113 + "version": "15.0.0",
  114 + "resolved": "https://registry.npmmirror.com/@cesium/engine/-/engine-15.0.0.tgz",
  115 + "integrity": "sha512-jimj7khIf/mBkejsMZ+n6Y9PPvXh4QmWKkz2ekFz59icDCeGj8ZJrzl5p0caqiK/372mnHOwmYFWYEwThEw2ew==",
  116 + "license": "Apache-2.0",
  117 + "dependencies": {
  118 + "@tweenjs/tween.js": "^25.0.0",
  119 + "@zip.js/zip.js": "^2.7.34",
  120 + "autolinker": "^4.0.0",
  121 + "bitmap-sdf": "^1.0.3",
  122 + "dompurify": "^3.0.2",
  123 + "draco3d": "^1.5.1",
  124 + "earcut": "^3.0.0",
  125 + "grapheme-splitter": "^1.0.4",
  126 + "jsep": "^1.3.8",
  127 + "kdbush": "^4.0.1",
  128 + "ktx-parse": "^1.0.0",
  129 + "lerc": "^2.0.0",
  130 + "mersenne-twister": "^1.1.0",
  131 + "meshoptimizer": "^0.22.0",
  132 + "pako": "^2.0.4",
  133 + "protobufjs": "^7.1.0",
  134 + "rbush": "3.0.1",
  135 + "topojson-client": "^3.1.0",
  136 + "urijs": "^1.19.7"
  137 + },
  138 + "engines": {
  139 + "node": ">=14.0.0"
  140 + }
  141 + },
  142 + "node_modules/@cesium/widgets": {
  143 + "version": "11.0.0",
  144 + "resolved": "https://registry.npmmirror.com/@cesium/widgets/-/widgets-11.0.0.tgz",
  145 + "integrity": "sha512-4ELgFuU2uwkvD6NI9MHIWNFKjmyI9wlDzZ9NuoPFSnUhf9XfVBI8sJekGx5dijxjK2S3aCuxB3dtUkdDZEsQmA==",
  146 + "license": "Apache-2.0",
  147 + "dependencies": {
  148 + "@cesium/engine": "^15.0.0",
  149 + "nosleep.js": "^0.12.0"
  150 + },
  151 + "engines": {
  152 + "node": ">=14.0.0"
  153 + }
  154 + },
  155 + "node_modules/@ctrl/tinycolor": {
  156 + "version": "3.6.1",
  157 + "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
  158 + "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==",
  159 + "license": "MIT",
  160 + "engines": {
  161 + "node": ">=10"
  162 + }
  163 + },
  164 + "node_modules/@emotion/hash": {
  165 + "version": "0.9.2",
  166 + "resolved": "https://registry.npmmirror.com/@emotion/hash/-/hash-0.9.2.tgz",
  167 + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==",
  168 + "license": "MIT"
  169 + },
  170 + "node_modules/@emotion/unitless": {
  171 + "version": "0.8.1",
  172 + "resolved": "https://registry.npmmirror.com/@emotion/unitless/-/unitless-0.8.1.tgz",
  173 + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==",
  174 + "license": "MIT"
  175 + },
  176 + "node_modules/@esbuild/aix-ppc64": {
  177 + "version": "0.25.0",
  178 + "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz",
  179 + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==",
  180 + "cpu": [
  181 + "ppc64"
  182 + ],
  183 + "dev": true,
  184 + "license": "MIT",
  185 + "optional": true,
  186 + "os": [
  187 + "aix"
  188 + ],
  189 + "engines": {
  190 + "node": ">=18"
  191 + }
  192 + },
  193 + "node_modules/@esbuild/android-arm": {
  194 + "version": "0.25.0",
  195 + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.25.0.tgz",
  196 + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==",
  197 + "cpu": [
  198 + "arm"
  199 + ],
  200 + "dev": true,
  201 + "license": "MIT",
  202 + "optional": true,
  203 + "os": [
  204 + "android"
  205 + ],
  206 + "engines": {
  207 + "node": ">=18"
  208 + }
  209 + },
  210 + "node_modules/@esbuild/android-arm64": {
  211 + "version": "0.25.0",
  212 + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz",
  213 + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==",
  214 + "cpu": [
  215 + "arm64"
  216 + ],
  217 + "dev": true,
  218 + "license": "MIT",
  219 + "optional": true,
  220 + "os": [
  221 + "android"
  222 + ],
  223 + "engines": {
  224 + "node": ">=18"
  225 + }
  226 + },
  227 + "node_modules/@esbuild/android-x64": {
  228 + "version": "0.25.0",
  229 + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.25.0.tgz",
  230 + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==",
  231 + "cpu": [
  232 + "x64"
  233 + ],
  234 + "dev": true,
  235 + "license": "MIT",
  236 + "optional": true,
  237 + "os": [
  238 + "android"
  239 + ],
  240 + "engines": {
  241 + "node": ">=18"
  242 + }
  243 + },
  244 + "node_modules/@esbuild/darwin-arm64": {
  245 + "version": "0.25.0",
  246 + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz",
  247 + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==",
  248 + "cpu": [
  249 + "arm64"
  250 + ],
  251 + "dev": true,
  252 + "license": "MIT",
  253 + "optional": true,
  254 + "os": [
  255 + "darwin"
  256 + ],
  257 + "engines": {
  258 + "node": ">=18"
  259 + }
  260 + },
  261 + "node_modules/@esbuild/darwin-x64": {
  262 + "version": "0.25.0",
  263 + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz",
  264 + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==",
  265 + "cpu": [
  266 + "x64"
  267 + ],
  268 + "dev": true,
  269 + "license": "MIT",
  270 + "optional": true,
  271 + "os": [
  272 + "darwin"
  273 + ],
  274 + "engines": {
  275 + "node": ">=18"
  276 + }
  277 + },
  278 + "node_modules/@esbuild/freebsd-arm64": {
  279 + "version": "0.25.0",
  280 + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz",
  281 + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==",
  282 + "cpu": [
  283 + "arm64"
  284 + ],
  285 + "dev": true,
  286 + "license": "MIT",
  287 + "optional": true,
  288 + "os": [
  289 + "freebsd"
  290 + ],
  291 + "engines": {
  292 + "node": ">=18"
  293 + }
  294 + },
  295 + "node_modules/@esbuild/freebsd-x64": {
  296 + "version": "0.25.0",
  297 + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz",
  298 + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==",
  299 + "cpu": [
  300 + "x64"
  301 + ],
  302 + "dev": true,
  303 + "license": "MIT",
  304 + "optional": true,
  305 + "os": [
  306 + "freebsd"
  307 + ],
  308 + "engines": {
  309 + "node": ">=18"
  310 + }
  311 + },
  312 + "node_modules/@esbuild/linux-arm": {
  313 + "version": "0.25.0",
  314 + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz",
  315 + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==",
  316 + "cpu": [
  317 + "arm"
  318 + ],
  319 + "dev": true,
  320 + "license": "MIT",
  321 + "optional": true,
  322 + "os": [
  323 + "linux"
  324 + ],
  325 + "engines": {
  326 + "node": ">=18"
  327 + }
  328 + },
  329 + "node_modules/@esbuild/linux-arm64": {
  330 + "version": "0.25.0",
  331 + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz",
  332 + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==",
  333 + "cpu": [
  334 + "arm64"
  335 + ],
  336 + "dev": true,
  337 + "license": "MIT",
  338 + "optional": true,
  339 + "os": [
  340 + "linux"
  341 + ],
  342 + "engines": {
  343 + "node": ">=18"
  344 + }
  345 + },
  346 + "node_modules/@esbuild/linux-ia32": {
  347 + "version": "0.25.0",
  348 + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz",
  349 + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==",
  350 + "cpu": [
  351 + "ia32"
  352 + ],
  353 + "dev": true,
  354 + "license": "MIT",
  355 + "optional": true,
  356 + "os": [
  357 + "linux"
  358 + ],
  359 + "engines": {
  360 + "node": ">=18"
  361 + }
  362 + },
  363 + "node_modules/@esbuild/linux-loong64": {
  364 + "version": "0.25.0",
  365 + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz",
  366 + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==",
  367 + "cpu": [
  368 + "loong64"
  369 + ],
  370 + "dev": true,
  371 + "license": "MIT",
  372 + "optional": true,
  373 + "os": [
  374 + "linux"
  375 + ],
  376 + "engines": {
  377 + "node": ">=18"
  378 + }
  379 + },
  380 + "node_modules/@esbuild/linux-mips64el": {
  381 + "version": "0.25.0",
  382 + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz",
  383 + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==",
  384 + "cpu": [
  385 + "mips64el"
  386 + ],
  387 + "dev": true,
  388 + "license": "MIT",
  389 + "optional": true,
  390 + "os": [
  391 + "linux"
  392 + ],
  393 + "engines": {
  394 + "node": ">=18"
  395 + }
  396 + },
  397 + "node_modules/@esbuild/linux-ppc64": {
  398 + "version": "0.25.0",
  399 + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz",
  400 + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==",
  401 + "cpu": [
  402 + "ppc64"
  403 + ],
  404 + "dev": true,
  405 + "license": "MIT",
  406 + "optional": true,
  407 + "os": [
  408 + "linux"
  409 + ],
  410 + "engines": {
  411 + "node": ">=18"
  412 + }
  413 + },
  414 + "node_modules/@esbuild/linux-riscv64": {
  415 + "version": "0.25.0",
  416 + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz",
  417 + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==",
  418 + "cpu": [
  419 + "riscv64"
  420 + ],
  421 + "dev": true,
  422 + "license": "MIT",
  423 + "optional": true,
  424 + "os": [
  425 + "linux"
  426 + ],
  427 + "engines": {
  428 + "node": ">=18"
  429 + }
  430 + },
  431 + "node_modules/@esbuild/linux-s390x": {
  432 + "version": "0.25.0",
  433 + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz",
  434 + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==",
  435 + "cpu": [
  436 + "s390x"
  437 + ],
  438 + "dev": true,
  439 + "license": "MIT",
  440 + "optional": true,
  441 + "os": [
  442 + "linux"
  443 + ],
  444 + "engines": {
  445 + "node": ">=18"
  446 + }
  447 + },
  448 + "node_modules/@esbuild/linux-x64": {
  449 + "version": "0.25.0",
  450 + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz",
  451 + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==",
  452 + "cpu": [
  453 + "x64"
  454 + ],
  455 + "dev": true,
  456 + "license": "MIT",
  457 + "optional": true,
  458 + "os": [
  459 + "linux"
  460 + ],
  461 + "engines": {
  462 + "node": ">=18"
  463 + }
  464 + },
  465 + "node_modules/@esbuild/netbsd-arm64": {
  466 + "version": "0.25.0",
  467 + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz",
  468 + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==",
  469 + "cpu": [
  470 + "arm64"
  471 + ],
  472 + "dev": true,
  473 + "license": "MIT",
  474 + "optional": true,
  475 + "os": [
  476 + "netbsd"
  477 + ],
  478 + "engines": {
  479 + "node": ">=18"
  480 + }
  481 + },
  482 + "node_modules/@esbuild/netbsd-x64": {
  483 + "version": "0.25.0",
  484 + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz",
  485 + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==",
  486 + "cpu": [
  487 + "x64"
  488 + ],
  489 + "dev": true,
  490 + "license": "MIT",
  491 + "optional": true,
  492 + "os": [
  493 + "netbsd"
  494 + ],
  495 + "engines": {
  496 + "node": ">=18"
  497 + }
  498 + },
  499 + "node_modules/@esbuild/openbsd-arm64": {
  500 + "version": "0.25.0",
  501 + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz",
  502 + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==",
  503 + "cpu": [
  504 + "arm64"
  505 + ],
  506 + "dev": true,
  507 + "license": "MIT",
  508 + "optional": true,
  509 + "os": [
  510 + "openbsd"
  511 + ],
  512 + "engines": {
  513 + "node": ">=18"
  514 + }
  515 + },
  516 + "node_modules/@esbuild/openbsd-x64": {
  517 + "version": "0.25.0",
  518 + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz",
  519 + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==",
  520 + "cpu": [
  521 + "x64"
  522 + ],
  523 + "dev": true,
  524 + "license": "MIT",
  525 + "optional": true,
  526 + "os": [
  527 + "openbsd"
  528 + ],
  529 + "engines": {
  530 + "node": ">=18"
  531 + }
  532 + },
  533 + "node_modules/@esbuild/sunos-x64": {
  534 + "version": "0.25.0",
  535 + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz",
  536 + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==",
  537 + "cpu": [
  538 + "x64"
  539 + ],
  540 + "dev": true,
  541 + "license": "MIT",
  542 + "optional": true,
  543 + "os": [
  544 + "sunos"
  545 + ],
  546 + "engines": {
  547 + "node": ">=18"
  548 + }
  549 + },
  550 + "node_modules/@esbuild/win32-arm64": {
  551 + "version": "0.25.0",
  552 + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz",
  553 + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==",
  554 + "cpu": [
  555 + "arm64"
  556 + ],
  557 + "dev": true,
  558 + "license": "MIT",
  559 + "optional": true,
  560 + "os": [
  561 + "win32"
  562 + ],
  563 + "engines": {
  564 + "node": ">=18"
  565 + }
  566 + },
  567 + "node_modules/@esbuild/win32-ia32": {
  568 + "version": "0.25.0",
  569 + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz",
  570 + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==",
  571 + "cpu": [
  572 + "ia32"
  573 + ],
  574 + "dev": true,
  575 + "license": "MIT",
  576 + "optional": true,
  577 + "os": [
  578 + "win32"
  579 + ],
  580 + "engines": {
  581 + "node": ">=18"
  582 + }
  583 + },
  584 + "node_modules/@esbuild/win32-x64": {
  585 + "version": "0.25.0",
  586 + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz",
  587 + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==",
  588 + "cpu": [
  589 + "x64"
  590 + ],
  591 + "dev": true,
  592 + "license": "MIT",
  593 + "optional": true,
  594 + "os": [
  595 + "win32"
  596 + ],
  597 + "engines": {
  598 + "node": ">=18"
  599 + }
  600 + },
  601 + "node_modules/@jridgewell/sourcemap-codec": {
  602 + "version": "1.5.0",
  603 + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
  604 + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
  605 + "license": "MIT"
  606 + },
  607 + "node_modules/@protobufjs/aspromise": {
  608 + "version": "1.1.2",
  609 + "resolved": "https://registry.npmmirror.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
  610 + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==",
  611 + "license": "BSD-3-Clause"
  612 + },
  613 + "node_modules/@protobufjs/base64": {
  614 + "version": "1.1.2",
  615 + "resolved": "https://registry.npmmirror.com/@protobufjs/base64/-/base64-1.1.2.tgz",
  616 + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==",
  617 + "license": "BSD-3-Clause"
  618 + },
  619 + "node_modules/@protobufjs/codegen": {
  620 + "version": "2.0.4",
  621 + "resolved": "https://registry.npmmirror.com/@protobufjs/codegen/-/codegen-2.0.4.tgz",
  622 + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==",
  623 + "license": "BSD-3-Clause"
  624 + },
  625 + "node_modules/@protobufjs/eventemitter": {
  626 + "version": "1.1.0",
  627 + "resolved": "https://registry.npmmirror.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
  628 + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==",
  629 + "license": "BSD-3-Clause"
  630 + },
  631 + "node_modules/@protobufjs/fetch": {
  632 + "version": "1.1.0",
  633 + "resolved": "https://registry.npmmirror.com/@protobufjs/fetch/-/fetch-1.1.0.tgz",
  634 + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
  635 + "license": "BSD-3-Clause",
  636 + "dependencies": {
  637 + "@protobufjs/aspromise": "^1.1.1",
  638 + "@protobufjs/inquire": "^1.1.0"
  639 + }
  640 + },
  641 + "node_modules/@protobufjs/float": {
  642 + "version": "1.0.2",
  643 + "resolved": "https://registry.npmmirror.com/@protobufjs/float/-/float-1.0.2.tgz",
  644 + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==",
  645 + "license": "BSD-3-Clause"
  646 + },
  647 + "node_modules/@protobufjs/inquire": {
  648 + "version": "1.1.0",
  649 + "resolved": "https://registry.npmmirror.com/@protobufjs/inquire/-/inquire-1.1.0.tgz",
  650 + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==",
  651 + "license": "BSD-3-Clause"
  652 + },
  653 + "node_modules/@protobufjs/path": {
  654 + "version": "1.1.2",
  655 + "resolved": "https://registry.npmmirror.com/@protobufjs/path/-/path-1.1.2.tgz",
  656 + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==",
  657 + "license": "BSD-3-Clause"
  658 + },
  659 + "node_modules/@protobufjs/pool": {
  660 + "version": "1.1.0",
  661 + "resolved": "https://registry.npmmirror.com/@protobufjs/pool/-/pool-1.1.0.tgz",
  662 + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==",
  663 + "license": "BSD-3-Clause"
  664 + },
  665 + "node_modules/@protobufjs/utf8": {
  666 + "version": "1.1.0",
  667 + "resolved": "https://registry.npmmirror.com/@protobufjs/utf8/-/utf8-1.1.0.tgz",
  668 + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==",
  669 + "license": "BSD-3-Clause"
  670 + },
  671 + "node_modules/@rollup/rollup-android-arm-eabi": {
  672 + "version": "4.34.9",
  673 + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.9.tgz",
  674 + "integrity": "sha512-qZdlImWXur0CFakn2BJ2znJOdqYZKiedEPEVNTBrpfPjc/YuTGcaYZcdmNFTkUj3DU0ZM/AElcM8Ybww3xVLzA==",
  675 + "cpu": [
  676 + "arm"
  677 + ],
  678 + "dev": true,
  679 + "license": "MIT",
  680 + "optional": true,
  681 + "os": [
  682 + "android"
  683 + ]
  684 + },
  685 + "node_modules/@rollup/rollup-android-arm64": {
  686 + "version": "4.34.9",
  687 + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.9.tgz",
  688 + "integrity": "sha512-4KW7P53h6HtJf5Y608T1ISKvNIYLWRKMvfnG0c44M6In4DQVU58HZFEVhWINDZKp7FZps98G3gxwC1sb0wXUUg==",
  689 + "cpu": [
  690 + "arm64"
  691 + ],
  692 + "dev": true,
  693 + "license": "MIT",
  694 + "optional": true,
  695 + "os": [
  696 + "android"
  697 + ]
  698 + },
  699 + "node_modules/@rollup/rollup-darwin-arm64": {
  700 + "version": "4.34.9",
  701 + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz",
  702 + "integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==",
  703 + "cpu": [
  704 + "arm64"
  705 + ],
  706 + "dev": true,
  707 + "license": "MIT",
  708 + "optional": true,
  709 + "os": [
  710 + "darwin"
  711 + ]
  712 + },
  713 + "node_modules/@rollup/rollup-darwin-x64": {
  714 + "version": "4.34.9",
  715 + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz",
  716 + "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==",
  717 + "cpu": [
  718 + "x64"
  719 + ],
  720 + "dev": true,
  721 + "license": "MIT",
  722 + "optional": true,
  723 + "os": [
  724 + "darwin"
  725 + ]
  726 + },
  727 + "node_modules/@rollup/rollup-freebsd-arm64": {
  728 + "version": "4.34.9",
  729 + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.9.tgz",
  730 + "integrity": "sha512-2lzjQPJbN5UnHm7bHIUKFMulGTQwdvOkouJDpPysJS+QFBGDJqcfh+CxxtG23Ik/9tEvnebQiylYoazFMAgrYw==",
  731 + "cpu": [
  732 + "arm64"
  733 + ],
  734 + "dev": true,
  735 + "license": "MIT",
  736 + "optional": true,
  737 + "os": [
  738 + "freebsd"
  739 + ]
  740 + },
  741 + "node_modules/@rollup/rollup-freebsd-x64": {
  742 + "version": "4.34.9",
  743 + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.9.tgz",
  744 + "integrity": "sha512-SLl0hi2Ah2H7xQYd6Qaiu01kFPzQ+hqvdYSoOtHYg/zCIFs6t8sV95kaoqjzjFwuYQLtOI0RZre/Ke0nPaQV+g==",
  745 + "cpu": [
  746 + "x64"
  747 + ],
  748 + "dev": true,
  749 + "license": "MIT",
  750 + "optional": true,
  751 + "os": [
  752 + "freebsd"
  753 + ]
  754 + },
  755 + "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
  756 + "version": "4.34.9",
  757 + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.9.tgz",
  758 + "integrity": "sha512-88I+D3TeKItrw+Y/2ud4Tw0+3CxQ2kLgu3QvrogZ0OfkmX/DEppehus7L3TS2Q4lpB+hYyxhkQiYPJ6Mf5/dPg==",
  759 + "cpu": [
  760 + "arm"
  761 + ],
  762 + "dev": true,
  763 + "license": "MIT",
  764 + "optional": true,
  765 + "os": [
  766 + "linux"
  767 + ]
  768 + },
  769 + "node_modules/@rollup/rollup-linux-arm-musleabihf": {
  770 + "version": "4.34.9",
  771 + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.9.tgz",
  772 + "integrity": "sha512-3qyfWljSFHi9zH0KgtEPG4cBXHDFhwD8kwg6xLfHQ0IWuH9crp005GfoUUh/6w9/FWGBwEHg3lxK1iHRN1MFlA==",
  773 + "cpu": [
  774 + "arm"
  775 + ],
  776 + "dev": true,
  777 + "license": "MIT",
  778 + "optional": true,
  779 + "os": [
  780 + "linux"
  781 + ]
  782 + },
  783 + "node_modules/@rollup/rollup-linux-arm64-gnu": {
  784 + "version": "4.34.9",
  785 + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz",
  786 + "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==",
  787 + "cpu": [
  788 + "arm64"
  789 + ],
  790 + "dev": true,
  791 + "license": "MIT",
  792 + "optional": true,
  793 + "os": [
  794 + "linux"
  795 + ]
  796 + },
  797 + "node_modules/@rollup/rollup-linux-arm64-musl": {
  798 + "version": "4.34.9",
  799 + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz",
  800 + "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==",
  801 + "cpu": [
  802 + "arm64"
  803 + ],
  804 + "dev": true,
  805 + "license": "MIT",
  806 + "optional": true,
  807 + "os": [
  808 + "linux"
  809 + ]
  810 + },
  811 + "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
  812 + "version": "4.34.9",
  813 + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.9.tgz",
  814 + "integrity": "sha512-dRAgTfDsn0TE0HI6cmo13hemKpVHOEyeciGtvlBTkpx/F65kTvShtY/EVyZEIfxFkV5JJTuQ9tP5HGBS0hfxIg==",
  815 + "cpu": [
  816 + "loong64"
  817 + ],
  818 + "dev": true,
  819 + "license": "MIT",
  820 + "optional": true,
  821 + "os": [
  822 + "linux"
  823 + ]
  824 + },
  825 + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
  826 + "version": "4.34.9",
  827 + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.9.tgz",
  828 + "integrity": "sha512-PHcNOAEhkoMSQtMf+rJofwisZqaU8iQ8EaSps58f5HYll9EAY5BSErCZ8qBDMVbq88h4UxaNPlbrKqfWP8RfJA==",
  829 + "cpu": [
  830 + "ppc64"
  831 + ],
  832 + "dev": true,
  833 + "license": "MIT",
  834 + "optional": true,
  835 + "os": [
  836 + "linux"
  837 + ]
  838 + },
  839 + "node_modules/@rollup/rollup-linux-riscv64-gnu": {
  840 + "version": "4.34.9",
  841 + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.9.tgz",
  842 + "integrity": "sha512-Z2i0Uy5G96KBYKjeQFKbbsB54xFOL5/y1P5wNBsbXB8yE+At3oh0DVMjQVzCJRJSfReiB2tX8T6HUFZ2k8iaKg==",
  843 + "cpu": [
  844 + "riscv64"
  845 + ],
  846 + "dev": true,
  847 + "license": "MIT",
  848 + "optional": true,
  849 + "os": [
  850 + "linux"
  851 + ]
  852 + },
  853 + "node_modules/@rollup/rollup-linux-s390x-gnu": {
  854 + "version": "4.34.9",
  855 + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.9.tgz",
  856 + "integrity": "sha512-U+5SwTMoeYXoDzJX5dhDTxRltSrIax8KWwfaaYcynuJw8mT33W7oOgz0a+AaXtGuvhzTr2tVKh5UO8GVANTxyQ==",
  857 + "cpu": [
  858 + "s390x"
  859 + ],
  860 + "dev": true,
  861 + "license": "MIT",
  862 + "optional": true,
  863 + "os": [
  864 + "linux"
  865 + ]
  866 + },
  867 + "node_modules/@rollup/rollup-linux-x64-gnu": {
  868 + "version": "4.34.9",
  869 + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz",
  870 + "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==",
  871 + "cpu": [
  872 + "x64"
  873 + ],
  874 + "dev": true,
  875 + "license": "MIT",
  876 + "optional": true,
  877 + "os": [
  878 + "linux"
  879 + ]
  880 + },
  881 + "node_modules/@rollup/rollup-linux-x64-musl": {
  882 + "version": "4.34.9",
  883 + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz",
  884 + "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==",
  885 + "cpu": [
  886 + "x64"
  887 + ],
  888 + "dev": true,
  889 + "license": "MIT",
  890 + "optional": true,
  891 + "os": [
  892 + "linux"
  893 + ]
  894 + },
  895 + "node_modules/@rollup/rollup-win32-arm64-msvc": {
  896 + "version": "4.34.9",
  897 + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz",
  898 + "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==",
  899 + "cpu": [
  900 + "arm64"
  901 + ],
  902 + "dev": true,
  903 + "license": "MIT",
  904 + "optional": true,
  905 + "os": [
  906 + "win32"
  907 + ]
  908 + },
  909 + "node_modules/@rollup/rollup-win32-ia32-msvc": {
  910 + "version": "4.34.9",
  911 + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.9.tgz",
  912 + "integrity": "sha512-KB48mPtaoHy1AwDNkAJfHXvHp24H0ryZog28spEs0V48l3H1fr4i37tiyHsgKZJnCmvxsbATdZGBpbmxTE3a9w==",
  913 + "cpu": [
  914 + "ia32"
  915 + ],
  916 + "dev": true,
  917 + "license": "MIT",
  918 + "optional": true,
  919 + "os": [
  920 + "win32"
  921 + ]
  922 + },
  923 + "node_modules/@rollup/rollup-win32-x64-msvc": {
  924 + "version": "4.34.9",
  925 + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz",
  926 + "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==",
  927 + "cpu": [
  928 + "x64"
  929 + ],
  930 + "dev": true,
  931 + "license": "MIT",
  932 + "optional": true,
  933 + "os": [
  934 + "win32"
  935 + ]
  936 + },
  937 + "node_modules/@simonwep/pickr": {
  938 + "version": "1.8.2",
  939 + "resolved": "https://registry.npmmirror.com/@simonwep/pickr/-/pickr-1.8.2.tgz",
  940 + "integrity": "sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA==",
  941 + "license": "MIT",
  942 + "dependencies": {
  943 + "core-js": "^3.15.1",
  944 + "nanopop": "^2.1.0"
  945 + }
  946 + },
  947 + "node_modules/@tweenjs/tween.js": {
  948 + "version": "25.0.0",
  949 + "resolved": "https://registry.npmmirror.com/@tweenjs/tween.js/-/tween.js-25.0.0.tgz",
  950 + "integrity": "sha512-XKLA6syeBUaPzx4j3qwMqzzq+V4uo72BnlbOjmuljLrRqdsd3qnzvZZoxvMHZ23ndsRS4aufU6JOZYpCbU6T1A==",
  951 + "license": "MIT"
  952 + },
  953 + "node_modules/@types/cesium": {
  954 + "version": "1.67.14",
  955 + "resolved": "https://registry.npmmirror.com/@types/cesium/-/cesium-1.67.14.tgz",
  956 + "integrity": "sha512-BGek4o6VY25IqmpdBd1awlULSVjyRrbn111xI/LRZQf4QUPlYfsXOYkun8vcXr+u+iYQkh9LAYNf2h0lE95xcA==",
  957 + "dev": true,
  958 + "license": "MIT"
  959 + },
  960 + "node_modules/@types/estree": {
  961 + "version": "1.0.6",
  962 + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.6.tgz",
  963 + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
  964 + "dev": true,
  965 + "license": "MIT"
  966 + },
  967 + "node_modules/@types/node": {
  968 + "version": "22.13.9",
  969 + "resolved": "https://registry.npmmirror.com/@types/node/-/node-22.13.9.tgz",
  970 + "integrity": "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw==",
  971 + "license": "MIT",
  972 + "dependencies": {
  973 + "undici-types": "~6.20.0"
  974 + }
  975 + },
  976 + "node_modules/@types/trusted-types": {
  977 + "version": "2.0.7",
  978 + "resolved": "https://registry.npmmirror.com/@types/trusted-types/-/trusted-types-2.0.7.tgz",
  979 + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
  980 + "license": "MIT",
  981 + "optional": true
  982 + },
  983 + "node_modules/@vitejs/plugin-vue": {
  984 + "version": "5.2.1",
  985 + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz",
  986 + "integrity": "sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==",
  987 + "dev": true,
  988 + "license": "MIT",
  989 + "engines": {
  990 + "node": "^18.0.0 || >=20.0.0"
  991 + },
  992 + "peerDependencies": {
  993 + "vite": "^5.0.0 || ^6.0.0",
  994 + "vue": "^3.2.25"
  995 + }
  996 + },
  997 + "node_modules/@volar/language-core": {
  998 + "version": "2.4.11",
  999 + "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-2.4.11.tgz",
  1000 + "integrity": "sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==",
  1001 + "dev": true,
  1002 + "license": "MIT",
  1003 + "dependencies": {
  1004 + "@volar/source-map": "2.4.11"
  1005 + }
  1006 + },
  1007 + "node_modules/@volar/source-map": {
  1008 + "version": "2.4.11",
  1009 + "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-2.4.11.tgz",
  1010 + "integrity": "sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ==",
  1011 + "dev": true,
  1012 + "license": "MIT"
  1013 + },
  1014 + "node_modules/@volar/typescript": {
  1015 + "version": "2.4.11",
  1016 + "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-2.4.11.tgz",
  1017 + "integrity": "sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==",
  1018 + "dev": true,
  1019 + "license": "MIT",
  1020 + "dependencies": {
  1021 + "@volar/language-core": "2.4.11",
  1022 + "path-browserify": "^1.0.1",
  1023 + "vscode-uri": "^3.0.8"
  1024 + }
  1025 + },
  1026 + "node_modules/@vue/compiler-core": {
  1027 + "version": "3.5.13",
  1028 + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz",
  1029 + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==",
  1030 + "license": "MIT",
  1031 + "dependencies": {
  1032 + "@babel/parser": "^7.25.3",
  1033 + "@vue/shared": "3.5.13",
  1034 + "entities": "^4.5.0",
  1035 + "estree-walker": "^2.0.2",
  1036 + "source-map-js": "^1.2.0"
  1037 + }
  1038 + },
  1039 + "node_modules/@vue/compiler-dom": {
  1040 + "version": "3.5.13",
  1041 + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz",
  1042 + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==",
  1043 + "license": "MIT",
  1044 + "dependencies": {
  1045 + "@vue/compiler-core": "3.5.13",
  1046 + "@vue/shared": "3.5.13"
  1047 + }
  1048 + },
  1049 + "node_modules/@vue/compiler-sfc": {
  1050 + "version": "3.5.13",
  1051 + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz",
  1052 + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==",
  1053 + "license": "MIT",
  1054 + "dependencies": {
  1055 + "@babel/parser": "^7.25.3",
  1056 + "@vue/compiler-core": "3.5.13",
  1057 + "@vue/compiler-dom": "3.5.13",
  1058 + "@vue/compiler-ssr": "3.5.13",
  1059 + "@vue/shared": "3.5.13",
  1060 + "estree-walker": "^2.0.2",
  1061 + "magic-string": "^0.30.11",
  1062 + "postcss": "^8.4.48",
  1063 + "source-map-js": "^1.2.0"
  1064 + }
  1065 + },
  1066 + "node_modules/@vue/compiler-ssr": {
  1067 + "version": "3.5.13",
  1068 + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz",
  1069 + "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==",
  1070 + "license": "MIT",
  1071 + "dependencies": {
  1072 + "@vue/compiler-dom": "3.5.13",
  1073 + "@vue/shared": "3.5.13"
  1074 + }
  1075 + },
  1076 + "node_modules/@vue/compiler-vue2": {
  1077 + "version": "2.7.16",
  1078 + "resolved": "https://registry.npmmirror.com/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz",
  1079 + "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==",
  1080 + "dev": true,
  1081 + "license": "MIT",
  1082 + "dependencies": {
  1083 + "de-indent": "^1.0.2",
  1084 + "he": "^1.2.0"
  1085 + }
  1086 + },
  1087 + "node_modules/@vue/language-core": {
  1088 + "version": "2.2.8",
  1089 + "resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-2.2.8.tgz",
  1090 + "integrity": "sha512-rrzB0wPGBvcwaSNRriVWdNAbHQWSf0NlGqgKHK5mEkXpefjUlVRP62u03KvwZpvKVjRnBIQ/Lwre+Mx9N6juUQ==",
  1091 + "dev": true,
  1092 + "license": "MIT",
  1093 + "dependencies": {
  1094 + "@volar/language-core": "~2.4.11",
  1095 + "@vue/compiler-dom": "^3.5.0",
  1096 + "@vue/compiler-vue2": "^2.7.16",
  1097 + "@vue/shared": "^3.5.0",
  1098 + "alien-signals": "^1.0.3",
  1099 + "minimatch": "^9.0.3",
  1100 + "muggle-string": "^0.4.1",
  1101 + "path-browserify": "^1.0.1"
  1102 + },
  1103 + "peerDependencies": {
  1104 + "typescript": "*"
  1105 + },
  1106 + "peerDependenciesMeta": {
  1107 + "typescript": {
  1108 + "optional": true
  1109 + }
  1110 + }
  1111 + },
  1112 + "node_modules/@vue/reactivity": {
  1113 + "version": "3.5.13",
  1114 + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.13.tgz",
  1115 + "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==",
  1116 + "license": "MIT",
  1117 + "dependencies": {
  1118 + "@vue/shared": "3.5.13"
  1119 + }
  1120 + },
  1121 + "node_modules/@vue/runtime-core": {
  1122 + "version": "3.5.13",
  1123 + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.13.tgz",
  1124 + "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==",
  1125 + "license": "MIT",
  1126 + "dependencies": {
  1127 + "@vue/reactivity": "3.5.13",
  1128 + "@vue/shared": "3.5.13"
  1129 + }
  1130 + },
  1131 + "node_modules/@vue/runtime-dom": {
  1132 + "version": "3.5.13",
  1133 + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz",
  1134 + "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==",
  1135 + "license": "MIT",
  1136 + "dependencies": {
  1137 + "@vue/reactivity": "3.5.13",
  1138 + "@vue/runtime-core": "3.5.13",
  1139 + "@vue/shared": "3.5.13",
  1140 + "csstype": "^3.1.3"
  1141 + }
  1142 + },
  1143 + "node_modules/@vue/server-renderer": {
  1144 + "version": "3.5.13",
  1145 + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.13.tgz",
  1146 + "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==",
  1147 + "license": "MIT",
  1148 + "dependencies": {
  1149 + "@vue/compiler-ssr": "3.5.13",
  1150 + "@vue/shared": "3.5.13"
  1151 + },
  1152 + "peerDependencies": {
  1153 + "vue": "3.5.13"
  1154 + }
  1155 + },
  1156 + "node_modules/@vue/shared": {
  1157 + "version": "3.5.13",
  1158 + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz",
  1159 + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==",
  1160 + "license": "MIT"
  1161 + },
  1162 + "node_modules/@vue/tsconfig": {
  1163 + "version": "0.7.0",
  1164 + "resolved": "https://registry.npmmirror.com/@vue/tsconfig/-/tsconfig-0.7.0.tgz",
  1165 + "integrity": "sha512-ku2uNz5MaZ9IerPPUyOHzyjhXoX2kVJaVf7hL315DC17vS6IiZRmmCPfggNbU16QTvM80+uYYy3eYJB59WCtvg==",
  1166 + "dev": true,
  1167 + "license": "MIT",
  1168 + "peerDependencies": {
  1169 + "typescript": "5.x",
  1170 + "vue": "^3.4.0"
  1171 + },
  1172 + "peerDependenciesMeta": {
  1173 + "typescript": {
  1174 + "optional": true
  1175 + },
  1176 + "vue": {
  1177 + "optional": true
  1178 + }
  1179 + }
  1180 + },
  1181 + "node_modules/@zip.js/zip.js": {
  1182 + "version": "2.7.57",
  1183 + "resolved": "https://registry.npmmirror.com/@zip.js/zip.js/-/zip.js-2.7.57.tgz",
  1184 + "integrity": "sha512-BtonQ1/jDnGiMed6OkV6rZYW78gLmLswkHOzyMrMb+CAR7CZO8phOHO6c2qw6qb1g1betN7kwEHhhZk30dv+NA==",
  1185 + "license": "BSD-3-Clause",
  1186 + "engines": {
  1187 + "bun": ">=0.7.0",
  1188 + "deno": ">=1.0.0",
  1189 + "node": ">=16.5.0"
  1190 + }
  1191 + },
  1192 + "node_modules/alien-signals": {
  1193 + "version": "1.0.4",
  1194 + "resolved": "https://registry.npmmirror.com/alien-signals/-/alien-signals-1.0.4.tgz",
  1195 + "integrity": "sha512-DJqqQD3XcsaQcQ1s+iE2jDUZmmQpXwHiR6fCAim/w87luaW+vmLY8fMlrdkmRwzaFXhkxf3rqPCR59tKVv1MDw==",
  1196 + "dev": true,
  1197 + "license": "MIT"
  1198 + },
  1199 + "node_modules/ant-design-vue": {
  1200 + "version": "4.2.6",
  1201 + "resolved": "https://registry.npmmirror.com/ant-design-vue/-/ant-design-vue-4.2.6.tgz",
  1202 + "integrity": "sha512-t7eX13Yj3i9+i5g9lqFyYneoIb3OzTvQjq9Tts1i+eiOd3Eva/6GagxBSXM1fOCjqemIu0FYVE1ByZ/38epR3Q==",
  1203 + "license": "MIT",
  1204 + "dependencies": {
  1205 + "@ant-design/colors": "^6.0.0",
  1206 + "@ant-design/icons-vue": "^7.0.0",
  1207 + "@babel/runtime": "^7.10.5",
  1208 + "@ctrl/tinycolor": "^3.5.0",
  1209 + "@emotion/hash": "^0.9.0",
  1210 + "@emotion/unitless": "^0.8.0",
  1211 + "@simonwep/pickr": "~1.8.0",
  1212 + "array-tree-filter": "^2.1.0",
  1213 + "async-validator": "^4.0.0",
  1214 + "csstype": "^3.1.1",
  1215 + "dayjs": "^1.10.5",
  1216 + "dom-align": "^1.12.1",
  1217 + "dom-scroll-into-view": "^2.0.0",
  1218 + "lodash": "^4.17.21",
  1219 + "lodash-es": "^4.17.15",
  1220 + "resize-observer-polyfill": "^1.5.1",
  1221 + "scroll-into-view-if-needed": "^2.2.25",
  1222 + "shallow-equal": "^1.0.0",
  1223 + "stylis": "^4.1.3",
  1224 + "throttle-debounce": "^5.0.0",
  1225 + "vue-types": "^3.0.0",
  1226 + "warning": "^4.0.0"
  1227 + },
  1228 + "engines": {
  1229 + "node": ">=12.22.0"
  1230 + },
  1231 + "funding": {
  1232 + "type": "opencollective",
  1233 + "url": "https://opencollective.com/ant-design-vue"
  1234 + },
  1235 + "peerDependencies": {
  1236 + "vue": ">=3.2.0"
  1237 + }
  1238 + },
  1239 + "node_modules/array-tree-filter": {
  1240 + "version": "2.1.0",
  1241 + "resolved": "https://registry.npmmirror.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz",
  1242 + "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==",
  1243 + "license": "MIT"
  1244 + },
  1245 + "node_modules/async-validator": {
  1246 + "version": "4.2.5",
  1247 + "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz",
  1248 + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==",
  1249 + "license": "MIT"
  1250 + },
  1251 + "node_modules/asynckit": {
  1252 + "version": "0.4.0",
  1253 + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
  1254 + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
  1255 + "license": "MIT"
  1256 + },
  1257 + "node_modules/autolinker": {
  1258 + "version": "4.1.0",
  1259 + "resolved": "https://registry.npmmirror.com/autolinker/-/autolinker-4.1.0.tgz",
  1260 + "integrity": "sha512-mYzdZMei1zIXcHVS/LjnuCJG+C/hNi8O+5m0R8YWtrIBWGrjL8CVzEZXxOfH0l1kioEXHNpUJRkgZdyL4GgIHQ==",
  1261 + "license": "MIT",
  1262 + "dependencies": {
  1263 + "tslib": "^2.8.1"
  1264 + }
  1265 + },
  1266 + "node_modules/axios": {
  1267 + "version": "1.8.1",
  1268 + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.8.1.tgz",
  1269 + "integrity": "sha512-NN+fvwH/kV01dYUQ3PTOZns4LWtWhOFCAhQ/pHb88WQ1hNe5V/dvFwc4VJcDL11LT9xSX0QtsR8sWUuyOuOq7g==",
  1270 + "license": "MIT",
  1271 + "dependencies": {
  1272 + "follow-redirects": "^1.15.6",
  1273 + "form-data": "^4.0.0",
  1274 + "proxy-from-env": "^1.1.0"
  1275 + }
  1276 + },
  1277 + "node_modules/balanced-match": {
  1278 + "version": "1.0.2",
  1279 + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
  1280 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
  1281 + "dev": true,
  1282 + "license": "MIT"
  1283 + },
  1284 + "node_modules/bitmap-sdf": {
  1285 + "version": "1.0.4",
  1286 + "resolved": "https://registry.npmmirror.com/bitmap-sdf/-/bitmap-sdf-1.0.4.tgz",
  1287 + "integrity": "sha512-1G3U4n5JE6RAiALMxu0p1XmeZkTeCwGKykzsLTCqVzfSDaN6S7fKnkIkfejogz+iwqBWc0UYAIKnKHNN7pSfDg==",
  1288 + "license": "MIT"
  1289 + },
  1290 + "node_modules/brace-expansion": {
  1291 + "version": "2.0.1",
  1292 + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
  1293 + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
  1294 + "dev": true,
  1295 + "license": "MIT",
  1296 + "dependencies": {
  1297 + "balanced-match": "^1.0.0"
  1298 + }
  1299 + },
  1300 + "node_modules/call-bind-apply-helpers": {
  1301 + "version": "1.0.2",
  1302 + "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
  1303 + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
  1304 + "license": "MIT",
  1305 + "dependencies": {
  1306 + "es-errors": "^1.3.0",
  1307 + "function-bind": "^1.1.2"
  1308 + },
  1309 + "engines": {
  1310 + "node": ">= 0.4"
  1311 + }
  1312 + },
  1313 + "node_modules/cesium": {
  1314 + "version": "1.127.0",
  1315 + "resolved": "https://registry.npmmirror.com/cesium/-/cesium-1.127.0.tgz",
  1316 + "integrity": "sha512-MRGkPb3ClEkAI9viZxxdD3LCu7ydOzOKdJ6/iPtBx1GUsPCZNbgB0IH7wmhwgbxA5sjv4/a90+mvR9CoLP1PWQ==",
  1317 + "license": "Apache-2.0",
  1318 + "workspaces": [
  1319 + "packages/engine",
  1320 + "packages/widgets"
  1321 + ],
  1322 + "dependencies": {
  1323 + "@cesium/engine": "^15.0.0",
  1324 + "@cesium/widgets": "^11.0.0"
  1325 + },
  1326 + "engines": {
  1327 + "node": ">=18.18.0"
  1328 + }
  1329 + },
  1330 + "node_modules/combined-stream": {
  1331 + "version": "1.0.8",
  1332 + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
  1333 + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
  1334 + "license": "MIT",
  1335 + "dependencies": {
  1336 + "delayed-stream": "~1.0.0"
  1337 + },
  1338 + "engines": {
  1339 + "node": ">= 0.8"
  1340 + }
  1341 + },
  1342 + "node_modules/commander": {
  1343 + "version": "2.20.3",
  1344 + "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
  1345 + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
  1346 + "license": "MIT"
  1347 + },
  1348 + "node_modules/compute-scroll-into-view": {
  1349 + "version": "1.0.20",
  1350 + "resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
  1351 + "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==",
  1352 + "license": "MIT"
  1353 + },
  1354 + "node_modules/core-js": {
  1355 + "version": "3.41.0",
  1356 + "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.41.0.tgz",
  1357 + "integrity": "sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA==",
  1358 + "hasInstallScript": true,
  1359 + "license": "MIT",
  1360 + "funding": {
  1361 + "type": "opencollective",
  1362 + "url": "https://opencollective.com/core-js"
  1363 + }
  1364 + },
  1365 + "node_modules/csstype": {
  1366 + "version": "3.1.3",
  1367 + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz",
  1368 + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
  1369 + "license": "MIT"
  1370 + },
  1371 + "node_modules/dayjs": {
  1372 + "version": "1.11.13",
  1373 + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
  1374 + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
  1375 + "license": "MIT"
  1376 + },
  1377 + "node_modules/de-indent": {
  1378 + "version": "1.0.2",
  1379 + "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz",
  1380 + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
  1381 + "dev": true,
  1382 + "license": "MIT"
  1383 + },
  1384 + "node_modules/delayed-stream": {
  1385 + "version": "1.0.0",
  1386 + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
  1387 + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
  1388 + "license": "MIT",
  1389 + "engines": {
  1390 + "node": ">=0.4.0"
  1391 + }
  1392 + },
  1393 + "node_modules/dom-align": {
  1394 + "version": "1.12.4",
  1395 + "resolved": "https://registry.npmmirror.com/dom-align/-/dom-align-1.12.4.tgz",
  1396 + "integrity": "sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==",
  1397 + "license": "MIT"
  1398 + },
  1399 + "node_modules/dom-scroll-into-view": {
  1400 + "version": "2.0.1",
  1401 + "resolved": "https://registry.npmmirror.com/dom-scroll-into-view/-/dom-scroll-into-view-2.0.1.tgz",
  1402 + "integrity": "sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w==",
  1403 + "license": "MIT"
  1404 + },
  1405 + "node_modules/dompurify": {
  1406 + "version": "3.2.4",
  1407 + "resolved": "https://registry.npmmirror.com/dompurify/-/dompurify-3.2.4.tgz",
  1408 + "integrity": "sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==",
  1409 + "license": "(MPL-2.0 OR Apache-2.0)",
  1410 + "optionalDependencies": {
  1411 + "@types/trusted-types": "^2.0.7"
  1412 + }
  1413 + },
  1414 + "node_modules/draco3d": {
  1415 + "version": "1.5.7",
  1416 + "resolved": "https://registry.npmmirror.com/draco3d/-/draco3d-1.5.7.tgz",
  1417 + "integrity": "sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==",
  1418 + "license": "Apache-2.0"
  1419 + },
  1420 + "node_modules/dunder-proto": {
  1421 + "version": "1.0.1",
  1422 + "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz",
  1423 + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
  1424 + "license": "MIT",
  1425 + "dependencies": {
  1426 + "call-bind-apply-helpers": "^1.0.1",
  1427 + "es-errors": "^1.3.0",
  1428 + "gopd": "^1.2.0"
  1429 + },
  1430 + "engines": {
  1431 + "node": ">= 0.4"
  1432 + }
  1433 + },
  1434 + "node_modules/earcut": {
  1435 + "version": "3.0.1",
  1436 + "resolved": "https://registry.npmmirror.com/earcut/-/earcut-3.0.1.tgz",
  1437 + "integrity": "sha512-0l1/0gOjESMeQyYaK5IDiPNvFeu93Z/cO0TjZh9eZ1vyCtZnA7KMZ8rQggpsJHIbGSdrqYq9OhuveadOVHCshw==",
  1438 + "license": "ISC"
  1439 + },
  1440 + "node_modules/entities": {
  1441 + "version": "4.5.0",
  1442 + "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
  1443 + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
  1444 + "license": "BSD-2-Clause",
  1445 + "engines": {
  1446 + "node": ">=0.12"
  1447 + },
  1448 + "funding": {
  1449 + "url": "https://github.com/fb55/entities?sponsor=1"
  1450 + }
  1451 + },
  1452 + "node_modules/es-define-property": {
  1453 + "version": "1.0.1",
  1454 + "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz",
  1455 + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
  1456 + "license": "MIT",
  1457 + "engines": {
  1458 + "node": ">= 0.4"
  1459 + }
  1460 + },
  1461 + "node_modules/es-errors": {
  1462 + "version": "1.3.0",
  1463 + "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz",
  1464 + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
  1465 + "license": "MIT",
  1466 + "engines": {
  1467 + "node": ">= 0.4"
  1468 + }
  1469 + },
  1470 + "node_modules/es-object-atoms": {
  1471 + "version": "1.1.1",
  1472 + "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
  1473 + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
  1474 + "license": "MIT",
  1475 + "dependencies": {
  1476 + "es-errors": "^1.3.0"
  1477 + },
  1478 + "engines": {
  1479 + "node": ">= 0.4"
  1480 + }
  1481 + },
  1482 + "node_modules/es-set-tostringtag": {
  1483 + "version": "2.1.0",
  1484 + "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
  1485 + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
  1486 + "license": "MIT",
  1487 + "dependencies": {
  1488 + "es-errors": "^1.3.0",
  1489 + "get-intrinsic": "^1.2.6",
  1490 + "has-tostringtag": "^1.0.2",
  1491 + "hasown": "^2.0.2"
  1492 + },
  1493 + "engines": {
  1494 + "node": ">= 0.4"
  1495 + }
  1496 + },
  1497 + "node_modules/esbuild": {
  1498 + "version": "0.25.0",
  1499 + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.25.0.tgz",
  1500 + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==",
  1501 + "dev": true,
  1502 + "hasInstallScript": true,
  1503 + "license": "MIT",
  1504 + "bin": {
  1505 + "esbuild": "bin/esbuild"
  1506 + },
  1507 + "engines": {
  1508 + "node": ">=18"
  1509 + },
  1510 + "optionalDependencies": {
  1511 + "@esbuild/aix-ppc64": "0.25.0",
  1512 + "@esbuild/android-arm": "0.25.0",
  1513 + "@esbuild/android-arm64": "0.25.0",
  1514 + "@esbuild/android-x64": "0.25.0",
  1515 + "@esbuild/darwin-arm64": "0.25.0",
  1516 + "@esbuild/darwin-x64": "0.25.0",
  1517 + "@esbuild/freebsd-arm64": "0.25.0",
  1518 + "@esbuild/freebsd-x64": "0.25.0",
  1519 + "@esbuild/linux-arm": "0.25.0",
  1520 + "@esbuild/linux-arm64": "0.25.0",
  1521 + "@esbuild/linux-ia32": "0.25.0",
  1522 + "@esbuild/linux-loong64": "0.25.0",
  1523 + "@esbuild/linux-mips64el": "0.25.0",
  1524 + "@esbuild/linux-ppc64": "0.25.0",
  1525 + "@esbuild/linux-riscv64": "0.25.0",
  1526 + "@esbuild/linux-s390x": "0.25.0",
  1527 + "@esbuild/linux-x64": "0.25.0",
  1528 + "@esbuild/netbsd-arm64": "0.25.0",
  1529 + "@esbuild/netbsd-x64": "0.25.0",
  1530 + "@esbuild/openbsd-arm64": "0.25.0",
  1531 + "@esbuild/openbsd-x64": "0.25.0",
  1532 + "@esbuild/sunos-x64": "0.25.0",
  1533 + "@esbuild/win32-arm64": "0.25.0",
  1534 + "@esbuild/win32-ia32": "0.25.0",
  1535 + "@esbuild/win32-x64": "0.25.0"
  1536 + }
  1537 + },
  1538 + "node_modules/estree-walker": {
  1539 + "version": "2.0.2",
  1540 + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
  1541 + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
  1542 + "license": "MIT"
  1543 + },
  1544 + "node_modules/follow-redirects": {
  1545 + "version": "1.15.9",
  1546 + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz",
  1547 + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
  1548 + "funding": [
  1549 + {
  1550 + "type": "individual",
  1551 + "url": "https://github.com/sponsors/RubenVerborgh"
  1552 + }
  1553 + ],
  1554 + "license": "MIT",
  1555 + "engines": {
  1556 + "node": ">=4.0"
  1557 + },
  1558 + "peerDependenciesMeta": {
  1559 + "debug": {
  1560 + "optional": true
  1561 + }
  1562 + }
  1563 + },
  1564 + "node_modules/form-data": {
  1565 + "version": "4.0.2",
  1566 + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.2.tgz",
  1567 + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
  1568 + "license": "MIT",
  1569 + "dependencies": {
  1570 + "asynckit": "^0.4.0",
  1571 + "combined-stream": "^1.0.8",
  1572 + "es-set-tostringtag": "^2.1.0",
  1573 + "mime-types": "^2.1.12"
  1574 + },
  1575 + "engines": {
  1576 + "node": ">= 6"
  1577 + }
  1578 + },
  1579 + "node_modules/fsevents": {
  1580 + "version": "2.3.3",
  1581 + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
  1582 + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
  1583 + "dev": true,
  1584 + "hasInstallScript": true,
  1585 + "license": "MIT",
  1586 + "optional": true,
  1587 + "os": [
  1588 + "darwin"
  1589 + ],
  1590 + "engines": {
  1591 + "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
  1592 + }
  1593 + },
  1594 + "node_modules/function-bind": {
  1595 + "version": "1.1.2",
  1596 + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
  1597 + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
  1598 + "license": "MIT",
  1599 + "funding": {
  1600 + "url": "https://github.com/sponsors/ljharb"
  1601 + }
  1602 + },
  1603 + "node_modules/get-intrinsic": {
  1604 + "version": "1.3.0",
  1605 + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
  1606 + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
  1607 + "license": "MIT",
  1608 + "dependencies": {
  1609 + "call-bind-apply-helpers": "^1.0.2",
  1610 + "es-define-property": "^1.0.1",
  1611 + "es-errors": "^1.3.0",
  1612 + "es-object-atoms": "^1.1.1",
  1613 + "function-bind": "^1.1.2",
  1614 + "get-proto": "^1.0.1",
  1615 + "gopd": "^1.2.0",
  1616 + "has-symbols": "^1.1.0",
  1617 + "hasown": "^2.0.2",
  1618 + "math-intrinsics": "^1.1.0"
  1619 + },
  1620 + "engines": {
  1621 + "node": ">= 0.4"
  1622 + },
  1623 + "funding": {
  1624 + "url": "https://github.com/sponsors/ljharb"
  1625 + }
  1626 + },
  1627 + "node_modules/get-proto": {
  1628 + "version": "1.0.1",
  1629 + "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz",
  1630 + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
  1631 + "license": "MIT",
  1632 + "dependencies": {
  1633 + "dunder-proto": "^1.0.1",
  1634 + "es-object-atoms": "^1.0.0"
  1635 + },
  1636 + "engines": {
  1637 + "node": ">= 0.4"
  1638 + }
  1639 + },
  1640 + "node_modules/gopd": {
  1641 + "version": "1.2.0",
  1642 + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz",
  1643 + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
  1644 + "license": "MIT",
  1645 + "engines": {
  1646 + "node": ">= 0.4"
  1647 + },
  1648 + "funding": {
  1649 + "url": "https://github.com/sponsors/ljharb"
  1650 + }
  1651 + },
  1652 + "node_modules/grapheme-splitter": {
  1653 + "version": "1.0.4",
  1654 + "resolved": "https://registry.npmmirror.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
  1655 + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
  1656 + "license": "MIT"
  1657 + },
  1658 + "node_modules/has-symbols": {
  1659 + "version": "1.1.0",
  1660 + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz",
  1661 + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
  1662 + "license": "MIT",
  1663 + "engines": {
  1664 + "node": ">= 0.4"
  1665 + },
  1666 + "funding": {
  1667 + "url": "https://github.com/sponsors/ljharb"
  1668 + }
  1669 + },
  1670 + "node_modules/has-tostringtag": {
  1671 + "version": "1.0.2",
  1672 + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
  1673 + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
  1674 + "license": "MIT",
  1675 + "dependencies": {
  1676 + "has-symbols": "^1.0.3"
  1677 + },
  1678 + "engines": {
  1679 + "node": ">= 0.4"
  1680 + },
  1681 + "funding": {
  1682 + "url": "https://github.com/sponsors/ljharb"
  1683 + }
  1684 + },
  1685 + "node_modules/hasown": {
  1686 + "version": "2.0.2",
  1687 + "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz",
  1688 + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
  1689 + "license": "MIT",
  1690 + "dependencies": {
  1691 + "function-bind": "^1.1.2"
  1692 + },
  1693 + "engines": {
  1694 + "node": ">= 0.4"
  1695 + }
  1696 + },
  1697 + "node_modules/he": {
  1698 + "version": "1.2.0",
  1699 + "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
  1700 + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
  1701 + "dev": true,
  1702 + "license": "MIT",
  1703 + "bin": {
  1704 + "he": "bin/he"
  1705 + }
  1706 + },
  1707 + "node_modules/is-plain-object": {
  1708 + "version": "3.0.1",
  1709 + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-3.0.1.tgz",
  1710 + "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==",
  1711 + "license": "MIT",
  1712 + "engines": {
  1713 + "node": ">=0.10.0"
  1714 + }
  1715 + },
  1716 + "node_modules/js-tokens": {
  1717 + "version": "4.0.0",
  1718 + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
  1719 + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
  1720 + "license": "MIT"
  1721 + },
  1722 + "node_modules/jsep": {
  1723 + "version": "1.4.0",
  1724 + "resolved": "https://registry.npmmirror.com/jsep/-/jsep-1.4.0.tgz",
  1725 + "integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==",
  1726 + "license": "MIT",
  1727 + "engines": {
  1728 + "node": ">= 10.16.0"
  1729 + }
  1730 + },
  1731 + "node_modules/kdbush": {
  1732 + "version": "4.0.2",
  1733 + "resolved": "https://registry.npmmirror.com/kdbush/-/kdbush-4.0.2.tgz",
  1734 + "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==",
  1735 + "license": "ISC"
  1736 + },
  1737 + "node_modules/ktx-parse": {
  1738 + "version": "1.0.0",
  1739 + "resolved": "https://registry.npmmirror.com/ktx-parse/-/ktx-parse-1.0.0.tgz",
  1740 + "integrity": "sha512-Z31kVizz4DF/6vo9YiSYVBhuXAfyQy9bGxlW3+mB5OELoZjfXVZQpRoctsx8IEDKxBd6SagXKo7qRvu38i8Jfg==",
  1741 + "license": "MIT"
  1742 + },
  1743 + "node_modules/lerc": {
  1744 + "version": "2.0.0",
  1745 + "resolved": "https://registry.npmmirror.com/lerc/-/lerc-2.0.0.tgz",
  1746 + "integrity": "sha512-7qo1Mq8ZNmaR4USHHm615nEW2lPeeWJ3bTyoqFbd35DLx0LUH7C6ptt5FDCTAlbIzs3+WKrk5SkJvw8AFDE2hg==",
  1747 + "license": "Apache-2.0"
  1748 + },
  1749 + "node_modules/lodash": {
  1750 + "version": "4.17.21",
  1751 + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
  1752 + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
  1753 + "license": "MIT"
  1754 + },
  1755 + "node_modules/lodash-es": {
  1756 + "version": "4.17.21",
  1757 + "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
  1758 + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
  1759 + "license": "MIT"
  1760 + },
  1761 + "node_modules/long": {
  1762 + "version": "5.3.1",
  1763 + "resolved": "https://registry.npmmirror.com/long/-/long-5.3.1.tgz",
  1764 + "integrity": "sha512-ka87Jz3gcx/I7Hal94xaN2tZEOPoUOEVftkQqZx2EeQRN7LGdfLlI3FvZ+7WDplm+vK2Urx9ULrvSowtdCieng==",
  1765 + "license": "Apache-2.0"
  1766 + },
  1767 + "node_modules/loose-envify": {
  1768 + "version": "1.4.0",
  1769 + "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz",
  1770 + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
  1771 + "license": "MIT",
  1772 + "dependencies": {
  1773 + "js-tokens": "^3.0.0 || ^4.0.0"
  1774 + },
  1775 + "bin": {
  1776 + "loose-envify": "cli.js"
  1777 + }
  1778 + },
  1779 + "node_modules/magic-string": {
  1780 + "version": "0.30.17",
  1781 + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.17.tgz",
  1782 + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
  1783 + "license": "MIT",
  1784 + "dependencies": {
  1785 + "@jridgewell/sourcemap-codec": "^1.5.0"
  1786 + }
  1787 + },
  1788 + "node_modules/math-intrinsics": {
  1789 + "version": "1.1.0",
  1790 + "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
  1791 + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
  1792 + "license": "MIT",
  1793 + "engines": {
  1794 + "node": ">= 0.4"
  1795 + }
  1796 + },
  1797 + "node_modules/mersenne-twister": {
  1798 + "version": "1.1.0",
  1799 + "resolved": "https://registry.npmmirror.com/mersenne-twister/-/mersenne-twister-1.1.0.tgz",
  1800 + "integrity": "sha512-mUYWsMKNrm4lfygPkL3OfGzOPTR2DBlTkBNHM//F6hGp8cLThY897crAlk3/Jo17LEOOjQUrNAx6DvgO77QJkA==",
  1801 + "license": "MIT"
  1802 + },
  1803 + "node_modules/meshoptimizer": {
  1804 + "version": "0.22.0",
  1805 + "resolved": "https://registry.npmmirror.com/meshoptimizer/-/meshoptimizer-0.22.0.tgz",
  1806 + "integrity": "sha512-IebiK79sqIy+E4EgOr+CAw+Ke8hAspXKzBd0JdgEmPHiAwmvEj2S4h1rfvo+o/BnfEYd/jAOg5IeeIjzlzSnDg==",
  1807 + "license": "MIT"
  1808 + },
  1809 + "node_modules/mime-db": {
  1810 + "version": "1.52.0",
  1811 + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
  1812 + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
  1813 + "license": "MIT",
  1814 + "engines": {
  1815 + "node": ">= 0.6"
  1816 + }
  1817 + },
  1818 + "node_modules/mime-types": {
  1819 + "version": "2.1.35",
  1820 + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
  1821 + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
  1822 + "license": "MIT",
  1823 + "dependencies": {
  1824 + "mime-db": "1.52.0"
  1825 + },
  1826 + "engines": {
  1827 + "node": ">= 0.6"
  1828 + }
  1829 + },
  1830 + "node_modules/minimatch": {
  1831 + "version": "9.0.5",
  1832 + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz",
  1833 + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
  1834 + "dev": true,
  1835 + "license": "ISC",
  1836 + "dependencies": {
  1837 + "brace-expansion": "^2.0.1"
  1838 + },
  1839 + "engines": {
  1840 + "node": ">=16 || 14 >=14.17"
  1841 + },
  1842 + "funding": {
  1843 + "url": "https://github.com/sponsors/isaacs"
  1844 + }
  1845 + },
  1846 + "node_modules/muggle-string": {
  1847 + "version": "0.4.1",
  1848 + "resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.4.1.tgz",
  1849 + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==",
  1850 + "dev": true,
  1851 + "license": "MIT"
  1852 + },
  1853 + "node_modules/nanoid": {
  1854 + "version": "3.3.8",
  1855 + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.8.tgz",
  1856 + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
  1857 + "funding": [
  1858 + {
  1859 + "type": "github",
  1860 + "url": "https://github.com/sponsors/ai"
  1861 + }
  1862 + ],
  1863 + "license": "MIT",
  1864 + "bin": {
  1865 + "nanoid": "bin/nanoid.cjs"
  1866 + },
  1867 + "engines": {
  1868 + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
  1869 + }
  1870 + },
  1871 + "node_modules/nanopop": {
  1872 + "version": "2.4.2",
  1873 + "resolved": "https://registry.npmmirror.com/nanopop/-/nanopop-2.4.2.tgz",
  1874 + "integrity": "sha512-NzOgmMQ+elxxHeIha+OG/Pv3Oc3p4RU2aBhwWwAqDpXrdTbtRylbRLQztLy8dMMwfl6pclznBdfUhccEn9ZIzw==",
  1875 + "license": "MIT"
  1876 + },
  1877 + "node_modules/nosleep.js": {
  1878 + "version": "0.12.0",
  1879 + "resolved": "https://registry.npmmirror.com/nosleep.js/-/nosleep.js-0.12.0.tgz",
  1880 + "integrity": "sha512-9d1HbpKLh3sdWlhXMhU6MMH+wQzKkrgfRkYV0EBdvt99YJfj0ilCJrWRDYG2130Tm4GXbEoTCx5b34JSaP+HhA==",
  1881 + "license": "MIT"
  1882 + },
  1883 + "node_modules/pako": {
  1884 + "version": "2.1.0",
  1885 + "resolved": "https://registry.npmmirror.com/pako/-/pako-2.1.0.tgz",
  1886 + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==",
  1887 + "license": "(MIT AND Zlib)"
  1888 + },
  1889 + "node_modules/path-browserify": {
  1890 + "version": "1.0.1",
  1891 + "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz",
  1892 + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
  1893 + "dev": true,
  1894 + "license": "MIT"
  1895 + },
  1896 + "node_modules/picocolors": {
  1897 + "version": "1.1.1",
  1898 + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
  1899 + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
  1900 + "license": "ISC"
  1901 + },
  1902 + "node_modules/postcss": {
  1903 + "version": "8.5.3",
  1904 + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.3.tgz",
  1905 + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
  1906 + "funding": [
  1907 + {
  1908 + "type": "opencollective",
  1909 + "url": "https://opencollective.com/postcss/"
  1910 + },
  1911 + {
  1912 + "type": "tidelift",
  1913 + "url": "https://tidelift.com/funding/github/npm/postcss"
  1914 + },
  1915 + {
  1916 + "type": "github",
  1917 + "url": "https://github.com/sponsors/ai"
  1918 + }
  1919 + ],
  1920 + "license": "MIT",
  1921 + "dependencies": {
  1922 + "nanoid": "^3.3.8",
  1923 + "picocolors": "^1.1.1",
  1924 + "source-map-js": "^1.2.1"
  1925 + },
  1926 + "engines": {
  1927 + "node": "^10 || ^12 || >=14"
  1928 + }
  1929 + },
  1930 + "node_modules/protobufjs": {
  1931 + "version": "7.4.0",
  1932 + "resolved": "https://registry.npmmirror.com/protobufjs/-/protobufjs-7.4.0.tgz",
  1933 + "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==",
  1934 + "hasInstallScript": true,
  1935 + "license": "BSD-3-Clause",
  1936 + "dependencies": {
  1937 + "@protobufjs/aspromise": "^1.1.2",
  1938 + "@protobufjs/base64": "^1.1.2",
  1939 + "@protobufjs/codegen": "^2.0.4",
  1940 + "@protobufjs/eventemitter": "^1.1.0",
  1941 + "@protobufjs/fetch": "^1.1.0",
  1942 + "@protobufjs/float": "^1.0.2",
  1943 + "@protobufjs/inquire": "^1.1.0",
  1944 + "@protobufjs/path": "^1.1.2",
  1945 + "@protobufjs/pool": "^1.1.0",
  1946 + "@protobufjs/utf8": "^1.1.0",
  1947 + "@types/node": ">=13.7.0",
  1948 + "long": "^5.0.0"
  1949 + },
  1950 + "engines": {
  1951 + "node": ">=12.0.0"
  1952 + }
  1953 + },
  1954 + "node_modules/proxy-from-env": {
  1955 + "version": "1.1.0",
  1956 + "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
  1957 + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
  1958 + "license": "MIT"
  1959 + },
  1960 + "node_modules/quickselect": {
  1961 + "version": "2.0.0",
  1962 + "resolved": "https://registry.npmmirror.com/quickselect/-/quickselect-2.0.0.tgz",
  1963 + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==",
  1964 + "license": "ISC"
  1965 + },
  1966 + "node_modules/rbush": {
  1967 + "version": "3.0.1",
  1968 + "resolved": "https://registry.npmmirror.com/rbush/-/rbush-3.0.1.tgz",
  1969 + "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==",
  1970 + "license": "MIT",
  1971 + "dependencies": {
  1972 + "quickselect": "^2.0.0"
  1973 + }
  1974 + },
  1975 + "node_modules/regenerator-runtime": {
  1976 + "version": "0.14.1",
  1977 + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
  1978 + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
  1979 + "license": "MIT"
  1980 + },
  1981 + "node_modules/resize-observer-polyfill": {
  1982 + "version": "1.5.1",
  1983 + "resolved": "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
  1984 + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==",
  1985 + "license": "MIT"
  1986 + },
  1987 + "node_modules/rollup": {
  1988 + "version": "4.34.9",
  1989 + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.34.9.tgz",
  1990 + "integrity": "sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ==",
  1991 + "dev": true,
  1992 + "license": "MIT",
  1993 + "dependencies": {
  1994 + "@types/estree": "1.0.6"
  1995 + },
  1996 + "bin": {
  1997 + "rollup": "dist/bin/rollup"
  1998 + },
  1999 + "engines": {
  2000 + "node": ">=18.0.0",
  2001 + "npm": ">=8.0.0"
  2002 + },
  2003 + "optionalDependencies": {
  2004 + "@rollup/rollup-android-arm-eabi": "4.34.9",
  2005 + "@rollup/rollup-android-arm64": "4.34.9",
  2006 + "@rollup/rollup-darwin-arm64": "4.34.9",
  2007 + "@rollup/rollup-darwin-x64": "4.34.9",
  2008 + "@rollup/rollup-freebsd-arm64": "4.34.9",
  2009 + "@rollup/rollup-freebsd-x64": "4.34.9",
  2010 + "@rollup/rollup-linux-arm-gnueabihf": "4.34.9",
  2011 + "@rollup/rollup-linux-arm-musleabihf": "4.34.9",
  2012 + "@rollup/rollup-linux-arm64-gnu": "4.34.9",
  2013 + "@rollup/rollup-linux-arm64-musl": "4.34.9",
  2014 + "@rollup/rollup-linux-loongarch64-gnu": "4.34.9",
  2015 + "@rollup/rollup-linux-powerpc64le-gnu": "4.34.9",
  2016 + "@rollup/rollup-linux-riscv64-gnu": "4.34.9",
  2017 + "@rollup/rollup-linux-s390x-gnu": "4.34.9",
  2018 + "@rollup/rollup-linux-x64-gnu": "4.34.9",
  2019 + "@rollup/rollup-linux-x64-musl": "4.34.9",
  2020 + "@rollup/rollup-win32-arm64-msvc": "4.34.9",
  2021 + "@rollup/rollup-win32-ia32-msvc": "4.34.9",
  2022 + "@rollup/rollup-win32-x64-msvc": "4.34.9",
  2023 + "fsevents": "~2.3.2"
  2024 + }
  2025 + },
  2026 + "node_modules/scroll-into-view-if-needed": {
  2027 + "version": "2.2.31",
  2028 + "resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz",
  2029 + "integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==",
  2030 + "license": "MIT",
  2031 + "dependencies": {
  2032 + "compute-scroll-into-view": "^1.0.20"
  2033 + }
  2034 + },
  2035 + "node_modules/shallow-equal": {
  2036 + "version": "1.2.1",
  2037 + "resolved": "https://registry.npmmirror.com/shallow-equal/-/shallow-equal-1.2.1.tgz",
  2038 + "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==",
  2039 + "license": "MIT"
  2040 + },
  2041 + "node_modules/source-map-js": {
  2042 + "version": "1.2.1",
  2043 + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz",
  2044 + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
  2045 + "license": "BSD-3-Clause",
  2046 + "engines": {
  2047 + "node": ">=0.10.0"
  2048 + }
  2049 + },
  2050 + "node_modules/stylis": {
  2051 + "version": "4.3.6",
  2052 + "resolved": "https://registry.npmmirror.com/stylis/-/stylis-4.3.6.tgz",
  2053 + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==",
  2054 + "license": "MIT"
  2055 + },
  2056 + "node_modules/throttle-debounce": {
  2057 + "version": "5.0.2",
  2058 + "resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-5.0.2.tgz",
  2059 + "integrity": "sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==",
  2060 + "license": "MIT",
  2061 + "engines": {
  2062 + "node": ">=12.22"
  2063 + }
  2064 + },
  2065 + "node_modules/topojson-client": {
  2066 + "version": "3.1.0",
  2067 + "resolved": "https://registry.npmmirror.com/topojson-client/-/topojson-client-3.1.0.tgz",
  2068 + "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==",
  2069 + "license": "ISC",
  2070 + "dependencies": {
  2071 + "commander": "2"
  2072 + },
  2073 + "bin": {
  2074 + "topo2geo": "bin/topo2geo",
  2075 + "topomerge": "bin/topomerge",
  2076 + "topoquantize": "bin/topoquantize"
  2077 + }
  2078 + },
  2079 + "node_modules/tslib": {
  2080 + "version": "2.8.1",
  2081 + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz",
  2082 + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
  2083 + "license": "0BSD"
  2084 + },
  2085 + "node_modules/typescript": {
  2086 + "version": "5.7.3",
  2087 + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.7.3.tgz",
  2088 + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
  2089 + "devOptional": true,
  2090 + "license": "Apache-2.0",
  2091 + "bin": {
  2092 + "tsc": "bin/tsc",
  2093 + "tsserver": "bin/tsserver"
  2094 + },
  2095 + "engines": {
  2096 + "node": ">=14.17"
  2097 + }
  2098 + },
  2099 + "node_modules/undici-types": {
  2100 + "version": "6.20.0",
  2101 + "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-6.20.0.tgz",
  2102 + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
  2103 + "license": "MIT"
  2104 + },
  2105 + "node_modules/urijs": {
  2106 + "version": "1.19.11",
  2107 + "resolved": "https://registry.npmmirror.com/urijs/-/urijs-1.19.11.tgz",
  2108 + "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==",
  2109 + "license": "MIT"
  2110 + },
  2111 + "node_modules/vite": {
  2112 + "version": "6.2.0",
  2113 + "resolved": "https://registry.npmmirror.com/vite/-/vite-6.2.0.tgz",
  2114 + "integrity": "sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==",
  2115 + "dev": true,
  2116 + "license": "MIT",
  2117 + "dependencies": {
  2118 + "esbuild": "^0.25.0",
  2119 + "postcss": "^8.5.3",
  2120 + "rollup": "^4.30.1"
  2121 + },
  2122 + "bin": {
  2123 + "vite": "bin/vite.js"
  2124 + },
  2125 + "engines": {
  2126 + "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
  2127 + },
  2128 + "funding": {
  2129 + "url": "https://github.com/vitejs/vite?sponsor=1"
  2130 + },
  2131 + "optionalDependencies": {
  2132 + "fsevents": "~2.3.3"
  2133 + },
  2134 + "peerDependencies": {
  2135 + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
  2136 + "jiti": ">=1.21.0",
  2137 + "less": "*",
  2138 + "lightningcss": "^1.21.0",
  2139 + "sass": "*",
  2140 + "sass-embedded": "*",
  2141 + "stylus": "*",
  2142 + "sugarss": "*",
  2143 + "terser": "^5.16.0",
  2144 + "tsx": "^4.8.1",
  2145 + "yaml": "^2.4.2"
  2146 + },
  2147 + "peerDependenciesMeta": {
  2148 + "@types/node": {
  2149 + "optional": true
  2150 + },
  2151 + "jiti": {
  2152 + "optional": true
  2153 + },
  2154 + "less": {
  2155 + "optional": true
  2156 + },
  2157 + "lightningcss": {
  2158 + "optional": true
  2159 + },
  2160 + "sass": {
  2161 + "optional": true
  2162 + },
  2163 + "sass-embedded": {
  2164 + "optional": true
  2165 + },
  2166 + "stylus": {
  2167 + "optional": true
  2168 + },
  2169 + "sugarss": {
  2170 + "optional": true
  2171 + },
  2172 + "terser": {
  2173 + "optional": true
  2174 + },
  2175 + "tsx": {
  2176 + "optional": true
  2177 + },
  2178 + "yaml": {
  2179 + "optional": true
  2180 + }
  2181 + }
  2182 + },
  2183 + "node_modules/vscode-uri": {
  2184 + "version": "3.1.0",
  2185 + "resolved": "https://registry.npmmirror.com/vscode-uri/-/vscode-uri-3.1.0.tgz",
  2186 + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==",
  2187 + "dev": true,
  2188 + "license": "MIT"
  2189 + },
  2190 + "node_modules/vue": {
  2191 + "version": "3.5.13",
  2192 + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.13.tgz",
  2193 + "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==",
  2194 + "license": "MIT",
  2195 + "dependencies": {
  2196 + "@vue/compiler-dom": "3.5.13",
  2197 + "@vue/compiler-sfc": "3.5.13",
  2198 + "@vue/runtime-dom": "3.5.13",
  2199 + "@vue/server-renderer": "3.5.13",
  2200 + "@vue/shared": "3.5.13"
  2201 + },
  2202 + "peerDependencies": {
  2203 + "typescript": "*"
  2204 + },
  2205 + "peerDependenciesMeta": {
  2206 + "typescript": {
  2207 + "optional": true
  2208 + }
  2209 + }
  2210 + },
  2211 + "node_modules/vue-tsc": {
  2212 + "version": "2.2.8",
  2213 + "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-2.2.8.tgz",
  2214 + "integrity": "sha512-jBYKBNFADTN+L+MdesNX/TB3XuDSyaWynKMDgR+yCSln0GQ9Tfb7JS2lr46s2LiFUT1WsmfWsSvIElyxzOPqcQ==",
  2215 + "dev": true,
  2216 + "license": "MIT",
  2217 + "dependencies": {
  2218 + "@volar/typescript": "~2.4.11",
  2219 + "@vue/language-core": "2.2.8"
  2220 + },
  2221 + "bin": {
  2222 + "vue-tsc": "bin/vue-tsc.js"
  2223 + },
  2224 + "peerDependencies": {
  2225 + "typescript": ">=5.0.0"
  2226 + }
  2227 + },
  2228 + "node_modules/vue-types": {
  2229 + "version": "3.0.2",
  2230 + "resolved": "https://registry.npmmirror.com/vue-types/-/vue-types-3.0.2.tgz",
  2231 + "integrity": "sha512-IwUC0Aq2zwaXqy74h4WCvFCUtoV0iSWr0snWnE9TnU18S66GAQyqQbRf2qfJtUuiFsBf6qp0MEwdonlwznlcrw==",
  2232 + "license": "MIT",
  2233 + "dependencies": {
  2234 + "is-plain-object": "3.0.1"
  2235 + },
  2236 + "engines": {
  2237 + "node": ">=10.15.0"
  2238 + },
  2239 + "peerDependencies": {
  2240 + "vue": "^3.0.0"
  2241 + }
  2242 + },
  2243 + "node_modules/warning": {
  2244 + "version": "4.0.3",
  2245 + "resolved": "https://registry.npmmirror.com/warning/-/warning-4.0.3.tgz",
  2246 + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
  2247 + "license": "MIT",
  2248 + "dependencies": {
  2249 + "loose-envify": "^1.0.0"
  2250 + }
  2251 + }
  2252 + }
  2253 +}
  1 +{
  2 + "name": "web-package",
  3 + "private": true,
  4 + "version": "0.0.0",
  5 + "type": "module",
  6 + "scripts": {
  7 + "dev": "vite",
  8 + "build": "vue-tsc -b && vite build",
  9 + "preview": "vite preview"
  10 + },
  11 + "dependencies": {
  12 + "@ant-design/icons-vue": "^7.0.1",
  13 + "@element-plus/icons-vue": "^2.3.1",
  14 + "@icon-park/vue-next": "^1.4.2",
  15 + "@vitejs/plugin-vue-jsx": "^4.1.1",
  16 + "ant-design-vue": "^4.2.6",
  17 + "axios": "^1.8.1",
  18 + "cesium": "^1.127.0",
  19 + "dayjs": "^1.11.13",
  20 + "element-plus": "^2.9.6",
  21 + "pinia": "^3.0.1",
  22 + "vue": "^3.5.13",
  23 + "vue-router": "^4.5.0",
  24 + "xml-js": "^1.6.11"
  25 + },
  26 + "devDependencies": {
  27 + "@types/cesium": "^1.67.14",
  28 + "@vitejs/plugin-vue": "^5.2.1",
  29 + "@vue/tsconfig": "^0.7.0",
  30 + "typescript": "~5.7.2",
  31 + "vite": "^6.2.0",
  32 + "vite-plugin-cesium": "^1.2.23",
  33 + "vue-tsc": "^2.2.4"
  34 + }
  35 +}
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:wpml="http://www.dji.com/wpmz/1.0.6">
  3 + <Document>
  4 + <wpml:author>1364078416@qq.com</wpml:author>
  5 + <wpml:createTime>1739075482858</wpml:createTime>
  6 + <wpml:updateTime>1739075547467</wpml:updateTime>
  7 + <wpml:missionConfig>
  8 + <wpml:flyToWaylineMode>safely</wpml:flyToWaylineMode>
  9 + <wpml:finishAction>goHome</wpml:finishAction>
  10 + <wpml:exitOnRCLost>goContinue</wpml:exitOnRCLost>
  11 + <wpml:executeRCLostAction>goBack</wpml:executeRCLostAction>
  12 + <wpml:takeOffSecurityHeight>70</wpml:takeOffSecurityHeight>
  13 + <wpml:takeOffRefPoint>23.233762,102.812308,233.158754</wpml:takeOffRefPoint>
  14 + <wpml:takeOffRefPointAGLHeight>0</wpml:takeOffRefPointAGLHeight>
  15 + <wpml:globalTransitionalSpeed>15</wpml:globalTransitionalSpeed>
  16 + <wpml:globalRTHHeight>100</wpml:globalRTHHeight>
  17 + <wpml:droneInfo>
  18 + <wpml:droneEnumValue>67</wpml:droneEnumValue>
  19 + <wpml:droneSubEnumValue>1</wpml:droneSubEnumValue>
  20 + </wpml:droneInfo>
  21 + <wpml:payloadInfo>
  22 + <wpml:payloadEnumValue>53</wpml:payloadEnumValue>
  23 + <wpml:payloadSubEnumValue>1</wpml:payloadSubEnumValue>
  24 + <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
  25 + </wpml:payloadInfo>
  26 + </wpml:missionConfig>
  27 + <Folder>
  28 + <wpml:templateType>waypoint</wpml:templateType>
  29 + <wpml:templateId>0</wpml:templateId>
  30 + <wpml:waylineCoordinateSysParam>
  31 + <wpml:coordinateMode>WGS84</wpml:coordinateMode>
  32 + <wpml:heightMode>relativeToStartPoint</wpml:heightMode>
  33 + </wpml:waylineCoordinateSysParam>
  34 + <wpml:autoFlightSpeed>10</wpml:autoFlightSpeed>
  35 + <wpml:globalHeight>67.199632961</wpml:globalHeight>
  36 + <wpml:caliFlightEnable>0</wpml:caliFlightEnable>
  37 + <wpml:gimbalPitchMode>manual</wpml:gimbalPitchMode>
  38 + <wpml:globalWaypointHeadingParam>
  39 + <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode>
  40 + <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle>
  41 + <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint>
  42 + <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode>
  43 + <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex>
  44 + </wpml:globalWaypointHeadingParam>
  45 + <wpml:globalWaypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:globalWaypointTurnMode>
  46 + <wpml:globalUseStraightLine>1</wpml:globalUseStraightLine>
  47 + <Placemark>
  48 + <Point>
  49 + <coordinates>
  50 + 102.814068783866,23.2359655022029
  51 + </coordinates>
  52 + </Point>
  53 + <wpml:index>0</wpml:index>
  54 + <wpml:ellipsoidHeight>67.199632961</wpml:ellipsoidHeight>
  55 + <wpml:height>67.199632961</wpml:height>
  56 + <wpml:waypointSpeed>10</wpml:waypointSpeed>
  57 + <wpml:waypointHeadingParam>
  58 + <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode>
  59 + <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle>
  60 + <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint>
  61 + <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode>
  62 + <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex>
  63 + </wpml:waypointHeadingParam>
  64 + <wpml:waypointTurnParam>
  65 + <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode>
  66 + <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist>
  67 + </wpml:waypointTurnParam>
  68 + <wpml:useGlobalHeight>1</wpml:useGlobalHeight>
  69 + <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed>
  70 + <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam>
  71 + <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam>
  72 + <wpml:useStraightLine>1</wpml:useStraightLine>
  73 + <wpml:actionGroup>
  74 + <wpml:actionGroupId>0</wpml:actionGroupId>
  75 + <wpml:actionGroupStartIndex>0</wpml:actionGroupStartIndex>
  76 + <wpml:actionGroupEndIndex>0</wpml:actionGroupEndIndex>
  77 + <wpml:actionGroupMode>sequence</wpml:actionGroupMode>
  78 + <wpml:actionTrigger>
  79 + <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType>
  80 + </wpml:actionTrigger>
  81 + <wpml:action>
  82 + <wpml:actionId>0</wpml:actionId>
  83 + <wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
  84 + <wpml:actionActuatorFuncParam>
  85 + <wpml:gimbalPitchRotateAngle>-56.05</wpml:gimbalPitchRotateAngle>
  86 + <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
  87 + <wpml:gimbalYawRotateAngle>-51.148</wpml:gimbalYawRotateAngle>
  88 + <wpml:focusX>0</wpml:focusX>
  89 + <wpml:focusY>0</wpml:focusY>
  90 + <wpml:focusRegionWidth>0</wpml:focusRegionWidth>
  91 + <wpml:focusRegionHeight>0</wpml:focusRegionHeight>
  92 + <wpml:focalLength>216</wpml:focalLength>
  93 + <wpml:aircraftHeading>-51.148</wpml:aircraftHeading>
  94 + <wpml:accurateFrameValid>0</wpml:accurateFrameValid>
  95 + <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
  96 + <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
  97 + <wpml:targetAngle>0</wpml:targetAngle>
  98 + <wpml:actionUUID>a2f692e0-420b-4868-8693-3062d2aaf1ab</wpml:actionUUID>
  99 + <wpml:imageWidth>0</wpml:imageWidth>
  100 + <wpml:imageHeight>0</wpml:imageHeight>
  101 + <wpml:AFPos>0</wpml:AFPos>
  102 + <wpml:gimbalPort>0</wpml:gimbalPort>
  103 + <wpml:orientedCameraType>53</wpml:orientedCameraType>
  104 + <wpml:orientedFilePath>4bbe6c02-18b5-481d-a957-610240ff955c</wpml:orientedFilePath>
  105 + <wpml:orientedFileMD5/>
  106 + <wpml:orientedFileSize>0</wpml:orientedFileSize>
  107 + <wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
  108 + </wpml:actionActuatorFuncParam>
  109 + </wpml:action>
  110 + </wpml:actionGroup>
  111 + <wpml:isRisky>0</wpml:isRisky>
  112 + </Placemark>
  113 + <Placemark>
  114 + <Point>
  115 + <coordinates>
  116 + 102.813728813702,23.2361906183568
  117 + </coordinates>
  118 + </Point>
  119 + <wpml:index>1</wpml:index>
  120 + <wpml:ellipsoidHeight>67.199632961</wpml:ellipsoidHeight>
  121 + <wpml:height>67.199632961</wpml:height>
  122 + <wpml:waypointSpeed>10</wpml:waypointSpeed>
  123 + <wpml:waypointHeadingParam>
  124 + <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode>
  125 + <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle>
  126 + <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint>
  127 + <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode>
  128 + <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex>
  129 + </wpml:waypointHeadingParam>
  130 + <wpml:waypointTurnParam>
  131 + <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode>
  132 + <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist>
  133 + </wpml:waypointTurnParam>
  134 + <wpml:useGlobalHeight>1</wpml:useGlobalHeight>
  135 + <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed>
  136 + <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam>
  137 + <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam>
  138 + <wpml:useStraightLine>1</wpml:useStraightLine>
  139 + <wpml:actionGroup>
  140 + <wpml:actionGroupId>1</wpml:actionGroupId>
  141 + <wpml:actionGroupStartIndex>1</wpml:actionGroupStartIndex>
  142 + <wpml:actionGroupEndIndex>1</wpml:actionGroupEndIndex>
  143 + <wpml:actionGroupMode>sequence</wpml:actionGroupMode>
  144 + <wpml:actionTrigger>
  145 + <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType>
  146 + </wpml:actionTrigger>
  147 + <wpml:action>
  148 + <wpml:actionId>0</wpml:actionId>
  149 + <wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
  150 + <wpml:actionActuatorFuncParam>
  151 + <wpml:gimbalPitchRotateAngle>-56.05</wpml:gimbalPitchRotateAngle>
  152 + <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
  153 + <wpml:gimbalYawRotateAngle>-37.265</wpml:gimbalYawRotateAngle>
  154 + <wpml:focusX>0</wpml:focusX>
  155 + <wpml:focusY>0</wpml:focusY>
  156 + <wpml:focusRegionWidth>0</wpml:focusRegionWidth>
  157 + <wpml:focusRegionHeight>0</wpml:focusRegionHeight>
  158 + <wpml:focalLength>216</wpml:focalLength>
  159 + <wpml:aircraftHeading>-37.265</wpml:aircraftHeading>
  160 + <wpml:accurateFrameValid>0</wpml:accurateFrameValid>
  161 + <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
  162 + <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
  163 + <wpml:targetAngle>0</wpml:targetAngle>
  164 + <wpml:actionUUID>e34fd1b6-c2f8-4eb7-a7e9-210047029c6b</wpml:actionUUID>
  165 + <wpml:imageWidth>0</wpml:imageWidth>
  166 + <wpml:imageHeight>0</wpml:imageHeight>
  167 + <wpml:AFPos>0</wpml:AFPos>
  168 + <wpml:gimbalPort>0</wpml:gimbalPort>
  169 + <wpml:orientedCameraType>53</wpml:orientedCameraType>
  170 + <wpml:orientedFilePath>2ec97c52-0ca8-4e17-90e9-d50ac3e3dbd9</wpml:orientedFilePath>
  171 + <wpml:orientedFileMD5/>
  172 + <wpml:orientedFileSize>0</wpml:orientedFileSize>
  173 + <wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
  174 + </wpml:actionActuatorFuncParam>
  175 + </wpml:action>
  176 + </wpml:actionGroup>
  177 + <wpml:isRisky>0</wpml:isRisky>
  178 + </Placemark>
  179 + <Placemark>
  180 + <Point>
  181 + <coordinates>
  182 + 102.8136078157,23.2364742507511
  183 + </coordinates>
  184 + </Point>
  185 + <wpml:index>2</wpml:index>
  186 + <wpml:ellipsoidHeight>67.199632961</wpml:ellipsoidHeight>
  187 + <wpml:height>67.199632961</wpml:height>
  188 + <wpml:waypointSpeed>10</wpml:waypointSpeed>
  189 + <wpml:waypointHeadingParam>
  190 + <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode>
  191 + <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle>
  192 + <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint>
  193 + <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode>
  194 + <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex>
  195 + </wpml:waypointHeadingParam>
  196 + <wpml:waypointTurnParam>
  197 + <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode>
  198 + <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist>
  199 + </wpml:waypointTurnParam>
  200 + <wpml:useGlobalHeight>1</wpml:useGlobalHeight>
  201 + <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed>
  202 + <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam>
  203 + <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam>
  204 + <wpml:useStraightLine>1</wpml:useStraightLine>
  205 + <wpml:actionGroup>
  206 + <wpml:actionGroupId>2</wpml:actionGroupId>
  207 + <wpml:actionGroupStartIndex>2</wpml:actionGroupStartIndex>
  208 + <wpml:actionGroupEndIndex>2</wpml:actionGroupEndIndex>
  209 + <wpml:actionGroupMode>sequence</wpml:actionGroupMode>
  210 + <wpml:actionTrigger>
  211 + <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType>
  212 + </wpml:actionTrigger>
  213 + <wpml:action>
  214 + <wpml:actionId>0</wpml:actionId>
  215 + <wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
  216 + <wpml:actionActuatorFuncParam>
  217 + <wpml:gimbalPitchRotateAngle>-56.05</wpml:gimbalPitchRotateAngle>
  218 + <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
  219 + <wpml:gimbalYawRotateAngle>-37.265</wpml:gimbalYawRotateAngle>
  220 + <wpml:focusX>0</wpml:focusX>
  221 + <wpml:focusY>0</wpml:focusY>
  222 + <wpml:focusRegionWidth>0</wpml:focusRegionWidth>
  223 + <wpml:focusRegionHeight>0</wpml:focusRegionHeight>
  224 + <wpml:focalLength>216</wpml:focalLength>
  225 + <wpml:aircraftHeading>-37.265</wpml:aircraftHeading>
  226 + <wpml:accurateFrameValid>0</wpml:accurateFrameValid>
  227 + <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
  228 + <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
  229 + <wpml:targetAngle>0</wpml:targetAngle>
  230 + <wpml:actionUUID>c5b670bc-7e02-4ee3-a7de-d3bfb1743847</wpml:actionUUID>
  231 + <wpml:imageWidth>0</wpml:imageWidth>
  232 + <wpml:imageHeight>0</wpml:imageHeight>
  233 + <wpml:AFPos>0</wpml:AFPos>
  234 + <wpml:gimbalPort>0</wpml:gimbalPort>
  235 + <wpml:orientedCameraType>53</wpml:orientedCameraType>
  236 + <wpml:orientedFilePath>2b63ee8a-751a-4370-ab6d-a6625640851c</wpml:orientedFilePath>
  237 + <wpml:orientedFileMD5/>
  238 + <wpml:orientedFileSize>0</wpml:orientedFileSize>
  239 + <wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
  240 + </wpml:actionActuatorFuncParam>
  241 + </wpml:action>
  242 + </wpml:actionGroup>
  243 + <wpml:isRisky>0</wpml:isRisky>
  244 + </Placemark>
  245 + <Placemark>
  246 + <Point>
  247 + <coordinates>
  248 + 102.813597685565,23.2363064208282
  249 + </coordinates>
  250 + </Point>
  251 + <wpml:index>3</wpml:index>
  252 + <wpml:ellipsoidHeight>67.199632961</wpml:ellipsoidHeight>
  253 + <wpml:height>67.199632961</wpml:height>
  254 + <wpml:waypointSpeed>10</wpml:waypointSpeed>
  255 + <wpml:waypointHeadingParam>
  256 + <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode>
  257 + <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle>
  258 + <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint>
  259 + <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode>
  260 + <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex>
  261 + </wpml:waypointHeadingParam>
  262 + <wpml:waypointTurnParam>
  263 + <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode>
  264 + <wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist>
  265 + </wpml:waypointTurnParam>
  266 + <wpml:useGlobalHeight>1</wpml:useGlobalHeight>
  267 + <wpml:useGlobalSpeed>1</wpml:useGlobalSpeed>
  268 + <wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam>
  269 + <wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam>
  270 + <wpml:useStraightLine>1</wpml:useStraightLine>
  271 + <wpml:actionGroup>
  272 + <wpml:actionGroupId>3</wpml:actionGroupId>
  273 + <wpml:actionGroupStartIndex>3</wpml:actionGroupStartIndex>
  274 + <wpml:actionGroupEndIndex>3</wpml:actionGroupEndIndex>
  275 + <wpml:actionGroupMode>sequence</wpml:actionGroupMode>
  276 + <wpml:actionTrigger>
  277 + <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType>
  278 + </wpml:actionTrigger>
  279 + <wpml:action>
  280 + <wpml:actionId>0</wpml:actionId>
  281 + <wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
  282 + <wpml:actionActuatorFuncParam>
  283 + <wpml:gimbalPitchRotateAngle>-41.107</wpml:gimbalPitchRotateAngle>
  284 + <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
  285 + <wpml:gimbalYawRotateAngle>-38.933</wpml:gimbalYawRotateAngle>
  286 + <wpml:focusX>0</wpml:focusX>
  287 + <wpml:focusY>0</wpml:focusY>
  288 + <wpml:focusRegionWidth>0</wpml:focusRegionWidth>
  289 + <wpml:focusRegionHeight>0</wpml:focusRegionHeight>
  290 + <wpml:focalLength>384</wpml:focalLength>
  291 + <wpml:aircraftHeading>-38.933</wpml:aircraftHeading>
  292 + <wpml:accurateFrameValid>0</wpml:accurateFrameValid>
  293 + <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
  294 + <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
  295 + <wpml:targetAngle>0</wpml:targetAngle>
  296 + <wpml:actionUUID>77078303-bffc-4565-81d3-763b2d105e06</wpml:actionUUID>
  297 + <wpml:imageWidth>0</wpml:imageWidth>
  298 + <wpml:imageHeight>0</wpml:imageHeight>
  299 + <wpml:AFPos>0</wpml:AFPos>
  300 + <wpml:gimbalPort>0</wpml:gimbalPort>
  301 + <wpml:orientedCameraType>53</wpml:orientedCameraType>
  302 + <wpml:orientedFilePath>aa00b71e-339c-4b38-9486-2fea43711004</wpml:orientedFilePath>
  303 + <wpml:orientedFileMD5/>
  304 + <wpml:orientedFileSize>0</wpml:orientedFileSize>
  305 + <wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
  306 + </wpml:actionActuatorFuncParam>
  307 + </wpml:action>
  308 + <wpml:action>
  309 + <wpml:actionId>1</wpml:actionId>
  310 + <wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
  311 + <wpml:actionActuatorFuncParam>
  312 + <wpml:gimbalPitchRotateAngle>-40.068</wpml:gimbalPitchRotateAngle>
  313 + <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
  314 + <wpml:gimbalYawRotateAngle>-25.848</wpml:gimbalYawRotateAngle>
  315 + <wpml:focusX>0</wpml:focusX>
  316 + <wpml:focusY>0</wpml:focusY>
  317 + <wpml:focusRegionWidth>0</wpml:focusRegionWidth>
  318 + <wpml:focusRegionHeight>0</wpml:focusRegionHeight>
  319 + <wpml:focalLength>192</wpml:focalLength>
  320 + <wpml:aircraftHeading>-25.848</wpml:aircraftHeading>
  321 + <wpml:accurateFrameValid>0</wpml:accurateFrameValid>
  322 + <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
  323 + <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
  324 + <wpml:targetAngle>0</wpml:targetAngle>
  325 + <wpml:actionUUID>2902f57f-778f-4aed-bfdc-0aa52c65a88a</wpml:actionUUID>
  326 + <wpml:imageWidth>0</wpml:imageWidth>
  327 + <wpml:imageHeight>0</wpml:imageHeight>
  328 + <wpml:AFPos>0</wpml:AFPos>
  329 + <wpml:gimbalPort>0</wpml:gimbalPort>
  330 + <wpml:orientedCameraType>53</wpml:orientedCameraType>
  331 + <wpml:orientedFilePath>519c9fa4-d6c8-4108-80f7-27ed0dfdffd9</wpml:orientedFilePath>
  332 + <wpml:orientedFileMD5/>
  333 + <wpml:orientedFileSize>0</wpml:orientedFileSize>
  334 + <wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
  335 + </wpml:actionActuatorFuncParam>
  336 + </wpml:action>
  337 + <wpml:action>
  338 + <wpml:actionId>2</wpml:actionId>
  339 + <wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
  340 + <wpml:actionActuatorFuncParam>
  341 + <wpml:gimbalPitchRotateAngle>-30.922</wpml:gimbalPitchRotateAngle>
  342 + <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
  343 + <wpml:gimbalYawRotateAngle>-32.302</wpml:gimbalYawRotateAngle>
  344 + <wpml:focusX>0</wpml:focusX>
  345 + <wpml:focusY>0</wpml:focusY>
  346 + <wpml:focusRegionWidth>0</wpml:focusRegionWidth>
  347 + <wpml:focusRegionHeight>0</wpml:focusRegionHeight>
  348 + <wpml:focalLength>672</wpml:focalLength>
  349 + <wpml:aircraftHeading>-32.302</wpml:aircraftHeading>
  350 + <wpml:accurateFrameValid>0</wpml:accurateFrameValid>
  351 + <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
  352 + <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
  353 + <wpml:targetAngle>0</wpml:targetAngle>
  354 + <wpml:actionUUID>5325086b-6bb6-49de-8b4f-6024cf8663e7</wpml:actionUUID>
  355 + <wpml:imageWidth>0</wpml:imageWidth>
  356 + <wpml:imageHeight>0</wpml:imageHeight>
  357 + <wpml:AFPos>0</wpml:AFPos>
  358 + <wpml:gimbalPort>0</wpml:gimbalPort>
  359 + <wpml:orientedCameraType>53</wpml:orientedCameraType>
  360 + <wpml:orientedFilePath>b02a1705-aa5f-4d45-bb16-1a0196dc9e7a</wpml:orientedFilePath>
  361 + <wpml:orientedFileMD5/>
  362 + <wpml:orientedFileSize>0</wpml:orientedFileSize>
  363 + <wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
  364 + </wpml:actionActuatorFuncParam>
  365 + </wpml:action>
  366 + <wpml:action>
  367 + <wpml:actionId>3</wpml:actionId>
  368 + <wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
  369 + <wpml:actionActuatorFuncParam>
  370 + <wpml:gimbalPitchRotateAngle>-31.066</wpml:gimbalPitchRotateAngle>
  371 + <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
  372 + <wpml:gimbalYawRotateAngle>-23.091</wpml:gimbalYawRotateAngle>
  373 + <wpml:focusX>0</wpml:focusX>
  374 + <wpml:focusY>0</wpml:focusY>
  375 + <wpml:focusRegionWidth>0</wpml:focusRegionWidth>
  376 + <wpml:focusRegionHeight>0</wpml:focusRegionHeight>
  377 + <wpml:focalLength>672</wpml:focalLength>
  378 + <wpml:aircraftHeading>-23.091</wpml:aircraftHeading>
  379 + <wpml:accurateFrameValid>0</wpml:accurateFrameValid>
  380 + <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
  381 + <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
  382 + <wpml:targetAngle>0</wpml:targetAngle>
  383 + <wpml:actionUUID>7807e00d-eef9-40f7-b500-fa97f77a6b8b</wpml:actionUUID>
  384 + <wpml:imageWidth>0</wpml:imageWidth>
  385 + <wpml:imageHeight>0</wpml:imageHeight>
  386 + <wpml:AFPos>0</wpml:AFPos>
  387 + <wpml:gimbalPort>0</wpml:gimbalPort>
  388 + <wpml:orientedCameraType>53</wpml:orientedCameraType>
  389 + <wpml:orientedFilePath>eb74a2e8-5b9b-49c7-9d07-e1be206d05f2</wpml:orientedFilePath>
  390 + <wpml:orientedFileMD5/>
  391 + <wpml:orientedFileSize>0</wpml:orientedFileSize>
  392 + <wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
  393 + </wpml:actionActuatorFuncParam>
  394 + </wpml:action>
  395 + <wpml:action>
  396 + <wpml:actionId>4</wpml:actionId>
  397 + <wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
  398 + <wpml:actionActuatorFuncParam>
  399 + <wpml:gimbalPitchRotateAngle>-31.066</wpml:gimbalPitchRotateAngle>
  400 + <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
  401 + <wpml:gimbalYawRotateAngle>-23.091</wpml:gimbalYawRotateAngle>
  402 + <wpml:focusX>0</wpml:focusX>
  403 + <wpml:focusY>0</wpml:focusY>
  404 + <wpml:focusRegionWidth>0</wpml:focusRegionWidth>
  405 + <wpml:focusRegionHeight>0</wpml:focusRegionHeight>
  406 + <wpml:focalLength>384</wpml:focalLength>
  407 + <wpml:aircraftHeading>-23.091</wpml:aircraftHeading>
  408 + <wpml:accurateFrameValid>0</wpml:accurateFrameValid>
  409 + <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
  410 + <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
  411 + <wpml:targetAngle>0</wpml:targetAngle>
  412 + <wpml:actionUUID>ec0f9dbf-7b94-482c-93a1-2692f865bd91</wpml:actionUUID>
  413 + <wpml:imageWidth>0</wpml:imageWidth>
  414 + <wpml:imageHeight>0</wpml:imageHeight>
  415 + <wpml:AFPos>0</wpml:AFPos>
  416 + <wpml:gimbalPort>0</wpml:gimbalPort>
  417 + <wpml:orientedCameraType>53</wpml:orientedCameraType>
  418 + <wpml:orientedFilePath>32025061-f405-4f1e-9c2c-e8979dfd07d2</wpml:orientedFilePath>
  419 + <wpml:orientedFileMD5/>
  420 + <wpml:orientedFileSize>0</wpml:orientedFileSize>
  421 + <wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
  422 + </wpml:actionActuatorFuncParam>
  423 + </wpml:action>
  424 + </wpml:actionGroup>
  425 + <wpml:isRisky>0</wpml:isRisky>
  426 + </Placemark>
  427 + <wpml:payloadParam>
  428 + <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
  429 + <wpml:focusMode>firstPoint</wpml:focusMode>
  430 + <wpml:meteringMode>average</wpml:meteringMode>
  431 + <wpml:returnMode>singleReturnFirst</wpml:returnMode>
  432 + <wpml:samplingRate>240000</wpml:samplingRate>
  433 + <wpml:scanningMode>repetitive</wpml:scanningMode>
  434 + <wpml:imageFormat>zoom</wpml:imageFormat>
  435 + </wpml:payloadParam>
  436 + </Folder>
  437 + </Document>
  438 +</kml>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:wpml="http://www.dji.com/wpmz/1.0.6">
  3 + <Document>
  4 + <wpml:missionConfig>
  5 + <wpml:flyToWaylineMode>safely</wpml:flyToWaylineMode>
  6 + <wpml:finishAction>goHome</wpml:finishAction>
  7 + <wpml:exitOnRCLost>goContinue</wpml:exitOnRCLost>
  8 + <wpml:executeRCLostAction>goBack</wpml:executeRCLostAction>
  9 + <wpml:takeOffSecurityHeight>70</wpml:takeOffSecurityHeight>
  10 + <wpml:globalTransitionalSpeed>15</wpml:globalTransitionalSpeed>
  11 + <wpml:globalRTHHeight>100</wpml:globalRTHHeight>
  12 + <wpml:droneInfo>
  13 + <wpml:droneEnumValue>67</wpml:droneEnumValue>
  14 + <wpml:droneSubEnumValue>1</wpml:droneSubEnumValue>
  15 + </wpml:droneInfo>
  16 + <wpml:payloadInfo>
  17 + <wpml:payloadEnumValue>53</wpml:payloadEnumValue>
  18 + <wpml:payloadSubEnumValue>1</wpml:payloadSubEnumValue>
  19 + <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
  20 + </wpml:payloadInfo>
  21 + </wpml:missionConfig>
  22 + <Folder>
  23 + <wpml:templateId>0</wpml:templateId>
  24 + <wpml:executeHeightMode>relativeToStartPoint</wpml:executeHeightMode>
  25 + <wpml:waylineId>0</wpml:waylineId>
  26 + <wpml:distance>95.3817596435547</wpml:distance>
  27 + <wpml:duration>12.0381755828857</wpml:duration>
  28 + <wpml:autoFlightSpeed>10</wpml:autoFlightSpeed>
  29 + <Placemark>
  30 + <Point>
  31 + <coordinates>
  32 + 102.814068783866,23.2359655022029
  33 + </coordinates>
  34 + </Point>
  35 + <wpml:index>0</wpml:index>
  36 + <wpml:executeHeight>67.199632961</wpml:executeHeight>
  37 + <wpml:waypointSpeed>10</wpml:waypointSpeed>
  38 + <wpml:waypointHeadingParam>
  39 + <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode>
  40 + <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle>
  41 + <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint>
  42 + <wpml:waypointHeadingAngleEnable>0</wpml:waypointHeadingAngleEnable>
  43 + <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode>
  44 + <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex>
  45 + </wpml:waypointHeadingParam>
  46 + <wpml:waypointTurnParam>
  47 + <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode>
  48 + <wpml:waypointTurnDampingDist>0</wpml:waypointTurnDampingDist>
  49 + </wpml:waypointTurnParam>
  50 + <wpml:useStraightLine>1</wpml:useStraightLine>
  51 + <wpml:actionGroup>
  52 + <wpml:actionGroupId>0</wpml:actionGroupId>
  53 + <wpml:actionGroupStartIndex>0</wpml:actionGroupStartIndex>
  54 + <wpml:actionGroupEndIndex>0</wpml:actionGroupEndIndex>
  55 + <wpml:actionGroupMode>sequence</wpml:actionGroupMode>
  56 + <wpml:actionTrigger>
  57 + <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType>
  58 + </wpml:actionTrigger>
  59 + <wpml:action>
  60 + <wpml:actionId>0</wpml:actionId>
  61 + <wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
  62 + <wpml:actionActuatorFuncParam>
  63 + <wpml:gimbalPitchRotateAngle>-56.05</wpml:gimbalPitchRotateAngle>
  64 + <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
  65 + <wpml:gimbalYawRotateAngle>-51.148</wpml:gimbalYawRotateAngle>
  66 + <wpml:focusX>0</wpml:focusX>
  67 + <wpml:focusY>0</wpml:focusY>
  68 + <wpml:focusRegionWidth>0</wpml:focusRegionWidth>
  69 + <wpml:focusRegionHeight>0</wpml:focusRegionHeight>
  70 + <wpml:focalLength>216</wpml:focalLength>
  71 + <wpml:aircraftHeading>-51.148</wpml:aircraftHeading>
  72 + <wpml:accurateFrameValid>0</wpml:accurateFrameValid>
  73 + <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
  74 + <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
  75 + <wpml:payloadLensIndex>zoom</wpml:payloadLensIndex>
  76 + <wpml:targetAngle>0</wpml:targetAngle>
  77 + <wpml:actionUUID>a2f692e0-420b-4868-8693-3062d2aaf1ab</wpml:actionUUID>
  78 + <wpml:imageWidth>0</wpml:imageWidth>
  79 + <wpml:imageHeight>0</wpml:imageHeight>
  80 + <wpml:AFPos>0</wpml:AFPos>
  81 + <wpml:gimbalPort>0</wpml:gimbalPort>
  82 + <wpml:orientedCameraType>53</wpml:orientedCameraType>
  83 + <wpml:orientedFilePath>4bbe6c02-18b5-481d-a957-610240ff955c</wpml:orientedFilePath>
  84 + <wpml:orientedFileMD5/>
  85 + <wpml:orientedFileSize>0</wpml:orientedFileSize>
  86 + <wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
  87 + </wpml:actionActuatorFuncParam>
  88 + </wpml:action>
  89 + </wpml:actionGroup>
  90 + <wpml:waypointGimbalHeadingParam>
  91 + <wpml:waypointGimbalPitchAngle>0</wpml:waypointGimbalPitchAngle>
  92 + <wpml:waypointGimbalYawAngle>0</wpml:waypointGimbalYawAngle>
  93 + </wpml:waypointGimbalHeadingParam>
  94 + <wpml:isRisky>0</wpml:isRisky>
  95 + <wpml:waypointWorkType>0</wpml:waypointWorkType>
  96 + </Placemark>
  97 + <Placemark>
  98 + <Point>
  99 + <coordinates>
  100 + 102.813728813702,23.2361906183568
  101 + </coordinates>
  102 + </Point>
  103 + <wpml:index>1</wpml:index>
  104 + <wpml:executeHeight>67.199632961</wpml:executeHeight>
  105 + <wpml:waypointSpeed>10</wpml:waypointSpeed>
  106 + <wpml:waypointHeadingParam>
  107 + <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode>
  108 + <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle>
  109 + <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint>
  110 + <wpml:waypointHeadingAngleEnable>0</wpml:waypointHeadingAngleEnable>
  111 + <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode>
  112 + <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex>
  113 + </wpml:waypointHeadingParam>
  114 + <wpml:waypointTurnParam>
  115 + <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode>
  116 + <wpml:waypointTurnDampingDist>0</wpml:waypointTurnDampingDist>
  117 + </wpml:waypointTurnParam>
  118 + <wpml:useStraightLine>1</wpml:useStraightLine>
  119 + <wpml:actionGroup>
  120 + <wpml:actionGroupId>1</wpml:actionGroupId>
  121 + <wpml:actionGroupStartIndex>1</wpml:actionGroupStartIndex>
  122 + <wpml:actionGroupEndIndex>1</wpml:actionGroupEndIndex>
  123 + <wpml:actionGroupMode>sequence</wpml:actionGroupMode>
  124 + <wpml:actionTrigger>
  125 + <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType>
  126 + </wpml:actionTrigger>
  127 + <wpml:action>
  128 + <wpml:actionId>0</wpml:actionId>
  129 + <wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
  130 + <wpml:actionActuatorFuncParam>
  131 + <wpml:gimbalPitchRotateAngle>-56.05</wpml:gimbalPitchRotateAngle>
  132 + <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
  133 + <wpml:gimbalYawRotateAngle>-37.265</wpml:gimbalYawRotateAngle>
  134 + <wpml:focusX>0</wpml:focusX>
  135 + <wpml:focusY>0</wpml:focusY>
  136 + <wpml:focusRegionWidth>0</wpml:focusRegionWidth>
  137 + <wpml:focusRegionHeight>0</wpml:focusRegionHeight>
  138 + <wpml:focalLength>216</wpml:focalLength>
  139 + <wpml:aircraftHeading>-37.265</wpml:aircraftHeading>
  140 + <wpml:accurateFrameValid>0</wpml:accurateFrameValid>
  141 + <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
  142 + <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
  143 + <wpml:payloadLensIndex>zoom</wpml:payloadLensIndex>
  144 + <wpml:targetAngle>0</wpml:targetAngle>
  145 + <wpml:actionUUID>e34fd1b6-c2f8-4eb7-a7e9-210047029c6b</wpml:actionUUID>
  146 + <wpml:imageWidth>0</wpml:imageWidth>
  147 + <wpml:imageHeight>0</wpml:imageHeight>
  148 + <wpml:AFPos>0</wpml:AFPos>
  149 + <wpml:gimbalPort>0</wpml:gimbalPort>
  150 + <wpml:orientedCameraType>53</wpml:orientedCameraType>
  151 + <wpml:orientedFilePath>2ec97c52-0ca8-4e17-90e9-d50ac3e3dbd9</wpml:orientedFilePath>
  152 + <wpml:orientedFileMD5/>
  153 + <wpml:orientedFileSize>0</wpml:orientedFileSize>
  154 + <wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
  155 + </wpml:actionActuatorFuncParam>
  156 + </wpml:action>
  157 + </wpml:actionGroup>
  158 + <wpml:waypointGimbalHeadingParam>
  159 + <wpml:waypointGimbalPitchAngle>0</wpml:waypointGimbalPitchAngle>
  160 + <wpml:waypointGimbalYawAngle>0</wpml:waypointGimbalYawAngle>
  161 + </wpml:waypointGimbalHeadingParam>
  162 + <wpml:isRisky>0</wpml:isRisky>
  163 + <wpml:waypointWorkType>0</wpml:waypointWorkType>
  164 + </Placemark>
  165 + <Placemark>
  166 + <Point>
  167 + <coordinates>
  168 + 102.8136078157,23.2364742507511
  169 + </coordinates>
  170 + </Point>
  171 + <wpml:index>2</wpml:index>
  172 + <wpml:executeHeight>67.199632961</wpml:executeHeight>
  173 + <wpml:waypointSpeed>10</wpml:waypointSpeed>
  174 + <wpml:waypointHeadingParam>
  175 + <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode>
  176 + <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle>
  177 + <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint>
  178 + <wpml:waypointHeadingAngleEnable>0</wpml:waypointHeadingAngleEnable>
  179 + <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode>
  180 + <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex>
  181 + </wpml:waypointHeadingParam>
  182 + <wpml:waypointTurnParam>
  183 + <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode>
  184 + <wpml:waypointTurnDampingDist>0</wpml:waypointTurnDampingDist>
  185 + </wpml:waypointTurnParam>
  186 + <wpml:useStraightLine>1</wpml:useStraightLine>
  187 + <wpml:actionGroup>
  188 + <wpml:actionGroupId>2</wpml:actionGroupId>
  189 + <wpml:actionGroupStartIndex>2</wpml:actionGroupStartIndex>
  190 + <wpml:actionGroupEndIndex>2</wpml:actionGroupEndIndex>
  191 + <wpml:actionGroupMode>sequence</wpml:actionGroupMode>
  192 + <wpml:actionTrigger>
  193 + <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType>
  194 + </wpml:actionTrigger>
  195 + <wpml:action>
  196 + <wpml:actionId>0</wpml:actionId>
  197 + <wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
  198 + <wpml:actionActuatorFuncParam>
  199 + <wpml:gimbalPitchRotateAngle>-56.05</wpml:gimbalPitchRotateAngle>
  200 + <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
  201 + <wpml:gimbalYawRotateAngle>-37.265</wpml:gimbalYawRotateAngle>
  202 + <wpml:focusX>0</wpml:focusX>
  203 + <wpml:focusY>0</wpml:focusY>
  204 + <wpml:focusRegionWidth>0</wpml:focusRegionWidth>
  205 + <wpml:focusRegionHeight>0</wpml:focusRegionHeight>
  206 + <wpml:focalLength>216</wpml:focalLength>
  207 + <wpml:aircraftHeading>-37.265</wpml:aircraftHeading>
  208 + <wpml:accurateFrameValid>0</wpml:accurateFrameValid>
  209 + <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
  210 + <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
  211 + <wpml:payloadLensIndex>zoom</wpml:payloadLensIndex>
  212 + <wpml:targetAngle>0</wpml:targetAngle>
  213 + <wpml:actionUUID>c5b670bc-7e02-4ee3-a7de-d3bfb1743847</wpml:actionUUID>
  214 + <wpml:imageWidth>0</wpml:imageWidth>
  215 + <wpml:imageHeight>0</wpml:imageHeight>
  216 + <wpml:AFPos>0</wpml:AFPos>
  217 + <wpml:gimbalPort>0</wpml:gimbalPort>
  218 + <wpml:orientedCameraType>53</wpml:orientedCameraType>
  219 + <wpml:orientedFilePath>2b63ee8a-751a-4370-ab6d-a6625640851c</wpml:orientedFilePath>
  220 + <wpml:orientedFileMD5/>
  221 + <wpml:orientedFileSize>0</wpml:orientedFileSize>
  222 + <wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
  223 + </wpml:actionActuatorFuncParam>
  224 + </wpml:action>
  225 + </wpml:actionGroup>
  226 + <wpml:waypointGimbalHeadingParam>
  227 + <wpml:waypointGimbalPitchAngle>0</wpml:waypointGimbalPitchAngle>
  228 + <wpml:waypointGimbalYawAngle>0</wpml:waypointGimbalYawAngle>
  229 + </wpml:waypointGimbalHeadingParam>
  230 + <wpml:isRisky>0</wpml:isRisky>
  231 + <wpml:waypointWorkType>0</wpml:waypointWorkType>
  232 + </Placemark>
  233 + <Placemark>
  234 + <Point>
  235 + <coordinates>
  236 + 102.813597685565,23.2363064208282
  237 + </coordinates>
  238 + </Point>
  239 + <wpml:index>3</wpml:index>
  240 + <wpml:executeHeight>67.199632961</wpml:executeHeight>
  241 + <wpml:waypointSpeed>10</wpml:waypointSpeed>
  242 + <wpml:waypointHeadingParam>
  243 + <wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode>
  244 + <wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle>
  245 + <wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint>
  246 + <wpml:waypointHeadingAngleEnable>0</wpml:waypointHeadingAngleEnable>
  247 + <wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode>
  248 + <wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex>
  249 + </wpml:waypointHeadingParam>
  250 + <wpml:waypointTurnParam>
  251 + <wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode>
  252 + <wpml:waypointTurnDampingDist>0</wpml:waypointTurnDampingDist>
  253 + </wpml:waypointTurnParam>
  254 + <wpml:useStraightLine>1</wpml:useStraightLine>
  255 + <wpml:actionGroup>
  256 + <wpml:actionGroupId>3</wpml:actionGroupId>
  257 + <wpml:actionGroupStartIndex>3</wpml:actionGroupStartIndex>
  258 + <wpml:actionGroupEndIndex>3</wpml:actionGroupEndIndex>
  259 + <wpml:actionGroupMode>sequence</wpml:actionGroupMode>
  260 + <wpml:actionTrigger>
  261 + <wpml:actionTriggerType>reachPoint</wpml:actionTriggerType>
  262 + </wpml:actionTrigger>
  263 + <wpml:action>
  264 + <wpml:actionId>0</wpml:actionId>
  265 + <wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
  266 + <wpml:actionActuatorFuncParam>
  267 + <wpml:gimbalPitchRotateAngle>-41.107</wpml:gimbalPitchRotateAngle>
  268 + <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
  269 + <wpml:gimbalYawRotateAngle>-38.933</wpml:gimbalYawRotateAngle>
  270 + <wpml:focusX>0</wpml:focusX>
  271 + <wpml:focusY>0</wpml:focusY>
  272 + <wpml:focusRegionWidth>0</wpml:focusRegionWidth>
  273 + <wpml:focusRegionHeight>0</wpml:focusRegionHeight>
  274 + <wpml:focalLength>384</wpml:focalLength>
  275 + <wpml:aircraftHeading>-38.933</wpml:aircraftHeading>
  276 + <wpml:accurateFrameValid>0</wpml:accurateFrameValid>
  277 + <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
  278 + <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
  279 + <wpml:payloadLensIndex>zoom</wpml:payloadLensIndex>
  280 + <wpml:targetAngle>0</wpml:targetAngle>
  281 + <wpml:actionUUID>77078303-bffc-4565-81d3-763b2d105e06</wpml:actionUUID>
  282 + <wpml:imageWidth>0</wpml:imageWidth>
  283 + <wpml:imageHeight>0</wpml:imageHeight>
  284 + <wpml:AFPos>0</wpml:AFPos>
  285 + <wpml:gimbalPort>0</wpml:gimbalPort>
  286 + <wpml:orientedCameraType>53</wpml:orientedCameraType>
  287 + <wpml:orientedFilePath>aa00b71e-339c-4b38-9486-2fea43711004</wpml:orientedFilePath>
  288 + <wpml:orientedFileMD5/>
  289 + <wpml:orientedFileSize>0</wpml:orientedFileSize>
  290 + <wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
  291 + </wpml:actionActuatorFuncParam>
  292 + </wpml:action>
  293 + <wpml:action>
  294 + <wpml:actionId>1</wpml:actionId>
  295 + <wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
  296 + <wpml:actionActuatorFuncParam>
  297 + <wpml:gimbalPitchRotateAngle>-40.068</wpml:gimbalPitchRotateAngle>
  298 + <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
  299 + <wpml:gimbalYawRotateAngle>-25.848</wpml:gimbalYawRotateAngle>
  300 + <wpml:focusX>0</wpml:focusX>
  301 + <wpml:focusY>0</wpml:focusY>
  302 + <wpml:focusRegionWidth>0</wpml:focusRegionWidth>
  303 + <wpml:focusRegionHeight>0</wpml:focusRegionHeight>
  304 + <wpml:focalLength>192</wpml:focalLength>
  305 + <wpml:aircraftHeading>-25.848</wpml:aircraftHeading>
  306 + <wpml:accurateFrameValid>0</wpml:accurateFrameValid>
  307 + <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
  308 + <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
  309 + <wpml:payloadLensIndex>zoom</wpml:payloadLensIndex>
  310 + <wpml:targetAngle>0</wpml:targetAngle>
  311 + <wpml:actionUUID>2902f57f-778f-4aed-bfdc-0aa52c65a88a</wpml:actionUUID>
  312 + <wpml:imageWidth>0</wpml:imageWidth>
  313 + <wpml:imageHeight>0</wpml:imageHeight>
  314 + <wpml:AFPos>0</wpml:AFPos>
  315 + <wpml:gimbalPort>0</wpml:gimbalPort>
  316 + <wpml:orientedCameraType>53</wpml:orientedCameraType>
  317 + <wpml:orientedFilePath>519c9fa4-d6c8-4108-80f7-27ed0dfdffd9</wpml:orientedFilePath>
  318 + <wpml:orientedFileMD5/>
  319 + <wpml:orientedFileSize>0</wpml:orientedFileSize>
  320 + <wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
  321 + </wpml:actionActuatorFuncParam>
  322 + </wpml:action>
  323 + <wpml:action>
  324 + <wpml:actionId>2</wpml:actionId>
  325 + <wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
  326 + <wpml:actionActuatorFuncParam>
  327 + <wpml:gimbalPitchRotateAngle>-30.922</wpml:gimbalPitchRotateAngle>
  328 + <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
  329 + <wpml:gimbalYawRotateAngle>-32.302</wpml:gimbalYawRotateAngle>
  330 + <wpml:focusX>0</wpml:focusX>
  331 + <wpml:focusY>0</wpml:focusY>
  332 + <wpml:focusRegionWidth>0</wpml:focusRegionWidth>
  333 + <wpml:focusRegionHeight>0</wpml:focusRegionHeight>
  334 + <wpml:focalLength>672</wpml:focalLength>
  335 + <wpml:aircraftHeading>-32.302</wpml:aircraftHeading>
  336 + <wpml:accurateFrameValid>0</wpml:accurateFrameValid>
  337 + <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
  338 + <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
  339 + <wpml:payloadLensIndex>zoom</wpml:payloadLensIndex>
  340 + <wpml:targetAngle>0</wpml:targetAngle>
  341 + <wpml:actionUUID>5325086b-6bb6-49de-8b4f-6024cf8663e7</wpml:actionUUID>
  342 + <wpml:imageWidth>0</wpml:imageWidth>
  343 + <wpml:imageHeight>0</wpml:imageHeight>
  344 + <wpml:AFPos>0</wpml:AFPos>
  345 + <wpml:gimbalPort>0</wpml:gimbalPort>
  346 + <wpml:orientedCameraType>53</wpml:orientedCameraType>
  347 + <wpml:orientedFilePath>b02a1705-aa5f-4d45-bb16-1a0196dc9e7a</wpml:orientedFilePath>
  348 + <wpml:orientedFileMD5/>
  349 + <wpml:orientedFileSize>0</wpml:orientedFileSize>
  350 + <wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
  351 + </wpml:actionActuatorFuncParam>
  352 + </wpml:action>
  353 + <wpml:action>
  354 + <wpml:actionId>3</wpml:actionId>
  355 + <wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
  356 + <wpml:actionActuatorFuncParam>
  357 + <wpml:gimbalPitchRotateAngle>-31.066</wpml:gimbalPitchRotateAngle>
  358 + <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
  359 + <wpml:gimbalYawRotateAngle>-23.091</wpml:gimbalYawRotateAngle>
  360 + <wpml:focusX>0</wpml:focusX>
  361 + <wpml:focusY>0</wpml:focusY>
  362 + <wpml:focusRegionWidth>0</wpml:focusRegionWidth>
  363 + <wpml:focusRegionHeight>0</wpml:focusRegionHeight>
  364 + <wpml:focalLength>672</wpml:focalLength>
  365 + <wpml:aircraftHeading>-23.091</wpml:aircraftHeading>
  366 + <wpml:accurateFrameValid>0</wpml:accurateFrameValid>
  367 + <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
  368 + <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
  369 + <wpml:payloadLensIndex>zoom</wpml:payloadLensIndex>
  370 + <wpml:targetAngle>0</wpml:targetAngle>
  371 + <wpml:actionUUID>7807e00d-eef9-40f7-b500-fa97f77a6b8b</wpml:actionUUID>
  372 + <wpml:imageWidth>0</wpml:imageWidth>
  373 + <wpml:imageHeight>0</wpml:imageHeight>
  374 + <wpml:AFPos>0</wpml:AFPos>
  375 + <wpml:gimbalPort>0</wpml:gimbalPort>
  376 + <wpml:orientedCameraType>53</wpml:orientedCameraType>
  377 + <wpml:orientedFilePath>eb74a2e8-5b9b-49c7-9d07-e1be206d05f2</wpml:orientedFilePath>
  378 + <wpml:orientedFileMD5/>
  379 + <wpml:orientedFileSize>0</wpml:orientedFileSize>
  380 + <wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
  381 + </wpml:actionActuatorFuncParam>
  382 + </wpml:action>
  383 + <wpml:action>
  384 + <wpml:actionId>4</wpml:actionId>
  385 + <wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
  386 + <wpml:actionActuatorFuncParam>
  387 + <wpml:gimbalPitchRotateAngle>-31.066</wpml:gimbalPitchRotateAngle>
  388 + <wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
  389 + <wpml:gimbalYawRotateAngle>-23.091</wpml:gimbalYawRotateAngle>
  390 + <wpml:focusX>0</wpml:focusX>
  391 + <wpml:focusY>0</wpml:focusY>
  392 + <wpml:focusRegionWidth>0</wpml:focusRegionWidth>
  393 + <wpml:focusRegionHeight>0</wpml:focusRegionHeight>
  394 + <wpml:focalLength>384</wpml:focalLength>
  395 + <wpml:aircraftHeading>-23.091</wpml:aircraftHeading>
  396 + <wpml:accurateFrameValid>0</wpml:accurateFrameValid>
  397 + <wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
  398 + <wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
  399 + <wpml:payloadLensIndex>zoom</wpml:payloadLensIndex>
  400 + <wpml:targetAngle>0</wpml:targetAngle>
  401 + <wpml:actionUUID>ec0f9dbf-7b94-482c-93a1-2692f865bd91</wpml:actionUUID>
  402 + <wpml:imageWidth>0</wpml:imageWidth>
  403 + <wpml:imageHeight>0</wpml:imageHeight>
  404 + <wpml:AFPos>0</wpml:AFPos>
  405 + <wpml:gimbalPort>0</wpml:gimbalPort>
  406 + <wpml:orientedCameraType>53</wpml:orientedCameraType>
  407 + <wpml:orientedFilePath>32025061-f405-4f1e-9c2c-e8979dfd07d2</wpml:orientedFilePath>
  408 + <wpml:orientedFileMD5/>
  409 + <wpml:orientedFileSize>0</wpml:orientedFileSize>
  410 + <wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
  411 + </wpml:actionActuatorFuncParam>
  412 + </wpml:action>
  413 + </wpml:actionGroup>
  414 + <wpml:waypointGimbalHeadingParam>
  415 + <wpml:waypointGimbalPitchAngle>0</wpml:waypointGimbalPitchAngle>
  416 + <wpml:waypointGimbalYawAngle>0</wpml:waypointGimbalYawAngle>
  417 + </wpml:waypointGimbalHeadingParam>
  418 + <wpml:isRisky>0</wpml:isRisky>
  419 + <wpml:waypointWorkType>0</wpml:waypointWorkType>
  420 + </Placemark>
  421 + </Folder>
  422 + </Document>
  423 +</kml>
  1 +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
  1 +<template>
  2 + <a-config-provider :theme="themeStore.themeConfig" :locale="localeStore.locale">
  3 + <router-view/>
  4 + </a-config-provider>
  5 +</template>
  6 +
  7 +<script setup lang="ts">
  8 +import {useThemeStore} from "@/store/useThemeStore.ts";
  9 +import {useLocaleStore} from "@/store/useLocaleStore.ts";
  10 +
  11 +const themeStore = useThemeStore()
  12 +const localeStore = useLocaleStore()
  13 +</script>
  14 +<style>
  15 +#app {
  16 + height: 100vh;
  17 + width: 100vw;
  18 + overflow: auto;
  19 +
  20 +}
  21 +
  22 +
  23 +::-webkit-scrollbar {
  24 + width: 5px; /* 宽度 */
  25 + height: 8px; /* 高度(对于水平滚动条) */
  26 + border: 1px solid rgb(128, 128, 128, 0.2);
  27 +}
  28 +
  29 +/* 滚动条滑块 */
  30 +
  31 +::-webkit-scrollbar-thumb {
  32 + background: rgb(128, 128, 128, 0.5); /* 滑块颜色 */
  33 + border-radius: 10px;
  34 +}
  35 +
  36 +/* 滚动条轨道 */
  37 +
  38 +::-webkit-scrollbar-track {
  39 + background: transparent; /* 轨道颜色 */
  40 + border-radius: 10px;
  41 +}
  42 +
  43 +/*动画处理*/
  44 +.v-enter-active,
  45 +.v-leave-active {
  46 + transition: opacity 0.5s ease;
  47 +}
  48 +
  49 +.v-enter-from,
  50 +.v-leave-to {
  51 + opacity: 0;
  52 +}
  53 +
  54 +/*动画处理*/
  55 +.drop-enter-active,
  56 +.drop-leave-active {
  57 + transition: all 0.5s ease;
  58 +}
  59 +
  60 +.drop-enter-from,
  61 +.drop-leave-to {
  62 + transform: translateY(-30px);
  63 + opacity: 0;
  64 +}
  65 +
  66 +
  67 +</style>
  1 +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="37.07" height="36" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 198"><path fill="#41B883" d="M204.8 0H256L128 220.8L0 0h97.92L128 51.2L157.44 0h47.36Z"></path><path fill="#41B883" d="m0 0l128 220.8L256 0h-51.2L128 132.48L50.56 0H0Z"></path><path fill="#35495E" d="M50.56 0L128 133.12L204.8 0h-47.36L128 51.2L97.92 0H50.56Z"></path></svg>
此 diff 太大无法显示。
  1 +<template>
  2 + <air-route-create-dialog @confirm="confirm" ref="airRouteCreateDialogRef"/>
  3 + <air-route-dialog @save="save" ref="airRouteDialogRef"/>
  4 +</template>
  5 +
  6 +<script setup lang="ts">
  7 +
  8 +import AirRouteDialog from "@/components/air-route/components/air-route-dialog.vue";
  9 +import AirRouteCreateDialog from "@/components/air-route/components/air-route-create-dialog.vue";
  10 +import {provide, ref} from "vue";
  11 +import {type Element, xml2js} from "xml-js";
  12 +import {useXMLComputed} from "@/components/air-route/components/useXMLComputed.ts";
  13 +
  14 +const airRouteCreateDialogRef = ref()
  15 +const airRouteDialogRef = ref()
  16 +
  17 +const title = ref('')
  18 +const wpmlElement = ref<Element>({
  19 + elements: []
  20 +})
  21 +
  22 +const {elment: kmlElement} = useXMLComputed(wpmlElement, 'kml')
  23 +const {elment: DocumentElement} = useXMLComputed(kmlElement, 'Document')
  24 +
  25 +provide('DocumentElement', DocumentElement)
  26 +provide('title', title)
  27 +
  28 +async function open(config?: {
  29 + title?: string,
  30 + file?: File,
  31 +}) {
  32 + title.value = config?.title || '新建航线'
  33 + if (config.file) {
  34 + let fileString = await config.file.text()
  35 + wpmlElement.value = <Element>xml2js(fileString)
  36 + airRouteDialogRef.value.open()
  37 + } else {
  38 + airRouteCreateDialogRef.value.open()
  39 + }
  40 +}
  41 +
  42 +function confirm() {
  43 + airRouteDialogRef.value.open()
  44 +}
  45 +
  46 +const emits = defineEmits(['save'])
  47 +
  48 +function save(config) {
  49 + emits('save', config)
  50 +}
  51 +
  52 +defineExpose({
  53 + open
  54 +})
  55 +</script>
  56 +
  57 +<style scoped>
  58 +
  59 +</style>
  1 +<template>
  2 + <el-dialog v-model="show" title="创建航线">
  3 + <el-form labelPosition="top">
  4 + <el-form-item label="选择飞行器">
  5 + <l-select-box :options="optionsGroup.map((item,index)=>({...item,value:index}))" v-model="form.selectGroup"
  6 + @select="onChangeGroup"/>
  7 + </el-form-item>
  8 + <el-form-item label="选择型号">
  9 + <l-select-box :options="optionsGroup[form.selectGroup].children" v-model="form.droneEnumValue"/>
  10 + </el-form-item>
  11 + <el-form-item title="航线名称">
  12 + <el-input v-model="form.title"/>
  13 + </el-form-item>
  14 + </el-form>
  15 + <template #footer>
  16 + <div class="dialog-footer">
  17 + <el-button @click="show = false">取消</el-button>
  18 + <el-button type="primary" @click="confirm">
  19 + 确定
  20 + </el-button>
  21 + </div>
  22 + </template>
  23 + </el-dialog>
  24 +</template>
  25 +
  26 +<script setup lang="ts">
  27 +
  28 +import {type Element, js2xml, xml2js} from "xml-js";
  29 +import {inject, ref, type WritableComputedRef} from "vue";
  30 +import {useXMLComputed} from "@/components/air-route/components/useXMLComputed.ts";
  31 +import LSelectBox from "@/components/air-route/components/l-select-box.vue";
  32 +
  33 +const form = ref({})
  34 +
  35 +const title = inject("title");
  36 +const DocumentElement = inject<WritableComputedRef<Element, Element>>("DocumentElement");
  37 +
  38 +const show = ref(false)
  39 +
  40 +const {elment: droneInfoElement} = useXMLComputed(DocumentElement, 'wpml:droneInfo')
  41 +const {text: droneEnumValue} = useXMLComputed(droneInfoElement, 'wpml:droneEnumValue', {
  42 + defaultText: 'Matrice 4E'
  43 +})
  44 +const optionsGroup = ref([
  45 + {
  46 + label: 'Matrice 30 系列',
  47 + children: [
  48 + {
  49 + label: 'Matrice 30',
  50 + value: 'Matrice 30',
  51 + },
  52 + {
  53 + label: 'Matrice 30T',
  54 + value: 'Matrice 30T',
  55 + },
  56 + ]
  57 + }, {
  58 + label: 'Matrice 4 系列',
  59 + children: [
  60 + {
  61 + label: 'Matrice 4E',
  62 + value: 'Matrice 4E',
  63 + },
  64 + {
  65 + label: 'Matrice 4T',
  66 + value: 'Matrice 4T',
  67 + },
  68 + ]
  69 + }
  70 +])
  71 +
  72 +function onChangeGroup() {
  73 + form.value.droneEnumValue = optionsGroup.value[form.value.selectGroup].children[0].value
  74 +}
  75 +
  76 +async function open() {
  77 + show.value = true;
  78 + form.value = {
  79 + title: title.value,
  80 + droneEnumValue: droneEnumValue.value,
  81 + selectGroup: optionsGroup.value.findIndex(v => v.children.findIndex(v => v.value === droneEnumValue.value) !== -1)
  82 + }
  83 +}
  84 +
  85 +const emits = defineEmits(['confirm'])
  86 +
  87 +function confirm() {
  88 + show.value = false;
  89 + title.value = form.value.title
  90 + droneEnumValue.value = form.value.droneEnumValue
  91 + emits('confirm')
  92 +}
  93 +
  94 +defineExpose({
  95 + open
  96 +})
  97 +</script>
  98 +
  99 +<style scoped>
  100 +
  101 +</style>
  1 +<template>
  2 + <div class="air-route-dialog" v-if="show">
  3 + <div class="header">
  4 + <div class="left">
  5 + <el-icon @click="close" class="action" size="30">
  6 + <ArrowLeft/>
  7 + </el-icon>
  8 + <el-icon class="action" :class="{disabled:true}" size="30">
  9 + <Document/>
  10 + </el-icon>
  11 + <folder-setting/>
  12 + </div>
  13 + <div class="center">
  14 + <el-button-group @click="airRouteUpdateDialogRef.open()">
  15 + <el-button>{{ title }}</el-button>
  16 + <el-button>经纬M30T</el-button>
  17 + </el-button-group>
  18 + </div>
  19 + <div class="right"></div>
  20 + </div>
  21 + <div class="content" style="display: flex;flex: 1;overflow: auto">
  22 + <div class="left" style="flex: 2;overflow:auto;">
  23 + <placemark-list/>
  24 + </div>
  25 + <div class="center" style="flex: 6;overflow:auto;">
  26 + <cesium-map/>
  27 + </div>
  28 + <div class="right" style="flex: 3;overflow:auto;">
  29 + <pre style="height: 100%" lang="xml"><code>{{ js2xml(DocumentElement, {spaces: 2}) }}</code> </pre>
  30 + </div>
  31 + </div>
  32 + </div>
  33 + <air-route-update-dialog ref="airRouteUpdateDialogRef"/>
  34 +</template>
  35 +
  36 +<script setup lang="ts">
  37 +import {computed, inject, ref, type WritableComputedRef} from "vue";
  38 +import {ArrowLeft, Document} from "@element-plus/icons-vue";
  39 +import {type Element, js2xml, xml2json} from "xml-js";
  40 +import FolderSetting from "@/components/air-route/components/folder-setting.vue";
  41 +import AirRouteUpdateDialog from "@/components/air-route/components/air-route-update-dialog.vue";
  42 +import PlacemarkList from "@/components/air-route/components/placemark-list.vue";
  43 +import CesiumMap from "@/components/air-route/components/cesium-map.vue";
  44 +
  45 +
  46 +const show = ref(false)
  47 +
  48 +const title = inject("title");
  49 +const DocumentElement = inject<WritableComputedRef<Element, Element>>("DocumentElement");
  50 +
  51 +const airRouteUpdateDialogRef = ref()
  52 +
  53 +async function open() {
  54 + show.value = true
  55 +}
  56 +
  57 +function close() {
  58 + show.value = false
  59 +}
  60 +
  61 +const emits = defineEmits(['save'])
  62 +
  63 +
  64 +function save() {
  65 + emits('save')
  66 +}
  67 +
  68 +defineExpose({
  69 + open,
  70 +})
  71 +</script>
  72 +
  73 +<style scoped>
  74 +.air-route-dialog {
  75 + width: 100vw;
  76 + height: 100vh;
  77 + position: fixed;
  78 + top: 0;
  79 + left: 0;
  80 + z-index: 99;
  81 + background: #232323;
  82 + display: flex;
  83 + flex-direction: column;
  84 +
  85 + .header {
  86 + display: flex;
  87 + padding: 10px;
  88 + border-bottom: 1px solid #4f4f4f;
  89 + z-index: 100;
  90 +
  91 + .left {
  92 + display: flex;
  93 + flex: 1;
  94 +
  95 + .action {
  96 + cursor: pointer;
  97 + margin: 0 5px;
  98 +
  99 + &:hover {
  100 + color: #409eff;
  101 + }
  102 +
  103 + &.disabled {
  104 + cursor: not-allowed;
  105 + opacity: 0.5;
  106 +
  107 + &:hover {
  108 + color: unset;
  109 + }
  110 + }
  111 + }
  112 + }
  113 +
  114 + .center {
  115 + flex: 3;
  116 + display: flex;
  117 + justify-content: center;
  118 + }
  119 +
  120 + .right {
  121 + flex: 1;
  122 + }
  123 +
  124 + }
  125 +}
  126 +</style>
  1 +<template>
  2 + <el-dialog v-model="show" title="编辑">
  3 + <el-form labelPosition="top">
  4 + <el-form-item label="选择飞行器">
  5 + <l-select-box :options="optionsGroup.map((item,index)=>({...item,value:index}))" v-model="form.selectGroup"
  6 + @select="onChangeGroup"/>
  7 + </el-form-item>
  8 + <el-form-item label="选择型号">
  9 + <l-select-box :options="optionsGroup[form.selectGroup].children" v-model="form.droneEnumValue"/>
  10 + </el-form-item>
  11 + <el-form-item title="航线名称">
  12 + <el-input v-model="form.title"/>
  13 + </el-form-item>
  14 + </el-form>
  15 + <template #footer>
  16 + <div class="dialog-footer">
  17 + <el-button @click="show = false">取消</el-button>
  18 + <el-button type="primary" @click="confirm">
  19 + 确定
  20 + </el-button>
  21 + </div>
  22 + </template>
  23 + </el-dialog>
  24 +</template>
  25 +
  26 +<script setup lang="ts">
  27 +
  28 +import {type Element, js2xml, xml2js} from "xml-js";
  29 +import {inject, ref, type WritableComputedRef} from "vue";
  30 +import {useXMLComputed} from "@/components/air-route/components/useXMLComputed.ts";
  31 +import LSelectBox from "@/components/air-route/components/l-select-box.vue";
  32 +
  33 +const form = ref({})
  34 +
  35 +const title = inject("title");
  36 +const DocumentElement = inject<WritableComputedRef<Element, Element>>("DocumentElement");
  37 +
  38 +const show = ref(false)
  39 +
  40 +const {elment: droneInfoElement} = useXMLComputed(DocumentElement, 'wpml:droneInfo')
  41 +const {text: droneEnumValue} = useXMLComputed(droneInfoElement, 'wpml:droneEnumValue', {
  42 + defaultText: 'Matrice 4E'
  43 +})
  44 +const optionsGroup = ref([
  45 + {
  46 + label: 'Matrice 30 系列',
  47 + children: [
  48 + {
  49 + label: 'Matrice 30',
  50 + value: 'Matrice 30',
  51 + },
  52 + {
  53 + label: 'Matrice 30T',
  54 + value: 'Matrice 30T',
  55 + },
  56 + ]
  57 + }, {
  58 + label: 'Matrice 4 系列',
  59 + children: [
  60 + {
  61 + label: 'Matrice 4E',
  62 + value: 'Matrice 4E',
  63 + },
  64 + {
  65 + label: 'Matrice 4T',
  66 + value: 'Matrice 4T',
  67 + },
  68 + ]
  69 + }
  70 +])
  71 +
  72 +function onChangeGroup() {
  73 + form.value.droneEnumValue = optionsGroup.value[form.value.selectGroup].children[0].value
  74 +}
  75 +
  76 +async function open() {
  77 + show.value = true;
  78 + form.value = {
  79 + title: title.value,
  80 + droneEnumValue: droneEnumValue.value,
  81 + selectGroup: optionsGroup.value.findIndex(v => v.children.findIndex(v => v.value === droneEnumValue.value) !== -1)
  82 + }
  83 +}
  84 +
  85 +const emits = defineEmits(['confirm'])
  86 +
  87 +function confirm() {
  88 + show.value = false;
  89 + title.value = form.value.title
  90 + droneEnumValue.value = form.value.droneEnumValue
  91 + emits('confirm')
  92 +}
  93 +
  94 +defineExpose({
  95 + open
  96 +})
  97 +</script>
  98 +
  99 +<style scoped>
  100 +
  101 +</style>
  1 +<template>
  2 + <div style="width: 100%;height: 100%;">
  3 + <div id="cesium-map" style="width: 100%;height: 100%;"></div>
  4 +
  5 + </div>
  6 +</template>
  7 +
  8 +<script setup lang="ts">
  9 +import * as Cesium from "cesium";
  10 +import "cesium/Build/Cesium/Widgets/widgets.css";
  11 +import {inject, onMounted, ref, shallowRef, watch, type WritableComputedRef} from "vue";
  12 +import {useXMLComputed, useXMLComputedArr} from "@/components/air-route/components/useXMLComputed.ts";
  13 +import type {Element} from "xml-js";
  14 +
  15 +const DocumentElement = inject<WritableComputedRef<Element, Element>>("DocumentElement");
  16 +
  17 +const viewer = shallowRef()
  18 +
  19 +function initCesium() {
  20 + viewer.value = new Cesium.Viewer("cesium-map", {
  21 + animation: false,
  22 + baseLayerPicker: false,
  23 + fullscreenButton: false,
  24 + geocoder: false,
  25 + homeButton: false,
  26 + sceneModePicker: false,
  27 + timeline: false,
  28 + navigationHelpButton: false,
  29 + infoBox: false,
  30 + selectionIndicator: false,
  31 + terrainProvider: new Cesium.EllipsoidTerrainProvider()
  32 + })
  33 +
  34 + // 添加鼠标移动事件监听
  35 + const handler = new Cesium.ScreenSpaceEventHandler(viewer.value.scene.canvas);
  36 + let highlightedEntity = null;
  37 +
  38 +
  39 + handler.setInputAction((movement) => {
  40 + try {
  41 + const pickedObject = viewer.value.scene.pick(movement.endPosition);
  42 + if (pickedObject && pickedObject.id && pointList.value.find((item) => item._id === pickedObject.id._id)) {
  43 + viewer.value.scene.canvas.style.cursor = 'pointer';
  44 + // 鼠标移入时设置高亮颜色
  45 + if (highlightedEntity !== pickedObject.id) {
  46 + if (highlightedEntity) {
  47 + // 确保highlightedEntity存在point属性
  48 + if (highlightedEntity.point) {
  49 + highlightedEntity.point.color = Cesium.Color.WHITE;
  50 + highlightedEntity.point.outlineColor = Cesium.Color.WHITE;
  51 + }
  52 + }
  53 + highlightedEntity = pickedObject.id;
  54 + if (highlightedEntity.point) {
  55 + highlightedEntity.point.color = Cesium.Color.GREEN;
  56 + highlightedEntity.point.outlineColor = Cesium.Color.WHITE;
  57 + }
  58 + }
  59 + } else if (highlightedEntity) {
  60 + viewer.value.scene.canvas.style.cursor = 'default';
  61 + // 鼠标移出时恢复颜色
  62 + if (highlightedEntity.point) {
  63 + highlightedEntity.point.color = Cesium.Color.WHITE;
  64 + highlightedEntity.point.outlineColor = Cesium.Color.WHITE;
  65 + }
  66 + highlightedEntity = null;
  67 + }
  68 + if (!pickedObject) {
  69 + viewer.value.scene.canvas.style.cursor = 'default';
  70 + }
  71 + } catch (error) {
  72 + console.error('Error in mouse move handler:', error);
  73 + }
  74 + }, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
  75 +
  76 + viewer.value.camera.setView({
  77 + destination: Cesium.Cartesian3.fromDegrees(102.814068783866, 23.2359655022029, 300.0),
  78 + orientation: {
  79 + heading: Cesium.Math.toRadians(175.0),
  80 + pitch: Cesium.Math.toRadians(-90.0),
  81 + roll: 0.0
  82 + }
  83 + })
  84 + drawPlacemark()
  85 + if (placemarkList.value.length > 0) {
  86 + const {elment: PointElment} = useXMLComputed(placemarkList.value[placemarkList.value.length - 1].elment, 'Point')
  87 + const {text: coordinates} = useXMLComputed(PointElment, 'coordinates', {
  88 + separator: ',',
  89 + textType: 'number'
  90 + })
  91 + const {text: executeHeight} = useXMLComputed(placemarkList.value[placemarkList.value.length - 1].elment, 'wpml:executeHeight', {
  92 + textType: 'number'
  93 + })
  94 + drawPointer({
  95 + longitude: coordinates.value[0],
  96 + latitude: coordinates.value[1],
  97 + height: executeHeight.value
  98 + })
  99 + }
  100 +
  101 +
  102 +}
  103 +
  104 +
  105 +const {elment: FolderElement} = useXMLComputed(DocumentElement, 'Folder')
  106 +const {list: placemarkList} = useXMLComputedArr(FolderElement, 'Placemark')
  107 +watch(placemarkList, () => {
  108 + if (viewer.value) {
  109 + drawPlacemark()
  110 + if (placemarkList.value.length > 0) {
  111 + const {elment: PointElment} = useXMLComputed(placemarkList.value[placemarkList.value.length - 1].elment, 'Point')
  112 + const {text: coordinates} = useXMLComputed(PointElment, 'coordinates', {
  113 + separator: ',',
  114 + textType: 'number'
  115 + })
  116 + const {text: executeHeight} = useXMLComputed(placemarkList.value[placemarkList.value.length - 1].elment, 'wpml:executeHeight', {
  117 + textType: 'number'
  118 + })
  119 + drawPointer({
  120 + longitude: coordinates.value[0],
  121 + latitude: coordinates.value[1],
  122 + height: executeHeight.value
  123 + })
  124 + }
  125 + }
  126 +}, {
  127 + deep: true
  128 +})
  129 +const pointList = ref([])
  130 +const polylineList = ref([])
  131 +const arrowList = ref([])
  132 +
  133 +//画点和线
  134 +function drawPlacemark() {
  135 + // 先清除之前的点
  136 + pointList.value.forEach(point => viewer.value.entities.remove(point));
  137 + pointList.value = [];
  138 + // 清除旧连线和箭头
  139 + polylineList.value.forEach(line => viewer.value.entities.remove(line));
  140 + polylineList.value = [];
  141 + arrowList.value.forEach(arrow => viewer.value.entities.remove(arrow));
  142 + arrowList.value = [];
  143 +
  144 + placemarkList.value.forEach(({elment}) => {
  145 + const {elment: PointElment} = useXMLComputed(elment, 'Point')
  146 + const {text: coordinates} = useXMLComputed(PointElment, 'coordinates', {
  147 + separator: ',',
  148 + textType: 'number'
  149 + })
  150 + const {text: executeHeight} = useXMLComputed(elment, 'wpml:executeHeight', {
  151 + textType: 'number'
  152 + })
  153 + const point = viewer.value.entities.add({
  154 + position: Cesium.Cartesian3.fromDegrees(coordinates.value[0], coordinates.value[1], executeHeight.value),
  155 + point: {
  156 + pixelSize: 10,
  157 + color: Cesium.Color.WHITE,
  158 + outlineColor: Cesium.Color.WHITE,
  159 + outlineWidth: 2,
  160 + disableDepthTestDistance: Number.POSITIVE_INFINITY
  161 + }
  162 + })
  163 + pointList.value.push(point)
  164 + })
  165 +
  166 + // 创建连线和方向箭头
  167 + for (let i = 0; i < pointList.value.length - 1; i++) {
  168 + const start = pointList.value[i].position.getValue();
  169 + const end = pointList.value[i + 1].position.getValue();
  170 +
  171 + // 绘制连线
  172 + const polyline = viewer.value.entities.add({
  173 + polyline: {
  174 + positions: [start, end],
  175 + width: 3,
  176 + material: new Cesium.PolylineDashMaterialProperty({
  177 + color: Cesium.Color.GREEN,
  178 + gapColor: Cesium.Color.TRANSPARENT,
  179 + dashLength: 16.0,
  180 + dashPattern: 255
  181 + })
  182 + }
  183 + });
  184 + polylineList.value.push(polyline);
  185 + }
  186 +
  187 +}
  188 +
  189 +const pointer = ref(null)
  190 +/*const cameraEntity = ref(null)*/
  191 +const heading = ref(0)
  192 +
  193 +//画移动指针
  194 +function drawPointer({longitude, latitude, height}) {
  195 + document.removeEventListener('keydown', handleKeyDown);
  196 + viewer.value.camera.flyTo({
  197 + destination: Cesium.Cartesian3.fromDegrees(longitude, latitude - 0.001, height + 100),
  198 + orientation: {
  199 + heading: Cesium.Math.toRadians(heading.value),
  200 + pitch: Cesium.Math.toRadians(-45),
  201 + roll: Cesium.Math.toRadians(0)
  202 + }
  203 + })
  204 + if (pointer.value) {
  205 + viewer.value.entities.remove(pointer.value);
  206 + }
  207 + const position = Cesium.Cartesian3.fromDegrees(longitude, latitude, height)
  208 + pointer.value = viewer.value.entities.add({
  209 + position: position,
  210 + cylinder: {
  211 + length: 8,
  212 + topRadius: 0,
  213 + bottomRadius: 3,
  214 + slices: 4,
  215 + material: Cesium.Color.BLUE.withAlpha(0.8),
  216 + outline: true,
  217 + outlineColor: Cesium.Color.WHITE,
  218 + outlineWidth: 2,
  219 + },
  220 + orientation: Cesium.Transforms.headingPitchRollQuaternion(position,
  221 + new Cesium.HeadingPitchRoll(
  222 + Cesium.Math.toRadians(90 + heading.value),
  223 + Cesium.Math.toRadians(90),
  224 + Cesium.Math.toRadians(0))
  225 + ),
  226 + });
  227 + document.addEventListener('keydown', handleKeyDown);
  228 +}
  229 +
  230 +// 处理键盘事件
  231 +function handleKeyDown(event) {
  232 + if (!pointer.value) return;
  233 +
  234 + const moveStep = 0.0000001; // 移动步长,可根据需要调整
  235 + const currentPos = pointer.value.position.getValue();
  236 + const cartographic = Cesium.Cartographic.fromCartesian(currentPos);
  237 + switch (event.key.toLowerCase()) {
  238 + case 'w':
  239 + cartographic.latitude += moveStep * Math.cos(Cesium.Math.toRadians(heading.value));
  240 + cartographic.longitude += moveStep * Math.sin(Cesium.Math.toRadians(heading.value));
  241 + break;
  242 + case 'a':
  243 + cartographic.latitude += moveStep * Math.cos(Cesium.Math.toRadians(heading.value - 90));
  244 + cartographic.longitude += moveStep * Math.sin(Cesium.Math.toRadians(heading.value - 90));
  245 + break;
  246 + case 'd':
  247 + cartographic.latitude += moveStep * Math.cos(Cesium.Math.toRadians(heading.value + 90));
  248 + cartographic.longitude += moveStep * Math.sin(Cesium.Math.toRadians(heading.value + 90));
  249 + break;
  250 + case 's':
  251 + cartographic.latitude += moveStep * Math.cos(Cesium.Math.toRadians(heading.value + 180));
  252 + cartographic.longitude += moveStep * Math.sin(Cesium.Math.toRadians(heading.value + 180));
  253 + break;
  254 + case 'c':
  255 + cartographic.height += 1;
  256 + break;
  257 + case 'z':
  258 + cartographic.height -= 1;
  259 + break;
  260 + case 'q': // 逆时针旋转
  261 + heading.value -= 1
  262 + pointer.value.orientation = Cesium.Transforms.headingPitchRollQuaternion(currentPos,
  263 + new Cesium.HeadingPitchRoll(
  264 + Cesium.Math.toRadians(90 + heading.value),
  265 + Cesium.Math.toRadians(90),
  266 + Cesium.Math.toRadians(0))
  267 + )
  268 + break;
  269 + case 'e': // 顺时针旋转
  270 + heading.value += 1
  271 + pointer.value.orientation = Cesium.Transforms.headingPitchRollQuaternion(currentPos,
  272 + new Cesium.HeadingPitchRoll(
  273 + Cesium.Math.toRadians(90 + heading.value),
  274 + Cesium.Math.toRadians(90),
  275 + Cesium.Math.toRadians(0))
  276 + )
  277 + break;
  278 + default:
  279 + return;
  280 + }
  281 + const newPosition = Cesium.Cartesian3.fromRadians(
  282 + cartographic.longitude,
  283 + cartographic.latitude,
  284 + cartographic.height
  285 + );
  286 + pointer.value.position = newPosition;
  287 +}
  288 +
  289 +onMounted(() => {
  290 + initCesium()
  291 +})
  292 +</script>
  293 +
  294 +<style scoped></style>
  295 +
  296 +
  297 +
  298 +
  299 +
  300 +
  301 +
  302 +
  303 +
  304 +
  305 +
  306 +
  307 +
  308 +
  309 +
  310 +
  311 +
  312 +
  313 +
  314 +
  315 +
  316 +
  317 +
  318 +
  319 +
  320 +
  321 +
  322 +
  323 +
  1 +<template>
  2 + <div class="course-setting" style="position: relative">
  3 + <el-button @click="headerLeftConfigShow=!headerLeftConfigShow">
  4 + <div style="display: flex;align-items: center">
  5 + <el-icon>
  6 + <Promotion/>
  7 + </el-icon>
  8 + <span>航线设置</span>
  9 + <el-icon :style="{transform:headerLeftConfigShow?'rotateZ(180deg)':'rotateZ(0deg)'}"
  10 + style="margin-left: 10px;transition: all .5s">
  11 + <ArrowUpBold/>
  12 + </el-icon>
  13 + </div>
  14 + </el-button>
  15 + <transition name="drop">
  16 + <div v-if="headerLeftConfigShow" class="dialog">
  17 + <div class="card">
  18 + <div style="display: flex;align-items: center;justify-content: space-between">
  19 + <div>已设置参考起飞点</div>
  20 + <el-button type="text">重设置起飞点</el-button>
  21 + </div>
  22 + </div>
  23 + <div class="card">
  24 + <div>拍照设置</div>
  25 + <div style="display: flex;align-items: center;justify-content: space-between;margin-top: 10px">
  26 + <el-button round style="flex: 1" v-for="item in photoSettingOptions" @click="selectPhotoSetting(item)"
  27 + :key="item.value"
  28 + :type="imageFormat?.includes(item.value)?'primary':'info'">{{ item.label }}
  29 + </el-button>
  30 + </div>
  31 + <div style="display: flex;align-items: center;justify-content: space-between;margin-top: 10px">
  32 + <div>智能低光</div>
  33 + <el-switch active-value="lowLightSmartShooting" inactive-value="normalPhoto" v-model="orientedPhotoMode"/>
  34 + </div>
  35 + </div>
  36 + <div class="card">
  37 + <el-button-group style="display: flex">
  38 + <el-button v-for="item in flyToWaylineModeOptions" style="flex:1" @click="selectClimbingMode(item)"
  39 + :key="item.value"
  40 + :type="flyToWaylineMode===item.value?'primary':'info'">{{ item.label }}
  41 + </el-button>
  42 + </el-button-group>
  43 +
  44 + <div style="display: flex">
  45 + <div style="flex: 1;display: flex;align-items: center;justify-content: center">
  46 + <el-image style="width: 250px;height: 150px" :src="courseSetting1"/>
  47 + </div>
  48 + <div style="display: flex;flex-direction: column;width: 80px">
  49 + <el-button :disabled="takeOffSecurityHeight>=takeOffSecurityHeightMax" size="small"
  50 + style="width: 100%;margin:5px 0"
  51 + @click="addTakeOffSecurityHeight(100)">+100
  52 + </el-button>
  53 + <el-button :disabled="takeOffSecurityHeight>=takeOffSecurityHeightMax" size="small"
  54 + style="width: 100%;margin:5px 0"
  55 + @click="addTakeOffSecurityHeight(10)">+10
  56 + </el-button>
  57 + <div style="width: 100%;margin:5px 0;display: flex ;align-items: flex-end">
  58 + <span style="font-weight: bold;color: #409eff;font-size: x-large">{{ takeOffSecurityHeight }}</span>
  59 + <span style="margin-left: 10px">m</span>
  60 + </div>
  61 + <el-button :disabled="takeOffSecurityHeight<=takeOffSecurityHeightMin" size="small"
  62 + style="width: 100%;margin:5px 0"
  63 + @click="addTakeOffSecurityHeight(-10)">-10
  64 + </el-button>
  65 + <el-button :disabled="takeOffSecurityHeight<=takeOffSecurityHeightMin" size="small"
  66 + style="width: 100%;margin:5px 0"
  67 + @click="addTakeOffSecurityHeight(-100)">-100
  68 + </el-button>
  69 + </div>
  70 + </div>
  71 +
  72 + </div>
  73 + <div class="card">
  74 + <div>航海线高度</div>
  75 + <el-button-group style="display: flex;margin-top: 10px">
  76 + <el-button v-for="item in executeHeightModeOptions" style="flex:1" @click="selectExecuteHeightMode(item)"
  77 + :key="item.value"
  78 + :type="executeHeightMode===item.value?'primary':'info'">{{ item.label }}
  79 + </el-button>
  80 + </el-button-group>
  81 + <div style="display: flex">
  82 + <div style="flex: 1;display: flex;align-items: center;justify-content: center">
  83 + <el-image style="width: 250px;height: 150px" :src="courseSetting2"/>
  84 + </div>
  85 + <div style="display: flex;flex-direction: column;width: 80px">
  86 + <el-button :disabled="executeHeight>=executeHeightMax" size="small"
  87 + style="width: 100%;margin:5px 0" @click="addExecuteHeight(100)">+100
  88 + </el-button>
  89 + <el-button :disabled="executeHeight>=executeHeightMax" size="small"
  90 + style="width: 100%;margin:5px 0" @click="addExecuteHeight(10)">+10
  91 + </el-button>
  92 + <div style="width: 100%;margin:5px 0;display: flex ;align-items: flex-end">
  93 + <span style="font-weight: bold;color: #409eff;font-size: x-large">{{ executeHeight }}</span>
  94 + <span style="margin-left: 10px">m</span>
  95 + </div>
  96 + <el-button :disabled="executeHeight<=executeHeightMin" size="small"
  97 + style="width: 100%;margin:5px 0" @click="addExecuteHeight(-10)">-10
  98 + </el-button>
  99 + <el-button :disabled="executeHeight<=executeHeightMin" size="small"
  100 + style="width: 100%;margin:5px 0" @click="addExecuteHeight(-100)">-100
  101 + </el-button>
  102 + </div>
  103 + </div>
  104 + </div>
  105 + <div class="card">
  106 + <div>全局航线速度</div>
  107 + <div style="display: flex;margin-top: 10px">
  108 + <el-button @click="addAutoFlightSpeed(-1)" :icon="Minus"></el-button>
  109 + <div style="flex: 1;display: flex;justify-content: center;align-items: flex-end">
  110 + <span style="font-weight: bold;color: #409eff;font-size: x-large">{{ autoFlightSpeed }}</span>
  111 + <span style="margin-left: 10px">m/s</span>
  112 + </div>
  113 + <el-button @click="addAutoFlightSpeed(1)" :icon="Plus"></el-button>
  114 + </div>
  115 + </div>
  116 + <!-- <div class="card">
  117 + <div>
  118 + <div
  119 + style="display: flex;align-items: center;justify-content: space-between;padding: 10px; ">
  120 + <span>高级设置</span>
  121 + <el-icon @click="moreShow=!moreShow" style="cursor: pointer;transition: all .5s; "
  122 + :style="{transform:moreShow?' rotateZ(0deg)':' rotateZ(180deg)'}">
  123 + <ArrowUpBold/>
  124 + </el-icon>
  125 + </div>
  126 + <div style="border-bottom: 1px solid #393939"></div>
  127 + <div :style="{height:moreShow?'350px':'0'}" style="transition: all .5s;overflow: hidden">
  128 + <div class="card">
  129 + <div>起飞速度</div>
  130 + <div style="display: flex;margin-top: 10px">
  131 + <el-button @click="addFlySpeed(-1)" :icon="Minus"></el-button>
  132 + <div style="flex: 1;display: flex;justify-content: center;align-items: flex-end">
  133 + <span style="font-weight: bold;color: #409eff;font-size: x-large">{{ flySpeed }}</span>
  134 + <span style="margin-left: 10px">m/s</span>
  135 + </div>
  136 + <el-button @click="addFlySpeed(1)" :icon="Plus"></el-button>
  137 + </div>
  138 + <div style="margin: 5px 0">航点类型</div>
  139 + <el-select style="margin: 5px 0"></el-select>
  140 + <div style="margin: 5px 0">航点类型</div>
  141 + <el-select style="margin: 5px 0"></el-select>
  142 + <div style="margin: 5px 0">航点类型</div>
  143 + <el-select style="margin: 5px 0"></el-select>
  144 + <div style="margin: 5px 0">航点类型</div>
  145 + <el-select style="margin: 5px 0"></el-select>
  146 + </div>
  147 + </div>
  148 + </div>
  149 + </div>-->
  150 + </div>
  151 + </transition>
  152 + </div>
  153 +</template>
  154 +
  155 +<script setup lang="ts">
  156 +import {ArrowUpBold, Promotion, Plus, Minus} from "@element-plus/icons-vue";
  157 +import {inject, ref, watch, type WritableComputedRef} from "vue";
  158 +import courseSetting1 from "../image/courseSetting1.png"
  159 +import courseSetting2 from "../image/courseSetting2.png"
  160 +import {type Element} from "xml-js";
  161 +import {useXMLComputed, useXMLComputedArr} from "@/components/air-route/components/useXMLComputed.ts";
  162 +
  163 +const headerLeftConfigShow = ref(false)
  164 +const DocumentElement = inject<WritableComputedRef<Element, Element>>("DocumentElement");
  165 +
  166 +const {
  167 + elment: missionConfigElement
  168 +} = useXMLComputed(DocumentElement, 'wpml:missionConfig')
  169 +const {
  170 + elment: FolderElement
  171 +} = useXMLComputed(DocumentElement, 'Folder')
  172 +const {
  173 + elment: PlacemarkElement
  174 +} = useXMLComputed(FolderElement, 'Placemark')
  175 +const {
  176 + elment: payloadParamElement
  177 +} = useXMLComputed(missionConfigElement, 'wpml:payloadParam')
  178 +const {
  179 + elment: actionActuatorFuncParamElement
  180 +} = useXMLComputed(missionConfigElement, 'wpml:actionActuatorFuncParam')
  181 +
  182 +const {
  183 + text: imageFormat
  184 +} = useXMLComputed(payloadParamElement, 'wpml:imageFormat', {
  185 + separator: ',',
  186 + defaultText: ['wide', 'zoom', 'ir']
  187 +})
  188 +const {
  189 + text: payloadLensIndex
  190 +} = useXMLComputed(actionActuatorFuncParamElement, 'wpml:payloadLensIndex', {
  191 + separator: ',',
  192 + defaultText: ['wide', 'zoom', 'ir']
  193 +})
  194 +
  195 +const photoSettingOptions = [{
  196 + label: '广角照片',
  197 + value: 'wide'
  198 +}, {
  199 + label: '变焦照片',
  200 + value: 'zoom'
  201 +}, {
  202 + label: '红外照片',
  203 + value: 'ir'
  204 +}]
  205 +
  206 +function selectPhotoSetting(item) {
  207 + let arr = imageFormat.value
  208 + if (arr.includes(item.value)) {
  209 + if (arr.length > 1) {
  210 + arr.splice(arr.indexOf(item.value), 1)
  211 + imageFormat.value = arr
  212 + payloadLensIndex.value = arr
  213 + }
  214 + } else {
  215 + imageFormat.value = [...arr, item.value]
  216 + payloadLensIndex.value = [...arr, item.value]
  217 + }
  218 +}
  219 +
  220 +const {
  221 + text: orientedPhotoMode
  222 +} = useXMLComputed(actionActuatorFuncParamElement, 'wpml:orientedPhotoMode', {
  223 + defaultText: 'normalPhoto'
  224 +})
  225 +
  226 +//飞向首航点模式
  227 +const {
  228 + text: flyToWaylineMode
  229 +} = useXMLComputed(missionConfigElement, 'wpml:flyToWaylineMode', {
  230 + defaultText: 'safely'
  231 +})
  232 +const flyToWaylineModeOptions = ref([
  233 + {label: '垂直爬升', value: 'safely'},
  234 + {label: '倾斜爬升', value: 'pointToPoint'},
  235 +])
  236 +
  237 +function selectClimbingMode(item) {
  238 + flyToWaylineMode.value = item.value
  239 +}
  240 +
  241 +//安全起飞高度
  242 +const {
  243 + text: takeOffSecurityHeight
  244 +} = useXMLComputed(missionConfigElement, 'wpml:takeOffSecurityHeight', {
  245 + defaultText: 100,
  246 + textType: 'number'
  247 +})
  248 +const takeOffSecurityHeightMax = ref(1500)
  249 +const takeOffSecurityHeightMin = ref(2)
  250 +
  251 +function addTakeOffSecurityHeight(item) {
  252 + let res = takeOffSecurityHeight.value + item
  253 + if (res <= takeOffSecurityHeightMax.value && res >= takeOffSecurityHeightMin.value) {
  254 + takeOffSecurityHeight.value = res
  255 + } else {
  256 + if (res > takeOffSecurityHeightMax.value) {
  257 + takeOffSecurityHeight.value = takeOffSecurityHeightMax.value
  258 + }
  259 + if (res < takeOffSecurityHeightMin.value) {
  260 + takeOffSecurityHeight.value = takeOffSecurityHeightMin.value
  261 + }
  262 + }
  263 +}
  264 +
  265 +//执行高度模式
  266 +const {
  267 + text: executeHeightMode
  268 +} = useXMLComputed(FolderElement, 'wpml:executeHeightMode', {
  269 + defaultText: 'relativeToStartPoint',
  270 +})
  271 +const executeHeightModeOptions = ref([
  272 + /* {label: '海拔高度', value: 'WGS84'},*/
  273 + {label: '椭球高', value: 'WGS84'},
  274 + {label: '相对起飞高度', value: 'relativeToStartPoint'},
  275 + {label: '实时仿地模式', value: 'realTimeFollowSurface'},
  276 +])
  277 +
  278 +function selectExecuteHeightMode(item) {
  279 + executeHeightMode.value = item.value
  280 +}
  281 +
  282 +const {list: folderList} = useXMLComputedArr(FolderElement, 'Placemark')
  283 +const {
  284 + text: executeHeight
  285 +} = useXMLComputed(PlacemarkElement, 'wpml:executeHeight', {
  286 + defaultText: 100,
  287 + textType: 'number'
  288 +})
  289 +const executeHeightMax = ref(1500)
  290 +const executeHeightMin = ref(2)
  291 +
  292 +function addExecuteHeight(item) {
  293 + let res = executeHeight.value + item
  294 + if (res <= executeHeightMax.value && res >= executeHeightMin.value) {
  295 + executeHeight.value = res
  296 + } else {
  297 + if (res > executeHeightMax.value) {
  298 + executeHeight.value = executeHeightMax.value
  299 + }
  300 + if (res < executeHeightMin.value) {
  301 + executeHeight.value = executeHeightMin.value
  302 + }
  303 + }
  304 + folderList.value.forEach(({elment}) => {
  305 + const {
  306 + text: height
  307 + } = useXMLComputed(elment, 'wpml:executeHeight', {
  308 + defaultText: 100,
  309 + textType: 'number'
  310 + })
  311 + height.value = executeHeight.value
  312 + })
  313 +}
  314 +
  315 +const {
  316 + text: autoFlightSpeed
  317 +} = useXMLComputed(FolderElement, 'wpml:autoFlightSpeed', {
  318 + textType: 'number',
  319 + defaultText: 10
  320 +})
  321 +const autoFlightSpeedMax = ref(15)
  322 +const autoFlightSpeedMin = ref(1)
  323 +
  324 +function addAutoFlightSpeed(item) {
  325 + let res = autoFlightSpeed.value + item
  326 + if (res <= autoFlightSpeedMax.value && res >= autoFlightSpeedMin.value) {
  327 + autoFlightSpeed.value = res
  328 + } else {
  329 + if (res > autoFlightSpeedMax.value) {
  330 + autoFlightSpeed.value = autoFlightSpeedMax.value
  331 + }
  332 + if (res < autoFlightSpeedMin.value) {
  333 + autoFlightSpeed.value = autoFlightSpeedMin.value
  334 + }
  335 + }
  336 +}
  337 +
  338 +const moreShow = ref(false)
  339 +
  340 +
  341 +const flySpeed = ref(10)
  342 +const flySpeedMax = ref(15)
  343 +const flySpeedMin = ref(1)
  344 +
  345 +function addFlySpeed(item) {
  346 + let res = flySpeed.value + item
  347 + if (res <= flySpeedMax.value && res >= flySpeedMin.value) {
  348 + flySpeed.value = res
  349 + } else {
  350 + if (res > flySpeedMax.value) {
  351 + flySpeed.value = flySpeedMax.value
  352 + }
  353 + if (res < flySpeedMin.value) {
  354 + flySpeed.value = flySpeedMin.value
  355 + }
  356 + }
  357 +}
  358 +</script>
  359 +
  360 +<style scoped>
  361 +.dialog {
  362 + background: #101010;
  363 + width: 400px;
  364 + box-shadow: 0 0 10px 1px rgba(255, 255, 255, 0.1);
  365 + position: absolute;
  366 + padding: 10px;
  367 + border-radius: 10px;
  368 + top: calc(100% + 20px);
  369 + max-height: 80vh;
  370 + overflow: auto;
  371 +}
  372 +
  373 +.card {
  374 + background: #232323;
  375 + padding: 10px;
  376 + border-radius: 10px;
  377 +
  378 + & + .card {
  379 + margin-top: 20px;
  380 + }
  381 +}
  382 +</style>
  1 +<template>
  2 + <div style="display:flex;flex-direction: column;margin: 10px 0;width: 100%">
  3 + <div style="display: grid;grid-template-columns: repeat(3,1fr);grid-gap: 20px;margin-top: 10px">
  4 + <div v-for="item in options" class="item" @click="onSelect(item)"
  5 + :class="{active:multiple?selectValue?.includes(item.value):selectValue===item.value}">{{ item.label }}
  6 + </div>
  7 + </div>
  8 + </div>
  9 +</template>
  10 +
  11 +<script setup lang="ts">
  12 +import {ref, watch} from "vue";
  13 +
  14 +const props = defineProps({
  15 + multiple: {
  16 + type: Boolean,
  17 + default: false
  18 + },
  19 + options: {
  20 + type: Array,
  21 + default: () => []
  22 + },
  23 + title: {
  24 + type: String,
  25 + default: '选择'
  26 + }
  27 +})
  28 +const modelValue = defineModel()
  29 +const selectValue = ref()
  30 +
  31 +selectValue.value = modelValue.value
  32 +watch(modelValue, (v) => {
  33 + selectValue.value = v
  34 +})
  35 +
  36 +const emits = defineEmits(["select"])
  37 +
  38 +function onSelect(item) {
  39 + if (props.multiple) {
  40 + if (selectValue.value.includes(item.value)) {
  41 + selectValue.value = selectValue.value.filter(v => v !== item.value)
  42 + } else {
  43 + selectValue.value.push(item.value)
  44 + }
  45 + } else {
  46 + selectValue.value = item.value
  47 + }
  48 + modelValue.value = selectValue.value
  49 + emits('select', selectValue.value)
  50 +}
  51 +</script>
  52 +
  53 +<style scoped>
  54 +.item {
  55 + color: #fff;
  56 + border-radius: 5px;
  57 + background: #3c3c3c;
  58 + padding: 20px;
  59 + border: 2px solid transparent;
  60 + transition: all .2s;
  61 + cursor: pointer;
  62 +
  63 + &.active {
  64 + background: #234971;
  65 + border: 2px solid #2d8cf0;
  66 + }
  67 +}
  68 +</style>
  1 +<template>
  2 + <div>{{ index }}</div>
  3 +</template>
  4 +
  5 +<script setup lang="ts">
  6 +import {useXMLComputed} from "@/components/air-route/components/useXMLComputed.ts";
  7 +
  8 +const props = defineProps({
  9 + index: {
  10 + type: Number,
  11 + required: true
  12 + },
  13 + item: {
  14 + type: Object,
  15 + required: true
  16 + }
  17 +})
  18 +const modelValue = defineModel()
  19 +const {text: index} = useXMLComputed(props.item.elment, 'wpml:index', {
  20 + defaultText: props.index,
  21 + textType: 'number'
  22 +})
  23 +</script>
  24 +
  25 +<style scoped>
  26 +
  27 +</style>
  1 +<template>
  2 + <div>航点列表</div>
  3 + <div>
  4 + <div>
  5 + <div>航线长度</div>
  6 + <div>626.1m</div>
  7 + </div>
  8 + <div>
  9 + <div>预计执行时间</div>
  10 + <div>1m51s</div>
  11 + </div>
  12 + <div>
  13 + <div>航点</div>
  14 + <div>626.1m</div>
  15 + </div>
  16 + <div>
  17 + <div>照片</div>
  18 + <div>626.1m</div>
  19 + </div>
  20 + </div>
  21 + <div>
  22 + <placemark-item v-for="(item,index) in list" :item="item" :index="index"/>
  23 + </div>
  24 +</template>
  25 +
  26 +<script setup lang="ts">
  27 +import {inject, type WritableComputedRef} from "vue";
  28 +import type {Element} from "xml-js";
  29 +import {useXMLComputed, useXMLComputedArr} from "@/components/air-route/components/useXMLComputed.ts";
  30 +import PlacemarkItem from "@/components/air-route/components/placemark-item.vue";
  31 +
  32 +const DocumentElement = inject<WritableComputedRef<Element, Element>>("DocumentElement");
  33 +const {elment: FolderElement} = useXMLComputed(DocumentElement, 'Folder')
  34 +const {list} = useXMLComputedArr(FolderElement, 'Placemark')
  35 +</script>
  36 +
  37 +<style scoped>
  38 +
  39 +</style>