diff --git a/src/components/cards/DownloaderCard.vue b/src/components/cards/DownloaderCard.vue
index 0014ec56..076db08f 100644
--- a/src/components/cards/DownloaderCard.vue
+++ b/src/components/cards/DownloaderCard.vue
@@ -66,16 +66,10 @@ const prefixOptions = computed(() => {
function getStorageType(path: string) {
if (!path) return 'local'
// 查找匹配的存储类型
- for (const storage of storageAttributes) {
- // skip checking local storage as it is the default
- if (storage.type === 'local') {
- continue
- }
- if (path.startsWith(storage.type + ':')) {
- return storage.type
- }
- }
- return 'local'
+ const storage = storageAttributes.find(
+ s => s.type !== 'local' && path.startsWith(`${s.type}:`)
+ )
+ return storage?.type || 'local'
}
function storage2Prefix(storage: string) {
@@ -105,7 +99,7 @@ function updateStorageSuffix(index: number, suffix: string) {
if (!downloaderInfo.value.path_mapping) return
const currentMapping = downloaderInfo.value.path_mapping[index]
const currentPath = currentMapping[0] || ''
- let [currentPrefix] = parseStoragePath(currentPath)
+ const [currentPrefix] = parseStoragePath(currentPath)
currentMapping[0] = currentPrefix + suffix
}
@@ -489,7 +483,7 @@ onUnmounted(() => {
{{ t('downloader.pathMapping') }}
diff --git a/vite.config.ts.timestamp-1765185924563-2ee2d81ca5c1a.mjs b/vite.config.ts.timestamp-1765185924563-2ee2d81ca5c1a.mjs
new file mode 100644
index 00000000..bd1c37b1
--- /dev/null
+++ b/vite.config.ts.timestamp-1765185924563-2ee2d81ca5c1a.mjs
@@ -0,0 +1,341 @@
+// vite.config.ts
+import { fileURLToPath } from "node:url";
+import vue from "file:///C:/Repos/MoviePilot-Frontend/node_modules/@vitejs/plugin-vue/dist/index.mjs";
+import vueJsx from "file:///C:/Repos/MoviePilot-Frontend/node_modules/@vitejs/plugin-vue-jsx/dist/index.mjs";
+import AutoImport from "file:///C:/Repos/MoviePilot-Frontend/node_modules/unplugin-auto-import/dist/vite.js";
+import Components from "file:///C:/Repos/MoviePilot-Frontend/node_modules/unplugin-vue-components/dist/vite.js";
+import { defineConfig } from "file:///C:/Repos/MoviePilot-Frontend/node_modules/vite/dist/node/index.js";
+import vuetify from "file:///C:/Repos/MoviePilot-Frontend/node_modules/vite-plugin-vuetify/dist/index.mjs";
+import { VitePWA } from "file:///C:/Repos/MoviePilot-Frontend/node_modules/vite-plugin-pwa/dist/index.js";
+import VueI18n from "file:///C:/Repos/MoviePilot-Frontend/node_modules/@intlify/unplugin-vue-i18n/lib/vite.mjs";
+import { resolve } from "node:path";
+import federation from "file:///C:/Repos/MoviePilot-Frontend/node_modules/@originjs/vite-plugin-federation/dist/index.mjs";
+import topLevelAwait from "file:///C:/Repos/MoviePilot-Frontend/node_modules/vite-plugin-top-level-await/exports/import.mjs";
+var __vite_injected_original_dirname = "C:\\Repos\\MoviePilot-Frontend";
+var __vite_injected_original_import_meta_url = "file:///C:/Repos/MoviePilot-Frontend/vite.config.ts";
+var vite_config_default = defineConfig({
+ base: "./",
+ plugins: [
+ vue(),
+ vueJsx(),
+ vuetify({
+ styles: {
+ configFile: "src/styles/variables/_vuetify.scss"
+ }
+ }),
+ Components({
+ dirs: ["src/@core/components"],
+ dts: true
+ }),
+ AutoImport({
+ imports: ["vue", "vue-router", "@vueuse/core", "@vueuse/math", "pinia", "vue-i18n"],
+ vueTemplate: true
+ }),
+ VueI18n({
+ include: [resolve(__vite_injected_original_dirname, "src/locales/*.ts")]
+ }),
+ federation({
+ name: "MoviePilot",
+ filename: "remoteEntry.js",
+ // @ts-ignore
+ remotes: {
+ // 动态remotes将在运行时注入
+ dummy: {
+ external: "",
+ format: "var"
+ }
+ },
+ shared: ["vue", "vuetify"]
+ }),
+ VitePWA({
+ injectRegister: "script",
+ registerType: "autoUpdate",
+ strategies: "injectManifest",
+ srcDir: "src",
+ filename: "service-worker.ts",
+ workbox: {
+ globPatterns: ["**/*.{js,css,html,ico,png,svg,jpg,jpeg,webp,woff,woff2,ttf,otf,eot}"],
+ // 确保关键资源被预缓存
+ additionalManifestEntries: [
+ {
+ url: "/offline.html",
+ revision: null
+ },
+ // 预缓存App Shell关键资源
+ {
+ url: "/logo.png",
+ revision: null
+ }
+ ],
+ // 启用导航预加载
+ navigationPreload: true,
+ runtimeCaching: [
+ // App Shell缓存 - 优先缓存
+ {
+ urlPattern: /^\/$|\/index\.html$/,
+ handler: "CacheFirst",
+ options: {
+ cacheName: "app-shell-cache",
+ expiration: {
+ maxEntries: 10,
+ maxAgeSeconds: 7 * 24 * 60 * 60
+ // 7天
+ }
+ }
+ },
+ {
+ urlPattern: /\.(?:js|css|html)$/,
+ handler: "StaleWhileRevalidate",
+ options: {
+ cacheName: "static-resources"
+ }
+ },
+ {
+ urlPattern: /\.(?:png|jpg|jpeg|svg|ico|webp|avif|gif|bmp|tiff)$/,
+ handler: "CacheFirst",
+ options: {
+ cacheName: "image-cache",
+ expiration: {
+ maxEntries: 200,
+ maxAgeSeconds: 30 * 24 * 60 * 60
+ // 30天
+ }
+ }
+ },
+ {
+ urlPattern: /\.(?:woff|woff2|ttf|otf|eot)$/,
+ handler: "CacheFirst",
+ options: {
+ cacheName: "font-cache",
+ expiration: {
+ maxEntries: 50,
+ maxAgeSeconds: 365 * 24 * 60 * 60
+ // 1年
+ }
+ }
+ },
+ {
+ urlPattern: /\/api\/v1\/.*$/,
+ handler: "NetworkFirst",
+ options: {
+ cacheName: "api-cache",
+ networkTimeoutSeconds: 10,
+ expiration: {
+ maxEntries: 500,
+ maxAgeSeconds: 24 * 60 * 60
+ // 24小时
+ }
+ }
+ },
+ {
+ urlPattern: /^https:\/\/image\.tmdb\.org\/.*$/,
+ handler: "CacheFirst",
+ options: {
+ cacheName: "tmdb-image-cache",
+ expiration: {
+ maxEntries: 300,
+ maxAgeSeconds: 7 * 24 * 60 * 60
+ // 7天
+ }
+ }
+ },
+ {
+ urlPattern: ({ request }) => request.destination === "document",
+ handler: "StaleWhileRevalidate",
+ options: {
+ cacheName: "pages-cache"
+ }
+ }
+ ],
+ navigateFallback: "/offline.html",
+ navigateFallbackDenylist: [/.*\/api\/.*/, /\/offline\.html$/],
+ ignoreURLParametersMatching: [/^utm_/, /^fbclid$/, /^gclid$/],
+ skipWaiting: true,
+ clientsClaim: true
+ },
+ injectManifest: {
+ rollupFormat: "iife",
+ maximumFileSizeToCacheInBytes: 10 * 1024 * 1024
+ },
+ devOptions: {
+ enabled: true,
+ type: "module"
+ },
+ manifest: {
+ "name": "MoviePilot",
+ "short_name": "MoviePilot",
+ "description": "MoviePilot - \u667A\u80FD\u5F71\u89C6\u5A92\u4F53\u5E93\u7BA1\u7406\u5DE5\u5177",
+ "start_url": "./",
+ "scope": "./",
+ "display": "standalone",
+ "display_override": ["window-controls-overlay", "standalone"],
+ "orientation": "portrait-primary",
+ "lang": "zh-CN",
+ "dir": "ltr",
+ "categories": ["entertainment", "multimedia", "utilities"],
+ "icons": [
+ {
+ "src": "./android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png",
+ "purpose": "any"
+ },
+ {
+ "src": "./android-chrome-192x192_maskable.png",
+ "sizes": "192x192",
+ "type": "image/png",
+ "purpose": "maskable"
+ },
+ {
+ "src": "./android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png",
+ "purpose": "any"
+ },
+ {
+ "src": "./android-chrome-512x512_maskable.png",
+ "sizes": "512x512",
+ "type": "image/png",
+ "purpose": "maskable"
+ }
+ ],
+ "theme_color": "#0E1116",
+ "background_color": "#0E1116",
+ "edge_side_panel": {
+ "preferred_width": 320
+ },
+ "launch_handler": {
+ "client_mode": "navigate-existing"
+ },
+ "handle_links": "preferred",
+ "id": "moviepilot-app",
+ "shortcuts": [
+ {
+ "name": "\u63A8\u8350",
+ "short_name": "\u63A8\u8350",
+ "description": "\u67E5\u770B\u63A8\u8350\u5185\u5BB9",
+ "url": "./recommend",
+ "icons": [
+ {
+ "src": "./sparkles-icon-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ }
+ ]
+ },
+ {
+ "name": "\u63A2\u7D22",
+ "short_name": "\u63A2\u7D22",
+ "description": "\u63A2\u7D22\u65B0\u5185\u5BB9",
+ "url": "./discover",
+ "icons": [
+ {
+ "src": "./clock-icon-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ }
+ ]
+ },
+ {
+ "name": "\u66F4\u591A",
+ "short_name": "\u66F4\u591A",
+ "description": "\u66F4\u591A\u529F\u80FD",
+ "url": "./apps",
+ "icons": [
+ {
+ "src": "./cog-icon-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ }
+ ]
+ }
+ ],
+ "screenshots": [
+ {
+ "src": "./android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png",
+ "form_factor": "wide",
+ "label": "MoviePilot \u4E3B\u754C\u9762"
+ },
+ {
+ "src": "./android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png",
+ "form_factor": "narrow",
+ "label": "MoviePilot \u79FB\u52A8\u7AEF"
+ }
+ ],
+ "protocol_handlers": [
+ {
+ "protocol": "web+moviepilot",
+ "url": "./?handler=%s"
+ }
+ ],
+ "prefer_related_applications": false,
+ "related_applications": []
+ }
+ }),
+ topLevelAwait({
+ // The export name of top-level await promise for each chunk module
+ promiseExportName: "__mp_tla",
+ // The function to generate import names of top-level await promise in each chunk module
+ promiseImportName: (i) => `__mp_tla_${i}`
+ })
+ ],
+ define: { "process.env": {} },
+ resolve: {
+ alias: {
+ "@": fileURLToPath(new URL("./src", __vite_injected_original_import_meta_url)),
+ "@core": fileURLToPath(new URL("./src/@core", __vite_injected_original_import_meta_url)),
+ "@layouts": fileURLToPath(new URL("./src/@layouts", __vite_injected_original_import_meta_url)),
+ "@images": fileURLToPath(new URL("./src/assets/images/", __vite_injected_original_import_meta_url)),
+ "@styles": fileURLToPath(new URL("./src/styles/", __vite_injected_original_import_meta_url)),
+ "@configured-variables": fileURLToPath(new URL("./src/styles/variables/_template.scss", __vite_injected_original_import_meta_url)),
+ "apexcharts": fileURLToPath(new URL("node_modules/apexcharts", __vite_injected_original_import_meta_url))
+ }
+ },
+ build: {
+ target: "esnext",
+ minify: "terser",
+ terserOptions: {
+ compress: {
+ drop_console: true,
+ drop_debugger: true
+ }
+ },
+ chunkSizeWarningLimit: 5e3,
+ cssCodeSplit: false,
+ rollupOptions: {
+ output: {
+ entryFileNames: "[name].js",
+ chunkFileNames: "[name].js"
+ }
+ }
+ },
+ optimizeDeps: {
+ exclude: ["vuetify"],
+ entries: ["./src/**/*.vue"]
+ },
+ server: {
+ proxy: {
+ "/api/v1": {
+ target: "http://localhost:3001",
+ changeOrigin: true,
+ secure: false,
+ cookieDomainRewrite: "localhost"
+ }
+ }
+ },
+ css: {
+ preprocessorOptions: {
+ scss: {
+ quietDeps: true
+ }
+ }
+ }
+});
+export {
+ vite_config_default as default
+};
+//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJDOlxcXFxSZXBvc1xcXFxNb3ZpZVBpbG90LUZyb250ZW5kXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJDOlxcXFxSZXBvc1xcXFxNb3ZpZVBpbG90LUZyb250ZW5kXFxcXHZpdGUuY29uZmlnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9DOi9SZXBvcy9Nb3ZpZVBpbG90LUZyb250ZW5kL3ZpdGUuY29uZmlnLnRzXCI7aW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJ1xyXG5pbXBvcnQgdnVlIGZyb20gJ0B2aXRlanMvcGx1Z2luLXZ1ZSdcclxuaW1wb3J0IHZ1ZUpzeCBmcm9tICdAdml0ZWpzL3BsdWdpbi12dWUtanN4J1xyXG5pbXBvcnQgQXV0b0ltcG9ydCBmcm9tICd1bnBsdWdpbi1hdXRvLWltcG9ydC92aXRlJ1xyXG5pbXBvcnQgQ29tcG9uZW50cyBmcm9tICd1bnBsdWdpbi12dWUtY29tcG9uZW50cy92aXRlJ1xyXG5pbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tICd2aXRlJ1xyXG5pbXBvcnQgdnVldGlmeSBmcm9tICd2aXRlLXBsdWdpbi12dWV0aWZ5J1xyXG5pbXBvcnQgeyBWaXRlUFdBIH0gZnJvbSAndml0ZS1wbHVnaW4tcHdhJ1xyXG5pbXBvcnQgVnVlSTE4biBmcm9tICdAaW50bGlmeS91bnBsdWdpbi12dWUtaTE4bi92aXRlJ1xyXG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xyXG5pbXBvcnQgZmVkZXJhdGlvbiBmcm9tICdAb3JpZ2luanMvdml0ZS1wbHVnaW4tZmVkZXJhdGlvbidcclxuaW1wb3J0IHRvcExldmVsQXdhaXQgZnJvbSAndml0ZS1wbHVnaW4tdG9wLWxldmVsLWF3YWl0J1xyXG5cclxuLy8gaHR0cHM6Ly92aXRlanMuZGV2L2NvbmZpZy9cclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKHtcclxuICBiYXNlOiAnLi8nLFxyXG4gIHBsdWdpbnM6IFtcclxuICAgIHZ1ZSgpLFxyXG4gICAgdnVlSnN4KCksXHJcbiAgICB2dWV0aWZ5KHtcclxuICAgICAgc3R5bGVzOiB7XHJcbiAgICAgICAgY29uZmlnRmlsZTogJ3NyYy9zdHlsZXMvdmFyaWFibGVzL192dWV0aWZ5LnNjc3MnLFxyXG4gICAgICB9LFxyXG4gICAgfSksXHJcbiAgICBDb21wb25lbnRzKHtcclxuICAgICAgZGlyczogWydzcmMvQGNvcmUvY29tcG9uZW50cyddLFxyXG4gICAgICBkdHM6IHRydWUsXHJcbiAgICB9KSxcclxuICAgIEF1dG9JbXBvcnQoe1xyXG4gICAgICBpbXBvcnRzOiBbJ3Z1ZScsICd2dWUtcm91dGVyJywgJ0B2dWV1c2UvY29yZScsICdAdnVldXNlL21hdGgnLCAncGluaWEnLCAndnVlLWkxOG4nXSxcclxuICAgICAgdnVlVGVtcGxhdGU6IHRydWUsXHJcbiAgICB9KSxcclxuICAgIFZ1ZUkxOG4oe1xyXG4gICAgICBpbmNsdWRlOiBbcmVzb2x2ZShfX2Rpcm5hbWUsICdzcmMvbG9jYWxlcy8qLnRzJyldLFxyXG4gICAgfSksXHJcbiAgICBmZWRlcmF0aW9uKHtcclxuICAgICAgbmFtZTogJ01vdmllUGlsb3QnLFxyXG4gICAgICBmaWxlbmFtZTogJ3JlbW90ZUVudHJ5LmpzJyxcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICByZW1vdGVzOiB7XHJcbiAgICAgICAgLy8gXHU1MkE4XHU2MDAxcmVtb3Rlc1x1NUMwNlx1NTcyOFx1OEZEMFx1ODg0Q1x1NjVGNlx1NkNFOFx1NTE2NVxyXG4gICAgICAgIGR1bW15OiB7XHJcbiAgICAgICAgICBleHRlcm5hbDogJycsXHJcbiAgICAgICAgICBmb3JtYXQ6ICd2YXInLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHNoYXJlZDogWyd2dWUnLCAndnVldGlmeSddLFxyXG4gICAgfSksXHJcbiAgICBWaXRlUFdBKHtcclxuICAgICAgaW5qZWN0UmVnaXN0ZXI6ICdzY3JpcHQnLFxyXG4gICAgICByZWdpc3RlclR5cGU6ICdhdXRvVXBkYXRlJyxcclxuICAgICAgc3RyYXRlZ2llczogJ2luamVjdE1hbmlmZXN0JyxcclxuICAgICAgc3JjRGlyOiAnc3JjJyxcclxuICAgICAgZmlsZW5hbWU6ICdzZXJ2aWNlLXdvcmtlci50cycsXHJcbiAgICAgIHdvcmtib3g6IHtcclxuICAgICAgICBnbG9iUGF0dGVybnM6IFsnKiovKi57anMsY3NzLGh0bWwsaWNvLHBuZyxzdmcsanBnLGpwZWcsd2VicCx3b2ZmLHdvZmYyLHR0ZixvdGYsZW90fSddLFxyXG4gICAgICAgIC8vIFx1Nzg2RVx1NEZERFx1NTE3M1x1OTUyRVx1OEQ0NFx1NkU5MFx1ODhBQlx1OTg4NFx1N0YxM1x1NUI1OFxyXG4gICAgICAgIGFkZGl0aW9uYWxNYW5pZmVzdEVudHJpZXM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdXJsOiAnL29mZmxpbmUuaHRtbCcsXHJcbiAgICAgICAgICAgIHJldmlzaW9uOiBudWxsLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC8vIFx1OTg4NFx1N0YxM1x1NUI1OEFwcCBTaGVsbFx1NTE3M1x1OTUyRVx1OEQ0NFx1NkU5MFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB1cmw6ICcvbG9nby5wbmcnLFxyXG4gICAgICAgICAgICByZXZpc2lvbjogbnVsbCxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgICAvLyBcdTU0MkZcdTc1MjhcdTVCRkNcdTgyMkFcdTk4ODRcdTUyQTBcdThGN0RcclxuICAgICAgICBuYXZpZ2F0aW9uUHJlbG9hZDogdHJ1ZSxcclxuICAgICAgICBydW50aW1lQ2FjaGluZzogW1xyXG4gICAgICAgICAgLy8gQXBwIFNoZWxsXHU3RjEzXHU1QjU4IC0gXHU0RjE4XHU1MTQ4XHU3RjEzXHU1QjU4XHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHVybFBhdHRlcm46IC9eXFwvJHxcXC9pbmRleFxcLmh0bWwkLyxcclxuICAgICAgICAgICAgaGFuZGxlcjogJ0NhY2hlRmlyc3QnLFxyXG4gICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgY2FjaGVOYW1lOiAnYXBwLXNoZWxsLWNhY2hlJyxcclxuICAgICAgICAgICAgICBleHBpcmF0aW9uOiB7XHJcbiAgICAgICAgICAgICAgICBtYXhFbnRyaWVzOiAxMCxcclxuICAgICAgICAgICAgICAgIG1heEFnZVNlY29uZHM6IDcgKiAyNCAqIDYwICogNjAsIC8vIDdcdTU5MjlcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdXJsUGF0dGVybjogL1xcLig/OmpzfGNzc3xodG1sKSQvLFxyXG4gICAgICAgICAgICBoYW5kbGVyOiAnU3RhbGVXaGlsZVJldmFsaWRhdGUnLFxyXG4gICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgY2FjaGVOYW1lOiAnc3RhdGljLXJlc291cmNlcycsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB1cmxQYXR0ZXJuOiAvXFwuKD86cG5nfGpwZ3xqcGVnfHN2Z3xpY298d2VicHxhdmlmfGdpZnxibXB8dGlmZikkLyxcclxuICAgICAgICAgICAgaGFuZGxlcjogJ0NhY2hlRmlyc3QnLFxyXG4gICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgY2FjaGVOYW1lOiAnaW1hZ2UtY2FjaGUnLFxyXG4gICAgICAgICAgICAgIGV4cGlyYXRpb246IHtcclxuICAgICAgICAgICAgICAgIG1heEVudHJpZXM6IDIwMCxcclxuICAgICAgICAgICAgICAgIG1heEFnZVNlY29uZHM6IDMwICogMjQgKiA2MCAqIDYwLCAvLyAzMFx1NTkyOVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB1cmxQYXR0ZXJuOiAvXFwuKD86d29mZnx3b2ZmMnx0dGZ8b3RmfGVvdCkkLyxcclxuICAgICAgICAgICAgaGFuZGxlcjogJ0NhY2hlRmlyc3QnLFxyXG4gICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgY2FjaGVOYW1lOiAnZm9udC1jYWNoZScsXHJcbiAgICAgICAgICAgICAgZXhwaXJhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgbWF4RW50cmllczogNTAsXHJcbiAgICAgICAgICAgICAgICBtYXhBZ2VTZWNvbmRzOiAzNjUgKiAyNCAqIDYwICogNjAsIC8vIDFcdTVFNzRcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdXJsUGF0dGVybjogL1xcL2FwaVxcL3YxXFwvLiokLyxcclxuICAgICAgICAgICAgaGFuZGxlcjogJ05ldHdvcmtGaXJzdCcsXHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgICAgICBjYWNoZU5hbWU6ICdhcGktY2FjaGUnLFxyXG4gICAgICAgICAgICAgIG5ldHdvcmtUaW1lb3V0U2Vjb25kczogMTAsXHJcbiAgICAgICAgICAgICAgZXhwaXJhdGlvbjoge1xyXG4gICAgICAgICAgICAgICAgbWF4RW50cmllczogNTAwLFxyXG4gICAgICAgICAgICAgICAgbWF4QWdlU2Vjb25kczogMjQgKiA2MCAqIDYwLCAvLyAyNFx1NUMwRlx1NjVGNlxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB1cmxQYXR0ZXJuOiAvXmh0dHBzOlxcL1xcL2ltYWdlXFwudG1kYlxcLm9yZ1xcLy4qJC8sXHJcbiAgICAgICAgICAgIGhhbmRsZXI6ICdDYWNoZUZpcnN0JyxcclxuICAgICAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICAgIGNhY2hlTmFtZTogJ3RtZGItaW1hZ2UtY2FjaGUnLFxyXG4gICAgICAgICAgICAgIGV4cGlyYXRpb246IHtcclxuICAgICAgICAgICAgICAgIG1heEVudHJpZXM6IDMwMCxcclxuICAgICAgICAgICAgICAgIG1heEFnZVNlY29uZHM6IDcgKiAyNCAqIDYwICogNjAsIC8vIDdcdTU5MjlcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdXJsUGF0dGVybjogKHsgcmVxdWVzdCB9KSA9PiByZXF1ZXN0LmRlc3RpbmF0aW9uID09PSAnZG9jdW1lbnQnLFxyXG4gICAgICAgICAgICBoYW5kbGVyOiAnU3RhbGVXaGlsZVJldmFsaWRhdGUnLFxyXG4gICAgICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICAgICAgY2FjaGVOYW1lOiAncGFnZXMtY2FjaGUnLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdLFxyXG4gICAgICAgIG5hdmlnYXRlRmFsbGJhY2s6ICcvb2ZmbGluZS5odG1sJyxcclxuICAgICAgICBuYXZpZ2F0ZUZhbGxiYWNrRGVueWxpc3Q6IFsvLipcXC9hcGlcXC8uKi8sIC9cXC9vZmZsaW5lXFwuaHRtbCQvXSxcclxuICAgICAgICBpZ25vcmVVUkxQYXJhbWV0ZXJzTWF0Y2hpbmc6IFsvXnV0bV8vLCAvXmZiY2xpZCQvLCAvXmdjbGlkJC9dLFxyXG4gICAgICAgIHNraXBXYWl0aW5nOiB0cnVlLFxyXG4gICAgICAgIGNsaWVudHNDbGFpbTogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAgaW5qZWN0TWFuaWZlc3Q6IHtcclxuICAgICAgICByb2xsdXBGb3JtYXQ6ICdpaWZlJyxcclxuICAgICAgICBtYXhpbXVtRmlsZVNpemVUb0NhY2hlSW5CeXRlczogMTAgKiAxMDI0ICogMTAyNCxcclxuICAgICAgfSxcclxuICAgICAgZGV2T3B0aW9uczoge1xyXG4gICAgICAgIGVuYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgdHlwZTogJ21vZHVsZScsXHJcbiAgICAgIH0sXHJcbiAgICAgIG1hbmlmZXN0OiB7XHJcbiAgICAgICAgJ25hbWUnOiAnTW92aWVQaWxvdCcsXHJcbiAgICAgICAgJ3Nob3J0X25hbWUnOiAnTW92aWVQaWxvdCcsXHJcbiAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ01vdmllUGlsb3QgLSBcdTY2N0FcdTgwRkRcdTVGNzFcdTg5QzZcdTVBOTJcdTRGNTNcdTVFOTNcdTdCQTFcdTc0MDZcdTVERTVcdTUxNzcnLFxyXG4gICAgICAgICdzdGFydF91cmwnOiAnLi8nLFxyXG4gICAgICAgICdzY29wZSc6ICcuLycsXHJcbiAgICAgICAgJ2Rpc3BsYXknOiAnc3RhbmRhbG9uZScsXHJcbiAgICAgICAgJ2Rpc3BsYXlfb3ZlcnJpZGUnOiBbJ3dpbmRvdy1jb250cm9scy1vdmVybGF5JywgJ3N0YW5kYWxvbmUnXSxcclxuICAgICAgICAnb3JpZW50YXRpb24nOiAncG9ydHJhaXQtcHJpbWFyeScsXHJcbiAgICAgICAgJ2xhbmcnOiAnemgtQ04nLFxyXG4gICAgICAgICdkaXInOiAnbHRyJyxcclxuICAgICAgICAnY2F0ZWdvcmllcyc6IFsnZW50ZXJ0YWlubWVudCcsICdtdWx0aW1lZGlhJywgJ3V0aWxpdGllcyddLFxyXG4gICAgICAgICdpY29ucyc6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ3NyYyc6ICcuL2FuZHJvaWQtY2hyb21lLTE5MngxOTIucG5nJyxcclxuICAgICAgICAgICAgJ3NpemVzJzogJzE5MngxOTInLFxyXG4gICAgICAgICAgICAndHlwZSc6ICdpbWFnZS9wbmcnLFxyXG4gICAgICAgICAgICAncHVycG9zZSc6ICdhbnknLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ3NyYyc6ICcuL2FuZHJvaWQtY2hyb21lLTE5MngxOTJfbWFza2FibGUucG5nJyxcclxuICAgICAgICAgICAgJ3NpemVzJzogJzE5MngxOTInLFxyXG4gICAgICAgICAgICAndHlwZSc6ICdpbWFnZS9wbmcnLFxyXG4gICAgICAgICAgICAncHVycG9zZSc6ICdtYXNrYWJsZScsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnc3JjJzogJy4vYW5kcm9pZC1jaHJvbWUtNTEyeDUxMi5wbmcnLFxyXG4gICAgICAgICAgICAnc2l6ZXMnOiAnNTEyeDUxMicsXHJcbiAgICAgICAgICAgICd0eXBlJzogJ2ltYWdlL3BuZycsXHJcbiAgICAgICAgICAgICdwdXJwb3NlJzogJ2FueScsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnc3JjJzogJy4vYW5kcm9pZC1jaHJvbWUtNTEyeDUxMl9tYXNrYWJsZS5wbmcnLFxyXG4gICAgICAgICAgICAnc2l6ZXMnOiAnNTEyeDUxMicsXHJcbiAgICAgICAgICAgICd0eXBlJzogJ2ltYWdlL3BuZycsXHJcbiAgICAgICAgICAgICdwdXJwb3NlJzogJ21hc2thYmxlJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgICAndGhlbWVfY29sb3InOiAnIzBFMTExNicsXHJcbiAgICAgICAgJ2JhY2tncm91bmRfY29sb3InOiAnIzBFMTExNicsXHJcbiAgICAgICAgJ2VkZ2Vfc2lkZV9wYW5lbCc6IHtcclxuICAgICAgICAgICdwcmVmZXJyZWRfd2lkdGgnOiAzMjAsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAnbGF1bmNoX2hhbmRsZXInOiB7XHJcbiAgICAgICAgICAnY2xpZW50X21vZGUnOiAnbmF2aWdhdGUtZXhpc3RpbmcnLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgJ2hhbmRsZV9saW5rcyc6ICdwcmVmZXJyZWQnLFxyXG4gICAgICAgICdpZCc6ICdtb3ZpZXBpbG90LWFwcCcsXHJcbiAgICAgICAgJ3Nob3J0Y3V0cyc6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ25hbWUnOiAnXHU2M0E4XHU4MzUwJyxcclxuICAgICAgICAgICAgJ3Nob3J0X25hbWUnOiAnXHU2M0E4XHU4MzUwJyxcclxuICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ1x1NjdFNVx1NzcwQlx1NjNBOFx1ODM1MFx1NTE4NVx1NUJCOScsXHJcbiAgICAgICAgICAgICd1cmwnOiAnLi9yZWNvbW1lbmQnLFxyXG4gICAgICAgICAgICAnaWNvbnMnOiBbXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJ3NyYyc6ICcuL3NwYXJrbGVzLWljb24tMTkyeDE5Mi5wbmcnLFxyXG4gICAgICAgICAgICAgICAgJ3NpemVzJzogJzE5MngxOTInLFxyXG4gICAgICAgICAgICAgICAgJ3R5cGUnOiAnaW1hZ2UvcG5nJyxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBdLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ25hbWUnOiAnXHU2M0EyXHU3RDIyJyxcclxuICAgICAgICAgICAgJ3Nob3J0X25hbWUnOiAnXHU2M0EyXHU3RDIyJyxcclxuICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ1x1NjNBMlx1N0QyMlx1NjVCMFx1NTE4NVx1NUJCOScsXHJcbiAgICAgICAgICAgICd1cmwnOiAnLi9kaXNjb3ZlcicsXHJcbiAgICAgICAgICAgICdpY29ucyc6IFtcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAnc3JjJzogJy4vY2xvY2staWNvbi0xOTJ4MTkyLnBuZycsXHJcbiAgICAgICAgICAgICAgICAnc2l6ZXMnOiAnMTkyeDE5MicsXHJcbiAgICAgICAgICAgICAgICAndHlwZSc6ICdpbWFnZS9wbmcnLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICdcdTY2RjRcdTU5MUEnLFxyXG4gICAgICAgICAgICAnc2hvcnRfbmFtZSc6ICdcdTY2RjRcdTU5MUEnLFxyXG4gICAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnXHU2NkY0XHU1OTFBXHU1MjlGXHU4MEZEJyxcclxuICAgICAgICAgICAgJ3VybCc6ICcuL2FwcHMnLFxyXG4gICAgICAgICAgICAnaWNvbnMnOiBbXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgJ3NyYyc6ICcuL2NvZy1pY29uLTE5MngxOTIucG5nJyxcclxuICAgICAgICAgICAgICAgICdzaXplcyc6ICcxOTJ4MTkyJyxcclxuICAgICAgICAgICAgICAgICd0eXBlJzogJ2ltYWdlL3BuZycsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgICAnc2NyZWVuc2hvdHMnOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICdzcmMnOiAnLi9hbmRyb2lkLWNocm9tZS01MTJ4NTEyLnBuZycsXHJcbiAgICAgICAgICAgICdzaXplcyc6ICc1MTJ4NTEyJyxcclxuICAgICAgICAgICAgJ3R5cGUnOiAnaW1hZ2UvcG5nJyxcclxuICAgICAgICAgICAgJ2Zvcm1fZmFjdG9yJzogJ3dpZGUnLFxyXG4gICAgICAgICAgICAnbGFiZWwnOiAnTW92aWVQaWxvdCBcdTRFM0JcdTc1NENcdTk3NjInLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ3NyYyc6ICcuL2FuZHJvaWQtY2hyb21lLTE5MngxOTIucG5nJyxcclxuICAgICAgICAgICAgJ3NpemVzJzogJzE5MngxOTInLFxyXG4gICAgICAgICAgICAndHlwZSc6ICdpbWFnZS9wbmcnLFxyXG4gICAgICAgICAgICAnZm9ybV9mYWN0b3InOiAnbmFycm93JyxcclxuICAgICAgICAgICAgJ2xhYmVsJzogJ01vdmllUGlsb3QgXHU3OUZCXHU1MkE4XHU3QUVGJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXSxcclxuICAgICAgICAncHJvdG9jb2xfaGFuZGxlcnMnOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICdwcm90b2NvbCc6ICd3ZWIrbW92aWVwaWxvdCcsXHJcbiAgICAgICAgICAgICd1cmwnOiAnLi8/aGFuZGxlcj0lcycsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgJ3ByZWZlcl9yZWxhdGVkX2FwcGxpY2F0aW9ucyc6IGZhbHNlLFxyXG4gICAgICAgICdyZWxhdGVkX2FwcGxpY2F0aW9ucyc6IFtdLFxyXG4gICAgICB9LFxyXG4gICAgfSksXHJcbiAgICB0b3BMZXZlbEF3YWl0KHtcclxuICAgICAgLy8gVGhlIGV4cG9ydCBuYW1lIG9mIHRvcC1sZXZlbCBhd2FpdCBwcm9taXNlIGZvciBlYWNoIGNodW5rIG1vZHVsZVxyXG4gICAgICBwcm9taXNlRXhwb3J0TmFtZTogJ19fbXBfdGxhJyxcclxuICAgICAgLy8gVGhlIGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGltcG9ydCBuYW1lcyBvZiB0b3AtbGV2ZWwgYXdhaXQgcHJvbWlzZSBpbiBlYWNoIGNodW5rIG1vZHVsZVxyXG4gICAgICBwcm9taXNlSW1wb3J0TmFtZTogaSA9PiBgX19tcF90bGFfJHtpfWAsXHJcbiAgICB9KSxcclxuICBdLFxyXG4gIGRlZmluZTogeyAncHJvY2Vzcy5lbnYnOiB7fSB9LFxyXG4gIHJlc29sdmU6IHtcclxuICAgIGFsaWFzOiB7XHJcbiAgICAgICdAJzogZmlsZVVSTFRvUGF0aChuZXcgVVJMKCcuL3NyYycsIGltcG9ydC5tZXRhLnVybCkpLFxyXG4gICAgICAnQGNvcmUnOiBmaWxlVVJMVG9QYXRoKG5ldyBVUkwoJy4vc3JjL0Bjb3JlJywgaW1wb3J0Lm1ldGEudXJsKSksXHJcbiAgICAgICdAbGF5b3V0cyc6IGZpbGVVUkxUb1BhdGgobmV3IFVSTCgnLi9zcmMvQGxheW91dHMnLCBpbXBvcnQubWV0YS51cmwpKSxcclxuICAgICAgJ0BpbWFnZXMnOiBmaWxlVVJMVG9QYXRoKG5ldyBVUkwoJy4vc3JjL2Fzc2V0cy9pbWFnZXMvJywgaW1wb3J0Lm1ldGEudXJsKSksXHJcbiAgICAgICdAc3R5bGVzJzogZmlsZVVSTFRvUGF0aChuZXcgVVJMKCcuL3NyYy9zdHlsZXMvJywgaW1wb3J0Lm1ldGEudXJsKSksXHJcbiAgICAgICdAY29uZmlndXJlZC12YXJpYWJsZXMnOiBmaWxlVVJMVG9QYXRoKG5ldyBVUkwoJy4vc3JjL3N0eWxlcy92YXJpYWJsZXMvX3RlbXBsYXRlLnNjc3MnLCBpbXBvcnQubWV0YS51cmwpKSxcclxuICAgICAgJ2FwZXhjaGFydHMnOiBmaWxlVVJMVG9QYXRoKG5ldyBVUkwoJ25vZGVfbW9kdWxlcy9hcGV4Y2hhcnRzJywgaW1wb3J0Lm1ldGEudXJsKSksXHJcbiAgICB9LFxyXG4gIH0sXHJcbiAgYnVpbGQ6IHtcclxuICAgIHRhcmdldDogJ2VzbmV4dCcsXHJcbiAgICBtaW5pZnk6ICd0ZXJzZXInLFxyXG4gICAgdGVyc2VyT3B0aW9uczoge1xyXG4gICAgICBjb21wcmVzczoge1xyXG4gICAgICAgIGRyb3BfY29uc29sZTogdHJ1ZSxcclxuICAgICAgICBkcm9wX2RlYnVnZ2VyOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGNodW5rU2l6ZVdhcm5pbmdMaW1pdDogNTAwMCxcclxuICAgIGNzc0NvZGVTcGxpdDogZmFsc2UsXHJcbiAgICByb2xsdXBPcHRpb25zOiB7XHJcbiAgICAgIG91dHB1dDoge1xyXG4gICAgICAgIGVudHJ5RmlsZU5hbWVzOiAnW25hbWVdLmpzJyxcclxuICAgICAgICBjaHVua0ZpbGVOYW1lczogJ1tuYW1lXS5qcycsXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gIH0sXHJcbiAgb3B0aW1pemVEZXBzOiB7XHJcbiAgICBleGNsdWRlOiBbJ3Z1ZXRpZnknXSxcclxuICAgIGVudHJpZXM6IFsnLi9zcmMvKiovKi52dWUnXSxcclxuICB9LFxyXG4gIHNlcnZlcjoge1xyXG4gICAgcHJveHk6IHtcclxuICAgICAgJy9hcGkvdjEnOiB7XHJcbiAgICAgICAgdGFyZ2V0OiAnaHR0cDovL2xvY2FsaG9zdDozMDAxJyxcclxuICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgc2VjdXJlOiBmYWxzZSxcclxuICAgICAgICBjb29raWVEb21haW5SZXdyaXRlOiAnbG9jYWxob3N0JyxcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgfSxcclxuICBjc3M6IHtcclxuICAgIHByZXByb2Nlc3Nvck9wdGlvbnM6IHtcclxuICAgICAgc2Nzczoge1xyXG4gICAgICAgIHF1aWV0RGVwczogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgfSxcclxufSlcclxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUE0USxTQUFTLHFCQUFxQjtBQUMxUyxPQUFPLFNBQVM7QUFDaEIsT0FBTyxZQUFZO0FBQ25CLE9BQU8sZ0JBQWdCO0FBQ3ZCLE9BQU8sZ0JBQWdCO0FBQ3ZCLFNBQVMsb0JBQW9CO0FBQzdCLE9BQU8sYUFBYTtBQUNwQixTQUFTLGVBQWU7QUFDeEIsT0FBTyxhQUFhO0FBQ3BCLFNBQVMsZUFBZTtBQUN4QixPQUFPLGdCQUFnQjtBQUN2QixPQUFPLG1CQUFtQjtBQVgxQixJQUFNLG1DQUFtQztBQUE0SCxJQUFNLDJDQUEyQztBQWN0TixJQUFPLHNCQUFRLGFBQWE7QUFBQSxFQUMxQixNQUFNO0FBQUEsRUFDTixTQUFTO0FBQUEsSUFDUCxJQUFJO0FBQUEsSUFDSixPQUFPO0FBQUEsSUFDUCxRQUFRO0FBQUEsTUFDTixRQUFRO0FBQUEs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