kwikid-forms 0.1.7 → 0.1.9

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.
Files changed (59) hide show
  1. package/bundles/kwikid-forms.umd.js +724 -1041
  2. package/bundles/kwikid-forms.umd.js.map +1 -1
  3. package/esm2015/lib/renderer/form-view/definitions/form-view.actions.definition.js +21 -0
  4. package/esm2015/lib/renderer/form-view/definitions/form-view.apis.definition.js +8 -0
  5. package/esm2015/lib/renderer/form-view/definitions/form-view.commons.definition.js +8 -0
  6. package/esm2015/lib/renderer/form-view/definitions/form-view.fields.definition.js +16 -0
  7. package/esm2015/lib/renderer/form-view/definitions/form-view.form-validations.definition.js +2 -0
  8. package/esm2015/lib/renderer/form-view/definitions/form-view.triggers.definition.js +2 -0
  9. package/esm2015/lib/renderer/form-view/form-view.component.js +173 -163
  10. package/esm2015/lib/renderer/form-view/form-view.module.js +4 -3
  11. package/esm2015/lib/renderer/form-view/form-view.service.js +8 -8
  12. package/esm2015/lib/renderer/form-view/helpers/form-view.apis.helper.js +29 -70
  13. package/esm2015/lib/renderer/form-view/helpers/form-view.defaults.helper.js +43 -13
  14. package/esm2015/lib/renderer/form-view/helpers/form-view.fields.helper.js +45 -63
  15. package/esm2015/lib/renderer/form-view/helpers/form-view.form-validations.helper.js +101 -0
  16. package/esm2015/lib/renderer/form-view/pipes/safe-html.pipe.js +25 -0
  17. package/esm2015/lib/renderer/renderer.component.js +8 -7
  18. package/esm2015/lib/renderer/renderer.config-converter.helper.js +113 -58
  19. package/esm2015/lib/renderer/renderer.service.js +11 -14
  20. package/fesm2015/kwikid-forms.js +488 -758
  21. package/fesm2015/kwikid-forms.js.map +1 -1
  22. package/lib/renderer/form-view/definitions/{actions/form-view.actions.type.definitions.d.ts → form-view.actions.definition.d.ts} +21 -9
  23. package/lib/renderer/form-view/definitions/{apis/form-view.apis.type.definitions.d.ts → form-view.apis.definition.d.ts} +7 -3
  24. package/lib/renderer/form-view/definitions/form-view.commons.definition.d.ts +11 -0
  25. package/lib/renderer/form-view/definitions/{fields/form-view.fields.type.definitions.d.ts → form-view.fields.definition.d.ts} +27 -6
  26. package/lib/renderer/form-view/definitions/form-view.form-validations.definition.d.ts +8 -0
  27. package/lib/renderer/form-view/definitions/{triggers/form-view.triggers.type.definitions.d.ts → form-view.triggers.definition.d.ts} +0 -0
  28. package/lib/renderer/form-view/form-view.component.d.ts +5 -5
  29. package/lib/renderer/form-view/form-view.module.d.ts +7 -6
  30. package/lib/renderer/form-view/helpers/form-view.apis.helper.d.ts +7 -9
  31. package/lib/renderer/form-view/helpers/form-view.defaults.helper.d.ts +5 -3
  32. package/lib/renderer/form-view/helpers/form-view.fields.helper.d.ts +12 -17
  33. package/lib/renderer/form-view/helpers/form-view.form-validations.helper.d.ts +10 -0
  34. package/lib/renderer/form-view/pipes/safe-html.pipe.d.ts +15 -0
  35. package/package.json +3 -3
  36. package/esm2015/lib/renderer/form-view/definitions/actions/form-view.actions.enum.definitions.js +0 -20
  37. package/esm2015/lib/renderer/form-view/definitions/actions/form-view.actions.type.definitions.js +0 -2
  38. package/esm2015/lib/renderer/form-view/definitions/apis/form-view.apis.enum.definitions.js +0 -8
  39. package/esm2015/lib/renderer/form-view/definitions/apis/form-view.apis.type.definitions.js +0 -2
  40. package/esm2015/lib/renderer/form-view/definitions/common/form-view.common.enum.definitions.js +0 -101
  41. package/esm2015/lib/renderer/form-view/definitions/common/form-view.common.type.definitions.js +0 -2
  42. package/esm2015/lib/renderer/form-view/definitions/fields/form-view.fields.enum.definitions.js +0 -15
  43. package/esm2015/lib/renderer/form-view/definitions/fields/form-view.fields.type.definitions.js +0 -2
  44. package/esm2015/lib/renderer/form-view/definitions/sources/form-view.sources.type.definitions.js +0 -2
  45. package/esm2015/lib/renderer/form-view/definitions/triggers/form-view.triggers.type.definitions.js +0 -2
  46. package/esm2015/lib/renderer/form-view/definitions/validations/form-view.validations.type.definitions.js +0 -2
  47. package/esm2015/lib/renderer/form-view/helpers/form-view.common.helper.js +0 -136
  48. package/esm2015/lib/renderer/form-view/helpers/form-view.validations.helper.js +0 -161
  49. package/esm2015/lib/renderer/renderer.helper.js +0 -50
  50. package/lib/renderer/form-view/definitions/actions/form-view.actions.enum.definitions.d.ts +0 -18
  51. package/lib/renderer/form-view/definitions/apis/form-view.apis.enum.definitions.d.ts +0 -6
  52. package/lib/renderer/form-view/definitions/common/form-view.common.enum.definitions.d.ts +0 -97
  53. package/lib/renderer/form-view/definitions/common/form-view.common.type.definitions.d.ts +0 -7
  54. package/lib/renderer/form-view/definitions/fields/form-view.fields.enum.definitions.d.ts +0 -13
  55. package/lib/renderer/form-view/definitions/sources/form-view.sources.type.definitions.d.ts +0 -16
  56. package/lib/renderer/form-view/definitions/validations/form-view.validations.type.definitions.d.ts +0 -16
  57. package/lib/renderer/form-view/helpers/form-view.common.helper.d.ts +0 -19
  58. package/lib/renderer/form-view/helpers/form-view.validations.helper.d.ts +0 -25
  59. package/lib/renderer/renderer.helper.d.ts +0 -6
@@ -1,8 +1,7 @@
1
- import { __awaiter } from "tslib";
2
1
  import { TuiDay } from "@taiga-ui/cdk";
3
- import { EFieldType } from "../definitions/fields/form-view.fields.enum.definitions";
4
2
  import { checkObjectKeyExists, isNotEmptyValue } from "kwikid-toolkit";
5
- export const findFieldFromKey = (fields, key) => {
3
+ import { EFieldType } from "../definitions/form-view.fields.definition";
4
+ export const getFormFieldByKey = (fields, key) => {
6
5
  const field = fields.find((field) => {
7
6
  if (field.key === key) {
8
7
  return field;
@@ -10,59 +9,20 @@ export const findFieldFromKey = (fields, key) => {
10
9
  });
11
10
  return field;
12
11
  };
13
- export const findFieldIndexFromKey = (fields, key) => {
12
+ export const getFormFieldIndexByKey = (fields, key) => {
14
13
  let fieldIndex;
15
14
  fieldIndex = fields.findIndex((_) => {
16
15
  return key === _.key;
17
16
  });
18
17
  return fieldIndex;
19
18
  };
20
- export const getSearchTextOptionsFromRemoteFile = (field, childField, formGroup) => __awaiter(void 0, void 0, void 0, function* () {
21
- const parentFieldValue = formGroup.controls[field.key].value;
22
- // Determine the URL of the remote file to fetch
23
- let fileUrl;
24
- if (childField.regexToGetJsonRemoteUrlKey) {
25
- const fileKey = parentFieldValue.match(childField.regexToGetJsonRemoteUrlKey)[0];
26
- fileUrl = childField.jsonRemoteUrlMapping[fileKey];
27
- }
28
- else {
29
- fileUrl = childField.fileUrl;
30
- }
31
- // Return early if there is no file URL
32
- if (!fileUrl)
33
- return;
34
- // Fetch the remote file and parse its JSON data
35
- const response = yield fetch(fileUrl);
36
- const data = yield response.json();
37
- // Return the data for the given parent field value
38
- return data[parentFieldValue];
39
- });
40
- export const getSearchTextOptionsFromFieldConfig = (field, childField, formGroup) => {
41
- let options;
42
- const fieldValue = formGroup.controls[field.key].value;
43
- if (isNotEmptyValue(childField["json"])) {
44
- options = childField["json"][fieldValue];
45
- }
46
- return options;
47
- };
48
- export const formatSearchTextOptions = (options) => {
49
- return options.map(({ title }) => title);
50
- };
51
- export function highlightFieldError(field, error) {
19
+ export const highlightFormFieldError = (field, error) => {
52
20
  field.invalid = error;
53
21
  field.focus = error;
54
- // if (!error) {
55
- // field["messages"] = field["messages"].filter(function (fieldMessage: {
56
- // type: string;
57
- // message: string;
58
- // }) {
59
- // return fieldMessage.type === "error";
60
- // });
61
- // }
62
22
  return field;
63
- }
64
- export const addMessage = (field, message) => {
65
- const isDuplicateMessage = (messages, message) => {
23
+ };
24
+ export const appendFormFieldMessage = (field, message) => {
25
+ const hasDuplicateMessage = (messages, message) => {
66
26
  return messages.some((fieldMessage) => {
67
27
  return (fieldMessage.type === message.type &&
68
28
  fieldMessage.message === message.message);
@@ -70,7 +30,7 @@ export const addMessage = (field, message) => {
70
30
  };
71
31
  field["messages"] = [];
72
32
  if (checkObjectKeyExists(field, "messages")) {
73
- if (!isDuplicateMessage(field["messages"], message)) {
33
+ if (!hasDuplicateMessage(field["messages"], message)) {
74
34
  field["messages"].push({
75
35
  type: message.type,
76
36
  message: message.message
@@ -82,13 +42,13 @@ export const addMessage = (field, message) => {
82
42
  }
83
43
  return field;
84
44
  };
85
- export const removeMessage = (field, message) => {
45
+ export const removeFormFieldMessage = (field, message) => {
86
46
  field["messages"] = field["messages"].filter(function (fieldMessage) {
87
47
  return fieldMessage.type !== message.type;
88
48
  });
89
49
  return field;
90
50
  };
91
- export function setFieldError(fields, errors, key, error) {
51
+ export function showFormFieldError(fields, errors, key, error) {
92
52
  const fieldIndex = fields.findIndex((field) => {
93
53
  return field.key === key;
94
54
  });
@@ -127,7 +87,7 @@ export function setFieldError(fields, errors, key, error) {
127
87
  return errorMessage;
128
88
  };
129
89
  Object.keys(errors).forEach((error) => {
130
- field = addMessage(field, {
90
+ field = appendFormFieldMessage(field, {
131
91
  type: "error",
132
92
  message: getErrorMessage(field.label, error)
133
93
  });
@@ -140,10 +100,10 @@ export function setFieldError(fields, errors, key, error) {
140
100
  else {
141
101
  fields[fieldIndex]["messages"] = [];
142
102
  }
143
- fields[fieldIndex] = highlightFieldError(fields[fieldIndex], error);
103
+ fields[fieldIndex] = highlightFormFieldError(fields[fieldIndex], error);
144
104
  return fields;
145
105
  }
146
- export const convertDateStringToTuiDayFormat = (date) => {
106
+ export const convertFormFieldTypeDateToKwikUIFormat = (date) => {
147
107
  const splitDate = date.split("-");
148
108
  const tuiDay = new TuiDay(Number(splitDate[2]), // Year
149
109
  Number(splitDate[1]) - 1, // Month, Why '-1' => Because Taiga-UI Required It, So...
@@ -151,7 +111,7 @@ export const convertDateStringToTuiDayFormat = (date) => {
151
111
  );
152
112
  return tuiDay;
153
113
  };
154
- export const convertTuiDayFormatToDateString = (date) => {
114
+ export const convertFormFieldTypeDateToStandardFormat = (date) => {
155
115
  let formattedDate;
156
116
  let year = date.year;
157
117
  let month = date.month;
@@ -161,12 +121,12 @@ export const convertTuiDayFormatToDateString = (date) => {
161
121
  .padStart(2, "0")}-${year}`;
162
122
  return formattedDate;
163
123
  };
164
- export const convertValueFromKwikUIFormatToBasicFormat = (field, value) => {
124
+ export const convertFormFieldValueToStandardFormat = (field, value) => {
165
125
  let convertedValue = value;
166
126
  if (isNotEmptyValue(value)) {
167
127
  switch (field.type) {
168
128
  case EFieldType.DATE:
169
- convertedValue = convertTuiDayFormatToDateString(value);
129
+ convertedValue = convertFormFieldTypeDateToStandardFormat(value);
170
130
  break;
171
131
  case EFieldType.RADIO:
172
132
  convertedValue = value.label;
@@ -176,21 +136,21 @@ export const convertValueFromKwikUIFormatToBasicFormat = (field, value) => {
176
136
  }
177
137
  return convertedValue;
178
138
  };
179
- export const convertValueFromBasicFormatToKwikUIFormat = (field, value) => {
139
+ export const convertFormFieldValueToKwikUIFormat = (field, value) => {
180
140
  let convertedValue = value;
181
141
  if (isNotEmptyValue(value)) {
182
142
  switch (field.type) {
183
143
  case EFieldType.RADIO:
184
144
  if (!checkObjectKeyExists(value, "label")) {
185
- const convertedLabelValue = {
186
- label: value,
187
- disabled: false
188
- };
145
+ const radioField = field;
146
+ const convertedLabelValue = radioField.options.find((item) => {
147
+ return item.label === value;
148
+ });
189
149
  convertedValue = convertedLabelValue;
190
150
  }
191
151
  break;
192
152
  case EFieldType.DATE:
193
- convertedValue = convertDateStringToTuiDayFormat(value);
153
+ convertedValue = convertFormFieldTypeDateToKwikUIFormat(value);
194
154
  break;
195
155
  case EFieldType.TITLE:
196
156
  break;
@@ -198,6 +158,28 @@ export const convertValueFromBasicFormatToKwikUIFormat = (field, value) => {
198
158
  break;
199
159
  }
200
160
  }
161
+ else {
162
+ convertedValue = convertFormFieldEmptyValueToKwikUIFormat(field);
163
+ }
201
164
  return convertedValue;
202
165
  };
203
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LmZpZWxkcy5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9mb3JtLXZpZXcvaGVscGVycy9mb3JtLXZpZXcuZmllbGRzLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seURBQXlELENBQUM7QUFFckYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXZFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsTUFBYSxFQUFFLEdBQVcsRUFBRSxFQUFFO0lBQzdELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNsQyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxFQUFFO1lBQ3JCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxNQUFhLEVBQUUsR0FBVyxFQUFFLEVBQUU7SUFDbEUsSUFBSSxVQUFrQixDQUFDO0lBRXZCLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7UUFDdkMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUN2QixDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFHLENBQ2hELEtBQVUsRUFDVixVQUFlLEVBQ2YsU0FBYyxFQUNBLEVB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LE1BQU07WUFDUixLQUFLLFVBQVUsQ0FBQyxJQUFJO2dCQUNsQixjQUFjLEdBQUcsK0JBQStCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hELE1BQU07WUFDUixLQUFLLFVBQVUsQ0FBQyxLQUFLO2dCQUNuQixNQUFNO1lBQ1I7Z0JBQ0UsTUFBTTtTQUNUO0tBQ0Y7SUFFRCxPQUFPLGNBQWMsQ0FBQztBQUN4QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUdWlEYXkgfSBmcm9tIFwiQHRhaWdhLXVpL2Nka1wiO1xuaW1wb3J0IHsgRUZpZWxkVHlwZSB9IGZyb20gXCIuLi9kZWZpbml0aW9ucy9maWVsZHMvZm9ybS12aWV3LmZpZWxkcy5lbnVtLmRlZmluaXRpb25zXCI7XG5pbXBvcnQgeyBURmllbGQgfSBmcm9tIFwiLi4vZGVmaW5pdGlvbnMvZmllbGRzL2Zvcm0tdmlldy5maWVsZHMudHlwZS5kZWZpbml0aW9uc1wiO1xuaW1wb3J0IHsgY2hlY2tPYmplY3RLZXlFeGlzdHMsIGlzTm90RW1wdHlWYWx1ZSB9IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuXG5leHBvcnQgY29uc3QgZmluZEZpZWxkRnJvbUtleSA9IChmaWVsZHM6IGFueVtdLCBrZXk6IHN0cmluZykgPT4ge1xuICBjb25zdCBmaWVsZCA9IGZpZWxkcy5maW5kKChmaWVsZCkgPT4ge1xuICAgIGlmIChmaWVsZC5rZXkgPT09IGtleSkge1xuICAgICAgcmV0dXJuIGZpZWxkO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGZpZWxkO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRGaWVsZEluZGV4RnJvbUtleSA9IChmaWVsZHM6IGFueVtdLCBrZXk6IHN0cmluZykgPT4ge1xuICBsZXQgZmllbGRJbmRleDogbnVtYmVyO1xuXG4gIGZpZWxkSW5kZXggPSBmaWVsZHMuZmluZEluZGV4KChfOiBhbnkpID0+IHtcbiAgICByZXR1cm4ga2V5ID09PSBfLmtleTtcbiAgfSk7XG5cbiAgcmV0dXJuIGZpZWxkSW5kZXg7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VhcmNoVGV4dE9wdGlvbnNGcm9tUmVtb3RlRmlsZSA9IGFzeW5jIChcbiAgZmllbGQ6IGFueSxcbiAgY2hpbGRGaWVsZDogYW55LFxuICBmb3JtR3JvdXA6IGFueVxuKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgY29uc3QgcGFyZW50RmllbGRWYWx1ZSA9IGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5rZXldLnZhbHVlO1xuXG4gIC8vIERldGVybWluZSB0aGUgVVJMIG9mIHRoZSByZW1vdGUgZmlsZSB0byBmZXRjaFxuICBsZXQgZmlsZVVybDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpZiAoY2hpbGRGaWVsZC5yZWdleFRvR2V0SnNvblJlbW90ZVVybEtleSkge1xuICAgIGNvbnN0IGZpbGVLZXkgPSBwYXJlbnRGaWVsZFZhbHVlLm1hdGNoKFxuICAgICAgY2hpbGRGaWVsZC5yZWdleFRvR2V0SnNvblJlbW90ZVVybEtleVxuICAgIClbMF07XG4gICAgZmlsZVVybCA9IGNoaWxkRmllbGQuanNvblJlbW90ZVVybE1hcHBpbmdbZmlsZUtleV07XG4gIH0gZWxzZSB7XG4gICAgZmlsZVVybCA9IGNoaWxkRmllbGQuZmlsZVVybDtcbiAgfVxuXG4gIC8vIFJldHVybiBlYXJseSBpZiB0aGVyZSBpcyBubyBmaWxlIFVSTFxuICBpZiAoIWZpbGVVcmwpIHJldHVybjtcblxuICAvLyBGZXRjaCB0aGUgcmVtb3RlIGZpbGUgYW5kIHBhcnNlIGl0cyBKU09OIGRhdGFcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChmaWxlVXJsKTtcbiAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICAvLyBSZXR1cm4gdGhlIGRhdGEgZm9yIHRoZSBnaXZlbiBwYXJlbnQgZmllbGQgdmFsdWVcbiAgcmV0dXJuIGRhdGFbcGFyZW50RmllbGRWYWx1ZV07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VhcmNoVGV4dE9wdGlvbnNGcm9tRmllbGRDb25maWcgPSAoXG4gIGZpZWxkOiBhbnksXG4gIGNoaWxkRmllbGQ6IGFueSxcbiAgZm9ybUdyb3VwOiBhbnlcbik6IGFueSA9PiB7XG4gIGxldCBvcHRpb25zOiBhbnk7XG5cbiAgY29uc3QgZmllbGRWYWx1ZSA9IGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5rZXldLnZhbHVlO1xuXG4gIGlmIChpc05vdEVtcHR5VmFsdWUoY2hpbGRGaWVsZFtcImpzb25cIl0pKSB7XG4gICAgb3B0aW9ucyA9IGNoaWxkRmllbGRbXCJqc29uXCJdW2ZpZWxkVmFsdWVdO1xuICB9XG5cbiAgcmV0dXJuIG9wdGlvbnM7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0U2VhcmNoVGV4dE9wdGlvbnMgPSAoXG4gIG9wdGlvbnM6IHsgdGl0bGU6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W11cbik6IHN0cmluZ1tdID0+IHtcbiAgcmV0dXJuIG9wdGlvbnMubWFwKCh7IHRpdGxlIH0pID0+IHRpdGxlKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBoaWdobGlnaHRGaWVsZEVycm9yKGZpZWxkOiBhbnksIGVycm9yOiBhbnkpOiBhbnkge1xuICBmaWVsZC5pbnZhbGlkID0gZXJyb3I7XG4gIGZpZWxkLmZvY3VzID0gZXJyb3I7XG5cbiAgLy8gaWYgKCFlcnJvcikge1xuICAvLyAgIGZpZWxkW1wibWVzc2FnZXNcIl0gPSBmaWVsZFtcIm1lc3NhZ2VzXCJdLmZpbHRlcihmdW5jdGlvbiAoZmllbGRNZXNzYWdlOiB7XG4gIC8vICAgICB0eXBlOiBzdHJpbmc7XG4gIC8vICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gIC8vICAgfSkge1xuICAvLyAgICAgcmV0dXJuIGZpZWxkTWVzc2FnZS50eXBlID09PSBcImVycm9yXCI7XG4gIC8vICAgfSk7XG4gIC8vIH1cblxuICByZXR1cm4gZmllbGQ7XG59XG5cbmV4cG9ydCBjb25zdCBhZGRNZXNzYWdlID0gKFxuICBmaWVsZDogYW55LFxuICBtZXNzYWdlOiB7IHR5cGU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH1cbik6IGFueSA9PiB7XG4gIGNvbnN0IGlzRHVwbGljYXRlTWVzc2FnZSA9IChcbiAgICBtZXNzYWdlczogeyB0eXBlOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZyB9W10sXG4gICAgbWVzc2FnZTogeyB0eXBlOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZyB9XG4gICkgPT4ge1xuICAgIHJldHVybiBtZXNzYWdlcy5zb21lKChmaWVsZE1lc3NhZ2U6IHsgdHlwZTogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgZmllbGRNZXNzYWdlLnR5cGUgPT09IG1lc3NhZ2UudHlwZSAmJlxuICAgICAgICBmaWVsZE1lc3NhZ2UubWVzc2FnZSA9PT0gbWVzc2FnZS5tZXNzYWdlXG4gICAgICApO1xuICAgIH0pO1xuICB9O1xuXG4gIGZpZWxkW1wibWVzc2FnZXNcIl0gPSBbXTtcblxuICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwibWVzc2FnZXNcIikpIHtcbiAgICBpZiAoIWlzRHVwbGljYXRlTWVzc2FnZShmaWVsZFtcIm1lc3NhZ2VzXCJdLCBtZXNzYWdlKSkge1xuICAgICAgZmllbGRbXCJtZXNzYWdlc1wiXS5wdXNoKHtcbiAgICAgICAgdHlwZTogbWVzc2FnZS50eXBlLFxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLm1lc3NhZ2VcbiAgICAgIH0pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmaWVsZFtcIm1lc3NhZ2VzXCJdID0gW3sgdHlwZTogbWVzc2FnZS50eXBlLCBtZXNzYWdlOiBtZXNzYWdlLm1lc3NhZ2UgfV07XG4gIH1cblxuICByZXR1cm4gZmllbGQ7XG59O1xuZXhwb3J0IGNvbnN0IHJlbW92ZU1lc3NhZ2UgPSAoXG4gIGZpZWxkOiBhbnksXG4gIG1lc3NhZ2U6IHsgdHlwZTogc3RyaW5nOyBtZXNzYWdlOiBzdHJpbmcgfVxuKTogYW55ID0+IHtcbiAgZmllbGRbXCJtZXNzYWdlc1wiXSA9IGZpZWxkW1wibWVzc2FnZXNcIl0uZmlsdGVyKGZ1bmN0aW9uIChmaWVsZE1lc3NhZ2UpIHtcbiAgICByZXR1cm4gZmllbGRNZXNzYWdlLnR5cGUgIT09IG1lc3NhZ2UudHlwZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGZpZWxkO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldEZpZWxkRXJyb3IoXG4gIGZpZWxkczogYW55LFxuICBlcnJvcnM6IGFueSxcbiAga2V5OiBzdHJpbmcsXG4gIGVycm9yOiBib29sZWFuXG4pIHtcbiAgY29uc3QgZmllbGRJbmRleCA9IGZpZWxkcy5maW5kSW5kZXgoKGZpZWxkOiBhbnkpID0+IHtcbiAgICByZXR1cm4gZmllbGQua2V5ID09PSBrZXk7XG4gIH0pO1xuXG4gIGNvbnN0IHNldEVycm9yTWVzc2FnZXMgPSAoZmllbGQ6IGFueSwgZXJyb3JzOiBhbnkpID0+IHtcbiAgICBjb25zdCBnZXRFcnJvck1lc3NhZ2UgPSAoZmllbGRMYWJlbDogc3RyaW5nLCBlcnJvclR5cGU6IHN0cmluZykgPT4ge1xuICAgICAgbGV0IGVycm9yTWVzc2FnZTogc3RyaW5nID0gXCJcIjtcblxuICAgICAgc3dpdGNoIChlcnJvclR5cGUpIHtcbiAgICAgICAgY2FzZSBcInJlcXVpcmVkXCI6XG4gICAgICAgICAgZXJyb3JNZXNzYWdlID0gYCR7ZmllbGRMYWJlbH0gaXMgcmVxdWlyZWQhYDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImVtYWlsXCI6XG4gICAgICAgICAgZXJyb3JNZXNzYWdlID0gYCR7ZmllbGRMYWJlbH0gaGFzIHdyb25nIGVtYWlsIGZvcm1hdCFgO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwibWluXCI6XG4gICAgICAgICAgZXJyb3JNZXNzYWdlID0gYCR7ZmllbGRMYWJlbH0gaGFzIHdyb25nIHZhbHVlISBNaW5pbXVtIHZhbHVlOiAke2ZpZWxkLnZhbGlkYXRvcnMubWlufWA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJtaW5sZW5ndGhcIjpcbiAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBgJHtmaWVsZExhYmVsfSBoYXMgd3JvbmcgbGVuZ3RoISBSZXF1aXJlZCBtaW5pbXVtIGxlbmd0aDogJHtmaWVsZC52YWxpZGF0b3JzLm1pbkxlbmd0aH1gO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwibWF4XCI6XG4gICAgICAgICAgZXJyb3JNZXNzYWdlID0gYCR7ZmllbGRMYWJlbH0gaGFzIHdyb25nIHZhbHVlISBNYXhpbXVtIHZhbHVlOiAke2ZpZWxkLnZhbGlkYXRvcnMubWF4TGVuZ3RofWA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJtYXhsZW5ndGhcIjpcbiAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBgJHtmaWVsZExhYmVsfSBoYXMgd3JvbmcgbGVuZ3RoISBSZXF1aXJlZCBtYXhpbXVtIGxlbmd0aDogJHtmaWVsZC52YWxpZGF0b3JzLm1heExlbmd0aH1gO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiYXJlRXF1YWxcIjpcbiAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBgJHtmaWVsZExhYmVsfSBtdXN0IGJlIGVxdWFsIWA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJwYXR0ZXJuXCI6XG4gICAgICAgICAgZXJyb3JNZXNzYWdlID0gYCR7ZmllbGRMYWJlbH0gaXMgaW4gaW5jb3JyZWN0IGZvcm1hdCFgO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGAke2ZpZWxkTGFiZWx9OiAke2Vycm9yVHlwZX1gO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZXJyb3JNZXNzYWdlO1xuICAgIH07XG5cbiAgICBPYmplY3Qua2V5cyhlcnJvcnMpLmZvckVhY2goKGVycm9yKSA9PiB7XG4gICAgICBmaWVsZCA9IGFkZE1lc3NhZ2UoZmllbGQsIHtcbiAgICAgICAgdHlwZTogXCJlcnJvclwiLFxuICAgICAgICBtZXNzYWdlOiBnZXRFcnJvck1lc3NhZ2UoZmllbGQubGFiZWwsIGVycm9yKVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmllbGQ7XG4gIH07XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgZmllbGRzW2ZpZWxkSW5kZXhdID0gc2V0RXJyb3JNZXNzYWdlcyhmaWVsZHNbZmllbGRJbmRleF0sIGVycm9ycyk7XG4gIH0gZWxzZSB7XG4gICAgZmllbGRzW2ZpZWxkSW5kZXhdW1wibWVzc2FnZXNcIl0gPSBbXTtcbiAgfVxuXG4gIGZpZWxkc1tmaWVsZEluZGV4XSA9IGhpZ2hsaWdodEZpZWxkRXJyb3IoZmllbGRzW2ZpZWxkSW5kZXhdLCBlcnJvcik7XG5cbiAgcmV0dXJuIGZpZWxkcztcbn1cblxuZXhwb3J0IGNvbnN0IGNvbnZlcnREYXRlU3RyaW5nVG9UdWlEYXlGb3JtYXQgPSAoZGF0ZTogc3RyaW5nKTogVHVpRGF5ID0+IHtcbiAgY29uc3Qgc3BsaXREYXRlID0gZGF0ZS5zcGxpdChcIi1cIik7XG4gIGNvbnN0IHR1aURheSA9IG5ldyBUdWlEYXkoXG4gICAgTnVtYmVyKHNwbGl0RGF0ZVsyXSksIC8vIFllYXJcbiAgICBOdW1iZXIoc3BsaXREYXRlWzFdKSAtIDEsIC8vIE1vbnRoLCBXaHkgJy0xJyA9PiBCZWNhdXNlIFRhaWdhLVVJIFJlcXVpcmVkIEl0LCBTby4uLlxuICAgIE51bWJlcihzcGxpdERhdGVbMF0pIC8vIERheVxuICApO1xuXG4gIHJldHVybiB0dWlEYXk7XG59O1xuXG5leHBvcnQgY29uc3QgY29udmVydFR1aURheUZvcm1hdFRvRGF0ZVN0cmluZyA9IChkYXRlOiBUdWlEYXkpOiBzdHJpbmcgPT4ge1xuICBsZXQgZm9ybWF0dGVkRGF0ZTogc3RyaW5nO1xuICBsZXQgeWVhciA9IGRhdGUueWVhcjtcbiAgbGV0IG1vbnRoID0gZGF0ZS5tb250aDtcbiAgbGV0IGRheSA9IGRhdGUuZGF5O1xuXG4gIGZvcm1hdHRlZERhdGUgPSBgJHtkYXkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCBcIjBcIil9LSR7KG1vbnRoICsgMSlcbiAgICAudG9TdHJpbmcoKVxuICAgIC5wYWRTdGFydCgyLCBcIjBcIil9LSR7eWVhcn1gO1xuXG4gIHJldHVybiBmb3JtYXR0ZWREYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRWYWx1ZUZyb21Ld2lrVUlGb3JtYXRUb0Jhc2ljRm9ybWF0ID0gKFxuICBmaWVsZDogVEZpZWxkLFxuICB2YWx1ZTogYW55XG4pID0+IHtcbiAgbGV0IGNvbnZlcnRlZFZhbHVlOiBhbnkgPSB2YWx1ZTtcblxuICBpZiAoaXNOb3RFbXB0eVZhbHVlKHZhbHVlKSkge1xuICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgY2FzZSBFRmllbGRUeXBlLkRBVEU6XG4gICAgICAgIGNvbnZlcnRlZFZhbHVlID0gY29udmVydFR1aURheUZvcm1hdFRvRGF0ZVN0cmluZyh2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBFRmllbGRUeXBlLlJBRElPOlxuICAgICAgICBjb252ZXJ0ZWRWYWx1ZSA9IHZhbHVlLmxhYmVsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNvbnZlcnRlZFZhbHVlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRWYWx1ZUZyb21CYXNpY0Zvcm1hdFRvS3dpa1VJRm9ybWF0ID0gKFxuICBmaWVsZDogVEZpZWxkLFxuICB2YWx1ZTogYW55XG4pID0+IHtcbiAgbGV0IGNvbnZlcnRlZFZhbHVlOiBhbnkgPSB2YWx1ZTtcblxuICBpZiAoaXNOb3RFbXB0eVZhbHVlKHZhbHVlKSkge1xuICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xuICAgICAgY2FzZSBFRmllbGRUeXBlLlJBRElPOlxuICAgICAgICBpZiAoIWNoZWNrT2JqZWN0S2V5RXhpc3RzKHZhbHVlLCBcImxhYmVsXCIpKSB7XG4gICAgICAgICAgY29uc3QgY29udmVydGVkTGFiZWxWYWx1ZSA9IHtcbiAgICAgICAgICAgIGxhYmVsOiB2YWx1ZSxcbiAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxuICAgICAgICAgIH07XG4gICAgICAgICAgY29udmVydGVkVmFsdWUgPSBjb252ZXJ0ZWRMYWJlbFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBFRmllbGRUeXBlLkRBVEU6XG4gICAgICAgIGNvbnZlcnRlZFZhbHVlID0gY29udmVydERhdGVTdHJpbmdUb1R1aURheUZvcm1hdCh2YWx1ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBFRmllbGRUeXBlLlRJVExFOlxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb252ZXJ0ZWRWYWx1ZTtcbn07XG4iXX0=
166
+ export const convertFormFieldEmptyValueToKwikUIFormat = (field) => {
167
+ const fieldType = field.type;
168
+ let value;
169
+ switch (fieldType) {
170
+ case EFieldType.CHECKBOX:
171
+ value = false;
172
+ break;
173
+ case EFieldType.NUMBER:
174
+ value = null;
175
+ break;
176
+ case EFieldType.DATE:
177
+ value = null;
178
+ break;
179
+ default:
180
+ value = "";
181
+ break;
182
+ }
183
+ return value;
184
+ };
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LmZpZWxkcy5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9mb3JtLXZpZXcvaGVscGVycy9mb3JtLXZpZXcuZmllbGRzLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQ0wsVUFBVSxFQUdYLE1BQU0sNENBQTRDLENBQUM7QUFFcEQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxNQUFhLEVBQUUsR0FBVyxFQUFFLEVBQUU7SUFDOUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ2xDLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxHQUFHLEVBQUU7WUFDckIsT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLE1BQWEsRUFBRSxHQUFXLEVBQUUsRUFBRTtJQUNuRSxJQUFJLFVBQWtCLENBQUM7SUFFdkIsVUFBVSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtRQUN2QyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxLQUFVLEVBQUUsS0FBVSxFQUFPLEVBQUU7SUFDckUsS0FB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LEtBQUssQ0FBQyxDQUFDO0tBQ2xFO0lBRUQsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0NBQXdDLEdBQUcsQ0FDdEQsS0FBYSxFQUNSLEVBQUU7SUFDUCxNQUFNLFNBQVMsR0FBZSxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ3pDLElBQUksS0FBVSxDQUFDO0lBRWYsUUFBUSxTQUFTLEVBQUU7UUFDakIsS0FBSyxVQUFVLENBQUMsUUFBUTtZQUN0QixLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ2QsTUFBTTtRQUNSLEtBQUssVUFBVSxDQUFDLE1BQU07WUFDcEIsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNiLE1BQU07UUFDUixLQUFLLFVBQVUsQ0FBQyxJQUFJO1lBQ2xCLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDYixNQUFNO1FBQ1I7WUFDRSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ1gsTUFBTTtLQUNUO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUdWlEYXkgfSBmcm9tIFwiQHRhaWdhLXVpL2Nka1wiO1xuaW1wb3J0IHsgY2hlY2tPYmplY3RLZXlFeGlzdHMsIGlzTm90RW1wdHlWYWx1ZSB9IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgRUZpZWxkVHlwZSxcbiAgVEZpZWxkLFxuICBURmllbGRUeXBlXG59IGZyb20gXCIuLi9kZWZpbml0aW9ucy9mb3JtLXZpZXcuZmllbGRzLmRlZmluaXRpb25cIjtcblxuZXhwb3J0IGNvbnN0IGdldEZvcm1GaWVsZEJ5S2V5ID0gKGZpZWxkczogYW55W10sIGtleTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGZpZWxkID0gZmllbGRzLmZpbmQoKGZpZWxkKSA9PiB7XG4gICAgaWYgKGZpZWxkLmtleSA9PT0ga2V5KSB7XG4gICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZmllbGQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybUZpZWxkSW5kZXhCeUtleSA9IChmaWVsZHM6IGFueVtdLCBrZXk6IHN0cmluZykgPT4ge1xuICBsZXQgZmllbGRJbmRleDogbnVtYmVyO1xuXG4gIGZpZWxkSW5kZXggPSBmaWVsZHMuZmluZEluZGV4KChfOiBhbnkpID0+IHtcbiAgICByZXR1cm4ga2V5ID09PSBfLmtleTtcbiAgfSk7XG5cbiAgcmV0dXJuIGZpZWxkSW5kZXg7XG59O1xuXG5leHBvcnQgY29uc3QgaGlnaGxpZ2h0Rm9ybUZpZWxkRXJyb3IgPSAoZmllbGQ6IGFueSwgZXJyb3I6IGFueSk6IGFueSA9PiB7XG4gIGZpZWxkLmludmFsaWQgPSBlcnJvcjtcbiAgZmllbGQuZm9jdXMgPSBlcnJvcjtcblxuICByZXR1cm4gZmllbGQ7XG59O1xuXG5leHBvcnQgY29uc3QgYXBwZW5kRm9ybUZpZWxkTWVzc2FnZSA9IChcbiAgZmllbGQ6IGFueSxcbiAgbWVzc2FnZTogeyB0eXBlOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZyB9XG4pOiBhbnkgPT4ge1xuICBjb25zdCBoYXNEdXBsaWNhdGVNZXNzYWdlID0gKFxuICAgIG1lc3NhZ2VzOiB7IHR5cGU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH1bXSxcbiAgICBtZXNzYWdlOiB7IHR5cGU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nIH1cbiAgKSA9PiB7XG4gICAgcmV0dXJuIG1lc3NhZ2VzLnNvbWUoKGZpZWxkTWVzc2FnZTogeyB0eXBlOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZyB9KSA9PiB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICBmaWVsZE1lc3NhZ2UudHlwZSA9PT0gbWVzc2FnZS50eXBlICYmXG4gICAgICAgIGZpZWxkTWVzc2FnZS5tZXNzYWdlID09PSBtZXNzYWdlLm1lc3NhZ2VcbiAgICAgICk7XG4gICAgfSk7XG4gIH07XG5cbiAgZmllbGRbXCJtZXNzYWdlc1wiXSA9IFtdO1xuXG4gIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJtZXNzYWdlc1wiKSkge1xuICAgIGlmICghaGFzRHVwbGljYXRlTWVzc2FnZShmaWVsZFtcIm1lc3NhZ2VzXCJdLCBtZXNzYWdlKSkge1xuICAgICAgZmllbGRbXCJtZXNzYWdlc1wiXS5wdXNoKHtcbiAgICAgICAgdHlwZTogbWVzc2FnZS50eXBlLFxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLm1lc3NhZ2VcbiAgICAgIH0pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmaWVsZFtcIm1lc3NhZ2VzXCJdID0gW3sgdHlwZTogbWVzc2FnZS50eXBlLCBtZXNzYWdlOiBtZXNzYWdlLm1lc3NhZ2UgfV07XG4gIH1cblxuICByZXR1cm4gZmllbGQ7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlRm9ybUZpZWxkTWVzc2FnZSA9IChcbiAgZmllbGQ6IGFueSxcbiAgbWVzc2FnZTogeyB0eXBlOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZyB9XG4pOiBhbnkgPT4ge1xuICBmaWVsZFtcIm1lc3NhZ2VzXCJdID0gZmllbGRbXCJtZXNzYWdlc1wiXS5maWx0ZXIoZnVuY3Rpb24gKGZpZWxkTWVzc2FnZSkge1xuICAgIHJldHVybiBmaWVsZE1lc3NhZ2UudHlwZSAhPT0gbWVzc2FnZS50eXBlO1xuICB9KTtcblxuICByZXR1cm4gZmllbGQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc2hvd0Zvcm1GaWVsZEVycm9yKFxuICBmaWVsZHM6IGFueSxcbiAgZXJyb3JzOiBhbnksXG4gIGtleTogc3RyaW5nLFxuICBlcnJvcjogYm9vbGVhblxuKSB7XG4gIGNvbnN0IGZpZWxkSW5kZXggPSBmaWVsZHMuZmluZEluZGV4KChmaWVsZDogYW55KSA9PiB7XG4gICAgcmV0dXJuIGZpZWxkLmtleSA9PT0ga2V5O1xuICB9KTtcblxuICBjb25zdCBzZXRFcnJvck1lc3NhZ2VzID0gKGZpZWxkOiBhbnksIGVycm9yczogYW55KSA9PiB7XG4gICAgY29uc3QgZ2V0RXJyb3JNZXNzYWdlID0gKGZpZWxkTGFiZWw6IHN0cmluZywgZXJyb3JUeXBlOiBzdHJpbmcpID0+IHtcbiAgICAgIGxldCBlcnJvck1lc3NhZ2U6IHN0cmluZyA9IFwiXCI7XG5cbiAgICAgIHN3aXRjaCAoZXJyb3JUeXBlKSB7XG4gICAgICAgIGNhc2UgXCJyZXF1aXJlZFwiOlxuICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGAke2ZpZWxkTGFiZWx9IGlzIHJlcXVpcmVkIWA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJlbWFpbFwiOlxuICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGAke2ZpZWxkTGFiZWx9IGhhcyB3cm9uZyBlbWFpbCBmb3JtYXQhYDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIm1pblwiOlxuICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGAke2ZpZWxkTGFiZWx9IGhhcyB3cm9uZyB2YWx1ZSEgTWluaW11bSB2YWx1ZTogJHtmaWVsZC52YWxpZGF0b3JzLm1pbn1gO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwibWlubGVuZ3RoXCI6XG4gICAgICAgICAgZXJyb3JNZXNzYWdlID0gYCR7ZmllbGRMYWJlbH0gaGFzIHdyb25nIGxlbmd0aCEgUmVxdWlyZWQgbWluaW11bSBsZW5ndGg6ICR7ZmllbGQudmFsaWRhdG9ycy5taW5MZW5ndGh9YDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIm1heFwiOlxuICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGAke2ZpZWxkTGFiZWx9IGhhcyB3cm9uZyB2YWx1ZSEgTWF4aW11bSB2YWx1ZTogJHtmaWVsZC52YWxpZGF0b3JzLm1heExlbmd0aH1gO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwibWF4bGVuZ3RoXCI6XG4gICAgICAgICAgZXJyb3JNZXNzYWdlID0gYCR7ZmllbGRMYWJlbH0gaGFzIHdyb25nIGxlbmd0aCEgUmVxdWlyZWQgbWF4aW11bSBsZW5ndGg6ICR7ZmllbGQudmFsaWRhdG9ycy5tYXhMZW5ndGh9YDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImFyZUVxdWFsXCI6XG4gICAgICAgICAgZXJyb3JNZXNzYWdlID0gYCR7ZmllbGRMYWJlbH0gbXVzdCBiZSBlcXVhbCFgO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwicGF0dGVyblwiOlxuICAgICAgICAgIGVycm9yTWVzc2FnZSA9IGAke2ZpZWxkTGFiZWx9IGlzIGluIGluY29ycmVjdCBmb3JtYXQhYDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBlcnJvck1lc3NhZ2UgPSBgJHtmaWVsZExhYmVsfTogJHtlcnJvclR5cGV9YDtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVycm9yTWVzc2FnZTtcbiAgICB9O1xuXG4gICAgT2JqZWN0LmtleXMoZXJyb3JzKS5mb3JFYWNoKChlcnJvcikgPT4ge1xuICAgICAgZmllbGQgPSBhcHBlbmRGb3JtRmllbGRNZXNzYWdlKGZpZWxkLCB7XG4gICAgICAgIHR5cGU6IFwiZXJyb3JcIixcbiAgICAgICAgbWVzc2FnZTogZ2V0RXJyb3JNZXNzYWdlKGZpZWxkLmxhYmVsLCBlcnJvcilcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZpZWxkO1xuICB9O1xuXG4gIGlmIChlcnJvcikge1xuICAgIGZpZWxkc1tmaWVsZEluZGV4XSA9IHNldEVycm9yTWVzc2FnZXMoZmllbGRzW2ZpZWxkSW5kZXhdLCBlcnJvcnMpO1xuICB9IGVsc2Uge1xuICAgIGZpZWxkc1tmaWVsZEluZGV4XVtcIm1lc3NhZ2VzXCJdID0gW107XG4gIH1cblxuICBmaWVsZHNbZmllbGRJbmRleF0gPSBoaWdobGlnaHRGb3JtRmllbGRFcnJvcihmaWVsZHNbZmllbGRJbmRleF0sIGVycm9yKTtcblxuICByZXR1cm4gZmllbGRzO1xufVxuXG5leHBvcnQgY29uc3QgY29udmVydEZvcm1GaWVsZFR5cGVEYXRlVG9Ld2lrVUlGb3JtYXQgPSAoXG4gIGRhdGU6IHN0cmluZ1xuKTogVHVpRGF5ID0+IHtcbiAgY29uc3Qgc3BsaXREYXRlID0gZGF0ZS5zcGxpdChcIi1cIik7XG4gIGNvbnN0IHR1aURheSA9IG5ldyBUdWlEYXkoXG4gICAgTnVtYmVyKHNwbGl0RGF0ZVsyXSksIC8vIFllYXJcbiAgICBOdW1iZXIoc3BsaXREYXRlWzFdKSAtIDEsIC8vIE1vbnRoLCBXaHkgJy0xJyA9PiBCZWNhdXNlIFRhaWdhLVVJIFJlcXVpcmVkIEl0LCBTby4uLlxuICAgIE51bWJlcihzcGxpdERhdGVbMF0pIC8vIERheVxuICApO1xuXG4gIHJldHVybiB0dWlEYXk7XG59O1xuXG5leHBvcnQgY29uc3QgY29udmVydEZvcm1GaWVsZFR5cGVEYXRlVG9TdGFuZGFyZEZvcm1hdCA9IChcbiAgZGF0ZTogVHVpRGF5XG4pOiBzdHJpbmcgPT4ge1xuICBsZXQgZm9ybWF0dGVkRGF0ZTogc3RyaW5nO1xuICBsZXQgeWVhciA9IGRhdGUueWVhcjtcbiAgbGV0IG1vbnRoID0gZGF0ZS5tb250aDtcbiAgbGV0IGRheSA9IGRhdGUuZGF5O1xuXG4gIGZvcm1hdHRlZERhdGUgPSBgJHtkYXkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCBcIjBcIil9LSR7KG1vbnRoICsgMSlcbiAgICAudG9TdHJpbmcoKVxuICAgIC5wYWRTdGFydCgyLCBcIjBcIil9LSR7eWVhcn1gO1xuXG4gIHJldHVybiBmb3JtYXR0ZWREYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRGb3JtRmllbGRWYWx1ZVRvU3RhbmRhcmRGb3JtYXQgPSAoXG4gIGZpZWxkOiBURmllbGQsXG4gIHZhbHVlOiBhbnlcbikgPT4ge1xuICBsZXQgY29udmVydGVkVmFsdWU6IGFueSA9IHZhbHVlO1xuXG4gIGlmIChpc05vdEVtcHR5VmFsdWUodmFsdWUpKSB7XG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICBjYXNlIEVGaWVsZFR5cGUuREFURTpcbiAgICAgICAgY29udmVydGVkVmFsdWUgPSBjb252ZXJ0Rm9ybUZpZWxkVHlwZURhdGVUb1N0YW5kYXJkRm9ybWF0KHZhbHVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEVGaWVsZFR5cGUuUkFESU86XG4gICAgICAgIGNvbnZlcnRlZFZhbHVlID0gdmFsdWUubGFiZWw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29udmVydGVkVmFsdWU7XG59O1xuXG5leHBvcnQgY29uc3QgY29udmVydEZvcm1GaWVsZFZhbHVlVG9Ld2lrVUlGb3JtYXQgPSAoXG4gIGZpZWxkOiBURmllbGQsXG4gIHZhbHVlOiBhbnlcbikgPT4ge1xuICBsZXQgY29udmVydGVkVmFsdWU6IGFueSA9IHZhbHVlO1xuXG4gIGlmIChpc05vdEVtcHR5VmFsdWUodmFsdWUpKSB7XG4gICAgc3dpdGNoIChmaWVsZC50eXBlKSB7XG4gICAgICBjYXNlIEVGaWVsZFR5cGUuUkFESU86XG4gICAgICAgIGlmICghY2hlY2tPYmplY3RLZXlFeGlzdHModmFsdWUsIFwibGFiZWxcIikpIHtcbiAgICAgICAgICBjb25zdCByYWRpb0ZpZWxkID0gZmllbGQgYXMgYW55O1xuICAgICAgICAgIGNvbnN0IGNvbnZlcnRlZExhYmVsVmFsdWUgPSByYWRpb0ZpZWxkLm9wdGlvbnMuZmluZCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbS5sYWJlbCA9PT0gdmFsdWU7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29udmVydGVkVmFsdWUgPSBjb252ZXJ0ZWRMYWJlbFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBFRmllbGRUeXBlLkRBVEU6XG4gICAgICAgIGNvbnZlcnRlZFZhbHVlID0gY29udmVydEZvcm1GaWVsZFR5cGVEYXRlVG9Ld2lrVUlGb3JtYXQodmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRUZpZWxkVHlwZS5USVRMRTpcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29udmVydGVkVmFsdWUgPSBjb252ZXJ0Rm9ybUZpZWxkRW1wdHlWYWx1ZVRvS3dpa1VJRm9ybWF0KGZpZWxkKTtcbiAgfVxuXG4gIHJldHVybiBjb252ZXJ0ZWRWYWx1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0Rm9ybUZpZWxkRW1wdHlWYWx1ZVRvS3dpa1VJRm9ybWF0ID0gKFxuICBmaWVsZDogVEZpZWxkXG4pOiBhbnkgPT4ge1xuICBjb25zdCBmaWVsZFR5cGU6IFRGaWVsZFR5cGUgPSBmaWVsZC50eXBlO1xuICBsZXQgdmFsdWU6IGFueTtcblxuICBzd2l0Y2ggKGZpZWxkVHlwZSkge1xuICAgIGNhc2UgRUZpZWxkVHlwZS5DSEVDS0JPWDpcbiAgICAgIHZhbHVlID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVGaWVsZFR5cGUuTlVNQkVSOlxuICAgICAgdmFsdWUgPSBudWxsO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFRmllbGRUeXBlLkRBVEU6XG4gICAgICB2YWx1ZSA9IG51bGw7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdmFsdWUgPSBcIlwiO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59O1xuIl19
@@ -0,0 +1,101 @@
1
+ import { __decorate } from "tslib";
2
+ import { FormArray, FormGroup, Validators } from "@angular/forms";
3
+ import { checkObjectKeyExists, isNotEmptyValue, logMethod, PATTERNS } from "kwikid-toolkit";
4
+ export class FormValidation {
5
+ constructor() { }
6
+ getFormFieldValidators(field) {
7
+ let validators = [];
8
+ if (checkObjectKeyExists(field, "validators") &&
9
+ checkObjectKeyExists(field.validators, "min") &&
10
+ isNotEmptyValue(field.validators.min)) {
11
+ validators.push(Validators.min(field.validators.min));
12
+ }
13
+ if (checkObjectKeyExists(field, "validators") &&
14
+ checkObjectKeyExists(field.validators, "max") &&
15
+ isNotEmptyValue(field.validators.max)) {
16
+ validators.push(Validators.max(field.validators.max));
17
+ }
18
+ if ((checkObjectKeyExists(field, "required") && field.required) ||
19
+ (checkObjectKeyExists(field, "validators") &&
20
+ checkObjectKeyExists(field.validators, "required") &&
21
+ field.validators.required)) {
22
+ validators.push(Validators.required);
23
+ }
24
+ if (checkObjectKeyExists(field, "validators") &&
25
+ checkObjectKeyExists(field.validators, "minLength") &&
26
+ isNotEmptyValue(field.validators.minLength)) {
27
+ validators.push(Validators.minLength(field.validators.minLength));
28
+ }
29
+ if (checkObjectKeyExists(field, "validators") &&
30
+ checkObjectKeyExists(field.validators, "maxLength") &&
31
+ isNotEmptyValue(field.validators.maxLength)) {
32
+ validators.push(Validators.maxLength(field.validators.maxLength));
33
+ }
34
+ if (checkObjectKeyExists(field, "validators") &&
35
+ checkObjectKeyExists(field.validators, "pattern") &&
36
+ isNotEmptyValue(field.validators.pattern)) {
37
+ if (checkObjectKeyExists(field.validators.pattern, "key")) {
38
+ if (field.validators.pattern.key === "CUSTOM") {
39
+ validators.push(Validators.pattern(field.validators.pattern.pattern));
40
+ }
41
+ else {
42
+ validators.push(Validators.pattern(PATTERNS[field.validators.pattern.key]));
43
+ }
44
+ }
45
+ }
46
+ return validators;
47
+ }
48
+ getFormFieldsValidationErrors(formGroup) {
49
+ let errors = [];
50
+ for (const key in formGroup.controls) {
51
+ const controlErrors = formGroup.controls[key].errors;
52
+ if (controlErrors !== null && controlErrors !== undefined) {
53
+ Object.keys(controlErrors).forEach((keyError) => {
54
+ errors.push({
55
+ name: keyError,
56
+ value: controlErrors[keyError]
57
+ });
58
+ });
59
+ }
60
+ }
61
+ return errors;
62
+ }
63
+ getFormFieldsInvalidControls(formToInvestigate) {
64
+ var controls = [];
65
+ let recursiveFunc = (form) => {
66
+ Object.keys(form.controls).forEach((field) => {
67
+ const control = form.get(field);
68
+ if (control.invalid) {
69
+ controls.push({
70
+ key: field,
71
+ invalid: true
72
+ });
73
+ }
74
+ else {
75
+ controls.push({
76
+ key: field,
77
+ invalid: false
78
+ });
79
+ }
80
+ if (control instanceof FormGroup) {
81
+ recursiveFunc(control);
82
+ }
83
+ else if (control instanceof FormArray) {
84
+ recursiveFunc(control);
85
+ }
86
+ });
87
+ };
88
+ recursiveFunc(formToInvestigate);
89
+ return controls;
90
+ }
91
+ }
92
+ __decorate([
93
+ logMethod
94
+ ], FormValidation.prototype, "getFormFieldValidators", null);
95
+ __decorate([
96
+ logMethod
97
+ ], FormValidation.prototype, "getFormFieldsValidationErrors", null);
98
+ __decorate([
99
+ logMethod
100
+ ], FormValidation.prototype, "getFormFieldsInvalidControls", null);
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LmZvcm0tdmFsaWRhdGlvbnMuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvZm9ybS12aWV3L2hlbHBlcnMvZm9ybS12aWV3LmZvcm0tdmFsaWRhdGlvbnMuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFNBQVMsRUFFVCxVQUFVLEVBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLGVBQWUsRUFDZixTQUFTLEVBQ1QsUUFBUSxFQUNULE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsTUFBTSxPQUFPLGNBQWM7SUFDekIsZ0JBQWUsQ0FBQztJQUdoQixzQkFBc0IsQ0FBQyxLQUFVO1FBQy9CLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVwQixJQUNFLG9CQUFvQixDQUFDLEtBQUssRUFBRSxZQUFZLENBQUM7WUFDekMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUM7WUFDN0MsZUFBZSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQ3JDO1lBQ0EsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN2RDtRQUNELElBQ0Usb0JBQW9CLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQztZQUN6QyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQztZQUM3QyxlQUFlLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFDckM7WUFDQSxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxH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QUFDO1FBRXpCLElBQUksYUFBYSxHQUFHLENBQUMsSUFBMkIsRUFBRSxFQUFFO1lBQ2xELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUNoRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUU7b0JBQ25CLFFBQVEsQ0FBQyxJQUFJLENBQUM7d0JBQ1osR0FBRyxFQUFFLEtBQUs7d0JBQ1YsT0FBTyxFQUFFLElBQUk7cUJBQ2QsQ0FBQyxDQUFDO2lCQUNKO3FCQUFNO29CQUNMLFFBQVEsQ0FBQyxJQUFJLENBQUM7d0JBQ1osR0FBRyxFQUFFLEtBQUs7d0JBQ1YsT0FBTyxFQUFFLEtBQUs7cUJBQ2YsQ0FBQyxDQUFDO2lCQUNKO2dCQUNELElBQUksT0FBTyxZQUFZLFNBQVMsRUFBRTtvQkFDaEMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUN4QjtxQkFBTSxJQUFJLE9BQU8sWUFBWSxTQUFTLEVBQUU7b0JBQ3ZDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDeEI7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUVGLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWpDLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRjtBQTdHQztJQURDLFNBQVM7NERBeURUO0FBR0Q7SUFEQyxTQUFTO21FQW1CVDtBQUdEO0lBREMsU0FBUztrRUE2QlQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBGb3JtQXJyYXksXG4gIEZvcm1Hcm91cCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yc1xufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7XG4gIGNoZWNrT2JqZWN0S2V5RXhpc3RzLFxuICBpc05vdEVtcHR5VmFsdWUsXG4gIGxvZ01ldGhvZCxcbiAgUEFUVEVSTlNcbn0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XG5cbmV4cG9ydCBjbGFzcyBGb3JtVmFsaWRhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBAbG9nTWV0aG9kXG4gIGdldEZvcm1GaWVsZFZhbGlkYXRvcnMoZmllbGQ6IGFueSkge1xuICAgIGxldCB2YWxpZGF0b3JzID0gW107XG5cbiAgICBpZiAoXG4gICAgICBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJ2YWxpZGF0b3JzXCIpICYmXG4gICAgICBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZC52YWxpZGF0b3JzLCBcIm1pblwiKSAmJlxuICAgICAgaXNOb3RFbXB0eVZhbHVlKGZpZWxkLnZhbGlkYXRvcnMubWluKVxuICAgICkge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluKGZpZWxkLnZhbGlkYXRvcnMubWluKSk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcInZhbGlkYXRvcnNcIikgJiZcbiAgICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLnZhbGlkYXRvcnMsIFwibWF4XCIpICYmXG4gICAgICBpc05vdEVtcHR5VmFsdWUoZmllbGQudmFsaWRhdG9ycy5tYXgpXG4gICAgKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXgoZmllbGQudmFsaWRhdG9ycy5tYXgpKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcInJlcXVpcmVkXCIpICYmIGZpZWxkLnJlcXVpcmVkKSB8fFxuICAgICAgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcInZhbGlkYXRvcnNcIikgJiZcbiAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQudmFsaWRhdG9ycywgXCJyZXF1aXJlZFwiKSAmJlxuICAgICAgICBmaWVsZC52YWxpZGF0b3JzLnJlcXVpcmVkKVxuICAgICkge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJ2YWxpZGF0b3JzXCIpICYmXG4gICAgICBjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZC52YWxpZGF0b3JzLCBcIm1pbkxlbmd0aFwiKSAmJlxuICAgICAgaXNOb3RFbXB0eVZhbHVlKGZpZWxkLnZhbGlkYXRvcnMubWluTGVuZ3RoKVxuICAgICkge1xuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKGZpZWxkLnZhbGlkYXRvcnMubWluTGVuZ3RoKSk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcInZhbGlkYXRvcnNcIikgJiZcbiAgICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLnZhbGlkYXRvcnMsIFwibWF4TGVuZ3RoXCIpICYmXG4gICAgICBpc05vdEVtcHR5VmFsdWUoZmllbGQudmFsaWRhdG9ycy5tYXhMZW5ndGgpXG4gICAgKSB7XG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXhMZW5ndGgoZmllbGQudmFsaWRhdG9ycy5tYXhMZW5ndGgpKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwidmFsaWRhdG9yc1wiKSAmJlxuICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQudmFsaWRhdG9ycywgXCJwYXR0ZXJuXCIpICYmXG4gICAgICBpc05vdEVtcHR5VmFsdWUoZmllbGQudmFsaWRhdG9ycy5wYXR0ZXJuKVxuICAgICkge1xuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLnZhbGlkYXRvcnMucGF0dGVybiwgXCJrZXlcIikpIHtcbiAgICAgICAgaWYgKGZpZWxkLnZhbGlkYXRvcnMucGF0dGVybi5rZXkgPT09IFwiQ1VTVE9NXCIpIHtcbiAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKGZpZWxkLnZhbGlkYXRvcnMucGF0dGVybi5wYXR0ZXJuKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFxuICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKFBBVFRFUk5TW2ZpZWxkLnZhbGlkYXRvcnMucGF0dGVybi5rZXldKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdG9ycztcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgZ2V0Rm9ybUZpZWxkc1ZhbGlkYXRpb25FcnJvcnMoXG4gICAgZm9ybUdyb3VwOiBGb3JtR3JvdXBcbiAgKTogeyBuYW1lOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfVtdIHtcbiAgICBsZXQgZXJyb3JzOiB7IG5hbWU6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9W10gPSBbXTtcblxuICAgIGZvciAoY29uc3Qga2V5IGluIGZvcm1Hcm91cC5jb250cm9scykge1xuICAgICAgY29uc3QgY29udHJvbEVycm9yczogVmFsaWRhdGlvbkVycm9ycyA9IGZvcm1Hcm91cC5jb250cm9sc1trZXldLmVycm9ycztcbiAgICAgIGlmIChjb250cm9sRXJyb3JzICE9PSBudWxsICYmIGNvbnRyb2xFcnJvcnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBPYmplY3Qua2V5cyhjb250cm9sRXJyb3JzKS5mb3JFYWNoKChrZXlFcnJvcikgPT4ge1xuICAgICAgICAgIGVycm9ycy5wdXNoKHtcbiAgICAgICAgICAgIG5hbWU6IGtleUVycm9yLFxuICAgICAgICAgICAgdmFsdWU6IGNvbnRyb2xFcnJvcnNba2V5RXJyb3JdXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGdldEZvcm1GaWVsZHNJbnZhbGlkQ29udHJvbHMoZm9ybVRvSW52ZXN0aWdhdGU6IEZvcm1Hcm91cCB8IEZvcm1BcnJheSkge1xuICAgIHZhciBjb250cm9sczogYW55W10gPSBbXTtcblxuICAgIGxldCByZWN1cnNpdmVGdW5jID0gKGZvcm06IEZvcm1Hcm91cCB8IEZvcm1BcnJheSkgPT4ge1xuICAgICAgT2JqZWN0LmtleXMoZm9ybS5jb250cm9scykuZm9yRWFjaCgoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBjb250cm9sID0gZm9ybS5nZXQoZmllbGQpO1xuICAgICAgICBpZiAoY29udHJvbC5pbnZhbGlkKSB7XG4gICAgICAgICAgY29udHJvbHMucHVzaCh7XG4gICAgICAgICAgICBrZXk6IGZpZWxkLFxuICAgICAgICAgICAgaW52YWxpZDogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnRyb2xzLnB1c2goe1xuICAgICAgICAgICAga2V5OiBmaWVsZCxcbiAgICAgICAgICAgIGludmFsaWQ6IGZhbHNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcbiAgICAgICAgICByZWN1cnNpdmVGdW5jKGNvbnRyb2wpO1xuICAgICAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgICAgICByZWN1cnNpdmVGdW5jKGNvbnRyb2wpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgcmVjdXJzaXZlRnVuYyhmb3JtVG9JbnZlc3RpZ2F0ZSk7XG5cbiAgICByZXR1cm4gY29udHJvbHM7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,25 @@
1
+ import { Pipe } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/platform-browser";
4
+ /**
5
+ * Generated class for the SafeHtmlPipe pipe.
6
+ *
7
+ * See https://angular.io/api/core/Pipe for more info on Angular Pipes.
8
+ */
9
+ export class SafeHtmlPipe {
10
+ constructor(sanitizer) {
11
+ this.sanitizer = sanitizer;
12
+ }
13
+ transform(html) {
14
+ return this.sanitizer.bypassSecurityTrustHtml(html);
15
+ }
16
+ }
17
+ /** @nocollapse */ SafeHtmlPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SafeHtmlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
18
+ /** @nocollapse */ SafeHtmlPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SafeHtmlPipe, name: "safeHtml" });
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: SafeHtmlPipe, decorators: [{
20
+ type: Pipe,
21
+ args: [{
22
+ name: "safeHtml"
23
+ }]
24
+ }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FmZS1odG1sLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9mb3JtLXZpZXcvcGlwZXMvc2FmZS1odG1sLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQUdwRDs7OztHQUlHO0FBSUgsTUFBTSxPQUFPLFlBQVk7SUFDdkIsWUFBb0IsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztJQUFHLENBQUM7SUFFL0MsU0FBUyxDQUFDLElBQUk7UUFDWixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7NkhBTFUsWUFBWTsySEFBWixZQUFZOzRGQUFaLFlBQVk7a0JBSHhCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFVBQVU7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuXG4vKipcbiAqIEdlbmVyYXRlZCBjbGFzcyBmb3IgdGhlIFNhZmVIdG1sUGlwZSBwaXBlLlxuICpcbiAqIFNlZSBodHRwczovL2FuZ3VsYXIuaW8vYXBpL2NvcmUvUGlwZSBmb3IgbW9yZSBpbmZvIG9uIEFuZ3VsYXIgUGlwZXMuXG4gKi9cbkBQaXBlKHtcbiAgbmFtZTogXCJzYWZlSHRtbFwiXG59KVxuZXhwb3J0IGNsYXNzIFNhZmVIdG1sUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7fVxuXG4gIHRyYW5zZm9ybShodG1sKSB7XG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGh0bWwpO1xuICB9XG59XG4iXX0=
@@ -1,10 +1,9 @@
1
1
  import { __awaiter, __decorate } from "tslib";
2
2
  import { animate, style, transition, trigger } from "@angular/animations";
3
3
  import { Component, EventEmitter, HostListener, Input, Output } from "@angular/core";
4
- import { checkObjectKeyExists, logMethod, Sources, Validations } from "kwikid-toolkit";
5
- import { EActionKey } from "./form-view/definitions/actions/form-view.actions.enum.definitions";
4
+ import { checkObjectKeyExists, logMethod, Source, Validation } from "kwikid-toolkit";
5
+ import { EActionKey } from "./form-view/definitions/form-view.actions.definition";
6
6
  import { Converter } from "./renderer.config-converter.helper";
7
- import { isSingleForm } from "./renderer.helper";
8
7
  import { KwikIDRendererService } from "./renderer.service";
9
8
  import * as i0 from "@angular/core";
10
9
  import * as i1 from "./renderer.service";
@@ -110,6 +109,9 @@ export class KwikIDFormsRendererComponent {
110
109
  }
111
110
  handleResize(formsList) {
112
111
  if (this.hostElement.nativeElement.offsetWidth < 600) {
112
+ const isSingleForm = (formsList) => {
113
+ return formsList.length === 1;
114
+ };
113
115
  if (!isSingleForm(formsList)) {
114
116
  this.showFormSections = true;
115
117
  this.showFormFields = false;
@@ -156,9 +158,8 @@ export class KwikIDFormsRendererComponent {
156
158
  }
157
159
  // forms-list listener
158
160
  handleOnClickSubmitForms(e) {
159
- console.log(e);
160
161
  if (this.userConfig.userFormFieldsConfig.validation) {
161
- const validations = new Validations({
162
+ const validations = new Validation({
162
163
  USER_CONFIG: this.userConfig,
163
164
  ALL_FORMS_DATA: this.formsData
164
165
  }, this.takeAction.bind(this));
@@ -209,7 +210,7 @@ export class KwikIDFormsRendererComponent {
209
210
  return __awaiter(this, void 0, void 0, function* () {
210
211
  switch (action.key) {
211
212
  case EActionKey.SET_VALUE:
212
- const sources = new Sources({
213
+ const sources = new Source({
213
214
  USER_CONFIG: this.userConfig,
214
215
  ALL_FORMS_DATA: this.formsData
215
216
  });
@@ -279,4 +280,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
279
280
  }], onClickApiCall: [{
280
281
  type: Output
281
282
  }], handleOnClickSetActiveForm: [], handleOnClickSubmitForms: [] } });
282
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvcmVuZGVyZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLFNBQVMsRUFDVCxPQUFPLEVBQ1AsV0FBVyxFQUNaLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7O0FBbUIzRCxNQUFNLE9BQU8sNEJBQTRCO0lBc0R2QyxZQUNTLGVBQXNDLEVBQ3JDLFdBQXVCO1FBRHhCLG9CQUFlLEdBQWYsZUFBZSxDQUF1QjtRQUNyQyxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQXhCakMsY0FBUyxHQUFRLEVBQUUsQ0FBQztRQUdwQixvQkFBZSxHQUFRLEVBQUUsQ0FBQztRQUcxQixrQkFBYSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRzNELGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFPLENB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Z0JBSVAsV0FBVztzQkFEVixNQUFNO2dCQUlQLGNBQWM7c0JBRGIsTUFBTTtnQkF3R0QsMEJBQTBCLE1BdUNoQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgY2hlY2tPYmplY3RLZXlFeGlzdHMsXG4gIGxvZ01ldGhvZCxcbiAgU291cmNlcyxcbiAgVmFsaWRhdGlvbnNcbn0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XG5pbXBvcnQgeyBFQWN0aW9uS2V5IH0gZnJvbSBcIi4vZm9ybS12aWV3L2RlZmluaXRpb25zL2FjdGlvbnMvZm9ybS12aWV3LmFjdGlvbnMuZW51bS5kZWZpbml0aW9uc1wiO1xuaW1wb3J0IHsgQ29udmVydGVyIH0gZnJvbSBcIi4vcmVuZGVyZXIuY29uZmlnLWNvbnZlcnRlci5oZWxwZXJcIjtcbmltcG9ydCB7IGlzU2luZ2xlRm9ybSB9IGZyb20gXCIuL3JlbmRlcmVyLmhlbHBlclwiO1xuaW1wb3J0IHsgS3dpa0lEUmVuZGVyZXJTZXJ2aWNlIH0gZnJvbSBcIi4vcmVuZGVyZXIuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwia3dpa2lkLWZvcm1zLXJlbmRlcmVyXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vcmVuZGVyZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3JlbmRlcmVyLmNvbXBvbmVudC5zY3NzXCJdLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcihcInBhbmVsSW5PdXRcIiwgW1xuICAgICAgdHJhbnNpdGlvbihcIjplbnRlclwiLCBbXG4gICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZVkoMTAwJSlcIiB9KSxcbiAgICAgICAgYW5pbWF0ZSgxNTApXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oXCI6bGVhdmVcIiwgW1xuICAgICAgICBhbmltYXRlKDEwMCwgc3R5bGUoeyB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWSgxMDAlKVwiIH0pKVxuICAgICAgXSlcbiAgICBdKVxuICBdLFxuICBwcm92aWRlcnM6IFtLd2lrSURSZW5kZXJlclNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIEt3aWtJREZvcm1zUmVuZGVyZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIC8vIFRoZSBmaW5hbCB2YWx1ZSBzaG91bGQgYmUgcHJvdmlkZWQgdG8gc2VydmljZSwgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiBhbGwgY29tcG9uZW50c1xuICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZVwiLCBbXCIkZXZlbnRcIl0pXG4gIHdpbmRvd1Jlc2l6ZVdhdGNoZXIoKSB7XG4gICAgaWYgKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCA8IDYwMCkge1xuICAgICAgaWYgKHRoaXMuc2hvd0Zvcm0pIHtcbiAgICAgICAgdGhpcy5zaG93Rm9ybVNlY3Rpb25zID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0Zvcm1GaWVsZHMgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93Rm9ybVNlY3Rpb25zID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy5yZW5kZXJlclNlcnZpY2UuaXNNb2JpbGVWaWV3ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuc2hvd0Zvcm0pIHtcbiAgICAgICAgdGhpcy5zaG93Rm9ybVNlY3Rpb25zID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNob3dGb3JtU2VjdGlvbnMgPSB0cnVlO1xuICAgICAgICB0aGlzLnNob3dGb3JtRmllbGRzID0gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLnJlbmRlcmVyU2VydmljZS5pc01vYmlsZVZpZXcgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBzdGVwQ29uZmlnOiBhbnk7XG5cbiAgQElucHV0KClcbiAgdXNlckNvbmZpZzogYW55O1xuXG4gIEBJbnB1dCgpXG4gIGZvcm1zRGF0YTogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgYXBpQ2FsbFJlc3BvbnNlOiBhbnkgPSB7fTtcblxuICBAT3V0cHV0KClcbiAgb25DbGlja1N1Ym1pdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAT3V0cHV0KClcbiAgZ2V0Rm9ybURhdGE6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2tBcGlDYWxsOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gZGlzcGxheSBmb3JtcyBhbmQgbGlzdCBjb25kaXRpb25hbGx5XG4gIHNob3dGb3JtOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dGb3JtRmllbGRzOiBib29sZWFuID0gdHJ1ZTtcbiAgc2hvd0Zvcm1TZWN0aW9uczogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlbmRlcmVyU2VydmljZTogS3dpa0lEUmVuZGVyZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgaG9zdEVsZW1lbnQ6IEVsZW1lbnRSZWZcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgZm9ybVN0ZXBLZXkgPSB0aGlzLnN0ZXBDb25maWc/LmZvcm0/LmtleSA/PyB1bmRlZmluZWQ7XG5cbiAgICBpZiAoXG4gICAgICBmb3JtU3RlcEtleSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLnVzZXJDb25maWcudXNlckZvcm1GaWVsZHMsIGZvcm1TdGVwS2V5KVxuICAgICkge1xuICAgICAgdGhpcy5yZW5kZXJlclNlcnZpY2Uuc2V0Rm9ybXNMaXN0KFxuICAgICAgICB0aGlzLnVzZXJDb25maWcudXNlckZvcm1GaWVsZHNbZm9ybVN0ZXBLZXldXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnVzZXJDb25maWcudXNlckZvcm1GaWVsZHMpKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyU2VydmljZS5zZXRGb3Jtc0xpc3QodGhpcy51c2VyQ29uZmlnLnVzZXJGb3JtRmllbGRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgdXNlckZvcm1GaWVsZHMgZG9lc24ndCBoYXZlIGEgZm9ybSBkZWZpbmVkIHdpdGgga2V5OiAke2Zvcm1TdGVwS2V5fWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5pbml0aWFsaXplRm9ybXMoKTtcbiAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHZlcmlmeUNoYW5nZSA9IChwcm9wOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBjaGFuZ2VzLmhhc093blByb3BlcnR5KHByb3ApICYmICFjaGFuZ2VzW3Byb3BdLmZpcnN0Q2hhbmdlO1xuICAgIH07XG4gICAgaWYgKHZlcmlmeUNoYW5nZShcInVzZXJDb25maWdcIikpIHtcbiAgICAgIHRoaXMudXNlckNvbmZpZyA9IGNoYW5nZXMudXNlckNvbmZpZy5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodmVyaWZ5Q2hhbmdlKFwiZm9ybXNEYXRhXCIpKSB7XG4gICAgICB0aGlzLmZvcm1zRGF0YSA9IGNoYW5nZXMuZm9ybXNEYXRhLmN1cnJlbnRWYWx1ZTtcblxuICAgICAgdGhpcy5pbml0aWFsaXplRm9ybXMoKTtcbiAgICB9XG4gICAgaWYgKHZlcmlmeUNoYW5nZShcImFwaUNhbGxSZXNwb25zZVwiKSkge1xuICAgICAgdGhpcy5hcGlDYWxsUmVzcG9uc2UgPSBjaGFuZ2VzLmFwaUNhbGxSZXNwb25zZS5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGluaXRpYWxpemVGb3JtcygpIHtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG5cbiAgICB0aGlzLnJlbmRlcmVyU2VydmljZS5zZXRBbGxGb3Jtc0RhdGEodGhpcy5mb3Jtc0RhdGEpO1xuXG4gICAgdGhpcy5yZW5kZXJlclNlcnZpY2UudXBkYXRlRm9ybXNMaXN0KCk7XG5cbiAgICB0aGlzLmhhbmRsZVJlc2l6ZSh0aGlzLnJlbmRlcmVyU2VydmljZS5mb3Jtc0xpc3QpO1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy5yZW5kZXJlclNlcnZpY2UuZm9ybXNMaXN0Lmxlbmd0aCAhPT1cbiAgICAgIHRoaXMucmVuZGVyZXJTZXJ2aWNlLmZvcm1zTGlzdENvbXBsZXRlZC5sZW5ndGhcbiAgICApIHtcbiAgICAgIGF3YWl0IHRoaXMuaGFuZGxlT25DbGlja1NldEFjdGl2ZUZvcm0oXG4gICAgICAgIHRoaXMucmVuZGVyZXJTZXJ2aWNlLmFjdGl2ZUZvcm1Db25maWcua2V5XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3dGb3JtID0gZmFsc2U7XG4gICAgICB0aGlzLnNob3dGb3JtRmllbGRzID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIGhhbmRsZVJlc2l6ZShmb3Jtc0xpc3Q6IGFueVtdKSB7XG4gICAgaWYgKHRoaXMuaG9zdEVsZW1lbnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCA8IDYwMCkge1xuICAgICAgaWYgKCFpc1NpbmdsZUZvcm0oZm9ybXNMaXN0KSkge1xuICAgICAgICB0aGlzLnNob3dGb3JtU2VjdGlvbnMgPSB0cnVlO1xuICAgICAgICB0aGlzLnNob3dGb3JtRmllbGRzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0Zvcm0gPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2hvd0Zvcm1TZWN0aW9ucyA9IHRydWU7XG4gICAgICAgIHRoaXMuc2hvd0Zvcm1GaWVsZHMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93Rm9ybSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy5yZW5kZXJlclNlcnZpY2UuaXNNb2JpbGVWaWV3ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW5kZXJlclNlcnZpY2UuaXNNb2JpbGVWaWV3ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLy8gZm9ybXMtbGlzdCBsaXN0ZW5lclxuICBAbG9nTWV0aG9kXG4gIGFzeW5jIGhhbmRsZU9uQ2xpY2tTZXRBY3RpdmVGb3JtKHNlbGVjdGVkRm9ybTogc3RyaW5nKSB7XG4gICAgdGhpcy5zaG93Rm9ybSA9IGZhbHNlO1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcblxuICAgIGNvbnN0IGFjdGl2ZUZvcm1Db25maWcgPSB0aGlzLnJlbmRlcmVyU2VydmljZS5mb3Jtc0xpc3QuZmluZCgoZm9ybSkgPT4ge1xuICAgICAgaWYgKGZvcm0ua2V5ID09PSBzZWxlY3RlZEZvcm0pIHtcbiAgICAgICAgcmV0dXJuIGZvcm07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsZXQgZm9ybUNvbmZpZyA9IGF3YWl0IHRoaXMucmVuZGVyZXJTZXJ2aWNlLmZldGNoRm9ybUNvbmZpZyhcbiAgICAgIGFjdGl2ZUZvcm1Db25maWcuZm9ybUNvbnRlbnQudXJsXG4gICAgKTtcblxuICAgIGZvcm1Db25maWcgPSBuZXcgQ29udmVydGVyKCkuY29udmVydEZvcm1Db25maWcoZm9ybUNvbmZpZyk7XG5cbiAgICBjb25zdCBhY3RpdmVGb3JtRGF0YSA9XG4gICAgICB0aGlzLnJlbmRlcmVyU2VydmljZS5hbGxGb3Jtc0RhdGFbZm9ybUNvbmZpZy5rZXldID8/IHt9O1xuICAgIHRoaXMucmVuZGVyZXJTZXJ2aWNlLnNldEFjdGl2ZUZvcm1EYXRhKGFjdGl2ZUZvcm1EYXRhKTtcblxuICAgIHRoaXMucmVuZGVyZXJTZXJ2aWNlLnNldEFjdGl2ZUZvcm1Db25maWcoe1xuICAgICAgLi4uYWN0aXZlRm9ybUNvbmZpZyxcbiAgICAgIC4uLmZvcm1Db25maWdcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggPCA2MDApIHtcbiAgICAgIHRoaXMuc2hvd0Zvcm1TZWN0aW9ucyA9IGZhbHNlO1xuICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IHRydWU7XG4gICAgfSBlbHNlIGlmICh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggPj0gNjAwKSB7XG4gICAgICB0aGlzLnNob3dGb3JtU2VjdGlvbnMgPSB0cnVlO1xuICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5zaG93Rm9ybSA9IHRydWU7XG4gICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgfVxuXG4gIC8vIGZvcm1zLWxpc3QgbGlzdGVuZXJcbiAgQGxvZ01ldGhvZFxuICBoYW5kbGVPbkNsaWNrU3VibWl0Rm9ybXMoZTogYW55KSB7XG4gICAgY29uc29sZS5sb2coZSk7XG5cbiAgICBpZiAodGhpcy51c2VyQ29uZmlnLnVzZXJGb3JtRmllbGRzQ29uZmlnLnZhbGlkYXRpb24pIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25zID0gbmV3IFZhbGlkYXRpb25zKFxuICAgICAgICB7XG4gICAgICAgICAgVVNFUl9DT05GSUc6IHRoaXMudXNlckNvbmZpZyxcbiAgICAgICAgICBBTExfRk9STVNfREFUQTogdGhpcy5mb3Jtc0RhdGFcbiAgICAgICAgfSxcbiAgICAgICAgdGhpcy50YWtlQWN0aW9uLmJpbmQodGhpcylcbiAgICAgICk7XG5cbiAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHZhbGlkYXRpb25zLnZhbGlkYXRlKFxuICAgICAgICAgIHRoaXMudXNlckNvbmZpZy51c2VyRm9ybUZpZWxkc0NvbmZpZy52YWxpZGF0aW9uXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMudXNlckNvbmZpZy51c2VyRm9ybUZpZWxkc0NvbmZpZy5zdGF0dXMgPT09IFwiY29tcGxldGVkXCIpIHtcbiAgICAgICAgICB0aGlzLm9uQ2xpY2tTdWJtaXQuZW1pdChlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnRvZ2dsZUVycm9yTm90aWZpY2F0aW9uKHRydWUpO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50b2dnbGVFcnJvck5vdGlmaWNhdGlvbihmYWxzZSk7XG4gICAgICAgICAgfSwgMzAwMCk7XG4gICAgICAgIH1cbiAgICAgIH0pKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gZm9ybS12aWV3IGxpc3RlbmVyXG4gIGhhbmRsZU9uQ2xpY2tBcGlDYWxsKGU6IGFueSkge1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLm9uQ2xpY2tBcGlDYWxsLmVtaXQoZSk7XG4gIH1cblxuICAvLyBmb3JtLXZpZXcgbGlzdGVuZXJcbiAgaGFuZGxlR2V0QWN0aXZlRm9ybURhdGEoZTogYW55KSB7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMuZ2V0Rm9ybURhdGEuZW1pdCh7XG4gICAgICBbdGhpcy5yZW5kZXJlclNlcnZpY2UuYWN0aXZlRm9ybUNvbmZpZy5rZXldOiBlW1wiZGF0YVwiXVxuICAgIH0pO1xuICB9XG5cbiAgLy8gZm9ybS12aWV3IGxpc3RlbmVyXG4gIGhhbmRsZU9uQ2xpY2tTYXZlRm9ybShlOiBhbnkpIHtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG5cbiAgICB0aGlzLnJlbmRlcmVyU2VydmljZS5zZXRBY3RpdmVGb3JtRGF0YSh7fSk7XG5cbiAgICB0aGlzLmdldEZvcm1EYXRhLmVtaXQoe1xuICAgICAgW3RoaXMucmVuZGVyZXJTZXJ2aWNlLmFjdGl2ZUZvcm1Db25maWcua2V5XTogZVtcImRhdGFcIl1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIGZvcm0tdmlldyBsaXN0ZW5lclxuICBoYW5kbGVPbkNsaWNrVmlld0Zvcm1zKGU6IGFueSkge1xuICAgIHRoaXMuc2hvd0Zvcm1TZWN0aW9ucyA9IHRydWU7XG4gICAgdGhpcy5zaG93Rm9ybSA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd0Zvcm1GaWVsZHMgPSBmYWxzZTtcbiAgfVxuXG4gIHNob3dFcnJvck5vdGlmaWNhdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICB0b2dnbGVFcnJvck5vdGlmaWNhdGlvbihzaG93KSB7XG4gICAgdGhpcy5zaG93RXJyb3JOb3RpZmljYXRpb24gPSBzaG93O1xuICB9XG5cbiAgYXN5bmMgdGFrZUFjdGlvbihhY3Rpb246IGFueSwgdXNlckNvbmZpZzogYW55LCBmb3Jtc0RhdGE6IGFueSkge1xuICAgIHN3aXRjaCAoYWN0aW9uLmtleSkge1xuICAgICAgY2FzZSBFQWN0aW9uS2V5LlNFVF9WQUxVRTpcbiAgICAgICAgY29uc3Qgc291cmNlcyA9IG5ldyBTb3VyY2VzKHtcbiAgICAgICAgICBVU0VSX0NPTkZJRzogdGhpcy51c2VyQ29uZmlnLFxuICAgICAgICAgIEFMTF9GT1JNU19EQVRBOiB0aGlzLmZvcm1zRGF0YVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBzb3VyY2VWYWx1ZSA9IGF3YWl0IHNvdXJjZXMuZ2V0VmFsdWVGcm9tU291cmNlKFxuICAgICAgICAgIGFjdGlvbi5wcm9wcy52YWx1ZS5zb3VyY2VcbiAgICAgICAgKTtcbiAgICAgICAgc291cmNlcy5zZXRWYWx1ZVRvU291cmNlKGFjdGlvbi5wcm9wcy52YWx1ZS5kZXN0aW5hdGlvbiwgc291cmNlVmFsdWUpO1xuXG4gICAgICAgIHRoaXMudXNlckNvbmZpZyA9IHNvdXJjZXMub2JqZWN0LlVTRVJfQ09ORklHO1xuICAgICAgICB0aGlzLmZvcm1zRGF0YSA9IHNvdXJjZXMub2JqZWN0LkFMTF9GT1JNU19EQVRBO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBuZ0NsYXNzPVwia3dpa2lkLXJlbmRlcmVyXCI+XG4gIDxkaXZcbiAgICBuZ0NsYXNzPVwia3dpa2lkLWxheW91dC1jb250YWluZXJcIlxuICAgICpuZ0lmPVwiIWxvYWRpbmdcIlxuICA+XG4gICAgPGRpdlxuICAgICAgbmdDbGFzcz1cImt3aWtpZC1zZWN0aW9ucy1jb250YWluZXJcIlxuICAgICAgKm5nSWY9XCJzaG93Rm9ybVNlY3Rpb25zXCJcbiAgICAgIGNsYXNzPVwiYWN0aXZlXCJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwic2hvd0Zvcm1TZWN0aW9uc1wiXG4gICAgICBbY2xhc3MubW9iaWxlXT1cInJlbmRlcmVyU2VydmljZS5pc01vYmlsZVZpZXdcIlxuICAgID5cbiAgICAgIDxrd2lraWQtZm9ybXMtbGlzdFxuICAgICAgICBbc2hvd0Zvcm1GaWVsZHNdPVwidGhpcy5zaG93Rm9ybUZpZWxkc1wiXG4gICAgICAgIFt1c2VyQ29uZmlnXT1cInRoaXMudXNlckNvbmZpZ1wiXG4gICAgICAgIFtmb3Jtc0xpc3RdPVwidGhpcy5yZW5kZXJlclNlcnZpY2UuZm9ybXNMaXN0XCJcbiAgICAgICAgW2Zvcm1zTGlzdENvbXBsZXRlZF09XCJ0aGlzLnJlbmRlcmVyU2VydmljZS5mb3Jtc0xpc3RDb21wbGV0ZWRcIlxuICAgICAgICBbaXNNb2JpbGVWaWV3XT1cInRoaXMucmVuZGVyZXJTZXJ2aWNlLmlzTW9iaWxlVmlld1wiXG4gICAgICAgIChvbkNsaWNrU2V0QWN0aXZlRm9ybSk9XCJ0aGlzLmhhbmRsZU9uQ2xpY2tTZXRBY3RpdmVGb3JtKCRldmVudClcIlxuICAgICAgICAob25DbGlja1N1Ym1pdEZvcm1zKT1cInRoaXMuaGFuZGxlT25DbGlja1N1Ym1pdEZvcm1zKCRldmVudClcIlxuICAgICAgPjwva3dpa2lkLWZvcm1zLWxpc3Q+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgbmdDbGFzcz1cImt3aWtpZC1mb3Jtcy1jb250YWluZXJcIlxuICAgICAgKm5nSWY9XCJ0aGlzLnNob3dGb3JtICYmIHRoaXMuc2hvd0Zvcm1GaWVsZHNcIlxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzaG93Rm9ybUZpZWxkc1wiXG4gICAgICBbY2xhc3MubW9iaWxlXT1cInJlbmRlcmVyU2VydmljZS5pc01vYmlsZVZpZXdcIlxuICAgICAgW0BwYW5lbEluT3V0XVxuICAgID5cbiAgICAgIDxrd2lraWQtZm9ybS12aWV3XG4gICAgICAgIFtmb3JtQ29uZmlnXT1cInRoaXMucmVuZGVyZXJTZXJ2aWNlLmFjdGl2ZUZvcm1Db25maWdcIlxuICAgICAgICBbZm9ybURhdGFdPVwidGhpcy5yZW5kZXJlclNlcnZpY2UuYWN0aXZlRm9ybURhdGFcIlxuICAgICAgICBbYXBpQ2FsbFJlc3BvbnNlXT1cInRoaXMuYXBpQ2FsbFJlc3BvbnNlXCJcbiAgICAgICAgW2Zvcm1zTGlzdF09XCJ0aGlzLnJlbmRlcmVyU2VydmljZS5mb3Jtc0xpc3RcIlxuICAgICAgICBbYWxsRm9ybXNEYXRhXT1cInRoaXMucmVuZGVyZXJTZXJ2aWNlLmFsbEZvcm1zRGF0YVwiXG4gICAgICAgIFtpc01vYmlsZVZpZXddPVwidGhpcy5yZW5kZXJlclNlcnZpY2UuaXNNb2JpbGVWaWV3XCJcbiAgICAgICAgKG9uQ2xpY2tBcGlDYWxsKT1cInRoaXMuaGFuZGxlT25DbGlja0FwaUNhbGwoJGV2ZW50KVwiXG4gICAgICAgIChvbkNsaWNrVmlld0Zvcm1zKT1cInRoaXMuaGFuZGxlT25DbGlja1ZpZXdGb3JtcygkZXZlbnQpXCJcbiAgICAgICAgKG9uQ2xpY2tTYXZlRm9ybSk9XCJ0aGlzLmhhbmRsZU9uQ2xpY2tTYXZlRm9ybSgkZXZlbnQpXCJcbiAgICAgICAgKGdldEFjdGl2ZUZvcm1EYXRhKT1cInRoaXMuaGFuZGxlR2V0QWN0aXZlRm9ybURhdGEoJGV2ZW50KVwiXG4gICAgICA+PC9rd2lraWQtZm9ybS12aWV3PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdlxuICBuZ0NsYXNzPVwia3dpa2lkLWZvcm1zLXJlbmRlcmVyLWxvYWRlclwiXG4gICpuZ0lmPVwibG9hZGVyXCJcbj5cbiAgPHNwYW4gY2xhc3M9XCJsb2FkZXJcIj48L3NwYW4+XG48L2Rpdj5cbjx0dWktcHVzaFxuICBpZD1cImVycm9yLW5vdGlmaWNhdGlvblwiXG4gICp0dWlQdXNoPVwic2hvd0Vycm9yTm90aWZpY2F0aW9uXCJcbiAgaGVhZGluZz1cIlBsZWFzZSBjb21wbGV0ZSB0aGUgcmVxdWlyZWQgRm9ybXMhXCJcbiAgdHlwZT1cIkVycm9yXCJcbiAgKGNsb3NlKT1cInRvZ2dsZUVycm9yTm90aWZpY2F0aW9uKGZhbHNlKVwiXG4+XG4gIDx0dWktc3ZnXG4gICAgc3JjPVwidHVpSWNvbkNhbmNlbFwiXG4gICAgc3R5bGU9XCJjb2xvcjogI2ZmZiAhaW1wb3J0YW50XCJcbiAgPlxuICA8L3R1aS1zdmc+XG48L3R1aS1wdXNoPlxuIl19
283
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvcmVuZGVyZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvcmVuZGVyZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLFNBQVMsRUFDVCxNQUFNLEVBQ04sVUFBVSxFQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7QUFtQjNELE1BQU0sT0FBTyw0QkFBNEI7SUFzRHZDLFlBQ1MsZUFBc0MsRUFDckMsV0FBdUI7UUFEeEIsb0JBQWUsR0FBZixlQUFlLENBQXVCO1FBQ3JDLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBeEJqQyxjQUFTLEdBQVEsRUFBRSxDQUFDO1FBR3BCLG9CQUFlLEdBQVEsRUFBRSxDQUFDO1FBRzFCLGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFHM0QsZ0JBQVcsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUd6RCxtQkFBYyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FB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YUFBYTtzQkFEWixNQUFNO2dCQUlQLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxjQUFjO3NCQURiLE1BQU07Z0JBMkdELDBCQUEwQixNQXVDaEMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tIFwiQGFuZ3VsYXIvYW5pbWF0aW9uc1wiO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIGNoZWNrT2JqZWN0S2V5RXhpc3RzLFxuICBsb2dNZXRob2QsXG4gIFNvdXJjZSxcbiAgVmFsaWRhdGlvblxufSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7IEVBY3Rpb25LZXkgfSBmcm9tIFwiLi9mb3JtLXZpZXcvZGVmaW5pdGlvbnMvZm9ybS12aWV3LmFjdGlvbnMuZGVmaW5pdGlvblwiO1xuaW1wb3J0IHsgQ29udmVydGVyIH0gZnJvbSBcIi4vcmVuZGVyZXIuY29uZmlnLWNvbnZlcnRlci5oZWxwZXJcIjtcbmltcG9ydCB7IEt3aWtJRFJlbmRlcmVyU2VydmljZSB9IGZyb20gXCIuL3JlbmRlcmVyLnNlcnZpY2VcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImt3aWtpZC1mb3Jtcy1yZW5kZXJlclwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3JlbmRlcmVyLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9yZW5kZXJlci5jb21wb25lbnQuc2Nzc1wiXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoXCJwYW5lbEluT3V0XCIsIFtcbiAgICAgIHRyYW5zaXRpb24oXCI6ZW50ZXJcIiwgW1xuICAgICAgICBzdHlsZSh7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVZKDEwMCUpXCIgfSksXG4gICAgICAgIGFuaW1hdGUoMTUwKVxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKFwiOmxlYXZlXCIsIFtcbiAgICAgICAgYW5pbWF0ZSgxMDAsIHN0eWxlKHsgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZVkoMTAwJSlcIiB9KSlcbiAgICAgIF0pXG4gICAgXSlcbiAgXSxcbiAgcHJvdmlkZXJzOiBbS3dpa0lEUmVuZGVyZXJTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBLd2lrSURGb3Jtc1JlbmRlcmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICAvLyBUaGUgZmluYWwgdmFsdWUgc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHNlcnZpY2UsIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gYWxsIGNvbXBvbmVudHNcbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIiwgW1wiJGV2ZW50XCJdKVxuICB3aW5kb3dSZXNpemVXYXRjaGVyKCkge1xuICAgIGlmICh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggPCA2MDApIHtcbiAgICAgIGlmICh0aGlzLnNob3dGb3JtKSB7XG4gICAgICAgIHRoaXMuc2hvd0Zvcm1TZWN0aW9ucyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dGb3JtRmllbGRzID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2hvd0Zvcm1TZWN0aW9ucyA9IHRydWU7XG4gICAgICAgIHRoaXMuc2hvd0Zvcm1GaWVsZHMgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVuZGVyZXJTZXJ2aWNlLmlzTW9iaWxlVmlldyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnNob3dGb3JtKSB7XG4gICAgICAgIHRoaXMuc2hvd0Zvcm1TZWN0aW9ucyA9IHRydWU7XG4gICAgICAgIHRoaXMuc2hvd0Zvcm1GaWVsZHMgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93Rm9ybVNlY3Rpb25zID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy5yZW5kZXJlclNlcnZpY2UuaXNNb2JpbGVWaWV3ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgc3RlcENvbmZpZzogYW55O1xuXG4gIEBJbnB1dCgpXG4gIHVzZXJDb25maWc6IGFueTtcblxuICBASW5wdXQoKVxuICBmb3Jtc0RhdGE6IGFueSA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIGFwaUNhbGxSZXNwb25zZTogYW55ID0ge307XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2tTdWJtaXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGdldEZvcm1EYXRhOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrQXBpQ2FsbDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIGxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIGRpc3BsYXkgZm9ybXMgYW5kIGxpc3QgY29uZGl0aW9uYWxseVxuICBzaG93Rm9ybTogYm9vbGVhbiA9IGZhbHNlO1xuICBzaG93Rm9ybUZpZWxkczogYm9vbGVhbiA9IHRydWU7XG4gIHNob3dGb3JtU2VjdGlvbnM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZW5kZXJlclNlcnZpY2U6IEt3aWtJRFJlbmRlcmVyU2VydmljZSxcbiAgICBwcml2YXRlIGhvc3RFbGVtZW50OiBFbGVtZW50UmVmXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IGZvcm1TdGVwS2V5ID0gdGhpcy5zdGVwQ29uZmlnPy5mb3JtPy5rZXkgPz8gdW5kZWZpbmVkO1xuXG4gICAgaWYgKFxuICAgICAgZm9ybVN0ZXBLZXkgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy51c2VyQ29uZmlnLnVzZXJGb3JtRmllbGRzLCBmb3JtU3RlcEtleSlcbiAgICApIHtcbiAgICAgIHRoaXMucmVuZGVyZXJTZXJ2aWNlLnNldEZvcm1zTGlzdChcbiAgICAgICAgdGhpcy51c2VyQ29uZmlnLnVzZXJGb3JtRmllbGRzW2Zvcm1TdGVwS2V5XVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodGhpcy51c2VyQ29uZmlnLnVzZXJGb3JtRmllbGRzKSkge1xuICAgICAgdGhpcy5yZW5kZXJlclNlcnZpY2Uuc2V0Rm9ybXNMaXN0KHRoaXMudXNlckNvbmZpZy51c2VyRm9ybUZpZWxkcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYHVzZXJGb3JtRmllbGRzIGRvZXNuJ3QgaGF2ZSBhIGZvcm0gZGVmaW5lZCB3aXRoIGtleTogJHtmb3JtU3RlcEtleX1gXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm1zKCk7XG4gICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCB2ZXJpZnlDaGFuZ2UgPSAocHJvcDogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eShwcm9wKSAmJiAhY2hhbmdlc1twcm9wXS5maXJzdENoYW5nZTtcbiAgICB9O1xuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJ1c2VyQ29uZmlnXCIpKSB7XG4gICAgICB0aGlzLnVzZXJDb25maWcgPSBjaGFuZ2VzLnVzZXJDb25maWcuY3VycmVudFZhbHVlO1xuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHZlcmlmeUNoYW5nZShcImZvcm1zRGF0YVwiKSkge1xuICAgICAgdGhpcy5mb3Jtc0RhdGEgPSBjaGFuZ2VzLmZvcm1zRGF0YS5jdXJyZW50VmFsdWU7XG5cbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm1zKCk7XG4gICAgfVxuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJhcGlDYWxsUmVzcG9uc2VcIikpIHtcbiAgICAgIHRoaXMuYXBpQ2FsbFJlc3BvbnNlID0gY2hhbmdlcy5hcGlDYWxsUmVzcG9uc2UuY3VycmVudFZhbHVlO1xuICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbml0aWFsaXplRm9ybXMoKSB7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuXG4gICAgdGhpcy5yZW5kZXJlclNlcnZpY2Uuc2V0QWxsRm9ybXNEYXRhKHRoaXMuZm9ybXNEYXRhKTtcblxuICAgIHRoaXMucmVuZGVyZXJTZXJ2aWNlLnVwZGF0ZUZvcm1zTGlzdCgpO1xuXG4gICAgdGhpcy5oYW5kbGVSZXNpemUodGhpcy5yZW5kZXJlclNlcnZpY2UuZm9ybXNMaXN0KTtcblxuICAgIGlmIChcbiAgICAgIHRoaXMucmVuZGVyZXJTZXJ2aWNlLmZvcm1zTGlzdC5sZW5ndGggIT09XG4gICAgICB0aGlzLnJlbmRlcmVyU2VydmljZS5mb3Jtc0xpc3RDb21wbGV0ZWQubGVuZ3RoXG4gICAgKSB7XG4gICAgICBhd2FpdCB0aGlzLmhhbmRsZU9uQ2xpY2tTZXRBY3RpdmVGb3JtKFxuICAgICAgICB0aGlzLnJlbmRlcmVyU2VydmljZS5hY3RpdmVGb3JtQ29uZmlnLmtleVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93Rm9ybSA9IGZhbHNlO1xuICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICBoYW5kbGVSZXNpemUoZm9ybXNMaXN0OiBhbnlbXSkge1xuICAgIGlmICh0aGlzLmhvc3RFbGVtZW50Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggPCA2MDApIHtcbiAgICAgIGNvbnN0IGlzU2luZ2xlRm9ybSA9IChmb3Jtc0xpc3Q6IGFueVtdKTogYm9vbGVhbiA9PiB7XG4gICAgICAgIHJldHVybiBmb3Jtc0xpc3QubGVuZ3RoID09PSAxO1xuICAgICAgfTtcbiAgICAgIGlmICghaXNTaW5nbGVGb3JtKGZvcm1zTGlzdCkpIHtcbiAgICAgICAgdGhpcy5zaG93Rm9ybVNlY3Rpb25zID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zaG93Rm9ybUZpZWxkcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dGb3JtID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNob3dGb3JtU2VjdGlvbnMgPSB0cnVlO1xuICAgICAgICB0aGlzLnNob3dGb3JtRmllbGRzID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0Zvcm0gPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVuZGVyZXJTZXJ2aWNlLmlzTW9iaWxlVmlldyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVuZGVyZXJTZXJ2aWNlLmlzTW9iaWxlVmlldyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIGZvcm1zLWxpc3QgbGlzdGVuZXJcbiAgQGxvZ01ldGhvZFxuICBhc3luYyBoYW5kbGVPbkNsaWNrU2V0QWN0aXZlRm9ybShzZWxlY3RlZEZvcm06IHN0cmluZykge1xuICAgIHRoaXMuc2hvd0Zvcm0gPSBmYWxzZTtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG5cbiAgICBjb25zdCBhY3RpdmVGb3JtQ29uZmlnID0gdGhpcy5yZW5kZXJlclNlcnZpY2UuZm9ybXNMaXN0LmZpbmQoKGZvcm0pID0+IHtcbiAgICAgIGlmIChmb3JtLmtleSA9PT0gc2VsZWN0ZWRGb3JtKSB7XG4gICAgICAgIHJldHVybiBmb3JtO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IGZvcm1Db25maWcgPSBhd2FpdCB0aGlzLnJlbmRlcmVyU2VydmljZS5mZXRjaEZvcm1Db25maWcoXG4gICAgICBhY3RpdmVGb3JtQ29uZmlnLmZvcm1Db250ZW50LnVybFxuICAgICk7XG5cbiAgICBmb3JtQ29uZmlnID0gbmV3IENvbnZlcnRlcigpLmNvbnZlcnRGb3JtQ29uZmlnKGZvcm1Db25maWcpO1xuXG4gICAgY29uc3QgYWN0aXZlRm9ybURhdGEgPVxuICAgICAgdGhpcy5yZW5kZXJlclNlcnZpY2UuYWxsRm9ybXNEYXRhW2Zvcm1Db25maWcua2V5XSA/PyB7fTtcbiAgICB0aGlzLnJlbmRlcmVyU2VydmljZS5zZXRBY3RpdmVGb3JtRGF0YShhY3RpdmVGb3JtRGF0YSk7XG5cbiAgICB0aGlzLnJlbmRlcmVyU2VydmljZS5zZXRBY3RpdmVGb3JtQ29uZmlnKHtcbiAgICAgIC4uLmFjdGl2ZUZvcm1Db25maWcsXG4gICAgICAuLi5mb3JtQ29uZmlnXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoIDwgNjAwKSB7XG4gICAgICB0aGlzLnNob3dGb3JtU2VjdGlvbnMgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2hvd0Zvcm1GaWVsZHMgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoID49IDYwMCkge1xuICAgICAgdGhpcy5zaG93Rm9ybVNlY3Rpb25zID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2hvd0Zvcm1GaWVsZHMgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd0Zvcm0gPSB0cnVlO1xuICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gIH1cblxuICAvLyBmb3Jtcy1saXN0IGxpc3RlbmVyXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25DbGlja1N1Ym1pdEZvcm1zKGU6IGFueSkge1xuICAgIGlmICh0aGlzLnVzZXJDb25maWcudXNlckZvcm1GaWVsZHNDb25maWcudmFsaWRhdGlvbikge1xuICAgICAgY29uc3QgdmFsaWRhdGlvbnMgPSBuZXcgVmFsaWRhdGlvbihcbiAgICAgICAge1xuICAgICAgICAgIFVTRVJfQ09ORklHOiB0aGlzLnVzZXJDb25maWcsXG4gICAgICAgICAgQUxMX0ZPUk1TX0RBVEE6IHRoaXMuZm9ybXNEYXRhXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMudGFrZUFjdGlvbi5iaW5kKHRoaXMpXG4gICAgICApO1xuXG4gICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB2YWxpZGF0aW9ucy52YWxpZGF0ZShcbiAgICAgICAgICB0aGlzLnVzZXJDb25maWcudXNlckZvcm1GaWVsZHNDb25maWcudmFsaWRhdGlvblxuICAgICAgICApO1xuXG4gICAgICAgIGlmICh0aGlzLnVzZXJDb25maWcudXNlckZvcm1GaWVsZHNDb25maWcuc3RhdHVzID09PSBcImNvbXBsZXRlZFwiKSB7XG4gICAgICAgICAgdGhpcy5vbkNsaWNrU3VibWl0LmVtaXQoZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy50b2dnbGVFcnJvck5vdGlmaWNhdGlvbih0cnVlKTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlRXJyb3JOb3RpZmljYXRpb24oZmFsc2UpO1xuICAgICAgICAgIH0sIDMwMDApO1xuICAgICAgICB9XG4gICAgICB9KSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIGZvcm0tdmlldyBsaXN0ZW5lclxuICBoYW5kbGVPbkNsaWNrQXBpQ2FsbChlOiBhbnkpIHtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgdGhpcy5vbkNsaWNrQXBpQ2FsbC5lbWl0KGUpO1xuICB9XG5cbiAgLy8gZm9ybS12aWV3IGxpc3RlbmVyXG4gIGhhbmRsZUdldEFjdGl2ZUZvcm1EYXRhKGU6IGFueSkge1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICB0aGlzLmdldEZvcm1EYXRhLmVtaXQoe1xuICAgICAgW3RoaXMucmVuZGVyZXJTZXJ2aWNlLmFjdGl2ZUZvcm1Db25maWcua2V5XTogZVtcImRhdGFcIl1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIGZvcm0tdmlldyBsaXN0ZW5lclxuICBoYW5kbGVPbkNsaWNrU2F2ZUZvcm0oZTogYW55KSB7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuXG4gICAgdGhpcy5yZW5kZXJlclNlcnZpY2Uuc2V0QWN0aXZlRm9ybURhdGEoe30pO1xuXG4gICAgdGhpcy5nZXRGb3JtRGF0YS5lbWl0KHtcbiAgICAgIFt0aGlzLnJlbmRlcmVyU2VydmljZS5hY3RpdmVGb3JtQ29uZmlnLmtleV06IGVbXCJkYXRhXCJdXG4gICAgfSk7XG4gIH1cblxuICAvLyBmb3JtLXZpZXcgbGlzdGVuZXJcbiAgaGFuZGxlT25DbGlja1ZpZXdGb3JtcyhlOiBhbnkpIHtcbiAgICB0aGlzLnNob3dGb3JtU2VjdGlvbnMgPSB0cnVlO1xuICAgIHRoaXMuc2hvd0Zvcm0gPSBmYWxzZTtcbiAgICB0aGlzLnNob3dGb3JtRmllbGRzID0gZmFsc2U7XG4gIH1cblxuICBzaG93RXJyb3JOb3RpZmljYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgdG9nZ2xlRXJyb3JOb3RpZmljYXRpb24oc2hvdykge1xuICAgIHRoaXMuc2hvd0Vycm9yTm90aWZpY2F0aW9uID0gc2hvdztcbiAgfVxuXG4gIGFzeW5jIHRha2VBY3Rpb24oYWN0aW9uOiBhbnksIHVzZXJDb25maWc6IGFueSwgZm9ybXNEYXRhOiBhbnkpIHtcbiAgICBzd2l0Y2ggKGFjdGlvbi5rZXkpIHtcbiAgICAgIGNhc2UgRUFjdGlvbktleS5TRVRfVkFMVUU6XG4gICAgICAgIGNvbnN0IHNvdXJjZXMgPSBuZXcgU291cmNlKHtcbiAgICAgICAgICBVU0VSX0NPTkZJRzogdGhpcy51c2VyQ29uZmlnLFxuICAgICAgICAgIEFMTF9GT1JNU19EQVRBOiB0aGlzLmZvcm1zRGF0YVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBzb3VyY2VWYWx1ZSA9IGF3YWl0IHNvdXJjZXMuZ2V0VmFsdWVGcm9tU291cmNlKFxuICAgICAgICAgIGFjdGlvbi5wcm9wcy52YWx1ZS5zb3VyY2VcbiAgICAgICAgKTtcbiAgICAgICAgc291cmNlcy5zZXRWYWx1ZVRvU291cmNlKGFjdGlvbi5wcm9wcy52YWx1ZS5kZXN0aW5hdGlvbiwgc291cmNlVmFsdWUpO1xuXG4gICAgICAgIHRoaXMudXNlckNvbmZpZyA9IHNvdXJjZXMub2JqZWN0LlVTRVJfQ09ORklHO1xuICAgICAgICB0aGlzLmZvcm1zRGF0YSA9IHNvdXJjZXMub2JqZWN0LkFMTF9GT1JNU19EQVRBO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBuZ0NsYXNzPVwia3dpa2lkLXJlbmRlcmVyXCI+XG4gIDxkaXZcbiAgICBuZ0NsYXNzPVwia3dpa2lkLWxheW91dC1jb250YWluZXJcIlxuICAgICpuZ0lmPVwiIWxvYWRpbmdcIlxuICA+XG4gICAgPGRpdlxuICAgICAgbmdDbGFzcz1cImt3aWtpZC1zZWN0aW9ucy1jb250YWluZXJcIlxuICAgICAgKm5nSWY9XCJzaG93Rm9ybVNlY3Rpb25zXCJcbiAgICAgIGNsYXNzPVwiYWN0aXZlXCJcbiAgICAgIFtjbGFzcy5hY3RpdmVdPVwic2hvd0Zvcm1TZWN0aW9uc1wiXG4gICAgICBbY2xhc3MubW9iaWxlXT1cInJlbmRlcmVyU2VydmljZS5pc01vYmlsZVZpZXdcIlxuICAgID5cbiAgICAgIDxrd2lraWQtZm9ybXMtbGlzdFxuICAgICAgICBbc2hvd0Zvcm1GaWVsZHNdPVwidGhpcy5zaG93Rm9ybUZpZWxkc1wiXG4gICAgICAgIFt1c2VyQ29uZmlnXT1cInRoaXMudXNlckNvbmZpZ1wiXG4gICAgICAgIFtmb3Jtc0xpc3RdPVwidGhpcy5yZW5kZXJlclNlcnZpY2UuZm9ybXNMaXN0XCJcbiAgICAgICAgW2Zvcm1zTGlzdENvbXBsZXRlZF09XCJ0aGlzLnJlbmRlcmVyU2VydmljZS5mb3Jtc0xpc3RDb21wbGV0ZWRcIlxuICAgICAgICBbaXNNb2JpbGVWaWV3XT1cInRoaXMucmVuZGVyZXJTZXJ2aWNlLmlzTW9iaWxlVmlld1wiXG4gICAgICAgIChvbkNsaWNrU2V0QWN0aXZlRm9ybSk9XCJ0aGlzLmhhbmRsZU9uQ2xpY2tTZXRBY3RpdmVGb3JtKCRldmVudClcIlxuICAgICAgICAob25DbGlja1N1Ym1pdEZvcm1zKT1cInRoaXMuaGFuZGxlT25DbGlja1N1Ym1pdEZvcm1zKCRldmVudClcIlxuICAgICAgPjwva3dpa2lkLWZvcm1zLWxpc3Q+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgbmdDbGFzcz1cImt3aWtpZC1mb3Jtcy1jb250YWluZXJcIlxuICAgICAgKm5nSWY9XCJ0aGlzLnNob3dGb3JtICYmIHRoaXMuc2hvd0Zvcm1GaWVsZHNcIlxuICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzaG93Rm9ybUZpZWxkc1wiXG4gICAgICBbY2xhc3MubW9iaWxlXT1cInJlbmRlcmVyU2VydmljZS5pc01vYmlsZVZpZXdcIlxuICAgICAgW0BwYW5lbEluT3V0XVxuICAgID5cbiAgICAgIDxrd2lraWQtZm9ybS12aWV3XG4gICAgICAgIFtmb3JtQ29uZmlnXT1cInRoaXMucmVuZGVyZXJTZXJ2aWNlLmFjdGl2ZUZvcm1Db25maWdcIlxuICAgICAgICBbZm9ybURhdGFdPVwidGhpcy5yZW5kZXJlclNlcnZpY2UuYWN0aXZlRm9ybURhdGFcIlxuICAgICAgICBbYXBpQ2FsbFJlc3BvbnNlXT1cInRoaXMuYXBpQ2FsbFJlc3BvbnNlXCJcbiAgICAgICAgW2Zvcm1zTGlzdF09XCJ0aGlzLnJlbmRlcmVyU2VydmljZS5mb3Jtc0xpc3RcIlxuICAgICAgICBbYWxsRm9ybXNEYXRhXT1cInRoaXMucmVuZGVyZXJTZXJ2aWNlLmFsbEZvcm1zRGF0YVwiXG4gICAgICAgIFtpc01vYmlsZVZpZXddPVwidGhpcy5yZW5kZXJlclNlcnZpY2UuaXNNb2JpbGVWaWV3XCJcbiAgICAgICAgKG9uQ2xpY2tBcGlDYWxsKT1cInRoaXMuaGFuZGxlT25DbGlja0FwaUNhbGwoJGV2ZW50KVwiXG4gICAgICAgIChvbkNsaWNrVmlld0Zvcm1zKT1cInRoaXMuaGFuZGxlT25DbGlja1ZpZXdGb3JtcygkZXZlbnQpXCJcbiAgICAgICAgKG9uQ2xpY2tTYXZlRm9ybSk9XCJ0aGlzLmhhbmRsZU9uQ2xpY2tTYXZlRm9ybSgkZXZlbnQpXCJcbiAgICAgICAgKGdldEFjdGl2ZUZvcm1EYXRhKT1cInRoaXMuaGFuZGxlR2V0QWN0aXZlRm9ybURhdGEoJGV2ZW50KVwiXG4gICAgICA+PC9rd2lraWQtZm9ybS12aWV3PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdlxuICBuZ0NsYXNzPVwia3dpa2lkLWZvcm1zLXJlbmRlcmVyLWxvYWRlclwiXG4gICpuZ0lmPVwibG9hZGVyXCJcbj5cbiAgPHNwYW4gY2xhc3M9XCJsb2FkZXJcIj48L3NwYW4+XG48L2Rpdj5cbjx0dWktcHVzaFxuICBpZD1cImVycm9yLW5vdGlmaWNhdGlvblwiXG4gICp0dWlQdXNoPVwic2hvd0Vycm9yTm90aWZpY2F0aW9uXCJcbiAgaGVhZGluZz1cIlBsZWFzZSBjb21wbGV0ZSB0aGUgcmVxdWlyZWQgRm9ybXMhXCJcbiAgdHlwZT1cIkVycm9yXCJcbiAgKGNsb3NlKT1cInRvZ2dsZUVycm9yTm90aWZpY2F0aW9uKGZhbHNlKVwiXG4+XG4gIDx0dWktc3ZnXG4gICAgc3JjPVwidHVpSWNvbkNhbmNlbFwiXG4gICAgc3R5bGU9XCJjb2xvcjogI2ZmZiAhaW1wb3J0YW50XCJcbiAgPlxuICA8L3R1aS1zdmc+XG48L3R1aS1wdXNoPlxuIl19