ontimize-web-ngx 15.0.0 → 15.0.2
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.
- package/esm2020/lib/components/grid/index.mjs +6 -0
- package/esm2020/lib/components/grid/o-grid.component.mjs +1 -1
- package/esm2020/lib/components/grid/o-grid.module.mjs +2 -2
- package/esm2020/lib/components/grid/skeketon/{o-grid-skeleton/o-grid-skeleton.component.mjs → o-grid-skeleton.component.mjs} +2 -2
- package/esm2020/lib/components/index.mjs +3 -5
- package/esm2020/lib/components/list/index.mjs +2 -1
- package/esm2020/lib/components/list/o-list.component.mjs +1 -1
- package/esm2020/lib/components/list/o-list.module.mjs +2 -2
- package/esm2020/lib/components/list/skeleton/{o-list-skeleton/o-list-skeleton.component.mjs → o-list-skeleton.component.mjs} +2 -2
- package/esm2020/lib/components/table/extensions/default-o-table.datasource.mjs +6 -1
- package/esm2020/lib/components/table/extensions/dialog/visible-columns/o-table-visible-columns-dialog.component.mjs +4 -2
- package/esm2020/lib/components/table/extensions/index.mjs +2 -1
- package/esm2020/lib/components/table/extensions/skeleton/{o-table-skeleton/o-table-skeleton.component.mjs → o-table-skeleton.component.mjs} +2 -2
- package/esm2020/lib/components/table/extensions/sort/o-mat-sort.mjs +1 -1
- package/esm2020/lib/components/table/o-table-base.class.mjs +1 -1
- package/esm2020/lib/components/table/o-table.component.mjs +21 -19
- package/esm2020/lib/components/table/o-table.module.mjs +6 -4
- package/fesm2015/ontimize-web-ngx.mjs +29 -17
- package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
- package/fesm2020/ontimize-web-ngx.mjs +28 -17
- package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
- package/lib/components/grid/index.d.ts +5 -0
- package/lib/components/grid/o-grid.module.d.ts +1 -1
- package/lib/components/grid/skeketon/{o-grid-skeleton/o-grid-skeleton.component.d.ts → o-grid-skeleton.component.d.ts} +1 -1
- package/lib/components/index.d.ts +2 -4
- package/lib/components/list/index.d.ts +1 -0
- package/lib/components/list/o-list.module.d.ts +1 -1
- package/lib/components/list/skeleton/{o-list-skeleton/o-list-skeleton.component.d.ts → o-list-skeleton.component.d.ts} +1 -1
- package/lib/components/table/extensions/header/o-table-header-components.d.ts +2 -2
- package/lib/components/table/extensions/index.d.ts +1 -0
- package/lib/components/table/extensions/skeleton/{o-table-skeleton/o-table-skeleton.component.d.ts → o-table-skeleton.component.d.ts} +1 -1
- package/lib/components/table/o-table-base.class.d.ts +1 -0
- package/lib/components/table/o-table.component.d.ts +14 -12
- package/lib/components/table/o-table.module.d.ts +2 -2
- package/package.json +1 -1
|
@@ -223,6 +223,8 @@ export class DefaultOTableDataSource extends DataSource {
|
|
|
223
223
|
return searchStr.indexOf(filter) !== -1;
|
|
224
224
|
}
|
|
225
225
|
getSortedData(data) {
|
|
226
|
+
if (!this._sort)
|
|
227
|
+
return data;
|
|
226
228
|
const rendererData = this.getDataToSort(data);
|
|
227
229
|
const sortedData = this._sort.getSortedData(rendererData);
|
|
228
230
|
const tableKeys = this.table.getKeys();
|
|
@@ -240,6 +242,7 @@ export class DefaultOTableDataSource extends DataSource {
|
|
|
240
242
|
i++;
|
|
241
243
|
}
|
|
242
244
|
});
|
|
245
|
+
this.table.updateSortingSubject(false);
|
|
243
246
|
return originalDataSorted;
|
|
244
247
|
}
|
|
245
248
|
getTableData() {
|
|
@@ -275,6 +278,8 @@ export class DefaultOTableDataSource extends DataSource {
|
|
|
275
278
|
});
|
|
276
279
|
}
|
|
277
280
|
getDataToSort(data) {
|
|
281
|
+
if (!this._sort)
|
|
282
|
+
return data;
|
|
278
283
|
const sortColumns = this._tableOptions.columns.filter(oCol => oCol.visible && this._sort.activeArray.map(x => x.id).indexOf(oCol.attr) > -1);
|
|
279
284
|
const existColumnToTrasformToSort = sortColumns.filter((oCol) => (oCol.type === 'translate' || oCol.type === 'service')).length > 0;
|
|
280
285
|
if (!existColumnToTrasformToSort) {
|
|
@@ -706,4 +711,4 @@ export class DefaultOTableDataSource extends DataSource {
|
|
|
706
711
|
return expansionState;
|
|
707
712
|
}
|
|
708
713
|
}
|
|
709
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1vLXRhYmxlLmRhdGFzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL2RlZmF1bHQtby10YWJsZS5kYXRhc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTNELE9BQU8sRUFBRSx5QkFBeUIsRUFBc0IsTUFBTSxpREFBaUQsQ0FBQztBQUNoSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSTFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR2pFLE1BQU0sT0FBTywwQkFBMEI7SUFHckMsWUFBWSxJQUFlO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxVQUFlO0lBRzFELElBQUksSUFBSSxLQUFZLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFxQnpELElBQUksV0FBVyxLQUFhLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLElBQUksV0FBVyxDQUFDLE1BQWM7UUFD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LElBQUksQ0FBQyxLQUFhLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLElBQUksR0FBRyxXQUFXLEdBQUcsR0FBRyxDQUFDO0lBQ3hHLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxHQUFxQjtRQUM3QyxJQUFJLGNBQWMsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUM7UUFDbkUsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsRUFBRTtZQUN6RCxjQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztTQUM5SDthQUFNO1lBQ0wsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxLQUFLLEdBQUcsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNoSixjQUFjLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7U0FDaEU7UUFDRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhU291cmNlLCBMaXN0UmFuZ2UgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRQYWdpbmF0b3IgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtZXJnZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBPVGFibGVEYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9vLXRhYmxlLWRhdGFzb3VyY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IE9UYWJsZU9wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL28tdGFibGUtb3B0aW9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvciwgT0NvbHVtblZhbHVlRmlsdGVyIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvdGFibGUvby1jb2x1bW4tdmFsdWUtZmlsdGVyLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi8uLi8uLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHR5cGUgeyBPQ29sdW1uIH0gZnJvbSAnLi4vY29sdW1uL28tY29sdW1uLmNsYXNzJztcbmltcG9ydCB7IE9UYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL28tdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IE9UYWJsZURhbyB9IGZyb20gJy4vby10YWJsZS5kYW8nO1xuaW1wb3J0IHsgT1RhYmxlR3JvdXBlZFJvdyB9IGZyb20gJy4vcm93L28tdGFibGUtcm93LWdyb3VwLmNsYXNzJztcbmltcG9ydCB7IE9NYXRTb3J0IH0gZnJvbSAnLi9zb3J0L28tbWF0LXNvcnQnO1xuXG5leHBvcnQgY2xhc3MgT25SYW5nZUNoYW5nZVZpcnR1YWxTY3JvbGwge1xuICBwdWJsaWMgcmFuZ2U6IExpc3RSYW5nZTtcblxuICBjb25zdHJ1Y3RvcihkYXRhOiBMaXN0UmFuZ2UpIHtcbiAgICB0aGlzLnJhbmdlID0gZGF0YTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRGVmYXVsdE9UYWJsZURhdGFTb3VyY2UgZXh0ZW5kcyBEYXRhU291cmNlPGFueT4gaW1wbGVtZW50cyBPVGFibGVEYXRhU291cmNlIHtcbiAgZGF0YVRvdGFsc0NoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55W10+KFtdKTtcblxuICBnZXQgZGF0YSgpOiBhbnlbXSB7IHJldHVybiB0aGlzLmRhdGFUb3RhbHNDaGFuZ2UudmFsdWU7IH1cblxuICBwcm90ZWN0ZWQgX2RhdGFiYXNlOiBPVGFibGVEYW87XG4gIHByb3RlY3RlZCBfcGFnaW5hdG9yOiBNYXRQYWdpbmF0b3I7XG4gIHByb3RlY3RlZCBfdGFibGVPcHRpb25zOiBPVGFibGVPcHRpb25zO1xuICBwcm90ZWN0ZWQgX3NvcnQ6IE9NYXRTb3J0O1xuXG4gIHByb3RlY3RlZCBfdmlydHVhbFBhZ2VDaGFuZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE9uUmFuZ2VDaGFuZ2VWaXJ0dWFsU2Nyb2xsPihuZXcgT25SYW5nZUNoYW5nZVZpcnR1YWxTY3JvbGwoeyBzdGFydDogMCwgZW5kOiAwIH0pKTtcbiAgcHJvdGVjdGVkIF9xdWlja0ZpbHRlckNoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuICBwcm90ZWN0ZWQgX2NvbHVtblZhbHVlRmlsdGVyQ2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgcHJvdGVjdGVkIGdyb3VwQnlDb2x1bW5DaGFuZ2U6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPjtcblxuICBwcm90ZWN0ZWQgZmlsdGVyZWREYXRhOiBhbnlbXSA9IFtdO1xuICBwcm90ZWN0ZWQgYWdncmVnYXRlRGF0YTogYW55ID0ge307XG5cbiAgb25SZW5kZXJlZERhdGFDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cblxuICBwcm90ZWN0ZWQgX3JlbmRlcmVkRGF0YTogYW55W10gPSBbXTtcbiAgcmVzdWx0c0xlbmd0aDogbnVtYmVyID0gMDtcblxuICBnZXQgcXVpY2tGaWx0ZXIoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX3F1aWNrRmlsdGVyQ2hhbmdlLnZhbHVlIHx8ICcnOyB9XG4gIHNldCBxdWlja0ZpbHRlcihmaWx0ZXI6IHN0cmluZykge1xuICAgIHRoaXMuX3F1aWNrRmlsdGVyQ2hhbmdlLm5leHQoZmlsdGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgY29sdW1uVmFsdWVGaWx0ZXJzOiBBcnJheTxPQ29sdW1uVmFsdWVGaWx0ZXI+ID0gW107XG4gIHByaXZhdGUgZ3JvdXBlZFJvd1N0YXRlOiBPVGFibGVHcm91cGVkUm93W10gPSBbXTtcbiAgcHJpdmF0ZSBhY3RpdmVBZ2dyZWdhdGVzID0ge307XG4gIHByaXZhdGUgZ3JvdXBlZFJvd3NTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgbGV2ZWxzRXhwYW5zaW9uU3RhdGUgPSB7fTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgdGFibGU6IE9UYWJsZUNvbXBvbmVudCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fZGF0YWJhc2UgPSB0YWJsZS5kYW9UYWJsZTtcbiAgICBpZiAodGhpcy5fZGF0YWJhc2UpIHtcbiAgICAgIHRoaXMucmVzdWx0c0xlbmd0aCA9IHRoaXMuX2RhdGFiYXNlLmRhdGEubGVuZ3RoO1xuICAgIH1cbiAgICBpZiAodGFibGUucGFnaW5hdG9yKSB7XG4gICAgICB0aGlzLl9wYWdpbmF0b3IgPSB0YWJsZS5tYXRwYWdpbmF0b3I7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFibGUudmlydHVhbFNjcm9sbFZpZXdwb3J0KSB7XG4gICAgICB0aGlzLnRhYmxlLnZpcnR1YWxTY3JvbGxWaWV3cG9ydC5yZW5kZXJlZFJhbmdlU3RyZWFtXG4gICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgKHZhbHVlOiBMaXN0UmFuZ2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3ZpcnR1YWxQYWdlQ2hhbmdlLm5leHQobmV3IE9uUmFuZ2VDaGFuZ2VWaXJ0dWFsU2Nyb2xsKHZhbHVlKSk7XG4gICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fdGFibGVPcHRpb25zID0gdGFibGUub1RhYmxlT3B0aW9ucztcbiAgICB0aGlzLl9zb3J0ID0gdGFibGUuc29ydDtcblxuICB9XG5cbiAgc29ydEZ1bmN0aW9uKGE6IGFueSwgYjogYW55KTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc29ydC5zb3J0RnVuY3Rpb24oYSwgYik7XG4gIH1cblxuICBnZXQgcmVuZGVyZWREYXRhKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5fcmVuZGVyZWREYXRhO1xuICB9XG5cbiAgc2V0IHJlbmRlcmVkRGF0YShhcmc6IGFueVtdKSB7XG4gICAgdGhpcy5fcmVuZGVyZWREYXRhID0gYXJnO1xuICAgIHRoaXMub25SZW5kZXJlZERhdGFDaGFuZ2UuZW1pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbm5lY3QgZnVuY3Rpb24gY2FsbGVkIGJ5IHRoZSB0YWJsZSB0byByZXRyaWV2ZSBvbmUgc3RyZWFtIGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gcmVuZGVyLlxuICAgKi9cbiAgY29ubmVjdCgpOiBPYnNlcnZhYmxlPGFueVtdPiB7XG4gICAgY29uc3QgZGlzcGxheURhdGFDaGFuZ2VzOiBhbnlbXSA9IFtcbiAgICAgIHRoaXMuX2RhdGFiYXNlLmRhdGFDaGFuZ2VcbiAgICBdO1xuXG4gICAgaWYgKCF0aGlzLnRhYmxlLnBhZ2VhYmxlKSB7XG5cblxuICAgICAgaWYgKHRoaXMuX3NvcnQpIHtcbiAgICAgICAgZGlzcGxheURhdGFDaGFuZ2VzLnB1c2godGhpcy5fc29ydC5vU29ydENoYW5nZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl90YWJsZU9wdGlvbnMuZmlsdGVyKSB7XG4gICAgICAgIGRpc3BsYXlEYXRhQ2hhbmdlcy5wdXNoKHRoaXMuX3F1aWNrRmlsdGVyQ2hhbmdlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX3BhZ2luYXRvcikge1xuICAgICAgICBkaXNwbGF5RGF0YUNoYW5nZXMucHVzaCh0aGlzLl9wYWdpbmF0b3IucGFnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFibGUudmlydHVhbFNjcm9sbFZpZXdwb3J0KSB7XG4gICAgICBkaXNwbGF5RGF0YUNoYW5nZXMucHVzaCh0aGlzLl92aXJ0dWFsUGFnZUNoYW5nZSk7XG4gICAgfVxuXG4gICAgZGlzcGxheURhdGFDaGFuZ2VzLnB1c2godGhpcy5fY29sdW1uVmFsdWVGaWx0ZXJDaGFuZ2UpO1xuXG4gICAgaWYgKHRoaXMudGFibGUuZ3JvdXBhYmxlKSB7XG4gICAgICBkaXNwbGF5RGF0YUNoYW5nZXMucHVzaCh0aGlzLmdyb3VwQnlDb2x1bW5DaGFuZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiBtZXJnZSguLi5kaXNwbGF5RGF0YUNoYW5nZXMpLnBpcGUoXG4gICAgICBtYXAoKHg6IGFueSkgPT4ge1xuICAgICAgICBsZXQgZGF0YSA9IE9iamVjdC5hc3NpZ24oW10sIHRoaXMuX2RhdGFiYXNlLmRhdGEpO1xuXG4gICAgICAgIGlmICh4IGluc3RhbmNlb2YgT25SYW5nZUNoYW5nZVZpcnR1YWxTY3JvbGwpIHtcbiAgICAgICAgICAvLyByZW5kZXIgc3Vic2V0IChyYW5nZSkgb2YgcmVuZGVyZWREYXRhIHdoZW4gbmV3IE9uUmFuZ2VDaGFuZ2VWaXJ0dWFsU2Nyb2xsIGV2ZW50IGlzIGVtaXR0ZWRcbiAgICAgICAgICBkYXRhID0gdGhpcy5nZXRWaXJ0dWFsU2Nyb2xsRGF0YSh0aGlzLnJlbmRlcmVkRGF0YSwgeCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLypcbiAgICAgICAgICAgIGl0IGlzIG5lY2Vzc2FyeSB0byBmaXJzdCBjYWxjdWxhdGUgdGhlIGNhbGN1bGF0ZWQgY29sdW1ucyBhbmRcbiAgICAgICAgICAgIHRoZW4gZmlsdGVyIGFuZCBzb3J0IHRoZSBkYXRhXG4gICAgICAgICAgKi9cbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSAmJiBkYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmV4aXN0c0FueUNhbGN1bGF0ZWRDb2x1bW4oKSkge1xuICAgICAgICAgICAgICBkYXRhID0gdGhpcy5nZXRDb2x1bW5DYWxjdWxhdGVkRGF0YShkYXRhKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF0aGlzLnRhYmxlLnBhZ2VhYmxlKSB7XG4gICAgICAgICAgICAgIGRhdGEgPSB0aGlzLmdldENvbHVtblZhbHVlRmlsdGVyRGF0YShkYXRhKTtcbiAgICAgICAgICAgICAgZGF0YSA9IHRoaXMuZ2V0UXVpY2tGaWx0ZXJEYXRhKGRhdGEpO1xuICAgICAgICAgICAgICBkYXRhID0gdGhpcy5nZXRTb3J0ZWREYXRhKGRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IE9iamVjdC5hc3NpZ24oW10sIGRhdGEpO1xuXG4gICAgICAgICAgaWYgKHRoaXMudGFibGUucGFnZWFibGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsUmVjb3Jkc051bWJlciA9IHRoaXMudGFibGUuZ2V0VG90YWxSZWNvcmRzTnVtYmVyKCk7XG4gICAgICAgICAgICB0aGlzLnJlc3VsdHNMZW5ndGggPSB0b3RhbFJlY29yZHNOdW1iZXIgIT09IHVuZGVmaW5lZCA/IHRvdGFsUmVjb3Jkc051bWJlciA6IGRhdGEubGVuZ3RoO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc3VsdHNMZW5ndGggPSBkYXRhLmxlbmd0aDtcbiAgICAgICAgICAgIGRhdGEgPSB0aGlzLmdldFBhZ2luYXRpb25EYXRhKGRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodGhpcy50YWJsZS5ncm91cGFibGUgJiYgIVV0aWwuaXNBcnJheUVtcHR5KHRoaXMudGFibGUuZ3JvdXBlZENvbHVtbnNBcnJheSkgJiYgZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBkYXRhID0gdGhpcy5nZXRHcm91cGVkRGF0YShkYXRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnJlbmRlcmVkRGF0YSA9IGRhdGE7XG5cbiAgICAgICAgICAvKlxuICAgICAgICAgICAgd2hlbiB0aGUgZGF0YSBpcyB2ZXJ5IGxhcmdlLCB0aGUgYXBwbGljYXRpb24gY3Jhc2hlcyBzbyBpdCBnZXRzIGEgbGltaXRlZCByYW5nZSBvZiBkYXRhIHRoZSBmaXJzdCB0aW1lXG4gICAgICAgICAgICBiZWNhdXNlIGF0IG5leHQgdGhlIEN1c3RvbVZpcnR1YWxTY3JvbGxTdHJhdGVneSB3aWxsIGVtaXQgZXZlbnQgT25SYW5nZUNoYW5nZVZpcnR1YWxTY3JvbGxcbiAgICAgICAgICAqL1xuICAgICAgICAgIGlmICh0aGlzLnRhYmxlLnZpcnR1YWxTY3JvbGxWaWV3cG9ydCAmJiAhdGhpcy5fcGFnaW5hdG9yKSB7XG4gICAgICAgICAgICBkYXRhID0gdGhpcy5nZXRWaXJ0dWFsU2Nyb2xsRGF0YShkYXRhLCBuZXcgT25SYW5nZUNoYW5nZVZpcnR1YWxTY3JvbGwoeyBzdGFydDogMCwgZW5kOiBDb2Rlcy5MSU1JVF9TQ1JPTExWSVJUVUFMIH0pKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmFnZ3JlZ2F0ZURhdGEgPSB0aGlzLmdldEFnZ3JlZ2F0ZXNEYXRhKHRoaXMucmVuZGVyZWREYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgfSkpO1xuICB9XG5cbiAgZ2V0R3JvdXBlZERhdGEoZGF0YTogYW55W10pIHtcbiAgICBkYXRhID0gdGhpcy5nZXRTdWJHcm91cHNPZkdyb3VwZWRSb3coZGF0YSk7XG4gICAgLyoqIGRhdGEgY29udGFpbnMgcm93IGdyb3VwIGhlYWRlcnMgKE9UYWJsZUdyb3VwZWRSb3cpIGFuZCB0aGUgZGF0YSBiZWxvbmdpbmcgdG8gZXhwYW5kZWQgZ3JvdXBlZCByb3dzICovXG4gICAgZGF0YSA9IHRoaXMuZmlsdGVyQ29sbGFwc2VkUm93R3JvdXAoZGF0YSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBzdWJncm91cHMgb2YgZ3JvdXBlZCByb3dcbiAgICogQHBhcmFtIGRhdGFcbiAgICogQHJldHVybnMgc3ViZ3JvdXBzIG9mIGdyb3VwZWQgcm93XG4gICAqL1xuICBnZXRTdWJHcm91cHNPZkdyb3VwZWRSb3coZGF0YTogYW55W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIGRhdGEgPSB0aGlzLmdldFN1YmxldmVsKGRhdGEsIDApO1xuICB9XG5cbiAgZ2V0QWdncmVnYXRlc0RhdGEoZGF0YTogYW55W10pOiBhbnkge1xuICAgIGNvbnN0IG9iaiA9IHt9O1xuXG4gICAgaWYgKHR5cGVvZiB0aGlzLl90YWJsZU9wdGlvbnMgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH1cblxuICAgIHRoaXMuX3RhYmxlT3B0aW9ucy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbjogT0NvbHVtbikgPT4ge1xuICAgICAgbGV0IHRvdGFsVmFsdWUgPSAnJztcbiAgICAgIGlmIChjb2x1bW4uYWdncmVnYXRlICYmIGNvbHVtbi52aXNpYmxlKSB7XG4gICAgICAgIHRvdGFsVmFsdWUgPSB0aGlzLmNhbGN1bGF0ZUFnZ3JlZ2F0ZShkYXRhLCBjb2x1bW4uYXR0ciwgY29sdW1uLmFnZ3JlZ2F0ZS5vcGVyYXRvcik7XG4gICAgICB9XG4gICAgICBjb25zdCBrZXkgPSBjb2x1bW4uYXR0cjtcbiAgICAgIG9ialtrZXldID0gdG90YWxWYWx1ZTtcbiAgICB9KTtcblxuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICAvKipcbiAgICogTWV0aG9kIHRoYXQgZ2V0IHZhbHVlIHRoZSBjb2x1bW5zIGNhbGN1bGF0ZWRcbiAgICogQHBhcmFtIGRhdGEgZGF0YSBvZiB0aGUgZGF0YWJhc2VcbiAgICovXG4gIGdldENvbHVtbkNhbGN1bGF0ZWREYXRhKGRhdGE6IGFueVtdKTogYW55W10ge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbnN0IGNhbGN1bGF0ZWRDb2xzID0gdGhpcy5fdGFibGVPcHRpb25zLmNvbHVtbnMuZmlsdGVyKChvQ29sOiBPQ29sdW1uKSA9PiBvQ29sLnZpc2libGUgJiYgb0NvbC5jYWxjdWxhdGUgIT09IHVuZGVmaW5lZCk7XG4gICAgcmV0dXJuIGRhdGEubWFwKChyb3c6IGFueSkgPT4ge1xuICAgICAgY2FsY3VsYXRlZENvbHMuZm9yRWFjaCgob0NvbHVtbjogT0NvbHVtbikgPT4ge1xuICAgICAgICBsZXQgdmFsdWU7XG4gICAgICAgIGlmICh0eXBlb2Ygb0NvbHVtbi5jYWxjdWxhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdmFsdWUgPSBzZWxmLnRyYW5zZm9ybUZvcm11bGEob0NvbHVtbi5jYWxjdWxhdGUsIHJvdyk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG9Db2x1bW4uY2FsY3VsYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdmFsdWUgPSBvQ29sdW1uLmNhbGN1bGF0ZShyb3cpO1xuICAgICAgICB9XG4gICAgICAgIHJvd1tvQ29sdW1uLmF0dHJdID0gaXNOYU4odmFsdWUpID8gMCA6IHZhbHVlO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcm93O1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHRyYW5zZm9ybUZvcm11bGEoZm9ybXVsYUFyZywgcm93KTogc3RyaW5nIHtcbiAgICBsZXQgZm9ybXVsYSA9IGZvcm11bGFBcmc7XG4gICAgLy8gMS4gcmVwbGFjZSBjb2x1bW5zIGJ5IHZhbHVlcyBvZiByb3dcbiAgICBjb25zdCBjb2x1bW5zQXR0ciA9IHRoaXMuX3RhYmxlT3B0aW9ucy5jb2x1bW5zLm1hcCgob0NvbDogT0NvbHVtbikgPT4gb0NvbC5hdHRyKTtcbiAgICBjb2x1bW5zQXR0ci5mb3JFYWNoKChjb2x1bW46IHN0cmluZykgPT4ge1xuICAgICAgZm9ybXVsYSA9IGZvcm11bGEucmVwbGFjZShjb2x1bW4sIHJvd1tjb2x1bW5dKTtcbiAgICB9KTtcblxuICAgIGxldCByZXN1bHRGb3JtdWxhID0gJyc7XG4gICAgLy8gMi4gVHJhbnNmb3JtIGZvcm11bGFcbiAgICB0cnkge1xuICAgICAgcmVzdWx0Rm9ybXVsYSA9IChuZXcgRnVuY3Rpb24oJ3JldHVybiAnICsgZm9ybXVsYSkpKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignT3BlcmF0aW9uIGRlZmluZWQgaW4gdGhlIGNhbGN1bGF0ZWQgY29sdW1uIGlzIGluY29ycmVjdCAnKTtcbiAgICB9XG4gICAgLy8gMy4gUmV0dXJuIHJlc3VsdFxuICAgIHJldHVybiByZXN1bHRGb3JtdWxhO1xuICB9XG5cbiAgZ2V0UXVpY2tGaWx0ZXJEYXRhKGRhdGE6IGFueVtdKTogYW55W10ge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLnF1aWNrRmlsdGVyKSAmJiB0aGlzLnF1aWNrRmlsdGVyLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlckRhdGEgPSAhdGhpcy5fdGFibGVPcHRpb25zLmZpbHRlckNhc2VTZW5zaXRpdmUgPyB0aGlzLnF1aWNrRmlsdGVyLnRvTG93ZXJDYXNlKCkgOiB0aGlzLnF1aWNrRmlsdGVyO1xuICAgICAgcmV0dXJuIGRhdGEuZmlsdGVyKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgLy8gR2V0dGluZyBjdXN0b20gY29sdW1ucyBmaWx0ZXIgY29sdW1ucyByZXN1bHRcbiAgICAgICAgY29uc3QgcGFzc0N1c3RvbUZpbHRlciA9IHRoaXMuZnVsZmlsbHNDdXN0b21GaWx0ZXJGdW5jdGlvbnMoZmlsdGVyRGF0YSwgaXRlbSk7XG4gICAgICAgIC8vIEdldHRpbmcgb3RoZXIgc2VhcmNoYWJsZSBjb2x1bW5zIHN0YW5kYXJkIHJlc3VsdFxuICAgICAgICBjb25zdCBwYXNzU2VhcmNoU3RyaW5nID0gdGhpcy5mdWxmaWxsc1F1aWNrZmlsdGVyKGZpbHRlckRhdGEsIGl0ZW0pO1xuICAgICAgICByZXR1cm4gcGFzc0N1c3RvbUZpbHRlciB8fCBwYXNzU2VhcmNoU3RyaW5nO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgfVxuXG4gIGdldFBhZ2luYXRpb25EYXRhKGRhdGE6IGFueVtdKTogYW55W10ge1xuICAgIGlmICghdGhpcy5fcGFnaW5hdG9yIHx8IGlzTmFOKHRoaXMuX3BhZ2luYXRvci5wYWdlU2l6ZSkpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICBsZXQgc3RhcnRJbmRleCA9IGlzTmFOKHRoaXMuX3BhZ2luYXRvci5wYWdlU2l6ZSkgPyAwIDogdGhpcy5fcGFnaW5hdG9yLnBhZ2VJbmRleCAqIHRoaXMuX3BhZ2luYXRvci5wYWdlU2l6ZTtcbiAgICBpZiAoZGF0YS5sZW5ndGggPiAwICYmIGRhdGEubGVuZ3RoIDwgc3RhcnRJbmRleCkge1xuICAgICAgc3RhcnRJbmRleCA9IDA7XG4gICAgICB0aGlzLl9wYWdpbmF0b3IucGFnZUluZGV4ID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGEuc3BsaWNlKHN0YXJ0SW5kZXgsIHRoaXMuX3BhZ2luYXRvci5wYWdlU2l6ZSk7XG4gIH1cblxuICBnZXRWaXJ0dWFsU2Nyb2xsRGF0YShkYXRhOiBhbnlbXSwgeDogT25SYW5nZUNoYW5nZVZpcnR1YWxTY3JvbGwpOiBhbnlbXSB7XG4gICAgcmV0dXJuIGRhdGEuc2xpY2UoeC5yYW5nZS5zdGFydCwgeC5yYW5nZS5lbmQpXG4gIH1cblxuICBkaXNjb25uZWN0KCkge1xuICAgIHRoaXMuZGF0YVRvdGFsc0NoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3F1aWNrRmlsdGVyQ2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fY29sdW1uVmFsdWVGaWx0ZXJDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLmdyb3VwQnlDb2x1bW5DaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLl92aXJ0dWFsUGFnZUNoYW5nZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZ1bGZpbGxzQ3VzdG9tRmlsdGVyRnVuY3Rpb25zKGZpbHRlcjogc3RyaW5nLCBpdGVtOiBhbnkpIHtcbiAgICBjb25zdCBjdXN0b21GaWx0ZXJDb2xzID0gdGhpcy50YWJsZS5vVGFibGVPcHRpb25zLmNvbHVtbnMuZmlsdGVyKG9Db2wgPT4gb0NvbC51c2VDdXN0b21GaWx0ZXJGdW5jdGlvbigpKTtcbiAgICByZXR1cm4gY3VzdG9tRmlsdGVyQ29scy5zb21lKG9Db2wgPT4gb0NvbC5yZW5kZXJlci5maWx0ZXJGdW5jdGlvbihpdGVtW29Db2wuYXR0cl0sIGl0ZW0sIGZpbHRlcikpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGZ1bGZpbGxzUXVpY2tmaWx0ZXIoZmlsdGVyOiBzdHJpbmcsIGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLl90YWJsZU9wdGlvbnMuY29sdW1ucy5maWx0ZXIoKG9Db2w6IE9Db2x1bW4pID0+IG9Db2wudXNlUXVpY2tmaWx0ZXJGdW5jdGlvbigpKTtcbiAgICBsZXQgc2VhcmNoU3RyID0gY29sdW1ucy5tYXAoKG9Db2w6IE9Db2x1bW4pID0+IG9Db2wuZ2V0RmlsdGVyVmFsdWUoaXRlbVtvQ29sLmF0dHJdLCBpdGVtKS5qb2luKCcgJykpLmpvaW4oJyAnKTtcbiAgICBpZiAoIXRoaXMuX3RhYmxlT3B0aW9ucy5maWx0ZXJDYXNlU2Vuc2l0aXZlKSB7XG4gICAgICBzZWFyY2hTdHIgPSBzZWFyY2hTdHIudG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlYXJjaFN0ci5pbmRleE9mKGZpbHRlcikgIT09IC0xO1xuICB9XG5cbiAgLyoqIFJldHVybnMgYSBzb3J0ZWQgY29weSBvZiB0aGUgZGF0YWJhc2UgZGF0YS4gKi9cbiAgcHJvdGVjdGVkIGdldFNvcnRlZERhdGEoZGF0YTogYW55W10pOiBhbnlbXSB7XG4gICAgY29uc3QgcmVuZGVyZXJEYXRhID0gdGhpcy5nZXREYXRhVG9Tb3J0KGRhdGEpO1xuICAgIGNvbnN0IHNvcnRlZERhdGEgPSB0aGlzLl9zb3J0LmdldFNvcnRlZERhdGEocmVuZGVyZXJEYXRhKTtcblxuICAgIGNvbnN0IHRhYmxlS2V5cyA9IHRoaXMudGFibGUuZ2V0S2V5cygpO1xuICAgIGNvbnN0IG9yaWdpbmFsRGF0YVNvcnRlZCA9IFtdO1xuXG4gICAgc29ydGVkRGF0YS5mb3JFYWNoKHNvcnRlZEVsZW1lbnQgPT4ge1xuICAgICAgY29uc3Qga2V5c1ZhbHVlc0luU29ydERhdGEgPSB0YWJsZUtleXMubWFwKGVsZW1lbnQgPT4gc29ydGVkRWxlbWVudFtlbGVtZW50XSk7XG5cbiAgICAgIGxldCBpID0gMDtcbiAgICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgICAgd2hpbGUgKGkgPCBkYXRhLmxlbmd0aCAmJiAhZm91bmQpIHtcbiAgICAgICAgY29uc3Qga2V5c1ZhbHVlc0luRGF0YSA9IHRhYmxlS2V5cy5tYXAoZWxlbWVudCA9PiBkYXRhW2ldW2VsZW1lbnRdKTtcbiAgICAgICAgaWYgKFV0aWwuaXNBcnJheUVxdWFsKGtleXNWYWx1ZXNJblNvcnREYXRhLCBrZXlzVmFsdWVzSW5EYXRhKSkge1xuICAgICAgICAgIG9yaWdpbmFsRGF0YVNvcnRlZC5wdXNoKGRhdGFbaV0pO1xuICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpKys7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG9yaWdpbmFsRGF0YVNvcnRlZDtcblxuICB9XG5cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZGF0YSB0aGUgdGFibGUgc3RvcmVzLiBObyBmaWx0ZXJzIGFyZSBhcHBsaWVkLlxuICAgKi9cbiAgZ2V0VGFibGVEYXRhKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YWJhc2UuZGF0YTtcbiAgfVxuXG4gIC8qKiBSZXR1cm4gZGF0YSBvZiB0aGUgdmlzaWJsZSBjb2x1bW5zIG9mIHRoZSB0YWJsZSB3aXRob3V0IHJlbmRlcmluZyAqL1xuICBnZXRDdXJyZW50RGF0YSgpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RGF0YSgpO1xuICB9XG5cbiAgZ2V0Q3VycmVudEFsbERhdGEoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLmdldEFsbERhdGEoZmFsc2UsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm4gZGF0YSBvZiB0aGUgdmlzaWJsZSBjb2x1bW5zIG9mIHRoZSB0YWJsZSAgcmVuZGVyaW5nICovXG4gIGdldEN1cnJlbnRSZW5kZXJlckRhdGEoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLmdldFJlbmRlcmVkRGF0YSh0aGlzLnJlbmRlcmVkRGF0YSk7XG4gIH1cblxuICAvKiogUmV0dXJuIGFsbCBkYXRhIG9mIHRoZSB0YWJsZSByZW5kZXJpbmcgKi9cbiAgZ2V0QWxsUmVuZGVyZXJEYXRhKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxEYXRhKHRydWUsIHRydWUpO1xuICB9XG5cbiAgLyoqIFJldHVybiBzcWwgdHlwZXMgb2YgdGhlIGN1cnJlbnQgZGF0YSAqL1xuICBnZXQgc3FsVHlwZXMoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YWJhc2Uuc3FsVHlwZXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5yZW5kZXJlZERhdGE7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVuZGVyZWREYXRhKGRhdGE6IGFueVtdKTogYW55W10ge1xuICAgIGNvbnN0IHZpc2libGVDb2x1bW5zID0gdGhpcy5fdGFibGVPcHRpb25zLmNvbHVtbnMuZmlsdGVyKG9Db2wgPT4gb0NvbC52aXNpYmxlKTtcbiAgICByZXR1cm4gZGF0YS5tYXAoKHJvdykgPT4ge1xuICAgICAgY29uc3Qgb2JqID0ge307XG4gICAgICB2aXNpYmxlQ29sdW1ucy5mb3JFYWNoKChvQ29sOiBPQ29sdW1uKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZVJlbmRlcmVyID0gb0NvbC5yZW5kZXJlciAmJiBvQ29sLnJlbmRlcmVyLmdldENlbGxEYXRhO1xuICAgICAgICBvYmpbb0NvbC5hdHRyXSA9IHVzZVJlbmRlcmVyID8gb0NvbC5yZW5kZXJlci5nZXRDZWxsRGF0YShyb3dbb0NvbC5hdHRyXSwgcm93KSA6IHJvd1tvQ29sLmF0dHJdO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0pO1xuICB9XG4gIHB1YmxpYyBnZXREYXRhVG9Tb3J0KGRhdGE6IGFueVtdKTogYW55W10ge1xuXG4gICAgY29uc3Qgc29ydENvbHVtbnMgPSB0aGlzLl90YWJsZU9wdGlvbnMuY29sdW1ucy5maWx0ZXIob0NvbCA9PiBvQ29sLnZpc2libGUgJiYgdGhpcy5fc29ydC5hY3RpdmVBcnJheS5tYXAoeCA9PiB4LmlkKS5pbmRleE9mKG9Db2wuYXR0cikgPiAtMSk7XG4gICAgY29uc3QgZXhpc3RDb2x1bW5Ub1RyYXNmb3JtVG9Tb3J0ID0gc29ydENvbHVtbnMuZmlsdGVyKChvQ29sOiBPQ29sdW1uKSA9PiAob0NvbC50eXBlID09PSAndHJhbnNsYXRlJyB8fCBvQ29sLnR5cGUgPT09ICdzZXJ2aWNlJykpLmxlbmd0aCA+IDA7XG4gICAgaWYgKCFleGlzdENvbHVtblRvVHJhc2Zvcm1Ub1NvcnQpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICB0aGlzLnRhYmxlLmdldEtleXMoKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBzb3J0Q29sdW1ucy5wdXNoKHRoaXMudGFibGUuZ2V0T0NvbHVtbihrZXkpKTtcbiAgICB9KVxuXG4gICAgcmV0dXJuIGRhdGEubWFwKChyb3cpID0+IHtcbiAgICAgIGNvbnN0IG9iaiA9IHt9O1xuICAgICAgc29ydENvbHVtbnMuZm9yRWFjaCgob0NvbDogT0NvbHVtbikgPT4ge1xuICAgICAgICBjb25zdCB1c2VSZW5kZXJlciA9IG9Db2wucmVuZGVyZXIgJiYgKG9Db2wudHlwZSA9PT0gJ3RyYW5zbGF0ZScgfHwgb0NvbC50eXBlID09PSAnc2VydmljZScpICYmIG9Db2wucmVuZGVyZXIuZ2V0Q2VsbERhdGE7XG4gICAgICAgIG9ialtvQ29sLmF0dHJdID0gdXNlUmVuZGVyZXIgPyBvQ29sLnJlbmRlcmVyLmdldENlbGxEYXRhKHJvd1tvQ29sLmF0dHJdLCByb3cpIDogcm93W29Db2wuYXR0cl07XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0QWxsRGF0YSh1c2luZ1JlbmRlcmVyZXJzPzogYm9vbGVhbiwgb25seVZpc2libGVDb2x1bW5zPzogYm9vbGVhbikge1xuICAgIGxldCB0YWJsZUNvbHVtbnMgPSB0aGlzLl90YWJsZU9wdGlvbnMuY29sdW1ucztcbiAgICBpZiAob25seVZpc2libGVDb2x1bW5zKSB7XG4gICAgICB0YWJsZUNvbHVtbnMgPSB0aGlzLl90YWJsZU9wdGlvbnMuY29sdW1ucy5maWx0ZXIob0NvbCA9PiBvQ29sLnZpc2libGUpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZERhdGEubWFwKChyb3cpID0+IHtcbiAgICAgIGNvbnN0IG9iaiA9IHt9O1xuICAgICAgdGFibGVDb2x1bW5zLmZvckVhY2goKG9Db2w6IE9Db2x1bW4pID0+IHtcbiAgICAgICAgY29uc3QgdXNlUmVuZGVyZXIgPSB1c2luZ1JlbmRlcmVyZXJzICYmIG9Db2wucmVuZGVyZXIgJiYgb0NvbC5yZW5kZXJlci5nZXRDZWxsRGF0YTtcbiAgICAgICAgb2JqW29Db2wuYXR0cl0gPSB1c2VSZW5kZXJlciA/IG9Db2wucmVuZGVyZXIuZ2V0Q2VsbERhdGEocm93W29Db2wuYXR0cl0sIHJvdykgOiByb3dbb0NvbC5hdHRyXTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVuZGVyZXJzRGF0YShkYXRhOiBhbnlbXSwgdGFibGVDb2x1bW5zOiBPQ29sdW1uW10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIGRhdGEubWFwKChyb3cpID0+IHtcbiAgICAgIC8vIHJlbmRlciBlYWNoIGNvbHVtblxuICAgICAgY29uc3Qgb2JqID0gT2JqZWN0LmFzc2lnbih7fSwgcm93KTtcbiAgICAgIHRhYmxlQ29sdW1ucy5mb3JFYWNoKChvQ29sOiBPQ29sdW1uKSA9PiB7XG4gICAgICAgIG9ialtvQ29sLmF0dHJdID0gb0NvbC5yZW5kZXJlci5nZXRDZWxsRGF0YShyb3dbb0NvbC5hdHRyXSwgcm93KTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb2x1bW5EYXRhKG9jb2x1bW46IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnJlbmRlcmVkRGF0YS5tYXAoKHJvdykgPT4ge1xuICAgICAgLy8gcmVuZGVyIGVhY2ggY29sdW1uXG4gICAgICBjb25zdCBvYmogPSB7fTtcbiAgICAgIGlmIChvY29sdW1uKSB7XG4gICAgICAgIG9ialtvY29sdW1uXSA9IHJvd1tvY29sdW1uXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSk7XG4gIH1cblxuICBpbml0aWFsaXplQ29sdW1uc0ZpbHRlcnMoZmlsdGVyczogT0NvbHVtblZhbHVlRmlsdGVyW10pIHtcbiAgICB0aGlzLmNvbHVtblZhbHVlRmlsdGVycyA9IFtdO1xuICAgIGZpbHRlcnMuZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgICAgdGhpcy5jb2x1bW5WYWx1ZUZpbHRlcnMucHVzaChmaWx0ZXIpO1xuICAgIH0pO1xuICAgIGlmICghdGhpcy50YWJsZS5wYWdlYWJsZSkge1xuICAgICAgdGhpcy5fY29sdW1uVmFsdWVGaWx0ZXJDaGFuZ2UubmV4dChudWxsKTtcbiAgICB9XG4gIH1cblxuICBpc0NvbHVtblZhbHVlRmlsdGVyQWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtblZhbHVlRmlsdGVycy5sZW5ndGggIT09IDA7XG4gIH1cblxuICBnZXRDb2x1bW5WYWx1ZUZpbHRlcnMoKTogT0NvbHVtblZhbHVlRmlsdGVyW10ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtblZhbHVlRmlsdGVycztcbiAgfVxuXG4gIGdldENvbHVtblZhbHVlRmlsdGVyQnlBdHRyKGF0dHI6IHN0cmluZyk6IE9Db2x1bW5WYWx1ZUZpbHRlciB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uVmFsdWVGaWx0ZXJzLmZpbmQoaXRlbSA9PiBpdGVtLmF0dHIgPT09IGF0dHIpO1xuICB9XG5cbiAgY2xlYXJDb2x1bW5GaWx0ZXJzKHRyaWdnZXI6IGJvb2xlYW4gPSB0cnVlLCBjb2x1bW5zQXR0cj86IHN0cmluZ1tdKSB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGNvbHVtbnNBdHRyKSkge1xuICAgICAgdGhpcy5jb2x1bW5WYWx1ZUZpbHRlcnMgPSB0aGlzLmNvbHVtblZhbHVlRmlsdGVycy5maWx0ZXIoeCA9PiAhY29sdW1uc0F0dHIuaW5jbHVkZXMoeC5hdHRyKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29sdW1uVmFsdWVGaWx0ZXJzID0gW107XG4gICAgfVxuICAgIGlmICh0cmlnZ2VyKSB7XG4gICAgICB0aGlzLl9jb2x1bW5WYWx1ZUZpbHRlckNoYW5nZS5uZXh0KG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyQ29sdW1uRmlsdGVyKGF0dHI6IHN0cmluZywgdHJpZ2dlcjogYm9vbGVhbiA9IHRydWUpIHtcbiAgICB0aGlzLmNvbHVtblZhbHVlRmlsdGVycyA9IHRoaXMuY29sdW1uVmFsdWVGaWx0ZXJzLmZpbHRlcih4ID0+IHguYXR0ciAhPT0gYXR0cik7XG4gICAgaWYgKHRyaWdnZXIpIHtcbiAgICAgIHRoaXMuX2NvbHVtblZhbHVlRmlsdGVyQ2hhbmdlLm5leHQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgYWRkQ29sdW1uRmlsdGVyKGZpbHRlcjogT0NvbHVtblZhbHVlRmlsdGVyKSB7XG4gICAgY29uc3QgZXhpc3RpbmdGaWx0ZXJJbmRleCA9IHRoaXMuY29sdW1uVmFsdWVGaWx0ZXJzLmZpbmRJbmRleChpdGVtID0+IGl0ZW0uYXR0ciA9PT0gZmlsdGVyLmF0dHIpO1xuICAgIGlmIChleGlzdGluZ0ZpbHRlckluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuY29sdW1uVmFsdWVGaWx0ZXJzLnNwbGljZShleGlzdGluZ0ZpbHRlckluZGV4LCAxLCBmaWx0ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgdmFsaWRGaWx0ZXIgPSBVdGlsLmlzRGVmaW5lZChmaWx0ZXIudmFsdWVzKTtcbiAgICAgIGlmICh2YWxpZEZpbHRlcikge1xuICAgICAgICBzd2l0Y2ggKGZpbHRlci5vcGVyYXRvcikge1xuICAgICAgICAgIGNhc2UgQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5JTjpcbiAgICAgICAgICAgIHZhbGlkRmlsdGVyID0gZmlsdGVyLnZhbHVlcy5sZW5ndGggPiAwO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLkJFVFdFRU46XG4gICAgICAgICAgICB2YWxpZEZpbHRlciA9IGZpbHRlci52YWx1ZXMubGVuZ3RoID09PSAyO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLkVRVUFMOlxuICAgICAgICAgIGNhc2UgQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5MRVNTX0VRVUFMOlxuICAgICAgICAgIGNhc2UgQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5NT1JFX0VRVUFMOlxuICAgICAgICAgICAgdmFsaWRGaWx0ZXIgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHZhbGlkRmlsdGVyID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbGlkRmlsdGVyKSB7XG4gICAgICAgICAgdGhpcy5jb2x1bW5WYWx1ZUZpbHRlcnMucHVzaChmaWx0ZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vIElmIHRoZSB0YWJsZSBpcyBwYWdpbmF0ZWQsIGZpbHRlciB3aWxsIGJlIGFwcGxpZWQgb24gcmVtb3RlIHF1ZXJ5XG4gICAgaWYgKCF0aGlzLnRhYmxlLnBhZ2VhYmxlKSB7XG4gICAgICB0aGlzLl9jb2x1bW5WYWx1ZUZpbHRlckNoYW5nZS5uZXh0KG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIGdldENvbHVtblZhbHVlRmlsdGVyRGF0YShkYXRhOiBhbnlbXSk6IGFueVtdIHtcbiAgICB0aGlzLmNvbHVtblZhbHVlRmlsdGVycy5mb3JFYWNoKGZpbHRlciA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJDb2x1bW4gPSB0aGlzLnRhYmxlLm9UYWJsZU9wdGlvbnMuY29sdW1ucy5maW5kKGNvbCA9PiBjb2wuYXR0ciA9PT0gZmlsdGVyLmF0dHIpO1xuICAgICAgaWYgKGZpbHRlckNvbHVtbikge1xuICAgICAgICBzd2l0Y2ggKGZpbHRlci5vcGVyYXRvcikge1xuICAgICAgICAgIGNhc2UgQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5JTjpcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlclZhbHVlcyA9IChmaWx0ZXIudmFsdWVzIHx8IFtdKS5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PlxuICAgICAgICAgICAgICBwcmV2aW91cy5jb25jYXQoZmlsdGVyQ29sdW1uLmdldEZpbHRlclZhbHVlKGN1cnJlbnQpLm1hcChmID0+IFV0aWwubm9ybWFsaXplU3RyaW5nKGYpKSksIFtdKTtcblxuICAgICAgICAgICAgZGF0YSA9IGRhdGEuZmlsdGVyKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGZpbHRlckNvbHVtbi5yZW5kZXJlciAmJiBmaWx0ZXJDb2x1bW4ucmVuZGVyZXIuZmlsdGVyRnVuY3Rpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyQ29sdW1uLnJlbmRlcmVyLmZpbHRlckZ1bmN0aW9uKGl0ZW1bZmlsdGVyLmF0dHJdLCBpdGVtKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb2xWYWx1ZXMgPSBmaWx0ZXJDb2x1bW4uZ2V0RmlsdGVyVmFsdWUoaXRlbVtmaWx0ZXIuYXR0cl0sIGl0ZW0pLm1hcChmID0+IFV0aWwubm9ybWFsaXplU3RyaW5nKGYpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyVmFsdWVzLnNvbWUodmFsdWUgPT4gY29sVmFsdWVzLmluZGV4T2YodmFsdWUpICE9PSAtMSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLkVRVUFMOlxuICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZFZhbHVlID0gVXRpbC5ub3JtYWxpemVTdHJpbmcoZmlsdGVyLnZhbHVlcyk7XG4gICAgICAgICAgICBkYXRhID0gZGF0YS5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbFZhbHVlcyA9IGZpbHRlckNvbHVtbi5nZXRGaWx0ZXJWYWx1ZShpdGVtW2ZpbHRlci5hdHRyXSwgaXRlbSkubWFwKGYgPT4gVXRpbC5ub3JtYWxpemVTdHJpbmcoZikpO1xuICAgICAgICAgICAgICBsZXQgcmVnRXhwO1xuICAgICAgICAgICAgICBpZiAobm9ybWFsaXplZFZhbHVlLmluY2x1ZGVzKCcqJykpIHtcbiAgICAgICAgICAgICAgICByZWdFeHAgPSBuZXcgUmVnRXhwKCdeJyArIG5vcm1hbGl6ZWRWYWx1ZS5zcGxpdCgnKicpLmpvaW4oJy4qJykgKyAnJCcpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBjb2xWYWx1ZXMuc29tZShjb2xWYWx1ZSA9PiByZWdFeHAgPyByZWdFeHAudGVzdChjb2xWYWx1ZSkgOiBjb2xWYWx1ZS50b1N0cmluZygpLmluY2x1ZGVzKG5vcm1hbGl6ZWRWYWx1ZSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuQkVUV0VFTjpcbiAgICAgICAgICAgIGRhdGEgPSBkYXRhLmZpbHRlcihpdGVtID0+IGl0ZW1bZmlsdGVyLmF0dHJdID49IGZpbHRlci52YWx1ZXNbMF0gJiYgaXRlbVtmaWx0ZXIuYXR0cl0gPD0gZmlsdGVyLnZhbHVlc1sxXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuTU9SRV9FUVVBTDpcbiAgICAgICAgICAgIGRhdGEgPSBkYXRhLmZpbHRlcihpdGVtID0+IGl0ZW1bZmlsdGVyLmF0dHJdID49IGZpbHRlci52YWx1ZXMpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLkxFU1NfRVFVQUw6XG4gICAgICAgICAgICBkYXRhID0gZGF0YS5maWx0ZXIoaXRlbSA9PiBpdGVtW2ZpbHRlci5hdHRyXSA8PSBmaWx0ZXIudmFsdWVzKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBnZXRBZ2dyZWdhdGVEYXRhKGNvbHVtbjogT0NvbHVtbikge1xuICAgIGNvbnN0IG9iaiA9IHt9O1xuICAgIGxldCB0b3RhbFZhbHVlID0gJyc7XG5cbiAgICBpZiAodHlwZW9mIHRoaXMuX3RhYmxlT3B0aW9ucyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBuZXcgQXJyYXkob2JqKTtcbiAgICB9XG4gICAgdG90YWxWYWx1ZSA9IHRoaXMuYWdncmVnYXRlRGF0YVtjb2x1bW4uYXR0cl07XG4gICAgcmV0dXJuIHRvdGFsVmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2FsY3VsYXRlQWdncmVnYXRlKGRhdGE6IGFueVtdLCBjb2x1bW5BdHRyOiBzdHJpbmcsIG9wZXJhdG9yOiBzdHJpbmcgfCBGdW5jdGlvbik6IGFueSB7XG4gICAgbGV0IHJlc3VsdEFnZ3JlZ2F0ZTtcbiAgICBpZiAodHlwZW9mIG9wZXJhdG9yID09PSAnc3RyaW5nJykge1xuICAgICAgc3dpdGNoIChvcGVyYXRvci50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgIGNhc2UgJ2NvdW50JzpcbiAgICAgICAgICByZXN1bHRBZ2dyZWdhdGUgPSB0aGlzLmNvdW50KGNvbHVtbkF0dHIsIGRhdGEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtaW4nOlxuICAgICAgICAgIHJlc3VsdEFnZ3JlZ2F0ZSA9IHRoaXMubWluKGNvbHVtbkF0dHIsIGRhdGEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtYXgnOlxuICAgICAgICAgIHJlc3VsdEFnZ3JlZ2F0ZSA9IHRoaXMubWF4KGNvbHVtbkF0dHIsIGRhdGEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdhdmcnOlxuICAgICAgICAgIHJlc3VsdEFnZ3JlZ2F0ZSA9IHRoaXMuYXZnKGNvbHVtbkF0dHIsIGRhdGEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJlc3VsdEFnZ3JlZ2F0ZSA9IHRoaXMuc3VtKGNvbHVtbkF0dHIsIGRhdGEpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb2x1bW5EYXRhOiBhbnlbXSA9IHRoaXMuZ2V0Q29sdW1uRGF0YShjb2x1bW5BdHRyKTtcbiAgICAgIGlmICh0eXBlb2Ygb3BlcmF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmVzdWx0QWdncmVnYXRlID0gb3BlcmF0b3IoY29sdW1uRGF0YSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRBZ2dyZWdhdGU7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3VtKGNvbHVtbiwgZGF0YSk6IG51bWJlciB7XG4gICAgbGV0IHZhbHVlID0gMDtcbiAgICBpZiAoZGF0YSkge1xuICAgICAgLy9JZiB0aGUgZGF0YSBpcyBncm91cGVkLCB0aGUgdmFsdWVzIOKAi+KAi29mIHRoZSBzdWJncm91cHMgaW4gbGV2ZWwgMSBhcmUgc3VtbWVkXG4gICAgICBpZiAoZGF0YVswXSBpbnN0YW5jZW9mIE9UYWJsZUdyb3VwZWRSb3cpIHtcbiAgICAgICAgdGhpcy5nZXREYXRhRnJvbUZpcnN0TGV2ZWxUYWJsZUdyb3VwUm93KGRhdGEpLmZvckVhY2goeCA9PiB7XG4gICAgICAgICAgdmFsdWUgPSB4LmdldENvbHVtbkFnZ3JlZ2F0ZURhdGEoY29sdW1uKS5yZWR1Y2UoKGFjdW11bGF0b3IsIGN1cnJlbnRWYWx1ZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFjdW11bGF0b3IgKyAoaXNOYU4oY3VycmVudFZhbHVlW2NvbHVtbl0pID8gMCA6IGN1cnJlbnRWYWx1ZVtjb2x1bW5dKTtcbiAgICAgICAgICB9LCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWUgPSBkYXRhLnJlZHVjZSgoYWN1bXVsYXRvciwgY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGFjdW11bGF0b3IgKyAoaXNOYU4oY3VycmVudFZhbHVlW2NvbHVtbl0pID8gMCA6IGN1cnJlbnRWYWx1ZVtjb2x1bW5dKTtcbiAgICAgICAgfSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gKyh2YWx1ZSkudG9GaXhlZCgyKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb3VudChjb2x1bW4sIGRhdGEpOiBudW1iZXIge1xuICAgIGxldCB2YWx1ZSA9IDA7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIC8vSWYgdGhlIGRhdGEgaXMgZ3JvdXBlZCwgdGhlIGNvdW50IGlzIGNhbGN1bGF0ZWQgYnkgYWRkaW5nIHRoZSBjb3VudHMgZm9yIGVhY2ggc3ViZ3JvdXAgaW4gbGV2ZWwgMVxuICAgICAgaWYgKGRhdGFbMF0gaW5zdGFuY2VvZiBPVGFibGVHcm91cGVkUm93KSB7XG4gICAgICAgIHRoaXMuZ2V0RGF0YUZyb21GaXJzdExldmVsVGFibGVHcm91cFJvdyhkYXRhKS5mb3JFYWNoKHggPT4ge1xuICAgICAgICAgIHZhbHVlID0geC5nZXRDb2x1bW5BZ2dyZWdhdGVEYXRhKGNvbHVtbikucmVkdWNlKChhY3VtdWxhdG9yKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYWN1bXVsYXRvciArIDE7XG4gICAgICAgICAgfSwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gZGF0YS5yZWR1Y2UoKGFjdW11bGF0b3IpID0+IHtcbiAgICAgICAgICByZXR1cm4gYWN1bXVsYXRvciArIDE7XG4gICAgICAgIH0sIDApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXZnKGNvbHVtbiwgZGF0YSk6IG51bWJlciB7XG4gICAgY29uc3QgdG90YWxTdW0gPSB0aGlzLnN1bShjb2x1bW4sIGRhdGEpO1xuICAgIGNvbnN0IHRvdGFsQ291bnQgPSB0aGlzLmNvdW50KGNvbHVtbiwgZGF0YSk7XG4gICAgcmV0dXJuICsoKHRvdGFsU3VtID09PSAwIHx8IHRvdGFsQ291bnQgPT09IDApID8gMCA6ICh0b3RhbFN1bSAvIHRvdGFsQ291bnQpKS50b0ZpeGVkKDIpO1xuXG4gIH1cblxuICBwcm90ZWN0ZWQgbWluKGNvbHVtbiwgZGF0YSk6IG51bWJlciB7XG4gICAgbGV0IHRlbXBNaW4gPSBbXTtcbiAgICAvL0lmIHRoZSBkYXRhIGlzIGdyb3VwZWQsIHRoZSBtaW5pbXVtIGlzIGNhbGN1bGF0ZWQgd2l0aCB0aGUgbWluaW11bSBvZiBlYWNoIHN1Ymdyb3VwIGluIGxldmVsIDFcbiAgICBpZiAoZGF0YVswXSBpbnN0YW5jZW9mIE9UYWJsZUdyb3VwZWRSb3cpIHtcbiAgICAgIHRlbXBNaW4gPSB0aGlzLmdldERhdGFGcm9tRmlyc3RMZXZlbFRhYmxlR3JvdXBSb3coZGF0YSkubWFwKHggPT4ge1xuICAgICAgICByZXR1cm4gTWF0aC5taW4oLi4ueC5nZXRDb2x1bW5BZ2dyZWdhdGVEYXRhKGNvbHVtbikubWFwKHggPT4geFtjb2x1bW5dKSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGVtcE1pbiA9IGRhdGEubWFwKHggPT4geFtjb2x1bW5dKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVtcE1pbi5sZW5ndGggPiAwID8gTWF0aC5taW4oLi4udGVtcE1pbikgOiAwO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1heChjb2x1bW4sIGRhdGEpOiBudW1iZXIge1xuICAgIGxldCB0ZW1wTWF4ID0gW107XG4gICAgaWYgKGRhdGFbMF0gaW5zdGFuY2VvZiBPVGFibGVHcm91cGVkUm93KSB7XG4gICAgICAvL0lmIHRoZSBkYXRhIGFyZSBncm91cGVkLCB0aGUgbWF4aW11bSBpcyBjYWxjdWxhdGVkIHdpdGggdGhlIG1heGltdW0gb2YgZWFjaCBzdWJncm91cCBpbiBsZXZlbCAxXG4gICAgICB0ZW1wTWF4ID0gdGhpcy5nZXREYXRhRnJvbUZpcnN0TGV2ZWxUYWJsZUdyb3VwUm93KGRhdGEpLm1hcCh4ID0+IHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KC4uLnguZ2V0Q29sdW1uQWdncmVnYXRlRGF0YShjb2x1bW4pLm1hcCh4ID0+IHhbY29sdW1uXSkpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRlbXBNYXggPSBkYXRhLm1hcCh4ID0+IHhbY29sdW1uXSk7XG4gICAgfVxuICAgIHJldHVybiB0ZW1wTWF4Lmxlbmd0aCA+IDAgPyBNYXRoLm1heCguLi50ZW1wTWF4KSA6IDA7XG4gIH1cblxuICBwcml2YXRlIGlzRmlyc3RMZXZlbFRhYmxlR3JvdXBSb3codGFibGVSb3dHcm91cERhdGE6IGFueSkge1xuICAgIHJldHVybiB0YWJsZVJvd0dyb3VwRGF0YSBpbnN0YW5jZW9mIE9UYWJsZUdyb3VwZWRSb3cgJiYgdGFibGVSb3dHcm91cERhdGEubGV2ZWwgPT09IDE7XG4gIH1cblxuICBwcml2YXRlIGdldERhdGFGcm9tRmlyc3RMZXZlbFRhYmxlR3JvdXBSb3coZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIGRhdGEuZmlsdGVyKHggPT4gdGhpcy5pc0ZpcnN0TGV2ZWxUYWJsZUdyb3VwUm93KHgpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBleGlzdHNBbnlDYWxjdWxhdGVkQ29sdW1uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl90YWJsZU9wdGlvbnMuY29sdW1ucy5maW5kKChvQ29sOiBPQ29sdW1uKSA9PiBvQ29sLmNhbGN1bGF0ZSAhPT0gdW5kZWZpbmVkKSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgdXBkYXRlUmVuZGVyZWRSb3dEYXRhKHJvd0RhdGE6IGFueSkge1xuICAgIGNvbnN0IHRhYmxlS2V5cyA9IHRoaXMudGFibGUuZ2V0S2V5cygpO1xuICAgIGNvbnN0IHJlY29yZCA9IHRoaXMucmVuZGVyZWREYXRhLmZpbmQoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgbGV0IGZvdW5kID0gdHJ1ZTtcbiAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0YWJsZUtleXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgY29uc3Qga2V5ID0gdGFibGVLZXlzW2ldO1xuICAgICAgICBpZiAoZGF0YVtrZXldICE9PSByb3dEYXRhW2tleV0pIHtcbiAgICAgICAgICBmb3VuZCA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZm91bmQ7XG4gICAgfSk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHJlY29yZCkpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24ocmVjb3JkLCByb3dEYXRhKTtcbiAgICB9XG4gIH1cblxuXG4gIHByaXZhdGUgZ2V0RGF0YUluZm9ybWF0aW9uQnlHcm91cChkYXRhOiBhbnlbXSwgbGV2ZWw6IG51bWJlcikge1xuICAgIGNvbnN0IHJlY29yZEhhc2ggPSB7fTtcbiAgICBkYXRhLmZvckVhY2goKHJvdywgaSkgPT4ge1xuICAgICAgY29uc3Qga2V5cyA9IHt9O1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gbGV2ZWw7IGkrKykge1xuICAgICAgICBrZXlzW3RoaXMudGFibGUuZ3JvdXBlZENvbHVtbnNBcnJheVtpXV0gPSB0aGlzLnRhYmxlLmdldENvbHVtbkRhdGFCeUF0dHIodGhpcy50YWJsZS5ncm91cGVkQ29sdW1uc0FycmF5W2ldLCByb3cpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVjb3JkS2V5ID0gSlNPTi5zdHJpbmdpZnkoa2V5cyk7XG4gICAgICBpZiAocmVjb3JkSGFzaC5oYXNPd25Qcm9wZXJ0eShyZWNvcmRLZXkpKSB7XG4gICAgICAgIHJlY29yZEhhc2hbcmVjb3JkS2V5XS5wdXNoKGkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVjb3JkSGFzaFtyZWNvcmRLZXldID0gW2ldO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZWNvcmRIYXNoO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNhbGN1bGF0ZUNvbHVtbkFnZ3JlZ2F0ZShjb2x1bW5BdHRyOiBzdHJpbmcsIHJvdzogT1RhYmxlR3JvdXBlZFJvdykge1xuICAgIGNvbnN0IGFnZ3JlZ2F0ZUNvbmYgPSByb3cuZ2V0QWN0aXZlQ29sdW1uQWdncmVnYXRlQ29uZmlndXJhdGlvbihjb2x1bW5BdHRyKTtcbiAgICBjb25zdCBkYXRhID0gcm93LmdldENvbHVtbkFnZ3JlZ2F0ZURhdGEoY29sdW1uQXR0cik7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmNhbGN1bGF0ZUFnZ3JlZ2F0ZShkYXRhLCBhZ2dyZWdhdGVDb25mLmF0dHIsIGFnZ3JlZ2F0ZUNvbmYuYWdncmVnYXRlRnVuY3Rpb24gfHwgYWdncmVnYXRlQ29uZi5hZ2dyZWdhdGUpO1xuICAgIHJvdy5zZXRDb2x1bW5BZ2dyZWdhdGVWYWx1ZShjb2x1bW5BdHRyLCB2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldFN1YmxldmVsKGRhdGE6IGFueVtdLCBsZXZlbDogbnVtYmVyLCBwYXJlbnQ/OiBPVGFibGVHcm91cGVkUm93KTogYW55W10ge1xuICAgIGlmIChsZXZlbCA+PSB0aGlzLnRhYmxlLmdyb3VwZWRDb2x1bW5zQXJyYXkubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgY29uc3QgcmVjb3JkSGFzaCA9IHRoaXMuZ2V0RGF0YUluZm9ybWF0aW9uQnlHcm91cChkYXRhLCBsZXZlbCk7XG5cbiAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgT2JqZWN0LmtleXMocmVjb3JkSGFzaCkuZm9yRWFjaChyZWNvcmRLZXkgPT4ge1xuXG4gICAgICBjb25zdCByb3cgPSBuZXcgT1RhYmxlR3JvdXBlZFJvdyh7XG4gICAgICAgIGNvbHVtbjogdGhpcy50YWJsZS5ncm91cGVkQ29sdW1uc0FycmF5W2xldmVsXSxcbiAgICAgICAga2V5c0FzU3RyaW5nOiByZWNvcmRLZXksXG4gICAgICAgIGxldmVsOiBsZXZlbCArIDEsXG4gICAgICAgIHBhcmVudDogcGFyZW50XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5ncm91cGVkUm93c1N1YnNjcmlwdGlvbi5hZGQocm93LmFnZ3JlZ2F0ZUZ1bmN0aW9uQ2hhbmdlLnN1YnNjcmliZShhcmcgPT4ge1xuICAgICAgICBpZiAoYXJnLmNoYW5nZUFsbEdyb3VwZWRSb3dzKSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVBZ2dyZWdhdGVzW2FyZy5jb2x1bW5BdHRyXSA9IGFyZy5hY3RpdmVBZ2dyZWdhdGU7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlZERhdGEuZmlsdGVyKHJvdyA9PiByb3cgaW5zdGFuY2VvZiBPVGFibGVHcm91cGVkUm93KS5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgICAgICByb3cuc2V0Q29sdW1uQWN0aXZlQWdncmVnYXRlRnVuY3Rpb24oYXJnLmNvbHVtbkF0dHIsIGFyZy5hY3RpdmVBZ2dyZWdhdGUsIGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMucmVjYWxjdWxhdGVDb2x1bW5BZ2dyZWdhdGUoYXJnLmNvbHVtbkF0dHIsIHJvdyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZWNhbGN1bGF0ZUNvbHVtbkFnZ3JlZ2F0ZShhcmcuY29sdW1uQXR0ciwgYXJnLnJvdyk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICAgIGNvbnN0IGFmZmVjdGVkSW5kZXhlcyA9IHJlY29yZEhhc2hbcm93LmtleXNBc1N0cmluZ107XG4gICAgICBjb25zdCBncm91cERhdGEgPSBkYXRhLmZpbHRlcigocm93LCBpbmRleCkgPT4gYWZmZWN0ZWRJbmRleGVzLmluY2x1ZGVzKGluZGV4KSk7XG4gICAgICB0aGlzLnRhYmxlLnZpc2libGVDb2xBcnJheS5mb3JFYWNoKChjb2x1bW5BdHRyLCBpKSA9PiB7XG4gICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgcm93LnRpdGxlID0gdGhpcy5nZXRUZXh0R3JvdXBSb3cocm93LCBhZmZlY3RlZEluZGV4ZXMubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1c2VDb2x1bW5BZ2dyZWdhdGUgPSB0aGlzLnRhYmxlLnVzZUNvbHVtbkdyb3VwaW5nQWdncmVnYXRlKGNvbHVtbkF0dHIpO1xuICAgICAgICBpZiAodXNlQ29sdW1uQWdncmVnYXRlKSB7XG4gICAgICAgICAgcm93LmluaXRpYWxpemVDb2x1bW5BZ2dyZWdhdGUoY29sdW1uQXR0ciwgdGhpcy50YWJsZS5nZXRDb2x1bW5Hcm91cGluZ0NvbXBvbmVudChjb2x1bW5BdHRyKSk7XG5cbiAgICAgICAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5hY3RpdmVBZ2dyZWdhdGVzW2NvbHVtbkF0dHJdKSkge1xuICAgICAgICAgICAgcm93LnNldENvbHVtbkFjdGl2ZUFnZ3JlZ2F0ZUZ1bmN0aW9uKGNvbHVtbkF0dHIsIHRoaXMuYWN0aXZlQWdncmVnYXRlc1tjb2x1bW5BdHRyXSwgZmFsc2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChyb3cuaGFzQWN0aXZlQWdncmVnYXRlKGNvbHVtbkF0dHIpKSB7XG4gICAgICAgICAgICBjb25zdCBhZ2dyZWdhdGVEYXRhID0gZ3JvdXBEYXRhLm1hcCh4ID0+IHsgY29uc3Qgb2JqID0ge307IG9ialtjb2x1bW5BdHRyXSA9IHhbY29sdW1uQXR0cl07IHJldHVybiBvYmo7IH0pO1xuICAgICAgICAgICAgcm93LnNldENvbHVtbkFnZ3JlZ2F0ZURhdGEoY29sdW1uQXR0ciwgYWdncmVnYXRlRGF0YSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGFnZ3JlZ2F0ZUNvbmYgPSByb3cuZ2V0QWN0aXZlQ29sdW1uQWdncmVnYXRlQ29uZmlndXJhdGlvbihjb2x1bW5BdHRyKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jYWxjdWxhdGVBZ2dyZWdhdGUoYWdncmVnYXRlRGF0YSwgYWdncmVnYXRlQ29uZi5hdHRyLCBhZ2dyZWdhdGVDb25mLmFnZ3JlZ2F0ZUZ1bmN0aW9uIHx8IGFnZ3JlZ2F0ZUNvbmYuYWdncmVnYXRlKTtcbiAgICAgICAgICAgIHJvdy5zZXRDb2x1bW5BZ2dyZWdhdGVWYWx1ZShjb2x1bW5BdHRyLCB2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJvdy5leHBhbmRlZCA9IHRoaXMuZ2V0RXhwYW5zaW9uU3RhdGUocm93KTtcbiAgICAgIGNvbnN0IHN1Ykdyb3VwID0gdGhpcy5nZXRTdWJsZXZlbChncm91cERhdGEsIGxldmVsICsgMSwgcm93KTtcbiAgICAgIHN1Ykdyb3VwLnVuc2hpZnQocm93KTtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQoc3ViR3JvdXApO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogRmlsdGVycyBjb2xsYXBzZWQgcm93IGdyb3VwXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEByZXR1cm5zIGNvbGxhcHNlZCByb3cgZ3JvdXBcbiAgICovXG4gIGZpbHRlckNvbGxhcHNlZFJvd0dyb3VwKGRhdGE6IGFueSk6IGFueVtdIHtcbiAgICByZXR1cm4gZGF0YS5maWx0ZXIoKHJvdzogYW55KSA9PiAocm93IGluc3RhbmNlb2YgT1RhYmxlR3JvdXBlZFJvdykgPyByb3cudmlzaWJsZSA6IHRoaXMuYmVsb25nc1RvRXhwYW5kZWRHcm91cGVkUm93KGRhdGEsIHJvdykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJlbG9uZ3MgdG8gYW4gZXhwYW5kZWQgZ3JvdXBlZCByb3dcbiAgICogQHBhcmFtIGRhdGFcbiAgICogQHBhcmFtIHJvd1xuICAgKiBAcmV0dXJucyB0cnVlIGlmIHRvIGV4cGFuZGVkIGdyb3VwZWQgcm93XG4gICAqL1xuICBiZWxvbmdzVG9FeHBhbmRlZEdyb3VwZWRSb3coZGF0YTogYW55LCByb3c6IGFueSk6IGJvb2xlYW4ge1xuICAgIGxldCBwYXJlbnQ6IE9UYWJsZUdyb3VwZWRSb3c7XG4gICAgbGV0IG1hdGNoID0gZmFsc2U7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGRhdGEubGVuZ3RoICYmICFtYXRjaDsgaW5kZXgrKykge1xuICAgICAgaWYgKGRhdGFbaW5kZXhdIGluc3RhbmNlb2YgT1RhYmxlR3JvdXBlZFJvdykge1xuICAgICAgICBwYXJlbnQgPSBkYXRhW2luZGV4XTtcbiAgICAgIH0gZWxzZSBpZiAoVXRpbC5pc0VxdWl2YWxlbnQoZGF0YVtpbmRleF0sIHJvdykpIHtcbiAgICAgICAgbWF0Y2ggPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQocGFyZW50KSA/IChwYXJlbnQudmlzaWJsZSAmJiBwYXJlbnQuZXhwYW5kZWQpIDogdHJ1ZTtcbiAgfVxuXG4gIHVwZGF0ZUdyb3VwZWRDb2x1bW5zKCkge1xuICAgIHRoaXMuZ3JvdXBCeUNvbHVtbkNoYW5nZS5uZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyBncm91cCBieSBjb2x1bW5cbiAgICogQHBhcmFtIHJvd0dyb3VwXG4gICAqL1xuICB0b2dnbGVHcm91cEJ5Q29sdW1uKHJvd0dyb3VwOiBPVGFibGVHcm91cGVkUm93KSB7XG4gICAgaWYgKHJvd0dyb3VwLmV4cGFuZFNhbWVMZXZlbCh0aGlzLnRhYmxlLmV4cGFuZEdyb3Vwc1NhbWVMZXZlbCkpIHtcbiAgICAgIHRoaXMubGV2ZWxzRXhwYW5zaW9uU3RhdGVbcm93R3JvdXAubGV2ZWxdID0gIXJvd0dyb3VwLmV4cGFuZGVkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVwZGF0ZVN0YXRlUm93R3JvdXBlZChyb3dHcm91cCk7XG4gICAgfVxuICAgIHRoaXMuZ3JvdXBCeUNvbHVtbkNoYW5nZS5uZXh0KCk7XG4gIH1cblxuICBzZXRSb3dHcm91cExldmVsRXhwYW5zaW9uKHJvd0dyb3VwOiBPVGFibGVHcm91cGVkUm93LCB2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMubGV2ZWxzRXhwYW5zaW9uU3RhdGVbcm93R3JvdXAubGV2ZWxdID0gdmFsdWU7XG4gICAgdGhpcy5ncm91cEJ5Q29sdW1uQ2hhbmdlLm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3RhdGVSb3dHcm91cGVkKHJvd0dyb3VwOiBPVGFibGVHcm91cGVkUm93KSB7XG4gICAgY29uc3Qgc3RhdGVSb3dHcm91cGVkID0gdGhpcy5ncm91cGVkUm93U3RhdGUuZmluZChyb3cgPT4gcm93R3JvdXAua2V5c0FzU3RyaW5nID09PSByb3cua2V5c0FzU3RyaW5nICYmIEpTT04uc3RyaW5naWZ5KHJvd0dyb3VwLnBhcmVudCkgPT09IEpTT04uc3RyaW5naWZ5KHJvdy5wYXJlbnQpKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoc3RhdGVSb3dHcm91cGVkKSkge1xuICAgICAgc3RhdGVSb3dHcm91cGVkLmV4cGFuZGVkID0gIXN0YXRlUm93R3JvdXBlZC5leHBhbmRlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcm93R3JvdXAuZXhwYW5kZWQgPSAhcm93R3JvdXAuZXhwYW5kZWQ7XG4gICAgICB0aGlzLmdyb3VwZWRSb3dTdGF0ZS5wdXNoKHJvd0dyb3VwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFRleHRHcm91cFJvdyhncm91cDogT1RhYmxlR3JvdXBlZFJvdywgdG90YWxDb3VudHM6IG51bWJlcikge1xuICAgIGNvbnN0IGZpZWxkID0gdGhpcy50YWJsZS5ncm91cGVkQ29sdW1uc0FycmF5W2dyb3VwLmxldmVsIC0gMV07XG4gICAgbGV0IHZhbHVlID0gSlNPTi5wYXJzZShncm91cC5rZXlzQXNTdHJpbmcpW3RoaXMudGFibGUuZ3JvdXBlZENvbHVtbnNBcnJheVtncm91cC5sZXZlbCAtIDFdXTtcblxuICAgIGNvbnN0IG9Db2wgPSB0aGlzLnRhYmxlLmdldE9Db2x1bW4oZmllbGQpO1xuXG4gICAgaWYgKCF2YWx1ZSAmJiBVdGlsLmlzRGVmaW5lZChvQ29sLnJlbmRlcmVyKSAmJiAodGhpcy50YWJsZSBhcyBhbnkpLmlzSW5zdGFuY2VPZk9UYWJsZUNlbGxSZW5kZXJlclNlcnZpY2VDb21wb25lbnQob0NvbC5yZW5kZXJlcikpIHtcbiAgICAgIHZhbHVlID0gJyAtICc7XG4gICAgICBpZiAoIXRoaXMudGFibGUub25EYXRhTG9hZGVkQ2VsbFJlbmRlcmVyU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgIHRoaXMudGFibGUub25EYXRhTG9hZGVkQ2VsbFJlbmRlcmVyU3Vic2NyaXB0aW9uID0gKG9Db2wucmVuZGVyZXIgYXMgYW55KS5vbkRhdGFMb2FkZWQuc3Vic2NyaWJlKHggPT4ge1xuICAgICAgICAgIHRoaXMudXBkYXRlR3JvdXBlZENvbHVtbnMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAodGhpcy50YWJsZSBhcyBhbnkpLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KG9Db2wudGl0bGUpICsgJzogJyArIHZhbHVlICsgJyAoJyArIHRvdGFsQ291bnRzICsgJyknO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFeHBhbnNpb25TdGF0ZShyb3c6IE9UYWJsZUdyb3VwZWRSb3cpOiBib29sZWFuIHtcbiAgICBsZXQgZXhwYW5zaW9uU3RhdGUgPSAhcGFyZW50IHx8ICF0aGlzLnRhYmxlLmNvbGxhcHNlR3JvdXBlZENvbHVtbnM7XG4gICAgaWYgKHJvdy5leHBhbmRTYW1lTGV2ZWwodGhpcy50YWJsZS5leHBhbmRHcm91cHNTYW1lTGV2ZWwpKSB7XG4gICAgICBleHBhbnNpb25TdGF0ZSA9IHRoaXMubGV2ZWxzRXhwYW5zaW9uU3RhdGUuaGFzT3duUHJvcGVydHkocm93LmxldmVsKSA/IHRoaXMubGV2ZWxzRXhwYW5zaW9uU3RhdGVbcm93LmxldmVsXSA6IGV4cGFuc2lvblN0YXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByb3dHcm91cCA9IHRoaXMuZ3JvdXBlZFJvd1N0YXRlLmZpbmQoeCA9PiB4LmtleXNBc1N0cmluZyA9PT0gcm93LmtleXNBc1N0cmluZyAmJiBKU09OLnN0cmluZ2lmeSh4LnBhcmVudCkgPT09IEpTT04uc3RyaW5naWZ5KHJvdy5wYXJlbnQpKTtcbiAgICAgIGV4cGFuc2lvblN0YXRlID0gcm93R3JvdXAgPyByb3dHcm91cC5leHBhbmRlZCA6IGV4cGFuc2lvblN0YXRlO1xuICAgIH1cbiAgICByZXR1cm4gZXhwYW5zaW9uU3RhdGU7XG4gIH1cbn1cblxuXG5cbiJdfQ==
|
|
714
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1vLXRhYmxlLmRhdGFzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL2RlZmF1bHQtby10YWJsZS5kYXRhc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTNELE9BQU8sRUFBRSx5QkFBeUIsRUFBc0IsTUFBTSxpREFBaUQsQ0FBQztBQUNoSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSTFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBR2pFLE1BQU0sT0FBTywwQkFBMEI7SUFHckMsWUFBWSxJQUFlO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3BCLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxVQUFlO0lBRzFELElBQUksSUFBSSxLQUFZLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFxQnpELElBQUksV0FBVyxLQUFhLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLElBQUksV0FBVyxDQUFDLE1BQWM7UUFD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LE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2UsIExpc3RSYW5nZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFBhZ2luYXRvciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3BhZ2luYXRvcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE9UYWJsZURhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL28tdGFibGUtZGF0YXNvdXJjZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT1RhYmxlT3B0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvby10YWJsZS1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLCBPQ29sdW1uVmFsdWVGaWx0ZXIgfSBmcm9tICcuLi8uLi8uLi90eXBlcy90YWJsZS9vLWNvbHVtbi12YWx1ZS1maWx0ZXIudHlwZSc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgdHlwZSB7IE9Db2x1bW4gfSBmcm9tICcuLi9jb2x1bW4vby1jb2x1bW4uY2xhc3MnO1xuaW1wb3J0IHsgT1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi4vby10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgT1RhYmxlRGFvIH0gZnJvbSAnLi9vLXRhYmxlLmRhbyc7XG5pbXBvcnQgeyBPVGFibGVHcm91cGVkUm93IH0gZnJvbSAnLi9yb3cvby10YWJsZS1yb3ctZ3JvdXAuY2xhc3MnO1xuaW1wb3J0IHsgT01hdFNvcnQgfSBmcm9tICcuL3NvcnQvby1tYXQtc29ydCc7XG5cbmV4cG9ydCBjbGFzcyBPblJhbmdlQ2hhbmdlVmlydHVhbFNjcm9sbCB7XG4gIHB1YmxpYyByYW5nZTogTGlzdFJhbmdlO1xuXG4gIGNvbnN0cnVjdG9yKGRhdGE6IExpc3RSYW5nZSkge1xuICAgIHRoaXMucmFuZ2UgPSBkYXRhO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZWZhdWx0T1RhYmxlRGF0YVNvdXJjZSBleHRlbmRzIERhdGFTb3VyY2U8YW55PiBpbXBsZW1lbnRzIE9UYWJsZURhdGFTb3VyY2Uge1xuICBkYXRhVG90YWxzQ2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pO1xuXG4gIGdldCBkYXRhKCk6IGFueVtdIHsgcmV0dXJuIHRoaXMuZGF0YVRvdGFsc0NoYW5nZS52YWx1ZTsgfVxuXG4gIHByb3RlY3RlZCBfZGF0YWJhc2U6IE9UYWJsZURhbztcbiAgcHJvdGVjdGVkIF9wYWdpbmF0b3I6IE1hdFBhZ2luYXRvcjtcbiAgcHJvdGVjdGVkIF90YWJsZU9wdGlvbnM6IE9UYWJsZU9wdGlvbnM7XG4gIHByb3RlY3RlZCBfc29ydDogT01hdFNvcnQ7XG5cbiAgcHJvdGVjdGVkIF92aXJ0dWFsUGFnZUNoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8T25SYW5nZUNoYW5nZVZpcnR1YWxTY3JvbGw+KG5ldyBPblJhbmdlQ2hhbmdlVmlydHVhbFNjcm9sbCh7IHN0YXJ0OiAwLCBlbmQ6IDAgfSkpO1xuICBwcm90ZWN0ZWQgX3F1aWNrRmlsdGVyQ2hhbmdlID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG4gIHByb3RlY3RlZCBfY29sdW1uVmFsdWVGaWx0ZXJDaGFuZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuICBwcm90ZWN0ZWQgZ3JvdXBCeUNvbHVtbkNoYW5nZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+O1xuXG4gIHByb3RlY3RlZCBmaWx0ZXJlZERhdGE6IGFueVtdID0gW107XG4gIHByb3RlY3RlZCBhZ2dyZWdhdGVEYXRhOiBhbnkgPSB7fTtcblxuICBvblJlbmRlcmVkRGF0YUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuXG4gIHByb3RlY3RlZCBfcmVuZGVyZWREYXRhOiBhbnlbXSA9IFtdO1xuICByZXN1bHRzTGVuZ3RoOiBudW1iZXIgPSAwO1xuXG4gIGdldCBxdWlja0ZpbHRlcigpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fcXVpY2tGaWx0ZXJDaGFuZ2UudmFsdWUgfHwgJyc7IH1cbiAgc2V0IHF1aWNrRmlsdGVyKGZpbHRlcjogc3RyaW5nKSB7XG4gICAgdGhpcy5fcXVpY2tGaWx0ZXJDaGFuZ2UubmV4dChmaWx0ZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb2x1bW5WYWx1ZUZpbHRlcnM6IEFycmF5PE9Db2x1bW5WYWx1ZUZpbHRlcj4gPSBbXTtcbiAgcHJpdmF0ZSBncm91cGVkUm93U3RhdGU6IE9UYWJsZUdyb3VwZWRSb3dbXSA9IFtdO1xuICBwcml2YXRlIGFjdGl2ZUFnZ3JlZ2F0ZXMgPSB7fTtcbiAgcHJpdmF0ZSBncm91cGVkUm93c1N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSBsZXZlbHNFeHBhbnNpb25TdGF0ZSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB0YWJsZTogT1RhYmxlQ29tcG9uZW50KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9kYXRhYmFzZSA9IHRhYmxlLmRhb1RhYmxlO1xuICAgIGlmICh0aGlzLl9kYXRhYmFzZSkge1xuICAgICAgdGhpcy5yZXN1bHRzTGVuZ3RoID0gdGhpcy5fZGF0YWJhc2UuZGF0YS5sZW5ndGg7XG4gICAgfVxuICAgIGlmICh0YWJsZS5wYWdpbmF0b3IpIHtcbiAgICAgIHRoaXMuX3BhZ2luYXRvciA9IHRhYmxlLm1hdHBhZ2luYXRvcjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YWJsZS52aXJ0dWFsU2Nyb2xsVmlld3BvcnQpIHtcbiAgICAgIHRoaXMudGFibGUudmlydHVhbFNjcm9sbFZpZXdwb3J0LnJlbmRlcmVkUmFuZ2VTdHJlYW1cbiAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAodmFsdWU6IExpc3RSYW5nZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdmlydHVhbFBhZ2VDaGFuZ2UubmV4dChuZXcgT25SYW5nZUNoYW5nZVZpcnR1YWxTY3JvbGwodmFsdWUpKTtcbiAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl90YWJsZU9wdGlvbnMgPSB0YWJsZS5vVGFibGVPcHRpb25zO1xuICAgIHRoaXMuX3NvcnQgPSB0YWJsZS5zb3J0O1xuXG4gIH1cblxuICBzb3J0RnVuY3Rpb24oYTogYW55LCBiOiBhbnkpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zb3J0LnNvcnRGdW5jdGlvbihhLCBiKTtcbiAgfVxuXG4gIGdldCByZW5kZXJlZERhdGEoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLl9yZW5kZXJlZERhdGE7XG4gIH1cblxuICBzZXQgcmVuZGVyZWREYXRhKGFyZzogYW55W10pIHtcbiAgICB0aGlzLl9yZW5kZXJlZERhdGEgPSBhcmc7XG4gICAgdGhpcy5vblJlbmRlcmVkRGF0YUNoYW5nZS5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogQ29ubmVjdCBmdW5jdGlvbiBjYWxsZWQgYnkgdGhlIHRhYmxlIHRvIHJldHJpZXZlIG9uZSBzdHJlYW0gY29udGFpbmluZyB0aGUgZGF0YSB0byByZW5kZXIuXG4gICAqL1xuICBjb25uZWN0KCk6IE9ic2VydmFibGU8YW55W10+IHtcbiAgICBjb25zdCBkaXNwbGF5RGF0YUNoYW5nZXM6IGFueVtdID0gW1xuICAgICAgdGhpcy5fZGF0YWJhc2UuZGF0YUNoYW5nZVxuICAgIF07XG5cbiAgICBpZiAoIXRoaXMudGFibGUucGFnZWFibGUpIHtcblxuXG4gICAgICBpZiAodGhpcy5fc29ydCkge1xuICAgICAgICBkaXNwbGF5RGF0YUNoYW5nZXMucHVzaCh0aGlzLl9zb3J0Lm9Tb3J0Q2hhbmdlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX3RhYmxlT3B0aW9ucy5maWx0ZXIpIHtcbiAgICAgICAgZGlzcGxheURhdGFDaGFuZ2VzLnB1c2godGhpcy5fcXVpY2tGaWx0ZXJDaGFuZ2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fcGFnaW5hdG9yKSB7XG4gICAgICAgIGRpc3BsYXlEYXRhQ2hhbmdlcy5wdXNoKHRoaXMuX3BhZ2luYXRvci5wYWdlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy50YWJsZS52aXJ0dWFsU2Nyb2xsVmlld3BvcnQpIHtcbiAgICAgIGRpc3BsYXlEYXRhQ2hhbmdlcy5wdXNoKHRoaXMuX3ZpcnR1YWxQYWdlQ2hhbmdlKTtcbiAgICB9XG5cbiAgICBkaXNwbGF5RGF0YUNoYW5nZXMucHVzaCh0aGlzLl9jb2x1bW5WYWx1ZUZpbHRlckNoYW5nZSk7XG5cbiAgICBpZiAodGhpcy50YWJsZS5ncm91cGFibGUpIHtcbiAgICAgIGRpc3BsYXlEYXRhQ2hhbmdlcy5wdXNoKHRoaXMuZ3JvdXBCeUNvbHVtbkNoYW5nZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1lcmdlKC4uLmRpc3BsYXlEYXRhQ2hhbmdlcykucGlwZShcbiAgICAgIG1hcCgoeDogYW55KSA9PiB7XG4gICAgICAgIGxldCBkYXRhID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5fZGF0YWJhc2UuZGF0YSk7XG5cbiAgICAgICAgaWYgKHggaW5zdGFuY2VvZiBPblJhbmdlQ2hhbmdlVmlydHVhbFNjcm9sbCkge1xuICAgICAgICAgIC8vIHJlbmRlciBzdWJzZXQgKHJhbmdlKSBvZiByZW5kZXJlZERhdGEgd2hlbiBuZXcgT25SYW5nZUNoYW5nZVZpcnR1YWxTY3JvbGwgZXZlbnQgaXMgZW1pdHRlZFxuICAgICAgICAgIGRhdGEgPSB0aGlzLmdldFZpcnR1YWxTY3JvbGxEYXRhKHRoaXMucmVuZGVyZWREYXRhLCB4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvKlxuICAgICAgICAgICAgaXQgaXMgbmVjZXNzYXJ5IHRvIGZpcnN0IGNhbGN1bGF0ZSB0aGUgY2FsY3VsYXRlZCBjb2x1bW5zIGFuZFxuICAgICAgICAgICAgdGhlbiBmaWx0ZXIgYW5kIHNvcnQgdGhlIGRhdGFcbiAgICAgICAgICAqL1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGEpICYmIGRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZXhpc3RzQW55Q2FsY3VsYXRlZENvbHVtbigpKSB7XG4gICAgICAgICAgICAgIGRhdGEgPSB0aGlzLmdldENvbHVtbkNhbGN1bGF0ZWREYXRhKGRhdGEpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXRoaXMudGFibGUucGFnZWFibGUpIHtcbiAgICAgICAgICAgICAgZGF0YSA9IHRoaXMuZ2V0Q29sdW1uVmFsdWVGaWx0ZXJEYXRhKGRhdGEpO1xuICAgICAgICAgICAgICBkYXRhID0gdGhpcy5nZXRRdWlja0ZpbHRlckRhdGEoZGF0YSk7XG4gICAgICAgICAgICAgIGRhdGEgPSB0aGlzLmdldFNvcnRlZERhdGEoZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gT2JqZWN0LmFzc2lnbihbXSwgZGF0YSk7XG5cbiAgICAgICAgICBpZiAodGhpcy50YWJsZS5wYWdlYWJsZSkge1xuICAgICAgICAgICAgY29uc3QgdG90YWxSZWNvcmRzTnVtYmVyID0gdGhpcy50YWJsZS5nZXRUb3RhbFJlY29yZHNOdW1iZXIoKTtcbiAgICAgICAgICAgIHRoaXMucmVzdWx0c0xlbmd0aCA9IHRvdGFsUmVjb3Jkc051bWJlciAhPT0gdW5kZWZpbmVkID8gdG90YWxSZWNvcmRzTnVtYmVyIDogZGF0YS5sZW5ndGg7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVzdWx0c0xlbmd0aCA9IGRhdGEubGVuZ3RoO1xuICAgICAgICAgICAgZGF0YSA9IHRoaXMuZ2V0UGFnaW5hdGlvbkRhdGEoZGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLnRhYmxlLmdyb3VwYWJsZSAmJiAhVXRpbC5pc0FycmF5RW1wdHkodGhpcy50YWJsZS5ncm91cGVkQ29sdW1uc0FycmF5KSAmJiBkYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGRhdGEgPSB0aGlzLmdldEdyb3VwZWREYXRhKGRhdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMucmVuZGVyZWREYXRhID0gZGF0YTtcblxuICAgICAgICAgIC8qXG4gICAgICAgICAgICB3aGVuIHRoZSBkYXRhIGlzIHZlcnkgbGFyZ2UsIHRoZSBhcHBsaWNhdGlvbiBjcmFzaGVzIHNvIGl0IGdldHMgYSBsaW1pdGVkIHJhbmdlIG9mIGRhdGEgdGhlIGZpcnN0IHRpbWVcbiAgICAgICAgICAgIGJlY2F1c2UgYXQgbmV4dCB0aGUgQ3VzdG9tVmlydHVhbFNjcm9sbFN0cmF0ZWd5IHdpbGwgZW1pdCBldmVudCBPblJhbmdlQ2hhbmdlVmlydHVhbFNjcm9sbFxuICAgICAgICAgICovXG4gICAgICAgICAgaWYgKHRoaXMudGFibGUudmlydHVhbFNjcm9sbFZpZXdwb3J0ICYmICF0aGlzLl9wYWdpbmF0b3IpIHtcbiAgICAgICAgICAgIGRhdGEgPSB0aGlzLmdldFZpcnR1YWxTY3JvbGxEYXRhKGRhdGEsIG5ldyBPblJhbmdlQ2hhbmdlVmlydHVhbFNjcm9sbCh7IHN0YXJ0OiAwLCBlbmQ6IENvZGVzLkxJTUlUX1NDUk9MTFZJUlRVQUwgfSkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuYWdncmVnYXRlRGF0YSA9IHRoaXMuZ2V0QWdncmVnYXRlc0RhdGEodGhpcy5yZW5kZXJlZERhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICB9KSk7XG4gIH1cblxuICBnZXRHcm91cGVkRGF0YShkYXRhOiBhbnlbXSkge1xuICAgIGRhdGEgPSB0aGlzLmdldFN1Ykdyb3Vwc09mR3JvdXBlZFJvdyhkYXRhKTtcbiAgICAvKiogZGF0YSBjb250YWlucyByb3cgZ3JvdXAgaGVhZGVycyAoT1RhYmxlR3JvdXBlZFJvdykgYW5kIHRoZSBkYXRhIGJlbG9uZ2luZyB0byBleHBhbmRlZCBncm91cGVkIHJvd3MgKi9cbiAgICBkYXRhID0gdGhpcy5maWx0ZXJDb2xsYXBzZWRSb3dHcm91cChkYXRhKTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHN1Ymdyb3VwcyBvZiBncm91cGVkIHJvd1xuICAgKiBAcGFyYW0gZGF0YVxuICAgKiBAcmV0dXJucyBzdWJncm91cHMgb2YgZ3JvdXBlZCByb3dcbiAgICovXG4gIGdldFN1Ykdyb3Vwc09mR3JvdXBlZFJvdyhkYXRhOiBhbnlbXSk6IGFueVtdIHtcbiAgICByZXR1cm4gZGF0YSA9IHRoaXMuZ2V0U3VibGV2ZWwoZGF0YSwgMCk7XG4gIH1cblxuICBnZXRBZ2dyZWdhdGVzRGF0YShkYXRhOiBhbnlbXSk6IGFueSB7XG4gICAgY29uc3Qgb2JqID0ge307XG5cbiAgICBpZiAodHlwZW9mIHRoaXMuX3RhYmxlT3B0aW9ucyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuXG4gICAgdGhpcy5fdGFibGVPcHRpb25zLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uOiBPQ29sdW1uKSA9PiB7XG4gICAgICBsZXQgdG90YWxWYWx1ZSA9ICcnO1xuICAgICAgaWYgKGNvbHVtbi5hZ2dyZWdhdGUgJiYgY29sdW1uLnZpc2libGUpIHtcbiAgICAgICAgdG90YWxWYWx1ZSA9IHRoaXMuY2FsY3VsYXRlQWdncmVnYXRlKGRhdGEsIGNvbHVtbi5hdHRyLCBjb2x1bW4uYWdncmVnYXRlLm9wZXJhdG9yKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGtleSA9IGNvbHVtbi5hdHRyO1xuICAgICAgb2JqW2tleV0gPSB0b3RhbFZhbHVlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdGhhdCBnZXQgdmFsdWUgdGhlIGNvbHVtbnMgY2FsY3VsYXRlZFxuICAgKiBAcGFyYW0gZGF0YSBkYXRhIG9mIHRoZSBkYXRhYmFzZVxuICAgKi9cbiAgZ2V0Q29sdW1uQ2FsY3VsYXRlZERhdGEoZGF0YTogYW55W10pOiBhbnlbXSB7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29uc3QgY2FsY3VsYXRlZENvbHMgPSB0aGlzLl90YWJsZU9wdGlvbnMuY29sdW1ucy5maWx0ZXIoKG9Db2w6IE9Db2x1bW4pID0+IG9Db2wudmlzaWJsZSAmJiBvQ29sLmNhbGN1bGF0ZSAhPT0gdW5kZWZpbmVkKTtcbiAgICByZXR1cm4gZGF0YS5tYXAoKHJvdzogYW55KSA9PiB7XG4gICAgICBjYWxjdWxhdGVkQ29scy5mb3JFYWNoKChvQ29sdW1uOiBPQ29sdW1uKSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiBvQ29sdW1uLmNhbGN1bGF0ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB2YWx1ZSA9IHNlbGYudHJhbnNmb3JtRm9ybXVsYShvQ29sdW1uLmNhbGN1bGF0ZSwgcm93KTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygb0NvbHVtbi5jYWxjdWxhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICB2YWx1ZSA9IG9Db2x1bW4uY2FsY3VsYXRlKHJvdyk7XG4gICAgICAgIH1cbiAgICAgICAgcm93W29Db2x1bW4uYXR0cl0gPSBpc05hTih2YWx1ZSkgPyAwIDogdmFsdWU7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByb3c7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdHJhbnNmb3JtRm9ybXVsYShmb3JtdWxhQXJnLCByb3cpOiBzdHJpbmcge1xuICAgIGxldCBmb3JtdWxhID0gZm9ybXVsYUFyZztcbiAgICAvLyAxLiByZXBsYWNlIGNvbHVtbnMgYnkgdmFsdWVzIG9mIHJvd1xuICAgIGNvbnN0IGNvbHVtbnNBdHRyID0gdGhpcy5fdGFibGVPcHRpb25zLmNvbHVtbnMubWFwKChvQ29sOiBPQ29sdW1uKSA9PiBvQ29sLmF0dHIpO1xuICAgIGNvbHVtbnNBdHRyLmZvckVhY2goKGNvbHVtbjogc3RyaW5nKSA9PiB7XG4gICAgICBmb3JtdWxhID0gZm9ybXVsYS5yZXBsYWNlKGNvbHVtbiwgcm93W2NvbHVtbl0pO1xuICAgIH0pO1xuXG4gICAgbGV0IHJlc3VsdEZvcm11bGEgPSAnJztcbiAgICAvLyAyLiBUcmFuc2Zvcm0gZm9ybXVsYVxuICAgIHRyeSB7XG4gICAgICByZXN1bHRGb3JtdWxhID0gKG5ldyBGdW5jdGlvbigncmV0dXJuICcgKyBmb3JtdWxhKSkoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdPcGVyYXRpb24gZGVmaW5lZCBpbiB0aGUgY2FsY3VsYXRlZCBjb2x1bW4gaXMgaW5jb3JyZWN0ICcpO1xuICAgIH1cbiAgICAvLyAzLiBSZXR1cm4gcmVzdWx0XG4gICAgcmV0dXJuIHJlc3VsdEZvcm11bGE7XG4gIH1cblxuICBnZXRRdWlja0ZpbHRlckRhdGEoZGF0YTogYW55W10pOiBhbnlbXSB7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMucXVpY2tGaWx0ZXIpICYmIHRoaXMucXVpY2tGaWx0ZXIubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVyRGF0YSA9ICF0aGlzLl90YWJsZU9wdGlvbnMuZmlsdGVyQ2FzZVNlbnNpdGl2ZSA/IHRoaXMucXVpY2tGaWx0ZXIudG9Mb3dlckNhc2UoKSA6IHRoaXMucXVpY2tGaWx0ZXI7XG4gICAgICByZXR1cm4gZGF0YS5maWx0ZXIoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICAvLyBHZXR0aW5nIGN1c3RvbSBjb2x1bW5zIGZpbHRlciBjb2x1bW5zIHJlc3VsdFxuICAgICAgICBjb25zdCBwYXNzQ3VzdG9tRmlsdGVyID0gdGhpcy5mdWxmaWxsc0N1c3RvbUZpbHRlckZ1bmN0aW9ucyhmaWx0ZXJEYXRhLCBpdGVtKTtcbiAgICAgICAgLy8gR2V0dGluZyBvdGhlciBzZWFyY2hhYmxlIGNvbHVtbnMgc3RhbmRhcmQgcmVzdWx0XG4gICAgICAgIGNvbnN0IHBhc3NTZWFyY2hTdHJpbmcgPSB0aGlzLmZ1bGZpbGxzUXVpY2tmaWx0ZXIoZmlsdGVyRGF0YSwgaXRlbSk7XG4gICAgICAgIHJldHVybiBwYXNzQ3VzdG9tRmlsdGVyIHx8IHBhc3NTZWFyY2hTdHJpbmc7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICB9XG5cbiAgZ2V0UGFnaW5hdGlvbkRhdGEoZGF0YTogYW55W10pOiBhbnlbXSB7XG4gICAgaWYgKCF0aGlzLl9wYWdpbmF0b3IgfHwgaXNOYU4odGhpcy5fcGFnaW5hdG9yLnBhZ2VTaXplKSkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGxldCBzdGFydEluZGV4ID0gaXNOYU4odGhpcy5fcGFnaW5hdG9yLnBhZ2VTaXplKSA/IDAgOiB0aGlzLl9wYWdpbmF0b3IucGFnZUluZGV4ICogdGhpcy5fcGFnaW5hdG9yLnBhZ2VTaXplO1xuICAgIGlmIChkYXRhLmxlbmd0aCA+IDAgJiYgZGF0YS5sZW5ndGggPCBzdGFydEluZGV4KSB7XG4gICAgICBzdGFydEluZGV4ID0gMDtcbiAgICAgIHRoaXMuX3BhZ2luYXRvci5wYWdlSW5kZXggPSAwO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YS5zcGxpY2Uoc3RhcnRJbmRleCwgdGhpcy5fcGFnaW5hdG9yLnBhZ2VTaXplKTtcbiAgfVxuXG4gIGdldFZpcnR1YWxTY3JvbGxEYXRhKGRhdGE6IGFueVtdLCB4OiBPblJhbmdlQ2hhbmdlVmlydHVhbFNjcm9sbCk6IGFueVtdIHtcbiAgICByZXR1cm4gZGF0YS5zbGljZSh4LnJhbmdlLnN0YXJ0LCB4LnJhbmdlLmVuZClcbiAgfVxuXG4gIGRpc2Nvbm5lY3QoKSB7XG4gICAgdGhpcy5kYXRhVG90YWxzQ2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fcXVpY2tGaWx0ZXJDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLl9jb2x1bW5WYWx1ZUZpbHRlckNoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuZ3JvdXBCeUNvbHVtbkNoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuX3ZpcnR1YWxQYWdlQ2hhbmdlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZnVsZmlsbHNDdXN0b21GaWx0ZXJGdW5jdGlvbnMoZmlsdGVyOiBzdHJpbmcsIGl0ZW06IGFueSkge1xuICAgIGNvbnN0IGN1c3RvbUZpbHRlckNvbHMgPSB0aGlzLnRhYmxlLm9UYWJsZU9wdGlvbnMuY29sdW1ucy5maWx0ZXIob0NvbCA9PiBvQ29sLnVzZUN1c3RvbUZpbHRlckZ1bmN0aW9uKCkpO1xuICAgIHJldHVybiBjdXN0b21GaWx0ZXJDb2xzLnNvbWUob0NvbCA9PiBvQ29sLnJlbmRlcmVyLmZpbHRlckZ1bmN0aW9uKGl0ZW1bb0NvbC5hdHRyXSwgaXRlbSwgZmlsdGVyKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZnVsZmlsbHNRdWlja2ZpbHRlcihmaWx0ZXI6IHN0cmluZywgaXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMuX3RhYmxlT3B0aW9ucy5jb2x1bW5zLmZpbHRlcigob0NvbDogT0NvbHVtbikgPT4gb0NvbC51c2VRdWlja2ZpbHRlckZ1bmN0aW9uKCkpO1xuICAgIGxldCBzZWFyY2hTdHIgPSBjb2x1bW5zLm1hcCgob0NvbDogT0NvbHVtbikgPT4gb0NvbC5nZXRGaWx0ZXJWYWx1ZShpdGVtW29Db2wuYXR0cl0sIGl0ZW0pLmpvaW4oJyAnKSkuam9pbignICcpO1xuICAgIGlmICghdGhpcy5fdGFibGVPcHRpb25zLmZpbHRlckNhc2VTZW5zaXRpdmUpIHtcbiAgICAgIHNlYXJjaFN0ciA9IHNlYXJjaFN0ci50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICByZXR1cm4gc2VhcmNoU3RyLmluZGV4T2YoZmlsdGVyKSAhPT0gLTE7XG4gIH1cblxuICAvKiogUmV0dXJucyBhIHNvcnRlZCBjb3B5IG9mIHRoZSBkYXRhYmFzZSBkYXRhLiAqL1xuICBwcm90ZWN0ZWQgZ2V0U29ydGVkRGF0YShkYXRhOiBhbnlbXSk6IGFueVtdIHtcbiAgICBpZiAoIXRoaXMuX3NvcnQpIHJldHVybiBkYXRhO1xuICAgIGNvbnN0IHJlbmRlcmVyRGF0YSA9IHRoaXMuZ2V0RGF0YVRvU29ydChkYXRhKTtcbiAgICBjb25zdCBzb3J0ZWREYXRhID0gdGhpcy5fc29ydC5nZXRTb3J0ZWREYXRhKHJlbmRlcmVyRGF0YSk7XG5cbiAgICBjb25zdCB0YWJsZUtleXMgPSB0aGlzLnRhYmxlLmdldEtleXMoKTtcbiAgICBjb25zdCBvcmlnaW5hbERhdGFTb3J0ZWQgPSBbXTtcblxuICAgIHNvcnRlZERhdGEuZm9yRWFjaChzb3J0ZWRFbGVtZW50ID0+IHtcbiAgICAgIGNvbnN0IGtleXNWYWx1ZXNJblNvcnREYXRhID0gdGFibGVLZXlzLm1hcChlbGVtZW50ID0+IHNvcnRlZEVsZW1lbnRbZWxlbWVudF0pO1xuXG4gICAgICBsZXQgaSA9IDA7XG4gICAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICAgIHdoaWxlIChpIDwgZGF0YS5sZW5ndGggJiYgIWZvdW5kKSB7XG4gICAgICAgIGNvbnN0IGtleXNWYWx1ZXNJbkRhdGEgPSB0YWJsZUtleXMubWFwKGVsZW1lbnQgPT4gZGF0YVtpXVtlbGVtZW50XSk7XG4gICAgICAgIGlmIChVdGlsLmlzQXJyYXlFcXVhbChrZXlzVmFsdWVzSW5Tb3J0RGF0YSwga2V5c1ZhbHVlc0luRGF0YSkpIHtcbiAgICAgICAgICBvcmlnaW5hbERhdGFTb3J0ZWQucHVzaChkYXRhW2ldKTtcbiAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaSsrO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMudGFibGUudXBkYXRlU29ydGluZ1N1YmplY3QoZmFsc2UpO1xuICAgIHJldHVybiBvcmlnaW5hbERhdGFTb3J0ZWQ7XG5cbiAgfVxuXG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGRhdGEgdGhlIHRhYmxlIHN0b3Jlcy4gTm8gZmlsdGVycyBhcmUgYXBwbGllZC5cbiAgICovXG4gIGdldFRhYmxlRGF0YSgpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFiYXNlLmRhdGE7XG4gIH1cblxuICAvKiogUmV0dXJuIGRhdGEgb2YgdGhlIHZpc2libGUgY29sdW1ucyBvZiB0aGUgdGFibGUgd2l0aG91dCByZW5kZXJpbmcgKi9cbiAgZ2V0Q3VycmVudERhdGEoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLmdldERhdGEoKTtcbiAgfVxuXG4gIGdldEN1cnJlbnRBbGxEYXRhKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBbGxEYXRhKGZhbHNlLCBmYWxzZSk7XG4gIH1cblxuICAvKiogUmV0dXJuIGRhdGEgb2YgdGhlIHZpc2libGUgY29sdW1ucyBvZiB0aGUgdGFibGUgIHJlbmRlcmluZyAqL1xuICBnZXRDdXJyZW50UmVuZGVyZXJEYXRhKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZW5kZXJlZERhdGEodGhpcy5yZW5kZXJlZERhdGEpO1xuICB9XG5cbiAgLyoqIFJldHVybiBhbGwgZGF0YSBvZiB0aGUgdGFibGUgcmVuZGVyaW5nICovXG4gIGdldEFsbFJlbmRlcmVyRGF0YSgpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0QWxsRGF0YSh0cnVlLCB0cnVlKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm4gc3FsIHR5cGVzIG9mIHRoZSBjdXJyZW50IGRhdGEgKi9cbiAgZ2V0IHNxbFR5cGVzKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFiYXNlLnNxbFR5cGVzO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldERhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVuZGVyZWREYXRhO1xuICB9XG5cbiAgcHVibGljIGdldFJlbmRlcmVkRGF0YShkYXRhOiBhbnlbXSk6IGFueVtdIHtcbiAgICBjb25zdCB2aXNpYmxlQ29sdW1ucyA9IHRoaXMuX3RhYmxlT3B0aW9ucy5jb2x1bW5zLmZpbHRlcihvQ29sID0+IG9Db2wudmlzaWJsZSk7XG4gICAgcmV0dXJuIGRhdGEubWFwKChyb3cpID0+IHtcbiAgICAgIGNvbnN0IG9iaiA9IHt9O1xuICAgICAgdmlzaWJsZUNvbHVtbnMuZm9yRWFjaCgob0NvbDogT0NvbHVtbikgPT4ge1xuICAgICAgICBjb25zdCB1c2VSZW5kZXJlciA9IG9Db2wucmVuZGVyZXIgJiYgb0NvbC5yZW5kZXJlci5nZXRDZWxsRGF0YTtcbiAgICAgICAgb2JqW29Db2wuYXR0cl0gPSB1c2VSZW5kZXJlciA/IG9Db2wucmVuZGVyZXIuZ2V0Q2VsbERhdGEocm93W29Db2wuYXR0cl0sIHJvdykgOiByb3dbb0NvbC5hdHRyXTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9KTtcbiAgfVxuICBwdWJsaWMgZ2V0RGF0YVRvU29ydChkYXRhOiBhbnlbXSk6IGFueVtdIHtcbiAgICBpZiAoIXRoaXMuX3NvcnQpIHJldHVybiBkYXRhO1xuICAgIGNvbnN0IHNvcnRDb2x1bW5zID0gdGhpcy5fdGFibGVPcHRpb25zLmNvbHVtbnMuZmlsdGVyKG9Db2wgPT4gb0NvbC52aXNpYmxlICYmIHRoaXMuX3NvcnQuYWN0aXZlQXJyYXkubWFwKHggPT4geC5pZCkuaW5kZXhPZihvQ29sLmF0dHIpID4gLTEpO1xuICAgIGNvbnN0IGV4aXN0Q29sdW1uVG9UcmFzZm9ybVRvU29ydCA9IHNvcnRDb2x1bW5zLmZpbHRlcigob0NvbDogT0NvbHVtbikgPT4gKG9Db2wudHlwZSA9PT0gJ3RyYW5zbGF0ZScgfHwgb0NvbC50eXBlID09PSAnc2VydmljZScpKS5sZW5ndGggPiAwO1xuICAgIGlmICghZXhpc3RDb2x1bW5Ub1RyYXNmb3JtVG9Tb3J0KSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gICAgdGhpcy50YWJsZS5nZXRLZXlzKCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgc29ydENvbHVtbnMucHVzaCh0aGlzLnRhYmxlLmdldE9Db2x1bW4oa2V5KSk7XG4gICAgfSlcblxuICAgIHJldHVybiBkYXRhLm1hcCgocm93KSA9PiB7XG4gICAgICBjb25zdCBvYmogPSB7fTtcbiAgICAgIHNvcnRDb2x1bW5zLmZvckVhY2goKG9Db2w6IE9Db2x1bW4pID0+IHtcbiAgICAgICAgY29uc3QgdXNlUmVuZGVyZXIgPSBvQ29sLnJlbmRlcmVyICYmIChvQ29sLnR5cGUgPT09ICd0cmFuc2xhdGUnIHx8IG9Db2wudHlwZSA9PT0gJ3NlcnZpY2UnKSAmJiBvQ29sLnJlbmRlcmVyLmdldENlbGxEYXRhO1xuICAgICAgICBvYmpbb0NvbC5hdHRyXSA9IHVzZVJlbmRlcmVyID8gb0NvbC5yZW5kZXJlci5nZXRDZWxsRGF0YShyb3dbb0NvbC5hdHRyXSwgcm93KSA6IHJvd1tvQ29sLmF0dHJdO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEFsbERhdGEodXNpbmdSZW5kZXJlcmVycz86IGJvb2xlYW4sIG9ubHlWaXNpYmxlQ29sdW1ucz86IGJvb2xlYW4pIHtcbiAgICBsZXQgdGFibGVDb2x1bW5zID0gdGhpcy5fdGFibGVPcHRpb25zLmNvbHVtbnM7XG4gICAgaWYgKG9ubHlWaXNpYmxlQ29sdW1ucykge1xuICAgICAgdGFibGVDb2x1bW5zID0gdGhpcy5fdGFibGVPcHRpb25zLmNvbHVtbnMuZmlsdGVyKG9Db2wgPT4gb0NvbC52aXNpYmxlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyZWREYXRhLm1hcCgocm93KSA9PiB7XG4gICAgICBjb25zdCBvYmogPSB7fTtcbiAgICAgIHRhYmxlQ29sdW1ucy5mb3JFYWNoKChvQ29sOiBPQ29sdW1uKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZVJlbmRlcmVyID0gdXNpbmdSZW5kZXJlcmVycyAmJiBvQ29sLnJlbmRlcmVyICYmIG9Db2wucmVuZGVyZXIuZ2V0Q2VsbERhdGE7XG4gICAgICAgIG9ialtvQ29sLmF0dHJdID0gdXNlUmVuZGVyZXIgPyBvQ29sLnJlbmRlcmVyLmdldENlbGxEYXRhKHJvd1tvQ29sLmF0dHJdLCByb3cpIDogcm93W29Db2wuYXR0cl07XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFJlbmRlcmVyc0RhdGEoZGF0YTogYW55W10sIHRhYmxlQ29sdW1uczogT0NvbHVtbltdKTogYW55W10ge1xuICAgIHJldHVybiBkYXRhLm1hcCgocm93KSA9PiB7XG4gICAgICAvLyByZW5kZXIgZWFjaCBjb2x1bW5cbiAgICAgIGNvbnN0IG9iaiA9IE9iamVjdC5hc3NpZ24oe30sIHJvdyk7XG4gICAgICB0YWJsZUNvbHVtbnMuZm9yRWFjaCgob0NvbDogT0NvbHVtbikgPT4ge1xuICAgICAgICBvYmpbb0NvbC5hdHRyXSA9IG9Db2wucmVuZGVyZXIuZ2V0Q2VsbERhdGEocm93W29Db2wuYXR0cl0sIHJvdyk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29sdW1uRGF0YShvY29sdW1uOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5yZW5kZXJlZERhdGEubWFwKChyb3cpID0+IHtcbiAgICAgIC8vIHJlbmRlciBlYWNoIGNvbHVtblxuICAgICAgY29uc3Qgb2JqID0ge307XG4gICAgICBpZiAob2NvbHVtbikge1xuICAgICAgICBvYmpbb2NvbHVtbl0gPSByb3dbb2NvbHVtbl07XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0pO1xuICB9XG5cbiAgaW5pdGlhbGl6ZUNvbHVtbnNGaWx0ZXJzKGZpbHRlcnM6IE9Db2x1bW5WYWx1ZUZpbHRlcltdKSB7XG4gICAgdGhpcy5jb2x1bW5WYWx1ZUZpbHRlcnMgPSBbXTtcbiAgICBmaWx0ZXJzLmZvckVhY2goZmlsdGVyID0+IHtcbiAgICAgIHRoaXMuY29sdW1uVmFsdWVGaWx0ZXJzLnB1c2goZmlsdGVyKTtcbiAgICB9KTtcbiAgICBpZiAoIXRoaXMudGFibGUucGFnZWFibGUpIHtcbiAgICAgIHRoaXMuX2NvbHVtblZhbHVlRmlsdGVyQ2hhbmdlLm5leHQobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgaXNDb2x1bW5WYWx1ZUZpbHRlckFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5WYWx1ZUZpbHRlcnMubGVuZ3RoICE9PSAwO1xuICB9XG5cbiAgZ2V0Q29sdW1uVmFsdWVGaWx0ZXJzKCk6IE9Db2x1bW5WYWx1ZUZpbHRlcltdIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5WYWx1ZUZpbHRlcnM7XG4gIH1cblxuICBnZXRDb2x1bW5WYWx1ZUZpbHRlckJ5QXR0cihhdHRyOiBzdHJpbmcpOiBPQ29sdW1uVmFsdWVGaWx0ZXIge1xuICAgIHJldHVybiB0aGlzLmNvbHVtblZhbHVlRmlsdGVycy5maW5kKGl0ZW0gPT4gaXRlbS5hdHRyID09PSBhdHRyKTtcbiAgfVxuXG4gIGNsZWFyQ29sdW1uRmlsdGVycyh0cmlnZ2VyOiBib29sZWFuID0gdHJ1ZSwgY29sdW1uc0F0dHI/OiBzdHJpbmdbXSkge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChjb2x1bW5zQXR0cikpIHtcbiAgICAgIHRoaXMuY29sdW1uVmFsdWVGaWx0ZXJzID0gdGhpcy5jb2x1bW5WYWx1ZUZpbHRlcnMuZmlsdGVyKHggPT4gIWNvbHVtbnNBdHRyLmluY2x1ZGVzKHguYXR0cikpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbHVtblZhbHVlRmlsdGVycyA9IFtdO1xuICAgIH1cbiAgICBpZiAodHJpZ2dlcikge1xuICAgICAgdGhpcy5fY29sdW1uVmFsdWVGaWx0ZXJDaGFuZ2UubmV4dChudWxsKTtcbiAgICB9XG4gIH1cblxuICBjbGVhckNvbHVtbkZpbHRlcihhdHRyOiBzdHJpbmcsIHRyaWdnZXI6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgdGhpcy5jb2x1bW5WYWx1ZUZpbHRlcnMgPSB0aGlzLmNvbHVtblZhbHVlRmlsdGVycy5maWx0ZXIoeCA9PiB4LmF0dHIgIT09IGF0dHIpO1xuICAgIGlmICh0cmlnZ2VyKSB7XG4gICAgICB0aGlzLl9jb2x1bW5WYWx1ZUZpbHRlckNoYW5nZS5uZXh0KG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIGFkZENvbHVtbkZpbHRlcihmaWx0ZXI6IE9Db2x1bW5WYWx1ZUZpbHRlcikge1xuICAgIGNvbnN0IGV4aXN0aW5nRmlsdGVySW5kZXggPSB0aGlzLmNvbHVtblZhbHVlRmlsdGVycy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmF0dHIgPT09IGZpbHRlci5hdHRyKTtcbiAgICBpZiAoZXhpc3RpbmdGaWx0ZXJJbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLmNvbHVtblZhbHVlRmlsdGVycy5zcGxpY2UoZXhpc3RpbmdGaWx0ZXJJbmRleCwgMSwgZmlsdGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHZhbGlkRmlsdGVyID0gVXRpbC5pc0RlZmluZWQoZmlsdGVyLnZhbHVlcyk7XG4gICAgICBpZiAodmFsaWRGaWx0ZXIpIHtcbiAgICAgICAgc3dpdGNoIChmaWx0ZXIub3BlcmF0b3IpIHtcbiAgICAgICAgICBjYXNlIENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuSU46XG4gICAgICAgICAgICB2YWxpZEZpbHRlciA9IGZpbHRlci52YWx1ZXMubGVuZ3RoID4gMDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5CRVRXRUVOOlxuICAgICAgICAgICAgdmFsaWRGaWx0ZXIgPSBmaWx0ZXIudmFsdWVzLmxlbmd0aCA9PT0gMjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5FUVVBTDpcbiAgICAgICAgICBjYXNlIENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuTEVTU19FUVVBTDpcbiAgICAgICAgICBjYXNlIENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuTU9SRV9FUVVBTDpcbiAgICAgICAgICAgIHZhbGlkRmlsdGVyID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB2YWxpZEZpbHRlciA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWxpZEZpbHRlcikge1xuICAgICAgICAgIHRoaXMuY29sdW1uVmFsdWVGaWx0ZXJzLnB1c2goZmlsdGVyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBJZiB0aGUgdGFibGUgaXMgcGFnaW5hdGVkLCBmaWx0ZXIgd2lsbCBiZSBhcHBsaWVkIG9uIHJlbW90ZSBxdWVyeVxuICAgIGlmICghdGhpcy50YWJsZS5wYWdlYWJsZSkge1xuICAgICAgdGhpcy5fY29sdW1uVmFsdWVGaWx0ZXJDaGFuZ2UubmV4dChudWxsKTtcbiAgICB9XG4gIH1cblxuICBnZXRDb2x1bW5WYWx1ZUZpbHRlckRhdGEoZGF0YTogYW55W10pOiBhbnlbXSB7XG4gICAgdGhpcy5jb2x1bW5WYWx1ZUZpbHRlcnMuZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgICAgY29uc3QgZmlsdGVyQ29sdW1uID0gdGhpcy50YWJsZS5vVGFibGVPcHRpb25zLmNvbHVtbnMuZmluZChjb2wgPT4gY29sLmF0dHIgPT09IGZpbHRlci5hdHRyKTtcbiAgICAgIGlmIChmaWx0ZXJDb2x1bW4pIHtcbiAgICAgICAgc3dpdGNoIChmaWx0ZXIub3BlcmF0b3IpIHtcbiAgICAgICAgICBjYXNlIENvbHVtblZhbHVlRmlsdGVyT3BlcmF0b3IuSU46XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZXMgPSAoZmlsdGVyLnZhbHVlcyB8fCBbXSkucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT5cbiAgICAgICAgICAgICAgcHJldmlvdXMuY29uY2F0KGZpbHRlckNvbHVtbi5nZXRGaWx0ZXJWYWx1ZShjdXJyZW50KS5tYXAoZiA9PiBVdGlsLm5vcm1hbGl6ZVN0cmluZyhmKSkpLCBbXSk7XG5cbiAgICAgICAgICAgIGRhdGEgPSBkYXRhLmZpbHRlcigoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChmaWx0ZXJDb2x1bW4ucmVuZGVyZXIgJiYgZmlsdGVyQ29sdW1uLnJlbmRlcmVyLmZpbHRlckZ1bmN0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlckNvbHVtbi5yZW5kZXJlci5maWx0ZXJGdW5jdGlvbihpdGVtW2ZpbHRlci5hdHRyXSwgaXRlbSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29sVmFsdWVzID0gZmlsdGVyQ29sdW1uLmdldEZpbHRlclZhbHVlKGl0ZW1bZmlsdGVyLmF0dHJdLCBpdGVtKS5tYXAoZiA9PiBVdGlsLm5vcm1hbGl6ZVN0cmluZyhmKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlclZhbHVlcy5zb21lKHZhbHVlID0+IGNvbFZhbHVlcy5pbmRleE9mKHZhbHVlKSAhPT0gLTEpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5FUVVBTDpcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IFV0aWwubm9ybWFsaXplU3RyaW5nKGZpbHRlci52YWx1ZXMpO1xuICAgICAgICAgICAgZGF0YSA9IGRhdGEuZmlsdGVyKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICBjb25zdCBjb2xWYWx1ZXMgPSBmaWx0ZXJDb2x1bW4uZ2V0RmlsdGVyVmFsdWUoaXRlbVtmaWx0ZXIuYXR0cl0sIGl0ZW0pLm1hcChmID0+IFV0aWwubm9ybWFsaXplU3RyaW5nKGYpKTtcbiAgICAgICAgICAgICAgbGV0IHJlZ0V4cDtcbiAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRWYWx1ZS5pbmNsdWRlcygnKicpKSB7XG4gICAgICAgICAgICAgICAgcmVnRXhwID0gbmV3IFJlZ0V4cCgnXicgKyBub3JtYWxpemVkVmFsdWUuc3BsaXQoJyonKS5qb2luKCcuKicpICsgJyQnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gY29sVmFsdWVzLnNvbWUoY29sVmFsdWUgPT4gcmVnRXhwID8gcmVnRXhwLnRlc3QoY29sVmFsdWUpIDogY29sVmFsdWUudG9TdHJpbmcoKS5pbmNsdWRlcyhub3JtYWxpemVkVmFsdWUpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLkJFVFdFRU46XG4gICAgICAgICAgICBkYXRhID0gZGF0YS5maWx0ZXIoaXRlbSA9PiBpdGVtW2ZpbHRlci5hdHRyXSA+PSBmaWx0ZXIudmFsdWVzWzBdICYmIGl0ZW1bZmlsdGVyLmF0dHJdIDw9IGZpbHRlci52YWx1ZXNbMV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBDb2x1bW5WYWx1ZUZpbHRlck9wZXJhdG9yLk1PUkVfRVFVQUw6XG4gICAgICAgICAgICBkYXRhID0gZGF0YS5maWx0ZXIoaXRlbSA9PiBpdGVtW2ZpbHRlci5hdHRyXSA+PSBmaWx0ZXIudmFsdWVzKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgQ29sdW1uVmFsdWVGaWx0ZXJPcGVyYXRvci5MRVNTX0VRVUFMOlxuICAgICAgICAgICAgZGF0YSA9IGRhdGEuZmlsdGVyKGl0ZW0gPT4gaXRlbVtmaWx0ZXIuYXR0cl0gPD0gZmlsdGVyLnZhbHVlcyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgZ2V0QWdncmVnYXRlRGF0YShjb2x1bW46IE9Db2x1bW4pIHtcbiAgICBjb25zdCBvYmogPSB7fTtcbiAgICBsZXQgdG90YWxWYWx1ZSA9ICcnO1xuXG4gICAgaWYgKHR5cGVvZiB0aGlzLl90YWJsZU9wdGlvbnMgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gbmV3IEFycmF5KG9iaik7XG4gICAgfVxuICAgIHRvdGFsVmFsdWUgPSB0aGlzLmFnZ3JlZ2F0ZURhdGFbY29sdW1uLmF0dHJdO1xuICAgIHJldHVybiB0b3RhbFZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNhbGN1bGF0ZUFnZ3JlZ2F0ZShkYXRhOiBhbnlbXSwgY29sdW1uQXR0cjogc3RyaW5nLCBvcGVyYXRvcjogc3RyaW5nIHwgRnVuY3Rpb24pOiBhbnkge1xuICAgIGxldCByZXN1bHRBZ2dyZWdhdGU7XG4gICAgaWYgKHR5cGVvZiBvcGVyYXRvciA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHN3aXRjaCAob3BlcmF0b3IudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICBjYXNlICdjb3VudCc6XG4gICAgICAgICAgcmVzdWx0QWdncmVnYXRlID0gdGhpcy5jb3VudChjb2x1bW5BdHRyLCBkYXRhKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbWluJzpcbiAgICAgICAgICByZXN1bHRBZ2dyZWdhdGUgPSB0aGlzLm1pbihjb2x1bW5BdHRyLCBkYXRhKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbWF4JzpcbiAgICAgICAgICByZXN1bHRBZ2dyZWdhdGUgPSB0aGlzLm1heChjb2x1bW5BdHRyLCBkYXRhKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYXZnJzpcbiAgICAgICAgICByZXN1bHRBZ2dyZWdhdGUgPSB0aGlzLmF2Zyhjb2x1bW5BdHRyLCBkYXRhKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXN1bHRBZ2dyZWdhdGUgPSB0aGlzLnN1bShjb2x1bW5BdHRyLCBkYXRhKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY29sdW1uRGF0YTogYW55W10gPSB0aGlzLmdldENvbHVtbkRhdGEoY29sdW1uQXR0cik7XG4gICAgICBpZiAodHlwZW9mIG9wZXJhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJlc3VsdEFnZ3JlZ2F0ZSA9IG9wZXJhdG9yKGNvbHVtbkRhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0QWdncmVnYXRlO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN1bShjb2x1bW4sIGRhdGEpOiBudW1iZXIge1xuICAgIGxldCB2YWx1ZSA9IDA7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIC8vSWYgdGhlIGRhdGEgaXMgZ3JvdXBlZCwgdGhlIHZhbHVlcyDigIvigItvZiB0aGUgc3ViZ3JvdXBzIGluIGxldmVsIDEgYXJlIHN1bW1lZFxuICAgICAgaWYgKGRhdGFbMF0gaW5zdGFuY2VvZiBPVGFibGVHcm91cGVkUm93KSB7XG4gICAgICAgIHRoaXMuZ2V0RGF0YUZyb21GaXJzdExldmVsVGFibGVHcm91cFJvdyhkYXRhKS5mb3JFYWNoKHggPT4ge1xuICAgICAgICAgIHZhbHVlID0geC5nZXRDb2x1bW5BZ2dyZWdhdGVEYXRhKGNvbHVtbikucmVkdWNlKChhY3VtdWxhdG9yLCBjdXJyZW50VmFsdWUpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhY3VtdWxhdG9yICsgKGlzTmFOKGN1cnJlbnRWYWx1ZVtjb2x1bW5dKSA/IDAgOiBjdXJyZW50VmFsdWVbY29sdW1uXSk7XG4gICAgICAgICAgfSwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhbHVlID0gZGF0YS5yZWR1Y2UoKGFjdW11bGF0b3IsIGN1cnJlbnRWYWx1ZSkgPT4ge1xuICAgICAgICAgIHJldHVybiBhY3VtdWxhdG9yICsgKGlzTmFOKGN1cnJlbnRWYWx1ZVtjb2x1bW5dKSA/IDAgOiBjdXJyZW50VmFsdWVbY29sdW1uXSk7XG4gICAgICAgIH0sIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICsodmFsdWUpLnRvRml4ZWQoMik7XG4gIH1cblxuICBwcm90ZWN0ZWQgY291bnQoY29sdW1uLCBkYXRhKTogbnVtYmVyIHtcbiAgICBsZXQgdmFsdWUgPSAwO1xuICAgIGlmIChkYXRhKSB7XG4gICAgICAvL0lmIHRoZSBkYXRhIGlzIGdyb3VwZWQsIHRoZSBjb3VudCBpcyBjYWxjdWxhdGVkIGJ5IGFkZGluZyB0aGUgY291bnRzIGZvciBlYWNoIHN1Ymdyb3VwIGluIGxldmVsIDFcbiAgICAgIGlmIChkYXRhWzBdIGluc3RhbmNlb2YgT1RhYmxlR3JvdXBlZFJvdykge1xuICAgICAgICB0aGlzLmdldERhdGFGcm9tRmlyc3RMZXZlbFRhYmxlR3JvdXBSb3coZGF0YSkuZm9yRWFjaCh4ID0+IHtcbiAgICAgICAgICB2YWx1ZSA9IHguZ2V0Q29sdW1uQWdncmVnYXRlRGF0YShjb2x1bW4pLnJlZHVjZSgoYWN1bXVsYXRvcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFjdW11bGF0b3IgKyAxO1xuICAgICAgICAgIH0sIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IGRhdGEucmVkdWNlKChhY3VtdWxhdG9yKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGFjdW11bGF0b3IgKyAxO1xuICAgICAgICB9LCAwKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGF2Zyhjb2x1bW4sIGRhdGEpOiBudW1iZXIge1xuICAgIGNvbnN0IHRvdGFsU3VtID0gdGhpcy5zdW0oY29sdW1uLCBkYXRhKTtcbiAgICBjb25zdCB0b3RhbENvdW50ID0gdGhpcy5jb3VudChjb2x1bW4sIGRhdGEpO1xuICAgIHJldHVybiArKCh0b3RhbFN1bSA9PT0gMCB8fCB0b3RhbENvdW50ID09PSAwKSA/IDAgOiAodG90YWxTdW0gLyB0b3RhbENvdW50KSkudG9GaXhlZCgyKTtcblxuICB9XG5cbiAgcHJvdGVjdGVkIG1pbihjb2x1bW4sIGRhdGEpOiBudW1iZXIge1xuICAgIGxldCB0ZW1wTWluID0gW107XG4gICAgLy9JZiB0aGUgZGF0YSBpcyBncm91cGVkLCB0aGUgbWluaW11bSBpcyBjYWxjdWxhdGVkIHdpdGggdGhlIG1pbmltdW0gb2YgZWFjaCBzdWJncm91cCBpbiBsZXZlbCAxXG4gICAgaWYgKGRhdGFbMF0gaW5zdGFuY2VvZiBPVGFibGVHcm91cGVkUm93KSB7XG4gICAgICB0ZW1wTWluID0gdGhpcy5nZXREYXRhRnJvbUZpcnN0TGV2ZWxUYWJsZUdyb3VwUm93KGRhdGEpLm1hcCh4ID0+IHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWluKC4uLnguZ2V0Q29sdW1uQWdncmVnYXRlRGF0YShjb2x1bW4pLm1hcCh4ID0+IHhbY29sdW1uXSkpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRlbXBNaW4gPSBkYXRhLm1hcCh4ID0+IHhbY29sdW1uXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlbXBNaW4ubGVuZ3RoID4gMCA/IE1hdGgubWluKC4uLnRlbXBNaW4pIDogMDtcbiAgfVxuXG4gIHByb3RlY3RlZCBtYXgoY29sdW1uLCBkYXRhKTogbnVtYmVyIHtcbiAgICBsZXQgdGVtcE1heCA9IFtdO1xuICAgIGlmIChkYXRhWzBdIGluc3RhbmNlb2YgT1RhYmxlR3JvdXBlZFJvdykge1xuICAgICAgLy9JZiB0aGUgZGF0YSBhcmUgZ3JvdXBlZCwgdGhlIG1heGltdW0gaXMgY2FsY3VsYXRlZCB3aXRoIHRoZSBtYXhpbXVtIG9mIGVhY2ggc3ViZ3JvdXAgaW4gbGV2ZWwgMVxuICAgICAgdGVtcE1heCA9IHRoaXMuZ2V0RGF0YUZyb21GaXJzdExldmVsVGFibGVHcm91cFJvdyhkYXRhKS5tYXAoeCA9PiB7XG4gICAgICAgIHJldHVybiBNYXRoLm1heCguLi54LmdldENvbHVtbkFnZ3JlZ2F0ZURhdGEoY29sdW1uKS5tYXAoeCA9PiB4W2NvbHVtbl0pKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZW1wTWF4ID0gZGF0YS5tYXAoeCA9PiB4W2NvbHVtbl0pO1xuICAgIH1cbiAgICByZXR1cm4gdGVtcE1heC5sZW5ndGggPiAwID8gTWF0aC5tYXgoLi4udGVtcE1heCkgOiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0ZpcnN0TGV2ZWxUYWJsZUdyb3VwUm93KHRhYmxlUm93R3JvdXBEYXRhOiBhbnkpIHtcbiAgICByZXR1cm4gdGFibGVSb3dHcm91cERhdGEgaW5zdGFuY2VvZiBPVGFibGVHcm91cGVkUm93ICYmIHRhYmxlUm93R3JvdXBEYXRhLmxldmVsID09PSAxO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREYXRhRnJvbUZpcnN0TGV2ZWxUYWJsZUdyb3VwUm93KGRhdGE6IGFueSkge1xuICAgIHJldHVybiBkYXRhLmZpbHRlcih4ID0+IHRoaXMuaXNGaXJzdExldmVsVGFibGVHcm91cFJvdyh4KSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZXhpc3RzQW55Q2FsY3VsYXRlZENvbHVtbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdGFibGVPcHRpb25zLmNvbHVtbnMuZmluZCgob0NvbDogT0NvbHVtbikgPT4gb0NvbC5jYWxjdWxhdGUgIT09IHVuZGVmaW5lZCkgIT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHVwZGF0ZVJlbmRlcmVkUm93RGF0YShyb3dEYXRhOiBhbnkpIHtcbiAgICBjb25zdCB0YWJsZUtleXMgPSB0aGlzLnRhYmxlLmdldEtleXMoKTtcbiAgICBjb25zdCByZWNvcmQgPSB0aGlzLnJlbmRlcmVkRGF0YS5maW5kKChkYXRhOiBhbnkpID0+IHtcbiAgICAgIGxldCBmb3VuZCA9IHRydWU7XG4gICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdGFibGVLZXlzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IHRhYmxlS2V5c1tpXTtcbiAgICAgICAgaWYgKGRhdGFba2V5XSAhPT0gcm93RGF0YVtrZXldKSB7XG4gICAgICAgICAgZm91bmQgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZvdW5kO1xuICAgIH0pO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChyZWNvcmQpKSB7XG4gICAgICBPYmplY3QuYXNzaWduKHJlY29yZCwgcm93RGF0YSk7XG4gICAgfVxuICB9XG5cblxuICBwcml2YXRlIGdldERhdGFJbmZvcm1hdGlvbkJ5R3JvdXAoZGF0YTogYW55W10sIGxldmVsOiBudW1iZXIpIHtcbiAgICBjb25zdCByZWNvcmRIYXNoID0ge307XG4gICAgZGF0YS5mb3JFYWNoKChyb3csIGkpID0+IHtcbiAgICAgIGNvbnN0IGtleXMgPSB7fTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IGxldmVsOyBpKyspIHtcbiAgICAgICAga2V5c1t0aGlzLnRhYmxlLmdyb3VwZWRDb2x1bW5zQXJyYXlbaV1dID0gdGhpcy50YWJsZS5nZXRDb2x1bW5EYXRhQnlBdHRyKHRoaXMudGFibGUuZ3JvdXBlZENvbHVtbnNBcnJheVtpXSwgcm93KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlY29yZEtleSA9IEpTT04uc3RyaW5naWZ5KGtleXMpO1xuICAgICAgaWYgKHJlY29yZEhhc2guaGFzT3duUHJvcGVydHkocmVjb3JkS2V5KSkge1xuICAgICAgICByZWNvcmRIYXNoW3JlY29yZEtleV0ucHVzaChpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlY29yZEhhc2hbcmVjb3JkS2V5XSA9IFtpXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVjb3JkSGFzaDtcbiAgfVxuXG4gIHByaXZhdGUgcmVjYWxjdWxhdGVDb2x1bW5BZ2dyZWdhdGUoY29sdW1uQXR0cjogc3RyaW5nLCByb3c6IE9UYWJsZUdyb3VwZWRSb3cpIHtcbiAgICBjb25zdCBhZ2dyZWdhdGVDb25mID0gcm93LmdldEFjdGl2ZUNvbHVtbkFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24oY29sdW1uQXR0cik7XG4gICAgY29uc3QgZGF0YSA9IHJvdy5nZXRDb2x1bW5BZ2dyZWdhdGVEYXRhKGNvbHVtbkF0dHIpO1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jYWxjdWxhdGVBZ2dyZWdhdGUoZGF0YSwgYWdncmVnYXRlQ29uZi5hdHRyLCBhZ2dyZWdhdGVDb25mLmFnZ3JlZ2F0ZUZ1bmN0aW9uIHx8IGFnZ3JlZ2F0ZUNvbmYuYWdncmVnYXRlKTtcbiAgICByb3cuc2V0Q29sdW1uQWdncmVnYXRlVmFsdWUoY29sdW1uQXR0ciwgdmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdWJsZXZlbChkYXRhOiBhbnlbXSwgbGV2ZWw6IG51bWJlciwgcGFyZW50PzogT1RhYmxlR3JvdXBlZFJvdyk6IGFueVtdIHtcbiAgICBpZiAobGV2ZWwgPj0gdGhpcy50YWJsZS5ncm91cGVkQ29sdW1uc0FycmF5Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIGNvbnN0IHJlY29yZEhhc2ggPSB0aGlzLmdldERhdGFJbmZvcm1hdGlvbkJ5R3JvdXAoZGF0YSwgbGV2ZWwpO1xuXG4gICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgIE9iamVjdC5rZXlzKHJlY29yZEhhc2gpLmZvckVhY2gocmVjb3JkS2V5ID0+IHtcblxuICAgICAgY29uc3Qgcm93ID0gbmV3IE9UYWJsZUdyb3VwZWRSb3coe1xuICAgICAgICBjb2x1bW46IHRoaXMudGFibGUuZ3JvdXBlZENvbHVtbnNBcnJheVtsZXZlbF0sXG4gICAgICAgIGtleXNBc1N0cmluZzogcmVjb3JkS2V5LFxuICAgICAgICBsZXZlbDogbGV2ZWwgKyAxLFxuICAgICAgICBwYXJlbnQ6IHBhcmVudFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuZ3JvdXBlZFJvd3NTdWJzY3JpcHRpb24uYWRkKHJvdy5hZ2dyZWdhdGVGdW5jdGlvbkNoYW5nZS5zdWJzY3JpYmUoYXJnID0+IHtcbiAgICAgICAgaWYgKGFyZy5jaGFuZ2VBbGxHcm91cGVkUm93cykge1xuICAgICAgICAgIHRoaXMuYWN0aXZlQWdncmVnYXRlc1thcmcuY29sdW1uQXR0cl0gPSBhcmcuYWN0aXZlQWdncmVnYXRlO1xuICAgICAgICAgIHRoaXMucmVuZGVyZWREYXRhLmZpbHRlcihyb3cgPT4gcm93IGluc3RhbmNlb2YgT1RhYmxlR3JvdXBlZFJvdykuZm9yRWFjaChyb3cgPT4ge1xuICAgICAgICAgICAgcm93LnNldENvbHVtbkFjdGl2ZUFnZ3JlZ2F0ZUZ1bmN0aW9uKGFyZy5jb2x1bW5BdHRyLCBhcmcuYWN0aXZlQWdncmVnYXRlLCBmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLnJlY2FsY3VsYXRlQ29sdW1uQWdncmVnYXRlKGFyZy5jb2x1bW5BdHRyLCByb3cpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVjYWxjdWxhdGVDb2x1bW5BZ2dyZWdhdGUoYXJnLmNvbHVtbkF0dHIsIGFyZy5yb3cpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgICBjb25zdCBhZmZlY3RlZEluZGV4ZXMgPSByZWNvcmRIYXNoW3Jvdy5rZXlzQXNTdHJpbmddO1xuICAgICAgY29uc3QgZ3JvdXBEYXRhID0gZGF0YS5maWx0ZXIoKHJvdywgaW5kZXgpID0+IGFmZmVjdGVkSW5kZXhlcy5pbmNsdWRlcyhpbmRleCkpO1xuICAgICAgdGhpcy50YWJsZS52aXNpYmxlQ29sQXJyYXkuZm9yRWFjaCgoY29sdW1uQXR0ciwgaSkgPT4ge1xuICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgIHJvdy50aXRsZSA9IHRoaXMuZ2V0VGV4dEdyb3VwUm93KHJvdywgYWZmZWN0ZWRJbmRleGVzLmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdXNlQ29sdW1uQWdncmVnYXRlID0gdGhpcy50YWJsZS51c2VDb2x1bW5Hcm91cGluZ0FnZ3JlZ2F0ZShjb2x1bW5BdHRyKTtcbiAgICAgICAgaWYgKHVzZUNvbHVtbkFnZ3JlZ2F0ZSkge1xuICAgICAgICAgIHJvdy5pbml0aWFsaXplQ29sdW1uQWdncmVnYXRlKGNvbHVtbkF0dHIsIHRoaXMudGFibGUuZ2V0Q29sdW1uR3JvdXBpbmdDb21wb25lbnQoY29sdW1uQXR0cikpO1xuXG4gICAgICAgICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMuYWN0aXZlQWdncmVnYXRlc1tjb2x1bW5BdHRyXSkpIHtcbiAgICAgICAgICAgIHJvdy5zZXRDb2x1bW5BY3RpdmVBZ2dyZWdhdGVGdW5jdGlvbihjb2x1bW5BdHRyLCB0aGlzLmFjdGl2ZUFnZ3JlZ2F0ZXNbY29sdW1uQXR0cl0sIGZhbHNlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocm93Lmhhc0FjdGl2ZUFnZ3JlZ2F0ZShjb2x1bW5BdHRyKSkge1xuICAgICAgICAgICAgY29uc3QgYWdncmVnYXRlRGF0YSA9IGdyb3VwRGF0YS5tYXAoeCA9PiB7IGNvbnN0IG9iaiA9IHt9OyBvYmpbY29sdW1uQXR0cl0gPSB4W2NvbHVtbkF0dHJdOyByZXR1cm4gb2JqOyB9KTtcbiAgICAgICAgICAgIHJvdy5zZXRDb2x1bW5BZ2dyZWdhdGVEYXRhKGNvbHVtbkF0dHIsIGFnZ3JlZ2F0ZURhdGEpO1xuXG4gICAgICAgICAgICBjb25zdCBhZ2dyZWdhdGVDb25mID0gcm93LmdldEFjdGl2ZUNvbHVtbkFnZ3JlZ2F0ZUNvbmZpZ3VyYXRpb24oY29sdW1uQXR0cik7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY2FsY3VsYXRlQWdncmVnYXRlKGFnZ3JlZ2F0ZURhdGEsIGFnZ3JlZ2F0ZUNvbmYuYXR0ciwgYWdncmVnYXRlQ29uZi5hZ2dyZWdhdGVGdW5jdGlvbiB8fCBhZ2dyZWdhdGVDb25mLmFnZ3JlZ2F0ZSk7XG4gICAgICAgICAgICByb3cuc2V0Q29sdW1uQWdncmVnYXRlVmFsdWUoY29sdW1uQXR0ciwgdmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByb3cuZXhwYW5kZWQgPSB0aGlzLmdldEV4cGFuc2lvblN0YXRlKHJvdyk7XG4gICAgICBjb25zdCBzdWJHcm91cCA9IHRoaXMuZ2V0U3VibGV2ZWwoZ3JvdXBEYXRhLCBsZXZlbCArIDEsIHJvdyk7XG4gICAgICBzdWJHcm91cC51bnNoaWZ0KHJvdyk7XG4gICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KHN1Ykdyb3VwKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbHRlcnMgY29sbGFwc2VkIHJvdyBncm91cFxuICAgKiBAcGFyYW0gZGF0YVxuICAgKiBAcmV0dXJucyBjb2xsYXBzZWQgcm93IGdyb3VwXG4gICAqL1xuICBmaWx0ZXJDb2xsYXBzZWRSb3dHcm91cChkYXRhOiBhbnkpOiBhbnlbXSB7XG4gICAgcmV0dXJuIGRhdGEuZmlsdGVyKChyb3c6IGFueSkgPT4gKHJvdyBpbnN0YW5jZW9mIE9UYWJsZUdyb3VwZWRSb3cpID8gcm93LnZpc2libGUgOiB0aGlzLmJlbG9uZ3NUb0V4cGFuZGVkR3JvdXBlZFJvdyhkYXRhLCByb3cpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCZWxvbmdzIHRvIGFuIGV4cGFuZGVkIGdyb3VwZWQgcm93XG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEBwYXJhbSByb3dcbiAgICogQHJldHVybnMgdHJ1ZSBpZiB0byBleHBhbmRlZCBncm91cGVkIHJvd1xuICAgKi9cbiAgYmVsb25nc1RvRXhwYW5kZWRHcm91cGVkUm93KGRhdGE6IGFueSwgcm93OiBhbnkpOiBib29sZWFuIHtcbiAgICBsZXQgcGFyZW50OiBPVGFibGVHcm91cGVkUm93O1xuICAgIGxldCBtYXRjaCA9IGZhbHNlO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBkYXRhLmxlbmd0aCAmJiAhbWF0Y2g7IGluZGV4KyspIHtcbiAgICAgIGlmIChkYXRhW2luZGV4XSBpbnN0YW5jZW9mIE9UYWJsZUdyb3VwZWRSb3cpIHtcbiAgICAgICAgcGFyZW50ID0gZGF0YVtpbmRleF07XG4gICAgICB9IGVsc2UgaWYgKFV0aWwuaXNFcXVpdmFsZW50KGRhdGFbaW5kZXhdLCByb3cpKSB7XG4gICAgICAgIG1hdGNoID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFV0aWwuaXNEZWZpbmVkKHBhcmVudCkgPyAocGFyZW50LnZpc2libGUgJiYgcGFyZW50LmV4cGFuZGVkKSA6IHRydWU7XG4gIH1cblxuICB1cGRhdGVHcm91cGVkQ29sdW1ucygpIHtcbiAgICB0aGlzLmdyb3VwQnlDb2x1bW5DaGFuZ2UubmV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgZ3JvdXAgYnkgY29sdW1uXG4gICAqIEBwYXJhbSByb3dHcm91cFxuICAgKi9cbiAgdG9nZ2xlR3JvdXBCeUNvbHVtbihyb3dHcm91cDogT1RhYmxlR3JvdXBlZFJvdykge1xuICAgIGlmIChyb3dHcm91cC5leHBhbmRTYW1lTGV2ZWwodGhpcy50YWJsZS5leHBhbmRHcm91cHNTYW1lTGV2ZWwpKSB7XG4gICAgICB0aGlzLmxldmVsc0V4cGFuc2lvblN0YXRlW3Jvd0dyb3VwLmxldmVsXSA9ICFyb3dHcm91cC5leHBhbmRlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGVTdGF0ZVJvd0dyb3VwZWQocm93R3JvdXApO1xuICAgIH1cbiAgICB0aGlzLmdyb3VwQnlDb2x1bW5DaGFuZ2UubmV4dCgpO1xuICB9XG5cbiAgc2V0Um93R3JvdXBMZXZlbEV4cGFuc2lvbihyb3dHcm91cDogT1RhYmxlR3JvdXBlZFJvdywgdmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmxldmVsc0V4cGFuc2lvblN0YXRlW3Jvd0dyb3VwLmxldmVsXSA9IHZhbHVlO1xuICAgIHRoaXMuZ3JvdXBCeUNvbHVtbkNoYW5nZS5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0YXRlUm93R3JvdXBlZChyb3dHcm91cDogT1RhYmxlR3JvdXBlZFJvdykge1xuICAgIGNvbnN0IHN0YXRlUm93R3JvdXBlZCA9IHRoaXMuZ3JvdXBlZFJvd1N0YXRlLmZpbmQocm93ID0+IHJvd0dyb3VwLmtleXNBc1N0cmluZyA9PT0gcm93LmtleXNBc1N0cmluZyAmJiBKU09OLnN0cmluZ2lmeShyb3dHcm91cC5wYXJlbnQpID09PSBKU09OLnN0cmluZ2lmeShyb3cucGFyZW50KSk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHN0YXRlUm93R3JvdXBlZCkpIHtcbiAgICAgIHN0YXRlUm93R3JvdXBlZC5leHBhbmRlZCA9ICFzdGF0ZVJvd0dyb3VwZWQuZXhwYW5kZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvd0dyb3VwLmV4cGFuZGVkID0gIXJvd0dyb3VwLmV4cGFuZGVkO1xuICAgICAgdGhpcy5ncm91cGVkUm93U3RhdGUucHVzaChyb3dHcm91cCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRUZXh0R3JvdXBSb3coZ3JvdXA6IE9UYWJsZUdyb3VwZWRSb3csIHRvdGFsQ291bnRzOiBudW1iZXIpIHtcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMudGFibGUuZ3JvdXBlZENvbHVtbnNBcnJheVtncm91cC5sZXZlbCAtIDFdO1xuICAgIGxldCB2YWx1ZSA9IEpTT04ucGFyc2UoZ3JvdXAua2V5c0FzU3RyaW5nKVt0aGlzLnRhYmxlLmdyb3VwZWRDb2x1bW5zQXJyYXlbZ3JvdXAubGV2ZWwgLSAxXV07XG5cbiAgICBjb25zdCBvQ29sID0gdGhpcy50YWJsZS5nZXRPQ29sdW1uKGZpZWxkKTtcblxuICAgIGlmICghdmFsdWUgJiYgVXRpbC5pc0RlZmluZWQob0NvbC5yZW5kZXJlcikgJiYgKHRoaXMudGFibGUgYXMgYW55KS5pc0luc3RhbmNlT2ZPVGFibGVDZWxsUmVuZGVyZXJTZXJ2aWNlQ29tcG9uZW50KG9Db2wucmVuZGVyZXIpKSB7XG4gICAgICB2YWx1ZSA9ICcgLSAnO1xuICAgICAgaWYgKCF0aGlzLnRhYmxlLm9uRGF0YUxvYWRlZENlbGxSZW5kZXJlclN1YnNjcmlwdGlvbikge1xuICAgICAgICB0aGlzLnRhYmxlLm9uRGF0YUxvYWRlZENlbGxSZW5kZXJlclN1YnNjcmlwdGlvbiA9IChvQ29sLnJlbmRlcmVyIGFzIGFueSkub25EYXRhTG9hZGVkLnN1YnNjcmliZSh4ID0+IHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUdyb3VwZWRDb2x1bW5zKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gKHRoaXMudGFibGUgYXMgYW55KS50cmFuc2xhdGVTZXJ2aWNlLmdldChvQ29sLnRpdGxlKSArICc6ICcgKyB2YWx1ZSArICcgKCcgKyB0b3RhbENvdW50cyArICcpJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXhwYW5zaW9uU3RhdGUocm93OiBPVGFibGVHcm91cGVkUm93KTogYm9vbGVhbiB7XG4gICAgbGV0IGV4cGFuc2lvblN0YXRlID0gIXBhcmVudCB8fCAhdGhpcy50YWJsZS5jb2xsYXBzZUdyb3VwZWRDb2x1bW5zO1xuICAgIGlmIChyb3cuZXhwYW5kU2FtZUxldmVsKHRoaXMudGFibGUuZXhwYW5kR3JvdXBzU2FtZUxldmVsKSkge1xuICAgICAgZXhwYW5zaW9uU3RhdGUgPSB0aGlzLmxldmVsc0V4cGFuc2lvblN0YXRlLmhhc093blByb3BlcnR5KHJvdy5sZXZlbCkgPyB0aGlzLmxldmVsc0V4cGFuc2lvblN0YXRlW3Jvdy5sZXZlbF0gOiBleHBhbnNpb25TdGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgcm93R3JvdXAgPSB0aGlzLmdyb3VwZWRSb3dTdGF0ZS5maW5kKHggPT4geC5rZXlzQXNTdHJpbmcgPT09IHJvdy5rZXlzQXNTdHJpbmcgJiYgSlNPTi5zdHJpbmdpZnkoeC5wYXJlbnQpID09PSBKU09OLnN0cmluZ2lmeShyb3cucGFyZW50KSk7XG4gICAgICBleHBhbnNpb25TdGF0ZSA9IHJvd0dyb3VwID8gcm93R3JvdXAuZXhwYW5kZWQgOiBleHBhbnNpb25TdGF0ZTtcbiAgICB9XG4gICAgcmV0dXJuIGV4cGFuc2lvblN0YXRlO1xuICB9XG59XG5cblxuXG4iXX0=
|
|
@@ -31,7 +31,9 @@ export class OTableVisibleColumnsDialogComponent {
|
|
|
31
31
|
if (Util.isDefined(data.table)) {
|
|
32
32
|
this.table = data.table;
|
|
33
33
|
const visibleColumns = Util.parseArray(this.table.visibleColumns, true);
|
|
34
|
-
|
|
34
|
+
const nonHidableColumns = Util.parseArray(this.table.nonHidableColumns, true);
|
|
35
|
+
this.table.oTableOptions.columns.filter(oCol => (visibleColumns.indexOf(oCol.attr) !== -1 || oCol.definition !== undefined) &&
|
|
36
|
+
nonHidableColumns.indexOf(oCol.attr) === -1).forEach((oCol) => {
|
|
35
37
|
this.columns.push({
|
|
36
38
|
attr: oCol.attr,
|
|
37
39
|
title: oCol.title,
|
|
@@ -126,4 +128,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
126
128
|
type: Inject,
|
|
127
129
|
args: [MAT_DIALOG_DATA]
|
|
128
130
|
}] }]; } });
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS12aXNpYmxlLWNvbHVtbnMtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvZGlhbG9nL3Zpc2libGUtY29sdW1ucy9vLXRhYmxlLXZpc2libGUtY29sdW1ucy1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvZXh0ZW5zaW9ucy9kaWFsb2cvdmlzaWJsZS1jb2x1bW5zL28tdGFibGUtdmlzaWJsZS1jb2x1bW5zLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBRVIsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7OztBQXVCaEQsTUFBTSxPQUFPLG1DQUFtQztJQVc5QyxZQUNZLFFBQWtCLEVBQ3JCLFNBQTRELEVBQzFDLElBQVM7UUFGeEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtR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YWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBUeXBlLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IE9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlL28tdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHR5cGUgeyBPQ29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vY29sdW1uL28tY29sdW1uLmNsYXNzJztcbmltcG9ydCB7IE9UYWJsZUJhc2UgfSBmcm9tICcuLi8uLi8uLi9vLXRhYmxlLWJhc2UuY2xhc3MnO1xuXG5leHBvcnQgdHlwZSBDb2x1bW5WaXNpYmlsaXR5Q29uZmlndXJhdGlvbiA9IHtcbiAgYXR0cjogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICB2aXNpYmxlOiBib29sZWFuO1xuICBkZWxldGVWYWx1ZUZpbHRlcj86IGJvb2xlYW47XG4gIGRlbGV0ZVNvcnRDb2x1bW1uPzogYm9vbGVhbjtcbiAgZGVsZXRlR3J1cGluZ0NvbHVtbj86IGJvb2xlYW47XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLXRhYmxlLXZpc2libGUtY29sdW1ucy1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJ28tdGFibGUtdmlzaWJsZS1jb2x1bW5zLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydvLXRhYmxlLXZpc2libGUtY29sdW1ucy1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tdGFibGUtdmlzaWJsZS1jb2x1bW5zLWRpYWxvZ10nOiAndHJ1ZSdcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBPVGFibGVWaXNpYmxlQ29sdW1uc0RpYWxvZ0NvbXBvbmVudCB7XG5cbiAgY29sdW1uczogQ29sdW1uVmlzaWJpbGl0eUNvbmZpZ3VyYXRpb25bXSA9IFtdO1xuICByb3dIZWlnaHQ6IHN0cmluZyA9IENvZGVzLkRFRkFVTFRfUk9XX0hFSUdIVDtcbiAgcHJvdGVjdGVkIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2U7XG4gIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBPVHJhbnNsYXRlU2VydmljZTtcbiAgcHJvdGVjdGVkIGFjdGl2ZUNvbHVtblZhbHVlRmlsdGVyczogc3RyaW5nW10gPSBbXTtcbiAgcHJvdGVjdGVkIGFjdGl2ZVNvcnRDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuICBwcm90ZWN0ZWQgYWN0aXZlR3JvdXBCeUNvbHVtbnM6IHN0cmluZ1tdID0gW107XG4gIHByb3RlY3RlZCB0YWJsZTogT1RhYmxlQmFzZTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8T1RhYmxlVmlzaWJsZUNvbHVtbnNEaWFsb2dDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBkYXRhOiBhbnlcbiAgKSB7XG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8RGlhbG9nU2VydmljZT4oRGlhbG9nU2VydmljZSBhcyBUeXBlPERpYWxvZ1NlcnZpY2U+KTtcbiAgICB0aGlzLmNkID0gdGhpcy5pbmplY3Rvci5nZXQ8Q2hhbmdlRGV0ZWN0b3JSZWY+KENoYW5nZURldGVjdG9yUmVmIGFzIFR5cGU8Q2hhbmdlRGV0ZWN0b3JSZWY+KTtcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxPVHJhbnNsYXRlU2VydmljZT4oT1RyYW5zbGF0ZVNlcnZpY2UgYXMgVHlwZTxPVHJhbnNsYXRlU2VydmljZT4pO1xuXG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGRhdGEudGFibGUpKSB7XG4gICAgICB0aGlzLnRhYmxlID0gZGF0YS50YWJsZTtcblxuICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBVdGlsLnBhcnNlQXJyYXkodGhpcy50YWJsZS52aXNpYmxlQ29sdW1ucywgdHJ1ZSk7XG5cbiAgICAgIHRoaXMudGFibGUub1RhYmxlT3B0aW9ucy5jb2x1bW5zLmZpbHRlcihvQ29sID0+IHZpc2libGVDb2x1bW5zLmluZGV4T2Yob0NvbC5hdHRyKSAhPT0gLTEgfHwgb0NvbC5kZWZpbml0aW9uICE9PSB1bmRlZmluZWQpLmZvckVhY2goKG9Db2w6IE9Db2x1bW4pID0+IHtcbiAgICAgICAgdGhpcy5jb2x1bW5zLnB1c2goe1xuICAgICAgICAgIGF0dHI6IG9Db2wuYXR0cixcbiAgICAgICAgICB0aXRsZTogb0NvbC50aXRsZSxcbiAgICAgICAgICB2aXNpYmxlOiBvQ29sLnZpc2libGVcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5yb3dIZWlnaHQgPSB0aGlzLnRhYmxlLnJvd0hlaWdodDtcbiAgICAgIHRoaXMuYWN0aXZlQ29sdW1uVmFsdWVGaWx0ZXJzID0gdGhpcy50YWJsZS5kYXRhU291cmNlLmdldENvbHVtblZhbHVlRmlsdGVycygpLm1hcChjb2xWYWx1ZUZpbHRlciA9PiBjb2xWYWx1ZUZpbHRlci5hdHRyKTtcbiAgICAgIHRoaXMuYWN0aXZlU29ydENvbHVtbnMgPSB0aGlzLnRhYmxlLnNvcnRDb2xBcnJheS5tYXAoY29sID0+IGNvbC5jb2x1bW5OYW1lKTtcbiAgICAgIHRoaXMuYWN0aXZlR3JvdXBCeUNvbHVtbnMgPSB0aGlzLnRhYmxlLmdyb3VwZWRDb2x1bW5zQXJyYXk7XG4gICAgfVxuICB9XG5cbiAgb25DbGlja0NvbHVtbihjb2w6IENvbHVtblZpc2liaWxpdHlDb25maWd1cmF0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aXZlQ29sRmlsdGVyID0gdGhpcy5hY3RpdmVDb2x1bW5WYWx1ZUZpbHRlcnMuaW5jbHVkZXMoY29sLmF0dHIpO1xuICAgIGNvbnN0IGFjdGl2ZVNvcnRpbmcgPSB0aGlzLmFjdGl2ZVNvcnRDb2x1bW5zLmluY2x1ZGVzKGNvbC5hdHRyKTtcbiAgICBjb25zdCBhY3RpdmVHcm91cGluZyA9IHRoaXMuYWN0aXZlR3JvdXBCeUNvbHVtbnMuaW5jbHVkZXMoY29sLmF0dHIpO1xuICAgIGlmIChjb2wudmlzaWJsZSAmJiAoYWN0aXZlQ29sRmlsdGVyIHx8IGFjdGl2ZVNvcnRpbmcgfHwgYWN0aXZlR3JvdXBpbmcpKSB7XG4gICAgICBjb25zdCB3YXJuQXJncyA9IFtdO1xuICAgICAgaWYgKGFjdGl2ZUNvbEZpbHRlcikge1xuICAgICAgICB3YXJuQXJncy5wdXNoKHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoJ1RBQkxFLlZJU0lCTEVfQ09MVU1OU19ESUFMT0cuVkFMVUVfRklMVEVSX1dBUk4nKSk7XG4gICAgICB9XG4gICAgICBpZiAoYWN0aXZlU29ydGluZykge1xuICAgICAgICB3YXJuQXJncy5wdXNoKHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoJ1RBQkxFLlZJU0lCTEVfQ09MVU1OU19ESUFMT0cuU09SVF9XQVJOJykpO1xuICAgICAgfVxuICAgICAgaWYgKGFjdGl2ZUdyb3VwaW5nKSB7XG4gICAgICAgIHdhcm5BcmdzLnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCgnVEFCTEUuVklTSUJMRV9DT0xVTU5TX0RJQUxPRy5HUk9VUElOR19XQVJOJykpO1xuICAgICAgfVxuICAgICAgY29uc3QgZGlhbG9nVGV4dCA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXQoJ1RBQkxFLlZJU0lCTEVfQ09MVU1OU19ESUFMT0cuSElERV9DT0xVTU5fV0FSTklORycsIHdhcm5BcmdzKTtcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5jb25maXJtKCdDT05GSVJNJywgZGlhbG9nVGV4dCkudGhlbihyZXMgPT4ge1xuICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgY29sLmRlbGV0ZVZhbHVlRmlsdGVyID0gYWN0aXZlQ29sRmlsdGVyO1xuICAgICAgICAgIGNvbC5kZWxldGVTb3J0Q29sdW1tbiA9IGFjdGl2ZVNvcnRpbmc7XG4gICAgICAgICAgY29sLmRlbGV0ZUdydXBpbmdDb2x1bW4gPSBhY3RpdmVHcm91cGluZztcbiAgICAgICAgICBjb2wudmlzaWJsZSA9ICFjb2wudmlzaWJsZTtcbiAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbC52aXNpYmxlID0gIWNvbC52aXNpYmxlO1xuICAgICAgaWYgKGNvbC52aXNpYmxlKSB7XG4gICAgICAgIGNvbC5kZWxldGVWYWx1ZUZpbHRlciA9IGZhbHNlO1xuICAgICAgICBjb2wuZGVsZXRlU29ydENvbHVtbW4gPSBmYWxzZTtcbiAgICAgICAgY29sLmRlbGV0ZUdydXBpbmdDb2x1bW4gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pIHtcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5jb2x1bW5zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICB9XG5cbiAgY2xvc2VEaWFsb2coKSB7XG4gICAgY29uc3QgY29sdW1uU29ydGluZ1RvUmVtb3ZlID0gdGhpcy5nZXRDb2x1bW5Tb3J0aW5nVG9SZW1vdmUoKTtcbiAgICBjb25zdCBuZXdTb3J0Q29sdW1ucyA9IGNvbHVtblNvcnRpbmdUb1JlbW92ZS5sZW5ndGggPiAwID9cbiAgICAgIHRoaXMudGFibGUuc29ydENvbEFycmF5LmZpbHRlcihjb2wgPT4gIWNvbHVtblNvcnRpbmdUb1JlbW92ZS5pbmNsdWRlcyhjb2wuY29sdW1uTmFtZSkpIDpcbiAgICAgIHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGNvbHVtbkdyb3VwaW5nVG9SZW1vdmUgPSB0aGlzLmdldENvbHVtbkdyb3VwaW5nVG9SZW1vdmUoKTtcbiAgICBjb25zdCBuZXdHcm91cENvbHVtbnMgPSBjb2x1bW5Hcm91cGluZ1RvUmVtb3ZlLmxlbmd0aCA+IDAgP1xuICAgICAgdGhpcy50YWJsZS5ncm91cGVkQ29sdW1uc0FycmF5LmZpbHRlcihjb2wgPT4gIWNvbHVtbkdyb3VwaW5nVG9SZW1vdmUuaW5jbHVkZXMoY29sKSkgOlxuICAgICAgdW5kZWZpbmVkO1xuXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgdmlzaWJsZUNvbEFycmF5OiB0aGlzLmdldFZpc2libGVDb2x1bW5zKCksXG4gICAgICBjb2x1bW5zT3JkZXI6IHRoaXMuZ2V0Q29sdW1uc09yZGVyKCksXG4gICAgICBzb3J0Q29sdW1uczogbmV3U29ydENvbHVtbnMsXG4gICAgICBjb2x1bW5WYWx1ZUZpbHRlcnNUb1JlbW92ZTogdGhpcy5nZXRDb2x1bW5WYWx1ZUZpbHRlcnNUb1JlbW92ZSgpLFxuICAgICAgZ3JvdXBDb2x1bW5zOiBuZXdHcm91cENvbHVtbnNcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VmlzaWJsZUNvbHVtbnMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wudmlzaWJsZSkubWFwKGNvbCA9PiBjb2wuYXR0cik7XG4gIH1cblxuICBwcml2YXRlIGdldENvbHVtbnNPcmRlcigpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5tYXAoY29sID0+IGNvbC5hdHRyKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29sdW1uVmFsdWVGaWx0ZXJzVG9SZW1vdmUoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wuZGVsZXRlVmFsdWVGaWx0ZXIpLm1hcChjb2wgPT4gY29sLmF0dHIpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb2x1bW5Tb3J0aW5nVG9SZW1vdmUoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wuZGVsZXRlU29ydENvbHVtbW4pLm1hcChjb2wgPT4gY29sLmF0dHIpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb2x1bW5Hcm91cGluZ1RvUmVtb3ZlKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2wgPT4gY29sLmRlbGV0ZUdydXBpbmdDb2x1bW4pLm1hcChjb2wgPT4gY29sLmF0dHIpO1xuICB9XG59XG4iLCI8c3BhbiBtYXQtZGlhbG9nLXRpdGxlPnt7ICdUQUJMRS5CVVRUT05TLkNPTFZJUycgfCBvVHJhbnNsYXRlIH19PC9zcGFuPlxuXG5cbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gIDxkaXYgbWF0LXN1YmhlYWRlcj57eydUQUJMRS5WSVNJQkxFX0NPTFVNTlMuREVTQ1JJUFRJT04nIHwgb1RyYW5zbGF0ZX19PC9kaXY+XG5cbiAgPGRpdiBbbmdDbGFzc109XCJyb3dIZWlnaHRcIj5cbiAgICA8bWF0LWxpc3QgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cbiAgICAgIDxtYXQtbGlzdC1pdGVtICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uc1wiIGNka0RyYWcgKGNsaWNrKT1cIm9uQ2xpY2tDb2x1bW4oY29sdW1uKVwiIFtuZ0NsYXNzXT1cInsnY29sdW1uLWhpZGRlbic6IWNvbHVtbi52aXNpYmxlfVwiXG4gICAgICAgIGNsYXNzPVwiby1kcmFnLWxpc3QtaXRlbS1ib3hcIj5cbiAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4RmxleCBmeExheW91dEFsaWduPVwic3RyZXRjaCBjZW50ZXJcIj5cbiAgICAgICAgICA8bWF0LWljb24gbWF0TGlzdEl0ZW1JY29uIHN2Z0ljb249XCJvbnRpbWl6ZTpkcmFnX2hhbmRsZVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4gbWF0TGlzdEl0ZW1MaW5lIGZ4RmxleD57eyAoY29sdW1uLnRpdGxlIHx8IGNvbHVtbi5hdHRyKSB8IG9UcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiY29sdW1uLnZpc2libGVcIiBzdmdJY29uPVwib250aW1pemU6dmlzaWJpbGl0eVwiIGNvbG9yPVwicHJpbWFyeVwiPjwvbWF0LWljb24+XG4gICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWNvbHVtbi52aXNpYmxlXCIgc3ZnSWNvbj1cIm9udGltaXplOnZpc2liaWxpdHlfb2ZmXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICAgICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgIDwvbWF0LWxpc3Q+XG4gIDwvZGl2PlxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnMgZnhMYXlvdXRBbGlnbj1cImVuZCBjZW50ZXJcIj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LXN0cm9rZWQtYnV0dG9uIFttYXQtZGlhbG9nLWNsb3NlXT1cIm51bGxcIiBjbGFzcz1cIm8tYnV0dG9uLWRlZmF1bHQgY2FuY2VsXCIgY2FuY2VsPnt7ICdDQU5DRUwnIHwgb1RyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cImNsb3NlRGlhbG9nKClcIiBjbGFzcz1cIm8tYnV0dG9uLXByaW1hcnlcIj57eyAnQUNDRVBUJyB8IG9UcmFuc2xhdGUgfX08L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuIl19
|
|
131
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS12aXNpYmxlLWNvbHVtbnMtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvZGlhbG9nL3Zpc2libGUtY29sdW1ucy9vLXRhYmxlLXZpc2libGUtY29sdW1ucy1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvZXh0ZW5zaW9ucy9kaWFsb2cvdmlzaWJsZS1jb2x1bW5zL28tdGFibGUtdmlzaWJsZS1jb2x1bW5zLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBRVIsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7OztBQXVCaEQsTUFBTSxPQUFPLG1DQUFtQztJQVc5QyxZQUNZLFFBQWtCLEVBQ3JCLFNBQTRELEVBQzFDLElBQVM7UUFGeEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtR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QVYvQyxTQUFTOytCQUNFLGdDQUFnQyxpQkFHM0IsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDSix3Q0FBd0MsRUFBRSxNQUFNO3FCQUNqRDs7MEJBZ0JFLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBUeXBlLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL2RpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IE9UcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRlL28tdHJhbnNsYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHR5cGUgeyBPQ29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vY29sdW1uL28tY29sdW1uLmNsYXNzJztcbmltcG9ydCB7IE9UYWJsZUJhc2UgfSBmcm9tICcuLi8uLi8uLi9vLXRhYmxlLWJhc2UuY2xhc3MnO1xuXG5leHBvcnQgdHlwZSBDb2x1bW5WaXNpYmlsaXR5Q29uZmlndXJhdGlvbiA9IHtcbiAgYXR0cjogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICB2aXNpYmxlOiBib29sZWFuO1xuICBkZWxldGVWYWx1ZUZpbHRlcj86IGJvb2xlYW47XG4gIGRlbGV0ZVNvcnRDb2x1bW1uPzogYm9vbGVhbjtcbiAgZGVsZXRlR3J1cGluZ0NvbHVtbj86IGJvb2xlYW47XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLXRhYmxlLXZpc2libGUtY29sdW1ucy1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJ28tdGFibGUtdmlzaWJsZS1jb2x1bW5zLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydvLXRhYmxlLXZpc2libGUtY29sdW1ucy1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tdGFibGUtdmlzaWJsZS1jb2x1bW5zLWRpYWxvZ10nOiAndHJ1ZSdcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBPVGFibGVWaXNpYmxlQ29sdW1uc0RpYWxvZ0NvbXBvbmVudCB7XG5cbiAgY29sdW1uczogQ29sdW1uVmlzaWJpbGl0eUNvbmZpZ3VyYXRpb25bXSA9IFtdO1xuICByb3dIZWlnaHQ6IHN0cmluZyA9IENvZGVzLkRFRkFVTFRfUk9XX0hFSUdIVDtcbiAgcHJvdGVjdGVkIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2U7XG4gIHByb3RlY3RlZCBjZDogQ2hhbmdlRGV0ZWN0b3JSZWY7XG4gIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBPVHJhbnNsYXRlU2VydmljZTtcbiAgcHJvdGVjdGVkIGFjdGl2ZUNvbHVtblZhbHVlRmlsdGVyczogc3RyaW5nW10gPSBbXTtcbiAgcHJvdGVjdGVkIGFjdGl2ZVNvcnRDb2x1bW5zOiBzdHJpbmdbXSA9IFtdO1xuICBwcm90ZWN0ZWQgYWN0aXZlR3JvdXBCeUNvbHVtbnM6IHN0cmluZ1tdID0gW107XG4gIHByb3RlY3RlZCB0YWJsZTogT1RhYmxlQmFzZTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8T1RhYmxlVmlzaWJsZUNvbHVtbnNEaWFsb2dDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBkYXRhOiBhbnlcbiAgKSB7XG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQ8RGlhbG9nU2VydmljZT4oRGlhbG9nU2VydmljZSBhcyBUeXBlPERpYWxvZ1NlcnZpY2U+KTtcbiAgICB0aGlzLmNkID0gdGhpcy5pbmplY3Rvci5nZXQ8Q2hhbmdlRGV0ZWN0b3JSZWY+KENoYW5nZURldGVjdG9yUmVmIGFzIFR5cGU8Q2hhbmdlRGV0ZWN0b3JSZWY+KTtcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldDxPVHJhbnNsYXRlU2VydmljZT4oT1RyYW5zbGF0ZVNlcnZpY2UgYXMgVHlwZTxPVHJhbnNsYXRlU2VydmljZT4pO1xuXG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKGRhdGEudGFibGUpKSB7XG4gICAgICB0aGlzLnRhYmxlID0gZGF0YS50YWJsZTtcblxuICAgICAgY29uc3QgdmlzaWJsZUNvbHVtbnMgPSBVdGlsLnBhcnNlQXJyYXkodGhpcy50YWJsZS52aXNpYmxlQ29sdW1ucywgdHJ1ZSk7XG4gICAgICBjb25zdCBub25IaWRhYmxlQ29sdW1ucyA9IFV0aWwucGFyc2VBcnJheSh0aGlzLnRhYmxlLm5vbkhpZGFibGVDb2x1bW5zLCB0cnVlKTtcblxuICAgICAgdGhpcy50YWJsZS5vVGFibGVPcHRpb25zLmNvbHVtbnMuZmlsdGVyKG9Db2wgPT4gKHZpc2libGVDb2x1bW5zLmluZGV4T2Yob0NvbC5hdHRyKSAhPT0gLTEgfHwgb0NvbC5kZWZpbml0aW9uICE9PSB1bmRlZmluZWQpICYmXG4gICAgICAgIG5vbkhpZGFibGVDb2x1bW5zLmluZGV4T2Yob0NvbC5hdHRyKSA9PT0gLTFcbiAgICAgICkuZm9yRWFjaCgob0NvbDogT0NvbHVtbikgPT4ge1xuICAgICAgICB0aGlzLmNvbHVtbnMucHVzaCh7XG4gICAgICAgICAgYXR0cjogb0NvbC5hdHRyLFxuICAgICAgICAgIHRpdGxlOiBvQ29sLnRpdGxlLFxuICAgICAgICAgIHZpc2libGU6IG9Db2wudmlzaWJsZVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnJvd0hlaWdodCA9IHRoaXMudGFibGUucm93SGVpZ2h0O1xuICAgICAgdGhpcy5hY3RpdmVDb2x1bW5WYWx1ZUZpbHRlcnMgPSB0aGlzLnRhYmxlLmRhdGFTb3VyY2UuZ2V0Q29sdW1uVmFsdWVGaWx0ZXJzKCkubWFwKGNvbFZhbHVlRmlsdGVyID0+IGNvbFZhbHVlRmlsdGVyLmF0dHIpO1xuICAgICAgdGhpcy5hY3RpdmVTb3J0Q29sdW1ucyA9IHRoaXMudGFibGUuc29ydENvbEFycmF5Lm1hcChjb2wgPT4gY29sLmNvbHVtbk5hbWUpO1xuICAgICAgdGhpcy5hY3RpdmVHcm91cEJ5Q29sdW1ucyA9IHRoaXMudGFibGUuZ3JvdXBlZENvbHVtbnNBcnJheTtcbiAgICB9XG4gIH1cblxuICBvbkNsaWNrQ29sdW1uKGNvbDogQ29sdW1uVmlzaWJpbGl0eUNvbmZpZ3VyYXRpb24pOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVDb2xGaWx0ZXIgPSB0aGlzLmFjdGl2ZUNvbHVtblZhbHVlRmlsdGVycy5pbmNsdWRlcyhjb2wuYXR0cik7XG4gICAgY29uc3QgYWN0aXZlU29ydGluZyA9IHRoaXMuYWN0aXZlU29ydENvbHVtbnMuaW5jbHVkZXMoY29sLmF0dHIpO1xuICAgIGNvbnN0IGFjdGl2ZUdyb3VwaW5nID0gdGhpcy5hY3RpdmVHcm91cEJ5Q29sdW1ucy5pbmNsdWRlcyhjb2wuYXR0cik7XG4gICAgaWYgKGNvbC52aXNpYmxlICYmIChhY3RpdmVDb2xGaWx0ZXIgfHwgYWN0aXZlU29ydGluZyB8fCBhY3RpdmVHcm91cGluZykpIHtcbiAgICAgIGNvbnN0IHdhcm5BcmdzID0gW107XG4gICAgICBpZiAoYWN0aXZlQ29sRmlsdGVyKSB7XG4gICAgICAgIHdhcm5BcmdzLnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCgnVEFCTEUuVklTSUJMRV9DT0xVTU5TX0RJQUxPRy5WQUxVRV9GSUxURVJfV0FSTicpKTtcbiAgICAgIH1cbiAgICAgIGlmIChhY3RpdmVTb3J0aW5nKSB7XG4gICAgICAgIHdhcm5BcmdzLnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCgnVEFCTEUuVklTSUJMRV9DT0xVTU5TX0RJQUxPRy5TT1JUX1dBUk4nKSk7XG4gICAgICB9XG4gICAgICBpZiAoYWN0aXZlR3JvdXBpbmcpIHtcbiAgICAgICAgd2FybkFyZ3MucHVzaCh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0KCdUQUJMRS5WSVNJQkxFX0NPTFVNTlNfRElBTE9HLkdST1VQSU5HX1dBUk4nKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBkaWFsb2dUZXh0ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldCgnVEFCTEUuVklTSUJMRV9DT0xVTU5TX0RJQUxPRy5ISURFX0NPTFVNTl9XQVJOSU5HJywgd2FybkFyZ3MpO1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNvbmZpcm0oJ0NPTkZJUk0nLCBkaWFsb2dUZXh0KS50aGVuKHJlcyA9PiB7XG4gICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICBjb2wuZGVsZXRlVmFsdWVGaWx0ZXIgPSBhY3RpdmVDb2xGaWx0ZXI7XG4gICAgICAgICAgY29sLmRlbGV0ZVNvcnRDb2x1bW1uID0gYWN0aXZlU29ydGluZztcbiAgICAgICAgICBjb2wuZGVsZXRlR3J1cGluZ0NvbHVtbiA9IGFjdGl2ZUdyb3VwaW5nO1xuICAgICAgICAgIGNvbC52aXNpYmxlID0gIWNvbC52aXNpYmxlO1xuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29sLnZpc2libGUgPSAhY29sLnZpc2libGU7XG4gICAgICBpZiAoY29sLnZpc2libGUpIHtcbiAgICAgICAgY29sLmRlbGV0ZVZhbHVlRmlsdGVyID0gZmFsc2U7XG4gICAgICAgIGNvbC5kZWxldGVTb3J0Q29sdW1tbiA9IGZhbHNlO1xuICAgICAgICBjb2wuZGVsZXRlR3J1cGluZ0NvbHVtbiA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPHN0cmluZ1tdPikge1xuICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmNvbHVtbnMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gIH1cblxuICBjbG9zZURpYWxvZygpIHtcbiAgICBjb25zdCBjb2x1bW5Tb3J0aW5nVG9SZW1vdmUgPSB0aGlzLmdldENvbHVtblNvcnRpbmdUb1JlbW92ZSgpO1xuICAgIGNvbnN0IG5ld1NvcnRDb2x1bW5zID0gY29sdW1uU29ydGluZ1RvUmVtb3ZlLmxlbmd0aCA+IDAgP1xuICAgICAgdGhpcy50YWJsZS5zb3J0Q29sQXJyYXkuZmlsdGVyKGNvbCA9PiAhY29sdW1uU29ydGluZ1RvUmVtb3ZlLmluY2x1ZGVzKGNvbC5jb2x1bW5OYW1lKSkgOlxuICAgICAgdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgY29sdW1uR3JvdXBpbmdUb1JlbW92ZSA9IHRoaXMuZ2V0Q29sdW1uR3JvdXBpbmdUb1JlbW92ZSgpO1xuICAgIGNvbnN0IG5ld0dyb3VwQ29sdW1ucyA9IGNvbHVtbkdyb3VwaW5nVG9SZW1vdmUubGVuZ3RoID4gMCA/XG4gICAgICB0aGlzLnRhYmxlLmdyb3VwZWRDb2x1bW5zQXJyYXkuZmlsdGVyKGNvbCA9PiAhY29sdW1uR3JvdXBpbmdUb1JlbW92ZS5pbmNsdWRlcyhjb2wpKSA6XG4gICAgICB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7XG4gICAgICB2aXNpYmxlQ29sQXJyYXk6IHRoaXMuZ2V0VmlzaWJsZUNvbHVtbnMoKSxcbiAgICAgIGNvbHVtbnNPcmRlcjogdGhpcy5nZXRDb2x1bW5zT3JkZXIoKSxcbiAgICAgIHNvcnRDb2x1bW5zOiBuZXdTb3J0Q29sdW1ucyxcbiAgICAgIGNvbHVtblZhbHVlRmlsdGVyc1RvUmVtb3ZlOiB0aGlzLmdldENvbHVtblZhbHVlRmlsdGVyc1RvUmVtb3ZlKCksXG4gICAgICBncm91cENvbHVtbnM6IG5ld0dyb3VwQ29sdW1uc1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWaXNpYmxlQ29sdW1ucygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maWx0ZXIoY29sID0+IGNvbC52aXNpYmxlKS5tYXAoY29sID0+IGNvbC5hdHRyKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29sdW1uc09yZGVyKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zLm1hcChjb2wgPT4gY29sLmF0dHIpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb2x1bW5WYWx1ZUZpbHRlcnNUb1JlbW92ZSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maWx0ZXIoY29sID0+IGNvbC5kZWxldGVWYWx1ZUZpbHRlcikubWFwKGNvbCA9PiBjb2wuYXR0cik7XG4gIH1cblxuICBwcml2YXRlIGdldENvbHVtblNvcnRpbmdUb1JlbW92ZSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maWx0ZXIoY29sID0+IGNvbC5kZWxldGVTb3J0Q29sdW1tbikubWFwKGNvbCA9PiBjb2wuYXR0cik7XG4gIH1cblxuICBwcml2YXRlIGdldENvbHVtbkdyb3VwaW5nVG9SZW1vdmUoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wuZGVsZXRlR3J1cGluZ0NvbHVtbikubWFwKGNvbCA9PiBjb2wuYXR0cik7XG4gIH1cbn1cbiIsIjxzcGFuIG1hdC1kaWFsb2ctdGl0bGU+e3sgJ1RBQkxFLkJVVFRPTlMuQ09MVklTJyB8IG9UcmFuc2xhdGUgfX08L3NwYW4+XG5cblxuPG1hdC1kaWFsb2ctY29udGVudD5cbiAgPGRpdiBtYXQtc3ViaGVhZGVyPnt7J1RBQkxFLlZJU0lCTEVfQ09MVU1OUy5ERVNDUklQVElPTicgfCBvVHJhbnNsYXRlfX08L2Rpdj5cblxuICA8ZGl2IFtuZ0NsYXNzXT1cInJvd0hlaWdodFwiPlxuICAgIDxtYXQtbGlzdCBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiPlxuICAgICAgPG1hdC1saXN0LWl0ZW0gKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zXCIgY2RrRHJhZyAoY2xpY2spPVwib25DbGlja0NvbHVtbihjb2x1bW4pXCIgW25nQ2xhc3NdPVwieydjb2x1bW4taGlkZGVuJzohY29sdW1uLnZpc2libGV9XCJcbiAgICAgICAgY2xhc3M9XCJvLWRyYWctbGlzdC1pdGVtLWJveFwiPlxuICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhGbGV4IGZ4TGF5b3V0QWxpZ249XCJzdHJldGNoIGNlbnRlclwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBtYXRMaXN0SXRlbUljb24gc3ZnSWNvbj1cIm9udGltaXplOmRyYWdfaGFuZGxlXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICA8c3BhbiBtYXRMaXN0SXRlbUxpbmUgZnhGbGV4Pnt7IChjb2x1bW4udGl0bGUgfHwgY29sdW1uLmF0dHIpIHwgb1RyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJjb2x1bW4udmlzaWJsZVwiIHN2Z0ljb249XCJvbnRpbWl6ZTp2aXNpYmlsaXR5XCIgY29sb3I9XCJwcmltYXJ5XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhY29sdW1uLnZpc2libGVcIiBzdmdJY29uPVwib250aW1pemU6dmlzaWJpbGl0eV9vZmZcIj48L21hdC1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gICAgICA8L21hdC1saXN0LWl0ZW0+XG4gICAgPC9tYXQtbGlzdD5cbiAgPC9kaXY+XG48L21hdC1kaWFsb2ctY29udGVudD5cblxuPG1hdC1kaWFsb2ctYWN0aW9ucyBmeExheW91dEFsaWduPVwiZW5kIGNlbnRlclwiPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwibnVsbFwiIGNsYXNzPVwiby1idXR0b24tZGVmYXVsdCBjYW5jZWxcIiBjYW5jZWw+e3sgJ0NBTkNFTCcgfCBvVHJhbnNsYXRlIH19PC9idXR0b24+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPVwiY2xvc2VEaWFsb2coKVwiIGNsYXNzPVwiby1idXR0b24tcHJpbWFyeVwiPnt7ICdBQ0NFUFQnIHwgb1RyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4iXX0=
|
|
@@ -16,4 +16,5 @@ export * from './row/table-row-expandable/o-table-row-expandable.component';
|
|
|
16
16
|
export * from './o-table-datasource.service';
|
|
17
17
|
export * from './o-table-strategy.service';
|
|
18
18
|
export * from './pipes/o-table-row-class.pipe';
|
|
19
|
-
|
|
19
|
+
export * from './skeleton/o-table-skeleton.component';
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyw2REFBNkQsQ0FBQztBQUM1RSxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHVDQUF1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0bWVudS9vLXRhYmxlLWNvbnRleHQtbWVudS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9kZWZhdWx0LW8tdGFibGUtb3B0aW9ucy5jbGFzcyc7XG5leHBvcnQgKiBmcm9tICcuL2RlZmF1bHQtby10YWJsZS5kYXRhc291cmNlJztcbmV4cG9ydCAqIGZyb20gJy4vZGlhbG9nL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vZXhwb3J0LWJ1dHRvbi9vLXRhYmxlLWV4cG9ydC1idXR0b24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZXhwb3J0LWJ1dHRvbi9vLXRhYmxlLWV4cG9ydC1idXR0b24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zvb3Rlci9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2hlYWRlci9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL28tdGFibGUuZGFvJztcbmV4cG9ydCAqIGZyb20gJy4vcm93L28tdGFibGUtcm93LWdyb3VwLmNsYXNzJztcbmV4cG9ydCAqIGZyb20gJy4vcm93L28tdGFibGUtcm93LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NvcnQvby1tYXQtc29ydCc7XG5leHBvcnQgKiBmcm9tICcuL3NvcnQvby1tYXQtc29ydC1oZWFkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9zb3J0L28tbWF0LXNvcnQtbW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vcm93L3RhYmxlLXJvdy1leHBhbmRhYmxlL28tdGFibGUtcm93LWV4cGFuZGFibGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vby10YWJsZS1kYXRhc291cmNlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9vLXRhYmxlLXN0cmF0ZWd5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy9vLXRhYmxlLXJvdy1jbGFzcy5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vc2tlbGV0b24vby10YWJsZS1za2VsZXRvbi5jb21wb25lbnQnOyJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Component, ElementRef, Injector, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import { OSkeletonComponent } from '
|
|
2
|
+
import { OSkeletonComponent } from '../../../o-skeleton.component';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/flex-layout/flex";
|
|
5
5
|
import * as i2 from "ngx-skeleton-loader";
|
|
@@ -23,4 +23,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
23
23
|
'[class.o-table-skeleton]': 'true'
|
|
24
24
|
}, template: "<div class=\"o-table-skeleton-header\" fxLayoutGap=\"10px\">\n</div>\n<div class=\"o-table-skeleton-item\" fxLayout=\"row\" fxLayoutGap=\"10px\" fxLayoutAlign=\"start center\">\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader fxFlex count=\"{{count}}\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"{{count}}\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20\">\n <ngx-skeleton-loader count=\"{{count}}\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"{{count}}\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n <div fxFlex=\"20%\">\n <ngx-skeleton-loader count=\"{{count}}\" animation=\"{{isDarkMode?'progress-dark':'progress'}}\"\n [theme]=\"{height:'20px','border-radius': '0', 'margin': '0'}\"></ngx-skeleton-loader>\n </div>\n</div>\n\n", styles: [".o-table-skeleton{height:100%;width:100%;position:relative;padding:10px}.o-table-skeleton .o-table-skeleton-header{height:40px;margin:0 10px 10px}.o-table-skeleton .o-table-skeleton-item{margin:0 10px}\n"] }]
|
|
25
25
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Injector }]; } });
|
|
26
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1za2VsZXRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9leHRlbnNpb25zL3NrZWxldG9uL28tdGFibGUtc2tlbGV0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvZXh0ZW5zaW9ucy9za2VsZXRvbi9vLXRhYmxlLXNrZWxldG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBYSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQWFuRSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsa0JBQWtCO0lBRTdELFlBQXNCLEtBQWlCLEVBQVksUUFBa0I7UUFDbkUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBREssVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUFZLGFBQVEsR0FBUixRQUFRLENBQVU7SUFFckUsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQztRQUU3RCxNQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztRQUNyRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7O3FIQVhVLHVCQUF1Qjt5R0FBdkIsdUJBQXVCLDJJQ2RwQyxrMENBeUJBOzRGRFhhLHVCQUF1QjtrQkFWbkMsU0FBUzsrQkFDRSxrQkFBa0IsaUJBR2IsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSiwwQkFBMEIsRUFBRSxNQUFNO3FCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0b3IsIE9uRGVzdHJveSwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9Ta2VsZXRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL28tc2tlbGV0b24uY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLXRhYmxlLXNrZWxldG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tdGFibGUtc2tlbGV0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLXRhYmxlLXNrZWxldG9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLm8tdGFibGUtc2tlbGV0b25dJzogJ3RydWUnXG4gIH1cblxufSlcbmV4cG9ydCBjbGFzcyBPVGFibGVTa2VsZXRvbkNvbXBvbmVudCBleHRlbmRzIE9Ta2VsZXRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGVsUmVmOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpXG4gIH1cblxuICBnZXQgY291bnQoKSB7XG4gICAgY29uc3QgcGFyZW50RWxlbWVudCA9IHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgIC8qIGF2YWlsYWJsZSBwYXJlbnRIZWlnaHQgPSBwYXJlbnRFbGVtZW50IGhlaWdodCAgLSAoaGVhZGVyIHRhYmxlIGhlYWRlciBoZWlnaHQgKyBtYXJnaW4gYm90dG9tKSovXG4gICAgY29uc3QgcGFyZW50SGVpZ2h0ID0gcGFyZW50RWxlbWVudC5vZmZzZXRIZWlnaHQgLSA1MDtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihwYXJlbnRIZWlnaHQgLyAzMCk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cIm8tdGFibGUtc2tlbGV0b24taGVhZGVyXCIgZnhMYXlvdXRHYXA9XCIxMHB4XCI+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJvLXRhYmxlLXNrZWxldG9uLWl0ZW1cIiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIj5cbiAgPGRpdiBmeEZsZXg9XCIyMCVcIj5cbiAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBmeEZsZXggY291bnQ9XCJ7e2NvdW50fX1cIiBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiXG4gICAgICBbdGhlbWVdPVwie2hlaWdodDonMjBweCcsJ2JvcmRlci1yYWRpdXMnOiAnMCcsICdtYXJnaW4nOiAnMCd9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBmeEZsZXg9XCIyMCVcIj5cbiAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBjb3VudD1cInt7Y291bnR9fVwiIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCJcbiAgICAgIFt0aGVtZV09XCJ7aGVpZ2h0OicyMHB4JywnYm9yZGVyLXJhZGl1cyc6ICcwJywgJ21hcmdpbic6ICcwJ31cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGZ4RmxleD1cIjIwXCI+XG4gICAgPG5neC1za2VsZXRvbi1sb2FkZXIgY291bnQ9XCJ7e2NvdW50fX1cIiBhbmltYXRpb249XCJ7e2lzRGFya01vZGU/J3Byb2dyZXNzLWRhcmsnOidwcm9ncmVzcyd9fVwiXG4gICAgICBbdGhlbWVdPVwie2hlaWdodDonMjBweCcsJ2JvcmRlci1yYWRpdXMnOiAnMCcsICdtYXJnaW4nOiAnMCd9XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBmeEZsZXg9XCIyMCVcIj5cbiAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBjb3VudD1cInt7Y291bnR9fVwiIGFuaW1hdGlvbj1cInt7aXNEYXJrTW9kZT8ncHJvZ3Jlc3MtZGFyayc6J3Byb2dyZXNzJ319XCJcbiAgICAgIFt0aGVtZV09XCJ7aGVpZ2h0OicyMHB4JywnYm9yZGVyLXJhZGl1cyc6ICcwJywgJ21hcmdpbic6ICcwJ31cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGZ4RmxleD1cIjIwJVwiPlxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyIGNvdW50PVwie3tjb3VudH19XCIgYW5pbWF0aW9uPVwie3tpc0RhcmtNb2RlPydwcm9ncmVzcy1kYXJrJzoncHJvZ3Jlc3MnfX1cIlxuICAgICAgW3RoZW1lXT1cIntoZWlnaHQ6JzIwcHgnLCdib3JkZXItcmFkaXVzJzogJzAnLCAnbWFyZ2luJzogJzAnfVwiPjwvbmd4LXNrZWxldG9uLWxvYWRlcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuIl19
|