ets-fe-ng-sdk 17.0.295 → 17.0.296

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.
@@ -121,7 +121,7 @@ export class FindItemComponent extends BaseFormGenerator {
121
121
  // map(r=>({query:r,checksum})),
122
122
  debounceTime(this.searchDebounceTime))
123
123
  .subscribe((r) => {
124
- // debugger;
124
+ debugger;
125
125
  this.searchDebounceTime = 0;
126
126
  this._search();
127
127
  }));
@@ -258,7 +258,7 @@ export class FindItemComponent extends BaseFormGenerator {
258
258
  setTimeout(() => {
259
259
  this.tableHTTPSREF?.search(req);
260
260
  this.loading.set(false);
261
- }, 100);
261
+ }, 0);
262
262
  }
263
263
  else if (this.searchFunction) {
264
264
  try {
@@ -349,4 +349,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
349
349
  type: Input,
350
350
  args: ['formSchema']
351
351
  }] } });
352
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9SZXVzYWJsZXMvcmV1c2FibGUtY29tcHMvZmluZC1pdGVtL2ZpbmQtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvUmV1c2FibGVzL3JldXNhYmxlLWNvbXBzL2ZpbmQtaXRlbS9maW5kLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSixPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLGVBQWUsRUFBYyxZQUFZLEVBQWdDLGFBQWEsRUFBTyxNQUFNLE1BQU0sQ0FBQztBQUNuSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpRkFBaUYsQ0FBQztBQUN0SCxPQUFPLEVBQW9CLG1CQUFtQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFFckgsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGtGQUFrRixDQUFDO0FBQzlILE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNyRixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFtQixNQUFNLHlFQUF5RSxDQUFDO0FBQzdILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBNkJ0RCxNQUFNLE9BQU8saUJBQ1gsU0FBUSxpQkFBMEQ7SUE1QnBFOztRQStCRTs7V0FFRztRQUNILHFCQUFnQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixjQUFTLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLGdCQUFXLEdBQUcsS0FBSyxFQUFXLENBQUM7UUFDL0IscUJBQWdCLEdBQUcsS0FBSyxFQUFjLENBQUM7UUFDdkM7O1dBRUc7UUFDSCxjQUFTLEdBQUcsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDeEMsYUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4Qix3QkFBbUIsR0FBRyxLQUFLLEVBQW9CLENBQUM7UUFDaEQscUJBQWdCLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLGlCQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLFVBQUssR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUN4QixXQUFNLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLFlBQU8sR0FBRyxLQUFLLENBQXFCLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLG1CQUFjLEdBQUcsS0FBSyxDQUFXLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLGVBQVUsR0FBRyxLQUFLLEVBQWMsQ0FBQztRQUNqQyxhQUFRLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLG1CQUFjLEdBQUcsS0FBSyxFQUEyRCxDQUFDO1FBQ2xGLGFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsb0JBQWUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsZUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixlQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLG1CQUFjLEdBQUcsS0FBSyxFQUFXLENBQUM7UUFDbEMseUJBQW9CLEdBQUcsS0FBSyxFQUE0QixDQUFDO1FBRXpEOztXQUVHO1FBQ0gsa0JBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUI7O1dBRUc7UUFDSCxpQkFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQjs7V0FFRztRQUNILHNCQUFpQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxtQkFBYyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwQzs7V0FFRztRQUNILDBCQUFxQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxpQkFBWSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixxQkFBcUI7UUFDckIsaUJBQVksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFUixjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUM5QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHN0Msd0JBQW1CLEdBQUcsU0FBUyxDQUE0QixtQkFBbUIsQ0FBQyxDQUFDO1FBQ2hGLHdCQUFtQixHQUFHLFNBQVMsQ0FBNEIsbUJBQW1CLENBQUMsQ0FBQztRQUNoRixTQUFJLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLFlBQU8sR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDakMsZUFBVSxHQUFHLE1BQU0sQ0FBd0IsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5RCxtQkFBYyxHQUFHLE1BQU0sQ0FBd0IsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsRTs7V0FFRztRQUNILGlCQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBTTVCLHlCQUFvQixHQUFHLEtBQUssRUFBcUQsQ0FBQztRQUN6RSxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUNwQixrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFpQixFQUFFLENBQUMsQ0FBQztRQUVsRSx1QkFBa0IsR0FBRyxRQUFRLENBQzNCLEdBQUcsRUFBRTtZQUNILE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLEVBQ3hDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQ3RDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFFakMsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQy9CLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7Z0JBQzlELE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxFQUNELEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUNuQixDQUFDO1FBRUssUUFBRyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2xDLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsVUFBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUU1QixVQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ3hELHVCQUFrQixHQUFHLEdBQUcsQ0FBQztRQWtJbkMsb0JBQWUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzNELHdCQUFtQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkUsdUJBQWtCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXBHLGlCQUFZLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDN0IsT0FBTyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQztRQUM5QixDQUFDLENBQUM7UUEwRUYsb0JBQWUsR0FBRyxNQUFNLENBQVMsRUFBRSxDQUFDLENBQUM7UUFFckMsa0JBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzVCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUNwRCxFQUFFLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUM7WUFDbkQsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO0tBSUo7SUF4UEMsSUFBeUIsV0FBVyxDQUFDLENBQW9DO1FBQ3ZFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBMkJELFFBQVE7UUFDTiwwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ2IsSUFBSSxDQUFDLGFBQWE7YUFDZixJQUFJO1FBQ0gsZ0NBQWdDO1FBQ2hDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FHdEM7YUFDQSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNmLFlBQVk7WUFDWixJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ0osQ0FBQztJQUVRLFNBQVM7UUFDaEIsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUNwQixPQUFPLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUk7WUFDRixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25FLElBQUksZUFBZSxFQUFFO2dCQUNuQixNQUFNLFNBQVMsR0FBeUIsRUFBRSxDQUFDO2dCQUMzQyxNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDMUQsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7b0JBQzFCLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUMxQyxZQUFZO29CQUNaLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTTt3QkFBRSxTQUFTO29CQUM3QyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUN4QjtnQkFDRCxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO29CQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNwRTtTQUNGO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxNQUF5QztRQUM1QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM3QixPQUFPO1NBQ1I7UUFDRCxZQUFZO1FBQ1osSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QixLQUFLLE1BQU0sTUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEUsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3BDLElBQUksTUFBTSxDQUFDLHFCQUFxQjtnQkFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEksQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUF5QztRQUN2RCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ25ELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQy9DLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUU7Z0JBQzNCLE1BQU07cUJBQ0gsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQztxQkFDakMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ2IsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTzt3QkFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQztnQkFDbkUsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsTUFBTTtxQkFDSCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDO3FCQUNuQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDYixDQUFDLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztvQkFDbEIsQ0FBQyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO29CQUM1QixDQUFDLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQztvQkFDdkIsQ0FBQyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7Z0JBQ3hCLENBQUMsQ0FBQyxDQUFDO2dCQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDOUI7WUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDcEIsTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDO29CQUNuQixHQUFHLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxVQUFVLENBQUM7b0JBQzFELEdBQUcsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDO29CQUMzRCxHQUFHLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDO2lCQUMvQyxDQUFDLENBQUM7YUFDSjtTQUNGOztZQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFcEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQyxDQUFDLFVBQVU7Z0JBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDOztnQkFDL0gsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUN4SCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUF1QztRQUN0RCxNQUFNLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFNUMsSUFBSSxNQUFNLENBQUMsZUFBZTtZQUN4QixNQUFNLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNyQyxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDcEQscUNBQXFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxNQUFNLENBQUMsZ0JBQWdCO1lBQ3pCLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUN4QyxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDcEQscUNBQXFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBRUwsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFO1lBQ3ZCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQzNCLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDdkUsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNwRixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFlLENBQUMsR0FBRyxHQUFHLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBdUIsRUFBRSxNQUE0RjtRQUNwSSxPQUFPLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFtQixFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxHQUFvRjtRQUN0RyxPQUFPLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsU0FBd0I7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFtQixDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQVVELFlBQVk7UUFDVixJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPO1FBQ1gsWUFBWTtRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU87UUFDN0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDeEYsWUFBWTtRQUNaLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUU7WUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDMUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1Q7YUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDOUIsSUFBSTtnQkFDRixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkIsTUFBTSxJQUFJLEdBQUcsTUFBTSxhQUFhLENBQzlCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDcEIsR0FBRyxHQUFHO29CQUNOLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksV0FBVztvQkFDeEMsYUFBYSxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxNQUFNO2lCQUM5RCxDQUFDLENBQ0gsQ0FBQztnQkFDRixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztnQkFDekMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNuQjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDdEI7WUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6QjtRQUNELElBQUk7WUFDRixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztnQkFDWCxJQUFJLEVBQUUsR0FBRyxDQUFDLFFBQVE7Z0JBQ2xCLG1CQUFtQixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7YUFDOUQsQ0FBQyxDQUFDO1NBQ0o7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLFFBQVEsQ0FBQztTQUNWO0lBQ0gsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWU7UUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFO1lBQ3ZCLFdBQVcsRUFBRTtnQkFDWCxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7cUJBQ2xCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztxQkFDL0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3FCQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQzthQUM3QjtZQUNELFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSztZQUN0QixtQkFBbUIsRUFBRSxPQUFPO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxRQUFRLENBQUMsQ0FBQztRQUNSLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDO0lBQ2hGLENBQUM7SUFRUyxZQUFZO1FBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQztJQUNuSCxDQUFDOzhHQTVUVSxpQkFBaUI7a0dBQWpCLGlCQUFpQiw4cUpBMEQrQixtQkFBbUIsc0dBQ25CLG1CQUFtQixnR0FIbkUsbUJBQW1CLGdGQUNuQixtQkFBbUIsdUVDMUdoQywwK1FBNExBLDBERGhLSSxlQUFlLGtHQUVmLFdBQVcsd2RBSVgsb0JBQW9CLDRJQUNwQiwwQkFBMEIsaU1BQzFCLHFCQUFxQiw4SEFDckIsVUFBVSxvT0FFVixtQkFBbUIsc1lBQ25CLFlBQVksNmJBQ1osbUJBQW1CLDhLQUNuQixtQkFBbUIsd1NBRW5CLG1CQUFtQiwyS0FDbkIsZUFBZSxtREFDZixTQUFTOzsyRkFHQSxpQkFBaUI7a0JBM0I3QixTQUFTOytCQUNFLHlCQUF5QixjQUd2QixJQUFJLFdBQ1A7d0JBQ1AsZUFBZTt3QkFDZixJQUFJO3dCQUNKLFdBQVc7d0JBQ1gsS0FBSzt3QkFDTCxRQUFRO3dCQUNSLFlBQVk7d0JBQ1osb0JBQW9CO3dCQUNwQiwwQkFBMEI7d0JBQzFCLHFCQUFxQjt3QkFDckIsVUFBVTt3QkFDVixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsU0FBUzt3QkFDVCxtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsU0FBUztxQkFDVjs4QkF3RG1CLFNBQVM7c0JBQTVCLE1BQU07dUJBQUMsVUFBVTtnQkFDUixhQUFhO3NCQUF0QixNQUFNO2dCQUN5QixhQUFhO3NCQUE1QyxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDRSxhQUFhO3NCQUE1QyxTQUFTO3VCQUFDLG1CQUFtQjtnQkFZTCxXQUFXO3NCQUFuQyxLQUFLO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmLCBzaWduYWwsIGNvbXB1dGVkLCBpbnB1dCwgaW5qZWN0LCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgbGFzdFZhbHVlRnJvbSwgbWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVc2VyQWN0aXZpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vUmV1c2FibGVzL3JldXNhYmxlLXBhZ2VzL3VzZXItYWN0aXZpdHkvdWEtZXh0cmFzL3VzZXItYWN0aXZpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBJVGFibGVTZWFyY2hSZXNwLCBUYWJsZUh0dHBzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvdGFibGUtaHR0cHMvdGFibGUtaHR0cHMuY29tcG9uZW50JztcbmltcG9ydCB7IElPYmplY3RMaXRlcmFsLCBJUm93T3B0aW9uLCBJU3RyaWN0Rm9ybUdyb3VwLCBTb3J0VHlwZSwgVGFibGVDb2wgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvbW9kZWxzL2luZGV4Lm1vZGVsJztcbmltcG9ydCB7IEVVQSB9IGZyb20gJy4uLy4uL3JldXNhYmxlLXBhZ2VzL3VzZXItYWN0aXZpdHkvdWEtZXh0cmFzL3VzZXItYWN0aXZpdHkubW9kZWwnO1xuaW1wb3J0IHsgRnVuY3Rpb25DYWxsZXIyLCBUb0FueVBpcGUgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvcGlwZXMvdXRpbGl0eS5waXBlJztcbmltcG9ydCB7IFRhYmxlUGxhaW5Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvY29tcG9uZW50cy90YWJsZS1wbGFpbi90YWJsZS1wbGFpbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnRuQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvYnRuL2J0bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXRCYXNpY0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL2lucHV0L2lucHV0LWJhc2ljLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvY29tcG9uZW50cy9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uTWVzc2FnZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL2lucHV0L3ZhbGlkYXRpb24tbWVzc2FnZS92YWxpZGF0aW9uLW1lc3NhZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBob25lTnVtYmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvcGhvbmUtbnVtYmVyL3Bob25lLW51bWJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmdJZiwgTmdGb3IsIE5nU3dpdGNoLCBOZ1N3aXRjaENhc2UsIE5nU3dpdGNoRGVmYXVsdCwgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IExvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL2xvYWRlci9sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBDb25maWcgfSBmcm9tICcuLi8uLi8uLi9jb25maWdzL2luZGV4LmNvbmZpZyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJhc2VGb3JtR2VuZXJhdG9yLCBJQmFzZUZvcm1TY2hlbWEgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvY29tcG9uZW50cy9mb3JtLWdlbmVyYXRvci9mb3JtLWdlbmVyYXRvci5iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWZpbmQtaXRlbSxmaW5kLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZmluZC1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmluZC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBMb2FkZXJDb21wb25lbnQsXG4gICAgTmdJZixcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOZ0ZvcixcbiAgICBOZ1N3aXRjaCxcbiAgICBOZ1N3aXRjaENhc2UsXG4gICAgUGhvbmVOdW1iZXJDb21wb25lbnQsXG4gICAgVmFsaWRhdGlvbk1lc3NhZ2VDb21wb25lbnQsXG4gICAgQXV0b2NvbXBsZXRlQ29tcG9uZW50LFxuICAgIFJvdXRlckxpbmssXG4gICAgTmdTd2l0Y2hEZWZhdWx0LFxuICAgIElucHV0QmFzaWNDb21wb25lbnQsXG4gICAgQnRuQ29tcG9uZW50LFxuICAgIFRhYmxlSHR0cHNDb21wb25lbnQsXG4gICAgVGFibGVQbGFpbkNvbXBvbmVudCxcbiAgICBBc3luY1BpcGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGdW5jdGlvbkNhbGxlcjIsXG4gICAgVG9BbnlQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBGaW5kSXRlbUNvbXBvbmVudDxUUXVlcnkgZXh0ZW5kcyBJT2JqZWN0TGl0ZXJhbCA9IGFueSwgVFJvdyBleHRlbmRzIElPYmplY3RMaXRlcmFsID0gYW55PlxuICBleHRlbmRzIEJhc2VGb3JtR2VuZXJhdG9yPFRRdWVyeSwgSVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93Pj5cbiAgaW1wbGVtZW50cyBPbkluaXRcbntcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc29ydCBzY2hlbWFcbiAgICovXG4gIGF1dG9Gb3JtYXRTY2hlbWEgPSBpbnB1dCh0cnVlKTtcbiAgYXV0b09yZGVyID0gaW5wdXQodHJ1ZSk7XG4gIGNlbnRlckNlbGxzID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgZGlzcGxheWVkQ29sdW1ucyA9IGlucHV0PFRhYmxlQ29sW10+KCk7XG4gIC8qKlxuICAgKiBSb3cgZ3JpZCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBncmlkQ2xhc3MgPSBpbnB1dCgnY29sLW1kLTQgY29sLXh4bC0zJyk7XG4gIGhpZGVGb3JtID0gaW5wdXQoZmFsc2UpO1xuICBleHBhbmRlZFJvd1RlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgaXNUYWJsZVBhZ2luYXRlZCA9IGlucHV0KGZhbHNlKTtcbiAgaXNFeHBhbmRhYmxlID0gaW5wdXQoZmFsc2UpO1xuICBsYWJlbCA9IGlucHV0PHN0cmluZz4oKTtcbiAgbm93cmFwID0gaW5wdXQoZmFsc2UpO1xuICBvcHRpb25zID0gaW5wdXQ8SVJvd09wdGlvbjxUUm93PltdPih1bmRlZmluZWQsIHsgYWxpYXM6ICdyb3dPcHRpb25zJyB9KTtcbiAgb3JkZXJEaXJlY3Rpb24gPSBpbnB1dDxTb3J0VHlwZT4oJ2FzYycpO1xuICBvcmRlckZpZWxkID0gaW5wdXQ8a2V5b2YgVFJvdz4oKTtcbiAgcGFnZVNpemUgPSBpbnB1dCgxMCk7XG4gIHNlYXJjaEZ1bmN0aW9uID0gaW5wdXQ8KGRhdGE6IGFueSkgPT4gT2JzZXJ2YWJsZTxUUm93W10gfCB7IGNvbnRlbnQ6IFRSb3dbXSB9Pj4oKTtcbiAgc2hvd0RhdGEgPSBpbnB1dCh0cnVlKTtcbiAgc2VhcmNoSWZOb1F1ZXJ5ID0gaW5wdXQodHJ1ZSk7XG4gIHNob3dFeHBvcnQgPSBpbnB1dCh0cnVlKTtcbiAgc2hvd0ZpbHRlciA9IGlucHV0KGZhbHNlKTtcbiAgc2hvd1JlZnJlc2hCdG4gPSBpbnB1dDxib29sZWFuPigpO1xuICBzdGFydFNlY3Rpb25UZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50Pj4oKTtcbiAgZm9ybTogRm9ybUdyb3VwO1xuICAvKipcbiAgICogVXNlZCB0byBzcGVjaWZ5IGlmIHRoZSBzZWFyY2ggYnV0dG9uIHNob3VsZCBiZSBzaG93blxuICAgKi9cbiAgc2hvd1NlYXJjaEJ0biA9IGlucHV0KHRydWUpO1xuICAvKipcbiAgICogVXNlZCB0byBzcGVjaWZ5IGlmIHRoZSBjbGVhciBmb3JtIGJ1dHRvbiBzaG91bGQgYmUgc2hvd25cbiAgICovXG4gIHNob3dDbGVhckJ0biA9IGlucHV0KHRydWUpO1xuICAvKipcbiAgICogVXNlZCB0byBzcGVjaWZ5IGlmIHZhbGlkYXRpb24gbWVzc2FnZXMgc2hvdWxkIGJlIHNob3duXG4gICAqL1xuICBzaG93VmFsaWRhdGlvbk1zZyA9IGlucHV0KHRydWUpO1xuICBjcmVhdGVCdG5Sb3V0ZSA9IGlucHV0KCcuLi9jcmVhdGUnKTtcbiAgLyoqXG4gICAqIFVzZWQgdG8gc3BlY2lmeSBpZiBzaG93IGFkZGl0aW9uYWwgY29sdW1uIGJ1dHRvbiB3aWlsIGJlIGRpc3BsYXllZCBvciBub3QuXG4gICAqL1xuICBzaG93QWRkaXRpb25hbENvbHVtbnMgPSBpbnB1dCh0cnVlKTtcbiAgc21hbGxlckZvbnRzID0gaW5wdXQoZmFsc2UpO1xuICAvKiogVXNlIGNoZWNrYm94ZXMgKi9cbiAgdXNlU2VsZWN0aW9uID0gaW5wdXQoZmFsc2UpO1xuXG4gIEBPdXRwdXQoJ3Jvd0NsaWNrJykgX3Jvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBjbGlja2VkQ3JlYXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAVmlld0NoaWxkKFRhYmxlSHR0cHNDb21wb25lbnQpIHRhYmxlSFRUUFNSRUY6IFRhYmxlSHR0cHNDb21wb25lbnQ8VFJvdz47XG4gIEBWaWV3Q2hpbGQoVGFibGVQbGFpbkNvbXBvbmVudCkgdGFibGVQbGFpblJlZjogVGFibGVQbGFpbkNvbXBvbmVudDxUUm93PjtcbiAgdGFibGVIVFRQU1JFRlNpZ25hbCA9IHZpZXdDaGlsZDxUYWJsZUh0dHBzQ29tcG9uZW50PFRSb3c+PihUYWJsZUh0dHBzQ29tcG9uZW50KTtcbiAgdGFibGVQbGFpblJlZlNpZ25hbCA9IHZpZXdDaGlsZDxUYWJsZVBsYWluQ29tcG9uZW50PFRSb3c+PihUYWJsZVBsYWluQ29tcG9uZW50KTtcbiAgZGF0YSA9IHNpZ25hbDxUUm93W10+KFtdKTtcbiAgbG9hZGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHNlYXJjaEZvcm0gPSBzaWduYWw8Rm9ybUdyb3VwIHwgdW5kZWZpbmVkPihuZXcgRm9ybUdyb3VwKHt9KSk7XG4gIHN0YW5kYWxvbmVGb3JtID0gc2lnbmFsPEZvcm1Hcm91cCB8IHVuZGVmaW5lZD4obmV3IEZvcm1Hcm91cCh7fSkpO1xuICAvKipcbiAgICogVXNlZCB0byBzcGVjaWZ5IGlmIHNob3cgY3JlYXRlIGJ1dHRvbiBpcyBuZWVkZWQuXG4gICAqL1xuICBjcmVhdGVCdXR0b24gPSBpbnB1dChmYWxzZSk7XG5cbiAgQElucHV0KCdmb3JtU2NoZW1hJykgc2V0IF9mb3JtU2NoZW1hKHY6IElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSwgVFJvdz5bXSkge1xuICAgIHRoaXMuaW5pdChjbG9uZURlZXAodj8uZmlsdGVyKCh4KSA9PiB4KSkpO1xuICB9XG5cbiAgc2VhcmNoT2JzZXJ2YWJsZUZ1bmMgPSBpbnB1dDwoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPElUYWJsZVNlYXJjaFJlc3A8VFJvdz4+PigpO1xuICByZWFkb25seSBkZWxpbWl0ZXJGaWVsZCA9ICd+fn4nO1xuICByZWFkb25seSBkZWxpbWl0ZXJXb3JkID0gJ35+JztcbiAgcHJvdGVjdGVkIHNlYXJjaFRyaWdnZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElPYmplY3RMaXRlcmFsPih7fSk7XG5cbiAgY29tcHV0ZWRGb3JtU2NoZW1hID0gY29tcHV0ZWQ8SVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93PltdPihcbiAgICAoKSA9PiB7XG4gICAgICBjb25zdCBmb3JtU2NoZW1hID0gdGhpcy5mb3JtU2NoZW1hKCkgfHwgW10sXG4gICAgICAgIHN0YW5kYWxvbmVGb3JtID0gdGhpcy5zdGFuZGFsb25lRm9ybSgpLFxuICAgICAgICBzZWFyY2hGb3JtID0gdGhpcy5zZWFyY2hGb3JtKCk7XG5cbiAgICAgIHJldHVybiBmb3JtU2NoZW1hLm1hcCgoc2NoZW1lKSA9PiB7XG4gICAgICAgIHNjaGVtZS5mb3JtID0gc2NoZW1lLnN0YW5kYWxvbmUgPyBzdGFuZGFsb25lRm9ybSA6IHNlYXJjaEZvcm07XG4gICAgICAgIHJldHVybiBzY2hlbWU7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHsgZXF1YWw6IGlzRXF1YWwgfSxcbiAgKTtcblxuICBwdWJsaWMgdWFTID0gaW5qZWN0KFVzZXJBY3Rpdml0eVNlcnZpY2UpO1xuICBwdWJsaWMgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHB1YmxpYyByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG5cbiAgcHJvdGVjdGVkIHN1YnMyID0gdGhpcy51dGlsaXR5U2VydmljZS5jcmVhdGVTdWJzY3JpcHRpb25NYW5hZ2VyKCk7XG4gIHByb3RlY3RlZCBzZWFyY2hEZWJvdW5jZVRpbWUgPSA1MDA7XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vICB0aGlzLmZldGNoU2F2ZWRRdWVyeSgpXG4gICAgdGhpcy5zdWJzMi5wdXNoKFxuICAgICAgdGhpcy5zZWFyY2hUcmlnZ2VyXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIC8vIG1hcChyPT4oe3F1ZXJ5OnIsY2hlY2tzdW19KSksXG4gICAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuc2VhcmNoRGVib3VuY2VUaW1lKSxcbiAgICAgICAgICAvLyBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgIC8vIGZpbHRlcigoeCkgPT4gKHgpKSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAgICAgdGhpcy5zZWFyY2hEZWJvdW5jZVRpbWUgPSAwO1xuICAgICAgICAgIHRoaXMuX3NlYXJjaCgpO1xuICAgICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25EZXN0cm95KCkge1xuICAgIHRoaXMuc3ViczI/LmNsZWFyKCk7XG4gICAgcmV0dXJuIHN1cGVyLm9uRGVzdHJveSgpO1xuICB9XG5cbiAgZmV0Y2hTYXZlZFF1ZXJ5KCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwcmV2UXVlcnlTdHJpbmcgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdxJyk7XG4gICAgICBpZiAocHJldlF1ZXJ5U3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHByZXZRdWVyeTogeyBbZjogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICAgICAgY29uc3QgZmllbGRzID0gcHJldlF1ZXJ5U3RyaW5nLnNwbGl0KHRoaXMuZGVsaW1pdGVyRmllbGQpO1xuICAgICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgICAgICAgIGNvbnN0IGYgPSBmaWVsZC5zcGxpdCh0aGlzLmRlbGltaXRlcldvcmQpO1xuICAgICAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgICAgIGlmIChmWzFdID09IG51bGwgfHwgZlsxXSA9PSAnbnVsbCcpIGNvbnRpbnVlO1xuICAgICAgICAgIHByZXZRdWVyeVtmWzBdXSA9IGZbMV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWFyY2hGb3JtKCk/LnBhdGNoVmFsdWUocHJldlF1ZXJ5KTtcbiAgICAgICAgaWYgKE9iamVjdC52YWx1ZXMocHJldlF1ZXJ5KS5zb21lKCh4KSA9PiB4ICE9IG51bGwpKSB0aGlzLnNlYXJjaCgpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBpbml0KHNjaGVtYTogSVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93PltdKSB7XG4gICAgdGhpcy5vbkRlc3Ryb3koKTtcbiAgICBpZiAoIXNjaGVtYT8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLl9zZXRGb3JtU2NoZW1hcyhzY2hlbWEpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICB0aGlzLmhhbmRsZUFsbFNjaGVtYShzY2hlbWEpO1xuICAgIGZvciAoY29uc3Qgc2NoZW1lIG9mIHRoaXMuZm9ybVNjaGVtYSgpKSB0aGlzLmhhbmRsZUZvcm1TY2hlbWUoc2NoZW1lKTtcbiAgICBmb3IgKGNvbnN0IHNjaGVtZSBvZiB0aGlzLmZvcm1TY2hlbWEoKSlcbiAgICAgIGlmIChzY2hlbWUudHJpZ2dlck9uQ2hhbmdlT25Jbml0KSBzY2hlbWUub25DaGFuZ2VGdW5jKHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpLCB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKVtzY2hlbWUuZmllbGRdLCB0aGlzKTtcbiAgfVxuXG4gIGhhbmRsZUFsbFNjaGVtYShzY2hlbWE6IElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSwgVFJvdz5bXSkge1xuICAgIHNjaGVtYS5mb3JFYWNoKCh4KSA9PiAoeC50eXBlID0geC50eXBlIHx8ICd0ZXh0JykpO1xuICAgIGlmICh0aGlzLmF1dG9Gb3JtYXRTY2hlbWEoKSB8fCB0aGlzLmF1dG9PcmRlcigpKSB7XG4gICAgICBpZiAodGhpcy5hdXRvRm9ybWF0U2NoZW1hKCkpIHtcbiAgICAgICAgc2NoZW1hXG4gICAgICAgICAgLmZpbHRlcigoeCkgPT4geC50eXBlID09ICdzZWxlY3QnKVxuICAgICAgICAgIC5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICAgICAgICBpZiAoeC5vcHRpb25zPy5sZW5ndGggPiA1IHx8ICF4Lm9wdGlvbnMpIHgudHlwZSA9ICdhdXRvY29tcGxldGUnO1xuICAgICAgICAgIH0pO1xuICAgICAgICBzY2hlbWFcbiAgICAgICAgICAuZmlsdGVyKCh4KSA9PiB4LnR5cGUgPT0gJ2NoZWNrYm94JylcbiAgICAgICAgICAuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICAgICAgeC50eXBlID0gJ3NlbGVjdCc7XG4gICAgICAgICAgICB4Lm9wdGlvbnMgPSBDb25maWcuYm9vbExpc3Q7XG4gICAgICAgICAgICB4LmxhYmVsRmllbGQgPSAndGl0bGUnO1xuICAgICAgICAgICAgeC52YWx1ZUZpZWxkID0gJ2NvZGUnO1xuICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9zZXRGb3JtU2NoZW1hcyhzY2hlbWEpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuYXV0b09yZGVyKCkpIHtcbiAgICAgICAgc2NoZW1hID0gc2NoZW1hLnNvcnQyKCdsYWJlbCcsIHRydWUpO1xuICAgICAgICB0aGlzLl9zZXRGb3JtU2NoZW1hcyhbXG4gICAgICAgICAgLi4uc2NoZW1hPy5maWx0ZXIoKHgpID0+IHguYWN0aW9uICYmIHgudHlwZSAhPSAnY2hlY2tib3gnKSxcbiAgICAgICAgICAuLi5zY2hlbWE/LmZpbHRlcigoeCkgPT4gIXguYWN0aW9uICYmIHgudHlwZSAhPSAnY2hlY2tib3gnKSxcbiAgICAgICAgICAuLi5zY2hlbWE/LmZpbHRlcigoeCkgPT4geC50eXBlID09ICdjaGVja2JveCcpLFxuICAgICAgICBdKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgdGhpcy5fc2V0Rm9ybVNjaGVtYXMoc2NoZW1hKTtcblxuICAgIHNjaGVtYS5mb3JFYWNoKChzKSA9PiB7XG4gICAgICBpZiAocy5zdGFuZGFsb25lKSB0aGlzLnN0YW5kYWxvbmVGb3JtKCkucmVnaXN0ZXJDb250cm9sKHMuZmllbGQudG9TdHJpbmcoKSwgbmV3IEZvcm1Db250cm9sKG51bGwsIHMudmFsaWRhdG9ycywgcy5hc3luY1ZhbGlkYXRvcnMpKTtcbiAgICAgIGVsc2UgdGhpcy5zZWFyY2hGb3JtKCkucmVnaXN0ZXJDb250cm9sKHMuZmllbGQudG9TdHJpbmcoKSwgbmV3IEZvcm1Db250cm9sKHMudmFsdWUsIHMudmFsaWRhdG9ycywgcy5hc3luY1ZhbGlkYXRvcnMpKTtcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZUZvcm1TY2hlbWUoc2NoZW1lOiBJU2VhcmNoRm9ybVNjaGVtYTxUUXVlcnksIFRSb3c+KSB7XG4gICAgc2NoZW1lLmlkID0gdGhpcy51dGlsaXR5U2VydmljZS5nZW5lcmF0ZVVVSUQoKTtcbiAgICB0aGlzLnVwZGF0ZUZvcm1TY2hlbWEoc2NoZW1lLmZpZWxkLCBzY2hlbWUpO1xuXG4gICAgaWYgKHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMpXG4gICAgICBzY2hlbWUub3B0aW9uc0luaXRGdW5jLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICBzY2hlbWUub3B0aW9ucyA9IHI7XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybVNjaGVtYShzY2hlbWUuZmllbGQsIHsgb3B0aW9uczogciB9KTtcbiAgICAgICAgLy8gdGhpcy5vcHRpb25zTWFwW3NjaGVtZS5maWVsZF0gPSByO1xuICAgICAgfSk7XG5cbiAgICBpZiAoc2NoZW1lLm9wdGlvbnNJbml0RnVuYzIpXG4gICAgICBzY2hlbWUub3B0aW9uc0luaXRGdW5jMigpLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgICBzY2hlbWUub3B0aW9ucyA9IHI7XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybVNjaGVtYShzY2hlbWUuZmllbGQsIHsgb3B0aW9uczogciB9KTtcbiAgICAgICAgLy8gdGhpcy5vcHRpb25zTWFwW3NjaGVtZS5maWVsZF0gPSByO1xuICAgICAgfSk7XG5cbiAgICBpZiAoc2NoZW1lLm9uQ2hhbmdlRnVuYykge1xuICAgICAgY29uc3Qgc3ViID0gdGhpcy5zZWFyY2hGb3JtKClcbiAgICAgICAgPy5jb250cm9sc1tzY2hlbWUuZmllbGQ/LnRvU3RyaW5nKCldPy52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoMCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHIpID0+IHNjaGVtZS5vbkNoYW5nZUZ1bmModGhpcy5zZWFyY2hGb3JtKCk/LmdldFJhd1ZhbHVlKCksIHIsIHRoaXMpKTtcbiAgICAgIHRoaXMuc3Vic1tzY2hlbWUuZmllbGQgYXMgc3RyaW5nXSA9IHN1YjtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVGb3JtU2NoZW1hKGZpZWxkTmFtZToga2V5b2YgVFF1ZXJ5LCBzY2hlbWU6IFBhcnRpYWw8SVNlYXJjaEZvcm1TY2hlbWE8eyBbayBpbiBrZXlvZiBUUXVlcnldOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+IHwgYW55IH0+Pikge1xuICAgIHJldHVybiBzdXBlci5fdXBkYXRlRm9ybVNjaGVtYShmaWVsZE5hbWUgYXMgc3RyaW5nLCBzY2hlbWUpO1xuICB9XG5cbiAgdXBkYXRlQWxsRm9ybVNjaGVtYShtYXA6IChmb3JtRmllbGQ6IElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSwgVFJvdz4pID0+IElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSwgVFJvdz4pIHtcbiAgICByZXR1cm4gc3VwZXIuX3VwZGF0ZUFsbEZvcm1TY2hlbWEobWFwKTtcbiAgfVxuXG4gIGRldGFjaEZvcm1TY2hlbWUoZmllbGROYW1lPzoga2V5b2YgVFF1ZXJ5KSB7XG4gICAgdGhpcy5zdWJzW2ZpZWxkTmFtZSBhcyBzdHJpbmddPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgc2VhcmNoRm9ybVZhbHVlID0gdG9TaWduYWwodGhpcy5zZWFyY2hGb3JtKCkudmFsdWVDaGFuZ2VzKTtcbiAgc3RhbmRhbG9uZUZvcm1WYWx1ZSA9IHRvU2lnbmFsKHRoaXMuc3RhbmRhbG9uZUZvcm0oKS52YWx1ZUNoYW5nZXMpO1xuICBhbGxTZWFyY2hGb3JtVmFsdWUgPSBjb21wdXRlZCgoKSA9PiAoeyAuLi50aGlzLnNlYXJjaEZvcm1WYWx1ZSgpLCAuLi50aGlzLnN0YW5kYWxvbmVGb3JtVmFsdWUoKSB9KSk7XG5cbiAgdHJhY2tCeVJvd0lEID0gKGluZGV4LCBpdGVtKSA9PiB7XG4gICAgcmV0dXJuIGl0ZW0/LnZhbHVlPy5fX3Jvd0lEO1xuICB9O1xuXG4gIGNsZWFyRmlsdGVycygpIHtcbiAgICB0aGlzLnNlYXJjaEZvcm0oKT8ucmVzZXQoKTtcbiAgICB0aGlzLnNlYXJjaCgpO1xuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLnNlYXJjaCgpO1xuICB9XG5cbiAgc2VhcmNoKCkge1xuICAgIHRoaXMuc2VhcmNoVHJpZ2dlci5uZXh0KHRoaXMuc2VhcmNoRm9ybSgpLmdldFJhd1ZhbHVlKCkpO1xuICB9XG5cbiAgYXN5bmMgX3NlYXJjaCgpIHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICBpZiAoIXRoaXMuc2VhcmNoRm9ybSkgcmV0dXJuO1xuICAgIGNvbnN0IHJlcSA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZGVsZXRlTnVsbChjbG9uZURlZXAodGhpcy5zZWFyY2hGb3JtKCk/LmdldFJhd1ZhbHVlKCkpKTtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICBpZiAodGhpcy5pc1RhYmxlUGFnaW5hdGVkKCkpIHtcbiAgICAgIGlmICghdGhpcy5kYXRhKCkpIHRoaXMubG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgICB0aGlzLmRhdGEuc2V0KFtdKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnRhYmxlSFRUUFNSRUY/LnNlYXJjaChyZXEpO1xuICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIH0sIDEwMCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNlYXJjaEZ1bmN0aW9uKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgbGFzdFZhbHVlRnJvbShcbiAgICAgICAgICB0aGlzLnNlYXJjaEZ1bmN0aW9uKCkoe1xuICAgICAgICAgICAgLi4ucmVxLFxuICAgICAgICAgICAgc29ydEJ5OiB0aGlzLm9yZGVyRmllbGQoKSB8fCAnY3JlYXRlZE9uJyxcbiAgICAgICAgICAgIHNvcnREaXJlY3Rpb246IHRoaXMub3JkZXJEaXJlY3Rpb24oKT8udG9VcHBlckNhc2UoKSB8fCAnREVTQycsXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZGF0YS5zZXQoZGF0YT8uWydjb250ZW50J10gfHwgZGF0YSk7XG4gICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihFcnJvcik7XG4gICAgICB9XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMudWFTLmFkZCh7XG4gICAgICAgIGNvZGU6IEVVQS5zZWFyY2hlZCxcbiAgICAgICAgYWN0aXZpdHlEZXNjcmlwdGlvbjogdGhpcy5sYWJlbCgpICsgJyAnICsgSlNPTi5zdHJpbmdpZnkocmVxKSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBkZWJ1Z2dlcjtcbiAgICB9XG4gIH1cblxuICBzYXZlUXVlcnkocXVlcnkgPSB0aGlzLnNlYXJjaEZvcm1WYWx1ZSkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICBxOiBPYmplY3Qua2V5cyhxdWVyeSlcbiAgICAgICAgICAuZmlsdGVyKCh4KSA9PiBxdWVyeVt4XSAhPSBudWxsKVxuICAgICAgICAgIC5tYXAoKGspID0+IGAke2t9JHt0aGlzLmRlbGltaXRlcldvcmR9JHtxdWVyeVtrXX1gKVxuICAgICAgICAgIC5qb2luKHRoaXMuZGVsaW1pdGVyRmllbGQpLFxuICAgICAgfSxcbiAgICAgIHJlcGxhY2VVcmw6IHRydWUsXG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxuICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyxcbiAgICB9KTtcbiAgfVxuICByb3dDbGljayhlKSB7XG4gICAgdGhpcy5fcm93Q2xpY2suZW1pdChlKTtcbiAgfVxuXG4gIGdldCBzZWxlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVIVFRQU1JFRj8uc2VsZWN0ZWRJdGVtcyB8fCB0aGlzLnRhYmxlUGxhaW5SZWY/LnNlbGVjdGVkSXRlbXM7XG4gIH1cbiAgc2VsZWN0aW9uU2lnbmFsID0gc2lnbmFsPFRSb3dbXT4oW10pO1xuXG4gIGlzQW55U2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdGggPSB0aGlzLnRhYmxlSFRUUFNSRUZTaWduYWwoKT8uaXNBbnlTZWxlY3RlZCgpLFxuICAgICAgdHAgPSB0aGlzLnRhYmxlUGxhaW5SZWZTaWduYWwoKT8uaXNBbnlTZWxlY3RlZCgpO1xuICAgIHJldHVybiB0aCB8fCB0cDtcbiAgfSk7XG4gIHByb3RlY3RlZCBzZXRTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5zZWxlY3Rpb25TaWduYWwuc2V0KHRoaXMudGFibGVIVFRQU1JFRj8uc2VsZWN0ZWRJdGVtc1NpZ25hbCgpIHx8IHRoaXMudGFibGVQbGFpblJlZj8uc2VsZWN0ZWRJdGVtc1NpZ25hbCgpKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSBleHRlbmRzIElPYmplY3RMaXRlcmFsID0gYW55LCBUUm93IGV4dGVuZHMgSU9iamVjdExpdGVyYWwgPSBhbnk+XG4gIGV4dGVuZHMgSUJhc2VGb3JtU2NoZW1hPFxuICAgIFRRdWVyeSxcbiAgICBGaW5kSXRlbUNvbXBvbmVudDxUUXVlcnksIFRSb3c+LFxuICAgIHtcbiAgICAgIFtLIGluIGtleW9mIFRRdWVyeV06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gICAgfVxuICA+IHtcbiAgc3RhbmRhbG9uZT86IGJvb2xlYW47XG4gIGFjdGlvbj86IChyb3c6IFRSb3csIGNlbGw6IGFueSwgZm9ybT86IEZvcm1Hcm91cDxJU3RyaWN0Rm9ybUdyb3VwPFRRdWVyeT4+KSA9PiBhbnk7XG59XG4iLCI8bG9hZGVyIFtsb2FkaW5nXT1cImxvYWRpbmcoKVwiPlxuICBAaWYgKCFoaWRlRm9ybSgpICYmIHNlYXJjaEZvcm0oKSkge1xuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwic2VhcmNoRm9ybSgpXCIgKG5nU3VibWl0KT1cInNlYXJjaCgpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICBAZm9yIChzY2hlbWUgb2YgY29tcHV0ZWRGb3JtU2NoZW1hKCk7IHRyYWNrIHNjaGVtZSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ7eyBncmlkQ2xhc3MoKSB9fSBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtZW5kXCI+XG4gICAgICAgICAgICAgIEBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ3RlbCcpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwcC1waG9uZS1udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJzY2hlbWUuZm9ybVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInNjaGVtZS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc2hvd0xhYmVsXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbkljb25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtjb3VudHJ5Q29kZTNdPVwic2NoZW1lLmNvdW50cnlDb2RlM1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNjaGVtZS5kaXNhYmxlZElmIHwgZnVuY3Rpb25DYWxsZXIyOiBzZWFyY2hGb3JtVmFsdWUoKSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSlcIlxuICAgICAgICAgICAgICAgICAgICAgICNpbnB1dFRhZyAvPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dWYWxpZGF0aW9uTXNnKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YXBwLXZhbGlkYXRpb24tbWVzc2FnZSBbaW5wdXRdPVwiaW5wdXRUYWdcIiAvPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGNhc2UgKHNjaGVtZS50eXBlID09ICdhdXRvY29tcGxldGUnKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtYXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwic2NoZW1lLmZvcm1cIlxuICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXV0b1BpY2tWYWx1ZUZpZWxkXT1cInNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbFR5cGVdPVwic2NoZW1lLmxhYmVsVHlwZSB8IHRvQW55XCJcbiAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc0Z1bmNdPVwic2NoZW1lLm9wdGlvbnNGdW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlRmllbGRdPVwic2NoZW1lLnZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaGludF09XCJzY2hlbWUuaGludFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNjaGVtZS5kaXNhYmxlZElmIHwgZnVuY3Rpb25DYWxsZXIyOiBzZWFyY2hGb3JtVmFsdWUgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAjaW5wdXRUYWcgLz5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93VmFsaWRhdGlvbk1zZygpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGFwcC12YWxpZGF0aW9uLW1lc3NhZ2UgW2lucHV0XT1cImlucHV0VGFnXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZvcm0+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImd4LTIgcm93IGFsaWduLWl0ZW1zLWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWlucHV0LWJhc2ljXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI2Zvcm1GaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwic2NoZW1lLmZvcm1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInNjaGVtZS50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b1BpY2tWYWx1ZUZpZWxkXT1cInNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cInNjaGVtZS52YWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGUgfCB0b0FueVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRTaWduYWxdPVwic2NoZW1lLmNoZWNrZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCIhIXNjaGVtZS5hc3luY1ZhbGlkYXRvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbkljb25dPVwiISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbm9Gb3JtYXRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwic2NoZW1lLm9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWNpbWFsUG9pbnRzXT1cInNjaGVtZS5kZWNpbWFsUG9pbnRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGludF09XCJzY2hlbWUuaGludFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCJzY2hlbWUubWF4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cInNjaGVtZS5taW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzY2hlbWUucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogc2VhcmNoRm9ybVZhbHVlIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2NoZW1lLnN0YW5kYWxvbmUgJiYgc2NoZW1lLmFjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA9XCJzaG93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZm9ybUZpZWxkPy52YWxpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1jbGljayk9XCJzY2hlbWUuYWN0aW9uKGFsbFNlYXJjaEZvcm1WYWx1ZSgpLCBmb3JtRmllbGQudmFsdWVTaWduYWwoKSwgc3RhbmRhbG9uZUZvcm0oKSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2NoZW1lLmFjdGlvbiAmJiAhc2NoZW1lLnN0YW5kYWxvbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1idG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cInNjaGVtZS5pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uQnRuXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uVHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWNsaWNrKT1cInNjaGVtZS5hY3Rpb24oYWxsU2VhcmNoRm9ybVZhbHVlKCksIGZvcm1GaWVsZC52YWx1ZVNpZ25hbCgpLCBzZWFyY2hGb3JtKCkpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgQGlmIChzaG93VmFsaWRhdGlvbk1zZygpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtdmFsaWRhdGlvbi1tZXNzYWdlIFtpbnB1dF09XCJmb3JtRmllbGRcIiAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGQtZmxleFwiPlxuICAgICAgICAgIEBpZiAoc2hvd0NsZWFyQnRuKCkpIHtcbiAgICAgICAgICAgIDxhcHAtYnRuIHR5cGU9XCJkYW5nZXItb3V0bGluZVwiIHRleHQ9XCJDbGVhclwiIGljb249XCJkZWxldGVcIiAobWNsaWNrKT1cImNsZWFyRmlsdGVycygpXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0xXCI+PC9zcGFuPlxuICAgICAgICAgIEBpZiAoc2hvd1NlYXJjaEJ0bigpKSB7XG4gICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICBbZ3JvdXBdPVwiJ3NlYXJjaCdcIlxuICAgICAgICAgICAgICBbaWNvbkJ0bl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgdGV4dD1cIlNlYXJjaFwiXG4gICAgICAgICAgICAgIGFjdGlvblR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICBbZXhjbHVkZUxvZ2dpbmddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2VhcmNoRnVuY3Rpb24oKSAmJiAhaXNUYWJsZVBhZ2luYXRlZCgpXCJcbiAgICAgICAgICAgICAgKG1jbGljayk9XCJzZWFyY2goKVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoY3JlYXRlQnV0dG9uKCkpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIEBpZiAoY3JlYXRlQnRuUm91dGUoKSkge1xuICAgICAgICAgICAgICA8YXBwLWJ0biB0eXBlPVwib3V0bGluZVwiIHRleHQ9XCJDcmVhdGVcIiBpY29uPVwiYWRkXCIgKG1jbGljayk9XCJjbGlja2VkQ3JlYXRlLmVtaXQoKVwiIHJvdXRlckxpbms9XCJ7eyBjcmVhdGVCdG5Sb3V0ZSgpIH19XCIgLz5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8YXBwLWJ0biB0eXBlPVwib3V0bGluZVwiIHRleHQ9XCJDcmVhdGVcIiBpY29uPVwiYWRkXCIgKG1jbGljayk9XCJjbGlja2VkQ3JlYXRlLmVtaXQoKVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgfVxuXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIlt0YWJsZVBhbmVsXVwiPjwvbmctY29udGVudD5cblxuICBAaWYgKGRpc3BsYXllZENvbHVtbnMoKT8ubGVuZ3RoKSB7XG4gICAgPGRpdiBjbGFzcz1cIm10LTNcIiBbaGlkZGVuXT1cIiFzaG93RGF0YSgpIHx8ICghZGF0YSgpICYmICFpc1RhYmxlUGFnaW5hdGVkKCkpXCI+XG4gICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICBAaWYgKGlzVGFibGVQYWdpbmF0ZWQoKSkge1xuICAgICAgICAgIDx0YWJsZS1odHRwc1xuICAgICAgICAgICAgI3RhYmxlSFRUUFNcbiAgICAgICAgICAgIFtzZWFyY2hJZk5vUXVlcnldPVwic2VhcmNoSWZOb1F1ZXJ5KClcIlxuICAgICAgICAgICAgW2Rpc3BsYXllZENvbHVtbnNdPVwiZGlzcGxheWVkQ29sdW1ucygpXCJcbiAgICAgICAgICAgIFtzaG93RXhwb3J0XT1cInNob3dFeHBvcnQoKVwiXG4gICAgICAgICAgICBbc3RhcnRTZWN0aW9uVGVtcGxhdGVdPVwic3RhcnRTZWN0aW9uVGVtcGxhdGUoKVwiXG4gICAgICAgICAgICBbdXNlU2VsZWN0aW9uXT1cInVzZVNlbGVjdGlvbigpXCJcbiAgICAgICAgICAgIFtzaG93UmVmcmVzaEJ0bl09XCJzaG93UmVmcmVzaEJ0bigpXCJcbiAgICAgICAgICAgIFtvYnNlcnZhYmxlRnVuY109XCJzZWFyY2hPYnNlcnZhYmxlRnVuYygpXCJcbiAgICAgICAgICAgIG5vSXRlbVR4dD1cIk5vIHJlc3VsdHMgZm91bmRcIlxuICAgICAgICAgICAgW2lzRXhwYW5kYWJsZV09XCJpc0V4cGFuZGFibGUoKVwiXG4gICAgICAgICAgICBbZXhwYW5kZWRSb3dUZW1wbGF0ZV09XCJleHBhbmRlZFJvd1RlbXBsYXRlKClcIlxuICAgICAgICAgICAgW2NlbnRlckNlbGxzXT1cImNlbnRlckNlbGxzKClcIlxuICAgICAgICAgICAgW3NtYWxsZXJGb250c109XCJzbWFsbGVyRm9udHMoKVwiXG4gICAgICAgICAgICBbbm93cmFwXT1cIm5vd3JhcCgpXCJcbiAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZSgpXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbCgpXCJcbiAgICAgICAgICAgIFtzaG93QWRkaXRpb25hbENvbHVtbnNdPVwic2hvd0FkZGl0aW9uYWxDb2x1bW5zKClcIlxuICAgICAgICAgICAgW29yZGVyRmllbGRdPVwib3JkZXJGaWVsZCgpXCJcbiAgICAgICAgICAgIFtyb3dPcHRpb25zXT1cIm9wdGlvbnMoKVwiXG4gICAgICAgICAgICBbb3JkZXJEaXJlY3Rpb25dPVwib3JkZXJEaXJlY3Rpb24oKVwiXG4oc2VsZWN0aW9uQ2hhbmdlZCk9XCJzZXRTZWxlY3Rpb24oKVwiXG4gICAgICAgICAgICAocm93Q2xpY2spPVwicm93Q2xpY2soJGV2ZW50KVwiIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDx0YWJsZS1wbGFpblxuICAgICAgICAgICAgW2Rpc3RpbmN0XT1cInRydWVcIlxuICAgICAgICAgICAgW3Nob3dQYWdlcl09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZSgpXCJcbiAgICAgICAgICAgIFtjZW50ZXJDZWxsc109XCJmYWxzZVwiXG4gICAgICAgICAgICBbc3RhcnRTZWN0aW9uVGVtcGxhdGVdPVwic3RhcnRTZWN0aW9uVGVtcGxhdGUoKVwiXG4gICAgICAgICAgICBbc21hbGxlckZvbnRzXT1cInNtYWxsZXJGb250cygpXCJcbiAgICAgICAgICAgIFtub3dyYXBdPVwibm93cmFwKClcIlxuICAgICAgICAgICAgW3Nob3dGaWx0ZXJdPVwic2hvd0ZpbHRlcigpXCJcbiAgICAgICAgICAgIFtzaG93RXhwb3J0XT1cInNob3dFeHBvcnQoKVwiXG4gICAgICAgICAgICBbaXNFeHBhbmRhYmxlXT1cImlzRXhwYW5kYWJsZSgpXCJcbiAgICAgICAgICAgIFtleHBhbmRlZFJvd1RlbXBsYXRlXT1cImV4cGFuZGVkUm93VGVtcGxhdGUoKVwiXG4gICAgICAgICAgICBbbGFiZWxdPVwibGFiZWwoKVwiXG4gICAgICAgICAgICBub0l0ZW1UeHQ9XCJObyByZXN1bHRzIGZvdW5kXCJcbiAgICAgICAgICAgIChyb3dDbGljayk9XCJyb3dDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIFtvcmRlckZpZWxkXT1cIm9yZGVyRmllbGQoKVwiXG4gICAgICAgICAgICBbcm93T3B0aW9uc109XCJvcHRpb25zKClcIlxuICAgICAgICAgICAgW3Nob3dBZGRpdGlvbmFsQ29sdW1uc109XCJzaG93QWRkaXRpb25hbENvbHVtbnMoKVwiXG4gICAgICAgICAgICBbb3JkZXJEaXJlY3Rpb25dPVwib3JkZXJEaXJlY3Rpb24oKVwiXG4gICAgICAgICAgICBbZGlzcGxheWVkQ29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zKClcIlxuKHNlbGVjdGlvbkNoYW5nZWQpPVwic2V0U2VsZWN0aW9uKClcIlxuICAgICAgICAgICAgW2RhdGFdPVwiZGF0YSgpXCIgLz5cbiAgICAgICAgfVxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIH1cbjwvbG9hZGVyPlxuIl19
352
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9SZXVzYWJsZXMvcmV1c2FibGUtY29tcHMvZmluZC1pdGVtL2ZpbmQtaXRlbS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldHMtZmUtbmctc2RrL3NyYy9saWIvUmV1c2FibGVzL3JldXNhYmxlLWNvbXBzL2ZpbmQtaXRlbS9maW5kLWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSixPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLGVBQWUsRUFBYyxZQUFZLEVBQWdDLGFBQWEsRUFBTyxNQUFNLE1BQU0sQ0FBQztBQUNuSCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpRkFBaUYsQ0FBQztBQUN0SCxPQUFPLEVBQW9CLG1CQUFtQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFFckgsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGtFQUFrRSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdE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LEVBQUUsQ0FBQyxDQUFDO0lBQ25ILENBQUM7OEdBNVRVLGlCQUFpQjtrR0FBakIsaUJBQWlCLDhxSkEwRCtCLG1CQUFtQixzR0FDbkIsbUJBQW1CLGdHQUhuRSxtQkFBbUIsZ0ZBQ25CLG1CQUFtQix1RUMxR2hDLDArUUE0TEEsMEREaEtJLGVBQWUsa0dBRWYsV0FBVyx3ZEFJWCxvQkFBb0IsNElBQ3BCLDBCQUEwQixpTUFDMUIscUJBQXFCLDhIQUNyQixVQUFVLG9PQUVWLG1CQUFtQixzWUFDbkIsWUFBWSw2YkFDWixtQkFBbUIsOEtBQ25CLG1CQUFtQix3U0FFbkIsbUJBQW1CLDJLQUNuQixlQUFlLG1EQUNmLFNBQVM7OzJGQUdBLGlCQUFpQjtrQkEzQjdCLFNBQVM7K0JBQ0UseUJBQXlCLGNBR3ZCLElBQUksV0FDUDt3QkFDUCxlQUFlO3dCQUNmLElBQUk7d0JBQ0osV0FBVzt3QkFDWCxLQUFLO3dCQUNMLFFBQVE7d0JBQ1IsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLDBCQUEwQjt3QkFDMUIscUJBQXFCO3dCQUNyQixVQUFVO3dCQUNWLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixTQUFTO3dCQUNULG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixTQUFTO3FCQUNWOzhCQXdEbUIsU0FBUztzQkFBNUIsTUFBTTt1QkFBQyxVQUFVO2dCQUNSLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ3lCLGFBQWE7c0JBQTVDLFNBQVM7dUJBQUMsbUJBQW1CO2dCQUNFLGFBQWE7c0JBQTVDLFNBQVM7dUJBQUMsbUJBQW1CO2dCQVlMLFdBQVc7c0JBQW5DLEtBQUs7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgVGVtcGxhdGVSZWYsIHNpZ25hbCwgY29tcHV0ZWQsIGlucHV0LCBpbmplY3QsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBsYXN0VmFsdWVGcm9tLCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFVzZXJBY3Rpdml0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9SZXVzYWJsZXMvcmV1c2FibGUtcGFnZXMvdXNlci1hY3Rpdml0eS91YS1leHRyYXMvdXNlci1hY3Rpdml0eS5zZXJ2aWNlJztcbmltcG9ydCB7IElUYWJsZVNlYXJjaFJlc3AsIFRhYmxlSHR0cHNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvY29tcG9uZW50cy90YWJsZS1odHRwcy90YWJsZS1odHRwcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgSU9iamVjdExpdGVyYWwsIElSb3dPcHRpb24sIElTdHJpY3RGb3JtR3JvdXAsIFNvcnRUeXBlLCBUYWJsZUNvbCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9tb2RlbHMvaW5kZXgubW9kZWwnO1xuaW1wb3J0IHsgRVVBIH0gZnJvbSAnLi4vLi4vcmV1c2FibGUtcGFnZXMvdXNlci1hY3Rpdml0eS91YS1leHRyYXMvdXNlci1hY3Rpdml0eS5tb2RlbCc7XG5pbXBvcnQgeyBGdW5jdGlvbkNhbGxlcjIsIFRvQW55UGlwZSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9waXBlcy91dGlsaXR5LnBpcGUnO1xuaW1wb3J0IHsgVGFibGVQbGFpbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL3RhYmxlLXBsYWluL3RhYmxlLXBsYWluLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdG5Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvY29tcG9uZW50cy9idG4vYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dEJhc2ljQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvaW5wdXQvaW5wdXQtYmFzaWMuY29tcG9uZW50JztcbmltcG9ydCB7IEF1dG9jb21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50JztcbmltcG9ydCB7IFZhbGlkYXRpb25NZXNzYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvaW5wdXQvdmFsaWRhdGlvbi1tZXNzYWdlL3ZhbGlkYXRpb24tbWVzc2FnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGhvbmVOdW1iZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvY29tcG9uZW50cy9waG9uZS1udW1iZXIvcGhvbmUtbnVtYmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ0lmLCBOZ0ZvciwgTmdTd2l0Y2gsIE5nU3dpdGNoQ2FzZSwgTmdTd2l0Y2hEZWZhdWx0LCBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vU2hhcmVkL2NvbXBvbmVudHMvbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2NvbmZpZ3MvaW5kZXguY29uZmlnJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIsIFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQmFzZUZvcm1HZW5lcmF0b3IsIElCYXNlRm9ybVNjaGVtYSB9IGZyb20gJy4uLy4uLy4uL1NoYXJlZC9jb21wb25lbnRzL2Zvcm0tZ2VuZXJhdG9yL2Zvcm0tZ2VuZXJhdG9yLmJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZmluZC1pdGVtLGZpbmQtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9maW5kLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maW5kLWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIExvYWRlckNvbXBvbmVudCxcbiAgICBOZ0lmLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE5nRm9yLFxuICAgIE5nU3dpdGNoLFxuICAgIE5nU3dpdGNoQ2FzZSxcbiAgICBQaG9uZU51bWJlckNvbXBvbmVudCxcbiAgICBWYWxpZGF0aW9uTWVzc2FnZUNvbXBvbmVudCxcbiAgICBBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgUm91dGVyTGluayxcbiAgICBOZ1N3aXRjaERlZmF1bHQsXG4gICAgSW5wdXRCYXNpY0NvbXBvbmVudCxcbiAgICBCdG5Db21wb25lbnQsXG4gICAgVGFibGVIdHRwc0NvbXBvbmVudCxcbiAgICBUYWJsZVBsYWluQ29tcG9uZW50LFxuICAgIEFzeW5jUGlwZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEZ1bmN0aW9uQ2FsbGVyMixcbiAgICBUb0FueVBpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZpbmRJdGVtQ29tcG9uZW50PFRRdWVyeSBleHRlbmRzIElPYmplY3RMaXRlcmFsID0gYW55LCBUUm93IGV4dGVuZHMgSU9iamVjdExpdGVyYWwgPSBhbnk+XG4gIGV4dGVuZHMgQmFzZUZvcm1HZW5lcmF0b3I8VFF1ZXJ5LCBJU2VhcmNoRm9ybVNjaGVtYTxUUXVlcnksIFRSb3c+PlxuICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICAvKipcbiAgICogV2hldGhlciB0byBzb3J0IHNjaGVtYVxuICAgKi9cbiAgYXV0b0Zvcm1hdFNjaGVtYSA9IGlucHV0KHRydWUpO1xuICBhdXRvT3JkZXIgPSBpbnB1dCh0cnVlKTtcbiAgY2VudGVyQ2VsbHMgPSBpbnB1dDxib29sZWFuPigpO1xuICBkaXNwbGF5ZWRDb2x1bW5zID0gaW5wdXQ8VGFibGVDb2xbXT4oKTtcbiAgLyoqXG4gICAqIFJvdyBncmlkIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIGdyaWRDbGFzcyA9IGlucHV0KCdjb2wtbWQtNCBjb2wteHhsLTMnKTtcbiAgaGlkZUZvcm0gPSBpbnB1dChmYWxzZSk7XG4gIGV4cGFuZGVkUm93VGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+PigpO1xuICBpc1RhYmxlUGFnaW5hdGVkID0gaW5wdXQoZmFsc2UpO1xuICBpc0V4cGFuZGFibGUgPSBpbnB1dChmYWxzZSk7XG4gIGxhYmVsID0gaW5wdXQ8c3RyaW5nPigpO1xuICBub3dyYXAgPSBpbnB1dChmYWxzZSk7XG4gIG9wdGlvbnMgPSBpbnB1dDxJUm93T3B0aW9uPFRSb3c+W10+KHVuZGVmaW5lZCwgeyBhbGlhczogJ3Jvd09wdGlvbnMnIH0pO1xuICBvcmRlckRpcmVjdGlvbiA9IGlucHV0PFNvcnRUeXBlPignYXNjJyk7XG4gIG9yZGVyRmllbGQgPSBpbnB1dDxrZXlvZiBUUm93PigpO1xuICBwYWdlU2l6ZSA9IGlucHV0KDEwKTtcbiAgc2VhcmNoRnVuY3Rpb24gPSBpbnB1dDwoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPFRSb3dbXSB8IHsgY29udGVudDogVFJvd1tdIH0+PigpO1xuICBzaG93RGF0YSA9IGlucHV0KHRydWUpO1xuICBzZWFyY2hJZk5vUXVlcnkgPSBpbnB1dCh0cnVlKTtcbiAgc2hvd0V4cG9ydCA9IGlucHV0KHRydWUpO1xuICBzaG93RmlsdGVyID0gaW5wdXQoZmFsc2UpO1xuICBzaG93UmVmcmVzaEJ0biA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHN0YXJ0U2VjdGlvblRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+PigpO1xuICBmb3JtOiBGb3JtR3JvdXA7XG4gIC8qKlxuICAgKiBVc2VkIHRvIHNwZWNpZnkgaWYgdGhlIHNlYXJjaCBidXR0b24gc2hvdWxkIGJlIHNob3duXG4gICAqL1xuICBzaG93U2VhcmNoQnRuID0gaW5wdXQodHJ1ZSk7XG4gIC8qKlxuICAgKiBVc2VkIHRvIHNwZWNpZnkgaWYgdGhlIGNsZWFyIGZvcm0gYnV0dG9uIHNob3VsZCBiZSBzaG93blxuICAgKi9cbiAgc2hvd0NsZWFyQnRuID0gaW5wdXQodHJ1ZSk7XG4gIC8qKlxuICAgKiBVc2VkIHRvIHNwZWNpZnkgaWYgdmFsaWRhdGlvbiBtZXNzYWdlcyBzaG91bGQgYmUgc2hvd25cbiAgICovXG4gIHNob3dWYWxpZGF0aW9uTXNnID0gaW5wdXQodHJ1ZSk7XG4gIGNyZWF0ZUJ0blJvdXRlID0gaW5wdXQoJy4uL2NyZWF0ZScpO1xuICAvKipcbiAgICogVXNlZCB0byBzcGVjaWZ5IGlmIHNob3cgYWRkaXRpb25hbCBjb2x1bW4gYnV0dG9uIHdpaWwgYmUgZGlzcGxheWVkIG9yIG5vdC5cbiAgICovXG4gIHNob3dBZGRpdGlvbmFsQ29sdW1ucyA9IGlucHV0KHRydWUpO1xuICBzbWFsbGVyRm9udHMgPSBpbnB1dChmYWxzZSk7XG4gIC8qKiBVc2UgY2hlY2tib3hlcyAqL1xuICB1c2VTZWxlY3Rpb24gPSBpbnB1dChmYWxzZSk7XG5cbiAgQE91dHB1dCgncm93Q2xpY2snKSBfcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGNsaWNrZWRDcmVhdGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBWaWV3Q2hpbGQoVGFibGVIdHRwc0NvbXBvbmVudCkgdGFibGVIVFRQU1JFRjogVGFibGVIdHRwc0NvbXBvbmVudDxUUm93PjtcbiAgQFZpZXdDaGlsZChUYWJsZVBsYWluQ29tcG9uZW50KSB0YWJsZVBsYWluUmVmOiBUYWJsZVBsYWluQ29tcG9uZW50PFRSb3c+O1xuICB0YWJsZUhUVFBTUkVGU2lnbmFsID0gdmlld0NoaWxkPFRhYmxlSHR0cHNDb21wb25lbnQ8VFJvdz4+KFRhYmxlSHR0cHNDb21wb25lbnQpO1xuICB0YWJsZVBsYWluUmVmU2lnbmFsID0gdmlld0NoaWxkPFRhYmxlUGxhaW5Db21wb25lbnQ8VFJvdz4+KFRhYmxlUGxhaW5Db21wb25lbnQpO1xuICBkYXRhID0gc2lnbmFsPFRSb3dbXT4oW10pO1xuICBsb2FkaW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgc2VhcmNoRm9ybSA9IHNpZ25hbDxGb3JtR3JvdXAgfCB1bmRlZmluZWQ+KG5ldyBGb3JtR3JvdXAoe30pKTtcbiAgc3RhbmRhbG9uZUZvcm0gPSBzaWduYWw8Rm9ybUdyb3VwIHwgdW5kZWZpbmVkPihuZXcgRm9ybUdyb3VwKHt9KSk7XG4gIC8qKlxuICAgKiBVc2VkIHRvIHNwZWNpZnkgaWYgc2hvdyBjcmVhdGUgYnV0dG9uIGlzIG5lZWRlZC5cbiAgICovXG4gIGNyZWF0ZUJ1dHRvbiA9IGlucHV0KGZhbHNlKTtcblxuICBASW5wdXQoJ2Zvcm1TY2hlbWEnKSBzZXQgX2Zvcm1TY2hlbWEodjogSVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93PltdKSB7XG4gICAgdGhpcy5pbml0KGNsb25lRGVlcCh2Py5maWx0ZXIoKHgpID0+IHgpKSk7XG4gIH1cblxuICBzZWFyY2hPYnNlcnZhYmxlRnVuYyA9IGlucHV0PChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8SVRhYmxlU2VhcmNoUmVzcDxUUm93Pj4+KCk7XG4gIHJlYWRvbmx5IGRlbGltaXRlckZpZWxkID0gJ35+fic7XG4gIHJlYWRvbmx5IGRlbGltaXRlcldvcmQgPSAnfn4nO1xuICBwcm90ZWN0ZWQgc2VhcmNoVHJpZ2dlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8SU9iamVjdExpdGVyYWw+KHt9KTtcblxuICBjb21wdXRlZEZvcm1TY2hlbWEgPSBjb21wdXRlZDxJU2VhcmNoRm9ybVNjaGVtYTxUUXVlcnksIFRSb3c+W10+KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGZvcm1TY2hlbWEgPSB0aGlzLmZvcm1TY2hlbWEoKSB8fCBbXSxcbiAgICAgICAgc3RhbmRhbG9uZUZvcm0gPSB0aGlzLnN0YW5kYWxvbmVGb3JtKCksXG4gICAgICAgIHNlYXJjaEZvcm0gPSB0aGlzLnNlYXJjaEZvcm0oKTtcblxuICAgICAgcmV0dXJuIGZvcm1TY2hlbWEubWFwKChzY2hlbWUpID0+IHtcbiAgICAgICAgc2NoZW1lLmZvcm0gPSBzY2hlbWUuc3RhbmRhbG9uZSA/IHN0YW5kYWxvbmVGb3JtIDogc2VhcmNoRm9ybTtcbiAgICAgICAgcmV0dXJuIHNjaGVtZTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgeyBlcXVhbDogaXNFcXVhbCB9LFxuICApO1xuXG4gIHB1YmxpYyB1YVMgPSBpbmplY3QoVXNlckFjdGl2aXR5U2VydmljZSk7XG4gIHB1YmxpYyByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcHVibGljIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcblxuICBwcm90ZWN0ZWQgc3ViczIgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmNyZWF0ZVN1YnNjcmlwdGlvbk1hbmFnZXIoKTtcbiAgcHJvdGVjdGVkIHNlYXJjaERlYm91bmNlVGltZSA9IDUwMDtcbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gIHRoaXMuZmV0Y2hTYXZlZFF1ZXJ5KClcbiAgICB0aGlzLnN1YnMyLnB1c2goXG4gICAgICB0aGlzLnNlYXJjaFRyaWdnZXJcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgLy8gbWFwKHI9Pih7cXVlcnk6cixjaGVja3N1bX0pKSxcbiAgICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5zZWFyY2hEZWJvdW5jZVRpbWUpLFxuICAgICAgICAgIC8vIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgLy8gZmlsdGVyKCh4KSA9PiAoeCkpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgICAgICBkZWJ1Z2dlcjtcbiAgICAgICAgICB0aGlzLnNlYXJjaERlYm91bmNlVGltZSA9IDA7XG4gICAgICAgICAgdGhpcy5fc2VhcmNoKCk7XG4gICAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBvdmVycmlkZSBvbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzMj8uY2xlYXIoKTtcbiAgICByZXR1cm4gc3VwZXIub25EZXN0cm95KCk7XG4gIH1cblxuICBmZXRjaFNhdmVkUXVlcnkoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByZXZRdWVyeVN0cmluZyA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ3EnKTtcbiAgICAgIGlmIChwcmV2UXVlcnlTdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcHJldlF1ZXJ5OiB7IFtmOiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgICAgICBjb25zdCBmaWVsZHMgPSBwcmV2UXVlcnlTdHJpbmcuc3BsaXQodGhpcy5kZWxpbWl0ZXJGaWVsZCk7XG4gICAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzKSB7XG4gICAgICAgICAgY29uc3QgZiA9IGZpZWxkLnNwbGl0KHRoaXMuZGVsaW1pdGVyV29yZCk7XG4gICAgICAgICAgLy8gZGVidWdnZXI7XG4gICAgICAgICAgaWYgKGZbMV0gPT0gbnVsbCB8fCBmWzFdID09ICdudWxsJykgY29udGludWU7XG4gICAgICAgICAgcHJldlF1ZXJ5W2ZbMF1dID0gZlsxXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlYXJjaEZvcm0oKT8ucGF0Y2hWYWx1ZShwcmV2UXVlcnkpO1xuICAgICAgICBpZiAoT2JqZWN0LnZhbHVlcyhwcmV2UXVlcnkpLnNvbWUoKHgpID0+IHggIT0gbnVsbCkpIHRoaXMuc2VhcmNoKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGluaXQoc2NoZW1hOiBJU2VhcmNoRm9ybVNjaGVtYTxUUXVlcnksIFRSb3c+W10pIHtcbiAgICB0aGlzLm9uRGVzdHJveSgpO1xuICAgIGlmICghc2NoZW1hPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX3NldEZvcm1TY2hlbWFzKHNjaGVtYSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIGRlYnVnZ2VyO1xuICAgIHRoaXMuaGFuZGxlQWxsU2NoZW1hKHNjaGVtYSk7XG4gICAgZm9yIChjb25zdCBzY2hlbWUgb2YgdGhpcy5mb3JtU2NoZW1hKCkpIHRoaXMuaGFuZGxlRm9ybVNjaGVtZShzY2hlbWUpO1xuICAgIGZvciAoY29uc3Qgc2NoZW1lIG9mIHRoaXMuZm9ybVNjaGVtYSgpKVxuICAgICAgaWYgKHNjaGVtZS50cmlnZ2VyT25DaGFuZ2VPbkluaXQpIHNjaGVtZS5vbkNoYW5nZUZ1bmModGhpcy5mb3JtLmdldFJhd1ZhbHVlKCksIHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpW3NjaGVtZS5maWVsZF0sIHRoaXMpO1xuICB9XG5cbiAgaGFuZGxlQWxsU2NoZW1hKHNjaGVtYTogSVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93PltdKSB7XG4gICAgc2NoZW1hLmZvckVhY2goKHgpID0+ICh4LnR5cGUgPSB4LnR5cGUgfHwgJ3RleHQnKSk7XG4gICAgaWYgKHRoaXMuYXV0b0Zvcm1hdFNjaGVtYSgpIHx8IHRoaXMuYXV0b09yZGVyKCkpIHtcbiAgICAgIGlmICh0aGlzLmF1dG9Gb3JtYXRTY2hlbWEoKSkge1xuICAgICAgICBzY2hlbWFcbiAgICAgICAgICAuZmlsdGVyKCh4KSA9PiB4LnR5cGUgPT0gJ3NlbGVjdCcpXG4gICAgICAgICAgLmZvckVhY2goKHgpID0+IHtcbiAgICAgICAgICAgIGlmICh4Lm9wdGlvbnM/Lmxlbmd0aCA+IDUgfHwgIXgub3B0aW9ucykgeC50eXBlID0gJ2F1dG9jb21wbGV0ZSc7XG4gICAgICAgICAgfSk7XG4gICAgICAgIHNjaGVtYVxuICAgICAgICAgIC5maWx0ZXIoKHgpID0+IHgudHlwZSA9PSAnY2hlY2tib3gnKVxuICAgICAgICAgIC5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICAgICAgICB4LnR5cGUgPSAnc2VsZWN0JztcbiAgICAgICAgICAgIHgub3B0aW9ucyA9IENvbmZpZy5ib29sTGlzdDtcbiAgICAgICAgICAgIHgubGFiZWxGaWVsZCA9ICd0aXRsZSc7XG4gICAgICAgICAgICB4LnZhbHVlRmllbGQgPSAnY29kZSc7XG4gICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3NldEZvcm1TY2hlbWFzKHNjaGVtYSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5hdXRvT3JkZXIoKSkge1xuICAgICAgICBzY2hlbWEgPSBzY2hlbWEuc29ydDIoJ2xhYmVsJywgdHJ1ZSk7XG4gICAgICAgIHRoaXMuX3NldEZvcm1TY2hlbWFzKFtcbiAgICAgICAgICAuLi5zY2hlbWE/LmZpbHRlcigoeCkgPT4geC5hY3Rpb24gJiYgeC50eXBlICE9ICdjaGVja2JveCcpLFxuICAgICAgICAgIC4uLnNjaGVtYT8uZmlsdGVyKCh4KSA9PiAheC5hY3Rpb24gJiYgeC50eXBlICE9ICdjaGVja2JveCcpLFxuICAgICAgICAgIC4uLnNjaGVtYT8uZmlsdGVyKCh4KSA9PiB4LnR5cGUgPT0gJ2NoZWNrYm94JyksXG4gICAgICAgIF0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB0aGlzLl9zZXRGb3JtU2NoZW1hcyhzY2hlbWEpO1xuXG4gICAgc2NoZW1hLmZvckVhY2goKHMpID0+IHtcbiAgICAgIGlmIChzLnN0YW5kYWxvbmUpIHRoaXMuc3RhbmRhbG9uZUZvcm0oKS5yZWdpc3RlckNvbnRyb2wocy5maWVsZC50b1N0cmluZygpLCBuZXcgRm9ybUNvbnRyb2wobnVsbCwgcy52YWxpZGF0b3JzLCBzLmFzeW5jVmFsaWRhdG9ycykpO1xuICAgICAgZWxzZSB0aGlzLnNlYXJjaEZvcm0oKS5yZWdpc3RlckNvbnRyb2wocy5maWVsZC50b1N0cmluZygpLCBuZXcgRm9ybUNvbnRyb2wocy52YWx1ZSwgcy52YWxpZGF0b3JzLCBzLmFzeW5jVmFsaWRhdG9ycykpO1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlRm9ybVNjaGVtZShzY2hlbWU6IElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSwgVFJvdz4pIHtcbiAgICBzY2hlbWUuaWQgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdlbmVyYXRlVVVJRCgpO1xuICAgIHRoaXMudXBkYXRlRm9ybVNjaGVtYShzY2hlbWUuZmllbGQsIHNjaGVtZSk7XG5cbiAgICBpZiAoc2NoZW1lLm9wdGlvbnNJbml0RnVuYylcbiAgICAgIHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgIHNjaGVtZS5vcHRpb25zID0gcjtcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtU2NoZW1hKHNjaGVtZS5maWVsZCwgeyBvcHRpb25zOiByIH0pO1xuICAgICAgICAvLyB0aGlzLm9wdGlvbnNNYXBbc2NoZW1lLmZpZWxkXSA9IHI7XG4gICAgICB9KTtcblxuICAgIGlmIChzY2hlbWUub3B0aW9uc0luaXRGdW5jMilcbiAgICAgIHNjaGVtZS5vcHRpb25zSW5pdEZ1bmMyKCkuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAgIHNjaGVtZS5vcHRpb25zID0gcjtcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtU2NoZW1hKHNjaGVtZS5maWVsZCwgeyBvcHRpb25zOiByIH0pO1xuICAgICAgICAvLyB0aGlzLm9wdGlvbnNNYXBbc2NoZW1lLmZpZWxkXSA9IHI7XG4gICAgICB9KTtcblxuICAgIGlmIChzY2hlbWUub25DaGFuZ2VGdW5jKSB7XG4gICAgICBjb25zdCBzdWIgPSB0aGlzLnNlYXJjaEZvcm0oKVxuICAgICAgICA/LmNvbnRyb2xzW3NjaGVtZS5maWVsZD8udG9TdHJpbmcoKV0/LnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgwKSlcbiAgICAgICAgLnN1YnNjcmliZSgocikgPT4gc2NoZW1lLm9uQ2hhbmdlRnVuYyh0aGlzLnNlYXJjaEZvcm0oKT8uZ2V0UmF3VmFsdWUoKSwgciwgdGhpcykpO1xuICAgICAgdGhpcy5zdWJzW3NjaGVtZS5maWVsZCBhcyBzdHJpbmddID0gc3ViO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUZvcm1TY2hlbWEoZmllbGROYW1lOiBrZXlvZiBUUXVlcnksIHNjaGVtZTogUGFydGlhbDxJU2VhcmNoRm9ybVNjaGVtYTx7IFtrIGluIGtleW9mIFRRdWVyeV06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfCBhbnkgfT4+KSB7XG4gICAgcmV0dXJuIHN1cGVyLl91cGRhdGVGb3JtU2NoZW1hKGZpZWxkTmFtZSBhcyBzdHJpbmcsIHNjaGVtZSk7XG4gIH1cblxuICB1cGRhdGVBbGxGb3JtU2NoZW1hKG1hcDogKGZvcm1GaWVsZDogSVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93PikgPT4gSVNlYXJjaEZvcm1TY2hlbWE8VFF1ZXJ5LCBUUm93Pikge1xuICAgIHJldHVybiBzdXBlci5fdXBkYXRlQWxsRm9ybVNjaGVtYShtYXApO1xuICB9XG5cbiAgZGV0YWNoRm9ybVNjaGVtZShmaWVsZE5hbWU/OiBrZXlvZiBUUXVlcnkpIHtcbiAgICB0aGlzLnN1YnNbZmllbGROYW1lIGFzIHN0cmluZ10/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBzZWFyY2hGb3JtVmFsdWUgPSB0b1NpZ25hbCh0aGlzLnNlYXJjaEZvcm0oKS52YWx1ZUNoYW5nZXMpO1xuICBzdGFuZGFsb25lRm9ybVZhbHVlID0gdG9TaWduYWwodGhpcy5zdGFuZGFsb25lRm9ybSgpLnZhbHVlQ2hhbmdlcyk7XG4gIGFsbFNlYXJjaEZvcm1WYWx1ZSA9IGNvbXB1dGVkKCgpID0+ICh7IC4uLnRoaXMuc2VhcmNoRm9ybVZhbHVlKCksIC4uLnRoaXMuc3RhbmRhbG9uZUZvcm1WYWx1ZSgpIH0pKTtcblxuICB0cmFja0J5Um93SUQgPSAoaW5kZXgsIGl0ZW0pID0+IHtcbiAgICByZXR1cm4gaXRlbT8udmFsdWU/Ll9fcm93SUQ7XG4gIH07XG5cbiAgY2xlYXJGaWx0ZXJzKCkge1xuICAgIHRoaXMuc2VhcmNoRm9ybSgpPy5yZXNldCgpO1xuICAgIHRoaXMuc2VhcmNoKCk7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMuc2VhcmNoKCk7XG4gIH1cblxuICBzZWFyY2goKSB7XG4gICAgdGhpcy5zZWFyY2hUcmlnZ2VyLm5leHQodGhpcy5zZWFyY2hGb3JtKCkuZ2V0UmF3VmFsdWUoKSk7XG4gIH1cblxuICBhc3luYyBfc2VhcmNoKCkge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICghdGhpcy5zZWFyY2hGb3JtKSByZXR1cm47XG4gICAgY29uc3QgcmVxID0gdGhpcy51dGlsaXR5U2VydmljZS5kZWxldGVOdWxsKGNsb25lRGVlcCh0aGlzLnNlYXJjaEZvcm0oKT8uZ2V0UmF3VmFsdWUoKSkpO1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIGlmICh0aGlzLmlzVGFibGVQYWdpbmF0ZWQoKSkge1xuICAgICAgaWYgKCF0aGlzLmRhdGEoKSkgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICAgIHRoaXMuZGF0YS5zZXQoW10pO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMudGFibGVIVFRQU1JFRj8uc2VhcmNoKHJlcSk7XG4gICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgfSwgMCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNlYXJjaEZ1bmN0aW9uKSB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgbGFzdFZhbHVlRnJvbShcbiAgICAgICAgICB0aGlzLnNlYXJjaEZ1bmN0aW9uKCkoe1xuICAgICAgICAgICAgLi4ucmVxLFxuICAgICAgICAgICAgc29ydEJ5OiB0aGlzLm9yZGVyRmllbGQoKSB8fCAnY3JlYXRlZE9uJyxcbiAgICAgICAgICAgIHNvcnREaXJlY3Rpb246IHRoaXMub3JkZXJEaXJlY3Rpb24oKT8udG9VcHBlckNhc2UoKSB8fCAnREVTQycsXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZGF0YS5zZXQoZGF0YT8uWydjb250ZW50J10gfHwgZGF0YSk7XG4gICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihFcnJvcik7XG4gICAgICB9XG4gICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMudWFTLmFkZCh7XG4gICAgICAgIGNvZGU6IEVVQS5zZWFyY2hlZCxcbiAgICAgICAgYWN0aXZpdHlEZXNjcmlwdGlvbjogdGhpcy5sYWJlbCgpICsgJyAnICsgSlNPTi5zdHJpbmdpZnkocmVxKSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBkZWJ1Z2dlcjtcbiAgICB9XG4gIH1cblxuICBzYXZlUXVlcnkocXVlcnkgPSB0aGlzLnNlYXJjaEZvcm1WYWx1ZSkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICBxOiBPYmplY3Qua2V5cyhxdWVyeSlcbiAgICAgICAgICAuZmlsdGVyKCh4KSA9PiBxdWVyeVt4XSAhPSBudWxsKVxuICAgICAgICAgIC5tYXAoKGspID0+IGAke2t9JHt0aGlzLmRlbGltaXRlcldvcmR9JHtxdWVyeVtrXX1gKVxuICAgICAgICAgIC5qb2luKHRoaXMuZGVsaW1pdGVyRmllbGQpLFxuICAgICAgfSxcbiAgICAgIHJlcGxhY2VVcmw6IHRydWUsXG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxuICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJyxcbiAgICB9KTtcbiAgfVxuICByb3dDbGljayhlKSB7XG4gICAgdGhpcy5fcm93Q2xpY2suZW1pdChlKTtcbiAgfVxuXG4gIGdldCBzZWxlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVIVFRQU1JFRj8uc2VsZWN0ZWRJdGVtcyB8fCB0aGlzLnRhYmxlUGxhaW5SZWY/LnNlbGVjdGVkSXRlbXM7XG4gIH1cbiAgc2VsZWN0aW9uU2lnbmFsID0gc2lnbmFsPFRSb3dbXT4oW10pO1xuXG4gIGlzQW55U2VsZWN0ZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdGggPSB0aGlzLnRhYmxlSFRUUFNSRUZTaWduYWwoKT8uaXNBbnlTZWxlY3RlZCgpLFxuICAgICAgdHAgPSB0aGlzLnRhYmxlUGxhaW5SZWZTaWduYWwoKT8uaXNBbnlTZWxlY3RlZCgpO1xuICAgIHJldHVybiB0aCB8fCB0cDtcbiAgfSk7XG4gIHByb3RlY3RlZCBzZXRTZWxlY3Rpb24oKSB7XG4gICAgdGhpcy5zZWxlY3Rpb25TaWduYWwuc2V0KHRoaXMudGFibGVIVFRQU1JFRj8uc2VsZWN0ZWRJdGVtc1NpZ25hbCgpIHx8IHRoaXMudGFibGVQbGFpblJlZj8uc2VsZWN0ZWRJdGVtc1NpZ25hbCgpKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZWFyY2hGb3JtU2NoZW1hPFRRdWVyeSBleHRlbmRzIElPYmplY3RMaXRlcmFsID0gYW55LCBUUm93IGV4dGVuZHMgSU9iamVjdExpdGVyYWwgPSBhbnk+XG4gIGV4dGVuZHMgSUJhc2VGb3JtU2NoZW1hPFxuICAgIFRRdWVyeSxcbiAgICBGaW5kSXRlbUNvbXBvbmVudDxUUXVlcnksIFRSb3c+LFxuICAgIHtcbiAgICAgIFtLIGluIGtleW9mIFRRdWVyeV06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT47XG4gICAgfVxuICA+IHtcbiAgc3RhbmRhbG9uZT86IGJvb2xlYW47XG4gIGFjdGlvbj86IChyb3c6IFRSb3csIGNlbGw6IGFueSwgZm9ybT86IEZvcm1Hcm91cDxJU3RyaWN0Rm9ybUdyb3VwPFRRdWVyeT4+KSA9PiBhbnk7XG59XG4iLCI8bG9hZGVyIFtsb2FkaW5nXT1cImxvYWRpbmcoKVwiPlxuICBAaWYgKCFoaWRlRm9ybSgpICYmIHNlYXJjaEZvcm0oKSkge1xuICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwic2VhcmNoRm9ybSgpXCIgKG5nU3VibWl0KT1cInNlYXJjaCgpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICBAZm9yIChzY2hlbWUgb2YgY29tcHV0ZWRGb3JtU2NoZW1hKCk7IHRyYWNrIHNjaGVtZSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ7eyBncmlkQ2xhc3MoKSB9fSBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtZW5kXCI+XG4gICAgICAgICAgICAgIEBzd2l0Y2ggKHRydWUpIHtcbiAgICAgICAgICAgICAgICBAY2FzZSAoc2NoZW1lLnR5cGUgPT0gJ3RlbCcpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwcC1waG9uZS1udW1iZXJcbiAgICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJzY2hlbWUuZm9ybVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cInNjaGVtZS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwic2NoZW1lLmZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc2hvd0xhYmVsXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25dPVwic2NoZW1lLnNob3dWYWxpZGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc2hvd1ZhbGlkYXRpb25JY29uXT1cInNjaGVtZS5zaG93VmFsaWRhdGlvbkljb25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtjb3VudHJ5Q29kZTNdPVwic2NoZW1lLmNvdW50cnlDb2RlM1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNjaGVtZS5kaXNhYmxlZElmIHwgZnVuY3Rpb25DYWxsZXIyOiBzZWFyY2hGb3JtVmFsdWUoKSA6IChzY2hlbWUuZmllbGQgfCB0b0FueSlcIlxuICAgICAgICAgICAgICAgICAgICAgICNpbnB1dFRhZyAvPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKHNob3dWYWxpZGF0aW9uTXNnKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICA8YXBwLXZhbGlkYXRpb24tbWVzc2FnZSBbaW5wdXRdPVwiaW5wdXRUYWdcIiAvPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGNhc2UgKHNjaGVtZS50eXBlID09ICdhdXRvY29tcGxldGUnKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtYXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwic2NoZW1lLmZvcm1cIlxuICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbEZpZWxkXT1cInNjaGVtZS5sYWJlbEZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXV0b1BpY2tWYWx1ZUZpZWxkXT1cInNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbFR5cGVdPVwic2NoZW1lLmxhYmVsVHlwZSB8IHRvQW55XCJcbiAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc0Z1bmNdPVwic2NoZW1lLm9wdGlvbnNGdW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJzY2hlbWUuZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlRmllbGRdPVwic2NoZW1lLnZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cInNjaGVtZS5vcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaGludF09XCJzY2hlbWUuaGludFwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInNjaGVtZS5kaXNhYmxlZElmIHwgZnVuY3Rpb25DYWxsZXIyOiBzZWFyY2hGb3JtVmFsdWUgOiAoc2NoZW1lLmZpZWxkIHwgdG9BbnkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAjaW5wdXRUYWcgLz5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93VmFsaWRhdGlvbk1zZygpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGFwcC12YWxpZGF0aW9uLW1lc3NhZ2UgW2lucHV0XT1cImlucHV0VGFnXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZvcm0+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImd4LTIgcm93IGFsaWduLWl0ZW1zLWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWlucHV0LWJhc2ljXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI2Zvcm1GaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cInNjaGVtZS5maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwic2NoZW1lLmZvcm1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInNjaGVtZS50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b1BpY2tWYWx1ZUZpZWxkXT1cInNjaGVtZS5hdXRvUGlja1ZhbHVlRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZUZpZWxkXT1cInNjaGVtZS52YWx1ZUZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxUeXBlXT1cInNjaGVtZS5sYWJlbFR5cGUgfCB0b0FueVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRTaWduYWxdPVwic2NoZW1lLmNoZWNrZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbl09XCIhIXNjaGVtZS5hc3luY1ZhbGlkYXRvcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93VmFsaWRhdGlvbkljb25dPVwiISFzY2hlbWUuYXN5bmNWYWxpZGF0b3JzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbm9Gb3JtYXRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsRmllbGRdPVwic2NoZW1lLmxhYmVsRmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25Gb3JtYXR0ZXJdPVwic2NoZW1lLm9wdGlvbkZvcm1hdHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwic2NoZW1lLm9wdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWNpbWFsUG9pbnRzXT1cInNjaGVtZS5kZWNpbWFsUG9pbnRzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGludF09XCJzY2hlbWUuaGludFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCJzY2hlbWUubWF4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cInNjaGVtZS5taW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzY2hlbWUucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJzY2hlbWUubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzY2hlbWUuZGlzYWJsZWRJZiB8IGZ1bmN0aW9uQ2FsbGVyMjogc2VhcmNoRm9ybVZhbHVlIDogKHNjaGVtZS5maWVsZCB8IHRvQW55KVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2NoZW1lLnN0YW5kYWxvbmUgJiYgc2NoZW1lLmFjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXA9XCJzaG93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZm9ybUZpZWxkPy52YWxpZFNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1jbGljayk9XCJzY2hlbWUuYWN0aW9uKGFsbFNlYXJjaEZvcm1WYWx1ZSgpLCBmb3JtRmllbGQudmFsdWVTaWduYWwoKSwgc3RhbmRhbG9uZUZvcm0oKSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoc2NoZW1lLmFjdGlvbiAmJiAhc2NoZW1lLnN0YW5kYWxvbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1idG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cInNjaGVtZS5pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uQnRuXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uVHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWNsaWNrKT1cInNjaGVtZS5hY3Rpb24oYWxsU2VhcmNoRm9ybVZhbHVlKCksIGZvcm1GaWVsZC52YWx1ZVNpZ25hbCgpLCBzZWFyY2hGb3JtKCkpXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgQGlmIChzaG93VmFsaWRhdGlvbk1zZygpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtdmFsaWRhdGlvbi1tZXNzYWdlIFtpbnB1dF09XCJmb3JtRmllbGRcIiAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGQtZmxleFwiPlxuICAgICAgICAgIEBpZiAoc2hvd0NsZWFyQnRuKCkpIHtcbiAgICAgICAgICAgIDxhcHAtYnRuIHR5cGU9XCJkYW5nZXItb3V0bGluZVwiIHRleHQ9XCJDbGVhclwiIGljb249XCJkZWxldGVcIiAobWNsaWNrKT1cImNsZWFyRmlsdGVycygpXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0xXCI+PC9zcGFuPlxuICAgICAgICAgIEBpZiAoc2hvd1NlYXJjaEJ0bigpKSB7XG4gICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICBbZ3JvdXBdPVwiJ3NlYXJjaCdcIlxuICAgICAgICAgICAgICBbaWNvbkJ0bl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgdGV4dD1cIlNlYXJjaFwiXG4gICAgICAgICAgICAgIGFjdGlvblR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICBbZXhjbHVkZUxvZ2dpbmddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhc2VhcmNoRnVuY3Rpb24oKSAmJiAhaXNUYWJsZVBhZ2luYXRlZCgpXCJcbiAgICAgICAgICAgICAgKG1jbGljayk9XCJzZWFyY2goKVwiIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoY3JlYXRlQnV0dG9uKCkpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIEBpZiAoY3JlYXRlQnRuUm91dGUoKSkge1xuICAgICAgICAgICAgICA8YXBwLWJ0biB0eXBlPVwib3V0bGluZVwiIHRleHQ9XCJDcmVhdGVcIiBpY29uPVwiYWRkXCIgKG1jbGljayk9XCJjbGlja2VkQ3JlYXRlLmVtaXQoKVwiIHJvdXRlckxpbms9XCJ7eyBjcmVhdGVCdG5Sb3V0ZSgpIH19XCIgLz5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICA8YXBwLWJ0biB0eXBlPVwib3V0bGluZVwiIHRleHQ9XCJDcmVhdGVcIiBpY29uPVwiYWRkXCIgKG1jbGljayk9XCJjbGlja2VkQ3JlYXRlLmVtaXQoKVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgfVxuXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIlt0YWJsZVBhbmVsXVwiPjwvbmctY29udGVudD5cblxuICBAaWYgKGRpc3BsYXllZENvbHVtbnMoKT8ubGVuZ3RoKSB7XG4gICAgPGRpdiBjbGFzcz1cIm10LTNcIiBbaGlkZGVuXT1cIiFzaG93RGF0YSgpIHx8ICghZGF0YSgpICYmICFpc1RhYmxlUGFnaW5hdGVkKCkpXCI+XG4gICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICBAaWYgKGlzVGFibGVQYWdpbmF0ZWQoKSkge1xuICAgICAgICAgIDx0YWJsZS1odHRwc1xuICAgICAgICAgICAgI3RhYmxlSFRUUFNcbiAgICAgICAgICAgIFtzZWFyY2hJZk5vUXVlcnldPVwic2VhcmNoSWZOb1F1ZXJ5KClcIlxuICAgICAgICAgICAgW2Rpc3BsYXllZENvbHVtbnNdPVwiZGlzcGxheWVkQ29sdW1ucygpXCJcbiAgICAgICAgICAgIFtzaG93RXhwb3J0XT1cInNob3dFeHBvcnQoKVwiXG4gICAgICAgICAgICBbc3RhcnRTZWN0aW9uVGVtcGxhdGVdPVwic3RhcnRTZWN0aW9uVGVtcGxhdGUoKVwiXG4gICAgICAgICAgICBbdXNlU2VsZWN0aW9uXT1cInVzZVNlbGVjdGlvbigpXCJcbiAgICAgICAgICAgIFtzaG93UmVmcmVzaEJ0bl09XCJzaG93UmVmcmVzaEJ0bigpXCJcbiAgICAgICAgICAgIFtvYnNlcnZhYmxlRnVuY109XCJzZWFyY2hPYnNlcnZhYmxlRnVuYygpXCJcbiAgICAgICAgICAgIG5vSXRlbVR4dD1cIk5vIHJlc3VsdHMgZm91bmRcIlxuICAgICAgICAgICAgW2lzRXhwYW5kYWJsZV09XCJpc0V4cGFuZGFibGUoKVwiXG4gICAgICAgICAgICBbZXhwYW5kZWRSb3dUZW1wbGF0ZV09XCJleHBhbmRlZFJvd1RlbXBsYXRlKClcIlxuICAgICAgICAgICAgW2NlbnRlckNlbGxzXT1cImNlbnRlckNlbGxzKClcIlxuICAgICAgICAgICAgW3NtYWxsZXJGb250c109XCJzbWFsbGVyRm9udHMoKVwiXG4gICAgICAgICAgICBbbm93cmFwXT1cIm5vd3JhcCgpXCJcbiAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZSgpXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbCgpXCJcbiAgICAgICAgICAgIFtzaG93QWRkaXRpb25hbENvbHVtbnNdPVwic2hvd0FkZGl0aW9uYWxDb2x1bW5zKClcIlxuICAgICAgICAgICAgW29yZGVyRmllbGRdPVwib3JkZXJGaWVsZCgpXCJcbiAgICAgICAgICAgIFtyb3dPcHRpb25zXT1cIm9wdGlvbnMoKVwiXG4gICAgICAgICAgICBbb3JkZXJEaXJlY3Rpb25dPVwib3JkZXJEaXJlY3Rpb24oKVwiXG4oc2VsZWN0aW9uQ2hhbmdlZCk9XCJzZXRTZWxlY3Rpb24oKVwiXG4gICAgICAgICAgICAocm93Q2xpY2spPVwicm93Q2xpY2soJGV2ZW50KVwiIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDx0YWJsZS1wbGFpblxuICAgICAgICAgICAgW2Rpc3RpbmN0XT1cInRydWVcIlxuICAgICAgICAgICAgW3Nob3dQYWdlcl09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZSgpXCJcbiAgICAgICAgICAgIFtjZW50ZXJDZWxsc109XCJmYWxzZVwiXG4gICAgICAgICAgICBbc3RhcnRTZWN0aW9uVGVtcGxhdGVdPVwic3RhcnRTZWN0aW9uVGVtcGxhdGUoKVwiXG4gICAgICAgICAgICBbc21hbGxlckZvbnRzXT1cInNtYWxsZXJGb250cygpXCJcbiAgICAgICAgICAgIFtub3dyYXBdPVwibm93cmFwKClcIlxuICAgICAgICAgICAgW3Nob3dGaWx0ZXJdPVwic2hvd0ZpbHRlcigpXCJcbiAgICAgICAgICAgIFtzaG93RXhwb3J0XT1cInNob3dFeHBvcnQoKVwiXG4gICAgICAgICAgICBbaXNFeHBhbmRhYmxlXT1cImlzRXhwYW5kYWJsZSgpXCJcbiAgICAgICAgICAgIFtleHBhbmRlZFJvd1RlbXBsYXRlXT1cImV4cGFuZGVkUm93VGVtcGxhdGUoKVwiXG4gICAgICAgICAgICBbbGFiZWxdPVwibGFiZWwoKVwiXG4gICAgICAgICAgICBub0l0ZW1UeHQ9XCJObyByZXN1bHRzIGZvdW5kXCJcbiAgICAgICAgICAgIChyb3dDbGljayk9XCJyb3dDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIFtvcmRlckZpZWxkXT1cIm9yZGVyRmllbGQoKVwiXG4gICAgICAgICAgICBbcm93T3B0aW9uc109XCJvcHRpb25zKClcIlxuICAgICAgICAgICAgW3Nob3dBZGRpdGlvbmFsQ29sdW1uc109XCJzaG93QWRkaXRpb25hbENvbHVtbnMoKVwiXG4gICAgICAgICAgICBbb3JkZXJEaXJlY3Rpb25dPVwib3JkZXJEaXJlY3Rpb24oKVwiXG4gICAgICAgICAgICBbZGlzcGxheWVkQ29sdW1uc109XCJkaXNwbGF5ZWRDb2x1bW5zKClcIlxuKHNlbGVjdGlvbkNoYW5nZWQpPVwic2V0U2VsZWN0aW9uKClcIlxuICAgICAgICAgICAgW2RhdGFdPVwiZGF0YSgpXCIgLz5cbiAgICAgICAgfVxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIH1cbjwvbG9hZGVyPlxuIl19
@@ -4,7 +4,7 @@ import { MatPaginatorModule } from '@angular/material/paginator';
4
4
  import { MatSortModule } from '@angular/material/sort';
5
5
  import { MatTableModule } from '@angular/material/table';
6
6
  import { ActivatedRoute, RouterModule } from '@angular/router';
7
- import { merge, of as observableOf, of } from 'rxjs';
7
+ import { of as observableOf, of } from 'rxjs';
8
8
  import { catchError, map, startWith, switchMap, tap } from 'rxjs/operators';
9
9
  import { FunctionCaller2, ToAnyPipe, ValueOrXPipe } from '../../pipes/utility.pipe';
10
10
  import { TranslatePipe } from '../../pipes/translate.pipe';
@@ -83,7 +83,7 @@ export class TableHttpsComponent extends TableBaseComponent {
83
83
  });
84
84
  });
85
85
  this.destroyRef.onDestroy(() => this.filteredAndPagedResultsSub?.unsubscribe());
86
- this.filteredAndPagedResultsSub = merge(this.form.valueChanges)
86
+ this.filteredAndPagedResultsSub = this.form.valueChanges
87
87
  .pipe(startWith({}), switchMap(() => {
88
88
  // debugger
89
89
  this.isLoadingResults.set(true);
@@ -112,6 +112,11 @@ export class TableHttpsComponent extends TableBaseComponent {
112
112
  }))
113
113
  .subscribe((r) => this.filteredAndPagedResults.set(r));
114
114
  }
115
+ ngOnDestroy() {
116
+ //Called once, before the instance is destroyed.
117
+ //Add 'implements OnDestroy' to the class.
118
+ this.filteredAndPagedResultsSub?.unsubscribe();
119
+ }
115
120
  search(query) {
116
121
  // debugger;
117
122
  this.queryData = query;
@@ -187,4 +192,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImpor
187
192
  }], dataFetched: [{
188
193
  type: Output
189
194
  }] } });
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaHR0cHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL3RhYmxlLWh0dHBzL3RhYmxlLWh0dHBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90YWJsZS1odHRwcy90YWJsZS1odHRwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsS0FBSyxFQUFjLEVBQUUsSUFBSSxZQUFZLEVBQUUsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFVLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzVGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7Ozs7Ozs7Ozs7QUF3Q3pFLE1BQU0sT0FBTyxtQkFBaUMsU0FBUSxrQkFBeUI7SUF0Qy9FOztRQXVDRSxtQkFBYyxHQUFHLEtBQUssRUFBc0QsQ0FBQztRQUNwRSxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBRWYsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDaEMsbUJBQWMsR0FBRyxLQUFLLEVBQVcsQ0FBQztRQUV4QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFFekMsa0JBQWEsR0FBRyxNQUFNLENBQVMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsU0FBSSxHQUFHLE1BQU0sQ0FBVSxFQUFFLENBQUMsQ0FBQztRQUNwQyxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMxQiw0QkFBdUIsR0FBRyxNQUFNLENBQVUsRUFBRSxDQUFDLENBQUM7UUFFOUMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhDLFNBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQztZQUNuQixVQUFVLEVBQUUsSUFBSSxXQUFXLENBQVMsSUFBSSxDQUFDO1lBQ3pDLE1BQU0sRUFBRSxJQUFJLFdBQVcsQ0FBYyxJQUFJLENBQUM7WUFDMUMsYUFBYSxFQUFFLElBQUksV0FBVyxDQUFzQixJQUFJLENBQUM7WUFDekQsUUFBUSxFQUFFLElBQUksV0FBVyxDQUFTLElBQUksQ0FBQztTQUN4QyxDQUFDLENBQUM7UUFDSSxVQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9CLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7S0E2RnhDO0lBM0ZDLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNuQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDO1lBQ2hDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3pCLGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNyRyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtTQUMxQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNoQyxzRUFBc0U7UUFDdEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDbEMsWUFBWTtZQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM5RSxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUNuQixhQUFhLEVBQUUsQ0FBQyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDakYsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFhO2FBQ3hCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLDBCQUEwQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQzthQUM1RCxJQUFJLENBQ0gsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUNiLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixXQUFXO1lBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2pDLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsSUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRTtnQkFDL0UsT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQzNCLEdBQUcsU0FBUztvQkFDWixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztpQkFDbkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBbUIsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUM3RTtpQkFBTTtnQkFDTCxPQUFPLEVBQUUsQ0FBbUIsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3hEO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQ2xDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1gsK0NBQStDO1lBQy9DLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztZQUMzRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDbkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQVcsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sSUFBSSxFQUFFLE9BQU8sQ0FBQztRQUN2QixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLE9BQU8sWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFXO1FBQ2hCLFlBQVk7UUFDWixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QiwrQ0FBK0M7UUFDL0MsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxDQUFDO1lBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDOztZQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUdELGdGQUFnRjtJQUNoRixZQUFZO1FBQ1YsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN2QixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMzQixrQkFBa0I7SUFDcEIsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEIsQ0FBQzs4R0FuSFUsbUJBQW1CO2tHQUFuQixtQkFBbUIsNjFCQy9EaEMsc25mQW1UQSwyOEhEN1FJLFlBQVksNGJBQ1osWUFBWSw0WUFDWixvQkFBb0IscUpBQ3BCLHdCQUF3QiwySEFDeEIsZUFBZSxtREFDZixtQkFBbUIsd0RBRW5CLGlCQUFpQix5R0FDakIscUJBQXFCLHlpQkFDckIsZUFBZSxrR0FDZixpQkFBaUIsNldBQ2pCLGFBQWEseXZCQUNiLFlBQVksZ0RBQ1osa0JBQWtCLG1TQUNsQixhQUFhLGlkQUNiLGNBQWMscW1DQUNkLGdCQUFnQiw2VEFDaEIsbUJBQW1CLHFKQUNuQixZQUFZLCtRQUNaLGdCQUFnQiwrRkFFaEIsU0FBUyx5Q0FDVCxhQUFhLHVDQTlCSDtZQUNWLE9BQU8sQ0FBQyxjQUFjLEVBQUU7Z0JBQ3RCLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDNUQsS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDekMsVUFBVSxDQUFDLHdCQUF3QixFQUFFLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO2FBQ3RGLENBQUM7U0FDSDs7MkZBMkJVLG1CQUFtQjtrQkF0Qy9CLFNBQVM7K0JBQ0UsYUFBYSxjQUdYLElBQUksY0FDSjt3QkFDVixPQUFPLENBQUMsY0FBYyxFQUFFOzRCQUN0QixLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7NEJBQzVELEtBQUssQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7NEJBQ3pDLFVBQVUsQ0FBQyx3QkFBd0IsRUFBRSxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQzt5QkFDdEYsQ0FBQztxQkFDSCxXQUNRO3dCQUNQLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixxQkFBcUI7d0JBQ3JCLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixhQUFhO3dCQUNiLFlBQVk7d0JBQ1osa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixpQkFBaUI7d0JBQ2pCLFNBQVM7d0JBQ1QsYUFBYTtxQkFDZDs4QkFJUSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFHSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgaW5wdXQsIHNpZ25hbCwgaW5qZWN0LCBEZXN0cm95UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IE1hdFNvcnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IE1hdFRhYmxlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YgYXMgb2JzZXJ2YWJsZU9mLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEZ1bmN0aW9uQ2FsbGVyMiwgVG9BbnlQaXBlLCBWYWx1ZU9yWFBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy91dGlsaXR5LnBpcGUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3RyYW5zbGF0ZS5waXBlJztcbmltcG9ydCB7IEdldENvbEZvcm1hdHRlZFBpcGUsIEdldFJhd0ZpZWxkc1BpcGUsIFRhYmxlUGlwZXNNb2R1bGUsIFRhYmxlVG9TdHJpbmdQaXBlIH0gZnJvbSAnLi4vdGFibGUtcGxhaW4vdGFibGUucGlwZSc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNcm91dGVyTGlua2lyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9pbmRleC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQnRuQ29tcG9uZW50IH0gZnJvbSAnLi4vYnRuL2J0bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW5wdXROR01vZGVsQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQtTmdNb2RlbC9pbnB1dC1uZ21vZGVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbmZvSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2luZm8taWNvbi9pbmZvLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgRmllbGRzVG9EaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vZmllbGRzLXRvLWRpc3BsYXkvZmllbGRzLXRvLWRpc3BsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IEV4cG9ydFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vZXhwb3J0LXRhYmxlL2V4cG9ydC10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTG9hZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9hZGVyL2xvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IHRyaWdnZXIsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgYW5pbWF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgVGFibGVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFibGUtcGxhaW4vdGFibGUtYmFzZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0YWJsZS1odHRwcycsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1odHRwcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuLi90YWJsZS1wbGFpbi90YWJsZS1wbGFpbi5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignZGV0YWlsRXhwYW5kJywgW1xuICAgICAgc3RhdGUoJ2NvbGxhcHNlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnMHB4JywgbWluSGVpZ2h0OiAnMCcgfSkpLFxuICAgICAgc3RhdGUoJ2V4cGFuZGVkJywgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSksXG4gICAgICB0cmFuc2l0aW9uKCdleHBhbmRlZCA8PT4gY29sbGFwc2VkJywgYW5pbWF0ZSgnMjI1bXMgY3ViaWMtYmV6aWVyKDAuNCwgMC4wLCAwLjIsIDEpJykpLFxuICAgIF0pLFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQnRuQ29tcG9uZW50LFxuICAgIENvbW1vbk1vZHVsZSxcbiAgICBFeHBvcnRUYWJsZUNvbXBvbmVudCxcbiAgICBGaWVsZHNUb0Rpc3BsYXlDb21wb25lbnQsXG4gICAgRnVuY3Rpb25DYWxsZXIyLFxuICAgIEdldENvbEZvcm1hdHRlZFBpcGUsXG4gICAgR2V0UmF3RmllbGRzUGlwZSxcbiAgICBJbmZvSWNvbkNvbXBvbmVudCxcbiAgICBJbnB1dE5HTW9kZWxDb21wb25lbnQsXG4gICAgTG9hZGVyQ29tcG9uZW50LFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgVmFsdWVPclhQaXBlLFxuICAgIE1hdFBhZ2luYXRvck1vZHVsZSxcbiAgICBNYXRTb3J0TW9kdWxlLFxuICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTXJvdXRlckxpbmtpcmVjdGl2ZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgVGFibGVQaXBlc01vZHVsZSxcbiAgICBUYWJsZVRvU3RyaW5nUGlwZSxcbiAgICBUb0FueVBpcGUsXG4gICAgVHJhbnNsYXRlUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVIdHRwc0NvbXBvbmVudDxUSXRlbSA9IGFueT4gZXh0ZW5kcyBUYWJsZUJhc2VDb21wb25lbnQ8VEl0ZW0+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgb2JzZXJ2YWJsZUZ1bmMgPSBpbnB1dDwoZGF0YTogYW55KSA9PiBPYnNlcnZhYmxlPElUYWJsZVNlYXJjaFJlc3A8VEl0ZW0+Pj4oKTtcbiAgQElucHV0KCkgcGFnZU51bWJlciA9IDA7XG4gIEBJbnB1dCgpIHF1ZXJ5RGF0YTogYW55O1xuICBASW5wdXQoKSBzZWFyY2hJZk5vUXVlcnkgPSB0cnVlO1xuICBzaG93UmVmcmVzaEJ0biA9IGlucHV0PGJvb2xlYW4+KCk7XG5cbiAgQE91dHB1dCgpIGRhdGFGZXRjaGVkID0gbmV3IEV2ZW50RW1pdHRlcjxUSXRlbT4oKTtcblxuICBvdmVycmlkZSByZXN1bHRzTGVuZ3RoID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIG92ZXJyaWRlIGRhdGEgPSBzaWduYWw8VEl0ZW1bXT4oW10pO1xuICBhbGxRdWVyeURhdGEgPSBzaWduYWwoe30pO1xuICBmaWx0ZXJlZEFuZFBhZ2VkUmVzdWx0cyA9IHNpZ25hbDxUSXRlbVtdPihbXSk7XG4gIGZpbHRlcmVkQW5kUGFnZWRSZXN1bHRzU3ViOiBTdWJzY3JpcHRpb247XG4gIGlzTG9hZGluZ1Jlc3VsdHMgPSBzaWduYWwodHJ1ZSk7XG5cbiAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIHBhZ2VOdW1iZXI6IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KG51bGwpLFxuICAgIHNvcnRCeTogbmV3IEZvcm1Db250cm9sPGtleW9mIFRJdGVtPihudWxsKSxcbiAgICBzb3J0RGlyZWN0aW9uOiBuZXcgRm9ybUNvbnRyb2w8J0FTQycgfCAnREVTQycgfCAnJz4obnVsbCksXG4gICAgcGFnZVNpemU6IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KG51bGwpLFxuICB9KTtcbiAgcHVibGljIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHVibGljIGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgcGFnZU51bWJlcjogdGhpcy5wYWdlTnVtYmVyIHx8IDEsXG4gICAgICBzb3J0Qnk6IHRoaXMub3JkZXJGaWVsZCgpLFxuICAgICAgc29ydERpcmVjdGlvbjogdGhpcy5vcmRlckRpcmVjdGlvbigpID09ICdhc2MnID8gJ0FTQycgOiB0aGlzLm9yZGVyRGlyZWN0aW9uKCkgPT0gJ2Rlc2MnID8gJ0RFU0MnIDogJycsXG4gICAgICBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSgpLFxuICAgIH0pO1xuICAgIHRoaXMuYWxsUXVlcnlEYXRhLnNldCh7IC4uLnRoaXMucXVlcnlEYXRhLCAuLi50aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSB9KTtcbiAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgdGhpcy5hbGxRdWVyeURhdGEuc2V0KHsgLi4udGhpcy5xdWVyeURhdGEsIC4uLnIgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5zZWxlY3Rpb24uY2hhbmdlZC5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHIpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMucXVlcnlEYXRhID0gdGhpcy5xdWVyeURhdGE7XG4gICAgLy8gdGhpcy5xdWVyeURhdGEgPSB0aGlzLnF1ZXJ5RGF0YSB8fCB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zO1xuICAgIHRoaXMucGFnaW5hdG9yLnBhZ2Uuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICAvLyBkZWJ1Z2dlcjtcbiAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHsgcGFnZU51bWJlcjogci5wYWdlSW5kZXggKyAxLCBwYWdlU2l6ZTogci5wYWdlU2l6ZSB9KTtcbiAgICB9KTtcbiAgICB0aGlzLnNvcnQuc29ydENoYW5nZS5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgc29ydERpcmVjdGlvbjogci5kaXJlY3Rpb24gPT0gJ2FzYycgPyAnQVNDJyA6IHIuZGlyZWN0aW9uID09ICdkZXNjJyA/ICdERVNDJyA6ICcnLFxuICAgICAgICBzb3J0Qnk6IHIuYWN0aXZlIGFzIGFueSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRoaXMuZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4gdGhpcy5maWx0ZXJlZEFuZFBhZ2VkUmVzdWx0c1N1Yj8udW5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy5maWx0ZXJlZEFuZFBhZ2VkUmVzdWx0c1N1YiA9IG1lcmdlKHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMpXG4gICAgICAucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHt9KSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAvLyBkZWJ1Z2dlclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nUmVzdWx0cy5zZXQodHJ1ZSk7XG4gICAgICAgICAgY29uc3QgcXVlcnlEYXRhID0gdGhpcy5xdWVyeURhdGE7XG4gICAgICAgICAgaWYgKHRoaXMuc2VhcmNoSWZOb1F1ZXJ5IHx8IE9iamVjdC52YWx1ZXMocXVlcnlEYXRhfHx7fSkuc29tZSgoeCkgPT4geCAhPSBudWxsKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub2JzZXJ2YWJsZUZ1bmMoKSh7XG4gICAgICAgICAgICAgIC4uLnF1ZXJ5RGF0YSxcbiAgICAgICAgICAgICAgLi4udGhpcy5mb3JtLnZhbHVlLFxuICAgICAgICAgICAgfSkucGlwZShjYXRjaEVycm9yKChlKSA9PiBvZig8SVRhYmxlU2VhcmNoUmVzcD57IGNvbnRlbnQ6IFtdLCB0b3RhbDogMCB9KSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoPElUYWJsZVNlYXJjaFJlc3A+eyBjb250ZW50OiBbXSwgdG90YWw6IDAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdGFwKChyKSA9PiB0aGlzLnNlbGVjdGlvbi5jbGVhcigpKSxcbiAgICAgICAgbWFwKChkYXRhKSA9PiB7XG4gICAgICAgICAgLy8gRmxpcCBmbGFnIHRvIHNob3cgdGhhdCBsb2FkaW5nIGhhcyBmaW5pc2hlZC5cbiAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZ1Jlc3VsdHMuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnJlc3VsdHNMZW5ndGguc2V0KGRhdGE/LnRvdGFsIHx8IGRhdGE/LnRvdGFsRWxlbWVudHMpO1xuICAgICAgICAgIHRoaXMuZGF0YS5zZXQoZGF0YS5jb250ZW50IHx8IGRhdGE/LnBhZ2U/LmNvbnRlbnQpO1xuICAgICAgICAgIHRoaXMuZGF0YUZldGNoZWQuZW1pdCh0aGlzLmRhdGEgYXMgYW55KTtcbiAgICAgICAgICByZXR1cm4gZGF0YT8uY29udGVudDtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZ1Jlc3VsdHMuc2V0KGZhbHNlKTtcbiAgICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKFtdKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChyKSA9PiB0aGlzLmZpbHRlcmVkQW5kUGFnZWRSZXN1bHRzLnNldChyKSk7XG4gIH1cblxuICBzZWFyY2gocXVlcnk/OiBhbnkpIHtcbiAgICAvLyBkZWJ1Z2dlcjtcbiAgICB0aGlzLnF1ZXJ5RGF0YSA9IHF1ZXJ5O1xuICAgIC8vIHRoaXMuZm9ybS5jb250cm9scy5wYWdlTnVtYmVyLnBhdGNoVmFsdWUoMCk7XG4gICAgaWYgKHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA+IDApIHRoaXMucmVzZXRQYWdpbmcoKTtcbiAgICBlbHNlIHRoaXMuZm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cbiBcblxuICAvKiogU2VsZWN0cyBhbGwgcm93cyBpZiB0aGV5IGFyZSBub3QgYWxsIHNlbGVjdGVkOyBvdGhlcndpc2UgY2xlYXIgc2VsZWN0aW9uLiAqL1xuICBtYXN0ZXJUb2dnbGUoKSB7XG4gICAgaWYgKHRoaXMuaXNBbGxTZWxlY3RlZCgpKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGlvbi5zZWxlY3QoLi4udGhpcy5kYXRhKCkpO1xuICB9XG5cbiAgcmVzZXRQYWdpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5wYWdpbmF0b3IuZmlyc3RQYWdlKCk7XG4gICAgLy8gLnBhZ2VJbmRleCA9IDA7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMuc2VhcmNoKCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVTZWFyY2hSZXNwPFQgPSBhbnk+IHtcbiAgdG90YWxFbGVtZW50cz86IG51bWJlcjtcbiAgcGFnZT86IHsgY29udGVudDogVFtdIH07XG4gIGNvbnRlbnQ/OiBUW107XG4gIHRvdGFsPzogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVTZWFyY2hGdW5jPFQgPSBhbnk+IHtcbiAgdG90YWxFbGVtZW50cz86IG51bWJlcjtcbiAgcGFnZT86IHsgY29udGVudDogVFtdIH07XG4gIGNvbnRlbnQ/OiBUW107XG4gIHRvdGFsPzogbnVtYmVyO1xufVxuIiwiPGRpdiBjbGFzcz1cInRhYmxlLWh0dHBzXCI+XG4gIEBpZiAoaGVhZGVyKCkpIHtcbiAgICA8aDYgY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIj5cbiAgICAgIHt7IGhlYWRlcigpIHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICA8L2g2PlxuICB9XG4gIDxkaXYgY2xhc3M9XCJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGctMyBtLTAgcm93LWNvbHMtbWQtYXV0byBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwcy0wXCI+XG4gICAgICAgIEBpZiAoc3RhcnRTZWN0aW9uVGVtcGxhdGUpIHtcbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN0YXJ0U2VjdGlvblRlbXBsYXRlKClcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicGUtMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGctMyByb3ctY29scy1sZy1hdXRvIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxuICAgICAgICAgICAgQGlmIChzaG93RXhwb3J0KCkpIHtcbiAgICAgICAgICAgICAgPGFwcC1leHBvcnQtdGFibGVcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWRhdGEoKT8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWwoKVwiXG4gICAgICAgICAgICAgICAgW3NlYXJjaFF1ZXJ5XT1cImFsbFF1ZXJ5RGF0YSgpXCJcbiAgICAgICAgICAgICAgICBbc2VhcmNoRnVuY109XCJvYnNlcnZhYmxlRnVuYygpXCJcbiAgICAgICAgICAgICAgICBbZGlzcGxheWVkQ29sdW1uc109XCJjb21wdXRlZERpc3BsYXllZENvbHVtbnMoKVwiPjwvYXBwLWV4cG9ydC10YWJsZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICBAaWYgKHNob3dBZGRpdGlvbmFsQ29sdW1ucygpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgICAgICAgPGZpZWxkcy10by1kaXNwbGF5IFtmaWVsZHNdPVwiYWxsVGFibGVDb2x1bW5zKClcIiBbY3VycmVudENvbHVtbnNdPVwiY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zKClcIiAoZmllbGRzQ2hhbmdlZCk9XCJmaWVsZHNDaGFuZ2VkKCRldmVudClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoc2hvd1JlZnJlc2hCdG4oKSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XG4gICAgICAgICAgICAgIDxhcHAtYnRuIGljb249XCJyZWZyZXNoXCIgW2ljb25CdG5dPVwidHJ1ZVwiIChtY2xpY2spPVwicmVmcmVzaCgpXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibXQtMiBvdmVyZmxvdy1hdXRvIHt7IHRhYmxlQ29udGFpbmVyQ2xhc3MoKSB9fSB0YWJsZS1jb250YWluZXIgcm91bmRlZC0xMFwiIFtuZ0NsYXNzXT1cInsgYm9yZGVyOiBkaXN0aW5jdCgpIH1cIj5cbiAgICAgIDxsb2FkZXIgW2xvYWRpbmddPVwiaXNMb2FkaW5nUmVzdWx0cygpXCIgW2hlaWdodF09XCJjb250YWluZXI/LnNjcm9sbEhlaWdodCArIDQwMFwiPlxuICAgICAgICA8ZGl2ICNjb250YWluZXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cbiAgICAgICAgICAgIDx0YWJsZVxuICAgICAgICAgICAgICBtYXQtdGFibGVcbiAgICAgICAgICAgICAgW2RhdGFTb3VyY2VdPVwiZmlsdGVyZWRBbmRQYWdlZFJlc3VsdHM/LigpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ3LTEwMCBkLXRhYmxlIHRhYmxlXCJcbiAgICAgICAgICAgICAgW211bHRpVGVtcGxhdGVEYXRhUm93c109XCJpc0V4cGFuZGFibGUoKVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgc21hbGxlckZvbnRzOiBzbWFsbGVyRm9udHMoKSwgbm93cmFwOiBub3dyYXAoKSwgY2VudGVyQ2VsbHM6IGNlbnRlckNlbGxzKCksIGN1cnZ5OiBjdXJ2eSgpLCAndGFibGUtc3RyaXBlZCc6IHN0cmlwZWQoKSB9XCJcbiAgICAgICAgICAgICAgbWF0U29ydFxuICAgICAgICAgICAgICBtYXRTb3J0QWN0aXZlPVwie3sgb3JkZXJGaWVsZCgpIHwgdG9BbnkgfX1cIlxuICAgICAgICAgICAgICBtYXRTb3J0RGlzYWJsZUNsZWFyXG4gICAgICAgICAgICAgIFttYXRTb3J0RGlyZWN0aW9uXT1cIm9yZGVyRGlyZWN0aW9uKClcIlxuICAgICAgICAgICAgICAjdGFibGVcbiAgICAgICAgICAgICAgKG1hdFNvcnRDaGFuZ2UpPVwicmVzZXRQYWdpbmcoKVwiPlxuICAgICAgICAgICAgICA8IS0tIENoZWNrYm94IENvbHVtbiAtLT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJtc2VsZWN0XCIgW3N0aWNreV09XCIhcGxhY2VTZWxlY3Rpb25BdFJpZ2h0KClcIiBbc3RpY2t5RW5kXT1cInBsYWNlU2VsZWN0aW9uQXRSaWdodCgpXCI+XG4gICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBtYXN0ZXJUb2dnbGUoKSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiBpc0FsbFNlbGVjdGVkKClcIlxuICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJzZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhaXNBbGxTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwiY2hlY2tib3hMYWJlbCgpXCI+PC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdGlvbi50b2dnbGUocm93KSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb24uaXNTZWxlY3RlZChyb3cpXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWEtbGFiZWxdPVwiY2hlY2tib3hMYWJlbChyb3cpXCI+PC9tYXQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwhLS0gQ09MVU1OUyAtLT5cbiAgICAgICAgICAgICAgQGZvciAoY29sIG9mIGNvbXB1dGVkRGlzcGxheWVkQ29sdW1ucygpOyB0cmFjayBjb2w7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgQHN3aXRjaCAoY29sLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgIDwhLS0gQ0hFQ0tCT1ggLS0+XG4gICAgICAgICAgICAgICAgICBAY2FzZSAoJ2NoZWNrYm94Jykge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInt7IGNvbC5mIHwgdG9BbnkgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1pbmZvLWljb24gW3RleHRdPVwiY29sLmhpbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sLnQgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtaW5mby1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBSZW1vdmluZyB0aGUgZW1wdHkgc3BhY2UgYWJvdmUgY2hlY2tib3hlcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtaW5wdXQtbmdtb2RlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0xhYmVsXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YWNrZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb2wuY2hlY2tlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInJvd1tjb2wuZl1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAobWNoYW5nZSk9XCJvdXRwdXRDaGVja2JveChjb2wuZiwgcm93LCAkZXZlbnQpXCI+PC9hcHAtaW5wdXQtbmdtb2RlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwhLS0vLyAtLT5cbiAgICAgICAgICAgICAgICAgIDwhLS0gU3ViIFRhYmxlIC0tPlxuICAgICAgICAgICAgICAgICAgQGNhc2UgKCd0YWJsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ7eyBjb2wuZiB8IHRvQW55IH19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCBjbGFzcz1cInRleHQtY2VudGVyXCIgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wudCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJjb2wuaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXJrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1jbGljayk9XCJjb2wuYWN0aW9uID8gY29sLmFjdGlvbihyb3csIGNvbC5mKSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVscF09XCJjb2wuc3ViVGFibGUgfCB0YWJsZVRvU3RyaW5nOiByb3cgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SGVscEljb25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkJ0bl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWNsYXNzPVwidy1hdXRvXCI+PC9hcHAtYnRuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPCEtLS8vIC0tPlxuICAgICAgICAgICAgICAgICAgPCEtLSBDT0xPUiAtLT5cbiAgICAgICAgICAgICAgICAgIEBjYXNlICgnY29sb3InKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwie3sgY29sLmYgfCB0b0FueSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWluZm8taWNvbiBbdGV4dF09XCJjb2wuaGludFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wudCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1pbmZvLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3F1YXJlLTJcIiBbc3R5bGVdPVwiJ2JhY2tncm91bmQtY29sb3I6JyArIHJvd1tjb2wuZl1cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwhLS0vLyAtLT5cbiAgICAgICAgICAgICAgICAgIDwhLS0gQnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgICAgQGNhc2UgKCdidXR0b24nKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW3N0aWNreV09XCJjb2wuc3RpY2t5XCIgbWF0Q29sdW1uRGVmPVwie3sgY29sLmYgfCB0b0FueSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1pbmZvLWljb24gW3RleHRdPVwiY29sLmhpbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sLnQgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtaW5mby1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvdzsgbGV0IGluZGV4ID0gaW5kZXhcIiBjbGFzcz1cImJ0bi1jZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJjb2wuaWNvbiB8fCBjb2wuYnRuPy5pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiY29sLmJ0bj8udHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtY2xpY2spPVwiY29sLmFjdGlvbiA/IGNvbC5hY3Rpb24ocm93LCBjb2wuZiwgZ2V0QWN0aW9uU3RhdHVzQ2FsbGJhY2soY29sKSwgaW5kZXgpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWxwXT1cImNvbC5idG4/LmhlbHBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0hlbHBJY29uXT1cImNvbC5idG4/LnNob3dIZWxwSWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cImNvbC5idG4/LmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbmldPVwiY29sLmJ0bj8ubWluaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2FkaW5nXT1cImNvbC5idG4/LmxvYWRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkJ0bl09XCJjb2wuYnRuPy5pY29uQnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWNsYXNzPVwidy1hdXRvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbC5idG4/LmRpc2FibGVkIHx8IGNvbC5idG4/LmxvYWRpbmdcIj48L2FwcC1idG4+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8IS0tLy8gLS0+XG4gICAgICAgICAgICAgICAgICA8IS0tIEFDVElPTi9CVE5TIENPTFVNTlMgLS0+XG4gICAgICAgICAgICAgICAgICBAY2FzZSAoJ2J0bnMnKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwie3sgY29sLmYgfCB0b0FueSB9fVwiIFtzdGlja3lFbmRdPVwidHJ1ZVwiIFtzdGlja3ldPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgY2xhc3M9XCJidG4tY2VsbCB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1pbmZvLWljb24gW3RleHRdPVwiY29sLmhpbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sLnQgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtaW5mby1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvdzsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwiYnRuLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggY29sLW1kLWF1dG8gY29sLXNtLWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoYnV0dG9uIG9mIGNvbC5idXR0b25zOyB0cmFjayBidXR0b24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXgtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1idG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiYnV0dG9uLmljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dF09XCJidXR0b24ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVscF09XCJidXR0b24uaGVscFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SGVscEljb25dPVwiYnV0dG9uLnNob3dIZWxwSWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImJ1dHRvbi50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cImJ1dHRvbi5ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5pXT1cImJ1dHRvbi5taW5pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25CdG5dPVwiIWJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1jbGFzcz1cInctYXV0b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtY2xpY2spPVwiYnV0dG9uLmFjdGlvbihyb3csIGksIGJ0bilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYnRuPjwvYXBwLWJ0bj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8IS0tIEVESVRBQkxFIC0tPlxuICAgICAgICAgICAgICAgICAgQGNhc2UgKCdlZGl0YWJsZScpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ7eyBjb2wuZiB8IHRvQW55IH19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wudCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNlbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbXF1ZXJ5UGFyYW1zXT1cImNvbC5tcXVlcnlQYXJhbXMgfCBmdW5jdGlvbkNhbGxlcjI6IHJvdyA6IGNvbC5mXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW21yb3V0ZXJMaW5rXT1cImNvbC5yb3V0ZUZvcm1hdHRlciB8IGZ1bmN0aW9uQ2FsbGVyMjogcm93IDogY29sLmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInJvdyB8IGdldENvbEZvcm1hdHRlZDogY29sIHwgYXN5bmMgfCB2YWx1ZU9yWDogJy0nXCI+PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgKGNsaWNrKT1cImNvbC5hY3Rpb24gPyBjb2wuYWN0aW9uKHJvdywgY29sLmYpIDogbnVsbFwiIGNsYXNzPVwicHMtMSBwb2ludGVyIGZhcyBmYS1wZW5jaWwtYWx0XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPCEtLSBERUZBVUxUIC0tPlxuICAgICAgICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInt7IGNvbC5mIHwgdG9BbnkgfX1cIiBbc3RpY2t5XT1cImNvbC5zdGlja3lcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlciBkaXNhYmxlQ2xlYXI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wudCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGNvbC5yb3V0ZUZvcm1hdHRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGV4dHJhY3RSb3V0ZSB8IGZ1bmN0aW9uQ2FsbGVyMjogY29sIDogcm93OyBhcyBjZWxsUm91dGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjZWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgcG9pbnRlcjogY29sLmFjdGlvbiwgbGluazogY29sLmFjdGlvbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb2wuYWN0aW9uID8gY29sLmFjdGlvbihyb3csIGNvbC5mKSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cImNlbGxSb3V0ZS5xdWVyeVBhcmFtc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXJMaW5rPVwie3sgY2VsbFJvdXRlLnJvdXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwicm93IHwgZ2V0Q29sRm9ybWF0dGVkOiBjb2wgfCBhc3luYyB8IHZhbHVlT3JYOiAnLSdcIj48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBwb2ludGVyOiBjb2wuYWN0aW9uLCBsaW5rOiBjb2wuYWN0aW9uIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb2wuYWN0aW9uID8gY29sLmFjdGlvbihyb3csIGNvbC5mKSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwicm93IHwgZ2V0Q29sRm9ybWF0dGVkOiBjb2wgfCBhc3luYyB8IHZhbHVlT3JYOiAnLSdcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8IS0tLy8gLS0+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDwhLS0vLyAtLT5cbiAgICAgICAgICAgICAgPCEtLSBFWFBBTkRBQkxFIENPTFVNTi0tPlxuICAgICAgICAgICAgICBAaWYgKGlzRXhwYW5kYWJsZSgpKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJfZXhwYW5kQ29sXCIgc3RpY2t5RW5kPlxuICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBhcmlhLWxhYmVsPVwicm93IGFjdGlvbnNcIj4mbmJzcDs8L3RoPlxuICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25CdG5dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2xlYXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUljb25dPVwiZXhwYW5kZWRFbGVtZW50KCkgIT09IHJvdyA/ICdmYSBmYS1jaGV2cm9uLWRvd24nIDogJ2ZhIGZhLWNoZXZyb24tdXAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJleHBhbmQgcm93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dpbmdWYWx1ZT1cIkV4cGFuZCBSb3cgQnV0dG9uIHt7IHJvdyB8IGpzb24gfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG1jbGljayk9XCJleHBhbmRlZEVsZW1lbnQuc2V0KGV4cGFuZGVkRWxlbWVudCgpID09PSByb3cgPyBudWxsIDogcm93KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+PC9hcHAtYnRuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPCEtLS8vIC0tPlxuICAgICAgICAgICAgICA8IS0tIE9QVElPTlMgQ09MVU1OIC0tPlxuICAgICAgICAgICAgICBAaWYgKHJvd09wdGlvbnMoKT8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwib3B0aW9uXCIgc3RpY2t5RW5kPlxuICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXIgZGlzYWJsZUNsZWFyPjwvdGg+XG4gICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY2xhc3M9XCJidG4gbXMtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWxsaXBzaXMtdiBtZS0wXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKG9wdGlvbiBvZiByb3dPcHRpb25zKCk7IHRyYWNrIG9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwie3sgb3B0aW9uLml0ZW1DbGFzcyB9fVwiIChjbGljayk9XCJvcHRpb24uYWN0aW9uKHJvdylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChvcHRpb24uaWNvbkNsYXNzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ7eyBvcHRpb24uaWNvbkNsYXNzIH19XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbi50IHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cbiAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPCEtLS8vIC0tPlxuXG4gICAgICAgICAgICAgIEBpZiAocmF3Q29sdW1ucygpOyBhcyBkY29scykge1xuICAgICAgICAgICAgICAgIDwhLS0gRXhwYW5kZWQgQ29udGVudCBDb2x1bW4gLSBUaGUgZGV0YWlsIHJvdyBpcyBtYWRlIHVwIG9mIHRoaXMgb25lIGNvbHVtbiB0aGF0IHNwYW5zIGFjcm9zcyBhbGwgY29sdW1ucyAtLT5cbiAgICAgICAgICAgICAgICBAaWYgKGlzRXhwYW5kYWJsZSgpKSB7XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImV4cGFuZGVkRGV0YWlsXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIiBbYXR0ci5jb2xzcGFuXT1cImRjb2xzPy5sZW5ndGggfHwgMVwiIFtuZ0NsYXNzXT1cInsgaGlkZUJvcmRlcjogcm93ICE9IGV4cGFuZGVkRWxlbWVudCB9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtZWxlbWVudC1kZXRhaWxcIiBbQGRldGFpbEV4cGFuZF09XCJyb3cgPT0gZXhwYW5kZWRFbGVtZW50ID8gJ2V4cGFuZGVkJyA6ICdjb2xsYXBzZWQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXhwYW5kZWRSb3dUZW1wbGF0ZSgpOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogeyByb3cgfSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkY29sc1wiPjwvdHI+XG4gICAgICAgICAgICAgICAgPHRyXG4gICAgICAgICAgICAgICAgICBtYXQtcm93XG4gICAgICAgICAgICAgICAgICAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGNvbHNcIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBwb2ludGVyOiBzaG93Um93UG9pbnRlcigpLCBkaXNhYmxlZDogaXNEaXNhYmxlZEZ1bmMoKSA/IGlzRGlzYWJsZWRGdW5jKCkocm93KSA6IGZhbHNlIH1cIlxuICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiaXNEaXNhYmxlZEZ1bmMoKSAmJiBpc0Rpc2FibGVkRnVuYygpKHJvdykgPyAnRGlzYWJsZWQnIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicm93Q2xpY2socm93KVwiPjwvdHI+XG4gICAgICAgICAgICAgICAgPHRyIGNsYXNzPVwibWF0LXJvd1wiICptYXROb0RhdGFSb3c+XG4gICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJtYXQtY2VsbCBuby1pdGVtXCIgW2F0dHIuY29sc3Bhbl09XCJkY29scz8ubGVuZ3RoIHx8IDFcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgbm9JdGVtVHh0KCkgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIEBpZiAoaXNFeHBhbmRhYmxlKCkpIHtcbiAgICAgICAgICAgICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBbJ2V4cGFuZGVkRGV0YWlsJ11cIiBjbGFzcz1cImV4cGFuZGVkLWRldGFpbC1yb3dcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cIjBcIj48L3RyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bWF0LXBhZ2luYXRvciBbbGVuZ3RoXT1cInJlc3VsdHNMZW5ndGgoKVwiIFtwYWdlU2l6ZU9wdGlvbnNdPVwiY29tcHV0ZWRQYWdlU2l6ZU9wdGlvbnMoKVwiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZSgpXCIgc2hvd0ZpcnN0TGFzdEJ1dHRvbnMgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2xvYWRlcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtaHR0cHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXRzLWZlLW5nLXNkay9zcmMvbGliL1NoYXJlZC9jb21wb25lbnRzL3RhYmxlLWh0dHBzL3RhYmxlLWh0dHBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V0cy1mZS1uZy1zZGsvc3JjL2xpYi9TaGFyZWQvY29tcG9uZW50cy90YWJsZS1odHRwcy90YWJsZS1odHRwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvRCxPQUFPLEVBQXFCLEVBQUUsSUFBSSxZQUFZLEVBQUUsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFVLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxhQUFhLEVBQUUs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eyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBpbnB1dCwgc2lnbmFsLCBpbmplY3QsIERlc3Ryb3lSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRQYWdpbmF0b3JNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgTWF0U29ydE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHsgTWF0VGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IG1lcmdlLCBPYnNlcnZhYmxlLCBvZiBhcyBvYnNlcnZhYmxlT2YsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRnVuY3Rpb25DYWxsZXIyLCBUb0FueVBpcGUsIFZhbHVlT3JYUGlwZSB9IGZyb20gJy4uLy4uL3BpcGVzL3V0aWxpdHkucGlwZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgR2V0Q29sRm9ybWF0dGVkUGlwZSwgR2V0UmF3RmllbGRzUGlwZSwgVGFibGVQaXBlc01vZHVsZSwgVGFibGVUb1N0cmluZ1BpcGUgfSBmcm9tICcuLi90YWJsZS1wbGFpbi90YWJsZS5waXBlJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IE1yb3V0ZXJMaW5raXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2luZGV4LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCdG5Db21wb25lbnQgfSBmcm9tICcuLi9idG4vYnRuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJbnB1dE5HTW9kZWxDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC1OZ01vZGVsL2lucHV0LW5nbW9kZWwuY29tcG9uZW50JztcbmltcG9ydCB7IEluZm9JY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5mby1pY29uL2luZm8taWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBGaWVsZHNUb0Rpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi9maWVsZHMtdG8tZGlzcGxheS9maWVsZHMtdG8tZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRXhwb3J0VGFibGVDb21wb25lbnQgfSBmcm9tICcuLi9leHBvcnQtdGFibGUvZXhwb3J0LXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi9sb2FkZXIvbG9hZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgdHJpZ2dlciwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCBhbmltYXRlIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBUYWJsZUJhc2VDb21wb25lbnQgfSBmcm9tICcuLi90YWJsZS1wbGFpbi90YWJsZS1iYXNlLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RhYmxlLWh0dHBzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWh0dHBzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4uL3RhYmxlLXBsYWluL3RhYmxlLXBsYWluLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdkZXRhaWxFeHBhbmQnLCBbXG4gICAgICBzdGF0ZSgnY29sbGFwc2VkJywgc3R5bGUoeyBoZWlnaHQ6ICcwcHgnLCBtaW5IZWlnaHQ6ICcwJyB9KSksXG4gICAgICBzdGF0ZSgnZXhwYW5kZWQnLCBzdHlsZSh7IGhlaWdodDogJyonIH0pKSxcbiAgICAgIHRyYW5zaXRpb24oJ2V4cGFuZGVkIDw9PiBjb2xsYXBzZWQnLCBhbmltYXRlKCcyMjVtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknKSksXG4gICAgXSksXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBCdG5Db21wb25lbnQsXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEV4cG9ydFRhYmxlQ29tcG9uZW50LFxuICAgIEZpZWxkc1RvRGlzcGxheUNvbXBvbmVudCxcbiAgICBGdW5jdGlvbkNhbGxlcjIsXG4gICAgR2V0Q29sRm9ybWF0dGVkUGlwZSxcbiAgICBHZXRSYXdGaWVsZHNQaXBlLFxuICAgIEluZm9JY29uQ29tcG9uZW50LFxuICAgIElucHV0TkdNb2RlbENvbXBvbmVudCxcbiAgICBMb2FkZXJDb21wb25lbnQsXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBWYWx1ZU9yWFBpcGUsXG4gICAgTWF0UGFnaW5hdG9yTW9kdWxlLFxuICAgIE1hdFNvcnRNb2R1bGUsXG4gICAgTWF0VGFibGVNb2R1bGUsXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBNcm91dGVyTGlua2lyZWN0aXZlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBUYWJsZVBpcGVzTW9kdWxlLFxuICAgIFRhYmxlVG9TdHJpbmdQaXBlLFxuICAgIFRvQW55UGlwZSxcbiAgICBUcmFuc2xhdGVQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUh0dHBzQ29tcG9uZW50PFRJdGVtID0gYW55PiBleHRlbmRzIFRhYmxlQmFzZUNvbXBvbmVudDxUSXRlbT4gaW1wbGVtZW50cyBPbkluaXQge1xuICBvYnNlcnZhYmxlRnVuYyA9IGlucHV0PChkYXRhOiBhbnkpID0+IE9ic2VydmFibGU8SVRhYmxlU2VhcmNoUmVzcDxUSXRlbT4+PigpO1xuICBASW5wdXQoKSBwYWdlTnVtYmVyID0gMDtcbiAgQElucHV0KCkgcXVlcnlEYXRhOiBhbnk7XG4gIEBJbnB1dCgpIHNlYXJjaElmTm9RdWVyeSA9IHRydWU7XG4gIHNob3dSZWZyZXNoQnRuID0gaW5wdXQ8Ym9vbGVhbj4oKTtcblxuICBAT3V0cHV0KCkgZGF0YUZldGNoZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRJdGVtPigpO1xuXG4gIG92ZXJyaWRlIHJlc3VsdHNMZW5ndGggPSBzaWduYWw8bnVtYmVyPigwKTtcbiAgb3ZlcnJpZGUgZGF0YSA9IHNpZ25hbDxUSXRlbVtdPihbXSk7XG4gIGFsbFF1ZXJ5RGF0YSA9IHNpZ25hbCh7fSk7XG4gIGZpbHRlcmVkQW5kUGFnZWRSZXN1bHRzID0gc2lnbmFsPFRJdGVtW10+KFtdKTtcbiAgZmlsdGVyZWRBbmRQYWdlZFJlc3VsdHNTdWI6IFN1YnNjcmlwdGlvbjtcbiAgaXNMb2FkaW5nUmVzdWx0cyA9IHNpZ25hbCh0cnVlKTtcblxuICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgcGFnZU51bWJlcjogbmV3IEZvcm1Db250cm9sPG51bWJlcj4obnVsbCksXG4gICAgc29ydEJ5OiBuZXcgRm9ybUNvbnRyb2w8a2V5b2YgVEl0ZW0+KG51bGwpLFxuICAgIHNvcnREaXJlY3Rpb246IG5ldyBGb3JtQ29udHJvbDwnQVNDJyB8ICdERVNDJyB8ICcnPihudWxsKSxcbiAgICBwYWdlU2l6ZTogbmV3IEZvcm1Db250cm9sPG51bWJlcj4obnVsbCksXG4gIH0pO1xuICBwdWJsaWMgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBwdWJsaWMgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBwYWdlTnVtYmVyOiB0aGlzLnBhZ2VOdW1iZXIgfHwgMSxcbiAgICAgIHNvcnRCeTogdGhpcy5vcmRlckZpZWxkKCksXG4gICAgICBzb3J0RGlyZWN0aW9uOiB0aGlzLm9yZGVyRGlyZWN0aW9uKCkgPT0gJ2FzYycgPyAnQVNDJyA6IHRoaXMub3JkZXJEaXJlY3Rpb24oKSA9PSAnZGVzYycgPyAnREVTQycgOiAnJyxcbiAgICAgIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplKCksXG4gICAgfSk7XG4gICAgdGhpcy5hbGxRdWVyeURhdGEuc2V0KHsgLi4udGhpcy5xdWVyeURhdGEsIC4uLnRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpIH0pO1xuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKChyKSA9PiB7XG4gICAgICB0aGlzLmFsbFF1ZXJ5RGF0YS5zZXQoeyAuLi50aGlzLnF1ZXJ5RGF0YSwgLi4uciB9KTtcbiAgICB9KTtcbiAgICB0aGlzLnNlbGVjdGlvbi5jaGFuZ2VkLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkLmVtaXQocik7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5xdWVyeURhdGEgPSB0aGlzLnF1ZXJ5RGF0YTtcbiAgICAvLyB0aGlzLnF1ZXJ5RGF0YSA9IHRoaXMucXVlcnlEYXRhIHx8IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbXM7XG4gICAgdGhpcy5wYWdpbmF0b3IucGFnZS5zdWJzY3JpYmUoKHIpID0+IHtcbiAgICAgIC8vIGRlYnVnZ2VyO1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBwYWdlTnVtYmVyOiByLnBhZ2VJbmRleCArIDEsIHBhZ2VTaXplOiByLnBhZ2VTaXplIH0pO1xuICAgIH0pO1xuICAgIHRoaXMuc29ydC5zb3J0Q2hhbmdlLnN1YnNjcmliZSgocikgPT4ge1xuICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICBzb3J0RGlyZWN0aW9uOiByLmRpcmVjdGlvbiA9PSAnYXNjJyA/ICdBU0MnIDogci5kaXJlY3Rpb24gPT0gJ2Rlc2MnID8gJ0RFU0MnIDogJycsXG4gICAgICAgIHNvcnRCeTogci5hY3RpdmUgYXMgYW55LFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB0aGlzLmZpbHRlcmVkQW5kUGFnZWRSZXN1bHRzU3ViPy51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLmZpbHRlcmVkQW5kUGFnZWRSZXN1bHRzU3ViID0gdGhpcy5mb3JtLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh7fSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgLy8gZGVidWdnZXJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZ1Jlc3VsdHMuc2V0KHRydWUpO1xuICAgICAgICAgIGNvbnN0IHF1ZXJ5RGF0YSA9IHRoaXMucXVlcnlEYXRhO1xuICAgICAgICAgIGlmICh0aGlzLnNlYXJjaElmTm9RdWVyeSB8fCBPYmplY3QudmFsdWVzKHF1ZXJ5RGF0YSB8fCB7fSkuc29tZSgoeCkgPT4geCAhPSBudWxsKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub2JzZXJ2YWJsZUZ1bmMoKSh7XG4gICAgICAgICAgICAgIC4uLnF1ZXJ5RGF0YSxcbiAgICAgICAgICAgICAgLi4udGhpcy5mb3JtLnZhbHVlLFxuICAgICAgICAgICAgfSkucGlwZShjYXRjaEVycm9yKChlKSA9PiBvZig8SVRhYmxlU2VhcmNoUmVzcD57IGNvbnRlbnQ6IFtdLCB0b3RhbDogMCB9KSkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoPElUYWJsZVNlYXJjaFJlc3A+eyBjb250ZW50OiBbXSwgdG90YWw6IDAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdGFwKChyKSA9PiB0aGlzLnNlbGVjdGlvbi5jbGVhcigpKSxcbiAgICAgICAgbWFwKChkYXRhKSA9PiB7XG4gICAgICAgICAgLy8gRmxpcCBmbGFnIHRvIHNob3cgdGhhdCBsb2FkaW5nIGhhcyBmaW5pc2hlZC5cbiAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZ1Jlc3VsdHMuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnJlc3VsdHNMZW5ndGguc2V0KGRhdGE/LnRvdGFsIHx8IGRhdGE/LnRvdGFsRWxlbWVudHMpO1xuICAgICAgICAgIHRoaXMuZGF0YS5zZXQoZGF0YS5jb250ZW50IHx8IGRhdGE/LnBhZ2U/LmNvbnRlbnQpO1xuICAgICAgICAgIHRoaXMuZGF0YUZldGNoZWQuZW1pdCh0aGlzLmRhdGEgYXMgYW55KTtcbiAgICAgICAgICByZXR1cm4gZGF0YT8uY29udGVudDtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoKGUpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZ1Jlc3VsdHMuc2V0KGZhbHNlKTtcbiAgICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZU9mKFtdKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChyKSA9PiB0aGlzLmZpbHRlcmVkQW5kUGFnZWRSZXN1bHRzLnNldChyKSk7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgLy9DYWxsZWQgb25jZSwgYmVmb3JlIHRoZSBpbnN0YW5jZSBpcyBkZXN0cm95ZWQuXG4gICAgLy9BZGQgJ2ltcGxlbWVudHMgT25EZXN0cm95JyB0byB0aGUgY2xhc3MuXG4gICAgdGhpcy5maWx0ZXJlZEFuZFBhZ2VkUmVzdWx0c1N1Yj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHNlYXJjaChxdWVyeT86IGFueSkge1xuICAgIC8vIGRlYnVnZ2VyO1xuICAgIHRoaXMucXVlcnlEYXRhID0gcXVlcnk7XG4gICAgLy8gdGhpcy5mb3JtLmNvbnRyb2xzLnBhZ2VOdW1iZXIucGF0Y2hWYWx1ZSgwKTtcbiAgICBpZiAodGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID4gMCkgdGhpcy5yZXNldFBhZ2luZygpO1xuICAgIGVsc2UgdGhpcy5mb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIC8qKiBTZWxlY3RzIGFsbCByb3dzIGlmIHRoZXkgYXJlIG5vdCBhbGwgc2VsZWN0ZWQ7IG90aGVyd2lzZSBjbGVhciBzZWxlY3Rpb24uICovXG4gIG1hc3RlclRvZ2dsZSgpIHtcbiAgICBpZiAodGhpcy5pc0FsbFNlbGVjdGVkKCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0aW9uLnNlbGVjdCguLi50aGlzLmRhdGEoKSk7XG4gIH1cblxuICByZXNldFBhZ2luZygpOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2luYXRvci5maXJzdFBhZ2UoKTtcbiAgICAvLyAucGFnZUluZGV4ID0gMDtcbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgdGhpcy5zZWFyY2goKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZVNlYXJjaFJlc3A8VCA9IGFueT4ge1xuICB0b3RhbEVsZW1lbnRzPzogbnVtYmVyO1xuICBwYWdlPzogeyBjb250ZW50OiBUW10gfTtcbiAgY29udGVudD86IFRbXTtcbiAgdG90YWw/OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZVNlYXJjaEZ1bmM8VCA9IGFueT4ge1xuICB0b3RhbEVsZW1lbnRzPzogbnVtYmVyO1xuICBwYWdlPzogeyBjb250ZW50OiBUW10gfTtcbiAgY29udGVudD86IFRbXTtcbiAgdG90YWw/OiBudW1iZXI7XG59XG4iLCI8ZGl2IGNsYXNzPVwidGFibGUtaHR0cHNcIj5cbiAgQGlmIChoZWFkZXIoKSkge1xuICAgIDxoNiBjbGFzcz1cInRleHQtcHJpbWFyeVwiPlxuICAgICAge3sgaGVhZGVyKCkgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgIDwvaDY+XG4gIH1cbiAgPGRpdiBjbGFzcz1cIlwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgZy0zIG0tMCByb3ctY29scy1tZC1hdXRvIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBzLTBcIj5cbiAgICAgICAgQGlmIChzdGFydFNlY3Rpb25UZW1wbGF0ZSkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3RhcnRTZWN0aW9uVGVtcGxhdGUoKVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwZS0wXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZy0zIHJvdy1jb2xzLWxnLWF1dG8gYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1hdXRvXCI+XG4gICAgICAgICAgICBAaWYgKHNob3dFeHBvcnQoKSkge1xuICAgICAgICAgICAgICA8YXBwLWV4cG9ydC10YWJsZVxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZGF0YSgpPy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbCgpXCJcbiAgICAgICAgICAgICAgICBbc2VhcmNoUXVlcnldPVwiYWxsUXVlcnlEYXRhKClcIlxuICAgICAgICAgICAgICAgIFtzZWFyY2hGdW5jXT1cIm9ic2VydmFibGVGdW5jKClcIlxuICAgICAgICAgICAgICAgIFtkaXNwbGF5ZWRDb2x1bW5zXT1cImNvbXB1dGVkRGlzcGxheWVkQ29sdW1ucygpXCI+PC9hcHAtZXhwb3J0LXRhYmxlPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIEBpZiAoc2hvd0FkZGl0aW9uYWxDb2x1bW5zKCkpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtYXV0b1wiPlxuICAgICAgICAgICAgICA8ZmllbGRzLXRvLWRpc3BsYXkgW2ZpZWxkc109XCJhbGxUYWJsZUNvbHVtbnMoKVwiIFtjdXJyZW50Q29sdW1uc109XCJjb21wdXRlZERpc3BsYXllZENvbHVtbnMoKVwiIChmaWVsZHNDaGFuZ2VkKT1cImZpZWxkc0NoYW5nZWQoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgQGlmIChzaG93UmVmcmVzaEJ0bigpKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgICAgICAgPGFwcC1idG4gaWNvbj1cInJlZnJlc2hcIiBbaWNvbkJ0bl09XCJ0cnVlXCIgKG1jbGljayk9XCJyZWZyZXNoKClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtdC0yIG92ZXJmbG93LWF1dG8ge3sgdGFibGVDb250YWluZXJDbGFzcygpIH19IHRhYmxlLWNvbnRhaW5lciByb3VuZGVkLTEwXCIgW25nQ2xhc3NdPVwieyBib3JkZXI6IGRpc3RpbmN0KCkgfVwiPlxuICAgICAgPGxvYWRlciBbbG9hZGluZ109XCJpc0xvYWRpbmdSZXN1bHRzKClcIiBbaGVpZ2h0XT1cImNvbnRhaW5lcj8uc2Nyb2xsSGVpZ2h0ICsgNDAwXCI+XG4gICAgICAgIDxkaXYgI2NvbnRhaW5lcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxuICAgICAgICAgICAgPHRhYmxlXG4gICAgICAgICAgICAgIG1hdC10YWJsZVxuICAgICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJmaWx0ZXJlZEFuZFBhZ2VkUmVzdWx0cz8uKClcIlxuICAgICAgICAgICAgICBjbGFzcz1cInctMTAwIGQtdGFibGUgdGFibGVcIlxuICAgICAgICAgICAgICBbbXVsdGlUZW1wbGF0ZURhdGFSb3dzXT1cImlzRXhwYW5kYWJsZSgpXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBzbWFsbGVyRm9udHM6IHNtYWxsZXJGb250cygpLCBub3dyYXA6IG5vd3JhcCgpLCBjZW50ZXJDZWxsczogY2VudGVyQ2VsbHMoKSwgY3Vydnk6IGN1cnZ5KCksICd0YWJsZS1zdHJpcGVkJzogc3RyaXBlZCgpIH1cIlxuICAgICAgICAgICAgICBtYXRTb3J0XG4gICAgICAgICAgICAgIG1hdFNvcnRBY3RpdmU9XCJ7eyBvcmRlckZpZWxkKCkgfCB0b0FueSB9fVwiXG4gICAgICAgICAgICAgIG1hdFNvcnREaXNhYmxlQ2xlYXJcbiAgICAgICAgICAgICAgW21hdFNvcnREaXJlY3Rpb25dPVwib3JkZXJEaXJlY3Rpb24oKVwiXG4gICAgICAgICAgICAgICN0YWJsZVxuICAgICAgICAgICAgICAobWF0U29ydENoYW5nZSk9XCJyZXNldFBhZ2luZygpXCI+XG4gICAgICAgICAgICAgIDwhLS0gQ2hlY2tib3ggQ29sdW1uIC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIm1zZWxlY3RcIiBbc3RpY2t5XT1cIiFwbGFjZVNlbGVjdGlvbkF0UmlnaHQoKVwiIFtzdGlja3lFbmRdPVwicGxhY2VTZWxlY3Rpb25BdFJpZ2h0KClcIj5cbiAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIiRldmVudCA/IG1hc3RlclRvZ2dsZSgpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIGlzQWxsU2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmICFpc0FsbFNlbGVjdGVkKClcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYS1sYWJlbF09XCJjaGVja2JveExhYmVsKClcIj48L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uLnRvZ2dsZShyb3cpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlbGVjdGlvbi5pc1NlbGVjdGVkKHJvdylcIlxuICAgICAgICAgICAgICAgICAgICBbYXJpYS1sYWJlbF09XCJjaGVja2JveExhYmVsKHJvdylcIj48L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPCEtLSBDT0xVTU5TIC0tPlxuICAgICAgICAgICAgICBAZm9yIChjb2wgb2YgY29tcHV0ZWREaXNwbGF5ZWRDb2x1bW5zKCk7IHRyYWNrIGNvbDsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICBAc3dpdGNoIChjb2wudHlwZSkge1xuICAgICAgICAgICAgICAgICAgPCEtLSBDSEVDS0JPWCAtLT5cbiAgICAgICAgICAgICAgICAgIEBjYXNlICgnY2hlY2tib3gnKSB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwie3sgY29sLmYgfCB0b0FueSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWluZm8taWNvbiBbdGV4dF09XCJjb2wuaGludFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wudCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1pbmZvLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFJlbW92aW5nIHRoZSBlbXB0eSBzcGFjZSBhYm92ZSBjaGVja2JveGVzIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1pbnB1dC1uZ21vZGVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93TGFiZWxdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhY2tlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImNvbC5jaGVja2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwicm93W2NvbC5mXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtY2hhbmdlKT1cIm91dHB1dENoZWNrYm94KGNvbC5mLCByb3csICRldmVudClcIj48L2FwcC1pbnB1dC1uZ21vZGVsPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPCEtLS8vIC0tPlxuICAgICAgICAgICAgICAgICAgPCEtLSBTdWIgVGFibGUgLS0+XG4gICAgICAgICAgICAgICAgICBAY2FzZSAoJ3RhYmxlJykge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInt7IGNvbC5mIHwgdG9BbnkgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsIGNsYXNzPVwidGV4dC1jZW50ZXJcIiAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbC50IHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cImNvbC5pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhcmtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAobWNsaWNrKT1cImNvbC5hY3Rpb24gPyBjb2wuYWN0aW9uKHJvdywgY29sLmYpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWxwXT1cImNvbC5zdWJUYWJsZSB8IHRhYmxlVG9TdHJpbmc6IHJvdyB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dIZWxwSWNvbl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uQnRuXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBtY2xhc3M9XCJ3LWF1dG9cIj48L2FwcC1idG4+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8IS0tLy8gLS0+XG4gICAgICAgICAgICAgICAgICA8IS0tIENPTE9SIC0tPlxuICAgICAgICAgICAgICAgICAgQGNhc2UgKCdjb2xvcicpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ7eyBjb2wuZiB8IHRvQW55IH19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtaW5mby1pY29uIFt0ZXh0XT1cImNvbC5oaW50XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbC50IHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWluZm8taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcXVhcmUtMlwiIFtzdHlsZV09XCInYmFja2dyb3VuZC1jb2xvcjonICsgcm93W2NvbC5mXVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPCEtLS8vIC0tPlxuICAgICAgICAgICAgICAgICAgPCEtLSBCdXR0b24gLS0+XG4gICAgICAgICAgICAgICAgICBAY2FzZSAoJ2J1dHRvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbc3RpY2t5XT1cImNvbC5zdGlja3lcIiBtYXRDb2x1bW5EZWY9XCJ7eyBjb2wuZiB8IHRvQW55IH19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCBjbGFzcz1cInRleHQtY2VudGVyXCIgKm1hdEhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWluZm8taWNvbiBbdGV4dF09XCJjb2wuaGludFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wudCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1pbmZvLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93OyBsZXQgaW5kZXggPSBpbmRleFwiIGNsYXNzPVwiYnRuLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cImNvbC5pY29uIHx8IGNvbC5idG4/Lmljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJjb2wuYnRuPy50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKG1jbGljayk9XCJjb2wuYWN0aW9uID8gY29sLmFjdGlvbihyb3csIGNvbC5mLCBnZXRBY3Rpb25TdGF0dXNDYWxsYmFjayhjb2wpLCBpbmRleCkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2hlbHBdPVwiY29sLmJ0bj8uaGVscFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SGVscEljb25dPVwiY29sLmJ0bj8uc2hvd0hlbHBJY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3RleHRdPVwiY29sLmJ0bj8ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluaV09XCJjb2wuYnRuPy5taW5pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2xvYWRpbmddPVwiY29sLmJ0bj8ubG9hZGluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uQnRuXT1cImNvbC5idG4/Lmljb25CdG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBtY2xhc3M9XCJ3LWF1dG9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiY29sLmJ0bj8uZGlzYWJsZWQgfHwgY29sLmJ0bj8ubG9hZGluZ1wiPjwvYXBwLWJ0bj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwhLS0vLyAtLT5cbiAgICAgICAgICAgICAgICAgIDwhLS0gQUNUSU9OL0JUTlMgQ09MVU1OUyAtLT5cbiAgICAgICAgICAgICAgICAgIEBjYXNlICgnYnRucycpIHtcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJ7eyBjb2wuZiB8IHRvQW55IH19XCIgW3N0aWNreUVuZF09XCJ0cnVlXCIgW3N0aWNreV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cImJ0bi1jZWxsIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWluZm8taWNvbiBbdGV4dF09XCJjb2wuaGludFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wudCB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1pbmZvLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93OyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJidG4tY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBjb2wtbWQtYXV0byBjb2wtc20tYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChidXR0b24gb2YgY29sLmJ1dHRvbnM7IHRyYWNrIGJ1dHRvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWJ0blxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJidXR0b24uaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cImJ1dHRvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWxwXT1cImJ1dHRvbi5oZWxwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dIZWxwSWNvbl09XCJidXR0b24uc2hvd0hlbHBJY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiYnV0dG9uLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiYnV0dG9uLmdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbmldPVwiYnV0dG9uLm1pbmlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkJ0bl09XCIhYnV0dG9uLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWNsYXNzPVwidy1hdXRvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1jbGljayk9XCJidXR0b24uYWN0aW9uKHJvdywgaSwgYnRuKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNidG4+PC9hcHAtYnRuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwhLS0gRURJVEFCTEUgLS0+XG4gICAgICAgICAgICAgICAgICBAY2FzZSAoJ2VkaXRhYmxlJykge1xuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInt7IGNvbC5mIHwgdG9BbnkgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbC50IHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFttcXVlcnlQYXJhbXNdPVwiY29sLm1xdWVyeVBhcmFtcyB8IGZ1bmN0aW9uQ2FsbGVyMjogcm93IDogY29sLmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbXJvdXRlckxpbmtdPVwiY29sLnJvdXRlRm9ybWF0dGVyIHwgZnVuY3Rpb25DYWxsZXIyOiByb3cgOiBjb2wuZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwicm93IHwgZ2V0Q29sRm9ybWF0dGVkOiBjb2wgfCBhc3luYyB8IHZhbHVlT3JYOiAnLSdcIj48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aSAoY2xpY2spPVwiY29sLmFjdGlvbiA/IGNvbC5hY3Rpb24ocm93LCBjb2wuZikgOiBudWxsXCIgY2xhc3M9XCJwcy0xIHBvaW50ZXIgZmFzIGZhLXBlbmNpbC1hbHRcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8IS0tIERFRkFVTFQgLS0+XG4gICAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwie3sgY29sLmYgfCB0b0FueSB9fVwiIFtzdGlja3ldPVwiY29sLnN0aWNreVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgbWF0LXNvcnQtaGVhZGVyIGRpc2FibGVDbGVhcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNvbC50IHwgYXBwVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoY29sLnJvdXRlRm9ybWF0dGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZXh0cmFjdFJvdXRlIHwgZnVuY3Rpb25DYWxsZXIyOiBjb2wgOiByb3c7IGFzIGNlbGxSb3V0ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNlbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBwb2ludGVyOiBjb2wuYWN0aW9uLCBsaW5rOiBjb2wuYWN0aW9uIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbC5hY3Rpb24gPyBjb2wuYWN0aW9uKHJvdywgY29sLmYpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwiY2VsbFJvdXRlLnF1ZXJ5UGFyYW1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbms9XCJ7eyBjZWxsUm91dGUucm91dGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJyb3cgfCBnZXRDb2xGb3JtYXR0ZWQ6IGNvbCB8IGFzeW5jIHwgdmFsdWVPclg6ICctJ1wiPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjZWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IHBvaW50ZXI6IGNvbC5hY3Rpb24sIGxpbms6IGNvbC5hY3Rpb24gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbC5hY3Rpb24gPyBjb2wuYWN0aW9uKHJvdywgY29sLmYpIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJyb3cgfCBnZXRDb2xGb3JtYXR0ZWQ6IGNvbCB8IGFzeW5jIHwgdmFsdWVPclg6ICctJ1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIDwhLS0vLyAtLT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPCEtLS8vIC0tPlxuICAgICAgICAgICAgICA8IS0tIEVYUEFOREFCTEUgQ09MVU1OLS0+XG4gICAgICAgICAgICAgIEBpZiAoaXNFeHBhbmRhYmxlKCkpIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cIl9leHBhbmRDb2xcIiBzdGlja3lFbmQ+XG4gICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIGFyaWEtbGFiZWw9XCJyb3cgYWN0aW9uc1wiPiZuYnNwOzwvdGg+XG4gICAgICAgICAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgcm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxhcHAtYnRuXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWNvbkJ0bl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjbGVhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tSWNvbl09XCJleHBhbmRlZEVsZW1lbnQoKSAhPT0gcm93ID8gJ2ZhIGZhLWNoZXZyb24tZG93bicgOiAnZmEgZmEtY2hldnJvbi11cCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cImV4cGFuZCByb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2luZ1ZhbHVlPVwiRXhwYW5kIFJvdyBCdXR0b24ge3sgcm93IHwganNvbiB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobWNsaWNrKT1cImV4cGFuZGVkRWxlbWVudC5zZXQoZXhwYW5kZWRFbGVtZW50KCkgPT09IHJvdyA/IG51bGwgOiByb3cpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj48L2FwcC1idG4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8IS0tLy8gLS0+XG4gICAgICAgICAgICAgIDwhLS0gT1BUSU9OUyBDT0xVTU4gLS0+XG4gICAgICAgICAgICAgIEBpZiAocm93T3B0aW9ucygpPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJvcHRpb25cIiBzdGlja3lFbmQ+XG4gICAgICAgICAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlciBkaXNhYmxlQ2xlYXI+PC90aD5cbiAgICAgICAgICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCByb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBjbGFzcz1cImJ0biBtcy0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbGxpcHNpcy12IG1lLTBcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XG4gICAgICAgICAgICAgICAgICAgICAgQGZvciAob3B0aW9uIG9mIHJvd09wdGlvbnMoKTsgdHJhY2sgb3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gY2xhc3M9XCJ7eyBvcHRpb24uaXRlbUNsYXNzIH19XCIgKGNsaWNrKT1cIm9wdGlvbi5hY3Rpb24ocm93KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKG9wdGlvbi5pY29uQ2xhc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInt7IG9wdGlvbi5pY29uQ2xhc3MgfX1cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLnQgfCBhcHBUcmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxuICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8IS0tLy8gLS0+XG5cbiAgICAgICAgICAgICAgQGlmIChyYXdDb2x1bW5zKCk7IGFzIGRjb2xzKSB7XG4gICAgICAgICAgICAgICAgPCEtLSBFeHBhbmRlZCBDb250ZW50IENvbHVtbiAtIFRoZSBkZXRhaWwgcm93IGlzIG1hZGUgdXAgb2YgdGhpcyBvbmUgY29sdW1uIHRoYXQgc3BhbnMgYWNyb3NzIGFsbCBjb2x1bW5zIC0tPlxuICAgICAgICAgICAgICAgIEBpZiAoaXNFeHBhbmRhYmxlKCkpIHtcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiZXhwYW5kZWREZXRhaWxcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IHJvd1wiIFthdHRyLmNvbHNwYW5dPVwiZGNvbHM/Lmxlbmd0aCB8fCAxXCIgW25nQ2xhc3NdPVwieyBoaWRlQm9yZGVyOiByb3cgIT0gZXhwYW5kZWRFbGVtZW50IH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1lbGVtZW50LWRldGFpbFwiIFtAZGV0YWlsRXhwYW5kXT1cInJvdyA9PSBleHBhbmRlZEVsZW1lbnQgPyAnZXhwYW5kZWQnIDogJ2NvbGxhcHNlZCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJleHBhbmRlZFJvd1RlbXBsYXRlKCk7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB7IHJvdyB9IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRjb2xzXCI+PC90cj5cbiAgICAgICAgICAgICAgICA8dHJcbiAgICAgICAgICAgICAgICAgIG1hdC1yb3dcbiAgICAgICAgICAgICAgICAgICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkY29sc1wiXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7IHBvaW50ZXI6IHNob3dSb3dQb2ludGVyKCksIGRpc2FibGVkOiBpc0Rpc2FibGVkRnVuYygpID8gaXNEaXNhYmxlZEZ1bmMoKShyb3cpIDogZmFsc2UgfVwiXG4gICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJpc0Rpc2FibGVkRnVuYygpICYmIGlzRGlzYWJsZWRGdW5jKCkocm93KSA/ICdEaXNhYmxlZCcgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyb3dDbGljayhyb3cpXCI+PC90cj5cbiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJtYXQtcm93XCIgKm1hdE5vRGF0YVJvdz5cbiAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cIm1hdC1jZWxsIG5vLWl0ZW1cIiBbYXR0ci5jb2xzcGFuXT1cImRjb2xzPy5sZW5ndGggfHwgMVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBub0l0ZW1UeHQoKSB8IGFwcFRyYW5zbGF0ZSB8IGFzeW5jIH19XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgQGlmIChpc0V4cGFuZGFibGUoKSkge1xuICAgICAgICAgICAgICAgICAgPHRyIG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IFsnZXhwYW5kZWREZXRhaWwnXVwiIGNsYXNzPVwiZXhwYW5kZWQtZGV0YWlsLXJvd1wiIFtzdHlsZS5oZWlnaHQucHhdPVwiMFwiPjwvdHI+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxtYXQtcGFnaW5hdG9yIFtsZW5ndGhdPVwicmVzdWx0c0xlbmd0aCgpXCIgW3BhZ2VTaXplT3B0aW9uc109XCJjb21wdXRlZFBhZ2VTaXplT3B0aW9ucygpXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplKClcIiBzaG93Rmlyc3RMYXN0QnV0dG9ucyAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbG9hZGVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -14432,7 +14432,7 @@ class TableHttpsComponent extends TableBaseComponent {
14432
14432
  });
14433
14433
  });
14434
14434
  this.destroyRef.onDestroy(() => this.filteredAndPagedResultsSub?.unsubscribe());
14435
- this.filteredAndPagedResultsSub = merge(this.form.valueChanges)
14435
+ this.filteredAndPagedResultsSub = this.form.valueChanges
14436
14436
  .pipe(startWith({}), switchMap(() => {
14437
14437
  // debugger
14438
14438
  this.isLoadingResults.set(true);
@@ -14461,6 +14461,11 @@ class TableHttpsComponent extends TableBaseComponent {
14461
14461
  }))
14462
14462
  .subscribe((r) => this.filteredAndPagedResults.set(r));
14463
14463
  }
14464
+ ngOnDestroy() {
14465
+ //Called once, before the instance is destroyed.
14466
+ //Add 'implements OnDestroy' to the class.
14467
+ this.filteredAndPagedResultsSub?.unsubscribe();
14468
+ }
14464
14469
  search(query) {
14465
14470
  // debugger;
14466
14471
  this.queryData = query;
@@ -17056,7 +17061,7 @@ class FindItemComponent extends BaseFormGenerator {
17056
17061
  // map(r=>({query:r,checksum})),
17057
17062
  debounceTime(this.searchDebounceTime))
17058
17063
  .subscribe((r) => {
17059
- // debugger;
17064
+ debugger;
17060
17065
  this.searchDebounceTime = 0;
17061
17066
  this._search();
17062
17067
  }));
@@ -17193,7 +17198,7 @@ class FindItemComponent extends BaseFormGenerator {
17193
17198
  setTimeout(() => {
17194
17199
  this.tableHTTPSREF?.search(req);
17195
17200
  this.loading.set(false);
17196
- }, 100);
17201
+ }, 0);
17197
17202
  }
17198
17203
  else if (this.searchFunction) {
17199
17204
  try {