@acorex/data-grid 16.18.39 → 16.18.41

Sign up to get free protection for your applications and to get access to all the features.
@@ -17,13 +17,16 @@ export class AXGridRowNumberColumn extends AXGridDataColumn {
17
17
  : AXConfig.get('layout.rtl')
18
18
  ? 'ردیف'
19
19
  : 'Row'),
20
- (col.valueGetter = 'node.rowIndex + 1'),
21
- (col.pinned =
22
- this.pinned == null
23
- ? null
24
- : this.pinned === 'start'
25
- ? 'right'
26
- : 'left'),
20
+ (col.valueGetter = (params) => {
21
+ if (!params.data)
22
+ return null;
23
+ if (params.data.rowNumber == null && params.node) {
24
+ params.data.rowNumber = params.node.rowIndex + 1;
25
+ }
26
+ return params.data.rowNumber;
27
+ });
28
+ (col.pinned =
29
+ this.pinned == null ? null : this.pinned === 'start' ? 'right' : 'left'),
27
30
  (col.filter = false);
28
31
  col.resizable = true;
29
32
  col.sortable = false;
@@ -48,4 +51,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.7", ngImpor
48
51
  }], ctorParameters: () => [], propDecorators: { condition: [{
49
52
  type: Input
50
53
  }] } });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LW51bWJlci1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWdyaWQvc3JjL2xpYi9kYXRhLWdyaWQvY29sdW1ucy9yb3ctbnVtYmVyLWNvbHVtbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFVeEMsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGdCQUFnQjtJQUN6RDtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztJQUVELFFBQVEsS0FBVSxDQUFDO0lBR25CLFNBQVMsQ0FBc0I7SUFFL0IsTUFBTTtRQUNKLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixtRUFBbUU7UUFDbkUsdUNBQXVDO1FBRXZDLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTztZQUM1QixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDZCxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUM7Z0JBQzVCLENBQUMsQ0FBQyxNQUFNO2dCQUNSLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDUixDQUFDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsbUJBQW1CLENBQUM7WUFDdkMsQ0FBQyxHQUFHLENBQUMsTUFBTTtnQkFDVCxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUk7b0JBQ2pCLENBQUMsQ0FBQyxJQUFJO29CQUNOLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLE9BQU87d0JBQ3pCLENBQUMsQ0FBQyxPQUFPO3dCQUNULENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDYixDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDdkIsR0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDckIsR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDckIsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRXZCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzt1R0FqQ1UscUJBQXFCOzJGQUFyQixxQkFBcUIsbUZBTHJCO1lBQ1QsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFO1NBQ2xFLGlEQUhTLEVBQUU7OzJGQU1ELHFCQUFxQjtrQkFSakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxRQUFRLEVBQUUsRUFBRTtvQkFDWixTQUFTLEVBQUU7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyx1QkFBdUIsRUFBRTtxQkFDbEU7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEO3dEQVNDLFNBQVM7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYR3JpZERhdGFDb2x1bW4gfSBmcm9tICcuL2NvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQ29uZmlnIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtcm93LW51bWJlci1jb2x1bW4nLFxuICB0ZW1wbGF0ZTogJycsXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogQVhHcmlkRGF0YUNvbHVtbiwgdXNlRXhpc3Rpbmc6IEFYR3JpZFJvd051bWJlckNvbHVtbiB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQVhHcmlkUm93TnVtYmVyQ29sdW1uIGV4dGVuZHMgQVhHcmlkRGF0YUNvbHVtbiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgQElucHV0KClcbiAgY29uZGl0aW9uOiAocGFyYW1zKSA9PiBib29sZWFuO1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBjb2wgPSBzdXBlci5yZW5kZXIoKTtcbiAgICAvLyAgY29sLmNoZWNrYm94U2VsZWN0aW9uID0gdGhpcy5jb25kaXRpb24gPyB0aGlzLmNvbmRpdGlvbiA6IHRydWU7XG4gICAgLy8gIGNvbC5oZWFkZXJDaGVja2JveFNlbGVjdGlvbiA9IHRydWU7XG5cbiAgICAoY29sLmhlYWRlck5hbWUgPSB0aGlzLmNhcHRpb25cbiAgICAgID8gdGhpcy5jYXB0aW9uXG4gICAgICA6IEFYQ29uZmlnLmdldCgnbGF5b3V0LnJ0bCcpXG4gICAgICA/ICfYsdiv24zZgSdcbiAgICAgIDogJ1JvdycpLFxuICAgICAgKGNvbC52YWx1ZUdldHRlciA9ICdub2RlLnJvd0luZGV4ICsgMScpLFxuICAgICAgKGNvbC5waW5uZWQgPVxuICAgICAgICB0aGlzLnBpbm5lZCA9PSBudWxsXG4gICAgICAgICAgPyBudWxsXG4gICAgICAgICAgOiB0aGlzLnBpbm5lZCA9PT0gJ3N0YXJ0J1xuICAgICAgICAgID8gJ3JpZ2h0J1xuICAgICAgICAgIDogJ2xlZnQnKSxcbiAgICAgIChjb2wuZmlsdGVyID0gZmFsc2UpO1xuICAgIGNvbC5yZXNpemFibGUgPSB0cnVlO1xuICAgIGNvbC5zb3J0YWJsZSA9IGZhbHNlO1xuICAgIGNvbC53aWR0aCA9IHRoaXMud2lkdGg7XG5cbiAgICByZXR1cm4gY29sO1xuICB9XG59XG4iXX0=
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LW51bWJlci1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWdyaWQvc3JjL2xpYi9kYXRhLWdyaWQvY29sdW1ucy9yb3ctbnVtYmVyLWNvbHVtbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFVeEMsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGdCQUFnQjtJQUN6RDtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztJQUVELFFBQVEsS0FBVSxDQUFDO0lBR25CLFNBQVMsQ0FBc0I7SUFFL0IsTUFBTTtRQUNKLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixtRUFBbUU7UUFDbkUsdUNBQXVDO1FBRXZDLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTztZQUM1QixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU87WUFDZCxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUM7Z0JBQzVCLENBQUMsQ0FBQyxNQUFNO2dCQUNSLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDUixDQUFDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJO29CQUFFLE9BQU8sSUFBSSxDQUFDO2dCQUM5QixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ2pELE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztnQkFDbkQsQ0FBQztnQkFDRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1FBRUwsQ0FBQyxHQUFHLENBQUMsTUFBTTtZQUNULElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUN4RSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDdkIsR0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDckIsR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDckIsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRXZCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzt1R0FwQ1UscUJBQXFCOzJGQUFyQixxQkFBcUIsbUZBTHJCO1lBQ1QsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFO1NBQ2xFLGlEQUhTLEVBQUU7OzJGQU1ELHFCQUFxQjtrQkFSakMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxRQUFRLEVBQUUsRUFBRTtvQkFDWixTQUFTLEVBQUU7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyx1QkFBdUIsRUFBRTtxQkFDbEU7b0JBQ0QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEO3dEQVNDLFNBQVM7c0JBRFIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYR3JpZERhdGFDb2x1bW4gfSBmcm9tICcuL2NvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQ29uZmlnIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtcm93LW51bWJlci1jb2x1bW4nLFxuICB0ZW1wbGF0ZTogJycsXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogQVhHcmlkRGF0YUNvbHVtbiwgdXNlRXhpc3Rpbmc6IEFYR3JpZFJvd051bWJlckNvbHVtbiB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQVhHcmlkUm93TnVtYmVyQ29sdW1uIGV4dGVuZHMgQVhHcmlkRGF0YUNvbHVtbiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgQElucHV0KClcbiAgY29uZGl0aW9uOiAocGFyYW1zKSA9PiBib29sZWFuO1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCBjb2wgPSBzdXBlci5yZW5kZXIoKTtcbiAgICAvLyAgY29sLmNoZWNrYm94U2VsZWN0aW9uID0gdGhpcy5jb25kaXRpb24gPyB0aGlzLmNvbmRpdGlvbiA6IHRydWU7XG4gICAgLy8gIGNvbC5oZWFkZXJDaGVja2JveFNlbGVjdGlvbiA9IHRydWU7XG5cbiAgICAoY29sLmhlYWRlck5hbWUgPSB0aGlzLmNhcHRpb25cbiAgICAgID8gdGhpcy5jYXB0aW9uXG4gICAgICA6IEFYQ29uZmlnLmdldCgnbGF5b3V0LnJ0bCcpXG4gICAgICA/ICfYsdiv24zZgSdcbiAgICAgIDogJ1JvdycpLFxuICAgICAgKGNvbC52YWx1ZUdldHRlciA9IChwYXJhbXMpID0+IHtcbiAgICAgICAgaWYgKCFwYXJhbXMuZGF0YSkgcmV0dXJuIG51bGw7XG4gICAgICAgIGlmIChwYXJhbXMuZGF0YS5yb3dOdW1iZXIgPT0gbnVsbCAmJiBwYXJhbXMubm9kZSkge1xuICAgICAgICAgIHBhcmFtcy5kYXRhLnJvd051bWJlciA9IHBhcmFtcy5ub2RlLnJvd0luZGV4ICsgMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyYW1zLmRhdGEucm93TnVtYmVyO1xuICAgICAgfSk7XG5cbiAgICAoY29sLnBpbm5lZCA9XG4gICAgICB0aGlzLnBpbm5lZCA9PSBudWxsID8gbnVsbCA6IHRoaXMucGlubmVkID09PSAnc3RhcnQnID8gJ3JpZ2h0JyA6ICdsZWZ0JyksXG4gICAgICAoY29sLmZpbHRlciA9IGZhbHNlKTtcbiAgICBjb2wucmVzaXphYmxlID0gdHJ1ZTtcbiAgICBjb2wuc29ydGFibGUgPSBmYWxzZTtcbiAgICBjb2wud2lkdGggPSB0aGlzLndpZHRoO1xuXG4gICAgcmV0dXJuIGNvbDtcbiAgfVxufVxuIl19
@@ -543,17 +543,13 @@ export class AXDataGridComponent {
543
543
  }
544
544
  });
545
545
  }
546
- }
547
- nodes.forEach((i) => {
548
- if (this.autoExpand) {
549
- i.setExpanded(true);
546
+ else {
547
+ args.items = this.handleNodeSelected(nodes);
550
548
  }
551
- args.items.push({
552
- rowLevel: i.level,
553
- rowIndex: i.rowIndex,
554
- data: i.data,
555
- });
556
- });
549
+ }
550
+ else {
551
+ args.items = this.handleNodeSelected(nodes);
552
+ }
557
553
  this.selectionChanged.emit({
558
554
  data: args,
559
555
  component: this,
@@ -690,6 +686,18 @@ export class AXDataGridComponent {
690
686
  this.currentPage = this.getCurrentPageNumber().current;
691
687
  });
692
688
  }
689
+ handleNodeSelected(nodes) {
690
+ return nodes.map((i) => {
691
+ if (this.autoExpand) {
692
+ i.setExpanded(true);
693
+ }
694
+ return {
695
+ rowLevel: i.level,
696
+ rowIndex: i.rowIndex,
697
+ data: i.data,
698
+ };
699
+ });
700
+ }
693
701
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: AXDataGridComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
694
702
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.7", type: AXDataGridComponent, selector: "ax-data-grid", inputs: { paginationPageSizeSelector: "paginationPageSizeSelector", paginationAutoPageSize: "paginationAutoPageSize", paginationPageSize: "paginationPageSize", remoteOperation: "remoteOperation", rowMultiSelectWithClick: "rowMultiSelectWithClick", suppressRowClickSelection: "suppressRowClickSelection", suppressCellSelection: "suppressCellSelection", sizeColumnsToFit: "sizeColumnsToFit", showCheckBox: "showCheckBox", floatingFilter: "floatingFilter", autoExpand: "autoExpand", rowSelectableConditionField: "rowSelectableConditionField", selectionMode: "selectionMode", pagination: "pagination", selectRow: "selectRow", rowGroupPanelShow: "rowGroupPanelShow", loadOnInit: "loadOnInit", enableRangeSelection: "enableRangeSelection", keyField: "keyField", hasChildField: "hasChildField", rowHeight: "rowHeight", groupHideOpenParents: "groupHideOpenParents", maxConcurrentDatasourceRequests: "maxConcurrentDatasourceRequests", blockLoadDebounceMillis: "blockLoadDebounceMillis", showRefreshButton: "showRefreshButton", autoNavigatePage: "autoNavigatePage", rowClass: "rowClass", rtl: "rtl", searchText: "searchText", filter: "filter", columns: "columns", dataSource: "dataSource" }, outputs: { columnsChange: "columnsChange", cellClick: "cellClick", cellDbClick: "cellDbClick", cellFocuse: "cellFocuse", rowClick: "rowClick", rowDbClick: "rowDbClick", selectionChanged: "selectionChanged", rowSelectionChange: "rowSelectionChange", onRowSelectionChanged: "onRowSelectionChanged" }, queries: [{ propertyName: "searchInput", first: true, predicate: AXToolbarSearchComponent, descendants: true, static: true }, { propertyName: "toolbar", first: true, predicate: AXToolbarComponent, descendants: true, static: true }, { propertyName: "rowTemplate", first: true, predicate: AXDataGridRowTemplateComponent, descendants: true, static: true }, { propertyName: "gridDetailTemplate", first: true, predicate: AXDataGridDetailTemplateComponent, descendants: true, static: true }, { propertyName: "_contentDataSource", first: true, predicate: AXDataSourceComponent, descendants: true, static: true }, { propertyName: "_inlineColumns", predicate: AXGridDataColumn }], ngImport: i0, template: "<div class=\"ax-grid-toolbar\" *ngIf=\"toolbar\">\n <ng-content select=\"ax-toolbar\"></ng-content>\n</div>\n<!-- [enableSorting]=\"true\" [enableColResize]=\"true\" [enableFilter]=\"allowFiltering\" -->\n\n<ag-grid-angular\n *ngIf=\"gridView\"\n class=\"ag-theme-balham\"\n [getRowClass]=\"internalGetRowClass\"\n [suppressCopyRowsToClipboard]=\"true\"\n [enableRangeSelection]=\"enableRangeSelection\"\n [serverSideStoreType]=\"'partial'\"\n [style.height]=\"internalHeight\"\n [columnDefs]=\"columnDefs\"\n [enableRtl]=\"rtl\"\n [pagination]=\"pagination\"\n [rowGroupPanelShow]=\"rowGroupPanelShow\"\n [rowModelType]=\"rowModelType\"\n [detailRowHeight]=\"detailRowHeight\"\n [rowHeight]=\"rowHeight\"\n [paginationAutoPageSize]=\"paginationAutoPageSize\"\n [paginationPageSize]=\"paginationPageSize\"\n [paginationPageSizeSelector]=\"paginationPageSizeSelector\"\n [suppressMenuHide]=\"true\"\n [maxConcurrentDatasourceRequests]=\"maxConcurrentDatasourceRequests\"\n [blockLoadDebounceMillis]=\"blockLoadDebounceMillis\"\n [frameworkComponents]=\"frameworkComponents\"\n [isFullWidthCell]=\"isFullWidthCell\"\n [rowSelection]=\"selectionMode\"\n [rowMultiSelectWithClick]=\"rowMultiSelectWithClick\"\n [fullWidthCellRendererFramework]=\"fullWidthCellRendererFramework\"\n [cacheBlockSize]=\"cacheBlockSize\"\n [fullWidthCellRendererParams]=\"fullWidthCellRendererParams\"\n (columnResized)=\"handleColumnResized($event)\"\n (cellClicked)=\"internalGridCellClicked($event)\"\n (cellDoubleClicked)=\"internalGridCellDoubleClicked($event)\"\n (cellFocused)=\"internalGridCellFocused($event)\"\n (rowClicked)=\"internalGridRowClicked($event)\"\n (selectionChanged)=\"internalGridSelectionChanged($event)\"\n (rowSelected)=\"rowSelectionChanged($event)\"\n (rowDoubleClicked)=\"internalGridRowDoubleClicked($event)\"\n (gridReady)=\"internalGridReady($event)\"\n [groupSelectsChildren]=\"groupSelectsChildren\"\n [suppressRowClickSelection]=\"suppressRowClickSelection\"\n [groupSelectsFiltered]=\"true\"\n [suppressCellSelection]=\"suppressCellSelection\"\n [autoGroupColumnDef]=\"autoGroupColumnDef\"\n [suppressAggFuncInHeader]=\"true\"\n [treeData]=\"treeData\"\n [animateRows]=\"true\"\n [isServerSideGroup]=\"isServerSideGroup\"\n [getServerSideGroupKey]=\"getServerSideGroupKey\"\n [masterDetail]=\"masterDetail\"\n [detailCellRendererParams]=\"detailCellRendererParams\"\n [detailCellRenderer]=\"detailCellRenderer\"\n (gridSizeChanged)=\"internalGridSizeChanged($event)\"\n (firstDataRendered)=\"internalGridFirstDataRendered($event)\"\n [localeText]=\"localeText\"\n [groupHideOpenParents]=\"groupHideOpenParents\"\n [allowContextMenuWithControlKey]=\"false\"\n [getMainMenuItems]=\"getMainMenuItems\"\n>\n</ag-grid-angular>\n\n<!-- (displayedColumnsChanged)=\"displayedColumnsChanged($event)\" -->\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "columnMenu", "suppressMenuHide", "enableBrowserTooltips", "tooltipTrigger", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "tooltipShowMode", "tooltipInteraction", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "dataTypeDefinitions", "maintainColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "autoSizeStrategy", "components", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enterNavigatesVertically", "enterNavigatesVerticallyAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "quickFilterText", "cacheQuickFilter", "excludeHiddenColumnsFromQuickFilter", "includeHiddenColumnsInQuickFilter", "quickFilterParser", "quickFilterMatcher", "applyQuickFilterBeforePivotOrAgg", "excludeChildrenWhenTreeDataFiltering", "enableAdvancedFilter", "advancedFilterModel", "includeHiddenColumnsInAdvancedFilter", "advancedFilterParent", "advancedFilterBuilderParams", "suppressAdvancedFilterEval", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "suppressChartToolPanelsButton", "chartToolPanelsDef", "chartMenuItems", "loadingCellRenderer", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationPageSizeSelector", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotMaxGeneratedColumns", "pivotDefaultExpanded", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "alwaysAggregateAtRootLevel", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDuration", "cellFlashDelay", "cellFadeDuration", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererParams", "embedFullWidthRows", "suppressGroupMaintainValueType", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupLockGroupColumns", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupTotalRow", "grandTotalRow", "suppressStickyTotalRow", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "suppressGroupRowsSticky", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "suppressServerSideInfiniteScroll", "suppressServerSideFullWidthLoadingRow", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideEnableClientSideSort", "serverSideOnlyRefreshFilteredGroups", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSidePivotResultFieldSeparator", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellFocus", "suppressHeaderFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "gridId", "deltaSort", "treeDataDisplayType", "functionsPassive", "enableGroupEdit", "initialState", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processUnpinnedColumns", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getLocaleText", "getDocument", "paginationNumberFormatter", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "columnMenuVisibleChanged", "contextMenuVisibleChanged", "cutStart", "cutEnd", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "columnHeaderMouseOver", "columnHeaderMouseLeave", "columnHeaderClicked", "columnHeaderContextMenu", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "rangeDeleteStart", "rangeDeleteEnd", "fillStart", "fillEnd", "filterOpened", "filterChanged", "filterModified", "advancedFilterBuilderVisibleChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "gridReady", "gridPreDestroyed", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "stateUpdated", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pivotMaxColumnsExceeded", "pinnedRowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "storeRefreshed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "tooltipShow", "tooltipHide", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }], encapsulation: i0.ViewEncapsulation.None });
695
703
  }
@@ -797,4 +805,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.7", ngImpor
797
805
  }], onRowSelectionChanged: [{
798
806
  type: Output
799
807
  }] } });
800
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWdyaWQvc3JjL2xpYi9kYXRhLWdyaWQvZGF0YWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWdyaWQvc3JjL2xpYi9kYXRhLWdyaWQvZGF0YWdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHFCQUFxQixHQUV0QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQVd2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBUXBELE9BQU8sRUFDTCxXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixZQUFZLEdBQ2IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RSxPQUFPLEVBQ0wsaUNBQWlDLEVBQ2pDLGdDQUFnQyxHQUNqQyxNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7O0FBRXBGLGNBQWMsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxFQUFFO0lBQ2pELE9BQU8sS0FBSyxDQUFDO0FB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QWtCO3NCQURqQixZQUFZO3VCQUFDLGlDQUFpQyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJekQsa0JBQWtCO3NCQUR6QixZQUFZO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFNMUMsVUFBVTtzQkFEcEIsS0FBSztnQkFVTixTQUFTO3NCQURSLE1BQU07Z0JBS1AsV0FBVztzQkFEVixNQUFNO2dCQUtQLFVBQVU7c0JBRFQsTUFBTTtnQkFLUCxRQUFRO3NCQURQLE1BQU07Z0JBS1AsVUFBVTtzQkFEVCxNQUFNO2dCQUtQLGdCQUFnQjtzQkFEZixNQUFNO2dCQUtQLGtCQUFrQjtzQkFEakIsTUFBTTtnQkFLUCxxQkFBcUI7c0JBRHBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWERhdGFTb3VyY2VDb21wb25lbnQsXG4gIEFYRGF0YVNvdXJjZVJlYWRQYXJhbXMsXG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2VsbENsaWNrZWRFdmVudCxcbiAgQ2VsbEV2ZW50LFxuICBGaXJzdERhdGFSZW5kZXJlZEV2ZW50LFxuICBHcmlkQXBpLFxuICBHcmlkT3B0aW9ucyxcbiAgR3JpZFNpemVDaGFuZ2VkRXZlbnQsXG4gIFJvd0NsaWNrZWRFdmVudCxcbiAgUm93RXZlbnQsXG59IGZyb20gJ2FnLWdyaWQtY29tbXVuaXR5JztcbmltcG9ydCB7IEFYR3JpZERhdGFDb2x1bW4gfSBmcm9tICcuL2NvbHVtbnMvY29sdW1uLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWNlbnNlTWFuYWdlciB9IGZyb20gJ2FnLWdyaWQtZW50ZXJwcmlzZSc7XG5pbXBvcnQge1xuICBBWEdyaWRDZWxsRXZlbnQsXG4gIEFYR3JpZFJvd0V2ZW50LFxuICBBWEdyaWRSb3dQYXJhbXMsXG4gIEFYR3JpZFJvd1NlbGVjdGlvbkV2ZW50LFxufSBmcm9tICcuL2RhdGFncmlkLmV2ZW50cyc7XG5cbmltcG9ydCB7XG4gIEFYRGF0YUV2ZW50LFxuICBBWFRvb2xiYXJDb21wb25lbnQsXG4gIEFYVG9vbGJhclNlYXJjaENvbXBvbmVudCxcbiAgQVhWYWx1ZUV2ZW50LFxufSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQVhDb25maWcsIEFYVHJhbnNsYXRvciB9IGZyb20gJ0BhY29yZXgvY29yZSc7XG5pbXBvcnQgeyBBWERhdGVQaWNrZXJGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbHVtbnMvZGF0ZS1jb2x1bW4uY29tcG9uZW50JztcbmltcG9ydCB7XG4gIEFYRGF0YUdyaWREZXRhaWxUZW1wbGF0ZUNvbXBvbmVudCxcbiAgQVhEYXRhR3JpZERldGFpbFRlbXBsYXRlUmVuZGVyZXIsXG59IGZyb20gJy4vdGVtcGxhdGVzL2RldGFpbC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhEYXRhR3JpZFJvd1RlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi90ZW1wbGF0ZXMvcm93LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5cbkxpY2Vuc2VNYW5hZ2VyLnByb3RvdHlwZS5pc0Rpc3BsYXlXYXRlcm1hcmsgPSAoKSA9PiB7XG4gIHJldHVybiBmYWxzZTtcbn07XG5MaWNlbnNlTWFuYWdlci5wcm90b3R5cGUudmFsaWRhdGVMaWNlbnNlID0gZnVuY3Rpb24gKCkge1xuICAvL2NvbnNvbGUuaW5mbygnQ3JhY2tlZCBieSBBcmFzaCBPc2hub3VkaSEnKTtcbn07XG5cbmV4cG9ydCBjbGFzcyBBWERhdGFHcmlkQ29sdW1uc0NoYW5nZUV2ZW50IGV4dGVuZHMgQVhWYWx1ZUV2ZW50PFxuICBBWEdyaWREYXRhQ29sdW1uW11cbj4ge1xuICBkZWNsYXJlIGNvbXBvbmVudDogQVhEYXRhR3JpZENvbXBvbmVudDtcbn1cbmV4cG9ydCBjbGFzcyBBWERhdGFHcmlkQ2VsbEV2ZW50IGV4dGVuZHMgQVhEYXRhRXZlbnQ8QVhHcmlkQ2VsbEV2ZW50PiB7XG4gIGRlY2xhcmUgY29tcG9uZW50OiBBWERhdGFHcmlkQ29tcG9uZW50O1xufVxuZXhwb3J0IGNsYXNzIEFYRGFhZ3JpZFJvd0NsaWNrRXZlbnQgZXh0ZW5kcyBBWERhdGFFdmVudDxBWEdyaWRSb3dFdmVudD4ge1xuICBkZWNsYXJlIGNvbXBvbmVudDogQVhEYXRhR3JpZENvbXBvbmVudDtcbn1cblxuZXhwb3J0IGNsYXNzIEFYRGF0YUdyaWRTZWxlY3Rpb25DaGFuZ2VFdmVudCBleHRlbmRzIEFYRGF0YUV2ZW50PEFYR3JpZFJvd1NlbGVjdGlvbkV2ZW50PiB7XG4gIGRlY2xhcmUgY29tcG9uZW50OiBBWERhdGFHcmlkQ29tcG9uZW50O1xufVxuXG5leHBvcnQgY2xhc3MgQVhEYXRhR3JpZFJvd1NlbGVjdGlvbkNoYW5nZUV2ZW50IGV4dGVuZHMgQVhEYXRhRXZlbnQ8YW55PiB7XG4gIGRlY2xhcmUgY29tcG9uZW50OiBBWERhdGFHcmlkQ29tcG9uZW50O1xuICBkZWNsYXJlIHNlbGVjdGVkOiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1kYXRhLWdyaWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGF0YWdyaWQuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAvLyBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBWERhdGFHcmlkQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBncmlkQXBpO1xuICBwcml2YXRlIGRhdGFTb3VyY2VTdWNjZXNzQ2FsbGJhY2s7XG4gIGxvY2FsZVRleHQ6IGFueTtcblxuICBncmlkT3B0aW9uczogR3JpZE9wdGlvbnM7XG4gIGNvbHVtbkRlZnM6IGFueVtdID0gW107XG4gIHJvd01vZGVsVHlwZSA9ICdjbGllbnRTaWRlJztcbiAgZnVsbFdpZHRoQ2VsbFJlbmRlcmVyRnJhbWV3b3JrOiBhbnk7XG4gIGZ1bGxXaWR0aENlbGxSZW5kZXJlclBhcmFtczogYW55O1xuICBmcmFtZXdvcmtDb21wb25lbnRzOiBhbnkgPSB7fTtcbiAgaXNGdWxsV2lkdGhDZWxsOiBGdW5jdGlvbjtcbiAgaW50ZXJuYWxIZWlnaHQgPSAnMTAwJSc7XG4gIGRldGFpbENlbGxSZW5kZXJlcjogYW55O1xuICBkZXRhaWxDZWxsUmVuZGVyZXJQYXJhbXM6IGFueTtcbiAgZGV0YWlsUm93SGVpZ2h0OiBudW1iZXI7XG4gIG1hc3RlckRldGFpbCA9IGZhbHNlO1xuICB0cmVlRGF0YSA9IGZhbHNlO1xuICBlbmFiZWxTZWxlY3QgPSBmYWxzZTtcbiAgZ3JpZFZpZXcgPSBmYWxzZTtcbiAgZ3JvdXBTZWxlY3RzQ2hpbGRyZW4gPSBmYWxzZTtcbiAgb2xkU2VsZWN0aW9uTm9kZXM6IGFueVtdID0gW107XG4gIGF1dG9Hcm91cENvbHVtbkRlZjogYW55ID0ge307XG4gIGN1cnJlbnRQYWdlID0gMTtcblxuICBASW5wdXQoKVxuICBwYWdpbmF0aW9uUGFnZVNpemVTZWxlY3RvcjogbnVtYmVyW10gfCBib29sZWFuID0gWzEwLCAyMF07XG5cbiAgQElucHV0KClcbiAgcGFnaW5hdGlvbkF1dG9QYWdlU2l6ZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHBhZ2luYXRpb25QYWdlU2l6ZSA9IDIwO1xuXG4gIGNhY2hlQmxvY2tTaXplID0gdGhpcy5wYWdpbmF0aW9uUGFnZVNpemU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJlbW90ZU9wZXJhdGlvbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByb3dNdWx0aVNlbGVjdFdpdGhDbGljayA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHN1cHByZXNzQ2VsbFNlbGVjdGlvbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaXplQ29sdW1uc1RvRml0ID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBzaG93Q2hlY2tCb3ggPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGZsb2F0aW5nRmlsdGVyID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgYXV0b0V4cGFuZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHJvd1NlbGVjdGFibGVDb25kaXRpb25GaWVsZDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdGlvbk1vZGU6ICdzaW5nbGUnIHwgJ211bHRpcGxlJyA9ICdzaW5nbGUnO1xuXG4gIEBJbnB1dCgpXG4gIHBhZ2luYXRpb246IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdFJvdzogYW55W10gPSBbXTtcblxuICBASW5wdXQoKVxuICByb3dHcm91cFBhbmVsU2hvdzogJ2Fsd2F5cycgfCAnbmV2ZXInID0gJ25ldmVyJztcblxuICBASW5wdXQoKVxuICBsb2FkT25Jbml0OiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKVxuICBlbmFibGVSYW5nZVNlbGVjdGlvbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGtleUZpZWxkOiBzdHJpbmcgPSAnbnVsbCc7XG5cbiAgQElucHV0KClcbiAgaGFzQ2hpbGRGaWVsZDogc3RyaW5nID0gJ251bGwnO1xuXG4gIEBJbnB1dCgpXG4gIHJvd0hlaWdodCA9IDI4O1xuXG4gIEBJbnB1dCgpXG4gIGdyb3VwSGlkZU9wZW5QYXJlbnRzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgbWF4Q29uY3VycmVudERhdGFzb3VyY2VSZXF1ZXN0czogbnVtYmVyO1xuXG4gIEBJbnB1dCgpXG4gIGJsb2NrTG9hZERlYm91bmNlTWlsbGlzOiBudW1iZXI7XG5cbiAgQElucHV0KClcbiAgc2hvd1JlZnJlc2hCdXR0b24gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGF1dG9OYXZpZ2F0ZVBhZ2UgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICByb3dDbGFzcz86IChcbiAgICBwYXJhbXM6IEFYR3JpZFJvd1BhcmFtc1xuICApID0+IChzdHJpbmcgfCBzdHJpbmdbXSkgfCAoc3RyaW5nIHwgc3RyaW5nW10pO1xuXG4gIEBJbnB1dCgpXG4gIHJ0bDogYm9vbGVhbiA9IEFYQ29uZmlnLmdldCgnbGF5b3V0LnJ0bCcpO1xuXG4gIHByaXZhdGUgX3NlYXJjaFRleHQ6IHN0cmluZztcbiAgQElucHV0KClcbiAgcHVibGljIGdldCBzZWFyY2hUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaFRleHQ7XG4gIH1cbiAgcHVibGljIHNldCBzZWFyY2hUZXh0KHY6IHN0cmluZykge1xuICAgIGlmICh2ICE9PSB0aGlzLl9zZWFyY2hUZXh0KSB7XG4gICAgICB0aGlzLl9zZWFyY2hUZXh0ID0gdjtcbiAgICAgIGlmICh0aGlzLmdyaWRBcGkpIHtcbiAgICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgICAgIHRoaXMuZ3JpZEFwaS5zZXRRdWlja0ZpbHRlcih0aGlzLnNlYXJjaFRleHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2ZpbHRlcjogYW55W107XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgZmlsdGVyKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyO1xuICB9XG4gIHB1YmxpYyBzZXQgZmlsdGVyKHY6IGFueVtdKSB7XG4gICAgaWYgKHYgIT09IHRoaXMuX2ZpbHRlcikge1xuICAgICAgdGhpcy5fZmlsdGVyID0gdjtcbiAgICAgIHRoaXMuX2ZpbHRlci5mb3JFYWNoKChmKSA9PiB7XG4gICAgICAgIGNvbnN0IGZjID0gdGhpcy5ncmlkQXBpLmdldEZpbHRlckluc3RhbmNlKGYuZmllbGQpO1xuICAgICAgICBpZiAoZmMpIHtcbiAgICAgICAgICBjb25zdCBmZiA9IGZjLmdldEZyYW1ld29ya0NvbXBvbmVudEluc3RhbmNlKCk7XG4gICAgICAgICAgZmYuc2V0TW9kZWwoZik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIEBDb250ZW50Q2hpbGRyZW4oQVhHcmlkRGF0YUNvbHVtbilcbiAgcHJpdmF0ZSBfaW5saW5lQ29sdW1uczogUXVlcnlMaXN0PEFYR3JpZERhdGFDb2x1bW4+O1xuXG4gIEBPdXRwdXQoKVxuICBjb2x1bW5zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QVhEYXRhR3JpZENvbHVtbnNDaGFuZ2VFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QVhEYXRhR3JpZENvbHVtbnNDaGFuZ2VFdmVudD4oKTtcblxuICBwcml2YXRlIF9jb2x1bW5zOiBBWEdyaWREYXRhQ29sdW1uW10gPSBbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGdldCBjb2x1bW5zKCk6IEFYR3JpZERhdGFDb2x1bW5bXSB7XG4gICAgcmV0dXJuIHRoaXMuX2lubGluZUNvbHVtbnNcbiAgICAgID8gWy4uLnRoaXMuX2NvbHVtbnMsIC4uLnRoaXMuX2lubGluZUNvbHVtbnMudG9BcnJheSgpXVxuICAgICAgOiB0aGlzLl9jb2x1bW5zO1xuICB9XG5cbiAgcHVibGljIHNldCBjb2x1bW5zKHZhbDogQVhHcmlkRGF0YUNvbHVtbltdKSB7XG4gICAgaWYgKHZhbCAmJiB2YWwubGVuZ3RoKSB7XG4gICAgICBsZXQgb2xkID0gdGhpcy5fY29sdW1ucztcbiAgICAgIHRoaXMuX2NvbHVtbnMgPSB2YWw7XG4gICAgICB0aGlzLmNvbHVtbnNDaGFuZ2UuZW1pdCh7XG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgdmFsdWU6IHZhbCxcbiAgICAgICAgb2xkVmFsdWU6IG9sZCxcbiAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBkZWZhdWx0Q29sRGVmOiBhbnkgPSB7XG4gICAgZmlsdGVyOiB0cnVlLFxuICAgIGZsb2F0aW5nRmlsdGVyOiB0cnVlLFxuICB9O1xuXG4gIEBDb250ZW50Q2hpbGQoQVhUb29sYmFyU2VhcmNoQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBzZWFyY2hJbnB1dDogQVhUb29sYmFyU2VhcmNoQ29tcG9uZW50O1xuXG4gIEBDb250ZW50Q2hpbGQoQVhUb29sYmFyQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICB0b29sYmFyOiBBWFRvb2xiYXJDb21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZChBWERhdGFHcmlkUm93VGVtcGxhdGVDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHJvd1RlbXBsYXRlOiBBWERhdGFHcmlkUm93VGVtcGxhdGVDb21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZChBWERhdGFHcmlkRGV0YWlsVGVtcGxhdGVDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGdyaWREZXRhaWxUZW1wbGF0ZTogQVhEYXRhR3JpZERldGFpbFRlbXBsYXRlQ29tcG9uZW50O1xuXG4gIEBDb250ZW50Q2hpbGQoQVhEYXRhU291cmNlQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwcml2YXRlIF9jb250ZW50RGF0YVNvdXJjZTogQVhEYXRhU291cmNlQ29tcG9uZW50O1xuXG4gIHByaXZhdGUgX2RhdGFTb3VyY2U6IEFYRGF0YVNvdXJjZUNvbXBvbmVudDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGRhdGFTb3VyY2UoKTogQVhEYXRhU291cmNlQ29tcG9uZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZSA/IHRoaXMuX2RhdGFTb3VyY2UgOiB0aGlzLl9jb250ZW50RGF0YVNvdXJjZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgZGF0YVNvdXJjZSh2OiBBWERhdGFTb3VyY2VDb21wb25lbnQpIHtcbiAgICB0aGlzLl9kYXRhU291cmNlID0gdjtcbiAgfVxuXG4gIEBPdXRwdXQoKVxuICBjZWxsQ2xpY2s6IEV2ZW50RW1pdHRlcjxBWERhdGFHcmlkQ2VsbEV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFHcmlkQ2VsbEV2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICBjZWxsRGJDbGljazogRXZlbnRFbWl0dGVyPEFYRGF0YUdyaWRDZWxsRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPEFYRGF0YUdyaWRDZWxsRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGNlbGxGb2N1c2U6IEV2ZW50RW1pdHRlcjxBWERhdGFHcmlkQ2VsbEV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFHcmlkQ2VsbEV2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICByb3dDbGljazogRXZlbnRFbWl0dGVyPEFYRGFhZ3JpZFJvd0NsaWNrRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPEFYRGFhZ3JpZFJvd0NsaWNrRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHJvd0RiQ2xpY2s6IEV2ZW50RW1pdHRlcjxBWERhYWdyaWRSb3dDbGlja0V2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxBWERhYWdyaWRSb3dDbGlja0V2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICBzZWxlY3Rpb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhEYXRhR3JpZFNlbGVjdGlvbkNoYW5nZUV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFHcmlkU2VsZWN0aW9uQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHJvd1NlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPEFYRGF0YUdyaWRTZWxlY3Rpb25DaGFuZ2VFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QVhEYXRhR3JpZFNlbGVjdGlvbkNoYW5nZUV2ZW50PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvblJvd1NlbGVjdGlvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWERhdGFHcmlkUm93U2VsZWN0aW9uQ2hhbmdlRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPEFYRGF0YUdyaWRSb3dTZWxlY3Rpb25DaGFuZ2VFdmVudD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlZjogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4sXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMubG9jYWxlVGV4dCA9IEFYVHJhbnNsYXRvci5nZXQoJ2RhdGFHcmlkJyk7XG4gIH1cblxuICBwcml2YXRlIGNhbGNIZWlnaHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudG9vbGJhcikge1xuICAgICAgdGhpcy5pbnRlcm5hbEhlaWdodCA9IGBjYWxjKDEwMCUgLSAkezQwfXB4KWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxIZWlnaHQgPSAnMTAwJSc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaW50ZW5hbEdyaWREYXRhU291cmNlKCkge1xuICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgIHJldHVybiB7XG4gICAgICByb3dDb3VudDogbnVsbCxcbiAgICAgIGdldFJvd3M6IChwYXJhbXMpID0+IHtcbiAgICAgICAgdGhhdC5kYXRhU291cmNlU3VjY2Vzc0NhbGxiYWNrID0gcGFyYW1zLnN1Y2Nlc3M7XG5cbiAgICAgICAgY29uc3QgbG9hZFBhcmFtczogQVhEYXRhU291cmNlUmVhZFBhcmFtcyA9IHt9O1xuXG4gICAgICAgIGxvYWRQYXJhbXMuc2VhcmNoVGV4dCA9IHRoYXQuc2VhcmNoVGV4dDtcblxuICAgICAgICBsb2FkUGFyYW1zLnNraXAgPSBwYXJhbXMucmVxdWVzdC5zdGFydFJvdztcblxuICAgICAgICBsb2FkUGFyYW1zLnRha2UgPSBwYXJhbXMucmVxdWVzdC5lbmRSb3cgLSBwYXJhbXMucmVxdWVzdC5zdGFydFJvdztcblxuICAgICAgICBsb2FkUGFyYW1zLnNvcnQgPSBwYXJhbXMucmVxdWVzdC5zb3J0TW9kZWwubWFwKChjKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpZWxkOiBjLmNvbElkLFxuICAgICAgICAgICAgZGlyOiBjLnNvcnQsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbG9hZFBhcmFtcy5ncm91cCA9IHtcbiAgICAgICAgICBmaWVsZHM6IHBhcmFtcy5yZXF1ZXN0LnJvd0dyb3VwQ29scy5tYXAoKHIpID0+IHIuZmllbGQpLFxuICAgICAgICAgIGtleXM6IHBhcmFtcy5yZXF1ZXN0Lmdyb3VwS2V5cyxcbiAgICAgICAgICBwYXJlbnREYXRhOiBwYXJhbXMucGFyZW50Tm9kZS5kYXRhLFxuICAgICAgICB9O1xuXG4gICAgICAgIGxvYWRQYXJhbXMuZmlsdGVyID0gcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWw7XG5cbiAgICAgICAgdGhhdC5kYXRhU291cmNlLmZldGNoKGxvYWRQYXJhbXMpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG4gIGdldE1haW5NZW51SXRlbXMoZSkge1xuICAgIHJldHVybiBbJ3BpblN1Yk1lbnUnLCAnc2VwYXJhdG9yJ107XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmdyaWRBcGkuZGVzdHJveSgpO1xuICB9XG5cbiAgaXNTZXJ2ZXJTaWRlR3JvdXAgPSAoZSkgPT4ge1xuICAgIHJldHVybiBlW3RoaXMuaGFzQ2hpbGRGaWVsZF07XG4gIH07XG5cbiAgZ2V0Q29sdW1uRGVmcyA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5ncmlkQXBpLmdldENvbHVtbkRlZnMoKTtcbiAgfTtcblxuICBnZXRDdXJyZW50UGFnZU51bWJlciA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgY3VycmVudDogdGhpcy5ncmlkQXBpLnBhZ2luYXRpb25HZXRDdXJyZW50UGFnZSgpICsgMSxcbiAgICAgIHRvdGFsOiB0aGlzLmdyaWRBcGkucGFnaW5hdGlvbkdldFRvdGFsUGFnZXMoKSxcbiAgICB9O1xuICB9O1xuXG4gIHBhZ2luYXRpb25Hb1RvUGFnZShudW1iZXIpIHtcbiAgICB0aGlzLmdyaWRBcGkucGFnaW5hdGlvbkdvVG9QYWdlKG51bWJlciAtIDEpO1xuICB9XG5cbiAgZ2V0U2VydmVyU2lkZUdyb3VwS2V5ID0gKGUpID0+IHtcbiAgICByZXR1cm4gZVt0aGlzLmtleUZpZWxkXTtcbiAgfTtcbiAgaW50ZXJuYWxHcmlkUmVhZHkoZ3JpZE9wdGlvbnMpIHtcbiAgICB0aGlzLmdyaWRBcGkgPSBncmlkT3B0aW9ucy5hcGk7XG5cbiAgICB0aGlzLm1hcENvbHVtbnMoKTtcbiAgICB0aGlzLmNhbGNIZWlnaHQoKTtcblxuICAgIGlmICghdGhpcy5sb2FkT25Jbml0KSB7XG4gICAgICB0aGlzLmxvYWRPbkluaXQgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlbW90ZU9wZXJhdGlvbikge1xuICAgICAgdGhpcy5ncmlkQXBpLnNldEdyaWRPcHRpb24oXG4gICAgICAgICdzZXJ2ZXJTaWRlRGF0YXNvdXJjZScsXG4gICAgICAgIHRoaXMuaW50ZW5hbEdyaWREYXRhU291cmNlXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5yZW1vdGVPcGVyYXRpb24pIHtcbiAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnNob3dSZWZyZXNoQnV0dG9uKSB7XG4gICAgICB0aGlzLm1ha2VSZWZyZXNoQnRuKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXV0b05hdmlnYXRlUGFnZSkge1xuICAgICAgdGhpcy5oYW5kbGVOZXh0QnRuQ2xpY2soKTtcbiAgICAgIHRoaXMuaGFuZGxlQmFja0J0bkNsaWNrKCk7XG4gICAgICB0aGlzLmhhbmRsZUxhc3RCdG5DbGljaygpO1xuICAgICAgdGhpcy5oYW5kbGVGaXRzdEJ0bkNsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHRoYXQgPSB0aGlzO1xuICAgIGlmICh0aGlzLnJvd1RlbXBsYXRlKSB7XG4gICAgICB0aGlzLmZ1bGxXaWR0aENlbGxSZW5kZXJlckZyYW1ld29yayA9IHRoaXMucm93VGVtcGxhdGUucmVuZGVyZXI7XG4gICAgICB0aGlzLmZ1bGxXaWR0aENlbGxSZW5kZXJlclBhcmFtcyA9IHRoaXMucm93VGVtcGxhdGUucGFyYW1zO1xuICAgIH1cbiAgICB0aGlzLmZyYW1ld29ya0NvbXBvbmVudHMuYWdEYXRlSW5wdXQgPSBBWERhdGVQaWNrZXJGaWx0ZXJDb21wb25lbnQ7XG5cbiAgICBpZiAodGhpcy5ncmlkRGV0YWlsVGVtcGxhdGUpIHtcbiAgICAgIHRoaXMubWFzdGVyRGV0YWlsID0gdHJ1ZTtcbiAgICAgIHRoaXMuZGV0YWlsQ2VsbFJlbmRlcmVyUGFyYW1zID0gdGhpcy5ncmlkRGV0YWlsVGVtcGxhdGUucGFyYW1zO1xuICAgICAgdGhpcy5kZXRhaWxDZWxsUmVuZGVyZXIgPSBBWERhdGFHcmlkRGV0YWlsVGVtcGxhdGVSZW5kZXJlcjtcbiAgICAgIC8vIHRoaXMuZnJhbWV3b3JrQ29tcG9uZW50cy5kZXRhaWxSZW5kZXJlckZyYW1ld29yayA9XG4gICAgICAvLyAgIHRoaXMuZ3JpZERldGFpbFRlbXBsYXRlLnJlbmRlcmVyO1xuXG4gICAgICB0aGlzLmRldGFpbFJvd0hlaWdodCA9IHRoaXMuZ3JpZERldGFpbFRlbXBsYXRlLmhlaWdodDtcbiAgICB9XG4gICAgdGhpcy5pc0Z1bGxXaWR0aENlbGwgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhhdC5yb3dUZW1wbGF0ZSAhPSBudWxsO1xuICAgIH07XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09PSAnc2luZ2xlJykge1xuICAgICAgdGhpcy5ncm91cFNlbGVjdHNDaGlsZHJlbiA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5rZXlGaWVsZCAhPT0gJ251bGwnICYmIHRoaXMuaGFzQ2hpbGRGaWVsZCAhPT0gJ251bGwnKSB7XG4gICAgICB0aGlzLnJvd0dyb3VwUGFuZWxTaG93ID0gJ25ldmVyJztcbiAgICAgIHRoaXMudHJlZURhdGEgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy5yZW1vdGVPcGVyYXRpb24pIHtcbiAgICAgIHRoaXMucm93TW9kZWxUeXBlID0gJ3NlcnZlclNpZGUnO1xuICAgIH1cbiAgICAvL1xuICAgIGlmICh0aGlzLnJ0bCA9PSBudWxsKSB7XG4gICAgICB0aGlzLnJ0bCA9XG4gICAgICAgIHdpbmRvd1xuICAgICAgICAgIC5nZXRDb21wdXRlZFN0eWxlKHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsIG51bGwpXG4gICAgICAgICAgLmdldFByb3BlcnR5VmFsdWUoJ2RpcmVjdGlvbicpID09PSAncnRsJztcbiAgICB9XG4gICAgLy9cbiAgfVxuXG4gIGdyaWRTZWxlY3RSb3coKSB7XG4gICAgaWYgKHRoaXMuZ3JpZEFwaSkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnNlbGVjdFJvdyAmJlxuICAgICAgICB0aGlzLnNlbGVjdFJvdy5sZW5ndGggPiAwICYmXG4gICAgICAgIHRoaXMuZ3JpZEFwaSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgIHR5cGVvZiB0aGlzLnNlbGVjdFJvd1swXSAhPSAnb2JqZWN0J1xuICAgICAgKSB7XG4gICAgICAgIHRoaXMuZ3JpZEFwaS5mb3JFYWNoTm9kZSgobm9kZSkgPT4ge1xuICAgICAgICAgIGlmIChub2RlLmRhdGEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbGV0IHNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RSb3cuZm9yRWFjaCgoaWQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKG5vZGUuZGF0YVt0aGlzLmtleUZpZWxkXSA9PT0gaWQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3QgPSB0cnVlO1xuICAgICAgICAgICAgICAgIG5vZGUuc2V0U2VsZWN0ZWQoc2VsZWN0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZ3JpZEFwaS5mb3JFYWNoTm9kZSgobm9kZSkgPT4ge1xuICAgICAgICAgIGlmIChub2RlLmRhdGEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbGV0IHNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0Um93Lmxlbmd0aCkge1xuICAgICAgICAgICAgICB0aGlzLnNlbGVjdFJvdy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ucm93SW5kZXggIT0gdW5kZWZpbmVkICYmIGl0ZW0ucm93TGV2ZWwgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICBpZiAobm9kZS5kYXRhW3RoaXMua2V5RmllbGRdID09PSBpdGVtLmRhdGFbdGhpcy5rZXlGaWVsZF0pIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmtleUZpZWxkICE9PSAnbnVsbCcgJiZcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5kYXRhW3RoaXMua2V5RmllbGRdID09PSBpdGVtW3RoaXMua2V5RmllbGRdXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMucm93U2VsZWN0YWJsZUNvbmRpdGlvbkZpZWxkKSB7XG4gICAgICAgICAgICAgIG5vZGUuc2V0Um93U2VsZWN0YWJsZShcbiAgICAgICAgICAgICAgICBub2RlLmRhdGFbdGhpcy5yb3dTZWxlY3RhYmxlQ29uZGl0aW9uRmllbGRdXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBub2RlLnNldFNlbGVjdGVkKHNlbGVjdCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZWJ1aWxkR3JpZCgpIHtcbiAgICB0aGlzLm1hcENvbHVtbnMoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnNpemVDb2x1bW5zVG9GaXQpIHtcbiAgICAgICAgdGhpcy5ncmlkQXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcbiAgICAgIH1cbiAgICB9LCAxMCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudHJlZURhdGEgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuY29sdW1uRGVmcyA9IHRoaXMuY29sdW1ucy5tYXAoKGMpID0+IGMucmVuZGVyKCkpO1xuXG4gICAgICBjb25zdCBncm91cENvbHVtbiA9IHRoaXMuY29sdW1uRGVmcy5maW5kKFxuICAgICAgICAoYykgPT4gYy5yb3dHcm91cEluZGV4ID09ICcwJyAmJiBjLmZpZWxkICE9PSAnJ1xuICAgICAgKTtcblxuICAgICAgdGhpcy5hdXRvR3JvdXBDb2x1bW5EZWYgPSB7XG4gICAgICAgIGhlYWRlck5hbWU6IGdyb3VwQ29sdW1uLmhlYWRlck5hbWUsXG4gICAgICAgIHdpZHRoOiBncm91cENvbHVtbi53aWR0aCxcbiAgICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7IGNoZWNrYm94OiB0aGlzLnNob3dDaGVja0JveCB9LFxuICAgICAgICBmaWVsZDogZ3JvdXBDb2x1bW4uZmllbGQsXG4gICAgICB9O1xuXG4gICAgICB0aGlzLmNvbHVtbkRlZnMuZm9yRWFjaCgoZWxtKSA9PiB7XG4gICAgICAgIGlmIChlbG0ucm93R3JvdXBJbmRleCA+IC0xKSB7XG4gICAgICAgICAgZWxtLmhpZGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5ncmlkVmlldyA9IHRydWU7XG5cbiAgICB0aGlzLmVuYWJlbFNlbGVjdCA9IHRydWU7XG4gICAgdGhpcy5kYXRhU291cmNlLm9uRGF0YVJlY2VpdmVkLnN1YnNjcmliZSgoX2RhdGEpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IF9kYXRhLmRhdGEucmVzdWx0O1xuICAgICAgdGhpcy5oaWRlTG9hZGluZygpO1xuICAgICAgbGV0IGl0ZW1zOiBhbnlbXTtcbiAgICAgIGxldCB0b3RhbENvdW50OiBudW1iZXI7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHQpKSB7XG4gICAgICAgIGl0ZW1zID0gcmVzdWx0O1xuICAgICAgICB0b3RhbENvdW50ID0gcmVzdWx0Lmxlbmd0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZW1zID0gcmVzdWx0Lml0ZW1zO1xuICAgICAgICB0b3RhbENvdW50ID0gcmVzdWx0LnRvdGFsQ291bnQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kYXRhU291cmNlU3VjY2Vzc0NhbGxiYWNrKSB7XG4gICAgICAgIGlmICghdGhpcy5sb2FkT25Jbml0KSB7XG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlU3VjY2Vzc0NhbGxiYWNrKHtcbiAgICAgICAgICAgIHJvd0RhdGE6IFtdLFxuICAgICAgICAgICAgcm93Q291bnQ6IDAsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlU3VjY2Vzc0NhbGxiYWNrKHtcbiAgICAgICAgICAgIHJvd0RhdGE6IGl0ZW1zLFxuICAgICAgICAgICAgcm93Q291bnQ6IHRvdGFsQ291bnQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghdGhpcy5sb2FkT25Jbml0ICYmIHRoaXMuZ3JpZEFwaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhpcy5ncmlkQXBpLnNldEdyaWRPcHRpb24oJ3Jvd0RhdGEnLCBbXSk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5ncmlkQXBpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmdyaWRBcGkuc2V0R3JpZE9wdGlvbigncm93RGF0YScsIGl0ZW1zKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5hdXRvTmF2aWdhdGVQYWdlKSB7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbkdvVG9QYWdlKHRoaXMuY3VycmVudFBhZ2UpO1xuICAgICAgfVxuICAgICAgdGhpcy5ncmlkU2VsZWN0Um93KCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRhdGFTb3VyY2Uub25GZXRjaFN0YXJ0LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnNob3dMb2FkaW5nKCk7XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5zZWFyY2hJbnB1dCkge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5vblZhbHVlQ2hhbmdlZC5zdWJzY3JpYmUoKGMpID0+IHtcbiAgICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gYy52YWx1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBtYXBDb2x1bW5zKCkge1xuICAgIHRoaXMuY29sdW1uRGVmcyA9IHRoaXMuY29sdW1ucy5tYXAoKGMpID0+IGMucmVuZGVyKCkpO1xuICAgIGlmICh0aGlzLmdyaWREZXRhaWxUZW1wbGF0ZSkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmNvbHVtbkRlZnNbMF0uY2hlY2tib3hTZWxlY3Rpb24gPT09IHRydWUgJiZcbiAgICAgICAgdGhpcy5jb2x1bW5EZWZzWzBdLmZpZWxkID09PSAnJ1xuICAgICAgKSB7XG4gICAgICAgIHRoaXMuY29sdW1uRGVmc1sxXS5jZWxsUmVuZGVyZXIgPSAnYWdHcm91cENlbGxSZW5kZXJlcic7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbHVtbkRlZnNbMF0uY2VsbFJlbmRlcmVyID0gJ2FnR3JvdXBDZWxsUmVuZGVyZXInO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmhhc0NoaWxkRmllbGQgPT09ICdudWxsJykge1xuICAgICAgY29uc3QgZ3JvdXBDb2x1bW4gPSB0aGlzLmNvbHVtbkRlZnMuZmluZChcbiAgICAgICAgKGMpID0+IGMucm93R3JvdXBJbmRleCA9PT0gdW5kZWZpbmVkICYmIGMuZmllbGQgIT09ICcnXG4gICAgICApO1xuICAgICAgaWYgKGdyb3VwQ29sdW1uICYmIHRoaXMuZ3JvdXBIaWRlT3BlblBhcmVudHMgPT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5hdXRvR3JvdXBDb2x1bW5EZWYgPSB7XG4gICAgICAgICAgaGVhZGVyTmFtZTogZ3JvdXBDb2x1bW4uaGVhZGVyTmFtZSxcbiAgICAgICAgICB3aWR0aDogZ3JvdXBDb2x1bW4ud2lkdGgsXG4gICAgICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7IGNoZWNrYm94OiB0aGlzLnNob3dDaGVja0JveCB9LFxuICAgICAgICAgIGZpZWxkOiBncm91cENvbHVtbi5maWVsZCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvbHVtbkRlZnMuZm9yRWFjaCgoZWxtKSA9PiB7XG4gICAgICBpZiAoZWxtLnJvd0dyb3VwSW5kZXggPiAtMSkge1xuICAgICAgICBlbG0uaGlkZSA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBkaXNwbGF5ZWRDb2x1bW5zQ2hhbmdlZChlKSB7XG4gICAgaWYgKHRoaXMuaGFzQ2hpbGRGaWVsZCA9PT0gJ251bGwnKSB7XG4gICAgICBjb25zdCBlZSA9IGUuY29sdW1uQXBpLmdldEFsbERpc3BsYXllZENvbHVtbkdyb3VwcygpO1xuICAgICAgY29uc3QgZWVlID0gZWUuZmluZChcbiAgICAgICAgKGMpID0+IGMuY29sSWQgIT09ICdhZy1HcmlkLUF1dG9Db2x1bW4nICYmIGMuY29sSWQgIT09ICcwJ1xuICAgICAgKTtcbiAgICAgIGlmIChlZWUgJiYgZWVlLmNvbElkKSB7XG4gICAgICAgIHRoaXMuYXV0b0dyb3VwQ29sdW1uRGVmID0ge1xuICAgICAgICAgIGhlYWRlck5hbWU6IGVlZS5jb2xEZWYuaGVhZGVyTmFtZSxcbiAgICAgICAgICB3aWR0aDogZWVlLmNvbERlZi53aWR0aCxcbiAgICAgICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHsgY2hlY2tib3g6IHRoaXMuc2hvd0NoZWNrQm94IH0sXG4gICAgICAgICAgZmllbGQ6IGVlZS5jb2xEZWYuZmllbGQsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVmcmVzaChyb3V0ZTogYW55W10gPSBbXSkge1xuICAgIGlmICh0aGlzLnJlbW90ZU9wZXJhdGlvbiAmJiB0aGlzLmdyaWRBcGkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gIHRoaXMuZ3JpZEFwaS5wdXJnZVNlcnZlclNpZGVDYWNoZShyb3V0ZSk7XG4gICAgICB0aGlzLmdyaWRBcGkuc2V0R3JpZE9wdGlvbihcbiAgICAgICAgJ3NlcnZlclNpZGVEYXRhc291cmNlJyxcbiAgICAgICAgdGhpcy5pbnRlbmFsR3JpZERhdGFTb3VyY2VcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5mZXRjaChudWxsKTtcbiAgICB9XG4gIH1cblxuICBpbnRlcm5hbEdyaWRDZWxsQ2xpY2tlZChlOiBDZWxsQ2xpY2tlZEV2ZW50KSB7XG4gICAgdGhpcy5jZWxsQ2xpY2suZW1pdCh7XG4gICAgICBkYXRhOiB0aGlzLm1hcENlbGxFdmVudChlKSxcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LFxuICAgIH0pO1xuICB9XG5cbiAgaW50ZXJuYWxHcmlkQ2VsbERvdWJsZUNsaWNrZWQoZTogQ2VsbENsaWNrZWRFdmVudCkge1xuICAgIHRoaXMuY2VsbERiQ2xpY2suZW1pdCh7XG4gICAgICBkYXRhOiB0aGlzLm1hcENlbGxFdmVudChlKSxcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LFxuICAgIH0pO1xuICB9XG5cbiAgaW50ZXJuYWxHcmlkQ2VsbEZvY3VzZWQoZTogQ2VsbENsaWNrZWRFdmVudCkge1xuICAgIHRoaXMuY2VsbEZvY3VzZS5lbWl0KHtcbiAgICAgIGRhdGE6IHRoaXMubWFwQ2VsbEV2ZW50KGUpLFxuICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgfSk7XG4gIH1cblxuICBpbnRlcm5hbEdyaWRSb3dDbGlja2VkKGU6IFJvd0NsaWNrZWRFdmVudCkge1xuICAgIGlmICghZS5ub2RlLmdyb3VwKSB7XG4gICAgICB0aGlzLnJvd0NsaWNrLmVtaXQoe1xuICAgICAgICBkYXRhOiB0aGlzLm1hcFJvd0V2ZW50KGUpLFxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaW50ZXJuYWxHcmlkUm93RG91YmxlQ2xpY2tlZChlOiBDZWxsQ2xpY2tlZEV2ZW50KSB7XG4gICAgaWYgKCFlLm5vZGUuZ3JvdXApIHtcbiAgICAgIHRoaXMucm93RGJDbGljay5lbWl0KHtcbiAgICAgICAgZGF0YTogdGhpcy5tYXBSb3dFdmVudChlKSxcbiAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGRpZmZlcmVuY2VPZjJBcnJheXMoYXJyYXkxOiBhbnksIGFycmF5MjogYW55KSB7XG4gICAgY29uc3QgdGVtcCA9IFtdO1xuICAgIGZvciAoY29uc3QgaSBpbiBhcnJheTEpIHtcbiAgICAgIGlmIChhcnJheTIuaW5kZXhPZihhcnJheTFbaV0pID09PSAtMSkge1xuICAgICAgICB0ZW1wLnB1c2goYXJyYXkxW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBpIGluIGFycmF5Mikge1xuICAgICAgaWYgKGFycmF5MS5pbmRleE9mKGFycmF5MltpXSkgPT09IC0xKSB7XG4gICAgICAgIHRlbXAucHVzaChhcnJheTJbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGVtcC5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gIH1cblxuICByb3dTZWxlY3Rpb25DaGFuZ2VkKGUpIHtcbiAgICBpZiAoZS5ub2RlLnNlbGVjdGVkID09IHRydWUpIHtcbiAgICAgIHRoaXMuc2VsZWN0Um93ID0gdGhpcy5zZWxlY3RSb3cuZmlsdGVyKFxuICAgICAgICAoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPSBlLmRhdGFbdGhpcy5rZXlGaWVsZF1cbiAgICAgICk7XG4gICAgICB0aGlzLnNlbGVjdFJvdy5wdXNoKGUuZGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0Um93ID0gdGhpcy5zZWxlY3RSb3cuZmlsdGVyKFxuICAgICAgICAoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPSBlLmRhdGFbdGhpcy5rZXlGaWVsZF1cbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMucm93U2VsZWN0aW9uQ2hhbmdlLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgZGF0YTogZSxcbiAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LFxuICAgIH0pO1xuICB9XG5cbiAgaW50ZXJuYWxHcmlkU2VsZWN0aW9uQ2hhbmdlZChlOiBhbnkpIHtcbiAgICBjb25zdCBhcmdzOiBBWEdyaWRSb3dTZWxlY3Rpb25FdmVudCA9IHsgaXRlbXM6IFtdIH07XG4gICAgY29uc3Qgb2xkTm9kZXMgPSB0aGlzLm9sZFNlbGVjdGlvbk5vZGVzO1xuICAgIGNvbnN0IG5vZGVzID0gdGhpcy5ncmlkQXBpLmdldFNlbGVjdGVkTm9kZXMoKTtcblxuICAgIGlmICh0aGlzLmF1dG9FeHBhbmQpIHtcbiAgICAgIGNvbnN0IHVuc2VsZWN0ZWROb2RlcyA9IG9sZE5vZGVzLmZpbHRlcihcbiAgICAgICAgKG9sZE5vZGUpID0+ICFub2Rlcy5zb21lKChuZXdOb2RlKSA9PiBuZXdOb2RlID09PSBvbGROb2RlKVxuICAgICAgKTtcbiAgICAgIHVuc2VsZWN0ZWROb2Rlcy5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICBlbC5zZXRFeHBhbmRlZChmYWxzZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yZW1vdGVPcGVyYXRpb24pIHtcbiAgICAgIGNvbnN0IGlzU2VsZWN0QWxsU2VydmVyU2lkZTogYm9vbGVhbiA9XG4gICAgICAgIGUuYXBpLmdldFNlcnZlclNpZGVTZWxlY3Rpb25TdGF0ZSgpLnNlbGVjdEFsbDtcbiAgICAgIGlmIChpc1NlbGVjdEFsbFNlcnZlclNpZGUpIHtcbiAgICAgICAgdGhpcy5ncmlkQXBpLmZvckVhY2hOb2RlKChub2RlOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAobm9kZS5zZWxlY3RlZCkge1xuICAgICAgICAgICAgYXJncy5pdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgcm93SW5kZXg6IG5vZGUucm93SW5kZXgsXG4gICAgICAgICAgICAgIHJvd0xldmVsOiBub2RlLmxldmVsLFxuICAgICAgICAgICAgICBkYXRhOiBub2RlLmRhdGEsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIG5vZGVzLmZvckVhY2goKGkpID0+IHtcbiAgICAgIGlmICh0aGlzLmF1dG9FeHBhbmQpIHtcbiAgICAgICAgaS5zZXRFeHBhbmRlZCh0cnVlKTtcbiAgICAgIH1cbiAgICAgIGFyZ3MuaXRlbXMucHVzaCh7XG4gICAgICAgIHJvd0xldmVsOiBpLmxldmVsLFxuICAgICAgICByb3dJbmRleDogaS5yb3dJbmRleCxcbiAgICAgICAgZGF0YTogaS5kYXRhLFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkLmVtaXQoe1xuICAgICAgZGF0YTogYXJncyxcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIGh0bWxFbGVtZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LFxuICAgIH0pO1xuICAgIGxldCBhY3Rpb24gPSBub2Rlcy5sZW5ndGggPiBvbGROb2Rlcy5sZW5ndGggPyB0cnVlIDogZmFsc2U7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZGlmZmVyZW5jZU9mMkFycmF5cyhub2Rlcywgb2xkTm9kZXMpO1xuICAgIHRoaXMub25Sb3dTZWxlY3Rpb25DaGFuZ2VkLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgc2VsZWN0ZWQ6IGFjdGlvbixcbiAgICAgIGRhdGE6IG5vZGUsXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudCxcbiAgICB9KTtcbiAgICB0aGlzLm9sZFNlbGVjdGlvbk5vZGVzID0gbm9kZXM7XG4gIH1cblxuICBwcml2YXRlIG1hcENlbGxFdmVudChlOiBDZWxsRXZlbnQpOiBBWEdyaWRDZWxsRXZlbnQge1xuICAgIHJldHVybiB7XG4gICAgICByb3dMZXZlbDogMCxcbiAgICAgIGNvbHVtbjogZS5jb2x1bW4sXG4gICAgICBkYXRhOiBlLmRhdGEsXG4gICAgICByb3dJbmRleDogZS5yb3dJbmRleCxcbiAgICAgIHZhbHVlOiBlLnZhbHVlLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG1hcFJvd0V2ZW50KGU6IFJvd0V2ZW50KTogQVhHcmlkUm93RXZlbnQge1xuICAgIHJldHVybiB7XG4gICAgICByb3dMZXZlbDogMCxcbiAgICAgIGRhdGE6IGUuZGF0YSxcbiAgICAgIHJvd0luZGV4OiBlLnJvd0luZGV4LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZGVzZWxlY3RBbGwoKSB7XG4gICAgdGhpcy5ncmlkQXBpLmRlc2VsZWN0QWxsKCk7XG4gIH1cblxuICBwdWJsaWMgZGVzZWxlY3RCeUtleUZpZWxkKGtleUZpZWxkKSB7XG4gICAgdGhpcy5ncmlkQXBpLmZvckVhY2hOb2RlKChub2RlKSA9PiB7XG4gICAgICBpZiAobm9kZS5kYXRhICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IHNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xuICAgICAgICBpZiAobm9kZS5kYXRhW3RoaXMua2V5RmllbGRdID09PSBrZXlGaWVsZCkge1xuICAgICAgICAgIG5vZGUuc2V0U2VsZWN0ZWQoc2VsZWN0KTtcbiAgICAgICAgICB0aGlzLnNlbGVjdFJvdyA9IHRoaXMuc2VsZWN0Um93LmZpbHRlcihcbiAgICAgICAgICAgIChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9IGtleUZpZWxkXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaW50ZXJuYWxHZXRSb3dDbGFzcyA9IChwOiBhbnkpID0+IHtcbiAgICBpZiAodGhpcy5yb3dDbGFzcykge1xuICAgICAgaWYgKHRoaXMucm93Q2xhc3MgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3dDbGFzcyh7XG4gICAgICAgICAgcm93SW5kZXg6IHAubm9kZS5yb3dJbmRleCxcbiAgICAgICAgICByb3dMZXZlbDogcC5ub2RlLmxldmVsLFxuICAgICAgICAgIGRhdGE6IHAuZGF0YSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3dDbGFzcztcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgc2hvd0xvYWRpbmcoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZ3JpZEFwaSkge1xuICAgICAgdGhpcy5ncmlkQXBpLnNob3dMb2FkaW5nT3ZlcmxheSgpO1xuICAgIH1cbiAgfVxuXG4gIGhpZGVMb2FkaW5nKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmdyaWRBcGkpIHtcbiAgICAgIHRoaXMuZ3JpZEFwaS5oaWRlT3ZlcmxheSgpO1xuICAgIH1cbiAgfVxuXG4gIGludGVybmFsR3JpZFNpemVDaGFuZ2VkKGU6IEdyaWRTaXplQ2hhbmdlZEV2ZW50KSB7XG4gICAgaWYgKGUuY2xpZW50V2lkdGggPiAwICYmIGUuY2xpZW50SGVpZ2h0ID4gMCkge1xuICAgICAgdGhpcy5wZXJmb3JtU2l6ZUNvbHVtbnNUb0ZpdChlLmFwaSk7XG4gICAgfVxuICB9XG5cbiAgaW50ZXJuYWxHcmlkRmlyc3REYXRhUmVuZGVyZWQoZTogRmlyc3REYXRhUmVuZGVyZWRFdmVudCkge1xuICAgIHRoaXMucGVyZm9ybVNpemVDb2x1bW5zVG9GaXQoZS5hcGkpO1xuICAgIHRoaXMuaGVhZGVySGVpZ2h0U2V0dGVyKCk7XG4gIH1cblxuICBoYW5kbGVDb2x1bW5SZXNpemVkKGUpIHtcbiAgICB0aGlzLmhlYWRlckhlaWdodFNldHRlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBwZXJmb3JtU2l6ZUNvbHVtbnNUb0ZpdChhcGk6IEdyaWRBcGkpIHtcbiAgICBpZiAodGhpcy5zaXplQ29sdW1uc1RvRml0KSB7XG4gICAgICBhcGkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGVhZGVySGVpZ2h0U2V0dGVyKCkge1xuICAgIGNvbnN0IHBhZGRpbmcgPSAyMDtcbiAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmhlYWRlckhlaWdodEdldHRlcigpICsgcGFkZGluZztcbiAgICB0aGlzLmdyaWRBcGkuc2V0R3JpZE9wdGlvbignaGVhZGVySGVpZ2h0JywgaGVpZ2h0KTtcbiAgfVxuXG4gIHByaXZhdGUgaGVhZGVySGVpZ2h0R2V0dGVyKCkge1xuICAgIGNvbnN0IGNvbHVtbkhlYWRlclRleHRzID0gW1xuICAgICAgLi4uKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5hZy1oZWFkZXItY2VsbC10ZXh0JykgYXMgYW55KSxcbiAgICBdO1xuXG4gICAgY29uc3QgY2xpZW50SGVpZ2h0cyA9IGNvbHVtbkhlYWRlclRleHRzLm1hcChcbiAgICAgIChoZWFkZXJUZXh0KSA9PiBoZWFkZXJUZXh0LmNsaWVudEhlaWdodFxuICAgICk7XG4gICAgY29uc3QgdGFsbGVzdEhlYWRlclRleHRIZWlnaHQgPSBNYXRoLm1heCguLi5jbGllbnRIZWlnaHRzKTtcblxuICAgIHJldHVybiB0YWxsZXN0SGVhZGVyVGV4dEhlaWdodDtcbiAgfVxuXG4gIHByaXZhdGUgbWFrZVJlZnJlc2hCdG4oKSB7XG4gICAgY29uc3QgcGFnaW5nUGFuZWwgPVxuICAgICAgdGhpcy5yZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYWctcGFnaW5nLXBhbmVsJyk7XG5cbiAgICBjb25zdCByZWZCdG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG5cbiAgICByZWZCdG4uY2xhc3NMaXN0LmFkZCgnZmFyJyk7XG4gICAgcmVmQnRuLmNsYXNzTGlzdC5hZGQoJ2ZhLXN5bmMnKTtcblxuICAgIHJlZkJ0bi5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7XG5cbiAgICByZWZCdG4udGl0bGUgPSBBWFRyYW5zbGF0b3IuZ2V0KCdjb21tb24ucmVmcmVzaCcpO1xuXG4gICAgcmVmQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMuZ2V0Q3VycmVudFBhZ2VOdW1iZXIoKS5jdXJyZW50O1xuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfSk7XG5cbiAgICBwYWdpbmdQYW5lbC5hcHBlbmRDaGlsZChyZWZCdG4pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVOZXh0QnRuQ2xpY2soKSB7XG4gICAgY29uc3QgbmV4dFBhZ2VCdG4gPSB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnW3JlZj1cImJ0TmV4dFwiXSdcbiAgICApIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgbmV4dFBhZ2VCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gdGhpcy5nZXRDdXJyZW50UGFnZU51bWJlcigpLmN1cnJlbnQ7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUJhY2tCdG5DbGljaygpIHtcbiAgICBjb25zdCBiYWNrUGFnZUJ0biA9IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICdbcmVmPVwiYnRQcmV2aW91c1wiXSdcbiAgICApIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgYmFja1BhZ2VCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gdGhpcy5nZXRDdXJyZW50UGFnZU51bWJlcigpLmN1cnJlbnQ7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUxhc3RCdG5DbGljaygpIHtcbiAgICBjb25zdCBiYWNrUGFnZUJ0biA9IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICdbcmVmPVwiYnRMYXN0XCJdJ1xuICAgICkgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICBiYWNrUGFnZUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLmdldEN1cnJlbnRQYWdlTnVtYmVyKCkuY3VycmVudDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlRml0c3RCdG5DbGljaygpIHtcbiAgICBjb25zdCBiYWNrUGFnZUJ0biA9IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICdbcmVmPVwiYnRGaXJzdFwiXSdcbiAgICApIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgYmFja1BhZ2VCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gdGhpcy5nZXRDdXJyZW50UGFnZU51bWJlcigpLmN1cnJlbnQ7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJheC1ncmlkLXRvb2xiYXJcIiAqbmdJZj1cInRvb2xiYXJcIj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtdG9vbGJhclwiPjwvbmctY29udGVudD5cbjwvZGl2PlxuPCEtLSBbZW5hYmxlU29ydGluZ109XCJ0cnVlXCIgIFtlbmFibGVDb2xSZXNpemVdPVwidHJ1ZVwiIFtlbmFibGVGaWx0ZXJdPVwiYWxsb3dGaWx0ZXJpbmdcIiAgLS0+XG5cbjxhZy1ncmlkLWFuZ3VsYXJcbiAgKm5nSWY9XCJncmlkVmlld1wiXG4gIGNsYXNzPVwiYWctdGhlbWUtYmFsaGFtXCJcbiAgW2dldFJvd0NsYXNzXT1cImludGVybmFsR2V0Um93Q2xhc3NcIlxuICBbc3VwcHJlc3NDb3B5Um93c1RvQ2xpcGJvYXJkXT1cInRydWVcIlxuICBbZW5hYmxlUmFuZ2VTZWxlY3Rpb25dPVwiZW5hYmxlUmFuZ2VTZWxlY3Rpb25cIlxuICBbc2VydmVyU2lkZVN0b3JlVHlwZV09XCIncGFydGlhbCdcIlxuICBbc3R5bGUuaGVpZ2h0XT1cImludGVybmFsSGVpZ2h0XCJcbiAgW2NvbHVtbkRlZnNdPVwiY29sdW1uRGVmc1wiXG4gIFtlbmFibGVSdGxdPVwicnRsXCJcbiAgW3BhZ2luYXRpb25dPVwicGFnaW5hdGlvblwiXG4gIFtyb3dHcm91cFBhbmVsU2hvd109XCJyb3dHcm91cFBhbmVsU2hvd1wiXG4gIFtyb3dNb2RlbFR5cGVdPVwicm93TW9kZWxUeXBlXCJcbiAgW2RldGFpbFJvd0hlaWdodF09XCJkZXRhaWxSb3dIZWlnaHRcIlxuICBbcm93SGVpZ2h0XT1cInJvd0hlaWdodFwiXG4gIFtwYWdpbmF0aW9uQXV0b1BhZ2VTaXplXT1cInBhZ2luYXRpb25BdXRvUGFnZVNpemVcIlxuICBbcGFnaW5hdGlvblBhZ2VTaXplXT1cInBhZ2luYXRpb25QYWdlU2l6ZVwiXG4gIFtwYWdpbmF0aW9uUGFnZVNpemVTZWxlY3Rvcl09XCJwYWdpbmF0aW9uUGFnZVNpemVTZWxlY3RvclwiXG4gIFtzdXBwcmVzc01lbnVIaWRlXT1cInRydWVcIlxuICBbbWF4Q29uY3VycmVudERhdGFzb3VyY2VSZXF1ZXN0c109XCJtYXhDb25jdXJyZW50RGF0YXNvdXJjZVJlcXVlc3RzXCJcbiAgW2Jsb2NrTG9hZERlYm91bmNlTWlsbGlzXT1cImJsb2NrTG9hZERlYm91bmNlTWlsbGlzXCJcbiAgW2ZyYW1ld29ya0NvbXBvbmVudHNdPVwiZnJhbWV3b3JrQ29tcG9uZW50c1wiXG4gIFtpc0Z1bGxXaWR0aENlbGxdPVwiaXNGdWxsV2lkdGhDZWxsXCJcbiAgW3Jvd1NlbGVjdGlvbl09XCJzZWxlY3Rpb25Nb2RlXCJcbiAgW3Jvd011bHRpU2VsZWN0V2l0aENsaWNrXT1cInJvd011bHRpU2VsZWN0V2l0aENsaWNrXCJcbiAgW2Z1bGxXaWR0aENlbGxSZW5kZXJlckZyYW1ld29ya109XCJmdWxsV2lkdGhDZWxsUmVuZGVyZXJGcmFtZXdvcmtcIlxuICBbY2FjaGVCbG9ja1NpemVdPVwiY2FjaGVCbG9ja1NpemVcIlxuICBbZnVsbFdpZHRoQ2VsbFJlbmRlcmVyUGFyYW1zXT1cImZ1bGxXaWR0aENlbGxSZW5kZXJlclBhcmFtc1wiXG4gIChjb2x1bW5SZXNpemVkKT1cImhhbmRsZUNvbHVtblJlc2l6ZWQoJGV2ZW50KVwiXG4gIChjZWxsQ2xpY2tlZCk9XCJpbnRlcm5hbEdyaWRDZWxsQ2xpY2tlZCgkZXZlbnQpXCJcbiAgKGNlbGxEb3VibGVDbGlja2VkKT1cImludGVybmFsR3JpZENlbGxEb3VibGVDbGlja2VkKCRldmVudClcIlxuICAoY2VsbEZvY3VzZWQpPVwiaW50ZXJuYWxHcmlkQ2VsbEZvY3VzZWQoJGV2ZW50KVwiXG4gIChyb3dDbGlja2VkKT1cImludGVybmFsR3JpZFJvd0NsaWNrZWQoJGV2ZW50KVwiXG4gIChzZWxlY3Rpb25DaGFuZ2VkKT1cImludGVybmFsR3JpZFNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiXG4gIChyb3dTZWxlY3RlZCk9XCJyb3dTZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxuICAocm93RG91YmxlQ2xpY2tlZCk9XCJpbnRlcm5hbEdyaWRSb3dEb3VibGVDbGlja2VkKCRldmVudClcIlxuICAoZ3JpZFJlYWR5KT1cImludGVybmFsR3JpZFJlYWR5KCRldmVudClcIlxuICBbZ3JvdXBTZWxlY3RzQ2hpbGRyZW5dPVwiZ3JvdXBTZWxlY3RzQ2hpbGRyZW5cIlxuICBbc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbl09XCJzdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uXCJcbiAgW2dyb3VwU2VsZWN0c0ZpbHRlcmVkXT1cInRydWVcIlxuICBbc3VwcHJlc3NDZWxsU2VsZWN0aW9uXT1cInN1cHByZXNzQ2VsbFNlbGVjdGlvblwiXG4gIFthdXRvR3JvdXBDb2x1bW5EZWZdPVwiYXV0b0dyb3VwQ29sdW1uRGVmXCJcbiAgW3N1cHByZXNzQWdnRnVuY0luSGVhZGVyXT1cInRydWVcIlxuICBbdHJlZURhdGFdPVwidHJlZURhdGFcIlxuICBbYW5pbWF0ZVJvd3NdPVwidHJ1ZVwiXG4gIFtpc1NlcnZlclNpZGVHcm91cF09XCJpc1NlcnZlclNpZGVHcm91cFwiXG4gIFtnZXRTZXJ2ZXJTaWRlR3JvdXBLZXldPVwiZ2V0U2VydmVyU2lkZUdyb3VwS2V5XCJcbiAgW21hc3RlckRldGFpbF09XCJtYXN0ZXJEZXRhaWxcIlxuICBbZGV0YWlsQ2VsbFJlbmRlcmVyUGFyYW1zXT1cImRldGFpbENlbGxSZW5kZXJlclBhcmFtc1wiXG4gIFtkZXRhaWxDZWxsUmVuZGVyZXJdPVwiZGV0YWlsQ2VsbFJlbmRlcmVyXCJcbiAgKGdyaWRTaXplQ2hhbmdlZCk9XCJpbnRlcm5hbEdyaWRTaXplQ2hhbmdlZCgkZXZlbnQpXCJcbiAgKGZpcnN0RGF0YVJlbmRlcmVkKT1cImludGVybmFsR3JpZEZpcnN0RGF0YVJlbmRlcmVkKCRldmVudClcIlxuICBbbG9jYWxlVGV4dF09XCJsb2NhbGVUZXh0XCJcbiAgW2dyb3VwSGlkZU9wZW5QYXJlbnRzXT1cImdyb3VwSGlkZU9wZW5QYXJlbnRzXCJcbiAgW2FsbG93Q29udGV4dE1lbnVXaXRoQ29udHJvbEtleV09XCJmYWxzZVwiXG4gIFtnZXRNYWluTWVudUl0ZW1zXT1cImdldE1haW5NZW51SXRlbXNcIlxuPlxuPC9hZy1ncmlkLWFuZ3VsYXI+XG5cbjwhLS0gKGRpc3BsYXllZENvbHVtbnNDaGFuZ2VkKT1cImRpc3BsYXllZENvbHVtbnNDaGFuZ2VkKCRldmVudClcIiAgLS0+XG4iXX0=
808
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWdyaWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWdyaWQvc3JjL2xpYi9kYXRhLWdyaWQvZGF0YWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWdyaWQvc3JjL2xpYi9kYXRhLWdyaWQvZGF0YWdyaWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHFCQUFxQixHQUV0QixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQVd2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBUXBELE9BQU8sRUFDTCxXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUN4QixZQUFZLEdBQ2IsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RSxPQUFPLEVBQ0wsaUNBQWlDLEVBQ2pDLGdDQUFnQyxHQUNqQyxNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7O0FBRXBGLGNBQWMsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxFQUFFO0lBQ2pELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBQ0YsY0FBYyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEdBQUc7SUFDekMsNkNBQTZDO0FBQy9DLENBQUMsQ0FBQztBQUVGLE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxZQUVqRDtDQUVBO0FBQ0QsTUFBTSxPQUFPLG1CQUFvQixTQUFRLFdBQTRCO0NBRXBFO0FBQ0QsTUFBTSxPQUFPLHNCQUF1QixTQUFRLFdBQTJCO0NBRXRFO0FBRUQsTUFBTSxPQUFPLDhCQUErQixTQUFRLFdBQW9DO0NBRXZGO0FBRUQsTUFBTSxPQUFPLGlDQUFrQyxTQUFRLFdBQWdCO0NBR3RFO0FBUUQsTUFBTSxPQUFPLG1CQUFtQjtJQThPcEI7SUFDQTtJQTlPRixPQUFPLENBQUM7SUFDUix5QkFBeUIsQ0FBQztJQUNsQyxVQUFVLENBQU07SUFFaEIsV0FBVyxDQUFjO0lBQ3pCLFVBQVUsR0FBVSxFQUFFLENBQUM7SUFDdkIsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUM1Qiw4QkFBOEIsQ0FBTTtJQUNwQywyQkFBMkIsQ0FBTTtJQUNqQyxtQkFBbUIsR0FBUSxFQUFFLENBQUM7SUFDOUIsZUFBZSxDQUFXO0lBQzFCLGNBQWMsR0FBRyxNQUFNLENBQUM7SUFDeEIsa0JBQWtCLENBQU07SUFDeEIsd0JBQXdCLENBQU07SUFDOUIsZUFBZSxDQUFTO0lBQ3hCLFlBQVksR0FBRyxLQUFLLENBQUM7SUFDckIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBQzdCLGlCQUFpQixHQUFVLEVBQUUsQ0FBQztJQUM5QixrQkFBa0IsR0FBUSxFQUFFLENBQUM7SUFDN0IsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUdoQiwwQkFBMEIsR0FBdUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFHMUQsc0JBQXNCLEdBQUcsS0FBSyxDQUFDO0lBRy9CLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztJQUV4QixjQUFjLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBR2xDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFHeEIsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO0lBR2hDLHlCQUF5QixHQUFHLEtBQUssQ0FBQztJQUdsQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFHOUIsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBRy9CLFlBQVksR0FBRyxJQUFJLENBQUM7SUFHcEIsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUd2QixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBR25CLDJCQUEyQixDQUFTO0lBR3BDLGFBQWEsR0FBMEIsUUFBUSxDQUFDO0lBR2hELFVBQVUsR0FBWSxJQUFJLENBQUM7SUFHM0IsU0FBUyxHQUFVLEVBQUUsQ0FBQztJQUd0QixpQkFBaUIsR0FBdUIsT0FBTyxDQUFDO0lBR2hELFVBQVUsR0FBWSxJQUFJLENBQUM7SUFHM0Isb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0lBRzdCLFFBQVEsR0FBVyxNQUFNLENBQUM7SUFHMUIsYUFBYSxHQUFXLE1BQU0sQ0FBQztJQUcvQixTQUFTLEdBQUcsRUFBRSxDQUFDO0lBR2Ysb0JBQW9CLEdBQVksS0FBSyxDQUFDO0lBR3RDLCtCQUErQixDQUFTO0lBR3hDLHVCQUF1QixDQUFTO0lBR2hDLGlCQUFpQixHQUFHLElBQUksQ0FBQztJQUd6QixnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFHekIsUUFBUSxDQUV1QztJQUcvQyxHQUFHLEdBQVksUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUVsQyxXQUFXLENBQVM7SUFDNUIsSUFDVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBVyxVQUFVLENBQUMsQ0FBUztRQUM3QixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7WUFDckIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDL0MsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sT0FBTyxDQUFRO0lBQ3ZCLElBQ1csTUFBTTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBVyxNQUFNLENBQUMsQ0FBUTtRQUN4QixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDekIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ25ELElBQUksRUFBRSxFQUFFLENBQUM7b0JBQ1AsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLDZCQUE2QixFQUFFLENBQUM7b0JBQzlDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBR08sY0FBYyxDQUE4QjtJQUdwRCxhQUFhLEdBQ1gsSUFBSSxZQUFZLEVBQWdDLENBQUM7SUFFM0MsUUFBUSxHQUF1QixFQUFFLENBQUM7SUFDMUMsSUFDVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGNBQWM7WUFDeEIsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN0RCxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBVyxPQUFPLENBQUMsR0FBdUI7UUFDeEMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUM7WUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCLFNBQVMsRUFBRSxJQUFJO2dCQUNmLEtBQUssRUFBRSxHQUFHO2dCQUNWLFFBQVEsRUFBRSxHQUFHO2dCQUNiLFdBQVcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWE7YUFDcEMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxhQUFhLEdBQVE7UUFDbkIsTUFBTSxFQUFFLElBQUk7UUFDWixjQUFjLEVBQUUsSUFBSTtLQUNyQixDQUFDO0lBR0YsV0FBVyxDQUEyQjtJQUd0QyxPQUFPLENBQXFCO0lBRzVCLFdBQVcsQ0FBaUM7SUFHNUMsa0JBQWtCLENBQW9DO0lBRzlDLGtCQUFrQixDQUF3QjtJQUUxQyxXQUFXLENBQXdCO0lBRTNDLElBQ1csVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUN2RSxDQUFDO0lBRUQsSUFBVyxVQUFVLENBQUMsQ0FBd0I7UUFDNUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUdELFNBQVMsR0FDUCxJQUFJLFlBQVksRUFBdUIsQ0FBQztJQUcxQyxXQUFXLEdBQ1QsSUFBSSxZQUFZLEVBQXVCLENBQUM7SUFHMUMsVUFBVSxHQUNSLElBQUksWUFBWSxFQUF1QixDQUFDO0lBRzFDLFFBQVEsR0FDTixJQUFJLFlBQVksRUFBMEIsQ0FBQztJQUc3QyxVQUFVLEdBQ1IsSUFBSSxZQUFZLEVBQTBCLENBQUM7SUFHN0MsZ0JBQWdCLEdBQ2QsSUFBSSxZQUFZLEVBQWtDLENBQUM7SUFHckQsa0JBQWtCLEdBQ2hCLElBQUksWUFBWSxFQUFrQyxDQUFDO0lBR3JELHFCQUFxQixHQUNuQixJQUFJLFlBQVksRUFBcUMsQ0FBQztJQUV4RCxZQUNVLEdBQStCLEVBQy9CLEdBQXNCO1FBRHRCLFFBQUcsR0FBSCxHQUFHLENBQTRCO1FBQy9CLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBRTlCLElBQUksQ0FBQyxVQUFVLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8sVUFBVTtRQUNoQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsY0FBYyxHQUFHLGVBQWUsRUFBRSxLQUFLLENBQUM7UUFDL0MsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQVkscUJBQXFCO1FBQy9CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztRQUNsQixPQUFPO1lBQ0wsUUFBUSxFQUFFLElBQUk7WUFDZCxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLHlCQUF5QixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7Z0JBRWhELE1BQU0sVUFBVSxHQUEyQixFQUFFLENBQUM7Z0JBRTlDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztnQkFFeEMsVUFBVSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztnQkFFMUMsVUFBVSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztnQkFFbEUsVUFBVSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDbkQsT0FBTzt3QkFDTCxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7d0JBQ2QsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJO3FCQUNaLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7Z0JBRUgsVUFBVSxDQUFDLEtBQUssR0FBRztvQkFDakIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztvQkFDdkQsSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUztvQkFDOUIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSTtpQkFDbkMsQ0FBQztnQkFFRixVQUFVLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO2dCQUUvQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNwQyxDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxpQkFBaUIsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ3hCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMvQixDQUFDLENBQUM7SUFFRixhQUFhLEdBQUcsR0FBRyxFQUFFO1FBQ25CLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN0QyxDQUFDLENBQUM7SUFFRixvQkFBb0IsR0FBRyxHQUFHLEVBQUU7UUFDMUIsT0FBTztZQUNMLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLHdCQUF3QixFQUFFLEdBQUcsQ0FBQztZQUNwRCxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRTtTQUM5QyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsa0JBQWtCLENBQUMsTUFBTTtRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQscUJBQXFCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUM1QixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUIsQ0FBQyxDQUFDO0lBQ0YsaUJBQWlCLENBQUMsV0FBVztRQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUM7UUFFL0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUVsQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQ3hCLHNCQUFzQixFQUN0QixJQUFJLENBQUMscUJBQXFCLENBQzNCLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7WUFDaEUsSUFBSSxDQUFDLDJCQUEyQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO1FBQzdELENBQUM7UUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxHQUFHLDJCQUEyQixDQUFDO1FBRW5FLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDekIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7WUFDL0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGdDQUFnQyxDQUFDO1lBQzNELHFEQUFxRDtZQUNyRCxzQ0FBc0M7WUFFdEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDO1FBQ3hELENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDO1FBQ2xDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDcEMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUM5RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNuQyxDQUFDO1FBQ0QsRUFBRTtRQUNGLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsR0FBRztnQkFDTixNQUFNO3FCQUNILGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQztxQkFDOUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEtBQUssS0FBSyxDQUFDO1FBQy9DLENBQUM7UUFDRCxFQUFFO0lBQ0osQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixJQUNFLElBQUksQ0FBQyxTQUFTO2dCQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUztnQkFDMUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFDcEMsQ0FBQztnQkFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO29CQUNoQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7d0JBQzVCLElBQUksTUFBTSxHQUFZLEtBQUssQ0FBQzt3QkFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTs0QkFDNUIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQ0FDcEMsTUFBTSxHQUFHLElBQUksQ0FBQztnQ0FDZCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDOzRCQUMzQixDQUFDO3dCQUNILENBQUMsQ0FBQyxDQUFDO29CQUNMLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDaEMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO3dCQUM1QixJQUFJLE1BQU0sR0FBWSxLQUFLLENBQUM7d0JBQzVCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQzs0QkFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQ0FDOUIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLFNBQVMsRUFBRSxDQUFDO29DQUM3RCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7d0NBQzFELE1BQU0sR0FBRyxJQUFJLENBQUM7b0NBQ2hCLENBQUM7Z0NBQ0gsQ0FBQztxQ0FBTSxDQUFDO29DQUNOLElBQ0UsSUFBSSxDQUFDLFFBQVEsS0FBSyxNQUFNO3dDQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUNoRCxDQUFDO3dDQUNELE1BQU0sR0FBRyxJQUFJLENBQUM7b0NBQ2hCLENBQUM7Z0NBQ0gsQ0FBQzs0QkFDSCxDQUFDLENBQUMsQ0FBQzt3QkFDTCxDQUFDO3dCQUNELElBQUksSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7NEJBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsQ0FDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FDNUMsQ0FBQzt3QkFDSixDQUFDO3dCQUNELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzNCLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBRXRELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN0QyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFLENBQ2hELENBQUM7WUFFRixJQUFJLENBQUMsa0JBQWtCLEdBQUc7Z0JBQ3hCLFVBQVUsRUFBRSxXQUFXLENBQUMsVUFBVTtnQkFDbEMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLO2dCQUN4QixrQkFBa0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNuRCxLQUFLLEVBQUUsV0FBVyxDQUFDLEtBQUs7YUFDekIsQ0FBQztZQUVGLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQzlCLElBQUksR0FBRyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUMzQixHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDbEIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBRXJCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2pELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQixJQUFJLEtBQVksQ0FBQztZQUNqQixJQUFJLFVBQWtCLENBQUM7WUFDdkIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLEtBQUssR0FBRyxNQUFNLENBQUM7Z0JBQ2YsVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDN0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUNyQixVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztZQUNqQyxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDckIsSUFBSSxDQUFDLHlCQUF5QixDQUFDO3dCQUM3QixPQUFPLEVBQUUsRUFBRTt3QkFDWCxRQUFRLEVBQUUsQ0FBQztxQkFDWixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyx5QkFBeUIsQ0FBQzt3QkFDN0IsT0FBTyxFQUFFLEtBQUs7d0JBQ2QsUUFBUSxFQUFFLFVBQVU7cUJBQ3JCLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQ25ELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDNUMsQ0FBQztxQkFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDL0MsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzVDLENBQUM7WUFDRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUM5QyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDNUIsSUFDRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixLQUFLLElBQUk7Z0JBQzdDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUUsRUFDL0IsQ0FBQztnQkFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksR0FBRyxxQkFBcUIsQ0FBQztZQUMxRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEdBQUcscUJBQXFCLENBQUM7WUFDMUQsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDbEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3RDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxLQUFLLFNBQVMsSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FDdkQsQ0FBQztZQUNGLElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHO29CQUN4QixVQUFVLEVBQUUsV0FBVyxDQUFDLFVBQVU7b0JBQ2xDLEtBQUssRUFBRSxXQUFXLENBQUMsS0FBSztvQkFDeEIsa0JBQWtCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRTtvQkFDbkQsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLO2lCQUN6QixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzlCLElBQUksR0FBRyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMzQixHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUNsQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsdUJBQXVCLENBQUMsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDbEMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1lBQ3JELE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQ2pCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxLQUFLLEtBQUssR0FBRyxDQUMzRCxDQUFDO1lBQ0YsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsa0JBQWtCLEdBQUc7b0JBQ3hCLFVBQVUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVU7b0JBQ2pDLEtBQUssRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUs7b0JBQ3ZCLGtCQUFrQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUU7b0JBQ25ELEtBQUssRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUs7aUJBQ3hCLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsUUFBZSxFQUFFO1FBQ3ZCLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3ZELDZDQUE2QztZQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FDeEIsc0JBQXNCLEVBQ3RCLElBQUksQ0FBQyxxQkFBcUIsQ0FDM0IsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxDQUFtQjtRQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztZQUNsQixJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDMUIsU0FBUyxFQUFFLElBQUk7WUFDZixXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCw2QkFBNkIsQ0FBQyxDQUFtQjtRQUMvQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNwQixJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDMUIsU0FBUyxFQUFFLElBQUk7WUFDZixXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxDQUFtQjtRQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDMUIsV0FBVyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYTtZQUNuQyxTQUFTLEVBQUUsSUFBSTtTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsc0JBQXNCLENBQUMsQ0FBa0I7UUFDdkMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDekIsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsV0FBVyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYTthQUNwQyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVELDRCQUE0QixDQUFDLENBQW1CO1FBQzlDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO2dCQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pCLFdBQVcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWE7Z0JBQ25DLFNBQVMsRUFBRSxJQUFJO2FBQ2hCLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBVyxFQUFFLE1BQVc7UUFDMUMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLEtBQUssTUFBTSxDQUFDLElBQUksTUFBTSxFQUFFLENBQUM7WUFDdkIsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUM7UUFDRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FDcEMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ2pELENBQUM7WUFDRixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUNwQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDakQsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDO1lBQzNCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsSUFBSSxFQUFFLENBQUM7WUFDUCxXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxDQUFNO1FBQ2pDLE1BQU0sSUFBSSxHQUE0QixFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNwRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDeEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRTlDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQ3JDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sS0FBSyxPQUFPLENBQUMsQ0FDM0QsQ0FBQztZQUNGLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtnQkFDN0IsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN6QixNQUFNLHFCQUFxQixHQUN6QixDQUFDLENBQUMsR0FBRyxDQUFDLDJCQUEyQixFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ2hELElBQUkscUJBQXFCLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtvQkFDckMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDOzRCQUNkLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTs0QkFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLOzRCQUNwQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7eUJBQ2hCLENBQUMsQ0FBQztvQkFDTCxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlDLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1lBQ3pCLElBQUksRUFBRSxJQUFJO1lBQ1YsU0FBUyxFQUFFLElBQUk7WUFDZixXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhO1NBQ3BDLENBQUMsQ0FBQztRQUNILElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDM0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDO1lBQzlCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsUUFBUSxFQUFFLE1BQU07WUFDaEIsSUFBSSxFQUFFLElBQUk7WUFDVixXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhO1NBQ3BDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDakMsQ0FBQztJQUVPLFlBQVksQ0FBQyxDQUFZO1FBQy9CLE9BQU87WUFDTCxRQUFRLEVBQUUsQ0FBQztZQUNYLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTTtZQUNoQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7WUFDWixRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVE7WUFDcEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO1NBQ2YsQ0FBQztJQUNKLENBQUM7SUFFTyxXQUFXLENBQUMsQ0FBVztRQUM3QixPQUFPO1lBQ0wsUUFBUSxFQUFFLENBQUM7WUFDWCxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7WUFDWixRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVE7U0FDckIsQ0FBQztJQUNKLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVNLGtCQUFrQixDQUFDLFFBQVE7UUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNoQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzVCLElBQUksTUFBTSxHQUFZLEtBQUssQ0FBQztnQkFDNUIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FDcEMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxDQUNwQyxDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsbUJBQW1CLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRTtRQUMvQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLElBQUksQ0FBQyxRQUFRLFlBQVksUUFBUSxFQUFFLENBQUM7Z0JBQ3RDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztvQkFDbkIsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUTtvQkFDekIsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSztvQkFDdEIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO2lCQUNiLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDLENBQUM7SUFFRixXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxDQUF1QjtRQUM3QyxJQUFJLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVELDZCQUE2QixDQUFDLENBQXlCO1FBQ3JELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELG1CQUFtQixDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLHVCQUF1QixDQUFDLEdBQVk7UUFDMUMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQ25ELElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0saUJBQWlCLEdBQUc7WUFDeEIsR0FBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQVM7U0FDOUQsQ0FBQztRQUVGLE1BQU0sYUFBYSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FDekMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQ3hDLENBQUM7UUFDRixNQUFNLHVCQUF1QixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQztRQUUzRCxPQUFPLHVCQUF1QixDQUFDO0lBQ2pDLENBQUM7SUFFTyxjQUFjO1FBQ3BCLE1BQU0sV0FBVyxHQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBRTNELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFOUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFaEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBRWhDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRWxELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsT0FBTyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztRQUVILFdBQVcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQ3RELGdCQUFnQixDQUNGLENBQUM7UUFFakIsV0FBVyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDekMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxPQUFPLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FDdEQsb0JBQW9CLENBQ04sQ0FBQztRQUVqQixXQUFXLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUN6QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLE9BQU8sQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUN0RCxnQkFBZ0IsQ0FDRixDQUFDO1FBRWpCLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsT0FBTyxDQUFDO1FBQ3pELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQ3RELGlCQUFpQixDQUNILENBQUM7UUFFakIsV0FBVyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDekMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxPQUFPLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsS0FBSztRQUM5QixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNyQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDcEIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QixDQUFDO1lBQ0QsT0FBTztnQkFDTCxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUs7Z0JBQ2pCLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUTtnQkFDcEIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO2FBQ2IsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0EzM0JVLG1CQUFtQjsyRkFBbkIsbUJBQW1CLHNpREFtTGhCLHdCQUF3Qix3RkFHeEIsa0JBQWtCLDRGQUdsQiw4QkFBOEIsbUdBRzlCLGlDQUFpQyxtR0FHakMscUJBQXFCLGtGQTdDbEIsZ0JBQWdCLDZCQ3RPbkMsdXpGQWlFQTs7MkZEbUJhLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDRSxjQUFjLGlCQUVULGlCQUFpQixDQUFDLElBQUk7K0dBNkJyQywwQkFBMEI7c0JBRHpCLEtBQUs7Z0JBSU4sc0JBQXNCO3NCQURyQixLQUFLO2dCQUlOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFNQyxlQUFlO3NCQURyQixLQUFLO2dCQUlDLHVCQUF1QjtzQkFEN0IsS0FBSztnQkFJQyx5QkFBeUI7c0JBRC9CLEtBQUs7Z0JBSUMscUJBQXFCO3NCQUQzQixLQUFLO2dCQUlDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTiwyQkFBMkI7c0JBRDFCLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4saUJBQWlCO3NCQURoQixLQUFLO2dCQUlOLFVBQVU7c0JBRFQsS0FBSztnQkFJTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLGFBQWE7c0JBRFosS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sb0JBQW9CO3NCQURuQixLQUFLO2dCQUlOLCtCQUErQjtzQkFEOUIsS0FBSztnQkFJTix1QkFBdUI7c0JBRHRCLEtBQUs7Z0JBSU4saUJBQWlCO3NCQURoQixLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFNTixHQUFHO3NCQURGLEtBQUs7Z0JBS0ssVUFBVTtzQkFEcEIsS0FBSztnQkFnQkssTUFBTTtzQkFEaEIsS0FBSztnQkFrQkUsY0FBYztzQkFEckIsZUFBZTt1QkFBQyxnQkFBZ0I7Z0JBSWpDLGFBQWE7c0JBRFosTUFBTTtnQkFNSSxPQUFPO3NCQURqQixLQUFLO2dCQTBCTixXQUFXO3NCQURWLFlBQVk7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl4RCxPQUFPO3NCQUROLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlsRCxXQUFXO3NCQURWLFlBQVk7dUJBQUMsOEJBQThCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUk5RCxrQkFBa0I7c0JBRGpCLFlBQVk7dUJBQUMsaUNBQWlDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl6RCxrQkFBa0I7c0JBRHpCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQU0xQyxVQUFVO3NCQURwQixLQUFLO2dCQVVOLFNBQVM7c0JBRFIsTUFBTTtnQkFLUCxXQUFXO3NCQURWLE1BQU07Z0JBS1AsVUFBVTtzQkFEVCxNQUFNO2dCQUtQLFFBQVE7c0JBRFAsTUFBTTtnQkFLUCxVQUFVO3NCQURULE1BQU07Z0JBS1AsZ0JBQWdCO3NCQURmLE1BQU07Z0JBS1Asa0JBQWtCO3NCQURqQixNQUFNO2dCQUtQLHFCQUFxQjtzQkFEcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYRGF0YVNvdXJjZUNvbXBvbmVudCxcbiAgQVhEYXRhU291cmNlUmVhZFBhcmFtcyxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDZWxsQ2xpY2tlZEV2ZW50LFxuICBDZWxsRXZlbnQsXG4gIEZpcnN0RGF0YVJlbmRlcmVkRXZlbnQsXG4gIEdyaWRBcGksXG4gIEdyaWRPcHRpb25zLFxuICBHcmlkU2l6ZUNoYW5nZWRFdmVudCxcbiAgUm93Q2xpY2tlZEV2ZW50LFxuICBSb3dFdmVudCxcbn0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xuaW1wb3J0IHsgQVhHcmlkRGF0YUNvbHVtbiB9IGZyb20gJy4vY29sdW1ucy9jb2x1bW4uY29tcG9uZW50JztcblxuaW1wb3J0IHsgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpY2Vuc2VNYW5hZ2VyIH0gZnJvbSAnYWctZ3JpZC1lbnRlcnByaXNlJztcbmltcG9ydCB7XG4gIEFYR3JpZENlbGxFdmVudCxcbiAgQVhHcmlkUm93RXZlbnQsXG4gIEFYR3JpZFJvd1BhcmFtcyxcbiAgQVhHcmlkUm93U2VsZWN0aW9uRXZlbnQsXG59IGZyb20gJy4vZGF0YWdyaWQuZXZlbnRzJztcblxuaW1wb3J0IHtcbiAgQVhEYXRhRXZlbnQsXG4gIEFYVG9vbGJhckNvbXBvbmVudCxcbiAgQVhUb29sYmFyU2VhcmNoQ29tcG9uZW50LFxuICBBWFZhbHVlRXZlbnQsXG59IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBWENvbmZpZywgQVhUcmFuc2xhdG9yIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcbmltcG9ydCB7IEFYRGF0ZVBpY2tlckZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4vY29sdW1ucy9kYXRlLWNvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgQVhEYXRhR3JpZERldGFpbFRlbXBsYXRlQ29tcG9uZW50LFxuICBBWERhdGFHcmlkRGV0YWlsVGVtcGxhdGVSZW5kZXJlcixcbn0gZnJvbSAnLi90ZW1wbGF0ZXMvZGV0YWlsLXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBWERhdGFHcmlkUm93VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL3RlbXBsYXRlcy9yb3ctdGVtcGxhdGUuY29tcG9uZW50JztcblxuTGljZW5zZU1hbmFnZXIucHJvdG90eXBlLmlzRGlzcGxheVdhdGVybWFyayA9ICgpID0+IHtcbiAgcmV0dXJuIGZhbHNlO1xufTtcbkxpY2Vuc2VNYW5hZ2VyLnByb3RvdHlwZS52YWxpZGF0ZUxpY2Vuc2UgPSBmdW5jdGlvbiAoKSB7XG4gIC8vY29uc29sZS5pbmZvKCdDcmFja2VkIGJ5IEFyYXNoIE9zaG5vdWRpIScpO1xufTtcblxuZXhwb3J0IGNsYXNzIEFYRGF0YUdyaWRDb2x1bW5zQ2hhbmdlRXZlbnQgZXh0ZW5kcyBBWFZhbHVlRXZlbnQ8XG4gIEFYR3JpZERhdGFDb2x1bW5bXVxuPiB7XG4gIGRlY2xhcmUgY29tcG9uZW50OiBBWERhdGFHcmlkQ29tcG9uZW50O1xufVxuZXhwb3J0IGNsYXNzIEFYRGF0YUdyaWRDZWxsRXZlbnQgZXh0ZW5kcyBBWERhdGFFdmVudDxBWEdyaWRDZWxsRXZlbnQ+IHtcbiAgZGVjbGFyZSBjb21wb25lbnQ6IEFYRGF0YUdyaWRDb21wb25lbnQ7XG59XG5leHBvcnQgY2xhc3MgQVhEYWFncmlkUm93Q2xpY2tFdmVudCBleHRlbmRzIEFYRGF0YUV2ZW50PEFYR3JpZFJvd0V2ZW50PiB7XG4gIGRlY2xhcmUgY29tcG9uZW50OiBBWERhdGFHcmlkQ29tcG9uZW50O1xufVxuXG5leHBvcnQgY2xhc3MgQVhEYXRhR3JpZFNlbGVjdGlvbkNoYW5nZUV2ZW50IGV4dGVuZHMgQVhEYXRhRXZlbnQ8QVhHcmlkUm93U2VsZWN0aW9uRXZlbnQ+IHtcbiAgZGVjbGFyZSBjb21wb25lbnQ6IEFYRGF0YUdyaWRDb21wb25lbnQ7XG59XG5cbmV4cG9ydCBjbGFzcyBBWERhdGFHcmlkUm93U2VsZWN0aW9uQ2hhbmdlRXZlbnQgZXh0ZW5kcyBBWERhdGFFdmVudDxhbnk+IHtcbiAgZGVjbGFyZSBjb21wb25lbnQ6IEFYRGF0YUdyaWRDb21wb25lbnQ7XG4gIGRlY2xhcmUgc2VsZWN0ZWQ6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWRhdGEtZ3JpZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhZ3JpZC5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIC8vIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFYRGF0YUdyaWRDb21wb25lbnQge1xuICBwcml2YXRlIGdyaWRBcGk7XG4gIHByaXZhdGUgZGF0YVNvdXJjZVN1Y2Nlc3NDYWxsYmFjaztcbiAgbG9jYWxlVGV4dDogYW55O1xuXG4gIGdyaWRPcHRpb25zOiBHcmlkT3B0aW9ucztcbiAgY29sdW1uRGVmczogYW55W10gPSBbXTtcbiAgcm93TW9kZWxUeXBlID0gJ2NsaWVudFNpZGUnO1xuICBmdWxsV2lkdGhDZWxsUmVuZGVyZXJGcmFtZXdvcms6IGFueTtcbiAgZnVsbFdpZHRoQ2VsbFJlbmRlcmVyUGFyYW1zOiBhbnk7XG4gIGZyYW1ld29ya0NvbXBvbmVudHM6IGFueSA9IHt9O1xuICBpc0Z1bGxXaWR0aENlbGw6IEZ1bmN0aW9uO1xuICBpbnRlcm5hbEhlaWdodCA9ICcxMDAlJztcbiAgZGV0YWlsQ2VsbFJlbmRlcmVyOiBhbnk7XG4gIGRldGFpbENlbGxSZW5kZXJlclBhcmFtczogYW55O1xuICBkZXRhaWxSb3dIZWlnaHQ6IG51bWJlcjtcbiAgbWFzdGVyRGV0YWlsID0gZmFsc2U7XG4gIHRyZWVEYXRhID0gZmFsc2U7XG4gIGVuYWJlbFNlbGVjdCA9IGZhbHNlO1xuICBncmlkVmlldyA9IGZhbHNlO1xuICBncm91cFNlbGVjdHNDaGlsZHJlbiA9IGZhbHNlO1xuICBvbGRTZWxlY3Rpb25Ob2RlczogYW55W10gPSBbXTtcbiAgYXV0b0dyb3VwQ29sdW1uRGVmOiBhbnkgPSB7fTtcbiAgY3VycmVudFBhZ2UgPSAxO1xuXG4gIEBJbnB1dCgpXG4gIHBhZ2luYXRpb25QYWdlU2l6ZVNlbGVjdG9yOiBudW1iZXJbXSB8IGJvb2xlYW4gPSBbMTAsIDIwXTtcblxuICBASW5wdXQoKVxuICBwYWdpbmF0aW9uQXV0b1BhZ2VTaXplID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcGFnaW5hdGlvblBhZ2VTaXplID0gMjA7XG5cbiAgY2FjaGVCbG9ja1NpemUgPSB0aGlzLnBhZ2luYXRpb25QYWdlU2l6ZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcmVtb3RlT3BlcmF0aW9uID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHJvd011bHRpU2VsZWN0V2l0aENsaWNrID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHN1cHByZXNzUm93Q2xpY2tTZWxlY3Rpb24gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc3VwcHJlc3NDZWxsU2VsZWN0aW9uID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNpemVDb2x1bW5zVG9GaXQgPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dDaGVja0JveCA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgZmxvYXRpbmdGaWx0ZXIgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBhdXRvRXhwYW5kID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcm93U2VsZWN0YWJsZUNvbmRpdGlvbkZpZWxkOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgc2VsZWN0aW9uTW9kZTogJ3NpbmdsZScgfCAnbXVsdGlwbGUnID0gJ3NpbmdsZSc7XG5cbiAgQElucHV0KClcbiAgcGFnaW5hdGlvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgc2VsZWN0Um93OiBhbnlbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHJvd0dyb3VwUGFuZWxTaG93OiAnYWx3YXlzJyB8ICduZXZlcicgPSAnbmV2ZXInO1xuXG4gIEBJbnB1dCgpXG4gIGxvYWRPbkluaXQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBJbnB1dCgpXG4gIGVuYWJsZVJhbmdlU2VsZWN0aW9uID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAga2V5RmllbGQ6IHN0cmluZyA9ICdudWxsJztcblxuICBASW5wdXQoKVxuICBoYXNDaGlsZEZpZWxkOiBzdHJpbmcgPSAnbnVsbCc7XG5cbiAgQElucHV0KClcbiAgcm93SGVpZ2h0ID0gMjg7XG5cbiAgQElucHV0KClcbiAgZ3JvdXBIaWRlT3BlblBhcmVudHM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBtYXhDb25jdXJyZW50RGF0YXNvdXJjZVJlcXVlc3RzOiBudW1iZXI7XG5cbiAgQElucHV0KClcbiAgYmxvY2tMb2FkRGVib3VuY2VNaWxsaXM6IG51bWJlcjtcblxuICBASW5wdXQoKVxuICBzaG93UmVmcmVzaEJ1dHRvbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgYXV0b05hdmlnYXRlUGFnZSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHJvd0NsYXNzPzogKFxuICAgIHBhcmFtczogQVhHcmlkUm93UGFyYW1zXG4gICkgPT4gKHN0cmluZyB8IHN0cmluZ1tdKSB8IChzdHJpbmcgfCBzdHJpbmdbXSk7XG5cbiAgQElucHV0KClcbiAgcnRsOiBib29sZWFuID0gQVhDb25maWcuZ2V0KCdsYXlvdXQucnRsJyk7XG5cbiAgcHJpdmF0ZSBfc2VhcmNoVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHNlYXJjaFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoVGV4dDtcbiAgfVxuICBwdWJsaWMgc2V0IHNlYXJjaFRleHQodjogc3RyaW5nKSB7XG4gICAgaWYgKHYgIT09IHRoaXMuX3NlYXJjaFRleHQpIHtcbiAgICAgIHRoaXMuX3NlYXJjaFRleHQgPSB2O1xuICAgICAgaWYgKHRoaXMuZ3JpZEFwaSkge1xuICAgICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgICAgdGhpcy5ncmlkQXBpLnNldFF1aWNrRmlsdGVyKHRoaXMuc2VhcmNoVGV4dCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZmlsdGVyOiBhbnlbXTtcbiAgQElucHV0KClcbiAgcHVibGljIGdldCBmaWx0ZXIoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXI7XG4gIH1cbiAgcHVibGljIHNldCBmaWx0ZXIodjogYW55W10pIHtcbiAgICBpZiAodiAhPT0gdGhpcy5fZmlsdGVyKSB7XG4gICAgICB0aGlzLl9maWx0ZXIgPSB2O1xuICAgICAgdGhpcy5fZmlsdGVyLmZvckVhY2goKGYpID0+IHtcbiAgICAgICAgY29uc3QgZmMgPSB0aGlzLmdyaWRBcGkuZ2V0RmlsdGVySW5zdGFuY2UoZi5maWVsZCk7XG4gICAgICAgIGlmIChmYykge1xuICAgICAgICAgIGNvbnN0IGZmID0gZmMuZ2V0RnJhbWV3b3JrQ29tcG9uZW50SW5zdGFuY2UoKTtcbiAgICAgICAgICBmZi5zZXRNb2RlbChmKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgQENvbnRlbnRDaGlsZHJlbihBWEdyaWREYXRhQ29sdW1uKVxuICBwcml2YXRlIF9pbmxpbmVDb2x1bW5zOiBRdWVyeUxpc3Q8QVhHcmlkRGF0YUNvbHVtbj47XG5cbiAgQE91dHB1dCgpXG4gIGNvbHVtbnNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBWERhdGFHcmlkQ29sdW1uc0NoYW5nZUV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFHcmlkQ29sdW1uc0NoYW5nZUV2ZW50PigpO1xuXG4gIHByaXZhdGUgX2NvbHVtbnM6IEFYR3JpZERhdGFDb2x1bW5bXSA9IFtdO1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IGNvbHVtbnMoKTogQVhHcmlkRGF0YUNvbHVtbltdIHtcbiAgICByZXR1cm4gdGhpcy5faW5saW5lQ29sdW1uc1xuICAgICAgPyBbLi4udGhpcy5fY29sdW1ucywgLi4udGhpcy5faW5saW5lQ29sdW1ucy50b0FycmF5KCldXG4gICAgICA6IHRoaXMuX2NvbHVtbnM7XG4gIH1cblxuICBwdWJsaWMgc2V0IGNvbHVtbnModmFsOiBBWEdyaWREYXRhQ29sdW1uW10pIHtcbiAgICBpZiAodmFsICYmIHZhbC5sZW5ndGgpIHtcbiAgICAgIGxldCBvbGQgPSB0aGlzLl9jb2x1bW5zO1xuICAgICAgdGhpcy5fY29sdW1ucyA9IHZhbDtcbiAgICAgIHRoaXMuY29sdW1uc0NoYW5nZS5lbWl0KHtcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgICB2YWx1ZTogdmFsLFxuICAgICAgICBvbGRWYWx1ZTogb2xkLFxuICAgICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGRlZmF1bHRDb2xEZWY6IGFueSA9IHtcbiAgICBmaWx0ZXI6IHRydWUsXG4gICAgZmxvYXRpbmdGaWx0ZXI6IHRydWUsXG4gIH07XG5cbiAgQENvbnRlbnRDaGlsZChBWFRvb2xiYXJTZWFyY2hDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHNlYXJjaElucHV0OiBBWFRvb2xiYXJTZWFyY2hDb21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZChBWFRvb2xiYXJDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHRvb2xiYXI6IEFYVG9vbGJhckNvbXBvbmVudDtcblxuICBAQ29udGVudENoaWxkKEFYRGF0YUdyaWRSb3dUZW1wbGF0ZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcm93VGVtcGxhdGU6IEFYRGF0YUdyaWRSb3dUZW1wbGF0ZUNvbXBvbmVudDtcblxuICBAQ29udGVudENoaWxkKEFYRGF0YUdyaWREZXRhaWxUZW1wbGF0ZUNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgZ3JpZERldGFpbFRlbXBsYXRlOiBBWERhdGFHcmlkRGV0YWlsVGVtcGxhdGVDb21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZChBWERhdGFTb3VyY2VDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHByaXZhdGUgX2NvbnRlbnREYXRhU291cmNlOiBBWERhdGFTb3VyY2VDb21wb25lbnQ7XG5cbiAgcHJpdmF0ZSBfZGF0YVNvdXJjZTogQVhEYXRhU291cmNlQ29tcG9uZW50O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgZGF0YVNvdXJjZSgpOiBBWERhdGFTb3VyY2VDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLl9kYXRhU291cmNlID8gdGhpcy5fZGF0YVNvdXJjZSA6IHRoaXMuX2NvbnRlbnREYXRhU291cmNlO1xuICB9XG5cbiAgcHVibGljIHNldCBkYXRhU291cmNlKHY6IEFYRGF0YVNvdXJjZUNvbXBvbmVudCkge1xuICAgIHRoaXMuX2RhdGFTb3VyY2UgPSB2O1xuICB9XG5cbiAgQE91dHB1dCgpXG4gIGNlbGxDbGljazogRXZlbnRFbWl0dGVyPEFYRGF0YUdyaWRDZWxsRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPEFYRGF0YUdyaWRDZWxsRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGNlbGxEYkNsaWNrOiBFdmVudEVtaXR0ZXI8QVhEYXRhR3JpZENlbGxFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QVhEYXRhR3JpZENlbGxFdmVudD4oKTtcblxuICBAT3V0cHV0KClcbiAgY2VsbEZvY3VzZTogRXZlbnRFbWl0dGVyPEFYRGF0YUdyaWRDZWxsRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPEFYRGF0YUdyaWRDZWxsRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHJvd0NsaWNrOiBFdmVudEVtaXR0ZXI8QVhEYWFncmlkUm93Q2xpY2tFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QVhEYWFncmlkUm93Q2xpY2tFdmVudD4oKTtcblxuICBAT3V0cHV0KClcbiAgcm93RGJDbGljazogRXZlbnRFbWl0dGVyPEFYRGFhZ3JpZFJvd0NsaWNrRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPEFYRGFhZ3JpZFJvd0NsaWNrRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHNlbGVjdGlvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWERhdGFHcmlkU2VsZWN0aW9uQ2hhbmdlRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPEFYRGF0YUdyaWRTZWxlY3Rpb25DaGFuZ2VFdmVudD4oKTtcblxuICBAT3V0cHV0KClcbiAgcm93U2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QVhEYXRhR3JpZFNlbGVjdGlvbkNoYW5nZUV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxBWERhdGFHcmlkU2VsZWN0aW9uQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uUm93U2VsZWN0aW9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYRGF0YUdyaWRSb3dTZWxlY3Rpb25DaGFuZ2VFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8QVhEYXRhR3JpZFJvd1NlbGVjdGlvbkNoYW5nZUV2ZW50PigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PixcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy5sb2NhbGVUZXh0ID0gQVhUcmFuc2xhdG9yLmdldCgnZGF0YUdyaWQnKTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY0hlaWdodCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50b29sYmFyKSB7XG4gICAgICB0aGlzLmludGVybmFsSGVpZ2h0ID0gYGNhbGMoMTAwJSAtICR7NDB9cHgpYDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnRlcm5hbEhlaWdodCA9ICcxMDAlJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCBpbnRlbmFsR3JpZERhdGFTb3VyY2UoKSB7XG4gICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJvd0NvdW50OiBudWxsLFxuICAgICAgZ2V0Um93czogKHBhcmFtcykgPT4ge1xuICAgICAgICB0aGF0LmRhdGFTb3VyY2VTdWNjZXNzQ2FsbGJhY2sgPSBwYXJhbXMuc3VjY2VzcztcblxuICAgICAgICBjb25zdCBsb2FkUGFyYW1zOiBBWERhdGFTb3VyY2VSZWFkUGFyYW1zID0ge307XG5cbiAgICAgICAgbG9hZFBhcmFtcy5zZWFyY2hUZXh0ID0gdGhhdC5zZWFyY2hUZXh0O1xuXG4gICAgICAgIGxvYWRQYXJhbXMuc2tpcCA9IHBhcmFtcy5yZXF1ZXN0LnN0YXJ0Um93O1xuXG4gICAgICAgIGxvYWRQYXJhbXMudGFrZSA9IHBhcmFtcy5yZXF1ZXN0LmVuZFJvdyAtIHBhcmFtcy5yZXF1ZXN0LnN0YXJ0Um93O1xuXG4gICAgICAgIGxvYWRQYXJhbXMuc29ydCA9IHBhcmFtcy5yZXF1ZXN0LnNvcnRNb2RlbC5tYXAoKGMpID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmllbGQ6IGMuY29sSWQsXG4gICAgICAgICAgICBkaXI6IGMuc29ydCxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcblxuICAgICAgICBsb2FkUGFyYW1zLmdyb3VwID0ge1xuICAgICAgICAgIGZpZWxkczogcGFyYW1zLnJlcXVlc3Qucm93R3JvdXBDb2xzLm1hcCgocikgPT4gci5maWVsZCksXG4gICAgICAgICAga2V5czogcGFyYW1zLnJlcXVlc3QuZ3JvdXBLZXlzLFxuICAgICAgICAgIHBhcmVudERhdGE6IHBhcmFtcy5wYXJlbnROb2RlLmRhdGEsXG4gICAgICAgIH07XG5cbiAgICAgICAgbG9hZFBhcmFtcy5maWx0ZXIgPSBwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbDtcblxuICAgICAgICB0aGF0LmRhdGFTb3VyY2UuZmV0Y2gobG9hZFBhcmFtcyk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgZ2V0TWFpbk1lbnVJdGVtcyhlKSB7XG4gICAgcmV0dXJuIFsncGluU3ViTWVudScsICdzZXBhcmF0b3InXTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZ3JpZEFwaS5kZXN0cm95KCk7XG4gIH1cblxuICBpc1NlcnZlclNpZGVHcm91cCA9IChlKSA9PiB7XG4gICAgcmV0dXJuIGVbdGhpcy5oYXNDaGlsZEZpZWxkXTtcbiAgfTtcblxuICBnZXRDb2x1bW5EZWZzID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmdyaWRBcGkuZ2V0Q29sdW1uRGVmcygpO1xuICB9O1xuXG4gIGdldEN1cnJlbnRQYWdlTnVtYmVyID0gKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBjdXJyZW50OiB0aGlzLmdyaWRBcGkucGFnaW5hdGlvbkdldEN1cnJlbnRQYWdlKCkgKyAxLFxuICAgICAgdG90YWw6IHRoaXMuZ3JpZEFwaS5wYWdpbmF0aW9uR2V0VG90YWxQYWdlcygpLFxuICAgIH07XG4gIH07XG5cbiAgcGFnaW5hdGlvbkdvVG9QYWdlKG51bWJlcikge1xuICAgIHRoaXMuZ3JpZEFwaS5wYWdpbmF0aW9uR29Ub1BhZ2UobnVtYmVyIC0gMSk7XG4gIH1cblxuICBnZXRTZXJ2ZXJTaWRlR3JvdXBLZXkgPSAoZSkgPT4ge1xuICAgIHJldHVybiBlW3RoaXMua2V5RmllbGRdO1xuICB9O1xuICBpbnRlcm5hbEdyaWRSZWFkeShncmlkT3B0aW9ucykge1xuICAgIHRoaXMuZ3JpZEFwaSA9IGdyaWRPcHRpb25zLmFwaTtcblxuICAgIHRoaXMubWFwQ29sdW1ucygpO1xuICAgIHRoaXMuY2FsY0hlaWdodCgpO1xuXG4gICAgaWYgKCF0aGlzLmxvYWRPbkluaXQpIHtcbiAgICAgIHRoaXMubG9hZE9uSW5pdCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVtb3RlT3BlcmF0aW9uKSB7XG4gICAgICB0aGlzLmdyaWRBcGkuc2V0R3JpZE9wdGlvbihcbiAgICAgICAgJ3NlcnZlclNpZGVEYXRhc291cmNlJyxcbiAgICAgICAgdGhpcy5pbnRlbmFsR3JpZERhdGFTb3VyY2VcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnJlbW90ZU9wZXJhdGlvbikge1xuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2hvd1JlZnJlc2hCdXR0b24pIHtcbiAgICAgIHRoaXMubWFrZVJlZnJlc2hCdG4oKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hdXRvTmF2aWdhdGVQYWdlKSB7XG4gICAgICB0aGlzLmhhbmRsZU5leHRCdG5DbGljaygpO1xuICAgICAgdGhpcy5oYW5kbGVCYWNrQnRuQ2xpY2soKTtcbiAgICAgIHRoaXMuaGFuZGxlTGFzdEJ0bkNsaWNrKCk7XG4gICAgICB0aGlzLmhhbmRsZUZpdHN0QnRuQ2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgaWYgKHRoaXMucm93VGVtcGxhdGUpIHtcbiAgICAgIHRoaXMuZnVsbFdpZHRoQ2VsbFJlbmRlcmVyRnJhbWV3b3JrID0gdGhpcy5yb3dUZW1wbGF0ZS5yZW5kZXJlcjtcbiAgICAgIHRoaXMuZnVsbFdpZHRoQ2VsbFJlbmRlcmVyUGFyYW1zID0gdGhpcy5yb3dUZW1wbGF0ZS5wYXJhbXM7XG4gICAgfVxuICAgIHRoaXMuZnJhbWV3b3JrQ29tcG9uZW50cy5hZ0RhdGVJbnB1dCA9IEFYRGF0ZVBpY2tlckZpbHRlckNvbXBvbmVudDtcblxuICAgIGlmICh0aGlzLmdyaWREZXRhaWxUZW1wbGF0ZSkge1xuICAgICAgdGhpcy5tYXN0ZXJEZXRhaWwgPSB0cnVlO1xuICAgICAgdGhpcy5kZXRhaWxDZWxsUmVuZGVyZXJQYXJhbXMgPSB0aGlzLmdyaWREZXRhaWxUZW1wbGF0ZS5wYXJhbXM7XG4gICAgICB0aGlzLmRldGFpbENlbGxSZW5kZXJlciA9IEFYRGF0YUdyaWREZXRhaWxUZW1wbGF0ZVJlbmRlcmVyO1xuICAgICAgLy8gdGhpcy5mcmFtZXdvcmtDb21wb25lbnRzLmRldGFpbFJlbmRlcmVyRnJhbWV3b3JrID1cbiAgICAgIC8vICAgdGhpcy5ncmlkRGV0YWlsVGVtcGxhdGUucmVuZGVyZXI7XG5cbiAgICAgIHRoaXMuZGV0YWlsUm93SGVpZ2h0ID0gdGhpcy5ncmlkRGV0YWlsVGVtcGxhdGUuaGVpZ2h0O1xuICAgIH1cbiAgICB0aGlzLmlzRnVsbFdpZHRoQ2VsbCA9ICgpID0+IHtcbiAgICAgIHJldHVybiB0aGF0LnJvd1RlbXBsYXRlICE9IG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbk1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICB0aGlzLmdyb3VwU2VsZWN0c0NoaWxkcmVuID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLmtleUZpZWxkICE9PSAnbnVsbCcgJiYgdGhpcy5oYXNDaGlsZEZpZWxkICE9PSAnbnVsbCcpIHtcbiAgICAgIHRoaXMucm93R3JvdXBQYW5lbFNob3cgPSAnbmV2ZXInO1xuICAgICAgdGhpcy50cmVlRGF0YSA9IHRydWU7XG4gICAgfVxuICAgIGlmICh0aGlzLnJlbW90ZU9wZXJhdGlvbikge1xuICAgICAgdGhpcy5yb3dNb2RlbFR5cGUgPSAnc2VydmVyU2lkZSc7XG4gICAgfVxuICAgIC8vXG4gICAgaWYgKHRoaXMucnRsID09IG51bGwpIHtcbiAgICAgIHRoaXMucnRsID1cbiAgICAgICAgd2luZG93XG4gICAgICAgICAgLmdldENvbXB1dGVkU3R5bGUodGhpcy5yZWYubmF0aXZlRWxlbWVudCwgbnVsbClcbiAgICAgICAgICAuZ2V0UHJvcGVydHlWYWx1ZSgnZGlyZWN0aW9uJykgPT09ICdydGwnO1xuICAgIH1cbiAgICAvL1xuICB9XG5cbiAgZ3JpZFNlbGVjdFJvdygpIHtcbiAgICBpZiAodGhpcy5ncmlkQXBpKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuc2VsZWN0Um93ICYmXG4gICAgICAgIHRoaXMuc2VsZWN0Um93Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgdGhpcy5ncmlkQXBpICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgdHlwZW9mIHRoaXMuc2VsZWN0Um93WzBdICE9ICdvYmplY3QnXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5ncmlkQXBpLmZvckVhY2hOb2RlKChub2RlKSA9PiB7XG4gICAgICAgICAgaWYgKG5vZGUuZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0OiBib29sZWFuID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdFJvdy5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgICAgICAgICBpZiAobm9kZS5kYXRhW3RoaXMua2V5RmllbGRdID09PSBpZCkge1xuICAgICAgICAgICAgICAgIHNlbGVjdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgbm9kZS5zZXRTZWxlY3RlZChzZWxlY3QpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ncmlkQXBpLmZvckVhY2hOb2RlKChub2RlKSA9PiB7XG4gICAgICAgICAgaWYgKG5vZGUuZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0OiBib29sZWFuID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RSb3cubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0Um93LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5yb3dJbmRleCAhPSB1bmRlZmluZWQgJiYgaXRlbS5yb3dMZXZlbCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChub2RlLmRhdGFbdGhpcy5rZXlGaWVsZF0gPT09IGl0ZW0uZGF0YVt0aGlzLmtleUZpZWxkXSkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3QgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMua2V5RmllbGQgIT09ICdudWxsJyAmJlxuICAgICAgICAgICAgICAgICAgICBub2RlLmRhdGFbdGhpcy5rZXlGaWVsZF0gPT09IGl0ZW1bdGhpcy5rZXlGaWVsZF1cbiAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3QgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5yb3dTZWxlY3RhYmxlQ29uZGl0aW9uRmllbGQpIHtcbiAgICAgICAgICAgICAgbm9kZS5zZXRSb3dTZWxlY3RhYmxlKFxuICAgICAgICAgICAgICAgIG5vZGUuZGF0YVt0aGlzLnJvd1NlbGVjdGFibGVDb25kaXRpb25GaWVsZF1cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vZGUuc2V0U2VsZWN0ZWQoc2VsZWN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlYnVpbGRHcmlkKCkge1xuICAgIHRoaXMubWFwQ29sdW1ucygpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2l6ZUNvbHVtbnNUb0ZpdCkge1xuICAgICAgICB0aGlzLmdyaWRBcGkuc2l6ZUNvbHVtbnNUb0ZpdCgpO1xuICAgICAgfVxuICAgIH0sIDEwKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50cmVlRGF0YSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5jb2x1bW5EZWZzID0gdGhpcy5jb2x1bW5zLm1hcCgoYykgPT4gYy5yZW5kZXIoKSk7XG5cbiAgICAgIGNvbnN0IGdyb3VwQ29sdW1uID0gdGhpcy5jb2x1bW5EZWZzLmZpbmQoXG4gICAgICAgIChjKSA9PiBjLnJvd0dyb3VwSW5kZXggPT0gJzAnICYmIGMuZmllbGQgIT09ICcnXG4gICAgICApO1xuXG4gICAgICB0aGlzLmF1dG9Hcm91cENvbHVtbkRlZiA9IHtcbiAgICAgICAgaGVhZGVyTmFtZTogZ3JvdXBDb2x1bW4uaGVhZGVyTmFtZSxcbiAgICAgICAgd2lkdGg6IGdyb3VwQ29sdW1uLndpZHRoLFxuICAgICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHsgY2hlY2tib3g6IHRoaXMuc2hvd0NoZWNrQm94IH0sXG4gICAgICAgIGZpZWxkOiBncm91cENvbHVtbi5maWVsZCxcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuY29sdW1uRGVmcy5mb3JFYWNoKChlbG0pID0+IHtcbiAgICAgICAgaWYgKGVsbS5yb3dHcm91cEluZGV4ID4gLTEpIHtcbiAgICAgICAgICBlbG0uaGlkZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmdyaWRWaWV3ID0gdHJ1ZTtcblxuICAgIHRoaXMuZW5hYmVsU2VsZWN0ID0gdHJ1ZTtcbiAgICB0aGlzLmRhdGFTb3VyY2Uub25EYXRhUmVjZWl2ZWQuc3Vic2NyaWJlKChfZGF0YSkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gX2RhdGEuZGF0YS5yZXN1bHQ7XG4gICAgICB0aGlzLmhpZGVMb2FkaW5nKCk7XG4gICAgICBsZXQgaXRlbXM6IGFueVtdO1xuICAgICAgbGV0IHRvdGFsQ291bnQ6IG51bWJlcjtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHtcbiAgICAgICAgaXRlbXMgPSByZXN1bHQ7XG4gICAgICAgIHRvdGFsQ291bnQgPSByZXN1bHQubGVuZ3RoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXRlbXMgPSByZXN1bHQuaXRlbXM7XG4gICAgICAgIHRvdGFsQ291bnQgPSByZXN1bHQudG90YWxDb3VudDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmRhdGFTb3VyY2VTdWNjZXNzQ2FsbGJhY2spIHtcbiAgICAgICAgaWYgKCF0aGlzLmxvYWRPbkluaXQpIHtcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2VTdWNjZXNzQ2FsbGJhY2soe1xuICAgICAgICAgICAgcm93RGF0YTogW10sXG4gICAgICAgICAgICByb3dDb3VudDogMCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2VTdWNjZXNzQ2FsbGJhY2soe1xuICAgICAgICAgICAgcm93RGF0YTogaXRlbXMsXG4gICAgICAgICAgICByb3dDb3VudDogdG90YWxDb3VudCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCF0aGlzLmxvYWRPbkluaXQgJiYgdGhpcy5ncmlkQXBpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICB0aGlzLmdyaWRBcGkuc2V0R3JpZE9wdGlvbigncm93RGF0YScsIFtdKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdyaWRBcGkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuZ3JpZEFwaS5zZXRHcmlkT3B0aW9uKCdyb3dEYXRhJywgaXRlbXMpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmF1dG9OYXZpZ2F0ZVBhZ2UpIHtcbiAgICAgICAgdGhpcy5wYWdpbmF0aW9uR29Ub1BhZ2UodGhpcy5jdXJyZW50UGFnZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmdyaWRTZWxlY3RSb3coKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGF0YVNvdXJjZS5vbkZldGNoU3RhcnQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuc2hvd0xvYWRpbmcoKTtcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnNlYXJjaElucHV0KSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0Lm9uVmFsdWVDaGFuZ2VkLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgICB0aGlzLnNlYXJjaFRleHQgPSBjLnZhbHVlO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG1hcENvbHVtbnMoKSB7XG4gICAgdGhpcy5jb2x1bW5EZWZzID0gdGhpcy5jb2x1bW5zLm1hcCgoYykgPT4gYy5yZW5kZXIoKSk7XG4gICAgaWYgKHRoaXMuZ3JpZERldGFpbFRlbXBsYXRlKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuY29sdW1uRGVmc1swXS5jaGVja2JveFNlbGVjdGlvbiA9PT0gdHJ1ZSAmJlxuICAgICAgICB0aGlzLmNvbHVtbkRlZnNbMF0uZmllbGQgPT09ICcnXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5jb2x1bW5EZWZzWzFdLmNlbGxSZW5kZXJlciA9ICdhZ0dyb3VwQ2VsbFJlbmRlcmVyJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY29sdW1uRGVmc1swXS5jZWxsUmVuZGVyZXIgPSAnYWdHcm91cENlbGxSZW5kZXJlcic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaGFzQ2hpbGRGaWVsZCA9PT0gJ251bGwnKSB7XG4gICAgICBjb25zdCBncm91cENvbHVtbiA9IHRoaXMuY29sdW1uRGVmcy5maW5kKFxuICAgICAgICAoYykgPT4gYy5yb3dHcm91cEluZGV4ID09PSB1bmRlZmluZWQgJiYgYy5maWVsZCAhPT0gJydcbiAgICAgICk7XG4gICAgICBpZiAoZ3JvdXBDb2x1bW4gJiYgdGhpcy5ncm91cEhpZGVPcGVuUGFyZW50cyA9PSBmYWxzZSkge1xuICAgICAgICB0aGlzLmF1dG9Hcm91cENvbHVtbkRlZiA9IHtcbiAgICAgICAgICBoZWFkZXJOYW1lOiBncm91cENvbHVtbi5oZWFkZXJOYW1lLFxuICAgICAgICAgIHdpZHRoOiBncm91cENvbHVtbi53aWR0aCxcbiAgICAgICAgICBjZWxsUmVuZGVyZXJQYXJhbXM6IHsgY2hlY2tib3g6IHRoaXMuc2hvd0NoZWNrQm94IH0sXG4gICAgICAgICAgZmllbGQ6IGdyb3VwQ29sdW1uLmZpZWxkLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY29sdW1uRGVmcy5mb3JFYWNoKChlbG0pID0+IHtcbiAgICAgIGlmIChlbG0ucm93R3JvdXBJbmRleCA+IC0xKSB7XG4gICAgICAgIGVsbS5oaWRlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGRpc3BsYXllZENvbHVtbnNDaGFuZ2VkKGUpIHtcbiAgICBpZiAodGhpcy5oYXNDaGlsZEZpZWxkID09PSAnbnVsbCcpIHtcbiAgICAgIGNvbnN0IGVlID0gZS5jb2x1bW5BcGkuZ2V0QWxsRGlzcGxheWVkQ29sdW1uR3JvdXBzKCk7XG4gICAgICBjb25zdCBlZWUgPSBlZS5maW5kKFxuICAgICAgICAoYykgPT4gYy5jb2xJZCAhPT0gJ2FnLUdyaWQtQXV0b0NvbHVtbicgJiYgYy5jb2xJZCAhPT0gJzAnXG4gICAgICApO1xuICAgICAgaWYgKGVlZSAmJiBlZWUuY29sSWQpIHtcbiAgICAgICAgdGhpcy5hdXRvR3JvdXBDb2x1bW5EZWYgPSB7XG4gICAgICAgICAgaGVhZGVyTmFtZTogZWVlLmNvbERlZi5oZWFkZXJOYW1lLFxuICAgICAgICAgIHdpZHRoOiBlZWUuY29sRGVmLndpZHRoLFxuICAgICAgICAgIGNlbGxSZW5kZXJlclBhcmFtczogeyBjaGVja2JveDogdGhpcy5zaG93Q2hlY2tCb3ggfSxcbiAgICAgICAgICBmaWVsZDogZWVlLmNvbERlZi5maWVsZCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZWZyZXNoKHJvdXRlOiBhbnlbXSA9IFtdKSB7XG4gICAgaWYgKHRoaXMucmVtb3RlT3BlcmF0aW9uICYmIHRoaXMuZ3JpZEFwaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyAgdGhpcy5ncmlkQXBpLnB1cmdlU2VydmVyU2lkZUNhY2hlKHJvdXRlKTtcbiAgICAgIHRoaXMuZ3JpZEFwaS5zZXRHcmlkT3B0aW9uKFxuICAgICAgICAnc2VydmVyU2lkZURhdGFzb3VyY2UnLFxuICAgICAgICB0aGlzLmludGVuYWxHcmlkRGF0YVNvdXJjZVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRhU291cmNlLmZldGNoKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIGludGVybmFsR3JpZENlbGxDbGlja2VkKGU6IENlbGxDbGlja2VkRXZlbnQpIHtcbiAgICB0aGlzLmNlbGxDbGljay5lbWl0KHtcbiAgICAgIGRhdGE6IHRoaXMubWFwQ2VsbEV2ZW50KGUpLFxuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgfSk7XG4gIH1cblxuICBpbnRlcm5hbEdyaWRDZWxsRG91YmxlQ2xpY2tlZChlOiBDZWxsQ2xpY2tlZEV2ZW50KSB7XG4gICAgdGhpcy5jZWxsRGJDbGljay5lbWl0KHtcbiAgICAgIGRhdGE6IHRoaXMubWFwQ2VsbEV2ZW50KGUpLFxuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgfSk7XG4gIH1cblxuICBpbnRlcm5hbEdyaWRDZWxsRm9jdXNlZChlOiBDZWxsQ2xpY2tlZEV2ZW50KSB7XG4gICAgdGhpcy5jZWxsRm9jdXNlLmVtaXQoe1xuICAgICAgZGF0YTogdGhpcy5tYXBDZWxsRXZlbnQoZSksXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudCxcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIGludGVybmFsR3JpZFJvd0NsaWNrZWQoZTogUm93Q2xpY2tlZEV2ZW50KSB7XG4gICAgaWYgKCFlLm5vZGUuZ3JvdXApIHtcbiAgICAgIHRoaXMucm93Q2xpY2suZW1pdCh7XG4gICAgICAgIGRhdGE6IHRoaXMubWFwUm93RXZlbnQoZSksXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpbnRlcm5hbEdyaWRSb3dEb3VibGVDbGlja2VkKGU6IENlbGxDbGlja2VkRXZlbnQpIHtcbiAgICBpZiAoIWUubm9kZS5ncm91cCkge1xuICAgICAgdGhpcy5yb3dEYkNsaWNrLmVtaXQoe1xuICAgICAgICBkYXRhOiB0aGlzLm1hcFJvd0V2ZW50KGUpLFxuICAgICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZGlmZmVyZW5jZU9mMkFycmF5cyhhcnJheTE6IGFueSwgYXJyYXkyOiBhbnkpIHtcbiAgICBjb25zdCB0ZW1wID0gW107XG4gICAgZm9yIChjb25zdCBpIGluIGFycmF5MSkge1xuICAgICAgaWYgKGFycmF5Mi5pbmRleE9mKGFycmF5MVtpXSkgPT09IC0xKSB7XG4gICAgICAgIHRlbXAucHVzaChhcnJheTFbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGNvbnN0IGkgaW4gYXJyYXkyKSB7XG4gICAgICBpZiAoYXJyYXkxLmluZGV4T2YoYXJyYXkyW2ldKSA9PT0gLTEpIHtcbiAgICAgICAgdGVtcC5wdXNoKGFycmF5MltpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0ZW1wLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgfVxuXG4gIHJvd1NlbGVjdGlvbkNoYW5nZWQoZSkge1xuICAgIGlmIChlLm5vZGUuc2VsZWN0ZWQgPT0gdHJ1ZSkge1xuICAgICAgdGhpcy5zZWxlY3RSb3cgPSB0aGlzLnNlbGVjdFJvdy5maWx0ZXIoXG4gICAgICAgIChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9IGUuZGF0YVt0aGlzLmtleUZpZWxkXVxuICAgICAgKTtcbiAgICAgIHRoaXMuc2VsZWN0Um93LnB1c2goZS5kYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RSb3cgPSB0aGlzLnNlbGVjdFJvdy5maWx0ZXIoXG4gICAgICAgIChjKSA9PiBjW3RoaXMua2V5RmllbGRdICE9IGUuZGF0YVt0aGlzLmtleUZpZWxkXVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5yb3dTZWxlY3Rpb25DaGFuZ2UuZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBkYXRhOiBlLFxuICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgfSk7XG4gIH1cblxuICBpbnRlcm5hbEdyaWRTZWxlY3Rpb25DaGFuZ2VkKGU6IGFueSkge1xuICAgIGNvbnN0IGFyZ3M6IEFYR3JpZFJvd1NlbGVjdGlvbkV2ZW50ID0geyBpdGVtczogW10gfTtcbiAgICBjb25zdCBvbGROb2RlcyA9IHRoaXMub2xkU2VsZWN0aW9uTm9kZXM7XG4gICAgY29uc3Qgbm9kZXMgPSB0aGlzLmdyaWRBcGkuZ2V0U2VsZWN0ZWROb2RlcygpO1xuXG4gICAgaWYgKHRoaXMuYXV0b0V4cGFuZCkge1xuICAgICAgY29uc3QgdW5zZWxlY3RlZE5vZGVzID0gb2xkTm9kZXMuZmlsdGVyKFxuICAgICAgICAob2xkTm9kZSkgPT4gIW5vZGVzLnNvbWUoKG5ld05vZGUpID0+IG5ld05vZGUgPT09IG9sZE5vZGUpXG4gICAgICApO1xuICAgICAgdW5zZWxlY3RlZE5vZGVzLmZvckVhY2goKGVsKSA9PiB7XG4gICAgICAgIGVsLnNldEV4cGFuZGVkKGZhbHNlKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnJlbW90ZU9wZXJhdGlvbikge1xuICAgICAgY29uc3QgaXNTZWxlY3RBbGxTZXJ2ZXJTaWRlOiBib29sZWFuID1cbiAgICAgICAgZS5hcGkuZ2V0U2VydmVyU2lkZVNlbGVjdGlvblN0YXRlKCkuc2VsZWN0QWxsO1xuICAgICAgaWYgKGlzU2VsZWN0QWxsU2VydmVyU2lkZSkge1xuICAgICAgICB0aGlzLmdyaWRBcGkuZm9yRWFjaE5vZGUoKG5vZGU6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChub2RlLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICBhcmdzLml0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICByb3dJbmRleDogbm9kZS5yb3dJbmRleCxcbiAgICAgICAgICAgICAgcm93TGV2ZWw6IG5vZGUubGV2ZWwsXG4gICAgICAgICAgICAgIGRhdGE6IG5vZGUuZGF0YSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcmdzLml0ZW1zID0gdGhpcy5oYW5kbGVOb2RlU2VsZWN0ZWQobm9kZXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhcmdzLml0ZW1zID0gdGhpcy5oYW5kbGVOb2RlU2VsZWN0ZWQobm9kZXMpO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHtcbiAgICAgIGRhdGE6IGFyZ3MsXG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5yZWYubmF0aXZlRWxlbWVudCxcbiAgICB9KTtcbiAgICBsZXQgYWN0aW9uID0gbm9kZXMubGVuZ3RoID4gb2xkTm9kZXMubGVuZ3RoID8gdHJ1ZSA6IGZhbHNlO1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmRpZmZlcmVuY2VPZjJBcnJheXMobm9kZXMsIG9sZE5vZGVzKTtcbiAgICB0aGlzLm9uUm93U2VsZWN0aW9uQ2hhbmdlZC5lbWl0KHtcbiAgICAgIGNvbXBvbmVudDogdGhpcyxcbiAgICAgIHNlbGVjdGVkOiBhY3Rpb24sXG4gICAgICBkYXRhOiBub2RlLFxuICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgfSk7XG4gICAgdGhpcy5vbGRTZWxlY3Rpb25Ob2RlcyA9IG5vZGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBDZWxsRXZlbnQoZTogQ2VsbEV2ZW50KTogQVhHcmlkQ2VsbEV2ZW50IHtcbiAgICByZXR1cm4ge1xuICAgICAgcm93TGV2ZWw6IDAsXG4gICAgICBjb2x1bW46IGUuY29sdW1uLFxuICAgICAgZGF0YTogZS5kYXRhLFxuICAgICAgcm93SW5kZXg6IGUucm93SW5kZXgsXG4gICAgICB2YWx1ZTogZS52YWx1ZSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBSb3dFdmVudChlOiBSb3dFdmVudCk6IEFYR3JpZFJvd0V2ZW50IHtcbiAgICByZXR1cm4ge1xuICAgICAgcm93TGV2ZWw6IDAsXG4gICAgICBkYXRhOiBlLmRhdGEsXG4gICAgICByb3dJbmRleDogZS5yb3dJbmRleCxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGRlc2VsZWN0QWxsKCkge1xuICAgIHRoaXMuZ3JpZEFwaS5kZXNlbGVjdEFsbCgpO1xuICB9XG5cbiAgcHVibGljIGRlc2VsZWN0QnlLZXlGaWVsZChrZXlGaWVsZCkge1xuICAgIHRoaXMuZ3JpZEFwaS5mb3JFYWNoTm9kZSgobm9kZSkgPT4ge1xuICAgICAgaWYgKG5vZGUuZGF0YSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxldCBzZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAgICAgaWYgKG5vZGUuZGF0YVt0aGlzLmtleUZpZWxkXSA9PT0ga2V5RmllbGQpIHtcbiAgICAgICAgICBub2RlLnNldFNlbGVjdGVkKHNlbGVjdCk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RSb3cgPSB0aGlzLnNlbGVjdFJvdy5maWx0ZXIoXG4gICAgICAgICAgICAoYykgPT4gY1t0aGlzLmtleUZpZWxkXSAhPSBrZXlGaWVsZFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGludGVybmFsR2V0Um93Q2xhc3MgPSAocDogYW55KSA9PiB7XG4gICAgaWYgKHRoaXMucm93Q2xhc3MpIHtcbiAgICAgIGlmICh0aGlzLnJvd0NsYXNzIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm93Q2xhc3Moe1xuICAgICAgICAgIHJvd0luZGV4OiBwLm5vZGUucm93SW5kZXgsXG4gICAgICAgICAgcm93TGV2ZWw6IHAubm9kZS5sZXZlbCxcbiAgICAgICAgICBkYXRhOiBwLmRhdGEsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucm93Q2xhc3M7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIHNob3dMb2FkaW5nKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmdyaWRBcGkpIHtcbiAgICAgIHRoaXMuZ3JpZEFwaS5zaG93TG9hZGluZ092ZXJsYXkoKTtcbiAgICB9XG4gIH1cblxuICBoaWRlTG9hZGluZygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ncmlkQXBpKSB7XG4gICAgICB0aGlzLmdyaWRBcGkuaGlkZU92ZXJsYXkoKTtcbiAgICB9XG4gIH1cblxuICBpbnRlcm5hbEdyaWRTaXplQ2hhbmdlZChlOiBHcmlkU2l6ZUNoYW5nZWRFdmVudCkge1xuICAgIGlmIChlLmNsaWVudFdpZHRoID4gMCAmJiBlLmNsaWVudEhlaWdodCA+IDApIHtcbiAgICAgIHRoaXMucGVyZm9ybVNpemVDb2x1bW5zVG9GaXQoZS5hcGkpO1xuICAgIH1cbiAgfVxuXG4gIGludGVybmFsR3JpZEZpcnN0RGF0YVJlbmRlcmVkKGU6IEZpcnN0RGF0YVJlbmRlcmVkRXZlbnQpIHtcbiAgICB0aGlzLnBlcmZvcm1TaXplQ29sdW1uc1RvRml0KGUuYXBpKTtcbiAgICB0aGlzLmhlYWRlckhlaWdodFNldHRlcigpO1xuICB9XG5cbiAgaGFuZGxlQ29sdW1uUmVzaXplZChlKSB7XG4gICAgdGhpcy5oZWFkZXJIZWlnaHRTZXR0ZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgcGVyZm9ybVNpemVDb2x1bW5zVG9GaXQoYXBpOiBHcmlkQXBpKSB7XG4gICAgaWYgKHRoaXMuc2l6ZUNvbHVtbnNUb0ZpdCkge1xuICAgICAgYXBpLnNpemVDb2x1bW5zVG9GaXQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhlYWRlckhlaWdodFNldHRlcigpIHtcbiAgICBjb25zdCBwYWRkaW5nID0gMjA7XG4gICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5oZWFkZXJIZWlnaHRHZXR0ZXIoKSArIHBhZGRpbmc7XG4gICAgdGhpcy5ncmlkQXBpLnNldEdyaWRPcHRpb24oJ2hlYWRlckhlaWdodCcsIGhlaWdodCk7XG4gIH1cblxuICBwcml2YXRlIGhlYWRlckhlaWdodEdldHRlcigpIHtcbiAgICBjb25zdCBjb2x1bW5IZWFkZXJUZXh0cyA9IFtcbiAgICAgIC4uLihkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYWctaGVhZGVyLWNlbGwtdGV4dCcpIGFzIGFueSksXG4gICAgXTtcblxuICAgIGNvbnN0IGNsaWVudEhlaWdodHMgPSBjb2x1bW5IZWFkZXJUZXh0cy5tYXAoXG4gICAgICAoaGVhZGVyVGV4dCkgPT4gaGVhZGVyVGV4dC5jbGllbnRIZWlnaHRcbiAgICApO1xuICAgIGNvbnN0IHRhbGxlc3RIZWFkZXJUZXh0SGVpZ2h0ID0gTWF0aC5tYXgoLi4uY2xpZW50SGVpZ2h0cyk7XG5cbiAgICByZXR1cm4gdGFsbGVzdEhlYWRlclRleHRIZWlnaHQ7XG4gIH1cblxuICBwcml2YXRlIG1ha2VSZWZyZXNoQnRuKCkge1xuICAgIGNvbnN0IHBhZ2luZ1BhbmVsID1cbiAgICAgIHRoaXMucmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmFnLXBhZ2luZy1wYW5lbCcpO1xuXG4gICAgY29uc3QgcmVmQnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuXG4gICAgcmVmQnRuLmNsYXNzTGlzdC5hZGQoJ2ZhcicpO1xuICAgIHJlZkJ0bi5jbGFzc0xpc3QuYWRkKCdmYS1zeW5jJyk7XG5cbiAgICByZWZCdG4uc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInO1xuXG4gICAgcmVmQnRuLnRpdGxlID0gQVhUcmFuc2xhdG9yLmdldCgnY29tbW9uLnJlZnJlc2gnKTtcblxuICAgIHJlZkJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLmdldEN1cnJlbnRQYWdlTnVtYmVyKCkuY3VycmVudDtcbiAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgIH0pO1xuXG4gICAgcGFnaW5nUGFuZWwuYXBwZW5kQ2hpbGQocmVmQnRuKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTmV4dEJ0bkNsaWNrKCkge1xuICAgIGNvbnN0IG5leHRQYWdlQnRuID0gdGhpcy5yZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgJ1tyZWY9XCJidE5leHRcIl0nXG4gICAgKSBhcyBIVE1MRWxlbWVudDtcblxuICAgIG5leHRQYWdlQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMuZ2V0Q3VycmVudFBhZ2VOdW1iZXIoKS5jdXJyZW50O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVCYWNrQnRuQ2xpY2soKSB7XG4gICAgY29uc3QgYmFja1BhZ2VCdG4gPSB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnW3JlZj1cImJ0UHJldmlvdXNcIl0nXG4gICAgKSBhcyBIVE1MRWxlbWVudDtcblxuICAgIGJhY2tQYWdlQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMuZ2V0Q3VycmVudFBhZ2VOdW1iZXIoKS5jdXJyZW50O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVMYXN0QnRuQ2xpY2soKSB7XG4gICAgY29uc3QgYmFja1BhZ2VCdG4gPSB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnW3JlZj1cImJ0TGFzdFwiXSdcbiAgICApIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgYmFja1BhZ2VCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gdGhpcy5nZXRDdXJyZW50UGFnZU51bWJlcigpLmN1cnJlbnQ7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUZpdHN0QnRuQ2xpY2soKSB7XG4gICAgY29uc3QgYmFja1BhZ2VCdG4gPSB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAnW3JlZj1cImJ0Rmlyc3RcIl0nXG4gICAgKSBhcyBIVE1MRWxlbWVudDtcblxuICAgIGJhY2tQYWdlQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMuZ2V0Q3VycmVudFBhZ2VOdW1iZXIoKS5jdXJyZW50O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVOb2RlU2VsZWN0ZWQobm9kZXMpIHtcbiAgICByZXR1cm4gbm9kZXMubWFwKChpKSA9PiB7XG4gICAgICBpZiAodGhpcy5hdXRvRXhwYW5kKSB7XG4gICAgICAgIGkuc2V0RXhwYW5kZWQodHJ1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICByb3dMZXZlbDogaS5sZXZlbCxcbiAgICAgICAgcm93SW5kZXg6IGkucm93SW5kZXgsXG4gICAgICAgIGRhdGE6IGkuZGF0YSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJheC1ncmlkLXRvb2xiYXJcIiAqbmdJZj1cInRvb2xiYXJcIj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtdG9vbGJhclwiPjwvbmctY29udGVudD5cbjwvZGl2PlxuPCEtLSBbZW5hYmxlU29ydGluZ109XCJ0cnVlXCIgIFtlbmFibGVDb2xSZXNpemVdPVwidHJ1ZVwiIFtlbmFibGVGaWx0ZXJdPVwiYWxsb3dGaWx0ZXJpbmdcIiAgLS0+XG5cbjxhZy1ncmlkLWFuZ3VsYXJcbiAgKm5nSWY9XCJncmlkVmlld1wiXG4gIGNsYXNzPVwiYWctdGhlbWUtYmFsaGFtXCJcbiAgW2dldFJvd0NsYXNzXT1cImludGVybmFsR2V0Um93Q2xhc3NcIlxuICBbc3VwcHJlc3NDb3B5Um93c1RvQ2xpcGJvYXJkXT1cInRydWVcIlxuICBbZW5hYmxlUmFuZ2VTZWxlY3Rpb25dPVwiZW5hYmxlUmFuZ2VTZWxlY3Rpb25cIlxuICBbc2VydmVyU2lkZVN0b3JlVHlwZV09XCIncGFydGlhbCdcIlxuICBbc3R5bGUuaGVpZ2h0XT1cImludGVybmFsSGVpZ2h0XCJcbiAgW2NvbHVtbkRlZnNdPVwiY29sdW1uRGVmc1wiXG4gIFtlbmFibGVSdGxdPVwicnRsXCJcbiAgW3BhZ2luYXRpb25dPVwicGFnaW5hdGlvblwiXG4gIFtyb3dHcm91cFBhbmVsU2hvd109XCJyb3dHcm91cFBhbmVsU2hvd1wiXG4gIFtyb3dNb2RlbFR5cGVdPVwicm93TW9kZWxUeXBlXCJcbiAgW2RldGFpbFJvd0hlaWdodF09XCJkZXRhaWxSb3dIZWlnaHRcIlxuICBbcm93SGVpZ2h0XT1cInJvd0hlaWdodFwiXG4gIFtwYWdpbmF0aW9uQXV0b1BhZ2VTaXplXT1cInBhZ2luYXRpb25BdXRvUGFnZVNpemVcIlxuICBbcGFnaW5hdGlvblBhZ2VTaXplXT1cInBhZ2luYXRpb25QYWdlU2l6ZVwiXG4gIFtwYWdpbmF0aW9uUGFnZVNpemVTZWxlY3Rvcl09XCJwYWdpbmF0aW9uUGFnZVNpemVTZWxlY3RvclwiXG4gIFtzdXBwcmVzc01lbnVIaWRlXT1cInRydWVcIlxuICBbbWF4Q29uY3VycmVudERhdGFzb3VyY2VSZXF1ZXN0c109XCJtYXhDb25jdXJyZW50RGF0YXNvdXJjZVJlcXVlc3RzXCJcbiAgW2Jsb2NrTG9hZERlYm91bmNlTWlsbGlzXT1cImJsb2NrTG9hZERlYm91bmNlTWlsbGlzXCJcbiAgW2ZyYW1ld29ya0NvbXBvbmVudHNdPVwiZnJhbWV3b3JrQ29tcG9uZW50c1wiXG4gIFtpc0Z1bGxXaWR0aENlbGxdPVwiaXNGdWxsV2lkdGhDZWxsXCJcbiAgW3Jvd1NlbGVjdGlvbl09XCJzZWxlY3Rpb25Nb2RlXCJcbiAgW3Jvd011bHRpU2VsZWN0V2l0aENsaWNrXT1cInJvd011bHRpU2VsZWN0V2l0aENsaWNrXCJcbiAgW2Z1bGxXaWR0aENlbGxSZW5kZXJlckZyYW1ld29ya109XCJmdWxsV2lkdGhDZWxsUmVuZGVyZXJGcmFtZXdvcmtcIlxuICBbY2FjaGVCbG9ja1NpemVdPVwiY2FjaGVCbG9ja1NpemVcIlxuICBbZnVsbFdpZHRoQ2VsbFJlbmRlcmVyUGFyYW1zXT1cImZ1bGxXaWR0aENlbGxSZW5kZXJlclBhcmFtc1wiXG4gIChjb2x1bW5SZXNpemVkKT1cImhhbmRsZUNvbHVtblJlc2l6ZWQoJGV2ZW50KVwiXG4gIChjZWxsQ2xpY2tlZCk9XCJpbnRlcm5hbEdyaWRDZWxsQ2xpY2tlZCgkZXZlbnQpXCJcbiAgKGNlbGxEb3VibGVDbGlja2VkKT1cImludGVybmFsR3JpZENlbGxEb3VibGVDbGlja2VkKCRldmVudClcIlxuICAoY2VsbEZvY3VzZWQpPVwiaW50ZXJuYWxHcmlkQ2VsbEZvY3VzZWQoJGV2ZW50KVwiXG4gIChyb3dDbGlja2VkKT1cImludGVybmFsR3JpZFJvd0NsaWNrZWQoJGV2ZW50KVwiXG4gIChzZWxlY3Rpb25DaGFuZ2VkKT1cImludGVybmFsR3JpZFNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiXG4gIChyb3dTZWxlY3RlZCk9XCJyb3dTZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxuICAocm93RG91YmxlQ2xpY2tlZCk9XCJpbnRlcm5hbEdyaWRSb3dEb3VibGVDbGlja2VkKCRldmVudClcIlxuICAoZ3JpZFJlYWR5KT1cImludGVybmFsR3JpZFJlYWR5KCRldmVudClcIlxuICBbZ3JvdXBTZWxlY3RzQ2hpbGRyZW5dPVwiZ3JvdXBTZWxlY3RzQ2hpbGRyZW5cIlxuICBbc3VwcHJlc3NSb3dDbGlja1NlbGVjdGlvbl09XCJzdXBwcmVzc1Jvd0NsaWNrU2VsZWN0aW9uXCJcbiAgW2dyb3VwU2VsZWN0c0ZpbHRlcmVkXT1cInRydWVcIlxuICBbc3VwcHJlc3NDZWxsU2VsZWN0aW9uXT1cInN1cHByZXNzQ2VsbFNlbGVjdGlvblwiXG4gIFthdXRvR3JvdXBDb2x1bW5EZWZdPVwiYXV0b0dyb3VwQ29sdW1uRGVmXCJcbiAgW3N1cHByZXNzQWdnRnVuY0luSGVhZGVyXT1cInRydWVcIlxuICBbdHJlZURhdGFdPVwidHJlZURhdGFcIlxuICBbYW5pbWF0ZVJvd3NdPVwidHJ1ZVwiXG4gIFtpc1NlcnZlclNpZGVHcm91cF09XCJpc1NlcnZlclNpZGVHcm91cFwiXG4gIFtnZXRTZXJ2ZXJTaWRlR3JvdXBLZXldPVwiZ2V0U2VydmVyU2lkZUdyb3VwS2V5XCJcbiAgW21hc3RlckRldGFpbF09XCJtYXN0ZXJEZXRhaWxcIlxuICBbZGV0YWlsQ2VsbFJlbmRlcmVyUGFyYW1zXT1cImRldGFpbENlbGxSZW5kZXJlclBhcmFtc1wiXG4gIFtkZXRhaWxDZWxsUmVuZGVyZXJdPVwiZGV0YWlsQ2VsbFJlbmRlcmVyXCJcbiAgKGdyaWRTaXplQ2hhbmdlZCk9XCJpbnRlcm5hbEdyaWRTaXplQ2hhbmdlZCgkZXZlbnQpXCJcbiAgKGZpcnN0RGF0YVJlbmRlcmVkKT1cImludGVybmFsR3JpZEZpcnN0RGF0YVJlbmRlcmVkKCRldmVudClcIlxuICBbbG9jYWxlVGV4dF09XCJsb2NhbGVUZXh0XCJcbiAgW2dyb3VwSGlkZU9wZW5QYXJlbnRzXT1cImdyb3VwSGlkZU9wZW5QYXJlbnRzXCJcbiAgW2FsbG93Q29udGV4dE1lbnVXaXRoQ29udHJvbEtleV09XCJmYWxzZVwiXG4gIFtnZXRNYWluTWVudUl0ZW1zXT1cImdldE1haW5NZW51SXRlbXNcIlxuPlxuPC9hZy1ncmlkLWFuZ3VsYXI+XG5cbjwhLS0gKGRpc3BsYXllZENvbHVtbnNDaGFuZ2VkKT1cImRpc3BsYXllZENvbHVtbnNDaGFuZ2VkKCRldmVudClcIiAgLS0+XG4iXX0=
@@ -817,13 +817,16 @@ class AXGridRowNumberColumn extends AXGridDataColumn {
817
817
  : AXConfig.get('layout.rtl')
818
818
  ? 'ردیف'
819
819
  : 'Row'),
820
- (col.valueGetter = 'node.rowIndex + 1'),
821
- (col.pinned =
822
- this.pinned == null
823
- ? null
824
- : this.pinned === 'start'
825
- ? 'right'
826
- : 'left'),
820
+ (col.valueGetter = (params) => {
821
+ if (!params.data)
822
+ return null;
823
+ if (params.data.rowNumber == null && params.node) {
824
+ params.data.rowNumber = params.node.rowIndex + 1;
825
+ }
826
+ return params.data.rowNumber;
827
+ });
828
+ (col.pinned =
829
+ this.pinned == null ? null : this.pinned === 'start' ? 'right' : 'left'),
827
830
  (col.filter = false);
828
831
  col.resizable = true;
829
832
  col.sortable = false;
@@ -1474,17 +1477,13 @@ class AXDataGridComponent {
1474
1477
  }
1475
1478
  });
1476
1479
  }
1477
- }
1478
- nodes.forEach((i) => {
1479
- if (this.autoExpand) {
1480
- i.setExpanded(true);
1480
+ else {
1481
+ args.items = this.handleNodeSelected(nodes);
1481
1482
  }
1482
- args.items.push({
1483
- rowLevel: i.level,
1484
- rowIndex: i.rowIndex,
1485
- data: i.data,
1486
- });
1487
- });
1483
+ }
1484
+ else {
1485
+ args.items = this.handleNodeSelected(nodes);
1486
+ }
1488
1487
  this.selectionChanged.emit({
1489
1488
  data: args,
1490
1489
  component: this,
@@ -1621,6 +1620,18 @@ class AXDataGridComponent {
1621
1620
  this.currentPage = this.getCurrentPageNumber().current;
1622
1621
  });
1623
1622
  }
1623
+ handleNodeSelected(nodes) {
1624
+ return nodes.map((i) => {
1625
+ if (this.autoExpand) {
1626
+ i.setExpanded(true);
1627
+ }
1628
+ return {
1629
+ rowLevel: i.level,
1630
+ rowIndex: i.rowIndex,
1631
+ data: i.data,
1632
+ };
1633
+ });
1634
+ }
1624
1635
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: AXDataGridComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1625
1636
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.7", type: AXDataGridComponent, selector: "ax-data-grid", inputs: { paginationPageSizeSelector: "paginationPageSizeSelector", paginationAutoPageSize: "paginationAutoPageSize", paginationPageSize: "paginationPageSize", remoteOperation: "remoteOperation", rowMultiSelectWithClick: "rowMultiSelectWithClick", suppressRowClickSelection: "suppressRowClickSelection", suppressCellSelection: "suppressCellSelection", sizeColumnsToFit: "sizeColumnsToFit", showCheckBox: "showCheckBox", floatingFilter: "floatingFilter", autoExpand: "autoExpand", rowSelectableConditionField: "rowSelectableConditionField", selectionMode: "selectionMode", pagination: "pagination", selectRow: "selectRow", rowGroupPanelShow: "rowGroupPanelShow", loadOnInit: "loadOnInit", enableRangeSelection: "enableRangeSelection", keyField: "keyField", hasChildField: "hasChildField", rowHeight: "rowHeight", groupHideOpenParents: "groupHideOpenParents", maxConcurrentDatasourceRequests: "maxConcurrentDatasourceRequests", blockLoadDebounceMillis: "blockLoadDebounceMillis", showRefreshButton: "showRefreshButton", autoNavigatePage: "autoNavigatePage", rowClass: "rowClass", rtl: "rtl", searchText: "searchText", filter: "filter", columns: "columns", dataSource: "dataSource" }, outputs: { columnsChange: "columnsChange", cellClick: "cellClick", cellDbClick: "cellDbClick", cellFocuse: "cellFocuse", rowClick: "rowClick", rowDbClick: "rowDbClick", selectionChanged: "selectionChanged", rowSelectionChange: "rowSelectionChange", onRowSelectionChanged: "onRowSelectionChanged" }, queries: [{ propertyName: "searchInput", first: true, predicate: AXToolbarSearchComponent, descendants: true, static: true }, { propertyName: "toolbar", first: true, predicate: AXToolbarComponent, descendants: true, static: true }, { propertyName: "rowTemplate", first: true, predicate: AXDataGridRowTemplateComponent, descendants: true, static: true }, { propertyName: "gridDetailTemplate", first: true, predicate: AXDataGridDetailTemplateComponent, descendants: true, static: true }, { propertyName: "_contentDataSource", first: true, predicate: AXDataSourceComponent, descendants: true, static: true }, { propertyName: "_inlineColumns", predicate: AXGridDataColumn }], ngImport: i0, template: "<div class=\"ax-grid-toolbar\" *ngIf=\"toolbar\">\n <ng-content select=\"ax-toolbar\"></ng-content>\n</div>\n<!-- [enableSorting]=\"true\" [enableColResize]=\"true\" [enableFilter]=\"allowFiltering\" -->\n\n<ag-grid-angular\n *ngIf=\"gridView\"\n class=\"ag-theme-balham\"\n [getRowClass]=\"internalGetRowClass\"\n [suppressCopyRowsToClipboard]=\"true\"\n [enableRangeSelection]=\"enableRangeSelection\"\n [serverSideStoreType]=\"'partial'\"\n [style.height]=\"internalHeight\"\n [columnDefs]=\"columnDefs\"\n [enableRtl]=\"rtl\"\n [pagination]=\"pagination\"\n [rowGroupPanelShow]=\"rowGroupPanelShow\"\n [rowModelType]=\"rowModelType\"\n [detailRowHeight]=\"detailRowHeight\"\n [rowHeight]=\"rowHeight\"\n [paginationAutoPageSize]=\"paginationAutoPageSize\"\n [paginationPageSize]=\"paginationPageSize\"\n [paginationPageSizeSelector]=\"paginationPageSizeSelector\"\n [suppressMenuHide]=\"true\"\n [maxConcurrentDatasourceRequests]=\"maxConcurrentDatasourceRequests\"\n [blockLoadDebounceMillis]=\"blockLoadDebounceMillis\"\n [frameworkComponents]=\"frameworkComponents\"\n [isFullWidthCell]=\"isFullWidthCell\"\n [rowSelection]=\"selectionMode\"\n [rowMultiSelectWithClick]=\"rowMultiSelectWithClick\"\n [fullWidthCellRendererFramework]=\"fullWidthCellRendererFramework\"\n [cacheBlockSize]=\"cacheBlockSize\"\n [fullWidthCellRendererParams]=\"fullWidthCellRendererParams\"\n (columnResized)=\"handleColumnResized($event)\"\n (cellClicked)=\"internalGridCellClicked($event)\"\n (cellDoubleClicked)=\"internalGridCellDoubleClicked($event)\"\n (cellFocused)=\"internalGridCellFocused($event)\"\n (rowClicked)=\"internalGridRowClicked($event)\"\n (selectionChanged)=\"internalGridSelectionChanged($event)\"\n (rowSelected)=\"rowSelectionChanged($event)\"\n (rowDoubleClicked)=\"internalGridRowDoubleClicked($event)\"\n (gridReady)=\"internalGridReady($event)\"\n [groupSelectsChildren]=\"groupSelectsChildren\"\n [suppressRowClickSelection]=\"suppressRowClickSelection\"\n [groupSelectsFiltered]=\"true\"\n [suppressCellSelection]=\"suppressCellSelection\"\n [autoGroupColumnDef]=\"autoGroupColumnDef\"\n [suppressAggFuncInHeader]=\"true\"\n [treeData]=\"treeData\"\n [animateRows]=\"true\"\n [isServerSideGroup]=\"isServerSideGroup\"\n [getServerSideGroupKey]=\"getServerSideGroupKey\"\n [masterDetail]=\"masterDetail\"\n [detailCellRendererParams]=\"detailCellRendererParams\"\n [detailCellRenderer]=\"detailCellRenderer\"\n (gridSizeChanged)=\"internalGridSizeChanged($event)\"\n (firstDataRendered)=\"internalGridFirstDataRendered($event)\"\n [localeText]=\"localeText\"\n [groupHideOpenParents]=\"groupHideOpenParents\"\n [allowContextMenuWithControlKey]=\"false\"\n [getMainMenuItems]=\"getMainMenuItems\"\n>\n</ag-grid-angular>\n\n<!-- (displayedColumnsChanged)=\"displayedColumnsChanged($event)\" -->\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "columnMenu", "suppressMenuHide", "enableBrowserTooltips", "tooltipTrigger", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "tooltipShowMode", "tooltipInteraction", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "suppressCutToClipboard", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "dataTypeDefinitions", "maintainColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "autoSizeStrategy", "components", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enterNavigatesVertically", "enterNavigatesVerticallyAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "quickFilterText", "cacheQuickFilter", "excludeHiddenColumnsFromQuickFilter", "includeHiddenColumnsInQuickFilter", "quickFilterParser", "quickFilterMatcher", "applyQuickFilterBeforePivotOrAgg", "excludeChildrenWhenTreeDataFiltering", "enableAdvancedFilter", "advancedFilterModel", "includeHiddenColumnsInAdvancedFilter", "advancedFilterParent", "advancedFilterBuilderParams", "suppressAdvancedFilterEval", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "suppressChartToolPanelsButton", "chartToolPanelsDef", "chartMenuItems", "loadingCellRenderer", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationPageSizeSelector", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotMaxGeneratedColumns", "pivotDefaultExpanded", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "alwaysAggregateAtRootLevel", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDuration", "cellFlashDelay", "cellFadeDuration", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererParams", "embedFullWidthRows", "suppressGroupMaintainValueType", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupLockGroupColumns", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupTotalRow", "grandTotalRow", "suppressStickyTotalRow", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "suppressGroupRowsSticky", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "suppressServerSideInfiniteScroll", "suppressServerSideFullWidthLoadingRow", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideEnableClientSideSort", "serverSideOnlyRefreshFilteredGroups", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSidePivotResultFieldSeparator", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellFocus", "suppressHeaderFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "gridId", "deltaSort", "treeDataDisplayType", "functionsPassive", "enableGroupEdit", "initialState", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processUnpinnedColumns", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "getLocaleText", "getDocument", "paginationNumberFormatter", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "columnMenuVisibleChanged", "contextMenuVisibleChanged", "cutStart", "cutEnd", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "columnHeaderMouseOver", "columnHeaderMouseLeave", "columnHeaderClicked", "columnHeaderContextMenu", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "rangeDeleteStart", "rangeDeleteEnd", "fillStart", "fillEnd", "filterOpened", "filterChanged", "filterModified", "advancedFilterBuilderVisibleChanged", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "gridReady", "gridPreDestroyed", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "stateUpdated", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pivotMaxColumnsExceeded", "pinnedRowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "storeRefreshed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "tooltipShow", "tooltipHide", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }], encapsulation: i0.ViewEncapsulation.None });
1626
1637
  }