@kre-form/ant
Version:
573 lines • 44.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from "@angular/core";
import * as _ from "lodash";
export class KreSetFormFieldService {
constructor() { }
/**
* @param {?} field
* @return {?}
*/
getKreFiledFunction(field) {
/** @type {?} */
let fieldSource = this.getSourceFields(field);
/** @type {?} */
let fields = [];
/** @type {?} */
let type = field.type;
switch (type) {
case "text":
fields = this.text(field);
break;
case "texti18n":
fields = this.textI18N(field);
break;
case "textarea":
fields = this.textArea(field);
break;
case "numbers":
fields = this.number(field);
break;
case "password":
fields = this.passWord(field);
break;
case "radio":
fields = this.radio(field);
break;
case "radiogroup":
fields = this.radio(field);
break;
case "checkbox":
fields = this.checkbox(field);
break;
case "checkboxgroup":
fields = this.checkbox(field);
break;
case "select":
fields = this.select(field);
break;
case "datetime":
fields = this.datetime(field);
break;
case "image":
fields = this.image(field);
break;
case "upload":
fields = this.upload(field);
break;
case "htmlcontent":
fields = this.html(field);
break;
case "lookup":
fields = this.lookup(field);
break;
case "repeat":
fields = this.repeat(field);
break;
case "dimissContract":
fields = this.dimissContract(field);
break;
}
fields.push({
key: "templateOptions.pattern",
type: "textarea",
templateOptions: {
label: "正则表达式",
rows: 4,
},
defaultValue: _.get(field, "templateOptions.pattern"),
});
fieldSource = [...fieldSource, ...fields];
return fieldSource;
}
/**
* @private
* @param {?} field
* @return {?}
*/
getSourceFields(field) {
/** @type {?} */
let config = [
{
key: "key",
type: "text",
templateOptions: {
label: "字段编码",
},
editor: false,
defaultValue: field["key"],
},
{
key: "templateOptions.label",
type: "text",
templateOptions: {
label: "显示名称",
},
editor: false,
defaultValue: _.get(field, "templateOptions.label"),
},
{
key: "type",
type: "text",
templateOptions: {
label: "字段类型",
},
editor: false,
defaultValue: field["type"],
},
{
key: "defaultValue",
type: "text",
templateOptions: {
label: "默认值",
},
editor: false,
defaultValue: field["defaultValue"],
},
{
key: "templateOptions.tips",
type: "text",
templateOptions: {
label: "提示信息",
},
editor: false,
defaultValue: _.get(field, "templateOptions.tips"),
},
{
key: "templateOptions.placeholder",
type: "text",
templateOptions: {
label: "占位符",
},
editor: false,
defaultValue: _.get(field, "templateOptions.placeholder"),
},
{
key: "editor",
type: "checkbox",
templateOptions: {
label: "是否可编辑",
},
editor: true,
defaultValue: _.get(field, "editor"),
},
];
return config;
}
//1、字符串
/**
* @private
* @param {?} field
* @return {?}
*/
text(field) {
/** @type {?} */
let config = [
{
key: "templateOptions.minLength",
type: "numbers",
templateOptions: {
label: "最小长度",
},
defaultValue: _.get(field, "templateOptions.minLength"),
},
{
key: "templateOptions.maxLength",
type: "numbers",
templateOptions: {
label: "最大长度",
},
defaultValue: _.get(field, "templateOptions.maxLength"),
},
{
key: "templateOptions.required",
type: "checkbox",
templateOptions: {
label: "是否必填",
},
defaultValue: _.get(field, "templateOptions.required"),
},
];
return config;
}
//2、多语言
/**
* @private
* @param {?} field
* @return {?}
*/
textI18N(field) {
/** @type {?} */
let config = [
{
key: "templateOptions.required",
type: "checkbox",
templateOptions: {
label: "是否必填",
},
defaultValue: _.get(field, "templateOptions.required"),
},
];
return config;
}
//3、多行文本
/**
* @private
* @param {?} field
* @return {?}
*/
textArea(field) {
/** @type {?} */
let config = [
{
key: "templateOptions.minLength",
type: "numbers",
templateOptions: {
label: "最小长度",
},
defaultValue: _.get(field, "templateOptions.minLength"),
},
{
key: "templateOptions.maxLength",
type: "numbers",
templateOptions: {
label: "最大长度",
},
defaultValue: _.get(field, "templateOptions.maxLength"),
},
{
key: "templateOptions.rows",
type: "numbers",
templateOptions: {
label: "默认行数",
},
defaultValue: _.get(field, "templateOptions.rows"),
},
{
key: "templateOptions.required",
type: "checkbox",
templateOptions: {
label: "是否必填",
},
defaultValue: _.get(field, "templateOptions.required"),
},
];
return config;
}
//4、数字
/**
* @private
* @param {?} field
* @return {?}
*/
number(field) {
/** @type {?} */
let config = [
{
key: "templateOptions.min",
type: "numbers",
templateOptions: {
label: "最小值",
},
defaultValue: _.get(field, "templateOptions.min"),
},
{
key: "templateOptions.max",
type: "numbers",
templateOptions: {
label: "最大值",
},
defaultValue: _.get(field, "templateOptions.max"),
},
{
key: "templateOptions.precision",
type: "numbers",
templateOptions: {
label: "精度",
},
defaultValue: _.get(field, "templateOptions.precision"),
},
{
key: "templateOptions.required",
type: "checkbox",
templateOptions: {
label: "是否必填",
},
defaultValue: _.get(field, "templateOptions.required"),
},
];
return config;
}
//5、密码
/**
* @private
* @param {?} field
* @return {?}
*/
passWord(field) {
/** @type {?} */
let config = [
{
key: "templateOptions.minLength",
type: "numbers",
templateOptions: {
label: "最小长度",
},
defaultValue: _.get(field, "templateOptions.minLength"),
},
{
key: "templateOptions.maxLength",
type: "numbers",
templateOptions: {
label: "最大长度",
},
defaultValue: _.get(field, "templateOptions.maxLength"),
},
{
key: "templateOptions.required",
type: "checkbox",
templateOptions: {
label: "是否必填",
},
defaultValue: _.get(field, "templateOptions.required"),
},
];
return config;
}
//6、单选
/**
* @private
* @param {?} field
* @return {?}
*/
radio(field) {
/** @type {?} */
let config = [
{
key: "templateOptions.required",
type: "checkbox",
templateOptions: {
label: "是否必填",
},
defaultValue: _.get(field, "templateOptions.required"),
},
];
return config;
}
//6、单选
/**
* @private
* @param {?} field
* @return {?}
*/
radioGroup(field) {
/** @type {?} */
let config = [
{
key: "templateOptions.required",
type: "checkbox",
templateOptions: {
label: "是否必填",
},
defaultValue: _.get(field, "templateOptions.required"),
},
];
return config;
}
//7、复选
/**
* @private
* @param {?} field
* @return {?}
*/
checkbox(field) {
/** @type {?} */
let config = [
{
key: "templateOptions.required",
type: "checkbox",
templateOptions: {
label: "是否必填",
},
defaultValue: _.get(field, "templateOptions.required"),
},
];
return config;
}
//8、下拉
/**
* @private
* @param {?} field
* @return {?}
*/
select(field) {
/** @type {?} */
let config = [
{
key: "templateOptions.required",
type: "checkbox",
templateOptions: {
label: "是否必填",
},
defaultValue: _.get(field, "templateOptions.required"),
},
];
return config;
}
//9、日期
/**
* @private
* @param {?} field
* @return {?}
*/
datetime(field) {
/** @type {?} */
let config = [
{
key: "templateOptions.required",
type: "checkbox",
templateOptions: {
label: "是否必填",
},
defaultValue: _.get(field, "templateOptions.required"),
},
];
return config;
}
//10、图片
/**
* @private
* @param {?} field
* @return {?}
*/
image(field) {
/** @type {?} */
let config = [
{
key: "templateOptions.required",
type: "checkbox",
templateOptions: {
label: "是否必填",
},
defaultValue: _.get(field, "templateOptions.required"),
},
];
return config;
}
//11、附件
/**
* @private
* @param {?} field
* @return {?}
*/
upload(field) {
/** @type {?} */
let config = [
{
key: "templateOptions.required",
type: "checkbox",
templateOptions: {
label: "是否必填",
},
defaultValue: _.get(field, "templateOptions.required"),
},
];
return config;
}
//12、弹框
/**
* @private
* @param {?} field
* @return {?}
*/
lookup(field) {
/** @type {?} */
let config = [];
return config;
}
//13、html
/**
* @private
* @param {?} field
* @return {?}
*/
html(field) {
/** @type {?} */
let config = [];
return config;
}
//14、html
/**
* @private
* @param {?} field
* @return {?}
*/
repeat(field) {
/** @type {?} */
let config = [
{
key: "templateOptions.minLength",
type: "numbers",
templateOptions: {
label: "最少几条",
},
defaultValue: _.get(field, "templateOptions.minLength"),
},
{
key: "templateOptions.maxLength",
type: "numbers",
templateOptions: {
label: "最多几条",
},
defaultValue: _.get(field, "templateOptions.maxLength"),
},
{
key: "templateOptions.type",
type: "radiogroup",
templateOptions: {
label: "显示方式",
parameterid: "para001",
options: [
{
label: "块状",
value: "default",
},
{
label: "列表",
value: "table",
},
],
},
defaultValue: _.get(field, "templateOptions.type"),
},
];
return config;
}
/**
* @private
* @param {?} field
* @return {?}
*/
dimissContract(field) {
/** @type {?} */
let config = [
{
key: "templateOptions.required",
type: "dimissContract",
templateOptions: {
label: "",
},
defaultValue: _.get(field, "templateOptions.required"),
},
];
return config;
}
}
KreSetFormFieldService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
KreSetFormFieldService.ctorParameters = () => [];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0RmllbGQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BrcmUtZm9ybS9hbnQvIiwic291cmNlcyI6WyJsaWIvdG9vbHMvc2V0RmllbGQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFNUIsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxnQkFBZSxDQUFDOzs7OztJQUVoQixtQkFBbUIsQ0FBQyxLQUF5Qjs7WUFDdkMsV0FBVyxHQUF5QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQzs7WUFDL0QsTUFBTSxHQUF5QixFQUFFOztZQUNqQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUk7UUFDckIsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLE1BQU07Z0JBQ1QsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFCLE1BQU07WUFDUixLQUFLLFVBQVU7Z0JBQ2IsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzlCLE1BQU07WUFDUixLQUFLLFVBQVU7Z0JBQ2IsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzlCLE1BQU07WUFDUixLQUFLLFNBQVM7Z0JBQ1osTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVCLE1BQU07WUFDUixLQUFLLFVBQVU7Z0JBQ2IsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzlCLE1BQU07WUFDUixLQUFLLE9BQU87Z0JBQ1YsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNCLE1BQU07WUFDUixLQUFLLFlBQVk7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QUFDO2FBQ3hEO1lBQ0Q7Z0JBQ0UsR0FBRyxFQUFFLDJCQUEyQjtnQkFDaEMsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsZUFBZSxFQUFFO29CQUNmLEtBQUssRUFBRSxNQUFNO2lCQUNkO2dCQUNELFlBQVksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSwyQkFBMkIsQ0FBQzthQUN4RDtZQUNEO2dCQUNFLEdBQUcsRUFBRSxzQkFBc0I7Z0JBQzNCLElBQUksRUFBRSxZQUFZO2dCQUNsQixlQUFlLEVBQUU7b0JBQ2YsS0FBSyxFQUFFLE1BQU07b0JBQ2IsV0FBVyxFQUFFLFNBQVM7b0JBQ3RCLE9BQU8sRUFBRTt3QkFDUDs0QkFDRSxLQUFLLEVBQUUsSUFBSTs0QkFDWCxLQUFLLEVBQUUsU0FBUzt5QkFDakI7d0JBQ0Q7NEJBQ0UsS0FBSyxFQUFFLElBQUk7NEJBQ1gsS0FBSyxFQUFFLE9BQU87eUJBQ2Y7cUJBQ0Y7aUJBQ0Y7Z0JBQ0QsWUFBWSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLHNCQUFzQixDQUFDO2FBQ25EO1NBQ0Y7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOzs7Ozs7SUFFTyxjQUFjLENBQUMsS0FBeUI7O1lBQzFDLE1BQU0sR0FBeUI7WUFDakM7Z0JBQ0UsR0FBRyxFQUFFLDBCQUEwQjtnQkFDL0IsSUFBSSxFQUFFLGdCQUFnQjtnQkFDdEIsZUFBZSxFQUFFO29CQUNmLEtBQUssRUFBRSxFQUFFO2lCQUNWO2dCQUNELFlBQVksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSwwQkFBMEIsQ0FBQzthQUN2RDtTQUNGO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7O1lBamVGLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBFdmVudEVtaXR0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgS3JlVGFibGVGaWVsZENvbmZpZywgS3JlRm9ybUZpZWxkQ29uZmlnIH0gZnJvbSBcIkBrcmUtZm9ybS9jb3JlXCI7XG5pbXBvcnQgKiBhcyBfIGZyb20gXCJsb2Rhc2hcIjtcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBLcmVTZXRGb3JtRmllbGRTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIGdldEtyZUZpbGVkRnVuY3Rpb24oZmllbGQ6IEtyZUZvcm1GaWVsZENvbmZpZykge1xuICAgIGxldCBmaWVsZFNvdXJjZTogS3JlRm9ybUZpZWxkQ29uZmlnW10gPSB0aGlzLmdldFNvdXJjZUZpZWxkcyhmaWVsZCk7XG4gICAgbGV0IGZpZWxkczogS3JlRm9ybUZpZWxkQ29uZmlnW10gPSBbXTtcbiAgICBsZXQgdHlwZSA9IGZpZWxkLnR5cGU7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFwidGV4dFwiOlxuICAgICAgICBmaWVsZHMgPSB0aGlzLnRleHQoZmllbGQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0ZXh0aTE4blwiOlxuICAgICAgICBmaWVsZHMgPSB0aGlzLnRleHRJMThOKGZpZWxkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidGV4dGFyZWFcIjpcbiAgICAgICAgZmllbGRzID0gdGhpcy50ZXh0QXJlYShmaWVsZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIm51bWJlcnNcIjpcbiAgICAgICAgZmllbGRzID0gdGhpcy5udW1iZXIoZmllbGQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJwYXNzd29yZFwiOlxuICAgICAgICBmaWVsZHMgPSB0aGlzLnBhc3NXb3JkKGZpZWxkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwicmFkaW9cIjpcbiAgICAgICAgZmllbGRzID0gdGhpcy5yYWRpbyhmaWVsZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInJhZGlvZ3JvdXBcIjpcbiAgICAgICAgZmllbGRzID0gdGhpcy5yYWRpbyhmaWVsZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImNoZWNrYm94XCI6XG4gICAgICAgIGZpZWxkcyA9IHRoaXMuY2hlY2tib3goZmllbGQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJjaGVja2JveGdyb3VwXCI6XG4gICAgICAgIGZpZWxkcyA9IHRoaXMuY2hlY2tib3goZmllbGQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJzZWxlY3RcIjpcbiAgICAgICAgZmllbGRzID0gdGhpcy5zZWxlY3QoZmllbGQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJkYXRldGltZVwiOlxuICAgICAgICBmaWVsZHMgPSB0aGlzLmRhdGV0aW1lKGZpZWxkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiaW1hZ2VcIjpcbiAgICAgICAgZmllbGRzID0gdGhpcy5pbWFnZShmaWVsZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInVwbG9hZFwiOlxuICAgICAgICBmaWVsZHMgPSB0aGlzLnVwbG9hZChmaWVsZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImh0bWxjb250ZW50XCI6XG4gICAgICAgIGZpZWxkcyA9IHRoaXMuaHRtbChmaWVsZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImxvb2t1cFwiOlxuICAgICAgICBmaWVsZHMgPSB0aGlzLmxvb2t1cChmaWVsZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInJlcGVhdFwiOlxuICAgICAgICBmaWVsZHMgPSB0aGlzLnJlcGVhdChmaWVsZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImRpbWlzc0NvbnRyYWN0XCI6XG4gICAgICAgIGZpZWxkcyA9IHRoaXMuZGltaXNzQ29udHJhY3QoZmllbGQpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgZmllbGRzLnB1c2goe1xuICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy5wYXR0ZXJuXCIsXG4gICAgICB0eXBlOiBcInRleHRhcmVhXCIsXG4gICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgbGFiZWw6IFwi5q2j5YiZ6KGo6L6+5byPXCIsXG4gICAgICAgIHJvd3M6IDQsXG4gICAgICB9LFxuICAgICAgZGVmYXVsdFZhbHVlOiBfLmdldChmaWVsZCwgXCJ0ZW1wbGF0ZU9wdGlvbnMucGF0dGVyblwiKSxcbiAgICB9KTtcbiAgICBmaWVsZFNvdXJjZSA9IFsuLi5maWVsZFNvdXJjZSwgLi4uZmllbGRzXTtcbiAgICByZXR1cm4gZmllbGRTb3VyY2U7XG4gIH1cblxuICBwcml2YXRlIGdldFNvdXJjZUZpZWxkcyhmaWVsZDogS3JlRm9ybUZpZWxkQ29uZmlnKSB7XG4gICAgbGV0IGNvbmZpZzogS3JlRm9ybUZpZWxkQ29uZmlnW10gPSBbXG4gICAgICB7XG4gICAgICAgIGtleTogXCJrZXlcIixcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIuWtl+autee8lueggVwiLFxuICAgICAgICB9LFxuICAgICAgICBlZGl0b3I6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGZpZWxkW1wia2V5XCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy5sYWJlbFwiLFxuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IFwi5pi+56S65ZCN56ewXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGVkaXRvcjogZmFsc2UsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogXy5nZXQoZmllbGQsIFwidGVtcGxhdGVPcHRpb25zLmxhYmVsXCIpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInR5cGVcIixcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIuWtl+auteexu+Wei1wiLFxuICAgICAgICB9LFxuICAgICAgICBlZGl0b3I6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGZpZWxkW1widHlwZVwiXSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogXCJkZWZhdWx0VmFsdWVcIixcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIum7mOiupOWAvFwiLFxuICAgICAgICB9LFxuICAgICAgICBlZGl0b3I6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGZpZWxkW1wiZGVmYXVsdFZhbHVlXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy50aXBzXCIsXG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogXCLmj5DnpLrkv6Hmga9cIixcbiAgICAgICAgfSxcbiAgICAgICAgZWRpdG9yOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBfLmdldChmaWVsZCwgXCJ0ZW1wbGF0ZU9wdGlvbnMudGlwc1wiKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogXCJ0ZW1wbGF0ZU9wdGlvbnMucGxhY2Vob2xkZXJcIixcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIuWNoOS9jeesplwiLFxuICAgICAgICB9LFxuICAgICAgICBlZGl0b3I6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy5wbGFjZWhvbGRlclwiKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogXCJlZGl0b3JcIixcbiAgICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogXCLmmK/lkKblj6/nvJbovpFcIixcbiAgICAgICAgfSxcbiAgICAgICAgZWRpdG9yOiB0cnVlLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcImVkaXRvclwiKSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICAvLzHjgIHlrZfnrKbkuLJcbiAgcHJpdmF0ZSB0ZXh0KGZpZWxkOiBLcmVGb3JtRmllbGRDb25maWcpIHtcbiAgICBsZXQgY29uZmlnOiBLcmVGb3JtRmllbGRDb25maWdbXSA9IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy5taW5MZW5ndGhcIixcbiAgICAgICAgdHlwZTogXCJudW1iZXJzXCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIuacgOWwj+mVv+W6plwiLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy5taW5MZW5ndGhcIiksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6IFwidGVtcGxhdGVPcHRpb25zLm1heExlbmd0aFwiLFxuICAgICAgICB0eXBlOiBcIm51bWJlcnNcIixcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IFwi5pyA5aSn6ZW/5bqmXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogXy5nZXQoZmllbGQsIFwidGVtcGxhdGVPcHRpb25zLm1heExlbmd0aFwiKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogXCJ0ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWRcIixcbiAgICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogXCLmmK/lkKblv4XloatcIixcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBfLmdldChmaWVsZCwgXCJ0ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWRcIiksXG4gICAgICB9LFxuICAgIF07XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgLy8y44CB5aSa6K+t6KiAXG4gIHByaXZhdGUgdGV4dEkxOE4oZmllbGQ6IEtyZUZvcm1GaWVsZENvbmZpZykge1xuICAgIGxldCBjb25maWc6IEtyZUZvcm1GaWVsZENvbmZpZ1tdID0gW1xuICAgICAge1xuICAgICAgICBrZXk6IFwidGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkXCIsXG4gICAgICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IFwi5piv5ZCm5b+F5aGrXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogXy5nZXQoZmllbGQsIFwidGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkXCIpLFxuICAgICAgfSxcbiAgICBdO1xuICAgIHJldHVybiBjb25maWc7XG4gIH1cbiAgLy8z44CB5aSa6KGM5paH5pysXG4gIHByaXZhdGUgdGV4dEFyZWEoZmllbGQ6IEtyZUZvcm1GaWVsZENvbmZpZykge1xuICAgIGxldCBjb25maWc6IEtyZUZvcm1GaWVsZENvbmZpZ1tdID0gW1xuICAgICAge1xuICAgICAgICBrZXk6IFwidGVtcGxhdGVPcHRpb25zLm1pbkxlbmd0aFwiLFxuICAgICAgICB0eXBlOiBcIm51bWJlcnNcIixcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IFwi5pyA5bCP6ZW/5bqmXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogXy5nZXQoZmllbGQsIFwidGVtcGxhdGVPcHRpb25zLm1pbkxlbmd0aFwiKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogXCJ0ZW1wbGF0ZU9wdGlvbnMubWF4TGVuZ3RoXCIsXG4gICAgICAgIHR5cGU6IFwibnVtYmVyc1wiLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogXCLmnIDlpKfplb/luqZcIixcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBfLmdldChmaWVsZCwgXCJ0ZW1wbGF0ZU9wdGlvbnMubWF4TGVuZ3RoXCIpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy5yb3dzXCIsXG4gICAgICAgIHR5cGU6IFwibnVtYmVyc1wiLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogXCLpu5jorqTooYzmlbBcIixcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBfLmdldChmaWVsZCwgXCJ0ZW1wbGF0ZU9wdGlvbnMucm93c1wiKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogXCJ0ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWRcIixcbiAgICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogXCLmmK/lkKblv4XloatcIixcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBfLmdldChmaWVsZCwgXCJ0ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWRcIiksXG4gICAgICB9LFxuICAgIF07XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgLy8044CB5pWw5a2XXG4gIHByaXZhdGUgbnVtYmVyKGZpZWxkOiBLcmVGb3JtRmllbGRDb25maWcpIHtcbiAgICBsZXQgY29uZmlnOiBLcmVGb3JtRmllbGRDb25maWdbXSA9IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy5taW5cIixcbiAgICAgICAgdHlwZTogXCJudW1iZXJzXCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIuacgOWwj+WAvFwiLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy5taW5cIiksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6IFwidGVtcGxhdGVPcHRpb25zLm1heFwiLFxuICAgICAgICB0eXBlOiBcIm51bWJlcnNcIixcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IFwi5pyA5aSn5YC8XCIsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogXy5nZXQoZmllbGQsIFwidGVtcGxhdGVPcHRpb25zLm1heFwiKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogXCJ0ZW1wbGF0ZU9wdGlvbnMucHJlY2lzaW9uXCIsXG4gICAgICAgIHR5cGU6IFwibnVtYmVyc1wiLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogXCLnsr7luqZcIixcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBfLmdldChmaWVsZCwgXCJ0ZW1wbGF0ZU9wdGlvbnMucHJlY2lzaW9uXCIpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZFwiLFxuICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIuaYr+WQpuW/heWhq1wiLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZFwiKSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICAvLzXjgIHlr4bnoIFcbiAgcHJpdmF0ZSBwYXNzV29yZChmaWVsZDogS3JlRm9ybUZpZWxkQ29uZmlnKSB7XG4gICAgbGV0IGNvbmZpZzogS3JlRm9ybUZpZWxkQ29uZmlnW10gPSBbXG4gICAgICB7XG4gICAgICAgIGtleTogXCJ0ZW1wbGF0ZU9wdGlvbnMubWluTGVuZ3RoXCIsXG4gICAgICAgIHR5cGU6IFwibnVtYmVyc1wiLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogXCLmnIDlsI/plb/luqZcIixcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBfLmdldChmaWVsZCwgXCJ0ZW1wbGF0ZU9wdGlvbnMubWluTGVuZ3RoXCIpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy5tYXhMZW5ndGhcIixcbiAgICAgICAgdHlwZTogXCJudW1iZXJzXCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIuacgOWkp+mVv+W6plwiLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy5tYXhMZW5ndGhcIiksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6IFwidGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkXCIsXG4gICAgICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IFwi5piv5ZCm5b+F5aGrXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogXy5nZXQoZmllbGQsIFwidGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkXCIpLFxuICAgICAgfSxcbiAgICBdO1xuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICAvLzbjgIHljZXpgIlcbiAgcHJpdmF0ZSByYWRpbyhmaWVsZDogS3JlRm9ybUZpZWxkQ29uZmlnKSB7XG4gICAgbGV0IGNvbmZpZzogS3JlRm9ybUZpZWxkQ29uZmlnW10gPSBbXG4gICAgICB7XG4gICAgICAgIGtleTogXCJ0ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWRcIixcbiAgICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogXCLmmK/lkKblv4XloatcIixcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBfLmdldChmaWVsZCwgXCJ0ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWRcIiksXG4gICAgICB9LFxuICAgIF07XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG4gIC8vNuOAgeWNlemAiVxuICBwcml2YXRlIHJhZGlvR3JvdXAoZmllbGQ6IEtyZUZvcm1GaWVsZENvbmZpZykge1xuICAgIGxldCBjb25maWc6IEtyZUZvcm1GaWVsZENvbmZpZ1tdID0gW1xuICAgICAge1xuICAgICAgICBrZXk6IFwidGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkXCIsXG4gICAgICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IFwi5piv5ZCm5b+F5aGrXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogXy5nZXQoZmllbGQsIFwidGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkXCIpLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuICAvLzfjgIHlpI3pgIlcbiAgcHJpdmF0ZSBjaGVja2JveChmaWVsZDogS3JlRm9ybUZpZWxkQ29uZmlnKSB7XG4gICAgbGV0IGNvbmZpZzogS3JlRm9ybUZpZWxkQ29uZmlnW10gPSBbXG4gICAgICB7XG4gICAgICAgIGtleTogXCJ0ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWRcIixcbiAgICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogXCLmmK/lkKblv4XloatcIixcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBfLmdldChmaWVsZCwgXCJ0ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWRcIiksXG4gICAgICB9LFxuICAgIF07XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgLy8444CB5LiL5ouJXG4gIHByaXZhdGUgc2VsZWN0KGZpZWxkOiBLcmVGb3JtRmllbGRDb25maWcpIHtcbiAgICBsZXQgY29uZmlnOiBLcmVGb3JtRmllbGRDb25maWdbXSA9IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZFwiLFxuICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIuaYr+WQpuW/heWhq1wiLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZFwiKSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICAvLznjgIHml6XmnJ9cbiAgcHJpdmF0ZSBkYXRldGltZShmaWVsZDogS3JlRm9ybUZpZWxkQ29uZmlnKSB7XG4gICAgbGV0IGNvbmZpZzogS3JlRm9ybUZpZWxkQ29uZmlnW10gPSBbXG4gICAgICB7XG4gICAgICAgIGtleTogXCJ0ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWRcIixcbiAgICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogXCLmmK/lkKblv4XloatcIixcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBfLmdldChmaWVsZCwgXCJ0ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWRcIiksXG4gICAgICB9LFxuICAgIF07XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgLy8xMOOAgeWbvueJh1xuICBwcml2YXRlIGltYWdlKGZpZWxkOiBLcmVGb3JtRmllbGRDb25maWcpIHtcbiAgICBsZXQgY29uZmlnOiBLcmVGb3JtRmllbGRDb25maWdbXSA9IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZFwiLFxuICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIuaYr+WQpuW/heWhq1wiLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZFwiKSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICAvLzEx44CB6ZmE5Lu2XG4gIHByaXZhdGUgdXBsb2FkKGZpZWxkOiBLcmVGb3JtRmllbGRDb25maWcpIHtcbiAgICBsZXQgY29uZmlnOiBLcmVGb3JtRmllbGRDb25maWdbXSA9IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZFwiLFxuICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIuaYr+WQpuW/heWhq1wiLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZFwiKSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICAvLzEy44CB5by55qGGXG4gIHByaXZhdGUgbG9va3VwKGZpZWxkOiBLcmVGb3JtRmllbGRDb25maWcpIHtcbiAgICBsZXQgY29uZmlnOiBLcmVGb3JtRmllbGRDb25maWdbXSA9IFtdO1xuXG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIC8vMTPjgIFodG1sXG4gIHByaXZhdGUgaHRtbChmaWVsZDogS3JlRm9ybUZpZWxkQ29uZmlnKSB7XG4gICAgbGV0IGNvbmZpZzogS3JlRm9ybUZpZWxkQ29uZmlnW10gPSBbXTtcblxuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICAvLzE044CBaHRtbFxuICBwcml2YXRlIHJlcGVhdChmaWVsZDogS3JlRm9ybUZpZWxkQ29uZmlnKSB7XG4gICAgbGV0IGNvbmZpZzogS3JlRm9ybUZpZWxkQ29uZmlnW10gPSBbXG4gICAgICB7XG4gICAgICAgIGtleTogXCJ0ZW1wbGF0ZU9wdGlvbnMubWluTGVuZ3RoXCIsXG4gICAgICAgIHR5cGU6IFwibnVtYmVyc1wiLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogXCLmnIDlsJHlh6DmnaFcIixcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBfLmdldChmaWVsZCwgXCJ0ZW1wbGF0ZU9wdGlvbnMubWluTGVuZ3RoXCIpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy5tYXhMZW5ndGhcIixcbiAgICAgICAgdHlwZTogXCJudW1iZXJzXCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIuacgOWkmuWHoOadoVwiLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy5tYXhMZW5ndGhcIiksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6IFwidGVtcGxhdGVPcHRpb25zLnR5cGVcIixcbiAgICAgICAgdHlwZTogXCJyYWRpb2dyb3VwXCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIuaYvuekuuaWueW8j1wiLFxuICAgICAgICAgIHBhcmFtZXRlcmlkOiBcInBhcmEwMDFcIixcbiAgICAgICAgICBvcHRpb25zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxhYmVsOiBcIuWdl+eKtlwiLFxuICAgICAgICAgICAgICB2YWx1ZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsYWJlbDogXCLliJfooahcIixcbiAgICAgICAgICAgICAgdmFsdWU6IFwidGFibGVcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBfLmdldChmaWVsZCwgXCJ0ZW1wbGF0ZU9wdGlvbnMudHlwZVwiKSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICBwcml2YXRlIGRpbWlzc0NvbnRyYWN0KGZpZWxkOiBLcmVGb3JtRmllbGRDb25maWcpIHtcbiAgICBsZXQgY29uZmlnOiBLcmVGb3JtRmllbGRDb25maWdbXSA9IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZFwiLFxuICAgICAgICB0eXBlOiBcImRpbWlzc0NvbnRyYWN0XCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIlwiLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZFwiKSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHJldHVybiBjb25maWc7XG4gIH1cbn1cbiJdfQ==