@qbs-origin/origin-form 0.8.10 → 0.8.12

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 (27) hide show
  1. package/esm2022/lib/form-css.helper.mjs +122 -28
  2. package/esm2022/lib/formly/custom-section-separator.component.mjs +11 -3
  3. package/esm2022/lib/formly/form-section-separator.component.mjs +34 -11
  4. package/esm2022/lib/formly/formly-dictionary-dropdown-tree/formly-dictionary-dropdown-tree.component.mjs +23 -8
  5. package/esm2022/lib/formly/formly-radio/formly-radio-component.mjs +3 -3
  6. package/esm2022/lib/formly/formly-row-spacer.mjs +12 -0
  7. package/esm2022/lib/formly/formly-row-wrapper.mjs +32 -0
  8. package/esm2022/lib/formly/formly-scan-id/formly-scan-id.component.mjs +21 -26
  9. package/esm2022/lib/model-population.helper.mjs +22 -1
  10. package/esm2022/lib/models/flux.model.mjs +1 -1
  11. package/esm2022/lib/models/forms.model.mjs +77 -25
  12. package/esm2022/lib/origin-form.component.mjs +170 -55
  13. package/esm2022/lib/origin-form.module.mjs +11 -1
  14. package/esm2022/lib/services/applicationData.service.mjs +1 -1
  15. package/fesm2022/qbs-origin-origin-form.mjs +518 -151
  16. package/fesm2022/qbs-origin-origin-form.mjs.map +1 -1
  17. package/lib/form-css.helper.d.ts +7 -0
  18. package/lib/formly/form-section-separator.component.d.ts +2 -2
  19. package/lib/formly/formly-dictionary-dropdown-tree/formly-dictionary-dropdown-tree.component.d.ts +2 -1
  20. package/lib/formly/formly-row-spacer.d.ts +6 -0
  21. package/lib/formly/formly-row-wrapper.d.ts +6 -0
  22. package/lib/models/flux.model.d.ts +4 -0
  23. package/lib/models/forms.model.d.ts +22 -6
  24. package/lib/origin-form.component.d.ts +6 -1
  25. package/lib/origin-form.module.d.ts +64 -62
  26. package/lib/services/applicationData.service.d.ts +1 -1
  27. package/package.json +1 -1
@@ -36,38 +36,97 @@ export class FormCssHelper {
36
36
  case '.component-data':
37
37
  cssText = this.getSpecificCssForData(key, values, cssRules);
38
38
  break;
39
+ case '.component-dictionary':
40
+ cssText = this.getSpecificCssForDictionary(key, values, cssRules);
41
+ break;
39
42
  case '.table-details':
40
43
  cssText = this.getSpecificCssForTableDetail(values);
41
44
  break;
42
45
  case '.table-header':
43
46
  cssText = this.getSpecificCssForTableHeader(values);
44
47
  break;
48
+ case '.component-progress-bar':
49
+ cssText = this.getSpecificCssForProgressBar(values);
50
+ break;
51
+ }
52
+ // Append component-level margin rules (applies to all 5 margin-enabled components)
53
+ const marginTop = values['component-margin-top'];
54
+ const marginBottom = values['component-margin-bottom'];
55
+ const marginParts = [];
56
+ if (marginTop && marginTop !== 'none') {
57
+ marginParts.push(`margin-top: ${marginTop} !important;`);
58
+ }
59
+ if (marginBottom && marginBottom !== 'none') {
60
+ marginParts.push(`margin-bottom: ${marginBottom} !important;`);
61
+ }
62
+ if (marginParts.length > 0) {
63
+ cssText += ` ${key} { ${marginParts.join(' ')} }`;
45
64
  }
46
65
  return cssText;
47
66
  }
67
+ static getSpecificCssForDictionary(key, values, cssRules) {
68
+ let inputSpecificCss = '';
69
+ const fontStyleSource = cssRules['.component-dictionary-value'] || cssRules['.font-input'];
70
+ if (fontStyleSource) {
71
+ const fontStyleForInputText = { ...fontStyleSource };
72
+ if (values['text-align']) {
73
+ fontStyleForInputText['text-align'] = values['text-align'];
74
+ }
75
+ fontStyleForInputText['color'] = (fontStyleForInputText['color'] || '') + ' !important';
76
+ inputSpecificCss = this.styleObjectToString({ ...fontStyleForInputText });
77
+ }
78
+ let labelSpecificCss = '';
79
+ const labelSource = cssRules['.component-dictionary-label'];
80
+ if (labelSource) {
81
+ labelSpecificCss = this.styleObjectToString({ ...labelSource });
82
+ }
83
+ var css = `
84
+ .mat-mdc-text-field-wrapper.mdc-text-field {
85
+ ${this.styleObjectToString({ ...values })};
86
+ border-style: solid;
87
+ input {
88
+ ${inputSpecificCss}
89
+ }
90
+ mat-label {
91
+ ${labelSpecificCss}
92
+ }
93
+ .mdc-line-ripple--active::after {
94
+ border-bottom-color: ${labelSource ? labelSource['color'] : 'inherit'}
95
+ }
96
+ }
97
+
98
+ .component-dictionary-label label {
99
+ ${labelSpecificCss}
100
+ }
101
+ `;
102
+ return `${key} { ${css} }`;
103
+ }
48
104
  static getSpecificCssForInput(key, values, cssRules) {
49
105
  let inputSpecificCss = '';
50
106
  let signInputSpecificCss = '';
51
- const fontStyleForInputText = cssRules['.font-input'];
52
- if (fontStyleForInputText) {
107
+ const fontStyleSource = cssRules['.component-text-field-value'] || cssRules['.font-input'];
108
+ if (fontStyleSource) {
109
+ const fontStyleForInputText = { ...fontStyleSource };
53
110
  //transfer property from component to input
54
111
  if (values['text-align']) {
55
112
  fontStyleForInputText['text-align'] = values['text-align'];
56
113
  }
57
- fontStyleForInputText['color'] += ' !important';
58
- inputSpecificCss = this.styleObjectToString(fontStyleForInputText);
59
- signInputSpecificCss = this.styleObjectToString(fontStyleForInputText, true);
114
+ fontStyleForInputText['color'] = (fontStyleForInputText['color'] || '') + ' !important';
115
+ inputSpecificCss = this.styleObjectToString({ ...fontStyleForInputText });
116
+ signInputSpecificCss = this.styleObjectToString({ ...fontStyleForInputText }, true);
60
117
  }
61
118
  let labelSpecificCss = '';
62
119
  let signLabelSpecificCss = '';
63
- const fontStyleForLabelText = cssRules['.component-text-field-label'];
64
- if (fontStyleForLabelText) {
65
- labelSpecificCss = this.styleObjectToString(fontStyleForLabelText);
66
- signLabelSpecificCss = this.styleObjectToString(fontStyleForLabelText, true);
120
+ const labelSource = cssRules['.component-text-field-label'];
121
+ if (labelSource) {
122
+ labelSpecificCss = this.styleObjectToString({ ...labelSource });
123
+ signLabelSpecificCss = this.styleObjectToString({ ...labelSource }, true);
67
124
  }
125
+ const textareaHeight = values['textarea-height'] || '';
126
+ const textareaMaxHeight = values['textarea-max-height'] || '';
68
127
  var css = `
69
128
  .mat-mdc-text-field-wrapper.mdc-text-field {
70
- ${this.styleObjectToString(values)};
129
+ ${this.styleObjectToString({ ...values })};
71
130
  border-style: solid;
72
131
  input {
73
132
  ${inputSpecificCss}
@@ -76,13 +135,13 @@ export class FormCssHelper {
76
135
  ${labelSpecificCss}
77
136
  }
78
137
  .mdc-line-ripple--active::after {
79
- border-bottom-color: ${fontStyleForLabelText['color']}
138
+ border-bottom-color: ${labelSource ? labelSource['color'] : 'inherit'}
80
139
  }
81
140
  }
82
141
 
83
142
  input.component-text-field {
84
143
  border-style: solid !important;
85
- ${this.styleObjectToString(values, true)};
144
+ ${this.styleObjectToString({ ...values }, true)};
86
145
  ${signInputSpecificCss}
87
146
  }
88
147
 
@@ -90,7 +149,34 @@ export class FormCssHelper {
90
149
  ${signLabelSpecificCss}
91
150
  }
92
151
  `;
93
- return `${key} { ${css}}`;
152
+ // Flat explicit rules scoped to textarea only.
153
+ // :has(textarea) on the infix ensures min-height/max-height do NOT affect
154
+ // text/numeric inputs that share the same .component-text-field class.
155
+ const textareaFlatCss = `
156
+ ${key} .mat-mdc-text-field-wrapper.mdc-text-field:has(textarea) .mat-mdc-form-field-infix {
157
+ ${textareaHeight ? `min-height: ${textareaHeight} !important;` : ''}
158
+ }
159
+ ${key} .mat-mdc-text-field-wrapper.mdc-text-field textarea {
160
+ ${inputSpecificCss}
161
+ ${textareaHeight ? `min-height: ${textareaHeight} !important;` : ''}
162
+ ${textareaMaxHeight && textareaMaxHeight !== 'none' ? `max-height: ${textareaMaxHeight} !important; overflow-y: auto !important;` : ''}
163
+ resize: none !important;
164
+ }
165
+ `;
166
+ return `${key} { ${css}} ${textareaFlatCss}`;
167
+ }
168
+ static getSpecificCssForProgressBar(values) {
169
+ const startColor = values['startColor'] || '#8848EF';
170
+ const endColor = values['endColor'] || '#8848EF';
171
+ const height = values['height'] || '4px';
172
+ const borderRadius = values['borderRadius'] || '7px';
173
+ return `
174
+ .component-progress-bar {
175
+ background: linear-gradient(to right, ${startColor}, ${endColor}) !important;
176
+ height: ${height} !important;
177
+ border-radius: ${borderRadius} !important;
178
+ }
179
+ `;
94
180
  }
95
181
  static getSpecificCssForTableHeader(values) {
96
182
  const backgroundColor = values['background-color'] || '#ffffff';
@@ -271,7 +357,8 @@ export class FormCssHelper {
271
357
  .component-text-field mat-label,
272
358
  .component-checkbox mat-label,
273
359
  .component-radio mat-label,
274
- .component-date mat-label {
360
+ .component-date mat-label,
361
+ .component-dictionary mat-label {
275
362
  ${cssRules['.font-label']
276
363
  ? this.styleObjectToString(cssRules['.font-label'])
277
364
  : ''}
@@ -326,21 +413,22 @@ export class FormCssHelper {
326
413
  }
327
414
  static getSpecificCssForData(key, values, cssRules) {
328
415
  let inputSpecificCss = '';
329
- const fontStyleForInputText = cssRules['.font-list'];
330
- if (fontStyleForInputText) {
416
+ const fontStyleSource = cssRules['.component-date-value'] || cssRules['.component-data-value'] || cssRules['.font-list'];
417
+ if (fontStyleSource) {
418
+ const fontStyleForInputText = { ...fontStyleSource };
331
419
  //transfer property from component to input
332
420
  if (values['text-align']) {
333
421
  fontStyleForInputText['text-align'] = values['text-align'];
334
422
  }
335
- inputSpecificCss = this.styleObjectToString(fontStyleForInputText);
423
+ inputSpecificCss = this.styleObjectToString({ ...fontStyleForInputText });
336
424
  }
337
425
  let labelSpecificCss = '';
338
- const fontStyleForLabelText = cssRules['.component-data-label'];
339
- if (fontStyleForLabelText) {
340
- labelSpecificCss = this.styleObjectToString(fontStyleForLabelText);
426
+ const labelSource = cssRules['.component-data-label'];
427
+ if (labelSource) {
428
+ labelSpecificCss = this.styleObjectToString({ ...labelSource });
341
429
  }
342
430
  return ` ${key} { .mat-mdc-text-field-wrapper.mdc-text-field {
343
- ${this.styleObjectToString(values)};
431
+ ${this.styleObjectToString({ ...values })};
344
432
  border-style:solid;
345
433
  input{
346
434
  ${inputSpecificCss}
@@ -353,15 +441,21 @@ export class FormCssHelper {
353
441
  }
354
442
  } `;
355
443
  }
444
+ static { this.INTERNAL_KEYS = ['textarea-height', 'textarea-max-height', 'component-margin-top', 'component-margin-bottom']; }
356
445
  static styleObjectToString(values, important = false) {
357
- values['width'] =
358
- 'calc(100%' +
359
- ('margin-left' in values ? ` - ${values['margin-left']}` : '') +
360
- ('margin-right' in values ? ` - ${values['margin-right']}` : '') +
361
- ')';
362
- return Object.entries(values)
446
+ const output = { ...values };
447
+ // Remove internal keys that are not valid CSS properties
448
+ this.INTERNAL_KEYS.forEach(k => delete output[k]);
449
+ if (!output['width']) {
450
+ output['width'] =
451
+ 'calc(100%' +
452
+ ('margin-left' in output ? ` - ${output['margin-left']}` : '') +
453
+ ('margin-right' in output ? ` - ${output['margin-right']}` : '') +
454
+ ')';
455
+ }
456
+ return Object.entries(output)
363
457
  .map(([key, value]) => `${key}: ${value}${important ? ' !important' : ''}`)
364
458
  .join('; ');
365
459
  }
366
460
  }
367
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jc3MuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvb3JpZ2luLWZvcm0vc3JjL2xpYi9mb3JtLWNzcy5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGFBQWE7SUFFakIsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFFBQWtCLEVBQUUsYUFBc0I7UUFDM0UsSUFBSSxXQUFXLEdBQUcsYUFBYSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNELElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUN2QywwQ0FBMEMsRUFDMUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQ25CLFFBQVEsQ0FDVCxDQUFDO1lBQ0YsV0FBVyxJQUFJLE9BQU8sQ0FBQztRQUN6QixDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFrQjtRQUNoRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQzthQUN6QyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDMUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxvQkFBb0IsQ0FDakMsR0FBVyxFQUNYLE1BQXNDLEVBQ3RDLFFBQWtCO1FBRWxCLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO2FBQ3hDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUs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LENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDdEU7YUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3NzUnVsZXMgfSBmcm9tIFwiLi9vdGhlcnMvdXRpbHNcIjtcblxuZXhwb3J0IGNsYXNzIEZvcm1Dc3NIZWxwZXIge1xuXG4gIHB1YmxpYyBzdGF0aWMgY29udmVydFRvU3R5bGVTdHJpbmcoY3NzUnVsZXM6IENzc1J1bGVzLCBpc0Rpc3BsYXlNb2RlOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICBsZXQgc3R5bGVTdHJpbmcgPSBGb3JtQ3NzSGVscGVyLmNvbnZlcnRUb0Nzc1RleHQoY3NzUnVsZXMpO1xuICAgIGlmIChpc0Rpc3BsYXlNb2RlKSB7XG4gICAgICBjb25zdCBuZXdSdWxlID0gdGhpcy5jb252ZXJ0UnVsZVRvQ3NzVGV4dChcbiAgICAgICAgJy5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLWhlYWRlci1jb250YWluZXInLFxuICAgICAgICB7IGRpc3BsYXk6ICdub25lJyB9LFxuICAgICAgICBjc3NSdWxlc1xuICAgICAgKTtcbiAgICAgIHN0eWxlU3RyaW5nICs9IG5ld1J1bGU7XG4gICAgfVxuICAgIHJldHVybiBzdHlsZVN0cmluZztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvbnZlcnRUb0Nzc1RleHQoY3NzUnVsZXM6IENzc1J1bGVzKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdHlsZVN0cmluZyA9IE9iamVjdC5lbnRyaWVzKGNzc1J1bGVzKVxuICAgICAgLm1hcCgoW2ssIHZdKSA9PiB0aGlzLmNvbnZlcnRSdWxlVG9Dc3NUZXh0KGssIHYsIGNzc1J1bGVzKSlcbiAgICAgIC5qb2luKCcgJyk7XG4gICAgcmV0dXJuIHN0eWxlU3RyaW5nO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY29udmVydFJ1bGVUb0Nzc1RleHQoXG4gICAga2V5OiBzdHJpbmcsXG4gICAgdmFsdWVzOiB7IFtwcm9wZXJ0eTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgY3NzUnVsZXM6IENzc1J1bGVzXG4gICkge1xuICAgIGNvbnN0IHZhbHVlc0FzVGV4dCA9IE9iamVjdC5lbnRyaWVzKHZhbHVlcylcbiAgICAgIC5tYXAoKFtrLCB2XSkgPT4gYCR7a306JHt2fTtgKVxuICAgICAgLmpvaW4oJyAnKTtcbiAgICBsZXQgY3NzVGV4dCA9IGAgJHtrZXl9IHske3ZhbHVlc0FzVGV4dH19IGA7XG5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgY2FzZSAnLmNvbXBvbmVudC10ZXh0LWZpZWxkJzpcbiAgICAgICAgY3NzVGV4dCA9IHRoaXMuZ2V0U3BlY2lmaWNDc3NGb3JJbnB1dChrZXksIHZhbHVlcywgY3NzUnVsZXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJy5jb21wb25lbnQtY2hlY2tib3gnOlxuICAgICAgICBjc3NUZXh0ID0gdGhpcy5nZXRTcGVjaWZpY0Nzc0ZvckNoZWNrQm94KGtleSwgdmFsdWVzLCBjc3NSdWxlcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnLmZvbnQtaGVhZGluZy0xJzpcbiAgICAgICAgY3NzVGV4dCA9IHRoaXMuZ2V0U3BlY2lmaWNDc3NGb3JTdGVwTGFiZWwoa2V5LCB2YWx1ZXMsIGNzc1J1bGVzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcuZm9ybWx5LXJhZGlvJzpcbiAgICAgIGNhc2UgJy5jb21wb25lbnQtcmFkaW8nOlxuICAgICAgICBjc3NUZXh0ID0gdGhpcy5nZXRTcGVjaWZpY0Nzc0ZvclJhZGlvKHZhbHVlcywgY3NzUnVsZXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJy5jb21wb25lbnQtZGF0ZSc6XG4gICAgICBjYXNlICcuY29tcG9uZW50LWRhdGEnOlxuICAgICAgICBjc3NUZXh0ID0gdGhpcy5nZXRTcGVjaWZpY0Nzc0ZvckRhdGEoa2V5LCB2YWx1ZXMsIGNzc1J1bGVzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcudGFibGUtZGV0YWlscyc6XG4gICAgICAgIGNzc1RleHQgPSB0aGlzLmdldFNwZWNpZmljQ3NzRm9yVGFibGVEZXRhaWwodmFsdWVzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcudGFibGUtaGVhZGVyJzpcbiAgICAgICAgY3NzVGV4dCA9IHRoaXMuZ2V0U3BlY2lmaWNDc3NGb3JUYWJsZUhlYWRlcih2YWx1ZXMpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIGNzc1RleHQ7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldFNwZWNpZmljQ3NzRm9ySW5wdXQoXG4gICAga2V5OiBzdHJpbmcsXG4gICAgdmFsdWVzOiB7IFtwcm9wZXJ0eTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgY3NzUnVsZXM6IENzc1J1bGVzXG4gICkge1xuICAgIGxldCBpbnB1dFNwZWNpZmljQ3NzID0gJyc7XG4gICAgbGV0IHNpZ25JbnB1dFNwZWNpZmljQ3NzID0gJyc7XG4gICAgY29uc3QgZm9udFN0eWxlRm9ySW5wdXRUZXh0ID0gY3NzUnVsZXNbJy5mb250LWlucHV0J107XG4gICAgaWYgKGZvbnRTdHlsZUZvcklucHV0VGV4dCkge1xuICAgICAgLy90cmFuc2ZlciBwcm9wZXJ0eSBmcm9tIGNvbXBvbmVudCB0byBpbnB1dFxuICAgICAgaWYgKHZhbHVlc1sndGV4dC1hbGlnbiddKSB7XG4gICAgICAgIGZvbnRTdHlsZUZvcklucHV0VGV4dFsndGV4dC1hbGlnbiddID0gdmFsdWVzWyd0ZXh0LWFsaWduJ107XG4gICAgICB9XG4gICAgICBmb250U3R5bGVGb3JJbnB1dFRleHRbJ2NvbG9yJ10gKz0gJyAhaW1wb3J0YW50JztcbiAgICAgIGlucHV0U3BlY2lmaWNDc3MgPSB0aGlzLnN0eWxlT2JqZWN0VG9TdHJpbmcoZm9udFN0eWxlRm9ySW5wdXRUZXh0KTtcbiAgICAgIHNpZ25JbnB1dFNwZWNpZmljQ3NzID0gdGhpcy5zdHlsZU9iamVjdFRvU3RyaW5nKFxuICAgICAgICBmb250U3R5bGVGb3JJbnB1dFRleHQsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IGxhYmVsU3BlY2lmaWNDc3MgPSAnJztcbiAgICBsZXQgc2lnbkxhYmVsU3BlY2lmaWNDc3MgPSAnJztcbiAgICBjb25zdCBmb250U3R5bGVGb3JMYWJlbFRleHQgPSBjc3NSdWxlc1snLmNvbXBvbmVudC10ZXh0LWZpZWxkLWxhYmVsJ107XG4gICAgaWYgKGZvbnRTdHlsZUZvckxhYmVsVGV4dCkge1xuICAgICAgbGFiZWxTcGVjaWZpY0NzcyA9IHRoaXMuc3R5bGVPYmplY3RUb1N0cmluZyhmb250U3R5bGVGb3JMYWJlbFRleHQpO1xuICAgICAgc2lnbkxhYmVsU3BlY2lmaWNDc3MgPSB0aGlzLnN0eWxlT2JqZWN0VG9TdHJpbmcoXG4gICAgICAgIGZvbnRTdHlsZUZvckxhYmVsVGV4dCxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB2YXIgY3NzID0gYFxuICAgIC5tYXQtbWRjLXRleHQtZmllbGQtd3JhcHBlci5tZGMtdGV4dC1maWVsZCB7XG4gICAgICAke3RoaXMuc3R5bGVPYmplY3RUb1N0cmluZyh2YWx1ZXMpfTtcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgICBpbnB1dCB7XG4gICAgICAgICR7aW5wdXRTcGVjaWZpY0Nzc31cbiAgICAgIH1cbiAgICAgIG1hdC1sYWJlbCB7XG4gICAgICAgICR7bGFiZWxTcGVjaWZpY0Nzc31cbiAgICAgIH1cbiAgICAgIC5tZGMtbGluZS1yaXBwbGUtLWFjdGl2ZTo6YWZ0ZXIge1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAke2ZvbnRTdHlsZUZvckxhYmVsVGV4dFsnY29sb3InXX1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbnB1dC5jb21wb25lbnQtdGV4dC1maWVsZCB7XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG4gICAgICAke3RoaXMuc3R5bGVPYmplY3RUb1N0cmluZyh2YWx1ZXMsIHRydWUpfTtcbiAgICAgICR7c2lnbklucHV0U3BlY2lmaWNDc3N9XG4gICAgfVxuXG4gICAgLmNvbXBvbmVudC10ZXh0LWZpZWxkLWxhYmVsIGxhYmVsIHtcbiAgICAgICR7c2lnbkxhYmVsU3BlY2lmaWNDc3N9XG4gICAgfVxuICAgIGA7XG5cbiAgICByZXR1cm4gYCR7a2V5fSB7ICR7Y3NzfX1gO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRTcGVjaWZpY0Nzc0ZvclRhYmxlSGVhZGVyKFxuICAgIHZhbHVlczogeyBbcHJvcGVydHk6IHN0cmluZ106IHN0cmluZyB9XG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgYmFja2dyb3VuZENvbG9yID0gdmFsdWVzWydiYWNrZ3JvdW5kLWNvbG9yJ10gfHwgJyNmZmZmZmYnO1xuICAgIGNvbnN0IHRleHRDb2xvciA9IHZhbHVlc1snY29sb3InXSB8fCAnIzAwMDAwMCc7XG4gICAgY29uc3QgYm9yZGVyID0gdmFsdWVzWydib3JkZXItd2lkdGgnXTtcbiAgICBjb25zdCBib3JkZXJDb2xvciA9IHZhbHVlc1snYm9yZGVyLWNvbG9yJ10gfHwgJyMwMDAwMDAnO1xuICAgIGNvbnN0IGJvcmRlckNvbGxhcHNlID0gdmFsdWVzWydib3JkZXItY29sbGFwc2UnXSB8fCAnY29sbGFwc2UnO1xuICAgIGNvbnN0IGJvcmRlclNwYWNpbmcgPSB2YWx1ZXNbJ2JvcmRlci1zcGFjaW5nJ10gfHwgJzAnO1xuICAgIGNvbnN0IHRleHRBbGlnbiA9IHZhbHVlc1sndGV4dC1hbGlnbiddIHx8ICdsZWZ0JztcbiAgICBjb25zdCB2ZXJ0aWNhbEFsaWduID0gdmFsdWVzWyd2ZXJ0aWNhbC1hbGlnbiddIHx8ICdtaWRkbGUnO1xuICAgIGNvbnN0IGZvbnRGYW1pbHkgPSB2YWx1ZXNbJ2ZvbnQtZmFtaWx5J10gfHwgJ0FyaWFsLCBzYW5zLXNlcmlmJztcbiAgICBjb25zdCBmb250U2l6ZSA9IHZhbHVlc1snZm9udC1zaXplJ10gfHwgJzE0cHgnO1xuICAgIGNvbnN0IGxldHRlclNwYWNpbmcgPSB2YWx1ZXNbJ2xldHRlci1zcGFjaW5nJ10gfHwgJ25vcm1hbCc7XG4gICAgY29uc3QgcGFkZGluZyA9IHZhbHVlc1sncGFkZGluZyddIHx8ICc4cHgnO1xuICAgIGNvbnN0IHdpZHRoID0gdmFsdWVzWyd3aWR0aCddIHx8ICdhdXRvJztcbiAgICBjb25zdCBoZWlnaHQgPSB2YWx1ZXNbJ2hlaWdodCddIHx8ICdhdXRvJztcblxuICAgIGNvbnN0IGNzcyA9IGBcbiAgICB0YWJsZSBcbiAgICAge1xuICAgICAgYm9yZGVyLWNvbGxhcHNlOiAke2JvcmRlckNvbGxhcHNlfSAhaW1wb3J0YW50O1xuICAgICAgYm9yZGVyLXNwYWNpbmc6ICR7Ym9yZGVyU3BhY2luZ307ICAgXG4gICAgICBmb250LWZhbWlseTogJHtmb250RmFtaWx5fTtcbiAgICAgIGZvbnQtc2l6ZTogJHtmb250U2l6ZX07XG4gICAgfVxuICAgICAgdGFibGUgdGgge1xuICAgICAgaGVpZ2h0OiAke2hlaWdodH07XG4gICAgICB9XG4gICAgICB0YWJsZSB0ZHtoZWlnaHQ6ICR7aGVpZ2h0fTtcbiAgICAgIH1cbiAgICAudGFibGUtaGVhZCB0ciB0aHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7YmFja2dyb3VuZENvbG9yfSAhaW1wb3J0YW50O1xuICAgICAgd2lkdGg6ICR7d2lkdGh9ICFpbXBvcnRhbnQ7XG4gICAgICBib3JkZXItY29sbGFwc2U6ICR7Ym9yZGVyQ29sbGFwc2V9O1xuICAgICAgICBib3JkZXItc3BhY2luZzogJHtib3JkZXJTcGFjaW5nfTtcbiAgICAgICAgYm9yZGVyOiAke2JvcmRlcn0gc29saWQgJHtib3JkZXJDb2xvcn07IFxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogJHt2ZXJ0aWNhbEFsaWdufTtcbiAgICAgICAgZm9udC1mYW1pbHk6ICR7Zm9udEZhbWlseX07XG4gICAgICAgIGZvbnQtc2l6ZTogJHtmb250U2l6ZX07XG4gICAgICB9XG4gICAgLnRhYmxlLWhlYWQge1xuICAgICAgY29sb3I6ICR7dGV4dENvbG9yfTtcbiAgICAgIGJvcmRlcjogJHtib3JkZXJ9IHNvbGlkICR7Ym9yZGVyQ29sb3J9OyAgXG4gICAgICB0ZXh0LWFsaWduOiAke3RleHRBbGlnbn07ICAgICAgICAgICAgXG4gICAgICBsZXR0ZXItc3BhY2luZzogJHtsZXR0ZXJTcGFjaW5nfTtcbiAgICAgIHBhZGRpbmc6ICR7cGFkZGluZ307ICAgICAgXG4gICAgICBoZWlnaHQ6ICR7aGVpZ2h0fTtcbiAgICAgfVxuXG4gICAgYDtcbiAgICByZXR1cm4gY3NzO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRTcGVjaWZpY0Nzc0ZvclRhYmxlRGV0YWlsKFxuICAgIHZhbHVlczogeyBbcHJvcGVydHk6IHN0cmluZ106IHN0cmluZyB9XG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgYmFja2dyb3VuZENvbG9yID0gdmFsdWVzWydiYWNrZ3JvdW5kLWNvbG9yJ10gfHwgJyNmZmZmZmYnO1xuICAgIGNvbnN0IHRleHRDb2xvciA9IHZhbHVlc1snY29sb3InXSB8fCAnIzAwMDAwMCc7XG4gICAgY29uc3QgdGV4dEFsaWduID0gdmFsdWVzWyd0ZXh0LWFsaWduJ10gfHwgJ2xlZnQnO1xuICAgIGNvbnN0IHZlcnRpY2FsQWxpZ24gPSB2YWx1ZXNbJ3ZlcnRpY2FsQWxpZ24nXSB8fCAnbWlkZGxlJztcbiAgICBjb25zdCBsZXR0ZXJTcGFjaW5nID0gdmFsdWVzWydsZXR0ZXItc3BhY2luZyddIHx8ICdub3JtYWwnO1xuICAgIGNvbnN0IHBhZGRpbmcgPSB2YWx1ZXNbJ3BhZGRpbmcnXSB8fCAnOHB4JztcbiAgICBjb25zdCByb3dCb3JkZXIgPSB2YWx1ZXNbJ3Jvd2JvcmRlciddIHx8ICcxcHgnO1xuICAgIGNvbnN0IHJvd0JvcmRlckNvbG9yID0gdmFsdWVzWydyb3dib3JkZXItY29sb3InXSB8fCAnIzAwMDAwMCc7XG4gICAgY29uc3QgaG92ZXJCYWNrZ3JvdW5kQ29sb3IgPSB2YWx1ZXNbJ2hvdmVyLWJhY2tncm91bmQtY29sb3InXSB8fCAnI2YwZjBmMCc7XG5cbiAgICBjb25zdCBjc3MgPSBgICAgIFxuXG4gICAgICAudGFibGUtZGV0YWlse1xuICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7YmFja2dyb3VuZENvbG9yfVxuICAgICAgfVxuICAgICAgICAudGFibGUtZGV0YWlsIC5uZy1zdGFyLWluc2VydGVkIHtcbiAgICBib3JkZXItdG9wOiAke3Jvd0JvcmRlcn0gc29saWQgJHtyb3dCb3JkZXJDb2xvcn0gIWltcG9ydGFudDtcbiAgICBib3JkZXItYm90dG9tOiAke3Jvd0JvcmRlcn0gc29saWQgJHtyb3dCb3JkZXJDb2xvcn0gIWltcG9ydGFudDsgICAgXG4gICAgY29sb3I6ICR7dGV4dENvbG9yfSAhaW1wb3J0YW50O1xuICAgIHRleHQtYWxpZ246ICR7dGV4dEFsaWdufTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogJHt2ZXJ0aWNhbEFsaWdufTtcbiAgICBsZXR0ZXItc3BhY2luZzogJHtsZXR0ZXJTcGFjaW5nfTsgICAgXG4gIH1cbiAgXG5cbiAgLnRhYmxlLWRldGFpbCAubmctc3Rhci1pbnNlcnRlZDpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtob3ZlckJhY2tncm91bmRDb2xvcn0gIWltcG9ydGFudDtcbiAgICBcbiAgfVxuXG4gIC50YWJsZS1kZXRhaWwgdGQge1xuICAgIHBhZGRpbmc6ICR7cGFkZGluZ30gIWltcG9ydGFudDtcbiAgfVxuICAgICBcbiAgICBgO1xuXG4gICAgcmV0dXJuIGNzcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0U3BlY2lmaWNDc3NGb3JDaGVja0JveChcbiAgICBrZXk6IHN0cmluZyxcbiAgICB2YWx1ZXM6IHsgW3Byb3BlcnR5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICBjc3NSdWxlczogQ3NzUnVsZXNcbiAgKTogc3RyaW5nIHtcbiAgICBsZXQgbGFiZWxTcGVjaWZpY0NzcyA9ICcnO1xuICAgIGNvbnN0IGZvbnRTdHlsZUZvckxhYmVsVGV4dCA9IGNzc1J1bGVzWycuY29tcG9uZW50LWNoZWNrYm94LWxhYmVsJ107XG4gICAgaWYgKGZvbnRTdHlsZUZvckxhYmVsVGV4dCkge1xuICAgICAgbGFiZWxTcGVjaWZpY0NzcyA9IHRoaXMuc3R5bGVPYmplY3RUb1N0cmluZyhmb250U3R5bGVGb3JMYWJlbFRleHQpO1xuICAgIH1cblxuICAgIHZhciBjc3MgPSBgXG4gICAgLm1hdC1tZGMtdGV4dC1maWVsZC13cmFwcGVyLm1kYy1jaGVja2JveC1maWVsZCB7XG4gICAgICBtYXJnaW4tdG9wOiAke3ZhbHVlc1snbWFyZ2luLXRvcCddfTtcbiAgICAgIG1hcmdpbi1yaWdodDogJHt2YWx1ZXNbJ21hcmdpbi1yaWdodCddfTtcbiAgICAgIG1hcmdpbi1ib3R0b206ICR7dmFsdWVzWydtYXJnaW4tYm90dG9tJ119O1xuICAgICAgbWFyZ2luLWxlZnQ6ICR7dmFsdWVzWydtYXJnaW4tbGVmdCddfTtcbiAgICAgIC5tZGMtZm9ybS1maWVsZCA+IGxhYmVsIHtcbiAgICAgICAgJHtsYWJlbFNwZWNpZmljQ3NzfTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBwYWRkaW5nLXRvcDogMnB4O1xuICAgICAgfTtcbiAgICAgIC5tZGMtY2hlY2tib3gge1xuICAgICAgICB3aWR0aDogY2FsYygxOHB4ICsgKDIgKiAke3ZhbHVlc1snYm9yZGVyLXdpZHRoJ119KSk7XG4gICAgICAgIGhlaWdodDogY2FsYygxOHB4ICsgKDIgKiAke3ZhbHVlc1snYm9yZGVyLXdpZHRoJ119KSk7XG4gICAgICAgIGZsZXg6IDAgMCBjYWxjKDE4cHggKyAoMiAqICR7dmFsdWVzWydib3JkZXItd2lkdGgnXX0pKTtcbiAgICAgIH1cbiAgICAgIC5tZGMtY2hlY2tib3ggLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2wge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuICAgICAgLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dmFsdWVzWydiYWNrZ3JvdW5kLWNvbG9yJ119ICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlcjogJHt2YWx1ZXNbJ2JvcmRlci13aWR0aCddfSBzb2xpZCAke3ZhbHVlc1snYm9yZGVyLWNvbG9yJ119ICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICR7dmFsdWVzWydib3JkZXItcmFkaXVzJ119O1xuICAgICAgICB3aWR0aDogY2FsYygxOXB4ICsgKDIgKiAke3ZhbHVlc1snYm9yZGVyLXdpZHRoJ119KSk7XG4gICAgICAgIGhlaWdodDogY2FsYygxOXB4ICsgKDIgKiAke3ZhbHVlc1snYm9yZGVyLXdpZHRoJ119KSk7XG4gICAgICB9O1xuICAgIH1cbiAgICAubWRjLWNoZWNrYm94X19uYXRpdmUtY29udHJvbDplbmFibGVkOmNoZWNrZWR+Lm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCB7XG4gICAgICBib3JkZXI6ICR7dmFsdWVzWydib3JkZXItd2lkdGgnXX0gc29saWQgJHt2YWx1ZXNbJ2JvcmRlci1jb2xvciddfSAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAubWRjLWNoZWNrYm94X19jaGVja21hcmstcGF0aCB7XG4gICAgICBjb2xvcjogJHt2YWx1ZXNbJ2NvbG9yJ119ICFpbXBvcnRhbnQ7XG4gICAgfWA7XG4gICAgcmV0dXJuIGAke2tleX0geyAke2Nzc30gfWA7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXRTcGVjaWZpY0Nzc0ZvclN0ZXBMYWJlbChcbiAgICBrZXk6IHN0cmluZyxcbiAgICB2YWx1ZXM6IHsgW3Byb3BlcnR5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICBjc3NSdWxlczogQ3NzUnVsZXNcbiAgKSB7XG4gICAgY29uc3QgbGFiZWxTcGVjaWZpY0NzcyA9IHRoaXMuc3R5bGVPYmplY3RUb1N0cmluZyh2YWx1ZXMpO1xuXG4gICAgLy8gTWFwIEhlYWRpbmcgMSB0byBzdGVwIGxhYmVscyBpbiBzdGVwcGVyXG4gICAgY29uc3QgaGVhZGluZzFTdHlsZSA9IGNzc1J1bGVzWycuZm9udC1oZWFkaW5nLTEnXTtcbiAgICBjb25zdCBzdGVwTGFiZWxDc3MgPSBoZWFkaW5nMVN0eWxlXG4gICAgICA/IHRoaXMuc3R5bGVPYmplY3RUb1N0cmluZyhoZWFkaW5nMVN0eWxlKVxuICAgICAgOiAnJztcblxuICAgIC8vIE1hcCBIZWFkaW5nIDIgdG8gc2VjdGlvbiB0aXRsZXNcbiAgICBjb25zdCBoZWFkaW5nMlN0eWxlID0gY3NzUnVsZXNbJy5mb250LWhlYWRpbmctMiddO1xuICAgIGNvbnN0IHNlY3Rpb25UaXRsZUNzcyA9IGhlYWRpbmcyU3R5bGVcbiAgICAgID8gdGhpcy5zdHlsZU9iamVjdFRvU3RyaW5nKGhlYWRpbmcyU3R5bGUpXG4gICAgICA6ICcnO1xuXG4gICAgLy8gTWFwIEhlYWRpbmcgMyB0byBzdGVwIGRlc2NyaXB0aW9uc1xuICAgIGNvbnN0IGhlYWRpbmczU3R5bGUgPSBjc3NSdWxlc1snLmZvbnQtaGVhZGluZy0zJ107XG4gICAgY29uc3Qgc3RlcERlc2NyaXB0aW9uQ3NzID0gaGVhZGluZzNTdHlsZVxuICAgICAgPyB0aGlzLnN0eWxlT2JqZWN0VG9TdHJpbmcoaGVhZGluZzNTdHlsZSlcbiAgICAgIDogJyc7XG5cbiAgICByZXR1cm4gYCBcbiAgICAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLXdyYXBwZXIge1xuICAgICAgICAubWF0LXN0ZXAtdGV4dC1sYWJlbCB7XG4gICAgICAgICAgJHtzdGVwTGFiZWxDc3N9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgLm1hdC1zdGVwLWxhYmVsIHtcbiAgICAgICAgJHtzdGVwTGFiZWxDc3N9XG4gICAgICB9XG4gICAgICBcbiAgICAgIC5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZCB7XG4gICAgICAgICR7c3RlcExhYmVsQ3NzfVxuICAgICAgfVxuICAgICAgXG4gICAgICAuZm9ybS1zZWN0aW9uLXRpdGxlIGgyLFxuICAgICAgLnNlcGFyYXRvciBoMiB7XG4gICAgICAgICR7c2VjdGlvblRpdGxlQ3NzfVxuICAgICAgfVxuICAgICAgXG4gICAgICAuc3RlcC1kZXNjcmlwdGlvbixcbiAgICAgIC5tYXQtc3RlcC1zdWItbGFiZWwge1xuICAgICAgICAke3N0ZXBEZXNjcmlwdGlvbkNzc31cbiAgICAgIH1cbiAgICAgIFxuICAgICAgLm1hdC1zdGVwcGVyLWhvcml6b250YWwgLm1hdC1zdGVwLWxhYmVsLFxuICAgICAgLm1hdC1zdGVwcGVyLXZlcnRpY2FsIC5tYXQtc3RlcC1sYWJlbCB7XG4gICAgICAgICR7c3RlcExhYmVsQ3NzfVxuICAgICAgfVxuICAgICAgXG4gICAgICAuY29tcG9uZW50LXRleHQtZmllbGQgbWF0LWxhYmVsLFxuICAgICAgLmNvbXBvbmVudC1jaGVja2JveCBtYXQtbGFiZWwsXG4gICAgICAuY29tcG9uZW50LXJhZGlvIG1hdC1sYWJlbCxcbiAgICAgIC5jb21wb25lbnQtZGF0ZSBtYXQtbGFiZWwge1xuICAgICAgICAke2Nzc1J1bGVzWycuZm9udC1sYWJlbCddXG4gICAgICAgID8gdGhpcy5zdHlsZU9iamVjdFRvU3RyaW5nKGNzc1J1bGVzWycuZm9udC1sYWJlbCddKVxuICAgICAgICA6ICcnXG4gICAgICB9XG4gICAgICB9XG4gICAgYDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0U3BlY2lmaWNDc3NGb3JSYWRpbyhcbiAgICB2YWx1ZXM6IHsgW3Byb3BlcnR5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICBjc3NSdWxlczogQ3NzUnVsZXNcbiAgKSB7XG4gICAgbGV0IGxhYmVsU3BlY2lmaWNDc3MgPSAnJztcbiAgICBjb25zdCBmb250U3R5bGVGb3JMYWJlbFRleHQgPSBjc3NSdWxlc1snLmNvbXBvbmVudC1yYWRpby1sYWJlbCddO1xuICAgIGlmIChmb250U3R5bGVGb3JMYWJlbFRleHQpIHtcbiAgICAgIGxhYmVsU3BlY2lmaWNDc3MgPSB0aGlzLnN0eWxlT2JqZWN0VG9TdHJpbmcoZm9udFN0eWxlRm9yTGFiZWxUZXh0KTtcbiAgICB9XG5cbiAgICB2YXIgY3NzID0gYFxuICAgIC5tYXQtbWRjLXRleHQtZmllbGQtd3JhcHBlci5tZGMtcmFkaW9ib3gtZmllbGQge1xuICAgICAgbWFyZ2luLXRvcDogJHt2YWx1ZXNbJ21hcmdpbi10b3AnXX07XG4gICAgICBtYXJnaW4tcmlnaHQ6ICR7dmFsdWVzWydtYXJnaW4tcmlnaHQnXX07XG4gICAgICBtYXJnaW4tYm90dG9tOiAke3ZhbHVlc1snbWFyZ2luLWJvdHRvbSddfTtcbiAgICAgIG1hcmdpbi1sZWZ0OiAke3ZhbHVlc1snbWFyZ2luLWxlZnQnXX07XG4gICAgICBsYWJlbCB7XG4gICAgICAgICR7bGFiZWxTcGVjaWZpY0Nzc307XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgcCB7XG4gICAgICAgICAgbWFyZ2luOiAwIDAgMTBweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLm1hdC1tZGMtcmFkaW8tYnV0dG9uIHtcbiAgICAgICAgLm1kYy1yYWRpb19fbmF0aXZlLWNvbnRyb2wge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgfVxuICAgICAgICAubWRjLXJhZGlvIHtcbiAgICAgICAgICB3aWR0aDogY2FsYygyMHB4ICsgKDIgKiAke3ZhbHVlc1snYm9yZGVyLXdpZHRoJ119KSk7XG4gICAgICAgICAgaGVpZ2h0OiBjYWxjKDIwcHggKyAoMiAqICR7dmFsdWVzWydib3JkZXItd2lkdGgnXX0pKTtcbiAgICAgICAgICAubWRjLXJhZGlvX19iYWNrZ3JvdW5kIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dmFsdWVzWydiYWNrZ3JvdW5kLWNvbG9yJ119ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBib3JkZXI6ICR7dmFsdWVzWydib3JkZXItd2lkdGgnXX0gc29saWQgJHt2YWx1ZXNbJ2JvcmRlci1jb2xvciddfSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAgICAgd2lkdGg6IGNhbGMoMjBweCArICgyICogJHt2YWx1ZXNbJ2JvcmRlci13aWR0aCddfSkpO1xuICAgICAgICAgICAgaGVpZ2h0OiBjYWxjKDIwcHggKyAoMiAqICR7dmFsdWVzWydib3JkZXItd2lkdGgnXX0pKTtcbiAgICAgICAgICAgIC5tZGMtcmFkaW9fX291dGVyLWNpcmNsZSB7XG4gICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJHt2YWx1ZXNbJ2JhY2tncm91bmQtY29sb3InXX0gIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5tZGMtcmFkaW9fX2lubmVyLWNpcmNsZSB7XG4gICAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJHt2YWx1ZXNbJ2NvbG9yJ119ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGA7XG5cbiAgICByZXR1cm4gY3NzO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRTcGVjaWZpY0Nzc0ZvckRhdGEoXG4gICAga2V5OiBzdHJpbmcsXG4gICAgdmFsdWVzOiB7IFtwcm9wZXJ0eTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgY3NzUnVsZXM6IENzc1J1bGVzXG4gICkge1xuICAgIGxldCBpbnB1dFNwZWNpZmljQ3NzID0gJyc7XG4gICAgY29uc3QgZm9udFN0eWxlRm9ySW5wdXRUZXh0ID0gY3NzUnVsZXNbJy5mb250LWxpc3QnXTtcbiAgICBpZiAoZm9udFN0eWxlRm9ySW5wdXRUZXh0KSB7XG4gICAgICAvL3RyYW5zZmVyIHByb3BlcnR5IGZyb20gY29tcG9uZW50IHRvIGlucHV0XG4gICAgICBpZiAodmFsdWVzWyd0ZXh0LWFsaWduJ10pIHtcbiAgICAgICAgZm9udFN0eWxlRm9ySW5wdXRUZXh0Wyd0ZXh0LWFsaWduJ10gPSB2YWx1ZXNbJ3RleHQtYWxpZ24nXTtcbiAgICAgIH1cbiAgICAgIGlucHV0U3BlY2lmaWNDc3MgPSB0aGlzLnN0eWxlT2JqZWN0VG9TdHJpbmcoZm9udFN0eWxlRm9ySW5wdXRUZXh0KTtcbiAgICB9XG5cbiAgICBsZXQgbGFiZWxTcGVjaWZpY0NzcyA9ICcnO1xuICAgIGNvbnN0IGZvbnRTdHlsZUZvckxhYmVsVGV4dCA9IGNzc1J1bGVzWycuY29tcG9uZW50LWRhdGEtbGFiZWwnXTtcbiAgICBpZiAoZm9udFN0eWxlRm9yTGFiZWxUZXh0KSB7XG4gICAgICBsYWJlbFNwZWNpZmljQ3NzID0gdGhpcy5zdHlsZU9iamVjdFRvU3RyaW5nKGZvbnRTdHlsZUZvckxhYmVsVGV4dCk7XG4gICAgfVxuICAgIHJldHVybiBgICR7a2V5fSB7IC5tYXQtbWRjLXRleHQtZmllbGQtd3JhcHBlci5tZGMtdGV4dC1maWVsZCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICR7dGhpcy5zdHlsZU9iamVjdFRvU3RyaW5nKHZhbHVlcyl9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXItc3R5bGU6c29saWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aW5wdXRTcGVjaWZpY0Nzc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXQtbWRjLWZvcm0tZmllbGQtaW5maXgge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1hdC1tZGMtZm9ybS1maWVsZC1pbnB1dC1jb250cm9sOjpwbGFjZWhvbGRlcntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsYWJlbFNwZWNpZmljQ3NzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHN0eWxlT2JqZWN0VG9TdHJpbmcoXG4gICAgdmFsdWVzOiB7IFtwcm9wZXJ0eTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgaW1wb3J0YW50OiBib29sZWFuID0gZmFsc2VcbiAgKTogc3RyaW5nIHtcbiAgICB2YWx1ZXNbJ3dpZHRoJ10gPVxuICAgICAgJ2NhbGMoMTAwJScgK1xuICAgICAgKCdtYXJnaW4tbGVmdCcgaW4gdmFsdWVzID8gYCAtICR7dmFsdWVzWydtYXJnaW4tbGVmdCddfWAgOiAnJykgK1xuICAgICAgKCdtYXJnaW4tcmlnaHQnIGluIHZhbHVlcyA/IGAgLSAke3ZhbHVlc1snbWFyZ2luLXJpZ2h0J119YCA6ICcnKSArXG4gICAgICAnKSc7XG5cbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXModmFsdWVzKVxuICAgICAgLm1hcChcbiAgICAgICAgKFtrZXksIHZhbHVlXSkgPT4gYCR7a2V5fTogJHt2YWx1ZX0ke2ltcG9ydGFudCA/ICcgIWltcG9ydGFudCcgOiAnJ31gXG4gICAgICApXG4gICAgICAuam9pbignOyAnKTtcbiAgfVxufVxuIl19
461
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jc3MuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvb3JpZ2luLWZvcm0vc3JjL2xpYi9mb3JtLWNzcy5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGFBQWE7SUFFakIsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFFBQWtCLEVBQUUsYUFBc0I7UUFDM0UsSUFBSSxXQUFXLEdBQUcsYUFBYSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNELElBQUksYUFBYSxFQUFFLENBQUM7WUFDbEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUN2QywwQ0FBMEMsRUFDMUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQ25CLFFBQVEsQ0FDVCxDQUFDO1lBQ0YsV0FBVyxJQUFJLE9BQU8sQ0FBQztRQUN6QixDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFrQjtRQUNoRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQzthQUN6QyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDMUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxvQkFBb0IsQ0FDakMsR0FBVyxFQUNYLE1BQXNDLEVBQ3RDLFFBQWtCO1FBRWxCLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO2FBQ3hDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUs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QyxhQUFhLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzlELENBQUMsY0FBYyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNoRSxHQUFHLENBQUM7UUFDUixDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQzthQUMxQixHQUFHLENBQ0YsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEtBQUssS0FBSyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDdEU7YUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENzc1J1bGVzIH0gZnJvbSBcIi4vb3RoZXJzL3V0aWxzXCI7XG5cbmV4cG9ydCBjbGFzcyBGb3JtQ3NzSGVscGVyIHtcblxuICBwdWJsaWMgc3RhdGljIGNvbnZlcnRUb1N0eWxlU3RyaW5nKGNzc1J1bGVzOiBDc3NSdWxlcywgaXNEaXNwbGF5TW9kZTogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgbGV0IHN0eWxlU3RyaW5nID0gRm9ybUNzc0hlbHBlci5jb252ZXJ0VG9Dc3NUZXh0KGNzc1J1bGVzKTtcbiAgICBpZiAoaXNEaXNwbGF5TW9kZSkge1xuICAgICAgY29uc3QgbmV3UnVsZSA9IHRoaXMuY29udmVydFJ1bGVUb0Nzc1RleHQoXG4gICAgICAgICcubWF0LWhvcml6b250YWwtc3RlcHBlci1oZWFkZXItY29udGFpbmVyJyxcbiAgICAgICAgeyBkaXNwbGF5OiAnbm9uZScgfSxcbiAgICAgICAgY3NzUnVsZXNcbiAgICAgICk7XG4gICAgICBzdHlsZVN0cmluZyArPSBuZXdSdWxlO1xuICAgIH1cbiAgICByZXR1cm4gc3R5bGVTdHJpbmc7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb252ZXJ0VG9Dc3NUZXh0KGNzc1J1bGVzOiBDc3NSdWxlcyk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3R5bGVTdHJpbmcgPSBPYmplY3QuZW50cmllcyhjc3NSdWxlcylcbiAgICAgIC5tYXAoKFtrLCB2XSkgPT4gdGhpcy5jb252ZXJ0UnVsZVRvQ3NzVGV4dChrLCB2LCBjc3NSdWxlcykpXG4gICAgICAuam9pbignICcpO1xuICAgIHJldHVybiBzdHlsZVN0cmluZztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvbnZlcnRSdWxlVG9Dc3NUZXh0KFxuICAgIGtleTogc3RyaW5nLFxuICAgIHZhbHVlczogeyBbcHJvcGVydHk6IHN0cmluZ106IHN0cmluZyB9LFxuICAgIGNzc1J1bGVzOiBDc3NSdWxlc1xuICApIHtcbiAgICBjb25zdCB2YWx1ZXNBc1RleHQgPSBPYmplY3QuZW50cmllcyh2YWx1ZXMpXG4gICAgICAubWFwKChbaywgdl0pID0+IGAke2t9OiR7dn07YClcbiAgICAgIC5qb2luKCcgJyk7XG4gICAgbGV0IGNzc1RleHQgPSBgICR7a2V5fSB7JHt2YWx1ZXNBc1RleHR9fSBgO1xuXG4gICAgc3dpdGNoIChrZXkpIHtcbiAgICAgIGNhc2UgJy5jb21wb25lbnQtdGV4dC1maWVsZCc6XG4gICAgICAgIGNzc1RleHQgPSB0aGlzLmdldFNwZWNpZmljQ3NzRm9ySW5wdXQoa2V5LCB2YWx1ZXMsIGNzc1J1bGVzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcuY29tcG9uZW50LWNoZWNrYm94JzpcbiAgICAgICAgY3NzVGV4dCA9IHRoaXMuZ2V0U3BlY2lmaWNDc3NGb3JDaGVja0JveChrZXksIHZhbHVlcywgY3NzUnVsZXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJy5mb250LWhlYWRpbmctMSc6XG4gICAgICAgIGNzc1RleHQgPSB0aGlzLmdldFNwZWNpZmljQ3NzRm9yU3RlcExhYmVsKGtleSwgdmFsdWVzLCBjc3NSdWxlcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnLmZvcm1seS1yYWRpbyc6XG4gICAgICBjYXNlICcuY29tcG9uZW50LXJhZGlvJzpcbiAgICAgICAgY3NzVGV4dCA9IHRoaXMuZ2V0U3BlY2lmaWNDc3NGb3JSYWRpbyh2YWx1ZXMsIGNzc1J1bGVzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcuY29tcG9uZW50LWRhdGUnOlxuICAgICAgY2FzZSAnLmNvbXBvbmVudC1kYXRhJzpcbiAgICAgICAgY3NzVGV4dCA9IHRoaXMuZ2V0U3BlY2lmaWNDc3NGb3JEYXRhKGtleSwgdmFsdWVzLCBjc3NSdWxlcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnLmNvbXBvbmVudC1kaWN0aW9uYXJ5JzpcbiAgICAgICAgY3NzVGV4dCA9IHRoaXMuZ2V0U3BlY2lmaWNDc3NGb3JEaWN0aW9uYXJ5KGtleSwgdmFsdWVzLCBjc3NSdWxlcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnLnRhYmxlLWRldGFpbHMnOlxuICAgICAgICBjc3NUZXh0ID0gdGhpcy5nZXRTcGVjaWZpY0Nzc0ZvclRhYmxlRGV0YWlsKHZhbHVlcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnLnRhYmxlLWhlYWRlcic6XG4gICAgICAgIGNzc1RleHQgPSB0aGlzLmdldFNwZWNpZmljQ3NzRm9yVGFibGVIZWFkZXIodmFsdWVzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgIGNhc2UgJy5jb21wb25lbnQtcHJvZ3Jlc3MtYmFyJzpcbiAgICAgICAgY3NzVGV4dCA9IHRoaXMuZ2V0U3BlY2lmaWNDc3NGb3JQcm9ncmVzc0Jhcih2YWx1ZXMpO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyBBcHBlbmQgY29tcG9uZW50LWxldmVsIG1hcmdpbiBydWxlcyAoYXBwbGllcyB0byBhbGwgNSBtYXJnaW4tZW5hYmxlZCBjb21wb25lbnRzKVxuICAgIGNvbnN0IG1hcmdpblRvcCA9IHZhbHVlc1snY29tcG9uZW50LW1hcmdpbi10b3AnXTtcbiAgICBjb25zdCBtYXJnaW5Cb3R0b20gPSB2YWx1ZXNbJ2NvbXBvbmVudC1tYXJnaW4tYm90dG9tJ107XG4gICAgY29uc3QgbWFyZ2luUGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKG1hcmdpblRvcCAmJiBtYXJnaW5Ub3AgIT09ICdub25lJykge1xuICAgICAgbWFyZ2luUGFydHMucHVzaChgbWFyZ2luLXRvcDogJHttYXJnaW5Ub3B9ICFpbXBvcnRhbnQ7YCk7XG4gICAgfVxuICAgIGlmIChtYXJnaW5Cb3R0b20gJiYgbWFyZ2luQm90dG9tICE9PSAnbm9uZScpIHtcbiAgICAgIG1hcmdpblBhcnRzLnB1c2goYG1hcmdpbi1ib3R0b206ICR7bWFyZ2luQm90dG9tfSAhaW1wb3J0YW50O2ApO1xuICAgIH1cbiAgICBpZiAobWFyZ2luUGFydHMubGVuZ3RoID4gMCkge1xuICAgICAgY3NzVGV4dCArPSBgICR7a2V5fSB7ICR7bWFyZ2luUGFydHMuam9pbignICcpfSB9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gY3NzVGV4dDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0U3BlY2lmaWNDc3NGb3JEaWN0aW9uYXJ5KFxuICAgIGtleTogc3RyaW5nLFxuICAgIHZhbHVlczogeyBbcHJvcGVydHk6IHN0cmluZ106IHN0cmluZyB9LFxuICAgIGNzc1J1bGVzOiBDc3NSdWxlc1xuICApOiBzdHJpbmcge1xuICAgIGxldCBpbnB1dFNwZWNpZmljQ3NzID0gJyc7XG4gICAgY29uc3QgZm9udFN0eWxlU291cmNlID0gY3NzUnVsZXNbJy5jb21wb25lbnQtZGljdGlvbmFyeS12YWx1ZSddIHx8IGNzc1J1bGVzWycuZm9udC1pbnB1dCddO1xuICAgIGlmIChmb250U3R5bGVTb3VyY2UpIHtcbiAgICAgIGNvbnN0IGZvbnRTdHlsZUZvcklucHV0VGV4dCA9IHsgLi4uZm9udFN0eWxlU291cmNlIH07XG4gICAgICBpZiAodmFsdWVzWyd0ZXh0LWFsaWduJ10pIHtcbiAgICAgICAgZm9udFN0eWxlRm9ySW5wdXRUZXh0Wyd0ZXh0LWFsaWduJ10gPSB2YWx1ZXNbJ3RleHQtYWxpZ24nXTtcbiAgICAgIH1cbiAgICAgIGZvbnRTdHlsZUZvcklucHV0VGV4dFsnY29sb3InXSA9IChmb250U3R5bGVGb3JJbnB1dFRleHRbJ2NvbG9yJ10gfHwgJycpICsgJyAhaW1wb3J0YW50JztcbiAgICAgIGlucHV0U3BlY2lmaWNDc3MgPSB0aGlzLnN0eWxlT2JqZWN0VG9TdHJpbmcoeyAuLi5mb250U3R5bGVGb3JJbnB1dFRleHQgfSk7XG4gICAgfVxuXG4gICAgbGV0IGxhYmVsU3BlY2lmaWNDc3MgPSAnJztcbiAgICBjb25zdCBsYWJlbFNvdXJjZSA9IGNzc1J1bGVzWycuY29tcG9uZW50LWRpY3Rpb25hcnktbGFiZWwnXTtcbiAgICBpZiAobGFiZWxTb3VyY2UpIHtcbiAgICAgIGxhYmVsU3BlY2lmaWNDc3MgPSB0aGlzLnN0eWxlT2JqZWN0VG9TdHJpbmcoeyAuLi5sYWJlbFNvdXJjZSB9KTtcbiAgICB9XG5cbiAgICB2YXIgY3NzID0gYFxuICAgIC5tYXQtbWRjLXRleHQtZmllbGQtd3JhcHBlci5tZGMtdGV4dC1maWVsZCB7XG4gICAgICAke3RoaXMuc3R5bGVPYmplY3RUb1N0cmluZyh7IC4uLnZhbHVlcyB9KX07XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgaW5wdXQge1xuICAgICAgICAke2lucHV0U3BlY2lmaWNDc3N9XG4gICAgICB9XG4gICAgICBtYXQtbGFiZWwge1xuICAgICAgICAke2xhYmVsU3BlY2lmaWNDc3N9XG4gICAgICB9XG4gICAgICAubWRjLWxpbmUtcmlwcGxlLS1hY3RpdmU6OmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHtsYWJlbFNvdXJjZSA/IGxhYmVsU291cmNlWydjb2xvciddIDogJ2luaGVyaXQnfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5jb21wb25lbnQtZGljdGlvbmFyeS1sYWJlbCBsYWJlbCB7XG4gICAgICAke2xhYmVsU3BlY2lmaWNDc3N9XG4gICAgfVxuICAgIGA7XG5cbiAgICByZXR1cm4gYCR7a2V5fSB7ICR7Y3NzfSB9YDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0U3BlY2lmaWNDc3NGb3JJbnB1dChcbiAgICBrZXk6IHN0cmluZyxcbiAgICB2YWx1ZXM6IHsgW3Byb3BlcnR5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICBjc3NSdWxlczogQ3NzUnVsZXNcbiAgKSB7XG4gICAgbGV0IGlucHV0U3BlY2lmaWNDc3MgPSAnJztcbiAgICBsZXQgc2lnbklucHV0U3BlY2lmaWNDc3MgPSAnJztcbiAgICBjb25zdCBmb250U3R5bGVTb3VyY2UgPSBjc3NSdWxlc1snLmNvbXBvbmVudC10ZXh0LWZpZWxkLXZhbHVlJ10gfHwgY3NzUnVsZXNbJy5mb250LWlucHV0J107XG4gICAgaWYgKGZvbnRTdHlsZVNvdXJjZSkge1xuICAgICAgY29uc3QgZm9udFN0eWxlRm9ySW5wdXRUZXh0ID0geyAuLi5mb250U3R5bGVTb3VyY2UgfTtcbiAgICAgIC8vdHJhbnNmZXIgcHJvcGVydHkgZnJvbSBjb21wb25lbnQgdG8gaW5wdXRcbiAgICAgIGlmICh2YWx1ZXNbJ3RleHQtYWxpZ24nXSkge1xuICAgICAgICBmb250U3R5bGVGb3JJbnB1dFRleHRbJ3RleHQtYWxpZ24nXSA9IHZhbHVlc1sndGV4dC1hbGlnbiddO1xuICAgICAgfVxuICAgICAgZm9udFN0eWxlRm9ySW5wdXRUZXh0Wydjb2xvciddID0gKGZvbnRTdHlsZUZvcklucHV0VGV4dFsnY29sb3InXSB8fCAnJykgKyAnICFpbXBvcnRhbnQnO1xuICAgICAgaW5wdXRTcGVjaWZpY0NzcyA9IHRoaXMuc3R5bGVPYmplY3RUb1N0cmluZyh7IC4uLmZvbnRTdHlsZUZvcklucHV0VGV4dCB9KTtcbiAgICAgIHNpZ25JbnB1dFNwZWNpZmljQ3NzID0gdGhpcy5zdHlsZU9iamVjdFRvU3RyaW5nKFxuICAgICAgICB7IC4uLmZvbnRTdHlsZUZvcklucHV0VGV4dCB9LFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBsYWJlbFNwZWNpZmljQ3NzID0gJyc7XG4gICAgbGV0IHNpZ25MYWJlbFNwZWNpZmljQ3NzID0gJyc7XG4gICAgY29uc3QgbGFiZWxTb3VyY2UgPSBjc3NSdWxlc1snLmNvbXBvbmVudC10ZXh0LWZpZWxkLWxhYmVsJ107XG4gICAgaWYgKGxhYmVsU291cmNlKSB7XG4gICAgICBsYWJlbFNwZWNpZmljQ3NzID0gdGhpcy5zdHlsZU9iamVjdFRvU3RyaW5nKHsgLi4ubGFiZWxTb3VyY2UgfSk7XG4gICAgICBzaWduTGFiZWxTcGVjaWZpY0NzcyA9IHRoaXMuc3R5bGVPYmplY3RUb1N0cmluZyhcbiAgICAgICAgeyAuLi5sYWJlbFNvdXJjZSB9LFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHRleHRhcmVhSGVpZ2h0ID0gdmFsdWVzWyd0ZXh0YXJlYS1oZWlnaHQnXSB8fCAnJztcbiAgICBjb25zdCB0ZXh0YXJlYU1heEhlaWdodCA9IHZhbHVlc1sndGV4dGFyZWEtbWF4LWhlaWdodCddIHx8ICcnO1xuXG4gICAgdmFyIGNzcyA9IGBcbiAgICAubWF0LW1kYy10ZXh0LWZpZWxkLXdyYXBwZXIubWRjLXRleHQtZmllbGQge1xuICAgICAgJHt0aGlzLnN0eWxlT2JqZWN0VG9TdHJpbmcoeyAuLi52YWx1ZXMgfSl9O1xuICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgIGlucHV0IHtcbiAgICAgICAgJHtpbnB1dFNwZWNpZmljQ3NzfVxuICAgICAgfVxuICAgICAgbWF0LWxhYmVsIHtcbiAgICAgICAgJHtsYWJlbFNwZWNpZmljQ3NzfVxuICAgICAgfVxuICAgICAgLm1kYy1saW5lLXJpcHBsZS0tYWN0aXZlOjphZnRlciB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICR7bGFiZWxTb3VyY2UgPyBsYWJlbFNvdXJjZVsnY29sb3InXSA6ICdpbmhlcml0J31cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbnB1dC5jb21wb25lbnQtdGV4dC1maWVsZCB7XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkICFpbXBvcnRhbnQ7XG4gICAgICAke3RoaXMuc3R5bGVPYmplY3RUb1N0cmluZyh7IC4uLnZhbHVlcyB9LCB0cnVlKX07XG4gICAgICAke3NpZ25JbnB1dFNwZWNpZmljQ3NzfVxuICAgIH1cblxuICAgIC5jb21wb25lbnQtdGV4dC1maWVsZC1sYWJlbCBsYWJlbCB7XG4gICAgICAke3NpZ25MYWJlbFNwZWNpZmljQ3NzfVxuICAgIH1cbiAgICBgO1xuXG4gICAgLy8gRmxhdCBleHBsaWNpdCBydWxlcyBzY29wZWQgdG8gdGV4dGFyZWEgb25seS5cbiAgICAvLyA6aGFzKHRleHRhcmVhKSBvbiB0aGUgaW5maXggZW5zdXJlcyBtaW4taGVpZ2h0L21heC1oZWlnaHQgZG8gTk9UIGFmZmVjdFxuICAgIC8vIHRleHQvbnVtZXJpYyBpbnB1dHMgdGhhdCBzaGFyZSB0aGUgc2FtZSAuY29tcG9uZW50LXRleHQtZmllbGQgY2xhc3MuXG4gICAgY29uc3QgdGV4dGFyZWFGbGF0Q3NzID0gYFxuICAgICR7a2V5fSAubWF0LW1kYy10ZXh0LWZpZWxkLXdyYXBwZXIubWRjLXRleHQtZmllbGQ6aGFzKHRleHRhcmVhKSAubWF0LW1kYy1mb3JtLWZpZWxkLWluZml4IHtcbiAgICAgICR7dGV4dGFyZWFIZWlnaHQgPyBgbWluLWhlaWdodDogJHt0ZXh0YXJlYUhlaWdodH0gIWltcG9ydGFudDtgIDogJyd9XG4gICAgfVxuICAgICR7a2V5fSAubWF0LW1kYy10ZXh0LWZpZWxkLXdyYXBwZXIubWRjLXRleHQtZmllbGQgdGV4dGFyZWEge1xuICAgICAgJHtpbnB1dFNwZWNpZmljQ3NzfVxuICAgICAgJHt0ZXh0YXJlYUhlaWdodCA/IGBtaW4taGVpZ2h0OiAke3RleHRhcmVhSGVpZ2h0fSAhaW1wb3J0YW50O2AgOiAnJ31cbiAgICAgICR7dGV4dGFyZWFNYXhIZWlnaHQgJiYgdGV4dGFyZWFNYXhIZWlnaHQgIT09ICdub25lJyA/IGBtYXgtaGVpZ2h0OiAke3RleHRhcmVhTWF4SGVpZ2h0fSAhaW1wb3J0YW50OyBvdmVyZmxvdy15OiBhdXRvICFpbXBvcnRhbnQ7YCA6ICcnfVxuICAgICAgcmVzaXplOiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIGA7XG5cbiAgICByZXR1cm4gYCR7a2V5fSB7ICR7Y3NzfX0gJHt0ZXh0YXJlYUZsYXRDc3N9YDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0U3BlY2lmaWNDc3NGb3JQcm9ncmVzc0Jhcih2YWx1ZXM6IHsgW3Byb3BlcnR5OiBzdHJpbmddOiBzdHJpbmcgfSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RhcnRDb2xvciA9IHZhbHVlc1snc3RhcnRDb2xvciddIHx8ICcjODg0OEVGJztcbiAgICBjb25zdCBlbmRDb2xvciA9IHZhbHVlc1snZW5kQ29sb3InXSB8fCAnIzg4NDhFRic7XG4gICAgY29uc3QgaGVpZ2h0ID0gdmFsdWVzWydoZWlnaHQnXSB8fCAnNHB4JztcbiAgICBjb25zdCBib3JkZXJSYWRpdXMgPSB2YWx1ZXNbJ2JvcmRlclJhZGl1cyddIHx8ICc3cHgnO1xuXG4gICAgcmV0dXJuIGBcbiAgICAgIC5jb21wb25lbnQtcHJvZ3Jlc3MtYmFyIHtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAke3N0YXJ0Q29sb3J9LCAke2VuZENvbG9yfSkgIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiAke2hlaWdodH0gIWltcG9ydGFudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJHtib3JkZXJSYWRpdXN9ICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgYDtcbiAgfVxuXG5cbiAgcHVibGljIHN0YXRpYyBnZXRTcGVjaWZpY0Nzc0ZvclRhYmxlSGVhZGVyKFxuICAgIHZhbHVlczogeyBbcHJvcGVydHk6IHN0cmluZ106IHN0cmluZyB9XG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgYmFja2dyb3VuZENvbG9yID0gdmFsdWVzWydiYWNrZ3JvdW5kLWNvbG9yJ10gfHwgJyNmZmZmZmYnO1xuICAgIGNvbnN0IHRleHRDb2xvciA9IHZhbHVlc1snY29sb3InXSB8fCAnIzAwMDAwMCc7XG4gICAgY29uc3QgYm9yZGVyID0gdmFsdWVzWydib3JkZXItd2lkdGgnXTtcbiAgICBjb25zdCBib3JkZXJDb2xvciA9IHZhbHVlc1snYm9yZGVyLWNvbG9yJ10gfHwgJyMwMDAwMDAnO1xuICAgIGNvbnN0IGJvcmRlckNvbGxhcHNlID0gdmFsdWVzWydib3JkZXItY29sbGFwc2UnXSB8fCAnY29sbGFwc2UnO1xuICAgIGNvbnN0IGJvcmRlclNwYWNpbmcgPSB2YWx1ZXNbJ2JvcmRlci1zcGFjaW5nJ10gfHwgJzAnO1xuICAgIGNvbnN0IHRleHRBbGlnbiA9IHZhbHVlc1sndGV4dC1hbGlnbiddIHx8ICdsZWZ0JztcbiAgICBjb25zdCB2ZXJ0aWNhbEFsaWduID0gdmFsdWVzWyd2ZXJ0aWNhbC1hbGlnbiddIHx8ICdtaWRkbGUnO1xuICAgIGNvbnN0IGZvbnRGYW1pbHkgPSB2YWx1ZXNbJ2ZvbnQtZmFtaWx5J10gfHwgJ0FyaWFsLCBzYW5zLXNlcmlmJztcbiAgICBjb25zdCBmb250U2l6ZSA9IHZhbHVlc1snZm9udC1zaXplJ10gfHwgJzE0cHgnO1xuICAgIGNvbnN0IGxldHRlclNwYWNpbmcgPSB2YWx1ZXNbJ2xldHRlci1zcGFjaW5nJ10gfHwgJ25vcm1hbCc7XG4gICAgY29uc3QgcGFkZGluZyA9IHZhbHVlc1sncGFkZGluZyddIHx8ICc4cHgnO1xuICAgIGNvbnN0IHdpZHRoID0gdmFsdWVzWyd3aWR0aCddIHx8ICdhdXRvJztcbiAgICBjb25zdCBoZWlnaHQgPSB2YWx1ZXNbJ2hlaWdodCddIHx8ICdhdXRvJztcblxuICAgIGNvbnN0IGNzcyA9IGBcbiAgICB0YWJsZSBcbiAgICAge1xuICAgICAgYm9yZGVyLWNvbGxhcHNlOiAke2JvcmRlckNvbGxhcHNlfSAhaW1wb3J0YW50O1xuICAgICAgYm9yZGVyLXNwYWNpbmc6ICR7Ym9yZGVyU3BhY2luZ307ICAgXG4gICAgICBmb250LWZhbWlseTogJHtmb250RmFtaWx5fTtcbiAgICAgIGZvbnQtc2l6ZTogJHtmb250U2l6ZX07XG4gICAgfVxuICAgICAgdGFibGUgdGgge1xuICAgICAgaGVpZ2h0OiAke2hlaWdodH07XG4gICAgICB9XG4gICAgICB0YWJsZSB0ZHtoZWlnaHQ6ICR7aGVpZ2h0fTtcbiAgICAgIH1cbiAgICAudGFibGUtaGVhZCB0ciB0aHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7YmFja2dyb3VuZENvbG9yfSAhaW1wb3J0YW50O1xuICAgICAgd2lkdGg6ICR7d2lkdGh9ICFpbXBvcnRhbnQ7XG4gICAgICBib3JkZXItY29sbGFwc2U6ICR7Ym9yZGVyQ29sbGFwc2V9O1xuICAgICAgICBib3JkZXItc3BhY2luZzogJHtib3JkZXJTcGFjaW5nfTtcbiAgICAgICAgYm9yZGVyOiAke2JvcmRlcn0gc29saWQgJHtib3JkZXJDb2xvcn07IFxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogJHt2ZXJ0aWNhbEFsaWdufTtcbiAgICAgICAgZm9udC1mYW1pbHk6ICR7Zm9udEZhbWlseX07XG4gICAgICAgIGZvbnQtc2l6ZTogJHtmb250U2l6ZX07XG4gICAgICB9XG4gICAgLnRhYmxlLWhlYWQge1xuICAgICAgY29sb3I6ICR7dGV4dENvbG9yfTtcbiAgICAgIGJvcmRlcjogJHtib3JkZXJ9IHNvbGlkICR7Ym9yZGVyQ29sb3J9OyAgXG4gICAgICB0ZXh0LWFsaWduOiAke3RleHRBbGlnbn07ICAgICAgICAgICAgXG4gICAgICBsZXR0ZXItc3BhY2luZzogJHtsZXR0ZXJTcGFjaW5nfTtcbiAgICAgIHBhZGRpbmc6ICR7cGFkZGluZ307ICAgICAgXG4gICAgICBoZWlnaHQ6ICR7aGVpZ2h0fTtcbiAgICAgfVxuXG4gICAgYDtcbiAgICByZXR1cm4gY3NzO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRTcGVjaWZpY0Nzc0ZvclRhYmxlRGV0YWlsKFxuICAgIHZhbHVlczogeyBbcHJvcGVydHk6IHN0cmluZ106IHN0cmluZyB9XG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgYmFja2dyb3VuZENvbG9yID0gdmFsdWVzWydiYWNrZ3JvdW5kLWNvbG9yJ10gfHwgJyNmZmZmZmYnO1xuICAgIGNvbnN0IHRleHRDb2xvciA9IHZhbHVlc1snY29sb3InXSB8fCAnIzAwMDAwMCc7XG4gICAgY29uc3QgdGV4dEFsaWduID0gdmFsdWVzWyd0ZXh0LWFsaWduJ10gfHwgJ2xlZnQnO1xuICAgIGNvbnN0IHZlcnRpY2FsQWxpZ24gPSB2YWx1ZXNbJ3ZlcnRpY2FsQWxpZ24nXSB8fCAnbWlkZGxlJztcbiAgICBjb25zdCBsZXR0ZXJTcGFjaW5nID0gdmFsdWVzWydsZXR0ZXItc3BhY2luZyddIHx8ICdub3JtYWwnO1xuICAgIGNvbnN0IHBhZGRpbmcgPSB2YWx1ZXNbJ3BhZGRpbmcnXSB8fCAnOHB4JztcbiAgICBjb25zdCByb3dCb3JkZXIgPSB2YWx1ZXNbJ3Jvd2JvcmRlciddIHx8ICcxcHgnO1xuICAgIGNvbnN0IHJvd0JvcmRlckNvbG9yID0gdmFsdWVzWydyb3dib3JkZXItY29sb3InXSB8fCAnIzAwMDAwMCc7XG4gICAgY29uc3QgaG92ZXJCYWNrZ3JvdW5kQ29sb3IgPSB2YWx1ZXNbJ2hvdmVyLWJhY2tncm91bmQtY29sb3InXSB8fCAnI2YwZjBmMCc7XG5cbiAgICBjb25zdCBjc3MgPSBgICAgIFxuXG4gICAgICAudGFibGUtZGV0YWlse1xuICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7YmFja2dyb3VuZENvbG9yfVxuICAgICAgfVxuICAgICAgICAudGFibGUtZGV0YWlsIC5uZy1zdGFyLWluc2VydGVkIHtcbiAgICBib3JkZXItdG9wOiAke3Jvd0JvcmRlcn0gc29saWQgJHtyb3dCb3JkZXJDb2xvcn0gIWltcG9ydGFudDtcbiAgICBib3JkZXItYm90dG9tOiAke3Jvd0JvcmRlcn0gc29saWQgJHtyb3dCb3JkZXJDb2xvcn0gIWltcG9ydGFudDsgICAgXG4gICAgY29sb3I6ICR7dGV4dENvbG9yfSAhaW1wb3J0YW50O1xuICAgIHRleHQtYWxpZ246ICR7dGV4dEFsaWdufTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogJHt2ZXJ0aWNhbEFsaWdufTtcbiAgICBsZXR0ZXItc3BhY2luZzogJHtsZXR0ZXJTcGFjaW5nfTsgICAgXG4gIH1cbiAgXG5cbiAgLnRhYmxlLWRldGFpbCAubmctc3Rhci1pbnNlcnRlZDpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtob3ZlckJhY2tncm91bmRDb2xvcn0gIWltcG9ydGFudDtcbiAgICBcbiAgfVxuXG4gIC50YWJsZS1kZXRhaWwgdGQge1xuICAgIHBhZGRpbmc6ICR7cGFkZGluZ30gIWltcG9ydGFudDtcbiAgfVxuICAgICBcbiAgICBgO1xuXG4gICAgcmV0dXJuIGNzcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0U3BlY2lmaWNDc3NGb3JDaGVja0JveChcbiAgICBrZXk6IHN0cmluZyxcbiAgICB2YWx1ZXM6IHsgW3Byb3BlcnR5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICBjc3NSdWxlczogQ3NzUnVsZXNcbiAgKTogc3RyaW5nIHtcbiAgICBsZXQgbGFiZWxTcGVjaWZpY0NzcyA9ICcnO1xuICAgIGNvbnN0IGZvbnRTdHlsZUZvckxhYmVsVGV4dCA9IGNzc1J1bGVzWycuY29tcG9uZW50LWNoZWNrYm94LWxhYmVsJ107XG4gICAgaWYgKGZvbnRTdHlsZUZvckxhYmVsVGV4dCkge1xuICAgICAgbGFiZWxTcGVjaWZpY0NzcyA9IHRoaXMuc3R5bGVPYmplY3RUb1N0cmluZyhmb250U3R5bGVGb3JMYWJlbFRleHQpO1xuICAgIH1cblxuICAgIHZhciBjc3MgPSBgXG4gICAgLm1hdC1tZGMtdGV4dC1maWVsZC13cmFwcGVyLm1kYy1jaGVja2JveC1maWVsZCB7XG4gICAgICBtYXJnaW4tdG9wOiAke3ZhbHVlc1snbWFyZ2luLXRvcCddfTtcbiAgICAgIG1hcmdpbi1yaWdodDogJHt2YWx1ZXNbJ21hcmdpbi1yaWdodCddfTtcbiAgICAgIG1hcmdpbi1ib3R0b206ICR7dmFsdWVzWydtYXJnaW4tYm90dG9tJ119O1xuICAgICAgbWFyZ2luLWxlZnQ6ICR7dmFsdWVzWydtYXJnaW4tbGVmdCddfTtcbiAgICAgIC5tZGMtZm9ybS1maWVsZCA+IGxhYmVsIHtcbiAgICAgICAgJHtsYWJlbFNwZWNpZmljQ3NzfTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBwYWRkaW5nLXRvcDogMnB4O1xuICAgICAgfTtcbiAgICAgIC5tZGMtY2hlY2tib3gge1xuICAgICAgICB3aWR0aDogY2FsYygxOHB4ICsgKDIgKiAke3ZhbHVlc1snYm9yZGVyLXdpZHRoJ119KSk7XG4gICAgICAgIGhlaWdodDogY2FsYygxOHB4ICsgKDIgKiAke3ZhbHVlc1snYm9yZGVyLXdpZHRoJ119KSk7XG4gICAgICAgIGZsZXg6IDAgMCBjYWxjKDE4cHggKyAoMiAqICR7dmFsdWVzWydib3JkZXItd2lkdGgnXX0pKTtcbiAgICAgIH1cbiAgICAgIC5tZGMtY2hlY2tib3ggLm1kYy1jaGVja2JveF9fbmF0aXZlLWNvbnRyb2wge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgfVxuICAgICAgLm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dmFsdWVzWydiYWNrZ3JvdW5kLWNvbG9yJ119ICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlcjogJHt2YWx1ZXNbJ2JvcmRlci13aWR0aCddfSBzb2xpZCAke3ZhbHVlc1snYm9yZGVyLWNvbG9yJ119ICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICR7dmFsdWVzWydib3JkZXItcmFkaXVzJ119O1xuICAgICAgICB3aWR0aDogY2FsYygxOXB4ICsgKDIgKiAke3ZhbHVlc1snYm9yZGVyLXdpZHRoJ119KSk7XG4gICAgICAgIGhlaWdodDogY2FsYygxOXB4ICsgKDIgKiAke3ZhbHVlc1snYm9yZGVyLXdpZHRoJ119KSk7XG4gICAgICB9O1xuICAgIH1cbiAgICAubWRjLWNoZWNrYm94X19uYXRpdmUtY29udHJvbDplbmFibGVkOmNoZWNrZWR+Lm1kYy1jaGVja2JveF9fYmFja2dyb3VuZCB7XG4gICAgICBib3JkZXI6ICR7dmFsdWVzWydib3JkZXItd2lkdGgnXX0gc29saWQgJHt2YWx1ZXNbJ2JvcmRlci1jb2xvciddfSAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAubWRjLWNoZWNrYm94X19jaGVja21hcmstcGF0aCB7XG4gICAgICBjb2xvcjogJHt2YWx1ZXNbJ2NvbG9yJ119ICFpbXBvcnRhbnQ7XG4gICAgfWA7XG4gICAgcmV0dXJuIGAke2tleX0geyAke2Nzc30gfWA7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXRTcGVjaWZpY0Nzc0ZvclN0ZXBMYWJlbChcbiAgICBrZXk6IHN0cmluZyxcbiAgICB2YWx1ZXM6IHsgW3Byb3BlcnR5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICBjc3NSdWxlczogQ3NzUnVsZXNcbiAgKSB7XG4gICAgY29uc3QgbGFiZWxTcGVjaWZpY0NzcyA9IHRoaXMuc3R5bGVPYmplY3RUb1N0cmluZyh2YWx1ZXMpO1xuXG4gICAgLy8gTWFwIEhlYWRpbmcgMSB0byBzdGVwIGxhYmVscyBpbiBzdGVwcGVyXG4gICAgY29uc3QgaGVhZGluZzFTdHlsZSA9IGNzc1J1bGVzWycuZm9udC1oZWFkaW5nLTEnXTtcbiAgICBjb25zdCBzdGVwTGFiZWxDc3MgPSBoZWFkaW5nMVN0eWxlXG4gICAgICA/IHRoaXMuc3R5bGVPYmplY3RUb1N0cmluZyhoZWFkaW5nMVN0eWxlKVxuICAgICAgOiAnJztcblxuICAgIC8vIE1hcCBIZWFkaW5nIDIgdG8gc2VjdGlvbiB0aXRsZXNcbiAgICBjb25zdCBoZWFkaW5nMlN0eWxlID0gY3NzUnVsZXNbJy5mb250LWhlYWRpbmctMiddO1xuICAgIGNvbnN0IHNlY3Rpb25UaXRsZUNzcyA9IGhlYWRpbmcyU3R5bGVcbiAgICAgID8gdGhpcy5zdHlsZU9iamVjdFRvU3RyaW5nKGhlYWRpbmcyU3R5bGUpXG4gICAgICA6ICcnO1xuXG4gICAgLy8gTWFwIEhlYWRpbmcgMyB0byBzdGVwIGRlc2NyaXB0aW9uc1xuICAgIGNvbnN0IGhlYWRpbmczU3R5bGUgPSBjc3NSdWxlc1snLmZvbnQtaGVhZGluZy0zJ107XG4gICAgY29uc3Qgc3RlcERlc2NyaXB0aW9uQ3NzID0gaGVhZGluZzNTdHlsZVxuICAgICAgPyB0aGlzLnN0eWxlT2JqZWN0VG9TdHJpbmcoaGVhZGluZzNTdHlsZSlcbiAgICAgIDogJyc7XG5cbiAgICByZXR1cm4gYCBcbiAgICAgIC5tYXQtaG9yaXpvbnRhbC1zdGVwcGVyLXdyYXBwZXIge1xuICAgICAgICAubWF0LXN0ZXAtdGV4dC1sYWJlbCB7XG4gICAgICAgICAgJHtzdGVwTGFiZWxDc3N9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgLm1hdC1zdGVwLWxhYmVsIHtcbiAgICAgICAgJHtzdGVwTGFiZWxDc3N9XG4gICAgICB9XG4gICAgICBcbiAgICAgIC5tYXQtc3RlcC1sYWJlbC1zZWxlY3RlZCB7XG4gICAgICAgICR7c3RlcExhYmVsQ3NzfVxuICAgICAgfVxuICAgICAgXG4gICAgICAuZm9ybS1zZWN0aW9uLXRpdGxlIGgyLFxuICAgICAgLnNlcGFyYXRvciBoMiB7XG4gICAgICAgICR7c2VjdGlvblRpdGxlQ3NzfVxuICAgICAgfVxuICAgICAgXG4gICAgICAuc3RlcC1kZXNjcmlwdGlvbixcbiAgICAgIC5tYXQtc3RlcC1zdWItbGFiZWwge1xuICAgICAgICAke3N0ZXBEZXNjcmlwdGlvbkNzc31cbiAgICAgIH1cbiAgICAgIFxuICAgICAgLm1hdC1zdGVwcGVyLWhvcml6b250YWwgLm1hdC1zdGVwLWxhYmVsLFxuICAgICAgLm1hdC1zdGVwcGVyLXZlcnRpY2FsIC5tYXQtc3RlcC1sYWJlbCB7XG4gICAgICAgICR7c3RlcExhYmVsQ3NzfVxuICAgICAgfVxuICAgICAgXG4gICAgICAuY29tcG9uZW50LXRleHQtZmllbGQgbWF0LWxhYmVsLFxuICAgICAgLmNvbXBvbmVudC1jaGVja2JveCBtYXQtbGFiZWwsXG4gICAgICAuY29tcG9uZW50LXJhZGlvIG1hdC1sYWJlbCxcbiAgICAgIC5jb21wb25lbnQtZGF0ZSBtYXQtbGFiZWwsXG4gICAgICAuY29tcG9uZW50LWRpY3Rpb25hcnkgbWF0LWxhYmVsIHtcbiAgICAgICAgJHtjc3NSdWxlc1snLmZvbnQtbGFiZWwnXVxuICAgICAgICA/IHRoaXMuc3R5bGVPYmplY3RUb1N0cmluZyhjc3NSdWxlc1snLmZvbnQtbGFiZWwnXSlcbiAgICAgICAgOiAnJ1xuICAgICAgfVxuICAgICAgfVxuICAgIGA7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldFNwZWNpZmljQ3NzRm9yUmFkaW8oXG4gICAgdmFsdWVzOiB7IFtwcm9wZXJ0eTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgY3NzUnVsZXM6IENzc1J1bGVzXG4gICkge1xuICAgIGxldCBsYWJlbFNwZWNpZmljQ3NzID0gJyc7XG4gICAgY29uc3QgZm9udFN0eWxlRm9yTGFiZWxUZXh0ID0gY3NzUnVsZXNbJy5jb21wb25lbnQtcmFkaW8tbGFiZWwnXTtcbiAgICBpZiAoZm9udFN0eWxlRm9yTGFiZWxUZXh0KSB7XG4gICAgICBsYWJlbFNwZWNpZmljQ3NzID0gdGhpcy5zdHlsZU9iamVjdFRvU3RyaW5nKGZvbnRTdHlsZUZvckxhYmVsVGV4dCk7XG4gICAgfVxuXG4gICAgdmFyIGNzcyA9IGBcbiAgICAubWF0LW1kYy10ZXh0LWZpZWxkLXdyYXBwZXIubWRjLXJhZGlvYm94LWZpZWxkIHtcbiAgICAgIG1hcmdpbi10b3A6ICR7dmFsdWVzWydtYXJnaW4tdG9wJ119O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAke3ZhbHVlc1snbWFyZ2luLXJpZ2h0J119O1xuICAgICAgbWFyZ2luLWJvdHRvbTogJHt2YWx1ZXNbJ21hcmdpbi1ib3R0b20nXX07XG4gICAgICBtYXJnaW4tbGVmdDogJHt2YWx1ZXNbJ21hcmdpbi1sZWZ0J119O1xuICAgICAgbGFiZWwge1xuICAgICAgICAke2xhYmVsU3BlY2lmaWNDc3N9O1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIHAge1xuICAgICAgICAgIG1hcmdpbjogMCAwIDEwcHg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC5tYXQtbWRjLXJhZGlvLWJ1dHRvbiB7XG4gICAgICAgIC5tZGMtcmFkaW9fX25hdGl2ZS1jb250cm9sIHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgICAgLm1kYy1yYWRpbyB7XG4gICAgICAgICAgd2lkdGg6IGNhbGMoMjBweCArICgyICogJHt2YWx1ZXNbJ2JvcmRlci13aWR0aCddfSkpO1xuICAgICAgICAgIGhlaWdodDogY2FsYygyMHB4ICsgKDIgKiAke3ZhbHVlc1snYm9yZGVyLXdpZHRoJ119KSk7XG4gICAgICAgICAgLm1kYy1yYWRpb19fYmFja2dyb3VuZCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3ZhbHVlc1snYmFja2dyb3VuZC1jb2xvciddfSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgYm9yZGVyOiAke3ZhbHVlc1snYm9yZGVyLXdpZHRoJ119IHNvbGlkICR7dmFsdWVzWydib3JkZXItY29sb3InXX0gIWltcG9ydGFudDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgICAgIHdpZHRoOiBjYWxjKDIwcHggKyAoMiAqICR7dmFsdWVzWydib3JkZXItd2lkdGgnXX0pKTtcbiAgICAgICAgICAgIGhlaWdodDogY2FsYygyMHB4ICsgKDIgKiAke3ZhbHVlc1snYm9yZGVyLXdpZHRoJ119KSk7XG4gICAgICAgICAgICAubWRjLXJhZGlvX19vdXRlci1jaXJjbGUge1xuICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICR7dmFsdWVzWydiYWNrZ3JvdW5kLWNvbG9yJ119ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAubWRjLXJhZGlvX19pbm5lci1jaXJjbGUge1xuICAgICAgICAgICAgICBib3JkZXItY29sb3I6ICR7dmFsdWVzWydjb2xvciddfSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBgO1xuXG4gICAgcmV0dXJuIGNzcztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0U3BlY2lmaWNDc3NGb3JEYXRhKFxuICAgIGtleTogc3RyaW5nLFxuICAgIHZhbHVlczogeyBbcHJvcGVydHk6IHN0cmluZ106IHN0cmluZyB9LFxuICAgIGNzc1J1bGVzOiBDc3NSdWxlc1xuICApIHtcbiAgICBsZXQgaW5wdXRTcGVjaWZpY0NzcyA9ICcnO1xuICAgIGNvbnN0IGZvbnRTdHlsZVNvdXJjZSA9IGNzc1J1bGVzWycuY29tcG9uZW50LWRhdGUtdmFsdWUnXSB8fCBjc3NSdWxlc1snLmNvbXBvbmVudC1kYXRhLXZhbHVlJ10gfHwgY3NzUnVsZXNbJy5mb250LWxpc3QnXTtcbiAgICBpZiAoZm9udFN0eWxlU291cmNlKSB7XG4gICAgICBjb25zdCBmb250U3R5bGVGb3JJbnB1dFRleHQgPSB7IC4uLmZvbnRTdHlsZVNvdXJjZSB9O1xuICAgICAgLy90cmFuc2ZlciBwcm9wZXJ0eSBmcm9tIGNvbXBvbmVudCB0byBpbnB1dFxuICAgICAgaWYgKHZhbHVlc1sndGV4dC1hbGlnbiddKSB7XG4gICAgICAgIGZvbnRTdHlsZUZvcklucHV0VGV4dFsndGV4dC1hbGlnbiddID0gdmFsdWVzWyd0ZXh0LWFsaWduJ107XG4gICAgICB9XG4gICAgICBpbnB1dFNwZWNpZmljQ3NzID0gdGhpcy5zdHlsZU9iamVjdFRvU3RyaW5nKHsgLi4uZm9udFN0eWxlRm9ySW5wdXRUZXh0IH0pO1xuICAgIH1cblxuICAgIGxldCBsYWJlbFNwZWNpZmljQ3NzID0gJyc7XG4gICAgY29uc3QgbGFiZWxTb3VyY2UgPSBjc3NSdWxlc1snLmNvbXBvbmVudC1kYXRhLWxhYmVsJ107XG4gICAgaWYgKGxhYmVsU291cmNlKSB7XG4gICAgICBsYWJlbFNwZWNpZmljQ3NzID0gdGhpcy5zdHlsZU9iamVjdFRvU3RyaW5nKHsgLi4ubGFiZWxTb3VyY2UgfSk7XG4gICAgfVxuICAgIHJldHVybiBgICR7a2V5fSB7IC5tYXQtbWRjLXRleHQtZmllbGQtd3JhcHBlci5tZGMtdGV4dC1maWVsZCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICR7dGhpcy5zdHlsZU9iamVjdFRvU3RyaW5nKHsgLi4udmFsdWVzIH0pfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXN0eWxlOnNvbGlkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2lucHV0U3BlY2lmaWNDc3N9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAubWF0LW1kYy1mb3JtLWZpZWxkLWluZml4IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC5tYXQtbWRjLWZvcm0tZmllbGQtaW5wdXQtY29udHJvbDo6cGxhY2Vob2xkZXJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGFiZWxTcGVjaWZpY0Nzc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBgO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSU5URVJOQUxfS0VZUyA9IFsndGV4dGFyZWEtaGVpZ2h0JywgJ3RleHRhcmVhLW1heC1oZWlnaHQnLCAnY29tcG9uZW50LW1hcmdpbi10b3AnLCAnY29tcG9uZW50LW1hcmdpbi1ib3R0b20nXTtcblxuICBwdWJsaWMgc3RhdGljIHN0eWxlT2JqZWN0VG9TdHJpbmcoXG4gICAgdmFsdWVzOiB7IFtwcm9wZXJ0eTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgaW1wb3J0YW50OiBib29sZWFuID0gZmFsc2VcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBvdXRwdXQgPSB7IC4uLnZhbHVlcyB9O1xuICAgIC8vIFJlbW92ZSBpbnRlcm5hbCBrZXlzIHRoYXQgYXJlIG5vdCB2YWxpZCBDU1MgcHJvcGVydGllc1xuICAgIHRoaXMuSU5URVJOQUxfS0VZUy5mb3JFYWNoKGsgPT4gZGVsZXRlIG91dHB1dFtrXSk7XG5cbiAgICBpZiAoIW91dHB1dFsnd2lkdGgnXSkge1xuICAgICAgb3V0cHV0Wyd3aWR0aCddID1cbiAgICAgICAgJ2NhbGMoMTAwJScgK1xuICAgICAgICAoJ21hcmdpbi1sZWZ0JyBpbiBvdXRwdXQgPyBgIC0gJHtvdXRwdXRbJ21hcmdpbi1sZWZ0J119YCA6ICcnKSArXG4gICAgICAgICgnbWFyZ2luLXJpZ2h0JyBpbiBvdXRwdXQgPyBgIC0gJHtvdXRwdXRbJ21hcmdpbi1yaWdodCddfWAgOiAnJykgK1xuICAgICAgICAnKSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKG91dHB1dClcbiAgICAgIC5tYXAoXG4gICAgICAgIChba2V5LCB2YWx1ZV0pID0+IGAke2tleX06ICR7dmFsdWV9JHtpbXBvcnRhbnQgPyAnICFpbXBvcnRhbnQnIDogJyd9YFxuICAgICAgKVxuICAgICAgLmpvaW4oJzsgJyk7XG4gIH1cbn1cbiJdfQ==
@@ -6,7 +6,11 @@ import * as i2 from "@ngx-formly/core";
6
6
  export class CustomSectionComponent extends FieldType {
7
7
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CustomSectionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
8
8
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CustomSectionComponent, selector: "formly-custom-section", usesInheritance: true, ngImport: i0, template: `
9
- <div class="custom-section">
9
+ <div
10
+ class="custom-section"
11
+ [style.paddingTop]="props['sectionMarginTop']"
12
+ [style.paddingBottom]="props['sectionMarginBottom']"
13
+ >
10
14
  <ng-container *ngFor="let field of field.fieldGroup">
11
15
  <formly-field
12
16
  [field]="field"
@@ -19,7 +23,11 @@ export class CustomSectionComponent extends FieldType {
19
23
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CustomSectionComponent, decorators: [{
20
24
  type: Component,
21
25
  args: [{ selector: 'formly-custom-section', template: `
22
- <div class="custom-section">
26
+ <div
27
+ class="custom-section"
28
+ [style.paddingTop]="props['sectionMarginTop']"
29
+ [style.paddingBottom]="props['sectionMarginBottom']"
30
+ >
23
31
  <ng-container *ngFor="let field of field.fieldGroup">
24
32
  <formly-field
25
33
  [field]="field"
@@ -29,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
29
37
  </div>
30
38
  `, styles: [".custom-section{display:grid;gap:5px;margin-bottom:5px;grid-template-columns:repeat(12,1fr)}.full-width{grid-column:span 12}.half-width{grid-column:span 6}.quarter-width{grid-column:span 3}\n"] }]
31
39
  }] });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXNlY3Rpb24tc2VwYXJhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29yaWdpbi1mb3JtL3NyYy9saWIvZm9ybWx5L2N1c3RvbS1zZWN0aW9uLXNlcGFyYXRvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFrQzdDLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxTQUFTOytHQUF4QyxzQkFBc0I7bUdBQXRCLHNCQUFzQixvRkE5QnZCOzs7Ozs7Ozs7R0FTVDs7NEZBcUJVLHNCQUFzQjtrQkFoQ2xDLFNBQVM7K0JBQ0UsdUJBQXVCLFlBQ3ZCOzs7Ozs7Ozs7R0FTVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Zvcm1seS1jdXN0b20tc2VjdGlvbicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImN1c3RvbS1zZWN0aW9uXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBmaWVsZC5maWVsZEdyb3VwXCI+XG4gICAgICAgIDxmb3JtbHktZmllbGRcbiAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cImZpZWxkLmNsYXNzTmFtZVwiXG4gICAgICAgID48L2Zvcm1seS1maWVsZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAuY3VzdG9tLXNlY3Rpb24ge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBnYXA6IDVweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4O1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgxMiwgMWZyKTtcbiAgICAgIH1cbiAgICAgIC5mdWxsLXdpZHRoIHtcbiAgICAgICAgZ3JpZC1jb2x1bW46IHNwYW4gMTI7XG4gICAgICB9XG4gICAgICAuaGFsZi13aWR0aCB7XG4gICAgICAgIGdyaWQtY29sdW1uOiBzcGFuIDY7XG4gICAgICB9XG4gICAgICAucXVhcnRlci13aWR0aCB7XG4gICAgICAgIGdyaWQtY29sdW1uOiBzcGFuIDM7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tU2VjdGlvbkNvbXBvbmVudCBleHRlbmRzIEZpZWxkVHlwZSB7fSJdfQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXNlY3Rpb24tc2VwYXJhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29yaWdpbi1mb3JtL3NyYy9saWIvZm9ybWx5L2N1c3RvbS1zZWN0aW9uLXNlcGFyYXRvci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFzQzdDLE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxTQUFTOytHQUF4QyxzQkFBc0I7bUdBQXRCLHNCQUFzQixvRkFsQ3ZCOzs7Ozs7Ozs7Ozs7O0dBYVQ7OzRGQXFCVSxzQkFBc0I7a0JBcENsQyxTQUFTOytCQUNFLHVCQUF1QixZQUN2Qjs7Ozs7Ozs7Ozs7OztHQWFUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm9ybWx5LWN1c3RvbS1zZWN0aW9uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImN1c3RvbS1zZWN0aW9uXCJcbiAgICAgIFtzdHlsZS5wYWRkaW5nVG9wXT1cInByb3BzWydzZWN0aW9uTWFyZ2luVG9wJ11cIlxuICAgICAgW3N0eWxlLnBhZGRpbmdCb3R0b21dPVwicHJvcHNbJ3NlY3Rpb25NYXJnaW5Cb3R0b20nXVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZmllbGQuZmllbGRHcm91cFwiPlxuICAgICAgICA8Zm9ybWx5LWZpZWxkXG4gICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJmaWVsZC5jbGFzc05hbWVcIlxuICAgICAgICA+PC9mb3JtbHktZmllbGQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLmN1c3RvbS1zZWN0aW9uIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ2FwOiA1cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMTIsIDFmcik7XG4gICAgICB9XG4gICAgICAuZnVsbC13aWR0aCB7XG4gICAgICAgIGdyaWQtY29sdW1uOiBzcGFuIDEyO1xuICAgICAgfVxuICAgICAgLmhhbGYtd2lkdGgge1xuICAgICAgICBncmlkLWNvbHVtbjogc3BhbiA2O1xuICAgICAgfVxuICAgICAgLnF1YXJ0ZXItd2lkdGgge1xuICAgICAgICBncmlkLWNvbHVtbjogc3BhbiAzO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbVNlY3Rpb25Db21wb25lbnQgZXh0ZW5kcyBGaWVsZFR5cGUgeyB9XG4iXX0=
@@ -3,34 +3,57 @@ import { FieldType } from '@ngx-formly/core';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/common";
5
5
  export class FormSectionSeparatorComponent extends FieldType {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.heading2Style = {};
9
+ this.separatorStyle = {};
10
+ }
6
11
  ngOnInit() {
7
12
  if (this.props['design']) {
8
- this.heading2Style = this.props['design']['.font-heading-2'];
9
- const separatorStyle = this.props['design']['.separator-section'];
10
- if (separatorStyle && separatorStyle['height'] !== '0px') {
11
- this.separatorStyle = separatorStyle;
13
+ // Use the corrected CSS class name for Heading 2
14
+ const heading2Design = this.props['design']['.font-heading-2'];
15
+ if (heading2Design) {
16
+ this.heading2Style = heading2Design;
17
+ }
18
+ // Apply separator section styles
19
+ const separatorDesign = this.props['design']['.separator-section'];
20
+ if (separatorDesign) {
21
+ this.separatorStyle = {
22
+ ...separatorDesign,
23
+ display: separatorDesign.height && separatorDesign.height !== '0px'
24
+ ? 'block'
25
+ : 'none',
26
+ };
12
27
  }
13
28
  }
14
29
  }
15
30
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormSectionSeparatorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
16
31
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: FormSectionSeparatorComponent, selector: "form-section-separator", usesInheritance: true, ngImport: i0, template: `
17
- <div class="separator" style="margin: 2% ;">
32
+ <div class="separator form-section-title" [style.paddingTop]="props['sectionMarginTop'] || '2%'">
18
33
  <h2 *ngIf="to && to['title']" [ngStyle]="heading2Style">
19
34
  {{ to['title'] }}
20
35
  </h2>
21
- <hr *ngIf="to && to['showSeparator']" [ngStyle]="separatorStyle" />
36
+ <hr
37
+ *ngIf="to && to['showSeparator']"
38
+ [ngStyle]="separatorStyle"
39
+ class="section-separator"
40
+ />
22
41
  </div>
23
- `, isInline: true, styles: [".separator{margin:2% 0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
42
+ `, isInline: true, styles: [".separator{padding-bottom:2%}.section-separator{border:none;margin:10px 0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
24
43
  }
25
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FormSectionSeparatorComponent, decorators: [{
26
45
  type: Component,
27
46
  args: [{ selector: 'form-section-separator', template: `
28
- <div class="separator" style="margin: 2% ;">
47
+ <div class="separator form-section-title" [style.paddingTop]="props['sectionMarginTop'] || '2%'">
29
48
  <h2 *ngIf="to && to['title']" [ngStyle]="heading2Style">
30
49
  {{ to['title'] }}
31
50
  </h2>
32
- <hr *ngIf="to && to['showSeparator']" [ngStyle]="separatorStyle" />
51
+ <hr
52
+ *ngIf="to && to['showSeparator']"
53
+ [ngStyle]="separatorStyle"
54
+ class="section-separator"
55
+ />
33
56
  </div>
34
- `, styles: [".separator{margin:2% 0}\n"] }]
57
+ `, styles: [".separator{padding-bottom:2%}.section-separator{border:none;margin:10px 0}\n"] }]
35
58
  }] });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWN0aW9uLXNlcGFyYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL2Zvcm1seS9mb3JtLXNlY3Rpb24tc2VwYXJhdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBb0I3QyxNQUFNLE9BQU8sNkJBQThCLFNBQVEsU0FBUztJQUkxRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDN0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ2xFLElBQUksY0FBYyxJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQztnQkFDekQsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7WUFDdkMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOytHQVpVLDZCQUE2QjttR0FBN0IsNkJBQTZCLHFGQWhCOUI7Ozs7Ozs7R0FPVDs7NEZBU1UsNkJBQTZCO2tCQWxCekMsU0FBUzsrQkFDRSx3QkFBd0IsWUFDeEI7Ozs7Ozs7R0FPVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZm9ybS1zZWN0aW9uLXNlcGFyYXRvcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInNlcGFyYXRvclwiIHN0eWxlPVwibWFyZ2luOiAyJSA7XCI+XG4gICAgICA8aDIgKm5nSWY9XCJ0byAmJiB0b1sndGl0bGUnXVwiIFtuZ1N0eWxlXT1cImhlYWRpbmcyU3R5bGVcIj5cbiAgICAgICAge3sgdG9bJ3RpdGxlJ10gfX1cbiAgICAgIDwvaDI+XG4gICAgICA8aHIgKm5nSWY9XCJ0byAmJiB0b1snc2hvd1NlcGFyYXRvciddXCIgW25nU3R5bGVdPVwic2VwYXJhdG9yU3R5bGVcIiAvPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAuc2VwYXJhdG9yIHtcbiAgICAgICAgbWFyZ2luOiAyJSAwO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1TZWN0aW9uU2VwYXJhdG9yQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgaGVhZGluZzJTdHlsZTogW3Byb3A6IHN0cmluZ107XG4gIHNlcGFyYXRvclN0eWxlOiBbcHJvcDogc3RyaW5nXTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wc1snZGVzaWduJ10pIHtcbiAgICAgIHRoaXMuaGVhZGluZzJTdHlsZSA9IHRoaXMucHJvcHNbJ2Rlc2lnbiddWycuZm9udC1oZWFkaW5nLTInXTtcbiAgICAgIGNvbnN0IHNlcGFyYXRvclN0eWxlID0gdGhpcy5wcm9wc1snZGVzaWduJ11bJy5zZXBhcmF0b3Itc2VjdGlvbiddO1xuICAgICAgaWYgKHNlcGFyYXRvclN0eWxlICYmIHNlcGFyYXRvclN0eWxlWydoZWlnaHQnXSAhPT0gJzBweCcpIHtcbiAgICAgICAgdGhpcy5zZXBhcmF0b3JTdHlsZSA9IHNlcGFyYXRvclN0eWxlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWN0aW9uLXNlcGFyYXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vcmlnaW4tZm9ybS9zcmMvbGliL2Zvcm1seS9mb3JtLXNlY3Rpb24tc2VwYXJhdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBNEI3QyxNQUFNLE9BQU8sNkJBQThCLFNBQVEsU0FBUztJQTFCNUQ7O1FBMkJFLGtCQUFhLEdBQVEsRUFBRSxDQUFDO1FBQ3hCLG1CQUFjLEdBQVEsRUFBRSxDQUFDO0tBdUIxQjtJQXJCQyxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDekIsaURBQWlEO1lBQ2pELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMvRCxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsYUFBYSxHQUFHLGNBQWMsQ0FBQztZQUN0QyxDQUFDO1lBRUQsaUNBQWlDO1lBQ2pDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUNuRSxJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsY0FBYyxHQUFHO29CQUNwQixHQUFHLGVBQWU7b0JBQ2xCLE9BQU8sRUFDTCxlQUFlLENBQUMsTUFBTSxJQUFJLGVBQWUsQ0FBQyxNQUFNLEtBQUssS0FBSzt3QkFDeEQsQ0FBQyxDQUFDLE9BQU87d0JBQ1QsQ0FBQyxDQUFDLE1BQU07aUJBQ2IsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzsrR0F4QlUsNkJBQTZCO21HQUE3Qiw2QkFBNkIscUZBeEI5Qjs7Ozs7Ozs7Ozs7R0FXVDs7NEZBYVUsNkJBQTZCO2tCQTFCekMsU0FBUzsrQkFDRSx3QkFBd0IsWUFDeEI7Ozs7Ozs7Ozs7O0dBV1QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Zvcm0tc2VjdGlvbi1zZXBhcmF0b3InLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3IgZm9ybS1zZWN0aW9uLXRpdGxlXCIgW3N0eWxlLnBhZGRpbmdUb3BdPVwicHJvcHNbJ3NlY3Rpb25NYXJnaW5Ub3AnXSB8fCAnMiUnXCI+XG4gICAgICA8aDIgKm5nSWY9XCJ0byAmJiB0b1sndGl0bGUnXVwiIFtuZ1N0eWxlXT1cImhlYWRpbmcyU3R5bGVcIj5cbiAgICAgICAge3sgdG9bJ3RpdGxlJ10gfX1cbiAgICAgIDwvaDI+XG4gICAgICA8aHJcbiAgICAgICAgKm5nSWY9XCJ0byAmJiB0b1snc2hvd1NlcGFyYXRvciddXCJcbiAgICAgICAgW25nU3R5bGVdPVwic2VwYXJhdG9yU3R5bGVcIlxuICAgICAgICBjbGFzcz1cInNlY3Rpb24tc2VwYXJhdG9yXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5zZXBhcmF0b3Ige1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMiU7XG4gICAgICB9XG4gICAgICAuc2VjdGlvbi1zZXBhcmF0b3Ige1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIG1hcmdpbjogMTBweCAwO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1TZWN0aW9uU2VwYXJhdG9yQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgaGVhZGluZzJTdHlsZTogYW55ID0ge307XG4gIHNlcGFyYXRvclN0eWxlOiBhbnkgPSB7fTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wc1snZGVzaWduJ10pIHtcbiAgICAgIC8vIFVzZSB0aGUgY29ycmVjdGVkIENTUyBjbGFzcyBuYW1lIGZvciBIZWFkaW5nIDJcbiAgICAgIGNvbnN0IGhlYWRpbmcyRGVzaWduID0gdGhpcy5wcm9wc1snZGVzaWduJ11bJy5mb250LWhlYWRpbmctMiddO1xuICAgICAgaWYgKGhlYWRpbmcyRGVzaWduKSB7XG4gICAgICAgIHRoaXMuaGVhZGluZzJTdHlsZSA9IGhlYWRpbmcyRGVzaWduO1xuICAgICAgfVxuXG4gICAgICAvLyBBcHBseSBzZXBhcmF0b3Igc2VjdGlvbiBzdHlsZXNcbiAgICAgIGNvbnN0IHNlcGFyYXRvckRlc2lnbiA9IHRoaXMucHJvcHNbJ2Rlc2lnbiddWycuc2VwYXJhdG9yLXNlY3Rpb24nXTtcbiAgICAgIGlmIChzZXBhcmF0b3JEZXNpZ24pIHtcbiAgICAgICAgdGhpcy5zZXBhcmF0b3JTdHlsZSA9IHtcbiAgICAgICAgICAuLi5zZXBhcmF0b3JEZXNpZ24sXG4gICAgICAgICAgZGlzcGxheTpcbiAgICAgICAgICAgIHNlcGFyYXRvckRlc2lnbi5oZWlnaHQgJiYgc2VwYXJhdG9yRGVzaWduLmhlaWdodCAhPT0gJzBweCdcbiAgICAgICAgICAgICAgPyAnYmxvY2snXG4gICAgICAgICAgICAgIDogJ25vbmUnLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19