@tetacom/ng-components 1.4.17 → 1.4.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/component/property-grid/property-grid/property-grid-item/property-grid-item.component.d.ts +2 -2
- package/esm2022/common/contract/teta-content-ref.mjs +1 -1
- package/esm2022/common/service/dynamic-component.service.mjs +1 -1
- package/esm2022/common/util/array-util.mjs +1 -1
- package/esm2022/common/util/position-util.mjs +1 -1
- package/esm2022/component/accordion/accordion-head/accordion-head.component.mjs +3 -3
- package/esm2022/component/accordion/accordion-item/accordion-item.component.mjs +3 -3
- package/esm2022/component/avatar/avatar/avatar.component.mjs +3 -3
- package/esm2022/component/chart-3d/chart3d/chart3d.component.mjs +1 -1
- package/esm2022/component/checkbox/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/component/date-picker/base-calendar.mjs +1 -1
- package/esm2022/component/date-picker/base-picker.mjs +1 -1
- package/esm2022/component/date-picker/date-picker/date-calendar/date-calendar.component.mjs +3 -3
- package/esm2022/component/date-picker/date-picker/date-picker.component.mjs +3 -3
- package/esm2022/component/date-picker/date-range/date-range.component.mjs +3 -3
- package/esm2022/component/date-picker/date-range/range-calendar/range-calendar.component.mjs +3 -3
- package/esm2022/component/date-picker/day-picker/day-picker.component.mjs +3 -3
- package/esm2022/component/date-picker/month-picker/month-picker.component.mjs +3 -3
- package/esm2022/component/date-picker/year-picker/year-picker.component.mjs +3 -3
- package/esm2022/component/divider/divider/divider.component.mjs +3 -3
- package/esm2022/component/dropdown/dropdown/dropdown.component.mjs +1 -1
- package/esm2022/component/dropdown/dropdown-base.mjs +1 -1
- package/esm2022/component/dropdown/dropdown.directive.mjs +1 -1
- package/esm2022/component/expand-card/expand-card/expand-card.component.mjs +3 -3
- package/esm2022/component/expand-card/expand-item/expand-item.component.mjs +3 -3
- package/esm2022/component/expand-panel/expand-panel/expand-panel.component.mjs +3 -3
- package/esm2022/component/filter/boolean-filter/boolean-filter.component.mjs +3 -3
- package/esm2022/component/filter/date-filter/date-filter.component.mjs +3 -3
- package/esm2022/component/filter/list-filter/list-filter.component.mjs +3 -3
- package/esm2022/component/filter/numeric-filter/numeric-filter.component.mjs +3 -3
- package/esm2022/component/filter/string-filter/string-filter.component.mjs +1 -1
- package/esm2022/component/icon/icon.service.mjs +1 -1
- package/esm2022/component/input/input/input.component.mjs +3 -3
- package/esm2022/component/input/text-field/text-field.component.mjs +3 -3
- package/esm2022/component/message/message/message.component.mjs +3 -3
- package/esm2022/component/message/message-host/message-host.component.mjs +3 -3
- package/esm2022/component/modal/dialog/dialog.component.mjs +3 -3
- package/esm2022/component/modal/dialog.service.mjs +1 -1
- package/esm2022/component/modal/modal.service.mjs +1 -1
- package/esm2022/component/modal/model/modal-instance.mjs +1 -1
- package/esm2022/component/progress-bar/progress-bar/progress-bar.component.mjs +1 -1
- package/esm2022/component/property-grid/property-grid/property-grid-group/property-grid-group.component.mjs +3 -3
- package/esm2022/component/property-grid/property-grid/property-grid-item/property-grid-item.component.mjs +4 -4
- package/esm2022/component/property-grid/property-grid/property-grid.component.mjs +16 -7
- package/esm2022/component/radio/radio-button/radio-button.component.mjs +3 -3
- package/esm2022/component/resize-panel/resize-panel/resize-panel.component.mjs +1 -1
- package/esm2022/component/select/select/select.component.mjs +3 -3
- package/esm2022/component/sidebar/sidebar/sidebar.component.mjs +3 -3
- package/esm2022/component/stepper/stepper/stepper.component.mjs +3 -3
- package/esm2022/component/switch/switch/switch.component.mjs +1 -1
- package/esm2022/component/switch/switch-button/switch-button.component.mjs +1 -1
- package/esm2022/component/table/base/cell-component-base.mjs +1 -1
- package/esm2022/component/table/default/boolean-cell/boolean-cell.component.mjs +3 -3
- package/esm2022/component/table/default/date-cell/date-cell.component.mjs +3 -3
- package/esm2022/component/table/default/date-time-cell/date-time-cell.component.mjs +3 -3
- package/esm2022/component/table/default/default-head-cell/default-head-cell.component.mjs +3 -3
- package/esm2022/component/table/default/list-cell/list-cell.component.mjs +3 -3
- package/esm2022/component/table/default/numeric-cell/numeric-cell.component.mjs +3 -3
- package/esm2022/component/table/default/string-cell/string-cell.component.mjs +3 -3
- package/esm2022/component/table/head-cell/head-cell.component.mjs +3 -3
- package/esm2022/component/table/head-cell-dropdown/head-cell-dropdown.component.mjs +3 -3
- package/esm2022/component/table/selection-cell/selection-cell.component.mjs +1 -1
- package/esm2022/component/table/selection-head-cell/selection-head-cell.component.mjs +1 -1
- package/esm2022/component/table/service/table.service.mjs +1 -1
- package/esm2022/component/table/table/table.component.mjs +1 -1
- package/esm2022/component/table/table-body/table-body.component.mjs +3 -3
- package/esm2022/component/table/table-head/filter-dropdown-tab/filter-dropdown-tab.component.mjs +3 -3
- package/esm2022/component/table/table-head/main-dropdown-tab/main-dropdown-tab.component.mjs +3 -3
- package/esm2022/component/table/table-head/table-head.component.mjs +3 -3
- package/esm2022/component/table/table-head/visibility-dropdown-tab/visibility-dropdown-tab.component.mjs +3 -3
- package/esm2022/component/table/table-head-group/table-head-group.component.mjs +3 -3
- package/esm2022/component/table/util/state-util.mjs +1 -1
- package/esm2022/component/tabs/tabs/tabs.component.mjs +3 -3
- package/esm2022/component/toggle/toggle/toggle.component.mjs +3 -3
- package/esm2022/component/tree/tree/tree.component.mjs +3 -3
- package/esm2022/component/tree/tree-item/tree-item.component.mjs +1 -1
- package/esm2022/component/tree/tree-item-toggle/tree-item-toggle.component.mjs +1 -1
- package/esm2022/directive/auto-position/auto-position.directive.mjs +1 -1
- package/esm2022/directive/click-outside/click-outside.directive.mjs +1 -1
- package/esm2022/directive/context-menu/context-menu.directive.mjs +1 -1
- package/esm2022/directive/drag-drop/drag-container.directive.mjs +1 -1
- package/esm2022/directive/drag-drop/drag-drop.service.mjs +1 -1
- package/esm2022/directive/drag-drop/drag.directive.mjs +1 -1
- package/esm2022/directive/drag-sort/drag-sort-item.directive.mjs +1 -1
- package/esm2022/directive/dynamic-content-base.directive.mjs +1 -1
- package/esm2022/directive/highlight/highlight.directive.mjs +1 -1
- package/esm2022/directive/hint/hint.directive.mjs +1 -1
- package/esm2022/directive/let/let.directive.mjs +1 -1
- package/esm2022/directive/loader/loader.directive.mjs +1 -1
- package/esm2022/directive/no-autofill/no-autofill.directive.mjs +1 -1
- package/esm2022/directive/only-number/only-number.directive.mjs +1 -1
- package/esm2022/directive/scroll-into-view/scroll-into-view.directive.mjs +1 -1
- package/esm2022/directive/scrollable/scrollable/scrollable.component.mjs +1 -1
- package/esm2022/directive/tooltip/tooltip.directive.mjs +1 -1
- package/esm2022/observable/animation-frame.mjs +1 -1
- package/esm2022/observable/zone-observable.mjs +1 -1
- package/esm2022/pipe/number-pipe/number.pipe.mjs +1 -1
- package/esm2022/pipe/util/number-helper.mjs +1 -1
- package/esm2022/util/date-util.mjs +1 -1
- package/esm2022/util/forms-util.mjs +1 -1
- package/fesm2022/tetacom-ng-components.mjs +111 -103
- package/fesm2022/tetacom-ng-components.mjs.map +1 -1
- package/package.json +1 -1
- package/style/accordion.scss +3 -1
- package/style/chips.scss +5 -1
- package/style/datepicker.scss +3 -1
- package/style/icon.scss +4 -4
- package/style/input.scss +3 -1
- package/style/select.scss +3 -1
- package/style/tabs.scss +3 -1
- package/style/tag.scss +3 -1
|
@@ -27,11 +27,11 @@ export class HeadCellDropdownComponent {
|
|
|
27
27
|
return index;
|
|
28
28
|
}
|
|
29
29
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: HeadCellDropdownComponent, deps: [{ token: i1.TableService }, { token: i2.TetaConfigService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
30
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: HeadCellDropdownComponent, isStandalone: true, selector: "teta-head-cell-dropdown", inputs: { columns: "columns", column: "column", state: "state", data: "data", tabTemplates: "tabTemplates", dropDownOpen: "dropDownOpen" }, outputs: { dropDownOpenChange: "dropDownOpenChange" }, ngImport: i0, template: "@if (dropDownOpen) {\n<teta-tabs class=\"column_auto\">\n
|
|
30
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.1", type: HeadCellDropdownComponent, isStandalone: true, selector: "teta-head-cell-dropdown", inputs: { columns: "columns", column: "column", state: "state", data: "data", tabTemplates: "tabTemplates", dropDownOpen: "dropDownOpen" }, outputs: { dropDownOpenChange: "dropDownOpenChange" }, ngImport: i0, template: "@if (dropDownOpen) {\n <teta-tabs class=\"column_auto\">\n @for (tab of tabTemplates; track trackIndex($index)) {\n @if (tab.showTab(column)) {\n <teta-tab>\n <ng-template tetaTabTitle>\n @if (tab.icon) {\n <teta-icon [name]=\"tab.icon\" [palette]=\"'text'\"></teta-icon>\n }\n </ng-template>\n <ng-template tetaTabContent>\n <ng-container\n *ngTemplateOutlet=\"\n tab.template;\n context: {\n column: column,\n columns: columns,\n data: data,\n state: state,\n close: closeDropdown,\n }\n \"\n ></ng-container>\n </ng-template>\n </teta-tab>\n }\n }\n </teta-tabs>\n}\n", styles: [":host{display:flex;flex-grow:1;min-height:0;min-width:250px}\n"], dependencies: [{ kind: "component", type: TabsComponent, selector: "teta-tabs", inputs: ["activeId", "direction", "size", "destroyOnHide"], outputs: ["tabChange"] }, { kind: "component", type: TabComponent, selector: "teta-tab", inputs: ["id", "title", "disabled"] }, { kind: "directive", type: TabTitleDirective, selector: "[tetaTabTitle]" }, { kind: "component", type: IconComponent, selector: "teta-icon", inputs: ["name", "size", "palette", "class"] }, { kind: "directive", type: TabContentDirective, selector: "[tetaTabContent]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
31
31
|
}
|
|
32
32
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: HeadCellDropdownComponent, decorators: [{
|
|
33
33
|
type: Component,
|
|
34
|
-
args: [{ selector: 'teta-head-cell-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [TabsComponent, TabComponent, TabTitleDirective, IconComponent, TabContentDirective, NgTemplateOutlet], template: "@if (dropDownOpen) {\n<teta-tabs class=\"column_auto\">\n
|
|
34
|
+
args: [{ selector: 'teta-head-cell-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [TabsComponent, TabComponent, TabTitleDirective, IconComponent, TabContentDirective, NgTemplateOutlet], template: "@if (dropDownOpen) {\n <teta-tabs class=\"column_auto\">\n @for (tab of tabTemplates; track trackIndex($index)) {\n @if (tab.showTab(column)) {\n <teta-tab>\n <ng-template tetaTabTitle>\n @if (tab.icon) {\n <teta-icon [name]=\"tab.icon\" [palette]=\"'text'\"></teta-icon>\n }\n </ng-template>\n <ng-template tetaTabContent>\n <ng-container\n *ngTemplateOutlet=\"\n tab.template;\n context: {\n column: column,\n columns: columns,\n data: data,\n state: state,\n close: closeDropdown,\n }\n \"\n ></ng-container>\n </ng-template>\n </teta-tab>\n }\n }\n </teta-tabs>\n}\n", styles: [":host{display:flex;flex-grow:1;min-height:0;min-width:250px}\n"] }]
|
|
35
35
|
}], ctorParameters: () => [{ type: i1.TableService }, { type: i2.TetaConfigService }, { type: i0.ChangeDetectorRef }], propDecorators: { columns: [{
|
|
36
36
|
type: Input
|
|
37
37
|
}], column: [{
|
|
@@ -47,4 +47,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImpor
|
|
|
47
47
|
}], dropDownOpenChange: [{
|
|
48
48
|
type: Output
|
|
49
49
|
}] } });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZC1jZWxsLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGFibGUvaGVhZC1jZWxsLWRyb3Bkb3duL2hlYWQtY2VsbC1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RhYmxlL2hlYWQtY2VsbC1kcm9wZG93bi9oZWFkLWNlbGwtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7OztBQVUvRCxNQUFNLE9BQU8seUJBQXlCO0lBU3BDLFlBQ1UsSUFBcUIsRUFDckIsT0FBMEIsRUFDMUIsSUFBdUI7UUFGdkIsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFDMUIsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFMdkIsdUJBQWtCLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFRbEYsa0JBQWEsR0FBRyxHQUFHLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7WUFDMUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUM7SUFMQyxDQUFDO0lBT0osVUFBVSxDQUFDLEtBQUs7UUFDZCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OEdBdEJVLHlCQUF5QjtrR0FBekIseUJBQXlCLHNSQ3ZCdEMscTFCQTZCQSx3SERSWSxhQUFhLDBJQUFFLFlBQVksMEZBQUUsaUJBQWlCLDJEQUFFLGFBQWEsb0dBQUUsbUJBQW1CLDZEQUFFLGdCQUFnQjs7MkZBRW5HLHlCQUF5QjtrQkFSckMsU0FBUzsrQkFDRSx5QkFBeUIsbUJBR2xCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLENBQUM7aUpBR3RHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBJVHJlZURhdGEgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vY29udHJhY3QvaS10cmVlLWRhdGEnO1xuaW1wb3J0IHsgVGV0YUNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9sb2NhbGUvdGV0YS1jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBGaWx0ZXJTdGF0ZSB9IGZyb20gJy4uLy4uL2ZpbHRlci9jb250YXJjdC9maWx0ZXItc3RhdGUnO1xuaW1wb3J0IHsgSGVhZERyb3Bkb3duVGFiIH0gZnJvbSAnLi4vY29udHJhY3QvaGVhZC1kcm9wZG93bi10YWInO1xuaW1wb3J0IHsgVGFibGVDb2x1bW4gfSBmcm9tICcuLi9jb250cmFjdC90YWJsZS1jb2x1bW4nO1xuaW1wb3J0IHsgVGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS90YWJsZS5zZXJ2aWNlJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVGFiQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL3RhYnMvdGFiLWNvbnRlbnQuZGlyZWN0aXZlJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9pY29uL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFiVGl0bGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi90YWJzL3RhYi10aXRsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVGFiQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdGFicy90YWIvdGFiLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdGFicy90YWJzL3RhYnMuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS1oZWFkLWNlbGwtZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJy4vaGVhZC1jZWxsLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vaGVhZC1jZWxsLWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbVGFic0NvbXBvbmVudCwgVGFiQ29tcG9uZW50LCBUYWJUaXRsZURpcmVjdGl2ZSwgSWNvbkNvbXBvbmVudCwgVGFiQ29udGVudERpcmVjdGl2ZSwgTmdUZW1wbGF0ZU91dGxldF0sXG59KVxuZXhwb3J0IGNsYXNzIEhlYWRDZWxsRHJvcGRvd25Db21wb25lbnQ8VD4ge1xuICBASW5wdXQoKSBjb2x1bW5zOiBJVHJlZURhdGFbXTtcbiAgQElucHV0KCkgY29sdW1uOiBUYWJsZUNvbHVtbjtcbiAgQElucHV0KCkgc3RhdGU6IEZpbHRlclN0YXRlO1xuICBASW5wdXQoKSBkYXRhOiBUW107XG4gIEBJbnB1dCgpIHRhYlRlbXBsYXRlczogSGVhZERyb3Bkb3duVGFiW107XG4gIEBJbnB1dCgpIGRyb3BEb3duT3BlbjogYm9vbGVhbjtcbiAgQE91dHB1dCgpIGRyb3BEb3duT3BlbkNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3N2YzogVGFibGVTZXJ2aWNlPFQ+LFxuICAgIHByaXZhdGUgX2NvbmZpZzogVGV0YUNvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7fVxuXG4gIGNsb3NlRHJvcGRvd24gPSAoKSA9PiB7XG4gICAgdGhpcy5kcm9wRG93bk9wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmRyb3BEb3duT3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgfTtcblxuICB0cmFja0luZGV4KGluZGV4KSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG59XG4iLCJAaWYgKGRyb3BEb3duT3Blbikge1xuICA8dGV0YS10YWJzIGNsYXNzPVwiY29sdW1uX2F1dG9cIj5cbiAgICBAZm9yICh0YWIgb2YgdGFiVGVtcGxhdGVzOyB0cmFjayB0cmFja0luZGV4KCRpbmRleCkpIHtcbiAgICAgIEBpZiAodGFiLnNob3dUYWIoY29sdW1uKSkge1xuICAgICAgICA8dGV0YS10YWI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIHRldGFUYWJUaXRsZT5cbiAgICAgICAgICAgIEBpZiAodGFiLmljb24pIHtcbiAgICAgICAgICAgICAgPHRldGEtaWNvbiBbbmFtZV09XCJ0YWIuaWNvblwiIFtwYWxldHRlXT1cIid0ZXh0J1wiPjwvdGV0YS1pY29uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIHRldGFUYWJDb250ZW50PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgIHRhYi50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgICBjb2x1bW46IGNvbHVtbixcbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM6IGNvbHVtbnMsXG4gICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgICAgICAgY2xvc2U6IGNsb3NlRHJvcGRvd24sXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdGV0YS10YWI+XG4gICAgICB9XG4gICAgfVxuICA8L3RldGEtdGFicz5cbn1cbiJdfQ==
|
|
@@ -43,4 +43,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImpor
|
|
|
43
43
|
type: HostBinding,
|
|
44
44
|
args: ['class.cell']
|
|
45
45
|
}] } });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWNlbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudC90YWJsZS9zZWxlY3Rpb24tY2VsbC9zZWxlY3Rpb24tY2VsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RhYmxlL3NlbGVjdGlvbi1jZWxsL3NlbGVjdGlvbi1jZWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxHQUdOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7O0FBVS9FLE1BQU0sT0FBTyxzQkFBc0I7SUFRakMsWUFDVSxJQUFxQixFQUNyQixJQUF1QjtRQUR2QixTQUFJLEdBQUosSUFBSSxDQUFpQjtRQUNyQixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQVBXLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBQ2xFLGlCQUFZLEdBQVEsRUFBRSxDQUFDO1FBRWYsV0FBTSxHQUFHLElBQUksQ0FBQztJQUtuQixDQUFDO0lBRUosU0FBUyxDQUFDLEtBQWM7UUFDdEIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN6RSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDOzhHQTlCVSxzQkFBc0I7a0dBQXRCLHNCQUFzQixzS0N0Qm5DLGtOQU9BLHlIRGFZLGlCQUFpQiwrSkFBRSxXQUFXOzsyRkFFN0Isc0JBQXNCO2tCQVJsQyxTQUFTOytCQUNFLHFCQUFxQixtQkFHZCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLGlCQUFpQixFQUFFLFdBQVcsQ0FBQztpSEFHaEMsR0FBRztzQkFBWCxLQUFLO2dCQUVzQyxjQUFjO3NCQUF6RCxXQUFXO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL3RhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgdGFrZVdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NoZWNrYm94L2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtc2VsZWN0aW9uLWNlbGwnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0aW9uLWNlbGwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3Rpb24tY2VsbC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NoZWNrYm94Q29tcG9uZW50LCBGb3Jtc01vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdGlvbkNlbGxDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHJvdzogVDtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNlbGwnKSBwcml2YXRlIHJlYWRvbmx5IHRhYmxlQ2VsbENsYXNzID0gdHJ1ZTtcbiAgc2VsZWN0ZWRSb3dzOiBUW10gPSBbXTtcblxuICBwcml2YXRlIF9hbGl2ZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfc3ZjOiBUYWJsZVNlcnZpY2U8VD4sXG4gICAgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7fVxuXG4gIHNlbGVjdFJvdyh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5fc3ZjLnNlbGVjdFJvdyh0aGlzLnJvdyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3N2Yy5kZXNlbGVjdFJvdyh0aGlzLnJvdyk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc3ZjLnNlbGVjdGVkUm93cy5waXBlKHRha2VXaGlsZSgoXykgPT4gdGhpcy5fYWxpdmUpKS5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gXztcbiAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2FsaXZlID0gZmFsc2U7XG4gIH1cbn1cbiIsIjx0ZXRhLWNoZWNrYm94XG4gIFtiaW5hcnldPVwidHJ1ZVwiXG4gIFtub0xhYmVsXT1cInRydWVcIlxuICBbbmdNb2RlbF09XCJzZWxlY3RlZFJvd3M/LmluZGV4T2Yocm93KSA+PSAwXCJcbiAgKG5nTW9kZWxDaGFuZ2UpPVwic2VsZWN0Um93KCRldmVudClcIlxuICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbj48L3RldGEtY2hlY2tib3g+XG4iXX0=
|
|
@@ -42,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImpor
|
|
|
42
42
|
type: HostBinding,
|
|
43
43
|
args: ['class.table-head__group']
|
|
44
44
|
}] } });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWhlYWQtY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RhYmxlL3NlbGVjdGlvbi1oZWFkLWNlbGwvc2VsZWN0aW9uLWhlYWQtY2VsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50L3RhYmxlL3NlbGVjdGlvbi1oZWFkLWNlbGwvc2VsZWN0aW9uLWhlYWQtY2VsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDdEgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNENBQTRDLENBQUM7Ozs7QUFVL0UsTUFBTSxPQUFPLDBCQUEwQjtJQUtyQyxZQUNVLElBQXFCLEVBQ3JCLElBQXVCO1FBRHZCLFNBQUksR0FBSixJQUFJLENBQWlCO1FBQ3JCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBTndCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBRXZFLFdBQU0sR0FBRyxJQUFJLENBQUM7SUFLbkIsQ0FBQztJQUVKLFNBQVMsQ0FBQyxLQUFjO1FBQ3RCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN6RSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDOzhHQTlCVSwwQkFBMEI7a0dBQTFCLDBCQUEwQixnS0NkdkMsZ0xBT0EseUhES1ksaUJBQWlCLCtKQUFFLFdBQVc7OzJGQUU3QiwwQkFBMEI7a0JBUnRDLFNBQVM7K0JBQ0UsMEJBQTBCLG1CQUduQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLGlCQUFpQixFQUFFLFdBQVcsQ0FBQztpSEFHZ0IsY0FBYztzQkFBdEUsV0FBVzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYWJsZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL3RhYmxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgdGFrZVdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NoZWNrYm94L2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtc2VsZWN0aW9uLWhlYWQtY2VsbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3Rpb24taGVhZC1jZWxsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0aW9uLWhlYWQtY2VsbC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NoZWNrYm94Q29tcG9uZW50LCBGb3Jtc01vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdGlvbkhlYWRDZWxsQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRhYmxlLWhlYWRfX2dyb3VwJykgcHJpdmF0ZSByZWFkb25seSB0YWJsZUNlbGxDbGFzcyA9IHRydWU7XG5cbiAgcHJpdmF0ZSBfYWxpdmUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX3N2YzogVGFibGVTZXJ2aWNlPFQ+LFxuICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge31cblxuICBzZWxlY3RBbGwodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX3N2Yy5zZWxlY3RBbGwoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc3ZjLmRlc2VsZWN0QWxsKCk7XG4gICAgfVxuICB9XG5cbiAgYWxsU2VsZWN0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N2Yy5hbGxSb3dzU2VsZWN0ZWQoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3N2Yy5zZWxlY3RlZFJvd3MucGlwZSh0YWtlV2hpbGUoKF8pID0+IHRoaXMuX2FsaXZlKSkuc3Vic2NyaWJlKChfKSA9PiB7XG4gICAgICB0aGlzLl9jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbGl2ZSA9IGZhbHNlO1xuICB9XG59XG4iLCI8dGV0YS1jaGVja2JveFxuICBbYmluYXJ5XT1cInRydWVcIlxuICBbYWxsb3dOdWxsXT1cInRydWVcIlxuICBbbm9MYWJlbF09XCJ0cnVlXCJcbiAgW25nTW9kZWxdPVwiYWxsU2VsZWN0ZWQoKVwiXG4gIChuZ01vZGVsQ2hhbmdlKT1cInNlbGVjdEFsbCgkZXZlbnQpXCJcbj48L3RldGEtY2hlY2tib3g+XG4iXX0=
|
|
@@ -647,4 +647,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImpor
|
|
|
647
647
|
providedIn: 'root',
|
|
648
648
|
}]
|
|
649
649
|
}], ctorParameters: () => [] });
|
|
650
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGFibGUvc2VydmljZS90YWJsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxVQUFVLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSTVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQU90RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdC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QUFnQixDQUFDLGdDQUFnQyxNQUFNLENBQUMsSUFBSSxlQUFlLENBQUMsQ0FBQztRQUNwRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDekIsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsRUFBRSxDQUFDO2dCQUNoQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUM5QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNoQixNQUFNLENBQUMsS0FBSyxHQUFHLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFpQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ1osR0FBRyxLQUFLO1lBQ1IsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQWh1QlUsWUFBWTtrSEFBWixZQUFZLGNBRlgsTUFBTTs7MkZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgb2JqZWN0SGFzaCBmcm9tICdvYmplY3QtaGFzaCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSURpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vY29udHJhY3QvaS1kaWN0aW9uYXJ5JztcbmltcG9ydCB7IElJZE5hbWUgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vY29udHJhY3QvaS1pZC1uYW1lJztcbmltcG9ydCB7IEFycmF5VXRpbCB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsL2FycmF5LXV0aWwnO1xuaW1wb3J0IHsgYm9vbE9yRnVuY0NhbGxiYWNrIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9ib29sLW9yLWZ1bmMnO1xuaW1wb3J0IHsgRGF0ZVV0aWwgfSBmcm9tICcuLi8uLi8uLi91dGlsL2RhdGUtdXRpbCc7XG5pbXBvcnQgeyBEYXRlRmlsdGVyIH0gZnJvbSAnLi4vLi4vZmlsdGVyL2NvbnRhcmN0L2RhdGUtZmlsdGVyJztcbmltcG9ydCB7IERhdGVGaWx0ZXJWYWx1ZSB9IGZyb20gJy4uLy4uL2ZpbHRlci9jb250YXJjdC9kYXRlLWZpbHRlci12YWx1ZSc7XG5pbXBvcnQgeyBGaWx0ZXJTdGF0ZSB9IGZyb20gJy4uLy4uL2ZpbHRlci9jb250YXJjdC9maWx0ZXItc3RhdGUnO1xuaW1wb3J0IHsgTGlzdEZpbHRlciB9IGZyb20gJy4uLy4uL2ZpbHRlci9jb250YXJjdC9saXN0LWZpbHRlcic7XG5pbXBvcnQgeyBOdW1lcmljRmlsdGVyIH0gZnJvbSAnLi4vLi4vZmlsdGVyL2NvbnRhcmN0L251bWVyaWMtZmlsdGVyJztcbmltcG9ydCB7IE51bWVyaWNGaWx0ZXJWYWx1ZSB9IGZyb20gJy4uLy4uL2ZpbHRlci9jb250YXJjdC9udW1lcmljLWZpbHRlci12YWx1ZSc7XG5pbXBvcnQgeyBTdHJpbmdGaWx0ZXIgfSBmcm9tICcuLi8uLi9maWx0ZXIvY29udGFyY3Qvc3RyaW5nLWZpbHRlcic7XG5pbXBvcnQgeyBGaWx0ZXJUeXBlIH0gZnJvbSAnLi4vLi4vZmlsdGVyL2VudW0vZmlsdGVyLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBMaXN0RmlsdGVyVHlwZSB9IGZyb20gJy4uLy4uL2ZpbHRlci9lbnVtL2xpc3QtZmlsdGVyLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBDb2x1bW5SZW9yZGVyRXZlbnQgfSBmcm9tICcuLi9jb250cmFjdC9jb2x1bW4tcmVvcmRlci1ldmVudCc7XG5pbXBvcnQgeyBDb2x1bW5SZXNpemVFdmVudCB9IGZyb20gJy4uL2NvbnRyYWN0L2NvbHVtbi1yZXNpemUtZXZlbnQnO1xuaW1wb3J0IHsgSUNlbGxDb29yZGluYXRlcyB9IGZyb20gJy4uL2NvbnRyYWN0L2ktY2VsbC1jb29yZGluYXRlcyc7XG5pbXBvcnQgeyBJQ2VsbEV2ZW50IH0gZnJvbSAnLi4vY29udHJhY3QvaS1jZWxsLWV2ZW50JztcbmltcG9ydCB7IElDZWxsSW5zdGFuY2UsIElDZWxsSW5zdGFuY2VWYWx1ZSwgSUNvbHVtblJvdyB9IGZyb20gJy4uL2NvbnRyYWN0L2ktY2VsbC1pbnN0YW5jZSc7XG5pbXBvcnQgeyBJQ2VsbFZhbHVlIH0gZnJvbSAnLi4vY29udHJhY3QvaS1jZWxsLXZhbHVlJztcbmltcG9ydCB7IFNvcnRFdmVudCB9IGZyb20gJy4uL2NvbnRyYWN0L3NvcnQtZXZlbnQnO1xuaW1wb3J0IHsgVGFibGVDb2x1bW4gfSBmcm9tICcuLi9jb250cmFjdC90YWJsZS1jb2x1bW4nO1xuaW1wb3J0IHsgVGFibGVDb2x1bW5TdG9yZSB9IGZyb20gJy4uL2NvbnRyYWN0L3RhYmxlLWNvbHVtbi1zdG9yZSc7XG5pbXBvcnQgeyBUYWJsZVJvdyB9IGZyb20gJy4uL2NvbnRyYWN0L3RhYmxlLXJvdyc7XG5pbXBvcnQgeyBFZGl0RXZlbnQgfSBmcm9tICcuLi9lbnVtL2VkaXQtZXZlbnQuZW51bSc7XG5pbXBvcnQgeyBFZGl0VHlwZSB9IGZyb20gJy4uL2VudW0vZWRpdC10eXBlLmVudW0nO1xuaW1wb3J0IHsgU2VsZWN0VHlwZSB9IGZyb20gJy4uL2VudW0vc2VsZWN0LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBTdGF0ZVV0aWwgfSBmcm9tICcuLi91dGlsL3N0YXRlLXV0aWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVTZXJ2aWNlPFQ+IHtcbiAgY29sdW1uczogT2JzZXJ2YWJsZTxUYWJsZUNvbHVtbltdPjtcbiAgZGlzcGxheURhdGE6IE9ic2VydmFibGU8VGFibGVSb3c8VD5bXT47XG4gIGRpY3Q6IE9ic2VydmFibGU8SURpY3Rpb25hcnk8SUlkTmFtZTxhbnk+W10+PjtcbiAgZmlsdGVyT3B0aW9uczogT2JzZXJ2YWJsZTxJRGljdGlvbmFyeTxJSWROYW1lPGFueT5bXT4+O1xuICBzdGF0ZTogT2JzZXJ2YWJsZTxGaWx0ZXJTdGF0ZT47XG4gIHNlbGVjdFR5cGU6IFNlbGVjdFR5cGUgPSBTZWxlY3RUeXBlLm1vdXNlO1xuICBlZGl0Um93U3RhcnQ6IE9ic2VydmFibGU8SUNlbGxFdmVudCB8IG51bGw+O1xuICBlZGl0Um93U3RvcDogT2JzZXJ2YWJsZTxJQ2VsbENvb3JkaW5hdGVzIHwgbnVsbD47XG4gIGVkaXRDZWxsU3RhcnQ6IE9ic2VydmFibGU8SUNlbGxFdmVudCB8IG51bGw+O1xuICBlZGl0Q2VsbFN0b3A6IE9ic2VydmFibGU8SUNlbGxDb29yZGluYXRlcyB8IG51bGw+O1xuICB2YWx1ZUNoYW5nZWQ6IE9ic2VydmFibGU8SUNlbGxDb29yZGluYXRlcyB8IG51bGw+O1xuICB2YWx1ZVNldDogT2JzZXJ2YWJsZTxJQ2VsbFZhbHVlPjtcbiAgc3RhdGVDaGFuZ2VkOiBPYnNlcnZhYmxlPEZpbHRlclN0YXRlPjtcbiAgZmlsdGVyQ2xlYXI6IE9ic2VydmFibGU8VGFibGVDb2x1bW4+O1xuICBzZWxlY3RlZFJvd3M6IE9ic2VydmFibGU8VFtdPjtcbiAgYWN0aXZlUm93OiBPYnNlcnZhYmxlPFQgfCBudWxsPjtcbiAgaGlkZGVuQ29sdW1uczogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG4gIHNjcm9sbEluZGV4OiBPYnNlcnZhYmxlPG51bWJlcj47XG5cbiAgZWRpdFR5cGU6IEVkaXRUeXBlID0gRWRpdFR5cGUuY2VsbDtcbiAgZWRpdEV2ZW50OiBFZGl0RXZlbnQgPSBFZGl0RXZlbnQuZG91YmxlQ2xpY2s7XG4gIHJvd0VkaXRhYmxlPzogYm9vbGVhbiB8ICgocm93OiBUKSA9PiBib29sZWFuKTtcbiAgdHJhY2tSb3c6IChpbmRleDogbnVtYmVyLCByb3c6IFQpID0+IGFueSA9IChpbmRleDogbnVtYmVyLCByb3c6IFQpID0+IHtcbiAgICBjb25zdCByb3dJZCA9IChyb3cgYXMgYW55KVsnaWQnXTtcbiAgICBpZiAocm93SWQpIHtcbiAgICAgIHJldHVybiByb3dJZDtcbiAgICB9XG4gICAgcmV0dXJuIGluZGV4O1xuICB9O1xuXG4gIGdldCBkcmFnU291cmNlKCkge1xuICAgIHJldHVybiB0aGlzLl9kcmFnU291cmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsQ29sdW1uc0hhc2ggPSAnJztcbiAgcHJpdmF0ZSBpbml0aWFsQ29sdW1uczogVGFibGVDb2x1bW5bXSA9IFtdO1xuICBwcml2YXRlIGRpc3BsYXlDb2x1bW5zOiBUYWJsZUNvbHVtbltdID0gW107XG4gIHByaXZhdGUgX2NvbHVtbnM6IEJlaGF2aW9yU3ViamVjdDxUYWJsZUNvbHVtbltdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFibGVDb2x1bW5bXT4oW10pO1xuICBwcml2YXRlIF9oaWRkZW5Db2x1bW5zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4oW10pO1xuICBwcml2YXRlIF9kaXNwbGF5RGF0YTogQmVoYXZpb3JTdWJqZWN0PFRhYmxlUm93PFQ+W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYWJsZVJvdzxUPltdPihbXSk7XG4gIHByaXZhdGUgX2RpY3Q6IEJlaGF2aW9yU3ViamVjdDxJRGljdGlvbmFyeTxJSWROYW1lPGFueT5bXT4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRGljdGlvbmFyeTxJSWROYW1lPGFueT5bXT4+KHt9KTtcbiAgcHJpdmF0ZSBfZmlsdGVyT3B0aW9uczogQmVoYXZpb3JTdWJqZWN0PElEaWN0aW9uYXJ5PElJZE5hbWU8YW55PltdPj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIElEaWN0aW9uYXJ5PElJZE5hbWU8YW55PltdPlxuICA+KHt9KTtcbiAgcHJpdmF0ZSBfc3RhdGU6IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJTdGF0ZT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZpbHRlclN0YXRlPihuZXcgRmlsdGVyU3RhdGUoKSk7XG4gIHByaXZhdGUgX2Nvb2tpZU5hbWU/OiBzdHJpbmc7XG4gIHByaXZhdGUgX2hpZGRlbkNvb2tpZU5hbWU/OiBzdHJpbmc7XG4gIHByaXZhdGUgX2NvbHVtbnNDb29raWVOYW1lPzogc3RyaW5nO1xuICBwcml2YXRlIF9lZGl0Um93U3RhcnQgPSBuZXcgU3ViamVjdDxJQ2VsbEV2ZW50IHwgbnVsbD4oKTtcbiAgcHJpdmF0ZSBfZWRpdFJvd1N0b3AgPSBuZXcgU3ViamVjdDxJQ2VsbENvb3JkaW5hdGVzIHwgbnVsbD4oKTtcbiAgcHJpdmF0ZSBfZWRpdENlbGxTdGFydCA9IG5ldyBTdWJqZWN0PElDZWxsRXZlbnQgfCBudWxsPigpO1xuICBwcml2YXRlIF9lZGl0Q2VsbFN0b3AgPSBuZXcgU3ViamVjdDxJQ2VsbENvb3JkaW5hdGVzIHwgbnVsbD4oKTtcbiAgcHJpdmF0ZSBfdmFsdWVDaGFuZ2VkID0gbmV3IFN1YmplY3Q8SUNlbGxDb29yZGluYXRlcyB8IG51bGw+KCk7XG4gIHByaXZhdGUgX3ZhbHVlU2V0ID0gbmV3IFN1YmplY3Q8SUNlbGxWYWx1ZT4oKTtcbiAgcHJpdmF0ZSBfc3RhdGVDaGFuZ2VkID0gbmV3IFN1YmplY3Q8RmlsdGVyU3RhdGU+KCk7XG4gIHByaXZhdGUgX2ZpbHRlckNsZWFyID0gbmV3IFN1YmplY3Q8VGFibGVDb2x1bW4+KCk7XG4gIHByaXZhdGUgX2RyYWdTb3VyY2U/OiBUYWJsZUNvbHVtbjtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRSb3dzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUW10+KFtdKTtcbiAgcHJpdmF0ZSBfYWN0aXZlUm93ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgX3Njcm9sbEluZGV4ID0gbmV3IFN1YmplY3Q8bnVtYmVyIHwgbnVsbD4oKTtcblxuICBwcml2YXRlIF9jdXJyZW50RWRpdENlbGw/OiBJQ2VsbENvb3JkaW5hdGVzO1xuXG4gIGdldCBjdXJyZW50RWRpdENlbGwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRFZGl0Q2VsbDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuX2NvbHVtbnMuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5kaXNwbGF5RGF0YSA9IHRoaXMuX2Rpc3BsYXlEYXRhLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuZGljdCA9IHRoaXMuX2RpY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5maWx0ZXJPcHRpb25zID0gdGhpcy5fZmlsdGVyT3B0aW9ucy5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLnN0YXRlID0gdGhpcy5fc3RhdGUuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5lZGl0Um93U3RhcnQgPSB0aGlzLl9lZGl0Um93U3RhcnQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5lZGl0Um93U3RvcCA9IHRoaXMuX2VkaXRSb3dTdG9wLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuZWRpdENlbGxTdGFydCA9IHRoaXMuX2VkaXRDZWxsU3RhcnQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5lZGl0Q2VsbFN0b3AgPSB0aGlzLl9lZGl0Q2VsbFN0b3AuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy52YWx1ZUNoYW5nZWQgPSB0aGlzLl92YWx1ZUNoYW5nZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy52YWx1ZVNldCA9IHRoaXMuX3ZhbHVlU2V0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VkID0gdGhpcy5fc3RhdGVDaGFuZ2VkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuZmlsdGVyQ2xlYXIgPSB0aGlzLl9maWx0ZXJDbGVhci5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLnNlbGVjdGVkUm93cyA9IHRoaXMuX3NlbGVjdGVkUm93cy5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLmFjdGl2ZVJvdyA9IHRoaXMuX2FjdGl2ZVJvdy5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLmhpZGRlbkNvbHVtbnMgPSB0aGlzLl9oaWRkZW5Db2x1bW5zLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuc2Nyb2xsSW5kZXggPSB0aGlzLl9zY3JvbGxJbmRleC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHNldERhdGEoZGF0YTogVFtdKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcGxheURhdGEubmV4dChcbiAgICAgIGRhdGE/Lm1hcChcbiAgICAgICAgKGl0ZW0pID0+XG4gICAgICAgICAgbmV3IFRhYmxlUm93PFQ+KHtcbiAgICAgICAgICAgIGRhdGE6IGl0ZW0sXG4gICAgICAgICAgfSlcbiAgICAgICkgPz8gW11cbiAgICApO1xuICB9XG5cbiAgc2V0RGljdChkaWN0OiBJRGljdGlvbmFyeTxJSWROYW1lPGFueT5bXT4pOiB2b2lkIHtcbiAgICB0aGlzLl9kaWN0Lm5leHQoZGljdCk7XG4gIH1cblxuICBzZXRGaWx0ZXJPcHRpb25zKGZpbHRlck9wdGlvbnM6IElEaWN0aW9uYXJ5PElJZE5hbWU8YW55PltdPik6IHZvaWQge1xuICAgIHRoaXMuX2ZpbHRlck9wdGlvbnMubmV4dChmaWx0ZXJPcHRpb25zKTtcbiAgfVxuXG4gIHNldENvbHVtbnMoY29sdW1uczogVGFibGVDb2x1bW5bXSk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbENvbHVtbnMgPSBjb2x1bW5zID8gY29sdW1ucy5tYXAoKF8pID0+IG5ldyBUYWJsZUNvbHVtbihfKSkgOiBbXTtcbiAgICBjb25zdCBleGNsdWRlS2V5cyA9IFsnZWRpdGFibGUnLCAnY2VsbENvbXBvbmVudCcsICdoZWFkQ2VsbENvbXBvbmVudCcsICdoZWFkRHJvcGRvd25Db25maWcnXTtcbiAgICB0aGlzLmluaXRpYWxDb2x1bW5zSGFzaCA9IG9iamVjdEhhc2godGhpcy5pbml0aWFsQ29sdW1ucywge1xuICAgICAgYWxnb3JpdGhtOiAnc2hhMScsXG4gICAgICBpZ25vcmVVbmtub3duOiB0cnVlLFxuICAgICAgZXhjbHVkZUtleXM6IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICByZXR1cm4gZXhjbHVkZUtleXMuaW5kZXhPZihrZXkpID49IDA7XG4gICAgICB9LFxuICAgIH0pO1xuICAgIGNvbnN0IHJlc3RvcmVkID0gdGhpcy5yZXN0b3JlQ29sdW1ucygpO1xuXG4gICAgaWYgKHJlc3RvcmVkKSB7XG4gICAgICB0aGlzLnNldERpc3BsYXlDb2x1bW5zKHJlc3RvcmVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXREaXNwbGF5Q29sdW1ucyh0aGlzLmluaXRpYWxDb2x1bW5zKTtcbiAgICB9XG4gIH1cblxuICByZXN0b3JlRGVmYXVsdENvbHVtbnMoKSB7XG4gICAgdGhpcy5zZXREaXNwbGF5Q29sdW1ucyh0aGlzLmluaXRpYWxDb2x1bW5zKTtcbiAgICB0aGlzLmNsZWFyQ29sdW1uc1N0YXRlKCk7XG4gIH1cblxuICB1cGRhdGVDb2x1bW5zKGNvbHVtbnM6IFRhYmxlQ29sdW1uW10pOiB2b2lkIHtcbiAgICB0aGlzLnNldERpc3BsYXlDb2x1bW5zKGNvbHVtbnMpO1xuICAgIHRoaXMuc2F2ZUNvbHVtbnNTdGF0ZSgpO1xuICB9XG5cbiAgc2F2ZUNvbHVtbnNTdGF0ZSgpIHtcbiAgICBpZiAodGhpcy5fY29sdW1uc0Nvb2tpZU5hbWUpIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgICB0aGlzLl9jb2x1bW5zQ29va2llTmFtZSxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGhhc2g6IHRoaXMuaW5pdGlhbENvbHVtbnNIYXNoLFxuICAgICAgICAgIGNvbHVtbnM6IHRoaXMuZGlzcGxheUNvbHVtbnMubWFwKChfKSA9PiBuZXcgVGFibGVDb2x1bW5TdG9yZShfKSksXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyQ29sdW1uc1N0YXRlKCkge1xuICAgIGlmICh0aGlzLl9jb2x1bW5zQ29va2llTmFtZSkge1xuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5fY29sdW1uc0Nvb2tpZU5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIHNldERpc3BsYXlDb2x1bW5zKGNvbHVtbnM6IFRhYmxlQ29sdW1uW10pOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXlDb2x1bW5zID0gY29sdW1ucyA/IGNvbHVtbnMubWFwKChfKSA9PiBuZXcgVGFibGVDb2x1bW4oXykpIDogW107XG4gICAgdGhpcy5fY29sdW1ucy5uZXh0KHRoaXMuZGlzcGxheUNvbHVtbnMpO1xuICB9XG5cbiAgcmVzdG9yZUNvbHVtbnMoKSB7XG4gICAgaWYgKHRoaXMuX2NvbHVtbnNDb29raWVOYW1lKSB7XG4gICAgICBjb25zdCBzYXZlZENvbHVtbnMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuX2NvbHVtbnNDb29raWVOYW1lKSk7XG4gICAgICBpZiAoc2F2ZWRDb2x1bW5zICYmIHNhdmVkQ29sdW1ucy5oYXNoID09PSB0aGlzLmluaXRpYWxDb2x1bW5zSGFzaCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXN0b3JlQ29sdW1uc1N0YXRlKHNhdmVkQ29sdW1ucy5jb2x1bW5zKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXN0b3JlQ29sdW1uc1N0YXRlKGNvbHVtbnM6IFRhYmxlQ29sdW1uU3RvcmVbXSkge1xuICAgIHJldHVybiBjb2x1bW5zLm1hcCgoY29sdW1uOiBUYWJsZUNvbHVtblN0b3JlKSA9PiB7XG4gICAgICBjb25zdCBmb3VuZCA9IEFycmF5VXRpbC5maW5kUmVjdXJzaXZlKHRoaXMuaW5pdGlhbENvbHVtbnMsIChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IGNvbHVtbi5uYW1lLCAnY29sdW1ucycpO1xuICAgICAgY29uc3QgcmVzdWx0Q29sdW1uID0gbmV3IFRhYmxlQ29sdW1uKGZvdW5kKTtcbiAgICAgIHJlc3VsdENvbHVtbi53aWR0aCA9IGNvbHVtbi53aWR0aDtcbiAgICAgIHJlc3VsdENvbHVtbi5mbGV4ID0gY29sdW1uLmZsZXg7XG4gICAgICByZXN1bHRDb2x1bW4ubG9ja2VkID0gY29sdW1uLmxvY2tlZDtcbiAgICAgIGlmIChjb2x1bW4uY29sdW1ucz8ubGVuZ3RoID4gMCkge1xuICAgICAgICByZXN1bHRDb2x1bW4uY29sdW1ucyA9IHRoaXMucmVzdG9yZUNvbHVtbnNTdGF0ZShjb2x1bW4uY29sdW1ucyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0Q29sdW1uO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0U3RhdGUoc3RhdGU6IEZpbHRlclN0YXRlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2Nvb2tpZU5hbWUpIHtcbiAgICAgIHN0YXRlLnNhdmUodGhpcy5fY29va2llTmFtZSk7XG4gICAgfVxuICAgIHRoaXMuX3N0YXRlLm5leHQoc3RhdGUpO1xuICB9XG5cbiAgc2V0Q29va2llTmFtZShuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9jb29raWVOYW1lID0gbmFtZTtcbiAgICB0aGlzLl9oaWRkZW5Db29raWVOYW1lID0gYCR7dGhpcy5fY29va2llTmFtZX1faGlkZGVuX2NvbHVtbnNgO1xuICAgIHRoaXMuX2NvbHVtbnNDb29raWVOYW1lID0gYCR7dGhpcy5fY29va2llTmFtZX1fY29sdW1uc2A7XG4gIH1cblxuICByZXN0b3JlU3RhdGUoKTogdm9pZCB7XG4gICAgbGV0IHN0YXRlOiBGaWx0ZXJTdGF0ZTtcbiAgICBpZiAodGhpcy5fY29va2llTmFtZSAmJiB0aGlzLl9jb29raWVOYW1lPy5sZW5ndGggPiAwICYmIEZpbHRlclN0YXRlLnJlc3RvcmUodGhpcy5fY29va2llTmFtZSkpIHtcbiAgICAgIGxldCBuZXdTdGF0ZSA9IE9iamVjdC5hc3NpZ24odGhpcy5fc3RhdGUudmFsdWUsIEZpbHRlclN0YXRlLnJlc3RvcmUodGhpcy5fY29va2llTmFtZSkpO1xuICAgICAgbmV3U3RhdGUgPSBEYXRlVXRpbC5jb252ZXJ0RGF0ZVN0cmluZ3NUb0RhdGVzKG5ld1N0YXRlKTtcbiAgICAgIHN0YXRlID0gbmV3IEZpbHRlclN0YXRlKG5ld1N0YXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUgPSBuZXcgRmlsdGVyU3RhdGUoKTtcbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZShzdGF0ZSk7XG4gIH1cblxuICBzYXZlSGlkZGVuQ29sdW1ucyhoaWRkZW5Db2x1bW5zOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9oaWRkZW5Db29raWVOYW1lKSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLl9oaWRkZW5Db29raWVOYW1lLCBKU09OLnN0cmluZ2lmeShoaWRkZW5Db2x1bW5zKSk7XG4gICAgfVxuICB9XG5cbiAgcmVzdG9yZUhpZGRlbkNvbHVtbnMoKTogdm9pZCB7XG4gICAgY29uc3QgaGlkZGVuQ29sdW1ucyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuX2hpZGRlbkNvb2tpZU5hbWUgPz8gJycpIHx8ICdbXSc7XG4gICAgdGhpcy5faGlkZGVuQ29sdW1ucy5uZXh0KEpTT04ucGFyc2UoaGlkZGVuQ29sdW1ucykpO1xuICB9XG5cbiAgc29ydEFzYyhzb3J0RXZlbnQ6IFNvcnRFdmVudCk6IHZvaWQge1xuICAgIGlmIChzb3J0RXZlbnQuY29sdW1uLnNvcnRhYmxlKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKFN0YXRlVXRpbC5zb3J0QXNjKHNvcnRFdmVudCwgdGhpcy5fc3RhdGUudmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICBzb3J0RGVzYyhzb3J0RXZlbnQ6IFNvcnRFdmVudCk6IHZvaWQge1xuICAgIGlmIChzb3J0RXZlbnQuY29sdW1uLnNvcnRhYmxlKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKFN0YXRlVXRpbC5zb3J0RGVzYyhzb3J0RXZlbnQsIHRoaXMuX3N0YXRlLnZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJTb3J0KGNvbHVtbjogVGFibGVDb2x1bW4pOiB2b2lkIHtcbiAgICB0aGlzLnNldFN0YXRlKFN0YXRlVXRpbC5jbGVhclNvcnQoY29sdW1uLCB0aGlzLl9zdGF0ZS52YWx1ZSkpO1xuICB9XG5cbiAgY2xlYXJBbGxTb3J0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0U3RhdGUoU3RhdGVVdGlsLmNsZWFyQWxsU29ydCh0aGlzLl9zdGF0ZS52YWx1ZSkpO1xuICB9XG5cbiAgY2xlYXJGaWx0ZXIoY29sdW1uOiBUYWJsZUNvbHVtbikge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5fc3RhdGUudmFsdWU7XG4gICAgaWYgKGNvbHVtbiAhPT0gbnVsbCAmJiBjb2x1bW4gIT09IHVuZGVmaW5lZCAmJiBjb2x1bW4uZmlsdGVyYWJsZSkge1xuICAgICAgc3dpdGNoIChjb2x1bW4uZmlsdGVyVHlwZSkge1xuICAgICAgICBjYXNlIEZpbHRlclR5cGUuZGF0ZTpcbiAgICAgICAgICBzdGF0ZS5hZGREYXRlRmlsdGVyKFxuICAgICAgICAgICAgbmV3IERhdGVGaWx0ZXIoe1xuICAgICAgICAgICAgICBuYW1lOiBjb2x1bW4ubmFtZSxcbiAgICAgICAgICAgICAgZmllbGQ6IGNvbHVtbi5maWx0ZXJGaWVsZCxcbiAgICAgICAgICAgICAgdmFsdWU6IG5ldyBEYXRlRmlsdGVyVmFsdWUoKSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLnN0cmluZzpcbiAgICAgICAgICBzdGF0ZS5hZGRTdHJpbmdGaWx0ZXIoXG4gICAgICAgICAgICBuZXcgU3RyaW5nRmlsdGVyKHtcbiAgICAgICAgICAgICAgbmFtZTogY29sdW1uLm5hbWUsXG4gICAgICAgICAgICAgIGZpZWxkOiBjb2x1bW4uZmlsdGVyRmllbGQsXG4gICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLm51bWJlcjpcbiAgICAgICAgICBzdGF0ZS5hZGROdW1lcmljRmlsdGVyKFxuICAgICAgICAgICAgbmV3IE51bWVyaWNGaWx0ZXIoe1xuICAgICAgICAgICAgICBuYW1lOiBjb2x1bW4ubmFtZSxcbiAgICAgICAgICAgICAgZmllbGQ6IGNvbHVtbi5maWx0ZXJGaWVsZCxcbiAgICAgICAgICAgICAgdmFsdWU6IG5ldyBOdW1lcmljRmlsdGVyVmFsdWUoKSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLmxpc3Q6XG4gICAgICAgICAgc3RhdGUuYWRkTGlzdEZpbHRlcihcbiAgICAgICAgICAgIG5ldyBMaXN0RmlsdGVyKHtcbiAgICAgICAgICAgICAgbmFtZTogY29sdW1uLm5hbWUsXG4gICAgICAgICAgICAgIGZpZWxkOiBjb2x1bW4uZmlsdGVyRmllbGQsXG4gICAgICAgICAgICAgIHZhbHVlOiBbXSxcbiAgICAgICAgICAgICAgdHlwZTogTGlzdEZpbHRlclR5cGUuTm9uZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0U3RhdGUobmV3IEZpbHRlclN0YXRlKHN0YXRlKSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJBbGxGaWx0ZXJzKCkge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5fc3RhdGUudmFsdWU7XG4gICAgc3RhdGUuc3RyaW5nRmlsdGVycyA9IFtdO1xuICAgIHN0YXRlLmxpc3RGaWx0ZXJzID0gW107XG4gICAgc3RhdGUubnVtZXJpY0ZpbHRlcnMgPSBbXTtcbiAgICBzdGF0ZS5kYXRlRmlsdGVycyA9IFtdO1xuICAgIHRoaXMuc2V0U3RhdGUobmV3IEZpbHRlclN0YXRlKHN0YXRlKSk7XG4gIH1cblxuICBwaW5Db2x1bW4oY29sdW1uOiBUYWJsZUNvbHVtbik6IHZvaWQge1xuICAgIHRoaXMuZGlzcGxheUNvbHVtbnMuZm9yRWFjaCgoY29sOiBUYWJsZUNvbHVtbikgPT4ge1xuICAgICAgaWYgKGNvbC5uYW1lID09PSBjb2x1bW4ubmFtZSkge1xuICAgICAgICBjb2wubG9ja2VkID0gIWNvbC5sb2NrZWQ7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVDb2x1bW5zKHRoaXMuZGlzcGxheUNvbHVtbnMpO1xuICB9XG5cbiAgZHJhZ1N0YXJ0KGNvbHVtbjogVGFibGVDb2x1bW4pOiB2b2lkIHtcbiAgICB0aGlzLl9kcmFnU291cmNlID0gY29sdW1uO1xuICB9XG5cbiAgbG9ja1ByZXZpb3VzQ29sdW1ucyhjb2x1bW46IFRhYmxlQ29sdW1uLCBlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgIGNvbnN0IGZsYXQgPSBBcnJheVV0aWwuZmxhdHRlbih0aGlzLmRpc3BsYXlDb2x1bW5zLCAnY29sdW1ucycsIHRydWUpLnNvcnQoXG4gICAgICAoYSwgYikgPT4gTnVtYmVyKGIubG9ja2VkKSAtIE51bWJlcihhLmxvY2tlZClcbiAgICApO1xuICAgIGNvbnN0IGluZGV4ID0gZmxhdC5pbmRleE9mKGNvbHVtbik7XG4gICAgY29uc3QgcHJldmlvdXMgPSBmbGF0LnNsaWNlKDAsIGluZGV4KS5maWx0ZXIoKF8pID0+IF8uZmxleCA+IDApO1xuICAgIGlmIChwcmV2aW91cz8ubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgdGFibGVFbGVtZW50ID0gdGhpcy5nZXRUYWJsZUVsZW1lbnQoZWxlbWVudCk7XG4gICAgICBwcmV2aW91cy5mb3JFYWNoKChpdGVtOiBUYWJsZUNvbHVtbikgPT4ge1xuICAgICAgICBjb25zdCBpdGVtQ29sID0gdGFibGVFbGVtZW50Py5xdWVyeVNlbGVjdG9yKGB0ZXRhLWhlYWQtY2VsbFtkYXRhLWNvbHVtbj1cIiR7aXRlbS5uYW1lfVwiXWApIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAoaXRlbUNvbCkge1xuICAgICAgICAgIGl0ZW0uZmxleCA9IDA7XG4gICAgICAgICAgaXRlbS53aWR0aCA9IGl0ZW1Db2wuY2xpZW50V2lkdGg7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlc2l6ZUNvbHVtbihldmVudDogQ29sdW1uUmVzaXplRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuY29sdW1uICE9PSBudWxsICYmIGV2ZW50LmNvbHVtbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBldmVudC5jb2x1bW4ud2lkdGggPSBldmVudC5uZXdXaWR0aCA8IDUwID8gNTAgOiBldmVudC5uZXdXaWR0aDtcbiAgICAgIGV2ZW50LmNvbHVtbi5mbGV4ID0gMDtcbiAgICB9XG4gICAgdGhpcy5fY29sdW1ucy5uZXh0KHRoaXMuZGlzcGxheUNvbHVtbnMpO1xuICAgIHRoaXMuc2F2ZUNvbHVtbnNTdGF0ZSgpO1xuICB9XG5cbiAgYXV0b3NpemVDb2x1bW4oY29sdW1uOiBUYWJsZUNvbHVtbiwgdGFyZ2V0OiBIVE1MRWxlbWVudCkge1xuICAgIGNvbnN0IHRhYmxlRWxlbWVudCA9IHRoaXMuZ2V0VGFibGVFbGVtZW50KHRhcmdldCk7XG4gICAgdGhpcy5zZXRDb2x1bW5BdXRvV2lkdGgoY29sdW1uLCB0YWJsZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpO1xuICAgIHRoaXMuX2NvbHVtbnMubmV4dCh0aGlzLmRpc3BsYXlDb2x1bW5zKTtcbiAgICB0aGlzLnNhdmVDb2x1bW5zU3RhdGUoKTtcbiAgfVxuXG4gIGF1dG9zaXplQWxsQ29sdW1ucyh0YXJnZXQ6IEhUTUxFbGVtZW50KSB7XG4gICAgY29uc3QgdGFibGVFbGVtZW50ID0gdGhpcy5nZXRUYWJsZUVsZW1lbnQodGFyZ2V0KTtcbiAgICBjb25zdCBmbGF0ID0gQXJyYXlVdGlsLmZsYXR0ZW4odGhpcy5kaXNwbGF5Q29sdW1ucywgJ2NvbHVtbnMnLCB0cnVlKTtcbiAgICBmbGF0LmZvckVhY2goKGNvbCkgPT4gdGhpcy5zZXRDb2x1bW5BdXRvV2lkdGgoY29sLCB0YWJsZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpKTtcbiAgICB0aGlzLl9jb2x1bW5zLm5leHQodGhpcy5kaXNwbGF5Q29sdW1ucyk7XG4gICAgdGhpcy5zYXZlQ29sdW1uc1N0YXRlKCk7XG4gIH1cblxuICByZW9yZGVyQ29sdW1uKGNvbHVtbjogVGFibGVDb2x1bW4sIGluc2VydEJlZm9yZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5fZHJhZ1NvdXJjZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBldmVudCA9IG5ldyBDb2x1bW5SZW9yZGVyRXZlbnQodGhpcy5fZHJhZ1NvdXJjZSwgY29sdW1uKTtcbiAgICBpZiAoZXZlbnQuc291cmNlICE9PSBldmVudC50YXJnZXQpIHtcbiAgICAgIGNvbnN0IHNvdXJjZVBhcmVudCA9IHRoaXMuZmluZFBhcmVudChldmVudC5zb3VyY2UsIHRoaXMuZGlzcGxheUNvbHVtbnMpO1xuICAgICAgY29uc3QgdGFyZ2V0UGFyZW50ID0gdGhpcy5maW5kUGFyZW50KGV2ZW50LnRhcmdldCwgdGhpcy5kaXNwbGF5Q29sdW1ucyk7XG5cbiAgICAgIGlmIChzb3VyY2VQYXJlbnQgJiYgdGFyZ2V0UGFyZW50KSB7XG4gICAgICAgIGNvbnN0IHNvdXJjZUluZGV4ID0gc291cmNlUGFyZW50LmluZGV4T2YoZXZlbnQuc291cmNlKTtcbiAgICAgICAgc291cmNlUGFyZW50LnNwbGljZShzb3VyY2VJbmRleCwgMSk7XG4gICAgICAgIGxldCB0YXJnZXRJbmRleCA9IHRhcmdldFBhcmVudC5pbmRleE9mKGV2ZW50LnRhcmdldCk7XG4gICAgICAgIGlmICghaW5zZXJ0QmVmb3JlKSB7XG4gICAgICAgICAgdGFyZ2V0SW5kZXggPSB0YXJnZXRJbmRleCArIDE7XG4gICAgICAgIH1cbiAgICAgICAgdGFyZ2V0UGFyZW50LnNwbGljZSh0YXJnZXRJbmRleCwgMCwgZXZlbnQuc291cmNlKTtcbiAgICAgICAgZXZlbnQuc291cmNlLmxvY2tlZCA9IGV2ZW50LnRhcmdldC5sb2NrZWQ7XG5cbiAgICAgICAgdGhpcy51cGRhdGVDb2x1bW5zKHRoaXMuZGlzcGxheUNvbHVtbnMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldENvbHVtblBhcmVudChjb2x1bW46IFRhYmxlQ29sdW1uKSB7XG4gICAgcmV0dXJuIHRoaXMuZmluZFBhcmVudENvbHVtbihjb2x1bW4sIHRoaXMuZGlzcGxheUNvbHVtbnMpO1xuICB9XG5cbiAgc3RhcnRFZGl0Um93KGNlbGxFdmVudDogSUNlbGxFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jdXJyZW50RWRpdENlbGw/LnJvdyAhPT0gY2VsbEV2ZW50Py5yb3cpIHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50RWRpdENlbGwgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9lZGl0Um93U3RvcC5uZXh0KHRoaXMuX2N1cnJlbnRFZGl0Q2VsbCk7XG4gICAgICB9XG4gICAgICBpZiAoY2VsbEV2ZW50ID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuX2VkaXRSb3dTdGFydC5uZXh0KGNlbGxFdmVudCk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRFZGl0Q2VsbCA9IGNlbGxFdmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChib29sT3JGdW5jQ2FsbGJhY2s8VD4odGhpcy5yb3dFZGl0YWJsZSkodGhpcy5nZXRSb3dCeUluZGV4KGNlbGxFdmVudD8ucm93KT8uZGF0YSkpIHtcbiAgICAgICAgICB0aGlzLl9lZGl0Um93U3RhcnQubmV4dChjZWxsRXZlbnQpO1xuICAgICAgICAgIHRoaXMuX2N1cnJlbnRFZGl0Q2VsbCA9IGNlbGxFdmVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXJ0RWRpdENlbGwoY2VsbEV2ZW50OiBJQ2VsbEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2N1cnJlbnRFZGl0Q2VsbD8uY29sdW1uICE9PSBjZWxsRXZlbnQ/LmNvbHVtbiB8fCB0aGlzLl9jdXJyZW50RWRpdENlbGw/LnJvdyAhPT0gY2VsbEV2ZW50Py5yb3cpIHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50RWRpdENlbGwgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9lZGl0Q2VsbFN0b3AubmV4dCh0aGlzLl9jdXJyZW50RWRpdENlbGwpO1xuICAgICAgfVxuICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5nZXRDb2x1bW5CeU5hbWUoY2VsbEV2ZW50Py5jb2x1bW4pO1xuICAgICAgaWYgKFxuICAgICAgICBib29sT3JGdW5jQ2FsbGJhY2s8VD4odGhpcy5yb3dFZGl0YWJsZSkodGhpcy5nZXRSb3dCeUluZGV4KGNlbGxFdmVudD8ucm93KT8uZGF0YSkgJiZcbiAgICAgICAgYm9vbE9yRnVuY0NhbGxiYWNrPElDb2x1bW5Sb3c8VD4+KGNvbHVtbj8uZWRpdGFibGUpKHtcbiAgICAgICAgICByb3c6IHRoaXMuZ2V0Um93QnlJbmRleChjZWxsRXZlbnQ/LnJvdyk/LmRhdGEsXG4gICAgICAgICAgY29sdW1uOiBjb2x1bW4sXG4gICAgICAgIH0pXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5fZWRpdENlbGxTdGFydC5uZXh0KGNlbGxFdmVudCk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRFZGl0Q2VsbCA9IGNlbGxFdmVudDtcbiAgICAgICAgY29uc3Qga2V5ID0gKGNlbGxFdmVudD8uZXZlbnQgYXMgS2V5Ym9hcmRFdmVudCk/LmtleTtcbiAgICAgICAgaWYgKGtleSAmJiAoa2V5Lmxlbmd0aCA9PT0gMSB8fCAoa2V5ID09PSAnRGVsZXRlJyAmJiAhY29sdW1uLnJlcXVpcmVkKSkpIHtcbiAgICAgICAgICB0aGlzLmNsZWFyVmFsdWUoY2VsbEV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldEFjdGl2ZVJvdyhyb3c6IFQpOiB2b2lkIHtcbiAgICB0aGlzLl9hY3RpdmVSb3cubmV4dChyb3cpO1xuICB9XG5cbiAgc2VsZWN0Um93cyhyb3dzOiBUW10pOiB2b2lkIHtcbiAgICB0aGlzLl9zZWxlY3RlZFJvd3MubmV4dChyb3dzKTtcbiAgfVxuXG4gIHNlbGVjdE9yRGVzZWxlY3RSb3cocm93OiBUKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGVkUm93cy52YWx1ZS5pbmRleE9mKHJvdykgPj0gMCkge1xuICAgICAgdGhpcy5fc2VsZWN0ZWRSb3dzLm5leHQodGhpcy5fc2VsZWN0ZWRSb3dzLnZhbHVlLmZpbHRlcigoXykgPT4gXyAhPT0gcm93KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkUm93cy5uZXh0KFsuLi50aGlzLl9zZWxlY3RlZFJvd3MudmFsdWUsIHJvd10pO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFJhbmdlKHJvdzogVCk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fZGlzcGxheURhdGEudmFsdWUuZmluZEluZGV4KChfKSA9PiBfLmRhdGEgPT09IHJvdyk7XG4gICAgbGV0IG1pbkluZGV4ID0gdGhpcy5fc2VsZWN0ZWRSb3dzLnZhbHVlLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgICAgY29uc3QgbmV3SW5kZXggPSB0aGlzLl9kaXNwbGF5RGF0YS52YWx1ZS5maW5kSW5kZXgoKF8pID0+IF8uZGF0YSA9PT0gY3Vycik7XG4gICAgICBpZiAobmV3SW5kZXggPCBwcmV2KSB7XG4gICAgICAgIHJldHVybiBuZXdJbmRleDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0sIHRoaXMuX2Rpc3BsYXlEYXRhLnZhbHVlLmxlbmd0aCk7XG4gICAgbGV0IG1heEluZGV4ID0gdGhpcy5fc2VsZWN0ZWRSb3dzLnZhbHVlLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgICAgY29uc3QgbmV3SW5kZXggPSB0aGlzLl9kaXNwbGF5RGF0YS52YWx1ZS5maW5kSW5kZXgoKF8pID0+IF8uZGF0YSA9PT0gY3Vycik7XG4gICAgICBpZiAobmV3SW5kZXggPiBwcmV2KSB7XG4gICAgICAgIHJldHVybiBuZXdJbmRleDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0sIDApO1xuICAgIGlmIChpbmRleCA+IG1heEluZGV4KSB7XG4gICAgICBtYXhJbmRleCA9IGluZGV4O1xuICAgIH1cbiAgICBpZiAoaW5kZXggPCBtaW5JbmRleCkge1xuICAgICAgbWluSW5kZXggPSBpbmRleDtcbiAgICB9XG4gICAgaWYgKG1pbkluZGV4IDwgaW5kZXggJiYgaW5kZXggPCBtYXhJbmRleCkge1xuICAgICAgbWF4SW5kZXggPSBpbmRleDtcbiAgICB9XG4gICAgdGhpcy5fc2VsZWN0ZWRSb3dzLm5leHQoWy4uLnRoaXMuX2Rpc3BsYXlEYXRhLnZhbHVlLnNsaWNlKG1pbkluZGV4LCBtYXhJbmRleCArIDEpLm1hcCgoXykgPT4gXy5kYXRhKV0pO1xuICB9XG5cbiAgc2VsZWN0Um93KHJvdzogVCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdFR5cGUgPT09IFNlbGVjdFR5cGUubm9uZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9zZWxlY3RlZFJvd3MubmV4dChbLi4udGhpcy5fc2VsZWN0ZWRSb3dzLnZhbHVlLCByb3ddKTtcbiAgfVxuXG4gIGRlc2VsZWN0Um93KHJvdzogVCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdFR5cGUgPT09IFNlbGVjdFR5cGUubm9uZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9zZWxlY3RlZFJvd3MubmV4dCh0aGlzLl9zZWxlY3RlZFJvd3MudmFsdWUuZmlsdGVyKChfKSA9PiBfICE9PSByb3cpKTtcbiAgfVxuXG4gIHNlbGVjdEFsbCgpIHtcbiAgICB0aGlzLl9zZWxlY3RlZFJvd3MubmV4dCh0aGlzLl9kaXNwbGF5RGF0YS52YWx1ZS5tYXAoKF8pID0+IF8uZGF0YSkpO1xuICB9XG5cbiAgZGVzZWxlY3RBbGwoKSB7XG4gICAgdGhpcy5fc2VsZWN0ZWRSb3dzLm5leHQoW10pO1xuICB9XG5cbiAgYWxsUm93c1NlbGVjdGVkKCk6IGJvb2xlYW4gfCBudWxsIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLl9kaXNwbGF5RGF0YS52YWx1ZT8ubGVuZ3RoICYmXG4gICAgICB0aGlzLl9zZWxlY3RlZFJvd3MudmFsdWU/Lmxlbmd0aCAmJlxuICAgICAgdGhpcy5fZGlzcGxheURhdGEudmFsdWUuZXZlcnkoKF8pID0+IHRoaXMuX3NlbGVjdGVkUm93cy52YWx1ZS5maW5kSW5kZXgoKHNlbGVjdGVkKSA9PiBzZWxlY3RlZCA9PT0gXy5kYXRhKSA+PSAwKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9zZWxlY3RlZFJvd3MudmFsdWUgPT0gbnVsbCB8fCB0aGlzLl9zZWxlY3RlZFJvd3MudmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc2V0SGlkZGVuQ29sdW1ucyh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLnNhdmVIaWRkZW5Db2x1bW5zKHZhbHVlKTtcbiAgICB0aGlzLl9oaWRkZW5Db2x1bW5zLm5leHQodmFsdWUpO1xuICB9XG5cbiAgY29sdW1uSXNIaWRkZW4oY29sdW1uOiBUYWJsZUNvbHVtbikge1xuICAgIHJldHVybiB0aGlzLl9oaWRkZW5Db2x1bW5zLnZhbHVlLmluZGV4T2YoY29sdW1uLm5hbWUpID49IDA7XG4gIH1cblxuICBjaGFuZ2VWYWx1ZShjb29yZGluYXRlczogSUNlbGxDb29yZGluYXRlcyk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbHVlQ2hhbmdlZC5uZXh0KGNvb3JkaW5hdGVzKTtcbiAgfVxuXG4gIHNldFZhbHVlKGNlbGxWYWx1ZTogSUNlbGxWYWx1ZSk6IHZvaWQ7XG4gIHNldFZhbHVlKGNlbGxWYWx1ZTogSUNlbGxJbnN0YW5jZVZhbHVlPFQ+KTogdm9pZDtcbiAgc2V0VmFsdWUoY2VsbFZhbHVlOiBJQ2VsbFZhbHVlIHwgSUNlbGxJbnN0YW5jZVZhbHVlPFQ+KTogdm9pZCB7XG4gICAgbGV0IHZhbHVlOiBJQ2VsbFZhbHVlO1xuICAgIGlmICh0eXBlb2YgY2VsbFZhbHVlLnJvdyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGNlbGxWYWx1ZS5jb2x1bW4gPT09ICdvYmplY3QnKSB7XG4gICAgICB2YWx1ZSA9IHtcbiAgICAgICAgcm93OiB0aGlzLmdldFJvd0luZGV4KGNlbGxWYWx1ZS5yb3cuZGF0YSksXG4gICAgICAgIGNvbHVtbjogY2VsbFZhbHVlLmNvbHVtbi5uYW1lLFxuICAgICAgICB2YWx1ZTogY2VsbFZhbHVlLnZhbHVlLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBjZWxsVmFsdWUgYXMgSUNlbGxWYWx1ZTtcbiAgICB9XG4gICAgdGhpcy5fdmFsdWVTZXQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBnZXRSb3dCeUluZGV4KHJvd0luZGV4PzogbnVtYmVyKTogVGFibGVSb3c8VD4gfCB1bmRlZmluZWQge1xuICAgIGlmIChyb3dJbmRleCAhPT0gbnVsbCAmJiByb3dJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGlzcGxheURhdGE/LnZhbHVlW3Jvd0luZGV4XTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldFJvd0luZGV4KHJvdzogVCkge1xuICAgIHJldHVybiB0aGlzLl9kaXNwbGF5RGF0YS52YWx1ZS5maW5kSW5kZXgoKF8pID0+IF8uZGF0YSA9PT0gcm93KTtcbiAgfVxuXG4gIGdldEV2ZW50Q2VsbChldmVudDogRXZlbnQpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiBldmVudC5jb21wb3NlZFBhdGgoKS5maW5kKCh0YXJnZXQ6IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHRhcmdldC50YWdOYW1lPy50b0xvd2VyQ2FzZSgpID09PSAndGV0YS1jZWxsJztcbiAgICB9KSBhcyBIVE1MRWxlbWVudDtcbiAgfVxuXG4gIGdldEV2ZW50Um93KGV2ZW50OiBFdmVudCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIGV2ZW50LmNvbXBvc2VkUGF0aCgpLmZpbmQoKHRhcmdldDogYW55KSA9PiB7XG4gICAgICByZXR1cm4gdGFyZ2V0Py5nZXRBdHRyaWJ1dGUgJiYgdGFyZ2V0Py5nZXRBdHRyaWJ1dGUoJ2RhdGEtcm93Jyk7XG4gICAgfSkgYXMgSFRNTEVsZW1lbnQ7XG4gIH1cblxuICBnZXROZXh0RWRpdGFibGVDZWxsKGNvb3JkczogSUNlbGxDb29yZGluYXRlcyk6IElDZWxsQ29vcmRpbmF0ZXMgfCBudWxsIHtcbiAgICBjb25zdCBuZXh0Q2VsbCA9IHRoaXMuZ2V0TmV4dENlbGwoY29vcmRzKTtcbiAgICBpZiAoIW5leHRDZWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5nZXRDb2x1bW5CeU5hbWUobmV4dENlbGw/LmNvbHVtbik7XG4gICAgaWYgKFxuICAgICAgYm9vbE9yRnVuY0NhbGxiYWNrPElDZWxsSW5zdGFuY2U8VD4+KGNvbHVtbi5lZGl0YWJsZSkoe1xuICAgICAgICByb3c6IHRoaXMuZ2V0Um93QnlJbmRleChuZXh0Q2VsbC5yb3cpLFxuICAgICAgICBjb2x1bW4sXG4gICAgICB9KVxuICAgICkge1xuICAgICAgcmV0dXJuIG5leHRDZWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXROZXh0RWRpdGFibGVDZWxsKG5leHRDZWxsKTtcbiAgfVxuXG4gIGdldFByZXZpb3VzRWRpdGFibGVDZWxsKGNvb3JkczogSUNlbGxDb29yZGluYXRlcyk6IElDZWxsQ29vcmRpbmF0ZXMgfCBudWxsIHtcbiAgICBjb25zdCBwcmV2Q2VsbCA9IHRoaXMuZ2V0UHJldmlvdXNDZWxsKGNvb3Jkcyk7XG4gICAgaWYgKCFwcmV2Q2VsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uQnlOYW1lKHByZXZDZWxsPy5jb2x1bW4pO1xuICAgIGlmIChcbiAgICAgIGJvb2xPckZ1bmNDYWxsYmFjazxJQ2VsbEluc3RhbmNlPFQ+Pihjb2x1bW4uZWRpdGFibGUpKHtcbiAgICAgICAgcm93OiB0aGlzLmdldFJvd0J5SW5kZXgocHJldkNlbGwucm93KSxcbiAgICAgICAgY29sdW1uLFxuICAgICAgfSlcbiAgICApIHtcbiAgICAgIHJldHVybiBwcmV2Q2VsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2V0UHJldmlvdXNFZGl0YWJsZUNlbGwocHJldkNlbGwpO1xuICB9XG5cbiAgZ2V0TmV4dENlbGwoY29vcmRzOiBJQ2VsbENvb3JkaW5hdGVzKTogSUNlbGxDb29yZGluYXRlcyB8IG51bGwge1xuICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmdldEZsYXRDb2x1bW5zKCk7XG4gICAgbGV0IGNvbEluZGV4ID0gY29sdW1ucy5maW5kSW5kZXgoKGNvbDogVGFibGVDb2x1bW4pID0+IGNvbC5uYW1lID09PSBjb29yZHM/LmNvbHVtbik7XG4gICAgbGV0IHJvd0luZGV4ID0gY29vcmRzPy5yb3c7XG4gICAgaWYgKGNvbEluZGV4ID49IDAgJiYgcm93SW5kZXggPj0gMCkge1xuICAgICAgaWYgKGNvbEluZGV4ID09PSBjb2x1bW5zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgY29sSW5kZXggPSAwO1xuICAgICAgICByb3dJbmRleCA9IHJvd0luZGV4ICsgMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbEluZGV4ID0gY29sSW5kZXggKyAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sdW1uOiBjb2x1bW5zW2NvbEluZGV4XT8ubmFtZSxcbiAgICAgICAgcm93OiByb3dJbmRleCxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0UHJldmlvdXNDZWxsKGNvb3JkczogSUNlbGxDb29yZGluYXRlcyk6IElDZWxsQ29vcmRpbmF0ZXMgfCBudWxsIHtcbiAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5nZXRGbGF0Q29sdW1ucygpO1xuICAgIGxldCBjb2xJbmRleCA9IGNvbHVtbnMuZmluZEluZGV4KChjb2w6IFRhYmxlQ29sdW1uKSA9PiBjb2wubmFtZSA9PT0gY29vcmRzPy5jb2x1bW4pO1xuICAgIGxldCByb3dJbmRleCA9IGNvb3Jkcz8ucm93O1xuICAgIGlmIChjb2xJbmRleCA+PSAwICYmIHJvd0luZGV4ID49IDApIHtcbiAgICAgIGlmIChjb2xJbmRleCA9PT0gMCkge1xuICAgICAgICBjb2xJbmRleCA9IGNvbHVtbnMubGVuZ3RoIC0gMTtcbiAgICAgICAgcm93SW5kZXggPSByb3dJbmRleCAtIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2xJbmRleCA9IGNvbEluZGV4IC0gMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbHVtbjogY29sdW1uc1tjb2xJbmRleF0/Lm5hbWUsXG4gICAgICAgIHJvdzogcm93SW5kZXgsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldE5leHRSb3dDZWxsKGNvb3JkczogSUNlbGxDb29yZGluYXRlcyk6IElDZWxsQ29vcmRpbmF0ZXMgfCBudWxsIHtcbiAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5nZXRGbGF0Q29sdW1ucygpO1xuICAgIGNvbnN0IGNvbEluZGV4ID0gY29sdW1ucy5maW5kSW5kZXgoKGNvbDogVGFibGVDb2x1bW4pID0+IGNvbC5uYW1lID09PSBjb29yZHM/LmNvbHVtbik7XG4gICAgY29uc3Qgcm93SW5kZXggPSBjb29yZHM/LnJvdztcbiAgICBpZiAoY29sSW5kZXggPj0gMCAmJiByb3dJbmRleCA+PSAwICYmIHJvd0luZGV4IDwgdGhpcy5fZGlzcGxheURhdGEudmFsdWUubGVuZ3RoIC0gMSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sdW1uOiBjb2x1bW5zW2NvbEluZGV4XT8ubmFtZSxcbiAgICAgICAgcm93OiByb3dJbmRleCArIDEsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldFByZXZpb3VzUm93Q2VsbChjb29yZHM6IElDZWxsQ29vcmRpbmF0ZXMpIHtcbiAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5nZXRGbGF0Q29sdW1ucygpO1xuICAgIGNvbnN0IGNvbEluZGV4ID0gY29sdW1ucy5maW5kSW5kZXgoKGNvbDogVGFibGVDb2x1bW4pID0+IGNvbC5uYW1lID09PSBjb29yZHM/LmNvbHVtbik7XG4gICAgY29uc3Qgcm93SW5kZXggPSBjb29yZHM/LnJvdztcbiAgICBpZiAoY29sSW5kZXggPj0gMCAmJiByb3dJbmRleCA+IDEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbHVtbjogY29sdW1uc1tjb2xJbmRleF0/Lm5hbWUsXG4gICAgICAgIHJvdzogcm93SW5kZXggLSAxLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBnZXRDb2x1bW5CeU5hbWUoY29sdW1uTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIEFycmF5VXRpbC5maW5kUmVjdXJzaXZlKHRoaXMuZGlzcGxheUNvbHVtbnMsIChpdGVyYWJsZU5vZGUpID0+IGNvbHVtbk5hbWUgPT09IGl0ZXJhYmxlTm9kZS5uYW1lLCAnY29sdW1ucycpO1xuICB9XG5cbiAgc2Nyb2xsVG9JbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5fc2Nyb2xsSW5kZXgubmV4dChudWxsKTtcbiAgICB0aGlzLl9zY3JvbGxJbmRleC5uZXh0KGluZGV4KTtcbiAgfVxuXG4gIGdldFZpc2libGVDb2x1bW5zKCkge1xuICAgIGNvbnN0IHZpc2libGUgPSBBcnJheVV0aWwuZmxhdHRlbih0aGlzLl9jb2x1bW5zLnZhbHVlLCAnY29sdW1ucycsIHRydWUpLmZpbHRlcihcbiAgICAgIChfKSA9PiB0aGlzLl9oaWRkZW5Db2x1bW5zLnZhbHVlLmluZGV4T2YoXy5uYW1lKSA8IDBcbiAgICApO1xuICAgIHJldHVybiB2aXNpYmxlLnNvcnQoKGEsIGIpID0+IE51bWJlcihiLmxvY2tlZCkgLSBOdW1iZXIoYS5sb2NrZWQpKTtcbiAgfVxuXG4gIGdldENlbGxJbnN0YW5jZShjb29yZHM6IElDZWxsQ29vcmRpbmF0ZXMpOiBJQ2VsbEluc3RhbmNlPFQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIGNvb3Jkc1xuICAgICAgPyB7XG4gICAgICAgICAgcm93OiB0aGlzLmdldFJvd0J5SW5kZXgoY29vcmRzLnJvdyksXG4gICAgICAgICAgY29sdW1uOiB0aGlzLmdldENvbHVtbkJ5TmFtZShjb29yZHMuY29sdW1uKSxcbiAgICAgICAgfVxuICAgICAgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGbGF0Q29sdW1ucygpIHtcbiAgICByZXR1cm4gQXJyYXlVdGlsLmZsYXR0ZW4odGhpcy5kaXNwbGF5Q29sdW1ucywgJ2NvbHVtbnMnLCB0cnVlKS5zb3J0KChhLCBiKSA9PiBOdW1iZXIoYi5sb2NrZWQpIC0gTnVtYmVyKGEubG9ja2VkKSk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRQYXJlbnQoY29sdW1uOiBUYWJsZUNvbHVtbiwgY29sdW1uczogVGFibGVDb2x1bW5bXSk6IFRhYmxlQ29sdW1uW10gfCBudWxsIHtcbiAgICBjb25zdCBmb3VuZCA9IGNvbHVtbnMuZmluZCgoeCkgPT4geC5uYW1lID09PSBjb2x1bW4ubmFtZSk7XG4gICAgaWYgKGZvdW5kICE9PSBudWxsICYmIGZvdW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjb2x1bW5zO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IGNvbHVtbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBjb25zdCBjb2wgPSBjb2x1bW5zW2ldO1xuICAgICAgaWYgKGNvbC5jb2x1bW5zICYmIGNvbC5jb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZpbmRQYXJlbnQoY29sdW1uLCBjb2wuY29sdW1ucyk7XG4gICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwgJiYgcmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kUGFyZW50Q29sdW1uKGNvbHVtbjogVGFibGVDb2x1bW4sIGNvbHVtbnM6IFRhYmxlQ29sdW1uW10pOiBUYWJsZUNvbHVtbiB8IG51bGwge1xuICAgIGNvbnN0IGZvdW5kID0gY29sdW1ucy5maW5kKCh4KSA9PiB4LmNvbHVtbnMuaW5kZXhPZihjb2x1bW4pID49IDApO1xuICAgIGlmIChmb3VuZCAhPT0gbnVsbCAmJiBmb3VuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZm91bmQ7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwLCBsID0gY29sdW1ucy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNvbnN0IGNvbCA9IGNvbHVtbnNbaV07XG4gICAgICBpZiAoY29sLmNvbHVtbnMgJiYgY29sLmNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmluZFBhcmVudENvbHVtbihjb2x1bW4sIGNvbC5jb2x1bW5zKTtcbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCAmJiByZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBnZXRUYWJsZUVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICByZXR1cm4gZWxlbWVudC5jbG9zZXN0KCd0ZXRhLXRhYmxlJyk7XG4gIH1cblxuICBwcml2YXRlIHNldENvbHVtbkF1dG9XaWR0aChjb2x1bW46IFRhYmxlQ29sdW1uLCB0YWJsZTogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBjZWxscyA9IHRhYmxlLnF1ZXJ5U2VsZWN0b3JBbGwoYHRldGEtY2VsbFtkYXRhLWNvbHVtbj1cIiR7Y29sdW1uLm5hbWV9XCJdIC5jZWxsLXRleHRgKTtcbiAgICBsZXQgbWF4V2lkdGggPSAwO1xuICAgIGNlbGxzLmZvckVhY2goKGNlbGwpID0+IHtcbiAgICAgIGlmIChjZWxsLnNjcm9sbFdpZHRoID4gbWF4V2lkdGgpIHtcbiAgICAgICAgbWF4V2lkdGggPSBjZWxsLnNjcm9sbFdpZHRoO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGFnZ0NlbGxzID0gdGFibGUucXVlcnlTZWxlY3RvckFsbChgLmFnZ3JlZ2F0ZS1jZWxsW2RhdGEtY29sdW1uPVwiJHtjb2x1bW4ubmFtZX1cIl0gLmNlbGwtdGV4dGApO1xuICAgIGFnZ0NlbGxzPy5mb3JFYWNoKChjZWxsKSA9PiB7XG4gICAgICBpZiAoY2VsbC5zY3JvbGxXaWR0aCA+IG1heFdpZHRoKSB7XG4gICAgICAgIG1heFdpZHRoID0gY2VsbC5zY3JvbGxXaWR0aDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb2x1bW4uZmxleCA9IDA7XG4gICAgY29sdW1uLndpZHRoID0gbWF4V2lkdGggKyAyMDtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJWYWx1ZShldmVudDogSUNlbGxFdmVudCkge1xuICAgIHRoaXMuc2V0VmFsdWUoe1xuICAgICAgLi4uZXZlbnQsXG4gICAgICB2YWx1ZTogbnVsbCxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
650
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGFibGUvc2VydmljZS90YWJsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxVQUFVLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSTVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQU90RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdC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QUFnQixDQUFDLGdDQUFnQyxNQUFNLENBQUMsSUFBSSxlQUFlLENBQUMsQ0FBQztRQUNwRyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDekIsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsRUFBRSxDQUFDO2dCQUNoQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUM5QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNoQixNQUFNLENBQUMsS0FBSyxHQUFHLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFpQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ1osR0FBRyxLQUFLO1lBQ1IsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUM7SUFDTCxDQUFDOzhHQWh1QlUsWUFBWTtrSEFBWixZQUFZLGNBRlgsTUFBTTs7MkZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgb2JqZWN0SGFzaCBmcm9tICdvYmplY3QtaGFzaCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSURpY3Rpb25hcnkgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vY29udHJhY3QvaS1kaWN0aW9uYXJ5JztcbmltcG9ydCB7IElJZE5hbWUgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vY29udHJhY3QvaS1pZC1uYW1lJztcbmltcG9ydCB7IEFycmF5VXRpbCB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsL2FycmF5LXV0aWwnO1xuaW1wb3J0IHsgYm9vbE9yRnVuY0NhbGxiYWNrIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9ib29sLW9yLWZ1bmMnO1xuaW1wb3J0IHsgRGF0ZVV0aWwgfSBmcm9tICcuLi8uLi8uLi91dGlsL2RhdGUtdXRpbCc7XG5pbXBvcnQgeyBEYXRlRmlsdGVyIH0gZnJvbSAnLi4vLi4vZmlsdGVyL2NvbnRhcmN0L2RhdGUtZmlsdGVyJztcbmltcG9ydCB7IERhdGVGaWx0ZXJWYWx1ZSB9IGZyb20gJy4uLy4uL2ZpbHRlci9jb250YXJjdC9kYXRlLWZpbHRlci12YWx1ZSc7XG5pbXBvcnQgeyBGaWx0ZXJTdGF0ZSB9IGZyb20gJy4uLy4uL2ZpbHRlci9jb250YXJjdC9maWx0ZXItc3RhdGUnO1xuaW1wb3J0IHsgTGlzdEZpbHRlciB9IGZyb20gJy4uLy4uL2ZpbHRlci9jb250YXJjdC9saXN0LWZpbHRlcic7XG5pbXBvcnQgeyBOdW1lcmljRmlsdGVyIH0gZnJvbSAnLi4vLi4vZmlsdGVyL2NvbnRhcmN0L251bWVyaWMtZmlsdGVyJztcbmltcG9ydCB7IE51bWVyaWNGaWx0ZXJWYWx1ZSB9IGZyb20gJy4uLy4uL2ZpbHRlci9jb250YXJjdC9udW1lcmljLWZpbHRlci12YWx1ZSc7XG5pbXBvcnQgeyBTdHJpbmdGaWx0ZXIgfSBmcm9tICcuLi8uLi9maWx0ZXIvY29udGFyY3Qvc3RyaW5nLWZpbHRlcic7XG5pbXBvcnQgeyBGaWx0ZXJUeXBlIH0gZnJvbSAnLi4vLi4vZmlsdGVyL2VudW0vZmlsdGVyLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBMaXN0RmlsdGVyVHlwZSB9IGZyb20gJy4uLy4uL2ZpbHRlci9lbnVtL2xpc3QtZmlsdGVyLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBDb2x1bW5SZW9yZGVyRXZlbnQgfSBmcm9tICcuLi9jb250cmFjdC9jb2x1bW4tcmVvcmRlci1ldmVudCc7XG5pbXBvcnQgeyBDb2x1bW5SZXNpemVFdmVudCB9IGZyb20gJy4uL2NvbnRyYWN0L2NvbHVtbi1yZXNpemUtZXZlbnQnO1xuaW1wb3J0IHsgSUNlbGxDb29yZGluYXRlcyB9IGZyb20gJy4uL2NvbnRyYWN0L2ktY2VsbC1jb29yZGluYXRlcyc7XG5pbXBvcnQgeyBJQ2VsbEV2ZW50IH0gZnJvbSAnLi4vY29udHJhY3QvaS1jZWxsLWV2ZW50JztcbmltcG9ydCB7IElDZWxsSW5zdGFuY2UsIElDZWxsSW5zdGFuY2VWYWx1ZSwgSUNvbHVtblJvdyB9IGZyb20gJy4uL2NvbnRyYWN0L2ktY2VsbC1pbnN0YW5jZSc7XG5pbXBvcnQgeyBJQ2VsbFZhbHVlIH0gZnJvbSAnLi4vY29udHJhY3QvaS1jZWxsLXZhbHVlJztcbmltcG9ydCB7IFNvcnRFdmVudCB9IGZyb20gJy4uL2NvbnRyYWN0L3NvcnQtZXZlbnQnO1xuaW1wb3J0IHsgVGFibGVDb2x1bW4gfSBmcm9tICcuLi9jb250cmFjdC90YWJsZS1jb2x1bW4nO1xuaW1wb3J0IHsgVGFibGVDb2x1bW5TdG9yZSB9IGZyb20gJy4uL2NvbnRyYWN0L3RhYmxlLWNvbHVtbi1zdG9yZSc7XG5pbXBvcnQgeyBUYWJsZVJvdyB9IGZyb20gJy4uL2NvbnRyYWN0L3RhYmxlLXJvdyc7XG5pbXBvcnQgeyBFZGl0RXZlbnQgfSBmcm9tICcuLi9lbnVtL2VkaXQtZXZlbnQuZW51bSc7XG5pbXBvcnQgeyBFZGl0VHlwZSB9IGZyb20gJy4uL2VudW0vZWRpdC10eXBlLmVudW0nO1xuaW1wb3J0IHsgU2VsZWN0VHlwZSB9IGZyb20gJy4uL2VudW0vc2VsZWN0LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBTdGF0ZVV0aWwgfSBmcm9tICcuLi91dGlsL3N0YXRlLXV0aWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVTZXJ2aWNlPFQ+IHtcbiAgY29sdW1uczogT2JzZXJ2YWJsZTxUYWJsZUNvbHVtbltdPjtcbiAgZGlzcGxheURhdGE6IE9ic2VydmFibGU8VGFibGVSb3c8VD5bXT47XG4gIGRpY3Q6IE9ic2VydmFibGU8SURpY3Rpb25hcnk8SUlkTmFtZTxhbnk+W10+PjtcbiAgZmlsdGVyT3B0aW9uczogT2JzZXJ2YWJsZTxJRGljdGlvbmFyeTxJSWROYW1lPGFueT5bXT4+O1xuICBzdGF0ZTogT2JzZXJ2YWJsZTxGaWx0ZXJTdGF0ZT47XG4gIHNlbGVjdFR5cGU6IFNlbGVjdFR5cGUgPSBTZWxlY3RUeXBlLm1vdXNlO1xuICBlZGl0Um93U3RhcnQ6IE9ic2VydmFibGU8SUNlbGxFdmVudCB8IG51bGw+O1xuICBlZGl0Um93U3RvcDogT2JzZXJ2YWJsZTxJQ2VsbENvb3JkaW5hdGVzIHwgbnVsbD47XG4gIGVkaXRDZWxsU3RhcnQ6IE9ic2VydmFibGU8SUNlbGxFdmVudCB8IG51bGw+O1xuICBlZGl0Q2VsbFN0b3A6IE9ic2VydmFibGU8SUNlbGxDb29yZGluYXRlcyB8IG51bGw+O1xuICB2YWx1ZUNoYW5nZWQ6IE9ic2VydmFibGU8SUNlbGxDb29yZGluYXRlcyB8IG51bGw+O1xuICB2YWx1ZVNldDogT2JzZXJ2YWJsZTxJQ2VsbFZhbHVlPjtcbiAgc3RhdGVDaGFuZ2VkOiBPYnNlcnZhYmxlPEZpbHRlclN0YXRlPjtcbiAgZmlsdGVyQ2xlYXI6IE9ic2VydmFibGU8VGFibGVDb2x1bW4+O1xuICBzZWxlY3RlZFJvd3M6IE9ic2VydmFibGU8VFtdPjtcbiAgYWN0aXZlUm93OiBPYnNlcnZhYmxlPFQgfCBudWxsPjtcbiAgaGlkZGVuQ29sdW1uczogT2JzZXJ2YWJsZTxzdHJpbmdbXT47XG4gIHNjcm9sbEluZGV4OiBPYnNlcnZhYmxlPG51bWJlcj47XG5cbiAgZWRpdFR5cGU6IEVkaXRUeXBlID0gRWRpdFR5cGUuY2VsbDtcbiAgZWRpdEV2ZW50OiBFZGl0RXZlbnQgPSBFZGl0RXZlbnQuZG91YmxlQ2xpY2s7XG4gIHJvd0VkaXRhYmxlPzogYm9vbGVhbiB8ICgocm93OiBUKSA9PiBib29sZWFuKTtcbiAgdHJhY2tSb3c6IChpbmRleDogbnVtYmVyLCByb3c6IFQpID0+IGFueSA9IChpbmRleDogbnVtYmVyLCByb3c6IFQpID0+IHtcbiAgICBjb25zdCByb3dJZCA9IChyb3cgYXMgYW55KVsnaWQnXTtcbiAgICBpZiAocm93SWQpIHtcbiAgICAgIHJldHVybiByb3dJZDtcbiAgICB9XG4gICAgcmV0dXJuIGluZGV4O1xuICB9O1xuXG4gIGdldCBkcmFnU291cmNlKCkge1xuICAgIHJldHVybiB0aGlzLl9kcmFnU291cmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsQ29sdW1uc0hhc2ggPSAnJztcbiAgcHJpdmF0ZSBpbml0aWFsQ29sdW1uczogVGFibGVDb2x1bW5bXSA9IFtdO1xuICBwcml2YXRlIGRpc3BsYXlDb2x1bW5zOiBUYWJsZUNvbHVtbltdID0gW107XG4gIHByaXZhdGUgX2NvbHVtbnM6IEJlaGF2aW9yU3ViamVjdDxUYWJsZUNvbHVtbltdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFibGVDb2x1bW5bXT4oW10pO1xuICBwcml2YXRlIF9oaWRkZW5Db2x1bW5zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4oW10pO1xuICBwcml2YXRlIF9kaXNwbGF5RGF0YTogQmVoYXZpb3JTdWJqZWN0PFRhYmxlUm93PFQ+W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYWJsZVJvdzxUPltdPihbXSk7XG4gIHByaXZhdGUgX2RpY3Q6IEJlaGF2aW9yU3ViamVjdDxJRGljdGlvbmFyeTxJSWROYW1lPGFueT5bXT4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJRGljdGlvbmFyeTxJSWROYW1lPGFueT5bXT4+KHt9KTtcbiAgcHJpdmF0ZSBfZmlsdGVyT3B0aW9uczogQmVoYXZpb3JTdWJqZWN0PElEaWN0aW9uYXJ5PElJZE5hbWU8YW55PltdPj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIElEaWN0aW9uYXJ5PElJZE5hbWU8YW55PltdPlxuICA+KHt9KTtcbiAgcHJpdmF0ZSBfc3RhdGU6IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJTdGF0ZT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZpbHRlclN0YXRlPihuZXcgRmlsdGVyU3RhdGUoKSk7XG4gIHByaXZhdGUgX2Nvb2tpZU5hbWU/OiBzdHJpbmc7XG4gIHByaXZhdGUgX2hpZGRlbkNvb2tpZU5hbWU/OiBzdHJpbmc7XG4gIHByaXZhdGUgX2NvbHVtbnNDb29raWVOYW1lPzogc3RyaW5nO1xuICBwcml2YXRlIF9lZGl0Um93U3RhcnQgPSBuZXcgU3ViamVjdDxJQ2VsbEV2ZW50IHwgbnVsbD4oKTtcbiAgcHJpdmF0ZSBfZWRpdFJvd1N0b3AgPSBuZXcgU3ViamVjdDxJQ2VsbENvb3JkaW5hdGVzIHwgbnVsbD4oKTtcbiAgcHJpdmF0ZSBfZWRpdENlbGxTdGFydCA9IG5ldyBTdWJqZWN0PElDZWxsRXZlbnQgfCBudWxsPigpO1xuICBwcml2YXRlIF9lZGl0Q2VsbFN0b3AgPSBuZXcgU3ViamVjdDxJQ2VsbENvb3JkaW5hdGVzIHwgbnVsbD4oKTtcbiAgcHJpdmF0ZSBfdmFsdWVDaGFuZ2VkID0gbmV3IFN1YmplY3Q8SUNlbGxDb29yZGluYXRlcyB8IG51bGw+KCk7XG4gIHByaXZhdGUgX3ZhbHVlU2V0ID0gbmV3IFN1YmplY3Q8SUNlbGxWYWx1ZT4oKTtcbiAgcHJpdmF0ZSBfc3RhdGVDaGFuZ2VkID0gbmV3IFN1YmplY3Q8RmlsdGVyU3RhdGU+KCk7XG4gIHByaXZhdGUgX2ZpbHRlckNsZWFyID0gbmV3IFN1YmplY3Q8VGFibGVDb2x1bW4+KCk7XG4gIHByaXZhdGUgX2RyYWdTb3VyY2U/OiBUYWJsZUNvbHVtbjtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRSb3dzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUW10+KFtdKTtcbiAgcHJpdmF0ZSBfYWN0aXZlUm93ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgX3Njcm9sbEluZGV4ID0gbmV3IFN1YmplY3Q8bnVtYmVyIHwgbnVsbD4oKTtcblxuICBwcml2YXRlIF9jdXJyZW50RWRpdENlbGw/OiBJQ2VsbENvb3JkaW5hdGVzO1xuXG4gIGdldCBjdXJyZW50RWRpdENlbGwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRFZGl0Q2VsbDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuX2NvbHVtbnMuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5kaXNwbGF5RGF0YSA9IHRoaXMuX2Rpc3BsYXlEYXRhLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuZGljdCA9IHRoaXMuX2RpY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5maWx0ZXJPcHRpb25zID0gdGhpcy5fZmlsdGVyT3B0aW9ucy5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLnN0YXRlID0gdGhpcy5fc3RhdGUuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5lZGl0Um93U3RhcnQgPSB0aGlzLl9lZGl0Um93U3RhcnQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5lZGl0Um93U3RvcCA9IHRoaXMuX2VkaXRSb3dTdG9wLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuZWRpdENlbGxTdGFydCA9IHRoaXMuX2VkaXRDZWxsU3RhcnQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5lZGl0Q2VsbFN0b3AgPSB0aGlzLl9lZGl0Q2VsbFN0b3AuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy52YWx1ZUNoYW5nZWQgPSB0aGlzLl92YWx1ZUNoYW5nZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy52YWx1ZVNldCA9IHRoaXMuX3ZhbHVlU2V0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VkID0gdGhpcy5fc3RhdGVDaGFuZ2VkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuZmlsdGVyQ2xlYXIgPSB0aGlzLl9maWx0ZXJDbGVhci5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLnNlbGVjdGVkUm93cyA9IHRoaXMuX3NlbGVjdGVkUm93cy5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLmFjdGl2ZVJvdyA9IHRoaXMuX2FjdGl2ZVJvdy5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLmhpZGRlbkNvbHVtbnMgPSB0aGlzLl9oaWRkZW5Db2x1bW5zLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuc2Nyb2xsSW5kZXggPSB0aGlzLl9zY3JvbGxJbmRleC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHNldERhdGEoZGF0YTogVFtdKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcGxheURhdGEubmV4dChcbiAgICAgIGRhdGE/Lm1hcChcbiAgICAgICAgKGl0ZW0pID0+XG4gICAgICAgICAgbmV3IFRhYmxlUm93PFQ+KHtcbiAgICAgICAgICAgIGRhdGE6IGl0ZW0sXG4gICAgICAgICAgfSksXG4gICAgICApID8/IFtdLFxuICAgICk7XG4gIH1cblxuICBzZXREaWN0KGRpY3Q6IElEaWN0aW9uYXJ5PElJZE5hbWU8YW55PltdPik6IHZvaWQge1xuICAgIHRoaXMuX2RpY3QubmV4dChkaWN0KTtcbiAgfVxuXG4gIHNldEZpbHRlck9wdGlvbnMoZmlsdGVyT3B0aW9uczogSURpY3Rpb25hcnk8SUlkTmFtZTxhbnk+W10+KTogdm9pZCB7XG4gICAgdGhpcy5fZmlsdGVyT3B0aW9ucy5uZXh0KGZpbHRlck9wdGlvbnMpO1xuICB9XG5cbiAgc2V0Q29sdW1ucyhjb2x1bW5zOiBUYWJsZUNvbHVtbltdKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsQ29sdW1ucyA9IGNvbHVtbnMgPyBjb2x1bW5zLm1hcCgoXykgPT4gbmV3IFRhYmxlQ29sdW1uKF8pKSA6IFtdO1xuICAgIGNvbnN0IGV4Y2x1ZGVLZXlzID0gWydlZGl0YWJsZScsICdjZWxsQ29tcG9uZW50JywgJ2hlYWRDZWxsQ29tcG9uZW50JywgJ2hlYWREcm9wZG93bkNvbmZpZyddO1xuICAgIHRoaXMuaW5pdGlhbENvbHVtbnNIYXNoID0gb2JqZWN0SGFzaCh0aGlzLmluaXRpYWxDb2x1bW5zLCB7XG4gICAgICBhbGdvcml0aG06ICdzaGExJyxcbiAgICAgIGlnbm9yZVVua25vd246IHRydWUsXG4gICAgICBleGNsdWRlS2V5czogKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHJldHVybiBleGNsdWRlS2V5cy5pbmRleE9mKGtleSkgPj0gMDtcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgY29uc3QgcmVzdG9yZWQgPSB0aGlzLnJlc3RvcmVDb2x1bW5zKCk7XG5cbiAgICBpZiAocmVzdG9yZWQpIHtcbiAgICAgIHRoaXMuc2V0RGlzcGxheUNvbHVtbnMocmVzdG9yZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldERpc3BsYXlDb2x1bW5zKHRoaXMuaW5pdGlhbENvbHVtbnMpO1xuICAgIH1cbiAgfVxuXG4gIHJlc3RvcmVEZWZhdWx0Q29sdW1ucygpIHtcbiAgICB0aGlzLnNldERpc3BsYXlDb2x1bW5zKHRoaXMuaW5pdGlhbENvbHVtbnMpO1xuICAgIHRoaXMuY2xlYXJDb2x1bW5zU3RhdGUoKTtcbiAgfVxuXG4gIHVwZGF0ZUNvbHVtbnMoY29sdW1uczogVGFibGVDb2x1bW5bXSk6IHZvaWQge1xuICAgIHRoaXMuc2V0RGlzcGxheUNvbHVtbnMoY29sdW1ucyk7XG4gICAgdGhpcy5zYXZlQ29sdW1uc1N0YXRlKCk7XG4gIH1cblxuICBzYXZlQ29sdW1uc1N0YXRlKCkge1xuICAgIGlmICh0aGlzLl9jb2x1bW5zQ29va2llTmFtZSkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICAgIHRoaXMuX2NvbHVtbnNDb29raWVOYW1lLFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgaGFzaDogdGhpcy5pbml0aWFsQ29sdW1uc0hhc2gsXG4gICAgICAgICAgY29sdW1uczogdGhpcy5kaXNwbGF5Q29sdW1ucy5tYXAoKF8pID0+IG5ldyBUYWJsZUNvbHVtblN0b3JlKF8pKSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyQ29sdW1uc1N0YXRlKCkge1xuICAgIGlmICh0aGlzLl9jb2x1bW5zQ29va2llTmFtZSkge1xuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5fY29sdW1uc0Nvb2tpZU5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIHNldERpc3BsYXlDb2x1bW5zKGNvbHVtbnM6IFRhYmxlQ29sdW1uW10pOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXlDb2x1bW5zID0gY29sdW1ucyA/IGNvbHVtbnMubWFwKChfKSA9PiBuZXcgVGFibGVDb2x1bW4oXykpIDogW107XG4gICAgdGhpcy5fY29sdW1ucy5uZXh0KHRoaXMuZGlzcGxheUNvbHVtbnMpO1xuICB9XG5cbiAgcmVzdG9yZUNvbHVtbnMoKSB7XG4gICAgaWYgKHRoaXMuX2NvbHVtbnNDb29raWVOYW1lKSB7XG4gICAgICBjb25zdCBzYXZlZENvbHVtbnMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuX2NvbHVtbnNDb29raWVOYW1lKSk7XG4gICAgICBpZiAoc2F2ZWRDb2x1bW5zICYmIHNhdmVkQ29sdW1ucy5oYXNoID09PSB0aGlzLmluaXRpYWxDb2x1bW5zSGFzaCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXN0b3JlQ29sdW1uc1N0YXRlKHNhdmVkQ29sdW1ucy5jb2x1bW5zKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXN0b3JlQ29sdW1uc1N0YXRlKGNvbHVtbnM6IFRhYmxlQ29sdW1uU3RvcmVbXSkge1xuICAgIHJldHVybiBjb2x1bW5zLm1hcCgoY29sdW1uOiBUYWJsZUNvbHVtblN0b3JlKSA9PiB7XG4gICAgICBjb25zdCBmb3VuZCA9IEFycmF5VXRpbC5maW5kUmVjdXJzaXZlKHRoaXMuaW5pdGlhbENvbHVtbnMsIChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IGNvbHVtbi5uYW1lLCAnY29sdW1ucycpO1xuICAgICAgY29uc3QgcmVzdWx0Q29sdW1uID0gbmV3IFRhYmxlQ29sdW1uKGZvdW5kKTtcbiAgICAgIHJlc3VsdENvbHVtbi53aWR0aCA9IGNvbHVtbi53aWR0aDtcbiAgICAgIHJlc3VsdENvbHVtbi5mbGV4ID0gY29sdW1uLmZsZXg7XG4gICAgICByZXN1bHRDb2x1bW4ubG9ja2VkID0gY29sdW1uLmxvY2tlZDtcbiAgICAgIGlmIChjb2x1bW4uY29sdW1ucz8ubGVuZ3RoID4gMCkge1xuICAgICAgICByZXN1bHRDb2x1bW4uY29sdW1ucyA9IHRoaXMucmVzdG9yZUNvbHVtbnNTdGF0ZShjb2x1bW4uY29sdW1ucyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0Q29sdW1uO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0U3RhdGUoc3RhdGU6IEZpbHRlclN0YXRlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2Nvb2tpZU5hbWUpIHtcbiAgICAgIHN0YXRlLnNhdmUodGhpcy5fY29va2llTmFtZSk7XG4gICAgfVxuICAgIHRoaXMuX3N0YXRlLm5leHQoc3RhdGUpO1xuICB9XG5cbiAgc2V0Q29va2llTmFtZShuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9jb29raWVOYW1lID0gbmFtZTtcbiAgICB0aGlzLl9oaWRkZW5Db29raWVOYW1lID0gYCR7dGhpcy5fY29va2llTmFtZX1faGlkZGVuX2NvbHVtbnNgO1xuICAgIHRoaXMuX2NvbHVtbnNDb29raWVOYW1lID0gYCR7dGhpcy5fY29va2llTmFtZX1fY29sdW1uc2A7XG4gIH1cblxuICByZXN0b3JlU3RhdGUoKTogdm9pZCB7XG4gICAgbGV0IHN0YXRlOiBGaWx0ZXJTdGF0ZTtcbiAgICBpZiAodGhpcy5fY29va2llTmFtZSAmJiB0aGlzLl9jb29raWVOYW1lPy5sZW5ndGggPiAwICYmIEZpbHRlclN0YXRlLnJlc3RvcmUodGhpcy5fY29va2llTmFtZSkpIHtcbiAgICAgIGxldCBuZXdTdGF0ZSA9IE9iamVjdC5hc3NpZ24odGhpcy5fc3RhdGUudmFsdWUsIEZpbHRlclN0YXRlLnJlc3RvcmUodGhpcy5fY29va2llTmFtZSkpO1xuICAgICAgbmV3U3RhdGUgPSBEYXRlVXRpbC5jb252ZXJ0RGF0ZVN0cmluZ3NUb0RhdGVzKG5ld1N0YXRlKTtcbiAgICAgIHN0YXRlID0gbmV3IEZpbHRlclN0YXRlKG5ld1N0YXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUgPSBuZXcgRmlsdGVyU3RhdGUoKTtcbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZShzdGF0ZSk7XG4gIH1cblxuICBzYXZlSGlkZGVuQ29sdW1ucyhoaWRkZW5Db2x1bW5zOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9oaWRkZW5Db29raWVOYW1lKSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLl9oaWRkZW5Db29raWVOYW1lLCBKU09OLnN0cmluZ2lmeShoaWRkZW5Db2x1bW5zKSk7XG4gICAgfVxuICB9XG5cbiAgcmVzdG9yZUhpZGRlbkNvbHVtbnMoKTogdm9pZCB7XG4gICAgY29uc3QgaGlkZGVuQ29sdW1ucyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuX2hpZGRlbkNvb2tpZU5hbWUgPz8gJycpIHx8ICdbXSc7XG4gICAgdGhpcy5faGlkZGVuQ29sdW1ucy5uZXh0KEpTT04ucGFyc2UoaGlkZGVuQ29sdW1ucykpO1xuICB9XG5cbiAgc29ydEFzYyhzb3J0RXZlbnQ6IFNvcnRFdmVudCk6IHZvaWQge1xuICAgIGlmIChzb3J0RXZlbnQuY29sdW1uLnNvcnRhYmxlKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKFN0YXRlVXRpbC5zb3J0QXNjKHNvcnRFdmVudCwgdGhpcy5fc3RhdGUudmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICBzb3J0RGVzYyhzb3J0RXZlbnQ6IFNvcnRFdmVudCk6IHZvaWQge1xuICAgIGlmIChzb3J0RXZlbnQuY29sdW1uLnNvcnRhYmxlKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKFN0YXRlVXRpbC5zb3J0RGVzYyhzb3J0RXZlbnQsIHRoaXMuX3N0YXRlLnZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJTb3J0KGNvbHVtbjogVGFibGVDb2x1bW4pOiB2b2lkIHtcbiAgICB0aGlzLnNldFN0YXRlKFN0YXRlVXRpbC5jbGVhclNvcnQoY29sdW1uLCB0aGlzLl9zdGF0ZS52YWx1ZSkpO1xuICB9XG5cbiAgY2xlYXJBbGxTb3J0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0U3RhdGUoU3RhdGVVdGlsLmNsZWFyQWxsU29ydCh0aGlzLl9zdGF0ZS52YWx1ZSkpO1xuICB9XG5cbiAgY2xlYXJGaWx0ZXIoY29sdW1uOiBUYWJsZUNvbHVtbikge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5fc3RhdGUudmFsdWU7XG4gICAgaWYgKGNvbHVtbiAhPT0gbnVsbCAmJiBjb2x1bW4gIT09IHVuZGVmaW5lZCAmJiBjb2x1bW4uZmlsdGVyYWJsZSkge1xuICAgICAgc3dpdGNoIChjb2x1bW4uZmlsdGVyVHlwZSkge1xuICAgICAgICBjYXNlIEZpbHRlclR5cGUuZGF0ZTpcbiAgICAgICAgICBzdGF0ZS5hZGREYXRlRmlsdGVyKFxuICAgICAgICAgICAgbmV3IERhdGVGaWx0ZXIoe1xuICAgICAgICAgICAgICBuYW1lOiBjb2x1bW4ubmFtZSxcbiAgICAgICAgICAgICAgZmllbGQ6IGNvbHVtbi5maWx0ZXJGaWVsZCxcbiAgICAgICAgICAgICAgdmFsdWU6IG5ldyBEYXRlRmlsdGVyVmFsdWUoKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRmlsdGVyVHlwZS5zdHJpbmc6XG4gICAgICAgICAgc3RhdGUuYWRkU3RyaW5nRmlsdGVyKFxuICAgICAgICAgICAgbmV3IFN0cmluZ0ZpbHRlcih7XG4gICAgICAgICAgICAgIG5hbWU6IGNvbHVtbi5uYW1lLFxuICAgICAgICAgICAgICBmaWVsZDogY29sdW1uLmZpbHRlckZpZWxkLFxuICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZpbHRlclR5cGUubnVtYmVyOlxuICAgICAgICAgIHN0YXRlLmFkZE51bWVyaWNGaWx0ZXIoXG4gICAgICAgICAgICBuZXcgTnVtZXJpY0ZpbHRlcih7XG4gICAgICAgICAgICAgIG5hbWU6IGNvbHVtbi5uYW1lLFxuICAgICAgICAgICAgICBmaWVsZDogY29sdW1uLmZpbHRlckZpZWxkLFxuICAgICAgICAgICAgICB2YWx1ZTogbmV3IE51bWVyaWNGaWx0ZXJWYWx1ZSgpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLmxpc3Q6XG4gICAgICAgICAgc3RhdGUuYWRkTGlzdEZpbHRlcihcbiAgICAgICAgICAgIG5ldyBMaXN0RmlsdGVyKHtcbiAgICAgICAgICAgICAgbmFtZTogY29sdW1uLm5hbWUsXG4gICAgICAgICAgICAgIGZpZWxkOiBjb2x1bW4uZmlsdGVyRmllbGQsXG4gICAgICAgICAgICAgIHZhbHVlOiBbXSxcbiAgICAgICAgICAgICAgdHlwZTogTGlzdEZpbHRlclR5cGUuTm9uZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLnNldFN0YXRlKG5ldyBGaWx0ZXJTdGF0ZShzdGF0ZSkpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyQWxsRmlsdGVycygpIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuX3N0YXRlLnZhbHVlO1xuICAgIHN0YXRlLnN0cmluZ0ZpbHRlcnMgPSBbXTtcbiAgICBzdGF0ZS5saXN0RmlsdGVycyA9IFtdO1xuICAgIHN0YXRlLm51bWVyaWNGaWx0ZXJzID0gW107XG4gICAgc3RhdGUuZGF0ZUZpbHRlcnMgPSBbXTtcbiAgICB0aGlzLnNldFN0YXRlKG5ldyBGaWx0ZXJTdGF0ZShzdGF0ZSkpO1xuICB9XG5cbiAgcGluQ29sdW1uKGNvbHVtbjogVGFibGVDb2x1bW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXlDb2x1bW5zLmZvckVhY2goKGNvbDogVGFibGVDb2x1bW4pID0+IHtcbiAgICAgIGlmIChjb2wubmFtZSA9PT0gY29sdW1uLm5hbWUpIHtcbiAgICAgICAgY29sLmxvY2tlZCA9ICFjb2wubG9ja2VkO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlQ29sdW1ucyh0aGlzLmRpc3BsYXlDb2x1bW5zKTtcbiAgfVxuXG4gIGRyYWdTdGFydChjb2x1bW46IFRhYmxlQ29sdW1uKTogdm9pZCB7XG4gICAgdGhpcy5fZHJhZ1NvdXJjZSA9IGNvbHVtbjtcbiAgfVxuXG4gIGxvY2tQcmV2aW91c0NvbHVtbnMoY29sdW1uOiBUYWJsZUNvbHVtbiwgZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBmbGF0ID0gQXJyYXlVdGlsLmZsYXR0ZW4odGhpcy5kaXNwbGF5Q29sdW1ucywgJ2NvbHVtbnMnLCB0cnVlKS5zb3J0KFxuICAgICAgKGEsIGIpID0+IE51bWJlcihiLmxvY2tlZCkgLSBOdW1iZXIoYS5sb2NrZWQpLFxuICAgICk7XG4gICAgY29uc3QgaW5kZXggPSBmbGF0LmluZGV4T2YoY29sdW1uKTtcbiAgICBjb25zdCBwcmV2aW91cyA9IGZsYXQuc2xpY2UoMCwgaW5kZXgpLmZpbHRlcigoXykgPT4gXy5mbGV4ID4gMCk7XG4gICAgaWYgKHByZXZpb3VzPy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB0YWJsZUVsZW1lbnQgPSB0aGlzLmdldFRhYmxlRWxlbWVudChlbGVtZW50KTtcbiAgICAgIHByZXZpb3VzLmZvckVhY2goKGl0ZW06IFRhYmxlQ29sdW1uKSA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW1Db2wgPSB0YWJsZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoYHRldGEtaGVhZC1jZWxsW2RhdGEtY29sdW1uPVwiJHtpdGVtLm5hbWV9XCJdYCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmIChpdGVtQ29sKSB7XG4gICAgICAgICAgaXRlbS5mbGV4ID0gMDtcbiAgICAgICAgICBpdGVtLndpZHRoID0gaXRlbUNvbC5jbGllbnRXaWR0aDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVzaXplQ29sdW1uKGV2ZW50OiBDb2x1bW5SZXNpemVFdmVudCkge1xuICAgIGlmIChldmVudC5jb2x1bW4gIT09IG51bGwgJiYgZXZlbnQuY29sdW1uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGV2ZW50LmNvbHVtbi53aWR0aCA9IGV2ZW50Lm5ld1dpZHRoIDwgNTAgPyA1MCA6IGV2ZW50Lm5ld1dpZHRoO1xuICAgICAgZXZlbnQuY29sdW1uLmZsZXggPSAwO1xuICAgIH1cbiAgICB0aGlzLl9jb2x1bW5zLm5leHQodGhpcy5kaXNwbGF5Q29sdW1ucyk7XG4gICAgdGhpcy5zYXZlQ29sdW1uc1N0YXRlKCk7XG4gIH1cblxuICBhdXRvc2l6ZUNvbHVtbihjb2x1bW46IFRhYmxlQ29sdW1uLCB0YXJnZXQ6IEhUTUxFbGVtZW50KSB7XG4gICAgY29uc3QgdGFibGVFbGVtZW50ID0gdGhpcy5nZXRUYWJsZUVsZW1lbnQodGFyZ2V0KTtcbiAgICB0aGlzLnNldENvbHVtbkF1dG9XaWR0aChjb2x1bW4sIHRhYmxlRWxlbWVudCBhcyBIVE1MRWxlbWVudCk7XG4gICAgdGhpcy5fY29sdW1ucy5uZXh0KHRoaXMuZGlzcGxheUNvbHVtbnMpO1xuICAgIHRoaXMuc2F2ZUNvbHVtbnNTdGF0ZSgpO1xuICB9XG5cbiAgYXV0b3NpemVBbGxDb2x1bW5zKHRhcmdldDogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCB0YWJsZUVsZW1lbnQgPSB0aGlzLmdldFRhYmxlRWxlbWVudCh0YXJnZXQpO1xuICAgIGNvbnN0IGZsYXQgPSBBcnJheVV0aWwuZmxhdHRlbih0aGlzLmRpc3BsYXlDb2x1bW5zLCAnY29sdW1ucycsIHRydWUpO1xuICAgIGZsYXQuZm9yRWFjaCgoY29sKSA9PiB0aGlzLnNldENvbHVtbkF1dG9XaWR0aChjb2wsIHRhYmxlRWxlbWVudCBhcyBIVE1MRWxlbWVudCkpO1xuICAgIHRoaXMuX2NvbHVtbnMubmV4dCh0aGlzLmRpc3BsYXlDb2x1bW5zKTtcbiAgICB0aGlzLnNhdmVDb2x1bW5zU3RhdGUoKTtcbiAgfVxuXG4gIHJlb3JkZXJDb2x1bW4oY29sdW1uOiBUYWJsZUNvbHVtbiwgaW5zZXJ0QmVmb3JlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9kcmFnU291cmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGV2ZW50ID0gbmV3IENvbHVtblJlb3JkZXJFdmVudCh0aGlzLl9kcmFnU291cmNlLCBjb2x1bW4pO1xuICAgIGlmIChldmVudC5zb3VyY2UgIT09IGV2ZW50LnRhcmdldCkge1xuICAgICAgY29uc3Qgc291cmNlUGFyZW50ID0gdGhpcy5maW5kUGFyZW50KGV2ZW50LnNvdXJjZSwgdGhpcy5kaXNwbGF5Q29sdW1ucyk7XG4gICAgICBjb25zdCB0YXJnZXRQYXJlbnQgPSB0aGlzLmZpbmRQYXJlbnQoZXZlbnQudGFyZ2V0LCB0aGlzLmRpc3BsYXlDb2x1bW5zKTtcblxuICAgICAgaWYgKHNvdXJjZVBhcmVudCAmJiB0YXJnZXRQYXJlbnQpIHtcbiAgICAgICAgY29uc3Qgc291cmNlSW5kZXggPSBzb3VyY2VQYXJlbnQuaW5kZXhPZihldmVudC5zb3VyY2UpO1xuICAgICAgICBzb3VyY2VQYXJlbnQuc3BsaWNlKHNvdXJjZUluZGV4LCAxKTtcbiAgICAgICAgbGV0IHRhcmdldEluZGV4ID0gdGFyZ2V0UGFyZW50LmluZGV4T2YoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgaWYgKCFpbnNlcnRCZWZvcmUpIHtcbiAgICAgICAgICB0YXJnZXRJbmRleCA9IHRhcmdldEluZGV4ICsgMTtcbiAgICAgICAgfVxuICAgICAgICB0YXJnZXRQYXJlbnQuc3BsaWNlKHRhcmdldEluZGV4LCAwLCBldmVudC5zb3VyY2UpO1xuICAgICAgICBldmVudC5zb3VyY2UubG9ja2VkID0gZXZlbnQudGFyZ2V0LmxvY2tlZDtcblxuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbnModGhpcy5kaXNwbGF5Q29sdW1ucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0Q29sdW1uUGFyZW50KGNvbHVtbjogVGFibGVDb2x1bW4pIHtcbiAgICByZXR1cm4gdGhpcy5maW5kUGFyZW50Q29sdW1uKGNvbHVtbiwgdGhpcy5kaXNwbGF5Q29sdW1ucyk7XG4gIH1cblxuICBzdGFydEVkaXRSb3coY2VsbEV2ZW50OiBJQ2VsbEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2N1cnJlbnRFZGl0Q2VsbD8ucm93ICE9PSBjZWxsRXZlbnQ/LnJvdykge1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnRFZGl0Q2VsbCAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMuX2VkaXRSb3dTdG9wLm5leHQodGhpcy5fY3VycmVudEVkaXRDZWxsKTtcbiAgICAgIH1cbiAgICAgIGlmIChjZWxsRXZlbnQgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5fZWRpdFJvd1N0YXJ0Lm5leHQoY2VsbEV2ZW50KTtcbiAgICAgICAgdGhpcy5fY3VycmVudEVkaXRDZWxsID0gY2VsbEV2ZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGJvb2xPckZ1bmNDYWxsYmFjazxUPih0aGlzLnJvd0VkaXRhYmxlKSh0aGlzLmdldFJvd0J5SW5kZXgoY2VsbEV2ZW50Py5yb3cpPy5kYXRhKSkge1xuICAgICAgICAgIHRoaXMuX2VkaXRSb3dTdGFydC5uZXh0KGNlbGxFdmVudCk7XG4gICAgICAgICAgdGhpcy5fY3VycmVudEVkaXRDZWxsID0gY2VsbEV2ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhcnRFZGl0Q2VsbChjZWxsRXZlbnQ6IElDZWxsRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY3VycmVudEVkaXRDZWxsPy5jb2x1bW4gIT09IGNlbGxFdmVudD8uY29sdW1uIHx8IHRoaXMuX2N1cnJlbnRFZGl0Q2VsbD8ucm93ICE9PSBjZWxsRXZlbnQ/LnJvdykge1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnRFZGl0Q2VsbCAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMuX2VkaXRDZWxsU3RvcC5uZXh0KHRoaXMuX2N1cnJlbnRFZGl0Q2VsbCk7XG4gICAgICB9XG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdldENvbHVtbkJ5TmFtZShjZWxsRXZlbnQ/LmNvbHVtbik7XG4gICAgICBpZiAoXG4gICAgICAgIGJvb2xPckZ1bmNDYWxsYmFjazxUPih0aGlzLnJvd0VkaXRhYmxlKSh0aGlzLmdldFJvd0J5SW5kZXgoY2VsbEV2ZW50Py5yb3cpPy5kYXRhKSAmJlxuICAgICAgICBib29sT3JGdW5jQ2FsbGJhY2s8SUNvbHVtblJvdzxUPj4oY29sdW1uPy5lZGl0YWJsZSkoe1xuICAgICAgICAgIHJvdzogdGhpcy5nZXRSb3dCeUluZGV4KGNlbGxFdmVudD8ucm93KT8uZGF0YSxcbiAgICAgICAgICBjb2x1bW46IGNvbHVtbixcbiAgICAgICAgfSlcbiAgICAgICkge1xuICAgICAgICB0aGlzLl9lZGl0Q2VsbFN0YXJ0Lm5leHQoY2VsbEV2ZW50KTtcbiAgICAgICAgdGhpcy5fY3VycmVudEVkaXRDZWxsID0gY2VsbEV2ZW50O1xuICAgICAgICBjb25zdCBrZXkgPSAoY2VsbEV2ZW50Py5ldmVudCBhcyBLZXlib2FyZEV2ZW50KT8ua2V5O1xuICAgICAgICBpZiAoa2V5ICYmIChrZXkubGVuZ3RoID09PSAxIHx8IChrZXkgPT09ICdEZWxldGUnICYmICFjb2x1bW4ucmVxdWlyZWQpKSkge1xuICAgICAgICAgIHRoaXMuY2xlYXJWYWx1ZShjZWxsRXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0QWN0aXZlUm93KHJvdzogVCk6IHZvaWQge1xuICAgIHRoaXMuX2FjdGl2ZVJvdy5uZXh0KHJvdyk7XG4gIH1cblxuICBzZWxlY3RSb3dzKHJvd3M6IFRbXSk6IHZvaWQge1xuICAgIHRoaXMuX3NlbGVjdGVkUm93cy5uZXh0KHJvd3MpO1xuICB9XG5cbiAgc2VsZWN0T3JEZXNlbGVjdFJvdyhyb3c6IFQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRSb3dzLnZhbHVlLmluZGV4T2Yocm93KSA+PSAwKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZFJvd3MubmV4dCh0aGlzLl9zZWxlY3RlZFJvd3MudmFsdWUuZmlsdGVyKChfKSA9PiBfICE9PSByb3cpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc2VsZWN0ZWRSb3dzLm5leHQoWy4uLnRoaXMuX3NlbGVjdGVkUm93cy52YWx1ZSwgcm93XSk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0UmFuZ2Uocm93OiBUKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl9kaXNwbGF5RGF0YS52YWx1ZS5maW5kSW5kZXgoKF8pID0+IF8uZGF0YSA9PT0gcm93KTtcbiAgICBsZXQgbWluSW5kZXggPSB0aGlzLl9zZWxlY3RlZFJvd3MudmFsdWUucmVkdWNlKChwcmV2LCBjdXJyKSA9PiB7XG4gICAgICBjb25zdCBuZXdJbmRleCA9IHRoaXMuX2Rpc3BsYXlEYXRhLnZhbHVlLmZpbmRJbmRleCgoXykgPT4gXy5kYXRhID09PSBjdXJyKTtcbiAgICAgIGlmIChuZXdJbmRleCA8IHByZXYpIHtcbiAgICAgICAgcmV0dXJuIG5ld0luZGV4O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByZXY7XG4gICAgfSwgdGhpcy5fZGlzcGxheURhdGEudmFsdWUubGVuZ3RoKTtcbiAgICBsZXQgbWF4SW5kZXggPSB0aGlzLl9zZWxlY3RlZFJvd3MudmFsdWUucmVkdWNlKChwcmV2LCBjdXJyKSA9PiB7XG4gICAgICBjb25zdCBuZXdJbmRleCA9IHRoaXMuX2Rpc3BsYXlEYXRhLnZhbHVlLmZpbmRJbmRleCgoXykgPT4gXy5kYXRhID09PSBjdXJyKTtcbiAgICAgIGlmIChuZXdJbmRleCA+IHByZXYpIHtcbiAgICAgICAgcmV0dXJuIG5ld0luZGV4O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByZXY7XG4gICAgfSwgMCk7XG4gICAgaWYgKGluZGV4ID4gbWF4SW5kZXgpIHtcbiAgICAgIG1heEluZGV4ID0gaW5kZXg7XG4gICAgfVxuICAgIGlmIChpbmRleCA8IG1pbkluZGV4KSB7XG4gICAgICBtaW5JbmRleCA9IGluZGV4O1xuICAgIH1cbiAgICBpZiAobWluSW5kZXggPCBpbmRleCAmJiBpbmRleCA8IG1heEluZGV4KSB7XG4gICAgICBtYXhJbmRleCA9IGluZGV4O1xuICAgIH1cbiAgICB0aGlzLl9zZWxlY3RlZFJvd3MubmV4dChbLi4udGhpcy5fZGlzcGxheURhdGEudmFsdWUuc2xpY2UobWluSW5kZXgsIG1heEluZGV4ICsgMSkubWFwKChfKSA9PiBfLmRhdGEpXSk7XG4gIH1cblxuICBzZWxlY3RSb3cocm93OiBUKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0VHlwZSA9PT0gU2VsZWN0VHlwZS5ub25lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3NlbGVjdGVkUm93cy5uZXh0KFsuLi50aGlzLl9zZWxlY3RlZFJvd3MudmFsdWUsIHJvd10pO1xuICB9XG5cbiAgZGVzZWxlY3RSb3cocm93OiBUKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0VHlwZSA9PT0gU2VsZWN0VHlwZS5ub25lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3NlbGVjdGVkUm93cy5uZXh0KHRoaXMuX3NlbGVjdGVkUm93cy52YWx1ZS5maWx0ZXIoKF8pID0+IF8gIT09IHJvdykpO1xuICB9XG5cbiAgc2VsZWN0QWxsKCkge1xuICAgIHRoaXMuX3NlbGVjdGVkUm93cy5uZXh0KHRoaXMuX2Rpc3BsYXlEYXRhLnZhbHVlLm1hcCgoXykgPT4gXy5kYXRhKSk7XG4gIH1cblxuICBkZXNlbGVjdEFsbCgpIHtcbiAgICB0aGlzLl9zZWxlY3RlZFJvd3MubmV4dChbXSk7XG4gIH1cblxuICBhbGxSb3dzU2VsZWN0ZWQoKTogYm9vbGVhbiB8IG51bGwge1xuICAgIGlmIChcbiAgICAgIHRoaXMuX2Rpc3BsYXlEYXRhLnZhbHVlPy5sZW5ndGggJiZcbiAgICAgIHRoaXMuX3NlbGVjdGVkUm93cy52YWx1ZT8ubGVuZ3RoICYmXG4gICAgICB0aGlzLl9kaXNwbGF5RGF0YS52YWx1ZS5ldmVyeSgoXykgPT4gdGhpcy5fc2VsZWN0ZWRSb3dzLnZhbHVlLmZpbmRJbmRleCgoc2VsZWN0ZWQpID0+IHNlbGVjdGVkID09PSBfLmRhdGEpID49IDApXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3NlbGVjdGVkUm93cy52YWx1ZSA9PSBudWxsIHx8IHRoaXMuX3NlbGVjdGVkUm93cy52YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzZXRIaWRkZW5Db2x1bW5zKHZhbHVlOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuc2F2ZUhpZGRlbkNvbHVtbnModmFsdWUpO1xuICAgIHRoaXMuX2hpZGRlbkNvbHVtbnMubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBjb2x1bW5Jc0hpZGRlbihjb2x1bW46IFRhYmxlQ29sdW1uKSB7XG4gICAgcmV0dXJuIHRoaXMuX2hpZGRlbkNvbHVtbnMudmFsdWUuaW5kZXhPZihjb2x1bW4ubmFtZSkgPj0gMDtcbiAgfVxuXG4gIGNoYW5nZVZhbHVlKGNvb3JkaW5hdGVzOiBJQ2VsbENvb3JkaW5hdGVzKTogdm9pZCB7XG4gICAgdGhpcy5fdmFsdWVDaGFuZ2VkLm5leHQoY29vcmRpbmF0ZXMpO1xuICB9XG5cbiAgc2V0VmFsdWUoY2VsbFZhbHVlOiBJQ2VsbFZhbHVlKTogdm9pZDtcbiAgc2V0VmFsdWUoY2VsbFZhbHVlOiBJQ2VsbEluc3RhbmNlVmFsdWU8VD4pOiB2b2lkO1xuICBzZXRWYWx1ZShjZWxsVmFsdWU6IElDZWxsVmFsdWUgfCBJQ2VsbEluc3RhbmNlVmFsdWU8VD4pOiB2b2lkIHtcbiAgICBsZXQgdmFsdWU6IElDZWxsVmFsdWU7XG4gICAgaWYgKHR5cGVvZiBjZWxsVmFsdWUucm93ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgY2VsbFZhbHVlLmNvbHVtbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHZhbHVlID0ge1xuICAgICAgICByb3c6IHRoaXMuZ2V0Um93SW5kZXgoY2VsbFZhbHVlLnJvdy5kYXRhKSxcbiAgICAgICAgY29sdW1uOiBjZWxsVmFsdWUuY29sdW1uLm5hbWUsXG4gICAgICAgIHZhbHVlOiBjZWxsVmFsdWUudmFsdWUsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSA9IGNlbGxWYWx1ZSBhcyBJQ2VsbFZhbHVlO1xuICAgIH1cbiAgICB0aGlzLl92YWx1ZVNldC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIGdldFJvd0J5SW5kZXgocm93SW5kZXg/OiBudW1iZXIpOiBUYWJsZVJvdzxUPiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHJvd0luZGV4ICE9PSBudWxsICYmIHJvd0luZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5RGF0YT8udmFsdWVbcm93SW5kZXhdO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0Um93SW5kZXgocm93OiBUKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlEYXRhLnZhbHVlLmZpbmRJbmRleCgoXykgPT4gXy5kYXRhID09PSByb3cpO1xuICB9XG5cbiAgZ2V0RXZlbnRDZWxsKGV2ZW50OiBFdmVudCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIGV2ZW50LmNvbXBvc2VkUGF0aCgpLmZpbmQoKHRhcmdldDogYW55KSA9PiB7XG4gICAgICByZXR1cm4gdGFyZ2V0LnRhZ05hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICd0ZXRhLWNlbGwnO1xuICAgIH0pIGFzIEhUTUxFbGVtZW50O1xuICB9XG5cbiAgZ2V0RXZlbnRSb3coZXZlbnQ6IEV2ZW50KTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gZXZlbnQuY29tcG9zZWRQYXRoKCkuZmluZCgodGFyZ2V0OiBhbnkpID0+IHtcbiAgICAgIHJldHVybiB0YXJnZXQ/LmdldEF0dHJpYnV0ZSAmJiB0YXJnZXQ/LmdldEF0dHJpYnV0ZSgnZGF0YS1yb3cnKTtcbiAgICB9KSBhcyBIVE1MRWxlbWVudDtcbiAgfVxuXG4gIGdldE5leHRFZGl0YWJsZUNlbGwoY29vcmRzOiBJQ2VsbENvb3JkaW5hdGVzKTogSUNlbGxDb29yZGluYXRlcyB8IG51bGwge1xuICAgIGNvbnN0IG5leHRDZWxsID0gdGhpcy5nZXROZXh0Q2VsbChjb29yZHMpO1xuICAgIGlmICghbmV4dENlbGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdldENvbHVtbkJ5TmFtZShuZXh0Q2VsbD8uY29sdW1uKTtcbiAgICBpZiAoXG4gICAgICBib29sT3JGdW5jQ2FsbGJhY2s8SUNlbGxJbnN0YW5jZTxUPj4oY29sdW1uLmVkaXRhYmxlKSh7XG4gICAgICAgIHJvdzogdGhpcy5nZXRSb3dCeUluZGV4KG5leHRDZWxsLnJvdyksXG4gICAgICAgIGNvbHVtbixcbiAgICAgIH0pXG4gICAgKSB7XG4gICAgICByZXR1cm4gbmV4dENlbGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldE5leHRFZGl0YWJsZUNlbGwobmV4dENlbGwpO1xuICB9XG5cbiAgZ2V0UHJldmlvdXNFZGl0YWJsZUNlbGwoY29vcmRzOiBJQ2VsbENvb3JkaW5hdGVzKTogSUNlbGxDb29yZGluYXRlcyB8IG51bGwge1xuICAgIGNvbnN0IHByZXZDZWxsID0gdGhpcy5nZXRQcmV2aW91c0NlbGwoY29vcmRzKTtcbiAgICBpZiAoIXByZXZDZWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5nZXRDb2x1bW5CeU5hbWUocHJldkNlbGw/LmNvbHVtbik7XG4gICAgaWYgKFxuICAgICAgYm9vbE9yRnVuY0NhbGxiYWNrPElDZWxsSW5zdGFuY2U8VD4+KGNvbHVtbi5lZGl0YWJsZSkoe1xuICAgICAgICByb3c6IHRoaXMuZ2V0Um93QnlJbmRleChwcmV2Q2VsbC5yb3cpLFxuICAgICAgICBjb2x1bW4sXG4gICAgICB9KVxuICAgICkge1xuICAgICAgcmV0dXJuIHByZXZDZWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRQcmV2aW91c0VkaXRhYmxlQ2VsbChwcmV2Q2VsbCk7XG4gIH1cblxuICBnZXROZXh0Q2VsbChjb29yZHM6IElDZWxsQ29vcmRpbmF0ZXMpOiBJQ2VsbENvb3JkaW5hdGVzIHwgbnVsbCB7XG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMuZ2V0RmxhdENvbHVtbnMoKTtcbiAgICBsZXQgY29sSW5kZXggPSBjb2x1bW5zLmZpbmRJbmRleCgoY29sOiBUYWJsZUNvbHVtbikgPT4gY29sLm5hbWUgPT09IGNvb3Jkcz8uY29sdW1uKTtcbiAgICBsZXQgcm93SW5kZXggPSBjb29yZHM/LnJvdztcbiAgICBpZiAoY29sSW5kZXggPj0gMCAmJiByb3dJbmRleCA+PSAwKSB7XG4gICAgICBpZiAoY29sSW5kZXggPT09IGNvbHVtbnMubGVuZ3RoIC0gMSkge1xuICAgICAgICBjb2xJbmRleCA9IDA7XG4gICAgICAgIHJvd0luZGV4ID0gcm93SW5kZXggKyAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29sSW5kZXggPSBjb2xJbmRleCArIDE7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2x1bW46IGNvbHVtbnNbY29sSW5kZXhdPy5uYW1lLFxuICAgICAgICByb3c6IHJvd0luZGV4LFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBnZXRQcmV2aW91c0NlbGwoY29vcmRzOiBJQ2VsbENvb3JkaW5hdGVzKTogSUNlbGxDb29yZGluYXRlcyB8IG51bGwge1xuICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmdldEZsYXRDb2x1bW5zKCk7XG4gICAgbGV0IGNvbEluZGV4ID0gY29sdW1ucy5maW5kSW5kZXgoKGNvbDogVGFibGVDb2x1bW4pID0+IGNvbC5uYW1lID09PSBjb29yZHM/LmNvbHVtbik7XG4gICAgbGV0IHJvd0luZGV4ID0gY29vcmRzPy5yb3c7XG4gICAgaWYgKGNvbEluZGV4ID49IDAgJiYgcm93SW5kZXggPj0gMCkge1xuICAgICAgaWYgKGNvbEluZGV4ID09PSAwKSB7XG4gICAgICAgIGNvbEluZGV4ID0gY29sdW1ucy5sZW5ndGggLSAxO1xuICAgICAgICByb3dJbmRleCA9IHJvd0luZGV4IC0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbEluZGV4ID0gY29sSW5kZXggLSAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sdW1uOiBjb2x1bW5zW2NvbEluZGV4XT8ubmFtZSxcbiAgICAgICAgcm93OiByb3dJbmRleCxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0TmV4dFJvd0NlbGwoY29vcmRzOiBJQ2VsbENvb3JkaW5hdGVzKTogSUNlbGxDb29yZGluYXRlcyB8IG51bGwge1xuICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmdldEZsYXRDb2x1bW5zKCk7XG4gICAgY29uc3QgY29sSW5kZXggPSBjb2x1bW5zLmZpbmRJbmRleCgoY29sOiBUYWJsZUNvbHVtbikgPT4gY29sLm5hbWUgPT09IGNvb3Jkcz8uY29sdW1uKTtcbiAgICBjb25zdCByb3dJbmRleCA9IGNvb3Jkcz8ucm93O1xuICAgIGlmIChjb2xJbmRleCA+PSAwICYmIHJvd0luZGV4ID49IDAgJiYgcm93SW5kZXggPCB0aGlzLl9kaXNwbGF5RGF0YS52YWx1ZS5sZW5ndGggLSAxKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2x1bW46IGNvbHVtbnNbY29sSW5kZXhdPy5uYW1lLFxuICAgICAgICByb3c6IHJvd0luZGV4ICsgMSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0UHJldmlvdXNSb3dDZWxsKGNvb3JkczogSUNlbGxDb29yZGluYXRlcykge1xuICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmdldEZsYXRDb2x1bW5zKCk7XG4gICAgY29uc3QgY29sSW5kZXggPSBjb2x1bW5zLmZpbmRJbmRleCgoY29sOiBUYWJsZUNvbHVtbikgPT4gY29sLm5hbWUgPT09IGNvb3Jkcz8uY29sdW1uKTtcbiAgICBjb25zdCByb3dJbmRleCA9IGNvb3Jkcz8ucm93O1xuICAgIGlmIChjb2xJbmRleCA+PSAwICYmIHJvd0luZGV4ID4gMSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sdW1uOiBjb2x1bW5zW2NvbEluZGV4XT8ubmFtZSxcbiAgICAgICAgcm93OiByb3dJbmRleCAtIDEsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldENvbHVtbkJ5TmFtZShjb2x1bW5OYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gQXJyYXlVdGlsLmZpbmRSZWN1cnNpdmUodGhpcy5kaXNwbGF5Q29sdW1ucywgKGl0ZXJhYmxlTm9kZSkgPT4gY29sdW1uTmFtZSA9PT0gaXRlcmFibGVOb2RlLm5hbWUsICdjb2x1bW5zJyk7XG4gIH1cblxuICBzY3JvbGxUb0luZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLl9zY3JvbGxJbmRleC5uZXh0KG51bGwpO1xuICAgIHRoaXMuX3Njcm9sbEluZGV4Lm5leHQoaW5kZXgpO1xuICB9XG5cbiAgZ2V0VmlzaWJsZUNvbHVtbnMoKSB7XG4gICAgY29uc3QgdmlzaWJsZSA9IEFycmF5VXRpbC5mbGF0dGVuKHRoaXMuX2NvbHVtbnMudmFsdWUsICdjb2x1bW5zJywgdHJ1ZSkuZmlsdGVyKFxuICAgICAgKF8pID0+IHRoaXMuX2hpZGRlbkNvbHVtbnMudmFsdWUuaW5kZXhPZihfLm5hbWUpIDwgMCxcbiAgICApO1xuICAgIHJldHVybiB2aXNpYmxlLnNvcnQoKGEsIGIpID0+IE51bWJlcihiLmxvY2tlZCkgLSBOdW1iZXIoYS5sb2NrZWQpKTtcbiAgfVxuXG4gIGdldENlbGxJbnN0YW5jZShjb29yZHM6IElDZWxsQ29vcmRpbmF0ZXMpOiBJQ2VsbEluc3RhbmNlPFQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIGNvb3Jkc1xuICAgICAgPyB7XG4gICAgICAgICAgcm93OiB0aGlzLmdldFJvd0J5SW5kZXgoY29vcmRzLnJvdyksXG4gICAgICAgICAgY29sdW1uOiB0aGlzLmdldENvbHVtbkJ5TmFtZShjb29yZHMuY29sdW1uKSxcbiAgICAgICAgfVxuICAgICAgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGbGF0Q29sdW1ucygpIHtcbiAgICByZXR1cm4gQXJyYXlVdGlsLmZsYXR0ZW4odGhpcy5kaXNwbGF5Q29sdW1ucywgJ2NvbHVtbnMnLCB0cnVlKS5zb3J0KChhLCBiKSA9PiBOdW1iZXIoYi5sb2NrZWQpIC0gTnVtYmVyKGEubG9ja2VkKSk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRQYXJlbnQoY29sdW1uOiBUYWJsZUNvbHVtbiwgY29sdW1uczogVGFibGVDb2x1bW5bXSk6IFRhYmxlQ29sdW1uW10gfCBudWxsIHtcbiAgICBjb25zdCBmb3VuZCA9IGNvbHVtbnMuZmluZCgoeCkgPT4geC5uYW1lID09PSBjb2x1bW4ubmFtZSk7XG4gICAgaWYgKGZvdW5kICE9PSBudWxsICYmIGZvdW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjb2x1bW5zO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IGNvbHVtbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBjb25zdCBjb2wgPSBjb2x1bW5zW2ldO1xuICAgICAgaWYgKGNvbC5jb2x1bW5zICYmIGNvbC5jb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZpbmRQYXJlbnQoY29sdW1uLCBjb2wuY29sdW1ucyk7XG4gICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwgJiYgcmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kUGFyZW50Q29sdW1uKGNvbHVtbjogVGFibGVDb2x1bW4sIGNvbHVtbnM6IFRhYmxlQ29sdW1uW10pOiBUYWJsZUNvbHVtbiB8IG51bGwge1xuICAgIGNvbnN0IGZvdW5kID0gY29sdW1ucy5maW5kKCh4KSA9PiB4LmNvbHVtbnMuaW5kZXhPZihjb2x1bW4pID49IDApO1xuICAgIGlmIChmb3VuZCAhPT0gbnVsbCAmJiBmb3VuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZm91bmQ7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwLCBsID0gY29sdW1ucy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNvbnN0IGNvbCA9IGNvbHVtbnNbaV07XG4gICAgICBpZiAoY29sLmNvbHVtbnMgJiYgY29sLmNvbHVtbnMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmluZFBhcmVudENvbHVtbihjb2x1bW4sIGNvbC5jb2x1bW5zKTtcbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCAmJiByZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBnZXRUYWJsZUVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICByZXR1cm4gZWxlbWVudC5jbG9zZXN0KCd0ZXRhLXRhYmxlJyk7XG4gIH1cblxuICBwcml2YXRlIHNldENvbHVtbkF1dG9XaWR0aChjb2x1bW46IFRhYmxlQ29sdW1uLCB0YWJsZTogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBjZWxscyA9IHRhYmxlLnF1ZXJ5U2VsZWN0b3JBbGwoYHRldGEtY2VsbFtkYXRhLWNvbHVtbj1cIiR7Y29sdW1uLm5hbWV9XCJdIC5jZWxsLXRleHRgKTtcbiAgICBsZXQgbWF4V2lkdGggPSAwO1xuICAgIGNlbGxzLmZvckVhY2goKGNlbGwpID0+IHtcbiAgICAgIGlmIChjZWxsLnNjcm9sbFdpZHRoID4gbWF4V2lkdGgpIHtcbiAgICAgICAgbWF4V2lkdGggPSBjZWxsLnNjcm9sbFdpZHRoO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGFnZ0NlbGxzID0gdGFibGUucXVlcnlTZWxlY3RvckFsbChgLmFnZ3JlZ2F0ZS1jZWxsW2RhdGEtY29sdW1uPVwiJHtjb2x1bW4ubmFtZX1cIl0gLmNlbGwtdGV4dGApO1xuICAgIGFnZ0NlbGxzPy5mb3JFYWNoKChjZWxsKSA9PiB7XG4gICAgICBpZiAoY2VsbC5zY3JvbGxXaWR0aCA+IG1heFdpZHRoKSB7XG4gICAgICAgIG1heFdpZHRoID0gY2VsbC5zY3JvbGxXaWR0aDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb2x1bW4uZmxleCA9IDA7XG4gICAgY29sdW1uLndpZHRoID0gbWF4V2lkdGggKyAyMDtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJWYWx1ZShldmVudDogSUNlbGxFdmVudCkge1xuICAgIHRoaXMuc2V0VmFsdWUoe1xuICAgICAgLi4uZXZlbnQsXG4gICAgICB2YWx1ZTogbnVsbCxcbiAgICB9KTtcbiAgfVxufVxuIl19
|