@kre-form/ant
Version:
711 lines • 47.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Injectable } from "@angular/core";
import * as _ from "lodash";
var KreSetFormFieldService = /** @class */ (function () {
function KreSetFormFieldService() {
}
/**
* @param {?} field
* @return {?}
*/
KreSetFormFieldService.prototype.getKreFiledFunction = /**
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var fieldSource = this.getSourceFields(field);
/** @type {?} */
var fields = [];
/** @type {?} */
var 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 = tslib_1.__spread(fieldSource, fields);
return fieldSource;
};
/**
* @private
* @param {?} field
* @return {?}
*/
KreSetFormFieldService.prototype.getSourceFields = /**
* @private
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var 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、字符串
//1、字符串
/**
* @private
* @param {?} field
* @return {?}
*/
KreSetFormFieldService.prototype.text =
//1、字符串
/**
* @private
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var 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、多语言
//2、多语言
/**
* @private
* @param {?} field
* @return {?}
*/
KreSetFormFieldService.prototype.textI18N =
//2、多语言
/**
* @private
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = [
{
key: "templateOptions.required",
type: "checkbox",
templateOptions: {
label: "是否必填",
},
defaultValue: _.get(field, "templateOptions.required"),
},
];
return config;
};
//3、多行文本
//3、多行文本
/**
* @private
* @param {?} field
* @return {?}
*/
KreSetFormFieldService.prototype.textArea =
//3、多行文本
/**
* @private
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var 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、数字
//4、数字
/**
* @private
* @param {?} field
* @return {?}
*/
KreSetFormFieldService.prototype.number =
//4、数字
/**
* @private
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var 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、密码
//5、密码
/**
* @private
* @param {?} field
* @return {?}
*/
KreSetFormFieldService.prototype.passWord =
//5、密码
/**
* @private
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var 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、单选
//6、单选
/**
* @private
* @param {?} field
* @return {?}
*/
KreSetFormFieldService.prototype.radio =
//6、单选
/**
* @private
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = [
{
key: "templateOptions.required",
type: "checkbox",
templateOptions: {
label: "是否必填",
},
defaultValue: _.get(field, "templateOptions.required"),
},
];
return config;
};
//6、单选
//6、单选
/**
* @private
* @param {?} field
* @return {?}
*/
KreSetFormFieldService.prototype.radioGroup =
//6、单选
/**
* @private
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = [
{
key: "templateOptions.required",
type: "checkbox",
templateOptions: {
label: "是否必填",
},
defaultValue: _.get(field, "templateOptions.required"),
},
];
return config;
};
//7、复选
//7、复选
/**
* @private
* @param {?} field
* @return {?}
*/
KreSetFormFieldService.prototype.checkbox =
//7、复选
/**
* @private
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = [
{
key: "templateOptions.required",
type: "checkbox",
templateOptions: {
label: "是否必填",
},
defaultValue: _.get(field, "templateOptions.required"),
},
];
return config;
};
//8、下拉
//8、下拉
/**
* @private
* @param {?} field
* @return {?}
*/
KreSetFormFieldService.prototype.select =
//8、下拉
/**
* @private
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = [
{
key: "templateOptions.required",
type: "checkbox",
templateOptions: {
label: "是否必填",
},
defaultValue: _.get(field, "templateOptions.required"),
},
];
return config;
};
//9、日期
//9、日期
/**
* @private
* @param {?} field
* @return {?}
*/
KreSetFormFieldService.prototype.datetime =
//9、日期
/**
* @private
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = [
{
key: "templateOptions.required",
type: "checkbox",
templateOptions: {
label: "是否必填",
},
defaultValue: _.get(field, "templateOptions.required"),
},
];
return config;
};
//10、图片
//10、图片
/**
* @private
* @param {?} field
* @return {?}
*/
KreSetFormFieldService.prototype.image =
//10、图片
/**
* @private
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = [
{
key: "templateOptions.required",
type: "checkbox",
templateOptions: {
label: "是否必填",
},
defaultValue: _.get(field, "templateOptions.required"),
},
];
return config;
};
//11、附件
//11、附件
/**
* @private
* @param {?} field
* @return {?}
*/
KreSetFormFieldService.prototype.upload =
//11、附件
/**
* @private
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = [
{
key: "templateOptions.required",
type: "checkbox",
templateOptions: {
label: "是否必填",
},
defaultValue: _.get(field, "templateOptions.required"),
},
];
return config;
};
//12、弹框
//12、弹框
/**
* @private
* @param {?} field
* @return {?}
*/
KreSetFormFieldService.prototype.lookup =
//12、弹框
/**
* @private
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = [];
return config;
};
//13、html
//13、html
/**
* @private
* @param {?} field
* @return {?}
*/
KreSetFormFieldService.prototype.html =
//13、html
/**
* @private
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = [];
return config;
};
//14、html
//14、html
/**
* @private
* @param {?} field
* @return {?}
*/
KreSetFormFieldService.prototype.repeat =
//14、html
/**
* @private
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var 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 {?}
*/
KreSetFormFieldService.prototype.dimissContract = /**
* @private
* @param {?} field
* @return {?}
*/
function (field) {
/** @type {?} */
var config = [
{
key: "templateOptions.required",
type: "dimissContract",
templateOptions: {
label: "",
},
defaultValue: _.get(field, "templateOptions.required"),
},
];
return config;
};
KreSetFormFieldService.decorators = [
{ type: Injectable }
];
/** @nocollapse */
KreSetFormFieldService.ctorParameters = function () { return []; };
return KreSetFormFieldService;
}());
export { KreSetFormFieldService };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0RmllbGQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BrcmUtZm9ybS9hbnQvIiwic291cmNlcyI6WyJsaWIvdG9vbHMvc2V0RmllbGQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCO0lBRUU7SUFBZSxDQUFDOzs7OztJQUVoQixvREFBbUI7Ozs7SUFBbkIsVUFBb0IsS0FBeUI7O1lBQ3ZDLFdBQVcsR0FBeUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUM7O1lBQy9ELE1BQU0sR0FBeUIsRUFBRTs7WUFDakMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJO1FBQ3JCLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxNQUFNO2dCQUNULE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMxQixNQUFNO1lBQ1IsS0FBSyxVQUFVO2dCQUNiLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5QixNQUFNO1lBQ1IsS0FBSyxVQUFVO2dCQUNiLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5QixNQUFNO1lBQ1IsS0FBSyxTQUFTO2dCQUNaLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixNQUFNO1lBQ1IsS0FBSyxVQUFVO2dCQUNiLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5QixNQUFNO1lBQ1IsS0FBSyxPQUFPO2dCQUNWLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQixNQUFNO1lBQ1IsS0FBSyxZQUFZO2dCQUNmLE1B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QjtZQUNqQztnQkFDRSxHQUFHLEVBQUUsMEJBQTBCO2dCQUMvQixJQUFJLEVBQUUsZ0JBQWdCO2dCQUN0QixlQUFlLEVBQUU7b0JBQ2YsS0FBSyxFQUFFLEVBQUU7aUJBQ1Y7Z0JBQ0QsWUFBWSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLDBCQUEwQixDQUFDO2FBQ3ZEO1NBQ0Y7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOztnQkFqZUYsVUFBVTs7OztJQWtlWCw2QkFBQztDQUFBLEFBbGVELElBa2VDO1NBamVZLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEV2ZW50RW1pdHRlciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBLcmVUYWJsZUZpZWxkQ29uZmlnLCBLcmVGb3JtRmllbGRDb25maWcgfSBmcm9tIFwiQGtyZS1mb3JtL2NvcmVcIjtcbmltcG9ydCAqIGFzIF8gZnJvbSBcImxvZGFzaFwiO1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEtyZVNldEZvcm1GaWVsZFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgZ2V0S3JlRmlsZWRGdW5jdGlvbihmaWVsZDogS3JlRm9ybUZpZWxkQ29uZmlnKSB7XG4gICAgbGV0IGZpZWxkU291cmNlOiBLcmVGb3JtRmllbGRDb25maWdbXSA9IHRoaXMuZ2V0U291cmNlRmllbGRzKGZpZWxkKTtcbiAgICBsZXQgZmllbGRzOiBLcmVGb3JtRmllbGRDb25maWdbXSA9IFtdO1xuICAgIGxldCB0eXBlID0gZmllbGQudHlwZTtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgXCJ0ZXh0XCI6XG4gICAgICAgIGZpZWxkcyA9IHRoaXMudGV4dChmaWVsZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInRleHRpMThuXCI6XG4gICAgICAgIGZpZWxkcyA9IHRoaXMudGV4dEkxOE4oZmllbGQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJ0ZXh0YXJlYVwiOlxuICAgICAgICBmaWVsZHMgPSB0aGlzLnRleHRBcmVhKGZpZWxkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwibnVtYmVyc1wiOlxuICAgICAgICBmaWVsZHMgPSB0aGlzLm51bWJlcihmaWVsZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInBhc3N3b3JkXCI6XG4gICAgICAgIGZpZWxkcyA9IHRoaXMucGFzc1dvcmQoZmllbGQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJyYWRpb1wiOlxuICAgICAgICBmaWVsZHMgPSB0aGlzLnJhZGlvKGZpZWxkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwicmFkaW9ncm91cFwiOlxuICAgICAgICBmaWVsZHMgPSB0aGlzLnJhZGlvKGZpZWxkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiY2hlY2tib3hcIjpcbiAgICAgICAgZmllbGRzID0gdGhpcy5jaGVja2JveChmaWVsZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImNoZWNrYm94Z3JvdXBcIjpcbiAgICAgICAgZmllbGRzID0gdGhpcy5jaGVja2JveChmaWVsZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInNlbGVjdFwiOlxuICAgICAgICBmaWVsZHMgPSB0aGlzLnNlbGVjdChmaWVsZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImRhdGV0aW1lXCI6XG4gICAgICAgIGZpZWxkcyA9IHRoaXMuZGF0ZXRpbWUoZmllbGQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJpbWFnZVwiOlxuICAgICAgICBmaWVsZHMgPSB0aGlzLmltYWdlKGZpZWxkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwidXBsb2FkXCI6XG4gICAgICAgIGZpZWxkcyA9IHRoaXMudXBsb2FkKGZpZWxkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiaHRtbGNvbnRlbnRcIjpcbiAgICAgICAgZmllbGRzID0gdGhpcy5odG1sKGZpZWxkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwibG9va3VwXCI6XG4gICAgICAgIGZpZWxkcyA9IHRoaXMubG9va3VwKGZpZWxkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwicmVwZWF0XCI6XG4gICAgICAgIGZpZWxkcyA9IHRoaXMucmVwZWF0KGZpZWxkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiZGltaXNzQ29udHJhY3RcIjpcbiAgICAgICAgZmllbGRzID0gdGhpcy5kaW1pc3NDb250cmFjdChmaWVsZCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBmaWVsZHMucHVzaCh7XG4gICAgICBrZXk6IFwidGVtcGxhdGVPcHRpb25zLnBhdHRlcm5cIixcbiAgICAgIHR5cGU6IFwidGV4dGFyZWFcIixcbiAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICBsYWJlbDogXCLmraPliJnooajovr7lvI9cIixcbiAgICAgICAgcm93czogNCxcbiAgICAgIH0sXG4gICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy5wYXR0ZXJuXCIpLFxuICAgIH0pO1xuICAgIGZpZWxkU291cmNlID0gWy4uLmZpZWxkU291cmNlLCAuLi5maWVsZHNdO1xuICAgIHJldHVybiBmaWVsZFNvdXJjZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U291cmNlRmllbGRzKGZpZWxkOiBLcmVGb3JtRmllbGRDb25maWcpIHtcbiAgICBsZXQgY29uZmlnOiBLcmVGb3JtRmllbGRDb25maWdbXSA9IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiBcImtleVwiLFxuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IFwi5a2X5q6157yW56CBXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGVkaXRvcjogZmFsc2UsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZmllbGRbXCJrZXlcIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6IFwidGVtcGxhdGVPcHRpb25zLmxhYmVsXCIsXG4gICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogXCLmmL7npLrlkI3np7BcIixcbiAgICAgICAgfSxcbiAgICAgICAgZWRpdG9yOiBmYWxzZSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBfLmdldChmaWVsZCwgXCJ0ZW1wbGF0ZU9wdGlvbnMubGFiZWxcIiksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6IFwidHlwZVwiLFxuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IFwi5a2X5q6157G75Z6LXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGVkaXRvcjogZmFsc2UsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZmllbGRbXCJ0eXBlXCJdLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiBcImRlZmF1bHRWYWx1ZVwiLFxuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IFwi6buY6K6k5YC8XCIsXG4gICAgICAgIH0sXG4gICAgICAgIGVkaXRvcjogZmFsc2UsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZmllbGRbXCJkZWZhdWx0VmFsdWVcIl0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6IFwidGVtcGxhdGVPcHRpb25zLnRpcHNcIixcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIuaPkOekuuS/oeaBr1wiLFxuICAgICAgICB9LFxuICAgICAgICBlZGl0b3I6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy50aXBzXCIpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy5wbGFjZWhvbGRlclwiLFxuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IFwi5Y2g5L2N56ymXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGVkaXRvcjogZmFsc2UsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogXy5nZXQoZmllbGQsIFwidGVtcGxhdGVPcHRpb25zLnBsYWNlaG9sZGVyXCIpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiBcImVkaXRvclwiLFxuICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIuaYr+WQpuWPr+e8lui+kVwiLFxuICAgICAgICB9LFxuICAgICAgICBlZGl0b3I6IHRydWUsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogXy5nZXQoZmllbGQsIFwiZWRpdG9yXCIpLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIC8vMeOAgeWtl+espuS4slxuICBwcml2YXRlIHRleHQoZmllbGQ6IEtyZUZvcm1GaWVsZENvbmZpZykge1xuICAgIGxldCBjb25maWc6IEtyZUZvcm1GaWVsZENvbmZpZ1tdID0gW1xuICAgICAge1xuICAgICAgICBrZXk6IFwidGVtcGxhdGVPcHRpb25zLm1pbkxlbmd0aFwiLFxuICAgICAgICB0eXBlOiBcIm51bWJlcnNcIixcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IFwi5pyA5bCP6ZW/5bqmXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogXy5nZXQoZmllbGQsIFwidGVtcGxhdGVPcHRpb25zLm1pbkxlbmd0aFwiKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogXCJ0ZW1wbGF0ZU9wdGlvbnMubWF4TGVuZ3RoXCIsXG4gICAgICAgIHR5cGU6IFwibnVtYmVyc1wiLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogXCLmnIDlpKfplb/luqZcIixcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBfLmdldChmaWVsZCwgXCJ0ZW1wbGF0ZU9wdGlvbnMubWF4TGVuZ3RoXCIpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZFwiLFxuICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIuaYr+WQpuW/heWhq1wiLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZFwiKSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICAvLzLjgIHlpJror63oqIBcbiAgcHJpdmF0ZSB0ZXh0STE4TihmaWVsZDogS3JlRm9ybUZpZWxkQ29uZmlnKSB7XG4gICAgbGV0IGNvbmZpZzogS3JlRm9ybUZpZWxkQ29uZmlnW10gPSBbXG4gICAgICB7XG4gICAgICAgIGtleTogXCJ0ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWRcIixcbiAgICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogXCLmmK/lkKblv4XloatcIixcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBfLmdldChmaWVsZCwgXCJ0ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWRcIiksXG4gICAgICB9LFxuICAgIF07XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuICAvLzPjgIHlpJrooYzmlofmnKxcbiAgcHJpdmF0ZSB0ZXh0QXJlYShmaWVsZDogS3JlRm9ybUZpZWxkQ29uZmlnKSB7XG4gICAgbGV0IGNvbmZpZzogS3JlRm9ybUZpZWxkQ29uZmlnW10gPSBbXG4gICAgICB7XG4gICAgICAgIGtleTogXCJ0ZW1wbGF0ZU9wdGlvbnMubWluTGVuZ3RoXCIsXG4gICAgICAgIHR5cGU6IFwibnVtYmVyc1wiLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogXCLmnIDlsI/plb/luqZcIixcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBfLmdldChmaWVsZCwgXCJ0ZW1wbGF0ZU9wdGlvbnMubWluTGVuZ3RoXCIpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy5tYXhMZW5ndGhcIixcbiAgICAgICAgdHlwZTogXCJudW1iZXJzXCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIuacgOWkp+mVv+W6plwiLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy5tYXhMZW5ndGhcIiksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6IFwidGVtcGxhdGVPcHRpb25zLnJvd3NcIixcbiAgICAgICAgdHlwZTogXCJudW1iZXJzXCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIum7mOiupOihjOaVsFwiLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy5yb3dzXCIpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZFwiLFxuICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIuaYr+WQpuW/heWhq1wiLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZFwiKSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICAvLzTjgIHmlbDlrZdcbiAgcHJpdmF0ZSBudW1iZXIoZmllbGQ6IEtyZUZvcm1GaWVsZENvbmZpZykge1xuICAgIGxldCBjb25maWc6IEtyZUZvcm1GaWVsZENvbmZpZ1tdID0gW1xuICAgICAge1xuICAgICAgICBrZXk6IFwidGVtcGxhdGVPcHRpb25zLm1pblwiLFxuICAgICAgICB0eXBlOiBcIm51bWJlcnNcIixcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IFwi5pyA5bCP5YC8XCIsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogXy5nZXQoZmllbGQsIFwidGVtcGxhdGVPcHRpb25zLm1pblwiKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogXCJ0ZW1wbGF0ZU9wdGlvbnMubWF4XCIsXG4gICAgICAgIHR5cGU6IFwibnVtYmVyc1wiLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogXCLmnIDlpKflgLxcIixcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBfLmdldChmaWVsZCwgXCJ0ZW1wbGF0ZU9wdGlvbnMubWF4XCIpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy5wcmVjaXNpb25cIixcbiAgICAgICAgdHlwZTogXCJudW1iZXJzXCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIueyvuW6plwiLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy5wcmVjaXNpb25cIiksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6IFwidGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkXCIsXG4gICAgICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IFwi5piv5ZCm5b+F5aGrXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogXy5nZXQoZmllbGQsIFwidGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkXCIpLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIC8vNeOAgeWvhueggVxuICBwcml2YXRlIHBhc3NXb3JkKGZpZWxkOiBLcmVGb3JtRmllbGRDb25maWcpIHtcbiAgICBsZXQgY29uZmlnOiBLcmVGb3JtRmllbGRDb25maWdbXSA9IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy5taW5MZW5ndGhcIixcbiAgICAgICAgdHlwZTogXCJudW1iZXJzXCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIuacgOWwj+mVv+W6plwiLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy5taW5MZW5ndGhcIiksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6IFwidGVtcGxhdGVPcHRpb25zLm1heExlbmd0aFwiLFxuICAgICAgICB0eXBlOiBcIm51bWJlcnNcIixcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IFwi5pyA5aSn6ZW/5bqmXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogXy5nZXQoZmllbGQsIFwidGVtcGxhdGVPcHRpb25zLm1heExlbmd0aFwiKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogXCJ0ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWRcIixcbiAgICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogXCLmmK/lkKblv4XloatcIixcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBfLmdldChmaWVsZCwgXCJ0ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWRcIiksXG4gICAgICB9LFxuICAgIF07XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIC8vNuOAgeWNlemAiVxuICBwcml2YXRlIHJhZGlvKGZpZWxkOiBLcmVGb3JtRmllbGRDb25maWcpIHtcbiAgICBsZXQgY29uZmlnOiBLcmVGb3JtRmllbGRDb25maWdbXSA9IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZFwiLFxuICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIuaYr+WQpuW/heWhq1wiLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZFwiKSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHJldHVybiBjb25maWc7XG4gIH1cbiAgLy8244CB5Y2V6YCJXG4gIHByaXZhdGUgcmFkaW9Hcm91cChmaWVsZDogS3JlRm9ybUZpZWxkQ29uZmlnKSB7XG4gICAgbGV0IGNvbmZpZzogS3JlRm9ybUZpZWxkQ29uZmlnW10gPSBbXG4gICAgICB7XG4gICAgICAgIGtleTogXCJ0ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWRcIixcbiAgICAgICAgdHlwZTogXCJjaGVja2JveFwiLFxuICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICBsYWJlbDogXCLmmK/lkKblv4XloatcIixcbiAgICAgICAgfSxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBfLmdldChmaWVsZCwgXCJ0ZW1wbGF0ZU9wdGlvbnMucmVxdWlyZWRcIiksXG4gICAgICB9LFxuICAgIF07XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG4gIC8vN+OAgeWkjemAiVxuICBwcml2YXRlIGNoZWNrYm94KGZpZWxkOiBLcmVGb3JtRmllbGRDb25maWcpIHtcbiAgICBsZXQgY29uZmlnOiBLcmVGb3JtRmllbGRDb25maWdbXSA9IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZFwiLFxuICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIuaYr+WQpuW/heWhq1wiLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZFwiKSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICAvLzjjgIHkuIvmi4lcbiAgcHJpdmF0ZSBzZWxlY3QoZmllbGQ6IEtyZUZvcm1GaWVsZENvbmZpZykge1xuICAgIGxldCBjb25maWc6IEtyZUZvcm1GaWVsZENvbmZpZ1tdID0gW1xuICAgICAge1xuICAgICAgICBrZXk6IFwidGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkXCIsXG4gICAgICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IFwi5piv5ZCm5b+F5aGrXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogXy5nZXQoZmllbGQsIFwidGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkXCIpLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIC8vOeOAgeaXpeacn1xuICBwcml2YXRlIGRhdGV0aW1lKGZpZWxkOiBLcmVGb3JtRmllbGRDb25maWcpIHtcbiAgICBsZXQgY29uZmlnOiBLcmVGb3JtRmllbGRDb25maWdbXSA9IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZFwiLFxuICAgICAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIuaYr+WQpuW/heWhq1wiLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy5yZXF1aXJlZFwiKSxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICAvLzEw44CB5Zu+54mHXG4gIHByaXZhdGUgaW1hZ2UoZmllbGQ6IEtyZUZvcm1GaWVsZENvbmZpZykge1xuICAgIGxldCBjb25maWc6IEtyZUZvcm1GaWVsZENvbmZpZ1tdID0gW1xuICAgICAge1xuICAgICAgICBrZXk6IFwidGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkXCIsXG4gICAgICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IFwi5piv5ZCm5b+F5aGrXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogXy5nZXQoZmllbGQsIFwidGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkXCIpLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIC8vMTHjgIHpmYTku7ZcbiAgcHJpdmF0ZSB1cGxvYWQoZmllbGQ6IEtyZUZvcm1GaWVsZENvbmZpZykge1xuICAgIGxldCBjb25maWc6IEtyZUZvcm1GaWVsZENvbmZpZ1tdID0gW1xuICAgICAge1xuICAgICAgICBrZXk6IFwidGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkXCIsXG4gICAgICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IFwi5piv5ZCm5b+F5aGrXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogXy5nZXQoZmllbGQsIFwidGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkXCIpLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIC8vMTLjgIHlvLnmoYZcbiAgcHJpdmF0ZSBsb29rdXAoZmllbGQ6IEtyZUZvcm1GaWVsZENvbmZpZykge1xuICAgIGxldCBjb25maWc6IEtyZUZvcm1GaWVsZENvbmZpZ1tdID0gW107XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgLy8xM+OAgWh0bWxcbiAgcHJpdmF0ZSBodG1sKGZpZWxkOiBLcmVGb3JtRmllbGRDb25maWcpIHtcbiAgICBsZXQgY29uZmlnOiBLcmVGb3JtRmllbGRDb25maWdbXSA9IFtdO1xuXG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIC8vMTTjgIFodG1sXG4gIHByaXZhdGUgcmVwZWF0KGZpZWxkOiBLcmVGb3JtRmllbGRDb25maWcpIHtcbiAgICBsZXQgY29uZmlnOiBLcmVGb3JtRmllbGRDb25maWdbXSA9IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInRlbXBsYXRlT3B0aW9ucy5taW5MZW5ndGhcIixcbiAgICAgICAgdHlwZTogXCJudW1iZXJzXCIsXG4gICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgIGxhYmVsOiBcIuacgOWwkeWHoOadoVwiLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy5taW5MZW5ndGhcIiksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6IFwidGVtcGxhdGVPcHRpb25zLm1heExlbmd0aFwiLFxuICAgICAgICB0eXBlOiBcIm51bWJlcnNcIixcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IFwi5pyA5aSa5Yeg5p2hXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogXy5nZXQoZmllbGQsIFwidGVtcGxhdGVPcHRpb25zLm1heExlbmd0aFwiKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogXCJ0ZW1wbGF0ZU9wdGlvbnMudHlwZVwiLFxuICAgICAgICB0eXBlOiBcInJhZGlvZ3JvdXBcIixcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IFwi5pi+56S65pa55byPXCIsXG4gICAgICAgICAgcGFyYW1ldGVyaWQ6IFwicGFyYTAwMVwiLFxuICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFiZWw6IFwi5Z2X54q2XCIsXG4gICAgICAgICAgICAgIHZhbHVlOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxhYmVsOiBcIuWIl+ihqFwiLFxuICAgICAgICAgICAgICB2YWx1ZTogXCJ0YWJsZVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBkZWZhdWx0VmFsdWU6IF8uZ2V0KGZpZWxkLCBcInRlbXBsYXRlT3B0aW9ucy50eXBlXCIpLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIHByaXZhdGUgZGltaXNzQ29udHJhY3QoZmllbGQ6IEtyZUZvcm1GaWVsZENvbmZpZykge1xuICAgIGxldCBjb25maWc6IEtyZUZvcm1GaWVsZENvbmZpZ1tdID0gW1xuICAgICAge1xuICAgICAgICBrZXk6IFwidGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkXCIsXG4gICAgICAgIHR5cGU6IFwiZGltaXNzQ29udHJhY3RcIixcbiAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgbGFiZWw6IFwiXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogXy5nZXQoZmllbGQsIFwidGVtcGxhdGVPcHRpb25zLnJlcXVpcmVkXCIpLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxufVxuIl19