myrta-ui 1.1.25 → 1.1.27

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.
@@ -77,13 +77,14 @@ export class FormulaEditorComponent {
77
77
  }
78
78
  writeValue(outsideValue) {
79
79
  if (outsideValue !== null) {
80
+ const { value, visibleValue } = this._transformValue(this._modifiedValue(outsideValue));
80
81
  this.value = outsideValue;
81
- this.visibleValue = this._transformValue(this._modifiedValue(outsideValue)).visibleValue;
82
+ this.visibleValue = visibleValue;
82
83
  this._detector.detectChanges();
83
84
  }
84
85
  }
85
86
  onInput(event) {
86
- const { value, searchText } = this._transformValue(this._inputValue, false);
87
+ const { value, searchText } = this._transformValue(this._modifiedValue(this._inputValue), false);
87
88
  this.updateValue(value);
88
89
  this.searchText = searchText;
89
90
  this._storeCursorPosition();
@@ -98,9 +99,9 @@ export class FormulaEditorComponent {
98
99
  }
99
100
  insertTag(whiteListItem) {
100
101
  this._restoreCursorPosition(this.inputElement.nativeElement);
101
- this._insertPositionText(whiteListItem.label);
102
+ this._insertPositionText(`{${whiteListItem.sysName}}`);
102
103
  setTimeout(() => {
103
- const { value, visibleValue } = this._transformValue(this._inputValue, false);
104
+ const { value, visibleValue } = this._transformValue(this._modifiedValue(this._inputValue), false);
104
105
  this.updateValue(value);
105
106
  this.updateVisibleValue(visibleValue);
106
107
  });
@@ -120,21 +121,20 @@ export class FormulaEditorComponent {
120
121
  this.onTouched();
121
122
  }
122
123
  _modifiedValue(value) {
123
- const clearedValue = value.trim().split(' ').filter(e => e !== '');
124
- return clearedValue.map(v => {
125
- const findItem = this.items.find(w => `{${w.sysName}}` === v);
126
- return findItem ? findItem.label : v;
127
- }).join(' ');
124
+ const labelsMap = Object.fromEntries(this.items.map(obj => [obj.label, obj.sysName]));
125
+ const str = this.items.map(s => s.label);
126
+ const reg = new RegExp(str.join('|'), 'g');
127
+ return value.replace(reg, match => `{${labelsMap[match]}}`);
128
128
  }
129
129
  _transformValue(content, analise = false) {
130
- const valueArray = content.split(/[\s\u00A0]+/).filter(e => e !== '');
130
+ const valueArray = content.split(/[\s\u00A0]+/).filter(Boolean);
131
131
  const visibleValueArray = [];
132
132
  const originalValueArray = [];
133
133
  let isInterpretationError = false;
134
134
  let searchText = '';
135
135
  valueArray.forEach((item) => {
136
136
  const clearedItem = item.trim();
137
- const findItem = this.items.find(v => clearedItem.includes(v.label));
137
+ const findItem = this.items.find(v => clearedItem.includes(v.sysName));
138
138
  if (findItem) {
139
139
  visibleValueArray.push(createTag(findItem.label));
140
140
  originalValueArray.push(createTagOutside(findItem.sysName));
@@ -161,6 +161,8 @@ export class FormulaEditorComponent {
161
161
  if (analise) {
162
162
  this._checkErrors(originalValueArray, isInterpretationError);
163
163
  }
164
+ console.log(visibleValueArray);
165
+ console.log(originalValueArray);
164
166
  return {
165
167
  value: originalValueArray.join(' '),
166
168
  visibleValue: visibleValueArray.join(' '),
@@ -220,9 +222,9 @@ export class FormulaEditorComponent {
220
222
  }
221
223
  this._selection = document.getSelection();
222
224
  if (this._selection) {
223
- this._selection.removeAllRanges();
224
- this._selection.addRange(this._range);
225
- element.focus();
225
+ // this._selection.removeAllRanges();
226
+ // this._selection.addRange(this._range);
227
+ // element.focus();
226
228
  }
227
229
  }
228
230
  _placeCaretAtEnd() {
@@ -239,13 +241,27 @@ export class FormulaEditorComponent {
239
241
  });
240
242
  }
241
243
  clickOut(event) {
244
+ // console.dir(event);
245
+ // console.log(this._modifiedValue(this._inputValue));
242
246
  if (!this.eRef.nativeElement.contains(event.target)) {
243
- const { value, visibleValue } = this._transformValue(this._inputValue, true);
244
- this.updateValue(value);
247
+ const { value, visibleValue } = this._transformValue(this._modifiedValue(this._inputValue), true);
248
+ //
249
+ // this.updateValue(value);
245
250
  this.updateVisibleValue(visibleValue);
251
+ //
246
252
  this.isFocused = false;
247
253
  this._detector.detectChanges();
248
254
  }
255
+ // if (!this.eRef.nativeElement.contains(event.target)) {
256
+ // console.log(this._inputValue);
257
+ // const {value, visibleValue} = this._transformValue(this._inputValue, true);
258
+ //
259
+ // this.updateValue(value);
260
+ // this.updateVisibleValue(visibleValue);
261
+ //
262
+ // this.isFocused = false;
263
+ // this._detector.detectChanges();
264
+ // }
249
265
  }
250
266
  registerOnChange(fn) {
251
267
  this.onChange = fn;
@@ -301,4 +317,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
301
317
  type: HostListener,
302
318
  args: ['document:click', ['$event']]
303
319
  }] } });
304
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXVsYS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybXVsYS1lZGl0b3IvZm9ybXVsYS1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybXVsYS1lZGl0b3IvZm9ybXVsYS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQWMsWUFBWSxFQUNuQyxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQ3ZDLE1BQU0sRUFBRSxTQUFTLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4SCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFekQsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNwQixNQUFNLCtCQUErQixDQUFDOzs7Ozs7QUFnQnZDLE1BQU0sT0FBTyxzQkFBc0I7SUFxRGpDLFlBQzRCLFFBQWtC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LEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQzs0QkFDckQsS0FBSyxFQUFFLElBQUk7eUJBQ1osQ0FBQzswREF3RG9DLFFBQVE7MEJBQTNDLE1BQU07MkJBQUMsUUFBUTtxR0F0QkYsTUFBTTtzQkFBckIsS0FBSztnQkFHVSxLQUFLO3NCQUFwQixLQUFLO2dCQUVVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxXQUFXO3NCQUExQixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBR1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBRXFDLFlBQVk7c0JBQXRELFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFFeEIsT0FBTztzQkFBdkIsTUFBTTtnQkFDVSxPQUFPO3NCQUF2QixNQUFNO2dCQUNVLFdBQVc7c0JBQTNCLE1BQU07Z0JBNk9QLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLFxyXG4gIGZvcndhcmRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCxcclxuICBPdXRwdXQsIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBGaWVsZCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcclxuaW1wb3J0IHsgRXJyb3JNZXNzYWdlc0VudW0sIEVycm9yVHlwZUVudW0gfSBmcm9tICcuL2VudW1zL2Vycm9yLW1lc3NhZ2VzLmVudW0nO1xyXG5pbXBvcnQgeyBjcmVhdGVCcmFja2V0LCBjcmVhdGVOdW1iZXIsIGNyZWF0ZU9wZXJhdG9yLCBjcmVhdGVUYWcsIGNyZWF0ZVRhZ091dHNpZGUgfSBmcm9tICcuL2hlbHBlcnMvY3JlYXRlLXRhZ3MuaGVscGVyJztcclxuaW1wb3J0IHsgaXNBbiB9IGZyb20gJy4uLy4uLy4uL2hlbHBlcnMvaXMtbnVtYmVyLmhlbHBlcic7XHJcbmltcG9ydCB7IFdoaXRlTGlzdEl0ZW1Nb2RlbCB9IGZyb20gJy4vbW9kZWxzL3doaXRlLWxpc3QtaXRlbS5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgY2hlY2tCcmFja2V0RXJyb3JzLFxyXG4gIGNoZWNrRGl2aWRlckVycm9ycyxcclxuICBjaGVja0ludGVycHJldGF0aW9uRXJyb3JzLFxyXG4gIGNoZWNrU2VxdWVuY2VFcnJvcnNcclxufSBmcm9tICcuL2hlbHBlcnMvY2hlY2stZXJyb3JzLmhlbHBlcic7XHJcbmltcG9ydCB7IENoZWNrRXJyb3JSZXN1bHRNb2RlbCB9IGZyb20gJy4vbW9kZWxzL2NoZWNrLWVycm9yLXJlc3VsdC5tb2RlbCc7XHJcbmltcG9ydCB7IEZvcm11bGFFZGl0b3JWYWx1ZVR5cGVzLCBGb3JtdWxhRWRpdG9yVmFsdWVXaXRoSWQgfSBmcm9tICcuL21vZGVscyc7XHJcbmltcG9ydCB7IElucHV0VGV4dFNpemVzRW51bSB9IGZyb20gJy4uL2lucHV0LXRleHQvaW5wdXQtdGV4dC5lbnVtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LWZvcm11bGEtZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybXVsYS1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zvcm11bGEtZWRpdG9yLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbe1xyXG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGb3JtdWxhRWRpdG9yQ29tcG9uZW50KSxcclxuICAgIG11bHRpOiB0cnVlXHJcbiAgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm11bGFFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgcHJpdmF0ZSBfcmFuZ2U6IGFueTtcclxuICBwcml2YXRlIF9zZWxlY3Rpb246IFNlbGVjdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX2N1cnNvclBvc2l0aW9uOiB7XHJcbiAgICBzdGFydENvbnRhaW5lcjogTm9kZSB8IG51bGwsXHJcbiAgICBlbmRDb250YWluZXI6IE5vZGUgfCBudWxsLFxyXG4gICAgc3RhcnRPZmZzZXQ6IG51bWJlcixcclxuICAgIGVuZE9mZnNldDogbnVtYmVyXHJcbiAgfSA9IHtcclxuICAgIHN0YXJ0Q29udGFpbmVyOiBudWxsLFxyXG4gICAgZW5kQ29udGFpbmVyOiBudWxsLFxyXG4gICAgc3RhcnRPZmZzZXQ6IDAsXHJcbiAgICBlbmRPZmZzZXQ6IDBcclxuICB9O1xyXG5cclxuICBwcml2YXRlIHNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBwcml2YXRlIG9wZXJhdG9yTGlzdDogc3RyaW5nW10gPSBbJysnLCAnLScsICcqJywgJy8nXTtcclxuICBwcml2YXRlIGJyYWNrZXRMaXN0OiBzdHJpbmdbXSA9IFsnKCcsICcpJ107XHJcblxyXG4gIHB1YmxpYyB2YWx1ZSA9ICcnO1xyXG4gIHB1YmxpYyB2aXNpYmxlVmFsdWUgPSAnJztcclxuXHJcbiAgcHVibGljIGlzRm9jdXNlZCA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgZXJyb3JNb2RlbDogQ2hlY2tFcnJvclJlc3VsdE1vZGVsID0ge1xyXG4gICAgaXNFcnJvcjogZmFsc2UsXHJcbiAgICBlcnJvclR5cGU6IEVycm9yVHlwZUVudW0uRGVmYXVsdFxyXG4gIH07XHJcblxyXG4gIC8vIFNBVkUgU1RBVEVcclxuICBwdWJsaWMgdXVpZDogc3RyaW5nID0gdXVpZHY0KCk7XHJcbiAgQElucHV0KCkgcHVibGljIGZpZWxkczogRmllbGRbXSA9IFtdO1xyXG5cclxuICAvLyBUT0RPIGl0ZW1zXHJcbiAgQElucHV0KCkgcHVibGljIGl0ZW1zOiBXaGl0ZUxpc3RJdGVtTW9kZWxbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVhZG9ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXIgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tQ2xhc3NlcyA9ICcnO1xyXG5cclxuICAvLyBWQUxJREFURVxyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWRNZXNzYWdlOiBzdHJpbmcgfCBzdHJpbmdbXSA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjaGVja0ludmFsaWQ6IHRydWUgfCBmYWxzZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBAVmlld0NoaWxkKCdpbnB1dEVsZW1lbnQnLCB7c3RhdGljOiB0cnVlfSkgaW5wdXRFbGVtZW50ITogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Rm9ybXVsYUVkaXRvclZhbHVlVHlwZXM+ID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtdWxhRWRpdG9yVmFsdWVUeXBlcz4oKTtcclxuICBAT3V0cHV0KCkgcHVibGljIGJsdXJyZWQ6IEV2ZW50RW1pdHRlcjxGb3JtdWxhRWRpdG9yVmFsdWVXaXRoSWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtdWxhRWRpdG9yVmFsdWVXaXRoSWQ+KCk7XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBtb2RlbENoYW5nZTogRXZlbnRFbWl0dGVyPEZvcm11bGFFZGl0b3JWYWx1ZVdpdGhJZD4gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm11bGFFZGl0b3JWYWx1ZVdpdGhJZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcclxuICAgIHByaXZhdGUgX2RldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgZVJlZjogRWxlbWVudFJlZlxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRFcnJvck1lc3NhZ2UoKTogc3RyaW5nIHwgc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZE1lc3NhZ2UgfHwgRXJyb3JNZXNzYWdlc0VudW1bdGhpcy5lcnJvck1vZGVsLmVycm9yVHlwZV07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGZpbHRlcmVkTGlzdCgpOiBXaGl0ZUxpc3RJdGVtTW9kZWxbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5pdGVtcy5maWx0ZXIoaXRlbSA9PiBpdGVtLmxhYmVsLmluY2x1ZGVzKHRoaXMuc2VhcmNoVGV4dCkpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldEludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5lcnJvck1vZGVsLmlzRXJyb3IgfHwgdGhpcy5pbnZhbGlkXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHJlYWRvbmx5Q2xhc3MoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnJlYWRvbmx5ID8gJ21yeC1pbnB1dF9fcmVhZG9ubHknIDogJyc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNoZWNrVmFsaWRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja0ludmFsaWQgPT09IGZhbHNlID8gJ21yeC1pbnB1dC1jaGVja2VkLXN1Y2Nlc3MnIDogdGhpcy5jaGVja0ludmFsaWQgPT09IHRydWUgPyAnbXJ4LWlucHV0LWNoZWNrZWQtZXJyb3InIDogJydcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0Q2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke3RoaXMuY3VzdG9tQ2xhc3Nlc30gJHt0aGlzLnJlYWRvbmx5Q2xhc3N9ICR7dGhpcy5jaGVja1ZhbGlkQ2xhc3Nlc31gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgX2lucHV0VmFsdWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnRleHRDb250ZW50IHx8ICcnO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZShvdXRzaWRlVmFsdWU6IEZvcm11bGFFZGl0b3JWYWx1ZVR5cGVzKTogdm9pZCB7XHJcbiAgICBpZiAob3V0c2lkZVZhbHVlICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSBvdXRzaWRlVmFsdWU7XHJcbiAgICAgIHRoaXMudmlzaWJsZVZhbHVlID0gdGhpcy5fdHJhbnNmb3JtVmFsdWUodGhpcy5fbW9kaWZpZWRWYWx1ZShvdXRzaWRlVmFsdWUpKS52aXNpYmxlVmFsdWU7XHJcblxyXG4gICAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBjb25zdCB7dmFsdWUsIHNlYXJjaFRleHR9ID0gdGhpcy5fdHJhbnNmb3JtVmFsdWUodGhpcy5faW5wdXRWYWx1ZSwgZmFsc2UpO1xyXG5cclxuICAgIHRoaXMudXBkYXRlVmFsdWUodmFsdWUpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gc2VhcmNoVGV4dFxyXG5cclxuICAgIHRoaXMuX3N0b3JlQ3Vyc29yUG9zaXRpb24oKTtcclxuICB9XHJcblxyXG4gIG9uQmx1cihldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMuX3N0b3JlQ3Vyc29yUG9zaXRpb24oKTtcclxuICAgIHRoaXMuYmx1cnJlZC5lbWl0KHt2YWx1ZTogdGhpcy52YWx1ZSwgaWQ6IHRoaXMudXVpZH0pXHJcbiAgfVxyXG5cclxuICBvbkZvY3VzKGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5pc0ZvY3VzZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5fZGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBpbnNlcnRUYWcod2hpdGVMaXN0SXRlbTogV2hpdGVMaXN0SXRlbU1vZGVsKSB7XHJcbiAgICB0aGlzLl9yZXN0b3JlQ3Vyc29yUG9zaXRpb24odGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgICB0aGlzLl9pbnNlcnRQb3NpdGlvblRleHQod2hpdGVMaXN0SXRlbS5sYWJlbCk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHt2YWx1ZSwgdmlzaWJsZVZhbHVlfSA9IHRoaXMuX3RyYW5zZm9ybVZhbHVlKHRoaXMuX2lucHV0VmFsdWUsIGZhbHNlKTtcclxuXHJcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUodmFsdWUpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVWYWx1ZSh2aXNpYmxlVmFsdWUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fcGxhY2VDYXJldEF0RW5kKCk7XHJcbiAgICB0aGlzLnNlYXJjaFRleHQgPSAnJ1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVmlzaWJsZVZhbHVlKGluc2lkZVZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudmlzaWJsZVZhbHVlID0gaW5zaWRlVmFsdWU7XHJcblxyXG4gICAgdGhpcy5fc3RvcmVDdXJzb3JQb3NpdGlvbigpO1xyXG5cclxuICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlVmFsdWUoaW5zaWRlVmFsdWU6IHN0cmluZykge1xyXG4gICAgdGhpcy52YWx1ZSA9IGluc2lkZVZhbHVlO1xyXG4gICAgdGhpcy5jaGFuZ2VkLmVtaXQoaW5zaWRlVmFsdWUpO1xyXG4gICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHt2YWx1ZTogaW5zaWRlVmFsdWUsIGlkOiB0aGlzLnV1aWR9KTtcclxuICAgIHRoaXMub25DaGFuZ2UoaW5zaWRlVmFsdWUpO1xyXG4gICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX21vZGlmaWVkVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBjbGVhcmVkVmFsdWU6IHN0cmluZ1tdID0gdmFsdWUudHJpbSgpLnNwbGl0KCcgJykuZmlsdGVyKGUgPT4gZSAhPT0gJycpO1xyXG5cclxuICAgIHJldHVybiBjbGVhcmVkVmFsdWUubWFwKHYgPT4ge1xyXG4gICAgICBjb25zdCBmaW5kSXRlbSA9IHRoaXMuaXRlbXMuZmluZCh3ID0+IGB7JHt3LnN5c05hbWV9fWAgPT09IHYpO1xyXG4gICAgICByZXR1cm4gZmluZEl0ZW0gPyBmaW5kSXRlbS5sYWJlbCA6IHY7XHJcbiAgICB9KS5qb2luKCcgJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90cmFuc2Zvcm1WYWx1ZShjb250ZW50OiBzdHJpbmcsIGFuYWxpc2U6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgY29uc3QgdmFsdWVBcnJheSA9IGNvbnRlbnQuc3BsaXQoL1tcXHNcXHUwMEEwXSsvKS5maWx0ZXIoZSA9PiBlICE9PSAnJyk7XHJcbiAgICBjb25zdCB2aXNpYmxlVmFsdWVBcnJheTogc3RyaW5nW10gPSBbXTtcclxuICAgIGNvbnN0IG9yaWdpbmFsVmFsdWVBcnJheTogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBsZXQgaXNJbnRlcnByZXRhdGlvbkVycm9yID0gZmFsc2U7XHJcblxyXG4gICAgbGV0IHNlYXJjaFRleHQgPSAnJ1xyXG5cclxuICAgIHZhbHVlQXJyYXkuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBjb25zdCBjbGVhcmVkSXRlbSA9IGl0ZW0udHJpbSgpO1xyXG4gICAgICBjb25zdCBmaW5kSXRlbSA9IHRoaXMuaXRlbXMuZmluZCh2ID0+IGNsZWFyZWRJdGVtLmluY2x1ZGVzKHYubGFiZWwpICk7XHJcblxyXG4gICAgICBpZiAoZmluZEl0ZW0pIHtcclxuICAgICAgICB2aXNpYmxlVmFsdWVBcnJheS5wdXNoKGNyZWF0ZVRhZyhmaW5kSXRlbS5sYWJlbCkpO1xyXG4gICAgICAgIG9yaWdpbmFsVmFsdWVBcnJheS5wdXNoKGNyZWF0ZVRhZ091dHNpZGUoZmluZEl0ZW0uc3lzTmFtZSkpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuYnJhY2tldExpc3QuZmluZCh2ID0+IHYgPT09IGNsZWFyZWRJdGVtKSkge1xyXG4gICAgICAgIHZpc2libGVWYWx1ZUFycmF5LnB1c2goY3JlYXRlQnJhY2tldChjbGVhcmVkSXRlbSkpO1xyXG4gICAgICAgIG9yaWdpbmFsVmFsdWVBcnJheS5wdXNoKGNsZWFyZWRJdGVtKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLm9wZXJhdG9yTGlzdC5maW5kKHYgPT4gdiA9PT0gY2xlYXJlZEl0ZW0pKSB7XHJcbiAgICAgICAgdmlzaWJsZVZhbHVlQXJyYXkucHVzaChjcmVhdGVPcGVyYXRvcihjbGVhcmVkSXRlbSkpO1xyXG4gICAgICAgIG9yaWdpbmFsVmFsdWVBcnJheS5wdXNoKGNsZWFyZWRJdGVtKTtcclxuICAgICAgfSBlbHNlIGlmIChpc0FuKGNsZWFyZWRJdGVtKSkge1xyXG4gICAgICAgIHZpc2libGVWYWx1ZUFycmF5LnB1c2goY3JlYXRlTnVtYmVyKGNsZWFyZWRJdGVtKSk7XHJcbiAgICAgICAgb3JpZ2luYWxWYWx1ZUFycmF5LnB1c2goY2xlYXJlZEl0ZW0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZpc2libGVWYWx1ZUFycmF5LnB1c2goY2xlYXJlZEl0ZW0pO1xyXG4gICAgICAgIG9yaWdpbmFsVmFsdWVBcnJheS5wdXNoKGNsZWFyZWRJdGVtKTtcclxuICAgICAgICBzZWFyY2hUZXh0ID0gY2xlYXJlZEl0ZW1cclxuXHJcbiAgICAgICAgaXNJbnRlcnByZXRhdGlvbkVycm9yID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGFuYWxpc2UpIHtcclxuICAgICAgdGhpcy5fY2hlY2tFcnJvcnMob3JpZ2luYWxWYWx1ZUFycmF5LCBpc0ludGVycHJldGF0aW9uRXJyb3IpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIHZhbHVlOiBvcmlnaW5hbFZhbHVlQXJyYXkuam9pbignICcpLFxyXG4gICAgICB2aXNpYmxlVmFsdWU6IHZpc2libGVWYWx1ZUFycmF5LmpvaW4oJyAnKSxcclxuICAgICAgc2VhcmNoVGV4dDogc2VhcmNoVGV4dFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NoZWNrRXJyb3JzKHZhbHVlQXJyYXk6IHN0cmluZ1tdLCBpc0ludGVycHJldGF0aW9uRXJyb3I6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2Rpc2FibGVFcnJvcigpO1xyXG5cclxuICAgIHRoaXMuX3RvZ2dsZUVycm9yKGNoZWNrQnJhY2tldEVycm9ycyh2YWx1ZUFycmF5KSk7XHJcbiAgICB0aGlzLl90b2dnbGVFcnJvcihjaGVja0RpdmlkZXJFcnJvcnModmFsdWVBcnJheSwgdGhpcy5pdGVtcykpO1xyXG4gICAgdGhpcy5fdG9nZ2xlRXJyb3IoY2hlY2tTZXF1ZW5jZUVycm9ycyh2YWx1ZUFycmF5LCB0aGlzLm9wZXJhdG9yTGlzdCwgdGhpcy5icmFja2V0TGlzdCkpO1xyXG4gICAgdGhpcy5fdG9nZ2xlRXJyb3IoY2hlY2tJbnRlcnByZXRhdGlvbkVycm9ycyhpc0ludGVycHJldGF0aW9uRXJyb3IpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3RvZ2dsZUVycm9yKGVycm9yTW9kZWw6IENoZWNrRXJyb3JSZXN1bHRNb2RlbCkge1xyXG4gICAgaWYgKCF0aGlzLmVycm9yTW9kZWwuaXNFcnJvcikge1xyXG4gICAgICB0aGlzLmVycm9yTW9kZWwgPSBlcnJvck1vZGVsO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Rpc2FibGVFcnJvcigpIHtcclxuICAgIHRoaXMuZXJyb3JNb2RlbCA9IHtcclxuICAgICAgaXNFcnJvcjogZmFsc2UsXHJcbiAgICAgIGVycm9yVHlwZTogRXJyb3JUeXBlRW51bS5EZWZhdWx0XHJcbiAgICB9O1xyXG4gICAgdGhpcy5fZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5zZXJ0UG9zaXRpb25UZXh0KGNvbnRlbnQ6IHN0cmluZykge1xyXG4gICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNvbnRlbnQpO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLl9yYW5nZSkge1xyXG4gICAgICAgIHRoaXMuX3JhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7XHJcbiAgICAgICAgdGhpcy5fcmFuZ2UuaW5zZXJ0Tm9kZShub2RlKTtcclxuICAgICAgICB0aGlzLl9yYW5nZSA9IHRoaXMuX3JhbmdlLmNsb25lUmFuZ2UoKTtcclxuICAgICAgICB0aGlzLl9yYW5nZS5zZWxlY3ROb2RlQ29udGVudHMobm9kZSk7XHJcbiAgICAgICAgdGhpcy5fcmFuZ2UuY29sbGFwc2UoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zdG9yZUN1cnNvclBvc2l0aW9uKCkge1xyXG4gICAgdGhpcy5fc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xyXG5cclxuICAgIGlmICh0aGlzLl9zZWxlY3Rpb24gJiYgdGhpcy5fc2VsZWN0aW9uLnJhbmdlQ291bnQgPiAwKSB7XHJcbiAgICAgIHRoaXMuX3JhbmdlID0gdGhpcy5fc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XHJcblxyXG4gICAgICB0aGlzLl9jdXJzb3JQb3NpdGlvbi5zdGFydENvbnRhaW5lciA9IHRoaXMuX3JhbmdlLnN0YXJ0Q29udGFpbmVyO1xyXG4gICAgICB0aGlzLl9jdXJzb3JQb3NpdGlvbi5lbmRDb250YWluZXIgPSB0aGlzLl9yYW5nZS5lbmRDb250YWluZXI7XHJcbiAgICAgIHRoaXMuX2N1cnNvclBvc2l0aW9uLnN0YXJ0T2Zmc2V0ID0gdGhpcy5fcmFuZ2Uuc3RhcnRPZmZzZXQ7XHJcbiAgICAgIHRoaXMuX2N1cnNvclBvc2l0aW9uLmVuZE9mZnNldCA9IHRoaXMuX3JhbmdlLmVuZE9mZnNldDtcclxuICAgIH1cclxuICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Jlc3RvcmVDdXJzb3JQb3NpdGlvbihlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50KSB7XHJcbiAgICB0aGlzLl9yYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuX2N1cnNvclBvc2l0aW9uLnN0YXJ0Q29udGFpbmVyICYmIHRoaXMuX2N1cnNvclBvc2l0aW9uLmVuZENvbnRhaW5lcikge1xyXG4gICAgICB0aGlzLl9yYW5nZS5zZXRTdGFydCh0aGlzLl9jdXJzb3JQb3NpdGlvbi5zdGFydENvbnRhaW5lciwgdGhpcy5fY3Vyc29yUG9zaXRpb24uc3RhcnRPZmZzZXQpO1xyXG4gICAgICB0aGlzLl9yYW5nZS5zZXRFbmQodGhpcy5fY3Vyc29yUG9zaXRpb24uZW5kQ29udGFpbmVyLCB0aGlzLl9jdXJzb3JQb3NpdGlvbi5lbmRPZmZzZXQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX3NlbGVjdGlvbiA9IGRvY3VtZW50LmdldFNlbGVjdGlvbigpO1xyXG5cclxuICAgIGlmICh0aGlzLl9zZWxlY3Rpb24pIHtcclxuICAgICAgdGhpcy5fc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xyXG4gICAgICB0aGlzLl9zZWxlY3Rpb24uYWRkUmFuZ2UodGhpcy5fcmFuZ2UpO1xyXG4gICAgICBlbGVtZW50LmZvY3VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wbGFjZUNhcmV0QXRFbmQoKSB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5fcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xyXG4gICAgICB0aGlzLl9zZWxlY3Rpb24gPSBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLl9zZWxlY3Rpb24pIHtcclxuICAgICAgICB0aGlzLl9yYW5nZS5zZWxlY3ROb2RlQ29udGVudHModGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgdGhpcy5fcmFuZ2UuY29sbGFwc2UoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuX3NlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcclxuICAgICAgICB0aGlzLl9zZWxlY3Rpb24uYWRkUmFuZ2UodGhpcy5fcmFuZ2UpO1xyXG4gICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgY2xpY2tPdXQoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICBpZiAoIXRoaXMuZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgY29uc3Qge3ZhbHVlLCB2aXNpYmxlVmFsdWV9ID0gdGhpcy5fdHJhbnNmb3JtVmFsdWUodGhpcy5faW5wdXRWYWx1ZSwgdHJ1ZSk7XHJcblxyXG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcclxuICAgICAgdGhpcy51cGRhdGVWaXNpYmxlVmFsdWUodmlzaWJsZVZhbHVlKTtcclxuXHJcbiAgICAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHtcclxuICB9O1xyXG4gIHByaXZhdGUgb25Ub3VjaGVkID0gKCkgPT4ge1xyXG4gIH07XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwibXJ4LWZvcm11bGEtZWRpdG9yXCJcclxuICBbY2xhc3MubXJ4LWlucHV0LWVycm9yXT1cImdldEludmFsaWRcIlxyXG4gIFtjbGFzcy4tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gIFtjbGFzcy4tcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gIFtjbGFzc109XCJnZXRDbGFzc2VzXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJtcngtZm9ybXVsYS1lZGl0b3JfX3dyYXBwZXJcIj5cclxuICAgIDxkaXZcclxuICAgICAgW2lubmVySFRNTF09XCJ2aXNpYmxlVmFsdWUudHJpbSgpIHwgc2FmZVwiXHJcbiAgICAgICNpbnB1dEVsZW1lbnRcclxuICAgICAgY2xhc3M9XCJtcngtZm9ybXVsYS1lZGl0b3JfX2JveFwiXHJcbiAgICAgIGNvbnRlbnRlZGl0YWJsZT1cInRydWVcIlxyXG4gICAgICBbYXR0ci5kYXRhLXBoXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXHJcbiAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcclxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICA+PC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC1mb3JtdWxhLWVkaXRvcl9fcG9wdXBcIiAqbmdJZj1cImlzRm9jdXNlZFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3JNb2RlbC5pc0Vycm9yICYmIGlzRm9jdXNlZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcngtZm9ybXVsYS1lZGl0b3JfX3BvcHVwLS1lcnJvclwiPlxyXG4gICAgICAgICAge3sgZ2V0RXJyb3JNZXNzYWdlIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyZWRMaXN0Lmxlbmd0aDsgZWxzZSBlbXB0eUxpc3RcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cIm1yeC1mb3JtdWxhLWVkaXRvcl9fcG9wdXAtLXJvd1wiXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZExpc3RcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImluc2VydFRhZyhpdGVtKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2VtcHR5TGlzdD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWZvcm11bGEtZWRpdG9yX19wb3B1cC0tcm93XCI+XHJcbiAgICAgICAgICDQndC10YIg0YDQtdC30YPQu9GM0YLQsNGC0L7QslxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gICAgPG1yeC1lcnJvci1tZXNzYWdlXHJcbiAgICAgICpuZ0lmPVwiZ2V0SW52YWxpZCAmJiBnZXRFcnJvck1lc3NhZ2UgJiYgIWlzRm9jdXNlZFwiXHJcbiAgICAgIFtpbnZhbGlkTWVzc2FnZV09XCJnZXRFcnJvck1lc3NhZ2VcIlxyXG4gICAgPjwvbXJ4LWVycm9yLW1lc3NhZ2U+XHJcblxyXG4gICAgPG1yeC1zYXZlLXN0YXRlIFtpZF09XCJ1dWlkXCIgW2ZpZWxkc109XCJmaWVsZHNcIj48L21yeC1zYXZlLXN0YXRlPlxyXG48L2Rpdj5cclxuIl19
320
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybXVsYS1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybXVsYS1lZGl0b3IvZm9ybXVsYS1lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vZm9ybXVsYS1lZGl0b3IvZm9ybXVsYS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQWMsWUFBWSxFQUNuQyxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQ3ZDLE1BQU0sRUFBRSxTQUFTLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4SCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFekQsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNwQixNQUFNLCtCQUErQixDQUFDOzs7Ozs7QUFnQnZDLE1BQU0sT0FBTyxzQkFBc0I7SUFxRGpDLFlBQzRCLFFBQWtC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O21IQXJVVSxzQkFBc0Isa0JBc0R2QixRQUFRO3VHQXREUCxzQkFBc0IsdWFBTnRCLENBQUM7WUFDVixPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUM7WUFDckQsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLHNKQ2pDSix5cURBaURBOzJGRGRhLHNCQUFzQjtrQkFYbEMsU0FBUzsrQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDOzRCQUNWLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHVCQUF1QixDQUFDOzRCQUNyRCxLQUFLLEVBQUUsSUFBSTt5QkFDWixDQUFDOzBEQXdEb0MsUUFBUTswQkFBM0MsTUFBTTsyQkFBQyxRQUFRO3FHQXRCRixNQUFNO3NCQUFyQixLQUFLO2dCQUdVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBRVUsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFHVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFFcUMsWUFBWTtzQkFBdEQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUV4QixPQUFPO3NCQUF2QixNQUFNO2dCQUNVLE9BQU87c0JBQXZCLE1BQU07Z0JBQ1UsV0FBVztzQkFBM0IsTUFBTTtnQkFrUFAsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsXHJcbiAgZm9yd2FyZFJlZiwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LFxyXG4gIE91dHB1dCwgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBFcnJvck1lc3NhZ2VzRW51bSwgRXJyb3JUeXBlRW51bSB9IGZyb20gJy4vZW51bXMvZXJyb3ItbWVzc2FnZXMuZW51bSc7XHJcbmltcG9ydCB7IGNyZWF0ZUJyYWNrZXQsIGNyZWF0ZU51bWJlciwgY3JlYXRlT3BlcmF0b3IsIGNyZWF0ZVRhZywgY3JlYXRlVGFnT3V0c2lkZSB9IGZyb20gJy4vaGVscGVycy9jcmVhdGUtdGFncy5oZWxwZXInO1xyXG5pbXBvcnQgeyBpc0FuIH0gZnJvbSAnLi4vLi4vLi4vaGVscGVycy9pcy1udW1iZXIuaGVscGVyJztcclxuaW1wb3J0IHsgV2hpdGVMaXN0SXRlbU1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvd2hpdGUtbGlzdC1pdGVtLm1vZGVsJztcclxuaW1wb3J0IHtcclxuICBjaGVja0JyYWNrZXRFcnJvcnMsXHJcbiAgY2hlY2tEaXZpZGVyRXJyb3JzLFxyXG4gIGNoZWNrSW50ZXJwcmV0YXRpb25FcnJvcnMsXHJcbiAgY2hlY2tTZXF1ZW5jZUVycm9yc1xyXG59IGZyb20gJy4vaGVscGVycy9jaGVjay1lcnJvcnMuaGVscGVyJztcclxuaW1wb3J0IHsgQ2hlY2tFcnJvclJlc3VsdE1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvY2hlY2stZXJyb3ItcmVzdWx0Lm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybXVsYUVkaXRvclZhbHVlVHlwZXMsIEZvcm11bGFFZGl0b3JWYWx1ZVdpdGhJZCB9IGZyb20gJy4vbW9kZWxzJztcclxuaW1wb3J0IHsgSW5wdXRUZXh0U2l6ZXNFbnVtIH0gZnJvbSAnLi4vaW5wdXQtdGV4dC9pbnB1dC10ZXh0LmVudW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtZm9ybXVsYS1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtdWxhLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZm9ybXVsYS1lZGl0b3IuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZvcm11bGFFZGl0b3JDb21wb25lbnQpLFxyXG4gICAgbXVsdGk6IHRydWVcclxuICB9XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9ybXVsYUVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuICBwcml2YXRlIF9yYW5nZTogYW55O1xyXG4gIHByaXZhdGUgX3NlbGVjdGlvbjogU2VsZWN0aW9uIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfY3Vyc29yUG9zaXRpb246IHtcclxuICAgIHN0YXJ0Q29udGFpbmVyOiBOb2RlIHwgbnVsbCxcclxuICAgIGVuZENvbnRhaW5lcjogTm9kZSB8IG51bGwsXHJcbiAgICBzdGFydE9mZnNldDogbnVtYmVyLFxyXG4gICAgZW5kT2Zmc2V0OiBudW1iZXJcclxuICB9ID0ge1xyXG4gICAgc3RhcnRDb250YWluZXI6IG51bGwsXHJcbiAgICBlbmRDb250YWluZXI6IG51bGwsXHJcbiAgICBzdGFydE9mZnNldDogMCxcclxuICAgIGVuZE9mZnNldDogMFxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgc2VhcmNoVGV4dDogc3RyaW5nID0gJyc7XHJcblxyXG4gIHByaXZhdGUgb3BlcmF0b3JMaXN0OiBzdHJpbmdbXSA9IFsnKycsICctJywgJyonLCAnLyddO1xyXG4gIHByaXZhdGUgYnJhY2tldExpc3Q6IHN0cmluZ1tdID0gWycoJywgJyknXTtcclxuXHJcbiAgcHVibGljIHZhbHVlID0gJyc7XHJcbiAgcHVibGljIHZpc2libGVWYWx1ZSA9ICcnO1xyXG5cclxuICBwdWJsaWMgaXNGb2N1c2VkID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBlcnJvck1vZGVsOiBDaGVja0Vycm9yUmVzdWx0TW9kZWwgPSB7XHJcbiAgICBpc0Vycm9yOiBmYWxzZSxcclxuICAgIGVycm9yVHlwZTogRXJyb3JUeXBlRW51bS5EZWZhdWx0XHJcbiAgfTtcclxuXHJcbiAgLy8gU0FWRSBTVEFURVxyXG4gIHB1YmxpYyB1dWlkOiBzdHJpbmcgPSB1dWlkdjQoKTtcclxuICBASW5wdXQoKSBwdWJsaWMgZmllbGRzOiBGaWVsZFtdID0gW107XHJcblxyXG4gIC8vIFRPRE8gaXRlbXNcclxuICBASW5wdXQoKSBwdWJsaWMgaXRlbXM6IFdoaXRlTGlzdEl0ZW1Nb2RlbFtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByZWFkb25seSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlciA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21DbGFzc2VzID0gJyc7XHJcblxyXG4gIC8vIFZBTElEQVRFXHJcbiAgQElucHV0KCkgcHVibGljIGludmFsaWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZE1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdID0gJyc7XHJcbiAgQElucHV0KCkgcHVibGljIGNoZWNrSW52YWxpZDogdHJ1ZSB8IGZhbHNlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0RWxlbWVudCcsIHtzdGF0aWM6IHRydWV9KSBpbnB1dEVsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxGb3JtdWxhRWRpdG9yVmFsdWVUeXBlcz4gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm11bGFFZGl0b3JWYWx1ZVR5cGVzPigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgYmx1cnJlZDogRXZlbnRFbWl0dGVyPEZvcm11bGFFZGl0b3JWYWx1ZVdpdGhJZD4gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm11bGFFZGl0b3JWYWx1ZVdpdGhJZD4oKTtcclxuICBAT3V0cHV0KCkgcHVibGljIG1vZGVsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Rm9ybXVsYUVkaXRvclZhbHVlV2l0aElkPiA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybXVsYUVkaXRvclZhbHVlV2l0aElkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxyXG4gICAgcHJpdmF0ZSBfZGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBlUmVmOiBFbGVtZW50UmVmXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldEVycm9yTWVzc2FnZSgpOiBzdHJpbmcgfCBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5pbnZhbGlkTWVzc2FnZSB8fCBFcnJvck1lc3NhZ2VzRW51bVt0aGlzLmVycm9yTW9kZWwuZXJyb3JUeXBlXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZmlsdGVyZWRMaXN0KCk6IFdoaXRlTGlzdEl0ZW1Nb2RlbFtdIHtcclxuICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0ubGFiZWwuaW5jbHVkZXModGhpcy5zZWFyY2hUZXh0KSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0SW52YWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmVycm9yTW9kZWwuaXNFcnJvciB8fCB0aGlzLmludmFsaWRcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgcmVhZG9ubHlDbGFzcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMucmVhZG9ubHkgPyAnbXJ4LWlucHV0X19yZWFkb25seScgOiAnJztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2hlY2tWYWxpZENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrSW52YWxpZCA9PT0gZmFsc2UgPyAnbXJ4LWlucHV0LWNoZWNrZWQtc3VjY2VzcycgOiB0aGlzLmNoZWNrSW52YWxpZCA9PT0gdHJ1ZSA/ICdtcngtaW5wdXQtY2hlY2tlZC1lcnJvcicgOiAnJ1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7dGhpcy5jdXN0b21DbGFzc2VzfSAke3RoaXMucmVhZG9ubHlDbGFzc30gJHt0aGlzLmNoZWNrVmFsaWRDbGFzc2VzfWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBfaW5wdXRWYWx1ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQgfHwgJyc7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKG91dHNpZGVWYWx1ZTogRm9ybXVsYUVkaXRvclZhbHVlVHlwZXMpOiB2b2lkIHtcclxuICAgIGlmIChvdXRzaWRlVmFsdWUgIT09IG51bGwpIHtcclxuICAgICAgY29uc3Qge3ZhbHVlLCB2aXNpYmxlVmFsdWV9ID0gdGhpcy5fdHJhbnNmb3JtVmFsdWUodGhpcy5fbW9kaWZpZWRWYWx1ZShvdXRzaWRlVmFsdWUpKTtcclxuXHJcbiAgICAgIHRoaXMudmFsdWUgPSBvdXRzaWRlVmFsdWU7XHJcbiAgICAgIHRoaXMudmlzaWJsZVZhbHVlID0gdmlzaWJsZVZhbHVlO1xyXG5cclxuICAgICAgdGhpcy5fZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbklucHV0KGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3Qge3ZhbHVlLCBzZWFyY2hUZXh0fSA9IHRoaXMuX3RyYW5zZm9ybVZhbHVlKHRoaXMuX21vZGlmaWVkVmFsdWUodGhpcy5faW5wdXRWYWx1ZSksIGZhbHNlKTtcclxuXHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dCA9IHNlYXJjaFRleHRcclxuXHJcbiAgICB0aGlzLl9zdG9yZUN1cnNvclBvc2l0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbkJsdXIoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICB0aGlzLl9zdG9yZUN1cnNvclBvc2l0aW9uKCk7XHJcbiAgICB0aGlzLmJsdXJyZWQuZW1pdCh7dmFsdWU6IHRoaXMudmFsdWUsIGlkOiB0aGlzLnV1aWR9KVxyXG4gIH1cclxuXHJcbiAgb25Gb2N1cyhldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcclxuICAgIHRoaXMuX2RldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgaW5zZXJ0VGFnKHdoaXRlTGlzdEl0ZW06IFdoaXRlTGlzdEl0ZW1Nb2RlbCkge1xyXG4gICAgdGhpcy5fcmVzdG9yZUN1cnNvclBvc2l0aW9uKHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgdGhpcy5faW5zZXJ0UG9zaXRpb25UZXh0KGB7JHt3aGl0ZUxpc3RJdGVtLnN5c05hbWV9fWApO1xyXG5cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICBjb25zdCB7dmFsdWUsIHZpc2libGVWYWx1ZX0gPSB0aGlzLl90cmFuc2Zvcm1WYWx1ZSh0aGlzLl9tb2RpZmllZFZhbHVlKHRoaXMuX2lucHV0VmFsdWUpLCBmYWxzZSk7XHJcblxyXG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcclxuICAgICAgdGhpcy51cGRhdGVWaXNpYmxlVmFsdWUodmlzaWJsZVZhbHVlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX3BsYWNlQ2FyZXRBdEVuZCgpO1xyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJydcclxuICB9XHJcblxyXG4gIHVwZGF0ZVZpc2libGVWYWx1ZShpbnNpZGVWYWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnZpc2libGVWYWx1ZSA9IGluc2lkZVZhbHVlO1xyXG5cclxuICAgIHRoaXMuX3N0b3JlQ3Vyc29yUG9zaXRpb24oKTtcclxuXHJcbiAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKClcclxuICB9XHJcblxyXG4gIHVwZGF0ZVZhbHVlKGluc2lkZVZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMudmFsdWUgPSBpbnNpZGVWYWx1ZTtcclxuICAgIHRoaXMuY2hhbmdlZC5lbWl0KGluc2lkZVZhbHVlKTtcclxuICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh7dmFsdWU6IGluc2lkZVZhbHVlLCBpZDogdGhpcy51dWlkfSk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKGluc2lkZVZhbHVlKTtcclxuICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9tb2RpZmllZFZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbGFiZWxzTWFwID0gT2JqZWN0LmZyb21FbnRyaWVzKHRoaXMuaXRlbXMubWFwKG9iaiA9PiBbb2JqLmxhYmVsLCBvYmouc3lzTmFtZV0pKTtcclxuICAgIGNvbnN0IHN0ciA9IHRoaXMuaXRlbXMubWFwKHMgPT4gcy5sYWJlbClcclxuICAgIGNvbnN0IHJlZyA9IG5ldyBSZWdFeHAoc3RyLmpvaW4oJ3wnKSwgJ2cnKVxyXG5cclxuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKHJlZywgbWF0Y2ggPT4gYHske2xhYmVsc01hcFttYXRjaF19fWApXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90cmFuc2Zvcm1WYWx1ZShjb250ZW50OiBzdHJpbmcsIGFuYWxpc2U6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgY29uc3QgdmFsdWVBcnJheSA9IGNvbnRlbnQuc3BsaXQoL1tcXHNcXHUwMEEwXSsvKS5maWx0ZXIoQm9vbGVhbilcclxuXHJcbiAgICBjb25zdCB2aXNpYmxlVmFsdWVBcnJheTogc3RyaW5nW10gPSBbXTtcclxuICAgIGNvbnN0IG9yaWdpbmFsVmFsdWVBcnJheTogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBsZXQgaXNJbnRlcnByZXRhdGlvbkVycm9yID0gZmFsc2U7XHJcblxyXG4gICAgbGV0IHNlYXJjaFRleHQgPSAnJ1xyXG5cclxuICAgIHZhbHVlQXJyYXkuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG4gICAgICBjb25zdCBjbGVhcmVkSXRlbSA9IGl0ZW0udHJpbSgpO1xyXG4gICAgICBjb25zdCBmaW5kSXRlbSA9IHRoaXMuaXRlbXMuZmluZCh2ID0+IGNsZWFyZWRJdGVtLmluY2x1ZGVzKHYuc3lzTmFtZSkgKTtcclxuXHJcbiAgICAgIGlmIChmaW5kSXRlbSkge1xyXG4gICAgICAgIHZpc2libGVWYWx1ZUFycmF5LnB1c2goY3JlYXRlVGFnKGZpbmRJdGVtLmxhYmVsKSk7XHJcbiAgICAgICAgb3JpZ2luYWxWYWx1ZUFycmF5LnB1c2goY3JlYXRlVGFnT3V0c2lkZShmaW5kSXRlbS5zeXNOYW1lKSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5icmFja2V0TGlzdC5maW5kKHYgPT4gdiA9PT0gY2xlYXJlZEl0ZW0pKSB7XHJcbiAgICAgICAgdmlzaWJsZVZhbHVlQXJyYXkucHVzaChjcmVhdGVCcmFja2V0KGNsZWFyZWRJdGVtKSk7XHJcbiAgICAgICAgb3JpZ2luYWxWYWx1ZUFycmF5LnB1c2goY2xlYXJlZEl0ZW0pO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMub3BlcmF0b3JMaXN0LmZpbmQodiA9PiB2ID09PSBjbGVhcmVkSXRlbSkpIHtcclxuICAgICAgICB2aXNpYmxlVmFsdWVBcnJheS5wdXNoKGNyZWF0ZU9wZXJhdG9yKGNsZWFyZWRJdGVtKSk7XHJcbiAgICAgICAgb3JpZ2luYWxWYWx1ZUFycmF5LnB1c2goY2xlYXJlZEl0ZW0pO1xyXG4gICAgICB9IGVsc2UgaWYgKGlzQW4oY2xlYXJlZEl0ZW0pKSB7XHJcbiAgICAgICAgdmlzaWJsZVZhbHVlQXJyYXkucHVzaChjcmVhdGVOdW1iZXIoY2xlYXJlZEl0ZW0pKTtcclxuICAgICAgICBvcmlnaW5hbFZhbHVlQXJyYXkucHVzaChjbGVhcmVkSXRlbSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdmlzaWJsZVZhbHVlQXJyYXkucHVzaChjbGVhcmVkSXRlbSk7XHJcbiAgICAgICAgb3JpZ2luYWxWYWx1ZUFycmF5LnB1c2goY2xlYXJlZEl0ZW0pO1xyXG4gICAgICAgIHNlYXJjaFRleHQgPSBjbGVhcmVkSXRlbVxyXG5cclxuICAgICAgICBpc0ludGVycHJldGF0aW9uRXJyb3IgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoYW5hbGlzZSkge1xyXG4gICAgICB0aGlzLl9jaGVja0Vycm9ycyhvcmlnaW5hbFZhbHVlQXJyYXksIGlzSW50ZXJwcmV0YXRpb25FcnJvcik7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc29sZS5sb2codmlzaWJsZVZhbHVlQXJyYXkpO1xyXG4gICAgY29uc29sZS5sb2cob3JpZ2luYWxWYWx1ZUFycmF5KTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB2YWx1ZTogb3JpZ2luYWxWYWx1ZUFycmF5LmpvaW4oJyAnKSxcclxuICAgICAgdmlzaWJsZVZhbHVlOiB2aXNpYmxlVmFsdWVBcnJheS5qb2luKCcgJyksXHJcbiAgICAgIHNlYXJjaFRleHQ6IHNlYXJjaFRleHRcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jaGVja0Vycm9ycyh2YWx1ZUFycmF5OiBzdHJpbmdbXSwgaXNJbnRlcnByZXRhdGlvbkVycm9yOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9kaXNhYmxlRXJyb3IoKTtcclxuXHJcbiAgICB0aGlzLl90b2dnbGVFcnJvcihjaGVja0JyYWNrZXRFcnJvcnModmFsdWVBcnJheSkpO1xyXG4gICAgdGhpcy5fdG9nZ2xlRXJyb3IoY2hlY2tEaXZpZGVyRXJyb3JzKHZhbHVlQXJyYXksIHRoaXMuaXRlbXMpKTtcclxuICAgIHRoaXMuX3RvZ2dsZUVycm9yKGNoZWNrU2VxdWVuY2VFcnJvcnModmFsdWVBcnJheSwgdGhpcy5vcGVyYXRvckxpc3QsIHRoaXMuYnJhY2tldExpc3QpKTtcclxuICAgIHRoaXMuX3RvZ2dsZUVycm9yKGNoZWNrSW50ZXJwcmV0YXRpb25FcnJvcnMoaXNJbnRlcnByZXRhdGlvbkVycm9yKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF90b2dnbGVFcnJvcihlcnJvck1vZGVsOiBDaGVja0Vycm9yUmVzdWx0TW9kZWwpIHtcclxuICAgIGlmICghdGhpcy5lcnJvck1vZGVsLmlzRXJyb3IpIHtcclxuICAgICAgdGhpcy5lcnJvck1vZGVsID0gZXJyb3JNb2RlbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kaXNhYmxlRXJyb3IoKSB7XHJcbiAgICB0aGlzLmVycm9yTW9kZWwgPSB7XHJcbiAgICAgIGlzRXJyb3I6IGZhbHNlLFxyXG4gICAgICBlcnJvclR5cGU6IEVycm9yVHlwZUVudW0uRGVmYXVsdFxyXG4gICAgfTtcclxuICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2luc2VydFBvc2l0aW9uVGV4dChjb250ZW50OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IG5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb250ZW50KTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5fcmFuZ2UpIHtcclxuICAgICAgICB0aGlzLl9yYW5nZS5kZWxldGVDb250ZW50cygpO1xyXG4gICAgICAgIHRoaXMuX3JhbmdlLmluc2VydE5vZGUobm9kZSk7XHJcbiAgICAgICAgdGhpcy5fcmFuZ2UgPSB0aGlzLl9yYW5nZS5jbG9uZVJhbmdlKCk7XHJcbiAgICAgICAgdGhpcy5fcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKG5vZGUpO1xyXG4gICAgICAgIHRoaXMuX3JhbmdlLmNvbGxhcHNlKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc3RvcmVDdXJzb3JQb3NpdGlvbigpIHtcclxuICAgIHRoaXMuX3NlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcclxuXHJcbiAgICBpZiAodGhpcy5fc2VsZWN0aW9uICYmIHRoaXMuX3NlbGVjdGlvbi5yYW5nZUNvdW50ID4gMCkge1xyXG4gICAgICB0aGlzLl9yYW5nZSA9IHRoaXMuX3NlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xyXG5cclxuICAgICAgdGhpcy5fY3Vyc29yUG9zaXRpb24uc3RhcnRDb250YWluZXIgPSB0aGlzLl9yYW5nZS5zdGFydENvbnRhaW5lcjtcclxuICAgICAgdGhpcy5fY3Vyc29yUG9zaXRpb24uZW5kQ29udGFpbmVyID0gdGhpcy5fcmFuZ2UuZW5kQ29udGFpbmVyO1xyXG4gICAgICB0aGlzLl9jdXJzb3JQb3NpdGlvbi5zdGFydE9mZnNldCA9IHRoaXMuX3JhbmdlLnN0YXJ0T2Zmc2V0O1xyXG4gICAgICB0aGlzLl9jdXJzb3JQb3NpdGlvbi5lbmRPZmZzZXQgPSB0aGlzLl9yYW5nZS5lbmRPZmZzZXQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9yZXN0b3JlQ3Vyc29yUG9zaXRpb24oZWxlbWVudDogSFRNTElucHV0RWxlbWVudCkge1xyXG4gICAgdGhpcy5fcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLl9jdXJzb3JQb3NpdGlvbi5zdGFydENvbnRhaW5lciAmJiB0aGlzLl9jdXJzb3JQb3NpdGlvbi5lbmRDb250YWluZXIpIHtcclxuICAgICAgdGhpcy5fcmFuZ2Uuc2V0U3RhcnQodGhpcy5fY3Vyc29yUG9zaXRpb24uc3RhcnRDb250YWluZXIsIHRoaXMuX2N1cnNvclBvc2l0aW9uLnN0YXJ0T2Zmc2V0KTtcclxuICAgICAgdGhpcy5fcmFuZ2Uuc2V0RW5kKHRoaXMuX2N1cnNvclBvc2l0aW9uLmVuZENvbnRhaW5lciwgdGhpcy5fY3Vyc29yUG9zaXRpb24uZW5kT2Zmc2V0KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9zZWxlY3Rpb24gPSBkb2N1bWVudC5nZXRTZWxlY3Rpb24oKTtcclxuXHJcbiAgICBpZiAodGhpcy5fc2VsZWN0aW9uKSB7XHJcbiAgICAgIC8vIHRoaXMuX3NlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcclxuICAgICAgLy8gdGhpcy5fc2VsZWN0aW9uLmFkZFJhbmdlKHRoaXMuX3JhbmdlKTtcclxuICAgICAgLy8gZWxlbWVudC5mb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcGxhY2VDYXJldEF0RW5kKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX3JhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcclxuICAgICAgdGhpcy5fc2VsZWN0aW9uID0gZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5fc2VsZWN0aW9uKSB7XHJcbiAgICAgICAgdGhpcy5fcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIHRoaXMuX3JhbmdlLmNvbGxhcHNlKGZhbHNlKTtcclxuICAgICAgICB0aGlzLl9zZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uLmFkZFJhbmdlKHRoaXMuX3JhbmdlKTtcclxuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIGNsaWNrT3V0KGV2ZW50OiBFdmVudCkge1xyXG4gICAgLy8gY29uc29sZS5kaXIoZXZlbnQpO1xyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5fbW9kaWZpZWRWYWx1ZSh0aGlzLl9pbnB1dFZhbHVlKSk7XHJcbiAgICBpZiAoIXRoaXMuZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgY29uc3Qge3ZhbHVlLCB2aXNpYmxlVmFsdWV9ID0gdGhpcy5fdHJhbnNmb3JtVmFsdWUodGhpcy5fbW9kaWZpZWRWYWx1ZSh0aGlzLl9pbnB1dFZhbHVlKSwgdHJ1ZSk7XHJcbiAgICAgIC8vXHJcbiAgICAgIC8vIHRoaXMudXBkYXRlVmFsdWUodmFsdWUpO1xyXG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVWYWx1ZSh2aXNpYmxlVmFsdWUpO1xyXG4gICAgICAvL1xyXG4gICAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIGlmICghdGhpcy5lUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgLy8gICBjb25zb2xlLmxvZyh0aGlzLl9pbnB1dFZhbHVlKTtcclxuICAgIC8vICAgY29uc3Qge3ZhbHVlLCB2aXNpYmxlVmFsdWV9ID0gdGhpcy5fdHJhbnNmb3JtVmFsdWUodGhpcy5faW5wdXRWYWx1ZSwgdHJ1ZSk7XHJcbiAgICAvL1xyXG4gICAgLy8gICB0aGlzLnVwZGF0ZVZhbHVlKHZhbHVlKTtcclxuICAgIC8vICAgdGhpcy51cGRhdGVWaXNpYmxlVmFsdWUodmlzaWJsZVZhbHVlKTtcclxuICAgIC8vXHJcbiAgICAvLyAgIHRoaXMuaXNGb2N1c2VkID0gZmFsc2U7XHJcbiAgICAvLyAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHtcclxuICB9O1xyXG4gIHByaXZhdGUgb25Ub3VjaGVkID0gKCkgPT4ge1xyXG4gIH07XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwibXJ4LWZvcm11bGEtZWRpdG9yXCJcclxuICBbY2xhc3MubXJ4LWlucHV0LWVycm9yXT1cImdldEludmFsaWRcIlxyXG4gIFtjbGFzcy4tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gIFtjbGFzcy4tcmVhZG9ubHldPVwicmVhZG9ubHlcIlxyXG4gIFtjbGFzc109XCJnZXRDbGFzc2VzXCJcclxuPlxyXG4gIDxkaXYgY2xhc3M9XCJtcngtZm9ybXVsYS1lZGl0b3JfX3dyYXBwZXJcIj5cclxuICAgIDxkaXZcclxuICAgICAgW2lubmVySFRNTF09XCJ2aXNpYmxlVmFsdWUudHJpbSgpIHwgc2FmZVwiXHJcbiAgICAgICNpbnB1dEVsZW1lbnRcclxuICAgICAgY2xhc3M9XCJtcngtZm9ybXVsYS1lZGl0b3JfX2JveFwiXHJcbiAgICAgIGNvbnRlbnRlZGl0YWJsZT1cInRydWVcIlxyXG4gICAgICBbYXR0ci5kYXRhLXBoXT1cInBsYWNlaG9sZGVyXCJcclxuICAgICAgKGlucHV0KT1cIm9uSW5wdXQoJGV2ZW50KVwiXHJcbiAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcclxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXHJcbiAgICA+PC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC1mb3JtdWxhLWVkaXRvcl9fcG9wdXBcIiAqbmdJZj1cImlzRm9jdXNlZFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3JNb2RlbC5pc0Vycm9yICYmIGlzRm9jdXNlZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcngtZm9ybXVsYS1lZGl0b3JfX3BvcHVwLS1lcnJvclwiPlxyXG4gICAgICAgICAge3sgZ2V0RXJyb3JNZXNzYWdlIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyZWRMaXN0Lmxlbmd0aDsgZWxzZSBlbXB0eUxpc3RcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cIm1yeC1mb3JtdWxhLWVkaXRvcl9fcG9wdXAtLXJvd1wiXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWx0ZXJlZExpc3RcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cImluc2VydFRhZyhpdGVtKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2VtcHR5TGlzdD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWZvcm11bGEtZWRpdG9yX19wb3B1cC0tcm93XCI+XHJcbiAgICAgICAgICDQndC10YIg0YDQtdC30YPQu9GM0YLQsNGC0L7QslxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gICAgPG1yeC1lcnJvci1tZXNzYWdlXHJcbiAgICAgICpuZ0lmPVwiZ2V0SW52YWxpZCAmJiBnZXRFcnJvck1lc3NhZ2UgJiYgIWlzRm9jdXNlZFwiXHJcbiAgICAgIFtpbnZhbGlkTWVzc2FnZV09XCJnZXRFcnJvck1lc3NhZ2VcIlxyXG4gICAgPjwvbXJ4LWVycm9yLW1lc3NhZ2U+XHJcblxyXG4gICAgPG1yeC1zYXZlLXN0YXRlIFtpZF09XCJ1dWlkXCIgW2ZpZWxkc109XCJmaWVsZHNcIj48L21yeC1zYXZlLXN0YXRlPlxyXG48L2Rpdj5cclxuIl19
@@ -189,4 +189,4 @@ export class MrxFormValidator {
189
189
  return this._isValid;
190
190
  }
191
191
  }
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXJ4LWZvcm0tdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9zZXJ2aWNlcy9tcngtZm9ybS12YWxpZGF0b3IvbXJ4LWZvcm0tdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHdEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUV2RixNQUFNLE9BQU8sZ0JBQWdCO0lBVzNCLFlBQVksT0FBOEI7UUFWbEMsWUFBTyxHQUFRLEVBQUUsQ0FBQTtRQUNqQixpQkFBWSxHQUFpQixFQUFFLENBQUE7UUFDL0IsWUFBTyxHQUFpQixFQUFFLENBQUE7UUFDMUIsYUFBUSxHQUFHLElBQUksQ0FBQTtRQUNmLFlBQU8sR0FBRyxLQUFL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QUU7WUFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQTtTQUMvRTtRQUVELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQTtJQUN0QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xyXG5pbXBvcnQgeyBJRmllbGRzLCBJRmllbGRzRXJyb3IsIElNZXNzYWdlcywgSVZhbGlkYXRpb25zLCBWYWxpZGF0aW9uc1R5cGUgfSBmcm9tICcuL21vZGVscyc7XHJcbmltcG9ydCB7IEZvcm1WYWxpZGF0b3JPcHRpb25zIH0gZnJvbSAnLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uTWV0aG9kc0VudW0sIFZhbGlkYXRpb25UeXBlc0VudW0gfSBmcm9tICcuL21vZGVscyc7XHJcbmltcG9ydCB7IHJlcXVpcmVkVmFsaWRhdGlvbiB9IGZyb20gJy4vdmFsaWRhdGlvbnMvcmVxdWlyZWQudmFsaWRhdGlvbic7XHJcbmltcG9ydCB7IGVtYWlsVmFsaWRhdGlvbiB9IGZyb20gJy4vdmFsaWRhdGlvbnMvZW1haWwudmFsaWRhdGlvbic7XHJcbmltcG9ydCB7IHBhdHRlcm5WYWxpZGF0aW9uIH0gZnJvbSAnLi92YWxpZGF0aW9ucy9wYXR0ZXJuLnZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBtYXhMZW5ndGhWYWxpZGF0aW9uIH0gZnJvbSAnLi92YWxpZGF0aW9ucy9tYXgtbGVuZ3RoLnZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBtaW5MZW5ndGhWYWxpZGF0aW9uIH0gZnJvbSAnLi92YWxpZGF0aW9ucy9taW4tbGVuZ3RoLnZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBtaW5WYWx1ZVZhbGlkYXRpb24gfSBmcm9tICcuL3ZhbGlkYXRpb25zL21pbi12YWx1ZS52YWxpZGF0aW9uJztcclxuaW1wb3J0IHsgbWF4VmFsdWVWYWxpZGF0aW9uIH0gZnJvbSAnLi92YWxpZGF0aW9ucy9tYXgtdmFsdWUudmFsaWRhdGlvbic7XHJcbmltcG9ydCB7IGNhbGxiYWNrVmFsaWRhdGlvbiB9IGZyb20gJy4vdmFsaWRhdGlvbnMvY2FsbGJhY2sudmFsaWRhdGlvbic7XHJcbmltcG9ydCB7IElOVkFMSURfTUVTU0FHRVMgfSBmcm9tICcuL2NvbnN0YW50cy9pbnZhbGlkLW1lc3NhZ2VzJztcclxuaW1wb3J0IHsgZ2V0U29ydGluZ1ZhbGlkYXRpb25zSGVscGVyIH0gZnJvbSAnLi9oZWxwZXJzL2dldC1zb3J0aW5nLXZhbGlkYXRpb25zLmhlbHBlcic7XHJcblxyXG5leHBvcnQgY2xhc3MgTXJ4Rm9ybVZhbGlkYXRvciB7XHJcbiAgcHJpdmF0ZSBfZmllbGRzOiBhbnkgPSBbXVxyXG4gIHByaXZhdGUgX3ZhbGlkYXRpb25zOiBJVmFsaWRhdGlvbnMgPSB7fVxyXG4gIHByaXZhdGUgX2Vycm9yczogSUZpZWxkc0Vycm9yID0ge31cclxuICBwcml2YXRlIF9pc1ZhbGlkID0gdHJ1ZVxyXG4gIHByaXZhdGUgX2lzSW5pdCA9IGZhbHNlXHJcbiAgcHJpdmF0ZSBfbW9kZWxDbG9uZTogSUZpZWxkcyA9IHt9XHJcblxyXG4gIHByaXZhdGUgX21ldGhvZCA9ICdzdWJtaXQnXHJcbiAgcHJpdmF0ZSBfaW52YWxpZE1lc3NhZ2VzOiBJTWVzc2FnZXMgPSBJTlZBTElEX01FU1NBR0VTXHJcblxyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM/OiBGb3JtVmFsaWRhdG9yT3B0aW9ucykge1xyXG4gICAgaWYgKG9wdGlvbnM/Lm1ldGhvZCkge1xyXG4gICAgICB0aGlzLl9tZXRob2QgPSBvcHRpb25zLm1ldGhvZFxyXG4gICAgfVxyXG5cclxuICAgIGlmIChvcHRpb25zPy5tZXNzYWdlcykge1xyXG4gICAgICB0aGlzLl9pbnZhbGlkTWVzc2FnZXMgPSB7Li4udGhpcy5faW52YWxpZE1lc3NhZ2VzLCAuLi5vcHRpb25zLm1lc3NhZ2VzfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBlcnJvcnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JzXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldCBmaWVsZHMoZmllbGRzOiBhbnkpIHtcclxuICAgIHRoaXMuX2ZpZWxkcyA9IE9iamVjdC5hc3NpZ24oe30sIGZpZWxkcylcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0TmFtZXNVcGRhdGVkUHJvcGVydGllcyhvbGRNb2RlbDogYW55LCBuZXdNb2RlbDogYW55KTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgbmFtZXNVcGRhdGVkUHJvcGVydGllcyA9IFtdXHJcblxyXG4gICAgZm9yIChsZXQga2V5IGluIG5ld01vZGVsKSB7XHJcbiAgICAgIHN3aXRjaCAodHJ1ZSkge1xyXG4gICAgICAgIGNhc2UgQXJyYXkuaXNBcnJheShuZXdNb2RlbFtrZXldKTpcclxuICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShuZXdNb2RlbFtrZXldKSAhPT0gSlNPTi5zdHJpbmdpZnkob2xkTW9kZWxba2V5XSkpIHtcclxuICAgICAgICAgICAgbmFtZXNVcGRhdGVkUHJvcGVydGllcy5wdXNoKGtleSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIGlmIChuZXdNb2RlbFtrZXldICE9PSBvbGRNb2RlbFtrZXldKSB7XHJcbiAgICAgICAgICAgIG5hbWVzVXBkYXRlZFByb3BlcnRpZXMucHVzaChrZXkpXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5hbWVzVXBkYXRlZFByb3BlcnRpZXNcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVGaWVsZChcclxuICAgIHZhbHVlOiBzdHJpbmcsXHJcbiAgICBuYW1lOiBzdHJpbmcsXHJcbiAgICB2YWxpZGF0aW9uczogVmFsaWRhdGlvbnNUeXBlLFxyXG4gICAgdmFsaWRhdGVFbXB0eVZhbHVlOiBib29sZWFuID0gZmFsc2UsXHJcbiAgICBzaWxlbnQ6IGJvb2xlYW4gPSBmYWxzZVxyXG4gICk6IHZvaWQge1xyXG4gICAgaWYgKCF2YWxpZGF0ZUVtcHR5VmFsdWUgJiYgKHZhbHVlLmxlbmd0aCA9PT0gMCkpIHtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQga2V5IGluIHZhbGlkYXRpb25zKSB7XHJcbiAgICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZXNFbnVtLlJlcXVpcmVkOlxyXG4gICAgICAgICAgY29uc3QgcmVxdWlyZWRSZXMgPSByZXF1aXJlZFZhbGlkYXRpb24oXHJcbiAgICAgICAgICAgIHZhbHVlLCB2YWxpZGF0aW9ucywga2V5LCB0aGlzLl9pbnZhbGlkTWVzc2FnZXNcclxuICAgICAgICAgIClcclxuXHJcbiAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gcmVxdWlyZWRSZXMuaXNWYWxpZFxyXG5cclxuICAgICAgICAgIGlmICghc2lsZW50ICYmICF0aGlzLl9lcnJvcnNbbmFtZV0pIHtcclxuICAgICAgICAgICAgIHRoaXMuX2Vycm9yc1tuYW1lXSA9IHJlcXVpcmVkUmVzLm1lc3NhZ2VcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGVzRW51bS5FbWFpbDpcclxuICAgICAgICAgIGNvbnN0IGVtYWlsUmVzID0gZW1haWxWYWxpZGF0aW9uKFxyXG4gICAgICAgICAgICB2YWx1ZSwgdmFsaWRhdGlvbnMsIGtleSwgdGhpcy5faW52YWxpZE1lc3NhZ2VzXHJcbiAgICAgICAgICApXHJcblxyXG4gICAgICAgICAgdGhpcy5faXNWYWxpZCA9IGVtYWlsUmVzLmlzVmFsaWRcclxuXHJcbiAgICAgICAgICBpZiAoIXNpbGVudCAmJiAhdGhpcy5fZXJyb3JzW25hbWVdKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Vycm9yc1tuYW1lXSA9IGVtYWlsUmVzLm1lc3NhZ2VcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGVzRW51bS5QYXR0ZXJuOlxyXG4gICAgICAgICAgY29uc3QgcGF0dGVyblJlcyA9IHBhdHRlcm5WYWxpZGF0aW9uKFxyXG4gICAgICAgICAgICB2YWx1ZSwgdmFsaWRhdGlvbnMsIGtleSwgdGhpcy5faW52YWxpZE1lc3NhZ2VzXHJcbiAgICAgICAgICApXHJcblxyXG4gICAgICAgICAgdGhpcy5faXNWYWxpZCA9IHBhdHRlcm5SZXMuaXNWYWxpZFxyXG5cclxuICAgICAgICAgIGlmICghc2lsZW50ICYmICF0aGlzLl9lcnJvcnNbbmFtZV0pIHtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3JzW25hbWVdID0gcGF0dGVyblJlcy5tZXNzYWdlXHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgYnJlYWtcclxuICAgICAgICBjYXNlIFZhbGlkYXRpb25UeXBlc0VudW0uTWluTGVuZ3RoOlxyXG4gICAgICAgICAgY29uc3QgbWluTGVuZ3RoUmVzID0gbWluTGVuZ3RoVmFsaWRhdGlvbihcclxuICAgICAgICAgICAgdmFsdWUsIHZhbGlkYXRpb25zLCBrZXksIHRoaXMuX2ludmFsaWRNZXNzYWdlc1xyXG4gICAgICAgICAgKVxyXG5cclxuICAgICAgICAgIHRoaXMuX2lzVmFsaWQgPSBtaW5MZW5ndGhSZXMuaXNWYWxpZFxyXG5cclxuICAgICAgICAgIGlmICghc2lsZW50ICYmICF0aGlzLl9lcnJvcnNbbmFtZV0pIHtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3JzW25hbWVdID0gbWluTGVuZ3RoUmVzLm1lc3NhZ2VcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVha1xyXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGVzRW51bS5NYXhMZW5ndGg6XHJcbiAgICAgICAgICBjb25zdCBtYXhMZW5ndGhSZXMgPSBtYXhMZW5ndGhWYWxpZGF0aW9uKFxyXG4gICAgICAgICAgICB2YWx1ZSwgdmFsaWRhdGlvbnMsIGtleSwgdGhpcy5faW52YWxpZE1lc3NhZ2VzXHJcbiAgICAgICAgICApXHJcblxyXG4gICAgICAgICAgdGhpcy5faXNWYWxpZCA9IG1heExlbmd0aFJlcy5pc1ZhbGlkXHJcblxyXG4gICAgICAgICAgaWYgKCFzaWxlbnQgJiYgIXRoaXMuX2Vycm9yc1tuYW1lXSkge1xyXG4gICAgICAgICAgICB0aGlzLl9lcnJvcnNbbmFtZV0gPSBtYXhMZW5ndGhSZXMubWVzc2FnZVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZXNFbnVtLk1pblZhbHVlOlxyXG4gICAgICAgICAgY29uc3QgbWluVmFsdWVSZXMgPSBtaW5WYWx1ZVZhbGlkYXRpb24oXHJcbiAgICAgICAgICAgIHZhbHVlLCB2YWxpZGF0aW9ucywga2V5LCB0aGlzLl9pbnZhbGlkTWVzc2FnZXNcclxuICAgICAgICAgIClcclxuXHJcbiAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gbWluVmFsdWVSZXMuaXNWYWxpZFxyXG5cclxuICAgICAgICAgIGlmICghc2lsZW50ICYmICF0aGlzLl9lcnJvcnNbbmFtZV0pIHtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3JzW25hbWVdID0gbWluVmFsdWVSZXMubWVzc2FnZVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZXNFbnVtLk1heFZhbHVlOlxyXG4gICAgICAgICAgY29uc3QgbWF4VmFsdWVSZXMgPSBtYXhWYWx1ZVZhbGlkYXRpb24oXHJcbiAgICAgICAgICAgIHZhbHVlLCB2YWxpZGF0aW9ucywga2V5LCB0aGlzLl9pbnZhbGlkTWVzc2FnZXNcclxuICAgICAgICAgIClcclxuXHJcbiAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gbWF4VmFsdWVSZXMuaXNWYWxpZFxyXG5cclxuICAgICAgICAgIGlmICghc2lsZW50ICYmICF0aGlzLl9lcnJvcnNbbmFtZV0pIHtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3JzW25hbWVdID0gbWF4VmFsdWVSZXMubWVzc2FnZVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZXNFbnVtLkNhbGxiYWNrOlxyXG4gICAgICAgICAgY29uc3QgY2FsbGJhY2tSZXMgPSBjYWxsYmFja1ZhbGlkYXRpb24oXHJcbiAgICAgICAgICAgIHZhbHVlLCB2YWxpZGF0aW9ucywga2V5LCB0aGlzLl9pbnZhbGlkTWVzc2FnZXNcclxuICAgICAgICAgIClcclxuXHJcbiAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gY2FsbGJhY2tSZXMuaXNWYWxpZFxyXG5cclxuICAgICAgICAgIGlmICghc2lsZW50ICYmICF0aGlzLl9lcnJvcnNbbmFtZV0pIHtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3JzW25hbWVdID0gY2FsbGJhY2tSZXMubWVzc2FnZVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NoZWNrRXJyb3JzKGVycm9yczogSUZpZWxkc0Vycm9yKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgaXNWYWxpZCA9IHRydWVcclxuXHJcbiAgICBmb3IgKGxldCBlcnJvciBpbiBlcnJvcnMpIHtcclxuICAgICAgaWYgKCEhZXJyb3JzW2Vycm9yXSkge1xyXG4gICAgICAgIGlzVmFsaWQgPSAhZXJyb3JzW2Vycm9yXVxyXG4gICAgICAgIGJyZWFrXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaXNWYWxpZFxyXG4gIH1cclxuXHJcbiAgcHVibGljIGluaXRGaWVsZHMoZmllbGRzOiBJRmllbGRzLCB2YWxpZGF0aW9uczogSVZhbGlkYXRpb25zKTogdm9pZCB7XHJcbiAgICB0aGlzLmZpZWxkcyA9IGNsb25lRGVlcChmaWVsZHMpXHJcbiAgICB0aGlzLl92YWxpZGF0aW9ucyA9IHZhbGlkYXRpb25zXHJcbiAgICB0aGlzLl9tb2RlbENsb25lID0gY2xvbmVEZWVwKGZpZWxkcylcclxuXHJcbiAgICBmb3IgKGxldCBrZXkgaW4gdmFsaWRhdGlvbnMpIHtcclxuICAgICAgdGhpcy5fdmFsaWRhdGlvbnNba2V5XSA9IGdldFNvcnRpbmdWYWxpZGF0aW9uc0hlbHBlcih2YWxpZGF0aW9uc1trZXldKVxyXG4gICAgICB0aGlzLmVycm9yc1trZXldID0gbnVsbFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2lzSW5pdCA9IHRydWVcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0TW9kZWxDaGFuZ2VkKGZpZWxkczogSUZpZWxkcyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2lzSW5pdCkge1xyXG4gICAgICB0aGlzLl9pc1ZhbGlkID0gdHJ1ZVxyXG4gICAgICB0aGlzLl9tb2RlbENsb25lID0gY2xvbmVEZWVwKGZpZWxkcylcclxuXHJcbiAgICAgIHRoaXMuZ2V0TmFtZXNVcGRhdGVkUHJvcGVydGllcyh0aGlzLl9maWVsZHMsIGZpZWxkcykuZm9yRWFjaCgobmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fZXJyb3JzW25hbWVdID0gbnVsbFxyXG5cclxuICAgICAgICBpZiAodGhpcy5fbWV0aG9kID09PSBWYWxpZGF0aW9uTWV0aG9kc0VudW0uSW5wdXQpIHtcclxuICAgICAgICAgIHRoaXMudmFsaWRhdGVGaWVsZChmaWVsZHNbbmFtZV0sIG5hbWUsIHRoaXMuX3ZhbGlkYXRpb25zW25hbWVdLCB0cnVlKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpZWxkcyA9IGNsb25lRGVlcChmaWVsZHMpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW5pdEZpZWxkQ2hhbmdlZChmaWVsZHM6IElGaWVsZHMsIGZpZWxkTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5faXNJbml0KSB7XHJcbiAgICAgIHRoaXMuX2lzVmFsaWQgPSB0cnVlXHJcblxyXG4gICAgICBpZiAoZmllbGRzLmhhc093blByb3BlcnR5KGZpZWxkTmFtZSkpIHtcclxuICAgICAgICB0aGlzLl9tb2RlbENsb25lW2ZpZWxkTmFtZV0gPSBmaWVsZHNbZmllbGROYW1lXVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLl9lcnJvcnNbZmllbGROYW1lXSA9IG51bGxcclxuICAgICAgdGhpcy52YWxpZGF0ZUZpZWxkKHRoaXMuX21vZGVsQ2xvbmVbZmllbGROYW1lXSwgZmllbGROYW1lLCB0aGlzLl92YWxpZGF0aW9uc1tmaWVsZE5hbWVdLCBmYWxzZSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgZm9yIChsZXQga2V5IGluIHRoaXMuX3ZhbGlkYXRpb25zKSB7XHJcbiAgICAgIHRoaXMuZXJyb3JzW2tleV0gPSBudWxsXHJcbiAgICAgIHRoaXMudmFsaWRhdGVGaWVsZCh0aGlzLl9maWVsZHNba2V5XSwga2V5LCB0aGlzLl92YWxpZGF0aW9uc1trZXldLCB0cnVlKVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLl9jaGVja0Vycm9ycyh0aGlzLmVycm9ycylcclxuICB9XHJcblxyXG4gIC8vIFRPRE8g0JLRi9GA0LXQt9Cw0YLRjCDQsiDQsdGD0LTRg9GJ0LXQvFxyXG4gIHB1YmxpYyBpbml0TW9kZWxDaGFuZ2VkRnJvbUZpZWxkKGZpZWxkOiBhbnksIGZpZWxkTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5faXNJbml0KSB7XHJcbiAgICAgIHRoaXMuX2lzVmFsaWQgPSB0cnVlXHJcbiAgICAgIHRoaXMuX21vZGVsQ2xvbmVbZmllbGROYW1lXSA9IGZpZWxkXHJcblxyXG4gICAgICB0aGlzLmdldE5hbWVzVXBkYXRlZFByb3BlcnRpZXModGhpcy5fZmllbGRzLCB0aGlzLl9tb2RlbENsb25lKS5mb3JFYWNoKChuYW1lOiBzdHJpbmcpID0+IHtcclxuICAgICAgICB0aGlzLl9lcnJvcnNbbmFtZV0gPSBudWxsXHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9tZXRob2QgPT09IFZhbGlkYXRpb25NZXRob2RzRW51bS5JbnB1dCkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0ZUZpZWxkKHRoaXMuX21vZGVsQ2xvbmVbbmFtZV0sIG5hbWUsIHRoaXMuX3ZhbGlkYXRpb25zW25hbWVdLCB0cnVlKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpZWxkcyA9IHRoaXMuX21vZGVsQ2xvbmVcclxuICB9XHJcblxyXG4gIC8vIFRPRE8g0JLRi9GA0LXQt9Cw0YLRjCDQsiDQsdGD0LTRg9GJ0LXQvFxyXG4gIHB1YmxpYyBpc0hpZGRlblZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgdGhpcy5faXNWYWxpZCA9IHRydWVcclxuXHJcbiAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5fdmFsaWRhdGlvbnMpIHtcclxuICAgICAgdGhpcy52YWxpZGF0ZUZpZWxkKHRoaXMuX2ZpZWxkc1trZXldLCBrZXksIHRoaXMuX3ZhbGlkYXRpb25zW2tleV0sIHRydWUsIHRydWUpXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2lzVmFsaWRcclxuICB9XHJcbn1cclxuIl19
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXJ4LWZvcm0tdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9zZXJ2aWNlcy9tcngtZm9ybS12YWxpZGF0b3IvbXJ4LWZvcm0tdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHdEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUV2RixNQUFNLE9BQU8sZ0JBQWdCO0lBVzNCLFlBQVksT0FBOEI7UUFWbEMsWUFBTyxHQUFRLEVBQUUsQ0FBQztRQUNsQixpQkFBWSxHQUFpQixFQUFFLENBQUM7UUFDaEMsWUFBTyxHQUFpQixFQUFFLENBQUM7UUFDM0IsYUFBUSxHQUFHLElBQUksQ0FBQztRQUNoQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGdCQUFXLEdBQVksRUFBRSxDQUFDO1FBRTFCLFlBQU8sR0FBRyxRQUFRLENBQUM7UUFDbkIscUJBQWdCLEdBQWMsZ0JBQWdCLENBQUM7UUFHckQsSUFBSSxPQUFPLEVBQUUsTUFBTSxFQUFFO1lBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztTQUMvQjtRQUVELElBQUksT0FBTyxFQUFFLFFBQVEsRUFBRTtZQUNyQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUMsQ0FBQztTQUN6RTtJQUNILENBQUM7SUFFRCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQVksTUFBTSxDQUFDLE1BQVc7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU8seUJBQXlCLENBQUMsUUFBYSxFQUFFLFFBQWE7UUFDNUQsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7UUFFbEMsS0FBSyxJQUFJLEdBQUcsSUFBSSxRQUFRLEVBQUU7WUFDeEIsUUFBUSxJQUFJLEVBQUU7Z0JBQ1osS0FBSyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDL0IsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7d0JBQ25FLHNCQUFzQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDbEM7b0JBQ0QsTUFBTTtnQkFDUjtvQkFDRSxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQ25DLHNCQUFzQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDbEM7b0JBQ0QsTUFBTTthQUNUO1NBQ0Y7UUFFRCxPQUFPLHNCQUFzQixDQUFDO0lBQ2hDLENBQUM7SUFFTyxhQUFhLENBQ25CLEtBQWEsRUFDYixJQUFZLEVBQ1osV0FBNEIsRUFDNUIscUJBQThCLEtBQUssRUFDbkMsU0FBa0IsS0FBSztRQUV2QixJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQy9DLE9BQU87U0FDUjtRQUVELEtBQUssSUFBSSxHQUFHLElBQUksV0FBVyxFQUFFO1lBQzNCLFFBQVEsR0FBRyxFQUFFO2dCQUNYLEtBQUssbUJBQW1CLENBQUMsUUFBUTtvQkFDL0IsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLENBQ3BDLEtBQUssRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FDL0MsQ0FBQztvQkFFRixJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7b0JBRXBDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7cUJBQzFDO29CQUVELE1BQU07Z0JBQ1IsS0FBSyxtQkFBbUIsQ0FBQyxLQUFLO29CQUM1QixNQUFNLFFBQVEsR0FBRyxlQUFlLENBQzlCLEtBQUssRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FDL0MsQ0FBQztvQkFFRixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7b0JBRWpDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUM7cUJBQ3ZDO29CQUVELE1BQU07Z0JBQ1IsS0FBSyxtQkFBbUIsQ0FBQyxPQUFPO29CQUM5QixNQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FDbEMsS0FBSyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUMvQyxDQUFDO29CQUVGLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztvQkFFbkMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztxQkFDekM7b0JBRUQsTUFBTTtnQkFDUixLQUFLLG1CQUFtQixDQUFDLFNBQVM7b0JBQ2hDLE1BQU0sWUFBWSxHQUFHLG1CQUFtQixDQUN0QyxLQUFLLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQy9DLENBQUM7b0JBRUYsSUFBSSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDO29CQUVyQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDO3FCQUMzQztvQkFFRCxNQUFNO2dCQUNSLEtBQUssbUJBQW1CLENBQUMsU0FBUztvQkFDaEMsTUFBTSxZQUFZLEdBQUcsbUJBQW1CLENBQ3RDLEtBQUssRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FDL0MsQ0FBQztvQkFFRixJQUFJLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUM7b0JBRXJDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUM7cUJBQzNDO29CQUVELE1BQU07Z0JBQ1IsS0FBSyxtQkFBbUIsQ0FBQyxRQUFRO29CQUMvQixNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FDcEMsS0FBSyxFQUFFLFdBQVcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUMvQyxDQUFDO29CQUVGLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQztvQkFFcEMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7d0JBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQztxQkFDMUM7b0JBRUQsTUFBTTtnQkFDUixLQUFLLG1CQUFtQixDQUFDLFFBQVE7b0JBQy9CLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUNwQyxLQUFLLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQy9DLENBQUM7b0JBRUYsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDO29CQUVwQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDO3FCQUMxQztvQkFFRCxNQUFNO2dCQUNSLEtBQUssbUJBQW1CLENBQUMsUUFBUTtvQkFDL0IsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLENBQ3BDLEtBQUssRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FDL0MsQ0FBQztvQkFFRixJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7b0JBRXBDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7cUJBQzFDO29CQUVELE1BQU07YUFDVDtTQUNGO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FBQyxNQUFvQjtRQUN2QyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFFbkIsS0FBSyxJQUFJLEtBQUssSUFBSSxNQUFNLEVBQUU7WUFDeEIsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNuQixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pCLE1BQU07YUFDUDtTQUNGO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxNQUFlLEVBQUUsV0FBeUI7UUFDMUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFckMsS0FBSyxJQUFJLEdBQUcsSUFBSSxXQUFXLEVBQUU7WUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRywyQkFBMkIsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN2RSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztTQUN6QjtRQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxNQUFlO1FBQ3JDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVyQyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRTtnQkFDNUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7Z0JBRTFCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUU7b0JBQ2hELElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUN2RTtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsTUFBZSxFQUFFLFNBQWlCO1FBQ3hELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUVyQixJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ2pEO1lBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ2pHO0lBQ0gsQ0FBQztJQUVNLE9BQU87UUFDWixLQUFLLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzFFO1FBRUQsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsMEJBQTBCO0lBQ25CLHlCQUF5QixDQUFDLEtBQVUsRUFBRSxTQUFpQjtRQUM1RCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUM7WUFFcEMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFO2dCQUN0RixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFFMUIsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLHFCQUFxQixDQUFDLEtBQUssRUFBRTtvQkFDaEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO2lCQUNqRjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVELDBCQUEwQjtJQUNuQixhQUFhO1FBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBRXJCLEtBQUssSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2hGO1FBRUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcbmltcG9ydCB7IElGaWVsZHMsIElGaWVsZHNFcnJvciwgSU1lc3NhZ2VzLCBJVmFsaWRhdGlvbnMsIFZhbGlkYXRpb25zVHlwZSB9IGZyb20gJy4vbW9kZWxzJztcclxuaW1wb3J0IHsgRm9ybVZhbGlkYXRvck9wdGlvbnMgfSBmcm9tICcuL21vZGVscyc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25NZXRob2RzRW51bSwgVmFsaWRhdGlvblR5cGVzRW51bSB9IGZyb20gJy4vbW9kZWxzJztcclxuaW1wb3J0IHsgcmVxdWlyZWRWYWxpZGF0aW9uIH0gZnJvbSAnLi92YWxpZGF0aW9ucy9yZXF1aXJlZC52YWxpZGF0aW9uJztcclxuaW1wb3J0IHsgZW1haWxWYWxpZGF0aW9uIH0gZnJvbSAnLi92YWxpZGF0aW9ucy9lbWFpbC52YWxpZGF0aW9uJztcclxuaW1wb3J0IHsgcGF0dGVyblZhbGlkYXRpb24gfSBmcm9tICcuL3ZhbGlkYXRpb25zL3BhdHRlcm4udmFsaWRhdGlvbic7XHJcbmltcG9ydCB7IG1heExlbmd0aFZhbGlkYXRpb24gfSBmcm9tICcuL3ZhbGlkYXRpb25zL21heC1sZW5ndGgudmFsaWRhdGlvbic7XHJcbmltcG9ydCB7IG1pbkxlbmd0aFZhbGlkYXRpb24gfSBmcm9tICcuL3ZhbGlkYXRpb25zL21pbi1sZW5ndGgudmFsaWRhdGlvbic7XHJcbmltcG9ydCB7IG1pblZhbHVlVmFsaWRhdGlvbiB9IGZyb20gJy4vdmFsaWRhdGlvbnMvbWluLXZhbHVlLnZhbGlkYXRpb24nO1xyXG5pbXBvcnQgeyBtYXhWYWx1ZVZhbGlkYXRpb24gfSBmcm9tICcuL3ZhbGlkYXRpb25zL21heC12YWx1ZS52YWxpZGF0aW9uJztcclxuaW1wb3J0IHsgY2FsbGJhY2tWYWxpZGF0aW9uIH0gZnJvbSAnLi92YWxpZGF0aW9ucy9jYWxsYmFjay52YWxpZGF0aW9uJztcclxuaW1wb3J0IHsgSU5WQUxJRF9NRVNTQUdFUyB9IGZyb20gJy4vY29uc3RhbnRzL2ludmFsaWQtbWVzc2FnZXMnO1xyXG5pbXBvcnQgeyBnZXRTb3J0aW5nVmFsaWRhdGlvbnNIZWxwZXIgfSBmcm9tICcuL2hlbHBlcnMvZ2V0LXNvcnRpbmctdmFsaWRhdGlvbnMuaGVscGVyJztcclxuXHJcbmV4cG9ydCBjbGFzcyBNcnhGb3JtVmFsaWRhdG9yIHtcclxuICBwcml2YXRlIF9maWVsZHM6IGFueSA9IFtdO1xyXG4gIHByaXZhdGUgX3ZhbGlkYXRpb25zOiBJVmFsaWRhdGlvbnMgPSB7fTtcclxuICBwcml2YXRlIF9lcnJvcnM6IElGaWVsZHNFcnJvciA9IHt9O1xyXG4gIHByaXZhdGUgX2lzVmFsaWQgPSB0cnVlO1xyXG4gIHByaXZhdGUgX2lzSW5pdCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX21vZGVsQ2xvbmU6IElGaWVsZHMgPSB7fTtcclxuXHJcbiAgcHJpdmF0ZSBfbWV0aG9kID0gJ3N1Ym1pdCc7XHJcbiAgcHJpdmF0ZSBfaW52YWxpZE1lc3NhZ2VzOiBJTWVzc2FnZXMgPSBJTlZBTElEX01FU1NBR0VTO1xyXG5cclxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzogRm9ybVZhbGlkYXRvck9wdGlvbnMpIHtcclxuICAgIGlmIChvcHRpb25zPy5tZXRob2QpIHtcclxuICAgICAgdGhpcy5fbWV0aG9kID0gb3B0aW9ucy5tZXRob2Q7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9wdGlvbnM/Lm1lc3NhZ2VzKSB7XHJcbiAgICAgIHRoaXMuX2ludmFsaWRNZXNzYWdlcyA9IHsuLi50aGlzLl9pbnZhbGlkTWVzc2FnZXMsIC4uLm9wdGlvbnMubWVzc2FnZXN9O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBlcnJvcnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXQgZmllbGRzKGZpZWxkczogYW55KSB7XHJcbiAgICB0aGlzLl9maWVsZHMgPSBPYmplY3QuYXNzaWduKHt9LCBmaWVsZHMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXROYW1lc1VwZGF0ZWRQcm9wZXJ0aWVzKG9sZE1vZGVsOiBhbnksIG5ld01vZGVsOiBhbnkpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBuYW1lc1VwZGF0ZWRQcm9wZXJ0aWVzID0gW107XHJcblxyXG4gICAgZm9yIChsZXQga2V5IGluIG5ld01vZGVsKSB7XHJcbiAgICAgIHN3aXRjaCAodHJ1ZSkge1xyXG4gICAgICAgIGNhc2UgQXJyYXkuaXNBcnJheShuZXdNb2RlbFtrZXldKTpcclxuICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShuZXdNb2RlbFtrZXldKSAhPT0gSlNPTi5zdHJpbmdpZnkob2xkTW9kZWxba2V5XSkpIHtcclxuICAgICAgICAgICAgbmFtZXNVcGRhdGVkUHJvcGVydGllcy5wdXNoKGtleSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgaWYgKG5ld01vZGVsW2tleV0gIT09IG9sZE1vZGVsW2tleV0pIHtcclxuICAgICAgICAgICAgbmFtZXNVcGRhdGVkUHJvcGVydGllcy5wdXNoKGtleSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBuYW1lc1VwZGF0ZWRQcm9wZXJ0aWVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZUZpZWxkKFxyXG4gICAgdmFsdWU6IHN0cmluZyxcclxuICAgIG5hbWU6IHN0cmluZyxcclxuICAgIHZhbGlkYXRpb25zOiBWYWxpZGF0aW9uc1R5cGUsXHJcbiAgICB2YWxpZGF0ZUVtcHR5VmFsdWU6IGJvb2xlYW4gPSBmYWxzZSxcclxuICAgIHNpbGVudDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgKTogdm9pZCB7XHJcbiAgICBpZiAoIXZhbGlkYXRlRW1wdHlWYWx1ZSAmJiAodmFsdWUubGVuZ3RoID09PSAwKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQga2V5IGluIHZhbGlkYXRpb25zKSB7XHJcbiAgICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZXNFbnVtLlJlcXVpcmVkOlxyXG4gICAgICAgICAgY29uc3QgcmVxdWlyZWRSZXMgPSByZXF1aXJlZFZhbGlkYXRpb24oXHJcbiAgICAgICAgICAgIHZhbHVlLCB2YWxpZGF0aW9ucywga2V5LCB0aGlzLl9pbnZhbGlkTWVzc2FnZXNcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgdGhpcy5faXNWYWxpZCA9IHJlcXVpcmVkUmVzLmlzVmFsaWQ7XHJcblxyXG4gICAgICAgICAgaWYgKCFzaWxlbnQgJiYgIXRoaXMuX2Vycm9yc1tuYW1lXSkge1xyXG4gICAgICAgICAgICB0aGlzLl9lcnJvcnNbbmFtZV0gPSByZXF1aXJlZFJlcy5tZXNzYWdlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGVzRW51bS5FbWFpbDpcclxuICAgICAgICAgIGNvbnN0IGVtYWlsUmVzID0gZW1haWxWYWxpZGF0aW9uKFxyXG4gICAgICAgICAgICB2YWx1ZSwgdmFsaWRhdGlvbnMsIGtleSwgdGhpcy5faW52YWxpZE1lc3NhZ2VzXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIHRoaXMuX2lzVmFsaWQgPSBlbWFpbFJlcy5pc1ZhbGlkO1xyXG5cclxuICAgICAgICAgIGlmICghc2lsZW50ICYmICF0aGlzLl9lcnJvcnNbbmFtZV0pIHtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3JzW25hbWVdID0gZW1haWxSZXMubWVzc2FnZTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFZhbGlkYXRpb25UeXBlc0VudW0uUGF0dGVybjpcclxuICAgICAgICAgIGNvbnN0IHBhdHRlcm5SZXMgPSBwYXR0ZXJuVmFsaWRhdGlvbihcclxuICAgICAgICAgICAgdmFsdWUsIHZhbGlkYXRpb25zLCBrZXksIHRoaXMuX2ludmFsaWRNZXNzYWdlc1xyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gcGF0dGVyblJlcy5pc1ZhbGlkO1xyXG5cclxuICAgICAgICAgIGlmICghc2lsZW50ICYmICF0aGlzLl9lcnJvcnNbbmFtZV0pIHtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3JzW25hbWVdID0gcGF0dGVyblJlcy5tZXNzYWdlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGVzRW51bS5NaW5MZW5ndGg6XHJcbiAgICAgICAgICBjb25zdCBtaW5MZW5ndGhSZXMgPSBtaW5MZW5ndGhWYWxpZGF0aW9uKFxyXG4gICAgICAgICAgICB2YWx1ZSwgdmFsaWRhdGlvbnMsIGtleSwgdGhpcy5faW52YWxpZE1lc3NhZ2VzXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIHRoaXMuX2lzVmFsaWQgPSBtaW5MZW5ndGhSZXMuaXNWYWxpZDtcclxuXHJcbiAgICAgICAgICBpZiAoIXNpbGVudCAmJiAhdGhpcy5fZXJyb3JzW25hbWVdKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Vycm9yc1tuYW1lXSA9IG1pbkxlbmd0aFJlcy5tZXNzYWdlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGVzRW51bS5NYXhMZW5ndGg6XHJcbiAgICAgICAgICBjb25zdCBtYXhMZW5ndGhSZXMgPSBtYXhMZW5ndGhWYWxpZGF0aW9uKFxyXG4gICAgICAgICAgICB2YWx1ZSwgdmFsaWRhdGlvbnMsIGtleSwgdGhpcy5faW52YWxpZE1lc3NhZ2VzXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIHRoaXMuX2lzVmFsaWQgPSBtYXhMZW5ndGhSZXMuaXNWYWxpZDtcclxuXHJcbiAgICAgICAgICBpZiAoIXNpbGVudCAmJiAhdGhpcy5fZXJyb3JzW25hbWVdKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Vycm9yc1tuYW1lXSA9IG1heExlbmd0aFJlcy5tZXNzYWdlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblR5cGVzRW51bS5NaW5WYWx1ZTpcclxuICAgICAgICAgIGNvbnN0IG1pblZhbHVlUmVzID0gbWluVmFsdWVWYWxpZGF0aW9uKFxyXG4gICAgICAgICAgICB2YWx1ZSwgdmFsaWRhdGlvbnMsIGtleSwgdGhpcy5faW52YWxpZE1lc3NhZ2VzXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIHRoaXMuX2lzVmFsaWQgPSBtaW5WYWx1ZVJlcy5pc1ZhbGlkO1xyXG5cclxuICAgICAgICAgIGlmICghc2lsZW50ICYmICF0aGlzLl9lcnJvcnNbbmFtZV0pIHtcclxuICAgICAgICAgICAgdGhpcy5fZXJyb3JzW25hbWVdID0gbWluVmFsdWVSZXMubWVzc2FnZTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFZhbGlkYXRpb25UeXBlc0VudW0uTWF4VmFsdWU6XHJcbiAgICAgICAgICBjb25zdCBtYXhWYWx1ZVJlcyA9IG1heFZhbHVlVmFsaWRhdGlvbihcclxuICAgICAgICAgICAgdmFsdWUsIHZhbGlkYXRpb25zLCBrZXksIHRoaXMuX2ludmFsaWRNZXNzYWdlc1xyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gbWF4VmFsdWVSZXMuaXNWYWxpZDtcclxuXHJcbiAgICAgICAgICBpZiAoIXNpbGVudCAmJiAhdGhpcy5fZXJyb3JzW25hbWVdKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Vycm9yc1tuYW1lXSA9IG1heFZhbHVlUmVzLm1lc3NhZ2U7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZXNFbnVtLkNhbGxiYWNrOlxyXG4gICAgICAgICAgY29uc3QgY2FsbGJhY2tSZXMgPSBjYWxsYmFja1ZhbGlkYXRpb24oXHJcbiAgICAgICAgICAgIHZhbHVlLCB2YWxpZGF0aW9ucywga2V5LCB0aGlzLl9pbnZhbGlkTWVzc2FnZXNcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgdGhpcy5faXNWYWxpZCA9IGNhbGxiYWNrUmVzLmlzVmFsaWQ7XHJcblxyXG4gICAgICAgICAgaWYgKCFzaWxlbnQgJiYgIXRoaXMuX2Vycm9yc1tuYW1lXSkge1xyXG4gICAgICAgICAgICB0aGlzLl9lcnJvcnNbbmFtZV0gPSBjYWxsYmFja1Jlcy5tZXNzYWdlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jaGVja0Vycm9ycyhlcnJvcnM6IElGaWVsZHNFcnJvcik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xyXG5cclxuICAgIGZvciAobGV0IGVycm9yIGluIGVycm9ycykge1xyXG4gICAgICBpZiAoISFlcnJvcnNbZXJyb3JdKSB7XHJcbiAgICAgICAgaXNWYWxpZCA9ICFlcnJvcnNbZXJyb3JdO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGlzVmFsaWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW5pdEZpZWxkcyhmaWVsZHM6IElGaWVsZHMsIHZhbGlkYXRpb25zOiBJVmFsaWRhdGlvbnMpOiB2b2lkIHtcclxuICAgIHRoaXMuZmllbGRzID0gY2xvbmVEZWVwKGZpZWxkcyk7XHJcbiAgICB0aGlzLl92YWxpZGF0aW9ucyA9IHZhbGlkYXRpb25zO1xyXG4gICAgdGhpcy5fbW9kZWxDbG9uZSA9IGNsb25lRGVlcChmaWVsZHMpO1xyXG5cclxuICAgIGZvciAobGV0IGtleSBpbiB2YWxpZGF0aW9ucykge1xyXG4gICAgICB0aGlzLl92YWxpZGF0aW9uc1trZXldID0gZ2V0U29ydGluZ1ZhbGlkYXRpb25zSGVscGVyKHZhbGlkYXRpb25zW2tleV0pO1xyXG4gICAgICB0aGlzLmVycm9yc1trZXldID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLl9pc0luaXQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGluaXRNb2RlbENoYW5nZWQoZmllbGRzOiBJRmllbGRzKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5faXNJbml0KSB7XHJcbiAgICAgIHRoaXMuX2lzVmFsaWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLl9tb2RlbENsb25lID0gY2xvbmVEZWVwKGZpZWxkcyk7XHJcblxyXG4gICAgICB0aGlzLmdldE5hbWVzVXBkYXRlZFByb3BlcnRpZXModGhpcy5fZmllbGRzLCBmaWVsZHMpLmZvckVhY2goKG5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIHRoaXMuX2Vycm9yc1tuYW1lXSA9IG51bGw7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9tZXRob2QgPT09IFZhbGlkYXRpb25NZXRob2RzRW51bS5JbnB1dCkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0ZUZpZWxkKGZpZWxkc1tuYW1lXSwgbmFtZSwgdGhpcy5fdmFsaWRhdGlvbnNbbmFtZV0sIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWVsZHMgPSBjbG9uZURlZXAoZmllbGRzKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0RmllbGRDaGFuZ2VkKGZpZWxkczogSUZpZWxkcywgZmllbGROYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9pc0luaXQpIHtcclxuICAgICAgdGhpcy5faXNWYWxpZCA9IHRydWU7XHJcblxyXG4gICAgICBpZiAoZmllbGRzLmhhc093blByb3BlcnR5KGZpZWxkTmFtZSkpIHtcclxuICAgICAgICB0aGlzLl9tb2RlbENsb25lW2ZpZWxkTmFtZV0gPSBmaWVsZHNbZmllbGROYW1lXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5fZXJyb3JzW2ZpZWxkTmFtZV0gPSBudWxsO1xyXG4gICAgICB0aGlzLnZhbGlkYXRlRmllbGQodGhpcy5fbW9kZWxDbG9uZVtmaWVsZE5hbWVdLCBmaWVsZE5hbWUsIHRoaXMuX3ZhbGlkYXRpb25zW2ZpZWxkTmFtZV0sIGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgZm9yIChsZXQga2V5IGluIHRoaXMuX3ZhbGlkYXRpb25zKSB7XHJcbiAgICAgIHRoaXMuZXJyb3JzW2tleV0gPSBudWxsO1xyXG4gICAgICB0aGlzLnZhbGlkYXRlRmllbGQodGhpcy5fZmllbGRzW2tleV0sIGtleSwgdGhpcy5fdmFsaWRhdGlvbnNba2V5XSwgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2NoZWNrRXJyb3JzKHRoaXMuZXJyb3JzKTtcclxuICB9XHJcblxyXG4gIC8vIFRPRE8g0JLRi9GA0LXQt9Cw0YLRjCDQsiDQsdGD0LTRg9GJ0LXQvFxyXG4gIHB1YmxpYyBpbml0TW9kZWxDaGFuZ2VkRnJvbUZpZWxkKGZpZWxkOiBhbnksIGZpZWxkTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5faXNJbml0KSB7XHJcbiAgICAgIHRoaXMuX2lzVmFsaWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLl9tb2RlbENsb25lW2ZpZWxkTmFtZV0gPSBmaWVsZDtcclxuXHJcbiAgICAgIHRoaXMuZ2V0TmFtZXNVcGRhdGVkUHJvcGVydGllcyh0aGlzLl9maWVsZHMsIHRoaXMuX21vZGVsQ2xvbmUpLmZvckVhY2goKG5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIHRoaXMuX2Vycm9yc1tuYW1lXSA9IG51bGw7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9tZXRob2QgPT09IFZhbGlkYXRpb25NZXRob2RzRW51bS5JbnB1dCkge1xyXG4gICAgICAgICAgdGhpcy52YWxpZGF0ZUZpZWxkKHRoaXMuX21vZGVsQ2xvbmVbbmFtZV0sIG5hbWUsIHRoaXMuX3ZhbGlkYXRpb25zW25hbWVdLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZmllbGRzID0gdGhpcy5fbW9kZWxDbG9uZTtcclxuICB9XHJcblxyXG4gIC8vIFRPRE8g0JLRi9GA0LXQt9Cw0YLRjCDQsiDQsdGD0LTRg9GJ0LXQvFxyXG4gIHB1YmxpYyBpc0hpZGRlblZhbGlkKCk6IGJvb2xlYW4ge1xyXG4gICAgdGhpcy5faXNWYWxpZCA9IHRydWU7XHJcblxyXG4gICAgZm9yIChsZXQga2V5IGluIHRoaXMuX3ZhbGlkYXRpb25zKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGVGaWVsZCh0aGlzLl9maWVsZHNba2V5XSwga2V5LCB0aGlzLl92YWxpZGF0aW9uc1trZXldLCB0cnVlLCB0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5faXNWYWxpZDtcclxuICB9XHJcbn1cclxuIl19
@@ -1,10 +1,10 @@
1
1
  import { getErrorMessageHelper } from '../helpers/get-error-message.helper';
2
2
  export const maxValueValidation = (value, validations, key, invalidMessages) => {
3
3
  const result = { isValid: true, message: null };
4
- if (parseInt(value) < Number(validations[key])) {
4
+ if (parseInt(value) > Number(validations[key])) {
5
5
  result.message = getErrorMessageHelper(key, invalidMessages, validations.messages, Number(validations[key]));
6
6
  result.isValid = false;
7
7
  }
8
8
  return result;
9
9
  };
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4LXZhbHVlLnZhbGlkYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL3NlcnZpY2VzL21yeC1mb3JtLXZhbGlkYXRvci92YWxpZGF0aW9ucy9tYXgtdmFsdWUudmFsaWRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUNoQyxLQUFhLEVBQ2IsV0FBNEIsRUFDNUIsR0FBd0IsRUFDeEIsZUFBMEIsRUFDb0IsRUFBRTtJQUVoRCxNQUFNLE1BQU0sR0FBaUQsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUU1RixJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7UUFDOUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsZUFBZSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDNUcsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7S0FDeEI7SUFFRCxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElNZXNzYWdlcywgVmFsaWRhdGlvbnNUeXBlIH0gZnJvbSAnLi4vbW9kZWxzL3ZhbGlkYXRpb25zLW9wdGlvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uVHlwZXNFbnVtIH0gZnJvbSAnLi4vbW9kZWxzL3ZhbGlkYXRpb25zLXR5cGVzLm1vZGVsJztcclxuaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlSGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9nZXQtZXJyb3ItbWVzc2FnZS5oZWxwZXInO1xyXG5cclxuZXhwb3J0IGNvbnN0IG1heFZhbHVlVmFsaWRhdGlvbiA9IChcclxuICB2YWx1ZTogc3RyaW5nLFxyXG4gIHZhbGlkYXRpb25zOiBWYWxpZGF0aW9uc1R5cGUsXHJcbiAga2V5OiBWYWxpZGF0aW9uVHlwZXNFbnVtLFxyXG4gIGludmFsaWRNZXNzYWdlczogSU1lc3NhZ2VzXHJcbik6IHsgaXNWYWxpZDogYm9vbGVhbiwgbWVzc2FnZTogc3RyaW5nIHwgbnVsbCB9ID0+IHtcclxuXHJcbiAgY29uc3QgcmVzdWx0OiB7IGlzVmFsaWQ6IGJvb2xlYW4sIG1lc3NhZ2U6IHN0cmluZyB8IG51bGwgfSA9IHtpc1ZhbGlkOiB0cnVlLCBtZXNzYWdlOiBudWxsfTtcclxuXHJcbiAgaWYgKHBhcnNlSW50KHZhbHVlKSA8IE51bWJlcih2YWxpZGF0aW9uc1trZXldKSkge1xyXG4gICAgcmVzdWx0Lm1lc3NhZ2UgPSBnZXRFcnJvck1lc3NhZ2VIZWxwZXIoa2V5LCBpbnZhbGlkTWVzc2FnZXMsIHZhbGlkYXRpb25zLm1lc3NhZ2VzLCBOdW1iZXIodmFsaWRhdGlvbnNba2V5XSkpXHJcbiAgICByZXN1bHQuaXNWYWxpZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHJlc3VsdFxyXG59O1xyXG4iXX0=
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4LXZhbHVlLnZhbGlkYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL3NlcnZpY2VzL21yeC1mb3JtLXZhbGlkYXRvci92YWxpZGF0aW9ucy9tYXgtdmFsdWUudmFsaWRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUNoQyxLQUFhLEVBQ2IsV0FBNEIsRUFDNUIsR0FBd0IsRUFDeEIsZUFBMEIsRUFDb0IsRUFBRTtJQUVoRCxNQUFNLE1BQU0sR0FBaUQsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUU1RixJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7UUFDOUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsZUFBZSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDNUcsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7S0FDeEI7SUFFRCxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElNZXNzYWdlcywgVmFsaWRhdGlvbnNUeXBlLCBWYWxpZGF0aW9uVHlwZXNFbnVtIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlSGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9nZXQtZXJyb3ItbWVzc2FnZS5oZWxwZXInO1xyXG5cclxuZXhwb3J0IGNvbnN0IG1heFZhbHVlVmFsaWRhdGlvbiA9IChcclxuICB2YWx1ZTogc3RyaW5nLFxyXG4gIHZhbGlkYXRpb25zOiBWYWxpZGF0aW9uc1R5cGUsXHJcbiAga2V5OiBWYWxpZGF0aW9uVHlwZXNFbnVtLFxyXG4gIGludmFsaWRNZXNzYWdlczogSU1lc3NhZ2VzXHJcbik6IHsgaXNWYWxpZDogYm9vbGVhbiwgbWVzc2FnZTogc3RyaW5nIHwgbnVsbCB9ID0+IHtcclxuXHJcbiAgY29uc3QgcmVzdWx0OiB7IGlzVmFsaWQ6IGJvb2xlYW4sIG1lc3NhZ2U6IHN0cmluZyB8IG51bGwgfSA9IHtpc1ZhbGlkOiB0cnVlLCBtZXNzYWdlOiBudWxsfTtcclxuXHJcbiAgaWYgKHBhcnNlSW50KHZhbHVlKSA+IE51bWJlcih2YWxpZGF0aW9uc1trZXldKSkge1xyXG4gICAgcmVzdWx0Lm1lc3NhZ2UgPSBnZXRFcnJvck1lc3NhZ2VIZWxwZXIoa2V5LCBpbnZhbGlkTWVzc2FnZXMsIHZhbGlkYXRpb25zLm1lc3NhZ2VzLCBOdW1iZXIodmFsaWRhdGlvbnNba2V5XSkpXHJcbiAgICByZXN1bHQuaXNWYWxpZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHJlc3VsdFxyXG59O1xyXG4iXX0=
@@ -1,10 +1,10 @@
1
1
  import { getErrorMessageHelper } from '../helpers/get-error-message.helper';
2
2
  export const minValueValidation = (value, validations, key, invalidMessages) => {
3
3
  const result = { isValid: true, message: null };
4
- if (parseInt(value) > Number(validations[key])) {
4
+ if (parseInt(value) < Number(validations[key])) {
5
5
  result.message = getErrorMessageHelper(key, invalidMessages, validations.messages, Number(validations[key]));
6
6
  result.isValid = false;
7
7
  }
8
8
  return result;
9
9
  };
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluLXZhbHVlLnZhbGlkYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL3NlcnZpY2VzL21yeC1mb3JtLXZhbGlkYXRvci92YWxpZGF0aW9ucy9taW4tdmFsdWUudmFsaWRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUNoQyxLQUFhLEVBQ2IsV0FBNEIsRUFDNUIsR0FBd0IsRUFDeEIsZUFBMEIsRUFDb0IsRUFBRTtJQUVoRCxNQUFNLE1BQU0sR0FBaUQsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUU1RixJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7UUFDOUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsZUFBZSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDNUcsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7S0FDeEI7SUFFRCxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElNZXNzYWdlcywgVmFsaWRhdGlvbnNUeXBlIH0gZnJvbSAnLi4vbW9kZWxzL3ZhbGlkYXRpb25zLW9wdGlvbnMubW9kZWwnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uVHlwZXNFbnVtIH0gZnJvbSAnLi4vbW9kZWxzL3ZhbGlkYXRpb25zLXR5cGVzLm1vZGVsJztcclxuaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlSGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9nZXQtZXJyb3ItbWVzc2FnZS5oZWxwZXInO1xyXG5cclxuZXhwb3J0IGNvbnN0IG1pblZhbHVlVmFsaWRhdGlvbiA9IChcclxuICB2YWx1ZTogc3RyaW5nLFxyXG4gIHZhbGlkYXRpb25zOiBWYWxpZGF0aW9uc1R5cGUsXHJcbiAga2V5OiBWYWxpZGF0aW9uVHlwZXNFbnVtLFxyXG4gIGludmFsaWRNZXNzYWdlczogSU1lc3NhZ2VzXHJcbik6IHsgaXNWYWxpZDogYm9vbGVhbiwgbWVzc2FnZTogc3RyaW5nIHwgbnVsbCB9ID0+IHtcclxuXHJcbiAgY29uc3QgcmVzdWx0OiB7IGlzVmFsaWQ6IGJvb2xlYW4sIG1lc3NhZ2U6IHN0cmluZyB8IG51bGwgfSA9IHtpc1ZhbGlkOiB0cnVlLCBtZXNzYWdlOiBudWxsfTtcclxuXHJcbiAgaWYgKHBhcnNlSW50KHZhbHVlKSA+IE51bWJlcih2YWxpZGF0aW9uc1trZXldKSkge1xyXG4gICAgcmVzdWx0Lm1lc3NhZ2UgPSBnZXRFcnJvck1lc3NhZ2VIZWxwZXIoa2V5LCBpbnZhbGlkTWVzc2FnZXMsIHZhbGlkYXRpb25zLm1lc3NhZ2VzLCBOdW1iZXIodmFsaWRhdGlvbnNba2V5XSkpXHJcbiAgICByZXN1bHQuaXNWYWxpZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHJlc3VsdFxyXG59O1xyXG4iXX0=
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluLXZhbHVlLnZhbGlkYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0YS11aS9zcmMvbGliL3NlcnZpY2VzL21yeC1mb3JtLXZhbGlkYXRvci92YWxpZGF0aW9ucy9taW4tdmFsdWUudmFsaWRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUNoQyxLQUFhLEVBQ2IsV0FBNEIsRUFDNUIsR0FBd0IsRUFDeEIsZUFBMEIsRUFDb0IsRUFBRTtJQUVoRCxNQUFNLE1BQU0sR0FBaUQsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUU1RixJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7UUFDOUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsZUFBZSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDNUcsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7S0FDeEI7SUFFRCxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElNZXNzYWdlcywgVmFsaWRhdGlvbnNUeXBlLCBWYWxpZGF0aW9uVHlwZXNFbnVtIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgZ2V0RXJyb3JNZXNzYWdlSGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9nZXQtZXJyb3ItbWVzc2FnZS5oZWxwZXInO1xyXG5cclxuZXhwb3J0IGNvbnN0IG1pblZhbHVlVmFsaWRhdGlvbiA9IChcclxuICB2YWx1ZTogc3RyaW5nLFxyXG4gIHZhbGlkYXRpb25zOiBWYWxpZGF0aW9uc1R5cGUsXHJcbiAga2V5OiBWYWxpZGF0aW9uVHlwZXNFbnVtLFxyXG4gIGludmFsaWRNZXNzYWdlczogSU1lc3NhZ2VzXHJcbik6IHsgaXNWYWxpZDogYm9vbGVhbiwgbWVzc2FnZTogc3RyaW5nIHwgbnVsbCB9ID0+IHtcclxuXHJcbiAgY29uc3QgcmVzdWx0OiB7IGlzVmFsaWQ6IGJvb2xlYW4sIG1lc3NhZ2U6IHN0cmluZyB8IG51bGwgfSA9IHtpc1ZhbGlkOiB0cnVlLCBtZXNzYWdlOiBudWxsfTtcclxuXHJcbiAgaWYgKHBhcnNlSW50KHZhbHVlKSA8IE51bWJlcih2YWxpZGF0aW9uc1trZXldKSkge1xyXG4gICAgcmVzdWx0Lm1lc3NhZ2UgPSBnZXRFcnJvck1lc3NhZ2VIZWxwZXIoa2V5LCBpbnZhbGlkTWVzc2FnZXMsIHZhbGlkYXRpb25zLm1lc3NhZ2VzLCBOdW1iZXIodmFsaWRhdGlvbnNba2V5XSkpXHJcbiAgICByZXN1bHQuaXNWYWxpZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHJlc3VsdFxyXG59O1xyXG4iXX0=
@@ -1,7 +1,10 @@
1
1
  import { getErrorMessageHelper } from '../helpers/get-error-message.helper';
2
2
  export const requiredValidation = (value, validations, key, invalidMessages) => {
3
3
  const result = { isValid: true, message: null };
4
- if (Array.isArray(value) && validations.type !== 'single') {
4
+ console.log(validations);
5
+ console.log(key);
6
+ console.log();
7
+ if (Array.isArray(value) && validations.type !== 'single' && validations[key]) {
5
8
  value.forEach((field, idx) => {
6
9
  if ((field === '' || field === null || field === undefined)) {
7
10
  result.message = getErrorMessageHelper(key, invalidMessages, validations.messages);
@@ -9,14 +12,14 @@ export const requiredValidation = (value, validations, key, invalidMessages) =>
9
12
  }
10
13
  });
11
14
  }
12
- else if (Array.isArray(value) && validations.type === 'single' && value.length === 0) {
15
+ else if (Array.isArray(value) && validations.type === 'single' && value.length === 0 && validations[key]) {
13
16
  result.message = getErrorMessageHelper(key, invalidMessages, validations.messages);
14
17
  result.isValid = false;
15
18
  }
16
- else if (String(value) === '' || String(value) === 'false' || value === null || value === undefined || String(value) === '<p><br></p>') {
19
+ else if ((String(value) === '' || String(value) === 'false' || value === null || value === undefined || String(value) === '<p><br></p>') && validations[key]) {
17
20
  result.message = getErrorMessageHelper(key, invalidMessages, validations.messages);
18
21
  result.isValid = false;
19
22
  }
20
23
  return result;
21
24
  };
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQudmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvc2VydmljZXMvbXJ4LWZvcm0tdmFsaWRhdG9yL3ZhbGlkYXRpb25zL3JlcXVpcmVkLnZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFNUUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FDaEMsS0FBd0IsRUFDeEIsV0FBNEIsRUFDNUIsR0FBd0IsRUFDeEIsZUFBMEIsRUFDb0IsRUFBRTtJQUVoRCxNQUFNLE1BQU0sR0FBaUQsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUU1RixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7UUFFekQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsS0FBSyxLQUFLLEVBQUUsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUMsRUFBRTtnQkFDM0QsTUFBTSxDQUFDLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsZUFBZSxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDbkYsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7YUFDeEI7UUFDSCxDQUFDLENBQUMsQ0FBQztLQUVKO1NBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBRXRGLE1BQU0sQ0FBQyxPQUFPLEdBQUcscUJBQXFCLENBQUMsR0FBRyxFQUFFLGVBQWUsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkYsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7S0FFeEI7U0FBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLE9BQU8sSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLGFBQWEsRUFBRTtRQUV4SSxNQUFNLENBQUMsT0FBTyxHQUFHLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxlQUFlLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25GLE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0tBRXhCO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSU1lc3NhZ2VzLCBWYWxpZGF0aW9uc1R5cGUgfSBmcm9tICcuLi9tb2RlbHMvdmFsaWRhdGlvbnMtb3B0aW9ucy5tb2RlbCc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25UeXBlc0VudW0gfSBmcm9tICcuLi9tb2RlbHMvdmFsaWRhdGlvbnMtdHlwZXMubW9kZWwnO1xyXG5pbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2VIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL2dldC1lcnJvci1tZXNzYWdlLmhlbHBlcic7XHJcblxyXG5leHBvcnQgY29uc3QgcmVxdWlyZWRWYWxpZGF0aW9uID0gKFxyXG4gIHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSxcclxuICB2YWxpZGF0aW9uczogVmFsaWRhdGlvbnNUeXBlLFxyXG4gIGtleTogVmFsaWRhdGlvblR5cGVzRW51bSxcclxuICBpbnZhbGlkTWVzc2FnZXM6IElNZXNzYWdlc1xyXG4pOiB7IGlzVmFsaWQ6IGJvb2xlYW4sIG1lc3NhZ2U6IHN0cmluZyB8IG51bGwgfSA9PiB7XHJcblxyXG4gIGNvbnN0IHJlc3VsdDogeyBpc1ZhbGlkOiBib29sZWFuLCBtZXNzYWdlOiBzdHJpbmcgfCBudWxsIH0gPSB7aXNWYWxpZDogdHJ1ZSwgbWVzc2FnZTogbnVsbH07XHJcblxyXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWxpZGF0aW9ucy50eXBlICE9PSAnc2luZ2xlJykge1xyXG5cclxuICAgIHZhbHVlLmZvckVhY2goKGZpZWxkLCBpZHgpID0+IHtcclxuICAgICAgaWYgKChmaWVsZCA9PT0gJycgfHwgZmllbGQgPT09IG51bGwgfHwgZmllbGQgPT09IHVuZGVmaW5lZCkpIHtcclxuICAgICAgICByZXN1bHQubWVzc2FnZSA9IGdldEVycm9yTWVzc2FnZUhlbHBlcihrZXksIGludmFsaWRNZXNzYWdlcywgdmFsaWRhdGlvbnMubWVzc2FnZXMpO1xyXG4gICAgICAgIHJlc3VsdC5pc1ZhbGlkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbGlkYXRpb25zLnR5cGUgPT09ICdzaW5nbGUnICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xyXG5cclxuICAgIHJlc3VsdC5tZXNzYWdlID0gZ2V0RXJyb3JNZXNzYWdlSGVscGVyKGtleSwgaW52YWxpZE1lc3NhZ2VzLCB2YWxpZGF0aW9ucy5tZXNzYWdlcyk7XHJcbiAgICByZXN1bHQuaXNWYWxpZCA9IGZhbHNlO1xyXG5cclxuICB9IGVsc2UgaWYgKFN0cmluZyh2YWx1ZSkgPT09ICcnIHx8IFN0cmluZyh2YWx1ZSkgPT09ICdmYWxzZScgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCBTdHJpbmcodmFsdWUpID09PSAnPHA+PGJyPjwvcD4nKSB7XHJcblxyXG4gICAgcmVzdWx0Lm1lc3NhZ2UgPSBnZXRFcnJvck1lc3NhZ2VIZWxwZXIoa2V5LCBpbnZhbGlkTWVzc2FnZXMsIHZhbGlkYXRpb25zLm1lc3NhZ2VzKTtcclxuICAgIHJlc3VsdC5pc1ZhbGlkID0gZmFsc2U7XHJcblxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHJlc3VsdDtcclxufTtcclxuIl19
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQudmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvc2VydmljZXMvbXJ4LWZvcm0tdmFsaWRhdG9yL3ZhbGlkYXRpb25zL3JlcXVpcmVkLnZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFFNUUsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FDaEMsS0FBd0IsRUFDeEIsV0FBNEIsRUFDNUIsR0FBd0IsRUFDeEIsZUFBMEIsRUFDb0IsRUFBRTtJQUVoRCxNQUFNLE1BQU0sR0FBaUQsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUM1RixPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakIsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssUUFBUSxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUU3RSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxLQUFLLEtBQUssRUFBRSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQyxFQUFFO2dCQUMzRCxNQUFNLENBQUMsT0FBTyxHQUFHLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxlQUFlLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNuRixNQUFNLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQzthQUN4QjtRQUNILENBQUMsQ0FBQyxDQUFDO0tBRUo7U0FBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBRTFHLE1BQU0sQ0FBQyxPQUFPLEdBQUcscUJBQXFCLENBQUMsR0FBRyxFQUFFLGVBQWUsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkYsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7S0FFeEI7U0FBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssT0FBTyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssYUFBYSxDQUFDLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBRTlKLE1BQU0sQ0FBQyxPQUFPLEdBQUcscUJBQXFCLENBQUMsR0FBRyxFQUFFLGVBQWUsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkYsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7S0FFeEI7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJTWVzc2FnZXMsIFZhbGlkYXRpb25zVHlwZSB9IGZyb20gJy4uL21vZGVscy92YWxpZGF0aW9ucy1vcHRpb25zLm1vZGVsJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvblR5cGVzRW51bSB9IGZyb20gJy4uL21vZGVscy92YWxpZGF0aW9ucy10eXBlcy5tb2RlbCc7XHJcbmltcG9ydCB7IGdldEVycm9yTWVzc2FnZUhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvZ2V0LWVycm9yLW1lc3NhZ2UuaGVscGVyJztcclxuXHJcbmV4cG9ydCBjb25zdCByZXF1aXJlZFZhbGlkYXRpb24gPSAoXHJcbiAgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdLFxyXG4gIHZhbGlkYXRpb25zOiBWYWxpZGF0aW9uc1R5cGUsXHJcbiAga2V5OiBWYWxpZGF0aW9uVHlwZXNFbnVtLFxyXG4gIGludmFsaWRNZXNzYWdlczogSU1lc3NhZ2VzXHJcbik6IHsgaXNWYWxpZDogYm9vbGVhbiwgbWVzc2FnZTogc3RyaW5nIHwgbnVsbCB9ID0+IHtcclxuXHJcbiAgY29uc3QgcmVzdWx0OiB7IGlzVmFsaWQ6IGJvb2xlYW4sIG1lc3NhZ2U6IHN0cmluZyB8IG51bGwgfSA9IHtpc1ZhbGlkOiB0cnVlLCBtZXNzYWdlOiBudWxsfTtcclxuICBjb25zb2xlLmxvZyh2YWxpZGF0aW9ucyk7XHJcbiAgY29uc29sZS5sb2coa2V5KTtcclxuICBjb25zb2xlLmxvZygpO1xyXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWxpZGF0aW9ucy50eXBlICE9PSAnc2luZ2xlJyAmJiB2YWxpZGF0aW9uc1trZXldKSB7XHJcblxyXG4gICAgdmFsdWUuZm9yRWFjaCgoZmllbGQsIGlkeCkgPT4ge1xyXG4gICAgICBpZiAoKGZpZWxkID09PSAnJyB8fCBmaWVsZCA9PT0gbnVsbCB8fCBmaWVsZCA9PT0gdW5kZWZpbmVkKSkge1xyXG4gICAgICAgIHJlc3VsdC5tZXNzYWdlID0gZ2V0RXJyb3JNZXNzYWdlSGVscGVyKGtleSwgaW52YWxpZE1lc3NhZ2VzLCB2YWxpZGF0aW9ucy5tZXNzYWdlcyk7XHJcbiAgICAgICAgcmVzdWx0LmlzVmFsaWQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsaWRhdGlvbnMudHlwZSA9PT0gJ3NpbmdsZScgJiYgdmFsdWUubGVuZ3RoID09PSAwICYmIHZhbGlkYXRpb25zW2tleV0pIHtcclxuXHJcbiAgICByZXN1bHQubWVzc2FnZSA9IGdldEVycm9yTWVzc2FnZUhlbHBlcihrZXksIGludmFsaWRNZXNzYWdlcywgdmFsaWRhdGlvbnMubWVzc2FnZXMpO1xyXG4gICAgcmVzdWx0LmlzVmFsaWQgPSBmYWxzZTtcclxuXHJcbiAgfSBlbHNlIGlmICgoU3RyaW5nKHZhbHVlKSA9PT0gJycgfHwgU3RyaW5nKHZhbHVlKSA9PT0gJ2ZhbHNlJyB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IFN0cmluZyh2YWx1ZSkgPT09ICc8cD48YnI+PC9wPicpICYmIHZhbGlkYXRpb25zW2tleV0pIHtcclxuXHJcbiAgICByZXN1bHQubWVzc2FnZSA9IGdldEVycm9yTWVzc2FnZUhlbHBlcihrZXksIGludmFsaWRNZXNzYWdlcywgdmFsaWRhdGlvbnMubWVzc2FnZXMpO1xyXG4gICAgcmVzdWx0LmlzVmFsaWQgPSBmYWxzZTtcclxuXHJcbiAgfVxyXG5cclxuICByZXR1cm4gcmVzdWx0O1xyXG59O1xyXG4iXX0=
@@ -4265,7 +4265,10 @@ const getErrorMessageHelper = (key, invalidMessages, messages, params) => {
4265
4265
 
4266
4266
  const requiredValidation = (value, validations, key, invalidMessages) => {
4267
4267
  const result = { isValid: true, message: null };
4268
- if (Array.isArray(value) && validations.type !== 'single') {
4268
+ console.log(validations);
4269
+ console.log(key);
4270
+ console.log();
4271
+ if (Array.isArray(value) && validations.type !== 'single' && validations[key]) {
4269
4272
  value.forEach((field, idx) => {
4270
4273
  if ((field === '' || field === null || field === undefined)) {
4271
4274
  result.message = getErrorMessageHelper(key, invalidMessages, validations.messages);
@@ -4273,11 +4276,11 @@ const requiredValidation = (value, validations, key, invalidMessages) => {
4273
4276
  }
4274
4277
  });
4275
4278
  }
4276
- else if (Array.isArray(value) && validations.type === 'single' && value.length === 0) {
4279
+ else if (Array.isArray(value) && validations.type === 'single' && value.length === 0 && validations[key]) {
4277
4280
  result.message = getErrorMessageHelper(key, invalidMessages, validations.messages);
4278
4281
  result.isValid = false;
4279
4282
  }
4280
- else if (String(value) === '' || String(value) === 'false' || value === null || value === undefined || String(value) === '<p><br></p>') {
4283
+ else if ((String(value) === '' || String(value) === 'false' || value === null || value === undefined || String(value) === '<p><br></p>') && validations[key]) {
4281
4284
  result.message = getErrorMessageHelper(key, invalidMessages, validations.messages);
4282
4285
  result.isValid = false;
4283
4286
  }
@@ -4324,7 +4327,7 @@ const minLengthValidation = (value, validations, key, invalidMessages) => {
4324
4327
 
4325
4328
  const minValueValidation = (value, validations, key, invalidMessages) => {
4326
4329
  const result = { isValid: true, message: null };
4327
- if (parseInt(value) > Number(validations[key])) {
4330
+ if (parseInt(value) < Number(validations[key])) {
4328
4331
  result.message = getErrorMessageHelper(key, invalidMessages, validations.messages, Number(validations[key]));
4329
4332
  result.isValid = false;
4330
4333
  }
@@ -4333,7 +4336,7 @@ const minValueValidation = (value, validations, key, invalidMessages) => {
4333
4336
 
4334
4337
  const maxValueValidation = (value, validations, key, invalidMessages) => {
4335
4338
  const result = { isValid: true, message: null };
4336
- if (parseInt(value) < Number(validations[key])) {
4339
+ if (parseInt(value) > Number(validations[key])) {
4337
4340
  result.message = getErrorMessageHelper(key, invalidMessages, validations.messages, Number(validations[key]));
4338
4341
  result.isValid = false;
4339
4342
  }
@@ -17440,13 +17443,14 @@ class FormulaEditorComponent {
17440
17443
  }
17441
17444
  writeValue(outsideValue) {
17442
17445
  if (outsideValue !== null) {
17446
+ const { value, visibleValue } = this._transformValue(this._modifiedValue(outsideValue));
17443
17447
  this.value = outsideValue;
17444
- this.visibleValue = this._transformValue(this._modifiedValue(outsideValue)).visibleValue;
17448
+ this.visibleValue = visibleValue;
17445
17449
  this._detector.detectChanges();
17446
17450
  }
17447
17451
  }
17448
17452
  onInput(event) {
17449
- const { value, searchText } = this._transformValue(this._inputValue, false);
17453
+ const { value, searchText } = this._transformValue(this._modifiedValue(this._inputValue), false);
17450
17454
  this.updateValue(value);
17451
17455
  this.searchText = searchText;
17452
17456
  this._storeCursorPosition();
@@ -17461,9 +17465,9 @@ class FormulaEditorComponent {
17461
17465
  }
17462
17466
  insertTag(whiteListItem) {
17463
17467
  this._restoreCursorPosition(this.inputElement.nativeElement);
17464
- this._insertPositionText(whiteListItem.label);
17468
+ this._insertPositionText(`{${whiteListItem.sysName}}`);
17465
17469
  setTimeout(() => {
17466
- const { value, visibleValue } = this._transformValue(this._inputValue, false);
17470
+ const { value, visibleValue } = this._transformValue(this._modifiedValue(this._inputValue), false);
17467
17471
  this.updateValue(value);
17468
17472
  this.updateVisibleValue(visibleValue);
17469
17473
  });
@@ -17483,21 +17487,20 @@ class FormulaEditorComponent {
17483
17487
  this.onTouched();
17484
17488
  }
17485
17489
  _modifiedValue(value) {
17486
- const clearedValue = value.trim().split(' ').filter(e => e !== '');
17487
- return clearedValue.map(v => {
17488
- const findItem = this.items.find(w => `{${w.sysName}}` === v);
17489
- return findItem ? findItem.label : v;
17490
- }).join(' ');
17490
+ const labelsMap = Object.fromEntries(this.items.map(obj => [obj.label, obj.sysName]));
17491
+ const str = this.items.map(s => s.label);
17492
+ const reg = new RegExp(str.join('|'), 'g');
17493
+ return value.replace(reg, match => `{${labelsMap[match]}}`);
17491
17494
  }
17492
17495
  _transformValue(content, analise = false) {
17493
- const valueArray = content.split(/[\s\u00A0]+/).filter(e => e !== '');
17496
+ const valueArray = content.split(/[\s\u00A0]+/).filter(Boolean);
17494
17497
  const visibleValueArray = [];
17495
17498
  const originalValueArray = [];
17496
17499
  let isInterpretationError = false;
17497
17500
  let searchText = '';
17498
17501
  valueArray.forEach((item) => {
17499
17502
  const clearedItem = item.trim();
17500
- const findItem = this.items.find(v => clearedItem.includes(v.label));
17503
+ const findItem = this.items.find(v => clearedItem.includes(v.sysName));
17501
17504
  if (findItem) {
17502
17505
  visibleValueArray.push(createTag(findItem.label));
17503
17506
  originalValueArray.push(createTagOutside(findItem.sysName));
@@ -17524,6 +17527,8 @@ class FormulaEditorComponent {
17524
17527
  if (analise) {
17525
17528
  this._checkErrors(originalValueArray, isInterpretationError);
17526
17529
  }
17530
+ console.log(visibleValueArray);
17531
+ console.log(originalValueArray);
17527
17532
  return {
17528
17533
  value: originalValueArray.join(' '),
17529
17534
  visibleValue: visibleValueArray.join(' '),
@@ -17583,9 +17588,9 @@ class FormulaEditorComponent {
17583
17588
  }
17584
17589
  this._selection = document.getSelection();
17585
17590
  if (this._selection) {
17586
- this._selection.removeAllRanges();
17587
- this._selection.addRange(this._range);
17588
- element.focus();
17591
+ // this._selection.removeAllRanges();
17592
+ // this._selection.addRange(this._range);
17593
+ // element.focus();
17589
17594
  }
17590
17595
  }
17591
17596
  _placeCaretAtEnd() {
@@ -17602,13 +17607,27 @@ class FormulaEditorComponent {
17602
17607
  });
17603
17608
  }
17604
17609
  clickOut(event) {
17610
+ // console.dir(event);
17611
+ // console.log(this._modifiedValue(this._inputValue));
17605
17612
  if (!this.eRef.nativeElement.contains(event.target)) {
17606
- const { value, visibleValue } = this._transformValue(this._inputValue, true);
17607
- this.updateValue(value);
17613
+ const { value, visibleValue } = this._transformValue(this._modifiedValue(this._inputValue), true);
17614
+ //
17615
+ // this.updateValue(value);
17608
17616
  this.updateVisibleValue(visibleValue);
17617
+ //
17609
17618
  this.isFocused = false;
17610
17619
  this._detector.detectChanges();
17611
17620
  }
17621
+ // if (!this.eRef.nativeElement.contains(event.target)) {
17622
+ // console.log(this._inputValue);
17623
+ // const {value, visibleValue} = this._transformValue(this._inputValue, true);
17624
+ //
17625
+ // this.updateValue(value);
17626
+ // this.updateVisibleValue(visibleValue);
17627
+ //
17628
+ // this.isFocused = false;
17629
+ // this._detector.detectChanges();
17630
+ // }
17612
17631
  }
17613
17632
  registerOnChange(fn) {
17614
17633
  this.onChange = fn;