vite.config.ts.timestamp-1741940042088-9bb05afdbc7f.mjs 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. // vite.config.ts
  2. import { loadEnv, defineConfig } from "file:///E:/newWay/BaseFront-template/node_modules/.pnpm/vite@5.2.12_@types+node@18.18.2_sass@1.72.0/node_modules/vite/dist/node/index.js";
  3. import postcssPxToViewport8Plugin from "file:///E:/newWay/BaseFront-template/node_modules/.pnpm/postcss-px-to-viewport-8-plugin@1.2.5/node_modules/postcss-px-to-viewport-8-plugin/lib/index.js";
  4. // vite/plugins/index.ts
  5. import vue from "file:///E:/newWay/BaseFront-template/node_modules/.pnpm/@vitejs+plugin-vue@5.0.4_vite@5.2.12_@types+node@18.18.2_sass@1.72.0__vue@3.4.34_typescript@5.4.5_/node_modules/@vitejs/plugin-vue/dist/index.mjs";
  6. // vite/plugins/unocss.ts
  7. import UnoCss from "file:///E:/newWay/BaseFront-template/node_modules/.pnpm/unocss@0.58.6_postcss@8.4.36_rollup@4.24.0_vite@5.2.12_@types+node@18.18.2_sass@1.72.0_/node_modules/unocss/dist/vite.mjs";
  8. var unocss_default = () => {
  9. return UnoCss({
  10. hmrTopLevelAwait: false
  11. // unocss默认是true,低版本浏览器是不支持的,启动后会报错
  12. });
  13. };
  14. // vite/plugins/auto-import.ts
  15. import AutoImport from "file:///E:/newWay/BaseFront-template/node_modules/.pnpm/unplugin-auto-import@0.17.5_@vueuse+core@10.9.0_vue@3.4.34_typescript@5.4.5___rollup@4.24.0/node_modules/unplugin-auto-import/dist/vite.js";
  16. import { ElementPlusResolver } from "file:///E:/newWay/BaseFront-template/node_modules/.pnpm/unplugin-vue-components@0.26.0_@babel+parser@7.25.8_rollup@4.24.0_vue@3.4.34_typescript@5.4.5_/node_modules/unplugin-vue-components/dist/resolvers.js";
  17. import IconsResolver from "file:///E:/newWay/BaseFront-template/node_modules/.pnpm/unplugin-icons@0.18.5_@vue+compiler-sfc@3.4.23_vue-template-compiler@2.7.16/node_modules/unplugin-icons/dist/resolver.js";
  18. var __vite_injected_original_dirname = "E:\\newWay\\BaseFront-template\\vite\\plugins";
  19. var auto_import_default = (path3) => {
  20. return AutoImport({
  21. // 自动导入 Vue 相关函数
  22. imports: ["vue", "vue-router", "@vueuse/core", "pinia"],
  23. eslintrc: {
  24. enabled: false,
  25. filepath: "./.eslintrc-auto-import.json",
  26. globalsPropValue: true
  27. },
  28. resolvers: [
  29. // 自动导入 Element Plus 相关函数ElMessage, ElMessageBox... (带样式)
  30. ElementPlusResolver(),
  31. IconsResolver({
  32. prefix: "Icon"
  33. })
  34. ],
  35. vueTemplate: true,
  36. // 是否在 vue 模板中自动导入
  37. dts: path3.resolve(path3.resolve(__vite_injected_original_dirname, "../../src"), "types", "auto-imports.d.ts")
  38. });
  39. };
  40. // vite/plugins/components.ts
  41. import Components from "file:///E:/newWay/BaseFront-template/node_modules/.pnpm/unplugin-vue-components@0.26.0_@babel+parser@7.25.8_rollup@4.24.0_vue@3.4.34_typescript@5.4.5_/node_modules/unplugin-vue-components/dist/vite.js";
  42. import { ElementPlusResolver as ElementPlusResolver2 } from "file:///E:/newWay/BaseFront-template/node_modules/.pnpm/unplugin-vue-components@0.26.0_@babel+parser@7.25.8_rollup@4.24.0_vue@3.4.34_typescript@5.4.5_/node_modules/unplugin-vue-components/dist/resolvers.js";
  43. import IconsResolver2 from "file:///E:/newWay/BaseFront-template/node_modules/.pnpm/unplugin-icons@0.18.5_@vue+compiler-sfc@3.4.23_vue-template-compiler@2.7.16/node_modules/unplugin-icons/dist/resolver.js";
  44. var __vite_injected_original_dirname2 = "E:\\newWay\\BaseFront-template\\vite\\plugins";
  45. var components_default = (path3) => {
  46. return Components({
  47. resolvers: [
  48. // 自动导入 Element Plus 组件
  49. ElementPlusResolver2(),
  50. // 自动注册图标组件
  51. IconsResolver2({
  52. enabledCollections: ["ep"]
  53. })
  54. ],
  55. dts: path3.resolve(path3.resolve(__vite_injected_original_dirname2, "../../src"), "types", "components.d.ts")
  56. });
  57. };
  58. // vite/plugins/icons.ts
  59. import Icons from "file:///E:/newWay/BaseFront-template/node_modules/.pnpm/unplugin-icons@0.18.5_@vue+compiler-sfc@3.4.23_vue-template-compiler@2.7.16/node_modules/unplugin-icons/dist/vite.js";
  60. var icons_default = () => {
  61. return Icons({
  62. // 自动安装图标库
  63. autoInstall: true
  64. });
  65. };
  66. // vite/plugins/svg-icon.ts
  67. import { createSvgIconsPlugin } from "file:///E:/newWay/BaseFront-template/node_modules/.pnpm/vite-plugin-svg-icons@2.0.1_vite@5.2.12_@types+node@18.18.2_sass@1.72.0_/node_modules/vite-plugin-svg-icons/dist/index.mjs";
  68. var __vite_injected_original_dirname3 = "E:\\newWay\\BaseFront-template\\vite\\plugins";
  69. var svg_icon_default = (path3, isBuild) => {
  70. return createSvgIconsPlugin({
  71. // 指定需要缓存的图标文件夹
  72. iconDirs: [path3.resolve(path3.resolve(__vite_injected_original_dirname3, "../../src"), "assets/icons/svg")],
  73. // 指定symbolId格式
  74. symbolId: "icon-[dir]-[name]",
  75. svgoOptions: isBuild
  76. });
  77. };
  78. // vite/plugins/compression.ts
  79. import compression from "file:///E:/newWay/BaseFront-template/node_modules/.pnpm/vite-plugin-compression@0.5.1_vite@5.2.12_@types+node@18.18.2_sass@1.72.0_/node_modules/vite-plugin-compression/dist/index.mjs";
  80. var compression_default = (env) => {
  81. const { VITE_BUILD_COMPRESS } = env;
  82. const plugin = [];
  83. if (VITE_BUILD_COMPRESS) {
  84. const compressList = VITE_BUILD_COMPRESS.split(",");
  85. if (compressList.includes("gzip")) {
  86. plugin.push(
  87. compression({
  88. ext: ".gz",
  89. deleteOriginFile: false
  90. })
  91. );
  92. }
  93. if (compressList.includes("brotli")) {
  94. plugin.push(
  95. compression({
  96. ext: ".br",
  97. algorithm: "brotliCompress",
  98. deleteOriginFile: false
  99. })
  100. );
  101. }
  102. }
  103. return plugin;
  104. };
  105. // vite/plugins/setup-extend.ts
  106. import setupExtend from "file:///E:/newWay/BaseFront-template/node_modules/.pnpm/unplugin-vue-setup-extend-plus@1.0.1/node_modules/unplugin-vue-setup-extend-plus/dist/vite.js";
  107. var setup_extend_default = () => {
  108. return setupExtend({});
  109. };
  110. // vite/plugins/i18n.ts
  111. import VueI18nPlugin from "file:///E:/newWay/BaseFront-template/node_modules/.pnpm/@intlify+unplugin-vue-i18n@3.0.1_rollup@4.24.0_vue-i18n@9.10.2_vue@3.4.34_typescript@5.4.5__/node_modules/@intlify/unplugin-vue-i18n/lib/vite.mjs";
  112. var __vite_injected_original_dirname4 = "E:\\newWay\\BaseFront-template\\vite\\plugins";
  113. var i18n_default = (path3) => {
  114. return VueI18nPlugin({
  115. include: [path3.resolve(__vite_injected_original_dirname4, "../../src/lang/**.json")]
  116. });
  117. };
  118. // vite/plugins/index.ts
  119. import path from "path";
  120. var plugins_default = (viteEnv, isBuild = false) => {
  121. const vitePlugins = [];
  122. vitePlugins.push(vue());
  123. vitePlugins.push(unocss_default());
  124. vitePlugins.push(auto_import_default(path));
  125. vitePlugins.push(components_default(path));
  126. vitePlugins.push(compression_default(viteEnv));
  127. vitePlugins.push(icons_default());
  128. vitePlugins.push(svg_icon_default(path, isBuild));
  129. vitePlugins.push(setup_extend_default());
  130. vitePlugins.push(i18n_default(path));
  131. return vitePlugins;
  132. };
  133. // vite.config.ts
  134. import path2 from "path";
  135. var __vite_injected_original_dirname5 = "E:\\newWay\\BaseFront-template";
  136. var vite_config_default = defineConfig(({ mode, command }) => {
  137. const env = loadEnv(mode, process.cwd());
  138. return {
  139. // 部署生产环境和开发环境下的URL。
  140. // 默认情况下,vite 会假设你的应用是被部署在一个域名的根路径上
  141. // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
  142. base: "./",
  143. resolve: {
  144. alias: {
  145. "~": path2.resolve(__vite_injected_original_dirname5, "./"),
  146. "@": path2.resolve(__vite_injected_original_dirname5, "./src")
  147. },
  148. extensions: [".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".vue"]
  149. },
  150. // https://cn.vitejs.dev/config/#resolve-extensions
  151. plugins: plugins_default(env, command === "build"),
  152. server: {
  153. host: "0.0.0.0",
  154. port: 8050,
  155. open: true,
  156. cors: true,
  157. proxy: {
  158. [env.VITE_APP_BASE_API]: {
  159. target: env.VITE_APP_BASE_API,
  160. //target: 'http://localhost:8086/',
  161. changeOrigin: true,
  162. ws: true,
  163. rewrite: (path3) => path3.replace(new RegExp("^" + env.VITE_APP_BASE_API), "")
  164. },
  165. "/api": {
  166. // 代理请求之后的请求地址(你的真实接口地址)
  167. target: "https://cimweb.zjw.sh.cegn.cn:2007/data-business-prod/",
  168. //target: 'http://localhost:9250/',
  169. secure: false,
  170. // 跨域
  171. changeOrigin: true,
  172. rewrite: (path3) => path3.replace(/^\/api/, "")
  173. },
  174. "/projectapi": {
  175. // 代理请求之后的请求地址(你的真实接口地址)
  176. target: "https://cimweb.zjw.sh.cegn.cn:2007/data-business-prod-2/",
  177. //target: 'http://localhost:9250/',
  178. secure: false,
  179. // 跨域
  180. changeOrigin: true,
  181. rewrite: (path3) => path3.replace(/^\/projectapi/, "")
  182. },
  183. "/openapi": {
  184. // 代理请求之后的请求地址(你的真实接口地址)
  185. target: "https://cimweb.zjw.sh.cegn.cn:2008/",
  186. //target: 'http://localhost:9250/',
  187. secure: false,
  188. // 跨域
  189. changeOrigin: true,
  190. rewrite: (path3) => path3.replace(/^\/openapi/, "")
  191. }
  192. }
  193. },
  194. css: {
  195. preprocessorOptions: {
  196. scss: {
  197. additionalData: '@import "./src/styles/variables.scss";',
  198. javascriptEnabled: true
  199. }
  200. },
  201. postcss: {
  202. plugins: [
  203. {
  204. postcssPlugin: "internal:charset-removal",
  205. AtRule: {
  206. charset: (atRule) => {
  207. if (atRule.name === "charset") {
  208. atRule.remove();
  209. }
  210. }
  211. }
  212. },
  213. postcssPxToViewport8Plugin({
  214. unitToConvert: "px",
  215. viewportWidth: 1080,
  216. unitPrecision: 6,
  217. propList: ["*"],
  218. viewportUnit: "vh",
  219. fontViewportUnit: "vh",
  220. selectorBlackList: [],
  221. minPixelValue: 1,
  222. mediaQuery: true,
  223. replace: true,
  224. exclude: [/node_modules\/(?!element-plus)/, /views\/dataAssetsManage\/dataClean\/antv6/],
  225. landscape: false
  226. })
  227. ]
  228. }
  229. },
  230. // 预编译
  231. optimizeDeps: {
  232. include: [
  233. "vue",
  234. "vue-router",
  235. "pinia",
  236. "axios",
  237. "@vueuse/core",
  238. "echarts",
  239. "vue-i18n",
  240. "@vueup/vue-quill",
  241. "bpmn-js/lib/Viewer",
  242. "bpmn-js/lib/Modeler.js",
  243. "bpmn-js-properties-panel",
  244. "min-dash",
  245. "diagram-js/lib/navigation/movecanvas",
  246. "diagram-js/lib/navigation/zoomscroll",
  247. "bpmn-js/lib/features/palette/PaletteProvider",
  248. "bpmn-js/lib/features/context-pad/ContextPadProvider",
  249. "diagram-js/lib/draw/BaseRenderer",
  250. "tiny-svg",
  251. "image-conversion",
  252. "element-plus/es/components/**/css"
  253. ]
  254. }
  255. };
  256. });
  257. export {
  258. vite_config_default as default
  259. };
  260. //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiLCAidml0ZS9wbHVnaW5zL2luZGV4LnRzIiwgInZpdGUvcGx1Z2lucy91bm9jc3MudHMiLCAidml0ZS9wbHVnaW5zL2F1dG8taW1wb3J0LnRzIiwgInZpdGUvcGx1Z2lucy9jb21wb25lbnRzLnRzIiwgInZpdGUvcGx1Z2lucy9pY29ucy50cyIsICJ2aXRlL3BsdWdpbnMvc3ZnLWljb24udHMiLCAidml0ZS9wbHVnaW5zL2NvbXByZXNzaW9uLnRzIiwgInZpdGUvcGx1Z2lucy9zZXR1cC1leHRlbmQudHMiLCAidml0ZS9wbHVnaW5zL2kxOG4udHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJFOlxcXFxuZXdXYXlcXFxcQmFzZUZyb250LXRlbXBsYXRlXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJFOlxcXFxuZXdXYXlcXFxcQmFzZUZyb250LXRlbXBsYXRlXFxcXHZpdGUuY29uZmlnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9FOi9uZXdXYXkvQmFzZUZyb250LXRlbXBsYXRlL3ZpdGUuY29uZmlnLnRzXCI7aW1wb3J0IHsgVXNlckNvbmZpZywgQ29uZmlnRW52LCBsb2FkRW52LCBkZWZpbmVDb25maWcgfSBmcm9tICd2aXRlJztcclxuaW1wb3J0IHBvc3Rjc3NQeFRvVmlld3BvcnQ4UGx1Z2luIGZyb20gJ3Bvc3Rjc3MtcHgtdG8tdmlld3BvcnQtOC1wbHVnaW4nO1xyXG5pbXBvcnQgY3JlYXRlUGx1Z2lucyBmcm9tICcuL3ZpdGUvcGx1Z2lucyc7XHJcblxyXG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKCh7IG1vZGUsIGNvbW1hbmQgfTogQ29uZmlnRW52KTogVXNlckNvbmZpZyA9PiB7XHJcbiAgY29uc3QgZW52ID0gbG9hZEVudihtb2RlLCBwcm9jZXNzLmN3ZCgpKTtcclxuICByZXR1cm4ge1xyXG4gICAgLy8gXHU5MEU4XHU3RjcyXHU3NTFGXHU0RUE3XHU3M0FGXHU1ODgzXHU1NDhDXHU1RjAwXHU1M0QxXHU3M0FGXHU1ODgzXHU0RTBCXHU3Njg0VVJMXHUzMDAyXHJcbiAgICAvLyBcdTlFRDhcdThCQTRcdTYwQzVcdTUxQjVcdTRFMEJcdUZGMEN2aXRlIFx1NEYxQVx1NTA0N1x1OEJCRVx1NEY2MFx1NzY4NFx1NUU5NFx1NzUyOFx1NjYyRlx1ODhBQlx1OTBFOFx1N0Y3Mlx1NTcyOFx1NEUwMFx1NEUyQVx1NTdERlx1NTQwRFx1NzY4NFx1NjgzOVx1OERFRlx1NUY4NFx1NEUwQVxyXG4gICAgLy8gXHU0RjhCXHU1OTgyIGh0dHBzOi8vd3d3LnJ1b3lpLnZpcC9cdTMwMDJcdTU5ODJcdTY3OUNcdTVFOTRcdTc1MjhcdTg4QUJcdTkwRThcdTdGNzJcdTU3MjhcdTRFMDBcdTRFMkFcdTVCNTBcdThERUZcdTVGODRcdTRFMEFcdUZGMENcdTRGNjBcdTVDMzFcdTk3MDBcdTg5ODFcdTc1MjhcdThGRDlcdTRFMkFcdTkwMDlcdTk4NzlcdTYzMDdcdTVCOUFcdThGRDlcdTRFMkFcdTVCNTBcdThERUZcdTVGODRcdTMwMDJcdTRGOEJcdTU5ODJcdUZGMENcdTU5ODJcdTY3OUNcdTRGNjBcdTc2ODRcdTVFOTRcdTc1MjhcdTg4QUJcdTkwRThcdTdGNzJcdTU3MjggaHR0cHM6Ly93d3cucnVveWkudmlwL2FkbWluL1x1RkYwQ1x1NTIxOVx1OEJCRVx1N0Y2RSBiYXNlVXJsIFx1NEUzQSAvYWRtaW4vXHUzMDAyXHJcbiAgICBiYXNlOiAnLi8nLFxyXG4gICAgcmVzb2x2ZToge1xyXG4gICAgICBhbGlhczoge1xyXG4gICAgICAgICd+JzogcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4vJyksXHJcbiAgICAgICAgJ0AnOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi9zcmMnKVxyXG4gICAgICB9LFxyXG4gICAgICBleHRlbnNpb25zOiBbJy5tanMnLCAnLmpzJywgJy50cycsICcuanN4JywgJy50c3gnLCAnLmpzb24nLCAnLnZ1ZSddXHJcbiAgICB9LFxyXG4gICAgLy8gaHR0cHM6Ly9jbi52aXRlanMuZGV2L2NvbmZpZy8jcmVzb2x2ZS1leHRlbnNpb25zXHJcbiAgICBwbHVnaW5zOiBjcmVhdGVQbHVnaW5zKGVudiwgY29tbWFuZCA9PT0gJ2J1aWxkJyksXHJcbiAgICBzZXJ2ZXI6IHtcclxuICAgICAgaG9zdDogJzAuMC4wLjAnLFxyXG4gICAgICBwb3J0OiA4MDUwLFxyXG4gICAgICBvcGVuOiB0cnVlLFxyXG4gICAgICBjb3JzOiB0cnVlLFxyXG4gICAgICBwcm94eToge1xyXG4gICAgICAgIFtlbnYuVklURV9BUFBfQkFTRV9BUEldOiB7XHJcbiAgICAgICAgICB0YXJnZXQ6IGVudi5WSVRFX0FQUF9CQVNFX0FQSSxcclxuICAgICAgICAgIC8vdGFyZ2V0OiAnaHR0cDovL2xvY2FsaG9zdDo4MDg2LycsXHJcbiAgICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgICB3czogdHJ1ZSxcclxuICAgICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UobmV3IFJlZ0V4cCgnXicgKyBlbnYuVklURV9BUFBfQkFTRV9BUEkpLCAnJylcclxuICAgICAgICB9LFxyXG4gICAgICAgICcvYXBpJzoge1xyXG4gICAgICAgICAgLy8gXHU0RUUzXHU3NDA2XHU4QkY3XHU2QzQyXHU0RTRCXHU1NDBFXHU3Njg0XHU4QkY3XHU2QzQyXHU1NzMwXHU1NzQwXHVGRjA4XHU0RjYwXHU3Njg0XHU3NzFGXHU1QjlFXHU2M0E1XHU1M0UzXHU1NzMwXHU1NzQwKVxyXG4gICAgICAgICAgdGFyZ2V0OiAnaHR0cHM6Ly9jaW13ZWIuemp3LnNoLmNlZ24uY246MjAwNy9kYXRhLWJ1c2luZXNzLXByb2QvJyxcclxuICAgICAgICAgIC8vdGFyZ2V0OiAnaHR0cDovL2xvY2FsaG9zdDo5MjUwLycsXHJcbiAgICAgICAgICBzZWN1cmU6IGZhbHNlLFxyXG4gICAgICAgICAgLy8gXHU4REU4XHU1N0RGXHJcbiAgICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgICByZXdyaXRlOiAocGF0aCkgPT4gcGF0aC5yZXBsYWNlKC9eXFwvYXBpLywgJycpXHJcbiAgICAgICAgfSxcclxuICAgICAgICAnL3Byb2plY3RhcGknOiB7XHJcbiAgICAgICAgICAvLyBcdTRFRTNcdTc0MDZcdThCRjdcdTZDNDJcdTRFNEJcdTU0MEVcdTc2ODRcdThCRjdcdTZDNDJcdTU3MzBcdTU3NDBcdUZGMDhcdTRGNjBcdTc2ODRcdTc3MUZcdTVCOUVcdTYzQTVcdTUzRTNcdTU3MzBcdTU3NDApXHJcbiAgICAgICAgICB0YXJnZXQ6ICdodHRwczovL2NpbXdlYi56ancuc2guY2Vnbi5jbjoyMDA3L2RhdGEtYnVzaW5lc3MtcHJvZC0yLycsXHJcbiAgICAgICAgICAvL3RhcmdldDogJ2h0dHA6Ly9sb2NhbGhvc3Q6OTI1MC8nLFxyXG4gICAgICAgICAgc2VjdXJlOiBmYWxzZSxcclxuICAgICAgICAgIC8vIFx1OERFOFx1NTdERlxyXG4gICAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxyXG4gICAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHBhdGgucmVwbGFjZSgvXlxcL3Byb2plY3RhcGkvLCAnJylcclxuICAgICAgICB9LFxyXG4gICAgICAgICcvb3BlbmFwaSc6IHtcclxuICAgICAgICAgIC8vIFx1NEVFM1x1NzQwNlx1OEJGN1x1NkM0Mlx1NEU0Qlx1NTQwRVx1NzY4NFx1OEJGN1x1NkM0Mlx1NTczMFx1NTc0MFx1RkYwOFx1NEY2MFx1NzY4NFx1NzcxRlx1NUI5RVx1NjNBNVx1NTNFM1x1NTczMFx1NTc0MClcclxuICAgICAgICAgIHRhcmdldDogJ2h0dHBzOi8vY2ltd2ViLnpqdy5zaC5jZWduLmNuOjIwMDgvJyxcclxuICAgICAgICAgIC8vdGFyZ2V0OiAnaHR0cDovL2xvY2FsaG9zdDo5MjUwLycsXHJcbiAgICAgICAgICBzZWN1cmU6IGZhbHNlLFxyXG4gICAgICAgICAgLy8gXHU4REU4XHU1N0RGXHJcbiAgICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXHJcbiAgICAgICAgICByZXdyaXRlOiAocGF0aCkgPT4gcGF0aC5yZXBsYWNlKC9eXFwvb3BlbmFwaS8sICcnKVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjc3M6IHtcclxuICAgICAgcHJlcHJvY2Vzc29yT3B0aW9uczoge1xyXG4gICAgICAgIHNjc3M6IHtcclxuICAgICAgICAgIGFkZGl0aW9uYWxEYXRhOiAnQGltcG9ydCBcIi4vc3JjL3N0eWxlcy92YXJpYWJsZXMuc2Nzc1wiOycsXHJcbiAgICAgICAgICBqYXZhc2NyaXB0RW5hYmxlZDogdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgcG9zdGNzczoge1xyXG4gICAgICAgIHBsdWdpbnM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgcG9zdGNzc1BsdWdpbjogJ2ludGVybmFsOmNoYXJzZXQtcmVtb3ZhbCcsXHJcbiAgICAgICAgICAgIEF0UnVsZToge1xyXG4gICAgICAgICAgICAgIGNoYXJzZXQ6IChhdFJ1bGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChhdFJ1bGUubmFtZSA9PT0gJ2NoYXJzZXQnKSB7XHJcbiAgICAgICAgICAgICAgICAgIGF0UnVsZS5yZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBwb3N0Y3NzUHhUb1ZpZXdwb3J0OFBsdWdpbih7XHJcbiAgICAgICAgICAgIHVuaXRUb0NvbnZlcnQ6ICdweCcsXHJcbiAgICAgICAgICAgIHZpZXdwb3J0V2lkdGg6IDEwODAsXHJcbiAgICAgICAgICAgIHVuaXRQcmVjaXNpb246IDYsXHJcbiAgICAgICAgICAgIHByb3BMaXN0OiBbJyonXSxcclxuICAgICAgICAgICAgdmlld3BvcnRVbml0OiAndmgnLFxyXG4gICAgICAgICAgICBmb250Vmlld3BvcnRVbml0OiAndmgnLFxyXG4gICAgICAgICAgICBzZWxlY3RvckJsYWNrTGlzdDogW10sXHJcbiAgICAgICAgICAgIG1pblBpeGVsVmFsdWU6IDEsXHJcbiAgICAgICAgICAgIG1lZGlhUXVlcnk6IHRydWUsXHJcbiAgICAgICAgICAgIHJlcGxhY2U6IHRydWUsXHJcbiAgICAgICAgICAgIGV4Y2x1ZGU6IFsvbm9kZV9tb2R1bGVzXFwvKD8hZWxlbWVudC1wbHVzKS8sIC92aWV3c1xcL2RhdGFBc3NldHNNYW5hZ2VcXC9kYXRhQ2xlYW5cXC9hbnR2Ni9dLFxyXG4gICAgICAgICAgICBsYW5kc2NhcGU6IGZhbHNlXHJcbiAgICAgICAgICB9KSBhcyBhbnlcclxuICAgICAgICBdXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvLyBcdTk4ODRcdTdGMTZcdThCRDFcclxuICAgIG9wdGltaXplRGVwczoge1xyXG4gICAgICBpbmNsdWRlOiBbXHJcbiAgICAgICAgJ3Z1ZScsXHJcbiAgICAgICAgJ3Z1ZS1yb3V0ZXInLFxyXG4gICAgICAgICdwaW5pYScsXHJcbiAgICAgICAgJ2F4aW9zJyxcclxuICAgICAgICAnQHZ1ZXVzZS9jb3JlJyxcclxuICAgICAgICAnZWNoYXJ0cycsXHJcbiAgICAgICAgJ3Z1ZS1pMThuJyxcclxuICAgICAgICAnQHZ1ZXVwL3Z1ZS1xdWlsbCcsXHJcbiAgICAgICAgJ2JwbW4tanMvbGliL1ZpZXdlcicsXHJcbiAgICAgICAgJ2JwbW4tanMvbGliL01vZGVsZXIuanMnLFxyXG4gICAgICAgICdicG1uLWpzLXByb3BlcnRpZXMtcGFuZWwnLFxyXG4gICAgICAgICdtaW4tZGFzaCcsXHJcbiAgICAgICAgJ2RpYWdyYW0tanMvbGliL25hdmlnYXRpb24vbW92ZWNhbnZhcycsXHJcbiAgICAgICAgJ2RpYWdyYW0tanMvbGliL25hdmlnYXRpb24vem9vbXNjcm9sbCcsXHJcbiAgICAgICAgJ2JwbW4tanMvbGliL2ZlYXR1cmVzL3BhbGV0dGUvUGFsZXR0ZVByb3ZpZGVyJyxcclxuICAgICAgICAnYnBtbi1qcy9saWIvZmVhdHVyZXMvY29udGV4dC1wYWQvQ29udGV4dFBhZFByb3ZpZGVyJyxcclxuICAgICAgICAnZGlhZ3JhbS1qcy9saWIvZHJhdy9CYXNlUmVuZGVyZXInLFxyXG4gICAgICAgICd0aW55LXN2ZycsXHJcbiAgICAgICAgJ2ltYWdlLWNvbnZlcnNpb24nLFxyXG4gICAgICAgICdlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy8qKi9jc3MnXHJcbiAgICAgIF1cclxuICAgIH1cclxuICB9O1xyXG59KTtcclxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJFOlxcXFxuZXdXYXlcXFxcQmFzZUZyb250LXRlbXBsYXRlXFxcXHZpdGVcXFxccGx1Z2luc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRTpcXFxcbmV3V2F5XFxcXEJhc2VGcm9udC10ZW1wbGF0ZVxcXFx2aXRlXFxcXHBsdWdpbnNcXFxcaW5kZXgudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0U6L25ld1dheS9CYXNlRnJvbnQtdGVtcGxhdGUvdml0ZS9wbHVnaW5zL2luZGV4LnRzXCI7aW1wb3J0IHZ1ZSBmcm9tICdAdml0ZWpzL3BsdWdpbi12dWUnO1xyXG5pbXBvcnQgY3JlYXRlVW5vQ3NzIGZyb20gJy4vdW5vY3NzJztcclxuaW1wb3J0IGNyZWF0ZUF1dG9JbXBvcnQgZnJvbSAnLi9hdXRvLWltcG9ydCc7XHJcbmltcG9ydCBjcmVhdGVDb21wb25lbnRzIGZyb20gJy4vY29tcG9uZW50cyc7XHJcbmltcG9ydCBjcmVhdGVJY29ucyBmcm9tICcuL2ljb25zJztcclxuaW1wb3J0IGNyZWF0ZVN2Z0ljb25zUGx1Z2luIGZyb20gJy4vc3ZnLWljb24nO1xyXG5pbXBvcnQgY3JlYXRlQ29tcHJlc3Npb24gZnJvbSAnLi9jb21wcmVzc2lvbic7XHJcbmltcG9ydCBjcmVhdGVTZXR1cEV4dGVuZCBmcm9tICcuL3NldHVwLWV4dGVuZCc7XHJcbmltcG9ydCBjcmVhdGVJMThuIGZyb20gJy4vaTE4bic7XHJcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgKHZpdGVFbnY6IGFueSwgaXNCdWlsZCA9IGZhbHNlKTogW10gPT4ge1xyXG4gIGNvbnN0IHZpdGVQbHVnaW5zOiBhbnkgPSBbXTtcclxuICB2aXRlUGx1Z2lucy5wdXNoKHZ1ZSgpKTtcclxuICB2aXRlUGx1Z2lucy5wdXNoKGNyZWF0ZVVub0NzcygpKTtcclxuICB2aXRlUGx1Z2lucy5wdXNoKGNyZWF0ZUF1dG9JbXBvcnQocGF0aCkpO1xyXG4gIHZpdGVQbHVnaW5zLnB1c2goY3JlYXRlQ29tcG9uZW50cyhwYXRoKSk7XHJcbiAgdml0ZVBsdWdpbnMucHVzaChjcmVhdGVDb21wcmVzc2lvbih2aXRlRW52KSk7XHJcbiAgdml0ZVBsdWdpbnMucHVzaChjcmVhdGVJY29ucygpKTtcclxuICB2aXRlUGx1Z2lucy5wdXNoKGNyZWF0ZVN2Z0ljb25zUGx1Z2luKHBhdGgsIGlzQnVpbGQpKTtcclxuICB2aXRlUGx1Z2lucy5wdXNoKGNyZWF0ZVNldHVwRXh0ZW5kKCkpO1xyXG4gIHZpdGVQbHVnaW5zLnB1c2goY3JlYXRlSTE4bihwYXRoKSk7XHJcbiAgcmV0dXJuIHZpdGVQbHVnaW5zO1xyXG59O1xyXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkU6XFxcXG5ld1dheVxcXFxCYXNlRnJvbnQtdGVtcGxhdGVcXFxcdml0ZVxcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJFOlxcXFxuZXdXYXlcXFxcQmFzZUZyb250LXRlbXBsYXRlXFxcXHZpdGVcXFxccGx1Z2luc1xcXFx1bm9jc3MudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0U6L25ld1dheS9CYXNlRnJvbnQtdGVtcGxhdGUvdml0ZS9wbHVnaW5zL3Vub2Nzcy50c1wiO2ltcG9ydCBVbm9Dc3MgZnJvbSAndW5vY3NzL3ZpdGUnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgKCkgPT4ge1xyXG4gIHJldHVybiBVbm9Dc3Moe1xyXG4gICAgaG1yVG9wTGV2ZWxBd2FpdDogZmFsc2UgLy8gdW5vY3NzXHU5RUQ4XHU4QkE0XHU2NjJGdHJ1ZVx1RkYwQ1x1NEY0RVx1NzI0OFx1NjcyQ1x1NkQ0Rlx1ODlDOFx1NTY2OFx1NjYyRlx1NEUwRFx1NjUyRlx1NjMwMVx1NzY4NFx1RkYwQ1x1NTQyRlx1NTJBOFx1NTQwRVx1NEYxQVx1NjJBNVx1OTUxOVxyXG4gIH0pO1xyXG59O1xyXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkU6XFxcXG5ld1dheVxcXFxCYXNlRnJvbnQtdGVtcGxhdGVcXFxcdml0ZVxcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJFOlxcXFxuZXdXYXlcXFxcQmFzZUZyb250LXRlbXBsYXRlXFxcXHZpdGVcXFxccGx1Z2luc1xcXFxhdXRvLWltcG9ydC50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRTovbmV3V2F5L0Jhc2VGcm9udC10ZW1wbGF0ZS92aXRlL3BsdWdpbnMvYXV0by1pbXBvcnQudHNcIjtpbXBvcnQgQXV0b0ltcG9ydCBmcm9tICd1bnBsdWdpbi1hdXRvLWltcG9ydC92aXRlJztcclxuaW1wb3J0IHsgRWxlbWVudFBsdXNSZXNvbHZlciB9IGZyb20gJ3VucGx1Z2luLXZ1ZS1jb21wb25lbnRzL3Jlc29sdmVycyc7XHJcbmltcG9ydCBJY29uc1Jlc29sdmVyIGZyb20gJ3VucGx1Z2luLWljb25zL3Jlc29sdmVyJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IChwYXRoOiBhbnkpID0+IHtcclxuICByZXR1cm4gQXV0b0ltcG9ydCh7XHJcbiAgICAvLyBcdTgxRUFcdTUyQThcdTVCRkNcdTUxNjUgVnVlIFx1NzZGOFx1NTE3M1x1NTFGRFx1NjU3MFxyXG4gICAgaW1wb3J0czogWyd2dWUnLCAndnVlLXJvdXRlcicsICdAdnVldXNlL2NvcmUnLCAncGluaWEnXSxcclxuICAgIGVzbGludHJjOiB7XHJcbiAgICAgIGVuYWJsZWQ6IGZhbHNlLFxyXG4gICAgICBmaWxlcGF0aDogJy4vLmVzbGludHJjLWF1dG8taW1wb3J0Lmpzb24nLFxyXG4gICAgICBnbG9iYWxzUHJvcFZhbHVlOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgcmVzb2x2ZXJzOiBbXHJcbiAgICAgIC8vIFx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NSBFbGVtZW50IFBsdXMgXHU3NkY4XHU1MTczXHU1MUZEXHU2NTcwRWxNZXNzYWdlLCBFbE1lc3NhZ2VCb3guLi4gKFx1NUUyNlx1NjgzN1x1NUYwRilcclxuICAgICAgRWxlbWVudFBsdXNSZXNvbHZlcigpLFxyXG4gICAgICBJY29uc1Jlc29sdmVyKHtcclxuICAgICAgICBwcmVmaXg6ICdJY29uJ1xyXG4gICAgICB9KVxyXG4gICAgXSxcclxuICAgIHZ1ZVRlbXBsYXRlOiB0cnVlLCAvLyBcdTY2MkZcdTU0MjZcdTU3MjggdnVlIFx1NkEyMVx1Njc3Rlx1NEUyRFx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NVxyXG4gICAgZHRzOiBwYXRoLnJlc29sdmUocGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uLy4uL3NyYycpLCAndHlwZXMnLCAnYXV0by1pbXBvcnRzLmQudHMnKVxyXG4gIH0pO1xyXG59O1xyXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkU6XFxcXG5ld1dheVxcXFxCYXNlRnJvbnQtdGVtcGxhdGVcXFxcdml0ZVxcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJFOlxcXFxuZXdXYXlcXFxcQmFzZUZyb250LXRlbXBsYXRlXFxcXHZpdGVcXFxccGx1Z2luc1xcXFxjb21wb25lbnRzLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9FOi9uZXdXYXkvQmFzZUZyb250LXRlbXBsYXRlL3ZpdGUvcGx1Z2lucy9jb21wb25lbnRzLnRzXCI7aW1wb3J0IENvbXBvbmVudHMgZnJvbSAndW5wbHVnaW4tdnVlLWNvbXBvbmVudHMvdml0ZSc7XHJcbmltcG9ydCB7IEVsZW1lbnRQbHVzUmVzb2x2ZXIgfSBmcm9tICd1bnBsdWdpbi12dWUtY29tcG9uZW50cy9yZXNvbHZlcnMnO1xyXG5pbXBvcnQgSWNvbnNSZXNvbHZlciBmcm9tICd1bnBsdWdpbi1pY29ucy9yZXNvbHZlcic7XHJcblxyXG5leHBvcnQgZGVmYXVsdCAocGF0aDogYW55KSA9PiB7XHJcbiAgcmV0dXJuIENvbXBvbmVudHMoe1xyXG4gICAgcmVzb2x2ZXJzOiBbXHJcbiAgICAgIC8vIFx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NSBFbGVtZW50IFBsdXMgXHU3RUM0XHU0RUY2XHJcbiAgICAgIEVsZW1lbnRQbHVzUmVzb2x2ZXIoKSxcclxuICAgICAgLy8gXHU4MUVBXHU1MkE4XHU2Q0U4XHU1MThDXHU1NkZFXHU2ODA3XHU3RUM0XHU0RUY2XHJcbiAgICAgIEljb25zUmVzb2x2ZXIoe1xyXG4gICAgICAgIGVuYWJsZWRDb2xsZWN0aW9uczogWydlcCddXHJcbiAgICAgIH0pXHJcbiAgICBdLFxyXG4gICAgZHRzOiBwYXRoLnJlc29sdmUocGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uLy4uL3NyYycpLCAndHlwZXMnLCAnY29tcG9uZW50cy5kLnRzJylcclxuICB9KTtcclxufTtcclxuIiwgImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJFOlxcXFxuZXdXYXlcXFxcQmFzZUZyb250LXRlbXBsYXRlXFxcXHZpdGVcXFxccGx1Z2luc1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiRTpcXFxcbmV3V2F5XFxcXEJhc2VGcm9udC10ZW1wbGF0ZVxcXFx2aXRlXFxcXHBsdWdpbnNcXFxcaWNvbnMudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0U6L25ld1dheS9CYXNlRnJvbnQtdGVtcGxhdGUvdml0ZS9wbHVnaW5zL2ljb25zLnRzXCI7aW1wb3J0IEljb25zIGZyb20gJ3VucGx1Z2luLWljb25zL3ZpdGUnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgKCkgPT4ge1xyXG4gIHJldHVybiBJY29ucyh7XHJcbiAgICAvLyBcdTgxRUFcdTUyQThcdTVCODlcdTg4QzVcdTU2RkVcdTY4MDdcdTVFOTNcclxuICAgIGF1dG9JbnN0YWxsOiB0cnVlXHJcbiAgfSk7XHJcbn07XHJcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRTpcXFxcbmV3V2F5XFxcXEJhc2VGcm9udC10ZW1wbGF0ZVxcXFx2aXRlXFxcXHBsdWdpbnNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkU6XFxcXG5ld1dheVxcXFxCYXNlRnJvbnQtdGVtcGxhdGVcXFxcdml0ZVxcXFxwbHVnaW5zXFxcXHN2Zy1pY29uLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9FOi9uZXdXYXkvQmFzZUZyb250LXRlbXBsYXRlL3ZpdGUvcGx1Z2lucy9zdmctaWNvbi50c1wiO2ltcG9ydCB7IGNyZWF0ZVN2Z0ljb25zUGx1Z2luIH0gZnJvbSAndml0ZS1wbHVnaW4tc3ZnLWljb25zJztcclxuZXhwb3J0IGRlZmF1bHQgKHBhdGg6IGFueSwgaXNCdWlsZDogYm9vbGVhbikgPT4ge1xyXG4gIHJldHVybiBjcmVhdGVTdmdJY29uc1BsdWdpbih7XHJcbiAgICAvLyBcdTYzMDdcdTVCOUFcdTk3MDBcdTg5ODFcdTdGMTNcdTVCNThcdTc2ODRcdTU2RkVcdTY4MDdcdTY1ODdcdTRFRjZcdTU5MzlcclxuICAgIGljb25EaXJzOiBbcGF0aC5yZXNvbHZlKHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLi8uLi9zcmMnKSwgJ2Fzc2V0cy9pY29ucy9zdmcnKV0sXHJcbiAgICAvLyBcdTYzMDdcdTVCOUFzeW1ib2xJZFx1NjgzQ1x1NUYwRlxyXG4gICAgc3ltYm9sSWQ6ICdpY29uLVtkaXJdLVtuYW1lXScsXHJcbiAgICBzdmdvT3B0aW9uczogaXNCdWlsZFxyXG4gIH0pO1xyXG59O1xyXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkU6XFxcXG5ld1dheVxcXFxCYXNlRnJvbnQtdGVtcGxhdGVcXFxcdml0ZVxcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJFOlxcXFxuZXdXYXlcXFxcQmFzZUZyb250LXRlbXBsYXRlXFxcXHZpdGVcXFxccGx1Z2luc1xcXFxjb21wcmVzc2lvbi50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRTovbmV3V2F5L0Jhc2VGcm9udC10ZW1wbGF0ZS92aXRlL3BsdWdpbnMvY29tcHJlc3Npb24udHNcIjtpbXBvcnQgY29tcHJlc3Npb24gZnJvbSAndml0ZS1wbHVnaW4tY29tcHJlc3Npb24nO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgKGVudjogYW55KSA9PiB7XHJcbiAgY29uc3QgeyBWSVRFX0JVSUxEX0NPTVBSRVNTIH0gPSBlbnY7XHJcbiAgY29uc3QgcGx1Z2luOiBhbnlbXSA9IFtdO1xyXG4gIGlmIChWSVRFX0JVSUxEX0NPTVBSRVNTKSB7XHJcbiAgICBjb25zdCBjb21wcmVzc0xpc3QgPSBWSVRFX0JVSUxEX0NPTVBSRVNTLnNwbGl0KCcsJyk7XHJcbiAgICBpZiAoY29tcHJlc3NMaXN0LmluY2x1ZGVzKCdnemlwJykpIHtcclxuICAgICAgLy8gaHR0cDovL2RvYy5ydW95aS52aXAvcnVveWktdnVlL290aGVyL2ZhcS5odG1sI1x1NEY3Rlx1NzUyOGd6aXBcdTg5RTNcdTUzOEJcdTdGMjlcdTk3NTlcdTYwMDFcdTY1ODdcdTRFRjZcclxuICAgICAgcGx1Z2luLnB1c2goXHJcbiAgICAgICAgY29tcHJlc3Npb24oe1xyXG4gICAgICAgICAgZXh0OiAnLmd6JyxcclxuICAgICAgICAgIGRlbGV0ZU9yaWdpbkZpbGU6IGZhbHNlXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmIChjb21wcmVzc0xpc3QuaW5jbHVkZXMoJ2Jyb3RsaScpKSB7XHJcbiAgICAgIHBsdWdpbi5wdXNoKFxyXG4gICAgICAgIGNvbXByZXNzaW9uKHtcclxuICAgICAgICAgIGV4dDogJy5icicsXHJcbiAgICAgICAgICBhbGdvcml0aG06ICdicm90bGlDb21wcmVzcycsXHJcbiAgICAgICAgICBkZWxldGVPcmlnaW5GaWxlOiBmYWxzZVxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBwbHVnaW47XHJcbn07XHJcbiIsICJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRTpcXFxcbmV3V2F5XFxcXEJhc2VGcm9udC10ZW1wbGF0ZVxcXFx2aXRlXFxcXHBsdWdpbnNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZmlsZW5hbWUgPSBcIkU6XFxcXG5ld1dheVxcXFxCYXNlRnJvbnQtdGVtcGxhdGVcXFxcdml0ZVxcXFxwbHVnaW5zXFxcXHNldHVwLWV4dGVuZC50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vRTovbmV3V2F5L0Jhc2VGcm9udC10ZW1wbGF0ZS92aXRlL3BsdWdpbnMvc2V0dXAtZXh0ZW5kLnRzXCI7aW1wb3J0IHNldHVwRXh0ZW5kIGZyb20gJ3VucGx1Z2luLXZ1ZS1zZXR1cC1leHRlbmQtcGx1cy92aXRlJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0ICgpID0+IHtcclxuICByZXR1cm4gc2V0dXBFeHRlbmQoe30pO1xyXG59O1xyXG4iLCAiY29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUgPSBcIkU6XFxcXG5ld1dheVxcXFxCYXNlRnJvbnQtdGVtcGxhdGVcXFxcdml0ZVxcXFxwbHVnaW5zXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJFOlxcXFxuZXdXYXlcXFxcQmFzZUZyb250LXRlbXBsYXRlXFxcXHZpdGVcXFxccGx1Z2luc1xcXFxpMThuLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9FOi9uZXdXYXkvQmFzZUZyb250LXRlbXBsYXRlL3ZpdGUvcGx1Z2lucy9pMThuLnRzXCI7aW1wb3J0IFZ1ZUkxOG5QbHVnaW4gZnJvbSAnQGludGxpZnkvdW5wbHVnaW4tdnVlLWkxOG4vdml0ZSc7XHJcbmV4cG9ydCBkZWZhdWx0IChwYXRoOiBhbnkpID0+IHtcclxuICByZXR1cm4gVnVlSTE4blBsdWdpbih7XHJcbiAgICBpbmNsdWRlOiBbcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uLy4uL3NyYy9sYW5nLyoqLmpzb24nKV1cclxuICB9KTtcclxufTtcclxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUE0USxTQUFnQyxTQUFTLG9CQUFvQjtBQUN6VSxPQUFPLGdDQUFnQzs7O0FDRG9RLE9BQU8sU0FBUzs7O0FDQWQsT0FBTyxZQUFZO0FBRWhVLElBQU8saUJBQVEsTUFBTTtBQUNuQixTQUFP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LFlBQ2YsVUFBVSxDQUFDLEdBQUc7QUFBQSxZQUNkLGNBQWM7QUFBQSxZQUNkLGtCQUFrQjtBQUFBLFlBQ2xCLG1CQUFtQixDQUFDO0FBQUEsWUFDcEIsZUFBZTtBQUFBLFlBQ2YsWUFBWTtBQUFBLFlBQ1osU0FBUztBQUFBLFlBQ1QsU0FBUyxDQUFDLGtDQUFrQywyQ0FBMkM7QUFBQSxZQUN2RixXQUFXO0FBQUEsVUFDYixDQUFDO0FBQUEsUUFDSDtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUE7QUFBQSxJQUVBLGNBQWM7QUFBQSxNQUNaLFNBQVM7QUFBQSxRQUNQO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNGLENBQUM7IiwKICAibmFtZXMiOiBbInBhdGgiLCAiRWxlbWVudFBsdXNSZXNvbHZlciIsICJJY29uc1Jlc29sdmVyIiwgIl9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lIiwgInBhdGgiLCAiRWxlbWVudFBsdXNSZXNvbHZlciIsICJJY29uc1Jlc29sdmVyIiwgIl9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lIiwgIl9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lIiwgInBhdGgiLCAiX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUiLCAiX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUiLCAicGF0aCIsICJfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSIsICJwYXRoIiwgIl9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lIiwgInBhdGgiLCAiX192aXRlX2luamVjdGVkX29yaWdpbmFsX2Rpcm5hbWUiXQp9Cg==