kwikid-forms 0.4.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/kwikid-forms.umd.js +1904 -3666
- package/bundles/kwikid-forms.umd.js.map +1 -1
- package/esm2015/lib/builder/builder-form-editor/builder-form-editor.component.js +403 -0
- package/esm2015/lib/builder/builder-form-editor/builder-form-editor.definitions.js +6 -0
- package/esm2015/lib/builder/builder-form-editor/builder-form-editor.helper.js +29 -0
- package/esm2015/lib/builder/builder-form-editor/builder-form-editor.module.js +39 -0
- package/esm2015/lib/builder/builder-form-editor/builder.form-editor.constants.js +189 -0
- package/esm2015/lib/builder/builder-form-editor/builder.form-editor.service.js +43 -0
- package/esm2015/lib/builder/builder-form-list/builder-forms-list.component.js +99 -0
- package/esm2015/lib/builder/builder-form-list/builder-forms-list.module.js +40 -0
- package/esm2015/lib/builder/builder.component.js +111 -258
- package/esm2015/lib/builder/builder.helper.js +78 -0
- package/esm2015/lib/builder/builder.module.js +15 -72
- package/esm2015/lib/kwikid-forms.module.js +4 -16
- package/esm2015/lib/renderer/config-converter/config-converter.constants.js +74 -0
- package/esm2015/lib/renderer/config-converter/config-converter.helper.js +49 -0
- package/esm2015/lib/renderer/config-converter/config-converter.js +514 -0
- package/esm2015/lib/renderer/form-view/definitions/form-view.actions.definition.js +2 -1
- package/esm2015/lib/renderer/form-view/definitions/form-view.fields.definition.js +2 -1
- package/esm2015/lib/renderer/form-view/form-view.component.js +52 -51
- package/esm2015/lib/renderer/form-view/form-view.module.js +7 -6
- package/esm2015/lib/renderer/forms-list/forms-list.component.js +3 -5
- package/esm2015/lib/renderer/forms-list/forms-list.module.js +7 -5
- package/esm2015/lib/renderer/renderer.component.js +4 -6
- package/esm2015/public_api.js +1 -3
- package/fesm2015/kwikid-forms.js +1482 -5044
- package/fesm2015/kwikid-forms.js.map +1 -1
- package/lib/builder/builder-form-editor/builder-form-editor.component.d.ts +108 -0
- package/lib/builder/builder-form-editor/builder-form-editor.definitions.d.ts +5 -0
- package/lib/builder/builder-form-editor/builder-form-editor.helper.d.ts +3 -0
- package/lib/builder/builder-form-editor/builder-form-editor.module.d.ts +11 -0
- package/lib/{builder2 → builder}/builder-form-editor/builder.form-editor.constants.d.ts +76 -0
- package/lib/builder/builder-form-editor/builder.form-editor.service.d.ts +7 -0
- package/lib/{builder2 → builder}/builder-form-list/builder-forms-list.component.d.ts +2 -1
- package/lib/{builder2 → builder}/builder-form-list/builder-forms-list.module.d.ts +1 -1
- package/lib/builder/builder.component.d.ts +15 -34
- package/lib/builder/builder.helper.d.ts +1 -0
- package/lib/builder/builder.module.d.ts +7 -21
- package/lib/kwikid-forms.module.d.ts +2 -3
- package/lib/renderer/config-converter/config-converter.constants.d.ts +73 -0
- package/lib/renderer/config-converter/config-converter.d.ts +5 -0
- package/lib/renderer/config-converter/config-converter.helper.d.ts +7 -0
- package/lib/renderer/form-view/definitions/form-view.actions.definition.d.ts +3 -2
- package/lib/renderer/form-view/definitions/form-view.fields.definition.d.ts +1 -0
- package/lib/renderer/form-view/form-view.component.d.ts +2 -5
- package/lib/renderer/form-view/form-view.module.d.ts +7 -9
- package/lib/renderer/forms-list/forms-list.module.d.ts +5 -6
- package/package.json +3 -3
- package/public_api.d.ts +0 -2
- package/esm2015/lib/builder/element-config-editor/editors/basic/checkbox-config.editor.component.js +0 -72
- package/esm2015/lib/builder/element-config-editor/editors/basic/date-config.editor.component.js +0 -72
- package/esm2015/lib/builder/element-config-editor/editors/basic/number-config.editor.component.js +0 -72
- package/esm2015/lib/builder/element-config-editor/editors/basic/otp-config.editor.component.js +0 -130
- package/esm2015/lib/builder/element-config-editor/editors/basic/phone-config.editor.component.js +0 -132
- package/esm2015/lib/builder/element-config-editor/editors/basic/radio-config.editor.component.js +0 -396
- package/esm2015/lib/builder/element-config-editor/editors/basic/select-config.editor.component.js +0 -302
- package/esm2015/lib/builder/element-config-editor/editors/basic/text-config.editor.component.js +0 -132
- package/esm2015/lib/builder/element-config-editor/editors/basic-element-config.editor.component.js +0 -698
- package/esm2015/lib/builder/element-config-editor/editors/document/aadhaar-number-config.editor.component.js +0 -130
- package/esm2015/lib/builder/element-config-editor/editors/document/pan-number-config.editor.component.js +0 -135
- package/esm2015/lib/builder/element-config-editor/editors/document-element-config.editor.component.js +0 -610
- package/esm2015/lib/builder/element-config-editor/editors/other/html-config.editor.component.js +0 -120
- package/esm2015/lib/builder/element-config-editor/editors/other/title-config.editor.component.js +0 -121
- package/esm2015/lib/builder/element-config-editor/editors/other-element-config.editor.component.js +0 -214
- package/esm2015/lib/builder/element-config-editor/element-config-editor.component.js +0 -97
- package/esm2015/lib/builder/shared/elements.js +0 -90
- package/esm2015/lib/builder/shared/helpers.js +0 -6
- package/esm2015/lib/builder2/builder-form-editor/builder-form-editor.component.js +0 -268
- package/esm2015/lib/builder2/builder-form-editor/builder-form-editor.module.js +0 -38
- package/esm2015/lib/builder2/builder-form-editor/builder-form-editor.pipe.js +0 -19
- package/esm2015/lib/builder2/builder-form-editor/builder.form-editor.constants.js +0 -178
- package/esm2015/lib/builder2/builder-form-list/builder-forms-list.component.js +0 -85
- package/esm2015/lib/builder2/builder-form-list/builder-forms-list.module.js +0 -37
- package/esm2015/lib/builder2/builder2.component.js +0 -169
- package/esm2015/lib/builder2/builder2.module.js +0 -46
- package/esm2015/lib/renderer/config-converter.helper.js +0 -629
- package/esm2015/lib/renderer/form-view/pipes/safe-html.pipe.js +0 -25
- package/esm2015/lib/renderer/form-view/pipes/safe-url.pipe.js +0 -25
- package/esm2015/lib/renderer/forms-list/pipes/safe-html.pipe.js +0 -25
- package/lib/builder/element-config-editor/editors/basic/checkbox-config.editor.component.d.ts +0 -16
- package/lib/builder/element-config-editor/editors/basic/date-config.editor.component.d.ts +0 -16
- package/lib/builder/element-config-editor/editors/basic/number-config.editor.component.d.ts +0 -16
- package/lib/builder/element-config-editor/editors/basic/otp-config.editor.component.d.ts +0 -16
- package/lib/builder/element-config-editor/editors/basic/phone-config.editor.component.d.ts +0 -16
- package/lib/builder/element-config-editor/editors/basic/radio-config.editor.component.d.ts +0 -25
- package/lib/builder/element-config-editor/editors/basic/select-config.editor.component.d.ts +0 -24
- package/lib/builder/element-config-editor/editors/basic/text-config.editor.component.d.ts +0 -16
- package/lib/builder/element-config-editor/editors/basic-element-config.editor.component.d.ts +0 -20
- package/lib/builder/element-config-editor/editors/document/aadhaar-number-config.editor.component.d.ts +0 -16
- package/lib/builder/element-config-editor/editors/document/pan-number-config.editor.component.d.ts +0 -16
- package/lib/builder/element-config-editor/editors/document-element-config.editor.component.d.ts +0 -20
- package/lib/builder/element-config-editor/editors/other/html-config.editor.component.d.ts +0 -16
- package/lib/builder/element-config-editor/editors/other/title-config.editor.component.d.ts +0 -16
- package/lib/builder/element-config-editor/editors/other-element-config.editor.component.d.ts +0 -20
- package/lib/builder/element-config-editor/element-config-editor.component.d.ts +0 -20
- package/lib/builder/shared/elements.d.ts +0 -34
- package/lib/builder/shared/helpers.d.ts +0 -1
- package/lib/builder2/builder-form-editor/builder-form-editor.component.d.ts +0 -48
- package/lib/builder2/builder-form-editor/builder-form-editor.module.d.ts +0 -12
- package/lib/builder2/builder-form-editor/builder-form-editor.pipe.d.ts +0 -7
- package/lib/builder2/builder2.component.d.ts +0 -37
- package/lib/builder2/builder2.module.d.ts +0 -13
- package/lib/renderer/config-converter.helper.d.ts +0 -9
- package/lib/renderer/form-view/pipes/safe-html.pipe.d.ts +0 -15
- package/lib/renderer/form-view/pipes/safe-url.pipe.d.ts +0 -15
- package/lib/renderer/forms-list/pipes/safe-html.pipe.d.ts +0 -15
|
@@ -0,0 +1,514 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { checkObjectKeyExists, checkObjectPathExists, isEmptyValue, isNotEmptyValue, logMethod, mergeObjects, setMissingKeyValue, setValueToObjectPath } from "kwikid-toolkit";
|
|
3
|
+
import { EFieldType } from "../form-view/definitions/form-view.fields.definition";
|
|
4
|
+
import { FIELD_PROPERTIES } from "./config-converter.constants";
|
|
5
|
+
import { getFormFields, getMaxDate, getMinDate, setFieldAsFormElement, setFieldKeyHidden, setFieldKeyValue, setMissingFieldKeyValue } from "./config-converter.helper";
|
|
6
|
+
export class Converter {
|
|
7
|
+
updateFormConfigMiscellaneous(formConfig, args) {
|
|
8
|
+
if (checkObjectKeyExists(args, "formsListLength")) {
|
|
9
|
+
formConfig = setValueToObjectPath(formConfig, "formsListLength", args.formsListLength);
|
|
10
|
+
}
|
|
11
|
+
return formConfig;
|
|
12
|
+
}
|
|
13
|
+
updateFormConfigProperties(formConfig) {
|
|
14
|
+
var _a;
|
|
15
|
+
const formViewProperties = {
|
|
16
|
+
header: {
|
|
17
|
+
backButton: {
|
|
18
|
+
mode: "TABBED",
|
|
19
|
+
bypassConfirmation: false,
|
|
20
|
+
hidden: true
|
|
21
|
+
},
|
|
22
|
+
title: {
|
|
23
|
+
hidden: false,
|
|
24
|
+
label: (_a = formConfig === null || formConfig === void 0 ? void 0 : formConfig.title) !== null && _a !== void 0 ? _a : "Form"
|
|
25
|
+
},
|
|
26
|
+
steps: {
|
|
27
|
+
hidden: false
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
footer: {
|
|
31
|
+
viewFormsButton: {
|
|
32
|
+
bypassConfirmation: false,
|
|
33
|
+
hidden: false,
|
|
34
|
+
label: "View Forms"
|
|
35
|
+
},
|
|
36
|
+
saveButton: {
|
|
37
|
+
hidden: false,
|
|
38
|
+
label: "Save"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
if (checkObjectKeyExists(formConfig, "properties")) {
|
|
43
|
+
formConfig.properties = mergeObjects(formViewProperties, formConfig.properties);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
formConfig.properties = formViewProperties;
|
|
47
|
+
}
|
|
48
|
+
return formConfig;
|
|
49
|
+
}
|
|
50
|
+
convertFormConfig(formConfig) {
|
|
51
|
+
const formatOnFieldType = (field) => {
|
|
52
|
+
const formatFieldTypeHtml = (field) => {
|
|
53
|
+
field = setFieldKeyHidden(field);
|
|
54
|
+
field = setFieldAsFormElement(field, false);
|
|
55
|
+
return field;
|
|
56
|
+
};
|
|
57
|
+
const formatFieldTypeTitle = (field) => {
|
|
58
|
+
field = setFieldKeyHidden(field);
|
|
59
|
+
field = setFieldAsFormElement(field, false);
|
|
60
|
+
return field;
|
|
61
|
+
};
|
|
62
|
+
const formatFieldTypeText = (field) => {
|
|
63
|
+
field = setFieldKeyHidden(field);
|
|
64
|
+
field = setFieldAsFormElement(field, true);
|
|
65
|
+
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], field.properties);
|
|
66
|
+
return field;
|
|
67
|
+
};
|
|
68
|
+
const formatFieldTypeTextarea = (field) => {
|
|
69
|
+
field = setFieldKeyHidden(field);
|
|
70
|
+
field = setFieldAsFormElement(field, true);
|
|
71
|
+
return field;
|
|
72
|
+
};
|
|
73
|
+
const formatFieldTypeCheckbox = (field) => {
|
|
74
|
+
field = setFieldKeyHidden(field);
|
|
75
|
+
field = setFieldAsFormElement(field, true);
|
|
76
|
+
return field;
|
|
77
|
+
};
|
|
78
|
+
const formatFieldTypeNumber = (field) => {
|
|
79
|
+
field = setFieldKeyHidden(field);
|
|
80
|
+
field = setFieldAsFormElement(field, true);
|
|
81
|
+
if (checkObjectKeyExists(field, "key")) {
|
|
82
|
+
if (field.key === "aadhaar_number") {
|
|
83
|
+
field = setFieldKeyValue(field, "type", "aadhaar_number");
|
|
84
|
+
}
|
|
85
|
+
if (field.key === "contact_number") {
|
|
86
|
+
field = setFieldKeyValue(field, "type", "phone");
|
|
87
|
+
}
|
|
88
|
+
if (field.type === "phone" || field.type === "number") {
|
|
89
|
+
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], field.properties);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return field;
|
|
93
|
+
};
|
|
94
|
+
const formatFieldTypeImage = (field) => {
|
|
95
|
+
field = setFieldKeyHidden(field);
|
|
96
|
+
field = setFieldAsFormElement(field, true);
|
|
97
|
+
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], field.properties);
|
|
98
|
+
return field;
|
|
99
|
+
};
|
|
100
|
+
const formatFieldTypeDate = (field) => {
|
|
101
|
+
field = setFieldKeyHidden(field);
|
|
102
|
+
field = setFieldAsFormElement(field, true);
|
|
103
|
+
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], {
|
|
104
|
+
max: getMaxDate(field),
|
|
105
|
+
min: getMinDate(field)
|
|
106
|
+
}, field.properties);
|
|
107
|
+
return field;
|
|
108
|
+
};
|
|
109
|
+
const formatFieldTypePhone = (field) => {
|
|
110
|
+
field = setFieldKeyHidden(field);
|
|
111
|
+
field = setFieldAsFormElement(field, true);
|
|
112
|
+
return field;
|
|
113
|
+
};
|
|
114
|
+
const formatFieldTypeRadio = (field) => {
|
|
115
|
+
field = setFieldKeyHidden(field);
|
|
116
|
+
field = setFieldAsFormElement(field, true);
|
|
117
|
+
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], field.properties);
|
|
118
|
+
field.options = field.options.map((x) => {
|
|
119
|
+
if (typeof x === "string" || typeof x === "number") {
|
|
120
|
+
return { label: x, disabled: false, description: "" };
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
if (checkObjectKeyExists(x, "label") &&
|
|
124
|
+
checkObjectKeyExists(x, "disabled") &&
|
|
125
|
+
checkObjectKeyExists(x, "description")) {
|
|
126
|
+
return x;
|
|
127
|
+
}
|
|
128
|
+
if (!checkObjectKeyExists(x, "disabled")) {
|
|
129
|
+
x = Object.assign(Object.assign({}, x), { disabled: false });
|
|
130
|
+
}
|
|
131
|
+
if (!checkObjectKeyExists(x, "description")) {
|
|
132
|
+
x = Object.assign(Object.assign({}, x), { description: false });
|
|
133
|
+
}
|
|
134
|
+
return x;
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
return field;
|
|
138
|
+
};
|
|
139
|
+
const formatFieldTypeSlider = (field) => {
|
|
140
|
+
field = setFieldKeyHidden(field);
|
|
141
|
+
field = setFieldAsFormElement(field, true);
|
|
142
|
+
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], field.properties);
|
|
143
|
+
return field;
|
|
144
|
+
};
|
|
145
|
+
const formatFieldTypeSelect = (field) => {
|
|
146
|
+
field = setFieldKeyHidden(field);
|
|
147
|
+
field = setFieldAsFormElement(field, true);
|
|
148
|
+
return field;
|
|
149
|
+
};
|
|
150
|
+
const formatFieldTypeApi = (field) => {
|
|
151
|
+
field = setFieldAsFormElement(field, true);
|
|
152
|
+
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], field.properties);
|
|
153
|
+
if (!checkObjectKeyExists(field, "showLoader")) {
|
|
154
|
+
field = setFieldKeyValue(field, "showLoader", false);
|
|
155
|
+
}
|
|
156
|
+
if (!checkObjectKeyExists(field, "api")) {
|
|
157
|
+
const fieldApiDefaults = {
|
|
158
|
+
url: "",
|
|
159
|
+
request: {},
|
|
160
|
+
response: {},
|
|
161
|
+
status: {
|
|
162
|
+
value: "default",
|
|
163
|
+
labels: {
|
|
164
|
+
default: "Call API",
|
|
165
|
+
loading: "Call API",
|
|
166
|
+
success: "API Success",
|
|
167
|
+
failed: "API Failed"
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
field.api = mergeObjects(fieldApiDefaults, fieldApiDefaults);
|
|
172
|
+
}
|
|
173
|
+
if (!checkObjectKeyExists(field.api, "request") &&
|
|
174
|
+
!checkObjectKeyExists(field.api, "entrypoint")) {
|
|
175
|
+
const apiEntrypoint = {
|
|
176
|
+
triggers: ["ON_API_CALL"],
|
|
177
|
+
rules: [],
|
|
178
|
+
actions: [
|
|
179
|
+
{
|
|
180
|
+
id: "1",
|
|
181
|
+
key: "API_CALL",
|
|
182
|
+
condition: "true",
|
|
183
|
+
props: {
|
|
184
|
+
fieldKey: field.key,
|
|
185
|
+
apiKey: field.api.endpoints[0].apiKey
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
]
|
|
189
|
+
};
|
|
190
|
+
field.entrypoint = mergeObjects(apiEntrypoint, field.api);
|
|
191
|
+
}
|
|
192
|
+
return field;
|
|
193
|
+
};
|
|
194
|
+
const formatFieldTypeOtp = (field) => {
|
|
195
|
+
var _a, _b;
|
|
196
|
+
field = setFieldKeyHidden(field);
|
|
197
|
+
field = setFieldAsFormElement(field, true);
|
|
198
|
+
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], {
|
|
199
|
+
mask: new Array((_b = (_a = field === null || field === void 0 ? void 0 : field.properties) === null || _a === void 0 ? void 0 : _a.otpLength) !== null && _b !== void 0 ? _b : 4)
|
|
200
|
+
.fill("#")
|
|
201
|
+
.join(" ")
|
|
202
|
+
}, field.properties);
|
|
203
|
+
return field;
|
|
204
|
+
};
|
|
205
|
+
const formatFieldTypeAadhaarNumber = (field) => {
|
|
206
|
+
field = setFieldKeyHidden(field);
|
|
207
|
+
field = setFieldAsFormElement(field, true);
|
|
208
|
+
return field;
|
|
209
|
+
};
|
|
210
|
+
const formatFieldTypeFile = (field) => {
|
|
211
|
+
field = setFieldKeyHidden(field);
|
|
212
|
+
field = setFieldAsFormElement(field, true);
|
|
213
|
+
field.properties = mergeObjects(FIELD_PROPERTIES[field.type], field.properties);
|
|
214
|
+
return field;
|
|
215
|
+
};
|
|
216
|
+
switch (field.type) {
|
|
217
|
+
case EFieldType.HTML:
|
|
218
|
+
field = formatFieldTypeHtml(field);
|
|
219
|
+
break;
|
|
220
|
+
case EFieldType.TITLE:
|
|
221
|
+
field = formatFieldTypeTitle(field);
|
|
222
|
+
break;
|
|
223
|
+
case EFieldType.TEXT:
|
|
224
|
+
field = formatFieldTypeText(field);
|
|
225
|
+
break;
|
|
226
|
+
case EFieldType.TEXTAREA:
|
|
227
|
+
field = formatFieldTypeTextarea(field);
|
|
228
|
+
break;
|
|
229
|
+
case EFieldType.CHECKBOX:
|
|
230
|
+
field = formatFieldTypeCheckbox(field);
|
|
231
|
+
break;
|
|
232
|
+
case EFieldType.NUMBER:
|
|
233
|
+
field = formatFieldTypeNumber(field);
|
|
234
|
+
break;
|
|
235
|
+
case EFieldType.PREVIEW_IMAGE:
|
|
236
|
+
field = setFieldKeyValue(field, "type", "image");
|
|
237
|
+
field = formatFieldTypeImage(field);
|
|
238
|
+
break;
|
|
239
|
+
case EFieldType.IMAGE:
|
|
240
|
+
field = formatFieldTypeImage(field);
|
|
241
|
+
break;
|
|
242
|
+
case EFieldType.DATE:
|
|
243
|
+
field = formatFieldTypeDate(field);
|
|
244
|
+
break;
|
|
245
|
+
case EFieldType.PHONE:
|
|
246
|
+
field = formatFieldTypePhone(field);
|
|
247
|
+
break;
|
|
248
|
+
case EFieldType.RADIO:
|
|
249
|
+
field = formatFieldTypeRadio(field);
|
|
250
|
+
break;
|
|
251
|
+
case EFieldType.SLIDER:
|
|
252
|
+
field = formatFieldTypeSlider(field);
|
|
253
|
+
break;
|
|
254
|
+
case "search-text":
|
|
255
|
+
field = setFieldKeyValue(field, "type", "select");
|
|
256
|
+
field = formatFieldTypeSelect(field);
|
|
257
|
+
break;
|
|
258
|
+
case EFieldType.DROPDOWN_WITH_SEARCH:
|
|
259
|
+
field = setFieldKeyValue(field, "type", "select");
|
|
260
|
+
field = formatFieldTypeSelect(field);
|
|
261
|
+
break;
|
|
262
|
+
case EFieldType.SELECT:
|
|
263
|
+
field = formatFieldTypeSelect(field);
|
|
264
|
+
break;
|
|
265
|
+
case EFieldType.API_CALL:
|
|
266
|
+
field = setFieldKeyValue(field, "type", "api");
|
|
267
|
+
field = formatFieldTypeApi(field);
|
|
268
|
+
break;
|
|
269
|
+
case EFieldType.API:
|
|
270
|
+
field = formatFieldTypeApi(field);
|
|
271
|
+
break;
|
|
272
|
+
case EFieldType.OTP:
|
|
273
|
+
field = formatFieldTypeOtp(field);
|
|
274
|
+
break;
|
|
275
|
+
case EFieldType.AADHAAR_NUMBER:
|
|
276
|
+
field = formatFieldTypeAadhaarNumber(field);
|
|
277
|
+
break;
|
|
278
|
+
case EFieldType.FILE:
|
|
279
|
+
field = formatFieldTypeFile(field);
|
|
280
|
+
break;
|
|
281
|
+
default:
|
|
282
|
+
break;
|
|
283
|
+
}
|
|
284
|
+
return field;
|
|
285
|
+
};
|
|
286
|
+
const updateFieldValidators = (field) => {
|
|
287
|
+
var _a, _b, _c, _d, _e;
|
|
288
|
+
if (field.isFormElement) {
|
|
289
|
+
const validators = checkObjectKeyExists(field, "validators")
|
|
290
|
+
? field.validators
|
|
291
|
+
: {};
|
|
292
|
+
field = setMissingFieldKeyValue(field, "validators", {});
|
|
293
|
+
field = setFieldKeyValue(field, "validators", Object.assign(Object.assign({}, field["validators"]), { min: checkObjectKeyExists(validators, "min")
|
|
294
|
+
? isNotEmptyValue(validators.min)
|
|
295
|
+
? Number(validators.min)
|
|
296
|
+
: null
|
|
297
|
+
: checkObjectKeyExists(field, "min")
|
|
298
|
+
? Number(field.min)
|
|
299
|
+
: null, max: checkObjectKeyExists(validators, "max")
|
|
300
|
+
? isNotEmptyValue(validators.max)
|
|
301
|
+
? Number(validators.max)
|
|
302
|
+
: null
|
|
303
|
+
: checkObjectKeyExists(field, "max")
|
|
304
|
+
? Number(field.max)
|
|
305
|
+
: null, required: checkObjectKeyExists(validators, "required")
|
|
306
|
+
? Boolean(validators.required)
|
|
307
|
+
: checkObjectKeyExists(field, "required")
|
|
308
|
+
? Boolean(field.required)
|
|
309
|
+
: false, minLength: checkObjectKeyExists(validators, "minLength")
|
|
310
|
+
? isNotEmptyValue(validators.minLength)
|
|
311
|
+
? Number(validators.minLength)
|
|
312
|
+
: null
|
|
313
|
+
: checkObjectKeyExists(field, "minLength")
|
|
314
|
+
? Number(field.minLength)
|
|
315
|
+
: null, maxLength: checkObjectKeyExists(validators, "maxLength")
|
|
316
|
+
? isNotEmptyValue(validators.maxLength)
|
|
317
|
+
? Number(validators.maxLength)
|
|
318
|
+
: null
|
|
319
|
+
: checkObjectKeyExists(field, "length")
|
|
320
|
+
? Number(field.length)
|
|
321
|
+
: checkObjectKeyExists(field, "maxLength")
|
|
322
|
+
? Number(field.maxLength)
|
|
323
|
+
: null, pattern: checkObjectKeyExists(validators, "pattern")
|
|
324
|
+
? isNotEmptyValue(validators.pattern)
|
|
325
|
+
? validators.pattern
|
|
326
|
+
: undefined
|
|
327
|
+
: checkObjectKeyExists(field, "pattern")
|
|
328
|
+
? { key: "CUSTOM", pattern: String(field.pattern) }
|
|
329
|
+
: checkObjectKeyExists(field, "regex")
|
|
330
|
+
? { key: "CUSTOM", pattern: String(field.regex) }
|
|
331
|
+
: undefined }));
|
|
332
|
+
delete field.min;
|
|
333
|
+
delete field.max;
|
|
334
|
+
delete field.required;
|
|
335
|
+
delete field.minLength;
|
|
336
|
+
delete field.length;
|
|
337
|
+
delete field.maxLength;
|
|
338
|
+
delete field.pattern;
|
|
339
|
+
delete field.regex;
|
|
340
|
+
switch (field.type) {
|
|
341
|
+
case EFieldType.TEXT:
|
|
342
|
+
delete field.validators.min;
|
|
343
|
+
delete field.validators.max;
|
|
344
|
+
break;
|
|
345
|
+
case EFieldType.CHECKBOX:
|
|
346
|
+
delete field.validators.min;
|
|
347
|
+
delete field.validators.max;
|
|
348
|
+
case EFieldType.PREVIEW_IMAGE:
|
|
349
|
+
delete field.validators.min;
|
|
350
|
+
delete field.validators.max;
|
|
351
|
+
delete field.validators.minLength;
|
|
352
|
+
delete field.validators.maxLength;
|
|
353
|
+
case EFieldType.FILE:
|
|
354
|
+
delete field.validators.min;
|
|
355
|
+
delete field.validators.max;
|
|
356
|
+
delete field.validators.minLength;
|
|
357
|
+
delete field.validators.maxLength;
|
|
358
|
+
delete field.validators.pattern;
|
|
359
|
+
break;
|
|
360
|
+
default:
|
|
361
|
+
break;
|
|
362
|
+
}
|
|
363
|
+
if (isEmptyValue((_a = field.validators) === null || _a === void 0 ? void 0 : _a.min)) {
|
|
364
|
+
delete field.validators.min;
|
|
365
|
+
}
|
|
366
|
+
if (isEmptyValue((_b = field.validators) === null || _b === void 0 ? void 0 : _b.max)) {
|
|
367
|
+
delete field.validators.min;
|
|
368
|
+
}
|
|
369
|
+
if (isEmptyValue((_c = field.validators) === null || _c === void 0 ? void 0 : _c.minLength)) {
|
|
370
|
+
delete field.validators.minLength;
|
|
371
|
+
}
|
|
372
|
+
if (isEmptyValue((_d = field.validators) === null || _d === void 0 ? void 0 : _d.maxLength)) {
|
|
373
|
+
delete field.validators.maxLength;
|
|
374
|
+
}
|
|
375
|
+
if (isEmptyValue((_e = field.validators) === null || _e === void 0 ? void 0 : _e.pattern)) {
|
|
376
|
+
delete field.validators.pattern;
|
|
377
|
+
}
|
|
378
|
+
field.focus = false;
|
|
379
|
+
field.invalid = false;
|
|
380
|
+
}
|
|
381
|
+
return field;
|
|
382
|
+
};
|
|
383
|
+
const updateFieldDefaultValue = (field) => {
|
|
384
|
+
const defaultValue = {
|
|
385
|
+
value: {
|
|
386
|
+
is_found: false,
|
|
387
|
+
value: "",
|
|
388
|
+
sources: [
|
|
389
|
+
{
|
|
390
|
+
key: "OBJECT",
|
|
391
|
+
props: {
|
|
392
|
+
object: {
|
|
393
|
+
key: "FORM_DATA",
|
|
394
|
+
path: `$.${field.key}`
|
|
395
|
+
}
|
|
396
|
+
},
|
|
397
|
+
value: "",
|
|
398
|
+
validation: {
|
|
399
|
+
is_valid: false,
|
|
400
|
+
triggers: ["ON_INIT"],
|
|
401
|
+
rules: [],
|
|
402
|
+
actions: [
|
|
403
|
+
{
|
|
404
|
+
id: "1",
|
|
405
|
+
key: "SET_FIELD_DEFAULT_VALUE",
|
|
406
|
+
condition: "1",
|
|
407
|
+
props: {
|
|
408
|
+
value: {
|
|
409
|
+
source: {
|
|
410
|
+
key: "OBJECT",
|
|
411
|
+
props: {
|
|
412
|
+
object: {
|
|
413
|
+
key: "FORM_DATA",
|
|
414
|
+
path: `$.${field.key}`
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
]
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
]
|
|
425
|
+
}
|
|
426
|
+
};
|
|
427
|
+
if (field.isFormElement) {
|
|
428
|
+
if (checkObjectKeyExists(field, "defaultValue")) {
|
|
429
|
+
return field;
|
|
430
|
+
}
|
|
431
|
+
else if (checkObjectPathExists(field, "default.value.sources")) {
|
|
432
|
+
return field;
|
|
433
|
+
}
|
|
434
|
+
else if (!checkObjectPathExists(field, "default.value.sources")) {
|
|
435
|
+
field = setFieldKeyValue(field, "default", defaultValue);
|
|
436
|
+
return field;
|
|
437
|
+
}
|
|
438
|
+
delete field["defaultVal"];
|
|
439
|
+
delete field["defaultValue"];
|
|
440
|
+
}
|
|
441
|
+
return field;
|
|
442
|
+
};
|
|
443
|
+
const updateFieldDisability = (field) => {
|
|
444
|
+
field = setMissingKeyValue(field, "disabled", false);
|
|
445
|
+
return field;
|
|
446
|
+
};
|
|
447
|
+
const updateFieldMessages = (field) => {
|
|
448
|
+
if (field.isFormElement) {
|
|
449
|
+
field = setMissingFieldKeyValue(field, "messages", []);
|
|
450
|
+
}
|
|
451
|
+
return field;
|
|
452
|
+
};
|
|
453
|
+
const updateFieldResetButton = (field) => {
|
|
454
|
+
if (field.isFormElement) {
|
|
455
|
+
if (checkObjectKeyExists(field, "action") &&
|
|
456
|
+
field.action === "reset" &&
|
|
457
|
+
checkObjectKeyExists(field, "fields")) {
|
|
458
|
+
field = setFieldKeyValue(field, "reset", {
|
|
459
|
+
fields: field.fields
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
return field;
|
|
464
|
+
};
|
|
465
|
+
const setFormFields = (formConfig, fields) => {
|
|
466
|
+
if (checkObjectKeyExists(formConfig, "multiForm")) {
|
|
467
|
+
formConfig.multiForm["fields"] = fields;
|
|
468
|
+
}
|
|
469
|
+
else {
|
|
470
|
+
formConfig["fields"] = fields;
|
|
471
|
+
}
|
|
472
|
+
return formConfig;
|
|
473
|
+
};
|
|
474
|
+
const setFormFieldGroups = (formConfig, groups) => {
|
|
475
|
+
formConfig["fieldGroups"] = groups;
|
|
476
|
+
return formConfig;
|
|
477
|
+
};
|
|
478
|
+
const updateFormFieldGroups = (fieldGroups, field) => {
|
|
479
|
+
if (checkObjectKeyExists(field, "groupKey")) {
|
|
480
|
+
if (checkObjectKeyExists(fieldGroups, field.groupKey)) {
|
|
481
|
+
fieldGroups[field.groupKey].push(field.key);
|
|
482
|
+
}
|
|
483
|
+
else {
|
|
484
|
+
fieldGroups[field.groupKey] = [field.key];
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
return fieldGroups;
|
|
488
|
+
};
|
|
489
|
+
let fields = getFormFields(formConfig);
|
|
490
|
+
let fieldGroups = {};
|
|
491
|
+
for (let field of fields) {
|
|
492
|
+
field = formatOnFieldType(field);
|
|
493
|
+
field = updateFieldDisability(field);
|
|
494
|
+
fieldGroups = updateFormFieldGroups(fieldGroups, field);
|
|
495
|
+
field = updateFieldDefaultValue(field);
|
|
496
|
+
field = updateFieldValidators(field);
|
|
497
|
+
field = updateFieldResetButton(field);
|
|
498
|
+
field = updateFieldMessages(field);
|
|
499
|
+
}
|
|
500
|
+
formConfig = setFormFieldGroups(formConfig, fieldGroups);
|
|
501
|
+
formConfig = setFormFields(formConfig, fields);
|
|
502
|
+
return formConfig;
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
__decorate([
|
|
506
|
+
logMethod
|
|
507
|
+
], Converter.prototype, "updateFormConfigMiscellaneous", null);
|
|
508
|
+
__decorate([
|
|
509
|
+
logMethod
|
|
510
|
+
], Converter.prototype, "updateFormConfigProperties", null);
|
|
511
|
+
__decorate([
|
|
512
|
+
logMethod
|
|
513
|
+
], Converter.prototype, "convertFormConfig", null);
|
|
514
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWNvbnZlcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL2NvbmZpZy1jb252ZXJ0ZXIvY29uZmlnLWNvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1QsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixvQkFBb0IsRUFDckIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUNMLGFBQWEsRUFDYixVQUFVLEVBQ1YsVUFBVSxFQUNWLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN4QixNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE1BQU0sT0FBTyxTQUFTO0lBRXBCLDZCQUE2QixDQUFDLFVBQWUsRUFBRSxJQUFTO1FBQ3RELElBQUksb0JBQW9CLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLEVBQUU7WUFDakQsVUFBVSxHQUFHLG9CQUFvQixDQUMvQixVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLElBQUksQ0FBQyxlQUFlLENBQ3JCLENBQUM7U0FDSDtRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFHRCwwQkFBMEIsQ0FBQyxVQUFlOztRQUN4QyxNQUFNLGtCQUFrQixHQUFHO1lBQ3pCLE1BQU0sRUFBRTtnQkFDTixVQUFVLEVBQUU7b0JBQ1YsSUFBSSxFQUFFLFFBQVE7b0JBQ2Qsa0JBQWtCLEVBQUUsS0FBSztvQkFDekIsTUFBTSxFQUFFLElBQUk7aUJBQ2I7Z0JBQ0QsS0FBSyxFQUFF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QUMsQ0FBQztZQUVyQyxLQUFLLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFdEMsS0FBSyxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BDO1FBRUQsVUFBVSxHQUFHLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUV6RCxVQUFVLEdBQUcsYUFBYSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUUvQyxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0NBQ0Y7QUFobUJDO0lBREMsU0FBUzs4REFXVDtBQUdEO0lBREMsU0FBUzsyREF3Q1Q7QUFHRDtJQURDLFNBQVM7a0RBeWlCVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGNoZWNrT2JqZWN0S2V5RXhpc3RzLFxuICBjaGVja09iamVjdFBhdGhFeGlzdHMsXG4gIGlzRW1wdHlWYWx1ZSxcbiAgaXNOb3RFbXB0eVZhbHVlLFxuICBsb2dNZXRob2QsXG4gIG1lcmdlT2JqZWN0cyxcbiAgc2V0TWlzc2luZ0tleVZhbHVlLFxuICBzZXRWYWx1ZVRvT2JqZWN0UGF0aFxufSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7IEVGaWVsZFR5cGUgfSBmcm9tIFwiLi4vZm9ybS12aWV3L2RlZmluaXRpb25zL2Zvcm0tdmlldy5maWVsZHMuZGVmaW5pdGlvblwiO1xuaW1wb3J0IHsgRklFTERfUFJPUEVSVElFUyB9IGZyb20gXCIuL2NvbmZpZy1jb252ZXJ0ZXIuY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBnZXRGb3JtRmllbGRzLFxuICBnZXRNYXhEYXRlLFxuICBnZXRNaW5EYXRlLFxuICBzZXRGaWVsZEFzRm9ybUVsZW1lbnQsXG4gIHNldEZpZWxkS2V5SGlkZGVuLFxuICBzZXRGaWVsZEtleVZhbHVlLFxuICBzZXRNaXNzaW5nRmllbGRLZXlWYWx1ZVxufSBmcm9tIFwiLi9jb25maWctY29udmVydGVyLmhlbHBlclwiO1xuXG5leHBvcnQgY2xhc3MgQ29udmVydGVyIHtcbiAgQGxvZ01ldGhvZFxuICB1cGRhdGVGb3JtQ29uZmlnTWlzY2VsbGFuZW91cyhmb3JtQ29uZmlnOiBhbnksIGFyZ3M6IGFueSk6IGFueSB7XG4gICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGFyZ3MsIFwiZm9ybXNMaXN0TGVuZ3RoXCIpKSB7XG4gICAgICBmb3JtQ29uZmlnID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICAgIGZvcm1Db25maWcsXG4gICAgICAgIFwiZm9ybXNMaXN0TGVuZ3RoXCIsXG4gICAgICAgIGFyZ3MuZm9ybXNMaXN0TGVuZ3RoXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JtQ29uZmlnO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICB1cGRhdGVGb3JtQ29uZmlnUHJvcGVydGllcyhmb3JtQ29uZmlnOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IGZvcm1WaWV3UHJvcGVydGllcyA9IHtcbiAgICAgIGhlYWRlcjoge1xuICAgICAgICBiYWNrQnV0dG9uOiB7XG4gICAgICAgICAgbW9kZTogXCJUQUJCRURcIixcbiAgICAgICAgICBieXBhc3NDb25maXJtYXRpb246IGZhbHNlLFxuICAgICAgICAgIGhpZGRlbjogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB0aXRsZToge1xuICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgbGFiZWw6IGZvcm1Db25maWc/LnRpdGxlID8/IFwiRm9ybVwiXG4gICAgICAgIH0sXG4gICAgICAgIHN0ZXBzOiB7XG4gICAgICAgICAgaGlkZGVuOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZm9vdGVyOiB7XG4gICAgICAgIHZpZXdGb3Jtc0J1dHRvbjoge1xuICAgICAgICAgIGJ5cGFzc0NvbmZpcm1hdGlvbjogZmFsc2UsXG4gICAgICAgICAgaGlkZGVuOiBmYWxzZSxcbiAgICAgICAgICBsYWJlbDogXCJWaWV3IEZvcm1zXCJcbiAgICAgICAgfSxcbiAgICAgICAgc2F2ZUJ1dHRvbjoge1xuICAgICAgICAgIGhpZGRlbjogZmFsc2UsXG4gICAgICAgICAgbGFiZWw6IFwiU2F2ZVwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm1Db25maWcsIFwicHJvcGVydGllc1wiKSkge1xuICAgICAgZm9ybUNvbmZpZy5wcm9wZXJ0aWVzID0gbWVyZ2VPYmplY3RzKFxuICAgICAgICBmb3JtVmlld1Byb3BlcnRpZXMsXG4gICAgICAgIGZvcm1Db25maWcucHJvcGVydGllc1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybUNvbmZpZy5wcm9wZXJ0aWVzID0gZm9ybVZpZXdQcm9wZXJ0aWVzO1xuICAgIH1cblxuICAgIHJldHVybiBmb3JtQ29uZmlnO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBjb252ZXJ0Rm9ybUNvbmZpZyhmb3JtQ29uZmlnOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IGZvcm1hdE9uRmllbGRUeXBlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlSHRtbCA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCBmYWxzZSk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZVRpdGxlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIGZhbHNlKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlVGV4dCA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcblxuICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzID0gbWVyZ2VPYmplY3RzKFxuICAgICAgICAgIEZJRUxEX1BST1BFUlRJRVNbZmllbGQudHlwZV0sXG4gICAgICAgICAgZmllbGQucHJvcGVydGllc1xuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVUZXh0YXJlYSA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZUNoZWNrYm94ID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlTnVtYmVyID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuXG4gICAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJrZXlcIikpIHtcbiAgICAgICAgICBpZiAoZmllbGQua2V5ID09PSBcImFhZGhhYXJfbnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJ0eXBlXCIsIFwiYWFkaGFhcl9udW1iZXJcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChmaWVsZC5rZXkgPT09IFwiY29udGFjdF9udW1iZXJcIikge1xuICAgICAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleVZhbHVlKGZpZWxkLCBcInR5cGVcIiwgXCJwaG9uZVwiKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gXCJwaG9uZVwiIHx8IGZpZWxkLnR5cGUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXMgPSBtZXJnZU9iamVjdHMoXG4gICAgICAgICAgICAgIEZJRUxEX1BST1BFUlRJRVNbZmllbGQudHlwZV0sXG4gICAgICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZUltYWdlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuXG4gICAgICAgIGZpZWxkLnByb3BlcnRpZXMgPSBtZXJnZU9iamVjdHMoXG4gICAgICAgICAgRklFTERfUFJPUEVSVElFU1tmaWVsZC50eXBlXSxcbiAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZURhdGUgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlIaWRkZW4oZmllbGQpO1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkQXNGb3JtRWxlbWVudChmaWVsZCwgdHJ1ZSk7XG5cbiAgICAgICAgZmllbGQucHJvcGVydGllcyA9IG1lcmdlT2JqZWN0cyhcbiAgICAgICAgICBGSUVMRF9QUk9QRVJUSUVTW2ZpZWxkLnR5cGVdLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG1heDogZ2V0TWF4RGF0ZShmaWVsZCksXG4gICAgICAgICAgICBtaW46IGdldE1pbkRhdGUoZmllbGQpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZVBob25lID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlUmFkaW8gPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlIaWRkZW4oZmllbGQpO1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkQXNGb3JtRWxlbWVudChmaWVsZCwgdHJ1ZSk7XG5cbiAgICAgICAgZmllbGQucHJvcGVydGllcyA9IG1lcmdlT2JqZWN0cyhcbiAgICAgICAgICBGSUVMRF9QUk9QRVJUSUVTW2ZpZWxkLnR5cGVdLFxuICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXNcbiAgICAgICAgKTtcblxuICAgICAgICBmaWVsZC5vcHRpb25zID0gZmllbGQub3B0aW9ucy5tYXAoKHg6IGFueSk6IGFueSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB4ID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiB4ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXR1cm4geyBsYWJlbDogeCwgZGlzYWJsZWQ6IGZhbHNlLCBkZXNjcmlwdGlvbjogXCJcIiB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKHgsIFwibGFiZWxcIikgJiZcbiAgICAgICAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHMoeCwgXCJkaXNhYmxlZFwiKSAmJlxuICAgICAgICAgICAgICBjaGVja09iamVjdEtleUV4aXN0cyh4LCBcImRlc2NyaXB0aW9uXCIpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNoZWNrT2JqZWN0S2V5RXhpc3RzKHgsIFwiZGlzYWJsZWRcIikpIHtcbiAgICAgICAgICAgICAgeCA9IHsgLi4ueCwgZGlzYWJsZWQ6IGZhbHNlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWNoZWNrT2JqZWN0S2V5RXhpc3RzKHgsIFwiZGVzY3JpcHRpb25cIikpIHtcbiAgICAgICAgICAgICAgeCA9IHsgLi4ueCwgZGVzY3JpcHRpb246IGZhbHNlIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVTbGlkZXIgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlIaWRkZW4oZmllbGQpO1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkQXNGb3JtRWxlbWVudChmaWVsZCwgdHJ1ZSk7XG5cbiAgICAgICAgZmllbGQucHJvcGVydGllcyA9IG1lcmdlT2JqZWN0cyhcbiAgICAgICAgICBGSUVMRF9QUk9QRVJUSUVTW2ZpZWxkLnR5cGVdLFxuICAgICAgICAgIGZpZWxkLnByb3BlcnRpZXNcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICB9O1xuICAgICAgY29uc3QgZm9ybWF0RmllbGRUeXBlU2VsZWN0ID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVBcGkgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcblxuICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzID0gbWVyZ2VPYmplY3RzKFxuICAgICAgICAgIEZJRUxEX1BST1BFUlRJRVNbZmllbGQudHlwZV0sXG4gICAgICAgICAgZmllbGQucHJvcGVydGllc1xuICAgICAgICApO1xuXG4gICAgICAgIGlmICghY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwic2hvd0xvYWRlclwiKSkge1xuICAgICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJzaG93TG9hZGVyXCIsIGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwiYXBpXCIpKSB7XG4gICAgICAgICAgY29uc3QgZmllbGRBcGlEZWZhdWx0cyA9IHtcbiAgICAgICAgICAgIHVybDogXCJcIixcbiAgICAgICAgICAgIHJlcXVlc3Q6IHt9LFxuICAgICAgICAgICAgcmVzcG9uc2U6IHt9LFxuICAgICAgICAgICAgc3RhdHVzOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgICAgbGFiZWxzOiB7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDogXCJDYWxsIEFQSVwiLFxuICAgICAgICAgICAgICAgIGxvYWRpbmc6IFwiQ2FsbCBBUElcIixcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiBcIkFQSSBTdWNjZXNzXCIsXG4gICAgICAgICAgICAgICAgZmFpbGVkOiBcIkFQSSBGYWlsZWRcIlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfTtcbiAgICAgICAgICBmaWVsZC5hcGkgPSBtZXJnZU9iamVjdHMoZmllbGRBcGlEZWZhdWx0cywgZmllbGRBcGlEZWZhdWx0cyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICFjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZC5hcGksIFwicmVxdWVzdFwiKSAmJlxuICAgICAgICAgICFjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZC5hcGksIFwiZW50cnlwb2ludFwiKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBhcGlFbnRyeXBvaW50ID0ge1xuICAgICAgICAgICAgdHJpZ2dlcnM6IFtcIk9OX0FQSV9DQUxMXCJdLFxuICAgICAgICAgICAgcnVsZXM6IFtdLFxuICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IFwiMVwiLFxuICAgICAgICAgICAgICAgIGtleTogXCJBUElfQ0FMTFwiLFxuICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogXCJ0cnVlXCIsXG4gICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIGZpZWxkS2V5OiBmaWVsZC5rZXksXG4gICAgICAgICAgICAgICAgICBhcGlLZXk6IGZpZWxkLmFwaS5lbmRwb2ludHNbMF0uYXBpS2V5XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfTtcbiAgICAgICAgICBmaWVsZC5lbnRyeXBvaW50ID0gbWVyZ2VPYmplY3RzKGFwaUVudHJ5cG9pbnQsIGZpZWxkLmFwaSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGZvcm1hdEZpZWxkVHlwZU90cCA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleUhpZGRlbihmaWVsZCk7XG4gICAgICAgIGZpZWxkID0gc2V0RmllbGRBc0Zvcm1FbGVtZW50KGZpZWxkLCB0cnVlKTtcblxuICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzID0gbWVyZ2VPYmplY3RzKFxuICAgICAgICAgIEZJRUxEX1BST1BFUlRJRVNbZmllbGQudHlwZV0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbWFzazogbmV3IEFycmF5KGZpZWxkPy5wcm9wZXJ0aWVzPy5vdHBMZW5ndGggPz8gNClcbiAgICAgICAgICAgICAgLmZpbGwoXCIjXCIpXG4gICAgICAgICAgICAgIC5qb2luKFwiIFwiKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZmllbGQucHJvcGVydGllc1xuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVBYWRoYWFyTnVtYmVyID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuXG4gICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgIH07XG4gICAgICBjb25zdCBmb3JtYXRGaWVsZFR5cGVGaWxlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5SGlkZGVuKGZpZWxkKTtcbiAgICAgICAgZmllbGQgPSBzZXRGaWVsZEFzRm9ybUVsZW1lbnQoZmllbGQsIHRydWUpO1xuXG4gICAgICAgIGZpZWxkLnByb3BlcnRpZXMgPSBtZXJnZU9iamVjdHMoXG4gICAgICAgICAgRklFTERfUFJPUEVSVElFU1tmaWVsZC50eXBlXSxcbiAgICAgICAgICBmaWVsZC5wcm9wZXJ0aWVzXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgfTtcblxuICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5IVE1MOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlSHRtbChmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5USVRMRTpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZVRpdGxlKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLlRFWFQ6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVUZXh0KGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLlRFWFRBUkVBOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlVGV4dGFyZWEoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuQ0hFQ0tCT1g6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVDaGVja2JveChmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5OVU1CRVI6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVOdW1iZXIoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuUFJFVklFV19JTUFHRTpcbiAgICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwidHlwZVwiLCBcImltYWdlXCIpO1xuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlSW1hZ2UoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuSU1BR0U6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVJbWFnZShmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5EQVRFOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlRGF0ZShmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5QSE9ORTpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZVBob25lKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLlJBRElPOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlUmFkaW8oZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuU0xJREVSOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlU2xpZGVyKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInNlYXJjaC10ZXh0XCI6XG4gICAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleVZhbHVlKGZpZWxkLCBcInR5cGVcIiwgXCJzZWxlY3RcIik7XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVTZWxlY3QoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuRFJPUERPV05fV0lUSF9TRUFSQ0g6XG4gICAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleVZhbHVlKGZpZWxkLCBcInR5cGVcIiwgXCJzZWxlY3RcIik7XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVTZWxlY3QoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuU0VMRUNUOlxuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlU2VsZWN0KGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLkFQSV9DQUxMOlxuICAgICAgICAgIGZpZWxkID0gc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJ0eXBlXCIsIFwiYXBpXCIpO1xuICAgICAgICAgIGZpZWxkID0gZm9ybWF0RmllbGRUeXBlQXBpKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLkFQSTpcbiAgICAgICAgICBmaWVsZCA9IGZvcm1hdEZpZWxkVHlwZUFwaShmaWVsZCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRUZpZWxkVHlwZS5PVFA6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVPdHAoZmllbGQpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVGaWVsZFR5cGUuQUFESEFBUl9OVU1CRVI6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVBYWRoYWFyTnVtYmVyKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFRmllbGRUeXBlLkZJTEU6XG4gICAgICAgICAgZmllbGQgPSBmb3JtYXRGaWVsZFR5cGVGaWxlKGZpZWxkKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH07XG5cbiAgICBjb25zdCB1cGRhdGVGaWVsZFZhbGlkYXRvcnMgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICBpZiAoZmllbGQuaXNGb3JtRWxlbWVudCkge1xuICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwidmFsaWRhdG9yc1wiKVxuICAgICAgICAgID8gZmllbGQudmFsaWRhdG9yc1xuICAgICAgICAgIDoge307XG5cbiAgICAgICAgZmllbGQgPSBzZXRNaXNzaW5nRmllbGRLZXlWYWx1ZShmaWVsZCwgXCJ2YWxpZGF0b3JzXCIsIHt9KTtcblxuICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwidmFsaWRhdG9yc1wiLCB7XG4gICAgICAgICAgLi4uZmllbGRbXCJ2YWxpZGF0b3JzXCJdLFxuICAgICAgICAgIG1pbjogY2hlY2tPYmplY3RLZXlFeGlzdHModmFsaWRhdG9ycywgXCJtaW5cIilcbiAgICAgICAgICAgID8gaXNOb3RFbXB0eVZhbHVlKHZhbGlkYXRvcnMubWluKVxuICAgICAgICAgICAgICA/IE51bWJlcih2YWxpZGF0b3JzLm1pbilcbiAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICA6IGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcIm1pblwiKVxuICAgICAgICAgICAgPyBOdW1iZXIoZmllbGQubWluKVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIG1heDogY2hlY2tPYmplY3RLZXlFeGlzdHModmFsaWRhdG9ycywgXCJtYXhcIilcbiAgICAgICAgICAgID8gaXNOb3RFbXB0eVZhbHVlKHZhbGlkYXRvcnMubWF4KVxuICAgICAgICAgICAgICA/IE51bWJlcih2YWxpZGF0b3JzLm1heClcbiAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICA6IGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcIm1heFwiKVxuICAgICAgICAgICAgPyBOdW1iZXIoZmllbGQubWF4KVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIHJlcXVpcmVkOiBjaGVja09iamVjdEtleUV4aXN0cyh2YWxpZGF0b3JzLCBcInJlcXVpcmVkXCIpXG4gICAgICAgICAgICA/IEJvb2xlYW4odmFsaWRhdG9ycy5yZXF1aXJlZClcbiAgICAgICAgICAgIDogY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwicmVxdWlyZWRcIilcbiAgICAgICAgICAgID8gQm9vbGVhbihmaWVsZC5yZXF1aXJlZClcbiAgICAgICAgICAgIDogZmFsc2UsXG4gICAgICAgICAgbWluTGVuZ3RoOiBjaGVja09iamVjdEtleUV4aXN0cyh2YWxpZGF0b3JzLCBcIm1pbkxlbmd0aFwiKVxuICAgICAgICAgICAgPyBpc05vdEVtcHR5VmFsdWUodmFsaWRhdG9ycy5taW5MZW5ndGgpXG4gICAgICAgICAgICAgID8gTnVtYmVyKHZhbGlkYXRvcnMubWluTGVuZ3RoKVxuICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIDogY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwibWluTGVuZ3RoXCIpXG4gICAgICAgICAgICA/IE51bWJlcihmaWVsZC5taW5MZW5ndGgpXG4gICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgbWF4TGVuZ3RoOiBjaGVja09iamVjdEtleUV4aXN0cyh2YWxpZGF0b3JzLCBcIm1heExlbmd0aFwiKVxuICAgICAgICAgICAgPyBpc05vdEVtcHR5VmFsdWUodmFsaWRhdG9ycy5tYXhMZW5ndGgpXG4gICAgICAgICAgICAgID8gTnVtYmVyKHZhbGlkYXRvcnMubWF4TGVuZ3RoKVxuICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgIDogY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwibGVuZ3RoXCIpXG4gICAgICAgICAgICA/IE51bWJlcihmaWVsZC5sZW5ndGgpXG4gICAgICAgICAgICA6IGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcIm1heExlbmd0aFwiKVxuICAgICAgICAgICAgPyBOdW1iZXIoZmllbGQubWF4TGVuZ3RoKVxuICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgIHBhdHRlcm46IGNoZWNrT2JqZWN0S2V5RXhpc3RzKHZhbGlkYXRvcnMsIFwicGF0dGVyblwiKVxuICAgICAgICAgICAgPyBpc05vdEVtcHR5VmFsdWUodmFsaWRhdG9ycy5wYXR0ZXJuKVxuICAgICAgICAgICAgICA/IHZhbGlkYXRvcnMucGF0dGVyblxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgOiBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJwYXR0ZXJuXCIpXG4gICAgICAgICAgICA/IHsga2V5OiBcIkNVU1RPTVwiLCBwYXR0ZXJuOiBTdHJpbmcoZmllbGQucGF0dGVybikgfVxuICAgICAgICAgICAgOiBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJyZWdleFwiKVxuICAgICAgICAgICAgPyB7IGtleTogXCJDVVNUT01cIiwgcGF0dGVybjogU3RyaW5nKGZpZWxkLnJlZ2V4KSB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICB9KTtcblxuICAgICAgICBkZWxldGUgZmllbGQubWluO1xuICAgICAgICBkZWxldGUgZmllbGQubWF4O1xuICAgICAgICBkZWxldGUgZmllbGQucmVxdWlyZWQ7XG4gICAgICAgIGRlbGV0ZSBmaWVsZC5taW5MZW5ndGg7XG4gICAgICAgIGRlbGV0ZSBmaWVsZC5sZW5ndGg7XG4gICAgICAgIGRlbGV0ZSBmaWVsZC5tYXhMZW5ndGg7XG4gICAgICAgIGRlbGV0ZSBmaWVsZC5wYXR0ZXJuO1xuICAgICAgICBkZWxldGUgZmllbGQucmVnZXg7XG5cbiAgICAgICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICAgICAgY2FzZSBFRmllbGRUeXBlLlRFWFQ6XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5taW47XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5tYXg7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIEVGaWVsZFR5cGUuQ0hFQ0tCT1g6XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5taW47XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5tYXg7XG4gICAgICAgICAgY2FzZSBFRmllbGRUeXBlLlBSRVZJRVdfSU1BR0U6XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5taW47XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5tYXg7XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5taW5MZW5ndGg7XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5tYXhMZW5ndGg7XG4gICAgICAgICAgY2FzZSBFRmllbGRUeXBlLkZJTEU6XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5taW47XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5tYXg7XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5taW5MZW5ndGg7XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5tYXhMZW5ndGg7XG4gICAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5wYXR0ZXJuO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzRW1wdHlWYWx1ZShmaWVsZC52YWxpZGF0b3JzPy5taW4pKSB7XG4gICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWluO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0VtcHR5VmFsdWUoZmllbGQudmFsaWRhdG9ycz8ubWF4KSkge1xuICAgICAgICAgIGRlbGV0ZSBmaWVsZC52YWxpZGF0b3JzLm1pbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNFbXB0eVZhbHVlKGZpZWxkLnZhbGlkYXRvcnM/Lm1pbkxlbmd0aCkpIHtcbiAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5taW5MZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRW1wdHlWYWx1ZShmaWVsZC52YWxpZGF0b3JzPy5tYXhMZW5ndGgpKSB7XG4gICAgICAgICAgZGVsZXRlIGZpZWxkLnZhbGlkYXRvcnMubWF4TGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0VtcHR5VmFsdWUoZmllbGQudmFsaWRhdG9ycz8ucGF0dGVybikpIHtcbiAgICAgICAgICBkZWxldGUgZmllbGQudmFsaWRhdG9ycy5wYXR0ZXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZmllbGQuZm9jdXMgPSBmYWxzZTtcbiAgICAgICAgZmllbGQuaW52YWxpZCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmllbGQ7XG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZUZpZWxkRGVmYXVsdFZhbHVlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0ge1xuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgIGlzX2ZvdW5kOiBmYWxzZSxcbiAgICAgICAgICB2YWx1ZTogXCJcIixcbiAgICAgICAgICBzb3VyY2VzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGtleTogXCJPQkpFQ1RcIixcbiAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICBvYmplY3Q6IHtcbiAgICAgICAgICAgICAgICAgIGtleTogXCJGT1JNX0RBVEFcIixcbiAgICAgICAgICAgICAgICAgIHBhdGg6IGAkLiR7ZmllbGQua2V5fWBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiB7XG4gICAgICAgICAgICAgICAgaXNfdmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHRyaWdnZXJzOiBbXCJPTl9JTklUXCJdLFxuICAgICAgICAgICAgICAgIHJ1bGVzOiBbXSxcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIlNFVF9GSUVMRF9ERUZBVUxUX1ZBTFVFXCIsXG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogXCIxXCIsXG4gICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiT0JKRUNUXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiRk9STV9EQVRBXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBgJC4ke2ZpZWxkLmtleX1gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBpZiAoZmllbGQuaXNGb3JtRWxlbWVudCkge1xuICAgICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwiZGVmYXVsdFZhbHVlXCIpKSB7XG4gICAgICAgICAgcmV0dXJuIGZpZWxkO1xuICAgICAgICB9IGVsc2UgaWYgKGNoZWNrT2JqZWN0UGF0aEV4aXN0cyhmaWVsZCwgXCJkZWZhdWx0LnZhbHVlLnNvdXJjZXNcIikpIHtcbiAgICAgICAgICByZXR1cm4gZmllbGQ7XG4gICAgICAgIH0gZWxzZSBpZiAoIWNoZWNrT2JqZWN0UGF0aEV4aXN0cyhmaWVsZCwgXCJkZWZhdWx0LnZhbHVlLnNvdXJjZXNcIikpIHtcbiAgICAgICAgICBmaWVsZCA9IHNldEZpZWxkS2V5VmFsdWUoZmllbGQsIFwiZGVmYXVsdFwiLCBkZWZhdWx0VmFsdWUpO1xuICAgICAgICAgIHJldHVybiBmaWVsZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlbGV0ZSBmaWVsZFtcImRlZmF1bHRWYWxcIl07XG4gICAgICAgIGRlbGV0ZSBmaWVsZFtcImRlZmF1bHRWYWx1ZVwiXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH07XG5cbiAgICBjb25zdCB1cGRhdGVGaWVsZERpc2FiaWxpdHkgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICBmaWVsZCA9IHNldE1pc3NpbmdLZXlWYWx1ZShmaWVsZCwgXCJkaXNhYmxlZFwiLCBmYWxzZSk7XG5cbiAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9O1xuXG4gICAgY29uc3QgdXBkYXRlRmllbGRNZXNzYWdlcyA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgICAgIGlmIChmaWVsZC5pc0Zvcm1FbGVtZW50KSB7XG4gICAgICAgIGZpZWxkID0gc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUoZmllbGQsIFwibWVzc2FnZXNcIiwgW10pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmllbGQ7XG4gICAgfTtcblxuICAgIGNvbnN0IHVwZGF0ZUZpZWxkUmVzZXRCdXR0b24gPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gICAgICBpZiAoZmllbGQuaXNGb3JtRWxlbWVudCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwiYWN0aW9uXCIpICYmXG4gICAgICAgICAgZmllbGQuYWN0aW9uID09PSBcInJlc2V0XCIgJiZcbiAgICAgICAgICBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJmaWVsZHNcIilcbiAgICAgICAgKSB7XG4gICAgICAgICAgZmllbGQgPSBzZXRGaWVsZEtleVZhbHVlKGZpZWxkLCBcInJlc2V0XCIsIHtcbiAgICAgICAgICAgIGZpZWxkczogZmllbGQuZmllbGRzXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH07XG5cbiAgICBjb25zdCBzZXRGb3JtRmllbGRzID0gKGZvcm1Db25maWc6IGFueSwgZmllbGRzOiBhbnlbXSk6IGFueSA9PiB7XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybUNvbmZpZywgXCJtdWx0aUZvcm1cIikpIHtcbiAgICAgICAgZm9ybUNvbmZpZy5tdWx0aUZvcm1bXCJmaWVsZHNcIl0gPSBmaWVsZHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3JtQ29uZmlnW1wiZmllbGRzXCJdID0gZmllbGRzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm9ybUNvbmZpZztcbiAgICB9O1xuXG4gICAgY29uc3Qgc2V0Rm9ybUZpZWxkR3JvdXBzID0gKGZvcm1Db25maWc6IGFueSwgZ3JvdXBzOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgZm9ybUNvbmZpZ1tcImZpZWxkR3JvdXBzXCJdID0gZ3JvdXBzO1xuXG4gICAgICByZXR1cm4gZm9ybUNvbmZpZztcbiAgICB9O1xuXG4gICAgY29uc3QgdXBkYXRlRm9ybUZpZWxkR3JvdXBzID0gKGZpZWxkR3JvdXBzOiBhbnksIGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcImdyb3VwS2V5XCIpKSB7XG4gICAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZEdyb3VwcywgZmllbGQuZ3JvdXBLZXkpKSB7XG4gICAgICAgICAgZmllbGRHcm91cHNbZmllbGQuZ3JvdXBLZXldLnB1c2goZmllbGQua2V5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmaWVsZEdyb3Vwc1tmaWVsZC5ncm91cEtleV0gPSBbZmllbGQua2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmllbGRHcm91cHM7XG4gICAgfTtcblxuICAgIGxldCBmaWVsZHM6IGFueVtdID0gZ2V0Rm9ybUZpZWxkcyhmb3JtQ29uZmlnKTtcblxuICAgIGxldCBmaWVsZEdyb3VwczogYW55ID0ge307XG5cbiAgICBmb3IgKGxldCBmaWVsZCBvZiBmaWVsZHMpIHtcbiAgICAgIGZpZWxkID0gZm9ybWF0T25GaWVsZFR5cGUoZmllbGQpO1xuXG4gICAgICBmaWVsZCA9IHVwZGF0ZUZpZWxkRGlzYWJpbGl0eShmaWVsZCk7XG5cbiAgICAgIGZpZWxkR3JvdXBzID0gdXBkYXRlRm9ybUZpZWxkR3JvdXBzKGZpZWxkR3JvdXBzLCBmaWVsZCk7XG5cbiAgICAgIGZpZWxkID0gdXBkYXRlRmllbGREZWZhdWx0VmFsdWUoZmllbGQpO1xuXG4gICAgICBmaWVsZCA9IHVwZGF0ZUZpZWxkVmFsaWRhdG9ycyhmaWVsZCk7XG5cbiAgICAgIGZpZWxkID0gdXBkYXRlRmllbGRSZXNldEJ1dHRvbihmaWVsZCk7XG5cbiAgICAgIGZpZWxkID0gdXBkYXRlRmllbGRNZXNzYWdlcyhmaWVsZCk7XG4gICAgfVxuXG4gICAgZm9ybUNvbmZpZyA9IHNldEZvcm1GaWVsZEdyb3Vwcyhmb3JtQ29uZmlnLCBmaWVsZEdyb3Vwcyk7XG5cbiAgICBmb3JtQ29uZmlnID0gc2V0Rm9ybUZpZWxkcyhmb3JtQ29uZmlnLCBmaWVsZHMpO1xuXG4gICAgcmV0dXJuIGZvcm1Db25maWc7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -34,5 +34,6 @@ export var EActionKey;
|
|
|
34
34
|
EActionKey["DIALOG_HIDE"] = "DIALOG_HIDE";
|
|
35
35
|
EActionKey["RESUME_TASK_EXECUTION"] = "RESUME_TASK_EXECUTION";
|
|
36
36
|
EActionKey["STOP_TASK_EXECUTION"] = "STOP_TASK_EXECUTION";
|
|
37
|
+
EActionKey["REDIRECT_TO_URL"] = "REDIRECT_TO_URL";
|
|
37
38
|
})(EActionKey || (EActionKey = {}));
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LmFjdGlvbnMuZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL2Zvcm0tdmlldy9kZWZpbml0aW9ucy9mb3JtLXZpZXcuYWN0aW9ucy5kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sQ0FBTixJQUFZLFVBb0NYO0FBcENELFdBQVksVUFBVTtJQUNwQixxQ0FBdUIsQ0FBQTtJQUN2QixpRUFBbUQsQ0FBQTtJQUNuRCx1REFBeUMsQ0FBQTtJQUN6Qyx5REFBMkMsQ0FBQTtJQUMzQyxtREFBcUMsQ0FBQTtJQUNyQyxtREFBcUMsQ0FBQTtJQUNyQyx1Q0FBeUIsQ0FBQTtJQUN6Qix1Q0FBeUIsQ0FBQTtJQUN6QiwyQ0FBNkIsQ0FBQTtJQUM3Qiw2Q0FBK0IsQ0FBQTtJQUMvQix5Q0FBMkIsQ0FBQTtJQUMzQixxRUFBdUQsQ0FBQTtJQUN2RCwrQkFBaUIsQ0FBQTtJQUNqQixtREFBcUMsQ0FBQTtJQUNyQyxtREFBcUMsQ0FBQTtJQUNyQyx1REFBeUMsQ0FBQTtJQUN6Qyx5REFBMkMsQ0FBQTtJQUMzQywyREFBNkMsQ0FBQTtJQUM3QyxtQ0FBcUIsQ0FBQTtJQUNyQixxREFBdUMsQ0FBQTtJQUN2Qyw2REFBK0MsQ0FBQTtJQUMvQyw2Q0FBK0IsQ0FBQTtJQUMvQiwrREFBaUQsQ0FBQTtJQUNqRCx1RUFBeUQsQ0FBQTtJQUN6RCx5REFBMkMsQ0FBQTtJQUMzQyx1REFBeUMsQ0FBQTtJQUN6QyxpREFBbUMsQ0FBQTtJQUNuQywyQ0FBNkIsQ0FBQTtJQUM3QixpRUFBbUQsQ0FBQTtJQUNuRCxpRUFBbUQsQ0FBQTtJQUNuRCx5Q0FBMkIsQ0FBQTtJQUMzQix5Q0FBMkIsQ0FBQTtJQUMzQiw2REFBK0MsQ0FBQTtJQUMvQyx5REFBMkMsQ0FBQTtJQUMzQyxpREFBbUMsQ0FBQTtBQUNyQyxDQUFDLEVBcENXLFVBQVUsS0FBVixVQUFVLFFBb0NyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRBY3Rpb24sIFRTb3VyY2UgfSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7IFRNZXNzYWdlIH0gZnJvbSBcIi4vZm9ybS12aWV3LmNvbW1vbnMuZGVmaW5pdGlvblwiO1xuXG5leHBvcnQgZW51bSBFQWN0aW9uS2V5IHtcbiAgU0VUX1ZBTFVFID0gXCJTRVRfVkFMVUVcIixcbiAgU0VUX0ZJRUxEX0RFRkFVTFRfVkFMVUUgPSBcIlNFVF9GSUVMRF9ERUZBVUxUX1ZBTFVFXCIsXG4gIEZJRUxEX01FU1NBR0VfU0hPVyA9IFwiRklFTERfTUVTU0FHRV9TSE9XXCIsXG4gIEZJRUxEX01FU1NBR0VTX0hJREUgPSBcIkZJRUxEX01FU1NBR0VTX0hJREVcIixcbiAgRklFTERfRVJST1JfU0hPVyA9IFwiRklFTERfRVJST1JfU0hPV1wiLFxuICBGSUVMRF9FUlJPUl9ISURFID0gXCJGSUVMRF9FUlJPUl9ISURFXCIsXG4gIEZJRUxEX1NIT1cgPSBcIkZJRUxEX1NIT1dcIixcbiAgRklFTERfSElERSA9IFwiRklFTERfSElERVwiLFxuICBGSUVMRF9FTkFCTEUgPSBcIkZJRUxEX0VOQUJMRVwiLFxuICBGSUVMRF9ESVNBQkxFID0gXCJGSUVMRF9ESVNBQkxFXCIsXG4gIEZJRUxEX1JFU0VUID0gXCJGSUVMRF9SRVNFVFwiLFxuICBIQU5ETEVfQ09OTkVDVEVEX0VMRU1FTlRTID0gXCJIQU5ETEVfQ09OTkVDVEVEX0VMRU1FTlRTXCIsXG4gIENVU1RPTSA9IFwiQ1VTVE9NXCIsXG4gIEZJRUxEX0dST1VQX1NIT1cgPSBcIkZJRUxEX0dST1VQX1NIT1dcIixcbiAgRklFTERfR1JPVVBfSElERSA9IFwiRklFTERfR1JPVVBfSElERVwiLFxuICBGSUVMRF9HUk9VUF9FTkFCTEUgPSBcIkZJRUxEX0dST1VQX0VOQUJMRVwiLFxuICBGSUVMRF9HUk9VUF9ESVNBQkxFID0gXCJGSUVMRF9HUk9VUF9ESVNBQkxFXCIsXG4gIFNFVF9EUk9QRE9XTl9PUFRJT05TID0gXCJTRVRfRFJPUERPV05fT1BUSU9OU1wiLFxuICBBUElfQ0FMTCA9IFwiQVBJX0NBTExcIixcbiAgQVBJX0NBTExfTVVMVElQTEUgPSBcIkFQSV9DQUxMX01VTFRJUExFXCIsXG4gIEFQSV9DQUxMX01VTFRJUExFX0VORCA9IFwiQVBJX0NBTExfTVVMVElQTEVfRU5EXCIsXG4gIFRBU0tfQVBJX0NBTEwgPSBcIlRBU0tfQVBJX0NBTExcIixcbiAgVEFTS19BUElfQ0FMTF9NVUxUSVBMRSA9IFwiVEFTS19BUElfQ0FMTF9NVUxUSVBMRVwiLFxuICBUQVNLX0FQSV9DQUxMX01VTFRJUExFX0VORCA9IFwiVEFTS19BUElfQ0FMTF9NVUxUSVBMRV9FTkRcIixcbiAgUFJFVklFV19ESUFMT0dfU0hPVyA9IFwiUFJFVklFV19ESUFMT0dfU0hPV1wiLFxuICBQUkVWSUVXX0VSUk9SX1NIT1cgPSBcIlBSRVZJRVdfRVJST1JfU0hPV1wiLFxuICBQT1BVUF9GT1JNX1NIT1cgPSBcIlBPUFVQX0ZPUk1fU0hPV1wiLFxuICBTVE9QX1dBSVRJTkcgPSBcIlNUT1BfV0FJVElOR1wiLFxuICBOT1RJRklDQVRJT05fRVJST1JfU0hPVyA9IFwiTk9USUZJQ0FUSU9OX0VSUk9SX1NIT1dcIixcbiAgTk9USUZJQ0FUSU9OX0VSUk9SX0hJREUgPSBcIk5PVElGSUNBVElPTl9FUlJPUl9ISURFXCIsXG4gIERJQUxPR19TSE9XID0gXCJESUFMT0dfU0hPV1wiLFxuICBESUFMT0dfSElERSA9IFwiRElBTE9HX0hJREVcIixcbiAgUkVTVU1FX1RBU0tfRVhFQ1VUSU9OID0gXCJSRVNVTUVfVEFTS19FWEVDVVRJT05cIixcbiAgU1RPUF9UQVNLX0VYRUNVVElPTiA9IFwiU1RPUF9UQVNLX0VYRUNVVElPTlwiLFxuICBSRURJUkVDVF9UT19VUkwgPSBcIlJFRElSRUNUX1RPX1VSTFwiXG59XG5cbmV4cG9ydCB0eXBlIFRBY3Rpb25LZXkgPVxuICB8IEVBY3Rpb25LZXkuU0VUX1ZBTFVFXG4gIHwgRUFjdGlvbktleS5TRVRfRklFTERfREVGQVVMVF9WQUxVRVxuICB8IEVBY3Rpb25LZXkuRklFTERfTUVTU0FHRV9TSE9XXG4gIHwgRUFjdGlvbktleS5GSUVMRF9NRVNTQUdFU19ISURFXG4gIHwgRUFjdGlvbktleS5GSUVMRF9FUlJPUl9TSE9XXG4gIHwgRUFjdGlvbktleS5GSUVMRF9FUlJPUl9ISURFXG4gIHwgRUFjdGlvbktleS5GSUVMRF9TSE9XXG4gIHwgRUFjdGlvbktleS5GSUVMRF9ISURFXG4gIHwgRUFjdGlvbktleS5GSUVMRF9FTkFCTEVcbiAgfCBFQWN0aW9uS2V5LkZJRUxEX0RJU0FCTEVcbiAgfCBFQWN0aW9uS2V5LkZJRUxEX1JFU0VUXG4gIHwgRUFjdGlvbktleS5IQU5ETEVfQ09OTkVDVEVEX0VMRU1FTlRTXG4gIHwgRUFjdGlvbktleS5DVVNUT01cbiAgfCBFQWN0aW9uS2V5LkZJRUxEX0dST1VQX1NIT1dcbiAgfCBFQWN0aW9uS2V5LkZJRUxEX0dST1VQX0hJREVcbiAgfCBFQWN0aW9uS2V5LkZJRUxEX0dST1VQX0VOQUJMRVxuICB8IEVBY3Rpb25LZXkuRklFTERfR1JPVVBfRElTQUJMRVxuICB8IEVBY3Rpb25LZXkuQVBJX0NBTExcbiAgfCBFQWN0aW9uS2V5LkFQSV9DQUxMX01VTFRJUExFXG4gIHwgRUFjdGlvbktleS5BUElfQ0FMTF9NVUxUSVBMRV9FTkRcbiAgfCBFQWN0aW9uS2V5LlRBU0tfQVBJX0NBTExcbiAgfCBFQWN0aW9uS2V5LlRBU0tfQVBJX0NBTExfTVVMVElQTEVcbiAgfCBFQWN0aW9uS2V5LlRBU0tfQVBJX0NBTExfTVVMVElQTEVfRU5EXG4gIHwgRUFjdGlvbktleS5TRVRfRFJPUERPV05fT1BUSU9OU1xuICB8IEVBY3Rpb25LZXkuUFJFVklFV19ESUFMT0dfU0hPV1xuICB8IEVBY3Rpb25LZXkuUE9QVVBfRk9STV9TSE9XXG4gIHwgRUFjdGlvbktleS5TVE9QX1dBSVRJTkdcbiAgfCBFQWN0aW9uS2V5Lk5PVElGSUNBVElPTl9FUlJPUl9TSE9XXG4gIHwgRUFjdGlvbktleS5OT1RJRklDQVRJT05fRVJST1JfSElERVxuICB8IEVBY3Rpb25LZXkuRElBTE9HX1NIT1dcbiAgfCBFQWN0aW9uS2V5LkRJQUxPR19ISURFXG4gIHwgRUFjdGlvbktleS5SRVNVTUVfVEFTS19FWEVDVVRJT05cbiAgfCBFQWN0aW9uS2V5LlNUT1BfVEFTS19FWEVDVVRJT05cbiAgfCBFQWN0aW9uS2V5LlJFRElSRUNUX1RPX1VSTDtcblxuZXhwb3J0IHR5cGUgVEFjdGlvblNldFZhbHVlID0gVEFjdGlvbiAmIHtcbiAga2V5OiBFQWN0aW9uS2V5LlNFVF9WQUxVRTtcbiAgcHJvcHM6IHtcbiAgICB2YWx1ZToge1xuICAgICAgc291cmNlOiBUU291cmNlO1xuICAgICAgZGVzdGluYXRpb246IFRTb3VyY2U7XG4gICAgfTtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFRBY3Rpb25TZXRGaWVsZERlZmF1bHRWYWx1ZSA9IFRBY3Rpb24gJiB7XG4gIGtleTogRUFjdGlvbktleS5TRVRfRklFTERfREVGQVVMVF9WQUxVRTtcbiAgcHJvcHM6IHtcbiAgICBmaWVsZEtleTogc3RyaW5nO1xuICAgIHNvdXJjZTogVFNvdXJjZTtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFRBY3Rpb25GaWVsZE1lc3NhZ2VTaG93ID0gVEFjdGlvbiAmIHtcbiAga2V5OiBFQWN0aW9uS2V5LkZJRUxEX01FU1NBR0VfU0hPVztcbiAgcHJvcHM6IHtcbiAgICBmaWVsZEtleTogc3RyaW5nO1xuICAgIG1lc3NhZ2U6IFRNZXNzYWdlO1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgVEFjdGlvbkZpZWxkTWVzc2FnZUhpZGUgPSBUQWN0aW9uICYge1xuICBrZXk6IEVBY3Rpb25LZXkuRklFTERfTUVTU0FHRVNfSElERTtcbiAgcHJvcHM6IHtcbiAgICBmaWVsZEtleTogc3RyaW5nO1xuICAgIG1lc3NhZ2U6IFRNZXNzYWdlO1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgVEFjdGlvbkZpZWxkRXJyb3JTaG93ID0gVEFjdGlvbiAmIHtcbiAga2V5OiBFQWN0aW9uS2V5LkZJRUxEX0VSUk9SX1NIT1c7XG4gIHByb3BzOiB7XG4gICAgZmllbGRLZXk6IHN0cmluZztcbiAgICBtZXNzYWdlOiBUTWVzc2FnZTtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIElGaWVsZEVycm9ySGlkZSA9IFRBY3Rpb24gJiB7XG4gIGtleTogRUFjdGlvbktleS5GSUVMRF9FUlJPUl9ISURFO1xuICBwcm9wczoge1xuICAgIGZpZWxkS2V5OiBzdHJpbmc7XG4gICAgbWVzc2FnZTogVE1lc3NhZ2U7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBUQWN0aW9uRmllbGRTaG93ID0gVEFjdGlvbiAmIHtcbiAga2V5OiBFQWN0aW9uS2V5LkZJRUxEX1NIT1c7XG4gIHByb3BzOiB7XG4gICAgZmllbGRLZXk6IHN0cmluZztcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFRBY3Rpb25GaWVsZEhpZGUgPSBUQWN0aW9uICYge1xuICBrZXk6IEVBY3Rpb25LZXkuRklFTERfSElERTtcbiAgcHJvcHM6IHtcbiAgICBmaWVsZEtleTogc3RyaW5nO1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgVEFjdGlvbkZpZWxkRW5hYmxlID0gVEFjdGlvbiAmIHtcbiAga2V5OiBFQWN0aW9uS2V5LkZJRUxEX0VOQUJMRTtcbiAgcHJvcHM6IHtcbiAgICBmaWVsZEtleTogc3RyaW5nO1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgVEFjdGlvbkZpZWxkRGlzYWJsZSA9IFRBY3Rpb24gJiB7XG4gIGtleTogRUFjdGlvbktleS5GSUVMRF9ESVNBQkxFO1xuICBwcm9wczoge1xuICAgIGZpZWxkS2V5OiBzdHJpbmc7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBUQWN0aW9uRmllbGRSZXNldCA9IFRBY3Rpb24gJiB7XG4gIGtleTogRUFjdGlvbktleS5GSUVMRF9SRVNFVDtcbiAgcHJvcHM6IHtcbiAgICBmaWVsZEtleTogc3RyaW5nO1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgVEFjdGlvbkhhbmRsZUNvbm5lY3RlZEVsZW1lbnQgPSBUQWN0aW9uICYge1xuICBrZXk6IEVBY3Rpb25LZXkuSEFORExFX0NPTk5FQ1RFRF9FTEVNRU5UUztcbiAgcHJvcHM6IHtcbiAgICBmaWVsZEtleTogc3RyaW5nO1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgVEFjdGlvbkFwaUNhbGwgPSBUQWN0aW9uICYge1xuICBrZXk6IEVBY3Rpb25LZXkuQVBJX0NBTEw7XG4gIHByb3BzOiB7XG4gICAgZmllbGRLZXk6IHN0cmluZztcbiAgICBhcGlLZXk6IHN0cmluZztcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFRBY3Rpb25BcGlDYWxsc0RvbmUgPSBUQWN0aW9uICYge1xuICBrZXk6IEVBY3Rpb25LZXkuQVBJX0NBTEw7XG4gIHByb3BzOiB7XG4gICAgZmllbGRLZXk6IHN0cmluZztcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFRBY3Rpb25QcmV2aWV3RGlhbG9nU2hvdyA9IFRBY3Rpb24gJiB7XG4gIGtleTogRUFjdGlvbktleS5QUkVWSUVXX0RJQUxPR19TSE9XO1xuICBwcm9wczoge1xuICAgIGh0bWw/OiB7XG4gICAgICBiZWZvcmU/OiBzdHJpbmc7XG4gICAgICBhZnRlcj86IHN0cmluZztcbiAgICB9O1xuICAgIGlmcmFtZT86IHtcbiAgICAgIHNyYzogc3RyaW5nO1xuICAgICAgdGl0bGU/OiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbn07XG4iXX0=
|