@valtimo/task 12.3.0 → 12.4.0

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.
Files changed (31) hide show
  1. package/esm2022/lib/components/assign-user-to-task/assign-user-to-task.component.mjs +8 -5
  2. package/esm2022/lib/components/task-detail-content/task-detail-content.component.mjs +317 -0
  3. package/esm2022/lib/components/task-detail-intermediate-save/task-detail-intermediate-save.component.mjs +144 -0
  4. package/esm2022/lib/components/task-detail-modal/task-detail-modal.component.mjs +53 -272
  5. package/esm2022/lib/components/task-list/task-list.component.mjs +3 -3
  6. package/esm2022/lib/models/task.model.mjs +1 -1
  7. package/esm2022/lib/services/index.mjs +2 -1
  8. package/esm2022/lib/services/task-intermediate-save.service.mjs +18 -3
  9. package/esm2022/lib/task.module.mjs +17 -6
  10. package/esm2022/public_api.mjs +9 -6
  11. package/fesm2022/valtimo-task.mjs +635 -403
  12. package/fesm2022/valtimo-task.mjs.map +1 -1
  13. package/lib/components/assign-user-to-task/assign-user-to-task.component.d.ts +1 -1
  14. package/lib/components/assign-user-to-task/assign-user-to-task.component.d.ts.map +1 -1
  15. package/lib/components/task-detail-content/task-detail-content.component.d.ts +79 -0
  16. package/lib/components/task-detail-content/task-detail-content.component.d.ts.map +1 -0
  17. package/lib/components/task-detail-intermediate-save/task-detail-intermediate-save.component.d.ts +41 -0
  18. package/lib/components/task-detail-intermediate-save/task-detail-intermediate-save.component.d.ts.map +1 -0
  19. package/lib/components/task-detail-modal/task-detail-modal.component.d.ts +22 -65
  20. package/lib/components/task-detail-modal/task-detail-modal.component.d.ts.map +1 -1
  21. package/lib/models/task.model.d.ts +5 -1
  22. package/lib/models/task.model.d.ts.map +1 -1
  23. package/lib/services/index.d.ts +1 -0
  24. package/lib/services/index.d.ts.map +1 -1
  25. package/lib/services/task-intermediate-save.service.d.ts +7 -1
  26. package/lib/services/task-intermediate-save.service.d.ts.map +1 -1
  27. package/lib/task.module.d.ts +14 -12
  28. package/lib/task.module.d.ts.map +1 -1
  29. package/package.json +1 -1
  30. package/public_api.d.ts +8 -5
  31. package/public_api.d.ts.map +1 -1
@@ -338,7 +338,7 @@ export class TaskListComponent {
338
338
  TaskListSortService,
339
339
  TaskListSearchService,
340
340
  TaskListQueryParamService,
341
- ], viewQueries: [{ propertyName: "_taskDetail", first: true, predicate: ["taskDetail"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n loading: loadingTasks$ | async,\n selectedTaskType: selectedTaskType$ | async,\n tasks: tasks$ | async,\n fields: fields$ | async,\n visibleTabs: visibleTabs$ | async,\n pagination: paginationForCurrentTaskTypeForList$ | async,\n taskListColumnsForCase: taskListColumnsForCase$ | async,\n sortState: sortStateForCurrentTaskType$ | async,\n overrideSortState: overrideSortState$ | async,\n searchFields: searchFields$ | async,\n loadingSearchFields: loadingSearchFields$ | async,\n caseDefinitionName: caseDefinitionName$ | async,\n noResultsMessage: noResultsMessage$ | async\n } as obs\"\n class=\"main-content\"\n>\n <div class=\"container-fluid\">\n @if (obs.caseDefinitionName && obs.caseDefinitionName !== ALL_CASES_ID) {\n <ng-container\n *ngTemplateOutlet=\"\n searchFields;\n context: {\n obs: obs\n }\n \"\n ></ng-container>\n }\n\n <ng-container\n *ngTemplateOutlet=\"\n tasksList;\n context: {\n obs: obs\n }\n \"\n ></ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n tasksListLoading;\n context: {\n obs: obs\n }\n \"\n ></ng-container>\n\n <valtimo-task-detail-modal\n #taskDetail\n (formSubmit)=\"reload()\"\n (assignmentOfTaskChanged)=\"reload()\"\n ></valtimo-task-detail-modal>\n </div>\n</div>\n\n<ng-template #configuredTabs let-selectedTaskType=\"selectedTaskType\" let-visibleTabs=\"visibleTabs\">\n <cds-tabs *ngIf=\"visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n *ngFor=\"let tab of visibleTabs\"\n [attr.data-testid]=\"'task-list-tab-' + tab\"\n [heading]=\"'task-list.' + tab + '.title' | translate\"\n [active]=\"selectedTaskType === tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n</ng-template>\n\n<ng-template #caseLink let-data=\"data\">\n <ng-container *ngIf=\"cachedTasks$ | async as cachedTasks\">\n <div *ngIf=\"cachedTasks[data.index].caseLocked\">\n <a\n class=\"float-left cds--link--disabled\"\n cdsLink\n href=\"javascript:void(0)\"\n ngbTooltip=\"{{ 'task-list.caseLocked' | translate }}\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ 'task-list.goToCase' | translate }}\n </a>\n </div>\n <div *ngIf=\"!cachedTasks[data.index].caseLocked\">\n <a\n class=\"float-left cds--link\"\n cdsLink\n href=\"javascript:void(0)\"\n (click)=\"openRelatedCase($event, data.index)\"\n >\n {{ 'task-list.goToCase' | translate }}\n </a>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #tasksList let-obs=\"obs\">\n <valtimo-carbon-list\n *ngIf=\"!obs.loading\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [items]=\"obs.tasks\"\n [lastColumnTemplate]=\"caseLink\"\n [pagination]=\"obs.pagination\"\n paginationIdentifier=\"taskList\"\n lockedTooltipTranslationKey=\"task-list.rowLocked\"\n [sortState]=\"obs.overrideSortState || obs.sortState\"\n (paginationClicked)=\"paginationClicked($event, obs.selectedTaskType)\"\n (paginationSet)=\"paginationSet($event)\"\n (rowClicked)=\"rowOpenTaskClick($event)\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <div tabs>\n <ng-container *ngIf=\"obs.visibleTabs\">\n <ng-container\n *ngTemplateOutlet=\"\n configuredTabs;\n context: {selectedTaskType: obs.selectedTaskType, visibleTabs: obs.visibleTabs}\n \"\n ></ng-container>\n </ng-container>\n </div>\n\n <valtimo-no-results\n [description]=\"obs.noResultsMessage.description | translate\"\n [title]=\"obs.noResultsMessage.title | translate\"\n >\n </valtimo-no-results>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #tasksListLoading let-obs=\"obs\">\n <valtimo-carbon-list *ngIf=\"obs.loading\" [loading]=\"true\">\n <div tabs>\n <cds-tabs *ngIf=\"!obs.visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n [heading]=\"'task-list.mine.title' | translate\"\n [active]=\"obs.selectedTaskType === 'mine'\"\n >\n </cds-tab>\n\n <cds-tab\n [heading]=\"'task-list.open.title' | translate\"\n [active]=\"obs.selectedTaskType === 'open'\"\n >\n </cds-tab>\n\n <cds-tab\n [heading]=\"'task-list.all.title' | translate\"\n [active]=\"obs.selectedTaskType === 'all'\"\n >\n </cds-tab>\n </cds-tabs>\n\n <cds-tabs *ngIf=\"obs.visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n *ngFor=\"let tab of obs.visibleTabs\"\n [heading]=\"'task-list.' + tab + '.title' | translate\"\n [active]=\"obs.selectedTaskType === tab\"\n ></cds-tab>\n </cds-tabs>\n </div>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #searchFields let-obs=\"obs\">\n <div class=\"mb-3\">\n <valtimo-search-fields\n [searchFields]=\"obs.searchFields\"\n [inputDisabled]=\"obs.loadingSearchFields\"\n [documentDefinitionName]=\"obs.caseDefinitionName\"\n [setValuesSubject$]=\"setSearchFieldValuesSubject$\"\n [clearValuesSubject$]=\"clearSearchFieldValuesSubject$\"\n (doSearch)=\"search($event)\"\n >\n </valtimo-search-fields>\n </div>\n</ng-template>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <cds-dropdown\n class=\"case-definition-selection\"\n *ngIf=\"{\n loadingCaseListItems: loadingCaseListItems$ | async,\n caseListItems: caseListItems$ | async\n } as obs\"\n [attr.data-testid]=\"'task-list-case-dropdown'\"\n [disabled]=\"obs.loadingCaseListItems || (obs.caseListItems || []).length === 1\"\n [skeleton]=\"obs.loadingCaseListItems\"\n (selected)=\"setCaseDefinition($event)\"\n >\n <cds-dropdown-list [items]=\"obs.caseListItems || []\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\n", styles: [".cds--link--disabled{cursor:not-allowed;pointer-events:auto!important;outline:0!important}.case-definition-selection{display:flex;width:250px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i9.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i9.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "directive", type: i11.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i12.Link, selector: "[cdsLink], [ibmLink]", inputs: ["inline", "disabled"] }, { kind: "component", type: i12.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i12.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "directive", type: i9.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i12.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i12.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i9.SearchFieldsComponent, selector: "valtimo-search-fields", inputs: ["loading", "searchFields", "documentDefinitionName", "setValuesSubject$", "clearValuesSubject$", "defaultValues", "inputDisabled", "externalSearchField"], outputs: ["doSearch"] }, { kind: "component", type: i13.TaskDetailModalComponent, selector: "valtimo-task-detail-modal", outputs: ["formSubmit", "assignmentOfTaskChanged"] }, { kind: "pipe", type: i10.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
341
+ ], viewQueries: [{ propertyName: "_taskDetail", first: true, predicate: ["taskDetail"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n loading: loadingTasks$ | async,\n selectedTaskType: selectedTaskType$ | async,\n tasks: tasks$ | async,\n fields: fields$ | async,\n visibleTabs: visibleTabs$ | async,\n pagination: paginationForCurrentTaskTypeForList$ | async,\n taskListColumnsForCase: taskListColumnsForCase$ | async,\n sortState: sortStateForCurrentTaskType$ | async,\n overrideSortState: overrideSortState$ | async,\n searchFields: searchFields$ | async,\n loadingSearchFields: loadingSearchFields$ | async,\n caseDefinitionName: caseDefinitionName$ | async,\n noResultsMessage: noResultsMessage$ | async,\n } as obs\"\n class=\"main-content\"\n>\n <div class=\"container-fluid\">\n @if (obs.caseDefinitionName && obs.caseDefinitionName !== ALL_CASES_ID) {\n <ng-container\n *ngTemplateOutlet=\"\n searchFields;\n context: {\n obs: obs,\n }\n \"\n ></ng-container>\n }\n\n <ng-container\n *ngTemplateOutlet=\"\n tasksList;\n context: {\n obs: obs,\n }\n \"\n ></ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n tasksListLoading;\n context: {\n obs: obs,\n }\n \"\n ></ng-container>\n\n <valtimo-task-detail-modal\n #taskDetail\n (formSubmit)=\"reload()\"\n (assignmentOfTaskChanged)=\"reload()\"\n ></valtimo-task-detail-modal>\n </div>\n</div>\n\n<ng-template #configuredTabs let-selectedTaskType=\"selectedTaskType\" let-visibleTabs=\"visibleTabs\">\n <cds-tabs *ngIf=\"visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n *ngFor=\"let tab of visibleTabs\"\n [attr.data-testid]=\"'task-list-tab-' + tab\"\n [heading]=\"'task-list.' + tab + '.title' | translate\"\n [active]=\"selectedTaskType === tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n</ng-template>\n\n<ng-template #caseLink let-data=\"data\">\n <ng-container *ngIf=\"cachedTasks$ | async as cachedTasks\">\n <div *ngIf=\"cachedTasks[data.index].caseLocked\">\n <a\n class=\"float-left cds--link--disabled\"\n cdsLink\n href=\"javascript:void(0)\"\n ngbTooltip=\"{{ 'task-list.caseLocked' | translate }}\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ 'task-list.goToCase' | translate }}\n </a>\n </div>\n <div *ngIf=\"!cachedTasks[data.index].caseLocked\">\n <a\n class=\"float-left cds--link\"\n cdsLink\n href=\"javascript:void(0)\"\n (click)=\"openRelatedCase($event, data.index)\"\n >\n {{ 'task-list.goToCase' | translate }}\n </a>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #tasksList let-obs=\"obs\">\n <valtimo-carbon-list\n *ngIf=\"!obs.loading\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [items]=\"obs.tasks\"\n [lastColumnTemplate]=\"caseLink\"\n [pagination]=\"obs.pagination\"\n paginationIdentifier=\"taskList\"\n lockedTooltipTranslationKey=\"task-list.rowLocked\"\n [sortState]=\"obs.overrideSortState || obs.sortState\"\n (paginationClicked)=\"paginationClicked($event, obs.selectedTaskType)\"\n (paginationSet)=\"paginationSet($event)\"\n (rowClicked)=\"rowOpenTaskClick($event)\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <div tabs>\n <ng-container *ngIf=\"obs.visibleTabs\">\n <ng-container\n *ngTemplateOutlet=\"\n configuredTabs;\n context: {selectedTaskType: obs.selectedTaskType, visibleTabs: obs.visibleTabs}\n \"\n ></ng-container>\n </ng-container>\n </div>\n\n <valtimo-no-results\n [description]=\"obs.noResultsMessage.description | translate\"\n [title]=\"obs.noResultsMessage.title | translate\"\n >\n </valtimo-no-results>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #tasksListLoading let-obs=\"obs\">\n <valtimo-carbon-list *ngIf=\"obs.loading\" [loading]=\"true\">\n <div tabs>\n <cds-tabs *ngIf=\"!obs.visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n [heading]=\"'task-list.mine.title' | translate\"\n [active]=\"obs.selectedTaskType === 'mine'\"\n >\n </cds-tab>\n\n <cds-tab\n [heading]=\"'task-list.open.title' | translate\"\n [active]=\"obs.selectedTaskType === 'open'\"\n >\n </cds-tab>\n\n <cds-tab\n [heading]=\"'task-list.all.title' | translate\"\n [active]=\"obs.selectedTaskType === 'all'\"\n >\n </cds-tab>\n </cds-tabs>\n\n <cds-tabs *ngIf=\"obs.visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n *ngFor=\"let tab of obs.visibleTabs\"\n [heading]=\"'task-list.' + tab + '.title' | translate\"\n [active]=\"obs.selectedTaskType === tab\"\n ></cds-tab>\n </cds-tabs>\n </div>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #searchFields let-obs=\"obs\">\n <div class=\"mb-3\">\n <valtimo-search-fields\n [searchFields]=\"obs.searchFields\"\n [inputDisabled]=\"obs.loadingSearchFields\"\n [documentDefinitionName]=\"obs.caseDefinitionName\"\n [setValuesSubject$]=\"setSearchFieldValuesSubject$\"\n [clearValuesSubject$]=\"clearSearchFieldValuesSubject$\"\n (doSearch)=\"search($event)\"\n >\n </valtimo-search-fields>\n </div>\n</ng-template>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <cds-dropdown\n class=\"case-definition-selection\"\n *ngIf=\"{\n loadingCaseListItems: loadingCaseListItems$ | async,\n caseListItems: caseListItems$ | async,\n } as obs\"\n [attr.data-testid]=\"'task-list-case-dropdown'\"\n [disabled]=\"obs.loadingCaseListItems || (obs.caseListItems || []).length === 1\"\n [skeleton]=\"obs.loadingCaseListItems\"\n (selected)=\"setCaseDefinition($event)\"\n >\n <cds-dropdown-list [items]=\"obs.caseListItems || []\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\n", styles: [".cds--link--disabled{cursor:not-allowed;pointer-events:auto!important;outline:0!important}.case-definition-selection{display:flex;width:250px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i10.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i9.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i9.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "directive", type: i11.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "triggers", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i12.Link, selector: "[cdsLink], [ibmLink]", inputs: ["inline", "disabled"] }, { kind: "component", type: i12.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i12.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive", "tabContent", "templateContext"], outputs: ["selected"] }, { kind: "directive", type: i9.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i12.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i12.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i9.SearchFieldsComponent, selector: "valtimo-search-fields", inputs: ["loading", "searchFields", "documentDefinitionName", "setValuesSubject$", "clearValuesSubject$", "defaultValues", "inputDisabled", "externalSearchField"], outputs: ["doSearch"] }, { kind: "component", type: i13.TaskDetailModalComponent, selector: "valtimo-task-detail-modal", inputs: ["modalSize"], outputs: ["formSubmit", "assignmentOfTaskChanged"] }, { kind: "pipe", type: i10.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
342
342
  }
343
343
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TaskListComponent, decorators: [{
344
344
  type: Component,
@@ -349,7 +349,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
349
349
  TaskListSortService,
350
350
  TaskListSearchService,
351
351
  TaskListQueryParamService,
352
- ], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n loading: loadingTasks$ | async,\n selectedTaskType: selectedTaskType$ | async,\n tasks: tasks$ | async,\n fields: fields$ | async,\n visibleTabs: visibleTabs$ | async,\n pagination: paginationForCurrentTaskTypeForList$ | async,\n taskListColumnsForCase: taskListColumnsForCase$ | async,\n sortState: sortStateForCurrentTaskType$ | async,\n overrideSortState: overrideSortState$ | async,\n searchFields: searchFields$ | async,\n loadingSearchFields: loadingSearchFields$ | async,\n caseDefinitionName: caseDefinitionName$ | async,\n noResultsMessage: noResultsMessage$ | async\n } as obs\"\n class=\"main-content\"\n>\n <div class=\"container-fluid\">\n @if (obs.caseDefinitionName && obs.caseDefinitionName !== ALL_CASES_ID) {\n <ng-container\n *ngTemplateOutlet=\"\n searchFields;\n context: {\n obs: obs\n }\n \"\n ></ng-container>\n }\n\n <ng-container\n *ngTemplateOutlet=\"\n tasksList;\n context: {\n obs: obs\n }\n \"\n ></ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n tasksListLoading;\n context: {\n obs: obs\n }\n \"\n ></ng-container>\n\n <valtimo-task-detail-modal\n #taskDetail\n (formSubmit)=\"reload()\"\n (assignmentOfTaskChanged)=\"reload()\"\n ></valtimo-task-detail-modal>\n </div>\n</div>\n\n<ng-template #configuredTabs let-selectedTaskType=\"selectedTaskType\" let-visibleTabs=\"visibleTabs\">\n <cds-tabs *ngIf=\"visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n *ngFor=\"let tab of visibleTabs\"\n [attr.data-testid]=\"'task-list-tab-' + tab\"\n [heading]=\"'task-list.' + tab + '.title' | translate\"\n [active]=\"selectedTaskType === tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n</ng-template>\n\n<ng-template #caseLink let-data=\"data\">\n <ng-container *ngIf=\"cachedTasks$ | async as cachedTasks\">\n <div *ngIf=\"cachedTasks[data.index].caseLocked\">\n <a\n class=\"float-left cds--link--disabled\"\n cdsLink\n href=\"javascript:void(0)\"\n ngbTooltip=\"{{ 'task-list.caseLocked' | translate }}\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ 'task-list.goToCase' | translate }}\n </a>\n </div>\n <div *ngIf=\"!cachedTasks[data.index].caseLocked\">\n <a\n class=\"float-left cds--link\"\n cdsLink\n href=\"javascript:void(0)\"\n (click)=\"openRelatedCase($event, data.index)\"\n >\n {{ 'task-list.goToCase' | translate }}\n </a>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #tasksList let-obs=\"obs\">\n <valtimo-carbon-list\n *ngIf=\"!obs.loading\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [items]=\"obs.tasks\"\n [lastColumnTemplate]=\"caseLink\"\n [pagination]=\"obs.pagination\"\n paginationIdentifier=\"taskList\"\n lockedTooltipTranslationKey=\"task-list.rowLocked\"\n [sortState]=\"obs.overrideSortState || obs.sortState\"\n (paginationClicked)=\"paginationClicked($event, obs.selectedTaskType)\"\n (paginationSet)=\"paginationSet($event)\"\n (rowClicked)=\"rowOpenTaskClick($event)\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <div tabs>\n <ng-container *ngIf=\"obs.visibleTabs\">\n <ng-container\n *ngTemplateOutlet=\"\n configuredTabs;\n context: {selectedTaskType: obs.selectedTaskType, visibleTabs: obs.visibleTabs}\n \"\n ></ng-container>\n </ng-container>\n </div>\n\n <valtimo-no-results\n [description]=\"obs.noResultsMessage.description | translate\"\n [title]=\"obs.noResultsMessage.title | translate\"\n >\n </valtimo-no-results>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #tasksListLoading let-obs=\"obs\">\n <valtimo-carbon-list *ngIf=\"obs.loading\" [loading]=\"true\">\n <div tabs>\n <cds-tabs *ngIf=\"!obs.visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n [heading]=\"'task-list.mine.title' | translate\"\n [active]=\"obs.selectedTaskType === 'mine'\"\n >\n </cds-tab>\n\n <cds-tab\n [heading]=\"'task-list.open.title' | translate\"\n [active]=\"obs.selectedTaskType === 'open'\"\n >\n </cds-tab>\n\n <cds-tab\n [heading]=\"'task-list.all.title' | translate\"\n [active]=\"obs.selectedTaskType === 'all'\"\n >\n </cds-tab>\n </cds-tabs>\n\n <cds-tabs *ngIf=\"obs.visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n *ngFor=\"let tab of obs.visibleTabs\"\n [heading]=\"'task-list.' + tab + '.title' | translate\"\n [active]=\"obs.selectedTaskType === tab\"\n ></cds-tab>\n </cds-tabs>\n </div>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #searchFields let-obs=\"obs\">\n <div class=\"mb-3\">\n <valtimo-search-fields\n [searchFields]=\"obs.searchFields\"\n [inputDisabled]=\"obs.loadingSearchFields\"\n [documentDefinitionName]=\"obs.caseDefinitionName\"\n [setValuesSubject$]=\"setSearchFieldValuesSubject$\"\n [clearValuesSubject$]=\"clearSearchFieldValuesSubject$\"\n (doSearch)=\"search($event)\"\n >\n </valtimo-search-fields>\n </div>\n</ng-template>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <cds-dropdown\n class=\"case-definition-selection\"\n *ngIf=\"{\n loadingCaseListItems: loadingCaseListItems$ | async,\n caseListItems: caseListItems$ | async\n } as obs\"\n [attr.data-testid]=\"'task-list-case-dropdown'\"\n [disabled]=\"obs.loadingCaseListItems || (obs.caseListItems || []).length === 1\"\n [skeleton]=\"obs.loadingCaseListItems\"\n (selected)=\"setCaseDefinition($event)\"\n >\n <cds-dropdown-list [items]=\"obs.caseListItems || []\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\n", styles: [".cds--link--disabled{cursor:not-allowed;pointer-events:auto!important;outline:0!important}.case-definition-selection{display:flex;width:250px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
352
+ ], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div\n *ngIf=\"{\n loading: loadingTasks$ | async,\n selectedTaskType: selectedTaskType$ | async,\n tasks: tasks$ | async,\n fields: fields$ | async,\n visibleTabs: visibleTabs$ | async,\n pagination: paginationForCurrentTaskTypeForList$ | async,\n taskListColumnsForCase: taskListColumnsForCase$ | async,\n sortState: sortStateForCurrentTaskType$ | async,\n overrideSortState: overrideSortState$ | async,\n searchFields: searchFields$ | async,\n loadingSearchFields: loadingSearchFields$ | async,\n caseDefinitionName: caseDefinitionName$ | async,\n noResultsMessage: noResultsMessage$ | async,\n } as obs\"\n class=\"main-content\"\n>\n <div class=\"container-fluid\">\n @if (obs.caseDefinitionName && obs.caseDefinitionName !== ALL_CASES_ID) {\n <ng-container\n *ngTemplateOutlet=\"\n searchFields;\n context: {\n obs: obs,\n }\n \"\n ></ng-container>\n }\n\n <ng-container\n *ngTemplateOutlet=\"\n tasksList;\n context: {\n obs: obs,\n }\n \"\n ></ng-container>\n\n <ng-container\n *ngTemplateOutlet=\"\n tasksListLoading;\n context: {\n obs: obs,\n }\n \"\n ></ng-container>\n\n <valtimo-task-detail-modal\n #taskDetail\n (formSubmit)=\"reload()\"\n (assignmentOfTaskChanged)=\"reload()\"\n ></valtimo-task-detail-modal>\n </div>\n</div>\n\n<ng-template #configuredTabs let-selectedTaskType=\"selectedTaskType\" let-visibleTabs=\"visibleTabs\">\n <cds-tabs *ngIf=\"visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n *ngFor=\"let tab of visibleTabs\"\n [attr.data-testid]=\"'task-list-tab-' + tab\"\n [heading]=\"'task-list.' + tab + '.title' | translate\"\n [active]=\"selectedTaskType === tab\"\n (selected)=\"tabChange(tab)\"\n ></cds-tab>\n </cds-tabs>\n</ng-template>\n\n<ng-template #caseLink let-data=\"data\">\n <ng-container *ngIf=\"cachedTasks$ | async as cachedTasks\">\n <div *ngIf=\"cachedTasks[data.index].caseLocked\">\n <a\n class=\"float-left cds--link--disabled\"\n cdsLink\n href=\"javascript:void(0)\"\n ngbTooltip=\"{{ 'task-list.caseLocked' | translate }}\"\n (click)=\"$event.stopPropagation()\"\n >\n {{ 'task-list.goToCase' | translate }}\n </a>\n </div>\n <div *ngIf=\"!cachedTasks[data.index].caseLocked\">\n <a\n class=\"float-left cds--link\"\n cdsLink\n href=\"javascript:void(0)\"\n (click)=\"openRelatedCase($event, data.index)\"\n >\n {{ 'task-list.goToCase' | translate }}\n </a>\n </div>\n </ng-container>\n</ng-template>\n\n<ng-template #tasksList let-obs=\"obs\">\n <valtimo-carbon-list\n *ngIf=\"!obs.loading\"\n [fields]=\"obs.fields\"\n [header]=\"false\"\n [items]=\"obs.tasks\"\n [lastColumnTemplate]=\"caseLink\"\n [pagination]=\"obs.pagination\"\n paginationIdentifier=\"taskList\"\n lockedTooltipTranslationKey=\"task-list.rowLocked\"\n [sortState]=\"obs.overrideSortState || obs.sortState\"\n (paginationClicked)=\"paginationClicked($event, obs.selectedTaskType)\"\n (paginationSet)=\"paginationSet($event)\"\n (rowClicked)=\"rowOpenTaskClick($event)\"\n (sortChanged)=\"sortChanged($event)\"\n >\n <div tabs>\n <ng-container *ngIf=\"obs.visibleTabs\">\n <ng-container\n *ngTemplateOutlet=\"\n configuredTabs;\n context: {selectedTaskType: obs.selectedTaskType, visibleTabs: obs.visibleTabs}\n \"\n ></ng-container>\n </ng-container>\n </div>\n\n <valtimo-no-results\n [description]=\"obs.noResultsMessage.description | translate\"\n [title]=\"obs.noResultsMessage.title | translate\"\n >\n </valtimo-no-results>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #tasksListLoading let-obs=\"obs\">\n <valtimo-carbon-list *ngIf=\"obs.loading\" [loading]=\"true\">\n <div tabs>\n <cds-tabs *ngIf=\"!obs.visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n [heading]=\"'task-list.mine.title' | translate\"\n [active]=\"obs.selectedTaskType === 'mine'\"\n >\n </cds-tab>\n\n <cds-tab\n [heading]=\"'task-list.open.title' | translate\"\n [active]=\"obs.selectedTaskType === 'open'\"\n >\n </cds-tab>\n\n <cds-tab\n [heading]=\"'task-list.all.title' | translate\"\n [active]=\"obs.selectedTaskType === 'all'\"\n >\n </cds-tab>\n </cds-tabs>\n\n <cds-tabs *ngIf=\"obs.visibleTabs\" type=\"contained\" class=\"valtimo-carbon-list__tabs\">\n <cds-tab\n *ngFor=\"let tab of obs.visibleTabs\"\n [heading]=\"'task-list.' + tab + '.title' | translate\"\n [active]=\"obs.selectedTaskType === tab\"\n ></cds-tab>\n </cds-tabs>\n </div>\n </valtimo-carbon-list>\n</ng-template>\n\n<ng-template #searchFields let-obs=\"obs\">\n <div class=\"mb-3\">\n <valtimo-search-fields\n [searchFields]=\"obs.searchFields\"\n [inputDisabled]=\"obs.loadingSearchFields\"\n [documentDefinitionName]=\"obs.caseDefinitionName\"\n [setValuesSubject$]=\"setSearchFieldValuesSubject$\"\n [clearValuesSubject$]=\"clearSearchFieldValuesSubject$\"\n (doSearch)=\"search($event)\"\n >\n </valtimo-search-fields>\n </div>\n</ng-template>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <cds-dropdown\n class=\"case-definition-selection\"\n *ngIf=\"{\n loadingCaseListItems: loadingCaseListItems$ | async,\n caseListItems: caseListItems$ | async,\n } as obs\"\n [attr.data-testid]=\"'task-list-case-dropdown'\"\n [disabled]=\"obs.loadingCaseListItems || (obs.caseListItems || []).length === 1\"\n [skeleton]=\"obs.loadingCaseListItems\"\n (selected)=\"setCaseDefinition($event)\"\n >\n <cds-dropdown-list [items]=\"obs.caseListItems || []\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\n", styles: [".cds--link--disabled{cursor:not-allowed;pointer-events:auto!important;outline:0!important}.case-definition-selection{display:flex;width:250px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
353
353
  }], ctorParameters: () => [{ type: i1.ConfigService }, { type: i2.DocumentService }, { type: i3.PermissionService }, { type: i4.Router }, { type: i5.TaskService }, { type: i6.TaskListService }, { type: i7.TranslateService }, { type: i6.TaskListColumnService }, { type: i6.TaskListPaginationService }, { type: i8.TaskListSortService }, { type: i6.TaskListSearchService }, { type: i6.TaskListQueryParamService }, { type: i9.PageTitleService }], propDecorators: { _taskDetail: [{
354
354
  type: ViewChild,
355
355
  args: ['taskDetail']
@@ -357,4 +357,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
357
357
  type: HostListener,
358
358
  args: ['window:popstate', ['$event']]
359
359
  }] } });
360
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vdGFzay9zcmMvbGliL2NvbXBvbmVudHMvdGFzay1saXN0L3Rhc2stbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3Rhc2svc3JjL2xpYi9jb21wb25lbnRzL3Rhc2stbGlzdC90YXNrLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBR1osU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFVNUIsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdGLE9BQU8sRUFNTCxXQUFXLEdBQ1osTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUMsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RSxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLHdCQUF3QixFQUN4QiwrQkFBK0IsR0FDaEMsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLGVBQWUsR0FDaEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBRy9CLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBRTFFLE9BQU8sRUFBQyxtQ0FBbUMsRUFBQyxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFFcEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBaUJyRCxNQUFNLE9BQU8saUJBQWlCO0lBSXBCLFVBQVU7UUFDaEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQTZKRCxZQUNtQixhQUE0QixFQUM1QixlQUFnQyxFQUNoQyxpQkFBb0MsRUFDcEMsTUFBYyxFQUNkLFdBQXdCLEVBQ3hCLGVBQWdDLEVBQ2hDLGdCQUFrQyxFQUNsQyxxQkFBNEMsRUFDNUMseUJBQW9ELEVBQ3BELG1CQUF3QyxFQUN4QyxxQkFBNEMsRUFDNUMseUJBQW9ELEVBQ3BELGdCQUFrQztRQVpsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1Qyw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ3BELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1Qyw4QkFBeUIsR0FBekIseUJBQXlCLENBQTJCO1FBQ3BELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUF4S3JDLGlCQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUM7UUFFakQsc0JBQWlCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQztRQUUxRCwrQkFBMEIsR0FDekMsSUFBSSxlQUFlLENBQW9DLElBQUksQ0FBQyxDQUFDO1FBRS9DLHNCQUFpQixHQUEyQyxhQUFhLENBQUM7WUFDeEYsSUFBSSxDQUFDLGlCQUFpQjtZQUN0QixJQUFJLENBQUMsMEJBQTBCO1NBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUNELENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSx3QkFBd0IsQ0FBQyxFQUFFLEVBQUUsQ0FDL0Msd0JBQXdCLElBQUk7WUFDMUIsS0FBSyxFQUFFLFlBQVksR0FBRyxnQkFBZ0IsR0FBRyxpQkFBaUI7WUFDMUQsV0FBVyxFQUFFLFlBQVksR0FBRyxnQkFBZ0IsR0FBRyx1QkFBdUI7WUFDdEUsY0FBYyxFQUFFLEtBQUs7U0FDdEIsQ0FDSixDQUNGLENBQUM7UUFFYyxZQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQztRQUM3QyxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQ25ELGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQTRCLElBQUksQ0FBQyxDQUFDO1FBRTVFLDZCQUF3QixHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBRXRELGlCQUFZLEdBQUcsSUFBSSxlQUFlLENBQXdDLElBQUksQ0FBQyxDQUFDO1FBRWhGLHlDQUFvQyxHQUNsRCxJQUFJLENBQUMseUJBQXlCLENBQUMsb0NBQW9DLENBQUM7UUFFdEQsaUNBQTRCLEdBQzFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyw0QkFBNEIsQ0FBQztRQUV4Qyx1QkFBa0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLENBQUM7UUFFaEUsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBRS9DLHdCQUFtQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUM7UUFFL0QsV0FBTSxHQUErQyxhQUFhLENBQUM7WUFDakYsSUFBSSxDQUFDLGVBQWUsQ0FBQyw4QkFBOEI7WUFDbkQsSUFBSSxDQUFDLGlCQUFpQjtZQUN0QixJQUFJLENBQUMseUJBQXlCLENBQUMsNkJBQTZCO1lBQzVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyw2QkFBNkI7WUFDdEQsSUFBSSxDQUFDLG1CQUFtQjtZQUN4QixJQUFJLENBQUMsd0JBQXdCO1lBQzdCLElBQUksQ0FBQyxRQUFRO1lBQ2IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGFBQWE7WUFDeEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHdCQUF3QjtTQUNsRCxDQUFDLENBQUMsSUFBSSxDQUNMLE1BQU0sQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUMsRUFBRSxFQUFFLENBQUMsNkJBQTZCLEtBQUssS0FBSyxDQUFDLEVBQ3BGLEdBQUcsQ0FDRCxDQUFDLENBQ0MsQ0FBQyxFQUNELGdCQUFnQixFQUNoQiw2QkFBNkIsRUFDN0IsNkJBQTZCLEVBQzdCLGtCQUFrQixFQUNsQixzQkFBc0IsRUFDdEIsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsRUFDeEIsRUFBRSxFQUFFLENBQ0gsSUFBSSxDQUFDLGlCQUFpQixDQUNwQiw2QkFBNkIsRUFDN0IsdUJBQXVCLElBQUksNkJBQTZCLEVBQ3hELGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsc0JBQXNCLEVBQ3RCLE1BQU0sRUFDTixZQUFZLENBQ2IsQ0FDSixFQUNELG9CQUFvQixDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQ3JGLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNYLElBQUksTUFBTSxDQUFDLHNCQUFzQjtnQkFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMseUJBQXlCLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxDQUFDLEVBQUMsTUFBTSxFQUFDLEVBQUUsRUFBRSxDQUNyQixhQUFhLENBQUM7WUFDWixJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUMvQixNQUFNLENBQUMsZ0JBQWdCLEVBQ3ZCLE1BQU0sQ0FBQyxNQUFNLEVBQ2IsTUFBTSxDQUFDLGtCQUFrQixFQUN6QixNQUFNLENBQUMsWUFBWSxDQUNwQjtZQUNELEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDO1NBQ2hDLENBQUMsQ0FDSCxFQUNELFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FDdkMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FDN0QsRUFDRCxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLENBQUMsRUFBRSxFQUFFO1lBQ2hGLElBQUksQ0FBQyxxQ0FBcUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7WUFFN0UsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUN6QixXQUFXLEVBQ1gsVUFBVSxFQUNWLHNCQUFzQixFQUN0QixzQkFBc0IsQ0FDdkIsQ0FBQztRQUNKLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1lBRS9CLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDOUUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FDbEMsWUFBWSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3RFLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUNILENBQUM7UUFFYywwQkFBcUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUMxRCwrQkFBMEIsR0FBRyxJQUFJLGVBQWUsQ0FBUyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFN0UsbUJBQWMsR0FBMkIsYUFBYSxDQUFDO1lBQ3JFLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLEVBQUU7WUFDeEMsSUFBSSxDQUFDLDBCQUEwQjtZQUMvQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUNwQyxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMscUJBQXFCLEVBQUUsd0JBQXdCLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDekQ7Z0JBQ0UsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUM7Z0JBQzVELEVBQUUsRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDckIsUUFBUSxFQUFFLHdCQUF3QixLQUFLLElBQUksQ0FBQyxZQUFZO2FBQ3pEO1lBQ0QsR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMxRCxFQUFFLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxDQUFDLElBQUk7Z0JBQzlCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsS0FBSztnQkFDMUMsUUFBUSxFQUFFLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssd0JBQXdCO2FBQ2xFLENBQUMsQ0FBQztTQUNKLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNsRCxDQUFDO1FBRWMsNEJBQXVCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLHVCQUF1QixDQUFDO1FBRTdFLHlCQUFvQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQztRQUN2RSxrQkFBYSxHQUMzQixJQUFJLENBQUMscUJBQXFCLENBQUMsYUFBYSxDQUFDO1FBRTFCLDRCQUF1QixHQUFrQjtZQUN4RCxXQUFXLENBQUMsSUFBSTtZQUNoQixXQUFXLENBQUMsSUFBSTtZQUNoQixXQUFXLENBQUMsR0FBRztTQUNoQixDQUFDO1FBRWMsaUNBQTRCLEdBQUcsSUFBSSxlQUFlLENBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLG1DQUE4QixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFnQmxFLENBQUM7SUFFRyxRQUFRO1FBQ2IsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLElBQVksRUFBRSxJQUEwQjtRQUMvRCxJQUFJLENBQUMseUJBQXlCLENBQUMsb0JBQW9CLENBQUMsSUFBbUIsRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsQ0FBQyxFQUFDLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRU0sYUFBYSxDQUFDLE9BQWU7UUFDbEMsYUFBYSxDQUFDO1lBQ1osSUFBSSxDQUFDLHlCQUF5QixDQUFDLDZCQUE2QjtZQUM1RCxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQjtTQUN2QyxDQUFDO2FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNiLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLEVBQUUsRUFBRTtZQUM1QyxJQUFJLENBQUMseUJBQXlCLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3BFLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDO2dCQUNyQixJQUFJLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLG9CQUFvQixDQUN2RCxVQUFVLENBQUMsSUFBSSxFQUNmLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFDZixVQUFVLENBQUMsY0FBYyxDQUMxQjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFNBQVMsQ0FBQyxHQUF5QjtRQUN4QyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUNoRixJQUFJLGdCQUFnQixLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFrQixDQUFDLENBQUM7Z0JBQzdELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFrQixFQUFFLEVBQUMsSUFBSSxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7WUFDckYsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUFpQixFQUFFLEtBQWE7UUFDckQsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN0RCxNQUFNLFdBQVcsR0FBRyxXQUFXLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXRELElBQUksV0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLENBQUMsZUFBZTtxQkFDakIsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7cUJBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ2IsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQzt3QkFDbkIsYUFBYSxRQUFRLENBQUMsWUFBWSxFQUFFLElBQUksYUFBYSxXQUFXLENBQUMsV0FBVyxFQUFFO3FCQUMvRSxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsSUFBSTtRQUMxQixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDeEYsQ0FBQztJQUVNLFdBQVcsQ0FBQyxTQUFvQjtRQUNyQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxVQUFnQztRQUN2RCxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7SUFDSCxDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTSxNQUFNLENBQUMsaUJBQW9DO1FBQ2hELElBQUksQ0FBQyxpQkFBaUI7WUFBRSxPQUFPO1FBRS9CLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTyxxQ0FBcUMsQ0FBQyxpQkFBeUI7UUFDckUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLDZCQUE2QjthQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLHlCQUF5QixDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3pGLGNBQWMsRUFBRSxNQUFNLENBQUMsaUJBQWlCLENBQUM7Z0JBQ3pDLElBQUksRUFBRSxJQUFJLENBQUMseUJBQXlCLENBQUMsb0JBQW9CLENBQ3ZELGlCQUFpQixDQUFDLElBQUksRUFDdEIsaUJBQWlCLENBQUMsSUFBSSxFQUN0QixpQkFBaUIsQ0FDbEI7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxjQUFjO1FBQ3BCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLG1CQUFtQixDQUFDO1FBRW5FLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxlQUFlLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsQ0FBQztJQUNILENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVPLGlCQUFpQixDQUN2Qiw2QkFBNkMsRUFDN0MsNkJBQXFDLEVBQ3JDLGdCQUE2QixFQUM3QixrQkFBMEIsRUFDMUIsc0JBQStCLEVBQy9CLE1BQWUsRUFDZixZQUFtQztRQUVuQyxNQUFNLE1BQU0sR0FBRztZQUNiLEdBQUcsNkJBQTZCO1lBQ2hDLEdBQUcsQ0FBQyw2QkFBNkIsSUFBSSxFQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBQyxDQUFDO1NBQzVFLENBQUM7UUFFRixPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUM7UUFFN0IsT0FBTztZQUNMLE1BQU0sRUFBRTtnQkFDTixNQUFNO2dCQUNOLGdCQUFnQjtnQkFDaEIsTUFBTTtnQkFDTixHQUFHLENBQUMsa0JBQWtCLElBQUksa0JBQWtCLEtBQUssSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFDLGtCQUFrQixFQUFDLENBQUM7Z0JBQzNGLEdBQUcsQ0FBQyxZQUFZLElBQUksRUFBQyxZQUFZLEVBQUMsQ0FBQzthQUNwQztZQUNELHNCQUFzQjtTQUN2QixDQUFDO0lBQ0osQ0FBQztJQUVPLDZCQUE2QixDQUNuQyxXQUE2QyxFQUM3QyxXQUFvQjtRQUVwQixNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDO1FBQ3hDLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFNUUsT0FBTyxhQUFhLENBQUM7WUFDbkIsRUFBRSxDQUFDLFdBQVcsQ0FBQztZQUNmLEVBQUUsQ0FBQyxXQUFXLENBQUM7WUFDZixjQUFjO2dCQUNaLENBQUMsQ0FBQyxhQUFhLENBQ1gsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsd0JBQXdCLEVBQUU7b0JBQ2pFLFFBQVEsRUFBRSwrQkFBK0IsQ0FBQyxJQUFJO29CQUM5QyxVQUFVLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFFLElBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFFLElBQXNCLENBQUMsRUFBRTtpQkFDMUUsQ0FBQyxDQUNILENBQ0Y7Z0JBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDWixjQUFjO2dCQUNaLENBQUMsQ0FBQyxhQUFhLENBQ1gsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsd0JBQXdCLEVBQUU7b0JBQ2pFLFFBQVEsRUFBRSwrQkFBK0IsQ0FBQyxrQkFBa0I7b0JBQzVELFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVztpQkFDN0IsQ0FBQyxDQUNILENBQ0Y7Z0JBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sZUFBZSxDQUNyQixXQUFvQixFQUNwQixLQUF1QyxFQUN2QyxzQkFBd0MsRUFDeEMsc0JBQXdDO1FBRXhDLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixDQUFDO1FBRTFDLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEIsT0FBUSxLQUE2QixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxDQUN0RixhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDeEIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FDWixDQUFDO2dCQUNDLEVBQUUsRUFBRSxhQUFhLENBQUMsRUFBRTtnQkFDcEIsV0FBVyxFQUFFLGFBQWEsQ0FBQyxXQUFXO2dCQUN0QyxpQkFBaUIsRUFBRSxhQUFhLENBQUMsaUJBQWlCO2dCQUNsRCxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUk7Z0JBQ3hCLEdBQUcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJO29CQUM3QyxPQUFPLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO2lCQUM3RCxDQUFDO2dCQUNGLEdBQUcsQ0FBQyxzQkFBc0IsSUFBSSxFQUFDLE1BQU0sRUFBRSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDLEVBQUMsQ0FBQztnQkFDcEYsR0FBRyxDQUFDLHNCQUFzQixJQUFJO29CQUM1QixVQUFVLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQztpQkFDeEQsQ0FBQztnQkFDRixHQUFHLEdBQUc7Z0JBQ04sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUs7YUFDdkIsQ0FBd0IsRUFDM0IsRUFBRSxDQUNILENBQ3VCLENBQUM7UUFDN0IsQ0FBQztRQUVELE9BQVEsS0FBb0IsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFO1lBQzdELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQyxNQUFNLFFBQVEsR0FBRyxFQUFDLEdBQUcsSUFBSSxFQUFDLENBQUM7WUFFM0IsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUU7Z0JBQUUsUUFBUSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2hGLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRTtnQkFBRSxRQUFRLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDaEYsSUFBSSxzQkFBc0I7Z0JBQUUsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pGLElBQUksc0JBQXNCO2dCQUFFLFFBQVEsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUVyRixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQVcsQ0FBQztJQUNmLENBQUM7SUFFTyx3QkFBd0I7UUFDOUIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFFOUUsSUFBSSxhQUFhLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQzdFLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDekUsQ0FBQztRQUVELElBQUksYUFBYSxDQUFDLFlBQVksRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDM0MsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsNEJBQTRCLENBQy9FLGFBQWEsQ0FBQyxZQUFZLENBQzNCLENBQUM7WUFDRixJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDNUQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsOEJBQThCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCxJQUFJLGFBQWEsQ0FBQyxnQkFBZ0I7WUFDaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUzRSxJQUFJLGFBQWEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7WUFDL0IsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsMEJBQTBCLENBQzdFLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUMxQixDQUFDO1lBQ0YsSUFBSSxtQkFBbUI7Z0JBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLG9CQUFvQixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDOUYsQ0FBQztRQUVELElBQUksYUFBYSxDQUFDLE1BQU07WUFDdEIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLG9CQUFvQixDQUNqRCxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixFQUNyQyxhQUFhLENBQUMsTUFBTSxDQUNyQixDQUFDO0lBQ04sQ0FBQzsrR0E3YlUsaUJBQWlCO21HQUFqQixpQkFBaUIsOEdBVGpCO1lBQ1QsZUFBZTtZQUNmLHFCQUFxQjtZQUNyQix5QkFBeUI7WUFDekIsbUJBQW1CO1lBQ25CLHFCQUFxQjtZQUNyQix5QkFBeUI7U0FDMUIscUlDbkZILDJ0TkFrTkE7OzRGRDdIYSxpQkFBaUI7a0JBZjdCLFNBQVM7K0JBQ0UsbUJBQW1CLGlCQUdkLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1QsZUFBZTt3QkFDZixxQkFBcUI7d0JBQ3JCLHlCQUF5Qjt3QkFDekIsbUJBQW1CO3dCQUNuQixxQkFBcUI7d0JBQ3JCLHlCQUF5QjtxQkFDMUI7cWRBR3lDLFdBQVc7c0JBQXBELFNBQVM7dUJBQUMsWUFBWTtnQkFHZixVQUFVO3NCQURqQixZQUFZO3VCQUFDLGlCQUFpQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdExpc3RlbmVyLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7VGFza1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Rhc2suc2VydmljZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge1xuICBNYXBwZWRTcGVjaWZpZWRUYXNrLFxuICBTcGVjaWZpZWRUYXNrLFxuICBUYXNrLFxuICBUYXNrTGlzdE90aGVyRmlsdGVycyxcbiAgVGFza0xpc3RQYXJhbXMsXG4gIFRhc2tQYWdlUGFyYW1zLFxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtUYXNrRGV0YWlsTW9kYWxDb21wb25lbnR9IGZyb20gJy4uL3Rhc2stZGV0YWlsLW1vZGFsL3Rhc2stZGV0YWlsLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIENvbmZpZ1NlcnZpY2UsXG4gIFBhZ2UsXG4gIFNlYXJjaEZpZWxkLFxuICBTZWFyY2hGaWVsZFZhbHVlcyxcbiAgU29ydFN0YXRlLFxuICBUYXNrTGlzdFRhYixcbn0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7RG9jdW1lbnRTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5pbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtQZXJtaXNzaW9uU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vYWNjZXNzLWNvbnRyb2wnO1xuaW1wb3J0IHtcbiAgQ0FOX1ZJRVdfQ0FTRV9QRVJNSVNTSU9OLFxuICBDQU5fVklFV19UQVNLX1BFUk1JU1NJT04sXG4gIFRBU0tfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UsXG59IGZyb20gJy4uLy4uL3Rhc2stcGVybWlzc2lvbnMnO1xuaW1wb3J0IHtcbiAgVGFza0xpc3RDb2x1bW5TZXJ2aWNlLFxuICBUYXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLFxuICBUYXNrTGlzdFF1ZXJ5UGFyYW1TZXJ2aWNlLFxuICBUYXNrTGlzdFNlYXJjaFNlcnZpY2UsXG4gIFRhc2tMaXN0U2VydmljZSxcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtpc0VxdWFsfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtMaXN0SXRlbX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtUYXNrTGlzdFNvcnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YXNrLWxpc3Qtc29ydC5zZXJ2aWNlJztcbmltcG9ydCB7Q2FyYm9uTGlzdE5vUmVzdWx0c01lc3NhZ2UsIFBhZ2VUaXRsZVNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtUQVNLX0xJU1RfTk9fU0VBUkNIX1JFU1VMVFNfTUVTU0FHRX0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcblxubW9tZW50LmxvY2FsZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ0tleScpIHx8ICcnKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby10YXNrLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFzay1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFzay1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBUYXNrTGlzdFNlcnZpY2UsXG4gICAgVGFza0xpc3RDb2x1bW5TZXJ2aWNlLFxuICAgIFRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2UsXG4gICAgVGFza0xpc3RTb3J0U2VydmljZSxcbiAgICBUYXNrTGlzdFNlYXJjaFNlcnZpY2UsXG4gICAgVGFza0xpc3RRdWVyeVBhcmFtU2VydmljZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFza0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ3Rhc2tEZXRhaWwnKSBwcml2YXRlIHJlYWRvbmx5IF90YXNrRGV0YWlsOiBUYXNrRGV0YWlsTW9kYWxDb21wb25lbnQ7XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnBvcHN0YXRlJywgWyckZXZlbnQnXSlcbiAgcHJpdmF0ZSBvblBvcFN0YXRlKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZXRQYXJhbXNGcm9tUXVlcnlQYXJhbXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBBTExfQ0FTRVNfSUQgPSB0aGlzLnRhc2tMaXN0U2VydmljZS5BTExfQ0FTRVNfSUQ7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkVGFza1R5cGUkID0gdGhpcy50YXNrTGlzdFNlcnZpY2Uuc2VsZWN0ZWRUYXNrVHlwZSQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb3ZlcnJpZGVOb1Jlc3VsdHNNZXNzYWdlJCA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxDYXJib25MaXN0Tm9SZXN1bHRzTWVzc2FnZSB8IG51bGw+KG51bGwpO1xuXG4gIHB1YmxpYyByZWFkb25seSBub1Jlc3VsdHNNZXNzYWdlJDogT2JzZXJ2YWJsZTxDYXJib25MaXN0Tm9SZXN1bHRzTWVzc2FnZT4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLnNlbGVjdGVkVGFza1R5cGUkLFxuICAgIHRoaXMuX292ZXJyaWRlTm9SZXN1bHRzTWVzc2FnZSQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFtzZWxlY3RlZFRhc2tUeXBlLCBvdmVycmlkZU5vUmVzdWx0c01lc3NhZ2VdKSA9PlxuICAgICAgICBvdmVycmlkZU5vUmVzdWx0c01lc3NhZ2UgfHwge1xuICAgICAgICAgIHRpdGxlOiAndGFzay1saXN0LicgKyBzZWxlY3RlZFRhc2tUeXBlICsgJy5ub1Jlc3VsdHNUaXRsZScsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICd0YXNrLWxpc3QuJyArIHNlbGVjdGVkVGFza1R5cGUgKyAnLm5vUmVzdWx0c0Rlc2NyaXB0aW9uJyxcbiAgICAgICAgICBpc1NlYXJjaFJlc3VsdDogZmFsc2UsXG4gICAgICAgIH1cbiAgICApXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZpZWxkcyQgPSB0aGlzLnRhc2tMaXN0Q29sdW1uU2VydmljZS5maWVsZHMkO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZ1Rhc2tzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHB1YmxpYyByZWFkb25seSB2aXNpYmxlVGFicyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PFRhc2tMaXN0VGFiPiB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgX2VuYWJsZUxvYWRpbmdBbmltYXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY2FjaGVkVGFza3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYXNrW10gfCBNYXBwZWRTcGVjaWZpZWRUYXNrW10gfCBudWxsPihudWxsKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcGFnaW5hdGlvbkZvckN1cnJlbnRUYXNrVHlwZUZvckxpc3QkID1cbiAgICB0aGlzLnRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2UucGFnaW5hdGlvbkZvckN1cnJlbnRUYXNrVHlwZUZvckxpc3QkO1xuXG4gIHB1YmxpYyByZWFkb25seSBzb3J0U3RhdGVGb3JDdXJyZW50VGFza1R5cGUkID1cbiAgICB0aGlzLnRhc2tMaXN0U29ydFNlcnZpY2Uuc29ydFN0YXRlRm9yQ3VycmVudFRhc2tUeXBlJDtcblxuICBwdWJsaWMgcmVhZG9ubHkgb3ZlcnJpZGVTb3J0U3RhdGUkID0gdGhpcy50YXNrTGlzdFNvcnRTZXJ2aWNlLm92ZXJyaWRlU29ydFN0YXRlJDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9yZWxvYWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY2FzZURlZmluaXRpb25OYW1lJCA9IHRoaXMudGFza0xpc3RTZXJ2aWNlLmNhc2VEZWZpbml0aW9uTmFtZSQ7XG5cbiAgcHVibGljIHJlYWRvbmx5IHRhc2tzJDogT2JzZXJ2YWJsZTxUYXNrW10gfCBNYXBwZWRTcGVjaWZpZWRUYXNrW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy50YXNrTGlzdFNlcnZpY2UubG9hZGluZ1N0YXRlRm9yQ2FzZURlZmluaXRpb24kLFxuICAgIHRoaXMuc2VsZWN0ZWRUYXNrVHlwZSQsXG4gICAgdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLnBhZ2luYXRpb25Gb3JDdXJyZW50VGFza1R5cGUkLFxuICAgIHRoaXMudGFza0xpc3RTb3J0U2VydmljZS5zb3J0U3RyaW5nRm9yQ3VycmVudFRhc2tUeXBlJCxcbiAgICB0aGlzLmNhc2VEZWZpbml0aW9uTmFtZSQsXG4gICAgdGhpcy5fZW5hYmxlTG9hZGluZ0FuaW1hdGlvbiQsXG4gICAgdGhpcy5fcmVsb2FkJCxcbiAgICB0aGlzLnRhc2tMaXN0U2VhcmNoU2VydmljZS5vdGhlckZpbHRlcnMkLFxuICAgIHRoaXMudGFza0xpc3RTb3J0U2VydmljZS5vdmVycmlkZVNvcnRTdGF0ZVN0cmluZyQsXG4gIF0pLnBpcGUoXG4gICAgZmlsdGVyKChbbG9hZGluZ1N0YXRlRm9yQ2FzZURlZmluaXRpb25dKSA9PiBsb2FkaW5nU3RhdGVGb3JDYXNlRGVmaW5pdGlvbiA9PT0gZmFsc2UpLFxuICAgIG1hcChcbiAgICAgIChbXG4gICAgICAgIF8sXG4gICAgICAgIHNlbGVjdGVkVGFza1R5cGUsXG4gICAgICAgIHBhZ2luYXRpb25Gb3JTZWxlY3RlZFRhc2tUeXBlLFxuICAgICAgICBzb3J0U3RyaW5nRm9yU2VsZWN0ZWRUYXNrVHlwZSxcbiAgICAgICAgY2FzZURlZmluaXRpb25OYW1lLFxuICAgICAgICBlbmFibGVMb2FkaW5nQW5pbWF0aW9uLFxuICAgICAgICByZWxvYWQsXG4gICAgICAgIG90aGVyRmlsdGVycyxcbiAgICAgICAgb3ZlcnJpZGVTb3J0U3RhdGVTdHJpbmcsXG4gICAgICBdKSA9PlxuICAgICAgICB0aGlzLmdldFRhc2tMaXN0UGFyYW1zKFxuICAgICAgICAgIHBhZ2luYXRpb25Gb3JTZWxlY3RlZFRhc2tUeXBlLFxuICAgICAgICAgIG92ZXJyaWRlU29ydFN0YXRlU3RyaW5nIHx8IHNvcnRTdHJpbmdGb3JTZWxlY3RlZFRhc2tUeXBlLFxuICAgICAgICAgIHNlbGVjdGVkVGFza1R5cGUsXG4gICAgICAgICAgY2FzZURlZmluaXRpb25OYW1lLFxuICAgICAgICAgIGVuYWJsZUxvYWRpbmdBbmltYXRpb24sXG4gICAgICAgICAgcmVsb2FkLFxuICAgICAgICAgIG90aGVyRmlsdGVyc1xuICAgICAgICApXG4gICAgKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldmlvdXMsIGN1cnJlbnQpID0+IGlzRXF1YWwocHJldmlvdXMucGFyYW1zLCBjdXJyZW50LnBhcmFtcykpLFxuICAgIHRhcChwYXJhbXMgPT4ge1xuICAgICAgaWYgKHBhcmFtcy5lbmFibGVMb2FkaW5nQW5pbWF0aW9uKSB0aGlzLmxvYWRpbmdUYXNrcyQubmV4dCh0cnVlKTtcbiAgICAgIHRoaXMudGFza0xpc3RRdWVyeVBhcmFtU2VydmljZS5zZXRUYXNrTGlzdFBhcmFtcyhwYXJhbXMucGFyYW1zKTtcbiAgICB9KSxcbiAgICBzd2l0Y2hNYXAoKHtwYXJhbXN9KSA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMudGFza1NlcnZpY2UucXVlcnlUYXNrc1BhZ2VWMyhcbiAgICAgICAgICBwYXJhbXMuc2VsZWN0ZWRUYXNrVHlwZSxcbiAgICAgICAgICBwYXJhbXMucGFyYW1zLFxuICAgICAgICAgIHBhcmFtcy5jYXNlRGVmaW5pdGlvbk5hbWUsXG4gICAgICAgICAgcGFyYW1zLm90aGVyRmlsdGVyc1xuICAgICAgICApLFxuICAgICAgICBvZighIXBhcmFtcy5jYXNlRGVmaW5pdGlvbk5hbWUpLFxuICAgICAgXSlcbiAgICApLFxuICAgIHN3aXRjaE1hcCgoW3Rhc2tzUmVzdWx0LCBpc1NwZWNpZmllZF0pID0+XG4gICAgICB0aGlzLmdldFRhc2tMaXN0UGVybWlzc2lvbnNSZXF1ZXN0KHRhc2tzUmVzdWx0LCBpc1NwZWNpZmllZClcbiAgICApLFxuICAgIG1hcCgoW2lzU3BlY2lmaWVkLCB0YXNrUmVzdWx0LCBjYW5WaWV3VGFza1Blcm1pc3Npb25zLCBjYW5WaWV3Q2FzZVBlcm1pc3Npb25zXSkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVUYXNrTGlzdFBhZ2luYXRpb25BZnRlclJlc3BvbnNlKE51bWJlcih0YXNrUmVzdWx0LnRvdGFsRWxlbWVudHMpKTtcblxuICAgICAgcmV0dXJuIHRoaXMubWFwVGFza3NGb3JMaXN0KFxuICAgICAgICBpc1NwZWNpZmllZCxcbiAgICAgICAgdGFza1Jlc3VsdCxcbiAgICAgICAgY2FuVmlld1Rhc2tQZXJtaXNzaW9ucyxcbiAgICAgICAgY2FuVmlld0Nhc2VQZXJtaXNzaW9uc1xuICAgICAgKTtcbiAgICB9KSxcbiAgICB0YXAodGFza3MgPT4ge1xuICAgICAgdGhpcy5jYWNoZWRUYXNrcyQubmV4dCh0YXNrcyk7XG4gICAgICB0aGlzLmxvYWRpbmdUYXNrcyQubmV4dChmYWxzZSk7XG4gICAgICB0aGlzLmRpc2FibGVMb2FkaW5nQW5pbWF0aW9uKCk7XG5cbiAgICAgIHRoaXMudGFza0xpc3RTZWFyY2hTZXJ2aWNlLm90aGVyRmlsdGVycyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUob3RoZXJGaWx0ZXJzID0+IHtcbiAgICAgICAgdGhpcy5fb3ZlcnJpZGVOb1Jlc3VsdHNNZXNzYWdlJC5uZXh0KFxuICAgICAgICAgIG90aGVyRmlsdGVycz8ubGVuZ3RoID4gMCA/IFRBU0tfTElTVF9OT19TRUFSQ0hfUkVTVUxUU19NRVNTQUdFIDogbnVsbFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZ0Nhc2VMaXN0SXRlbXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPih0aGlzLkFMTF9DQVNFU19JRCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNhc2VMaXN0SXRlbXMkOiBPYnNlcnZhYmxlPExpc3RJdGVtW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0QWxsRGVmaW5pdGlvbnMoKSxcbiAgICB0aGlzLl9zZWxlY3RlZENhc2VEZWZpbml0aW9uSWQkLFxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2RvY3VtZW50RGVmaW5pdGlvblJlcywgc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkXSkgPT4gW1xuICAgICAge1xuICAgICAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgndGFzay1saXN0LmFsbENhc2VzJyksXG4gICAgICAgIGlkOiB0aGlzLkFMTF9DQVNFU19JRCxcbiAgICAgICAgc2VsZWN0ZWQ6IHNlbGVjdGVkQ2FzZURlZmluaXRpb25JZCA9PT0gdGhpcy5BTExfQ0FTRVNfSUQsXG4gICAgICB9LFxuICAgICAgLi4uZG9jdW1lbnREZWZpbml0aW9uUmVzLmNvbnRlbnQubWFwKGRvY3VtZW50RGVmaW5pdGlvbiA9PiAoe1xuICAgICAgICBpZDogZG9jdW1lbnREZWZpbml0aW9uLmlkLm5hbWUsXG4gICAgICAgIGNvbnRlbnQ6IGRvY3VtZW50RGVmaW5pdGlvbj8uc2NoZW1hPy50aXRsZSxcbiAgICAgICAgc2VsZWN0ZWQ6IGRvY3VtZW50RGVmaW5pdGlvbi5pZC5uYW1lID09PSBzZWxlY3RlZENhc2VEZWZpbml0aW9uSWQsXG4gICAgICB9KSksXG4gICAgXSksXG4gICAgdGFwKCgpID0+IHRoaXMubG9hZGluZ0Nhc2VMaXN0SXRlbXMkLm5leHQoZmFsc2UpKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSB0YXNrTGlzdENvbHVtbnNGb3JDYXNlJCA9IHRoaXMudGFza0xpc3RDb2x1bW5TZXJ2aWNlLnRhc2tMaXN0Q29sdW1uc0ZvckNhc2UkO1xuXG4gIHB1YmxpYyByZWFkb25seSBsb2FkaW5nU2VhcmNoRmllbGRzJCA9IHRoaXMudGFza0xpc3RTZWFyY2hTZXJ2aWNlLmxvYWRpbmdTZWFyY2hGaWVsZHMkO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VhcmNoRmllbGRzJDogT2JzZXJ2YWJsZTxTZWFyY2hGaWVsZFtdPiA9XG4gICAgdGhpcy50YXNrTGlzdFNlYXJjaFNlcnZpY2Uuc2VhcmNoRmllbGRzJDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9ERUZBVUxUX1RBU0tfTElTVF9UQUJTOiBUYXNrTGlzdFRhYltdID0gW1xuICAgIFRhc2tMaXN0VGFiLk1JTkUsXG4gICAgVGFza0xpc3RUYWIuT1BFTixcbiAgICBUYXNrTGlzdFRhYi5BTEwsXG4gIF07XG5cbiAgcHVibGljIHJlYWRvbmx5IHNldFNlYXJjaEZpZWxkVmFsdWVzU3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlYXJjaEZpZWxkVmFsdWVzPih7fSk7XG4gIHB1YmxpYyByZWFkb25seSBjbGVhclNlYXJjaEZpZWxkVmFsdWVzU3ViamVjdCQgPSBuZXcgU3ViamVjdDxudWxsPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGVybWlzc2lvblNlcnZpY2U6IFBlcm1pc3Npb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrU2VydmljZTogVGFza1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrTGlzdFNlcnZpY2U6IFRhc2tMaXN0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrTGlzdENvbHVtblNlcnZpY2U6IFRhc2tMaXN0Q29sdW1uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2U6IFRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrTGlzdFNvcnRTZXJ2aWNlOiBUYXNrTGlzdFNvcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGFza0xpc3RTZWFyY2hTZXJ2aWNlOiBUYXNrTGlzdFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrTGlzdFF1ZXJ5UGFyYW1TZXJ2aWNlOiBUYXNrTGlzdFF1ZXJ5UGFyYW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnZVRpdGxlU2VydmljZTogUGFnZVRpdGxlU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGFza0xpc3RDb2x1bW5TZXJ2aWNlLnJlc2V0VGFza0xpc3RGaWVsZHMoKTtcbiAgICB0aGlzLnNldFZpc2libGVUYWJzKCk7XG4gICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLmRpc2FibGVSZXNldCgpO1xuICAgIHRoaXMuc2V0UGFyYW1zRnJvbVF1ZXJ5UGFyYW1zKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLmVuYWJsZVJlc2V0KCk7XG4gIH1cblxuICBwdWJsaWMgcGFnaW5hdGlvbkNsaWNrZWQocGFnZTogbnVtYmVyLCB0eXBlOiBUYXNrTGlzdFRhYiB8IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudGFza0xpc3RQYWdpbmF0aW9uU2VydmljZS51cGRhdGVUYXNrUGFnaW5hdGlvbih0eXBlIGFzIFRhc2tMaXN0VGFiLCB7cGFnZTogcGFnZSAtIDF9KTtcbiAgfVxuXG4gIHB1YmxpYyBwYWdpbmF0aW9uU2V0KG5ld1NpemU6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLnBhZ2luYXRpb25Gb3JDdXJyZW50VGFza1R5cGUkLFxuICAgICAgdGhpcy50YXNrTGlzdFNlcnZpY2Uuc2VsZWN0ZWRUYXNrVHlwZSQsXG4gICAgXSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChbcGFnaW5hdGlvbiwgc2VsZWN0ZWRUYXNrVHlwZV0pID0+IHtcbiAgICAgICAgdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLnVwZGF0ZVRhc2tQYWdpbmF0aW9uKHNlbGVjdGVkVGFza1R5cGUsIHtcbiAgICAgICAgICBzaXplOiBOdW1iZXIobmV3U2l6ZSksXG4gICAgICAgICAgcGFnZTogdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLmdldExhc3RBdmFpbGFibGVQYWdlKFxuICAgICAgICAgICAgcGFnaW5hdGlvbi5wYWdlLFxuICAgICAgICAgICAgTnVtYmVyKG5ld1NpemUpLFxuICAgICAgICAgICAgcGFnaW5hdGlvbi5jb2xsZWN0aW9uU2l6ZVxuICAgICAgICAgICksXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdGFiQ2hhbmdlKHRhYjogVGFza0xpc3RUYWIgfCBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRhc2tMaXN0U2VydmljZS5zZWxlY3RlZFRhc2tUeXBlJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShzZWxlY3RlZFRhc2tUeXBlID0+IHtcbiAgICAgIGlmIChzZWxlY3RlZFRhc2tUeXBlICE9PSB0YWIpIHtcbiAgICAgICAgdGhpcy5lbmFibGVMb2FkaW5nQW5pbWF0aW9uKCk7XG4gICAgICAgIHRoaXMudGFza0xpc3RTZXJ2aWNlLnNldFNlbGVjdGVkVGFza1R5cGUodGFiIGFzIFRhc2tMaXN0VGFiKTtcbiAgICAgICAgdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLnVwZGF0ZVRhc2tQYWdpbmF0aW9uKHRhYiBhcyBUYXNrTGlzdFRhYiwge3BhZ2U6IDB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuUmVsYXRlZENhc2UoZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRoaXMuY2FjaGVkVGFza3MkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGNhY2hlZFRhc2tzID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRUYXNrID0gY2FjaGVkVGFza3MgJiYgY2FjaGVkVGFza3NbaW5kZXhdO1xuXG4gICAgICBpZiAoY3VycmVudFRhc2sgJiYgIWN1cnJlbnRUYXNrLmNhc2VMb2NrZWQpIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2VcbiAgICAgICAgICAuZ2V0RG9jdW1lbnQoY3VycmVudFRhc2suYnVzaW5lc3NLZXkpXG4gICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKGRvY3VtZW50ID0+IHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcbiAgICAgICAgICAgICAgYC9kb3NzaWVycy8ke2RvY3VtZW50LmRlZmluaXRpb25JZD8ubmFtZX0vZG9jdW1lbnQvJHtjdXJyZW50VGFzay5idXNpbmVzc0tleX1gLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcm93T3BlblRhc2tDbGljayh0YXNrKTogdm9pZCB8IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGFzay5lbmRUaW1lICYmICF0YXNrLmxvY2tlZCA/IHRoaXMuX3Rhc2tEZXRhaWwub3BlblRhc2tEZXRhaWxzKHRhc2spIDogZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgc29ydENoYW5nZWQoc29ydFN0YXRlOiBTb3J0U3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnRhc2tMaXN0U29ydFNlcnZpY2Uuc2V0T3ZlcnJpZGVTb3J0U3RhdGUoc29ydFN0YXRlKTtcbiAgICB0aGlzLnRhc2tMaXN0U29ydFNlcnZpY2UudXBkYXRlU29ydFN0YXRlKHRoaXMudGFza0xpc3RTZXJ2aWNlLnNlbGVjdGVkVGFza1R5cGUsIHNvcnRTdGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q2FzZURlZmluaXRpb24oZGVmaW5pdGlvbjoge2l0ZW06IHtpZDogc3RyaW5nfX0pOiB2b2lkIHtcbiAgICBpZiAoZGVmaW5pdGlvbi5pdGVtLmlkKSB7XG4gICAgICB0aGlzLnRhc2tMaXN0U29ydFNlcnZpY2UucmVzZXRPdmVycmlkZVNvcnRTdGF0ZSgpO1xuICAgICAgdGhpcy5sb2FkaW5nVGFza3MkLm5leHQodHJ1ZSk7XG4gICAgICB0aGlzLnRhc2tMaXN0U2VydmljZS5zZXRDYXNlRGVmaW5pdGlvbk5hbWUoZGVmaW5pdGlvbi5pdGVtLmlkKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVsb2FkKCk6IHZvaWQge1xuICAgIHRoaXMuZW5hYmxlTG9hZGluZ0FuaW1hdGlvbigpO1xuICAgIHRoaXMuX3JlbG9hZCQubmV4dCghdGhpcy5fcmVsb2FkJC5nZXRWYWx1ZSgpKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2goc2VhcmNoRmllbGRWYWx1ZXM6IFNlYXJjaEZpZWxkVmFsdWVzKTogdm9pZCB7XG4gICAgaWYgKCFzZWFyY2hGaWVsZFZhbHVlcykgcmV0dXJuO1xuXG4gICAgdGhpcy50YXNrTGlzdFNlYXJjaFNlcnZpY2Uuc2V0U2VhcmNoRmllbGRWYWx1ZXMoc2VhcmNoRmllbGRWYWx1ZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUYXNrTGlzdFBhZ2luYXRpb25BZnRlclJlc3BvbnNlKG5ld0NvbGxlY3Rpb25TaXplOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2UucGFnaW5hdGlvbkZvckN1cnJlbnRUYXNrVHlwZSRcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKGN1cnJlbnRQYWdpbmF0aW9uID0+IHtcbiAgICAgICAgdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLnVwZGF0ZVRhc2tQYWdpbmF0aW9uKHRoaXMudGFza0xpc3RTZXJ2aWNlLnNlbGVjdGVkVGFza1R5cGUsIHtcbiAgICAgICAgICBjb2xsZWN0aW9uU2l6ZTogTnVtYmVyKG5ld0NvbGxlY3Rpb25TaXplKSxcbiAgICAgICAgICBwYWdlOiB0aGlzLnRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2UuZ2V0TGFzdEF2YWlsYWJsZVBhZ2UoXG4gICAgICAgICAgICBjdXJyZW50UGFnaW5hdGlvbi5wYWdlLFxuICAgICAgICAgICAgY3VycmVudFBhZ2luYXRpb24uc2l6ZSxcbiAgICAgICAgICAgIG5ld0NvbGxlY3Rpb25TaXplXG4gICAgICAgICAgKSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmlzaWJsZVRhYnMoKTogdm9pZCB7XG4gICAgY29uc3QgdmlzaWJsZVRhYnMgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnPy52aXNpYmxlVGFza0xpc3RUYWJzO1xuXG4gICAgaWYgKHZpc2libGVUYWJzKSB7XG4gICAgICB0aGlzLnZpc2libGVUYWJzJC5uZXh0KHZpc2libGVUYWJzKTtcbiAgICAgIHRoaXMudGFza0xpc3RTZXJ2aWNlLnNldFNlbGVjdGVkVGFza1R5cGUodmlzaWJsZVRhYnNbMF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZpc2libGVUYWJzJC5uZXh0KHRoaXMuX0RFRkFVTFRfVEFTS19MSVNUX1RBQlMpO1xuICAgICAgdGhpcy50YXNrTGlzdFNlcnZpY2Uuc2V0U2VsZWN0ZWRUYXNrVHlwZSh0aGlzLl9ERUZBVUxUX1RBU0tfTElTVF9UQUJTWzBdKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGVMb2FkaW5nQW5pbWF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2VuYWJsZUxvYWRpbmdBbmltYXRpb24kLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmFibGVMb2FkaW5nQW5pbWF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2VuYWJsZUxvYWRpbmdBbmltYXRpb24kLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldFRhc2tMaXN0UGFyYW1zKFxuICAgIHBhZ2luYXRpb25Gb3JTZWxlY3RlZFRhc2tUeXBlOiBUYXNrUGFnZVBhcmFtcyxcbiAgICBzb3J0U3RyaW5nRm9yU2VsZWN0ZWRUYXNrVHlwZTogc3RyaW5nLFxuICAgIHNlbGVjdGVkVGFza1R5cGU6IFRhc2tMaXN0VGFiLFxuICAgIGNhc2VEZWZpbml0aW9uTmFtZTogc3RyaW5nLFxuICAgIGVuYWJsZUxvYWRpbmdBbmltYXRpb246IGJvb2xlYW4sXG4gICAgcmVsb2FkOiBib29sZWFuLFxuICAgIG90aGVyRmlsdGVycz86IFRhc2tMaXN0T3RoZXJGaWx0ZXJzXG4gICk6IFRhc2tMaXN0UGFyYW1zIHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAuLi5wYWdpbmF0aW9uRm9yU2VsZWN0ZWRUYXNrVHlwZSxcbiAgICAgIC4uLihzb3J0U3RyaW5nRm9yU2VsZWN0ZWRUYXNrVHlwZSAmJiB7c29ydDogc29ydFN0cmluZ0ZvclNlbGVjdGVkVGFza1R5cGV9KSxcbiAgICB9O1xuXG4gICAgZGVsZXRlIHBhcmFtcy5jb2xsZWN0aW9uU2l6ZTtcblxuICAgIHJldHVybiB7XG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgcmVsb2FkLFxuICAgICAgICBzZWxlY3RlZFRhc2tUeXBlLFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIC4uLihjYXNlRGVmaW5pdGlvbk5hbWUgJiYgY2FzZURlZmluaXRpb25OYW1lICE9PSB0aGlzLkFMTF9DQVNFU19JRCAmJiB7Y2FzZURlZmluaXRpb25OYW1lfSksXG4gICAgICAgIC4uLihvdGhlckZpbHRlcnMgJiYge290aGVyRmlsdGVyc30pLFxuICAgICAgfSxcbiAgICAgIGVuYWJsZUxvYWRpbmdBbmltYXRpb24sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGFza0xpc3RQZXJtaXNzaW9uc1JlcXVlc3QoXG4gICAgdGFza3NSZXN1bHQ6IFBhZ2U8VGFzaz4gfCBQYWdlPFNwZWNpZmllZFRhc2s+LFxuICAgIGlzU3BlY2lmaWVkOiBib29sZWFuXG4gICkge1xuICAgIGNvbnN0IHRhc2tSZXN1bHRzID0gdGFza3NSZXN1bHQuY29udGVudDtcbiAgICBjb25zdCBoYXNUYXNrUmVzdWx0cyA9IEFycmF5LmlzQXJyYXkodGFza1Jlc3VsdHMpICYmIHRhc2tSZXN1bHRzLmxlbmd0aCA+IDA7XG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICBvZihpc1NwZWNpZmllZCksXG4gICAgICBvZih0YXNrc1Jlc3VsdCksXG4gICAgICBoYXNUYXNrUmVzdWx0c1xuICAgICAgICA/IGNvbWJpbmVMYXRlc3QoXG4gICAgICAgICAgICB0YXNrUmVzdWx0cy5tYXAodGFzayA9PlxuICAgICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9WSUVXX1RBU0tfUEVSTUlTU0lPTiwge1xuICAgICAgICAgICAgICAgIHJlc291cmNlOiBUQVNLX0RFVEFJTF9QRVJNSVNTSU9OX1JFU09VUkNFLnRhc2ssXG4gICAgICAgICAgICAgICAgaWRlbnRpZmllcjogIWlzU3BlY2lmaWVkID8gKHRhc2sgYXMgVGFzaykuaWQgOiAodGFzayBhcyBTcGVjaWZpZWRUYXNrKS5pZCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIDogb2YobnVsbCksXG4gICAgICBoYXNUYXNrUmVzdWx0c1xuICAgICAgICA/IGNvbWJpbmVMYXRlc3QoXG4gICAgICAgICAgICB0YXNrUmVzdWx0cy5tYXAodGFzayA9PlxuICAgICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9WSUVXX0NBU0VfUEVSTUlTU0lPTiwge1xuICAgICAgICAgICAgICAgIHJlc291cmNlOiBUQVNLX0RFVEFJTF9QRVJNSVNTSU9OX1JFU09VUkNFLmpzb25TY2hlbWFEb2N1bWVudCxcbiAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiB0YXNrLmJ1c2luZXNzS2V5LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgOiBvZihudWxsKSxcbiAgICBdKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwVGFza3NGb3JMaXN0KFxuICAgIGlzU3BlY2lmaWVkOiBib29sZWFuLFxuICAgIHRhc2tzOiBQYWdlPFRhc2s+IHwgUGFnZTxTcGVjaWZpZWRUYXNrPixcbiAgICBjYW5WaWV3VGFza1Blcm1pc3Npb25zOiBib29sZWFuW10gfCBudWxsLFxuICAgIGNhblZpZXdDYXNlUGVybWlzc2lvbnM6IGJvb2xlYW5bXSB8IG51bGxcbiAgKTogVGFza1tdIHwgTWFwcGVkU3BlY2lmaWVkVGFza1tdIHtcbiAgICBjb25zdCBNT01FTlRfRk9STUFUID0gJ0REIE1NTSBZWVlZIEhIOm1tJztcblxuICAgIGlmIChpc1NwZWNpZmllZCkge1xuICAgICAgcmV0dXJuICh0YXNrcyBhcyBQYWdlPFNwZWNpZmllZFRhc2s+KS5jb250ZW50Lm1hcCgoc3BlY2lmaWVkVGFzaywgc3BlY2lmaWVkVGFza0luZGV4KSA9PlxuICAgICAgICBzcGVjaWZpZWRUYXNrLml0ZW1zLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXJyKSA9PlxuICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgaWQ6IHNwZWNpZmllZFRhc2suaWQsXG4gICAgICAgICAgICAgIGJ1c2luZXNzS2V5OiBzcGVjaWZpZWRUYXNrLmJ1c2luZXNzS2V5LFxuICAgICAgICAgICAgICBwcm9jZXNzSW5zdGFuY2VJZDogc3BlY2lmaWVkVGFzay5wcm9jZXNzSW5zdGFuY2VJZCxcbiAgICAgICAgICAgICAgbmFtZTogc3BlY2lmaWVkVGFzay5uYW1lLFxuICAgICAgICAgICAgICAuLi4obW9tZW50KHNwZWNpZmllZFRhc2suY3JlYXRlZCkuaXNWYWxpZCgpICYmIHtcbiAgICAgICAgICAgICAgICBjcmVhdGVkOiBtb21lbnQoc3BlY2lmaWVkVGFzay5jcmVhdGVkKS5mb3JtYXQoTU9NRU5UX0ZPUk1BVCksXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAuLi4oY2FuVmlld1Rhc2tQZXJtaXNzaW9ucyAmJiB7bG9ja2VkOiAhY2FuVmlld1Rhc2tQZXJtaXNzaW9uc1tzcGVjaWZpZWRUYXNrSW5kZXhdfSksXG4gICAgICAgICAgICAgIC4uLihjYW5WaWV3Q2FzZVBlcm1pc3Npb25zICYmIHtcbiAgICAgICAgICAgICAgICBjYXNlTG9ja2VkOiAhY2FuVmlld0Nhc2VQZXJtaXNzaW9uc1tzcGVjaWZpZWRUYXNrSW5kZXhdLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICBbY3Vyci5rZXldOiBjdXJyLnZhbHVlLFxuICAgICAgICAgICAgfSkgYXMgTWFwcGVkU3BlY2lmaWVkVGFzayxcbiAgICAgICAgICB7fVxuICAgICAgICApXG4gICAgICApIGFzIE1hcHBlZFNwZWNpZmllZFRhc2tbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gKHRhc2tzIGFzIFBhZ2U8VGFzaz4pPy5jb250ZW50Py5tYXAoKHRhc2ssIHRhc2tJbmRleCkgPT4ge1xuICAgICAgY29uc3QgY3JlYXRlZERhdGUgPSBtb21lbnQodGFzay5jcmVhdGVkKTtcbiAgICAgIGNvbnN0IGR1ZURhdGUgPSBtb21lbnQodGFzay5kdWUpO1xuICAgICAgY29uc3QgdGFza0NvcHkgPSB7Li4udGFza307XG5cbiAgICAgIGlmICh0YXNrLmR1ZSAmJiBkdWVEYXRlLmlzVmFsaWQoKSkgdGFza0NvcHkuZHVlID0gZHVlRGF0ZS5mb3JtYXQoTU9NRU5UX0ZPUk1BVCk7XG4gICAgICBpZiAoY3JlYXRlZERhdGUuaXNWYWxpZCgpKSB0YXNrQ29weS5jcmVhdGVkID0gY3JlYXRlZERhdGUuZm9ybWF0KE1PTUVOVF9GT1JNQVQpO1xuICAgICAgaWYgKGNhblZpZXdUYXNrUGVybWlzc2lvbnMpIHRhc2tDb3B5LmxvY2tlZCA9ICFjYW5WaWV3VGFza1Blcm1pc3Npb25zW3Rhc2tJbmRleF07XG4gICAgICBpZiAoY2FuVmlld0Nhc2VQZXJtaXNzaW9ucykgdGFza0NvcHkuY2FzZUxvY2tlZCA9ICFjYW5WaWV3Q2FzZVBlcm1pc3Npb25zW3Rhc2tJbmRleF07XG5cbiAgICAgIHJldHVybiB0YXNrQ29weTtcbiAgICB9KSBhcyBUYXNrW107XG4gIH1cblxuICBwcml2YXRlIHNldFBhcmFtc0Zyb21RdWVyeVBhcmFtcygpOiB2b2lkIHtcbiAgICBjb25zdCBkZWNvZGVkUGFyYW1zID0gdGhpcy50YXNrTGlzdFF1ZXJ5UGFyYW1TZXJ2aWNlLmdldFRhc2tMaXN0UXVlcnlQYXJhbXMoKTtcblxuICAgIGlmIChkZWNvZGVkUGFyYW1zLmNhc2VEZWZpbml0aW9uTmFtZSkge1xuICAgICAgdGhpcy50YXNrTGlzdFNlcnZpY2Uuc2V0Q2FzZURlZmluaXRpb25OYW1lKGRlY29kZWRQYXJhbXMuY2FzZURlZmluaXRpb25OYW1lKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkQ2FzZURlZmluaXRpb25JZCQubmV4dChkZWNvZGVkUGFyYW1zLmNhc2VEZWZpbml0aW9uTmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKGRlY29kZWRQYXJhbXMub3RoZXJGaWx0ZXJzPy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzZWFyY2hGaWVsZFZhbHVlcyA9IHRoaXMudGFza0xpc3RTZWFyY2hTZXJ2aWNlLm1hcE90aGVyRmlsdGVyVG9TZWFyY2hWYWx1ZXMoXG4gICAgICAgIGRlY29kZWRQYXJhbXMub3RoZXJGaWx0ZXJzXG4gICAgICApO1xuICAgICAgdGhpcy5zZXRTZWFyY2hGaWVsZFZhbHVlc1N1YmplY3QkLm5leHQoc2VhcmNoRmllbGRWYWx1ZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFyU2VhcmNoRmllbGRWYWx1ZXNTdWJqZWN0JC5uZXh0KG51bGwpO1xuICAgIH1cblxuICAgIGlmIChkZWNvZGVkUGFyYW1zLnNlbGVjdGVkVGFza1R5cGUpXG4gICAgICB0aGlzLnRhc2tMaXN0U2VydmljZS5zZXRTZWxlY3RlZFRhc2tUeXBlKGRlY29kZWRQYXJhbXMuc2VsZWN0ZWRUYXNrVHlwZSk7XG5cbiAgICBpZiAoZGVjb2RlZFBhcmFtcy5wYXJhbXM/LnNvcnQpIHtcbiAgICAgIGNvbnN0IHN0YXRlRnJvbVNvcnRTdHJpbmcgPSB0aGlzLnRhc2tMaXN0U29ydFNlcnZpY2UuZ2V0U29ydFN0YXRlRnJvbVNvcnRTdHJpbmcoXG4gICAgICAgIGRlY29kZWRQYXJhbXMucGFyYW1zLnNvcnRcbiAgICAgICk7XG4gICAgICBpZiAoc3RhdGVGcm9tU29ydFN0cmluZykgdGhpcy50YXNrTGlzdFNvcnRTZXJ2aWNlLnNldE92ZXJyaWRlU29ydFN0YXRlKHN0YXRlRnJvbVNvcnRTdHJpbmcpO1xuICAgIH1cblxuICAgIGlmIChkZWNvZGVkUGFyYW1zLnBhcmFtcylcbiAgICAgIHRoaXMudGFza0xpc3RQYWdpbmF0aW9uU2VydmljZS51cGRhdGVUYXNrUGFnaW5hdGlvbihcbiAgICAgICAgdGhpcy50YXNrTGlzdFNlcnZpY2Uuc2VsZWN0ZWRUYXNrVHlwZSxcbiAgICAgICAgZGVjb2RlZFBhcmFtcy5wYXJhbXNcbiAgICAgICk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGRpdlxuICAqbmdJZj1cIntcbiAgICBsb2FkaW5nOiBsb2FkaW5nVGFza3MkIHwgYXN5bmMsXG4gICAgc2VsZWN0ZWRUYXNrVHlwZTogc2VsZWN0ZWRUYXNrVHlwZSQgfCBhc3luYyxcbiAgICB0YXNrczogdGFza3MkIHwgYXN5bmMsXG4gICAgZmllbGRzOiBmaWVsZHMkIHwgYXN5bmMsXG4gICAgdmlzaWJsZVRhYnM6IHZpc2libGVUYWJzJCB8IGFzeW5jLFxuICAgIHBhZ2luYXRpb246IHBhZ2luYXRpb25Gb3JDdXJyZW50VGFza1R5cGVGb3JMaXN0JCB8IGFzeW5jLFxuICAgIHRhc2tMaXN0Q29sdW1uc0ZvckNhc2U6IHRhc2tMaXN0Q29sdW1uc0ZvckNhc2UkIHwgYXN5bmMsXG4gICAgc29ydFN0YXRlOiBzb3J0U3RhdGVGb3JDdXJyZW50VGFza1R5cGUkIHwgYXN5bmMsXG4gICAgb3ZlcnJpZGVTb3J0U3RhdGU6IG92ZXJyaWRlU29ydFN0YXRlJCB8IGFzeW5jLFxuICAgIHNlYXJjaEZpZWxkczogc2VhcmNoRmllbGRzJCB8IGFzeW5jLFxuICAgIGxvYWRpbmdTZWFyY2hGaWVsZHM6IGxvYWRpbmdTZWFyY2hGaWVsZHMkIHwgYXN5bmMsXG4gICAgY2FzZURlZmluaXRpb25OYW1lOiBjYXNlRGVmaW5pdGlvbk5hbWUkIHwgYXN5bmMsXG4gICAgbm9SZXN1bHRzTWVzc2FnZTogbm9SZXN1bHRzTWVzc2FnZSQgfCBhc3luY1xuICB9IGFzIG9ic1wiXG4gIGNsYXNzPVwibWFpbi1jb250ZW50XCJcbj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxuICAgIEBpZiAob2JzLmNhc2VEZWZpbml0aW9uTmFtZSAmJiBvYnMuY2FzZURlZmluaXRpb25OYW1lICE9PSBBTExfQ0FTRVNfSUQpIHtcbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICBzZWFyY2hGaWVsZHM7XG4gICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgb2JzOiBvYnNcbiAgICAgICAgICB9XG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgfVxuXG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgdGFza3NMaXN0O1xuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgb2JzOiBvYnNcbiAgICAgICAgfVxuICAgICAgXCJcbiAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICB0YXNrc0xpc3RMb2FkaW5nO1xuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgb2JzOiBvYnNcbiAgICAgICAgfVxuICAgICAgXCJcbiAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICA8dmFsdGltby10YXNrLWRldGFpbC1tb2RhbFxuICAgICAgI3Rhc2tEZXRhaWxcbiAgICAgIChmb3JtU3VibWl0KT1cInJlbG9hZCgpXCJcbiAgICAgIChhc3NpZ25tZW50T2ZUYXNrQ2hhbmdlZCk9XCJyZWxvYWQoKVwiXG4gICAgPjwvdmFsdGltby10YXNrLWRldGFpbC1tb2RhbD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjb25maWd1cmVkVGFicyBsZXQtc2VsZWN0ZWRUYXNrVHlwZT1cInNlbGVjdGVkVGFza1R5cGVcIiBsZXQtdmlzaWJsZVRhYnM9XCJ2aXNpYmxlVGFic1wiPlxuICA8Y2RzLXRhYnMgKm5nSWY9XCJ2aXNpYmxlVGFic1wiIHR5cGU9XCJjb250YWluZWRcIiBjbGFzcz1cInZhbHRpbW8tY2FyYm9uLWxpc3RfX3RhYnNcIj5cbiAgICA8Y2RzLXRhYlxuICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiB2aXNpYmxlVGFic1wiXG4gICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCIndGFzay1saXN0LXRhYi0nICsgdGFiXCJcbiAgICAgIFtoZWFkaW5nXT1cIid0YXNrLWxpc3QuJyArIHRhYiArICcudGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFthY3RpdmVdPVwic2VsZWN0ZWRUYXNrVHlwZSA9PT0gdGFiXCJcbiAgICAgIChzZWxlY3RlZCk9XCJ0YWJDaGFuZ2UodGFiKVwiXG4gICAgPjwvY2RzLXRhYj5cbiAgPC9jZHMtdGFicz5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY2FzZUxpbmsgbGV0LWRhdGE9XCJkYXRhXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYWNoZWRUYXNrcyQgfCBhc3luYyBhcyBjYWNoZWRUYXNrc1wiPlxuICAgIDxkaXYgKm5nSWY9XCJjYWNoZWRUYXNrc1tkYXRhLmluZGV4XS5jYXNlTG9ja2VkXCI+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz1cImZsb2F0LWxlZnQgY2RzLS1saW5rLS1kaXNhYmxlZFwiXG4gICAgICAgIGNkc0xpbmtcbiAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXG4gICAgICAgIG5nYlRvb2x0aXA9XCJ7eyAndGFzay1saXN0LmNhc2VMb2NrZWQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICA+XG4gICAgICAgIHt7ICd0YXNrLWxpc3QuZ29Ub0Nhc2UnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiFjYWNoZWRUYXNrc1tkYXRhLmluZGV4XS5jYXNlTG9ja2VkXCI+XG4gICAgICA8YVxuICAgICAgICBjbGFzcz1cImZsb2F0LWxlZnQgY2RzLS1saW5rXCJcbiAgICAgICAgY2RzTGlua1xuICAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcbiAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWxhdGVkQ2FzZSgkZXZlbnQsIGRhdGEuaW5kZXgpXCJcbiAgICAgID5cbiAgICAgICAge3sgJ3Rhc2stbGlzdC5nb1RvQ2FzZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3Rhc2tzTGlzdCBsZXQtb2JzPVwib2JzXCI+XG4gIDx2YWx0aW1vLWNhcmJvbi1saXN0XG4gICAgKm5nSWY9XCIhb2JzLmxvYWRpbmdcIlxuICAgIFtmaWVsZHNdPVwib2JzLmZpZWxkc1wiXG4gICAgW2hlYWRlcl09XCJmYWxzZVwiXG4gICAgW2l0ZW1zXT1cIm9icy50YXNrc1wiXG4gICAgW2xhc3RDb2x1bW5UZW1wbGF0ZV09XCJjYXNlTGlua1wiXG4gICAgW3BhZ2luYXRpb25dPVwib2JzLnBhZ2luYXRpb25cIlxuICAgIHBhZ2luYXRpb25JZGVudGlmaWVyPVwidGFza0xpc3RcIlxuICAgIGxvY2tlZFRvb2x0aXBUcmFuc2xhdGlvbktleT1cInRhc2stbGlzdC5yb3dMb2NrZWRcIlxuICAgIFtzb3J0U3RhdGVdPVwib2JzLm92ZXJyaWRlU29ydFN0YXRlIHx8IG9icy5zb3J0U3RhdGVcIlxuICAgIChwYWdpbmF0aW9uQ2xpY2tlZCk9XCJwYWdpbmF0aW9uQ2xpY2tlZCgkZXZlbnQsIG9icy5zZWxlY3RlZFRhc2tUeXBlKVwiXG4gICAgKHBhZ2luYXRpb25TZXQpPVwicGFnaW5hdGlvblNldCgkZXZlbnQpXCJcbiAgICAocm93Q2xpY2tlZCk9XCJyb3dPcGVuVGFza0NsaWNrKCRldmVudClcIlxuICAgIChzb3J0Q2hhbmdlZCk9XCJzb3J0Q2hhbmdlZCgkZXZlbnQpXCJcbiAgPlxuICAgIDxkaXYgdGFicz5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvYnMudmlzaWJsZVRhYnNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICBjb25maWd1cmVkVGFicztcbiAgICAgICAgICAgIGNvbnRleHQ6IHtzZWxlY3RlZFRhc2tUeXBlOiBvYnMuc2VsZWN0ZWRUYXNrVHlwZSwgdmlzaWJsZVRhYnM6IG9icy52aXNpYmxlVGFic31cbiAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICAgIFtkZXNjcmlwdGlvbl09XCJvYnMubm9SZXN1bHRzTWVzc2FnZS5kZXNjcmlwdGlvbiB8IHRyYW5zbGF0ZVwiXG4gICAgICBbdGl0bGVdPVwib2JzLm5vUmVzdWx0c01lc3NhZ2UudGl0bGUgfCB0cmFuc2xhdGVcIlxuICAgID5cbiAgICA8L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgPC92YWx0aW1vLWNhcmJvbi1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0YXNrc0xpc3RMb2FkaW5nIGxldC1vYnM9XCJvYnNcIj5cbiAgPHZhbHRpbW8tY2FyYm9uLWxpc3QgKm5nSWY9XCJvYnMubG9hZGluZ1wiIFtsb2FkaW5nXT1cInRydWVcIj5cbiAgICA8ZGl2IHRhYnM+XG4gICAgICA8Y2RzLXRhYnMgKm5nSWY9XCIhb2JzLnZpc2libGVUYWJzXCIgdHlwZT1cImNvbnRhaW5lZFwiIGNsYXNzPVwidmFsdGltby1jYXJib24tbGlzdF9fdGFic1wiPlxuICAgICAgICA8Y2RzLXRhYlxuICAgICAgICAgIFtoZWFkaW5nXT1cIid0YXNrLWxpc3QubWluZS50aXRsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFthY3RpdmVdPVwib2JzLnNlbGVjdGVkVGFza1R5cGUgPT09ICdtaW5lJ1wiXG4gICAgICAgID5cbiAgICAgICAgPC9jZHMtdGFiPlxuXG4gICAgICAgIDxjZHMtdGFiXG4gICAgICAgICAgW2hlYWRpbmddPVwiJ3Rhc2stbGlzdC5vcGVuLnRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2FjdGl2ZV09XCJvYnMuc2VsZWN0ZWRUYXNrVHlwZSA9PT0gJ29wZW4nXCJcbiAgICAgICAgPlxuICAgICAgICA8L2Nkcy10YWI+XG5cbiAgICAgICAgPGNkcy10YWJcbiAgICAgICAgICBbaGVhZGluZ109XCIndGFzay1saXN0LmFsbC50aXRsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFthY3RpdmVdPVwib2JzLnNlbGVjdGVkVGFza1R5cGUgPT09ICdhbGwnXCJcbiAgICAgICAgPlxuICAgICAgICA8L2Nkcy10YWI+XG4gICAgICA8L2Nkcy10YWJzPlxuXG4gICAgICA8Y2RzLXRhYnMgKm5nSWY9XCJvYnMudmlzaWJsZVRhYnNcIiB0eXBlPVwiY29udGFpbmVkXCIgY2xhc3M9XCJ2YWx0aW1vLWNhcmJvbi1saXN0X190YWJzXCI+XG4gICAgICAgIDxjZHMtdGFiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiBvYnMudmlzaWJsZVRhYnNcIlxuICAgICAgICAgIFtoZWFkaW5nXT1cIid0YXNrLWxpc3QuJyArIHRhYiArICcudGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbYWN0aXZlXT1cIm9icy5zZWxlY3RlZFRhc2tUeXBlID09PSB0YWJcIlxuICAgICAgICA+PC9jZHMtdGFiPlxuICAgICAgPC9jZHMtdGFicz5cbiAgICA8L2Rpdj5cbiAgPC92YWx0aW1vLWNhcmJvbi1saXN0PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzZWFyY2hGaWVsZHMgbGV0LW9icz1cIm9ic1wiPlxuICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgIDx2YWx0aW1vLXNlYXJjaC1maWVsZHNcbiAgICAgIFtzZWFyY2hGaWVsZHNdPVwib2JzLnNlYXJjaEZpZWxkc1wiXG4gICAgICBbaW5wdXREaXNhYmxlZF09XCJvYnMubG9hZGluZ1NlYXJjaEZpZWxkc1wiXG4gICAgICBbZG9jdW1lbnREZWZpbml0aW9uTmFtZV09XCJvYnMuY2FzZURlZmluaXRpb25OYW1lXCJcbiAgICAgIFtzZXRWYWx1ZXNTdWJqZWN0JF09XCJzZXRTZWFyY2hGaWVsZFZhbHVlc1N1YmplY3QkXCJcbiAgICAgIFtjbGVhclZhbHVlc1N1YmplY3QkXT1cImNsZWFyU2VhcmNoRmllbGRWYWx1ZXNTdWJqZWN0JFwiXG4gICAgICAoZG9TZWFyY2gpPVwic2VhcmNoKCRldmVudClcIlxuICAgID5cbiAgICA8L3ZhbHRpbW8tc2VhcmNoLWZpZWxkcz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctY29udGFpbmVyIHJlbmRlckluUGFnZUhlYWRlciBbZnVsbFdpZHRoXT1cInRydWVcIj5cbiAgPG5nLXRlbXBsYXRlPlxuICAgIDxjZHMtZHJvcGRvd25cbiAgICAgIGNsYXNzPVwiY2FzZS1kZWZpbml0aW9uLXNlbGVjdGlvblwiXG4gICAgICAqbmdJZj1cIntcbiAgICAgICAgbG9hZGluZ0Nhc2VMaXN0SXRlbXM6IGxvYWRpbmdDYXNlTGlzdEl0ZW1zJCB8IGFzeW5jLFxuICAgICAgICBjYXNlTGlzdEl0ZW1zOiBjYXNlTGlzdEl0ZW1zJCB8IGFzeW5jXG4gICAgICB9IGFzIG9ic1wiXG4gICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCIndGFzay1saXN0LWNhc2UtZHJvcGRvd24nXCJcbiAgICAgIFtkaXNhYmxlZF09XCJvYnMubG9hZGluZ0Nhc2VMaXN0SXRlbXMgfHwgKG9icy5jYXNlTGlzdEl0ZW1zIHx8IFtdKS5sZW5ndGggPT09IDFcIlxuICAgICAgW3NrZWxldG9uXT1cIm9icy5sb2FkaW5nQ2FzZUxpc3RJdGVtc1wiXG4gICAgICAoc2VsZWN0ZWQpPVwic2V0Q2FzZURlZmluaXRpb24oJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGNkcy1kcm9wZG93bi1saXN0IFtpdGVtc109XCJvYnMuY2FzZUxpc3RJdGVtcyB8fCBbXVwiPjwvY2RzLWRyb3Bkb3duLWxpc3Q+XG4gICAgPC9jZHMtZHJvcGRvd24+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
360
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vdGFzay9zcmMvbGliL2NvbXBvbmVudHMvdGFzay1saXN0L3Rhc2stbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3Rhc2svc3JjL2xpYi9jb21wb25lbnRzL3Rhc2stbGlzdC90YXNrLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBR1osU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFVNUIsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdGLE9BQU8sRUFNTCxXQUFXLEdBQ1osTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUMsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RSxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLHdCQUF3QixFQUN4QiwrQkFBK0IsR0FDaEMsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHlCQUF5QixFQUN6Qix5QkFBeUIsRUFDekIscUJBQXFCLEVBQ3JCLGVBQWUsR0FDaEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sUUFBUSxDQUFDO0FBRy9CLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBRTFF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QUFpQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSG9zdExpc3RlbmVyLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7VGFza1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Rhc2suc2VydmljZSc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge1xuICBNYXBwZWRTcGVjaWZpZWRUYXNrLFxuICBTcGVjaWZpZWRUYXNrLFxuICBUYXNrLFxuICBUYXNrTGlzdE90aGVyRmlsdGVycyxcbiAgVGFza0xpc3RQYXJhbXMsXG4gIFRhc2tQYWdlUGFyYW1zLFxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtUYXNrRGV0YWlsTW9kYWxDb21wb25lbnR9IGZyb20gJy4uL3Rhc2stZGV0YWlsLW1vZGFsL3Rhc2stZGV0YWlsLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIENvbmZpZ1NlcnZpY2UsXG4gIFBhZ2UsXG4gIFNlYXJjaEZpZWxkLFxuICBTZWFyY2hGaWVsZFZhbHVlcyxcbiAgU29ydFN0YXRlLFxuICBUYXNrTGlzdFRhYixcbn0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7RG9jdW1lbnRTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5pbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtQZXJtaXNzaW9uU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vYWNjZXNzLWNvbnRyb2wnO1xuaW1wb3J0IHtcbiAgQ0FOX1ZJRVdfQ0FTRV9QRVJNSVNTSU9OLFxuICBDQU5fVklFV19UQVNLX1BFUk1JU1NJT04sXG4gIFRBU0tfREVUQUlMX1BFUk1JU1NJT05fUkVTT1VSQ0UsXG59IGZyb20gJy4uLy4uL3Rhc2stcGVybWlzc2lvbnMnO1xuaW1wb3J0IHtcbiAgVGFza0xpc3RDb2x1bW5TZXJ2aWNlLFxuICBUYXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLFxuICBUYXNrTGlzdFF1ZXJ5UGFyYW1TZXJ2aWNlLFxuICBUYXNrTGlzdFNlYXJjaFNlcnZpY2UsXG4gIFRhc2tMaXN0U2VydmljZSxcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtpc0VxdWFsfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtMaXN0SXRlbX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtUYXNrTGlzdFNvcnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YXNrLWxpc3Qtc29ydC5zZXJ2aWNlJztcbmltcG9ydCB7Q2FyYm9uTGlzdE5vUmVzdWx0c01lc3NhZ2UsIFBhZ2VUaXRsZVNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtUQVNLX0xJU1RfTk9fU0VBUkNIX1JFU1VMVFNfTUVTU0FHRX0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcblxubW9tZW50LmxvY2FsZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ0tleScpIHx8ICcnKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby10YXNrLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFzay1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFzay1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICBUYXNrTGlzdFNlcnZpY2UsXG4gICAgVGFza0xpc3RDb2x1bW5TZXJ2aWNlLFxuICAgIFRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2UsXG4gICAgVGFza0xpc3RTb3J0U2VydmljZSxcbiAgICBUYXNrTGlzdFNlYXJjaFNlcnZpY2UsXG4gICAgVGFza0xpc3RRdWVyeVBhcmFtU2VydmljZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFza0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ3Rhc2tEZXRhaWwnKSBwcml2YXRlIHJlYWRvbmx5IF90YXNrRGV0YWlsOiBUYXNrRGV0YWlsTW9kYWxDb21wb25lbnQ7XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnBvcHN0YXRlJywgWyckZXZlbnQnXSlcbiAgcHJpdmF0ZSBvblBvcFN0YXRlKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZXRQYXJhbXNGcm9tUXVlcnlQYXJhbXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBBTExfQ0FTRVNfSUQgPSB0aGlzLnRhc2tMaXN0U2VydmljZS5BTExfQ0FTRVNfSUQ7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkVGFza1R5cGUkID0gdGhpcy50YXNrTGlzdFNlcnZpY2Uuc2VsZWN0ZWRUYXNrVHlwZSQ7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb3ZlcnJpZGVOb1Jlc3VsdHNNZXNzYWdlJCA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxDYXJib25MaXN0Tm9SZXN1bHRzTWVzc2FnZSB8IG51bGw+KG51bGwpO1xuXG4gIHB1YmxpYyByZWFkb25seSBub1Jlc3VsdHNNZXNzYWdlJDogT2JzZXJ2YWJsZTxDYXJib25MaXN0Tm9SZXN1bHRzTWVzc2FnZT4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLnNlbGVjdGVkVGFza1R5cGUkLFxuICAgIHRoaXMuX292ZXJyaWRlTm9SZXN1bHRzTWVzc2FnZSQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFtzZWxlY3RlZFRhc2tUeXBlLCBvdmVycmlkZU5vUmVzdWx0c01lc3NhZ2VdKSA9PlxuICAgICAgICBvdmVycmlkZU5vUmVzdWx0c01lc3NhZ2UgfHwge1xuICAgICAgICAgIHRpdGxlOiAndGFzay1saXN0LicgKyBzZWxlY3RlZFRhc2tUeXBlICsgJy5ub1Jlc3VsdHNUaXRsZScsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICd0YXNrLWxpc3QuJyArIHNlbGVjdGVkVGFza1R5cGUgKyAnLm5vUmVzdWx0c0Rlc2NyaXB0aW9uJyxcbiAgICAgICAgICBpc1NlYXJjaFJlc3VsdDogZmFsc2UsXG4gICAgICAgIH1cbiAgICApXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZpZWxkcyQgPSB0aGlzLnRhc2tMaXN0Q29sdW1uU2VydmljZS5maWVsZHMkO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZ1Rhc2tzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHB1YmxpYyByZWFkb25seSB2aXNpYmxlVGFicyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PFRhc2tMaXN0VGFiPiB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgX2VuYWJsZUxvYWRpbmdBbmltYXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY2FjaGVkVGFza3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUYXNrW10gfCBNYXBwZWRTcGVjaWZpZWRUYXNrW10gfCBudWxsPihudWxsKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgcGFnaW5hdGlvbkZvckN1cnJlbnRUYXNrVHlwZUZvckxpc3QkID1cbiAgICB0aGlzLnRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2UucGFnaW5hdGlvbkZvckN1cnJlbnRUYXNrVHlwZUZvckxpc3QkO1xuXG4gIHB1YmxpYyByZWFkb25seSBzb3J0U3RhdGVGb3JDdXJyZW50VGFza1R5cGUkID1cbiAgICB0aGlzLnRhc2tMaXN0U29ydFNlcnZpY2Uuc29ydFN0YXRlRm9yQ3VycmVudFRhc2tUeXBlJDtcblxuICBwdWJsaWMgcmVhZG9ubHkgb3ZlcnJpZGVTb3J0U3RhdGUkID0gdGhpcy50YXNrTGlzdFNvcnRTZXJ2aWNlLm92ZXJyaWRlU29ydFN0YXRlJDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9yZWxvYWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY2FzZURlZmluaXRpb25OYW1lJCA9IHRoaXMudGFza0xpc3RTZXJ2aWNlLmNhc2VEZWZpbml0aW9uTmFtZSQ7XG5cbiAgcHVibGljIHJlYWRvbmx5IHRhc2tzJDogT2JzZXJ2YWJsZTxUYXNrW10gfCBNYXBwZWRTcGVjaWZpZWRUYXNrW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy50YXNrTGlzdFNlcnZpY2UubG9hZGluZ1N0YXRlRm9yQ2FzZURlZmluaXRpb24kLFxuICAgIHRoaXMuc2VsZWN0ZWRUYXNrVHlwZSQsXG4gICAgdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLnBhZ2luYXRpb25Gb3JDdXJyZW50VGFza1R5cGUkLFxuICAgIHRoaXMudGFza0xpc3RTb3J0U2VydmljZS5zb3J0U3RyaW5nRm9yQ3VycmVudFRhc2tUeXBlJCxcbiAgICB0aGlzLmNhc2VEZWZpbml0aW9uTmFtZSQsXG4gICAgdGhpcy5fZW5hYmxlTG9hZGluZ0FuaW1hdGlvbiQsXG4gICAgdGhpcy5fcmVsb2FkJCxcbiAgICB0aGlzLnRhc2tMaXN0U2VhcmNoU2VydmljZS5vdGhlckZpbHRlcnMkLFxuICAgIHRoaXMudGFza0xpc3RTb3J0U2VydmljZS5vdmVycmlkZVNvcnRTdGF0ZVN0cmluZyQsXG4gIF0pLnBpcGUoXG4gICAgZmlsdGVyKChbbG9hZGluZ1N0YXRlRm9yQ2FzZURlZmluaXRpb25dKSA9PiBsb2FkaW5nU3RhdGVGb3JDYXNlRGVmaW5pdGlvbiA9PT0gZmFsc2UpLFxuICAgIG1hcChcbiAgICAgIChbXG4gICAgICAgIF8sXG4gICAgICAgIHNlbGVjdGVkVGFza1R5cGUsXG4gICAgICAgIHBhZ2luYXRpb25Gb3JTZWxlY3RlZFRhc2tUeXBlLFxuICAgICAgICBzb3J0U3RyaW5nRm9yU2VsZWN0ZWRUYXNrVHlwZSxcbiAgICAgICAgY2FzZURlZmluaXRpb25OYW1lLFxuICAgICAgICBlbmFibGVMb2FkaW5nQW5pbWF0aW9uLFxuICAgICAgICByZWxvYWQsXG4gICAgICAgIG90aGVyRmlsdGVycyxcbiAgICAgICAgb3ZlcnJpZGVTb3J0U3RhdGVTdHJpbmcsXG4gICAgICBdKSA9PlxuICAgICAgICB0aGlzLmdldFRhc2tMaXN0UGFyYW1zKFxuICAgICAgICAgIHBhZ2luYXRpb25Gb3JTZWxlY3RlZFRhc2tUeXBlLFxuICAgICAgICAgIG92ZXJyaWRlU29ydFN0YXRlU3RyaW5nIHx8IHNvcnRTdHJpbmdGb3JTZWxlY3RlZFRhc2tUeXBlLFxuICAgICAgICAgIHNlbGVjdGVkVGFza1R5cGUsXG4gICAgICAgICAgY2FzZURlZmluaXRpb25OYW1lLFxuICAgICAgICAgIGVuYWJsZUxvYWRpbmdBbmltYXRpb24sXG4gICAgICAgICAgcmVsb2FkLFxuICAgICAgICAgIG90aGVyRmlsdGVyc1xuICAgICAgICApXG4gICAgKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldmlvdXMsIGN1cnJlbnQpID0+IGlzRXF1YWwocHJldmlvdXMucGFyYW1zLCBjdXJyZW50LnBhcmFtcykpLFxuICAgIHRhcChwYXJhbXMgPT4ge1xuICAgICAgaWYgKHBhcmFtcy5lbmFibGVMb2FkaW5nQW5pbWF0aW9uKSB0aGlzLmxvYWRpbmdUYXNrcyQubmV4dCh0cnVlKTtcbiAgICAgIHRoaXMudGFza0xpc3RRdWVyeVBhcmFtU2VydmljZS5zZXRUYXNrTGlzdFBhcmFtcyhwYXJhbXMucGFyYW1zKTtcbiAgICB9KSxcbiAgICBzd2l0Y2hNYXAoKHtwYXJhbXN9KSA9PlxuICAgICAgY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMudGFza1NlcnZpY2UucXVlcnlUYXNrc1BhZ2VWMyhcbiAgICAgICAgICBwYXJhbXMuc2VsZWN0ZWRUYXNrVHlwZSxcbiAgICAgICAgICBwYXJhbXMucGFyYW1zLFxuICAgICAgICAgIHBhcmFtcy5jYXNlRGVmaW5pdGlvbk5hbWUsXG4gICAgICAgICAgcGFyYW1zLm90aGVyRmlsdGVyc1xuICAgICAgICApLFxuICAgICAgICBvZighIXBhcmFtcy5jYXNlRGVmaW5pdGlvbk5hbWUpLFxuICAgICAgXSlcbiAgICApLFxuICAgIHN3aXRjaE1hcCgoW3Rhc2tzUmVzdWx0LCBpc1NwZWNpZmllZF0pID0+XG4gICAgICB0aGlzLmdldFRhc2tMaXN0UGVybWlzc2lvbnNSZXF1ZXN0KHRhc2tzUmVzdWx0LCBpc1NwZWNpZmllZClcbiAgICApLFxuICAgIG1hcCgoW2lzU3BlY2lmaWVkLCB0YXNrUmVzdWx0LCBjYW5WaWV3VGFza1Blcm1pc3Npb25zLCBjYW5WaWV3Q2FzZVBlcm1pc3Npb25zXSkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVUYXNrTGlzdFBhZ2luYXRpb25BZnRlclJlc3BvbnNlKE51bWJlcih0YXNrUmVzdWx0LnRvdGFsRWxlbWVudHMpKTtcblxuICAgICAgcmV0dXJuIHRoaXMubWFwVGFza3NGb3JMaXN0KFxuICAgICAgICBpc1NwZWNpZmllZCxcbiAgICAgICAgdGFza1Jlc3VsdCxcbiAgICAgICAgY2FuVmlld1Rhc2tQZXJtaXNzaW9ucyxcbiAgICAgICAgY2FuVmlld0Nhc2VQZXJtaXNzaW9uc1xuICAgICAgKTtcbiAgICB9KSxcbiAgICB0YXAodGFza3MgPT4ge1xuICAgICAgdGhpcy5jYWNoZWRUYXNrcyQubmV4dCh0YXNrcyk7XG4gICAgICB0aGlzLmxvYWRpbmdUYXNrcyQubmV4dChmYWxzZSk7XG4gICAgICB0aGlzLmRpc2FibGVMb2FkaW5nQW5pbWF0aW9uKCk7XG5cbiAgICAgIHRoaXMudGFza0xpc3RTZWFyY2hTZXJ2aWNlLm90aGVyRmlsdGVycyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUob3RoZXJGaWx0ZXJzID0+IHtcbiAgICAgICAgdGhpcy5fb3ZlcnJpZGVOb1Jlc3VsdHNNZXNzYWdlJC5uZXh0KFxuICAgICAgICAgIG90aGVyRmlsdGVycz8ubGVuZ3RoID4gMCA/IFRBU0tfTElTVF9OT19TRUFSQ0hfUkVTVUxUU19NRVNTQUdFIDogbnVsbFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZ0Nhc2VMaXN0SXRlbXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPih0aGlzLkFMTF9DQVNFU19JRCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNhc2VMaXN0SXRlbXMkOiBPYnNlcnZhYmxlPExpc3RJdGVtW10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5kb2N1bWVudFNlcnZpY2UuZ2V0QWxsRGVmaW5pdGlvbnMoKSxcbiAgICB0aGlzLl9zZWxlY3RlZENhc2VEZWZpbml0aW9uSWQkLFxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2RvY3VtZW50RGVmaW5pdGlvblJlcywgc2VsZWN0ZWRDYXNlRGVmaW5pdGlvbklkXSkgPT4gW1xuICAgICAge1xuICAgICAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgndGFzay1saXN0LmFsbENhc2VzJyksXG4gICAgICAgIGlkOiB0aGlzLkFMTF9DQVNFU19JRCxcbiAgICAgICAgc2VsZWN0ZWQ6IHNlbGVjdGVkQ2FzZURlZmluaXRpb25JZCA9PT0gdGhpcy5BTExfQ0FTRVNfSUQsXG4gICAgICB9LFxuICAgICAgLi4uZG9jdW1lbnREZWZpbml0aW9uUmVzLmNvbnRlbnQubWFwKGRvY3VtZW50RGVmaW5pdGlvbiA9PiAoe1xuICAgICAgICBpZDogZG9jdW1lbnREZWZpbml0aW9uLmlkLm5hbWUsXG4gICAgICAgIGNvbnRlbnQ6IGRvY3VtZW50RGVmaW5pdGlvbj8uc2NoZW1hPy50aXRsZSxcbiAgICAgICAgc2VsZWN0ZWQ6IGRvY3VtZW50RGVmaW5pdGlvbi5pZC5uYW1lID09PSBzZWxlY3RlZENhc2VEZWZpbml0aW9uSWQsXG4gICAgICB9KSksXG4gICAgXSksXG4gICAgdGFwKCgpID0+IHRoaXMubG9hZGluZ0Nhc2VMaXN0SXRlbXMkLm5leHQoZmFsc2UpKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSB0YXNrTGlzdENvbHVtbnNGb3JDYXNlJCA9IHRoaXMudGFza0xpc3RDb2x1bW5TZXJ2aWNlLnRhc2tMaXN0Q29sdW1uc0ZvckNhc2UkO1xuXG4gIHB1YmxpYyByZWFkb25seSBsb2FkaW5nU2VhcmNoRmllbGRzJCA9IHRoaXMudGFza0xpc3RTZWFyY2hTZXJ2aWNlLmxvYWRpbmdTZWFyY2hGaWVsZHMkO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VhcmNoRmllbGRzJDogT2JzZXJ2YWJsZTxTZWFyY2hGaWVsZFtdPiA9XG4gICAgdGhpcy50YXNrTGlzdFNlYXJjaFNlcnZpY2Uuc2VhcmNoRmllbGRzJDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9ERUZBVUxUX1RBU0tfTElTVF9UQUJTOiBUYXNrTGlzdFRhYltdID0gW1xuICAgIFRhc2tMaXN0VGFiLk1JTkUsXG4gICAgVGFza0xpc3RUYWIuT1BFTixcbiAgICBUYXNrTGlzdFRhYi5BTEwsXG4gIF07XG5cbiAgcHVibGljIHJlYWRvbmx5IHNldFNlYXJjaEZpZWxkVmFsdWVzU3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlYXJjaEZpZWxkVmFsdWVzPih7fSk7XG4gIHB1YmxpYyByZWFkb25seSBjbGVhclNlYXJjaEZpZWxkVmFsdWVzU3ViamVjdCQgPSBuZXcgU3ViamVjdDxudWxsPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50U2VydmljZTogRG9jdW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGVybWlzc2lvblNlcnZpY2U6IFBlcm1pc3Npb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrU2VydmljZTogVGFza1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrTGlzdFNlcnZpY2U6IFRhc2tMaXN0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrTGlzdENvbHVtblNlcnZpY2U6IFRhc2tMaXN0Q29sdW1uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2U6IFRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrTGlzdFNvcnRTZXJ2aWNlOiBUYXNrTGlzdFNvcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGFza0xpc3RTZWFyY2hTZXJ2aWNlOiBUYXNrTGlzdFNlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YXNrTGlzdFF1ZXJ5UGFyYW1TZXJ2aWNlOiBUYXNrTGlzdFF1ZXJ5UGFyYW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnZVRpdGxlU2VydmljZTogUGFnZVRpdGxlU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGFza0xpc3RDb2x1bW5TZXJ2aWNlLnJlc2V0VGFza0xpc3RGaWVsZHMoKTtcbiAgICB0aGlzLnNldFZpc2libGVUYWJzKCk7XG4gICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLmRpc2FibGVSZXNldCgpO1xuICAgIHRoaXMuc2V0UGFyYW1zRnJvbVF1ZXJ5UGFyYW1zKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLmVuYWJsZVJlc2V0KCk7XG4gIH1cblxuICBwdWJsaWMgcGFnaW5hdGlvbkNsaWNrZWQocGFnZTogbnVtYmVyLCB0eXBlOiBUYXNrTGlzdFRhYiB8IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudGFza0xpc3RQYWdpbmF0aW9uU2VydmljZS51cGRhdGVUYXNrUGFnaW5hdGlvbih0eXBlIGFzIFRhc2tMaXN0VGFiLCB7cGFnZTogcGFnZSAtIDF9KTtcbiAgfVxuXG4gIHB1YmxpYyBwYWdpbmF0aW9uU2V0KG5ld1NpemU6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLnBhZ2luYXRpb25Gb3JDdXJyZW50VGFza1R5cGUkLFxuICAgICAgdGhpcy50YXNrTGlzdFNlcnZpY2Uuc2VsZWN0ZWRUYXNrVHlwZSQsXG4gICAgXSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChbcGFnaW5hdGlvbiwgc2VsZWN0ZWRUYXNrVHlwZV0pID0+IHtcbiAgICAgICAgdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLnVwZGF0ZVRhc2tQYWdpbmF0aW9uKHNlbGVjdGVkVGFza1R5cGUsIHtcbiAgICAgICAgICBzaXplOiBOdW1iZXIobmV3U2l6ZSksXG4gICAgICAgICAgcGFnZTogdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLmdldExhc3RBdmFpbGFibGVQYWdlKFxuICAgICAgICAgICAgcGFnaW5hdGlvbi5wYWdlLFxuICAgICAgICAgICAgTnVtYmVyKG5ld1NpemUpLFxuICAgICAgICAgICAgcGFnaW5hdGlvbi5jb2xsZWN0aW9uU2l6ZVxuICAgICAgICAgICksXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdGFiQ2hhbmdlKHRhYjogVGFza0xpc3RUYWIgfCBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRhc2tMaXN0U2VydmljZS5zZWxlY3RlZFRhc2tUeXBlJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShzZWxlY3RlZFRhc2tUeXBlID0+IHtcbiAgICAgIGlmIChzZWxlY3RlZFRhc2tUeXBlICE9PSB0YWIpIHtcbiAgICAgICAgdGhpcy5lbmFibGVMb2FkaW5nQW5pbWF0aW9uKCk7XG4gICAgICAgIHRoaXMudGFza0xpc3RTZXJ2aWNlLnNldFNlbGVjdGVkVGFza1R5cGUodGFiIGFzIFRhc2tMaXN0VGFiKTtcbiAgICAgICAgdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLnVwZGF0ZVRhc2tQYWdpbmF0aW9uKHRhYiBhcyBUYXNrTGlzdFRhYiwge3BhZ2U6IDB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuUmVsYXRlZENhc2UoZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRoaXMuY2FjaGVkVGFza3MkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGNhY2hlZFRhc2tzID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRUYXNrID0gY2FjaGVkVGFza3MgJiYgY2FjaGVkVGFza3NbaW5kZXhdO1xuXG4gICAgICBpZiAoY3VycmVudFRhc2sgJiYgIWN1cnJlbnRUYXNrLmNhc2VMb2NrZWQpIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudFNlcnZpY2VcbiAgICAgICAgICAuZ2V0RG9jdW1lbnQoY3VycmVudFRhc2suYnVzaW5lc3NLZXkpXG4gICAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgICAuc3Vic2NyaWJlKGRvY3VtZW50ID0+IHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcbiAgICAgICAgICAgICAgYC9kb3NzaWVycy8ke2RvY3VtZW50LmRlZmluaXRpb25JZD8ubmFtZX0vZG9jdW1lbnQvJHtjdXJyZW50VGFzay5idXNpbmVzc0tleX1gLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcm93T3BlblRhc2tDbGljayh0YXNrKTogdm9pZCB8IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGFzay5lbmRUaW1lICYmICF0YXNrLmxvY2tlZCA/IHRoaXMuX3Rhc2tEZXRhaWwub3BlblRhc2tEZXRhaWxzKHRhc2spIDogZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgc29ydENoYW5nZWQoc29ydFN0YXRlOiBTb3J0U3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnRhc2tMaXN0U29ydFNlcnZpY2Uuc2V0T3ZlcnJpZGVTb3J0U3RhdGUoc29ydFN0YXRlKTtcbiAgICB0aGlzLnRhc2tMaXN0U29ydFNlcnZpY2UudXBkYXRlU29ydFN0YXRlKHRoaXMudGFza0xpc3RTZXJ2aWNlLnNlbGVjdGVkVGFza1R5cGUsIHNvcnRTdGF0ZSk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q2FzZURlZmluaXRpb24oZGVmaW5pdGlvbjoge2l0ZW06IHtpZDogc3RyaW5nfX0pOiB2b2lkIHtcbiAgICBpZiAoZGVmaW5pdGlvbi5pdGVtLmlkKSB7XG4gICAgICB0aGlzLnRhc2tMaXN0U29ydFNlcnZpY2UucmVzZXRPdmVycmlkZVNvcnRTdGF0ZSgpO1xuICAgICAgdGhpcy5sb2FkaW5nVGFza3MkLm5leHQodHJ1ZSk7XG4gICAgICB0aGlzLnRhc2tMaXN0U2VydmljZS5zZXRDYXNlRGVmaW5pdGlvbk5hbWUoZGVmaW5pdGlvbi5pdGVtLmlkKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVsb2FkKCk6IHZvaWQge1xuICAgIHRoaXMuZW5hYmxlTG9hZGluZ0FuaW1hdGlvbigpO1xuICAgIHRoaXMuX3JlbG9hZCQubmV4dCghdGhpcy5fcmVsb2FkJC5nZXRWYWx1ZSgpKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWFyY2goc2VhcmNoRmllbGRWYWx1ZXM6IFNlYXJjaEZpZWxkVmFsdWVzKTogdm9pZCB7XG4gICAgaWYgKCFzZWFyY2hGaWVsZFZhbHVlcykgcmV0dXJuO1xuXG4gICAgdGhpcy50YXNrTGlzdFNlYXJjaFNlcnZpY2Uuc2V0U2VhcmNoRmllbGRWYWx1ZXMoc2VhcmNoRmllbGRWYWx1ZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUYXNrTGlzdFBhZ2luYXRpb25BZnRlclJlc3BvbnNlKG5ld0NvbGxlY3Rpb25TaXplOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2UucGFnaW5hdGlvbkZvckN1cnJlbnRUYXNrVHlwZSRcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKGN1cnJlbnRQYWdpbmF0aW9uID0+IHtcbiAgICAgICAgdGhpcy50YXNrTGlzdFBhZ2luYXRpb25TZXJ2aWNlLnVwZGF0ZVRhc2tQYWdpbmF0aW9uKHRoaXMudGFza0xpc3RTZXJ2aWNlLnNlbGVjdGVkVGFza1R5cGUsIHtcbiAgICAgICAgICBjb2xsZWN0aW9uU2l6ZTogTnVtYmVyKG5ld0NvbGxlY3Rpb25TaXplKSxcbiAgICAgICAgICBwYWdlOiB0aGlzLnRhc2tMaXN0UGFnaW5hdGlvblNlcnZpY2UuZ2V0TGFzdEF2YWlsYWJsZVBhZ2UoXG4gICAgICAgICAgICBjdXJyZW50UGFnaW5hdGlvbi5wYWdlLFxuICAgICAgICAgICAgY3VycmVudFBhZ2luYXRpb24uc2l6ZSxcbiAgICAgICAgICAgIG5ld0NvbGxlY3Rpb25TaXplXG4gICAgICAgICAgKSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VmlzaWJsZVRhYnMoKTogdm9pZCB7XG4gICAgY29uc3QgdmlzaWJsZVRhYnMgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuY29uZmlnPy52aXNpYmxlVGFza0xpc3RUYWJzO1xuXG4gICAgaWYgKHZpc2libGVUYWJzKSB7XG4gICAgICB0aGlzLnZpc2libGVUYWJzJC5uZXh0KHZpc2libGVUYWJzKTtcbiAgICAgIHRoaXMudGFza0xpc3RTZXJ2aWNlLnNldFNlbGVjdGVkVGFza1R5cGUodmlzaWJsZVRhYnNbMF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZpc2libGVUYWJzJC5uZXh0KHRoaXMuX0RFRkFVTFRfVEFTS19MSVNUX1RBQlMpO1xuICAgICAgdGhpcy50YXNrTGlzdFNlcnZpY2Uuc2V0U2VsZWN0ZWRUYXNrVHlwZSh0aGlzLl9ERUZBVUxUX1RBU0tfTElTVF9UQUJTWzBdKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGVMb2FkaW5nQW5pbWF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2VuYWJsZUxvYWRpbmdBbmltYXRpb24kLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmFibGVMb2FkaW5nQW5pbWF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2VuYWJsZUxvYWRpbmdBbmltYXRpb24kLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldFRhc2tMaXN0UGFyYW1zKFxuICAgIHBhZ2luYXRpb25Gb3JTZWxlY3RlZFRhc2tUeXBlOiBUYXNrUGFnZVBhcmFtcyxcbiAgICBzb3J0U3RyaW5nRm9yU2VsZWN0ZWRUYXNrVHlwZTogc3RyaW5nLFxuICAgIHNlbGVjdGVkVGFza1R5cGU6IFRhc2tMaXN0VGFiLFxuICAgIGNhc2VEZWZpbml0aW9uTmFtZTogc3RyaW5nLFxuICAgIGVuYWJsZUxvYWRpbmdBbmltYXRpb246IGJvb2xlYW4sXG4gICAgcmVsb2FkOiBib29sZWFuLFxuICAgIG90aGVyRmlsdGVycz86IFRhc2tMaXN0T3RoZXJGaWx0ZXJzXG4gICk6IFRhc2tMaXN0UGFyYW1zIHtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAuLi5wYWdpbmF0aW9uRm9yU2VsZWN0ZWRUYXNrVHlwZSxcbiAgICAgIC4uLihzb3J0U3RyaW5nRm9yU2VsZWN0ZWRUYXNrVHlwZSAmJiB7c29ydDogc29ydFN0cmluZ0ZvclNlbGVjdGVkVGFza1R5cGV9KSxcbiAgICB9O1xuXG4gICAgZGVsZXRlIHBhcmFtcy5jb2xsZWN0aW9uU2l6ZTtcblxuICAgIHJldHVybiB7XG4gICAgICBwYXJhbXM6IHtcbiAgICAgICAgcmVsb2FkLFxuICAgICAgICBzZWxlY3RlZFRhc2tUeXBlLFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIC4uLihjYXNlRGVmaW5pdGlvbk5hbWUgJiYgY2FzZURlZmluaXRpb25OYW1lICE9PSB0aGlzLkFMTF9DQVNFU19JRCAmJiB7Y2FzZURlZmluaXRpb25OYW1lfSksXG4gICAgICAgIC4uLihvdGhlckZpbHRlcnMgJiYge290aGVyRmlsdGVyc30pLFxuICAgICAgfSxcbiAgICAgIGVuYWJsZUxvYWRpbmdBbmltYXRpb24sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGFza0xpc3RQZXJtaXNzaW9uc1JlcXVlc3QoXG4gICAgdGFza3NSZXN1bHQ6IFBhZ2U8VGFzaz4gfCBQYWdlPFNwZWNpZmllZFRhc2s+LFxuICAgIGlzU3BlY2lmaWVkOiBib29sZWFuXG4gICkge1xuICAgIGNvbnN0IHRhc2tSZXN1bHRzID0gdGFza3NSZXN1bHQuY29udGVudDtcbiAgICBjb25zdCBoYXNUYXNrUmVzdWx0cyA9IEFycmF5LmlzQXJyYXkodGFza1Jlc3VsdHMpICYmIHRhc2tSZXN1bHRzLmxlbmd0aCA+IDA7XG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICBvZihpc1NwZWNpZmllZCksXG4gICAgICBvZih0YXNrc1Jlc3VsdCksXG4gICAgICBoYXNUYXNrUmVzdWx0c1xuICAgICAgICA/IGNvbWJpbmVMYXRlc3QoXG4gICAgICAgICAgICB0YXNrUmVzdWx0cy5tYXAodGFzayA9PlxuICAgICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9WSUVXX1RBU0tfUEVSTUlTU0lPTiwge1xuICAgICAgICAgICAgICAgIHJlc291cmNlOiBUQVNLX0RFVEFJTF9QRVJNSVNTSU9OX1JFU09VUkNFLnRhc2ssXG4gICAgICAgICAgICAgICAgaWRlbnRpZmllcjogIWlzU3BlY2lmaWVkID8gKHRhc2sgYXMgVGFzaykuaWQgOiAodGFzayBhcyBTcGVjaWZpZWRUYXNrKS5pZCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgIDogb2YobnVsbCksXG4gICAgICBoYXNUYXNrUmVzdWx0c1xuICAgICAgICA/IGNvbWJpbmVMYXRlc3QoXG4gICAgICAgICAgICB0YXNrUmVzdWx0cy5tYXAodGFzayA9PlxuICAgICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25TZXJ2aWNlLnJlcXVlc3RQZXJtaXNzaW9uKENBTl9WSUVXX0NBU0VfUEVSTUlTU0lPTiwge1xuICAgICAgICAgICAgICAgIHJlc291cmNlOiBUQVNLX0RFVEFJTF9QRVJNSVNTSU9OX1JFU09VUkNFLmpzb25TY2hlbWFEb2N1bWVudCxcbiAgICAgICAgICAgICAgICBpZGVudGlmaWVyOiB0YXNrLmJ1c2luZXNzS2V5LFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgOiBvZihudWxsKSxcbiAgICBdKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwVGFza3NGb3JMaXN0KFxuICAgIGlzU3BlY2lmaWVkOiBib29sZWFuLFxuICAgIHRhc2tzOiBQYWdlPFRhc2s+IHwgUGFnZTxTcGVjaWZpZWRUYXNrPixcbiAgICBjYW5WaWV3VGFza1Blcm1pc3Npb25zOiBib29sZWFuW10gfCBudWxsLFxuICAgIGNhblZpZXdDYXNlUGVybWlzc2lvbnM6IGJvb2xlYW5bXSB8IG51bGxcbiAgKTogVGFza1tdIHwgTWFwcGVkU3BlY2lmaWVkVGFza1tdIHtcbiAgICBjb25zdCBNT01FTlRfRk9STUFUID0gJ0REIE1NTSBZWVlZIEhIOm1tJztcblxuICAgIGlmIChpc1NwZWNpZmllZCkge1xuICAgICAgcmV0dXJuICh0YXNrcyBhcyBQYWdlPFNwZWNpZmllZFRhc2s+KS5jb250ZW50Lm1hcCgoc3BlY2lmaWVkVGFzaywgc3BlY2lmaWVkVGFza0luZGV4KSA9PlxuICAgICAgICBzcGVjaWZpZWRUYXNrLml0ZW1zLnJlZHVjZShcbiAgICAgICAgICAoYWNjLCBjdXJyKSA9PlxuICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgaWQ6IHNwZWNpZmllZFRhc2suaWQsXG4gICAgICAgICAgICAgIGJ1c2luZXNzS2V5OiBzcGVjaWZpZWRUYXNrLmJ1c2luZXNzS2V5LFxuICAgICAgICAgICAgICBwcm9jZXNzSW5zdGFuY2VJZDogc3BlY2lmaWVkVGFzay5wcm9jZXNzSW5zdGFuY2VJZCxcbiAgICAgICAgICAgICAgbmFtZTogc3BlY2lmaWVkVGFzay5uYW1lLFxuICAgICAgICAgICAgICAuLi4obW9tZW50KHNwZWNpZmllZFRhc2suY3JlYXRlZCkuaXNWYWxpZCgpICYmIHtcbiAgICAgICAgICAgICAgICBjcmVhdGVkOiBtb21lbnQoc3BlY2lmaWVkVGFzay5jcmVhdGVkKS5mb3JtYXQoTU9NRU5UX0ZPUk1BVCksXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAuLi4oY2FuVmlld1Rhc2tQZXJtaXNzaW9ucyAmJiB7bG9ja2VkOiAhY2FuVmlld1Rhc2tQZXJtaXNzaW9uc1tzcGVjaWZpZWRUYXNrSW5kZXhdfSksXG4gICAgICAgICAgICAgIC4uLihjYW5WaWV3Q2FzZVBlcm1pc3Npb25zICYmIHtcbiAgICAgICAgICAgICAgICBjYXNlTG9ja2VkOiAhY2FuVmlld0Nhc2VQZXJtaXNzaW9uc1tzcGVjaWZpZWRUYXNrSW5kZXhdLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICBbY3Vyci5rZXldOiBjdXJyLnZhbHVlLFxuICAgICAgICAgICAgfSkgYXMgTWFwcGVkU3BlY2lmaWVkVGFzayxcbiAgICAgICAgICB7fVxuICAgICAgICApXG4gICAgICApIGFzIE1hcHBlZFNwZWNpZmllZFRhc2tbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gKHRhc2tzIGFzIFBhZ2U8VGFzaz4pPy5jb250ZW50Py5tYXAoKHRhc2ssIHRhc2tJbmRleCkgPT4ge1xuICAgICAgY29uc3QgY3JlYXRlZERhdGUgPSBtb21lbnQodGFzay5jcmVhdGVkKTtcbiAgICAgIGNvbnN0IGR1ZURhdGUgPSBtb21lbnQodGFzay5kdWUpO1xuICAgICAgY29uc3QgdGFza0NvcHkgPSB7Li4udGFza307XG5cbiAgICAgIGlmICh0YXNrLmR1ZSAmJiBkdWVEYXRlLmlzVmFsaWQoKSkgdGFza0NvcHkuZHVlID0gZHVlRGF0ZS5mb3JtYXQoTU9NRU5UX0ZPUk1BVCk7XG4gICAgICBpZiAoY3JlYXRlZERhdGUuaXNWYWxpZCgpKSB0YXNrQ29weS5jcmVhdGVkID0gY3JlYXRlZERhdGUuZm9ybWF0KE1PTUVOVF9GT1JNQVQpO1xuICAgICAgaWYgKGNhblZpZXdUYXNrUGVybWlzc2lvbnMpIHRhc2tDb3B5LmxvY2tlZCA9ICFjYW5WaWV3VGFza1Blcm1pc3Npb25zW3Rhc2tJbmRleF07XG4gICAgICBpZiAoY2FuVmlld0Nhc2VQZXJtaXNzaW9ucykgdGFza0NvcHkuY2FzZUxvY2tlZCA9ICFjYW5WaWV3Q2FzZVBlcm1pc3Npb25zW3Rhc2tJbmRleF07XG5cbiAgICAgIHJldHVybiB0YXNrQ29weTtcbiAgICB9KSBhcyBUYXNrW107XG4gIH1cblxuICBwcml2YXRlIHNldFBhcmFtc0Zyb21RdWVyeVBhcmFtcygpOiB2b2lkIHtcbiAgICBjb25zdCBkZWNvZGVkUGFyYW1zID0gdGhpcy50YXNrTGlzdFF1ZXJ5UGFyYW1TZXJ2aWNlLmdldFRhc2tMaXN0UXVlcnlQYXJhbXMoKTtcblxuICAgIGlmIChkZWNvZGVkUGFyYW1zLmNhc2VEZWZpbml0aW9uTmFtZSkge1xuICAgICAgdGhpcy50YXNrTGlzdFNlcnZpY2Uuc2V0Q2FzZURlZmluaXRpb25OYW1lKGRlY29kZWRQYXJhbXMuY2FzZURlZmluaXRpb25OYW1lKTtcbiAgICAgIHRoaXMuX3NlbGVjdGVkQ2FzZURlZmluaXRpb25JZCQubmV4dChkZWNvZGVkUGFyYW1zLmNhc2VEZWZpbml0aW9uTmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKGRlY29kZWRQYXJhbXMub3RoZXJGaWx0ZXJzPy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzZWFyY2hGaWVsZFZhbHVlcyA9IHRoaXMudGFza0xpc3RTZWFyY2hTZXJ2aWNlLm1hcE90aGVyRmlsdGVyVG9TZWFyY2hWYWx1ZXMoXG4gICAgICAgIGRlY29kZWRQYXJhbXMub3RoZXJGaWx0ZXJzXG4gICAgICApO1xuICAgICAgdGhpcy5zZXRTZWFyY2hGaWVsZFZhbHVlc1N1YmplY3QkLm5leHQoc2VhcmNoRmllbGRWYWx1ZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFyU2VhcmNoRmllbGRWYWx1ZXNTdWJqZWN0JC5uZXh0KG51bGwpO1xuICAgIH1cblxuICAgIGlmIChkZWNvZGVkUGFyYW1zLnNlbGVjdGVkVGFza1R5cGUpXG4gICAgICB0aGlzLnRhc2tMaXN0U2VydmljZS5zZXRTZWxlY3RlZFRhc2tUeXBlKGRlY29kZWRQYXJhbXMuc2VsZWN0ZWRUYXNrVHlwZSk7XG5cbiAgICBpZiAoZGVjb2RlZFBhcmFtcy5wYXJhbXM/LnNvcnQpIHtcbiAgICAgIGNvbnN0IHN0YXRlRnJvbVNvcnRTdHJpbmcgPSB0aGlzLnRhc2tMaXN0U29ydFNlcnZpY2UuZ2V0U29ydFN0YXRlRnJvbVNvcnRTdHJpbmcoXG4gICAgICAgIGRlY29kZWRQYXJhbXMucGFyYW1zLnNvcnRcbiAgICAgICk7XG4gICAgICBpZiAoc3RhdGVGcm9tU29ydFN0cmluZykgdGhpcy50YXNrTGlzdFNvcnRTZXJ2aWNlLnNldE92ZXJyaWRlU29ydFN0YXRlKHN0YXRlRnJvbVNvcnRTdHJpbmcpO1xuICAgIH1cblxuICAgIGlmIChkZWNvZGVkUGFyYW1zLnBhcmFtcylcbiAgICAgIHRoaXMudGFza0xpc3RQYWdpbmF0aW9uU2VydmljZS51cGRhdGVUYXNrUGFnaW5hdGlvbihcbiAgICAgICAgdGhpcy50YXNrTGlzdFNlcnZpY2Uuc2VsZWN0ZWRUYXNrVHlwZSxcbiAgICAgICAgZGVjb2RlZFBhcmFtcy5wYXJhbXNcbiAgICAgICk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGRpdlxuICAqbmdJZj1cIntcbiAgICBsb2FkaW5nOiBsb2FkaW5nVGFza3MkIHwgYXN5bmMsXG4gICAgc2VsZWN0ZWRUYXNrVHlwZTogc2VsZWN0ZWRUYXNrVHlwZSQgfCBhc3luYyxcbiAgICB0YXNrczogdGFza3MkIHwgYXN5bmMsXG4gICAgZmllbGRzOiBmaWVsZHMkIHwgYXN5bmMsXG4gICAgdmlzaWJsZVRhYnM6IHZpc2libGVUYWJzJCB8IGFzeW5jLFxuICAgIHBhZ2luYXRpb246IHBhZ2luYXRpb25Gb3JDdXJyZW50VGFza1R5cGVGb3JMaXN0JCB8IGFzeW5jLFxuICAgIHRhc2tMaXN0Q29sdW1uc0ZvckNhc2U6IHRhc2tMaXN0Q29sdW1uc0ZvckNhc2UkIHwgYXN5bmMsXG4gICAgc29ydFN0YXRlOiBzb3J0U3RhdGVGb3JDdXJyZW50VGFza1R5cGUkIHwgYXN5bmMsXG4gICAgb3ZlcnJpZGVTb3J0U3RhdGU6IG92ZXJyaWRlU29ydFN0YXRlJCB8IGFzeW5jLFxuICAgIHNlYXJjaEZpZWxkczogc2VhcmNoRmllbGRzJCB8IGFzeW5jLFxuICAgIGxvYWRpbmdTZWFyY2hGaWVsZHM6IGxvYWRpbmdTZWFyY2hGaWVsZHMkIHwgYXN5bmMsXG4gICAgY2FzZURlZmluaXRpb25OYW1lOiBjYXNlRGVmaW5pdGlvbk5hbWUkIHwgYXN5bmMsXG4gICAgbm9SZXN1bHRzTWVzc2FnZTogbm9SZXN1bHRzTWVzc2FnZSQgfCBhc3luYyxcbiAgfSBhcyBvYnNcIlxuICBjbGFzcz1cIm1haW4tY29udGVudFwiXG4+XG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cbiAgICBAaWYgKG9icy5jYXNlRGVmaW5pdGlvbk5hbWUgJiYgb2JzLmNhc2VEZWZpbml0aW9uTmFtZSAhPT0gQUxMX0NBU0VTX0lEKSB7XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgc2VhcmNoRmllbGRzO1xuICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgIG9iczogb2JzLFxuICAgICAgICAgIH1cbiAgICAgICAgXCJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICB9XG5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICB0YXNrc0xpc3Q7XG4gICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICBvYnM6IG9icyxcbiAgICAgICAgfVxuICAgICAgXCJcbiAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICB0YXNrc0xpc3RMb2FkaW5nO1xuICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgb2JzOiBvYnMsXG4gICAgICAgIH1cbiAgICAgIFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuXG4gICAgPHZhbHRpbW8tdGFzay1kZXRhaWwtbW9kYWxcbiAgICAgICN0YXNrRGV0YWlsXG4gICAgICAoZm9ybVN1Ym1pdCk9XCJyZWxvYWQoKVwiXG4gICAgICAoYXNzaWdubWVudE9mVGFza0NoYW5nZWQpPVwicmVsb2FkKClcIlxuICAgID48L3ZhbHRpbW8tdGFzay1kZXRhaWwtbW9kYWw+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY29uZmlndXJlZFRhYnMgbGV0LXNlbGVjdGVkVGFza1R5cGU9XCJzZWxlY3RlZFRhc2tUeXBlXCIgbGV0LXZpc2libGVUYWJzPVwidmlzaWJsZVRhYnNcIj5cbiAgPGNkcy10YWJzICpuZ0lmPVwidmlzaWJsZVRhYnNcIiB0eXBlPVwiY29udGFpbmVkXCIgY2xhc3M9XCJ2YWx0aW1vLWNhcmJvbi1saXN0X190YWJzXCI+XG4gICAgPGNkcy10YWJcbiAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgdmlzaWJsZVRhYnNcIlxuICAgICAgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ3Rhc2stbGlzdC10YWItJyArIHRhYlwiXG4gICAgICBbaGVhZGluZ109XCIndGFzay1saXN0LicgKyB0YWIgKyAnLnRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbYWN0aXZlXT1cInNlbGVjdGVkVGFza1R5cGUgPT09IHRhYlwiXG4gICAgICAoc2VsZWN0ZWQpPVwidGFiQ2hhbmdlKHRhYilcIlxuICAgID48L2Nkcy10YWI+XG4gIDwvY2RzLXRhYnM+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Nhc2VMaW5rIGxldC1kYXRhPVwiZGF0YVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FjaGVkVGFza3MkIHwgYXN5bmMgYXMgY2FjaGVkVGFza3NcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiY2FjaGVkVGFza3NbZGF0YS5pbmRleF0uY2FzZUxvY2tlZFwiPlxuICAgICAgPGFcbiAgICAgICAgY2xhc3M9XCJmbG9hdC1sZWZ0IGNkcy0tbGluay0tZGlzYWJsZWRcIlxuICAgICAgICBjZHNMaW5rXG4gICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxuICAgICAgICBuZ2JUb29sdGlwPVwie3sgJ3Rhc2stbGlzdC5jYXNlTG9ja2VkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgPlxuICAgICAgICB7eyAndGFzay1saXN0LmdvVG9DYXNlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhY2FjaGVkVGFza3NbZGF0YS5pbmRleF0uY2FzZUxvY2tlZFwiPlxuICAgICAgPGFcbiAgICAgICAgY2xhc3M9XCJmbG9hdC1sZWZ0IGNkcy0tbGlua1wiXG4gICAgICAgIGNkc0xpbmtcbiAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiXG4gICAgICAgIChjbGljayk9XCJvcGVuUmVsYXRlZENhc2UoJGV2ZW50LCBkYXRhLmluZGV4KVwiXG4gICAgICA+XG4gICAgICAgIHt7ICd0YXNrLWxpc3QuZ29Ub0Nhc2UnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0YXNrc0xpc3QgbGV0LW9icz1cIm9ic1wiPlxuICA8dmFsdGltby1jYXJib24tbGlzdFxuICAgICpuZ0lmPVwiIW9icy5sb2FkaW5nXCJcbiAgICBbZmllbGRzXT1cIm9icy5maWVsZHNcIlxuICAgIFtoZWFkZXJdPVwiZmFsc2VcIlxuICAgIFtpdGVtc109XCJvYnMudGFza3NcIlxuICAgIFtsYXN0Q29sdW1uVGVtcGxhdGVdPVwiY2FzZUxpbmtcIlxuICAgIFtwYWdpbmF0aW9uXT1cIm9icy5wYWdpbmF0aW9uXCJcbiAgICBwYWdpbmF0aW9uSWRlbnRpZmllcj1cInRhc2tMaXN0XCJcbiAgICBsb2NrZWRUb29sdGlwVHJhbnNsYXRpb25LZXk9XCJ0YXNrLWxpc3Qucm93TG9ja2VkXCJcbiAgICBbc29ydFN0YXRlXT1cIm9icy5vdmVycmlkZVNvcnRTdGF0ZSB8fCBvYnMuc29ydFN0YXRlXCJcbiAgICAocGFnaW5hdGlvbkNsaWNrZWQpPVwicGFnaW5hdGlvbkNsaWNrZWQoJGV2ZW50LCBvYnMuc2VsZWN0ZWRUYXNrVHlwZSlcIlxuICAgIChwYWdpbmF0aW9uU2V0KT1cInBhZ2luYXRpb25TZXQoJGV2ZW50KVwiXG4gICAgKHJvd0NsaWNrZWQpPVwicm93T3BlblRhc2tDbGljaygkZXZlbnQpXCJcbiAgICAoc29ydENoYW5nZWQpPVwic29ydENoYW5nZWQoJGV2ZW50KVwiXG4gID5cbiAgICA8ZGl2IHRhYnM+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JzLnZpc2libGVUYWJzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgY29uZmlndXJlZFRhYnM7XG4gICAgICAgICAgICBjb250ZXh0OiB7c2VsZWN0ZWRUYXNrVHlwZTogb2JzLnNlbGVjdGVkVGFza1R5cGUsIHZpc2libGVUYWJzOiBvYnMudmlzaWJsZVRhYnN9XG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICBbZGVzY3JpcHRpb25dPVwib2JzLm5vUmVzdWx0c01lc3NhZ2UuZGVzY3JpcHRpb24gfCB0cmFuc2xhdGVcIlxuICAgICAgW3RpdGxlXT1cIm9icy5ub1Jlc3VsdHNNZXNzYWdlLnRpdGxlIHwgdHJhbnNsYXRlXCJcbiAgICA+XG4gICAgPC92YWx0aW1vLW5vLXJlc3VsdHM+XG4gIDwvdmFsdGltby1jYXJib24tbGlzdD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGFza3NMaXN0TG9hZGluZyBsZXQtb2JzPVwib2JzXCI+XG4gIDx2YWx0aW1vLWNhcmJvbi1saXN0ICpuZ0lmPVwib2JzLmxvYWRpbmdcIiBbbG9hZGluZ109XCJ0cnVlXCI+XG4gICAgPGRpdiB0YWJzPlxuICAgICAgPGNkcy10YWJzICpuZ0lmPVwiIW9icy52aXNpYmxlVGFic1wiIHR5cGU9XCJjb250YWluZWRcIiBjbGFzcz1cInZhbHRpbW8tY2FyYm9uLWxpc3RfX3RhYnNcIj5cbiAgICAgICAgPGNkcy10YWJcbiAgICAgICAgICBbaGVhZGluZ109XCIndGFzay1saXN0Lm1pbmUudGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbYWN0aXZlXT1cIm9icy5zZWxlY3RlZFRhc2tUeXBlID09PSAnbWluZSdcIlxuICAgICAgICA+XG4gICAgICAgIDwvY2RzLXRhYj5cblxuICAgICAgICA8Y2RzLXRhYlxuICAgICAgICAgIFtoZWFkaW5nXT1cIid0YXNrLWxpc3Qub3Blbi50aXRsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFthY3RpdmVdPVwib2JzLnNlbGVjdGVkVGFza1R5cGUgPT09ICdvcGVuJ1wiXG4gICAgICAgID5cbiAgICAgICAgPC9jZHMtdGFiPlxuXG4gICAgICAgIDxjZHMtdGFiXG4gICAgICAgICAgW2hlYWRpbmddPVwiJ3Rhc2stbGlzdC5hbGwudGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbYWN0aXZlXT1cIm9icy5zZWxlY3RlZFRhc2tUeXBlID09PSAnYWxsJ1wiXG4gICAgICAgID5cbiAgICAgICAgPC9jZHMtdGFiPlxuICAgICAgPC9jZHMtdGFicz5cblxuICAgICAgPGNkcy10YWJzICpuZ0lmPVwib2JzLnZpc2libGVUYWJzXCIgdHlwZT1cImNvbnRhaW5lZFwiIGNsYXNzPVwidmFsdGltby1jYXJib24tbGlzdF9fdGFic1wiPlxuICAgICAgICA8Y2RzLXRhYlxuICAgICAgICAgICpuZ0Zvcj1cImxldCB0YWIgb2Ygb2JzLnZpc2libGVUYWJzXCJcbiAgICAgICAgICBbaGVhZGluZ109XCIndGFzay1saXN0LicgKyB0YWIgKyAnLnRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW2FjdGl2ZV09XCJvYnMuc2VsZWN0ZWRUYXNrVHlwZSA9PT0gdGFiXCJcbiAgICAgICAgPjwvY2RzLXRhYj5cbiAgICAgIDwvY2RzLXRhYnM+XG4gICAgPC9kaXY+XG4gIDwvdmFsdGltby1jYXJib24tbGlzdD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2VhcmNoRmllbGRzIGxldC1vYnM9XCJvYnNcIj5cbiAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICA8dmFsdGltby1zZWFyY2gtZmllbGRzXG4gICAgICBbc2VhcmNoRmllbGRzXT1cIm9icy5zZWFyY2hGaWVsZHNcIlxuICAgICAgW2lucHV0RGlzYWJsZWRdPVwib2JzLmxvYWRpbmdTZWFyY2hGaWVsZHNcIlxuICAgICAgW2RvY3VtZW50RGVmaW5pdGlvbk5hbWVdPVwib2JzLmNhc2VEZWZpbml0aW9uTmFtZVwiXG4gICAgICBbc2V0VmFsdWVzU3ViamVjdCRdPVwic2V0U2VhcmNoRmllbGRWYWx1ZXNTdWJqZWN0JFwiXG4gICAgICBbY2xlYXJWYWx1ZXNTdWJqZWN0JF09XCJjbGVhclNlYXJjaEZpZWxkVmFsdWVzU3ViamVjdCRcIlxuICAgICAgKGRvU2VhcmNoKT1cInNlYXJjaCgkZXZlbnQpXCJcbiAgICA+XG4gICAgPC92YWx0aW1vLXNlYXJjaC1maWVsZHM+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRhaW5lciByZW5kZXJJblBhZ2VIZWFkZXIgW2Z1bGxXaWR0aF09XCJ0cnVlXCI+XG4gIDxuZy10ZW1wbGF0ZT5cbiAgICA8Y2RzLWRyb3Bkb3duXG4gICAgICBjbGFzcz1cImNhc2UtZGVmaW5pdGlvbi1zZWxlY3Rpb25cIlxuICAgICAgKm5nSWY9XCJ7XG4gICAgICAgIGxvYWRpbmdDYXNlTGlzdEl0ZW1zOiBsb2FkaW5nQ2FzZUxpc3RJdGVtcyQgfCBhc3luYyxcbiAgICAgICAgY2FzZUxpc3RJdGVtczogY2FzZUxpc3RJdGVtcyQgfCBhc3luYyxcbiAgICAgIH0gYXMgb2JzXCJcbiAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cIid0YXNrLWxpc3QtY2FzZS1kcm9wZG93bidcIlxuICAgICAgW2Rpc2FibGVkXT1cIm9icy5sb2FkaW5nQ2FzZUxpc3RJdGVtcyB8fCAob2JzLmNhc2VMaXN0SXRlbXMgfHwgW10pLmxlbmd0aCA9PT0gMVwiXG4gICAgICBbc2tlbGV0b25dPVwib2JzLmxvYWRpbmdDYXNlTGlzdEl0ZW1zXCJcbiAgICAgIChzZWxlY3RlZCk9XCJzZXRDYXNlRGVmaW5pdGlvbigkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8Y2RzLWRyb3Bkb3duLWxpc3QgW2l0ZW1zXT1cIm9icy5jYXNlTGlzdEl0ZW1zIHx8IFtdXCI+PC9jZHMtZHJvcGRvd24tbGlzdD5cbiAgICA8L2Nkcy1kcm9wZG93bj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -14,4 +14,4 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  export {};
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vdGFzay9zcmMvbGliL21vZGVscy90YXNrLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtVc2VyfSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuXG5pbnRlcmZhY2UgVGFzayB7XG4gIGFzc2lnbmVlOiBzdHJpbmc7XG4gIGNhc2VEZWZpbml0aW9uSWQ6IHN0cmluZztcbiAgY2FzZUV4ZWN1dGlvbklkOiBzdHJpbmc7XG4gIGNhc2VJbnN0YW5jZUlkOiBzdHJpbmc7XG4gIGNyZWF0ZWQ6IHN0cmluZztcbiAgZGVsZWdhdGlvblN0YXRlOiBhbnk7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGR1ZTogc3RyaW5nO1xuICBleGVjdXRpb25JZDogc3RyaW5nO1xuICBmb2xsb3dVcDogYW55O1xuICBmb3JtS2V5OiBzdHJpbmc7XG4gIGZvcm1sZXNzOiBib29sZWFuO1xuICBpZDogc3RyaW5nO1xuICBsaXN0SXRlbUZpZWxkczogTGlzdEl0ZW1GaWVsZFtdO1xuICBuYW1lOiBzdHJpbmc7XG4gIG93bmVyOiBzdHJpbmc7XG4gIHBhcmVudFRhc2tJZDogc3RyaW5nO1xuICBwcmlvcml0eTogbnVtYmVyO1xuICBwcm9jZXNzRGVmaW5pdGlvbklkOiBzdHJpbmc7XG4gIHByb2Nlc3NJbnN0YW5jZUlkOiBzdHJpbmc7XG4gIHN1c3BlbmRlZDogYm9vbGVhbjtcbiAgdGFza0RlZmluaXRpb25LZXk6IHN0cmluZztcbiAgdGVuYW50SWQ6IHN0cmluZztcbiAgZm9ybUxvY2F0aW9uOiBzdHJpbmc7XG4gIGJ1c2luZXNzS2V5OiBzdHJpbmc7XG4gIHByb2Nlc3NEZWZpbml0aW9uS2V5OiBzdHJpbmc7XG4gIHZhbHRpbW9Bc3NpZ25lZTogVXNlcjtcbiAgbG9ja2VkPzogYm9vbGVhbjtcbiAgY2FzZUxvY2tlZD86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBMaXN0SXRlbUZpZWxkIHtcbiAga2V5OiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBBc3NpZ25lZVJlcXVlc3Qge1xuICBhc3NpZ25lZTogc3RyaW5nO1xufVxuXG50eXBlIFRhc2tQcm9jZXNzTGlua1R5cGUgPSAnZm9ybScgfCAnZm9ybS1mbG93JyB8ICdmb3JtLXZpZXctbW9kZWwnO1xuXG5pbnRlcmZhY2UgVGFza1Byb2Nlc3NMaW5rUmVzdWx0IHtcbiAgcHJvY2Vzc0xpbmtJZDogc3RyaW5nO1xuICB0eXBlOiBUYXNrUHJvY2Vzc0xpbmtUeXBlO1xuICBwcm9wZXJ0aWVzOiB7XG4gICAgZm9ybUZsb3dJbnN0YW5jZUlkPzogc3RyaW5nO1xuICAgIGZvcm1EZWZpbml0aW9uSWQ/OiBzdHJpbmc7XG4gICAgcHJlZmlsbGVkRm9ybT86IGFueTtcbiAgICBmb3JtRGVmaW5pdGlvbj86IGFueTtcbiAgICBmb3JtTmFtZT86IHN0cmluZztcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFNwZWNpZmllZFRhc2sge1xuICBpZDogc3RyaW5nO1xuICBidXNpbmVzc0tleTogc3RyaW5nO1xuICBwcm9jZXNzSW5zdGFuY2VJZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGNyZWF0ZWQ6IERhdGU7XG4gIGl0ZW1zOiB7a2V5OiBzdHJpbmc7IHZhbHVlOiBhbnl9W107XG59XG5cbmludGVyZmFjZSBNYXBwZWRTcGVjaWZpZWRUYXNrIHtcbiAgaWQ6IHN0cmluZztcbiAgYnVzaW5lc3NLZXk6IHN0cmluZztcbiAgcHJvY2Vzc0luc3RhbmNlSWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBjcmVhdGVkPzogc3RyaW5nO1xuICBsb2NrZWQ/OiBib29sZWFuO1xuICBjYXNlTG9ja2VkPzogYm9vbGVhbjtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQge1xuICBBc3NpZ25lZVJlcXVlc3QsXG4gIExpc3RJdGVtRmllbGQsXG4gIFRhc2ssXG4gIFRhc2tQcm9jZXNzTGlua1Jlc3VsdCxcbiAgVGFza1Byb2Nlc3NMaW5rVHlwZSxcbiAgU3BlY2lmaWVkVGFzayxcbiAgTWFwcGVkU3BlY2lmaWVkVGFzayxcbn07XG4iXX0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vdGFzay9zcmMvbGliL21vZGVscy90YXNrLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtVc2VyfSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuaW1wb3J0IHtGb3JtRGlzcGxheVR5cGUsIEZvcm1TaXplfSBmcm9tICdAdmFsdGltby9wcm9jZXNzLWxpbmsnO1xuXG5pbnRlcmZhY2UgVGFzayB7XG4gIGFzc2lnbmVlOiBzdHJpbmc7XG4gIGNhc2VEZWZpbml0aW9uSWQ6IHN0cmluZztcbiAgY2FzZUV4ZWN1dGlvbklkOiBzdHJpbmc7XG4gIGNhc2VJbnN0YW5jZUlkOiBzdHJpbmc7XG4gIGNyZWF0ZWQ6IHN0cmluZztcbiAgZGVsZWdhdGlvblN0YXRlOiBhbnk7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGR1ZTogc3RyaW5nO1xuICBleGVjdXRpb25JZDogc3RyaW5nO1xuICBmb2xsb3dVcDogYW55O1xuICBmb3JtS2V5OiBzdHJpbmc7XG4gIGZvcm1sZXNzOiBib29sZWFuO1xuICBpZDogc3RyaW5nO1xuICBsaXN0SXRlbUZpZWxkczogTGlzdEl0ZW1GaWVsZFtdO1xuICBuYW1lOiBzdHJpbmc7XG4gIG93bmVyOiBzdHJpbmc7XG4gIHBhcmVudFRhc2tJZDogc3RyaW5nO1xuICBwcmlvcml0eTogbnVtYmVyO1xuICBwcm9jZXNzRGVmaW5pdGlvbklkOiBzdHJpbmc7XG4gIHByb2Nlc3NJbnN0YW5jZUlkOiBzdHJpbmc7XG4gIHN1c3BlbmRlZDogYm9vbGVhbjtcbiAgdGFza0RlZmluaXRpb25LZXk6IHN0cmluZztcbiAgdGVuYW50SWQ6IHN0cmluZztcbiAgZm9ybUxvY2F0aW9uOiBzdHJpbmc7XG4gIGJ1c2luZXNzS2V5OiBzdHJpbmc7XG4gIHByb2Nlc3NEZWZpbml0aW9uS2V5OiBzdHJpbmc7XG4gIHZhbHRpbW9Bc3NpZ25lZTogVXNlcjtcbiAgbG9ja2VkPzogYm9vbGVhbjtcbiAgY2FzZUxvY2tlZD86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBMaXN0SXRlbUZpZWxkIHtcbiAga2V5OiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBBc3NpZ25lZVJlcXVlc3Qge1xuICBhc3NpZ25lZTogc3RyaW5nO1xufVxuXG50eXBlIFRhc2tQcm9jZXNzTGlua1R5cGUgPSAnZm9ybScgfCAnZm9ybS1mbG93JyB8ICdmb3JtLXZpZXctbW9kZWwnIHwgJ3VybCc7XG5cbmludGVyZmFjZSBUYXNrUHJvY2Vzc0xpbmtSZXN1bHQge1xuICBwcm9jZXNzTGlua0lkOiBzdHJpbmc7XG4gIHR5cGU6IFRhc2tQcm9jZXNzTGlua1R5cGU7XG4gIHByb3BlcnRpZXM6IHtcbiAgICBmb3JtRmxvd0luc3RhbmNlSWQ/OiBzdHJpbmc7XG4gICAgZm9ybURlZmluaXRpb25JZD86IHN0cmluZztcbiAgICBwcmVmaWxsZWRGb3JtPzogYW55O1xuICAgIGZvcm1EZWZpbml0aW9uPzogYW55O1xuICAgIGZvcm1OYW1lPzogc3RyaW5nO1xuICAgIHVybD86IHN0cmluZztcbiAgICBmb3JtRGlzcGxheVR5cGU/OiBGb3JtRGlzcGxheVR5cGU7XG4gICAgZm9ybVNpemU/OiBGb3JtU2l6ZTtcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFNwZWNpZmllZFRhc2sge1xuICBpZDogc3RyaW5nO1xuICBidXNpbmVzc0tleTogc3RyaW5nO1xuICBwcm9jZXNzSW5zdGFuY2VJZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGNyZWF0ZWQ6IERhdGU7XG4gIGl0ZW1zOiB7a2V5OiBzdHJpbmc7IHZhbHVlOiBhbnl9W107XG59XG5cbmludGVyZmFjZSBNYXBwZWRTcGVjaWZpZWRUYXNrIHtcbiAgaWQ6IHN0cmluZztcbiAgYnVzaW5lc3NLZXk6IHN0cmluZztcbiAgcHJvY2Vzc0luc3RhbmNlSWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBjcmVhdGVkPzogc3RyaW5nO1xuICBsb2NrZWQ/OiBib29sZWFuO1xuICBjYXNlTG9ja2VkPzogYm9vbGVhbjtcbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQge1xuICBBc3NpZ25lZVJlcXVlc3QsXG4gIExpc3RJdGVtRmllbGQsXG4gIFRhc2ssXG4gIFRhc2tQcm9jZXNzTGlua1Jlc3VsdCxcbiAgVGFza1Byb2Nlc3NMaW5rVHlwZSxcbiAgU3BlY2lmaWVkVGFzayxcbiAgTWFwcGVkU3BlY2lmaWVkVGFzayxcbn07XG4iXX0=
@@ -19,4 +19,5 @@ export * from './task-list-column.service';
19
19
  export * from './task-list-pagination.service';
20
20
  export * from './task-list-search.service';
21
21
  export * from './task-list-query-param.service';
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3Rhc2svc3JjL2xpYi9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi90YXNrLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi90YXNrLWxpc3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3Rhc2stbGlzdC1jb2x1bW4uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3Rhc2stbGlzdC1wYWdpbmF0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi90YXNrLWxpc3Qtc2VhcmNoLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi90YXNrLWxpc3QtcXVlcnktcGFyYW0uc2VydmljZSc7XG4iXX0=
22
+ export * from './task-intermediate-save.service';
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3Rhc2svc3JjL2xpYi9zZXJ2aWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsa0NBQWtDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3Rhc2suc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3Rhc2stbGlzdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdGFzay1saXN0LWNvbHVtbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdGFzay1saXN0LXBhZ2luYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3Rhc2stbGlzdC1zZWFyY2guc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3Rhc2stbGlzdC1xdWVyeS1wYXJhbS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vdGFzay1pbnRlcm1lZGlhdGUtc2F2ZS5zZXJ2aWNlJztcbiJdfQ==
@@ -13,18 +13,27 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { Injectable } from '@angular/core';
17
16
  import { HttpHeaders } from '@angular/common/http';
18
- import { BaseApiService, } from '@valtimo/config';
17
+ import { Injectable } from '@angular/core';
18
+ import { BaseApiService } from '@valtimo/config';
19
19
  import { InterceptorSkip } from '@valtimo/security';
20
+ import { BehaviorSubject, filter } from 'rxjs';
20
21
  import * as i0 from "@angular/core";
21
22
  import * as i1 from "@angular/common/http";
22
23
  import * as i2 from "@valtimo/config";
23
24
  export class TaskIntermediateSaveService extends BaseApiService {
25
+ get submission$() {
26
+ return this._submission$.pipe(filter((value) => !!value));
27
+ }
28
+ get formIoFormData$() {
29
+ return this._formIoFormData$.pipe(filter((value) => !!value));
30
+ }
24
31
  constructor(httpClient, configService) {
25
32
  super(httpClient, configService);
26
33
  this.httpClient = httpClient;
27
34
  this.configService = configService;
35
+ this._submission$ = new BehaviorSubject({});
36
+ this._formIoFormData$ = new BehaviorSubject({});
28
37
  }
29
38
  getIntermediateSubmission(taskInstanceId) {
30
39
  return this.httpClient.get(this.getApiUrl('/v1/form/intermediate/submission'), {
@@ -46,6 +55,12 @@ export class TaskIntermediateSaveService extends BaseApiService {
46
55
  },
47
56
  });
48
57
  }
58
+ setSubmission(value) {
59
+ this._submission$.next(value);
60
+ }
61
+ setFormIoFormData(value) {
62
+ this._formIoFormData$.next(value);
63
+ }
49
64
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TaskIntermediateSaveService, deps: [{ token: i1.HttpClient }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
50
65
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TaskIntermediateSaveService, providedIn: 'root' }); }
51
66
  }
@@ -53,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
53
68
  type: Injectable,
54
69
  args: [{ providedIn: 'root' }]
55
70
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ConfigService }] });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1pbnRlcm1lZGlhdGUtc2F2ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby90YXNrL3NyYy9saWIvc2VydmljZXMvdGFzay1pbnRlcm1lZGlhdGUtc2F2ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQWEsV0FBVyxFQUEyQixNQUFNLHNCQUFzQixDQUFDO0FBWXZGLE9BQU8sRUFDTCxjQUFjLEdBTWYsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFHbEQsTUFBTSxPQUFPLDJCQUE0QixTQUFRLGNBQWM7SUFDN0QsWUFDcUIsVUFBc0IsRUFDdEIsYUFBNEI7UUFFL0MsS0FBSyxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUhkLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBQWU7SUFHakQsQ0FBQztJQUVNLHlCQUF5QixDQUFDLGNBQXNCO1FBQ3JELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsa0NBQWtDLENBQUMsRUFDbEQ7WUFDRSxNQUFNLEVBQUU7Z0JBQ04sY0FBYzthQUNmO1lBQ0QsT0FBTyxFQUFFLElBQUksV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUM7U0FDdkQsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLDJCQUEyQixDQUNoQyxPQUFnQztRQUVoQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLGtDQUFrQyxDQUFDLEVBQ2xELE9BQU8sRUFDUDtZQUNFLE9BQU8sRUFBRSxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDO1NBQ3ZELENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSwyQkFBMkIsQ0FBQyxjQUFzQjtRQUN2RCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsa0NBQWtDLENBQUMsRUFBRTtZQUN0RixNQUFNLEVBQUU7Z0JBQ04sY0FBYzthQUNmO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0F0Q1UsMkJBQTJCO21IQUEzQiwyQkFBMkIsY0FEZixNQUFNOzs0RkFDbEIsMkJBQTJCO2tCQUR2QyxVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0h0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zLCBIdHRwUmVzcG9uc2V9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBBc3NpZ25lZVJlcXVlc3QsXG4gIEludGVybWVkaWF0ZVNhdmVSZXF1ZXN0LFxuICBJbnRlcm1lZGlhdGVTdWJtaXNzaW9uLFxuICBTcGVjaWZpZWRUYXNrLFxuICBUYXNrLFxuICBUYXNrTGlzdENvbHVtbixcbiAgVGFza1BhZ2VQYXJhbXMsXG4gIFRhc2tQcm9jZXNzTGlua1Jlc3VsdCxcbn0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7XG4gIEJhc2VBcGlTZXJ2aWNlLFxuICBDb25maWdTZXJ2aWNlLFxuICBDdXN0b21UYXNrTGlzdCxcbiAgTmFtZWRVc2VyLFxuICBQYWdlLFxuICBUYXNrTGlzdFRhYixcbn0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7SW50ZXJjZXB0b3JTa2lwfSBmcm9tICdAdmFsdGltby9zZWN1cml0eSc7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFRhc2tJbnRlcm1lZGlhdGVTYXZlU2VydmljZSBleHRlbmRzIEJhc2VBcGlTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoaHR0cENsaWVudCwgY29uZmlnU2VydmljZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0SW50ZXJtZWRpYXRlU3VibWlzc2lvbih0YXNrSW5zdGFuY2VJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxJbnRlcm1lZGlhdGVTdWJtaXNzaW9uPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8SW50ZXJtZWRpYXRlU3VibWlzc2lvbj4oXG4gICAgICB0aGlzLmdldEFwaVVybCgnL3YxL2Zvcm0vaW50ZXJtZWRpYXRlL3N1Ym1pc3Npb24nKSxcbiAgICAgIHtcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgdGFza0luc3RhbmNlSWQsXG4gICAgICAgIH0sXG4gICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldChJbnRlcmNlcHRvclNraXAsICc0MDQnKSxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN0b3JlSW50ZXJtZWRpYXRlU3VibWlzc2lvbihcbiAgICByZXF1ZXN0OiBJbnRlcm1lZGlhdGVTYXZlUmVxdWVzdFxuICApOiBPYnNlcnZhYmxlPEludGVybWVkaWF0ZVN1Ym1pc3Npb24+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8SW50ZXJtZWRpYXRlU3VibWlzc2lvbj4oXG4gICAgICB0aGlzLmdldEFwaVVybCgnL3YxL2Zvcm0vaW50ZXJtZWRpYXRlL3N1Ym1pc3Npb24nKSxcbiAgICAgIHJlcXVlc3QsXG4gICAgICB7XG4gICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycygpLnNldChJbnRlcmNlcHRvclNraXAsICc0MDAnKSxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNsZWFySW50ZXJtZWRpYXRlU3VibWlzc2lvbih0YXNrSW5zdGFuY2VJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5kZWxldGU8dm9pZD4odGhpcy5nZXRBcGlVcmwoJy92MS9mb3JtL2ludGVybWVkaWF0ZS9zdWJtaXNzaW9uJyksIHtcbiAgICAgIHBhcmFtczoge1xuICAgICAgICB0YXNrSW5zdGFuY2VJZCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1pbnRlcm1lZGlhdGUtc2F2ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby90YXNrL3NyYy9saWIvc2VydmljZXMvdGFzay1pbnRlcm1lZGlhdGUtc2F2ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFhLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGNBQWMsRUFBZ0IsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFDLGVBQWUsRUFBYyxNQUFNLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7QUFJekQsTUFBTSxPQUFPLDJCQUE0QixTQUFRLGNBQWM7SUFJN0QsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBQ0QsSUFBVyxlQUFlO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxZQUNxQixVQUFzQixFQUN0QixhQUE0QjtRQUUvQyxLQUFLLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBSGQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVpoQyxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO0lBY2pFLENBQUM7SUFFTSx5QkFBeUIsQ0FBQyxjQUFzQjtRQUNyRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLGtDQUFrQyxDQUFDLEVBQ2xEO1lBQ0UsTUFBTSxFQUFFO2dCQUNOLGNBQWM7YUFDZjtZQUNELE9BQU8sRUFBRSxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDO1NBQ3ZELENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSwyQkFBMkIsQ0FDaEMsT0FBZ0M7UUFFaEMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQ0FBa0MsQ0FBQyxFQUNsRCxPQUFPLEVBQ1A7WUFDRSxPQUFPLEVBQUUsSUFBSSxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQztTQUN2RCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRU0sMkJBQTJCLENBQUMsY0FBc0I7UUFDdkQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGtDQUFrQyxDQUFDLEVBQUU7WUFDdEYsTUFBTSxFQUFFO2dCQUNOLGNBQWM7YUFDZjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBVTtRQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQ00saUJBQWlCLENBQUMsS0FBVTtRQUNqQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7K0dBdkRVLDJCQUEyQjttSEFBM0IsMkJBQTJCLGNBRGYsTUFBTTs7NEZBQ2xCLDJCQUEyQjtrQkFEdkMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwSGVhZGVyc30gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmFzZUFwaVNlcnZpY2UsIENvbmZpZ1NlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge0ludGVyY2VwdG9yU2tpcH0gZnJvbSAnQHZhbHRpbW8vc2VjdXJpdHknO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGZpbHRlcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0ludGVybWVkaWF0ZVNhdmVSZXF1ZXN0LCBJbnRlcm1lZGlhdGVTdWJtaXNzaW9ufSBmcm9tICcuLi9tb2RlbHMnO1xuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBUYXNrSW50ZXJtZWRpYXRlU2F2ZVNlcnZpY2UgZXh0ZW5kcyBCYXNlQXBpU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1Ym1pc3Npb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHt9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZm9ybUlvRm9ybURhdGEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHt9KTtcblxuICBwdWJsaWMgZ2V0IHN1Ym1pc3Npb24kKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX3N1Ym1pc3Npb24kLnBpcGUoZmlsdGVyKCh2YWx1ZTogYW55KSA9PiAhIXZhbHVlKSk7XG4gIH1cbiAgcHVibGljIGdldCBmb3JtSW9Gb3JtRGF0YSQoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybUlvRm9ybURhdGEkLnBpcGUoZmlsdGVyKCh2YWx1ZTogYW55KSA9PiAhIXZhbHVlKSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZVxuICApIHtcbiAgICBzdXBlcihodHRwQ2xpZW50LCBjb25maWdTZXJ2aWNlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRJbnRlcm1lZGlhdGVTdWJtaXNzaW9uKHRhc2tJbnN0YW5jZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEludGVybWVkaWF0ZVN1Ym1pc3Npb24+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxJbnRlcm1lZGlhdGVTdWJtaXNzaW9uPihcbiAgICAgIHRoaXMuZ2V0QXBpVXJsKCcvdjEvZm9ybS9pbnRlcm1lZGlhdGUvc3VibWlzc2lvbicpLFxuICAgICAge1xuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICB0YXNrSW5zdGFuY2VJZCxcbiAgICAgICAgfSxcbiAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KEludGVyY2VwdG9yU2tpcCwgJzQwNCcpLFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc3RvcmVJbnRlcm1lZGlhdGVTdWJtaXNzaW9uKFxuICAgIHJlcXVlc3Q6IEludGVybWVkaWF0ZVNhdmVSZXF1ZXN0XG4gICk6IE9ic2VydmFibGU8SW50ZXJtZWRpYXRlU3VibWlzc2lvbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucG9zdDxJbnRlcm1lZGlhdGVTdWJtaXNzaW9uPihcbiAgICAgIHRoaXMuZ2V0QXBpVXJsKCcvdjEvZm9ybS9pbnRlcm1lZGlhdGUvc3VibWlzc2lvbicpLFxuICAgICAgcmVxdWVzdCxcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKCkuc2V0KEludGVyY2VwdG9yU2tpcCwgJzQwMCcpLFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJJbnRlcm1lZGlhdGVTdWJtaXNzaW9uKHRhc2tJbnN0YW5jZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmRlbGV0ZTx2b2lkPih0aGlzLmdldEFwaVVybCgnL3YxL2Zvcm0vaW50ZXJtZWRpYXRlL3N1Ym1pc3Npb24nKSwge1xuICAgICAgcGFyYW1zOiB7XG4gICAgICAgIHRhc2tJbnN0YW5jZUlkLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTdWJtaXNzaW9uKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJtaXNzaW9uJC5uZXh0KHZhbHVlKTtcbiAgfVxuICBwdWJsaWMgc2V0Rm9ybUlvRm9ybURhdGEodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX2Zvcm1Jb0Zvcm1EYXRhJC5uZXh0KHZhbHVlKTtcbiAgfVxufVxuIl19
@@ -29,12 +29,14 @@ import { AssignUserToTaskComponent } from './components/assign-user-to-task/assi
29
29
  import { TaskDetailModalComponent } from './components/task-detail-modal/task-detail-modal.component';
30
30
  import { TaskListComponent } from './components/task-list/task-list.component';
31
31
  import { TaskRoutingModule } from './task-routing.module';
32
+ import { TaskDetailContentComponent } from './components/task-detail-content/task-detail-content.component';
33
+ import { TaskDetailIntermediateSaveComponent } from './components/task-detail-intermediate-save/task-detail-intermediate-save.component';
32
34
  import * as i0 from "@angular/core";
33
35
  import * as i1 from "ngx-toastr";
34
36
  import * as i2 from "@ngx-translate/core";
35
37
  export class TaskModule {
36
38
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TaskModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
37
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: TaskModule, declarations: [TaskListComponent, TaskDetailModalComponent, AssignUserToTaskComponent], imports: [CommonModule,
39
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: TaskModule, declarations: [TaskListComponent, TaskDetailModalComponent], imports: [CommonModule,
38
40
  TaskRoutingModule,
39
41
  CarbonListModule,
40
42
  PageHeaderModule,
@@ -56,7 +58,10 @@ export class TaskModule {
56
58
  IconModule,
57
59
  TooltipModule,
58
60
  ConfirmationModalModule,
59
- SearchFieldsModule], exports: [TaskListComponent, TaskDetailModalComponent, AssignUserToTaskComponent] }); }
61
+ SearchFieldsModule,
62
+ AssignUserToTaskComponent,
63
+ TaskDetailContentComponent,
64
+ TaskDetailIntermediateSaveComponent], exports: [TaskListComponent, TaskDetailModalComponent] }); }
60
65
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TaskModule, imports: [CommonModule,
61
66
  TaskRoutingModule,
62
67
  CarbonListModule,
@@ -91,12 +96,15 @@ export class TaskModule {
91
96
  IconModule,
92
97
  TooltipModule,
93
98
  ConfirmationModalModule,
94
- SearchFieldsModule] }); }
99
+ SearchFieldsModule,
100
+ AssignUserToTaskComponent,
101
+ TaskDetailContentComponent,
102
+ TaskDetailIntermediateSaveComponent] }); }
95
103
  }
96
104
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TaskModule, decorators: [{
97
105
  type: NgModule,
98
106
  args: [{
99
- declarations: [TaskListComponent, TaskDetailModalComponent, AssignUserToTaskComponent],
107
+ declarations: [TaskListComponent, TaskDetailModalComponent],
100
108
  imports: [
101
109
  CommonModule,
102
110
  TaskRoutingModule,
@@ -133,8 +141,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
133
141
  TooltipModule,
134
142
  ConfirmationModalModule,
135
143
  SearchFieldsModule,
144
+ AssignUserToTaskComponent,
145
+ TaskDetailContentComponent,
146
+ TaskDetailIntermediateSaveComponent,
136
147
  ],
137
- exports: [TaskListComponent, TaskDetailModalComponent, AssignUserToTaskComponent],
148
+ exports: [TaskListComponent, TaskDetailModalComponent]
138
149
  }]
139
150
  }] });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3Rhc2svc3JjL2xpYi90YXNrLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxlQUFlLEVBQUUsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsaUNBQWlDLEVBQ2pDLDhCQUE4QixFQUM5QixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLFlBQVksR0FDYixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFDTCxZQUFZLEVBQ1oscUJBQXFCLEVBQ3JCLGNBQWMsRUFDZCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxVQUFVLEVBQ1YsYUFBYSxHQUNkLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLFlBQVksQ0FBQztBQUN4QyxPQUFPLEVBQUMs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MTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtCcm93c2VyQW5pbWF0aW9uc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcbmltcG9ydCB7TmdiTW9kdWxlfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQge1RyYW5zbGF0ZUxvYWRlciwgVHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIENhbXVuZGFGb3JtTW9kdWxlLFxuICBDYXJib25MaXN0TW9kdWxlLFxuICBDb25maXJtYXRpb25Nb2RhbE1vZHVsZSxcbiAgRm9ybUlvTW9kdWxlLFxuICBQYWdlSGVhZGVyTW9kdWxlLFxuICBSZW5kZXJJblBhZ2VIZWFkZXJEaXJlY3RpdmVNb2R1bGUsXG4gIFNlYXJjaGFibGVEcm9wZG93blNlbGVjdE1vZHVsZSxcbiAgU2VhcmNoRmllbGRzTW9kdWxlLFxuICBTcGlubmVyTW9kdWxlLFxuICBXaWRnZXRNb2R1bGUsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtIdHRwTG9hZGVyRmFjdG9yeX0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7UHJvY2Vzc0xpbmtNb2R1bGV9IGZyb20gJ0B2YWx0aW1vL3Byb2Nlc3MtbGluayc7XG5pbXBvcnQge1xuICBCdXR0b25Nb2R1bGUsXG4gIENvbnRlbnRTd2l0Y2hlck1vZHVsZSxcbiAgRHJvcGRvd25Nb2R1bGUsXG4gIEljb25Nb2R1bGUsXG4gIExpbmtNb2R1bGUsXG4gIE1vZGFsTW9kdWxlLFxuICBUYWJzTW9kdWxlLFxuICBUb29sdGlwTW9kdWxlLFxufSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7VG9hc3RyTW9kdWxlfSBmcm9tICduZ3gtdG9hc3RyJztcbmltcG9ydCB7QXNzaWduVXNlclRvVGFza0NvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL2Fzc2lnbi11c2VyLXRvLXRhc2svYXNzaWduLXVzZXItdG8tdGFzay5jb21wb25lbnQnO1xuaW1wb3J0IHtUYXNrRGV0YWlsTW9kYWxDb21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy90YXNrLWRldGFpbC1tb2RhbC90YXNrLWRldGFpbC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHtUYXNrTGlzdENvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL3Rhc2stbGlzdC90YXNrLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7VGFza1JvdXRpbmdNb2R1bGV9IGZyb20gJy4vdGFzay1yb3V0aW5nLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1Rhc2tMaXN0Q29tcG9uZW50LCBUYXNrRGV0YWlsTW9kYWxDb21wb25lbnQsIEFzc2lnblVzZXJUb1Rhc2tDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRhc2tSb3V0aW5nTW9kdWxlLFxuICAgIENhcmJvbkxpc3RNb2R1bGUsXG4gICAgUGFnZUhlYWRlck1vZHVsZSxcbiAgICBXaWRnZXRNb2R1bGUsXG4gICAgU3Bpbm5lck1vZHVsZSxcbiAgICBTZWFyY2hhYmxlRHJvcGRvd25TZWxlY3RNb2R1bGUsXG4gICAgQ2FtdW5kYUZvcm1Nb2R1bGUsXG4gICAgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgVG9hc3RyTW9kdWxlLmZvclJvb3Qoe1xuICAgICAgcG9zaXRpb25DbGFzczogJ3RvYXN0LWJvdHRvbS1mdWxsLXdpZHRoJyxcbiAgICAgIHByZXZlbnREdXBsaWNhdGVzOiB0cnVlLFxuICAgIH0pLFxuICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JSb290KHtcbiAgICAgIGxvYWRlcjoge1xuICAgICAgICBwcm92aWRlOiBUcmFuc2xhdGVMb2FkZXIsXG4gICAgICAgIHVzZUZhY3Rvcnk6IEh0dHBMb2FkZXJGYWN0b3J5LFxuICAgICAgICBkZXBzOiBbSHR0cENsaWVudF0sXG4gICAgICB9LFxuICAgIH0pLFxuICAgIE5nYk1vZHVsZSxcbiAgICBGb3JtSW9Nb2R1bGUsXG4gICAgTW9kYWxNb2R1bGUsXG4gICAgTGlua01vZHVsZSxcbiAgICBQcm9jZXNzTGlua01vZHVsZSxcbiAgICBUYWJzTW9kdWxlLFxuICAgIENvbnRlbnRTd2l0Y2hlck1vZHVsZSxcbiAgICBSZW5kZXJJblBhZ2VIZWFkZXJEaXJlY3RpdmVNb2R1bGUsXG4gICAgRHJvcGRvd25Nb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBDb25maXJtYXRpb25Nb2RhbE1vZHVsZSxcbiAgICBTZWFyY2hGaWVsZHNNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtUYXNrTGlzdENvbXBvbmVudCwgVGFza0RldGFpbE1vZGFsQ29tcG9uZW50LCBBc3NpZ25Vc2VyVG9UYXNrQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgVGFza01vZHVsZSB7fVxuIl19
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3Rhc2svc3JjL2xpYi90YXNrLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3JELE9BQU8sRUFBQyxlQUFlLEVBQUUsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckUsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsaUNBQWlDLEVBQ2pDLDhCQUE4QixFQUM5QixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLFlBQVksR0FDYixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFDTCxZQUFZLEVBQ1oscUJBQXFCLEVBQ3JCLGNBQWMsRUFDZCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxVQUFVLEVBQ1YsYUFBYSxHQUNkLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLFlBQVksQ0FBQztBQUN4QyxPQUFPLEVBQUMs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Q2IsdUJBQXVCO3dCQUN2QixrQkFBa0I7d0JBQ2xCLHlCQUF5Qjt3QkFDekIsMEJBQTBCO3dCQUMxQixtQ0FBbUM7cUJBQ3BDO29CQUNELE9BQU8sRUFBRSxDQUFDLGlCQUFpQixFQUFFLHdCQUF3QixDQUFDO2lCQUN2RCIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0Jyb3dzZXJBbmltYXRpb25zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtOZ2JNb2R1bGV9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7VHJhbnNsYXRlTG9hZGVyLCBUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ2FtdW5kYUZvcm1Nb2R1bGUsXG4gIENhcmJvbkxpc3RNb2R1bGUsXG4gIENvbmZpcm1hdGlvbk1vZGFsTW9kdWxlLFxuICBGb3JtSW9Nb2R1bGUsXG4gIFBhZ2VIZWFkZXJNb2R1bGUsXG4gIFJlbmRlckluUGFnZUhlYWRlckRpcmVjdGl2ZU1vZHVsZSxcbiAgU2VhcmNoYWJsZURyb3Bkb3duU2VsZWN0TW9kdWxlLFxuICBTZWFyY2hGaWVsZHNNb2R1bGUsXG4gIFNwaW5uZXJNb2R1bGUsXG4gIFdpZGdldE1vZHVsZSxcbn0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0h0dHBMb2FkZXJGYWN0b3J5fSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuaW1wb3J0IHtQcm9jZXNzTGlua01vZHVsZX0gZnJvbSAnQHZhbHRpbW8vcHJvY2Vzcy1saW5rJztcbmltcG9ydCB7XG4gIEJ1dHRvbk1vZHVsZSxcbiAgQ29udGVudFN3aXRjaGVyTW9kdWxlLFxuICBEcm9wZG93bk1vZHVsZSxcbiAgSWNvbk1vZHVsZSxcbiAgTGlua01vZHVsZSxcbiAgTW9kYWxNb2R1bGUsXG4gIFRhYnNNb2R1bGUsXG4gIFRvb2x0aXBNb2R1bGUsXG59IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtUb2FzdHJNb2R1bGV9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHtBc3NpZ25Vc2VyVG9UYXNrQ29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvYXNzaWduLXVzZXItdG8tdGFzay9hc3NpZ24tdXNlci10by10YXNrLmNvbXBvbmVudCc7XG5pbXBvcnQge1Rhc2tEZXRhaWxNb2RhbENvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL3Rhc2stZGV0YWlsLW1vZGFsL3Rhc2stZGV0YWlsLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQge1Rhc2tMaXN0Q29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvdGFzay1saXN0L3Rhc2stbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHtUYXNrUm91dGluZ01vZHVsZX0gZnJvbSAnLi90YXNrLXJvdXRpbmcubW9kdWxlJztcbmltcG9ydCB7VGFza0RldGFpbENvbnRlbnRDb21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy90YXNrLWRldGFpbC1jb250ZW50L3Rhc2stZGV0YWlsLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7VGFza0RldGFpbEludGVybWVkaWF0ZVNhdmVDb21wb25lbnR9IGZyb20gJy4vY29tcG9uZW50cy90YXNrLWRldGFpbC1pbnRlcm1lZGlhdGUtc2F2ZS90YXNrLWRldGFpbC1pbnRlcm1lZGlhdGUtc2F2ZS5jb21wb25lbnQnO1xuaW1wb3J0IHtVcmxSZXNvbHZlclNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL3Byb2Nlc3MtbGluaydcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbVGFza0xpc3RDb21wb25lbnQsIFRhc2tEZXRhaWxNb2RhbENvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVGFza1JvdXRpbmdNb2R1bGUsXG4gICAgQ2FyYm9uTGlzdE1vZHVsZSxcbiAgICBQYWdlSGVhZGVyTW9kdWxlLFxuICAgIFdpZGdldE1vZHVsZSxcbiAgICBTcGlubmVyTW9kdWxlLFxuICAgIFNlYXJjaGFibGVEcm9wZG93blNlbGVjdE1vZHVsZSxcbiAgICBDYW11bmRhRm9ybU1vZHVsZSxcbiAgICBCcm93c2VyQW5pbWF0aW9uc01vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBUb2FzdHJNb2R1bGUuZm9yUm9vdCh7XG4gICAgICBwb3NpdGlvbkNsYXNzOiAndG9hc3QtYm90dG9tLWZ1bGwtd2lkdGgnLFxuICAgICAgcHJldmVudER1cGxpY2F0ZXM6IHRydWUsXG4gICAgfSksXG4gICAgVHJhbnNsYXRlTW9kdWxlLmZvclJvb3Qoe1xuICAgICAgbG9hZGVyOiB7XG4gICAgICAgIHByb3ZpZGU6IFRyYW5zbGF0ZUxvYWRlcixcbiAgICAgICAgdXNlRmFjdG9yeTogSHR0cExvYWRlckZhY3RvcnksXG4gICAgICAgIGRlcHM6IFtIdHRwQ2xpZW50XSxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgTmdiTW9kdWxlLFxuICAgIEZvcm1Jb01vZHVsZSxcbiAgICBNb2RhbE1vZHVsZSxcbiAgICBMaW5rTW9kdWxlLFxuICAgIFByb2Nlc3NMaW5rTW9kdWxlLFxuICAgIFRhYnNNb2R1bGUsXG4gICAgQ29udGVudFN3aXRjaGVyTW9kdWxlLFxuICAgIFJlbmRlckluUGFnZUhlYWRlckRpcmVjdGl2ZU1vZHVsZSxcbiAgICBEcm9wZG93bk1vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICAgIENvbmZpcm1hdGlvbk1vZGFsTW9kdWxlLFxuICAgIFNlYXJjaEZpZWxkc01vZHVsZSxcbiAgICBBc3NpZ25Vc2VyVG9UYXNrQ29tcG9uZW50LFxuICAgIFRhc2tEZXRhaWxDb250ZW50Q29tcG9uZW50LFxuICAgIFRhc2tEZXRhaWxJbnRlcm1lZGlhdGVTYXZlQ29tcG9uZW50LFxuICBdLFxuICBleHBvcnRzOiBbVGFza0xpc3RDb21wb25lbnQsIFRhc2tEZXRhaWxNb2RhbENvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgVGFza01vZHVsZSB7fVxuIl19