tuain-ng-forms-lib 17.2.9 → 17.2.13

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.
@@ -264,7 +264,7 @@ export class RecordTable extends FormElement {
264
264
  this.setAttr(attrs.selectedRecords, this.getSelectedRecords());
265
265
  return true;
266
266
  }
267
- setTableRecords(tableRecords, append) {
267
+ setTableRecords(tableRecords, append = false, prepend = false) {
268
268
  if (!append) {
269
269
  this._tableRecords = [];
270
270
  this._tableRecordObj = {};
@@ -276,13 +276,22 @@ export class RecordTable extends FormElement {
276
276
  for (const tableRecord of tableRecords) {
277
277
  const recordReceived = new TableRecordData(tableRecord, this._columns, this._selectionField);
278
278
  const recordIdKey = recordReceived.recordIdKey;
279
- newRecords.push(recordReceived);
279
+ if (newRecordsObj[recordIdKey]) {
280
+ continue;
281
+ }
282
+ if (prepend) {
283
+ newRecords.unshift(recordReceived);
284
+ }
285
+ else {
286
+ newRecords.push(recordReceived);
287
+ }
280
288
  newRecordsObj[recordIdKey] = recordReceived;
281
289
  }
282
290
  this._tableRecords = newRecords;
283
291
  this._tableRecordObj = newRecordsObj;
284
292
  }
285
293
  appendRecords(records) { this.setTableRecords(records, true); }
294
+ prependRecords(records) { this.setTableRecords(records, true, true); }
286
295
  replaceRecords(records) { this.setTableRecords(records, false); }
287
296
  setTableAppend(append) { this._appendPages = append; }
288
297
  changePage(requestedPage) {
@@ -522,4 +531,4 @@ export class RecordTable extends FormElement {
522
531
  });
523
532
  }
524
533
  }
525
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL3RhYmxlL3RhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUU3QyxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQztBQUNuQyxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQztBQUVyQyxNQUFNLEtBQUssR0FBRztJQUNaLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRTtJQUM5RCxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUU7SUFDbkQsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO0lBQ3ZELFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtJQUNqRSxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUU7SUFDcEYsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO0lBQzdDLGNBQWMsRUFBRSxFQUFFLElB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QyxDQUFDLENBQUMsWUFBWSxDQUFDO1FBQzdGLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksYUFBYSxHQUFHLGFBQWEsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNkLENBQUM7YUFBTSxJQUFJLGFBQWEsR0FBRyxhQUFhLEVBQUUsQ0FBQztZQUN6QyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsQ0FBQztRQUNELE9BQU8sU0FBUyxLQUFLLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQy9ELENBQUM7SUFFUSw4QkFBOEIsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCO1FBQzdELElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzlCLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzlCLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGVsZW1lbnRUeXBlcyB9IGZyb20gJy4uL2Zvcm0uY29uc3RhbnRzJztcbmltcG9ydCB7IEZvcm1FbGVtZW50IH0gZnJvbSAnLi4vZWxlbWVudCc7XG5pbXBvcnQgeyBSZWNvcmRUYWJsZUNvbHVtbiB9IGZyb20gJy4vY29sdW1uJztcbmltcG9ydCB7IFRhYmxlQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb24nO1xuaW1wb3J0IHsgVGFibGVSZWNvcmREYXRhIH0gZnJvbSAnLi9yb3ctZGF0YSc7XG5cbmNvbnN0IFRBQkxFX1NPUlRfQVNDRU5ESU5HID0gJ2FzYyc7XG5jb25zdCBUQUJMRV9TT1JUX0RFU0NFTkRJTkcgPSAnZGVzYyc7XG5cbmNvbnN0IGF0dHJzID0ge1xuICBhbGxTZWxlY3RlZDogeyBuYW1lOiAnYWxsU2VsZWN0ZWQnLCBwcm9wYWdhdGU6ICdhbGxTZWxlY3RlZCcgfSxcbiAgdGFibGVDb2RlOiB7IG5hbWU6ICd0YWJsZUNvZGUnLCBwcm9wYWdhdGU6ICdjb2RlJyB9LFxuICBjbGllbnRQYWdpbmc6IHsgbmFtZTogJ2NsaWVudFBhZ2luZycsIHByb3BhZ2F0ZTogbnVsbCB9LFxuICBnbG9iYWxTZWFyY2g6IHsgbmFtZTogJ2dsb2JhbFNlYXJjaCcsIHByb3BhZ2F0ZTogJ2dsb2JhbFNlYXJjaCcgfSxcbiAgZ2xvYmFsRmlsdGVyU3RyaW5nOiB7IG5hbWU6ICdfZ2xvYmFsRmlsdGVyU3RyaW5nJywgcHJvcGFnYXRlOiAnZ2xvYmFsRmlsdGVyU3RyaW5nJyB9LFxuICBzb3J0aW5nOiB7IG5hbWU6ICdzb3J0aW5nJywgcHJvcGFnYXRlOiBudWxsIH0sXG4gIHJlY29yZHNQZXJQYWdlOiB7IG5hbWU6ICdyZWNvcmRzUGVyUGFnZScsIHByb3BhZ2F0ZTogJ3JlY29yZHNQZXJQYWdlJyB9LFxuICBsYXlvdXQ6IHsgbmFtZTogJ2xheW91dCcsIHByb3BhZ2F0ZTogJ2xheW91dCcgfSxcbiAgY29sdW1uczogeyBuYW1lOiAnY29sdW1ucycsIHByb3BhZ2F0ZTogJ2NvbHVtbnMnIH0sXG4gIHNlbGVjdGVkUmVjb3JkczogeyBuYW1lOiAnc2VsZWN0ZWRSZWNvcmRzJywgcHJvcGFnYXRlOiAnc2VsZWN0ZWRSZWNvcmRzJyB9LFxuICBjdXJyZW50UGFnZTogeyBuYW1lOiAnY3VycmVudFBhZ2UnLCBwcm9wYWdhdGU6ICdjdXJyZW50UGFnZScgfSxcbiAgdG90YWxSZWNvcmRzTnVtYmVyOiB7IG5hbWU6ICd0b3RhbFJlY29yZHNOdW1iZXInLCBwcm9wYWdhdGU6ICd0b3RhbFJlY29yZHNOdW1iZXInIH0sXG4gIHZpc2libGVSZWNvcmRzOiB7IG5hbWU6ICdfdmlzaWJsZVJlY29yZHMnLCBwcm9wYWdhdGU6ICd2aXNpYmxlUmVjb3JkcycgfSxcbiAgd2FpdGluZzogeyBuYW1lOiAnX3dhaXRpbmcnLCBwcm9wYWdhdGU6ICd3YWl0aW5nJyB9LFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUFjdGlvbkV2ZW50IHtcbiAgYWN0aW9uQ29kZTogc3RyaW5nO1xuICByZWNvcmRJZDogYW55O1xuICByZWNvcmREYXRhOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVFdmVudCB7XG4gIHRhYmxlQ29kZTogc3RyaW5nO1xuICBhY3Rpb25Db2RlOiBzdHJpbmcgfCBudWxsO1xuICBhY3Rpb25EZXRhaWw6IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIFJlY29yZFRhYmxlIGV4dGVuZHMgRm9ybUVsZW1lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbmxpbmVBY3Rpb25UcmlnZ2VyID0gbmV3IFN1YmplY3Q8VGFibGVFdmVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZ2xvYmFsQWN0aW9uVHJpZ2dlciA9IG5ldyBTdWJqZWN0PFRhYmxlRXZlbnQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlY29yZFNlbGVjdGlvblRyaWdnZXIgPSBuZXcgU3ViamVjdDxUYWJsZUV2ZW50PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3Rpb25BY3Rpb25UcmlnZ2VyID0gbmV3IFN1YmplY3Q8VGFibGVFdmVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZ2V0RGF0YVRyaWdnZXIgPSBuZXcgU3ViamVjdDxUYWJsZUV2ZW50PigpO1xuICBwcml2YXRlIF90YWJsZUNvbHVtbk9iaiA9IHt9O1xuICBwcml2YXRlIF9hcHBlbmRQYWdlczogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfYWN0aW9uczogVGFibGVBY3Rpb25bXTtcbiAgcHJpdmF0ZSBfYWN0aW9uc09iaiA9IHt9O1xuXG4gIC8vIE1lY2FuaXNtb3MgZGUgZmlsdHJhZG8gbnVldmEgdmVyc2nDs25cbiAgcHJpdmF0ZSBfZ2xvYmFsRmlsdGVyU3RyaW5nOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBnbG9iYWxGaWx0ZXJTdHJpbmdzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIHNlbGVjdGVkUmVjb3JkczogYW55O1xuICBwcml2YXRlIHJlc3RyaWN0ZWRJZDogYW55O1xuICBwcml2YXRlIGxheW91dDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2dsb2JhbFNlYXJjaDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfdGFibGVSZWNvcmRzOiBUYWJsZVJlY29yZERhdGFbXTtcbiAgcHJpdmF0ZSBfdGFibGVSZWNvcmRPYmogPSB7fTtcbiAgcHJpdmF0ZSBfdmlzaWJsZVJlY29yZHM6IFRhYmxlUmVjb3JkRGF0YVtdID0gW107XG4gIHByaXZhdGUgX2NvbHVtbnM6IFJlY29yZFRhYmxlQ29sdW1uW107XG4gIHByaXZhdGUgX3NlbGVjdGFibGU6IGJvb2xlYW47XG4gIHByaXZhdGUgX3NlbGVjdGlvbkJhY2tlbmQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX3NlbGVjdGlvbkZpZWxkOiBzdHJpbmc7XG4gIHByaXZhdGUgX2FsbFNlbGVjdGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX3RhYmxlQ29kZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX3RhYmxlVGl0bGU6IHN0cmluZztcbiAgcHJpdmF0ZSBfY3VycmVudFBhZ2U6IG51bWJlcjtcbiAgcHJpdmF0ZSBfdG90YWxQYWdlczogbnVtYmVyO1xuICBwcml2YXRlIF9yZXF1ZXN0ZWRQYWdlOiBudW1iZXI7XG4gIHByaXZhdGUgX3JlY29yZHNQZXJQYWdlOiBudW1iZXIgPSAxMDtcbiAgcHJpdmF0ZSBfdG90YWxSZWNvcmRzTnVtYmVyOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF9yZWNvcmRzTnVtYmVyOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF9zb3J0aW5nOiBhbnk7XG4gIHByaXZhdGUgX3dhaXRpbmc6IGJvb2xlYW47XG4gIHByaXZhdGUgX2NsaWVudFBhZ2luZzogYm9vbGVhbiA9IHRydWU7XG4gIHByaXZhdGUgX3NvcnRhYmxlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHRhYmxlUmVjZWl2ZWQsIGZvcm1Db25maWcpIHtcbiAgICBzdXBlcih0YWJsZVJlY2VpdmVkLCBmb3JtQ29uZmlnKTtcbiAgICB0aGlzLnByb3BhZ2F0aW9uQ3VzdG9tQXR0cmlidXRlcyA9IHRoaXMuX2Zvcm1Db25maWc/LnByb3BhZ2F0aW9uQ3VzdG9tQXR0cmlidXRlcz8udGFibGVzID8/IFtdO1xuICAgIHRoaXMuZWxlbWVudFR5cGUgPSBlbGVtZW50VHlwZXMudGFibGU7XG4gICAgdGhpcy5fd2FpdGluZyA9IGZhbHNlO1xuICAgIHRoaXMuX2N1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLl90b3RhbFBhZ2VzID0gMTtcbiAgICB0aGlzLl9yZXF1ZXN0ZWRQYWdlID0gMTtcbiAgICB0aGlzLl9jb2x1bW5zID0gW107XG4gICAgdGhpcy5fdGFibGVDb2x1bW5PYmogPSB7fTtcbiAgICB0aGlzLl9hY3Rpb25zID0gW107XG4gICAgdGhpcy5fYWN0aW9uc09iaiA9IHt9O1xuICAgIHRoaXMuX3RhYmxlUmVjb3JkcyA9IFtdO1xuICAgIHRoaXMuX2dsb2JhbFNlYXJjaCA9IGZhbHNlO1xuICAgIHRoaXMucmVzdHJpY3RlZElkID0gbnVsbDtcblxuICAgIHRoaXMuX3RhYmxlVGl0bGUgPSB0YWJsZVJlY2VpdmVkLnRhYmxlVGl0bGU7XG4gICAgdGhpcy5fYXBwZW5kUGFnZXMgPSB0YWJsZVJlY2VpdmVkPy5hcHBlbmQgPz8gZmFsc2U7XG4gICAgdGhpcy5fc2VsZWN0YWJsZSA9IHRhYmxlUmVjZWl2ZWQ/LnNlbGVjdGFibGUgPz8gZmFsc2U7XG4gICAgdGhpcy5fc2VsZWN0aW9uQmFja2VuZCA9IHRhYmxlUmVjZWl2ZWQ/LnNlbGVjdGlvbkJhY2tlbmQgPz8gZmFsc2U7XG4gICAgdGhpcy5fc29ydGFibGUgPSB0YWJsZVJlY2VpdmVkPy5zb3J0YWJsZSA/PyBmYWxzZTtcblxuICAgIHRoaXMuc2V0QXR0cihhdHRycy5hbGxTZWxlY3RlZCwgZmFsc2UpO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy50YWJsZUNvZGUsIHRhYmxlUmVjZWl2ZWQudGFibGVDb2RlKTtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuY2xpZW50UGFnaW5nLCB0YWJsZVJlY2VpdmVkPy5jbGllbnRQYWdpbmcgPz8gdHJ1ZSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmdsb2JhbFNlYXJjaCwgdGFibGVSZWNlaXZlZD8uc2ltcGxlRmlsdGVyID8/IGZhbHNlKTtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuZ2xvYmFsRmlsdGVyU3RyaW5nLCAnJyk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLnNvcnRpbmcsIHsgY29sdW1uTmFtZTogJycsIGRpcmVjdGlvbjogJycgfSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLnJlY29yZHNQZXJQYWdlLCBmb3JtQ29uZmlnLmRlZmF1bHRSZWNvcmRzUGVyUGFnZSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmxheW91dCwgJycpO1xuXG4gICAgaWYgKHRhYmxlUmVjZWl2ZWQuZmllbGRzKSB7XG4gICAgICBjb25zdCBjb2x1bW5zOiBSZWNvcmRUYWJsZUNvbHVtbltdID0gW107XG4gICAgICBmb3IgKGNvbnN0IGNvbHVtblJlY2VpdmVkIG9mIHRhYmxlUmVjZWl2ZWQuZmllbGRzKSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbkVucmljaGVkID0ge1xuICAgICAgICAgIC4uLmNvbHVtblJlY2VpdmVkLFxuICAgICAgICAgIHZpc2libGVTdGF0ZXM6IHRoaXMudmlzaWJsZVN0YXRlcyxcbiAgICAgICAgICBlbmFibGVkU3RhdGVzOiB0aGlzLmVuYWJsZWRTdGF0ZXNcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgY29sdW1uRGVmaW5pdGlvbjogUmVjb3JkVGFibGVDb2x1bW4gPSBuZXcgUmVjb3JkVGFibGVDb2x1bW4oY29sdW1uRW5yaWNoZWQsIHRoaXMuX2Zvcm1Db25maWcpO1xuICAgICAgICBjb2x1bW5zLnB1c2goY29sdW1uRGVmaW5pdGlvbik7XG4gICAgICAgIHRoaXMuX3RhYmxlQ29sdW1uT2JqW2NvbHVtbkRlZmluaXRpb24uZmllbGRDb2RlXSA9IGNvbHVtbkRlZmluaXRpb247XG4gICAgICB9XG4gICAgICB0aGlzLnNldEF0dHIoYXR0cnMuY29sdW1ucywgY29sdW1ucyk7XG4gICAgfVxuICAgIGlmICh0YWJsZVJlY2VpdmVkLmFjdGlvbnMpIHtcbiAgICAgIGNvbnN0IHRhYmxlQWN0aW9ucyA9IHRhYmxlUmVjZWl2ZWQuYWN0aW9ucy5tYXAob2JqRGVmID0+IHtcbiAgICAgICAgbGV0IHZpc2libGVTdGF0ZXMgPSBvYmpEZWYudmlzaWJsZVN0YXRlcztcbiAgICAgICAgbGV0IGVuYWJsZWRTdGF0ZXMgPSBvYmpEZWYuZW5hYmxlZFN0YXRlcztcbiAgICAgICAgaWYgKCF2aXNpYmxlU3RhdGVzKSB7XG4gICAgICAgICAgdmlzaWJsZVN0YXRlcyA9IChvYmpEZWYuYWN0aW9uTW9kZXMgfHwgJycpLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKVxuICAgICAgICAgICAgLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKTtcbiAgICAgICAgICBlbmFibGVkU3RhdGVzID0gKG9iakRlZi5hY3Rpb25Nb2RlcyB8fCAnJykuc3BsaXQoJywnKVxuICAgICAgICAgICAgLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLm9iakRlZiwgdmlzaWJsZVN0YXRlcywgZW5hYmxlZFN0YXRlcyB9O1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IGFjdGlvblJlY2VpdmVkIG9mIHRhYmxlQWN0aW9ucykge1xuICAgICAgICBjb25zdCBpbmxpbmVBY3Rpb24gPSBuZXcgVGFibGVBY3Rpb24oYWN0aW9uUmVjZWl2ZWQsIHRoaXMuX2Zvcm1Db25maWcpO1xuICAgICAgICB0aGlzLl9hY3Rpb25zLnB1c2goaW5saW5lQWN0aW9uKTtcbiAgICAgICAgdGhpcy5fYWN0aW9uc09ialtpbmxpbmVBY3Rpb24uYWN0aW9uQ29kZV0gPSBpbmxpbmVBY3Rpb247XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3NlbGVjdGlvbkZpZWxkID0gKHRoaXMuX3NlbGVjdGFibGUpID8gdGFibGVSZWNlaXZlZD8uc2VsZWN0aW9uRmllbGQgOiBudWxsO1xuICAgIC8vIEZpbHRyb3MgcHJlZGVmaW5pZG9zIGVuIGVsIGZvcm11bGFyaW9cbiAgICBpZiAodGFibGVSZWNlaXZlZC5maWx0ZXJzKSB7XG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGFibGVSZWNlaXZlZC5maWx0ZXJzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICB0aGlzLmFkZEZpbHRlckRlZmluaXRpb24odGFibGVSZWNlaXZlZC5maWx0ZXJzW2luZGV4XS5maWVsZENvZGUsIHRhYmxlUmVjZWl2ZWQuZmlsdGVyc1tpbmRleF0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBjb2x1bW5OYW1lcygpIHsgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX3RhYmxlQ29sdW1uT2JqKTsgfVxuICBnZXQgaW5saW5lQWN0aW9uVHJpZ2dlcigpIHsgcmV0dXJuIHRoaXMuX2lubGluZUFjdGlvblRyaWdnZXIuYXNPYnNlcnZhYmxlKCk7IH1cbiAgZ2V0IGdsb2JhbEFjdGlvblRyaWdnZXIoKSB7IHJldHVybiB0aGlzLl9nbG9iYWxBY3Rpb25UcmlnZ2VyLmFzT2JzZXJ2YWJsZSgpOyB9XG4gIGdldCBzZWxlY3Rpb25BY3Rpb25UcmlnZ2VyKCkgeyByZXR1cm4gdGhpcy5fc2VsZWN0aW9uQWN0aW9uVHJpZ2dlci5hc09ic2VydmFibGUoKTsgfVxuICBnZXQgcmVjb3JkU2VsZWN0aW9uVHJpZ2dlcigpIHsgcmV0dXJuIHRoaXMuX3JlY29yZFNlbGVjdGlvblRyaWdnZXIuYXNPYnNlcnZhYmxlKCk7IH1cbiAgZ2V0IGdldERhdGFUcmlnZ2VyKCkgeyByZXR1cm4gdGhpcy5fZ2V0RGF0YVRyaWdnZXIuYXNPYnNlcnZhYmxlKCk7IH1cblxuICBnZXQgZ2xvYmFsU2VhcmNoKCkgeyByZXR1cm4gdGhpcy5fZ2xvYmFsU2VhcmNoOyB9XG4gIGdldCB0YWJsZVJlY29yZHMoKSB7IHJldHVybiB0aGlzLl90YWJsZVJlY29yZHM7IH1cbiAgZ2V0IHRhYmxlUmVjb3JkT2JqKCkgeyByZXR1cm4gdGhpcy5fdGFibGVSZWNvcmRPYmo7IH1cbiAgZ2V0IHZpc2libGVSZWNvcmRzKCkgeyByZXR1cm4gdGhpcy5fdmlzaWJsZVJlY29yZHM7IH1cbiAgZ2V0IGNvbHVtbnMoKSB7IHJldHVybiB0aGlzLl9jb2x1bW5zOyB9XG4gIGdldCBzZWxlY3RhYmxlKCkgeyByZXR1cm4gdGhpcy5fc2VsZWN0YWJsZTsgfVxuICBnZXQgc2VsZWN0aW9uQmFja2VuZCgpIHsgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbkJhY2tlbmQ7IH1cbiAgZ2V0IHNlbGVjdGlvbkZpZWxkKCkgeyByZXR1cm4gdGhpcy5fc2VsZWN0aW9uRmllbGQ7IH1cbiAgZ2V0IGFsbFNlbGVjdGVkKCkgeyByZXR1cm4gdGhpcy5fYWxsU2VsZWN0ZWQ7IH1cbiAgZ2V0IHRhYmxlQ29kZSgpIHsgcmV0dXJuIHRoaXMuX3RhYmxlQ29kZTsgfVxuICBnZXQgdGFibGVUaXRsZSgpIHsgcmV0dXJuIHRoaXMuX3RhYmxlVGl0bGU7IH1cbiAgZ2V0IGN1cnJlbnRQYWdlKCkgeyByZXR1cm4gdGhpcy5fY3VycmVudFBhZ2U7IH1cbiAgZ2V0IHRvdGFsUGFnZXMoKSB7IHJldHVybiB0aGlzLl90b3RhbFBhZ2VzOyB9XG4gIGdldCByZXF1ZXN0ZWRQYWdlKCkgeyByZXR1cm4gdGhpcy5fcmVxdWVzdGVkUGFnZTsgfVxuICBnZXQgcmVjb3Jkc1BlclBhZ2UoKSB7IHJldHVybiB0aGlzLl9yZWNvcmRzUGVyUGFnZTsgfVxuICBnZXQgdG90YWxSZWNvcmRzTnVtYmVyKCkgeyByZXR1cm4gdGhpcy5fdG90YWxSZWNvcmRzTnVtYmVyOyB9XG4gIGdldCByZWNvcmRzTnVtYmVyKCkgeyByZXR1cm4gdGhpcy5fcmVjb3Jkc051bWJlcjsgfVxuICBnZXQgc29ydGluZygpIHsgcmV0dXJuIHRoaXMuX3NvcnRpbmc7IH1cbiAgZ2V0IHdhaXRpbmcoKSB7IHJldHVybiB0aGlzLl93YWl0aW5nOyB9XG4gIGdldCBjbGllbnRQYWdpbmcoKSB7IHJldHVybiB0aGlzLl9jbGllbnRQYWdpbmc7IH1cbiAgZ2V0IHNvcnRhYmxlKCkgeyByZXR1cm4gdGhpcy5fc29ydGFibGU7IH1cblxuICBnZXQgZ2xvYmFsRmlsdGVyU3RyaW5nKCkgeyByZXR1cm4gdGhpcy5fZ2xvYmFsRmlsdGVyU3RyaW5nOyB9XG4gIHNldCBnbG9iYWxGaWx0ZXJTdHJpbmcoZ2xvYmFsRmlsdGVyU3RyaW5nKSB7IHRoaXMuX2dsb2JhbEZpbHRlclN0cmluZyA9IGdsb2JhbEZpbHRlclN0cmluZzsgfVxuXG4gIHNldCBnbG9iYWxTZWFyY2goZ2xvYmFsU2VhcmNoKSB7IHRoaXMuX2dsb2JhbFNlYXJjaCA9IGdsb2JhbFNlYXJjaDsgfVxuICBzZXQgdGFibGVSZWNvcmRzKHRhYmxlUmVjb3JkcykgeyB0aGlzLl90YWJsZVJlY29yZHMgPSB0YWJsZVJlY29yZHM7IH1cbiAgc2V0IHRhYmxlUmVjb3JkT2JqKHRhYmxlUmVjb3JkT2JqKSB7IHRoaXMuX3RhYmxlUmVjb3JkT2JqID0gdGFibGVSZWNvcmRPYmo7IH1cbiAgc2V0IHZpc2libGVSZWNvcmRzKHZpc2libGVSZWNvcmRzKSB7IHRoaXMuX3Zpc2libGVSZWNvcmRzID0gdmlzaWJsZVJlY29yZHMgPz8gW107IH1cbiAgc2V0IGNvbHVtbnMoY29sdW1ucykgeyB0aGlzLl9jb2x1bW5zID0gY29sdW1uczsgfVxuICBzZXQgc2VsZWN0YWJsZShzZWxlY3RhYmxlKSB7IHRoaXMuX3NlbGVjdGFibGUgPSBzZWxlY3RhYmxlOyB9XG4gIHNldCBzZWxlY3Rpb25CYWNrZW5kKHNlbGVjdGlvbkJhY2tlbmQpIHsgdGhpcy5fc2VsZWN0aW9uQmFja2VuZCA9IHNlbGVjdGlvbkJhY2tlbmQ7IH1cbiAgc2V0IHNlbGVjdGlvbkZpZWxkKHNlbGVjdGlvbkZpZWxkKSB7IHRoaXMuX3NlbGVjdGlvbkZpZWxkID0gc2VsZWN0aW9uRmllbGQ7IH1cbiAgc2V0IGFsbFNlbGVjdGVkKGFsbFNlbGVjdGVkKSB7IHRoaXMuX2FsbFNlbGVjdGVkID0gYWxsU2VsZWN0ZWQ7IH1cbiAgc2V0IHRhYmxlQ29kZSh0YWJsZUNvZGUpIHsgdGhpcy5fdGFibGVDb2RlID0gdGFibGVDb2RlOyB9XG4gIHNldCB0YWJsZVRpdGxlKHRhYmxlVGl0bGUpIHsgdGhpcy5fdGFibGVUaXRsZSA9IHRhYmxlVGl0bGU7IH1cbiAgc2V0IGN1cnJlbnRQYWdlKGN1cnJlbnRQYWdlKSB7IHRoaXMuX2N1cnJlbnRQYWdlID0gY3VycmVudFBhZ2U7IH1cbiAgc2V0IHRvdGFsUGFnZXModG90YWxQYWdlcykgeyB0aGlzLl90b3RhbFBhZ2VzID0gdG90YWxQYWdlczsgfVxuICBzZXQgcmVxdWVzdGVkUGFnZShyZXF1ZXN0ZWRQYWdlKSB7IHRoaXMuX3JlcXVlc3RlZFBhZ2UgPSByZXF1ZXN0ZWRQYWdlOyB9XG4gIHNldCByZWNvcmRzUGVyUGFnZShyZWNvcmRzUGVyUGFnZSkgeyB0aGlzLl9yZWNvcmRzUGVyUGFnZSA9IHJlY29yZHNQZXJQYWdlOyB9XG4gIHNldCB0b3RhbFJlY29yZHNOdW1iZXIodG90YWxSZWNvcmRzTnVtYmVyKSB7IHRoaXMuX3RvdGFsUmVjb3Jkc051bWJlciA9IHRvdGFsUmVjb3Jkc051bWJlcjsgfVxuICBzZXQgcmVjb3Jkc051bWJlcihyZWNvcmRzTnVtYmVyKSB7IHRoaXMuX3JlY29yZHNOdW1iZXIgPSByZWNvcmRzTnVtYmVyOyB9XG4gIHNldCBzb3J0aW5nKHNvcnRpbmcpIHsgdGhpcy5fc29ydGluZyA9IHNvcnRpbmc7IH1cbiAgc2V0IHdhaXRpbmcod2FpdGluZykgeyB0aGlzLnNldEF0dHIoYXR0cnMud2FpdGluZywgd2FpdGluZykgfVxuICBzZXQgY2xpZW50UGFnaW5nKGNsaWVudFBhZ2luZykgeyB0aGlzLl9jbGllbnRQYWdpbmcgPSBjbGllbnRQYWdpbmc7IH1cbiAgc2V0IHNvcnRhYmxlKHNvcnRhYmxlKSB7IHRoaXMuX3NvcnRhYmxlID0gc29ydGFibGU7IH1cblxuICBnZXRMYXlvdXQoKSB7IHJldHVybiB0aGlzLmxheW91dDsgfVxuICBzZXRMYXlvdXQobGF5b3V0KSB7IHRoaXMuc2V0QXR0cihhdHRycy5sYXlvdXQsIGxheW91dCk7IH1cbiAgaGFzQWN0aW9ucygpIHsgcmV0dXJuICh0aGlzLl9hY3Rpb25zLmxlbmd0aCA+IDApOyB9XG4gIGdldFNlbGVjdGVkUmVjb3JkcygpIHsgcmV0dXJuIHRoaXMuX3RhYmxlUmVjb3Jkcy5maWx0ZXIocmVjID0+IHJlYy5zZWxlY3RlZCkubWFwKHJlYyA9PiByZWMucmVjb3JkSWQpOyB9XG4gIGFjdGl2YXRlR2xvYmFsU2VhcmNoKCkgeyB0aGlzLl9nbG9iYWxTZWFyY2ggPSB0cnVlOyB9XG4gIGluYWN0aXZhdGVHbG9iYWxTZWFyY2goKSB7IHRoaXMuX2dsb2JhbFNlYXJjaCA9IGZhbHNlOyB9XG4gIGNvbHVtbkRlZmluaXRpb24oZmllbGRDb2RlKTogUmVjb3JkVGFibGVDb2x1bW4geyByZXR1cm4gdGhpcy5fdGFibGVDb2x1bW5PYmpbZmllbGRDb2RlXTsgfVxuICBwdXRPbldhaXQoKSB7IHRoaXMud2FpdGluZyA9IHRydWU7IH1cbiAgZnJlZVdhaXRpbmcoKSB7IHRoaXMud2FpdGluZyA9IGZhbHNlOyB9XG4gIHNldFdpZGdldCh3aWRnZXQpIHsgdGhpcy53aWRnZXQgPSB3aWRnZXQ7IH1cblxuICBub3RpZnlHbG9iYWxBY3Rpb24oYWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IHRhYmxlRXZlbnQ6IFRhYmxlRXZlbnQgPSB7XG4gICAgICB0YWJsZUNvZGU6IHRoaXMuX3RhYmxlQ29kZSxcbiAgICAgIGFjdGlvbkNvZGUsXG4gICAgICBhY3Rpb25EZXRhaWw6IG51bGxcbiAgICB9O1xuICAgIHRoaXMuX2dsb2JhbEFjdGlvblRyaWdnZXIubmV4dCh0YWJsZUV2ZW50KTtcbiAgfVxuXG4gIG5vdGlmeUlubGluZUFjdGlvbih0YWJsZUFjdGlvbkV2ZW50OiBUYWJsZUFjdGlvbkV2ZW50KSB7XG4gICAgY29uc3QgdGFibGVFdmVudDogVGFibGVFdmVudCA9IHtcbiAgICAgIHRhYmxlQ29kZTogdGhpcy5fdGFibGVDb2RlLFxuICAgICAgYWN0aW9uQ29kZTogdGFibGVBY3Rpb25FdmVudC5hY3Rpb25Db2RlLFxuICAgICAgYWN0aW9uRGV0YWlsOiB7XG4gICAgICAgIHJlY29yZElkOiB0YWJsZUFjdGlvbkV2ZW50LnJlY29yZElkLFxuICAgICAgICByZWNvcmREYXRhOiB0YWJsZUFjdGlvbkV2ZW50LnJlY29yZERhdGFcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuX2lubGluZUFjdGlvblRyaWdnZXIubmV4dCh0YWJsZUV2ZW50KTtcbiAgfVxuXG4gIG5vdGlmeVJlY29yZFNlbGVjdGlvbihyZWNvcmRJZCkge1xuICAgIGNvbnN0IHJlY29yZCA9IHRoaXMuZ2V0VGFibGVSZWNvcmQocmVjb3JkSWQpO1xuICAgIGlmICghcmVjb3JkKSB7IHJldHVybjsgfVxuICAgIHJlY29yZC50b2dnbGVTZWxlY3QoKTtcbiAgICB0aGlzLl9yZXF1ZXN0ZWRQYWdlID0gdGhpcy5fY3VycmVudFBhZ2UgPz8gMTtcbiAgICBjb25zdCB0YWJsZUV2ZW50OiBUYWJsZUV2ZW50ID0ge1xuICAgICAgdGFibGVDb2RlOiB0aGlzLl90YWJsZUNvZGUsXG4gICAgICBhY3Rpb25Db2RlOiBudWxsLFxuICAgICAgYWN0aW9uRGV0YWlsOiB7XG4gICAgICAgIHJlY29yZElkOiByZWNvcmQucmVjb3JkSWQsXG4gICAgICAgIHJlY29yZERhdGE6IHJlY29yZC5yZWNvcmREYXRhXG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLl9yZWNvcmRTZWxlY3Rpb25UcmlnZ2VyLm5leHQodGFibGVFdmVudCk7XG4gIH1cblxuICBub3RpZnlTZWxlY3Rpb25BY3Rpb24oYWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IHRhYmxlRXZlbnQ6IFRhYmxlRXZlbnQgPSB7XG4gICAgICB0YWJsZUNvZGU6IHRoaXMuX3RhYmxlQ29kZSxcbiAgICAgIGFjdGlvbkNvZGUsXG4gICAgICBhY3Rpb25EZXRhaWw6IHtcbiAgICAgICAgc2VsZWN0ZWRSZWNvcmRzOiB0aGlzLnNlbGVjdGVkUmVjb3Jkc1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5fc2VsZWN0aW9uQWN0aW9uVHJpZ2dlci5uZXh0KHRhYmxlRXZlbnQpO1xuICB9XG5cbiAgbm90aWZ5R2V0RGF0YUFjdGlvbihyZXF1ZXN0ZWRQYWdlID0gbnVsbCkge1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJlY29yZHMoKTtcbiAgICB0aGlzLl9yZXF1ZXN0ZWRQYWdlID0gcmVxdWVzdGVkUGFnZSB8fCB0aGlzLl9jdXJyZW50UGFnZSB8fCAxO1xuICAgIGNvbnN0IHRhYmxlRXZlbnQ6IFRhYmxlRXZlbnQgPSB7XG4gICAgICB0YWJsZUNvZGU6IHRoaXMuX3RhYmxlQ29kZSxcbiAgICAgIGFjdGlvbkNvZGU6IG51bGwsXG4gICAgICBhY3Rpb25EZXRhaWw6IG51bGwsXG4gICAgfTtcbiAgICB0aGlzLl9nZXREYXRhVHJpZ2dlci5uZXh0KHRhYmxlRXZlbnQpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY2xlYW4oKSB7XG4gICAgdGhpcy5fdGFibGVSZWNvcmRzID0gW107XG4gICAgdGhpcy51blNlbGVjdEFsbCgpO1xuICAgIHRoaXMuX3RhYmxlUmVjb3JkT2JqID0ge307XG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUmVjb3JkcygpO1xuICB9XG5cbiAgc2VsZWN0QWxsKCkge1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5hbGxTZWxlY3RlZCwgdHJ1ZSk7XG4gICAgdGhpcy5fdGFibGVSZWNvcmRzLmZvckVhY2gocmVjb3JkID0+IHJlY29yZC5zZWxlY3QoKSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLnNlbGVjdGVkUmVjb3JkcywgdGhpcy5nZXRTZWxlY3RlZFJlY29yZHMoKSk7XG4gICAgcmV0dXJuIHRydWU7XG5cbiAgfVxuXG4gIHVuU2VsZWN0QWxsKCkge1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5hbGxTZWxlY3RlZCwgZmFsc2UpO1xuICAgIHRoaXMuX3RhYmxlUmVjb3Jkcy5mb3JFYWNoKHJlY29yZCA9PiByZWNvcmQudW5zZWxlY3QoKSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLnNlbGVjdGVkUmVjb3JkcywgdGhpcy5nZXRTZWxlY3RlZFJlY29yZHMoKSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzZXRUYWJsZVJlY29yZHModGFibGVSZWNvcmRzLCBhcHBlbmQpIHtcbiAgICBpZiAoIWFwcGVuZCkge1xuICAgICAgdGhpcy5fdGFibGVSZWNvcmRzID0gW107XG4gICAgICB0aGlzLl90YWJsZVJlY29yZE9iaiA9IHt9O1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLmFsbFNlbGVjdGVkLCBmYWxzZSk7XG4gICAgICB0aGlzLnNldEF0dHIoYXR0cnMuc2VsZWN0ZWRSZWNvcmRzLCBbXSk7XG4gICAgfVxuICAgIGNvbnN0IG5ld1JlY29yZHNPYmogPSB7IC4uLnRoaXMuX3RhYmxlUmVjb3JkT2JqIH07XG4gICAgY29uc3QgbmV3UmVjb3JkcyA9IFsuLi50aGlzLl90YWJsZVJlY29yZHNdO1xuICAgIGZvciAoY29uc3QgdGFibGVSZWNvcmQgb2YgdGFibGVSZWNvcmRzKSB7XG4gICAgICBjb25zdCByZWNvcmRSZWNlaXZlZDogVGFibGVSZWNvcmREYXRhID0gbmV3IFRhYmxlUmVjb3JkRGF0YSh0YWJsZVJlY29yZCwgdGhpcy5fY29sdW1ucywgdGhpcy5fc2VsZWN0aW9uRmllbGQpO1xuICAgICAgY29uc3QgcmVjb3JkSWRLZXkgPSByZWNvcmRSZWNlaXZlZC5yZWNvcmRJZEtleTtcbiAgICAgIG5ld1JlY29yZHMucHVzaChyZWNvcmRSZWNlaXZlZCk7XG4gICAgICBuZXdSZWNvcmRzT2JqW3JlY29yZElkS2V5XSA9IHJlY29yZFJlY2VpdmVkO1xuICAgIH1cbiAgICB0aGlzLl90YWJsZVJlY29yZHMgPSBuZXdSZWNvcmRzO1xuICAgIHRoaXMuX3RhYmxlUmVjb3JkT2JqID0gbmV3UmVjb3Jkc09iajtcbiAgfVxuXG4gIGFwcGVuZFJlY29yZHMocmVjb3JkcykgeyB0aGlzLnNldFRhYmxlUmVjb3JkcyhyZWNvcmRzLCB0cnVlKTsgfVxuICByZXBsYWNlUmVjb3JkcyhyZWNvcmRzKSB7IHRoaXMuc2V0VGFibGVSZWNvcmRzKHJlY29yZHMsIGZhbHNlKTsgfVxuXG4gIHNldFRhYmxlQXBwZW5kKGFwcGVuZDogYm9vbGVhbikgeyB0aGlzLl9hcHBlbmRQYWdlcyA9IGFwcGVuZCB9XG5cbiAgY2hhbmdlUGFnZShyZXF1ZXN0ZWRQYWdlKSB7XG4gICAgaWYgKHRoaXMuX2NsaWVudFBhZ2luZykge1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLmN1cnJlbnRQYWdlLCByZXF1ZXN0ZWRQYWdlKTtcbiAgICAgIHRoaXMudXBkYXRlVmlzaWJsZVJlY29yZHMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ub3RpZnlHZXREYXRhQWN0aW9uKHJlcXVlc3RlZFBhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVZpc2libGVSZWNvcmRzKCkge1xuICAgIGxldCB2aXNpYmxlUmVjb3JkczogYW55W107XG4gICAgaWYgKHRoaXMuX2NsaWVudFBhZ2luZykge1xuICAgICAgdmlzaWJsZVJlY29yZHMgPSB0aGlzLmdldEZpbHRlcmVkUmVjb3JkcygpO1xuICAgICAgLy8gU2UgdmFsaWRhIHNpIGxhIHDDoWdpbmEgYWN0dWFsIHNpZ3VlIHNpZW5kbyB2w6FsaWRhXG4gICAgICBjb25zdCB0b3RhbFJlY29yZHMgPSB2aXNpYmxlUmVjb3Jkcy5sZW5ndGg7XG4gICAgICBjb25zdCByZWNvcmRzTGFzdFBhZ2UgPSB0b3RhbFJlY29yZHMgJSB0aGlzLl9yZWNvcmRzUGVyUGFnZTtcbiAgICAgIGNvbnN0IHRvdGFsUGFnZXMgPSBNYXRoLnRydW5jKHRvdGFsUmVjb3JkcyAvIHRoaXMuX3JlY29yZHNQZXJQYWdlICsgKHJlY29yZHNMYXN0UGFnZSA/IDEgOiAwKSk7XG4gICAgICBpZiAodGhpcy5fY3VycmVudFBhZ2UgPiB0b3RhbFBhZ2VzKSB7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRQYWdlID0gdG90YWxQYWdlcyB8fCAxO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2xpY2VOdW1iZXIxID0gKHRoaXMuX2N1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLl9yZWNvcmRzUGVyUGFnZTtcbiAgICAgIGNvbnN0IHNsaWNlTnVtYmVyMiA9ICh0aGlzLl9jdXJyZW50UGFnZSAtIDEpICogdGhpcy5fcmVjb3Jkc1BlclBhZ2UgKyB0aGlzLl9yZWNvcmRzUGVyUGFnZVxuICAgICAgdmlzaWJsZVJlY29yZHMgPSB2aXNpYmxlUmVjb3Jkcy5zbGljZShzbGljZU51bWJlcjEsIHNsaWNlTnVtYmVyMik7XG4gICAgICB0aGlzLnNldEF0dHIoYXR0cnMudG90YWxSZWNvcmRzTnVtYmVyLCB0b3RhbFJlY29yZHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2aXNpYmxlUmVjb3JkcyA9IHRoaXMuX3RhYmxlUmVjb3JkcztcbiAgICB9XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLnZpc2libGVSZWNvcmRzLCB2aXNpYmxlUmVjb3JkcyA/PyBbXSk7XG4gIH1cblxuICB1cGRhdGVGcm9tU2VydmVyKHRhYmxlUmVjZWl2ZWQpIHtcbiAgICB0aGlzLl9yZXF1ZXN0ZWRQYWdlID0gMTtcbiAgICBjb25zdCB7IHZpc2libGUgPSB0cnVlLCB0b3RhbFBhZ2VzID0gMSwgcmVjb3Jkc051bWJlciwgY3VycmVudFBhZ2UgPSAxLCByZWNvcmRzUGVyUGFnZSxcbiAgICAgIHRvdGFsUmVjb3Jkc051bWJlciwgc29ydGluZ0NvbHVtbiwgc29ydGluZ0RpcmVjdGlvbiwgdGFibGVSZWNvcmRzLFxuICAgICAgYWN0aW9ucywgZmllbGRzLFxuICAgIH0gPSB0YWJsZVJlY2VpdmVkO1xuICAgIHRoaXMudmlzaWJsZSA9IHZpc2libGU7XG4gICAgaWYgKGFjdGlvbnMpIHtcbiAgICAgIE9iamVjdC5rZXlzKGFjdGlvbnMpLmZvckVhY2goYWN0aW9uQ29kZSA9PiB7XG4gICAgICAgIGNvbnN0IHRibEFjdGlvbiA9IHRoaXMuZ2V0QWN0aW9uKGFjdGlvbkNvZGUpO1xuICAgICAgICBjb25zdCBhY3Rpb25SZWNlaXZlZCA9IGFjdGlvbnNbYWN0aW9uQ29kZV07XG4gICAgICAgIGlmIChhY3Rpb25SZWNlaXZlZC52aXNpYmxlID09PSB0cnVlIHx8IGFjdGlvblJlY2VpdmVkLnZpc2libGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgKGFjdGlvblJlY2VpdmVkLnZpc2libGUgPT09IHRydWUpICYmIHRibEFjdGlvbi5zaG93KCk7XG4gICAgICAgICAgKGFjdGlvblJlY2VpdmVkLnZpc2libGUgPT09IGZhbHNlKSAmJiB0YmxBY3Rpb24uaGlkZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3Rpb25SZWNlaXZlZC5lbmFibGVkID09PSB0cnVlIHx8IGFjdGlvblJlY2VpdmVkLmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgKGFjdGlvblJlY2VpdmVkLmVuYWJsZWQgPT09IHRydWUpICYmIHRibEFjdGlvbi5lbmFibGUoKTtcbiAgICAgICAgICAoYWN0aW9uUmVjZWl2ZWQuZW5hYmxlZCA9PT0gZmFsc2UpICYmIHRibEFjdGlvbi5kaXNhYmxlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvblJlY2VpdmVkLnNob3dPblN0YXRlcykge1xuICAgICAgICAgIGFjdGlvblJlY2VpdmVkLnNob3dPblN0YXRlcz8uZm9yRWFjaChuZXdTdGF0ZSA9PiB7XG4gICAgICAgICAgICB0YmxBY3Rpb24uYWRkVmlzaWJsZVN0YXRlKG5ld1N0YXRlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aW9uUmVjZWl2ZWQuaGlkZU9uU3RhdGVzKSB7XG4gICAgICAgICAgYWN0aW9uUmVjZWl2ZWQuaGlkZU9uU3RhdGVzPy5mb3JFYWNoKG5ld1N0YXRlID0+IHtcbiAgICAgICAgICAgIHRibEFjdGlvbi5yZW1vdmVWaXNpYmxlU3RhdGUobmV3U3RhdGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3Rpb25SZWNlaXZlZC5lbmFibGVPblN0YXRlcykge1xuICAgICAgICAgIGFjdGlvblJlY2VpdmVkLmVuYWJsZU9uU3RhdGVzPy5mb3JFYWNoKG5ld1N0YXRlID0+IHtcbiAgICAgICAgICAgIHRibEFjdGlvbi5hZGRFbmFibGVkU3RhdGUobmV3U3RhdGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3Rpb25SZWNlaXZlZC5kaXNhYmxlT25TdGF0ZXMpIHtcbiAgICAgICAgICBhY3Rpb25SZWNlaXZlZC5kaXNhYmxlT25TdGF0ZXM/LmZvckVhY2gobmV3U3RhdGUgPT4ge1xuICAgICAgICAgICAgdGJsQWN0aW9uLnJlbW92ZUVuYWJsZWRTdGF0ZShuZXdTdGF0ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoZmllbGRzKSB7XG4gICAgICBPYmplY3Qua2V5cyhmaWVsZHMpLmZvckVhY2goZmllbGRDb2RlID0+IHtcbiAgICAgICAgY29uc3QgdGJsRmllbGQgPSB0aGlzLmNvbHVtbkRlZmluaXRpb24oZmllbGRDb2RlKTtcbiAgICAgICAgY29uc3QgZmllbGRSZWNlaXZlZCA9IGZpZWxkc1tmaWVsZENvZGVdO1xuICAgICAgICBpZiAoZmllbGRSZWNlaXZlZC52aXNpYmxlID09PSB0cnVlIHx8IGZpZWxkUmVjZWl2ZWQudmlzaWJsZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAoZmllbGRSZWNlaXZlZC52aXNpYmxlID09PSB0cnVlKSAmJiB0YmxGaWVsZC5zaG93KCk7XG4gICAgICAgICAgKGZpZWxkUmVjZWl2ZWQudmlzaWJsZSA9PT0gZmFsc2UpICYmIHRibEZpZWxkLmhpZGUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0YWJsZVJlY29yZHMpIHtcbiAgICAgIHRoaXMuX3RvdGFsUGFnZXMgPSB0b3RhbFBhZ2VzO1xuICAgICAgdGhpcy5fcmVjb3Jkc051bWJlciA9IHJlY29yZHNOdW1iZXI7XG4gICAgICB0aGlzLnNldEF0dHIoYXR0cnMuY3VycmVudFBhZ2UsICtjdXJyZW50UGFnZSk7XG4gICAgICB0aGlzLnNldEF0dHIoYXR0cnMucmVjb3Jkc1BlclBhZ2UsICtyZWNvcmRzUGVyUGFnZSk7XG4gICAgICB0aGlzLnNldEF0dHIoYXR0cnMudG90YWxSZWNvcmRzTnVtYmVyLCAodGhpcy5fY2xpZW50UGFnaW5nKSA/IHRhYmxlUmVjb3Jkcy5sZW5ndGggOiArdG90YWxSZWNvcmRzTnVtYmVyKTtcbiAgICAgIHRoaXMuc2V0QXR0cihhdHRycy5zb3J0aW5nLCB7XG4gICAgICAgIGNvbHVtbk5hbWU6IHNvcnRpbmdDb2x1bW4gfHwgJycsXG4gICAgICAgIGRpcmVjdGlvbjogc29ydGluZ0RpcmVjdGlvbiB8fCAnJ1xuICAgICAgfSk7XG4gICAgICBpZiAoIXRoaXMuX2FwcGVuZFBhZ2VzKSB7XG4gICAgICAgIHRoaXMucmVwbGFjZVJlY29yZHModGFibGVSZWNvcmRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYXBwZW5kUmVjb3Jkcyh0YWJsZVJlY29yZHMpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmZyZWVXYWl0aW5nKCk7XG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUmVjb3JkcygpO1xuICB9XG5cbiAgZ2V0VGFibGVSZWNvcmQocmVjb3JkSWQpIHtcbiAgICBjb25zdCByZWNvcmRJZEtleSA9ICh0eXBlb2YgcmVjb3JkSWQgPT09ICdvYmplY3QnKSA/IEpTT04uc3RyaW5naWZ5KHJlY29yZElkKSA6IHJlY29yZElkO1xuICAgIHJldHVybiAodGhpcy5fdGFibGVSZWNvcmRPYmogJiYgcmVjb3JkSWQgJiYgdGhpcy5fdGFibGVSZWNvcmRPYmpbcmVjb3JkSWRdKVxuICAgICAgPyB0aGlzLl90YWJsZVJlY29yZE9ialtyZWNvcmRJZF0gOiBudWxsO1xuICB9XG5cbiAgZ2V0QWN0aW9uKGFjdGlvbkNvZGUpIHtcbiAgICByZXR1cm4gKHRoaXMuX2FjdGlvbnNPYmogJiYgYWN0aW9uQ29kZSAmJiB0aGlzLl9hY3Rpb25zT2JqW2FjdGlvbkNvZGVdKVxuICAgICAgPyB0aGlzLl9hY3Rpb25zT2JqW2FjdGlvbkNvZGVdIDogbnVsbDtcbiAgfVxuXG4gIGdldEFjdGlvbnMoYWN0aW9uQ2xhc3M6IHN0cmluZyA9IHRoaXMuX2Zvcm1Db25maWcudGFibGVBY3Rpb25zLmlubGluZSwgYWN0aW9uVHlwZXM6IHN0cmluZ1tdID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLl9hY3Rpb25zLmZpbHRlcihhY3Rpb25EZWYgPT4ge1xuICAgICAgY29uc3QgdHlwZUluY2x1ZGVkID0gKGFjdGlvblR5cGVzKSA/IGFjdGlvblR5cGVzLmluY2x1ZGVzKGFjdGlvbkRlZi5hY3Rpb25UeXBlKSA6IHRydWU7XG4gICAgICByZXR1cm4gYWN0aW9uRGVmLmFjdGlvbkNsYXNzID09PSBhY3Rpb25DbGFzcyAmJiB0eXBlSW5jbHVkZWQ7XG4gICAgfSk7XG4gIH1cblxuICAvLyBGaWx0cm9zXG5cbiAgc2V0RmlsdGVyQnlJZChpZCkge1xuICAgIGlmICh0aGlzLnJlc3RyaWN0ZWRJZCA9PT0gaWQpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5yZXN0cmljdGVkSWQgPSBpZDtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gIH1cblxuICBjbGVhbklkRmlsdGVyKCkge1xuICAgIGlmICh0aGlzLnJlc3RyaWN0ZWRJZCA9PT0gbnVsbCkgeyByZXR1cm47IH1cbiAgICB0aGlzLnJlc3RyaWN0ZWRJZCA9IG51bGw7XG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUmVjb3JkcygpO1xuICB9XG5cbiAgc2V0R2xvYmFsRmlsdGVyU3RyaW5nKHRleHQsIG5vdGlmeUNvbXBvbmVudCA9IHRydWUpIHtcbiAgICB0aGlzLmdsb2JhbEZpbHRlclN0cmluZ3MgPSB0ZXh0LnNwbGl0KCcgJykuZmlsdGVyKHQgPT4gdCAmJiB0LnRyaW0oKS5sZW5ndGggPiAwKS5tYXAodCA9PiB0LnRyaW0oKSkgPz8gW107XG4gICAgaWYgKHRoaXMuX2NsaWVudFBhZ2luZykge1xuICAgICAgdGhpcy5jaGFuZ2VQYWdlKDEpO1xuICAgIH1cbiAgICBpZiAobm90aWZ5Q29tcG9uZW50KSB7XG4gICAgICB0aGlzLnNldEF0dHIoYXR0cnMuZ2xvYmFsRmlsdGVyU3RyaW5nLCB0ZXh0LnRyaW0oKSk7XG4gICAgfVxuICB9XG5cbiAgYWRkRmlsdGVyRGVmaW5pdGlvbihjb2x1bW5OYW1lLCBmaWx0ZXJEZWZpbml0aW9uKSB7XG4gICAgY29uc3QgdGFibGVDb2x1bW4gPSB0aGlzLmNvbHVtbkRlZmluaXRpb24oY29sdW1uTmFtZSk7XG4gICAgdGFibGVDb2x1bW4gJiYgdGFibGVDb2x1bW4uYWRkRmlsdGVyRGVmaW5pdGlvbihmaWx0ZXJEZWZpbml0aW9uKTtcbiAgfVxuXG4gIGdldEZpbHRlcmVkUmVjb3JkcygpIHtcbiAgICBsZXQgZmlsdGVyZWRSZWNvcmRzID0gdGhpcy5fdGFibGVSZWNvcmRzO1xuICAgIGlmICh0aGlzLnJlc3RyaWN0ZWRJZCkge1xuICAgICAgZmlsdGVyZWRSZWNvcmRzID0gZmlsdGVyZWRSZWNvcmRzLmZpbHRlcihyZWNvcmQgPT4gcmVjb3JkLnJlY29yZElkID09PSB0aGlzLnJlc3RyaWN0ZWRJZCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmdsb2JhbEZpbHRlclN0cmluZ3MubGVuZ3RoID4gMCkge1xuICAgICAgZmlsdGVyZWRSZWNvcmRzID0gZmlsdGVyZWRSZWNvcmRzLmZpbHRlcihyZWNvcmQgPT4gcmVjb3JkLmhhc1BhdHRlcm4odGhpcy5nbG9iYWxGaWx0ZXJTdHJpbmdzLCB0aGlzLl90YWJsZUNvbHVtbk9iaikpO1xuICAgIH1cbiAgICBjb25zdCBjb2x1bW5GaWx0ZXJzID0gdGhpcy5fY29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5maWx0ZXIpLm1hcChjb2x1bW4gPT4gY29sdW1uLmZpbHRlcik7XG4gICAgaWYgKGNvbHVtbkZpbHRlcnMubGVuZ3RoID4gMCkge1xuICAgICAgZmlsdGVyZWRSZWNvcmRzID0gZmlsdGVyZWRSZWNvcmRzLmZpbHRlcihyZWNvcmQgPT4gcmVjb3JkLmhhc0NvbmRpdGlvbihjb2x1bW5GaWx0ZXJzKSk7XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXJlZFJlY29yZHM7XG4gIH1cblxuICBnZXRDb2x1bW5GaWx0ZXIoY29sdW1uTmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgdGFibGVDb2x1bW4gPSB0aGlzLmNvbHVtbkRlZmluaXRpb24oY29sdW1uTmFtZSk7XG4gICAgcmV0dXJuIHRhYmxlQ29sdW1uPy5maWx0ZXIgPz8gbnVsbDtcbiAgfVxuXG4gIGFkZENvbHVtbkZpbHRlcihjb2x1bW5OYW1lOiBzdHJpbmcsIGNvbHVtblZhbHVlczogYW55IHwgYW55W10sIG9wZXJhdG9yOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgIGNvbnN0IHRhYmxlQ29sdW1uID0gdGhpcy5jb2x1bW5EZWZpbml0aW9uKGNvbHVtbk5hbWUpO1xuICAgIGNvbnN0IGNvbHVtbkZpbHRlckRlZmluaXRpb24gPSB0YWJsZUNvbHVtbj8uZmlsdGVyRGVmaW5pdGlvbiA/PyBudWxsO1xuICAgIGlmICghY29sdW1uRmlsdGVyRGVmaW5pdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0YWJsZUNvbHVtbiAmJiB0YWJsZUNvbHVtbi5hZGRGaWx0ZXIoY29sdW1uVmFsdWVzLCBvcGVyYXRvcik7XG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUmVjb3JkcygpO1xuICB9XG5cbiAgcmVtb3ZlQ29sdW1uRmlsdGVyKGNvbHVtbk5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHRhYmxlQ29sdW1uID0gdGhpcy5jb2x1bW5EZWZpbml0aW9uKGNvbHVtbk5hbWUpO1xuICAgIHRhYmxlQ29sdW1uICYmIHRhYmxlQ29sdW1uLnJlbW92ZUZpbHRlcigpO1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJlY29yZHMoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50RmlsdGVyKCkge1xuICAgIGNvbnN0IGNvbXBhY3RGaWx0ZXI6IGFueSA9IHtcbiAgICAgIHNpbXBsZUZpbHRlcldvcmRzOiB0aGlzLmdsb2JhbEZpbHRlclN0cmluZ3MsXG4gICAgICBhZHZhbmNlZEZpbHRlcjogW10sXG4gICAgfTtcbiAgICBjb25zdCBjb2x1bW5GaWx0ZXJzID0gdGhpcy5fY29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5maWx0ZXIpLm1hcChjb2x1bW4gPT4gY29sdW1uLmZpbHRlcik7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNvbHVtbkZpbHRlcnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBjb2x1bW5GaWx0ZXIgPSBjb2x1bW5GaWx0ZXJzW2luZGV4XTtcbiAgICAgIGNvbXBhY3RGaWx0ZXIuYWR2YW5jZWRGaWx0ZXIucHVzaCh7XG4gICAgICAgIGZpZWxkQ29kZTogY29sdW1uRmlsdGVyPy5maWVsZENvZGUsXG4gICAgICAgIG9wZXJhdG9yOiBjb2x1bW5GaWx0ZXI/Lm9wZXJhdG9yLFxuICAgICAgICBmaWVsZFZhbHVlMTogY29sdW1uRmlsdGVyPy52YWx1ZXNbMF0sXG4gICAgICAgIGZpZWxkVmFsdWUyOiBjb2x1bW5GaWx0ZXI/LnZhbHVlc1sxXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY29tcGFjdEZpbHRlcjtcbiAgfVxuXG4gIC8vIE9yZGVuYW1pZW50byBkZSByZWdpc3Ryb3MgbG9jYWxcblxuICBzb3J0KGNvbHVtbk5hbWUsIGRpcmVjdGlvbikge1xuICAgIHRoaXMuc2V0UmVxdWlyZWRPcmRlcihjb2x1bW5OYW1lLCBkaXJlY3Rpb24pO1xuICAgIGlmICh0aGlzLl9jbGllbnRQYWdpbmcpIHtcbiAgICAgIHRoaXMubG9jYWxTb3J0RGF0YSgpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubm90aWZ5R2V0RGF0YUFjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHNldFJlcXVpcmVkT3JkZXIoY29sdW1uRmllbGQsIGRpcmVjdGlvbiA9IG51bGwpIHtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuc29ydGluZywge1xuICAgICAgY29sdW1uTmFtZTogY29sdW1uRmllbGQsXG4gICAgICBkaXJlY3Rpb246IChkaXJlY3Rpb24gPT09ICdhc2NlbmQnKSA/IFRBQkxFX1NPUlRfQVNDRU5ESU5HIDogVEFCTEVfU09SVF9ERVNDRU5ESU5HLFxuICAgIH0pO1xuICB9XG5cbiAgbG9jYWxTb3J0RGF0YSgpIHtcbiAgICBpZiAoIXRoaXMuX3NvcnRpbmcuY29sdW1uTmFtZSB8fCAhdGhpcy5fc29ydGluZy5kaXJlY3Rpb24pIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5fdGFibGVSZWNvcmRzLnNvcnQoKGEsIGIpID0+IHRoaXMucmVjb3JkQ29tcGFyZShhLCBiLCB0aGlzLl9zb3J0aW5nLmNvbHVtbk5hbWUsIHRoaXMuX3NvcnRpbmcuZGlyZWN0aW9uKSk7XG4gICAgLy90aGlzLnVuU2VsZWN0QWxsKCk7XG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUmVjb3JkcygpO1xuICB9XG5cbiAgcmVjb3JkQ29tcGFyZShyZWNvcmRBOiBUYWJsZVJlY29yZERhdGEsIHJlY29yZEI6IFRhYmxlUmVjb3JkRGF0YSwgY29sdW1uQ29tcGFyZSwgZGlyZWN0aW9uKSB7XG4gICAgY29uc3QgcmVjb3JkQVZhbHVlID0gcmVjb3JkQS5nZXRGaWVsZFZhbHVlKGNvbHVtbkNvbXBhcmUpO1xuICAgIGNvbnN0IHJlY29yZEJWYWx1ZSA9IHJlY29yZEIuZ2V0RmllbGRWYWx1ZShjb2x1bW5Db21wYXJlKTtcbiAgICBjb25zdCByZWNvcmRBQ29sdW1uID0gaXNOYU4ocmVjb3JkQVZhbHVlKSA/IHJlY29yZEFWYWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpIDogK3JlY29yZEFWYWx1ZTtcbiAgICBjb25zdCByZWNvcmRCQ29sdW1uID0gaXNOYU4ocmVjb3JkQlZhbHVlKSA/IHJlY29yZEJWYWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpIDogK3JlY29yZEJWYWx1ZTtcbiAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICBpZiAocmVjb3JkQUNvbHVtbiA8IHJlY29yZEJDb2x1bW4pIHtcbiAgICAgIHJlc3VsdCA9IC0xO1xuICAgIH0gZWxzZSBpZiAocmVjb3JkQUNvbHVtbiA+IHJlY29yZEJDb2x1bW4pIHtcbiAgICAgIHJlc3VsdCA9IDE7XG4gICAgfVxuICAgIHJldHVybiBkaXJlY3Rpb24gPT09IFRBQkxFX1NPUlRfQVNDRU5ESU5HID8gcmVzdWx0IDogLXJlc3VsdDtcbiAgfVxuXG4gIG92ZXJyaWRlIGZvcm1TdGF0ZUNoYW5nZUN1c3RvbVN1YnNjcmliZShmb3JtLCBmb3JtQ2hhbmdlU3ViamVjdCkge1xuICAgIHRoaXMuX2NvbHVtbnM/LmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgIGNvbHVtbj8uY29ubmVjdFdpdGhQYXJlbnRGb3JtKGZvcm0sIGZvcm1DaGFuZ2VTdWJqZWN0KTtcbiAgICB9KTtcbiAgICB0aGlzLl9hY3Rpb25zPy5mb3JFYWNoKGFjdGlvbiA9PiB7XG4gICAgICBhY3Rpb24/LmNvbm5lY3RXaXRoUGFyZW50Rm9ybShmb3JtLCBmb3JtQ2hhbmdlU3ViamVjdCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
534
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL3RhYmxlL3RhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUU3QyxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQztBQUNuQyxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQztBQUVyQyxNQUFNLEtBQUssR0FBRztJQUNaLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRTtJQUM5RCxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUU7SUFDbkQsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO0lBQ3ZELFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRTtJQUNqRSxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUU7SUFDcEYsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO0lBQzdDLGNBQWMsRUFBRSxFQUFFLElB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IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGVsZW1lbnRUeXBlcyB9IGZyb20gJy4uL2Zvcm0uY29uc3RhbnRzJztcbmltcG9ydCB7IEZvcm1FbGVtZW50IH0gZnJvbSAnLi4vZWxlbWVudCc7XG5pbXBvcnQgeyBSZWNvcmRUYWJsZUNvbHVtbiB9IGZyb20gJy4vY29sdW1uJztcbmltcG9ydCB7IFRhYmxlQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb24nO1xuaW1wb3J0IHsgVGFibGVSZWNvcmREYXRhIH0gZnJvbSAnLi9yb3ctZGF0YSc7XG5cbmNvbnN0IFRBQkxFX1NPUlRfQVNDRU5ESU5HID0gJ2FzYyc7XG5jb25zdCBUQUJMRV9TT1JUX0RFU0NFTkRJTkcgPSAnZGVzYyc7XG5cbmNvbnN0IGF0dHJzID0ge1xuICBhbGxTZWxlY3RlZDogeyBuYW1lOiAnYWxsU2VsZWN0ZWQnLCBwcm9wYWdhdGU6ICdhbGxTZWxlY3RlZCcgfSxcbiAgdGFibGVDb2RlOiB7IG5hbWU6ICd0YWJsZUNvZGUnLCBwcm9wYWdhdGU6ICdjb2RlJyB9LFxuICBjbGllbnRQYWdpbmc6IHsgbmFtZTogJ2NsaWVudFBhZ2luZycsIHByb3BhZ2F0ZTogbnVsbCB9LFxuICBnbG9iYWxTZWFyY2g6IHsgbmFtZTogJ2dsb2JhbFNlYXJjaCcsIHByb3BhZ2F0ZTogJ2dsb2JhbFNlYXJjaCcgfSxcbiAgZ2xvYmFsRmlsdGVyU3RyaW5nOiB7IG5hbWU6ICdfZ2xvYmFsRmlsdGVyU3RyaW5nJywgcHJvcGFnYXRlOiAnZ2xvYmFsRmlsdGVyU3RyaW5nJyB9LFxuICBzb3J0aW5nOiB7IG5hbWU6ICdzb3J0aW5nJywgcHJvcGFnYXRlOiBudWxsIH0sXG4gIHJlY29yZHNQZXJQYWdlOiB7IG5hbWU6ICdyZWNvcmRzUGVyUGFnZScsIHByb3BhZ2F0ZTogJ3JlY29yZHNQZXJQYWdlJyB9LFxuICBsYXlvdXQ6IHsgbmFtZTogJ2xheW91dCcsIHByb3BhZ2F0ZTogJ2xheW91dCcgfSxcbiAgY29sdW1uczogeyBuYW1lOiAnY29sdW1ucycsIHByb3BhZ2F0ZTogJ2NvbHVtbnMnIH0sXG4gIHNlbGVjdGVkUmVjb3JkczogeyBuYW1lOiAnc2VsZWN0ZWRSZWNvcmRzJywgcHJvcGFnYXRlOiAnc2VsZWN0ZWRSZWNvcmRzJyB9LFxuICBjdXJyZW50UGFnZTogeyBuYW1lOiAnY3VycmVudFBhZ2UnLCBwcm9wYWdhdGU6ICdjdXJyZW50UGFnZScgfSxcbiAgdG90YWxSZWNvcmRzTnVtYmVyOiB7IG5hbWU6ICd0b3RhbFJlY29yZHNOdW1iZXInLCBwcm9wYWdhdGU6ICd0b3RhbFJlY29yZHNOdW1iZXInIH0sXG4gIHZpc2libGVSZWNvcmRzOiB7IG5hbWU6ICdfdmlzaWJsZVJlY29yZHMnLCBwcm9wYWdhdGU6ICd2aXNpYmxlUmVjb3JkcycgfSxcbiAgd2FpdGluZzogeyBuYW1lOiAnX3dhaXRpbmcnLCBwcm9wYWdhdGU6ICd3YWl0aW5nJyB9LFxufTtcblxuZXhwb3J0IGludGVyZmFjZSBUYWJsZUFjdGlvbkV2ZW50IHtcbiAgYWN0aW9uQ29kZTogc3RyaW5nO1xuICByZWNvcmRJZDogYW55O1xuICByZWNvcmREYXRhOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVFdmVudCB7XG4gIHRhYmxlQ29kZTogc3RyaW5nO1xuICBhY3Rpb25Db2RlOiBzdHJpbmcgfCBudWxsO1xuICBhY3Rpb25EZXRhaWw6IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIFJlY29yZFRhYmxlIGV4dGVuZHMgRm9ybUVsZW1lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbmxpbmVBY3Rpb25UcmlnZ2VyID0gbmV3IFN1YmplY3Q8VGFibGVFdmVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZ2xvYmFsQWN0aW9uVHJpZ2dlciA9IG5ldyBTdWJqZWN0PFRhYmxlRXZlbnQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlY29yZFNlbGVjdGlvblRyaWdnZXIgPSBuZXcgU3ViamVjdDxUYWJsZUV2ZW50PigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3Rpb25BY3Rpb25UcmlnZ2VyID0gbmV3IFN1YmplY3Q8VGFibGVFdmVudD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZ2V0RGF0YVRyaWdnZXIgPSBuZXcgU3ViamVjdDxUYWJsZUV2ZW50PigpO1xuICBwcml2YXRlIF90YWJsZUNvbHVtbk9iaiA9IHt9O1xuICBwcml2YXRlIF9hcHBlbmRQYWdlczogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfYWN0aW9uczogVGFibGVBY3Rpb25bXTtcbiAgcHJpdmF0ZSBfYWN0aW9uc09iaiA9IHt9O1xuXG4gIC8vIE1lY2FuaXNtb3MgZGUgZmlsdHJhZG8gbnVldmEgdmVyc2nDs25cbiAgcHJpdmF0ZSBfZ2xvYmFsRmlsdGVyU3RyaW5nOiBzdHJpbmcgPSAnJztcbiAgcHJpdmF0ZSBnbG9iYWxGaWx0ZXJTdHJpbmdzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIHNlbGVjdGVkUmVjb3JkczogYW55O1xuICBwcml2YXRlIHJlc3RyaWN0ZWRJZDogYW55O1xuICBwcml2YXRlIGxheW91dDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2dsb2JhbFNlYXJjaDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfdGFibGVSZWNvcmRzOiBUYWJsZVJlY29yZERhdGFbXTtcbiAgcHJpdmF0ZSBfdGFibGVSZWNvcmRPYmogPSB7fTtcbiAgcHJpdmF0ZSBfdmlzaWJsZVJlY29yZHM6IFRhYmxlUmVjb3JkRGF0YVtdID0gW107XG4gIHByaXZhdGUgX2NvbHVtbnM6IFJlY29yZFRhYmxlQ29sdW1uW107XG4gIHByaXZhdGUgX3NlbGVjdGFibGU6IGJvb2xlYW47XG4gIHByaXZhdGUgX3NlbGVjdGlvbkJhY2tlbmQ6IGJvb2xlYW47XG4gIHByaXZhdGUgX3NlbGVjdGlvbkZpZWxkOiBzdHJpbmc7XG4gIHByaXZhdGUgX2FsbFNlbGVjdGVkID0gZmFsc2U7XG4gIHByaXZhdGUgX3RhYmxlQ29kZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgX3RhYmxlVGl0bGU6IHN0cmluZztcbiAgcHJpdmF0ZSBfY3VycmVudFBhZ2U6IG51bWJlcjtcbiAgcHJpdmF0ZSBfdG90YWxQYWdlczogbnVtYmVyO1xuICBwcml2YXRlIF9yZXF1ZXN0ZWRQYWdlOiBudW1iZXI7XG4gIHByaXZhdGUgX3JlY29yZHNQZXJQYWdlOiBudW1iZXIgPSAxMDtcbiAgcHJpdmF0ZSBfdG90YWxSZWNvcmRzTnVtYmVyOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF9yZWNvcmRzTnVtYmVyOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF9zb3J0aW5nOiBhbnk7XG4gIHByaXZhdGUgX3dhaXRpbmc6IGJvb2xlYW47XG4gIHByaXZhdGUgX2NsaWVudFBhZ2luZzogYm9vbGVhbiA9IHRydWU7XG4gIHByaXZhdGUgX3NvcnRhYmxlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHRhYmxlUmVjZWl2ZWQsIGZvcm1Db25maWcpIHtcbiAgICBzdXBlcih0YWJsZVJlY2VpdmVkLCBmb3JtQ29uZmlnKTtcbiAgICB0aGlzLnByb3BhZ2F0aW9uQ3VzdG9tQXR0cmlidXRlcyA9IHRoaXMuX2Zvcm1Db25maWc/LnByb3BhZ2F0aW9uQ3VzdG9tQXR0cmlidXRlcz8udGFibGVzID8/IFtdO1xuICAgIHRoaXMuZWxlbWVudFR5cGUgPSBlbGVtZW50VHlwZXMudGFibGU7XG4gICAgdGhpcy5fd2FpdGluZyA9IGZhbHNlO1xuICAgIHRoaXMuX2N1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLl90b3RhbFBhZ2VzID0gMTtcbiAgICB0aGlzLl9yZXF1ZXN0ZWRQYWdlID0gMTtcbiAgICB0aGlzLl9jb2x1bW5zID0gW107XG4gICAgdGhpcy5fdGFibGVDb2x1bW5PYmogPSB7fTtcbiAgICB0aGlzLl9hY3Rpb25zID0gW107XG4gICAgdGhpcy5fYWN0aW9uc09iaiA9IHt9O1xuICAgIHRoaXMuX3RhYmxlUmVjb3JkcyA9IFtdO1xuICAgIHRoaXMuX2dsb2JhbFNlYXJjaCA9IGZhbHNlO1xuICAgIHRoaXMucmVzdHJpY3RlZElkID0gbnVsbDtcblxuICAgIHRoaXMuX3RhYmxlVGl0bGUgPSB0YWJsZVJlY2VpdmVkLnRhYmxlVGl0bGU7XG4gICAgdGhpcy5fYXBwZW5kUGFnZXMgPSB0YWJsZVJlY2VpdmVkPy5hcHBlbmQgPz8gZmFsc2U7XG4gICAgdGhpcy5fc2VsZWN0YWJsZSA9IHRhYmxlUmVjZWl2ZWQ/LnNlbGVjdGFibGUgPz8gZmFsc2U7XG4gICAgdGhpcy5fc2VsZWN0aW9uQmFja2VuZCA9IHRhYmxlUmVjZWl2ZWQ/LnNlbGVjdGlvbkJhY2tlbmQgPz8gZmFsc2U7XG4gICAgdGhpcy5fc29ydGFibGUgPSB0YWJsZVJlY2VpdmVkPy5zb3J0YWJsZSA/PyBmYWxzZTtcblxuICAgIHRoaXMuc2V0QXR0cihhdHRycy5hbGxTZWxlY3RlZCwgZmFsc2UpO1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy50YWJsZUNvZGUsIHRhYmxlUmVjZWl2ZWQudGFibGVDb2RlKTtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuY2xpZW50UGFnaW5nLCB0YWJsZVJlY2VpdmVkPy5jbGllbnRQYWdpbmcgPz8gdHJ1ZSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmdsb2JhbFNlYXJjaCwgdGFibGVSZWNlaXZlZD8uc2ltcGxlRmlsdGVyID8/IGZhbHNlKTtcbiAgICB0aGlzLnNldEF0dHIoYXR0cnMuZ2xvYmFsRmlsdGVyU3RyaW5nLCAnJyk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLnNvcnRpbmcsIHsgY29sdW1uTmFtZTogJycsIGRpcmVjdGlvbjogJycgfSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLnJlY29yZHNQZXJQYWdlLCBmb3JtQ29uZmlnLmRlZmF1bHRSZWNvcmRzUGVyUGFnZSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLmxheW91dCwgJycpO1xuXG4gICAgaWYgKHRhYmxlUmVjZWl2ZWQuZmllbGRzKSB7XG4gICAgICBjb25zdCBjb2x1bW5zOiBSZWNvcmRUYWJsZUNvbHVtbltdID0gW107XG4gICAgICBmb3IgKGNvbnN0IGNvbHVtblJlY2VpdmVkIG9mIHRhYmxlUmVjZWl2ZWQuZmllbGRzKSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbkVucmljaGVkID0ge1xuICAgICAgICAgIC4uLmNvbHVtblJlY2VpdmVkLFxuICAgICAgICAgIHZpc2libGVTdGF0ZXM6IHRoaXMudmlzaWJsZVN0YXRlcyxcbiAgICAgICAgICBlbmFibGVkU3RhdGVzOiB0aGlzLmVuYWJsZWRTdGF0ZXNcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgY29sdW1uRGVmaW5pdGlvbjogUmVjb3JkVGFibGVDb2x1bW4gPSBuZXcgUmVjb3JkVGFibGVDb2x1bW4oY29sdW1uRW5yaWNoZWQsIHRoaXMuX2Zvcm1Db25maWcpO1xuICAgICAgICBjb2x1bW5zLnB1c2goY29sdW1uRGVmaW5pdGlvbik7XG4gICAgICAgIHRoaXMuX3RhYmxlQ29sdW1uT2JqW2NvbHVtbkRlZmluaXRpb24uZmllbGRDb2RlXSA9IGNvbHVtbkRlZmluaXRpb247XG4gICAgICB9XG4gICAgICB0aGlzLnNldEF0dHIoYXR0cnMuY29sdW1ucywgY29sdW1ucyk7XG4gICAgfVxuICAgIGlmICh0YWJsZVJlY2VpdmVkLmFjdGlvbnMpIHtcbiAgICAgIGNvbnN0IHRhYmxlQWN0aW9ucyA9IHRhYmxlUmVjZWl2ZWQuYWN0aW9ucy5tYXAob2JqRGVmID0+IHtcbiAgICAgICAgbGV0IHZpc2libGVTdGF0ZXMgPSBvYmpEZWYudmlzaWJsZVN0YXRlcztcbiAgICAgICAgbGV0IGVuYWJsZWRTdGF0ZXMgPSBvYmpEZWYuZW5hYmxlZFN0YXRlcztcbiAgICAgICAgaWYgKCF2aXNpYmxlU3RhdGVzKSB7XG4gICAgICAgICAgdmlzaWJsZVN0YXRlcyA9IChvYmpEZWYuYWN0aW9uTW9kZXMgfHwgJycpLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKVxuICAgICAgICAgICAgLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKTtcbiAgICAgICAgICBlbmFibGVkU3RhdGVzID0gKG9iakRlZi5hY3Rpb25Nb2RlcyB8fCAnJykuc3BsaXQoJywnKVxuICAgICAgICAgICAgLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLm9iakRlZiwgdmlzaWJsZVN0YXRlcywgZW5hYmxlZFN0YXRlcyB9O1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IGFjdGlvblJlY2VpdmVkIG9mIHRhYmxlQWN0aW9ucykge1xuICAgICAgICBjb25zdCBpbmxpbmVBY3Rpb24gPSBuZXcgVGFibGVBY3Rpb24oYWN0aW9uUmVjZWl2ZWQsIHRoaXMuX2Zvcm1Db25maWcpO1xuICAgICAgICB0aGlzLl9hY3Rpb25zLnB1c2goaW5saW5lQWN0aW9uKTtcbiAgICAgICAgdGhpcy5fYWN0aW9uc09ialtpbmxpbmVBY3Rpb24uYWN0aW9uQ29kZV0gPSBpbmxpbmVBY3Rpb247XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX3NlbGVjdGlvbkZpZWxkID0gKHRoaXMuX3NlbGVjdGFibGUpID8gdGFibGVSZWNlaXZlZD8uc2VsZWN0aW9uRmllbGQgOiBudWxsO1xuICAgIC8vIEZpbHRyb3MgcHJlZGVmaW5pZG9zIGVuIGVsIGZvcm11bGFyaW9cbiAgICBpZiAodGFibGVSZWNlaXZlZC5maWx0ZXJzKSB7XG4gICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGFibGVSZWNlaXZlZC5maWx0ZXJzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICB0aGlzLmFkZEZpbHRlckRlZmluaXRpb24odGFibGVSZWNlaXZlZC5maWx0ZXJzW2luZGV4XS5maWVsZENvZGUsIHRhYmxlUmVjZWl2ZWQuZmlsdGVyc1tpbmRleF0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBjb2x1bW5OYW1lcygpIHsgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX3RhYmxlQ29sdW1uT2JqKTsgfVxuICBnZXQgaW5saW5lQWN0aW9uVHJpZ2dlcigpIHsgcmV0dXJuIHRoaXMuX2lubGluZUFjdGlvblRyaWdnZXIuYXNPYnNlcnZhYmxlKCk7IH1cbiAgZ2V0IGdsb2JhbEFjdGlvblRyaWdnZXIoKSB7IHJldHVybiB0aGlzLl9nbG9iYWxBY3Rpb25UcmlnZ2VyLmFzT2JzZXJ2YWJsZSgpOyB9XG4gIGdldCBzZWxlY3Rpb25BY3Rpb25UcmlnZ2VyKCkgeyByZXR1cm4gdGhpcy5fc2VsZWN0aW9uQWN0aW9uVHJpZ2dlci5hc09ic2VydmFibGUoKTsgfVxuICBnZXQgcmVjb3JkU2VsZWN0aW9uVHJpZ2dlcigpIHsgcmV0dXJuIHRoaXMuX3JlY29yZFNlbGVjdGlvblRyaWdnZXIuYXNPYnNlcnZhYmxlKCk7IH1cbiAgZ2V0IGdldERhdGFUcmlnZ2VyKCkgeyByZXR1cm4gdGhpcy5fZ2V0RGF0YVRyaWdnZXIuYXNPYnNlcnZhYmxlKCk7IH1cblxuICBnZXQgZ2xvYmFsU2VhcmNoKCkgeyByZXR1cm4gdGhpcy5fZ2xvYmFsU2VhcmNoOyB9XG4gIGdldCB0YWJsZVJlY29yZHMoKSB7IHJldHVybiB0aGlzLl90YWJsZVJlY29yZHM7IH1cbiAgZ2V0IHRhYmxlUmVjb3JkT2JqKCkgeyByZXR1cm4gdGhpcy5fdGFibGVSZWNvcmRPYmo7IH1cbiAgZ2V0IHZpc2libGVSZWNvcmRzKCkgeyByZXR1cm4gdGhpcy5fdmlzaWJsZVJlY29yZHM7IH1cbiAgZ2V0IGNvbHVtbnMoKSB7IHJldHVybiB0aGlzLl9jb2x1bW5zOyB9XG4gIGdldCBzZWxlY3RhYmxlKCkgeyByZXR1cm4gdGhpcy5fc2VsZWN0YWJsZTsgfVxuICBnZXQgc2VsZWN0aW9uQmFja2VuZCgpIHsgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbkJhY2tlbmQ7IH1cbiAgZ2V0IHNlbGVjdGlvbkZpZWxkKCkgeyByZXR1cm4gdGhpcy5fc2VsZWN0aW9uRmllbGQ7IH1cbiAgZ2V0IGFsbFNlbGVjdGVkKCkgeyByZXR1cm4gdGhpcy5fYWxsU2VsZWN0ZWQ7IH1cbiAgZ2V0IHRhYmxlQ29kZSgpIHsgcmV0dXJuIHRoaXMuX3RhYmxlQ29kZTsgfVxuICBnZXQgdGFibGVUaXRsZSgpIHsgcmV0dXJuIHRoaXMuX3RhYmxlVGl0bGU7IH1cbiAgZ2V0IGN1cnJlbnRQYWdlKCkgeyByZXR1cm4gdGhpcy5fY3VycmVudFBhZ2U7IH1cbiAgZ2V0IHRvdGFsUGFnZXMoKSB7IHJldHVybiB0aGlzLl90b3RhbFBhZ2VzOyB9XG4gIGdldCByZXF1ZXN0ZWRQYWdlKCkgeyByZXR1cm4gdGhpcy5fcmVxdWVzdGVkUGFnZTsgfVxuICBnZXQgcmVjb3Jkc1BlclBhZ2UoKSB7IHJldHVybiB0aGlzLl9yZWNvcmRzUGVyUGFnZTsgfVxuICBnZXQgdG90YWxSZWNvcmRzTnVtYmVyKCkgeyByZXR1cm4gdGhpcy5fdG90YWxSZWNvcmRzTnVtYmVyOyB9XG4gIGdldCByZWNvcmRzTnVtYmVyKCkgeyByZXR1cm4gdGhpcy5fcmVjb3Jkc051bWJlcjsgfVxuICBnZXQgc29ydGluZygpIHsgcmV0dXJuIHRoaXMuX3NvcnRpbmc7IH1cbiAgZ2V0IHdhaXRpbmcoKSB7IHJldHVybiB0aGlzLl93YWl0aW5nOyB9XG4gIGdldCBjbGllbnRQYWdpbmcoKSB7IHJldHVybiB0aGlzLl9jbGllbnRQYWdpbmc7IH1cbiAgZ2V0IHNvcnRhYmxlKCkgeyByZXR1cm4gdGhpcy5fc29ydGFibGU7IH1cblxuICBnZXQgZ2xvYmFsRmlsdGVyU3RyaW5nKCkgeyByZXR1cm4gdGhpcy5fZ2xvYmFsRmlsdGVyU3RyaW5nOyB9XG4gIHNldCBnbG9iYWxGaWx0ZXJTdHJpbmcoZ2xvYmFsRmlsdGVyU3RyaW5nKSB7IHRoaXMuX2dsb2JhbEZpbHRlclN0cmluZyA9IGdsb2JhbEZpbHRlclN0cmluZzsgfVxuXG4gIHNldCBnbG9iYWxTZWFyY2goZ2xvYmFsU2VhcmNoKSB7IHRoaXMuX2dsb2JhbFNlYXJjaCA9IGdsb2JhbFNlYXJjaDsgfVxuICBzZXQgdGFibGVSZWNvcmRzKHRhYmxlUmVjb3JkcykgeyB0aGlzLl90YWJsZVJlY29yZHMgPSB0YWJsZVJlY29yZHM7IH1cbiAgc2V0IHRhYmxlUmVjb3JkT2JqKHRhYmxlUmVjb3JkT2JqKSB7IHRoaXMuX3RhYmxlUmVjb3JkT2JqID0gdGFibGVSZWNvcmRPYmo7IH1cbiAgc2V0IHZpc2libGVSZWNvcmRzKHZpc2libGVSZWNvcmRzKSB7IHRoaXMuX3Zpc2libGVSZWNvcmRzID0gdmlzaWJsZVJlY29yZHMgPz8gW107IH1cbiAgc2V0IGNvbHVtbnMoY29sdW1ucykgeyB0aGlzLl9jb2x1bW5zID0gY29sdW1uczsgfVxuICBzZXQgc2VsZWN0YWJsZShzZWxlY3RhYmxlKSB7IHRoaXMuX3NlbGVjdGFibGUgPSBzZWxlY3RhYmxlOyB9XG4gIHNldCBzZWxlY3Rpb25CYWNrZW5kKHNlbGVjdGlvbkJhY2tlbmQpIHsgdGhpcy5fc2VsZWN0aW9uQmFja2VuZCA9IHNlbGVjdGlvbkJhY2tlbmQ7IH1cbiAgc2V0IHNlbGVjdGlvbkZpZWxkKHNlbGVjdGlvbkZpZWxkKSB7IHRoaXMuX3NlbGVjdGlvbkZpZWxkID0gc2VsZWN0aW9uRmllbGQ7IH1cbiAgc2V0IGFsbFNlbGVjdGVkKGFsbFNlbGVjdGVkKSB7IHRoaXMuX2FsbFNlbGVjdGVkID0gYWxsU2VsZWN0ZWQ7IH1cbiAgc2V0IHRhYmxlQ29kZSh0YWJsZUNvZGUpIHsgdGhpcy5fdGFibGVDb2RlID0gdGFibGVDb2RlOyB9XG4gIHNldCB0YWJsZVRpdGxlKHRhYmxlVGl0bGUpIHsgdGhpcy5fdGFibGVUaXRsZSA9IHRhYmxlVGl0bGU7IH1cbiAgc2V0IGN1cnJlbnRQYWdlKGN1cnJlbnRQYWdlKSB7IHRoaXMuX2N1cnJlbnRQYWdlID0gY3VycmVudFBhZ2U7IH1cbiAgc2V0IHRvdGFsUGFnZXModG90YWxQYWdlcykgeyB0aGlzLl90b3RhbFBhZ2VzID0gdG90YWxQYWdlczsgfVxuICBzZXQgcmVxdWVzdGVkUGFnZShyZXF1ZXN0ZWRQYWdlKSB7IHRoaXMuX3JlcXVlc3RlZFBhZ2UgPSByZXF1ZXN0ZWRQYWdlOyB9XG4gIHNldCByZWNvcmRzUGVyUGFnZShyZWNvcmRzUGVyUGFnZSkgeyB0aGlzLl9yZWNvcmRzUGVyUGFnZSA9IHJlY29yZHNQZXJQYWdlOyB9XG4gIHNldCB0b3RhbFJlY29yZHNOdW1iZXIodG90YWxSZWNvcmRzTnVtYmVyKSB7IHRoaXMuX3RvdGFsUmVjb3Jkc051bWJlciA9IHRvdGFsUmVjb3Jkc051bWJlcjsgfVxuICBzZXQgcmVjb3Jkc051bWJlcihyZWNvcmRzTnVtYmVyKSB7IHRoaXMuX3JlY29yZHNOdW1iZXIgPSByZWNvcmRzTnVtYmVyOyB9XG4gIHNldCBzb3J0aW5nKHNvcnRpbmcpIHsgdGhpcy5fc29ydGluZyA9IHNvcnRpbmc7IH1cbiAgc2V0IHdhaXRpbmcod2FpdGluZykgeyB0aGlzLnNldEF0dHIoYXR0cnMud2FpdGluZywgd2FpdGluZykgfVxuICBzZXQgY2xpZW50UGFnaW5nKGNsaWVudFBhZ2luZykgeyB0aGlzLl9jbGllbnRQYWdpbmcgPSBjbGllbnRQYWdpbmc7IH1cbiAgc2V0IHNvcnRhYmxlKHNvcnRhYmxlKSB7IHRoaXMuX3NvcnRhYmxlID0gc29ydGFibGU7IH1cblxuICBnZXRMYXlvdXQoKSB7IHJldHVybiB0aGlzLmxheW91dDsgfVxuICBzZXRMYXlvdXQobGF5b3V0KSB7IHRoaXMuc2V0QXR0cihhdHRycy5sYXlvdXQsIGxheW91dCk7IH1cbiAgaGFzQWN0aW9ucygpIHsgcmV0dXJuICh0aGlzLl9hY3Rpb25zLmxlbmd0aCA+IDApOyB9XG4gIGdldFNlbGVjdGVkUmVjb3JkcygpIHsgcmV0dXJuIHRoaXMuX3RhYmxlUmVjb3Jkcy5maWx0ZXIocmVjID0+IHJlYy5zZWxlY3RlZCkubWFwKHJlYyA9PiByZWMucmVjb3JkSWQpOyB9XG4gIGFjdGl2YXRlR2xvYmFsU2VhcmNoKCkgeyB0aGlzLl9nbG9iYWxTZWFyY2ggPSB0cnVlOyB9XG4gIGluYWN0aXZhdGVHbG9iYWxTZWFyY2goKSB7IHRoaXMuX2dsb2JhbFNlYXJjaCA9IGZhbHNlOyB9XG4gIGNvbHVtbkRlZmluaXRpb24oZmllbGRDb2RlKTogUmVjb3JkVGFibGVDb2x1bW4geyByZXR1cm4gdGhpcy5fdGFibGVDb2x1bW5PYmpbZmllbGRDb2RlXTsgfVxuICBwdXRPbldhaXQoKSB7IHRoaXMud2FpdGluZyA9IHRydWU7IH1cbiAgZnJlZVdhaXRpbmcoKSB7IHRoaXMud2FpdGluZyA9IGZhbHNlOyB9XG4gIHNldFdpZGdldCh3aWRnZXQpIHsgdGhpcy53aWRnZXQgPSB3aWRnZXQ7IH1cblxuICBub3RpZnlHbG9iYWxBY3Rpb24oYWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IHRhYmxlRXZlbnQ6IFRhYmxlRXZlbnQgPSB7XG4gICAgICB0YWJsZUNvZGU6IHRoaXMuX3RhYmxlQ29kZSxcbiAgICAgIGFjdGlvbkNvZGUsXG4gICAgICBhY3Rpb25EZXRhaWw6IG51bGxcbiAgICB9O1xuICAgIHRoaXMuX2dsb2JhbEFjdGlvblRyaWdnZXIubmV4dCh0YWJsZUV2ZW50KTtcbiAgfVxuXG4gIG5vdGlmeUlubGluZUFjdGlvbih0YWJsZUFjdGlvbkV2ZW50OiBUYWJsZUFjdGlvbkV2ZW50KSB7XG4gICAgY29uc3QgdGFibGVFdmVudDogVGFibGVFdmVudCA9IHtcbiAgICAgIHRhYmxlQ29kZTogdGhpcy5fdGFibGVDb2RlLFxuICAgICAgYWN0aW9uQ29kZTogdGFibGVBY3Rpb25FdmVudC5hY3Rpb25Db2RlLFxuICAgICAgYWN0aW9uRGV0YWlsOiB7XG4gICAgICAgIHJlY29yZElkOiB0YWJsZUFjdGlvbkV2ZW50LnJlY29yZElkLFxuICAgICAgICByZWNvcmREYXRhOiB0YWJsZUFjdGlvbkV2ZW50LnJlY29yZERhdGFcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuX2lubGluZUFjdGlvblRyaWdnZXIubmV4dCh0YWJsZUV2ZW50KTtcbiAgfVxuXG4gIG5vdGlmeVJlY29yZFNlbGVjdGlvbihyZWNvcmRJZCkge1xuICAgIGNvbnN0IHJlY29yZCA9IHRoaXMuZ2V0VGFibGVSZWNvcmQocmVjb3JkSWQpO1xuICAgIGlmICghcmVjb3JkKSB7IHJldHVybjsgfVxuICAgIHJlY29yZC50b2dnbGVTZWxlY3QoKTtcbiAgICB0aGlzLl9yZXF1ZXN0ZWRQYWdlID0gdGhpcy5fY3VycmVudFBhZ2UgPz8gMTtcbiAgICBjb25zdCB0YWJsZUV2ZW50OiBUYWJsZUV2ZW50ID0ge1xuICAgICAgdGFibGVDb2RlOiB0aGlzLl90YWJsZUNvZGUsXG4gICAgICBhY3Rpb25Db2RlOiBudWxsLFxuICAgICAgYWN0aW9uRGV0YWlsOiB7XG4gICAgICAgIHJlY29yZElkOiByZWNvcmQucmVjb3JkSWQsXG4gICAgICAgIHJlY29yZERhdGE6IHJlY29yZC5yZWNvcmREYXRhXG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLl9yZWNvcmRTZWxlY3Rpb25UcmlnZ2VyLm5leHQodGFibGVFdmVudCk7XG4gIH1cblxuICBub3RpZnlTZWxlY3Rpb25BY3Rpb24oYWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IHRhYmxlRXZlbnQ6IFRhYmxlRXZlbnQgPSB7XG4gICAgICB0YWJsZUNvZGU6IHRoaXMuX3RhYmxlQ29kZSxcbiAgICAgIGFjdGlvbkNvZGUsXG4gICAgICBhY3Rpb25EZXRhaWw6IHtcbiAgICAgICAgc2VsZWN0ZWRSZWNvcmRzOiB0aGlzLnNlbGVjdGVkUmVjb3Jkc1xuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5fc2VsZWN0aW9uQWN0aW9uVHJpZ2dlci5uZXh0KHRhYmxlRXZlbnQpO1xuICB9XG5cbiAgbm90aWZ5R2V0RGF0YUFjdGlvbihyZXF1ZXN0ZWRQYWdlID0gbnVsbCkge1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJlY29yZHMoKTtcbiAgICB0aGlzLl9yZXF1ZXN0ZWRQYWdlID0gcmVxdWVzdGVkUGFnZSB8fCB0aGlzLl9jdXJyZW50UGFnZSB8fCAxO1xuICAgIGNvbnN0IHRhYmxlRXZlbnQ6IFRhYmxlRXZlbnQgPSB7XG4gICAgICB0YWJsZUNvZGU6IHRoaXMuX3RhYmxlQ29kZSxcbiAgICAgIGFjdGlvbkNvZGU6IG51bGwsXG4gICAgICBhY3Rpb25EZXRhaWw6IG51bGwsXG4gICAgfTtcbiAgICB0aGlzLl9nZXREYXRhVHJpZ2dlci5uZXh0KHRhYmxlRXZlbnQpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY2xlYW4oKSB7XG4gICAgdGhpcy5fdGFibGVSZWNvcmRzID0gW107XG4gICAgdGhpcy51blNlbGVjdEFsbCgpO1xuICAgIHRoaXMuX3RhYmxlUmVjb3JkT2JqID0ge307XG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUmVjb3JkcygpO1xuICB9XG5cbiAgc2VsZWN0QWxsKCkge1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5hbGxTZWxlY3RlZCwgdHJ1ZSk7XG4gICAgdGhpcy5fdGFibGVSZWNvcmRzLmZvckVhY2gocmVjb3JkID0+IHJlY29yZC5zZWxlY3QoKSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLnNlbGVjdGVkUmVjb3JkcywgdGhpcy5nZXRTZWxlY3RlZFJlY29yZHMoKSk7XG4gICAgcmV0dXJuIHRydWU7XG5cbiAgfVxuXG4gIHVuU2VsZWN0QWxsKCkge1xuICAgIHRoaXMuc2V0QXR0cihhdHRycy5hbGxTZWxlY3RlZCwgZmFsc2UpO1xuICAgIHRoaXMuX3RhYmxlUmVjb3Jkcy5mb3JFYWNoKHJlY29yZCA9PiByZWNvcmQudW5zZWxlY3QoKSk7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLnNlbGVjdGVkUmVjb3JkcywgdGhpcy5nZXRTZWxlY3RlZFJlY29yZHMoKSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBzZXRUYWJsZVJlY29yZHModGFibGVSZWNvcmRzLCBhcHBlbmQgPSBmYWxzZSwgcHJlcGVuZCA9IGZhbHNlKSB7XG4gICAgaWYgKCFhcHBlbmQpIHtcbiAgICAgIHRoaXMuX3RhYmxlUmVjb3JkcyA9IFtdO1xuICAgICAgdGhpcy5fdGFibGVSZWNvcmRPYmogPSB7fTtcbiAgICAgIHRoaXMuc2V0QXR0cihhdHRycy5hbGxTZWxlY3RlZCwgZmFsc2UpO1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnNlbGVjdGVkUmVjb3JkcywgW10pO1xuICAgIH1cbiAgICBjb25zdCBuZXdSZWNvcmRzT2JqID0geyAuLi50aGlzLl90YWJsZVJlY29yZE9iaiB9O1xuICAgIGNvbnN0IG5ld1JlY29yZHMgPSBbLi4udGhpcy5fdGFibGVSZWNvcmRzXTtcbiAgICBmb3IgKGNvbnN0IHRhYmxlUmVjb3JkIG9mIHRhYmxlUmVjb3Jkcykge1xuICAgICAgY29uc3QgcmVjb3JkUmVjZWl2ZWQ6IFRhYmxlUmVjb3JkRGF0YSA9IG5ldyBUYWJsZVJlY29yZERhdGEodGFibGVSZWNvcmQsIHRoaXMuX2NvbHVtbnMsIHRoaXMuX3NlbGVjdGlvbkZpZWxkKTtcbiAgICAgIGNvbnN0IHJlY29yZElkS2V5ID0gcmVjb3JkUmVjZWl2ZWQucmVjb3JkSWRLZXk7XG4gICAgICBpZiAobmV3UmVjb3Jkc09ialtyZWNvcmRJZEtleV0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAocHJlcGVuZCkge1xuICAgICAgICBuZXdSZWNvcmRzLnVuc2hpZnQocmVjb3JkUmVjZWl2ZWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3UmVjb3Jkcy5wdXNoKHJlY29yZFJlY2VpdmVkKTtcbiAgICAgIH1cbiAgICAgIG5ld1JlY29yZHNPYmpbcmVjb3JkSWRLZXldID0gcmVjb3JkUmVjZWl2ZWQ7XG4gICAgfVxuICAgIHRoaXMuX3RhYmxlUmVjb3JkcyA9IG5ld1JlY29yZHM7XG4gICAgdGhpcy5fdGFibGVSZWNvcmRPYmogPSBuZXdSZWNvcmRzT2JqO1xuICB9XG5cbiAgYXBwZW5kUmVjb3JkcyhyZWNvcmRzKSB7IHRoaXMuc2V0VGFibGVSZWNvcmRzKHJlY29yZHMsIHRydWUpOyB9XG4gIHByZXBlbmRSZWNvcmRzKHJlY29yZHMpIHsgdGhpcy5zZXRUYWJsZVJlY29yZHMocmVjb3JkcywgdHJ1ZSwgdHJ1ZSk7IH1cbiAgcmVwbGFjZVJlY29yZHMocmVjb3JkcykgeyB0aGlzLnNldFRhYmxlUmVjb3JkcyhyZWNvcmRzLCBmYWxzZSk7IH1cblxuICBzZXRUYWJsZUFwcGVuZChhcHBlbmQ6IGJvb2xlYW4pIHsgdGhpcy5fYXBwZW5kUGFnZXMgPSBhcHBlbmQgfVxuXG4gIGNoYW5nZVBhZ2UocmVxdWVzdGVkUGFnZSkge1xuICAgIGlmICh0aGlzLl9jbGllbnRQYWdpbmcpIHtcbiAgICAgIHRoaXMuc2V0QXR0cihhdHRycy5jdXJyZW50UGFnZSwgcmVxdWVzdGVkUGFnZSk7XG4gICAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubm90aWZ5R2V0RGF0YUFjdGlvbihyZXF1ZXN0ZWRQYWdlKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVWaXNpYmxlUmVjb3JkcygpIHtcbiAgICBsZXQgdmlzaWJsZVJlY29yZHM6IGFueVtdO1xuICAgIGlmICh0aGlzLl9jbGllbnRQYWdpbmcpIHtcbiAgICAgIHZpc2libGVSZWNvcmRzID0gdGhpcy5nZXRGaWx0ZXJlZFJlY29yZHMoKTtcbiAgICAgIC8vIFNlIHZhbGlkYSBzaSBsYSBww6FnaW5hIGFjdHVhbCBzaWd1ZSBzaWVuZG8gdsOhbGlkYVxuICAgICAgY29uc3QgdG90YWxSZWNvcmRzID0gdmlzaWJsZVJlY29yZHMubGVuZ3RoO1xuICAgICAgY29uc3QgcmVjb3Jkc0xhc3RQYWdlID0gdG90YWxSZWNvcmRzICUgdGhpcy5fcmVjb3Jkc1BlclBhZ2U7XG4gICAgICBjb25zdCB0b3RhbFBhZ2VzID0gTWF0aC50cnVuYyh0b3RhbFJlY29yZHMgLyB0aGlzLl9yZWNvcmRzUGVyUGFnZSArIChyZWNvcmRzTGFzdFBhZ2UgPyAxIDogMCkpO1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnRQYWdlID4gdG90YWxQYWdlcykge1xuICAgICAgICB0aGlzLl9jdXJyZW50UGFnZSA9IHRvdGFsUGFnZXMgfHwgMTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNsaWNlTnVtYmVyMSA9ICh0aGlzLl9jdXJyZW50UGFnZSAtIDEpICogdGhpcy5fcmVjb3Jkc1BlclBhZ2U7XG4gICAgICBjb25zdCBzbGljZU51bWJlcjIgPSAodGhpcy5fY3VycmVudFBhZ2UgLSAxKSAqIHRoaXMuX3JlY29yZHNQZXJQYWdlICsgdGhpcy5fcmVjb3Jkc1BlclBhZ2VcbiAgICAgIHZpc2libGVSZWNvcmRzID0gdmlzaWJsZVJlY29yZHMuc2xpY2Uoc2xpY2VOdW1iZXIxLCBzbGljZU51bWJlcjIpO1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnRvdGFsUmVjb3Jkc051bWJlciwgdG90YWxSZWNvcmRzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmlzaWJsZVJlY29yZHMgPSB0aGlzLl90YWJsZVJlY29yZHM7XG4gICAgfVxuICAgIHRoaXMuc2V0QXR0cihhdHRycy52aXNpYmxlUmVjb3JkcywgdmlzaWJsZVJlY29yZHMgPz8gW10pO1xuICB9XG5cbiAgdXBkYXRlRnJvbVNlcnZlcih0YWJsZVJlY2VpdmVkKSB7XG4gICAgdGhpcy5fcmVxdWVzdGVkUGFnZSA9IDE7XG4gICAgY29uc3QgeyB2aXNpYmxlID0gdHJ1ZSwgdG90YWxQYWdlcyA9IDEsIHJlY29yZHNOdW1iZXIsIGN1cnJlbnRQYWdlID0gMSwgcmVjb3Jkc1BlclBhZ2UsXG4gICAgICB0b3RhbFJlY29yZHNOdW1iZXIsIHNvcnRpbmdDb2x1bW4sIHNvcnRpbmdEaXJlY3Rpb24sIHRhYmxlUmVjb3JkcyxcbiAgICAgIGFjdGlvbnMsIGZpZWxkcyxcbiAgICB9ID0gdGFibGVSZWNlaXZlZDtcbiAgICB0aGlzLnZpc2libGUgPSB2aXNpYmxlO1xuICAgIGlmIChhY3Rpb25zKSB7XG4gICAgICBPYmplY3Qua2V5cyhhY3Rpb25zKS5mb3JFYWNoKGFjdGlvbkNvZGUgPT4ge1xuICAgICAgICBjb25zdCB0YmxBY3Rpb24gPSB0aGlzLmdldEFjdGlvbihhY3Rpb25Db2RlKTtcbiAgICAgICAgY29uc3QgYWN0aW9uUmVjZWl2ZWQgPSBhY3Rpb25zW2FjdGlvbkNvZGVdO1xuICAgICAgICBpZiAoYWN0aW9uUmVjZWl2ZWQudmlzaWJsZSA9PT0gdHJ1ZSB8fCBhY3Rpb25SZWNlaXZlZC52aXNpYmxlID09PSBmYWxzZSkge1xuICAgICAgICAgIChhY3Rpb25SZWNlaXZlZC52aXNpYmxlID09PSB0cnVlKSAmJiB0YmxBY3Rpb24uc2hvdygpO1xuICAgICAgICAgIChhY3Rpb25SZWNlaXZlZC52aXNpYmxlID09PSBmYWxzZSkgJiYgdGJsQWN0aW9uLmhpZGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aW9uUmVjZWl2ZWQuZW5hYmxlZCA9PT0gdHJ1ZSB8fCBhY3Rpb25SZWNlaXZlZC5lbmFibGVkID09PSBmYWxzZSkge1xuICAgICAgICAgIChhY3Rpb25SZWNlaXZlZC5lbmFibGVkID09PSB0cnVlKSAmJiB0YmxBY3Rpb24uZW5hYmxlKCk7XG4gICAgICAgICAgKGFjdGlvblJlY2VpdmVkLmVuYWJsZWQgPT09IGZhbHNlKSAmJiB0YmxBY3Rpb24uZGlzYWJsZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhY3Rpb25SZWNlaXZlZC5zaG93T25TdGF0ZXMpIHtcbiAgICAgICAgICBhY3Rpb25SZWNlaXZlZC5zaG93T25TdGF0ZXM/LmZvckVhY2gobmV3U3RhdGUgPT4ge1xuICAgICAgICAgICAgdGJsQWN0aW9uLmFkZFZpc2libGVTdGF0ZShuZXdTdGF0ZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvblJlY2VpdmVkLmhpZGVPblN0YXRlcykge1xuICAgICAgICAgIGFjdGlvblJlY2VpdmVkLmhpZGVPblN0YXRlcz8uZm9yRWFjaChuZXdTdGF0ZSA9PiB7XG4gICAgICAgICAgICB0YmxBY3Rpb24ucmVtb3ZlVmlzaWJsZVN0YXRlKG5ld1N0YXRlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aW9uUmVjZWl2ZWQuZW5hYmxlT25TdGF0ZXMpIHtcbiAgICAgICAgICBhY3Rpb25SZWNlaXZlZC5lbmFibGVPblN0YXRlcz8uZm9yRWFjaChuZXdTdGF0ZSA9PiB7XG4gICAgICAgICAgICB0YmxBY3Rpb24uYWRkRW5hYmxlZFN0YXRlKG5ld1N0YXRlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYWN0aW9uUmVjZWl2ZWQuZGlzYWJsZU9uU3RhdGVzKSB7XG4gICAgICAgICAgYWN0aW9uUmVjZWl2ZWQuZGlzYWJsZU9uU3RhdGVzPy5mb3JFYWNoKG5ld1N0YXRlID0+IHtcbiAgICAgICAgICAgIHRibEFjdGlvbi5yZW1vdmVFbmFibGVkU3RhdGUobmV3U3RhdGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKGZpZWxkcykge1xuICAgICAgT2JqZWN0LmtleXMoZmllbGRzKS5mb3JFYWNoKGZpZWxkQ29kZSA9PiB7XG4gICAgICAgIGNvbnN0IHRibEZpZWxkID0gdGhpcy5jb2x1bW5EZWZpbml0aW9uKGZpZWxkQ29kZSk7XG4gICAgICAgIGNvbnN0IGZpZWxkUmVjZWl2ZWQgPSBmaWVsZHNbZmllbGRDb2RlXTtcbiAgICAgICAgaWYgKGZpZWxkUmVjZWl2ZWQudmlzaWJsZSA9PT0gdHJ1ZSB8fCBmaWVsZFJlY2VpdmVkLnZpc2libGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgKGZpZWxkUmVjZWl2ZWQudmlzaWJsZSA9PT0gdHJ1ZSkgJiYgdGJsRmllbGQuc2hvdygpO1xuICAgICAgICAgIChmaWVsZFJlY2VpdmVkLnZpc2libGUgPT09IGZhbHNlKSAmJiB0YmxGaWVsZC5oaWRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGFibGVSZWNvcmRzKSB7XG4gICAgICB0aGlzLl90b3RhbFBhZ2VzID0gdG90YWxQYWdlcztcbiAgICAgIHRoaXMuX3JlY29yZHNOdW1iZXIgPSByZWNvcmRzTnVtYmVyO1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLmN1cnJlbnRQYWdlLCArY3VycmVudFBhZ2UpO1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnJlY29yZHNQZXJQYWdlLCArcmVjb3Jkc1BlclBhZ2UpO1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLnRvdGFsUmVjb3Jkc051bWJlciwgKHRoaXMuX2NsaWVudFBhZ2luZykgPyB0YWJsZVJlY29yZHMubGVuZ3RoIDogK3RvdGFsUmVjb3Jkc051bWJlcik7XG4gICAgICB0aGlzLnNldEF0dHIoYXR0cnMuc29ydGluZywge1xuICAgICAgICBjb2x1bW5OYW1lOiBzb3J0aW5nQ29sdW1uIHx8ICcnLFxuICAgICAgICBkaXJlY3Rpb246IHNvcnRpbmdEaXJlY3Rpb24gfHwgJydcbiAgICAgIH0pO1xuICAgICAgaWYgKCF0aGlzLl9hcHBlbmRQYWdlcykge1xuICAgICAgICB0aGlzLnJlcGxhY2VSZWNvcmRzKHRhYmxlUmVjb3Jkcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFwcGVuZFJlY29yZHModGFibGVSZWNvcmRzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5mcmVlV2FpdGluZygpO1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJlY29yZHMoKTtcbiAgfVxuXG4gIGdldFRhYmxlUmVjb3JkKHJlY29yZElkKSB7XG4gICAgY29uc3QgcmVjb3JkSWRLZXkgPSAodHlwZW9mIHJlY29yZElkID09PSAnb2JqZWN0JykgPyBKU09OLnN0cmluZ2lmeShyZWNvcmRJZCkgOiByZWNvcmRJZDtcbiAgICByZXR1cm4gKHRoaXMuX3RhYmxlUmVjb3JkT2JqICYmIHJlY29yZElkICYmIHRoaXMuX3RhYmxlUmVjb3JkT2JqW3JlY29yZElkXSlcbiAgICAgID8gdGhpcy5fdGFibGVSZWNvcmRPYmpbcmVjb3JkSWRdIDogbnVsbDtcbiAgfVxuXG4gIGdldEFjdGlvbihhY3Rpb25Db2RlKSB7XG4gICAgcmV0dXJuICh0aGlzLl9hY3Rpb25zT2JqICYmIGFjdGlvbkNvZGUgJiYgdGhpcy5fYWN0aW9uc09ialthY3Rpb25Db2RlXSlcbiAgICAgID8gdGhpcy5fYWN0aW9uc09ialthY3Rpb25Db2RlXSA6IG51bGw7XG4gIH1cblxuICBnZXRBY3Rpb25zKGFjdGlvbkNsYXNzOiBzdHJpbmcgPSB0aGlzLl9mb3JtQ29uZmlnLnRhYmxlQWN0aW9ucy5pbmxpbmUsIGFjdGlvblR5cGVzOiBzdHJpbmdbXSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9ucy5maWx0ZXIoYWN0aW9uRGVmID0+IHtcbiAgICAgIGNvbnN0IHR5cGVJbmNsdWRlZCA9IChhY3Rpb25UeXBlcykgPyBhY3Rpb25UeXBlcy5pbmNsdWRlcyhhY3Rpb25EZWYuYWN0aW9uVHlwZSkgOiB0cnVlO1xuICAgICAgcmV0dXJuIGFjdGlvbkRlZi5hY3Rpb25DbGFzcyA9PT0gYWN0aW9uQ2xhc3MgJiYgdHlwZUluY2x1ZGVkO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gRmlsdHJvc1xuXG4gIHNldEZpbHRlckJ5SWQoaWQpIHtcbiAgICBpZiAodGhpcy5yZXN0cmljdGVkSWQgPT09IGlkKSB7IHJldHVybjsgfVxuICAgIHRoaXMucmVzdHJpY3RlZElkID0gaWQ7XG4gICAgdGhpcy51cGRhdGVWaXNpYmxlUmVjb3JkcygpO1xuICB9XG5cbiAgY2xlYW5JZEZpbHRlcigpIHtcbiAgICBpZiAodGhpcy5yZXN0cmljdGVkSWQgPT09IG51bGwpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5yZXN0cmljdGVkSWQgPSBudWxsO1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJlY29yZHMoKTtcbiAgfVxuXG4gIHNldEdsb2JhbEZpbHRlclN0cmluZyh0ZXh0LCBub3RpZnlDb21wb25lbnQgPSB0cnVlKSB7XG4gICAgdGhpcy5nbG9iYWxGaWx0ZXJTdHJpbmdzID0gdGV4dC5zcGxpdCgnICcpLmZpbHRlcih0ID0+IHQgJiYgdC50cmltKCkubGVuZ3RoID4gMCkubWFwKHQgPT4gdC50cmltKCkpID8/IFtdO1xuICAgIGlmICh0aGlzLl9jbGllbnRQYWdpbmcpIHtcbiAgICAgIHRoaXMuY2hhbmdlUGFnZSgxKTtcbiAgICB9XG4gICAgaWYgKG5vdGlmeUNvbXBvbmVudCkge1xuICAgICAgdGhpcy5zZXRBdHRyKGF0dHJzLmdsb2JhbEZpbHRlclN0cmluZywgdGV4dC50cmltKCkpO1xuICAgIH1cbiAgfVxuXG4gIGFkZEZpbHRlckRlZmluaXRpb24oY29sdW1uTmFtZSwgZmlsdGVyRGVmaW5pdGlvbikge1xuICAgIGNvbnN0IHRhYmxlQ29sdW1uID0gdGhpcy5jb2x1bW5EZWZpbml0aW9uKGNvbHVtbk5hbWUpO1xuICAgIHRhYmxlQ29sdW1uICYmIHRhYmxlQ29sdW1uLmFkZEZpbHRlckRlZmluaXRpb24oZmlsdGVyRGVmaW5pdGlvbik7XG4gIH1cblxuICBnZXRGaWx0ZXJlZFJlY29yZHMoKSB7XG4gICAgbGV0IGZpbHRlcmVkUmVjb3JkcyA9IHRoaXMuX3RhYmxlUmVjb3JkcztcbiAgICBpZiAodGhpcy5yZXN0cmljdGVkSWQpIHtcbiAgICAgIGZpbHRlcmVkUmVjb3JkcyA9IGZpbHRlcmVkUmVjb3Jkcy5maWx0ZXIocmVjb3JkID0+IHJlY29yZC5yZWNvcmRJZCA9PT0gdGhpcy5yZXN0cmljdGVkSWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5nbG9iYWxGaWx0ZXJTdHJpbmdzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZpbHRlcmVkUmVjb3JkcyA9IGZpbHRlcmVkUmVjb3Jkcy5maWx0ZXIocmVjb3JkID0+IHJlY29yZC5oYXNQYXR0ZXJuKHRoaXMuZ2xvYmFsRmlsdGVyU3RyaW5ncywgdGhpcy5fdGFibGVDb2x1bW5PYmopKTtcbiAgICB9XG4gICAgY29uc3QgY29sdW1uRmlsdGVycyA9IHRoaXMuX2NvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uZmlsdGVyKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWx0ZXIpO1xuICAgIGlmIChjb2x1bW5GaWx0ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZpbHRlcmVkUmVjb3JkcyA9IGZpbHRlcmVkUmVjb3Jkcy5maWx0ZXIocmVjb3JkID0+IHJlY29yZC5oYXNDb25kaXRpb24oY29sdW1uRmlsdGVycykpO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyZWRSZWNvcmRzO1xuICB9XG5cbiAgZ2V0Q29sdW1uRmlsdGVyKGNvbHVtbk5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHRhYmxlQ29sdW1uID0gdGhpcy5jb2x1bW5EZWZpbml0aW9uKGNvbHVtbk5hbWUpO1xuICAgIHJldHVybiB0YWJsZUNvbHVtbj8uZmlsdGVyID8/IG51bGw7XG4gIH1cblxuICBhZGRDb2x1bW5GaWx0ZXIoY29sdW1uTmFtZTogc3RyaW5nLCBjb2x1bW5WYWx1ZXM6IGFueSB8IGFueVtdLCBvcGVyYXRvcjogc3RyaW5nIHwgbnVsbCA9IG51bGwpIHtcbiAgICBjb25zdCB0YWJsZUNvbHVtbiA9IHRoaXMuY29sdW1uRGVmaW5pdGlvbihjb2x1bW5OYW1lKTtcbiAgICBjb25zdCBjb2x1bW5GaWx0ZXJEZWZpbml0aW9uID0gdGFibGVDb2x1bW4/LmZpbHRlckRlZmluaXRpb24gPz8gbnVsbDtcbiAgICBpZiAoIWNvbHVtbkZpbHRlckRlZmluaXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGFibGVDb2x1bW4gJiYgdGFibGVDb2x1bW4uYWRkRmlsdGVyKGNvbHVtblZhbHVlcywgb3BlcmF0b3IpO1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJlY29yZHMoKTtcbiAgfVxuXG4gIHJlbW92ZUNvbHVtbkZpbHRlcihjb2x1bW5OYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0YWJsZUNvbHVtbiA9IHRoaXMuY29sdW1uRGVmaW5pdGlvbihjb2x1bW5OYW1lKTtcbiAgICB0YWJsZUNvbHVtbiAmJiB0YWJsZUNvbHVtbi5yZW1vdmVGaWx0ZXIoKTtcbiAgICB0aGlzLnVwZGF0ZVZpc2libGVSZWNvcmRzKCk7XG4gIH1cblxuICBnZXQgY3VycmVudEZpbHRlcigpIHtcbiAgICBjb25zdCBjb21wYWN0RmlsdGVyOiBhbnkgPSB7XG4gICAgICBzaW1wbGVGaWx0ZXJXb3JkczogdGhpcy5nbG9iYWxGaWx0ZXJTdHJpbmdzLFxuICAgICAgYWR2YW5jZWRGaWx0ZXI6IFtdLFxuICAgIH07XG4gICAgY29uc3QgY29sdW1uRmlsdGVycyA9IHRoaXMuX2NvbHVtbnMuZmlsdGVyKGNvbHVtbiA9PiBjb2x1bW4uZmlsdGVyKS5tYXAoY29sdW1uID0+IGNvbHVtbi5maWx0ZXIpO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjb2x1bW5GaWx0ZXJzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgY29sdW1uRmlsdGVyID0gY29sdW1uRmlsdGVyc1tpbmRleF07XG4gICAgICBjb21wYWN0RmlsdGVyLmFkdmFuY2VkRmlsdGVyLnB1c2goe1xuICAgICAgICBmaWVsZENvZGU6IGNvbHVtbkZpbHRlcj8uZmllbGRDb2RlLFxuICAgICAgICBvcGVyYXRvcjogY29sdW1uRmlsdGVyPy5vcGVyYXRvcixcbiAgICAgICAgZmllbGRWYWx1ZTE6IGNvbHVtbkZpbHRlcj8udmFsdWVzWzBdLFxuICAgICAgICBmaWVsZFZhbHVlMjogY29sdW1uRmlsdGVyPy52YWx1ZXNbMV0sXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbXBhY3RGaWx0ZXI7XG4gIH1cblxuICAvLyBPcmRlbmFtaWVudG8gZGUgcmVnaXN0cm9zIGxvY2FsXG5cbiAgc29ydChjb2x1bW5OYW1lLCBkaXJlY3Rpb24pIHtcbiAgICB0aGlzLnNldFJlcXVpcmVkT3JkZXIoY29sdW1uTmFtZSwgZGlyZWN0aW9uKTtcbiAgICBpZiAodGhpcy5fY2xpZW50UGFnaW5nKSB7XG4gICAgICB0aGlzLmxvY2FsU29ydERhdGEoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5vdGlmeUdldERhdGFBY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBzZXRSZXF1aXJlZE9yZGVyKGNvbHVtbkZpZWxkLCBkaXJlY3Rpb24gPSBudWxsKSB7XG4gICAgdGhpcy5zZXRBdHRyKGF0dHJzLnNvcnRpbmcsIHtcbiAgICAgIGNvbHVtbk5hbWU6IGNvbHVtbkZpZWxkLFxuICAgICAgZGlyZWN0aW9uOiAoZGlyZWN0aW9uID09PSAnYXNjZW5kJykgPyBUQUJMRV9TT1JUX0FTQ0VORElORyA6IFRBQkxFX1NPUlRfREVTQ0VORElORyxcbiAgICB9KTtcbiAgfVxuXG4gIGxvY2FsU29ydERhdGEoKSB7XG4gICAgaWYgKCF0aGlzLl9zb3J0aW5nLmNvbHVtbk5hbWUgfHwgIXRoaXMuX3NvcnRpbmcuZGlyZWN0aW9uKSB7IHJldHVybjsgfVxuICAgIHRoaXMuX3RhYmxlUmVjb3Jkcy5zb3J0KChhLCBiKSA9PiB0aGlzLnJlY29yZENvbXBhcmUoYSwgYiwgdGhpcy5fc29ydGluZy5jb2x1bW5OYW1lLCB0aGlzLl9zb3J0aW5nLmRpcmVjdGlvbikpO1xuICAgIC8vdGhpcy51blNlbGVjdEFsbCgpO1xuICAgIHRoaXMudXBkYXRlVmlzaWJsZVJlY29yZHMoKTtcbiAgfVxuXG4gIHJlY29yZENvbXBhcmUocmVjb3JkQTogVGFibGVSZWNvcmREYXRhLCByZWNvcmRCOiBUYWJsZVJlY29yZERhdGEsIGNvbHVtbkNvbXBhcmUsIGRpcmVjdGlvbikge1xuICAgIGNvbnN0IHJlY29yZEFWYWx1ZSA9IHJlY29yZEEuZ2V0RmllbGRWYWx1ZShjb2x1bW5Db21wYXJlKTtcbiAgICBjb25zdCByZWNvcmRCVmFsdWUgPSByZWNvcmRCLmdldEZpZWxkVmFsdWUoY29sdW1uQ29tcGFyZSk7XG4gICAgY29uc3QgcmVjb3JkQUNvbHVtbiA9IGlzTmFOKHJlY29yZEFWYWx1ZSkgPyByZWNvcmRBVmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKSA6ICtyZWNvcmRBVmFsdWU7XG4gICAgY29uc3QgcmVjb3JkQkNvbHVtbiA9IGlzTmFOKHJlY29yZEJWYWx1ZSkgPyByZWNvcmRCVmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKSA6ICtyZWNvcmRCVmFsdWU7XG4gICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgaWYgKHJlY29yZEFDb2x1bW4gPCByZWNvcmRCQ29sdW1uKSB7XG4gICAgICByZXN1bHQgPSAtMTtcbiAgICB9IGVsc2UgaWYgKHJlY29yZEFDb2x1bW4gPiByZWNvcmRCQ29sdW1uKSB7XG4gICAgICByZXN1bHQgPSAxO1xuICAgIH1cbiAgICByZXR1cm4gZGlyZWN0aW9uID09PSBUQUJMRV9TT1JUX0FTQ0VORElORyA/IHJlc3VsdCA6IC1yZXN1bHQ7XG4gIH1cblxuICBvdmVycmlkZSBmb3JtU3RhdGVDaGFuZ2VDdXN0b21TdWJzY3JpYmUoZm9ybSwgZm9ybUNoYW5nZVN1YmplY3QpIHtcbiAgICB0aGlzLl9jb2x1bW5zPy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICBjb2x1bW4/LmNvbm5lY3RXaXRoUGFyZW50Rm9ybShmb3JtLCBmb3JtQ2hhbmdlU3ViamVjdCk7XG4gICAgfSk7XG4gICAgdGhpcy5fYWN0aW9ucz8uZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgICAgYWN0aW9uPy5jb25uZWN0V2l0aFBhcmVudEZvcm0oZm9ybSwgZm9ybUNoYW5nZVN1YmplY3QpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=