From dd82c3f3a1c941b7305c5df8f5c1d7a5a959ff3d Mon Sep 17 00:00:00 2001 From: lijun Date: Mon, 25 Nov 2024 23:09:51 +0800 Subject: [PATCH] update code --- src/views/demo/api/apifox.vue | 27 -- src/views/demo/api/knife4j.vue | 27 -- src/views/demo/api/swagger.vue | 27 -- src/views/demo/curd/config/add.ts | 146 -------- src/views/demo/curd/config/content.ts | 70 ---- src/views/demo/curd/config/content2.ts | 111 ------ src/views/demo/curd/config/edit.ts | 146 -------- src/views/demo/curd/config/search.ts | 83 ----- src/views/demo/curd/index.vue | 111 ------ src/views/demo/dict.vue | 32 -- src/views/demo/icon-selector.vue | 17 - src/views/demo/icons.vue | 156 -------- src/views/demo/internal-doc.vue | 28 -- .../children/children/level3-1.vue | 5 - .../children/children/level3-2.vue | 5 - .../demo/multi-level/children/level2.vue | 7 - src/views/demo/multi-level/level1.vue | 15 - src/views/demo/signature.vue | 186 ---------- src/views/demo/table-select/config/select.ts | 112 ------ src/views/demo/table-select/index.vue | 51 --- src/views/demo/upload.vue | 37 -- src/views/demo/wang-editor.vue | 19 - src/views/demo/websocket.vue | 268 -------------- src/views/flow/demo/index.vue | 198 ----------- src/views/flow/demo/nodePanel.vue | 87 ----- src/views/split/split1/index.vue | 25 -- ....timestamp-1727540592450-36bdd3fd31ab5.mjs | 336 ------------------ 27 files changed, 2332 deletions(-) delete mode 100644 src/views/demo/api/apifox.vue delete mode 100644 src/views/demo/api/knife4j.vue delete mode 100644 src/views/demo/api/swagger.vue delete mode 100644 src/views/demo/curd/config/add.ts delete mode 100644 src/views/demo/curd/config/content.ts delete mode 100644 src/views/demo/curd/config/content2.ts delete mode 100644 src/views/demo/curd/config/edit.ts delete mode 100644 src/views/demo/curd/config/search.ts delete mode 100644 src/views/demo/curd/index.vue delete mode 100644 src/views/demo/dict.vue delete mode 100644 src/views/demo/icon-selector.vue delete mode 100644 src/views/demo/icons.vue delete mode 100644 src/views/demo/internal-doc.vue delete mode 100644 src/views/demo/multi-level/children/children/level3-1.vue delete mode 100644 src/views/demo/multi-level/children/children/level3-2.vue delete mode 100644 src/views/demo/multi-level/children/level2.vue delete mode 100644 src/views/demo/multi-level/level1.vue delete mode 100644 src/views/demo/signature.vue delete mode 100644 src/views/demo/table-select/config/select.ts delete mode 100644 src/views/demo/table-select/index.vue delete mode 100644 src/views/demo/upload.vue delete mode 100644 src/views/demo/wang-editor.vue delete mode 100644 src/views/demo/websocket.vue delete mode 100644 src/views/flow/demo/index.vue delete mode 100644 src/views/flow/demo/nodePanel.vue delete mode 100644 src/views/split/split1/index.vue delete mode 100644 vite.config.ts.timestamp-1727540592450-36bdd3fd31ab5.mjs diff --git a/src/views/demo/api/apifox.vue b/src/views/demo/api/apifox.vue deleted file mode 100644 index e625213..0000000 --- a/src/views/demo/api/apifox.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - - diff --git a/src/views/demo/api/knife4j.vue b/src/views/demo/api/knife4j.vue deleted file mode 100644 index 4929cc6..0000000 --- a/src/views/demo/api/knife4j.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - - diff --git a/src/views/demo/api/swagger.vue b/src/views/demo/api/swagger.vue deleted file mode 100644 index dd6dc9d..0000000 --- a/src/views/demo/api/swagger.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - - diff --git a/src/views/demo/curd/config/add.ts b/src/views/demo/curd/config/add.ts deleted file mode 100644 index 45be0c4..0000000 --- a/src/views/demo/curd/config/add.ts +++ /dev/null @@ -1,146 +0,0 @@ -import UserAPI from "@/api/user"; -import type { UserForm } from "@/api/user/model"; -import type { IModalConfig } from "@/components/PageModal/index.vue"; - -const modalConfig: IModalConfig = { - pageName: "sys:user", - dialog: { - title: "新增用户", - width: 800, - draggable: true, - }, - form: { - labelWidth: 100, - }, - formAction: UserAPI.add, - beforeSubmit(data) { - console.log("提交之前处理", data); - }, - formItems: [ - { - label: "用户名", - prop: "username", - rules: [{ required: true, message: "用户名不能为空", trigger: "blur" }], - type: "input", - attrs: { - placeholder: "请输入用户名", - }, - }, - { - label: "用户昵称", - prop: "nickname", - rules: [{ required: true, message: "用户昵称不能为空", trigger: "blur" }], - type: "input", - attrs: { - placeholder: "请输入用户昵称", - }, - }, - { - label: "所属部门", - prop: "deptId", - rules: [{ required: true, message: "所属部门不能为空", trigger: "blur" }], - type: "tree-select", - attrs: { - placeholder: "请选择所属部门", - data: [ - { - value: 1, - label: "研筑科技", - children: [ - { - value: 2, - label: "研发部门", - }, - { - value: 3, - label: "测试部门", - }, - ], - }, - ], - filterable: true, - "check-strictly": true, - "render-after-expand": false, - }, - }, - { - type: "select", - label: "性别", - prop: "gender", - attrs: { - placeholder: "请选择", - }, - options: [ - { label: "男", value: 1 }, - { label: "女", value: 2 }, - { label: "未知", value: 0 }, - ], - }, - { - label: "角色", - prop: "roleIds", - rules: [{ required: true, message: "用户角色不能为空", trigger: "blur" }], - type: "select", - attrs: { - placeholder: "请选择", - multiple: true, - }, - options: [ - { label: "系统管理员", value: 2 }, - { label: "系统管理员1", value: 4 }, - { label: "系统管理员2", value: 5 }, - { label: "系统管理员3", value: 6 }, - { label: "系统管理员4", value: 7 }, - { label: "系统管理员5", value: 8 }, - { label: "系统管理员6", value: 9 }, - { label: "系统管理员7", value: 10 }, - { label: "系统管理员8", value: 11 }, - { label: "访问游客", value: 3 }, - ], - }, - { - type: "input", - label: "手机号码", - prop: "mobile", - rules: [ - { - pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, - message: "请输入正确的手机号码", - trigger: "blur", - }, - ], - attrs: { - placeholder: "请输入手机号码", - maxlength: 11, - }, - }, - { - label: "邮箱", - prop: "email", - rules: [ - { - pattern: /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/, - message: "请输入正确的邮箱地址", - trigger: "blur", - }, - ], - type: "input", - attrs: { - placeholder: "请输入邮箱", - maxlength: 50, - }, - }, - { - label: "状态", - prop: "status", - type: "radio", - options: [ - { label: "正常", value: 1 }, - { label: "禁用", value: 0 }, - ], - initialValue: 1, - }, - ], -}; - -export default modalConfig; diff --git a/src/views/demo/curd/config/content.ts b/src/views/demo/curd/config/content.ts deleted file mode 100644 index ddbb51d..0000000 --- a/src/views/demo/curd/config/content.ts +++ /dev/null @@ -1,70 +0,0 @@ -import UserAPI from "@/api/user"; -import type { UserQuery } from "@/api/user/model"; -import type { IContentConfig } from "@/components/PageContent/index.vue"; - -const contentConfig: IContentConfig = { - pageName: "sys:user", - table: { - border: true, - highlightCurrentRow: true, - }, - indexAction: function (params) { - if ("createAt" in params) { - const createAt = params.createAt as string[]; - params.startTime = createAt[0]; - params.endTime = createAt[1]; - delete params.createAt; - } - return UserAPI.getPage(params); - }, - deleteAction: UserAPI.deleteByIds, - exportAction: UserAPI.export, - pk: "id", - toolbar: [ - "add", - "delete", - "export", - { - name: "import", - icon: "upload", - text: "导入", - auth: "import", - }, - ], - cols: [ - { type: "selection", width: 50, align: "center" }, - { label: "编号", align: "center", prop: "id", width: 100, show: false }, - { label: "用户名", align: "center", prop: "username" }, - { label: "头像", align: "center", prop: "avatar", templet: "image" }, - { label: "用户昵称", align: "center", prop: "nickname", width: 120 }, - { label: "性别", align: "center", prop: "genderLabel", width: 100 }, - { label: "部门", align: "center", prop: "deptName", width: 120 }, - { label: "手机号码", align: "center", prop: "mobile", width: 120 }, - { - label: "状态", - align: "center", - prop: "status", - templet: "custom", - slotName: "status", - }, - { label: "创建时间", align: "center", prop: "createTime", width: 180 }, - { - label: "操作", - fixed: "right", - width: 220, - templet: "tool", - operat: [ - { - name: "reset_pwd", - auth: "password:reset", - icon: "refresh-left", - text: "重置密码", - }, - "edit", - "delete", - ], - }, - ], -}; - -export default contentConfig; diff --git a/src/views/demo/curd/config/content2.ts b/src/views/demo/curd/config/content2.ts deleted file mode 100644 index b4b02c7..0000000 --- a/src/views/demo/curd/config/content2.ts +++ /dev/null @@ -1,111 +0,0 @@ -import type { IContentConfig } from "@/components/PageContent/index.vue"; - -const contentConfig: IContentConfig = { - pageName: "sys:user", - table: { - showOverflowTooltip: true, - }, - indexAction: function (params) { - // console.log("indexAction:", params); - return Promise.resolve({ - total: 2, - list: [ - { - id: 1, - username: "tom", - avatar: - "https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif", - percent: 99, - price: 10, - url: "https://www.baidu.com", - icon: "el-icon-setting", - gender: 1, - status: 1, - status2: 1, - createTime: 1715647982437, - }, - { - id: 2, - username: "jerry", - avatar: - "https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif", - percent: 88, - price: 999, - url: "https://www.google.com", - icon: "el-icon-user", - gender: 0, - status: 0, - status2: 0, - createTime: 1715648977426, - }, - ], - }); - }, - modifyAction(data) { - // console.log("modifyAction:", data); - return Promise.resolve(null); - }, - cols: [ - { type: "selection", width: 50, align: "center" }, - { label: "ID", align: "center", prop: "id", show: false }, - { label: "用户名", align: "center", prop: "username" }, - { label: "图片", align: "center", prop: "avatar", templet: "image" }, - { - label: "百分比", - align: "center", - prop: "percent", - templet: "percent", - }, - { - label: "价格", - align: "center", - prop: "price", - templet: "price", - priceFormat: "$", - }, - { label: "链接", align: "center", prop: "url", width: 180, templet: "url" }, - { label: "图标", align: "center", prop: "icon", templet: "icon" }, - { - label: "列表值", - align: "center", - prop: "gender", - templet: "list", - selectList: { 0: "女", 1: "男" }, - }, - { - label: "自定义", - align: "center", - prop: "status", - templet: "custom", - slotName: "status", - }, - { - label: "状态", - align: "center", - prop: "status2", - templet: "switch", - activeValue: 1, - inactiveValue: 0, - activeText: "启用", - inactiveText: "禁用", - }, - { - label: "创建时间", - align: "center", - prop: "createTime", - minWidth: 120, - templet: "date", - dateFormat: "YYYY/MM/DD HH:mm:ss", - }, - { - label: "操作", - align: "center", - fixed: "right", - width: 150, - templet: "tool", - operat: ["edit", "delete"], - }, - ], -}; - -export default contentConfig; diff --git a/src/views/demo/curd/config/edit.ts b/src/views/demo/curd/config/edit.ts deleted file mode 100644 index c5e7204..0000000 --- a/src/views/demo/curd/config/edit.ts +++ /dev/null @@ -1,146 +0,0 @@ -import UserAPI from "@/api/user"; -import type { UserForm } from "@/api/user/model"; -import type { IModalConfig } from "@/components/PageModal/index.vue"; - -const modalConfig: IModalConfig = { - pageName: "sys:user", - pk: "id", - component: "drawer", - drawer: { - title: "修改用户", - size: 300, - }, - formAction: function (data) { - return UserAPI.update(data.id as number, data); - }, - beforeSubmit(data) { - console.log("提交之前处理", data); - }, - formItems: [ - { - label: "用户名", - prop: "username", - rules: [{ required: true, message: "用户名不能为空", trigger: "blur" }], - type: "input", - attrs: { - placeholder: "请输入用户名", - readonly: true, - }, - }, - { - label: "用户昵称", - prop: "nickname", - rules: [{ required: true, message: "用户昵称不能为空", trigger: "blur" }], - type: "input", - attrs: { - placeholder: "请输入用户昵称", - }, - }, - { - label: "所属部门", - prop: "deptId", - rules: [{ required: true, message: "所属部门不能为空", trigger: "blur" }], - type: "tree-select", - attrs: { - placeholder: "请选择所属部门", - data: [ - { - value: 1, - label: "研筑科技", - children: [ - { - value: 2, - label: "研发部门", - }, - { - value: 3, - label: "测试部门", - }, - ], - }, - ], - filterable: true, - "check-strictly": true, - "render-after-expand": false, - }, - }, - { - type: "select", - label: "性别", - prop: "gender", - attrs: { - placeholder: "请选择", - }, - options: [ - { label: "男", value: 1 }, - { label: "女", value: 2 }, - { label: "未知", value: 0 }, - ], - }, - { - label: "角色", - prop: "roleIds", - rules: [{ required: true, message: "用户角色不能为空", trigger: "blur" }], - type: "select", - attrs: { - placeholder: "请选择", - multiple: true, - }, - options: [ - { label: "系统管理员", value: 2 }, - { label: "系统管理员1", value: 4 }, - { label: "系统管理员2", value: 5 }, - { label: "系统管理员3", value: 6 }, - { label: "系统管理员4", value: 7 }, - { label: "系统管理员5", value: 8 }, - { label: "系统管理员6", value: 9 }, - { label: "系统管理员7", value: 10 }, - { label: "系统管理员8", value: 11 }, - { label: "访问游客", value: 3 }, - ], - }, - { - type: "input", - label: "手机号码", - prop: "mobile", - rules: [ - { - pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, - message: "请输入正确的手机号码", - trigger: "blur", - }, - ], - attrs: { - placeholder: "请输入手机号码", - maxlength: 11, - }, - }, - { - label: "邮箱", - prop: "email", - rules: [ - { - pattern: /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/, - message: "请输入正确的邮箱地址", - trigger: "blur", - }, - ], - type: "input", - attrs: { - placeholder: "请输入邮箱", - maxlength: 50, - }, - }, - { - label: "状态", - prop: "status", - type: "radio", - options: [ - { label: "正常", value: 1 }, - { label: "禁用", value: 0 }, - ], - }, - ], -}; - -export default modalConfig; diff --git a/src/views/demo/curd/config/search.ts b/src/views/demo/curd/config/search.ts deleted file mode 100644 index f018454..0000000 --- a/src/views/demo/curd/config/search.ts +++ /dev/null @@ -1,83 +0,0 @@ -import type { ISearchConfig } from "@/components/PageSearch/index.vue"; - -const searchConfig: ISearchConfig = { - pageName: "sys:user", - formItems: [ - { - type: "input", - label: "关键字", - prop: "keywords", - attrs: { - placeholder: "用户名/昵称/手机号", - clearable: true, - style: { - width: "200px", - }, - }, - }, - { - type: "tree-select", - label: "部门", - prop: "deptId", - attrs: { - placeholder: "请选择", - data: [ - { - value: 1, - label: "研筑科技", - children: [ - { - value: 2, - label: "研发部门", - }, - { - value: 3, - label: "测试部门", - }, - ], - }, - ], - filterable: true, - "check-strictly": true, - "render-after-expand": false, - clearable: true, - style: { - width: "150px", - }, - }, - }, - { - type: "select", - label: "状态", - prop: "status", - attrs: { - placeholder: "全部", - clearable: true, - style: { - width: "100px", - }, - }, - options: [ - { label: "启用", value: 1 }, - { label: "禁用", value: 0 }, - ], - }, - { - type: "date-picker", - label: "创建时间", - prop: "createAt", - attrs: { - type: "daterange", - "range-separator": "~", - "start-placeholder": "开始时间", - "end-placeholder": "截止时间", - "value-format": "YYYY-MM-DD", - style: { - width: "240px", - }, - }, - }, - ], -}; - -export default searchConfig; diff --git a/src/views/demo/curd/index.vue b/src/views/demo/curd/index.vue deleted file mode 100644 index e5cea7d..0000000 --- a/src/views/demo/curd/index.vue +++ /dev/null @@ -1,111 +0,0 @@ - - - diff --git a/src/views/demo/dict.vue b/src/views/demo/dict.vue deleted file mode 100644 index fcb6e06..0000000 --- a/src/views/demo/dict.vue +++ /dev/null @@ -1,32 +0,0 @@ - - - - diff --git a/src/views/demo/icon-selector.vue b/src/views/demo/icon-selector.vue deleted file mode 100644 index 6a419e2..0000000 --- a/src/views/demo/icon-selector.vue +++ /dev/null @@ -1,17 +0,0 @@ - - - - diff --git a/src/views/demo/icons.vue b/src/views/demo/icons.vue deleted file mode 100644 index 5fd397f..0000000 --- a/src/views/demo/icons.vue +++ /dev/null @@ -1,156 +0,0 @@ - - - - - diff --git a/src/views/demo/internal-doc.vue b/src/views/demo/internal-doc.vue deleted file mode 100644 index df51bac..0000000 --- a/src/views/demo/internal-doc.vue +++ /dev/null @@ -1,28 +0,0 @@ - - diff --git a/src/views/demo/multi-level/children/children/level3-1.vue b/src/views/demo/multi-level/children/children/level3-1.vue deleted file mode 100644 index 888f58e..0000000 --- a/src/views/demo/multi-level/children/children/level3-1.vue +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/src/views/demo/multi-level/children/children/level3-2.vue b/src/views/demo/multi-level/children/children/level3-2.vue deleted file mode 100644 index a99c98e..0000000 --- a/src/views/demo/multi-level/children/children/level3-2.vue +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/src/views/demo/multi-level/children/level2.vue b/src/views/demo/multi-level/children/level2.vue deleted file mode 100644 index abcc3a7..0000000 --- a/src/views/demo/multi-level/children/level2.vue +++ /dev/null @@ -1,7 +0,0 @@ - diff --git a/src/views/demo/multi-level/level1.vue b/src/views/demo/multi-level/level1.vue deleted file mode 100644 index b26146d..0000000 --- a/src/views/demo/multi-level/level1.vue +++ /dev/null @@ -1,15 +0,0 @@ - diff --git a/src/views/demo/signature.vue b/src/views/demo/signature.vue deleted file mode 100644 index ce5fb4a..0000000 --- a/src/views/demo/signature.vue +++ /dev/null @@ -1,186 +0,0 @@ - - - diff --git a/src/views/demo/table-select/config/select.ts b/src/views/demo/table-select/config/select.ts deleted file mode 100644 index 4ef66b5..0000000 --- a/src/views/demo/table-select/config/select.ts +++ /dev/null @@ -1,112 +0,0 @@ -import UserAPI from "@/api/user"; -import type { ISelectConfig } from "@/components/TableSelect/index.vue"; - -const selectConfig: ISelectConfig = { - pk: "id", - width: "70%", - placeholder: "请选择用户", - formItems: [ - { - type: "input", - label: "关键字", - prop: "keywords", - attrs: { - placeholder: "用户名/昵称/手机号", - clearable: true, - style: { - width: "200px", - }, - }, - }, - { - type: "tree-select", - label: "部门", - prop: "deptId", - attrs: { - placeholder: "请选择", - data: [ - { - value: 1, - label: "研筑科技", - children: [ - { - value: 2, - label: "研发部门", - }, - { - value: 3, - label: "测试部门", - }, - ], - }, - ], - filterable: true, - "check-strictly": true, - "render-after-expand": false, - clearable: true, - style: { - width: "150px", - }, - }, - }, - { - type: "select", - label: "状态", - prop: "status", - attrs: { - placeholder: "全部", - clearable: true, - style: { - width: "100px", - }, - }, - options: [ - { label: "启用", value: 1 }, - { label: "禁用", value: 0 }, - ], - }, - { - type: "date-picker", - label: "创建时间", - prop: "createAt", - attrs: { - type: "daterange", - "range-separator": "~", - "start-placeholder": "开始时间", - "end-placeholder": "截止时间", - "value-format": "YYYY-MM-DD", - style: { - width: "240px", - }, - }, - }, - ], - indexAction: function (params) { - if ("createAt" in params) { - const createAt = params.createAt as string[]; - params.startTime = createAt[0]; - params.endTime = createAt[1]; - delete params.createAt; - } - return UserAPI.getPage(params); - }, - tableColumns: [ - { type: "selection", width: 50, align: "center" }, - { label: "编号", align: "center", prop: "id", width: 100 }, - { label: "用户名", align: "center", prop: "username" }, - { label: "用户昵称", align: "center", prop: "nickname", width: 120 }, - { label: "性别", align: "center", prop: "genderLabel", width: 100 }, - { label: "部门", align: "center", prop: "deptName", width: 120 }, - { label: "手机号码", align: "center", prop: "mobile", width: 120 }, - { - label: "状态", - align: "center", - prop: "status", - templet: "custom", - slotName: "status", - }, - { label: "创建时间", align: "center", prop: "createTime", width: 180 }, - ], -}; - -export default selectConfig; diff --git a/src/views/demo/table-select/index.vue b/src/views/demo/table-select/index.vue deleted file mode 100644 index f3d6275..0000000 --- a/src/views/demo/table-select/index.vue +++ /dev/null @@ -1,51 +0,0 @@ - - - - diff --git a/src/views/demo/upload.vue b/src/views/demo/upload.vue deleted file mode 100644 index 7c8051a..0000000 --- a/src/views/demo/upload.vue +++ /dev/null @@ -1,37 +0,0 @@ - - - diff --git a/src/views/demo/wang-editor.vue b/src/views/demo/wang-editor.vue deleted file mode 100644 index d7ff4bb..0000000 --- a/src/views/demo/wang-editor.vue +++ /dev/null @@ -1,19 +0,0 @@ - - - - diff --git a/src/views/demo/websocket.vue b/src/views/demo/websocket.vue deleted file mode 100644 index 74eb67b..0000000 --- a/src/views/demo/websocket.vue +++ /dev/null @@ -1,268 +0,0 @@ - - - - - - diff --git a/src/views/flow/demo/index.vue b/src/views/flow/demo/index.vue deleted file mode 100644 index 03532eb..0000000 --- a/src/views/flow/demo/index.vue +++ /dev/null @@ -1,198 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/views/flow/demo/nodePanel.vue b/src/views/flow/demo/nodePanel.vue deleted file mode 100644 index 2d20664..0000000 --- a/src/views/flow/demo/nodePanel.vue +++ /dev/null @@ -1,87 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/views/split/split1/index.vue b/src/views/split/split1/index.vue deleted file mode 100644 index a6013a1..0000000 --- a/src/views/split/split1/index.vue +++ /dev/null @@ -1,25 +0,0 @@ - - - - \ No newline at end of file diff --git a/vite.config.ts.timestamp-1727540592450-36bdd3fd31ab5.mjs b/vite.config.ts.timestamp-1727540592450-36bdd3fd31ab5.mjs deleted file mode 100644 index f2eed29..0000000 --- a/vite.config.ts.timestamp-1727540592450-36bdd3fd31ab5.mjs +++ /dev/null @@ -1,336 +0,0 @@ -// vite.config.ts -import vue from "file:///D:/hahaprj/dapeng/v4/xjtuAi/AIManage/node_modules/@vitejs/plugin-vue/dist/index.mjs"; -import vueJsx from "file:///D:/hahaprj/dapeng/v4/xjtuAi/AIManage/node_modules/@vitejs/plugin-vue-jsx/dist/index.mjs"; -import { loadEnv, defineConfig } from "file:///D:/hahaprj/dapeng/v4/xjtuAi/AIManage/node_modules/vite/dist/node/index.js"; -import AutoImport from "file:///D:/hahaprj/dapeng/v4/xjtuAi/AIManage/node_modules/unplugin-auto-import/dist/vite.js"; -import Components from "file:///D:/hahaprj/dapeng/v4/xjtuAi/AIManage/node_modules/unplugin-vue-components/dist/vite.js"; -import { ElementPlusResolver } from "file:///D:/hahaprj/dapeng/v4/xjtuAi/AIManage/node_modules/unplugin-vue-components/dist/resolvers.js"; -import Icons from "file:///D:/hahaprj/dapeng/v4/xjtuAi/AIManage/node_modules/unplugin-icons/dist/vite.js"; -import IconsResolver from "file:///D:/hahaprj/dapeng/v4/xjtuAi/AIManage/node_modules/unplugin-icons/dist/resolver.js"; -import { createSvgIconsPlugin } from "file:///D:/hahaprj/dapeng/v4/xjtuAi/AIManage/node_modules/vite-plugin-svg-icons/dist/index.mjs"; -import mockDevServerPlugin from "file:///D:/hahaprj/dapeng/v4/xjtuAi/AIManage/node_modules/vite-plugin-mock-dev-server/dist/index.js"; -import { terser } from "file:///D:/hahaprj/dapeng/v4/xjtuAi/AIManage/node_modules/rollup-plugin-terser/rollup-plugin-terser.mjs"; -import UnoCSS from "file:///D:/hahaprj/dapeng/v4/xjtuAi/AIManage/node_modules/unocss/dist/vite.mjs"; -import { resolve } from "path"; - -// package.json -var name = "aimanage"; -var version = "1.0.0"; -var dependencies = { - "@element-plus/icons-vue": "^2.3.1", - "@logicflow/core": "^1.2.27", - "@logicflow/extension": "^1.2.27", - "@vueuse/core": "^10.9.0", - "@wangeditor/editor": "^5.1.23", - "@wangeditor/editor-for-vue": "5.1.10", - "animate.css": "^4.1.1", - axios: "^1.6.8", - clipboard: "^2.0.11", - color: "^4.2.3", - echarts: "^5.5.0", - "element-plus": "^2.7.2", - html2canvas: "^1.4.1", - "js-md5": "^0.8.3", - "json-editor-vue3": "^1.1.1", - "lodash-es": "^4.17.21", - net: "^1.0.2", - nprogress: "^0.2.0", - "path-browserify": "^1.0.1", - "path-to-regexp": "^6.2.2", - pinia: "^2.1.7", - "sockjs-client": "1.6.1", - sortablejs: "^1.15.2", - stompjs: "^2.3.3", - vue: "^3.4.26", - "vue-i18n": "9.9.1", - "vue-router": "^4.3.2", - "vue3-json-viewer": "^2.2.2", - xlsx: "^0.18.5" -}; -var devDependencies = { - "@commitlint/cli": "^18.6.1", - "@commitlint/config-conventional": "^18.6.3", - "@iconify-json/ep": "^1.1.15", - "@types/color": "^3.0.6", - "@types/lodash": "^4.17.1", - "@types/node": "^20.12.8", - "@types/nprogress": "^0.2.3", - "@types/path-browserify": "^1.0.2", - "@types/sockjs-client": "^1.5.4", - "@types/sortablejs": "^1.15.8", - "@types/stompjs": "^2.3.9", - "@typescript-eslint/eslint-plugin": "^7.8.0", - "@typescript-eslint/parser": "^7.8.0", - "@vitejs/plugin-vue": "^5.0.4", - "@vitejs/plugin-vue-jsx": "^3.1.0", - autoprefixer: "^10.4.19", - commitizen: "^4.3.0", - "cz-git": "^1.9.1", - eslint: "^8.57.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-prettier": "^5.1.3", - "eslint-plugin-vue": "^9.25.0", - "fast-glob": "^3.3.2", - husky: "^9.0.11", - "lint-staged": "^15.2.2", - postcss: "^8.4.38", - "postcss-html": "^1.6.0", - "postcss-scss": "^4.0.9", - prettier: "^3.2.5", - "rollup-plugin-terser": "^7.0.2", - sass: "^1.76.0", - stylelint: "^16.5.0", - "stylelint-config-html": "^1.1.0", - "stylelint-config-recess-order": "^4.6.0", - "stylelint-config-recommended-scss": "^14.0.0", - "stylelint-config-recommended-vue": "^1.5.0", - "stylelint-config-standard": "^36.0.0", - terser: "^5.31.0", - typescript: "^5.4.5", - unocss: "^0.58.9", - "unplugin-auto-import": "^0.17.5", - "unplugin-icons": "^0.18.5", - "unplugin-vue-components": "^0.26.0", - vite: "^5.2.11", - "vite-plugin-mock-dev-server": "^1.5.0", - "vite-plugin-svg-icons": "^2.0.1", - "vite-plugin-vue-devtools": "^7.1.3", - "vue-tsc": "^2.0.16" -}; -var engines = { - node: ">=18.0.0" -}; - -// vite.config.ts -import VueDevTools from "file:///D:/hahaprj/dapeng/v4/xjtuAi/AIManage/node_modules/vite-plugin-vue-devtools/dist/vite.mjs"; -var __vite_injected_original_dirname = "D:\\hahaprj\\dapeng\\v4\\xjtuAi\\AIManage"; -var __APP_INFO__ = { - pkg: { name, version, engines, dependencies, devDependencies }, - buildTimestamp: Date.now() -}; -var pathSrc = resolve(__vite_injected_original_dirname, "src"); -var vite_config_default = defineConfig(({ mode }) => { - const env = loadEnv(mode, process.cwd()); - return { - resolve: { - alias: { - "@": pathSrc - } - }, - base: "./", - css: { - // CSS 预处理器 - preprocessorOptions: { - // 定义全局 SCSS 变量 - scss: { - javascriptEnabled: true, - additionalData: ` - @use "@/styles/variables.scss" as *; - ` - } - } - }, - server: { - // 允许IP访问 - host: "0.0.0.0", - // 应用端口 (默认:3000) - port: Number(env.VITE_APP_PORT), - // 运行是否自动打开浏览器 - open: true, - proxy: { - /** 代理前缀为 /dev-api 的请求 */ - [env.VITE_APP_BASE_API]: { - changeOrigin: true, - // 接口地址 - target: env.VITE_APP_API_URL, - rewrite: (path) => path.replace(new RegExp("^" + env.VITE_APP_BASE_API), "") - } - } - }, - plugins: [ - vue(), - // jsx、tsx语法支持 - vueJsx(), - // MOCK 服务 - env.VITE_MOCK_DEV_SERVER === "true" ? mockDevServerPlugin() : null, - UnoCSS({ - hmrTopLevelAwait: false - }), - // 自动导入参考: https://github.com/sxzz/element-plus-best-practices/blob/main/vite.config.ts - AutoImport({ - // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等 - imports: ["vue", "@vueuse/core", "pinia", "vue-router", "vue-i18n"], - resolvers: [ - // 自动导入 Element Plus 相关函数,如:ElMessage, ElMessageBox... (带样式) - ElementPlusResolver(), - // 自动导入图标组件 - IconsResolver({}) - ], - eslintrc: { - // 是否自动生成 eslint 规则,建议生成之后设置 false - enabled: false, - // 指定自动导入函数 eslint 规则的文件 - filepath: "./.eslintrc-auto-import.json", - globalsPropValue: true - }, - // 是否在 vue 模板中自动导入 - vueTemplate: true, - // 指定自动导入函数TS类型声明文件路径 (false:关闭自动生成) - dts: false - // dts: "src/typings/auto-imports.d.ts", - }), - Components({ - resolvers: [ - // 自动导入 Element Plus 组件 - ElementPlusResolver(), - // 自动注册图标组件 - IconsResolver({ - // element-plus图标库,其他图标库 https://icon-sets.iconify.design/ - enabledCollections: ["ep"] - }) - ], - // 指定自定义组件位置(默认:src/components) - dirs: ["src/components", "src/**/components"], - // 指定自动导入组件TS类型声明文件路径 (false:关闭自动生成) - dts: false - // dts: "src/typings/components.d.ts", - }), - Icons({ - // 自动安装图标库 - autoInstall: true - }), - createSvgIconsPlugin({ - // 指定需要缓存的图标文件夹 - iconDirs: [resolve(pathSrc, "assets/icons")], - // 指定symbolId格式 - symbolId: "icon-[dir]-[name]" - }), - VueDevTools({ - openInEditorHost: `http://localhost:${env.VITE_APP_PORT}` - }) - ], - // 预加载项目必需的组件 - optimizeDeps: { - include: [ - "vue", - "vue-router", - "pinia", - "axios", - "@vueuse/core", - "sortablejs", - "path-to-regexp", - "echarts", - "@wangeditor/editor", - "@wangeditor/editor-for-vue", - "vue-i18n", - "path-browserify", - "element-plus/es/components/form/style/css", - "element-plus/es/components/form-item/style/css", - "element-plus/es/components/button/style/css", - "element-plus/es/components/input/style/css", - "element-plus/es/components/input-number/style/css", - "element-plus/es/components/switch/style/css", - "element-plus/es/components/upload/style/css", - "element-plus/es/components/menu/style/css", - "element-plus/es/components/col/style/css", - "element-plus/es/components/icon/style/css", - "element-plus/es/components/row/style/css", - "element-plus/es/components/tag/style/css", - "element-plus/es/components/dialog/style/css", - "element-plus/es/components/loading/style/css", - "element-plus/es/components/radio/style/css", - "element-plus/es/components/radio-group/style/css", - "element-plus/es/components/popover/style/css", - "element-plus/es/components/scrollbar/style/css", - "element-plus/es/components/tooltip/style/css", - "element-plus/es/components/dropdown/style/css", - "element-plus/es/components/dropdown-menu/style/css", - "element-plus/es/components/dropdown-item/style/css", - "element-plus/es/components/sub-menu/style/css", - "element-plus/es/components/menu-item/style/css", - "element-plus/es/components/divider/style/css", - "element-plus/es/components/card/style/css", - "element-plus/es/components/link/style/css", - "element-plus/es/components/breadcrumb/style/css", - "element-plus/es/components/breadcrumb-item/style/css", - "element-plus/es/components/table/style/css", - "element-plus/es/components/tree-select/style/css", - "element-plus/es/components/table-column/style/css", - "element-plus/es/components/select/style/css", - "element-plus/es/components/option/style/css", - "element-plus/es/components/pagination/style/css", - "element-plus/es/components/tree/style/css", - "element-plus/es/components/alert/style/css", - "element-plus/es/components/radio-button/style/css", - "element-plus/es/components/checkbox-group/style/css", - "element-plus/es/components/checkbox/style/css", - "element-plus/es/components/tabs/style/css", - "element-plus/es/components/tab-pane/style/css", - "element-plus/es/components/rate/style/css", - "element-plus/es/components/date-picker/style/css", - "element-plus/es/components/notification/style/css", - "element-plus/es/components/image/style/css", - "element-plus/es/components/statistic/style/css", - "element-plus/es/components/watermark/style/css", - "element-plus/es/components/config-provider/style/css", - "element-plus/es/components/text/style/css", - "element-plus/es/components/drawer/style/css", - "element-plus/es/components/color-picker/style/css" - ] - }, - // 构建配置 - build: { - chunkSizeWarningLimit: 2e3, - // 消除打包大小超过500kb警告 - minify: "terser", - // Vite 2.6.x 以上需要配置 minify: "terser", terserOptions 才能生效 - terserOptions: { - compress: { - keep_infinity: true, - // 防止 Infinity 被压缩成 1/0,这可能会导致 Chrome 上的性能问题 - drop_console: true, - // 生产环境去除 console - drop_debugger: true - // 生产环境去除 debugger - }, - format: { - comments: false - // 删除注释 - } - }, - rollupOptions: { - plugins: [terser()], - output: { - // manualChunks: { - // "vue-i18n": ["vue-i18n"], - // }, - // 用于从入口点创建的块的打包输出格式[name]表示文件名,[hash]表示该文件内容hash值 - entryFileNames: "js/[name].[hash].js", - // 用于命名代码拆分时创建的共享块的输出命名 - chunkFileNames: "js/[name].[hash].js", - // 用于输出静态资源的命名,[ext]表示文件扩展名 - assetFileNames: (assetInfo) => { - const info = assetInfo.name.split("."); - let extType = info[info.length - 1]; - if (/\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/i.test(assetInfo.name)) { - extType = "media"; - } else if (/\.(png|jpe?g|gif|svg)(\?.*)?$/.test(assetInfo.name)) { - extType = "img"; - } else if (/\.(woff2?|eot|ttf|otf)(\?.*)?$/i.test(assetInfo.name)) { - extType = "fonts"; - } - return `${extType}/[name].[hash].[ext]`; - } - } - } - }, - define: { - __APP_INFO__: JSON.stringify(__APP_INFO__) - } - }; -}); -export { - vite_config_default as default -}; -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiLCAicGFja2FnZS5qc29uIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiRDpcXFxcaGFoYXByalxcXFxkYXBlbmdcXFxcdjRcXFxceGp0dUFpXFxcXEFJTWFuYWdlXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFxoYWhhcHJqXFxcXGRhcGVuZ1xcXFx2NFxcXFx4anR1QWlcXFxcQUlNYW5hZ2VcXFxcdml0ZS5jb25maWcudHNcIjtjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfaW1wb3J0X21ldGFfdXJsID0gXCJmaWxlOi8vL0Q6L2hhaGFwcmovZGFwZW5nL3Y0L3hqdHVBaS9BSU1hbmFnZS92aXRlLmNvbmZpZy50c1wiO2ltcG9ydCB2dWUgZnJvbSBcIkB2aXRlanMvcGx1Z2luLXZ1ZVwiO1xuaW1wb3J0IHZ1ZUpzeCBmcm9tIFwiQHZpdGVqcy9wbHVnaW4tdnVlLWpzeFwiO1xuaW1wb3J0IHsgVXNlckNvbmZpZywgQ29uZmlnRW52LCBsb2FkRW52LCBkZWZpbmVDb25maWcgfSBmcm9tIFwidml0ZVwiO1xuXG5pbXBvcnQgQXV0b0ltcG9ydCBmcm9tIFwidW5wbHVnaW4tYXV0by1pbXBvcnQvdml0ZVwiO1xuaW1wb3J0IENvbXBvbmVudHMgZnJvbSBcInVucGx1Z2luLXZ1ZS1jb21wb25lbnRzL3ZpdGVcIjtcbmltcG9ydCB7IEVsZW1lbnRQbHVzUmVzb2x2ZXIgfSBmcm9tIFwidW5wbHVnaW4tdnVlLWNvbXBvbmVudHMvcmVzb2x2ZXJzXCI7XG5pbXBvcnQgSWNvbnMgZnJvbSBcInVucGx1Z2luLWljb25zL3ZpdGVcIjtcbmltcG9ydCBJY29uc1Jlc29sdmVyIGZyb20gXCJ1bnBsdWdpbi1pY29ucy9yZXNvbHZlclwiO1xuXG5pbXBvcnQgeyBjcmVhdGVTdmdJY29uc1BsdWdpbiB9IGZyb20gXCJ2aXRlLXBsdWdpbi1zdmctaWNvbnNcIjtcbmltcG9ydCBtb2NrRGV2U2VydmVyUGx1Z2luIGZyb20gXCJ2aXRlLXBsdWdpbi1tb2NrLWRldi1zZXJ2ZXJcIjtcbmltcG9ydCB7IHRlcnNlciB9IGZyb20gXCJyb2xsdXAtcGx1Z2luLXRlcnNlclwiO1xuaW1wb3J0IFVub0NTUyBmcm9tIFwidW5vY3NzL3ZpdGVcIjtcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHtcbiAgbmFtZSxcbiAgdmVyc2lvbixcbiAgZW5naW5lcyxcbiAgZGVwZW5kZW5jaWVzLFxuICBkZXZEZXBlbmRlbmNpZXMsXG59IGZyb20gXCIuL3BhY2thZ2UuanNvblwiO1xuXG4vLyBodHRwczovL2RldnRvb2xzLW5leHQudnVlanMub3JnL1xuaW1wb3J0IFZ1ZURldlRvb2xzIGZyb20gXCJ2aXRlLXBsdWdpbi12dWUtZGV2dG9vbHNcIjtcblxuLyoqIFx1NUU3M1x1NTNGMFx1NzY4NFx1NTQwRFx1NzlGMFx1MzAwMVx1NzI0OFx1NjcyQ1x1MzAwMVx1OEZEMFx1ODg0Q1x1NjI0MFx1OTcwMFx1NzY4NGBub2RlYFx1NzI0OFx1NjcyQ1x1MzAwMVx1NEY5RFx1OEQ1Nlx1MzAwMVx1Njc4NFx1NUVGQVx1NjVGNlx1OTVGNFx1NzY4NFx1N0M3Qlx1NTc4Qlx1NjNEMFx1NzkzQSAqL1xuY29uc3QgX19BUFBfSU5GT19fID0ge1xuICBwa2c6IHsgbmFtZSwgdmVyc2lvbiwgZW5naW5lcywgZGVwZW5kZW5jaWVzLCBkZXZEZXBlbmRlbmNpZXMgfSxcbiAgYnVpbGRUaW1lc3RhbXA6IERhdGUubm93KCksXG59O1xuXG5jb25zdCBwYXRoU3JjID0gcmVzb2x2ZShfX2Rpcm5hbWUsIFwic3JjXCIpO1xuLy8gIGh0dHBzOi8vY24udml0ZWpzLmRldi9jb25maWdcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZygoeyBtb2RlIH06IENvbmZpZ0Vudik6IFVzZXJDb25maWcgPT4ge1xuICBjb25zdCBlbnYgPSBsb2FkRW52KG1vZGUsIHByb2Nlc3MuY3dkKCkpO1xuICByZXR1cm4ge1xuICAgIHJlc29sdmU6IHtcbiAgICAgIGFsaWFzOiB7XG4gICAgICAgIFwiQFwiOiBwYXRoU3JjLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGJhc2U6IFwiLi9cIixcbiAgICBjc3M6IHtcbiAgICAgIC8vIENTUyBcdTk4ODRcdTU5MDRcdTc0MDZcdTU2NjhcbiAgICAgIHByZXByb2Nlc3Nvck9wdGlvbnM6IHtcbiAgICAgICAgLy8gXHU1QjlBXHU0RTQ5XHU1MTY4XHU1QzQwIFNDU1MgXHU1M0Q4XHU5MUNGXG4gICAgICAgIHNjc3M6IHtcbiAgICAgICAgICBqYXZhc2NyaXB0RW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBhZGRpdGlvbmFsRGF0YTogYFxuICAgICAgICAgICAgQHVzZSBcIkAvc3R5bGVzL3ZhcmlhYmxlcy5zY3NzXCIgYXMgKjtcbiAgICAgICAgICBgLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIHNlcnZlcjoge1xuICAgICAgLy8gXHU1MTQxXHU4QkI4SVBcdThCQkZcdTk1RUVcbiAgICAgIGhvc3Q6IFwiMC4wLjAuMFwiLFxuICAgICAgLy8gXHU1RTk0XHU3NTI4XHU3QUVGXHU1M0UzIChcdTlFRDhcdThCQTQ6MzAwMClcbiAgICAgIHBvcnQ6IE51bWJlcihlbnYuVklURV9BUFBfUE9SVCksXG4gICAgICAvLyBcdThGRDBcdTg4NENcdTY2MkZcdTU0MjZcdTgxRUFcdTUyQThcdTYyNTNcdTVGMDBcdTZENEZcdTg5QzhcdTU2NjhcbiAgICAgIG9wZW46IHRydWUsXG4gICAgICBwcm94eToge1xuICAgICAgICAvKiogXHU0RUUzXHU3NDA2XHU1MjREXHU3RjAwXHU0RTNBIC9kZXYtYXBpIFx1NzY4NFx1OEJGN1x1NkM0MiAgKi9cbiAgICAgICAgW2Vudi5WSVRFX0FQUF9CQVNFX0FQSV06IHtcbiAgICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXG4gICAgICAgICAgLy8gXHU2M0E1XHU1M0UzXHU1NzMwXHU1NzQwXG4gICAgICAgICAgdGFyZ2V0OiBlbnYuVklURV9BUFBfQVBJX1VSTCxcbiAgICAgICAgICByZXdyaXRlOiAocGF0aCkgPT5cbiAgICAgICAgICAgIHBhdGgucmVwbGFjZShuZXcgUmVnRXhwKFwiXlwiICsgZW52LlZJVEVfQVBQX0JBU0VfQVBJKSwgXCJcIiksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgcGx1Z2luczogW1xuICAgICAgdnVlKCksXG4gICAgICAvLyBqc3hcdTMwMDF0c3hcdThCRURcdTZDRDVcdTY1MkZcdTYzMDFcbiAgICAgIHZ1ZUpzeCgpLFxuICAgICAgLy8gTU9DSyBcdTY3MERcdTUyQTFcbiAgICAgIGVudi5WSVRFX01PQ0tfREVWX1NFUlZFUiA9PT0gXCJ0cnVlXCIgPyBtb2NrRGV2U2VydmVyUGx1Z2luKCkgOiBudWxsLFxuICAgICAgVW5vQ1NTKHtcbiAgICAgICAgaG1yVG9wTGV2ZWxBd2FpdDogZmFsc2UsXG4gICAgICB9KSxcbiAgICAgIC8vIFx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NVx1NTNDMlx1ODAwM1x1RkYxQSBodHRwczovL2dpdGh1Yi5jb20vc3h6ei9lbGVtZW50LXBsdXMtYmVzdC1wcmFjdGljZXMvYmxvYi9tYWluL3ZpdGUuY29uZmlnLnRzXG4gICAgICBBdXRvSW1wb3J0KHtcbiAgICAgICAgLy8gXHU4MUVBXHU1MkE4XHU1QkZDXHU1MTY1IFZ1ZSBcdTc2RjhcdTUxNzNcdTUxRkRcdTY1NzBcdUZGMENcdTU5ODJcdUZGMUFyZWYsIHJlYWN0aXZlLCB0b1JlZiBcdTdCNDlcbiAgICAgICAgaW1wb3J0czogW1widnVlXCIsIFwiQHZ1ZXVzZS9jb3JlXCIsIFwicGluaWFcIiwgXCJ2dWUtcm91dGVyXCIsIFwidnVlLWkxOG5cIl0sXG4gICAgICAgIHJlc29sdmVyczogW1xuICAgICAgICAgIC8vIFx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NSBFbGVtZW50IFBsdXMgXHU3NkY4XHU1MTczXHU1MUZEXHU2NTcwXHVGRjBDXHU1OTgyXHVGRjFBRWxNZXNzYWdlLCBFbE1lc3NhZ2VCb3guLi4gKFx1NUUyNlx1NjgzN1x1NUYwRilcbiAgICAgICAgICBFbGVtZW50UGx1c1Jlc29sdmVyKCksXG4gICAgICAgICAgLy8gXHU4MUVBXHU1MkE4XHU1QkZDXHU1MTY1XHU1NkZFXHU2ODA3XHU3RUM0XHU0RUY2XG4gICAgICAgICAgSWNvbnNSZXNvbHZlcih7fSksXG4gICAgICAgIF0sXG4gICAgICAgIGVzbGludHJjOiB7XG4gICAgICAgICAgLy8gXHU2NjJGXHU1NDI2XHU4MUVBXHU1MkE4XHU3NTFGXHU2MjEwIGVzbGludCBcdTg5QzRcdTUyMTlcdUZGMENcdTVFRkFcdThCQUVcdTc1MUZcdTYyMTBcdTRFNEJcdTU0MEVcdThCQkVcdTdGNkUgZmFsc2VcbiAgICAgICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgICAgICAvLyBcdTYzMDdcdTVCOUFcdTgxRUFcdTUyQThcdTVCRkNcdTUxNjVcdTUxRkRcdTY1NzAgZXNsaW50IFx1ODlDNFx1NTIxOVx1NzY4NFx1NjU4N1x1NEVGNlxuICAgICAgICAgIGZpbGVwYXRoOiBcIi4vLmVzbGludHJjLWF1dG8taW1wb3J0Lmpzb25cIixcbiAgICAgICAgICBnbG9iYWxzUHJvcFZhbHVlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICAvLyBcdTY2MkZcdTU0MjZcdTU3MjggdnVlIFx1NkEyMVx1Njc3Rlx1NEUyRFx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NVxuICAgICAgICB2dWVUZW1wbGF0ZTogdHJ1ZSxcbiAgICAgICAgLy8gXHU2MzA3XHU1QjlBXHU4MUVBXHU1MkE4XHU1QkZDXHU1MTY1XHU1MUZEXHU2NTcwVFNcdTdDN0JcdTU3OEJcdTU4RjBcdTY2MEVcdTY1ODdcdTRFRjZcdThERUZcdTVGODQgKGZhbHNlOlx1NTE3M1x1OTVFRFx1ODFFQVx1NTJBOFx1NzUxRlx1NjIxMClcbiAgICAgICAgZHRzOiBmYWxzZSxcbiAgICAgICAgLy8gZHRzOiBcInNyYy90eXBpbmdzL2F1dG8taW1wb3J0cy5kLnRzXCIsXG4gICAgICB9KSxcbiAgICAgIENvbXBvbmVudHMoe1xuICAgICAgICByZXNvbHZlcnM6IFtcbiAgICAgICAgICAvLyBcdTgxRUFcdTUyQThcdTVCRkNcdTUxNjUgRWxlbWVudCBQbHVzIFx1N0VDNFx1NEVGNlxuICAgICAgICAgIEVsZW1lbnRQbHVzUmVzb2x2ZXIoKSxcbiAgICAgICAgICAvLyBcdTgxRUFcdTUyQThcdTZDRThcdTUxOENcdTU2RkVcdTY4MDdcdTdFQzRcdTRFRjZcbiAgICAgICAgICBJY29uc1Jlc29sdmVyKHtcbiAgICAgICAgICAgIC8vIGVsZW1lbnQtcGx1c1x1NTZGRVx1NjgwN1x1NUU5M1x1RkYwQ1x1NTE3Nlx1NEVENlx1NTZGRVx1NjgwN1x1NUU5MyBodHRwczovL2ljb24tc2V0cy5pY29uaWZ5LmRlc2lnbi9cbiAgICAgICAgICAgIGVuYWJsZWRDb2xsZWN0aW9uczogW1wiZXBcIl0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICAgIC8vIFx1NjMwN1x1NUI5QVx1ODFFQVx1NUI5QVx1NEU0OVx1N0VDNFx1NEVGNlx1NEY0RFx1N0Y2RShcdTlFRDhcdThCQTQ6c3JjL2NvbXBvbmVudHMpXG4gICAgICAgIGRpcnM6IFtcInNyYy9jb21wb25lbnRzXCIsIFwic3JjLyoqL2NvbXBvbmVudHNcIl0sXG4gICAgICAgIC8vIFx1NjMwN1x1NUI5QVx1ODFFQVx1NTJBOFx1NUJGQ1x1NTE2NVx1N0VDNFx1NEVGNlRTXHU3QzdCXHU1NzhCXHU1OEYwXHU2NjBFXHU2NTg3XHU0RUY2XHU4REVGXHU1Rjg0IChmYWxzZTpcdTUxNzNcdTk1RURcdTgxRUFcdTUyQThcdTc1MUZcdTYyMTApXG4gICAgICAgIGR0czogZmFsc2UsXG4gICAgICAgIC8vIGR0czogXCJzcmMvdHlwaW5ncy9jb21wb25lbnRzLmQudHNcIixcbiAgICAgIH0pLFxuICAgICAgSWNvbnMoe1xuICAgICAgICAvLyBcdTgxRUFcdTUyQThcdTVCODlcdTg4QzVcdTU2RkVcdTY4MDdcdTVFOTNcbiAgICAgICAgYXV0b0luc3RhbGw6IHRydWUsXG4gICAgICB9KSxcbiAgICAgIGNyZWF0ZVN2Z0ljb25zUGx1Z2luKHtcbiAgICAgICAgLy8gXHU2MzA3XHU1QjlBXHU5NzAwXHU4OTgxXHU3RjEzXHU1QjU4XHU3Njg0XHU1NkZFXHU2ODA3XHU2NTg3XHU0RUY2XHU1OTM5XG4gICAgICAgIGljb25EaXJzOiBbcmVzb2x2ZShwYXRoU3JjLCBcImFzc2V0cy9pY29uc1wiKV0sXG4gICAgICAgIC8vIFx1NjMwN1x1NUI5QXN5bWJvbElkXHU2ODNDXHU1RjBGXG4gICAgICAgIHN5bWJvbElkOiBcImljb24tW2Rpcl0tW25hbWVdXCIsXG4gICAgICB9KSxcbiAgICAgIFZ1ZURldlRvb2xzKHtcbiAgICAgICAgb3BlbkluRWRpdG9ySG9zdDogYGh0dHA6Ly9sb2NhbGhvc3Q6JHtlbnYuVklURV9BUFBfUE9SVH1gLFxuICAgICAgfSksXG4gICAgXSxcbiAgICAvLyBcdTk4ODRcdTUyQTBcdThGN0RcdTk4NzlcdTc2RUVcdTVGQzVcdTk3MDBcdTc2ODRcdTdFQzRcdTRFRjZcbiAgICBvcHRpbWl6ZURlcHM6IHtcbiAgICAgIGluY2x1ZGU6IFtcbiAgICAgICAgXCJ2dWVcIixcbiAgICAgICAgXCJ2dWUtcm91dGVyXCIsXG4gICAgICAgIFwicGluaWFcIixcbiAgICAgICAgXCJheGlvc1wiLFxuICAgICAgICBcIkB2dWV1c2UvY29yZVwiLFxuICAgICAgICBcInNvcnRhYmxlanNcIixcbiAgICAgICAgXCJwYXRoLXRvLXJlZ2V4cFwiLFxuICAgICAgICBcImVjaGFydHNcIixcbiAgICAgICAgXCJAd2FuZ2VkaXRvci9lZGl0b3JcIixcbiAgICAgICAgXCJAd2FuZ2VkaXRvci9lZGl0b3ItZm9yLXZ1ZVwiLFxuICAgICAgICBcInZ1ZS1pMThuXCIsXG4gICAgICAgIFwicGF0aC1icm93c2VyaWZ5XCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvZm9ybS9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9mb3JtLWl0ZW0vc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvYnV0dG9uL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2lucHV0L3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2lucHV0LW51bWJlci9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9zd2l0Y2gvc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvdXBsb2FkL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL21lbnUvc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvY29sL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2ljb24vc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvcm93L3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3RhZy9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9kaWFsb2cvc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvbG9hZGluZy9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9yYWRpby9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9yYWRpby1ncm91cC9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9wb3BvdmVyL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3Njcm9sbGJhci9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy90b29sdGlwL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2Ryb3Bkb3duL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2Ryb3Bkb3duLW1lbnUvc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvZHJvcGRvd24taXRlbS9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9zdWItbWVudS9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9tZW51LWl0ZW0vc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvZGl2aWRlci9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9jYXJkL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2xpbmsvc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvYnJlYWRjcnVtYi9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9icmVhZGNydW1iLWl0ZW0vc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvdGFibGUvc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvdHJlZS1zZWxlY3Qvc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvdGFibGUtY29sdW1uL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3NlbGVjdC9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9vcHRpb24vc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvcGFnaW5hdGlvbi9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy90cmVlL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2FsZXJ0L3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3JhZGlvLWJ1dHRvbi9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9jaGVja2JveC1ncm91cC9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy9jaGVja2JveC9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy90YWJzL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3RhYi1wYW5lL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3JhdGUvc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvZGF0ZS1waWNrZXIvc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2ltYWdlL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3N0YXRpc3RpYy9zdHlsZS9jc3NcIixcbiAgICAgICAgXCJlbGVtZW50LXBsdXMvZXMvY29tcG9uZW50cy93YXRlcm1hcmsvc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvY29uZmlnLXByb3ZpZGVyL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL3RleHQvc3R5bGUvY3NzXCIsXG4gICAgICAgIFwiZWxlbWVudC1wbHVzL2VzL2NvbXBvbmVudHMvZHJhd2VyL3N0eWxlL2Nzc1wiLFxuICAgICAgICBcImVsZW1lbnQtcGx1cy9lcy9jb21wb25lbnRzL2NvbG9yLXBpY2tlci9zdHlsZS9jc3NcIixcbiAgICAgIF0sXG4gICAgfSxcbiAgICAvLyBcdTY3ODRcdTVFRkFcdTkxNERcdTdGNkVcbiAgICBidWlsZDoge1xuICAgICAgY2h1bmtTaXplV2FybmluZ0xpbWl0OiAyMDAwLCAvLyBcdTZEODhcdTk2NjRcdTYyNTNcdTUzMDVcdTU5MjdcdTVDMEZcdThEODVcdThGQzc1MDBrYlx1OEI2Nlx1NTQ0QVxuICAgICAgbWluaWZ5OiBcInRlcnNlclwiLCAvLyBWaXRlIDIuNi54IFx1NEVFNVx1NEUwQVx1OTcwMFx1ODk4MVx1OTE0RFx1N0Y2RSBtaW5pZnk6IFwidGVyc2VyXCIsIHRlcnNlck9wdGlvbnMgXHU2MjREXHU4MEZEXHU3NTFGXHU2NTQ4XG4gICAgICB0ZXJzZXJPcHRpb25zOiB7XG4gICAgICAgIGNvbXByZXNzOiB7XG4gICAgICAgICAga2VlcF9pbmZpbml0eTogdHJ1ZSwgLy8gXHU5NjMyXHU2QjYyIEluZmluaXR5IFx1ODhBQlx1NTM4Qlx1N0YyOVx1NjIxMCAxLzBcdUZGMENcdThGRDlcdTUzRUZcdTgwRkRcdTRGMUFcdTVCRkNcdTgxRjQgQ2hyb21lIFx1NEUwQVx1NzY4NFx1NjAyN1x1ODBGRFx1OTVFRVx1OTg5OFxuICAgICAgICAgIGRyb3BfY29uc29sZTogdHJ1ZSwgLy8gXHU3NTFGXHU0RUE3XHU3M0FGXHU1ODgzXHU1M0JCXHU5NjY0IGNvbnNvbGVcbiAgICAgICAgICBkcm9wX2RlYnVnZ2VyOiB0cnVlLCAvLyBcdTc1MUZcdTRFQTdcdTczQUZcdTU4ODNcdTUzQkJcdTk2NjQgZGVidWdnZXJcbiAgICAgICAgfSxcbiAgICAgICAgZm9ybWF0OiB7XG4gICAgICAgICAgY29tbWVudHM6IGZhbHNlLCAvLyBcdTUyMjBcdTk2NjRcdTZDRThcdTkxQ0FcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICByb2xsdXBPcHRpb25zOiB7ICAgICAgIFxuICAgICAgICBwbHVnaW5zOiBbdGVyc2VyKCldLFxuICAgICAgICBvdXRwdXQ6IHtcbiAgICAgICAgICAvLyBtYW51YWxDaHVua3M6IHtcbiAgICAgICAgICAvLyAgIFwidnVlLWkxOG5cIjogW1widnVlLWkxOG5cIl0sXG4gICAgICAgICAgLy8gfSxcbiAgICAgICAgICAvLyBcdTc1MjhcdTRFOEVcdTRFQ0VcdTUxNjVcdTUzRTNcdTcwQjlcdTUyMUJcdTVFRkFcdTc2ODRcdTU3NTdcdTc2ODRcdTYyNTNcdTUzMDVcdThGOTNcdTUxRkFcdTY4M0NcdTVGMEZbbmFtZV1cdTg4NjhcdTc5M0FcdTY1ODdcdTRFRjZcdTU0MEQsW2hhc2hdXHU4ODY4XHU3OTNBXHU4QkU1XHU2NTg3XHU0RUY2XHU1MTg1XHU1QkI5aGFzaFx1NTAzQ1xuICAgICAgICAgIGVudHJ5RmlsZU5hbWVzOiBcImpzL1tuYW1lXS5baGFzaF0uanNcIixcbiAgICAgICAgICAvLyBcdTc1MjhcdTRFOEVcdTU0N0RcdTU0MERcdTRFRTNcdTc4MDFcdTYyQzZcdTUyMDZcdTY1RjZcdTUyMUJcdTVFRkFcdTc2ODRcdTUxNzFcdTRFQUJcdTU3NTdcdTc2ODRcdThGOTNcdTUxRkFcdTU0N0RcdTU0MERcbiAgICAgICAgICBjaHVua0ZpbGVOYW1lczogXCJqcy9bbmFtZV0uW2hhc2hdLmpzXCIsXG4gICAgICAgICAgLy8gXHU3NTI4XHU0RThFXHU4RjkzXHU1MUZBXHU5NzU5XHU2MDAxXHU4RDQ0XHU2RTkwXHU3Njg0XHU1NDdEXHU1NDBEXHVGRjBDW2V4dF1cdTg4NjhcdTc5M0FcdTY1ODdcdTRFRjZcdTYyNjlcdTVDNTVcdTU0MERcbiAgICAgICAgICBhc3NldEZpbGVOYW1lczogKGFzc2V0SW5mbzogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmZvID0gYXNzZXRJbmZvLm5hbWUuc3BsaXQoXCIuXCIpO1xuICAgICAgICAgICAgbGV0IGV4dFR5cGUgPSBpbmZvW2luZm8ubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnXHU2NTg3XHU0RUY2XHU0RkUxXHU2MDZGJywgYXNzZXRJbmZvLm5hbWUpXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIC9cXC4obXA0fHdlYm18b2dnfG1wM3x3YXZ8ZmxhY3xhYWMpKFxcPy4qKT8kL2kudGVzdChhc3NldEluZm8ubmFtZSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBleHRUeXBlID0gXCJtZWRpYVwiO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgvXFwuKHBuZ3xqcGU/Z3xnaWZ8c3ZnKShcXD8uKik/JC8udGVzdChhc3NldEluZm8ubmFtZSkpIHtcbiAgICAgICAgICAgICAgZXh0VHlwZSA9IFwiaW1nXCI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKC9cXC4od29mZjI/fGVvdHx0dGZ8b3RmKShcXD8uKik/JC9pLnRlc3QoYXNzZXRJbmZvLm5hbWUpKSB7XG4gICAgICAgICAgICAgIGV4dFR5cGUgPSBcImZvbnRzXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYCR7ZXh0VHlwZX0vW25hbWVdLltoYXNoXS5bZXh0XWA7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZWZpbmU6IHtcbiAgICAgIF9fQVBQX0lORk9fXzogSlNPTi5zdHJpbmdpZnkoX19BUFBfSU5GT19fKSxcbiAgICB9LFxuICB9O1xufSk7XG4iLCAie1xuICBcIm5hbWVcIjogXCJhaW1hbmFnZVwiLFxuICBcInByaXZhdGVcIjogdHJ1ZSxcbiAgXCJ2ZXJzaW9uXCI6IFwiMS4wLjBcIixcbiAgXCJ0eXBlXCI6IFwibW9kdWxlXCIsXG4gIFwic2NyaXB0c1wiOiB7XG4gICAgXCJkZXZcIjogXCJ2aXRlXCIsXG4gICAgXCJidWlsZFwiOiBcInZ1ZS10c2MgLS1ub0VtaXQgJiB2aXRlIGJ1aWxkXCIsXG4gICAgXCJwcmV2aWV3XCI6IFwidml0ZSBwcmV2aWV3XCIsXG4gICAgXCJidWlsZC1vbmx5XCI6IFwidml0ZSBidWlsZFwiLFxuICAgIFwidHlwZS1jaGVja1wiOiBcInZ1ZS10c2MgLS1ub0VtaXRcIixcbiAgICBcImxpbnQ6ZXNsaW50XCI6IFwiZXNsaW50ICAtLWZpeCAtLWV4dCAudHMsLmpzLC52dWUgLi9zcmMgXCIsXG4gICAgXCJsaW50OnByZXR0aWVyXCI6IFwicHJldHRpZXIgLS13cml0ZSBcXFwiKiovKi57anMsY2pzLHRzLGpzb24sdHN4LGNzcyxsZXNzLHNjc3MsdnVlLGh0bWwsbWR9XFxcIlwiLFxuICAgIFwibGludDpzdHlsZWxpbnRcIjogXCJzdHlsZWxpbnQgIFxcXCIqKi8qLntjc3Msc2Nzcyx2dWV9XFxcIiAtLWZpeFwiLFxuICAgIFwibGludDpsaW50LXN0YWdlZFwiOiBcImxpbnQtc3RhZ2VkXCIsXG4gICAgXCJwcmVwYXJlXCI6IFwiaHVza3lcIixcbiAgICBcImNvbW1pdFwiOiBcImdpdC1jelwiXG4gIH0sXG4gIFwiY29uZmlnXCI6IHtcbiAgICBcImNvbW1pdGl6ZW5cIjoge1xuICAgICAgXCJwYXRoXCI6IFwibm9kZV9tb2R1bGVzL2N6LWdpdFwiXG4gICAgfVxuICB9LFxuICBcImxpbnQtc3RhZ2VkXCI6IHtcbiAgICBcIioue2pzLHRzfVwiOiBbXG4gICAgICBcImVzbGludCAtLWZpeFwiLFxuICAgICAgXCJwcmV0dGllciAtLXdyaXRlXCJcbiAgICBdLFxuICAgIFwiKi57Y2pzLGpzb259XCI6IFtcbiAgICAgIFwicHJldHRpZXIgLS13cml0ZVwiXG4gICAgXSxcbiAgICBcIioue3Z1ZSxodG1sfVwiOiBbXG4gICAgICBcImVzbGludCAtLWZpeFwiLFxuICAgICAgXCJwcmV0dGllciAtLXdyaXRlXCIsXG4gICAgICBcInN0eWxlbGludCAtLWZpeFwiXG4gICAgXSxcbiAgICBcIioue3Njc3MsY3NzfVwiOiBbXG4gICAgICBcInN0eWxlbGludCAtLWZpeFwiLFxuICAgICAgXCJwcmV0dGllciAtLXdyaXRlXCJcbiAgICBdLFxuICAgIFwiKi5tZFwiOiBbXG4gICAgICBcInByZXR0aWVyIC0td3JpdGVcIlxuICAgIF1cbiAgfSxcbiAgXCJkZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQGVsZW1lbnQtcGx1cy9pY29ucy12dWVcIjogXCJeMi4zLjFcIixcbiAgICBcIkBsb2dpY2Zsb3cvY29yZVwiOiBcIl4xLjIuMjdcIixcbiAgICBcIkBsb2dpY2Zsb3cvZXh0ZW5zaW9uXCI6IFwiXjEuMi4yN1wiLFxuICAgIFwiQHZ1ZXVzZS9jb3JlXCI6IFwiXjEwLjkuMFwiLFxuICAgIFwiQHdhbmdlZGl0b3IvZWRpdG9yXCI6IFwiXjUuMS4yM1wiLFxuICAgIFwiQHdhbmdlZGl0b3IvZWRpdG9yLWZvci12dWVcIjogXCI1LjEuMTBcIixcbiAgICBcImFuaW1hdGUuY3NzXCI6IFwiXjQuMS4xXCIsXG4gICAgXCJheGlvc1wiOiBcIl4xLjYuOFwiLFxuICAgIFwiY2xpcGJvYXJkXCI6IFwiXjIuMC4xMVwiLFxuICAgIFwiY29sb3JcIjogXCJeNC4yLjNcIixcbiAgICBcImVjaGFydHNcIjogXCJeNS41LjBcIixcbiAgICBcImVsZW1lbnQtcGx1c1wiOiBcIl4yLjcuMlwiLFxuICAgIFwiaHRtbDJjYW52YXNcIjogXCJeMS40LjFcIixcbiAgICBcImpzLW1kNVwiOiBcIl4wLjguM1wiLFxuICAgIFwianNvbi1lZGl0b3ItdnVlM1wiOiBcIl4xLjEuMVwiLFxuICAgIFwibG9kYXNoLWVzXCI6IFwiXjQuMTcuMjFcIixcbiAgICBcIm5ldFwiOiBcIl4xLjAuMlwiLFxuICAgIFwibnByb2dyZXNzXCI6IFwiXjAuMi4wXCIsXG4gICAgXCJwYXRoLWJyb3dzZXJpZnlcIjogXCJeMS4wLjFcIixcbiAgICBcInBhdGgtdG8tcmVnZXhwXCI6IFwiXjYuMi4yXCIsXG4gICAgXCJwaW5pYVwiOiBcIl4yLjEuN1wiLFxuICAgIFwic29ja2pzLWNsaWVudFwiOiBcIjEuNi4xXCIsXG4gICAgXCJzb3J0YWJsZWpzXCI6IFwiXjEuMTUuMlwiLFxuICAgIFwic3RvbXBqc1wiOiBcIl4yLjMuM1wiLFxuICAgIFwidnVlXCI6IFwiXjMuNC4yNlwiLFxuICAgIFwidnVlLWkxOG5cIjogXCI5LjkuMVwiLFxuICAgIFwidnVlLXJvdXRlclwiOiBcIl40LjMuMlwiLFxuICAgIFwidnVlMy1qc29uLXZpZXdlclwiOiBcIl4yLjIuMlwiLFxuICAgIFwieGxzeFwiOiBcIl4wLjE4LjVcIlxuICB9LFxuICBcImRldkRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJAY29tbWl0bGludC9jbGlcIjogXCJeMTguNi4xXCIsXG4gICAgXCJAY29tbWl0bGludC9jb25maWctY29udmVudGlvbmFsXCI6IFwiXjE4LjYuM1wiLFxuICAgIFwiQGljb25pZnktanNvbi9lcFwiOiBcIl4xLjEuMTVcIixcbiAgICBcIkB0eXBlcy9jb2xvclwiOiBcIl4zLjAuNlwiLFxuICAgIFwiQHR5cGVzL2xvZGFzaFwiOiBcIl40LjE3LjFcIixcbiAgICBcIkB0eXBlcy9ub2RlXCI6IFwiXjIwLjEyLjhcIixcbiAgICBcIkB0eXBlcy9ucHJvZ3Jlc3NcIjogXCJeMC4yLjNcIixcbiAgICBcIkB0eXBlcy9wYXRoLWJyb3dzZXJpZnlcIjogXCJeMS4wLjJcIixcbiAgICBcIkB0eXBlcy9zb2NranMtY2xpZW50XCI6IFwiXjEuNS40XCIsXG4gICAgXCJAdHlwZXMvc29ydGFibGVqc1wiOiBcIl4xLjE1LjhcIixcbiAgICBcIkB0eXBlcy9zdG9tcGpzXCI6IFwiXjIuMy45XCIsXG4gICAgXCJAdHlwZXNjcmlwdC1lc2xpbnQvZXNsaW50LXBsdWdpblwiOiBcIl43LjguMFwiLFxuICAgIFwiQHR5cGVzY3JpcHQtZXNsaW50L3BhcnNlclwiOiBcIl43LjguMFwiLFxuICAgIFwiQHZpdGVqcy9wbHVnaW4tdnVlXCI6IFwiXjUuMC40XCIsXG4gICAgXCJAdml0ZWpzL3BsdWdpbi12dWUtanN4XCI6IFwiXjMuMS4wXCIsXG4gICAgXCJhdXRvcHJlZml4ZXJcIjogXCJeMTAuNC4xOVwiLFxuICAgIFwiY29tbWl0aXplblwiOiBcIl40LjMuMFwiLFxuICAgIFwiY3otZ2l0XCI6IFwiXjEuOS4xXCIsXG4gICAgXCJlc2xpbnRcIjogXCJeOC41Ny4wXCIsXG4gICAgXCJlc2xpbnQtY29uZmlnLXByZXR0aWVyXCI6IFwiXjkuMS4wXCIsXG4gICAgXCJlc2xpbnQtcGx1Z2luLWltcG9ydFwiOiBcIl4yLjI5LjFcIixcbiAgICBcImVzbGludC1wbHVnaW4tcHJldHRpZXJcIjogXCJeNS4xLjNcIixcbiAgICBcImVzbGludC1wbHVnaW4tdnVlXCI6IFwiXjkuMjUuMFwiLFxuICAgIFwiZmFzdC1nbG9iXCI6IFwiXjMuMy4yXCIsXG4gICAgXCJodXNreVwiOiBcIl45LjAuMTFcIixcbiAgICBcImxpbnQtc3RhZ2VkXCI6IFwiXjE1LjIuMlwiLFxuICAgIFwicG9zdGNzc1wiOiBcIl44LjQuMzhcIixcbiAgICBcInBvc3Rjc3MtaHRtbFwiOiBcIl4xLjYuMFwiLFxuICAgIFwicG9zdGNzcy1zY3NzXCI6IFwiXjQuMC45XCIsXG4gICAgXCJwcmV0dGllclwiOiBcIl4zLjIuNVwiLFxuICAgIFwicm9sbHVwLXBsdWdpbi10ZXJzZXJcIjogXCJeNy4wLjJcIixcbiAgICBcInNhc3NcIjogXCJeMS43Ni4wXCIsXG4gICAgXCJzdHlsZWxpbnRcIjogXCJeMTYuNS4wXCIsXG4gICAgXCJzdHlsZWxpbnQtY29uZmlnLWh0bWxcIjogXCJeMS4xLjBcIixcbiAgICBcInN0eWxlbGludC1jb25maWctcmVjZXNzLW9yZGVyXCI6IFwiXjQuNi4wXCIsXG4gICAgXCJzdHlsZWxpbnQtY29uZmlnLXJlY29tbWVuZGVkLXNjc3NcIjogXCJeMTQuMC4wXCIsXG4gICAgXCJzdHlsZWxpbnQtY29uZmlnLXJlY29tbWVuZGVkLXZ1ZVwiOiBcIl4xLjUuMFwiLFxuICAgIFwic3R5bGVsaW50LWNvbmZpZy1zdGFuZGFyZFwiOiBcIl4zNi4wLjBcIixcbiAgICBcInRlcnNlclwiOiBcIl41LjMxLjBcIixcbiAgICBcInR5cGVzY3JpcHRcIjogXCJeNS40LjVcIixcbiAgICBcInVub2Nzc1wiOiBcIl4wLjU4LjlcIixcbiAgICBcInVucGx1Z2luLWF1dG8taW1wb3J0XCI6IFwiXjAuMTcuNVwiLFxuICAgIFwidW5wbHVnaW4taWNvbnNcIjogXCJeMC4xOC41XCIsXG4gICAgXCJ1bnBsdWdpbi12dWUtY29tcG9uZW50c1wiOiBcIl4wLjI2LjBcIixcbiAgICBcInZpdGVcIjogXCJeNS4yLjExXCIsXG4gICAgXCJ2aXRlLXBsdWdpbi1tb2NrLWRldi1zZXJ2ZXJcIjogXCJeMS41LjBcIixcbiAgICBcInZpdGUtcGx1Z2luLXN2Zy1pY29uc1wiOiBcIl4yLjAuMVwiLFxuICAgIFwidml0ZS1wbHVnaW4tdnVlLWRldnRvb2xzXCI6IFwiXjcuMS4zXCIsXG4gICAgXCJ2dWUtdHNjXCI6IFwiXjIuMC4xNlwiXG4gIH0sXG4gIFwicmVwb3NpdG9yeVwiOiBcImh0dHBzOi8vZ2l0ZWUuY29tL3lvdWxhaW9yZy92dWUzLWVsZW1lbnQtYWRtaW4uZ2l0XCIsXG4gIFwiYXV0aG9yXCI6IFwiXHU2NzA5XHU2NzY1XHU1RjAwXHU2RTkwXHU3RUM0XHU3RUM3XCIsXG4gIFwibGljZW5zZVwiOiBcIk1JVFwiLFxuICBcImVuZ2luZXNcIjoge1xuICAgIFwibm9kZVwiOiBcIj49MTguMC4wXCJcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUEwUyxPQUFPLFNBQVM7QUFDMVQsT0FBTyxZQUFZO0FBQ25CLFNB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QUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBO0FBQUEsSUFFQSxPQUFPO0FBQUEsTUFDTCx1QkFBdUI7QUFBQTtBQUFBLE1BQ3ZCLFFBQVE7QUFBQTtBQUFBLE1BQ1IsZUFBZTtBQUFBLFFBQ2IsVUFBVTtBQUFBLFVBQ1IsZUFBZTtBQUFBO0FBQUEsVUFDZixjQUFjO0FBQUE7QUFBQSxVQUNkLGVBQWU7QUFBQTtBQUFBLFFBQ2pCO0FBQUEsUUFDQSxRQUFRO0FBQUEsVUFDTixVQUFVO0FBQUE7QUFBQSxRQUNaO0FBQUEsTUFDRjtBQUFBLE1BQ0EsZUFBZTtBQUFBLFFBQ2IsU0FBUyxDQUFDLE9BQU8sQ0FBQztBQUFBLFFBQ2xCLFFBQVE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFVBS04sZ0JBQWdCO0FBQUE7QUFBQSxVQUVoQixnQkFBZ0I7QUFBQTtBQUFBLFVBRWhCLGdCQUFnQixDQUFDLGNBQW1CO0FBQ2xDLGtCQUFNLE9BQU8sVUFBVSxLQUFLLE1BQU0sR0FBRztBQUNyQyxnQkFBSSxVQUFVLEtBQUssS0FBSyxTQUFTLENBQUM7QUFFbEMsZ0JBQ0UsNkNBQTZDLEtBQUssVUFBVSxJQUFJLEdBQ2hFO0FBQ0Esd0JBQVU7QUFBQSxZQUNaLFdBQVcsZ0NBQWdDLEtBQUssVUFBVSxJQUFJLEdBQUc7QUFDL0Qsd0JBQVU7QUFBQSxZQUNaLFdBQVcsa0NBQWtDLEtBQUssVUFBVSxJQUFJLEdBQUc7QUFDakUsd0JBQVU7QUFBQSxZQUNaO0FBQ0EsbUJBQU8sR0FBRyxPQUFPO0FBQUEsVUFDbkI7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxJQUNBLFFBQVE7QUFBQSxNQUNOLGNBQWMsS0FBSyxVQUFVLFlBQVk7QUFBQSxJQUMzQztBQUFBLEVBQ0Y7QUFDRixDQUFDOyIsCiAgIm5hbWVzIjogW10KfQo=