@rangertechnologies/ngnxt 2.1.85 → 2.1.87

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.
@@ -16,6 +16,7 @@ export class FormBuilderService {
16
16
  // book: { bookQuestionsMap: { unique_id: { subQuestions: any[]; }; }; };
17
17
  constructor() {
18
18
  // Load saved elements from localStorage
19
+ this.formElements = [];
19
20
  const savedFormElements = localStorage.getItem('formElements');
20
21
  if (savedFormElements) {
21
22
  this.formElements = JSON.parse(savedFormElements);
@@ -32,9 +33,10 @@ export class FormBuilderService {
32
33
  this.elementComponent = component;
33
34
  }
34
35
  // Add a new element to the form
35
- addElement(element, parentId = null) {
36
+ addElement(element) {
37
+ debugger;
36
38
  // const savedFormElements = localStorage.getItem('formElements');
37
- console.log("aswin", this.formElements.length);
39
+ console.log("length", this.formElements.length);
38
40
  if (this.formElements.length == 0) {
39
41
  console.log("savedFormElements", this.formElements);
40
42
  // this.formElements = JSON.parse(savedFormElements);
@@ -67,7 +69,7 @@ export class FormBuilderService {
67
69
  }
68
70
  this.formElements.push(element);
69
71
  localStorage.setItem('formElements', JSON.stringify(this.formElements));
70
- this.formElementsSubject.next([...this.formElements]);
72
+ // this.formElementsSubject.next([...this.formElements]);
71
73
  }
72
74
  updateElement(index, updates) {
73
75
  const elements = [...this.getElements()];
@@ -124,26 +126,12 @@ export class FormBuilderService {
124
126
  this.book.bookQuestionsMap[this.unique_id]['sqOptions'] = tempElement;
125
127
  return this.book;
126
128
  }
127
- // // Find an element by its ID
128
- // findElementById(id: string): FormElement | null {
129
- // const findRecursive = (elements: FormElement[]): FormElement | null => {
130
- // for (const el of elements) {
131
- // if (el.id === id) return el;
132
- // if (el.subQuestions) {
133
- // const found = findRecursive(el.subQuestions);
134
- // if (found) return found;
135
- // }
136
- // }
137
- // return null;
138
- // };
139
- // return findRecursive(this.formElements);
140
- // }
141
- // Remove an element by UID
129
+ // Remove an element by ID
142
130
  // Save elements to localStorage and update the subject
143
- removeElementComponent(uid) {
131
+ removeElementComponent(id) {
144
132
  this.tempElem = [];
145
133
  this.formElements.forEach((element) => {
146
- if (element.uid !== uid) {
134
+ if (element.id !== id) {
147
135
  this.tempElem.push(element);
148
136
  }
149
137
  });
@@ -160,4 +148,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
160
148
  providedIn: 'root',
161
149
  }]
162
150
  }], ctorParameters: () => [] });
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idWlsZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvc2VydmljZXMvZm9ybS1idWlsZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYTtBQUNiLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQW9EdkMsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBS3BDLE1BQU0sT0FBTyxrQkFBa0I7SUFDckIsWUFBWSxHQUFrQixFQUFFLENBQUM7SUFDakMsbUJBQW1CLEdBQUcsSUFBSSxlQUFlLENBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQzdELHNCQUFzQixHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsZ0JBQWdCLEdBQTRCLElBQUksQ0FBQztJQUN6RCxJQUFJLENBQUs7SUFFVCxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hELGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5RCxTQUFTLENBQU07SUFDZixRQUFRLENBQVE7SUFDaEIseUVBQXlFO0lBRXpFO1FBQ0Usd0NBQXdDO1FBRXhDLE1BQU0saUJBQWlCLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvRCxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxD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dXJjZXNDb250ZW50IjpbIi8vIEFQIDIySkFOMjVcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRWxlbWVudENvbXBvbmVudCB9IGZyb20gJy4uL3BhZ2VzL2J1aWxkZXIvZWxlbWVudC9lbGVtZW50LmNvbXBvbmVudCc7XHJcblxyXG5pbnRlcmZhY2UgRm9ybUVsZW1lbnQge1xyXG4gIGlkOiBhbnk7XHJcbiAgbmFtZTogYW55O1xyXG4gIHZhbHVlPzogYW55O1xyXG4gIHJlcXVpcmVkPzogYm9vbGVhbjtcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgcXVlc3Rpb25UZXh0Pzogc3RyaW5nO1xyXG4gIHF1ZXN0aW9uPzogc3RyaW5nO1xyXG4gIGhlbHBUZXh0Pzogc3RyaW5nO1xyXG4gIGVycm9yTWVzc2FnZT86IHN0cmluZztcclxuICBpc1JlYWRPbmx5PzogYm9vbGVhbjtcclxuICBpc0hpZGRlbj86IGJvb2xlYW47XHJcbiAgaXNEYXRlQmFja3dhcmQ/OiBib29sZWFuO1xyXG4gIGlzRGF0ZUZvcndhcmQ/OiBib29sZWFuO1xyXG4gIGlzT3B0aW9uYWw/OiBib29sZWFuO1xyXG4gIGlzVGl0bGU/OiBib29sZWFuO1xyXG4gIG5leHRRdWVzdGlvbj86IHN0cmluZztcclxuICBhbGxvd2VkRmlsZUV4dGVuc2lvbnM/OiBzdHJpbmc7XHJcbiAgcXVlc3Rpb25OdW1iZXI/OiBudW1iZXI7XHJcbiAgcXVlc3Rpb25Cb29rSWQ/OiBzdHJpbmc7XHJcbiAgc2l6ZT86IG51bWJlcjtcclxuICBwYXJlbnRRdWVzdGlvbj86IHN0cmluZztcclxuICBzdWJUZXh0Pzogc3RyaW5nO1xyXG4gIGZpZWxkc01ldGE/OiBzdHJpbmc7XHJcbiAgcmVjb3JkVHlwZU5hbWU/OiBzdHJpbmc7XHJcbiAgcmVjb3JkVHlwZUlkPzogc3RyaW5nO1xyXG4gIHRyYWNraW5nSWQ/OiBzdHJpbmc7XHJcbiAgZGF0ZVRleHQ/OiBzdHJpbmc7XHJcbiAgdGltZVRleHQ/OiBzdHJpbmc7XHJcbiAgcmVjb3JkSWQ/OiBzdHJpbmc7XHJcbiAgcWJSZWZlcmVuY2U/OiBzdHJpbmc7XHJcbiAgcWJSZWZlcmVuY2VRdWVzdGlvbnM/OiBzdHJpbmc7XHJcbiAgcXVlc3Rpb25Cb29rU3ViVGl0bGU/OiBzdHJpbmc7XHJcbiAgc3R5bGU/OiBzdHJpbmc7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgc3ViVGl0bGU/OiBzdHJpbmc7XHJcbiAgcmVmZXJlbmNlRmllbGQ/OiBzdHJpbmc7XHJcbiAgYWRkaXRpb25hbFJpY2hDb250ZW50Pzogc3RyaW5nO1xyXG4gIGdyb3VwTmFtZT86IHN0cmluZztcclxuICB4MjRIb3Vycz86IGJvb2xlYW47XHJcblxyXG4gIC8vIE9wdGlvbnMgZm9yIGVsZW1lbnRzIGxpa2UgRHJvcGRvd24sIFJhZGlvLCBDaGVja2JveFxyXG4gIG9wdGlvbnM/OiBBcnJheTx7XHJcbiAgICBsYWJlbDogc3RyaW5nO1xyXG4gICAgdmFsdWU6IGFueTtcclxuICAgIHR5cGU6IHN0cmluZztcclxuICAgIGtleTogc3RyaW5nO1xyXG4gIH0+O1xyXG59XHJcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvcm1CdWlsZGVyU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBmb3JtRWxlbWVudHM6IEZvcm1FbGVtZW50W10gPSBbXTtcclxuICBwcml2YXRlIGZvcm1FbGVtZW50c1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZvcm1FbGVtZW50W10+KFtdKTtcclxuICBwcml2YXRlIHNlbGVjdGVkRWxlbWVudFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oLTEpO1xyXG4gIHByaXZhdGUgZWxlbWVudENvbXBvbmVudDogRWxlbWVudENvbXBvbmVudCB8IG51bGwgPSBudWxsO1xyXG4gIGJvb2s6YW55O1xyXG5cclxuICBmb3JtRWxlbWVudHMkID0gdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gIHNlbGVjdGVkRWxlbWVudCQgPSB0aGlzLnNlbGVjdGVkRWxlbWVudFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgdW5pcXVlX2lkOiBhbnk7XHJcbiAgdGVtcEVsZW06IGFueVtdO1xyXG4gIC8vIGJvb2s6IHsgYm9va1F1ZXN0aW9uc01hcDogeyB1bmlxdWVfaWQ6IHsgc3ViUXVlc3Rpb25zOiBhbnlbXTsgfTsgfTsgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAvLyBMb2FkIHNhdmVkIGVsZW1lbnRzIGZyb20gbG9jYWxTdG9yYWdlXHJcblxyXG4gICAgY29uc3Qgc2F2ZWRGb3JtRWxlbWVudHMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZm9ybUVsZW1lbnRzJyk7XHJcbiAgICBpZiAoc2F2ZWRGb3JtRWxlbWVudHMpIHtcclxuICAgICAgdGhpcy5mb3JtRWxlbWVudHMgPSBKU09OLnBhcnNlKHNhdmVkRm9ybUVsZW1lbnRzKTtcclxuICAgICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XHJcbiAgICAgIHRoaXMuYm9vayA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2Jvb2snKSB8fCAne30nKTtcclxuICAgICAgdGhpcy51bmlxdWVfaWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndW5pcXVlX2lkJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgdGhlIGVsZW1lbnQgY29tcG9uZW50IHJlZmVyZW5jZVxyXG4gIGdldEVsZW1lbnRDb21wb25lbnQoKTogRWxlbWVudENvbXBvbmVudCB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudENvbXBvbmVudDtcclxuICB9XHJcblxyXG4gIHNldEVsZW1lbnRDb21wb25lbnQoY29tcG9uZW50OiBFbGVtZW50Q29tcG9uZW50KSB7XHJcbiAgICB0aGlzLmVsZW1lbnRDb21wb25lbnQgPSBjb21wb25lbnQ7XHJcbiAgfVxyXG5cclxuICAvLyBBZGQgYSBuZXcgZWxlbWVudCB0byB0aGUgZm9ybVxyXG4gIGFkZEVsZW1lbnQoZWxlbWVudDogRm9ybUVsZW1lbnQsIHBhcmVudElkOiBzdHJpbmcgfCBudWxsID0gbnVsbCk6IHZvaWQge1xyXG5cclxuICAgIC8vIGNvbnN0IHNhdmVkRm9ybUVsZW1lbnRzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2Zvcm1FbGVtZW50cycpO1xyXG4gICAgY29uc29sZS5sb2coXCJhc3dpblwiLHRoaXMuZm9ybUVsZW1lbnRzLmxlbmd0aCk7XHJcbiAgICBpZiAodGhpcy5mb3JtRWxlbWVudHMubGVuZ3RoID09IDApIHtcclxuICAgICAgY29uc29sZS5sb2coXCJzYXZlZEZvcm1FbGVtZW50c1wiLHRoaXMuZm9ybUVsZW1lbnRzKTtcclxuICAgICAgLy8gdGhpcy5mb3JtRWxlbWVudHMgPSBKU09OLnBhcnNlKHNhdmVkRm9ybUVsZW1lbnRzKTtcclxuICAgICAgLy8gdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XHJcbiAgICAgIC8vIHRoaXMuYm9vayA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2Jvb2snKSB8fCAne30nKTtcclxuICAgICAgdGhpcy5ib29rID0ge307XHJcbiAgICAgIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzdGF0dXMnKSA9PSBcImVkaXRcIil7XHJcbiAgICAgICAgdGhpcy51bmlxdWVfaWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndW5pcXVlX2lkJyk7XHJcbiAgICAgICAgdGhpcy5ib29rID0ge1xyXG4gICAgICAgICAgJ2Jvb2tRdWVzdGlvbnNNYXAnOiB7XHJcbiAgICAgICAgICAgICBbdGhpcy51bmlxdWVfaWRdOiB7XHJcbiAgICAgICAgICAgICAnc3ViUXVlc3Rpb25zJzogW11cclxuICAgICAgICAgICAgIH1cclxuICAgICAgICAgICB9XHJcbiAgICAgICAgIH07XHJcblxyXG4gICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy51bmlxdWVfaWQgPSB1dWlkdjQoKTtcclxuICAgICAgICB0aGlzLmJvb2sgPSB7XHJcbiAgICAgICAgICAnYm9va1F1ZXN0aW9uc01hcCc6IHtcclxuICAgICAgICAgICAgIFt0aGlzLnVuaXF1ZV9pZF06IHtcclxuICAgICAgICAgICAgICdzdWJRdWVzdGlvbnMnOiBbXVxyXG4gICAgICAgICAgICAgfVxyXG4gICAgICAgICAgIH1cclxuICAgICAgICAgfTtcclxuXHJcbiAgICAgICB9XHJcbiAgICAgIC8vIHRoaXMudW5pcXVlX2lkID0gdXVpZHY0KCk7XHJcblxyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdib29rJywgSlNPTi5zdHJpbmdpZnkodGhpcy5ib29rKSk7XHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3VuaXF1ZV9pZCcsIHRoaXMudW5pcXVlX2lkKTtcclxuICAgIH1cclxuICAgIHRoaXMuZm9ybUVsZW1lbnRzLnB1c2goZWxlbWVudCk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZm9ybUVsZW1lbnRzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtRWxlbWVudHMpKTtcclxuICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLmZvcm1FbGVtZW50c10pO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRWxlbWVudChpbmRleDogbnVtYmVyLCB1cGRhdGVzOiBQYXJ0aWFsPEZvcm1FbGVtZW50Pikge1xyXG4gICAgY29uc3QgZWxlbWVudHMgPSBbLi4udGhpcy5nZXRFbGVtZW50cygpXTtcclxuICAgIGlmIChlbGVtZW50c1tpbmRleF0pIHtcclxuICAgICAgICBlbGVtZW50c1tpbmRleF0gPSB7XHJcbiAgICAgICAgICAuLi5lbGVtZW50c1tpbmRleF0sXHJcbiAgICAgICAgICAuLi51cGRhdGVzXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChlbGVtZW50cyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMuZm9ybUVsZW1lbnRzLmxlbmd0aCkge1xyXG4gICAgICBjb25zdCB1cGRhdGVkRWxlbWVudCA9IHtcclxuICAgICAgICAuLi50aGlzLmZvcm1FbGVtZW50c1tpbmRleF0sXHJcbiAgICAgICAgLi4udXBkYXRlc1xyXG4gICAgICB9O1xyXG4gICAgICBpZiAodXBkYXRlcy5yZXF1aXJlZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgaWYgKHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dCkge1xyXG4gICAgICAgICAgY29uc3QgcXVlc3Rpb25UZXh0ID0gdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0LnJlcGxhY2UoL1xccypcXCorJC8sICcnKTtcclxuICAgICAgICAgIHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dCA9IHVwZGF0ZXMucmVxdWlyZWQgPyBgJHtxdWVzdGlvblRleHR9ICpgIDogcXVlc3Rpb25UZXh0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gSGFuZGxlIHNwZWNpYWwgY2FzZXNcclxuICAgICAgaWYgKHVwZGF0ZXMucmVxdWlyZWQgPT09IHRydWUgJiYgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ICYmICF1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQuZW5kc1dpdGgoJyonKSkge1xyXG4gICAgICAgIHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dCA9IGAke3VwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dH0gKmA7XHJcbiAgICAgIH0gZWxzZSBpZiAodXBkYXRlcy5yZXF1aXJlZCA9PT0gZmFsc2UgJiYgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ICYmIHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dC5lbmRzV2l0aCgnKicpKSB7XHJcbiAgICAgICAgdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0ID0gdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0LnNsaWNlKDAsIC0yKTtcclxuICAgIH1cclxuXHJcbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzW2luZGV4XSA9IHVwZGF0ZWRFbGVtZW50O1xyXG4gICAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5mb3JtRWxlbWVudHNdKTtcclxuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Zvcm1FbGVtZW50cycsIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybUVsZW1lbnRzKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3RlZEVsZW1lbnQoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0Lm5leHQoaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWxlbWVudHMoKTogRm9ybUVsZW1lbnRbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtRWxlbWVudHM7XHJcbiAgfVxyXG4gIGRvd25sb2FkRWxlbWVudCgpe1xyXG4gICAgY29uc29sZS5sb2coXCJib29rXCIsdGhpcy5ib29rKTtcclxuICAgIHRoaXMuYm9vay5ib29rUXVlc3Rpb25zTWFwW3RoaXMudW5pcXVlX2lkXS5zdWJRdWVzdGlvbnMgPSB0aGlzLmZvcm1FbGVtZW50cztcclxuICAgIGxldCB0ZW1wRWxlbWVudCA9IHt9O1xyXG4gICAgdGhpcy5mb3JtRWxlbWVudHMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gIGlmIChlbGVtZW50LnR5cGUgPT09ICdEcm9wZG93bicgfHwgZWxlbWVudC50eXBlID09PSAnUmFkaW8nIHx8IGVsZW1lbnQudHlwZSA9PT0gJ0NoZWNrQm94Jykge1xyXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgYXJyYXkgaWYgaXQgZG9lc24ndCBleGlzdFxyXG4gICAgaWYgKCF0ZW1wRWxlbWVudFtlbGVtZW50LmlkXSkge1xyXG4gICAgICB0ZW1wRWxlbWVudFtlbGVtZW50LmlkXSA9IFtdO1xyXG4gICAgfVxyXG4gICAgLy8gUHVzaCB0aGUgY3VycmVudCBlbGVtZW50IGludG8gdGhlIGFycmF5XHJcbiAgICB0ZW1wRWxlbWVudFtlbGVtZW50LmlkXS5wdXNoKGVsZW1lbnQpO1xyXG4gIH1cclxufSk7XHJcblxyXG4gICAgdGhpcy5ib29rLmJvb2tRdWVzdGlvbnNNYXBbdGhpcy51bmlxdWVfaWRdWydzcU9wdGlvbnMnXSA9IHRlbXBFbGVtZW50O1xyXG4gICAgcmV0dXJuIHRoaXMuYm9vaztcclxuICB9XHJcblxyXG4gIC8vIC8vIEZpbmQgYW4gZWxlbWVudCBieSBpdHMgSURcclxuICAvLyBmaW5kRWxlbWVudEJ5SWQoaWQ6IHN0cmluZyk6IEZvcm1FbGVtZW50IHwgbnVsbCB7XHJcbiAgLy8gICBjb25zdCBmaW5kUmVjdXJzaXZlID0gKGVsZW1lbnRzOiBGb3JtRWxlbWVudFtdKTogRm9ybUVsZW1lbnQgfCBudWxsID0+IHtcclxuICAvLyAgICAgZm9yIChjb25zdCBlbCBvZiBlbGVtZW50cykge1xyXG4gIC8vICAgICAgIGlmIChlbC5pZCA9PT0gaWQpIHJldHVybiBlbDtcclxuICAvLyAgICAgICBpZiAoZWwuc3ViUXVlc3Rpb25zKSB7XHJcbiAgLy8gICAgICAgICBjb25zdCBmb3VuZCA9IGZpbmRSZWN1cnNpdmUoZWwuc3ViUXVlc3Rpb25zKTtcclxuICAvLyAgICAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGZvdW5kO1xyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfVxyXG4gIC8vICAgICByZXR1cm4gbnVsbDtcclxuICAvLyAgIH07XHJcbiAgLy8gICByZXR1cm4gZmluZFJlY3Vyc2l2ZSh0aGlzLmZvcm1FbGVtZW50cyk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBSZW1vdmUgYW4gZWxlbWVudCBieSBVSURcclxuXHJcblxyXG4gIC8vIFNhdmUgZWxlbWVudHMgdG8gbG9jYWxTdG9yYWdlIGFuZCB1cGRhdGUgdGhlIHN1YmplY3RcclxuICByZW1vdmVFbGVtZW50Q29tcG9uZW50KHVpZDogYW55KSB7XHJcbiAgICB0aGlzLnRlbXBFbGVtID0gW107XHJcbiAgICB0aGlzLmZvcm1FbGVtZW50cy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgaWYgKGVsZW1lbnQudWlkICE9PSB1aWQpIHtcclxuICAgICAgICB0aGlzLnRlbXBFbGVtLnB1c2goZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5mb3JtRWxlbWVudHMgPSB0aGlzLnRlbXBFbGVtO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Zvcm1FbGVtZW50cycsIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybUVsZW1lbnRzKSk7XHJcbiAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5mb3JtRWxlbWVudHNdKTtcclxuICB9XHJcbn1cclxuIl19
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1idWlsZGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvc2VydmljZXMvZm9ybS1idWlsZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsYUFBYTtBQUNiLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQW9EdkMsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBS3BDLE1BQU0sT0FBTyxrQkFBa0I7SUFDckIsWUFBWSxHQUFrQixFQUFFLENBQUM7SUFDakMsbUJBQW1CLEdBQUcsSUFBSSxlQUFlLENBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQzdELHNCQUFzQixHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsZ0JBQWdCLEdBQTRCLElBQUksQ0FBQztJQUN6RCxJQUFJLENBQUs7SUFFVCxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hELGdCQUFnQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM5RCxTQUFTLENBQU07SUFDZixRQUFRLENBQVE7SUFDaEIseUVBQXlFO0lBRXpFO1FBQ0Usd0NBQXdDO1FBQ3pDLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLE1BQU0saUJBQWlCLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvRCxJQUFJLGlCQUFpQixFQUFHLENBQUM7WUFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUks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QUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFXLENBQUM7UUFDdEUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCwwQkFBMEI7SUFDMUIsdURBQXVEO0lBQ3ZELHNCQUFzQixDQUFDLEVBQU87UUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtZQUN6QyxJQUFJLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNsQyxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7d0dBdEpVLGtCQUFrQjs0R0FBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBUCAyMkpBTjI1XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuLi9wYWdlcy9idWlsZGVyL2VsZW1lbnQvZWxlbWVudC5jb21wb25lbnQnO1xyXG5cclxuaW50ZXJmYWNlIEZvcm1FbGVtZW50IHtcclxuICBpZDogYW55O1xyXG4gIG5hbWU6IGFueTtcclxuICB2YWx1ZT86IGFueTtcclxuICByZXF1aXJlZD86IGJvb2xlYW47XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIHF1ZXN0aW9uVGV4dD86IHN0cmluZztcclxuICBxdWVzdGlvbj86IHN0cmluZztcclxuICBoZWxwVGV4dD86IHN0cmluZztcclxuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7XHJcbiAgaXNSZWFkT25seT86IGJvb2xlYW47XHJcbiAgaXNIaWRkZW4/OiBib29sZWFuO1xyXG4gIGlzRGF0ZUJhY2t3YXJkPzogYm9vbGVhbjtcclxuICBpc0RhdGVGb3J3YXJkPzogYm9vbGVhbjtcclxuICBpc09wdGlvbmFsPzogYm9vbGVhbjtcclxuICBpc1RpdGxlPzogYm9vbGVhbjtcclxuICBuZXh0UXVlc3Rpb24/OiBzdHJpbmc7XHJcbiAgYWxsb3dlZEZpbGVFeHRlbnNpb25zPzogc3RyaW5nO1xyXG4gIHF1ZXN0aW9uTnVtYmVyPzogbnVtYmVyO1xyXG4gIHF1ZXN0aW9uQm9va0lkPzogc3RyaW5nO1xyXG4gIHNpemU/OiBudW1iZXI7XHJcbiAgcGFyZW50UXVlc3Rpb24/OiBzdHJpbmc7XHJcbiAgc3ViVGV4dD86IHN0cmluZztcclxuICBmaWVsZHNNZXRhPzogc3RyaW5nO1xyXG4gIHJlY29yZFR5cGVOYW1lPzogc3RyaW5nO1xyXG4gIHJlY29yZFR5cGVJZD86IHN0cmluZztcclxuICB0cmFja2luZ0lkPzogc3RyaW5nO1xyXG4gIGRhdGVUZXh0Pzogc3RyaW5nO1xyXG4gIHRpbWVUZXh0Pzogc3RyaW5nO1xyXG4gIHJlY29yZElkPzogc3RyaW5nO1xyXG4gIHFiUmVmZXJlbmNlPzogc3RyaW5nO1xyXG4gIHFiUmVmZXJlbmNlUXVlc3Rpb25zPzogc3RyaW5nO1xyXG4gIHF1ZXN0aW9uQm9va1N1YlRpdGxlPzogc3RyaW5nO1xyXG4gIHN0eWxlPzogc3RyaW5nO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIHN1YlRpdGxlPzogc3RyaW5nO1xyXG4gIHJlZmVyZW5jZUZpZWxkPzogc3RyaW5nO1xyXG4gIGFkZGl0aW9uYWxSaWNoQ29udGVudD86IHN0cmluZztcclxuICBncm91cE5hbWU/OiBzdHJpbmc7XHJcbiAgeDI0SG91cnM/OiBib29sZWFuO1xyXG5cclxuICAvLyBPcHRpb25zIGZvciBlbGVtZW50cyBsaWtlIERyb3Bkb3duLCBSYWRpbywgQ2hlY2tib3hcclxuICBvcHRpb25zPzogQXJyYXk8e1xyXG4gICAgbGFiZWw6IHN0cmluZztcclxuICAgIHZhbHVlOiBhbnk7XHJcbiAgICB0eXBlOiBzdHJpbmc7XHJcbiAgICBrZXk6IHN0cmluZztcclxuICB9PjtcclxufVxyXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtQnVpbGRlclNlcnZpY2Uge1xyXG4gIHByaXZhdGUgZm9ybUVsZW1lbnRzOiBGb3JtRWxlbWVudFtdID0gW107XHJcbiAgcHJpdmF0ZSBmb3JtRWxlbWVudHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtRWxlbWVudFtdPihbXSk7XHJcbiAgcHJpdmF0ZSBzZWxlY3RlZEVsZW1lbnRTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KC0xKTtcclxuICBwcml2YXRlIGVsZW1lbnRDb21wb25lbnQ6IEVsZW1lbnRDb21wb25lbnQgfCBudWxsID0gbnVsbDtcclxuICBib29rOmFueTtcclxuXHJcbiAgZm9ybUVsZW1lbnRzJCA9IHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICBzZWxlY3RlZEVsZW1lbnQkID0gdGhpcy5zZWxlY3RlZEVsZW1lbnRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gIHVuaXF1ZV9pZDogYW55O1xyXG4gIHRlbXBFbGVtOiBhbnlbXTtcclxuICAvLyBib29rOiB7IGJvb2tRdWVzdGlvbnNNYXA6IHsgdW5pcXVlX2lkOiB7IHN1YlF1ZXN0aW9uczogYW55W107IH07IH07IH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgLy8gTG9hZCBzYXZlZCBlbGVtZW50cyBmcm9tIGxvY2FsU3RvcmFnZVxyXG4gICB0aGlzLmZvcm1FbGVtZW50cyA9IFtdO1xyXG4gICAgY29uc3Qgc2F2ZWRGb3JtRWxlbWVudHMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZm9ybUVsZW1lbnRzJyk7XHJcbiAgICBpZiAoc2F2ZWRGb3JtRWxlbWVudHMgKSB7XHJcbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzID0gSlNPTi5wYXJzZShzYXZlZEZvcm1FbGVtZW50cyk7XHJcbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLmZvcm1FbGVtZW50c10pO1xyXG4gICAgICB0aGlzLmJvb2sgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdib29rJykgfHwgJ3t9Jyk7XHJcbiAgICAgIHRoaXMudW5pcXVlX2lkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VuaXF1ZV9pZCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gR2V0IHRoZSBlbGVtZW50IGNvbXBvbmVudCByZWZlcmVuY2VcclxuICBnZXRFbGVtZW50Q29tcG9uZW50KCk6IEVsZW1lbnRDb21wb25lbnQgfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLmVsZW1lbnRDb21wb25lbnQ7XHJcbiAgfVxyXG5cclxuICBzZXRFbGVtZW50Q29tcG9uZW50KGNvbXBvbmVudDogRWxlbWVudENvbXBvbmVudCkge1xyXG4gICAgdGhpcy5lbGVtZW50Q29tcG9uZW50ID0gY29tcG9uZW50O1xyXG4gIH1cclxuXHJcbiAgLy8gQWRkIGEgbmV3IGVsZW1lbnQgdG8gdGhlIGZvcm1cclxuICBhZGRFbGVtZW50KGVsZW1lbnQ6IEZvcm1FbGVtZW50KTogdm9pZCB7XHJcbiAgICBkZWJ1Z2dlclxyXG5cclxuICAgIC8vIGNvbnN0IHNhdmVkRm9ybUVsZW1lbnRzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2Zvcm1FbGVtZW50cycpO1xyXG4gICAgY29uc29sZS5sb2coXCJsZW5ndGhcIix0aGlzLmZvcm1FbGVtZW50cy5sZW5ndGgpO1xyXG4gICAgaWYgKHRoaXMuZm9ybUVsZW1lbnRzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwic2F2ZWRGb3JtRWxlbWVudHNcIix0aGlzLmZvcm1FbGVtZW50cyk7XHJcbiAgICAgIC8vIHRoaXMuZm9ybUVsZW1lbnRzID0gSlNPTi5wYXJzZShzYXZlZEZvcm1FbGVtZW50cyk7XHJcbiAgICAgIC8vIHRoaXMuZm9ybUVsZW1lbnRzU3ViamVjdC5uZXh0KFsuLi50aGlzLmZvcm1FbGVtZW50c10pO1xyXG4gICAgICAvLyB0aGlzLmJvb2sgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdib29rJykgfHwgJ3t9Jyk7XHJcbiAgICAgIHRoaXMuYm9vayA9IHt9O1xyXG4gICAgICBpZihsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc3RhdHVzJykgPT0gXCJlZGl0XCIpe1xyXG4gICAgICAgIHRoaXMudW5pcXVlX2lkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VuaXF1ZV9pZCcpO1xyXG4gICAgICAgIHRoaXMuYm9vayA9IHtcclxuICAgICAgICAgICdib29rUXVlc3Rpb25zTWFwJzoge1xyXG4gICAgICAgICAgICAgW3RoaXMudW5pcXVlX2lkXToge1xyXG4gICAgICAgICAgICAgJ3N1YlF1ZXN0aW9ucyc6IFtdXHJcbiAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgICB9O1xyXG5cclxuICAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMudW5pcXVlX2lkID0gdXVpZHY0KCk7XHJcbiAgICAgICAgdGhpcy5ib29rID0ge1xyXG4gICAgICAgICAgJ2Jvb2tRdWVzdGlvbnNNYXAnOiB7XHJcbiAgICAgICAgICAgICBbdGhpcy51bmlxdWVfaWRdOiB7XHJcbiAgICAgICAgICAgICAnc3ViUXVlc3Rpb25zJzogW11cclxuICAgICAgICAgICAgIH1cclxuICAgICAgICAgICB9XHJcbiAgICAgICAgIH07XHJcblxyXG4gICAgICAgfVxyXG4gICAgICAvLyB0aGlzLnVuaXF1ZV9pZCA9IHV1aWR2NCgpO1xyXG5cclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnYm9vaycsIEpTT04uc3RyaW5naWZ5KHRoaXMuYm9vaykpO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd1bmlxdWVfaWQnLCB0aGlzLnVuaXF1ZV9pZCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZvcm1FbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Zvcm1FbGVtZW50cycsIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybUVsZW1lbnRzKSk7XHJcbiAgICAvLyB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5mb3JtRWxlbWVudHNdKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUVsZW1lbnQoaW5kZXg6IG51bWJlciwgdXBkYXRlczogUGFydGlhbDxGb3JtRWxlbWVudD4pIHtcclxuICAgIGNvbnN0IGVsZW1lbnRzID0gWy4uLnRoaXMuZ2V0RWxlbWVudHMoKV07XHJcbiAgICBpZiAoZWxlbWVudHNbaW5kZXhdKSB7XHJcbiAgICAgICAgZWxlbWVudHNbaW5kZXhdID0ge1xyXG4gICAgICAgICAgLi4uZWxlbWVudHNbaW5kZXhdLFxyXG4gICAgICAgICAgLi4udXBkYXRlc1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoZWxlbWVudHMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCB0aGlzLmZvcm1FbGVtZW50cy5sZW5ndGgpIHtcclxuICAgICAgY29uc3QgdXBkYXRlZEVsZW1lbnQgPSB7XHJcbiAgICAgICAgLi4udGhpcy5mb3JtRWxlbWVudHNbaW5kZXhdLFxyXG4gICAgICAgIC4uLnVwZGF0ZXNcclxuICAgICAgfTtcclxuICAgICAgaWYgKHVwZGF0ZXMucmVxdWlyZWQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmICh1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQpIHtcclxuICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uVGV4dCA9IHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dC5yZXBsYWNlKC9cXHMqXFwqKyQvLCAnJyk7XHJcbiAgICAgICAgICB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQgPSB1cGRhdGVzLnJlcXVpcmVkID8gYCR7cXVlc3Rpb25UZXh0fSAqYCA6IHF1ZXN0aW9uVGV4dDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEhhbmRsZSBzcGVjaWFsIGNhc2VzXHJcbiAgICAgIGlmICh1cGRhdGVzLnJlcXVpcmVkID09PSB0cnVlICYmIHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dCAmJiAhdXBkYXRlZEVsZW1lbnQucXVlc3Rpb25UZXh0LmVuZHNXaXRoKCcqJykpIHtcclxuICAgICAgICB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQgPSBgJHt1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHR9ICpgO1xyXG4gICAgICB9IGVsc2UgaWYgKHVwZGF0ZXMucmVxdWlyZWQgPT09IGZhbHNlICYmIHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dCAmJiB1cGRhdGVkRWxlbWVudC5xdWVzdGlvblRleHQuZW5kc1dpdGgoJyonKSkge1xyXG4gICAgICAgIHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dCA9IHVwZGF0ZWRFbGVtZW50LnF1ZXN0aW9uVGV4dC5zbGljZSgwLCAtMik7XHJcbiAgICB9XHJcblxyXG4gICAgICB0aGlzLmZvcm1FbGVtZW50c1tpbmRleF0gPSB1cGRhdGVkRWxlbWVudDtcclxuICAgICAgdGhpcy5mb3JtRWxlbWVudHNTdWJqZWN0Lm5leHQoWy4uLnRoaXMuZm9ybUVsZW1lbnRzXSk7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdmb3JtRWxlbWVudHMnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm1FbGVtZW50cykpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0U2VsZWN0ZWRFbGVtZW50KGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRFbGVtZW50U3ViamVjdC5uZXh0KGluZGV4KTtcclxuICB9XHJcblxyXG4gIGdldEVsZW1lbnRzKCk6IEZvcm1FbGVtZW50W10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybUVsZW1lbnRzO1xyXG4gIH1cclxuICBkb3dubG9hZEVsZW1lbnQoKXtcclxuICAgIGNvbnNvbGUubG9nKFwiYm9va1wiLHRoaXMuYm9vayk7XHJcbiAgICB0aGlzLmJvb2suYm9va1F1ZXN0aW9uc01hcFt0aGlzLnVuaXF1ZV9pZF0uc3ViUXVlc3Rpb25zID0gdGhpcy5mb3JtRWxlbWVudHM7XHJcbiAgICBsZXQgdGVtcEVsZW1lbnQgPSB7fTtcclxuICAgIHRoaXMuZm9ybUVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcclxuICBpZiAoZWxlbWVudC50eXBlID09PSAnRHJvcGRvd24nIHx8IGVsZW1lbnQudHlwZSA9PT0gJ1JhZGlvJyB8fCBlbGVtZW50LnR5cGUgPT09ICdDaGVja0JveCcpIHtcclxuICAgIC8vIEluaXRpYWxpemUgdGhlIGFycmF5IGlmIGl0IGRvZXNuJ3QgZXhpc3RcclxuICAgIGlmICghdGVtcEVsZW1lbnRbZWxlbWVudC5pZF0pIHtcclxuICAgICAgdGVtcEVsZW1lbnRbZWxlbWVudC5pZF0gPSBbXTtcclxuICAgIH1cclxuICAgIC8vIFB1c2ggdGhlIGN1cnJlbnQgZWxlbWVudCBpbnRvIHRoZSBhcnJheVxyXG4gICAgdGVtcEVsZW1lbnRbZWxlbWVudC5pZF0ucHVzaChlbGVtZW50KTtcclxuICB9XHJcbn0pO1xyXG5cclxuICAgIHRoaXMuYm9vay5ib29rUXVlc3Rpb25zTWFwW3RoaXMudW5pcXVlX2lkXVsnc3FPcHRpb25zJ10gPSB0ZW1wRWxlbWVudDtcclxuICAgIHJldHVybiB0aGlzLmJvb2s7XHJcbiAgfVxyXG5cclxuICAvLyBSZW1vdmUgYW4gZWxlbWVudCBieSBJRFxyXG4gIC8vIFNhdmUgZWxlbWVudHMgdG8gbG9jYWxTdG9yYWdlIGFuZCB1cGRhdGUgdGhlIHN1YmplY3RcclxuICByZW1vdmVFbGVtZW50Q29tcG9uZW50KGlkOiBhbnkpIHtcclxuICAgIHRoaXMudGVtcEVsZW0gPSBbXTtcclxuICAgIHRoaXMuZm9ybUVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoZWxlbWVudC5pZCAhPT0gaWQpIHtcclxuICAgICAgICB0aGlzLnRlbXBFbGVtLnB1c2goZWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5mb3JtRWxlbWVudHMgPSB0aGlzLnRlbXBFbGVtO1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2Zvcm1FbGVtZW50cycsIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybUVsZW1lbnRzKSk7XHJcbiAgICB0aGlzLmZvcm1FbGVtZW50c1N1YmplY3QubmV4dChbLi4udGhpcy5mb3JtRWxlbWVudHNdKTtcclxuICB9XHJcbn1cclxuIl19