@gravitee/ui-policy-studio-angular 7.25.0 → 7.26.0-lock-policy-studio-v4-d790e0e

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 (32) hide show
  1. package/esm2020/lib/components/flow-details/gio-ps-flow-details.component.mjs +5 -3
  2. package/esm2020/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.mjs +19 -3
  3. package/esm2020/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.component.mjs +7 -4
  4. package/esm2020/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.component.mjs +8 -3
  5. package/esm2020/lib/gio-policy-studio.component.mjs +5 -3
  6. package/esm2020/lib/models/flow/Step.mjs +1 -1
  7. package/esm2020/lib/models/policy/Policy.mjs +1 -1
  8. package/esm2020/testing/lib/components/flow-details-phase/gio-ps-flow-details-phase.harness.mjs +9 -1
  9. package/esm2020/testing/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.harness.mjs +5 -1
  10. package/esm2020/testing/lib/models/flow/Step.mjs +1 -1
  11. package/esm2020/testing/lib/models/policy/Policy.fixture.mjs +6 -1
  12. package/esm2020/testing/lib/models/policy/Policy.mjs +1 -1
  13. package/fesm2015/gravitee-ui-policy-studio-angular-testing.mjs +21 -0
  14. package/fesm2015/gravitee-ui-policy-studio-angular-testing.mjs.map +1 -1
  15. package/fesm2015/gravitee-ui-policy-studio-angular.mjs +36 -11
  16. package/fesm2015/gravitee-ui-policy-studio-angular.mjs.map +1 -1
  17. package/fesm2020/gravitee-ui-policy-studio-angular-testing.mjs +17 -0
  18. package/fesm2020/gravitee-ui-policy-studio-angular-testing.mjs.map +1 -1
  19. package/fesm2020/gravitee-ui-policy-studio-angular.mjs +39 -11
  20. package/fesm2020/gravitee-ui-policy-studio-angular.mjs.map +1 -1
  21. package/lib/components/flow-details/gio-ps-flow-details.component.d.ts +2 -1
  22. package/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.d.ts +3 -1
  23. package/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.component.d.ts +2 -1
  24. package/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.component.d.ts +3 -0
  25. package/lib/gio-policy-studio.component.d.ts +6 -1
  26. package/lib/models/flow/Step.d.ts +4 -0
  27. package/lib/models/policy/Policy.d.ts +1 -0
  28. package/package.json +1 -1
  29. package/testing/lib/components/flow-details-phase/gio-ps-flow-details-phase.harness.d.ts +5 -0
  30. package/testing/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.harness.d.ts +1 -0
  31. package/testing/lib/models/flow/Step.d.ts +4 -0
  32. package/testing/lib/models/policy/Policy.d.ts +1 -0
@@ -102,10 +102,10 @@ export class GioPolicyStudioDetailsComponent {
102
102
  }
103
103
  }
104
104
  GioPolicyStudioDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioDetailsComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
105
- GioPolicyStudioDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioDetailsComponent, selector: "gio-ps-flow-details", inputs: { loading: "loading", apiType: "apiType", flow: "flow", entrypointsInfo: "entrypointsInfo", endpointsInfo: "endpointsInfo", policies: "policies" }, outputs: { flowChange: "flowChange", deleteFlow: "deleteFlow" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (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 http://www.apache.org/licenses/LICENSE-2.0\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\n<ng-container *ngIf=\"!loading; then flowDetailsTpl; else loadingTpl\"></ng-container>\n\n<ng-template #flowDetailsTpl>\n <ng-container *ngIf=\"flow; else emptyFlows\">\n <div class=\"header\">\n <div class=\"header__label\">Flow details</div>\n <div class=\"header__configBtn\">\n <button class=\"header__configBtn__edit\" mat-stroked-button mat-icon-button (click)=\"onEditFlow()\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button class=\"header__configBtn__delete\" mat-stroked-button mat-icon-button (click)=\"onDeleteFlow()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar class=\"infoBar\" [flow]=\"flow\" [entrypointsInfo]=\"entrypointsInfo\"></gio-ps-flow-details-info-bar>\n\n <div class=\"content\">\n <mat-tab-group *ngIf=\"apiType === 'MESSAGE'\" class=\"content__tabs\" dynamicHeight>\n <mat-tab label=\"Initial connection\" bodyClass=\"content__tabs__body\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Request phase\"\n description=\"Policies will be applied during the connection establishment\"\n [startConnector]=\"messageFlowEntrypointsInfo\"\n [endConnector]=\"endpointsInfo\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"REQUEST\"\n (stepsChange)=\"onStepsChange('request', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Response phase\"\n description=\"Policies will be applied during the connection termination\"\n [startConnector]=\"endpointsInfo\"\n [endConnector]=\"messageFlowEntrypointsInfo\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n <mat-tab label=\"Event messages\" bodyClass=\"content__tabs__body\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Publish phase\"\n description=\"Policies will be applied on messages sent to the endpoint\"\n [startConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode : 'PUBLISH'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'PUBLISH'\"\n [steps]=\"flow.publish ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"MESSAGE_RESPONSE\"\n (stepsChange)=\"onStepsChange('publish', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Subscribe phase\"\n description=\"Policies will be applied on messages received by the entrypoint\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'SUBSCRIBE'\"\n [endConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode : 'SUBSCRIBE'\"\n [steps]=\"flow.subscribe ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"MESSAGE_REQUEST\"\n (stepsChange)=\"onStepsChange('subscribe', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n </mat-tab-group>\n\n <ng-container *ngIf=\"apiType === 'PROXY'\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Request phase\"\n description=\"Policies will be applied during the connection establishment\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"REQUEST\"\n (stepsChange)=\"onStepsChange('request', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Response phase\"\n description=\"Policies will be applied during the connection termination\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </ng-container>\n </div>\n </ng-container>\n\n <ng-template #emptyFlows>\n <div class=\"emptyFlows\">\n <h2>No flows yet</h2>\n <p class=\"mat-body-1\">Flows allow you to customize the behavior of your API event phases through configurable policies</p>\n </div>\n </ng-template>\n</ng-template>\n\n<ng-template #loadingTpl>\n <div class=\"header loading\">\n <div class=\"header__label\">Flow details</div>\n <div class=\"header__configBtn\">\n <button class=\"header__configBtn__edit\" mat-stroked-button mat-icon-button disabled>\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button class=\"header__configBtn__delete\" mat-stroked-button mat-icon-button disabled>\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar class=\"infoBar loading\"></gio-ps-flow-details-info-bar>\n <div class=\"content loading\">\n <gio-loader></gio-loader>\n </div>\n</ng-template>\n", styles: [":host{display:flex;height:100%;flex-direction:column}.emptyFlows{display:flex;max-width:500px;height:100%;flex-direction:column;justify-content:center;margin:auto;text-align:center}.header{display:flex;align-items:center;padding:16px;border-bottom:1px solid #d3d5dc}.header__label{font:600 16px/24px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;display:flex;flex:1 1 auto;align-items:center;margin-bottom:0;gap:8px}.header__configBtn{display:flex;align-items:center;margin-left:8px;gap:8px}.infoBar{border-bottom:1px solid #d3d5dc}.infoBar.loading{min-height:52px}.content{overflow:auto;flex:1 1 auto;background-color:#f7f8fd}.content__tabs{min-height:100%;min-height:calc(100% - 64px)}.content__phase{margin:16px 16px 0}.content.loading{display:flex}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.GioPolicyStudioDetailsInfoBarComponent, selector: "gio-ps-flow-details-info-bar", inputs: ["flow", "entrypointsInfo"] }, { type: i5.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i5.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { type: i6.GioPolicyStudioDetailsPhaseComponent, selector: "gio-ps-flow-details-phase", inputs: ["steps", "name", "description", "startConnector", "endConnector", "apiType", "policies", "policyExecutionPhase"], outputs: ["stepsChange"] }, { type: i7.GioLoaderComponent, selector: "gio-loader" }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "gioFilterConnectorsByMode": i9.GioFilterConnectorsByModePipe } });
105
+ GioPolicyStudioDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioDetailsComponent, selector: "gio-ps-flow-details", inputs: { loading: "loading", apiType: "apiType", flow: "flow", entrypointsInfo: "entrypointsInfo", endpointsInfo: "endpointsInfo", policies: "policies", trialUrl: "trialUrl" }, outputs: { flowChange: "flowChange", deleteFlow: "deleteFlow" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (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 http://www.apache.org/licenses/LICENSE-2.0\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\n<ng-container *ngIf=\"!loading; then flowDetailsTpl; else loadingTpl\"></ng-container>\n\n<ng-template #flowDetailsTpl>\n <ng-container *ngIf=\"flow; else emptyFlows\">\n <div class=\"header\">\n <div class=\"header__label\">Flow details</div>\n <div class=\"header__configBtn\">\n <button class=\"header__configBtn__edit\" mat-stroked-button mat-icon-button (click)=\"onEditFlow()\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button class=\"header__configBtn__delete\" mat-stroked-button mat-icon-button (click)=\"onDeleteFlow()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar class=\"infoBar\" [flow]=\"flow\" [entrypointsInfo]=\"entrypointsInfo\"></gio-ps-flow-details-info-bar>\n\n <div class=\"content\">\n <mat-tab-group *ngIf=\"apiType === 'MESSAGE'\" class=\"content__tabs\" dynamicHeight>\n <mat-tab label=\"Initial connection\" bodyClass=\"content__tabs__body\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Request phase\"\n description=\"Policies will be applied during the connection establishment\"\n [startConnector]=\"messageFlowEntrypointsInfo\"\n [endConnector]=\"endpointsInfo\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"REQUEST\"\n (stepsChange)=\"onStepsChange('request', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Response phase\"\n description=\"Policies will be applied to the response from the initial connection\"\n [startConnector]=\"endpointsInfo\"\n [endConnector]=\"messageFlowEntrypointsInfo\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n <mat-tab label=\"Event messages\" bodyClass=\"content__tabs__body\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Publish phase\"\n description=\"Policies will be applied on messages sent to the endpoint\"\n [startConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode : 'PUBLISH'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'PUBLISH'\"\n [steps]=\"flow.publish ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"MESSAGE_RESPONSE\"\n (stepsChange)=\"onStepsChange('publish', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Subscribe phase\"\n description=\"Policies will be applied on messages received by the entrypoint\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'SUBSCRIBE'\"\n [endConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode : 'SUBSCRIBE'\"\n [steps]=\"flow.subscribe ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"MESSAGE_REQUEST\"\n (stepsChange)=\"onStepsChange('subscribe', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n </mat-tab-group>\n\n <ng-container *ngIf=\"apiType === 'PROXY'\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Request phase\"\n description=\"Policies will be applied during the connection establishment\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"REQUEST\"\n (stepsChange)=\"onStepsChange('request', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Response phase\"\n description=\"Policies will be applied during the connection termination\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </ng-container>\n </div>\n </ng-container>\n\n <ng-template #emptyFlows>\n <div class=\"emptyFlows\">\n <h2>No flows yet</h2>\n <p class=\"mat-body-1\">Flows allow you to customize the behavior of your API event phases through configurable policies</p>\n </div>\n </ng-template>\n</ng-template>\n\n<ng-template #loadingTpl>\n <div class=\"header loading\">\n <div class=\"header__label\">Flow details</div>\n <div class=\"header__configBtn\">\n <button class=\"header__configBtn__edit\" mat-stroked-button mat-icon-button disabled>\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button class=\"header__configBtn__delete\" mat-stroked-button mat-icon-button disabled>\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar class=\"infoBar loading\"></gio-ps-flow-details-info-bar>\n <div class=\"content loading\">\n <gio-loader></gio-loader>\n </div>\n</ng-template>\n", styles: [":host{display:flex;height:100%;flex-direction:column}.emptyFlows{display:flex;max-width:500px;height:100%;flex-direction:column;justify-content:center;margin:auto;text-align:center}.header{display:flex;align-items:center;padding:16px;border-bottom:1px solid #d3d5dc}.header__label{font:600 16px/24px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;display:flex;flex:1 1 auto;align-items:center;margin-bottom:0;gap:8px}.header__configBtn{display:flex;align-items:center;margin-left:8px;gap:8px}.infoBar{border-bottom:1px solid #d3d5dc}.infoBar.loading{min-height:52px}.content{overflow:auto;flex:1 1 auto;background-color:#f7f8fd}.content__tabs{min-height:100%;min-height:calc(100% - 64px)}.content__phase{margin:16px 16px 0}.content.loading{display:flex}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.GioPolicyStudioDetailsInfoBarComponent, selector: "gio-ps-flow-details-info-bar", inputs: ["flow", "entrypointsInfo"] }, { type: i5.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "disableRipple"], exportAs: ["matTabGroup"] }, { type: i5.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { type: i6.GioPolicyStudioDetailsPhaseComponent, selector: "gio-ps-flow-details-phase", inputs: ["steps", "name", "description", "startConnector", "endConnector", "apiType", "policies", "policyExecutionPhase", "trialUrl"], outputs: ["stepsChange"] }, { type: i7.GioLoaderComponent, selector: "gio-loader" }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "gioFilterConnectorsByMode": i9.GioFilterConnectorsByModePipe } });
106
106
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioDetailsComponent, decorators: [{
107
107
  type: Component,
108
- args: [{ selector: 'gio-ps-flow-details', template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (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 http://www.apache.org/licenses/LICENSE-2.0\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\n<ng-container *ngIf=\"!loading; then flowDetailsTpl; else loadingTpl\"></ng-container>\n\n<ng-template #flowDetailsTpl>\n <ng-container *ngIf=\"flow; else emptyFlows\">\n <div class=\"header\">\n <div class=\"header__label\">Flow details</div>\n <div class=\"header__configBtn\">\n <button class=\"header__configBtn__edit\" mat-stroked-button mat-icon-button (click)=\"onEditFlow()\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button class=\"header__configBtn__delete\" mat-stroked-button mat-icon-button (click)=\"onDeleteFlow()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar class=\"infoBar\" [flow]=\"flow\" [entrypointsInfo]=\"entrypointsInfo\"></gio-ps-flow-details-info-bar>\n\n <div class=\"content\">\n <mat-tab-group *ngIf=\"apiType === 'MESSAGE'\" class=\"content__tabs\" dynamicHeight>\n <mat-tab label=\"Initial connection\" bodyClass=\"content__tabs__body\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Request phase\"\n description=\"Policies will be applied during the connection establishment\"\n [startConnector]=\"messageFlowEntrypointsInfo\"\n [endConnector]=\"endpointsInfo\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"REQUEST\"\n (stepsChange)=\"onStepsChange('request', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Response phase\"\n description=\"Policies will be applied during the connection termination\"\n [startConnector]=\"endpointsInfo\"\n [endConnector]=\"messageFlowEntrypointsInfo\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n <mat-tab label=\"Event messages\" bodyClass=\"content__tabs__body\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Publish phase\"\n description=\"Policies will be applied on messages sent to the endpoint\"\n [startConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode : 'PUBLISH'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'PUBLISH'\"\n [steps]=\"flow.publish ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"MESSAGE_RESPONSE\"\n (stepsChange)=\"onStepsChange('publish', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Subscribe phase\"\n description=\"Policies will be applied on messages received by the entrypoint\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'SUBSCRIBE'\"\n [endConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode : 'SUBSCRIBE'\"\n [steps]=\"flow.subscribe ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"MESSAGE_REQUEST\"\n (stepsChange)=\"onStepsChange('subscribe', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n </mat-tab-group>\n\n <ng-container *ngIf=\"apiType === 'PROXY'\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Request phase\"\n description=\"Policies will be applied during the connection establishment\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"REQUEST\"\n (stepsChange)=\"onStepsChange('request', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Response phase\"\n description=\"Policies will be applied during the connection termination\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </ng-container>\n </div>\n </ng-container>\n\n <ng-template #emptyFlows>\n <div class=\"emptyFlows\">\n <h2>No flows yet</h2>\n <p class=\"mat-body-1\">Flows allow you to customize the behavior of your API event phases through configurable policies</p>\n </div>\n </ng-template>\n</ng-template>\n\n<ng-template #loadingTpl>\n <div class=\"header loading\">\n <div class=\"header__label\">Flow details</div>\n <div class=\"header__configBtn\">\n <button class=\"header__configBtn__edit\" mat-stroked-button mat-icon-button disabled>\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button class=\"header__configBtn__delete\" mat-stroked-button mat-icon-button disabled>\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar class=\"infoBar loading\"></gio-ps-flow-details-info-bar>\n <div class=\"content loading\">\n <gio-loader></gio-loader>\n </div>\n</ng-template>\n", styles: [":host{display:flex;height:100%;flex-direction:column}.emptyFlows{display:flex;max-width:500px;height:100%;flex-direction:column;justify-content:center;margin:auto;text-align:center}.header{display:flex;align-items:center;padding:16px;border-bottom:1px solid #d3d5dc}.header__label{font:600 16px/24px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;display:flex;flex:1 1 auto;align-items:center;margin-bottom:0;gap:8px}.header__configBtn{display:flex;align-items:center;margin-left:8px;gap:8px}.infoBar{border-bottom:1px solid #d3d5dc}.infoBar.loading{min-height:52px}.content{overflow:auto;flex:1 1 auto;background-color:#f7f8fd}.content__tabs{min-height:100%;min-height:calc(100% - 64px)}.content__phase{margin:16px 16px 0}.content.loading{display:flex}\n"] }]
108
+ args: [{ selector: 'gio-ps-flow-details', template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (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 http://www.apache.org/licenses/LICENSE-2.0\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\n<ng-container *ngIf=\"!loading; then flowDetailsTpl; else loadingTpl\"></ng-container>\n\n<ng-template #flowDetailsTpl>\n <ng-container *ngIf=\"flow; else emptyFlows\">\n <div class=\"header\">\n <div class=\"header__label\">Flow details</div>\n <div class=\"header__configBtn\">\n <button class=\"header__configBtn__edit\" mat-stroked-button mat-icon-button (click)=\"onEditFlow()\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button class=\"header__configBtn__delete\" mat-stroked-button mat-icon-button (click)=\"onDeleteFlow()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar class=\"infoBar\" [flow]=\"flow\" [entrypointsInfo]=\"entrypointsInfo\"></gio-ps-flow-details-info-bar>\n\n <div class=\"content\">\n <mat-tab-group *ngIf=\"apiType === 'MESSAGE'\" class=\"content__tabs\" dynamicHeight>\n <mat-tab label=\"Initial connection\" bodyClass=\"content__tabs__body\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Request phase\"\n description=\"Policies will be applied during the connection establishment\"\n [startConnector]=\"messageFlowEntrypointsInfo\"\n [endConnector]=\"endpointsInfo\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"REQUEST\"\n (stepsChange)=\"onStepsChange('request', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Response phase\"\n description=\"Policies will be applied to the response from the initial connection\"\n [startConnector]=\"endpointsInfo\"\n [endConnector]=\"messageFlowEntrypointsInfo\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n <mat-tab label=\"Event messages\" bodyClass=\"content__tabs__body\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Publish phase\"\n description=\"Policies will be applied on messages sent to the endpoint\"\n [startConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode : 'PUBLISH'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'PUBLISH'\"\n [steps]=\"flow.publish ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"MESSAGE_RESPONSE\"\n (stepsChange)=\"onStepsChange('publish', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Subscribe phase\"\n description=\"Policies will be applied on messages received by the entrypoint\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'SUBSCRIBE'\"\n [endConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode : 'SUBSCRIBE'\"\n [steps]=\"flow.subscribe ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n [trialUrl]=\"trialUrl\"\n policyExecutionPhase=\"MESSAGE_REQUEST\"\n (stepsChange)=\"onStepsChange('subscribe', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n </mat-tab-group>\n\n <ng-container *ngIf=\"apiType === 'PROXY'\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Request phase\"\n description=\"Policies will be applied during the connection establishment\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"REQUEST\"\n (stepsChange)=\"onStepsChange('request', $event)\"\n ></gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Response phase\"\n description=\"Policies will be applied during the connection termination\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode : 'REQUEST_RESPONSE'\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [policies]=\"policies\"\n policyExecutionPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </ng-container>\n </div>\n </ng-container>\n\n <ng-template #emptyFlows>\n <div class=\"emptyFlows\">\n <h2>No flows yet</h2>\n <p class=\"mat-body-1\">Flows allow you to customize the behavior of your API event phases through configurable policies</p>\n </div>\n </ng-template>\n</ng-template>\n\n<ng-template #loadingTpl>\n <div class=\"header loading\">\n <div class=\"header__label\">Flow details</div>\n <div class=\"header__configBtn\">\n <button class=\"header__configBtn__edit\" mat-stroked-button mat-icon-button disabled>\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button class=\"header__configBtn__delete\" mat-stroked-button mat-icon-button disabled>\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar class=\"infoBar loading\"></gio-ps-flow-details-info-bar>\n <div class=\"content loading\">\n <gio-loader></gio-loader>\n </div>\n</ng-template>\n", styles: [":host{display:flex;height:100%;flex-direction:column}.emptyFlows{display:flex;max-width:500px;height:100%;flex-direction:column;justify-content:center;margin:auto;text-align:center}.header{display:flex;align-items:center;padding:16px;border-bottom:1px solid #d3d5dc}.header__label{font:600 16px/24px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;display:flex;flex:1 1 auto;align-items:center;margin-bottom:0;gap:8px}.header__configBtn{display:flex;align-items:center;margin-left:8px;gap:8px}.infoBar{border-bottom:1px solid #d3d5dc}.infoBar.loading{min-height:52px}.content{overflow:auto;flex:1 1 auto;background-color:#f7f8fd}.content__tabs{min-height:100%;min-height:calc(100% - 64px)}.content__phase{margin:16px 16px 0}.content.loading{display:flex}\n"] }]
109
109
  }], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { loading: [{
110
110
  type: Input
111
111
  }], apiType: [{
@@ -118,9 +118,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
118
118
  type: Input
119
119
  }], policies: [{
120
120
  type: Input
121
+ }], trialUrl: [{
122
+ type: Input
121
123
  }], flowChange: [{
122
124
  type: Output
123
125
  }], deleteFlow: [{
124
126
  type: Output
125
127
  }] } });
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3ctZGV0YWlscy9naW8tcHMtZmxvdy1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzL2dpby1wcy1mbG93LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVqRyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUdsRSxPQUFPLEVBQ0wsNkNBQTZDLEdBRTlDLE1BQU0sd0ZBQXdGLENBQUM7QUFFaEcsT0FBTyxFQUNMLDJDQUEyQyxHQUU1QyxNQUFNLG9GQUFvRixDQUFDOzs7Ozs7Ozs7OztBQVE1RixNQUFNLE9BQU8sK0JBQStCO0lBMkIxQyxZQUE2QixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBekIxQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBTWhCLFNBQUksR0FBWSxTQUFTLENBQUM7UUFHMUIsb0JBQWUsR0FBb0IsRUFBRSxDQUFDO1FBR3RDLGtCQUFhLEdBQW9CLEVBQUUsQ0FBQztRQUdwQyxhQUFRLEdBQWEsRUFBRSxDQUFDO1FBR3hCLGVBQVUsR0FBRyxJQUFJLFlBQVks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QUs7Z0JBSUMsZUFBZTtzQkFEckIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxVQUFVO3NCQURoQixNQUFNO2dCQUlBLFVBQVU7c0JBRGhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgR0lPX0RJQUxPR19XSURUSCB9IGZyb20gJ0BncmF2aXRlZS91aS1wYXJ0aWNsZXMtYW5ndWxhcic7XG5cbmltcG9ydCB7IEZsb3dWTSB9IGZyb20gJy4uLy4uL2dpby1wb2xpY3ktc3R1ZGlvLm1vZGVsJztcbmltcG9ydCB7XG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dNZXNzYWdlRm9ybURpYWxvZ0NvbXBvbmVudCxcbiAgR2lvUG9saWN5U3R1ZGlvRmxvd01lc3NhZ2VGb3JtRGlhbG9nRGF0YSxcbn0gZnJvbSAnLi4vZmxvdy1mb3JtLWRpYWxvZy9mbG93LW1lc3NhZ2UtZm9ybS1kaWFsb2cvZ2lvLXBzLWZsb3ctbWVzc2FnZS1mb3JtLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBpVHlwZSwgQ2hhbm5lbFNlbGVjdG9yLCBDb25uZWN0b3JJbmZvLCBQb2xpY3ksIFN0ZXAgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgR2lvUG9saWN5U3R1ZGlvRmxvd1Byb3h5Rm9ybURpYWxvZ0NvbXBvbmVudCxcbiAgR2lvUG9saWN5U3R1ZGlvRmxvd1Byb3h5Rm9ybURpYWxvZ0RhdGEsXG59IGZyb20gJy4uL2Zsb3ctZm9ybS1kaWFsb2cvZmxvdy1wcm94eS1mb3JtLWRpYWxvZy9naW8tcHMtZmxvdy1wcm94eS1mb3JtLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgR2lvUG9saWN5U3R1ZGlvRmxvd0Zvcm1EaWFsb2dSZXN1bHQgfSBmcm9tICcuLi9mbG93LWZvcm0tZGlhbG9nL2dpby1wcy1mbG93LWZvcm0tZGlhbG9nLXJlc3VsdC5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dpby1wcy1mbG93LWRldGFpbHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBzLWZsb3ctZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dpby1wcy1mbG93LWRldGFpbHMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2lvUG9saWN5U3R1ZGlvRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsb2FkaW5nID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGFwaVR5cGUhOiBBcGlUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmbG93PzogRmxvd1ZNID0gdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbnRyeXBvaW50c0luZm86IENvbm5lY3RvckluZm9bXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbmRwb2ludHNJbmZvOiBDb25uZWN0b3JJbmZvW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcG9saWNpZXM6IFBvbGljeVtdID0gW107XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBmbG93Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGbG93Vk0+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBkZWxldGVGbG93ID0gbmV3IEV2ZW50RW1pdHRlcjxGbG93Vk0+KCk7XG5cbiAgcHVibGljIG1lc3NhZ2VGbG93RW50cnlwb2ludHNJbmZvOiBDb25uZWN0b3JJbmZvW10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG1hdERpYWxvZzogTWF0RGlhbG9nKSB7fVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuZW50cnlwb2ludHNJbmZvIHx8IGNoYW5nZXMuZmxvdykge1xuICAgICAgY29uc3QgY2hhbm5lbFNlbGVjdG9yID0gdGhpcy5mbG93Py5zZWxlY3RvcnM/LmZpbmQocyA9PiBzLnR5cGUgPT09ICdDSEFOTkVMJykgYXMgQ2hhbm5lbFNlbGVjdG9yO1xuXG4gICAgICBpZiAoIWNoYW5uZWxTZWxlY3Rvcikge1xuICAgICAgICAvLyBJZiBubyBjaGFubmVsIHNlbGVjdG9yIGZvdW5kLiBLZWVwIGRlZmF1bHQgdmFsdWVcbiAgICAgICAgdGhpcy5tZXNzYWdlRmxvd0VudHJ5cG9pbnRzSW5mbyA9IFtdO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMubWVzc2FnZUZsb3dFbnRyeXBvaW50c0luZm8gPVxuICAgICAgICB0aGlzLmVudHJ5cG9pbnRzSW5mbz8uZmlsdGVyKFxuICAgICAgICAgIGUgPT5cbiAgICAgICAgICAgIC8vIElmIG5vdCBlbnRyeXBvaW50cyBhcmUgZGVmaW5lZCwgYWxsIGVudHJ5cG9pbnRzIGFyZSB2YWxpZFxuICAgICAgICAgICAgIWNoYW5uZWxTZWxlY3Rvci5lbnRyeXBvaW50cyB8fCBpc0VtcHR5KGNoYW5uZWxTZWxlY3Rvci5lbnRyeXBvaW50cykgfHwgY2hhbm5lbFNlbGVjdG9yLmVudHJ5cG9pbnRzPy5pbmNsdWRlcyhlLnR5cGUpLFxuICAgICAgICApID8/IFtdO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkVkaXRGbG93KCk6IHZvaWQge1xuICAgIGNvbnN0IGRpYWxvZ1Jlc3VsdCA9XG4gICAgICB0aGlzLmFwaVR5cGUgPT09ICdNRVNTQUdFJ1xuICAgICAgICA/IHRoaXMubWF0RGlhbG9nXG4gICAgICAgICAgICAub3BlbjxcbiAgICAgICAgICAgICAgR2lvUG9saWN5U3R1ZGlvRmxvd01lc3NhZ2VGb3JtRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICAgICAgICBHaW9Qb2xpY3lTdHVkaW9GbG93TWVzc2FnZUZvcm1EaWFsb2dEYXRhLFxuICAgICAgICAgICAgICBHaW9Qb2xpY3lTdHVkaW9GbG93Rm9ybURpYWxvZ1Jlc3VsdFxuICAgICAgICAgICAgPihHaW9Qb2xpY3lTdHVkaW9GbG93TWVzc2FnZUZvcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGZsb3c6IHRoaXMuZmxvdyxcbiAgICAgICAgICAgICAgICBlbnRyeXBvaW50czogdGhpcy5lbnRyeXBvaW50c0luZm8gPz8gW10sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHJvbGU6ICdhbGVydGRpYWxvZycsXG4gICAgICAgICAgICAgIGlkOiAnZ2lvUHNGbG93TWVzc2FnZUZvcm1EaWFsb2cnLFxuICAgICAgICAgICAgICB3aWR0aDogR0lPX0RJQUxPR19XSURUSC5NRURJVU0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgOiB0aGlzLm1hdERpYWxvZ1xuICAgICAgICAgICAgLm9wZW48R2lvUG9saWN5U3R1ZGlvRmxvd1Byb3h5Rm9ybURpYWxvZ0NvbXBvbmVudCwgR2lvUG9saWN5U3R1ZGlvRmxvd1Byb3h5Rm9ybURpYWxvZ0RhdGEsIEdpb1BvbGljeVN0dWRpb0Zsb3dGb3JtRGlhbG9nUmVzdWx0PihcbiAgICAgICAgICAgICAgR2lvUG9saWN5U3R1ZGlvRmxvd1Byb3h5Rm9ybURpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgIGZsb3c6IHRoaXMuZmxvdyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJvbGU6ICdhbGVydGRpYWxvZycsXG4gICAgICAgICAgICAgICAgaWQ6ICdnaW9Qc0Zsb3dQcm94eUZvcm1EaWFsb2cnLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBHSU9fRElBTE9HX1dJRFRILk1FRElVTSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpO1xuXG4gICAgZGlhbG9nUmVzdWx0XG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKGNyZWF0ZWRPckVkaXRlZCA9PiB7XG4gICAgICAgICAgaWYgKCFjcmVhdGVkT3JFZGl0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmZsb3dDaGFuZ2UuZW1pdChjcmVhdGVkT3JFZGl0ZWQpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRlbGV0ZUZsb3coKTogdm9pZCB7XG4gICAgdGhpcy5kZWxldGVGbG93LmVtaXQodGhpcy5mbG93KTtcbiAgfVxuXG4gIHB1YmxpYyBvblN0ZXBzQ2hhbmdlKGZsb3dQaGFzZTogJ3JlcXVlc3QnIHwgJ3Jlc3BvbnNlJyB8ICdwdWJsaXNoJyB8ICdzdWJzY3JpYmUnLCBzdGVwczogU3RlcFtdKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmZsb3cpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmZsb3dDaGFuZ2UuZW1pdCh7XG4gICAgICAuLi50aGlzLmZsb3csXG4gICAgICBbZmxvd1BoYXNlXTogc3RlcHMsXG4gICAgICBfaGFzQ2hhbmdlZDogdHJ1ZSxcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuXG4gICAgQ29weXJpZ2h0IChDKSAyMDIzIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gICAgXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gICAgXG4gICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAgICBcbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuLS0+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhbG9hZGluZzsgdGhlbiBmbG93RGV0YWlsc1RwbDsgZWxzZSBsb2FkaW5nVHBsXCI+PC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjZmxvd0RldGFpbHNUcGw+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmbG93OyBlbHNlIGVtcHR5Rmxvd3NcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyX19sYWJlbFwiPkZsb3cgZGV0YWlsczwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlcl9fY29uZmlnQnRuXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJoZWFkZXJfX2NvbmZpZ0J0bl9fZWRpdFwiIG1hdC1zdHJva2VkLWJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uRWRpdEZsb3coKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOmVkaXQtcGVuY2lsXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJoZWFkZXJfX2NvbmZpZ0J0bl9fZGVsZXRlXCIgbWF0LXN0cm9rZWQtYnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib25EZWxldGVGbG93KClcIj5cbiAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzp0cmFzaFwiPjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGdpby1wcy1mbG93LWRldGFpbHMtaW5mby1iYXIgY2xhc3M9XCJpbmZvQmFyXCIgW2Zsb3ddPVwiZmxvd1wiIFtlbnRyeXBvaW50c0luZm9dPVwiZW50cnlwb2ludHNJbmZvXCI+PC9naW8tcHMtZmxvdy1kZXRhaWxzLWluZm8tYmFyPlxuXG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgIDxtYXQtdGFiLWdyb3VwICpuZ0lmPVwiYXBpVHlwZSA9PT0gJ01FU1NBR0UnXCIgY2xhc3M9XCJjb250ZW50X190YWJzXCIgZHluYW1pY0hlaWdodD5cbiAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJJbml0aWFsIGNvbm5lY3Rpb25cIiBib2R5Q2xhc3M9XCJjb250ZW50X190YWJzX19ib2R5XCI+XG4gICAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudF9fcGhhc2VcIlxuICAgICAgICAgICAgbmFtZT1cIlJlcXVlc3QgcGhhc2VcIlxuICAgICAgICAgICAgZGVzY3JpcHRpb249XCJQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnRcIlxuICAgICAgICAgICAgW3N0YXJ0Q29ubmVjdG9yXT1cIm1lc3NhZ2VGbG93RW50cnlwb2ludHNJbmZvXCJcbiAgICAgICAgICAgIFtlbmRDb25uZWN0b3JdPVwiZW5kcG9pbnRzSW5mb1wiXG4gICAgICAgICAgICBbc3RlcHNdPVwiZmxvdy5yZXF1ZXN0ID8/IFtdXCJcbiAgICAgICAgICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgICAgICAgICAgW3BvbGljaWVzXT1cInBvbGljaWVzXCJcbiAgICAgICAgICAgIHBvbGljeUV4ZWN1dGlvblBoYXNlPVwiUkVRVUVTVFwiXG4gICAgICAgICAgICAoc3RlcHNDaGFuZ2UpPVwib25TdGVwc0NoYW5nZSgncmVxdWVzdCcsICRldmVudClcIlxuICAgICAgICAgID48L2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2U+XG4gICAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudF9fcGhhc2VcIlxuICAgICAgICAgICAgbmFtZT1cIlJlc3BvbnNlIHBoYXNlXCJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uPVwiUG9saWNpZXMgd2lsbCBiZSBhcHBsaWVkIGR1cmluZyB0aGUgY29ubmVjdGlvbiB0ZXJtaW5hdGlvblwiXG4gICAgICAgICAgICBbc3RhcnRDb25uZWN0b3JdPVwiZW5kcG9pbnRzSW5mb1wiXG4gICAgICAgICAgICBbZW5kQ29ubmVjdG9yXT1cIm1lc3NhZ2VGbG93RW50cnlwb2ludHNJbmZvXCJcbiAgICAgICAgICAgIFtzdGVwc109XCJmbG93LnJlc3BvbnNlID8/IFtdXCJcbiAgICAgICAgICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgICAgICAgICAgW3BvbGljaWVzXT1cInBvbGljaWVzXCJcbiAgICAgICAgICAgIHBvbGljeUV4ZWN1dGlvblBoYXNlPVwiUkVTUE9OU0VcIlxuICAgICAgICAgICAgKHN0ZXBzQ2hhbmdlKT1cIm9uU3RlcHNDaGFuZ2UoJ3Jlc3BvbnNlJywgJGV2ZW50KVwiXG4gICAgICAgICAgPjwvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZT5cbiAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIkV2ZW50IG1lc3NhZ2VzXCIgYm9keUNsYXNzPVwiY29udGVudF9fdGFic19fYm9keVwiPlxuICAgICAgICAgIDxnaW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlXG4gICAgICAgICAgICBjbGFzcz1cImNvbnRlbnRfX3BoYXNlXCJcbiAgICAgICAgICAgIG5hbWU9XCJQdWJsaXNoIHBoYXNlXCJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uPVwiUG9saWNpZXMgd2lsbCBiZSBhcHBsaWVkIG9uIG1lc3NhZ2VzIHNlbnQgdG8gdGhlIGVuZHBvaW50XCJcbiAgICAgICAgICAgIFtzdGFydENvbm5lY3Rvcl09XCJtZXNzYWdlRmxvd0VudHJ5cG9pbnRzSW5mbyB8IGdpb0ZpbHRlckNvbm5lY3RvcnNCeU1vZGUgOiAnUFVCTElTSCdcIlxuICAgICAgICAgICAgW2VuZENvbm5lY3Rvcl09XCJlbmRwb2ludHNJbmZvIHwgZ2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZSA6ICdQVUJMSVNIJ1wiXG4gICAgICAgICAgICBbc3RlcHNdPVwiZmxvdy5wdWJsaXNoID8/IFtdXCJcbiAgICAgICAgICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgICAgICAgICAgW3BvbGljaWVzXT1cInBvbGljaWVzXCJcbiAgICAgICAgICAgIHBvbGljeUV4ZWN1dGlvblBoYXNlPVwiTUVTU0FHRV9SRVNQT05TRVwiXG4gICAgICAgICAgICAoc3RlcHNDaGFuZ2UpPVwib25TdGVwc0NoYW5nZSgncHVibGlzaCcsICRldmVudClcIlxuICAgICAgICAgID48L2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2U+XG4gICAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudF9fcGhhc2VcIlxuICAgICAgICAgICAgbmFtZT1cIlN1YnNjcmliZSBwaGFzZVwiXG4gICAgICAgICAgICBkZXNjcmlwdGlvbj1cIlBvbGljaWVzIHdpbGwgYmUgYXBwbGllZCBvbiBtZXNzYWdlcyByZWNlaXZlZCBieSB0aGUgZW50cnlwb2ludFwiXG4gICAgICAgICAgICBbc3RhcnRDb25uZWN0b3JdPVwiZW5kcG9pbnRzSW5mbyB8IGdpb0ZpbHRlckNvbm5lY3RvcnNCeU1vZGUgOiAnU1VCU0NSSUJFJ1wiXG4gICAgICAgICAgICBbZW5kQ29ubmVjdG9yXT1cIm1lc3NhZ2VGbG93RW50cnlwb2ludHNJbmZvIHwgZ2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZSA6ICdTVUJTQ1JJQkUnXCJcbiAgICAgICAgICAgIFtzdGVwc109XCJmbG93LnN1YnNjcmliZSA/PyBbXVwiXG4gICAgICAgICAgICBbYXBpVHlwZV09XCJhcGlUeXBlXCJcbiAgICAgICAgICAgIFtwb2xpY2llc109XCJwb2xpY2llc1wiXG4gICAgICAgICAgICBwb2xpY3lFeGVjdXRpb25QaGFzZT1cIk1FU1NBR0VfUkVRVUVTVFwiXG4gICAgICAgICAgICAoc3RlcHNDaGFuZ2UpPVwib25TdGVwc0NoYW5nZSgnc3Vic2NyaWJlJywgJGV2ZW50KVwiXG4gICAgICAgICAgPjwvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZT5cbiAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgPC9tYXQtdGFiLWdyb3VwPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBpVHlwZSA9PT0gJ1BST1hZJ1wiPlxuICAgICAgICA8Z2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZVxuICAgICAgICAgIGNsYXNzPVwiY29udGVudF9fcGhhc2VcIlxuICAgICAgICAgIG5hbWU9XCJSZXF1ZXN0IHBoYXNlXCJcbiAgICAgICAgICBkZXNjcmlwdGlvbj1cIlBvbGljaWVzIHdpbGwgYmUgYXBwbGllZCBkdXJpbmcgdGhlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudFwiXG4gICAgICAgICAgW3N0YXJ0Q29ubmVjdG9yXT1cImVudHJ5cG9pbnRzSW5mbyB8IGdpb0ZpbHRlckNvbm5lY3RvcnNCeU1vZGUgOiAnUkVRVUVTVF9SRVNQT05TRSdcIlxuICAgICAgICAgIFtlbmRDb25uZWN0b3JdPVwiZW5kcG9pbnRzSW5mbyB8IGdpb0ZpbHRlckNvbm5lY3RvcnNCeU1vZGUgOiAnUkVRVUVTVF9SRVNQT05TRSdcIlxuICAgICAgICAgIFtzdGVwc109XCJmbG93LnJlcXVlc3QgPz8gW11cIlxuICAgICAgICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgICAgICAgIFtwb2xpY2llc109XCJwb2xpY2llc1wiXG4gICAgICAgICAgcG9saWN5RXhlY3V0aW9uUGhhc2U9XCJSRVFVRVNUXCJcbiAgICAgICAgICAoc3RlcHNDaGFuZ2UpPVwib25TdGVwc0NoYW5nZSgncmVxdWVzdCcsICRldmVudClcIlxuICAgICAgICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlPlxuICAgICAgICA8Z2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZVxuICAgICAgICAgIGNsYXNzPVwiY29udGVudF9fcGhhc2VcIlxuICAgICAgICAgIG5hbWU9XCJSZXNwb25zZSBwaGFzZVwiXG4gICAgICAgICAgZGVzY3JpcHRpb249XCJQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSBjb25uZWN0aW9uIHRlcm1pbmF0aW9uXCJcbiAgICAgICAgICBbc3RhcnRDb25uZWN0b3JdPVwiZW5kcG9pbnRzSW5mbyB8IGdpb0ZpbHRlckNvbm5lY3RvcnNCeU1vZGUgOiAnUkVRVUVTVF9SRVNQT05TRSdcIlxuICAgICAgICAgIFtlbmRDb25uZWN0b3JdPVwiZW50cnlwb2ludHNJbmZvIHwgZ2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZSA6ICdSRVFVRVNUX1JFU1BPTlNFJ1wiXG4gICAgICAgICAgW3N0ZXBzXT1cImZsb3cucmVzcG9uc2UgPz8gW11cIlxuICAgICAgICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgICAgICAgIFtwb2xpY2llc109XCJwb2xpY2llc1wiXG4gICAgICAgICAgcG9saWN5RXhlY3V0aW9uUGhhc2U9XCJSRVNQT05TRVwiXG4gICAgICAgICAgKHN0ZXBzQ2hhbmdlKT1cIm9uU3RlcHNDaGFuZ2UoJ3Jlc3BvbnNlJywgJGV2ZW50KVwiXG4gICAgICAgID48L2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2U+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPG5nLXRlbXBsYXRlICNlbXB0eUZsb3dzPlxuICAgIDxkaXYgY2xhc3M9XCJlbXB0eUZsb3dzXCI+XG4gICAgICA8aDI+Tm8gZmxvd3MgeWV0PC9oMj5cbiAgICAgIDxwIGNsYXNzPVwibWF0LWJvZHktMVwiPkZsb3dzIGFsbG93IHlvdSB0byBjdXN0b21pemUgdGhlIGJlaGF2aW9yIG9mIHlvdXIgQVBJIGV2ZW50IHBoYXNlcyB0aHJvdWdoIGNvbmZpZ3VyYWJsZSBwb2xpY2llczwvcD5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RwbD5cbiAgPGRpdiBjbGFzcz1cImhlYWRlciBsb2FkaW5nXCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlcl9fbGFiZWxcIj5GbG93IGRldGFpbHM8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyX19jb25maWdCdG5cIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJoZWFkZXJfX2NvbmZpZ0J0bl9fZWRpdFwiIG1hdC1zdHJva2VkLWJ1dHRvbiBtYXQtaWNvbi1idXR0b24gZGlzYWJsZWQ+XG4gICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOmVkaXQtcGVuY2lsXCI+PC9tYXQtaWNvbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImhlYWRlcl9fY29uZmlnQnRuX19kZWxldGVcIiBtYXQtc3Ryb2tlZC1idXR0b24gbWF0LWljb24tYnV0dG9uIGRpc2FibGVkPlxuICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzp0cmFzaFwiPjwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxnaW8tcHMtZmxvdy1kZXRhaWxzLWluZm8tYmFyIGNsYXNzPVwiaW5mb0JhciBsb2FkaW5nXCI+PC9naW8tcHMtZmxvdy1kZXRhaWxzLWluZm8tYmFyPlxuICA8ZGl2IGNsYXNzPVwiY29udGVudCBsb2FkaW5nXCI+XG4gICAgPGdpby1sb2FkZXI+PC9naW8tbG9hZGVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3ctZGV0YWlscy9naW8tcHMtZmxvdy1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzL2dpby1wcy1mbG93LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUVqRyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUdsRSxPQUFPLEVBQ0wsNkNBQTZDLEdBRTlDLE1BQU0sd0ZBQXdGLENBQUM7QUFFaEcsT0FBTyxFQUNMLDJDQUEyQyxHQUU1QyxNQUFNLG9GQUFvRixDQUFDOzs7Ozs7Ozs7OztBQVE1RixNQUFNLE9BQU8sK0JBQStCO0lBOEIxQyxZQUE2QixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBNUIxQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBTWhCLFNBQUksR0FBWSxTQUFTLENBQUM7UUFHMUIsb0JBQWUsR0FBb0IsRUFBRSxDQUFDO1FBR3RDLGtCQUFhLEdBQW9CLEVBQUUsQ0FBQztRQUdwQyxhQUFRLEdBQWEsRUFBRSxDQUFDO1FBTXhCLGVBQVUsR0FBRyxJQUFJLFlBQVks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QUs7Z0JBSUMsZUFBZTtzQkFEckIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsTUFBTTtnQkFJQSxVQUFVO3NCQURoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAyMiBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEdJT19ESUFMT0dfV0lEVEggfSBmcm9tICdAZ3Jhdml0ZWUvdWktcGFydGljbGVzLWFuZ3VsYXInO1xuXG5pbXBvcnQgeyBGbG93Vk0gfSBmcm9tICcuLi8uLi9naW8tcG9saWN5LXN0dWRpby5tb2RlbCc7XG5pbXBvcnQge1xuICBHaW9Qb2xpY3lTdHVkaW9GbG93TWVzc2FnZUZvcm1EaWFsb2dDb21wb25lbnQsXG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dNZXNzYWdlRm9ybURpYWxvZ0RhdGEsXG59IGZyb20gJy4uL2Zsb3ctZm9ybS1kaWFsb2cvZmxvdy1tZXNzYWdlLWZvcm0tZGlhbG9nL2dpby1wcy1mbG93LW1lc3NhZ2UtZm9ybS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEFwaVR5cGUsIENoYW5uZWxTZWxlY3RvciwgQ29ubmVjdG9ySW5mbywgUG9saWN5LCBTdGVwIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7XG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dDb21wb25lbnQsXG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dEYXRhLFxufSBmcm9tICcuLi9mbG93LWZvcm0tZGlhbG9nL2Zsb3ctcHJveHktZm9ybS1kaWFsb2cvZ2lvLXBzLWZsb3ctcHJveHktZm9ybS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEdpb1BvbGljeVN0dWRpb0Zsb3dGb3JtRGlhbG9nUmVzdWx0IH0gZnJvbSAnLi4vZmxvdy1mb3JtLWRpYWxvZy9naW8tcHMtZmxvdy1mb3JtLWRpYWxvZy1yZXN1bHQubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tcHMtZmxvdy1kZXRhaWxzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dpby1wcy1mbG93LWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9naW8tcHMtZmxvdy1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEdpb1BvbGljeVN0dWRpb0RldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcGlUeXBlITogQXBpVHlwZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZmxvdz86IEZsb3dWTSA9IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZW50cnlwb2ludHNJbmZvOiBDb25uZWN0b3JJbmZvW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZW5kcG9pbnRzSW5mbzogQ29ubmVjdG9ySW5mb1tdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBvbGljaWVzOiBQb2xpY3lbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0cmlhbFVybCE6IHN0cmluZztcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGZsb3dDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEZsb3dWTT4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGRlbGV0ZUZsb3cgPSBuZXcgRXZlbnRFbWl0dGVyPEZsb3dWTT4oKTtcblxuICBwdWJsaWMgbWVzc2FnZUZsb3dFbnRyeXBvaW50c0luZm86IENvbm5lY3RvckluZm9bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbWF0RGlhbG9nOiBNYXREaWFsb2cpIHt9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5lbnRyeXBvaW50c0luZm8gfHwgY2hhbmdlcy5mbG93KSB7XG4gICAgICBjb25zdCBjaGFubmVsU2VsZWN0b3IgPSB0aGlzLmZsb3c/LnNlbGVjdG9ycz8uZmluZChzID0+IHMudHlwZSA9PT0gJ0NIQU5ORUwnKSBhcyBDaGFubmVsU2VsZWN0b3I7XG5cbiAgICAgIGlmICghY2hhbm5lbFNlbGVjdG9yKSB7XG4gICAgICAgIC8vIElmIG5vIGNoYW5uZWwgc2VsZWN0b3IgZm91bmQuIEtlZXAgZGVmYXVsdCB2YWx1ZVxuICAgICAgICB0aGlzLm1lc3NhZ2VGbG93RW50cnlwb2ludHNJbmZvID0gW107XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5tZXNzYWdlRmxvd0VudHJ5cG9pbnRzSW5mbyA9XG4gICAgICAgIHRoaXMuZW50cnlwb2ludHNJbmZvPy5maWx0ZXIoXG4gICAgICAgICAgZSA9PlxuICAgICAgICAgICAgLy8gSWYgbm90IGVudHJ5cG9pbnRzIGFyZSBkZWZpbmVkLCBhbGwgZW50cnlwb2ludHMgYXJlIHZhbGlkXG4gICAgICAgICAgICAhY2hhbm5lbFNlbGVjdG9yLmVudHJ5cG9pbnRzIHx8IGlzRW1wdHkoY2hhbm5lbFNlbGVjdG9yLmVudHJ5cG9pbnRzKSB8fCBjaGFubmVsU2VsZWN0b3IuZW50cnlwb2ludHM/LmluY2x1ZGVzKGUudHlwZSksXG4gICAgICAgICkgPz8gW107XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uRWRpdEZsb3coKTogdm9pZCB7XG4gICAgY29uc3QgZGlhbG9nUmVzdWx0ID1cbiAgICAgIHRoaXMuYXBpVHlwZSA9PT0gJ01FU1NBR0UnXG4gICAgICAgID8gdGhpcy5tYXREaWFsb2dcbiAgICAgICAgICAgIC5vcGVuPFxuICAgICAgICAgICAgICBHaW9Qb2xpY3lTdHVkaW9GbG93TWVzc2FnZUZvcm1EaWFsb2dDb21wb25lbnQsXG4gICAgICAgICAgICAgIEdpb1BvbGljeVN0dWRpb0Zsb3dNZXNzYWdlRm9ybURpYWxvZ0RhdGEsXG4gICAgICAgICAgICAgIEdpb1BvbGljeVN0dWRpb0Zsb3dGb3JtRGlhbG9nUmVzdWx0XG4gICAgICAgICAgICA+KEdpb1BvbGljeVN0dWRpb0Zsb3dNZXNzYWdlRm9ybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZmxvdzogdGhpcy5mbG93LFxuICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRzOiB0aGlzLmVudHJ5cG9pbnRzSW5mbyA/PyBbXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgcm9sZTogJ2FsZXJ0ZGlhbG9nJyxcbiAgICAgICAgICAgICAgaWQ6ICdnaW9Qc0Zsb3dNZXNzYWdlRm9ybURpYWxvZycsXG4gICAgICAgICAgICAgIHdpZHRoOiBHSU9fRElBTE9HX1dJRFRILk1FRElVTSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICA6IHRoaXMubWF0RGlhbG9nXG4gICAgICAgICAgICAub3BlbjxHaW9Qb2xpY3lTdHVkaW9GbG93UHJveHlGb3JtRGlhbG9nQ29tcG9uZW50LCBHaW9Qb2xpY3lTdHVkaW9GbG93UHJveHlGb3JtRGlhbG9nRGF0YSwgR2lvUG9saWN5U3R1ZGlvRmxvd0Zvcm1EaWFsb2dSZXN1bHQ+KFxuICAgICAgICAgICAgICBHaW9Qb2xpY3lTdHVkaW9GbG93UHJveHlGb3JtRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgZmxvdzogdGhpcy5mbG93LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcm9sZTogJ2FsZXJ0ZGlhbG9nJyxcbiAgICAgICAgICAgICAgICBpZDogJ2dpb1BzRmxvd1Byb3h5Rm9ybURpYWxvZycsXG4gICAgICAgICAgICAgICAgd2lkdGg6IEdJT19ESUFMT0dfV0lEVEguTUVESVVNLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKCk7XG5cbiAgICBkaWFsb2dSZXN1bHRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoY3JlYXRlZE9yRWRpdGVkID0+IHtcbiAgICAgICAgICBpZiAoIWNyZWF0ZWRPckVkaXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZmxvd0NoYW5nZS5lbWl0KGNyZWF0ZWRPckVkaXRlZCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG9uRGVsZXRlRmxvdygpOiB2b2lkIHtcbiAgICB0aGlzLmRlbGV0ZUZsb3cuZW1pdCh0aGlzLmZsb3cpO1xuICB9XG5cbiAgcHVibGljIG9uU3RlcHNDaGFuZ2UoZmxvd1BoYXNlOiAncmVxdWVzdCcgfCAncmVzcG9uc2UnIHwgJ3B1Ymxpc2gnIHwgJ3N1YnNjcmliZScsIHN0ZXBzOiBTdGVwW10pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZmxvdykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuZmxvd0NoYW5nZS5lbWl0KHtcbiAgICAgIC4uLnRoaXMuZmxvdyxcbiAgICAgIFtmbG93UGhhc2VdOiBzdGVwcyxcbiAgICAgIF9oYXNDaGFuZ2VkOiB0cnVlLFxuICAgIH0pO1xuICB9XG59XG4iLCI8IS0tXG5cbiAgICBDb3B5cmlnaHQgKEMpIDIwMjMgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAgICBcbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgICBcbiAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICAgIFxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4tLT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2FkaW5nOyB0aGVuIGZsb3dEZXRhaWxzVHBsOyBlbHNlIGxvYWRpbmdUcGxcIj48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNmbG93RGV0YWlsc1RwbD5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZsb3c7IGVsc2UgZW1wdHlGbG93c1wiPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJfX2xhYmVsXCI+RmxvdyBkZXRhaWxzPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyX19jb25maWdCdG5cIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImhlYWRlcl9fY29uZmlnQnRuX19lZGl0XCIgbWF0LXN0cm9rZWQtYnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib25FZGl0RmxvdygpXCI+XG4gICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86ZWRpdC1wZW5jaWxcIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImhlYWRlcl9fY29uZmlnQnRuX19kZWxldGVcIiBtYXQtc3Ryb2tlZC1idXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvbkRlbGV0ZUZsb3coKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOnRyYXNoXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8Z2lvLXBzLWZsb3ctZGV0YWlscy1pbmZvLWJhciBjbGFzcz1cImluZm9CYXJcIiBbZmxvd109XCJmbG93XCIgW2VudHJ5cG9pbnRzSW5mb109XCJlbnRyeXBvaW50c0luZm9cIj48L2dpby1wcy1mbG93LWRldGFpbHMtaW5mby1iYXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgPG1hdC10YWItZ3JvdXAgKm5nSWY9XCJhcGlUeXBlID09PSAnTUVTU0FHRSdcIiBjbGFzcz1cImNvbnRlbnRfX3RhYnNcIiBkeW5hbWljSGVpZ2h0PlxuICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIkluaXRpYWwgY29ubmVjdGlvblwiIGJvZHlDbGFzcz1cImNvbnRlbnRfX3RhYnNfX2JvZHlcIj5cbiAgICAgICAgICA8Z2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZVxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50X19waGFzZVwiXG4gICAgICAgICAgICBuYW1lPVwiUmVxdWVzdCBwaGFzZVwiXG4gICAgICAgICAgICBkZXNjcmlwdGlvbj1cIlBvbGljaWVzIHdpbGwgYmUgYXBwbGllZCBkdXJpbmcgdGhlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudFwiXG4gICAgICAgICAgICBbc3RhcnRDb25uZWN0b3JdPVwibWVzc2FnZUZsb3dFbnRyeXBvaW50c0luZm9cIlxuICAgICAgICAgICAgW2VuZENvbm5lY3Rvcl09XCJlbmRwb2ludHNJbmZvXCJcbiAgICAgICAgICAgIFtzdGVwc109XCJmbG93LnJlcXVlc3QgPz8gW11cIlxuICAgICAgICAgICAgW2FwaVR5cGVdPVwiYXBpVHlwZVwiXG4gICAgICAgICAgICBbcG9saWNpZXNdPVwicG9saWNpZXNcIlxuICAgICAgICAgICAgW3RyaWFsVXJsXT1cInRyaWFsVXJsXCJcbiAgICAgICAgICAgIHBvbGljeUV4ZWN1dGlvblBoYXNlPVwiUkVRVUVTVFwiXG4gICAgICAgICAgICAoc3RlcHNDaGFuZ2UpPVwib25TdGVwc0NoYW5nZSgncmVxdWVzdCcsICRldmVudClcIlxuICAgICAgICAgID48L2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2U+XG4gICAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudF9fcGhhc2VcIlxuICAgICAgICAgICAgbmFtZT1cIlJlc3BvbnNlIHBoYXNlXCJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uPVwiUG9saWNpZXMgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSByZXNwb25zZSBmcm9tIHRoZSBpbml0aWFsIGNvbm5lY3Rpb25cIlxuICAgICAgICAgICAgW3N0YXJ0Q29ubmVjdG9yXT1cImVuZHBvaW50c0luZm9cIlxuICAgICAgICAgICAgW2VuZENvbm5lY3Rvcl09XCJtZXNzYWdlRmxvd0VudHJ5cG9pbnRzSW5mb1wiXG4gICAgICAgICAgICBbc3RlcHNdPVwiZmxvdy5yZXNwb25zZSA/PyBbXVwiXG4gICAgICAgICAgICBbYXBpVHlwZV09XCJhcGlUeXBlXCJcbiAgICAgICAgICAgIFtwb2xpY2llc109XCJwb2xpY2llc1wiXG4gICAgICAgICAgICBbdHJpYWxVcmxdPVwidHJpYWxVcmxcIlxuICAgICAgICAgICAgcG9saWN5RXhlY3V0aW9uUGhhc2U9XCJSRVNQT05TRVwiXG4gICAgICAgICAgICAoc3RlcHNDaGFuZ2UpPVwib25TdGVwc0NoYW5nZSgncmVzcG9uc2UnLCAkZXZlbnQpXCJcbiAgICAgICAgICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICAgIDxtYXQtdGFiIGxhYmVsPVwiRXZlbnQgbWVzc2FnZXNcIiBib2R5Q2xhc3M9XCJjb250ZW50X190YWJzX19ib2R5XCI+XG4gICAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudF9fcGhhc2VcIlxuICAgICAgICAgICAgbmFtZT1cIlB1Ymxpc2ggcGhhc2VcIlxuICAgICAgICAgICAgZGVzY3JpcHRpb249XCJQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgb24gbWVzc2FnZXMgc2VudCB0byB0aGUgZW5kcG9pbnRcIlxuICAgICAgICAgICAgW3N0YXJ0Q29ubmVjdG9yXT1cIm1lc3NhZ2VGbG93RW50cnlwb2ludHNJbmZvIHwgZ2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZSA6ICdQVUJMSVNIJ1wiXG4gICAgICAgICAgICBbZW5kQ29ubmVjdG9yXT1cImVuZHBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlIDogJ1BVQkxJU0gnXCJcbiAgICAgICAgICAgIFtzdGVwc109XCJmbG93LnB1Ymxpc2ggPz8gW11cIlxuICAgICAgICAgICAgW2FwaVR5cGVdPVwiYXBpVHlwZVwiXG4gICAgICAgICAgICBbcG9saWNpZXNdPVwicG9saWNpZXNcIlxuICAgICAgICAgICAgW3RyaWFsVXJsXT1cInRyaWFsVXJsXCJcbiAgICAgICAgICAgIHBvbGljeUV4ZWN1dGlvblBoYXNlPVwiTUVTU0FHRV9SRVNQT05TRVwiXG4gICAgICAgICAgICAoc3RlcHNDaGFuZ2UpPVwib25TdGVwc0NoYW5nZSgncHVibGlzaCcsICRldmVudClcIlxuICAgICAgICAgID48L2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2U+XG4gICAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudF9fcGhhc2VcIlxuICAgICAgICAgICAgbmFtZT1cIlN1YnNjcmliZSBwaGFzZVwiXG4gICAgICAgICAgICBkZXNjcmlwdGlvbj1cIlBvbGljaWVzIHdpbGwgYmUgYXBwbGllZCBvbiBtZXNzYWdlcyByZWNlaXZlZCBieSB0aGUgZW50cnlwb2ludFwiXG4gICAgICAgICAgICBbc3RhcnRDb25uZWN0b3JdPVwiZW5kcG9pbnRzSW5mbyB8IGdpb0ZpbHRlckNvbm5lY3RvcnNCeU1vZGUgOiAnU1VCU0NSSUJFJ1wiXG4gICAgICAgICAgICBbZW5kQ29ubmVjdG9yXT1cIm1lc3NhZ2VGbG93RW50cnlwb2ludHNJbmZvIHwgZ2lvRmlsdGVyQ29ubmVjdG9yc0J5TW9kZSA6ICdTVUJTQ1JJQkUnXCJcbiAgICAgICAgICAgIFtzdGVwc109XCJmbG93LnN1YnNjcmliZSA/PyBbXVwiXG4gICAgICAgICAgICBbYXBpVHlwZV09XCJhcGlUeXBlXCJcbiAgICAgICAgICAgIFtwb2xpY2llc109XCJwb2xpY2llc1wiXG4gICAgICAgICAgICBbdHJpYWxVcmxdPVwidHJpYWxVcmxcIlxuICAgICAgICAgICAgcG9saWN5RXhlY3V0aW9uUGhhc2U9XCJNRVNTQUdFX1JFUVVFU1RcIlxuICAgICAgICAgICAgKHN0ZXBzQ2hhbmdlKT1cIm9uU3RlcHNDaGFuZ2UoJ3N1YnNjcmliZScsICRldmVudClcIlxuICAgICAgICAgID48L2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2U+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgIDwvbWF0LXRhYi1ncm91cD5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwaVR5cGUgPT09ICdQUk9YWSdcIj5cbiAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICAgICAgICBjbGFzcz1cImNvbnRlbnRfX3BoYXNlXCJcbiAgICAgICAgICBuYW1lPVwiUmVxdWVzdCBwaGFzZVwiXG4gICAgICAgICAgZGVzY3JpcHRpb249XCJQb2xpY2llcyB3aWxsIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnRcIlxuICAgICAgICAgIFtzdGFydENvbm5lY3Rvcl09XCJlbnRyeXBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlIDogJ1JFUVVFU1RfUkVTUE9OU0UnXCJcbiAgICAgICAgICBbZW5kQ29ubmVjdG9yXT1cImVuZHBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlIDogJ1JFUVVFU1RfUkVTUE9OU0UnXCJcbiAgICAgICAgICBbc3RlcHNdPVwiZmxvdy5yZXF1ZXN0ID8/IFtdXCJcbiAgICAgICAgICBbYXBpVHlwZV09XCJhcGlUeXBlXCJcbiAgICAgICAgICBbcG9saWNpZXNdPVwicG9saWNpZXNcIlxuICAgICAgICAgIHBvbGljeUV4ZWN1dGlvblBoYXNlPVwiUkVRVUVTVFwiXG4gICAgICAgICAgKHN0ZXBzQ2hhbmdlKT1cIm9uU3RlcHNDaGFuZ2UoJ3JlcXVlc3QnLCAkZXZlbnQpXCJcbiAgICAgICAgPjwvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZT5cbiAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2VcbiAgICAgICAgICBjbGFzcz1cImNvbnRlbnRfX3BoYXNlXCJcbiAgICAgICAgICBuYW1lPVwiUmVzcG9uc2UgcGhhc2VcIlxuICAgICAgICAgIGRlc2NyaXB0aW9uPVwiUG9saWNpZXMgd2lsbCBiZSBhcHBsaWVkIGR1cmluZyB0aGUgY29ubmVjdGlvbiB0ZXJtaW5hdGlvblwiXG4gICAgICAgICAgW3N0YXJ0Q29ubmVjdG9yXT1cImVuZHBvaW50c0luZm8gfCBnaW9GaWx0ZXJDb25uZWN0b3JzQnlNb2RlIDogJ1JFUVVFU1RfUkVTUE9OU0UnXCJcbiAgICAgICAgICBbZW5kQ29ubmVjdG9yXT1cImVudHJ5cG9pbnRzSW5mbyB8IGdpb0ZpbHRlckNvbm5lY3RvcnNCeU1vZGUgOiAnUkVRVUVTVF9SRVNQT05TRSdcIlxuICAgICAgICAgIFtzdGVwc109XCJmbG93LnJlc3BvbnNlID8/IFtdXCJcbiAgICAgICAgICBbYXBpVHlwZV09XCJhcGlUeXBlXCJcbiAgICAgICAgICBbcG9saWNpZXNdPVwicG9saWNpZXNcIlxuICAgICAgICAgIHBvbGljeUV4ZWN1dGlvblBoYXNlPVwiUkVTUE9OU0VcIlxuICAgICAgICAgIChzdGVwc0NoYW5nZSk9XCJvblN0ZXBzQ2hhbmdlKCdyZXNwb25zZScsICRldmVudClcIlxuICAgICAgICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy10ZW1wbGF0ZSAjZW1wdHlGbG93cz5cbiAgICA8ZGl2IGNsYXNzPVwiZW1wdHlGbG93c1wiPlxuICAgICAgPGgyPk5vIGZsb3dzIHlldDwvaDI+XG4gICAgICA8cCBjbGFzcz1cIm1hdC1ib2R5LTFcIj5GbG93cyBhbGxvdyB5b3UgdG8gY3VzdG9taXplIHRoZSBiZWhhdmlvciBvZiB5b3VyIEFQSSBldmVudCBwaGFzZXMgdGhyb3VnaCBjb25maWd1cmFibGUgcG9saWNpZXM8L3A+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2xvYWRpbmdUcGw+XG4gIDxkaXYgY2xhc3M9XCJoZWFkZXIgbG9hZGluZ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJfX2xhYmVsXCI+RmxvdyBkZXRhaWxzPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRlcl9fY29uZmlnQnRuXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiaGVhZGVyX19jb25maWdCdG5fX2VkaXRcIiBtYXQtc3Ryb2tlZC1idXR0b24gbWF0LWljb24tYnV0dG9uIGRpc2FibGVkPlxuICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzplZGl0LXBlbmNpbFwiPjwvbWF0LWljb24+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJoZWFkZXJfX2NvbmZpZ0J0bl9fZGVsZXRlXCIgbWF0LXN0cm9rZWQtYnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBkaXNhYmxlZD5cbiAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86dHJhc2hcIj48L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8Z2lvLXBzLWZsb3ctZGV0YWlscy1pbmZvLWJhciBjbGFzcz1cImluZm9CYXIgbG9hZGluZ1wiPjwvZ2lvLXBzLWZsb3ctZGV0YWlscy1pbmZvLWJhcj5cbiAgPGRpdiBjbGFzcz1cImNvbnRlbnQgbG9hZGluZ1wiPlxuICAgIDxnaW8tbG9hZGVyPjwvZ2lvLWxvYWRlcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -70,6 +70,7 @@ export class GioPolicyStudioDetailsPhaseComponent {
70
70
  policies: this.policies,
71
71
  executionPhase: this.policyExecutionPhase,
72
72
  apiType: this.apiType,
73
+ trialUrl: this.trialUrl,
73
74
  },
74
75
  role: 'alertdialog',
75
76
  id: 'gioPolicyStudioPoliciesCatalogDialog',
@@ -97,12 +98,25 @@ export class GioPolicyStudioDetailsPhaseComponent {
97
98
  }
98
99
  this.stepsChange.emit([...this.steps.slice(0, index), ...this.steps.slice(index + 1)]);
99
100
  }
101
+ onStepDisabled(index) {
102
+ if (!this.steps) {
103
+ return;
104
+ }
105
+ this.stepsChange.emit([
106
+ ...this.steps.slice(0, index),
107
+ {
108
+ ...this.steps[index],
109
+ enabled: !this.steps[index].enabled,
110
+ },
111
+ ...this.steps.slice(index + 1),
112
+ ]);
113
+ }
100
114
  }
101
115
  GioPolicyStudioDetailsPhaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioDetailsPhaseComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
102
- GioPolicyStudioDetailsPhaseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioDetailsPhaseComponent, selector: "gio-ps-flow-details-phase", inputs: { steps: "steps", name: "name", description: "description", startConnector: "startConnector", endConnector: "endConnector", apiType: "apiType", policies: "policies", policyExecutionPhase: "policyExecutionPhase" }, outputs: { stepsChange: "stepsChange" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (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 http://www.apache.org/licenses/LICENSE-2.0\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\n<div class=\"header\">\n <span class=\"header__name\">\n {{ name }}\n </span>\n <span class=\"header__description\">\n {{ description }}\n </span>\n\n <span *ngIf=\"isDisabled\" class=\"header__infoIcon\" matTooltip=\"Policies might not be evaluated\" matTooltipPosition=\"before\">\n <mat-icon svgIcon=\"gio:info\"></mat-icon>\n </span>\n</div>\n\n<div *ngIf=\"!isDisabled; else disabledPhaseContent\" class=\"wrapper\">\n <div class=\"content\">\n <div *ngFor=\"let stepVM of stepsVM; first as isFirst\" class=\"content__step\">\n <!-- Connector -->\n <ng-container *ngIf=\"stepVM.type === 'connectors'\">\n <div class=\"content__step__connector\">\n <span *ngFor=\"let connector of stepVM.connectors\" class=\"gio-badge-white content__step__connector__badge\">\n <mat-icon *ngIf=\"connector.icon\" [svgIcon]=\"connector.icon\" class=\"content__step__connector__badge__icon\"></mat-icon>\n {{ connector.name }}\n </span>\n </div>\n\n <!-- Add policy button after first connector -->\n <ng-container *ngIf=\"isFirst\">\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button class=\"content__step__addBtn\" mat-button mat-icon-button (click)=\"onAddPolicy(-1)\">\n <mat-icon svgIcon=\"gio:plus\"></mat-icon>\n </button>\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n </ng-container>\n </ng-container>\n\n <!-- Policy -->\n <ng-container *ngIf=\"stepVM.type === 'step'\">\n <div class=\"content__step__policy\">\n <div *ngIf=\"stepVM.step?.condition\" class=\"content__step__policy__condition\">\n <span class=\"gio-badge-neutral\" [matTooltip]=\"'Condition: ' + stepVM.step.condition\"\n ><mat-icon svgIcon=\"gio:if\"></mat-icon>{{ stepVM.step.condition }}</span\n >\n </div>\n <gio-ps-flow-details-phase-step\n class=\"content__step__step\"\n [policies]=\"policies\"\n [step]=\"stepVM.step\"\n (stepChange)=\"onStepChange(stepVM.index, $event)\"\n (deleted)=\"onStepDeleted(stepVM.index)\"\n ></gio-ps-flow-details-phase-step>\n </div>\n\n <!-- Add policy button -->\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button class=\"content__step__addBtn\" mat-button mat-icon-button (click)=\"onAddPolicy(stepVM.index)\">\n <mat-icon svgIcon=\"gio:plus\"></mat-icon>\n </button>\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #disabledPhaseContent>\n <div class=\"disabledContent\">\n <gio-banner-warning>\n Policies might not be evaluated\n <span gioBannerBody> Your API entrypoints don't apply on this phase. To enable them, add an entrypoint supporting this phase. </span>\n </gio-banner-warning>\n </div>\n</ng-template>\n", styles: [":host{display:flex;overflow:hidden;min-height:215px;flex-direction:column;padding-top:16px;border:1px solid #d3d5dc;border-radius:8px;background-color:#fff}.header{display:flex;padding:0 16px;gap:8px}.header__name{flex:0 1 auto;font:600 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}.header__description{flex:1 1 auto;font:400 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;color:#606274}.wrapper{position:relative;flex:1 1 auto;overflow-y:auto}.content{position:absolute;display:flex;width:max-content;height:100%;align-items:center;padding:0 16px}.content__step{display:flex;align-items:center}.content__step__connector{display:flex;flex-direction:column;gap:8px}.content__step__connector__badge{border:1px solid #876fec;border-radius:16px}.content__step__connector__badge__icon{margin-right:4px}.content__step__rightArrow{width:16px;height:16px;margin:0 8px;color:#b4b5bb}.content__step__policy{position:relative;display:flex;flex-direction:row;align-items:center}.content__step__policy__condition{position:absolute;top:-32px;right:0;left:0;display:flex;flex-direction:column}.content__step__policy__condition span{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content__step__policy__condition span mat-icon{margin-right:4px}.disabledContent{display:flex;flex-direction:column;padding:16px}\n"], components: [{ type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4.GioPolicyStudioDetailsPhaseStepComponent, selector: "gio-ps-flow-details-phase-step", inputs: ["step", "policies"], outputs: ["stepChange", "deleted"] }, { type: i5.GioBannerWarningComponent, selector: "gio-banner-warning" }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.GioBannerBodyDirective, selector: "[gioBannerBody]" }] });
116
+ GioPolicyStudioDetailsPhaseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioDetailsPhaseComponent, selector: "gio-ps-flow-details-phase", inputs: { steps: "steps", name: "name", description: "description", startConnector: "startConnector", endConnector: "endConnector", apiType: "apiType", policies: "policies", policyExecutionPhase: "policyExecutionPhase", trialUrl: "trialUrl" }, outputs: { stepsChange: "stepsChange" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (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 http://www.apache.org/licenses/LICENSE-2.0\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\n<div class=\"header\">\n <span class=\"header__name\">\n {{ name }}\n </span>\n <span class=\"header__description\">\n {{ description }}\n </span>\n\n <span *ngIf=\"isDisabled\" class=\"header__infoIcon\" matTooltip=\"Policies might not be evaluated\" matTooltipPosition=\"before\">\n <mat-icon svgIcon=\"gio:info\"></mat-icon>\n </span>\n</div>\n\n<div *ngIf=\"!isDisabled; else disabledPhaseContent\" class=\"wrapper\">\n <div class=\"content\">\n <div *ngFor=\"let stepVM of stepsVM; first as isFirst\" class=\"content__step\">\n <!-- Connector -->\n <ng-container *ngIf=\"stepVM.type === 'connectors'\">\n <div class=\"content__step__connector\">\n <span *ngFor=\"let connector of stepVM.connectors\" class=\"gio-badge-white content__step__connector__badge\">\n <mat-icon *ngIf=\"connector.icon\" [svgIcon]=\"connector.icon\" class=\"content__step__connector__badge__icon\"></mat-icon>\n {{ connector.name }}\n </span>\n </div>\n\n <!-- Add policy button after first connector -->\n <ng-container *ngIf=\"isFirst\">\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button class=\"content__step__addBtn\" mat-button mat-icon-button (click)=\"onAddPolicy(-1)\">\n <mat-icon svgIcon=\"gio:plus\"></mat-icon>\n </button>\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n </ng-container>\n </ng-container>\n\n <!-- Policy -->\n <ng-container *ngIf=\"stepVM.type === 'step'\">\n <div class=\"content__step__policy\">\n <div *ngIf=\"stepVM.step?.condition\" class=\"content__step__policy__condition\">\n <span class=\"gio-badge-neutral\" [matTooltip]=\"'Condition: ' + stepVM.step.condition\"\n ><mat-icon svgIcon=\"gio:if\"></mat-icon>{{ stepVM.step.condition }}</span\n >\n </div>\n <gio-ps-flow-details-phase-step\n class=\"content__step__step\"\n [class.disabled]=\"!stepVM.step.enabled\"\n [policies]=\"policies\"\n [step]=\"stepVM.step\"\n (stepChange)=\"onStepChange(stepVM.index, $event)\"\n (deleted)=\"onStepDeleted(stepVM.index)\"\n (disabled)=\"onStepDisabled(stepVM.index)\"\n ></gio-ps-flow-details-phase-step>\n </div>\n\n <!-- Add policy button -->\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button class=\"content__step__addBtn\" mat-button mat-icon-button (click)=\"onAddPolicy(stepVM.index)\">\n <mat-icon svgIcon=\"gio:plus\"></mat-icon>\n </button>\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #disabledPhaseContent>\n <div class=\"disabledContent\">\n <gio-banner-warning>\n Policies might not be evaluated\n <span gioBannerBody> Your API entrypoints don't apply on this phase. To enable them, add an entrypoint supporting this phase. </span>\n </gio-banner-warning>\n </div>\n</ng-template>\n", styles: [":host{display:flex;overflow:hidden;min-height:215px;flex-direction:column;padding-top:16px;border:1px solid #d3d5dc;border-radius:8px;background-color:#fff}.header{display:flex;padding:0 16px;gap:8px}.header__name{flex:0 1 auto;font:600 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}.header__description{flex:1 1 auto;font:400 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;color:#606274}.wrapper{position:relative;flex:1 1 auto;overflow-y:auto}.content{position:absolute;display:flex;width:max-content;height:100%;align-items:center;padding:0 16px}.content__step{display:flex;align-items:center}.content__step__connector{display:flex;flex-direction:column;gap:8px}.content__step__connector__badge{border:1px solid #876fec;border-radius:16px}.content__step__connector__badge__icon{margin-right:4px}.content__step__rightArrow{width:16px;height:16px;margin:0 8px;color:#b4b5bb}.content__step__policy{position:relative;display:flex;flex-direction:row;align-items:center}.content__step__policy__condition{position:absolute;top:-32px;right:0;left:0;display:flex;flex-direction:column}.content__step__policy__condition span{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content__step__policy__condition span mat-icon{margin-right:4px}.disabledContent{display:flex;flex-direction:column;padding:16px}\n"], components: [{ type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4.GioPolicyStudioDetailsPhaseStepComponent, selector: "gio-ps-flow-details-phase-step", inputs: ["step", "policies"], outputs: ["stepChange", "deleted", "disabled"] }, { type: i5.GioBannerWarningComponent, selector: "gio-banner-warning" }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.GioBannerBodyDirective, selector: "[gioBannerBody]" }] });
103
117
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioDetailsPhaseComponent, decorators: [{
104
118
  type: Component,
105
- args: [{ selector: 'gio-ps-flow-details-phase', template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (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 http://www.apache.org/licenses/LICENSE-2.0\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\n<div class=\"header\">\n <span class=\"header__name\">\n {{ name }}\n </span>\n <span class=\"header__description\">\n {{ description }}\n </span>\n\n <span *ngIf=\"isDisabled\" class=\"header__infoIcon\" matTooltip=\"Policies might not be evaluated\" matTooltipPosition=\"before\">\n <mat-icon svgIcon=\"gio:info\"></mat-icon>\n </span>\n</div>\n\n<div *ngIf=\"!isDisabled; else disabledPhaseContent\" class=\"wrapper\">\n <div class=\"content\">\n <div *ngFor=\"let stepVM of stepsVM; first as isFirst\" class=\"content__step\">\n <!-- Connector -->\n <ng-container *ngIf=\"stepVM.type === 'connectors'\">\n <div class=\"content__step__connector\">\n <span *ngFor=\"let connector of stepVM.connectors\" class=\"gio-badge-white content__step__connector__badge\">\n <mat-icon *ngIf=\"connector.icon\" [svgIcon]=\"connector.icon\" class=\"content__step__connector__badge__icon\"></mat-icon>\n {{ connector.name }}\n </span>\n </div>\n\n <!-- Add policy button after first connector -->\n <ng-container *ngIf=\"isFirst\">\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button class=\"content__step__addBtn\" mat-button mat-icon-button (click)=\"onAddPolicy(-1)\">\n <mat-icon svgIcon=\"gio:plus\"></mat-icon>\n </button>\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n </ng-container>\n </ng-container>\n\n <!-- Policy -->\n <ng-container *ngIf=\"stepVM.type === 'step'\">\n <div class=\"content__step__policy\">\n <div *ngIf=\"stepVM.step?.condition\" class=\"content__step__policy__condition\">\n <span class=\"gio-badge-neutral\" [matTooltip]=\"'Condition: ' + stepVM.step.condition\"\n ><mat-icon svgIcon=\"gio:if\"></mat-icon>{{ stepVM.step.condition }}</span\n >\n </div>\n <gio-ps-flow-details-phase-step\n class=\"content__step__step\"\n [policies]=\"policies\"\n [step]=\"stepVM.step\"\n (stepChange)=\"onStepChange(stepVM.index, $event)\"\n (deleted)=\"onStepDeleted(stepVM.index)\"\n ></gio-ps-flow-details-phase-step>\n </div>\n\n <!-- Add policy button -->\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button class=\"content__step__addBtn\" mat-button mat-icon-button (click)=\"onAddPolicy(stepVM.index)\">\n <mat-icon svgIcon=\"gio:plus\"></mat-icon>\n </button>\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #disabledPhaseContent>\n <div class=\"disabledContent\">\n <gio-banner-warning>\n Policies might not be evaluated\n <span gioBannerBody> Your API entrypoints don't apply on this phase. To enable them, add an entrypoint supporting this phase. </span>\n </gio-banner-warning>\n </div>\n</ng-template>\n", styles: [":host{display:flex;overflow:hidden;min-height:215px;flex-direction:column;padding-top:16px;border:1px solid #d3d5dc;border-radius:8px;background-color:#fff}.header{display:flex;padding:0 16px;gap:8px}.header__name{flex:0 1 auto;font:600 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}.header__description{flex:1 1 auto;font:400 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;color:#606274}.wrapper{position:relative;flex:1 1 auto;overflow-y:auto}.content{position:absolute;display:flex;width:max-content;height:100%;align-items:center;padding:0 16px}.content__step{display:flex;align-items:center}.content__step__connector{display:flex;flex-direction:column;gap:8px}.content__step__connector__badge{border:1px solid #876fec;border-radius:16px}.content__step__connector__badge__icon{margin-right:4px}.content__step__rightArrow{width:16px;height:16px;margin:0 8px;color:#b4b5bb}.content__step__policy{position:relative;display:flex;flex-direction:row;align-items:center}.content__step__policy__condition{position:absolute;top:-32px;right:0;left:0;display:flex;flex-direction:column}.content__step__policy__condition span{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content__step__policy__condition span mat-icon{margin-right:4px}.disabledContent{display:flex;flex-direction:column;padding:16px}\n"] }]
119
+ args: [{ selector: 'gio-ps-flow-details-phase', template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (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 http://www.apache.org/licenses/LICENSE-2.0\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\n<div class=\"header\">\n <span class=\"header__name\">\n {{ name }}\n </span>\n <span class=\"header__description\">\n {{ description }}\n </span>\n\n <span *ngIf=\"isDisabled\" class=\"header__infoIcon\" matTooltip=\"Policies might not be evaluated\" matTooltipPosition=\"before\">\n <mat-icon svgIcon=\"gio:info\"></mat-icon>\n </span>\n</div>\n\n<div *ngIf=\"!isDisabled; else disabledPhaseContent\" class=\"wrapper\">\n <div class=\"content\">\n <div *ngFor=\"let stepVM of stepsVM; first as isFirst\" class=\"content__step\">\n <!-- Connector -->\n <ng-container *ngIf=\"stepVM.type === 'connectors'\">\n <div class=\"content__step__connector\">\n <span *ngFor=\"let connector of stepVM.connectors\" class=\"gio-badge-white content__step__connector__badge\">\n <mat-icon *ngIf=\"connector.icon\" [svgIcon]=\"connector.icon\" class=\"content__step__connector__badge__icon\"></mat-icon>\n {{ connector.name }}\n </span>\n </div>\n\n <!-- Add policy button after first connector -->\n <ng-container *ngIf=\"isFirst\">\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button class=\"content__step__addBtn\" mat-button mat-icon-button (click)=\"onAddPolicy(-1)\">\n <mat-icon svgIcon=\"gio:plus\"></mat-icon>\n </button>\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n </ng-container>\n </ng-container>\n\n <!-- Policy -->\n <ng-container *ngIf=\"stepVM.type === 'step'\">\n <div class=\"content__step__policy\">\n <div *ngIf=\"stepVM.step?.condition\" class=\"content__step__policy__condition\">\n <span class=\"gio-badge-neutral\" [matTooltip]=\"'Condition: ' + stepVM.step.condition\"\n ><mat-icon svgIcon=\"gio:if\"></mat-icon>{{ stepVM.step.condition }}</span\n >\n </div>\n <gio-ps-flow-details-phase-step\n class=\"content__step__step\"\n [class.disabled]=\"!stepVM.step.enabled\"\n [policies]=\"policies\"\n [step]=\"stepVM.step\"\n (stepChange)=\"onStepChange(stepVM.index, $event)\"\n (deleted)=\"onStepDeleted(stepVM.index)\"\n (disabled)=\"onStepDisabled(stepVM.index)\"\n ></gio-ps-flow-details-phase-step>\n </div>\n\n <!-- Add policy button -->\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n <button class=\"content__step__addBtn\" mat-button mat-icon-button (click)=\"onAddPolicy(stepVM.index)\">\n <mat-icon svgIcon=\"gio:plus\"></mat-icon>\n </button>\n <mat-icon class=\"content__step__rightArrow\" svgIcon=\"gio:arrow-right\"></mat-icon>\n </ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #disabledPhaseContent>\n <div class=\"disabledContent\">\n <gio-banner-warning>\n Policies might not be evaluated\n <span gioBannerBody> Your API entrypoints don't apply on this phase. To enable them, add an entrypoint supporting this phase. </span>\n </gio-banner-warning>\n </div>\n</ng-template>\n", styles: [":host{display:flex;overflow:hidden;min-height:215px;flex-direction:column;padding-top:16px;border:1px solid #d3d5dc;border-radius:8px;background-color:#fff}.header{display:flex;padding:0 16px;gap:8px}.header__name{flex:0 1 auto;font:600 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}.header__description{flex:1 1 auto;font:400 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;color:#606274}.wrapper{position:relative;flex:1 1 auto;overflow-y:auto}.content{position:absolute;display:flex;width:max-content;height:100%;align-items:center;padding:0 16px}.content__step{display:flex;align-items:center}.content__step__connector{display:flex;flex-direction:column;gap:8px}.content__step__connector__badge{border:1px solid #876fec;border-radius:16px}.content__step__connector__badge__icon{margin-right:4px}.content__step__rightArrow{width:16px;height:16px;margin:0 8px;color:#b4b5bb}.content__step__policy{position:relative;display:flex;flex-direction:row;align-items:center}.content__step__policy__condition{position:absolute;top:-32px;right:0;left:0;display:flex;flex-direction:column}.content__step__policy__condition span{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content__step__policy__condition span mat-icon{margin-right:4px}.disabledContent{display:flex;flex-direction:column;padding:16px}\n"] }]
106
120
  }], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { steps: [{
107
121
  type: Input
108
122
  }], name: [{
@@ -119,7 +133,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
119
133
  type: Input
120
134
  }], policyExecutionPhase: [{
121
135
  type: Input
136
+ }], trialUrl: [{
137
+ type: Input
122
138
  }], stepsChange: [{
123
139
  type: Output
124
140
  }] } });
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3ctZGV0YWlscy1waGFzZS9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzLXBoYXNlL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR2xFLE9BQU8sRUFDTCw2Q0FBNkMsR0FHOUMsTUFBTSxxRUFBcUUsQ0FBQzs7Ozs7Ozs7O0FBcUI3RSxNQUFNLE9BQU8sb0NBQW9DO0lBZ0MvQyxZQUE2QixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBOUIxQyxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBU25CLG1CQUFjLEdBQW9CLEVBQUUsQ0FBQztRQUdyQyxpQkFBWSxHQUFvQixFQUFFLENBQUM7UUFNbkMsYUFBUSxHQUFhLEVBQUUsQ0FBQztRQU14QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFekMsWUFBTyxHQUFhLEVBQUUsQ0FBQztRQUV2QixlQUFVLEdBQUcsS0FBSyxDQUFDO0lBRTBCLENBQUM7SUFFOUMsV0FBVyxD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QUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7O2tJQXhHVSxvQ0FBb0M7c0hBQXBDLG9DQUFvQyw2VkM5Q2pELCt0SEF5RkE7NEZEM0NhLG9DQUFvQztrQkFMaEQsU0FBUzsrQkFDRSwyQkFBMkI7Z0dBTTlCLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxJQUFJO3NCQURWLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxjQUFjO3NCQURwQixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLO2dCQUlDLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxvQkFBb0I7c0JBRDFCLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjIgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBHSU9fRElBTE9HX1dJRFRIIH0gZnJvbSAnQGdyYXZpdGVlL3VpLXBhcnRpY2xlcy1hbmd1bGFyJztcblxuaW1wb3J0IHsgQXBpVHlwZSwgQ29ubmVjdG9ySW5mbywgRXhlY3V0aW9uUGhhc2UsIFBvbGljeSwgU3RlcCB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge1xuICBHaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2dDb21wb25lbnQsXG4gIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ0RhdGEsXG4gIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ1Jlc3VsdCxcbn0gZnJvbSAnLi4vcG9saWNpZXMtY2F0YWxvZy1kaWFsb2cvZ2lvLXBzLXBvbGljaWVzLWNhdGFsb2ctZGlhbG9nLmNvbXBvbmVudCc7XG5cbnR5cGUgU3RlcFZNID1cbiAgfCB7XG4gICAgICB0eXBlOiAnY29ubmVjdG9ycyc7XG4gICAgICBjb25uZWN0b3JzOiB7XG4gICAgICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgICAgIGljb24/OiBzdHJpbmc7XG4gICAgICB9W107XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6ICdzdGVwJztcbiAgICAgIHN0ZXA6IFN0ZXA7XG4gICAgICBpbmRleDogbnVtYmVyO1xuICAgIH07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2UuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2lvUG9saWN5U3R1ZGlvRGV0YWlsc1BoYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KClcbiAgcHVibGljIHN0ZXBzOiBTdGVwW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbmFtZSE6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZGVzY3JpcHRpb24hOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHN0YXJ0Q29ubmVjdG9yOiBDb25uZWN0b3JJbmZvW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZW5kQ29ubmVjdG9yOiBDb25uZWN0b3JJbmZvW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYXBpVHlwZSE6IEFwaVR5cGU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBvbGljaWVzOiBQb2xpY3lbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwb2xpY3lFeGVjdXRpb25QaGFzZSE6IEV4ZWN1dGlvblBoYXNlO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc3RlcHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFN0ZXBbXT4oKTtcblxuICBwdWJsaWMgc3RlcHNWTTogU3RlcFZNW10gPSBbXTtcblxuICBwdWJsaWMgaXNEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbWF0RGlhbG9nOiBNYXREaWFsb2cpIHt9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5zdGVwcyB8fCBjaGFuZ2VzLnN0YXJ0Q29ubmVjdG9yIHx8IGNoYW5nZXMuZW5kQ29ubmVjdG9yKSB7XG4gICAgICB0aGlzLnN0ZXBzVk0gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnY29ubmVjdG9ycycsXG4gICAgICAgICAgY29ubmVjdG9yczogdGhpcy5zdGFydENvbm5lY3Rvci5tYXAoY29ubmVjdG9yID0+ICh7XG4gICAgICAgICAgICBuYW1lOiBjb25uZWN0b3IubmFtZSxcbiAgICAgICAgICAgIGljb246IGNvbm5lY3Rvci5pY29uLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfSxcblxuICAgICAgICAuLi4odGhpcy5zdGVwcyA/PyBbXSkubWFwKChzdGVwLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICB0eXBlOiAnc3RlcCcgYXMgY29uc3QsXG4gICAgICAgICAgc3RlcDogc3RlcCxcbiAgICAgICAgICBpbmRleCxcbiAgICAgICAgfSkpLFxuXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnY29ubmVjdG9ycycsXG4gICAgICAgICAgY29ubmVjdG9yczogdGhpcy5lbmRDb25uZWN0b3IubWFwKGNvbm5lY3RvciA9PiAoe1xuICAgICAgICAgICAgbmFtZTogY29ubmVjdG9yLm5hbWUsXG4gICAgICAgICAgICBpY29uOiBjb25uZWN0b3IuaWNvbixcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICAvLyBEaXNhYmxlIHBoYXNlIGlmIHRoZXJlIGFyZSBub3Qgc3RhcnQgJiBlbmQgY29ubmVjdG9yc1xuICAgICAgdGhpcy5pc0Rpc2FibGVkID0gdGhpcy5zdGVwc1ZNLmZpbHRlcihzdGVwID0+IHN0ZXAudHlwZSA9PT0gJ2Nvbm5lY3RvcnMnICYmICFpc0VtcHR5KHN0ZXAuY29ubmVjdG9ycykpLmxlbmd0aCA8IDI7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uQWRkUG9saWN5KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLm1hdERpYWxvZ1xuICAgICAgLm9wZW48XG4gICAgICAgIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nRGF0YSxcbiAgICAgICAgR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nUmVzdWx0XG4gICAgICA+KEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgcG9saWNpZXM6IHRoaXMucG9saWNpZXMsXG4gICAgICAgICAgZXhlY3V0aW9uUGhhc2U6IHRoaXMucG9saWN5RXhlY3V0aW9uUGhhc2UsXG4gICAgICAgICAgYXBpVHlwZTogdGhpcy5hcGlUeXBlLFxuICAgICAgICB9LFxuICAgICAgICByb2xlOiAnYWxlcnRkaWFsb2cnLFxuICAgICAgICBpZDogJ2dpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZycsXG4gICAgICAgIHdpZHRoOiBHSU9fRElBTE9HX1dJRFRILkxBUkdFLFxuICAgICAgfSlcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAuc3Vic2NyaWJlKHN0ZXBUb0FkZCA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zdGVwcyB8fCAhc3RlcFRvQWRkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFkZCBTdGVwIGFmdGVyIHRoZSBnaXZlbiBpbmRleFxuICAgICAgICB0aGlzLnN0ZXBzQ2hhbmdlLmVtaXQoWy4uLnRoaXMuc3RlcHMuc2xpY2UoMCwgaW5kZXggKyAxKSwgc3RlcFRvQWRkLCAuLi50aGlzLnN0ZXBzLnNsaWNlKGluZGV4ICsgMSldKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uU3RlcENoYW5nZShpbmRleDogbnVtYmVyLCBzdGVwVG9FZGl0OiBTdGVwKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0ZXBzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIFJlcGxhY2UgdGhlIHN0ZXAgYXQgdGhlIGdpdmVuIGluZGV4XG4gICAgdGhpcy5zdGVwc0NoYW5nZS5lbWl0KFsuLi50aGlzLnN0ZXBzLnNsaWNlKDAsIGluZGV4KSwgc3RlcFRvRWRpdCwgLi4udGhpcy5zdGVwcy5zbGljZShpbmRleCArIDEpXSk7XG4gIH1cblxuICBwdWJsaWMgb25TdGVwRGVsZXRlZChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0ZXBzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RlcHNDaGFuZ2UuZW1pdChbLi4udGhpcy5zdGVwcy5zbGljZSgwLCBpbmRleCksIC4uLnRoaXMuc3RlcHMuc2xpY2UoaW5kZXggKyAxKV0pO1xuICB9XG59XG4iLCI8IS0tXG5cbiAgICBDb3B5cmlnaHQgKEMpIDIwMjMgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAgICBcbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgICBcbiAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICAgIFxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4tLT5cblxuPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuICA8c3BhbiBjbGFzcz1cImhlYWRlcl9fbmFtZVwiPlxuICAgIHt7IG5hbWUgfX1cbiAgPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImhlYWRlcl9fZGVzY3JpcHRpb25cIj5cbiAgICB7eyBkZXNjcmlwdGlvbiB9fVxuICA8L3NwYW4+XG5cbiAgPHNwYW4gKm5nSWY9XCJpc0Rpc2FibGVkXCIgY2xhc3M9XCJoZWFkZXJfX2luZm9JY29uXCIgbWF0VG9vbHRpcD1cIlBvbGljaWVzIG1pZ2h0IG5vdCBiZSBldmFsdWF0ZWRcIiBtYXRUb29sdGlwUG9zaXRpb249XCJiZWZvcmVcIj5cbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzppbmZvXCI+PC9tYXQtaWNvbj5cbiAgPC9zcGFuPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCIhaXNEaXNhYmxlZDsgZWxzZSBkaXNhYmxlZFBoYXNlQ29udGVudFwiIGNsYXNzPVwid3JhcHBlclwiPlxuICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IHN0ZXBWTSBvZiBzdGVwc1ZNOyBmaXJzdCBhcyBpc0ZpcnN0XCIgY2xhc3M9XCJjb250ZW50X19zdGVwXCI+XG4gICAgICA8IS0tIENvbm5lY3RvciAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGVwVk0udHlwZSA9PT0gJ2Nvbm5lY3RvcnMnXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50X19zdGVwX19jb25uZWN0b3JcIj5cbiAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgY29ubmVjdG9yIG9mIHN0ZXBWTS5jb25uZWN0b3JzXCIgY2xhc3M9XCJnaW8tYmFkZ2Utd2hpdGUgY29udGVudF9fc3RlcF9fY29ubmVjdG9yX19iYWRnZVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiY29ubmVjdG9yLmljb25cIiBbc3ZnSWNvbl09XCJjb25uZWN0b3IuaWNvblwiIGNsYXNzPVwiY29udGVudF9fc3RlcF9fY29ubmVjdG9yX19iYWRnZV9faWNvblwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICB7eyBjb25uZWN0b3IubmFtZSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBBZGQgcG9saWN5IGJ1dHRvbiBhZnRlciBmaXJzdCBjb25uZWN0b3IgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ZpcnN0XCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY29udGVudF9fc3RlcF9fcmlnaHRBcnJvd1wiIHN2Z0ljb249XCJnaW86YXJyb3ctcmlnaHRcIj48L21hdC1pY29uPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjb250ZW50X19zdGVwX19hZGRCdG5cIiBtYXQtYnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib25BZGRQb2xpY3koLTEpXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzpwbHVzXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjb250ZW50X19zdGVwX19yaWdodEFycm93XCIgc3ZnSWNvbj1cImdpbzphcnJvdy1yaWdodFwiPjwvbWF0LWljb24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gUG9saWN5IC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXBWTS50eXBlID09PSAnc3RlcCdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRfX3N0ZXBfX3BvbGljeVwiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdGVwVk0uc3RlcD8uY29uZGl0aW9uXCIgY2xhc3M9XCJjb250ZW50X19zdGVwX19wb2xpY3lfX2NvbmRpdGlvblwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnaW8tYmFkZ2UtbmV1dHJhbFwiIFttYXRUb29sdGlwXT1cIidDb25kaXRpb246ICcgKyBzdGVwVk0uc3RlcC5jb25kaXRpb25cIlxuICAgICAgICAgICAgICA+PG1hdC1pY29uIHN2Z0ljb249XCJnaW86aWZcIj48L21hdC1pY29uPnt7IHN0ZXBWTS5zdGVwLmNvbmRpdGlvbiB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxnaW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLXN0ZXBcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudF9fc3RlcF9fc3RlcFwiXG4gICAgICAgICAgICBbcG9saWNpZXNdPVwicG9saWNpZXNcIlxuICAgICAgICAgICAgW3N0ZXBdPVwic3RlcFZNLnN0ZXBcIlxuICAgICAgICAgICAgKHN0ZXBDaGFuZ2UpPVwib25TdGVwQ2hhbmdlKHN0ZXBWTS5pbmRleCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAoZGVsZXRlZCk9XCJvblN0ZXBEZWxldGVkKHN0ZXBWTS5pbmRleClcIlxuICAgICAgICAgID48L2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2Utc3RlcD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBBZGQgcG9saWN5IGJ1dHRvbiAtLT5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY29udGVudF9fc3RlcF9fcmlnaHRBcnJvd1wiIHN2Z0ljb249XCJnaW86YXJyb3ctcmlnaHRcIj48L21hdC1pY29uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29udGVudF9fc3RlcF9fYWRkQnRuXCIgbWF0LWJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uQWRkUG9saWN5KHN0ZXBWTS5pbmRleClcIj5cbiAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzpwbHVzXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNvbnRlbnRfX3N0ZXBfX3JpZ2h0QXJyb3dcIiBzdmdJY29uPVwiZ2lvOmFycm93LXJpZ2h0XCI+PC9tYXQtaWNvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2Rpc2FibGVkUGhhc2VDb250ZW50PlxuICA8ZGl2IGNsYXNzPVwiZGlzYWJsZWRDb250ZW50XCI+XG4gICAgPGdpby1iYW5uZXItd2FybmluZz5cbiAgICAgIFBvbGljaWVzIG1pZ2h0IG5vdCBiZSBldmFsdWF0ZWRcbiAgICAgIDxzcGFuIGdpb0Jhbm5lckJvZHk+IFlvdXIgQVBJIGVudHJ5cG9pbnRzIGRvbid0IGFwcGx5IG9uIHRoaXMgcGhhc2UuIFRvIGVuYWJsZSB0aGVtLCBhZGQgYW4gZW50cnlwb2ludCBzdXBwb3J0aW5nIHRoaXMgcGhhc2UuIDwvc3Bhbj5cbiAgICA8L2dpby1iYW5uZXItd2FybmluZz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3ctZGV0YWlscy1waGFzZS9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzLXBoYXNlL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRWpDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR2xFLE9BQU8sRUFDTCw2Q0FBNkMsR0FHOUMsTUFBTSxxRUFBcUUsQ0FBQzs7Ozs7Ozs7O0FBcUI3RSxNQUFNLE9BQU8sb0NBQW9DO0lBbUMvQyxZQUE2QixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBakMxQyxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBU25CLG1CQUFjLEdBQW9CLEVBQUUsQ0FBQztRQUdyQyxpQkFBWSxHQUFvQixFQUFFLENBQUM7UUFNbkMsYUFBUSxHQUFhLEVBQUUsQ0FBQztRQVN4QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFekMsWUFBTyxHQUFhLEVBQUUsQ0FBQztRQUV2QixlQUFVLEdBQUcsS0FBSyxDQUFDO0lBRTBCLENBQUM7SUFFOUMsV0FBVyxD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RGQsS0FBSztnQkFJQyxXQUFXO3NCQURqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAyMiBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEdJT19ESUFMT0dfV0lEVEggfSBmcm9tICdAZ3Jhdml0ZWUvdWktcGFydGljbGVzLWFuZ3VsYXInO1xuXG5pbXBvcnQgeyBBcGlUeXBlLCBDb25uZWN0b3JJbmZvLCBFeGVjdXRpb25QaGFzZSwgUG9saWN5LCBTdGVwIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7XG4gIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ0NvbXBvbmVudCxcbiAgR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nRGF0YSxcbiAgR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nUmVzdWx0LFxufSBmcm9tICcuLi9wb2xpY2llcy1jYXRhbG9nLWRpYWxvZy9naW8tcHMtcG9saWNpZXMtY2F0YWxvZy1kaWFsb2cuY29tcG9uZW50JztcblxudHlwZSBTdGVwVk0gPVxuICB8IHtcbiAgICAgIHR5cGU6ICdjb25uZWN0b3JzJztcbiAgICAgIGNvbm5lY3RvcnM6IHtcbiAgICAgICAgbmFtZT86IHN0cmluZztcbiAgICAgICAgaWNvbj86IHN0cmluZztcbiAgICAgIH1bXTtcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogJ3N0ZXAnO1xuICAgICAgc3RlcDogU3RlcDtcbiAgICAgIGluZGV4OiBudW1iZXI7XG4gICAgfTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9Qb2xpY3lTdHVkaW9EZXRhaWxzUGhhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBwdWJsaWMgc3RlcHM6IFN0ZXBbXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBuYW1lITogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkZXNjcmlwdGlvbiE6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc3RhcnRDb25uZWN0b3I6IENvbm5lY3RvckluZm9bXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbmRDb25uZWN0b3I6IENvbm5lY3RvckluZm9bXSA9IFtdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcGlUeXBlITogQXBpVHlwZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcG9saWNpZXM6IFBvbGljeVtdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBvbGljeUV4ZWN1dGlvblBoYXNlITogRXhlY3V0aW9uUGhhc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHRyaWFsVXJsITogc3RyaW5nO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc3RlcHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFN0ZXBbXT4oKTtcblxuICBwdWJsaWMgc3RlcHNWTTogU3RlcFZNW10gPSBbXTtcblxuICBwdWJsaWMgaXNEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbWF0RGlhbG9nOiBNYXREaWFsb2cpIHt9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5zdGVwcyB8fCBjaGFuZ2VzLnN0YXJ0Q29ubmVjdG9yIHx8IGNoYW5nZXMuZW5kQ29ubmVjdG9yKSB7XG4gICAgICB0aGlzLnN0ZXBzVk0gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnY29ubmVjdG9ycycsXG4gICAgICAgICAgY29ubmVjdG9yczogdGhpcy5zdGFydENvbm5lY3Rvci5tYXAoY29ubmVjdG9yID0+ICh7XG4gICAgICAgICAgICBuYW1lOiBjb25uZWN0b3IubmFtZSxcbiAgICAgICAgICAgIGljb246IGNvbm5lY3Rvci5pY29uLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfSxcblxuICAgICAgICAuLi4odGhpcy5zdGVwcyA/PyBbXSkubWFwKChzdGVwLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICB0eXBlOiAnc3RlcCcgYXMgY29uc3QsXG4gICAgICAgICAgc3RlcDogc3RlcCxcbiAgICAgICAgICBpbmRleCxcbiAgICAgICAgfSkpLFxuXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnY29ubmVjdG9ycycsXG4gICAgICAgICAgY29ubmVjdG9yczogdGhpcy5lbmRDb25uZWN0b3IubWFwKGNvbm5lY3RvciA9PiAoe1xuICAgICAgICAgICAgbmFtZTogY29ubmVjdG9yLm5hbWUsXG4gICAgICAgICAgICBpY29uOiBjb25uZWN0b3IuaWNvbixcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICAvLyBEaXNhYmxlIHBoYXNlIGlmIHRoZXJlIGFyZSBub3Qgc3RhcnQgJiBlbmQgY29ubmVjdG9yc1xuICAgICAgdGhpcy5pc0Rpc2FibGVkID0gdGhpcy5zdGVwc1ZNLmZpbHRlcihzdGVwID0+IHN0ZXAudHlwZSA9PT0gJ2Nvbm5lY3RvcnMnICYmICFpc0VtcHR5KHN0ZXAuY29ubmVjdG9ycykpLmxlbmd0aCA8IDI7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uQWRkUG9saWN5KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLm1hdERpYWxvZ1xuICAgICAgLm9wZW48XG4gICAgICAgIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nRGF0YSxcbiAgICAgICAgR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nUmVzdWx0XG4gICAgICA+KEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgcG9saWNpZXM6IHRoaXMucG9saWNpZXMsXG4gICAgICAgICAgZXhlY3V0aW9uUGhhc2U6IHRoaXMucG9saWN5RXhlY3V0aW9uUGhhc2UsXG4gICAgICAgICAgYXBpVHlwZTogdGhpcy5hcGlUeXBlLFxuICAgICAgICAgIHRyaWFsVXJsOiB0aGlzLnRyaWFsVXJsLFxuICAgICAgICB9LFxuICAgICAgICByb2xlOiAnYWxlcnRkaWFsb2cnLFxuICAgICAgICBpZDogJ2dpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZycsXG4gICAgICAgIHdpZHRoOiBHSU9fRElBTE9HX1dJRFRILkxBUkdFLFxuICAgICAgfSlcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAuc3Vic2NyaWJlKHN0ZXBUb0FkZCA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zdGVwcyB8fCAhc3RlcFRvQWRkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFkZCBTdGVwIGFmdGVyIHRoZSBnaXZlbiBpbmRleFxuICAgICAgICB0aGlzLnN0ZXBzQ2hhbmdlLmVtaXQoWy4uLnRoaXMuc3RlcHMuc2xpY2UoMCwgaW5kZXggKyAxKSwgc3RlcFRvQWRkLCAuLi50aGlzLnN0ZXBzLnNsaWNlKGluZGV4ICsgMSldKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uU3RlcENoYW5nZShpbmRleDogbnVtYmVyLCBzdGVwVG9FZGl0OiBTdGVwKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0ZXBzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIFJlcGxhY2UgdGhlIHN0ZXAgYXQgdGhlIGdpdmVuIGluZGV4XG4gICAgdGhpcy5zdGVwc0NoYW5nZS5lbWl0KFsuLi50aGlzLnN0ZXBzLnNsaWNlKDAsIGluZGV4KSwgc3RlcFRvRWRpdCwgLi4udGhpcy5zdGVwcy5zbGljZShpbmRleCArIDEpXSk7XG4gIH1cblxuICBwdWJsaWMgb25TdGVwRGVsZXRlZChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0ZXBzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RlcHNDaGFuZ2UuZW1pdChbLi4udGhpcy5zdGVwcy5zbGljZSgwLCBpbmRleCksIC4uLnRoaXMuc3RlcHMuc2xpY2UoaW5kZXggKyAxKV0pO1xuICB9XG5cbiAgcHVibGljIG9uU3RlcERpc2FibGVkKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3RlcHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0ZXBzQ2hhbmdlLmVtaXQoW1xuICAgICAgLi4udGhpcy5zdGVwcy5zbGljZSgwLCBpbmRleCksXG4gICAgICB7XG4gICAgICAgIC4uLnRoaXMuc3RlcHNbaW5kZXhdLFxuICAgICAgICBlbmFibGVkOiAhdGhpcy5zdGVwc1tpbmRleF0uZW5hYmxlZCxcbiAgICAgIH0sXG4gICAgICAuLi50aGlzLnN0ZXBzLnNsaWNlKGluZGV4ICsgMSksXG4gICAgXSk7XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAyMyBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICAgIFxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgIFxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuXG48ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gIDxzcGFuIGNsYXNzPVwiaGVhZGVyX19uYW1lXCI+XG4gICAge3sgbmFtZSB9fVxuICA8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwiaGVhZGVyX19kZXNjcmlwdGlvblwiPlxuICAgIHt7IGRlc2NyaXB0aW9uIH19XG4gIDwvc3Bhbj5cblxuICA8c3BhbiAqbmdJZj1cImlzRGlzYWJsZWRcIiBjbGFzcz1cImhlYWRlcl9faW5mb0ljb25cIiBtYXRUb29sdGlwPVwiUG9saWNpZXMgbWlnaHQgbm90IGJlIGV2YWx1YXRlZFwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImJlZm9yZVwiPlxuICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOmluZm9cIj48L21hdC1pY29uPlxuICA8L3NwYW4+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cIiFpc0Rpc2FibGVkOyBlbHNlIGRpc2FibGVkUGhhc2VDb250ZW50XCIgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgc3RlcFZNIG9mIHN0ZXBzVk07IGZpcnN0IGFzIGlzRmlyc3RcIiBjbGFzcz1cImNvbnRlbnRfX3N0ZXBcIj5cbiAgICAgIDwhLS0gQ29ubmVjdG9yIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXBWTS50eXBlID09PSAnY29ubmVjdG9ycydcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRfX3N0ZXBfX2Nvbm5lY3RvclwiPlxuICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBjb25uZWN0b3Igb2Ygc3RlcFZNLmNvbm5lY3RvcnNcIiBjbGFzcz1cImdpby1iYWRnZS13aGl0ZSBjb250ZW50X19zdGVwX19jb25uZWN0b3JfX2JhZGdlXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJjb25uZWN0b3IuaWNvblwiIFtzdmdJY29uXT1cImNvbm5lY3Rvci5pY29uXCIgY2xhc3M9XCJjb250ZW50X19zdGVwX19jb25uZWN0b3JfX2JhZGdlX19pY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIHt7IGNvbm5lY3Rvci5uYW1lIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIEFkZCBwb2xpY3kgYnV0dG9uIGFmdGVyIGZpcnN0IGNvbm5lY3RvciAtLT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRmlyc3RcIj5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjb250ZW50X19zdGVwX19yaWdodEFycm93XCIgc3ZnSWNvbj1cImdpbzphcnJvdy1yaWdodFwiPjwvbWF0LWljb24+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbnRlbnRfX3N0ZXBfX2FkZEJ0blwiIG1hdC1idXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvbkFkZFBvbGljeSgtMSlcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOnBsdXNcIj48L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNvbnRlbnRfX3N0ZXBfX3JpZ2h0QXJyb3dcIiBzdmdJY29uPVwiZ2lvOmFycm93LXJpZ2h0XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBQb2xpY3kgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcFZNLnR5cGUgPT09ICdzdGVwJ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudF9fc3RlcF9fcG9saWN5XCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cInN0ZXBWTS5zdGVwPy5jb25kaXRpb25cIiBjbGFzcz1cImNvbnRlbnRfX3N0ZXBfX3BvbGljeV9fY29uZGl0aW9uXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdpby1iYWRnZS1uZXV0cmFsXCIgW21hdFRvb2x0aXBdPVwiJ0NvbmRpdGlvbjogJyArIHN0ZXBWTS5zdGVwLmNvbmRpdGlvblwiXG4gICAgICAgICAgICAgID48bWF0LWljb24gc3ZnSWNvbj1cImdpbzppZlwiPjwvbWF0LWljb24+e3sgc3RlcFZNLnN0ZXAuY29uZGl0aW9uIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2Utc3RlcFxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50X19zdGVwX19zdGVwXCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhc3RlcFZNLnN0ZXAuZW5hYmxlZFwiXG4gICAgICAgICAgICBbcG9saWNpZXNdPVwicG9saWNpZXNcIlxuICAgICAgICAgICAgW3N0ZXBdPVwic3RlcFZNLnN0ZXBcIlxuICAgICAgICAgICAgKHN0ZXBDaGFuZ2UpPVwib25TdGVwQ2hhbmdlKHN0ZXBWTS5pbmRleCwgJGV2ZW50KVwiXG4gICAgICAgICAgICAoZGVsZXRlZCk9XCJvblN0ZXBEZWxldGVkKHN0ZXBWTS5pbmRleClcIlxuICAgICAgICAgICAgKGRpc2FibGVkKT1cIm9uU3RlcERpc2FibGVkKHN0ZXBWTS5pbmRleClcIlxuICAgICAgICAgID48L2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2Utc3RlcD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBBZGQgcG9saWN5IGJ1dHRvbiAtLT5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiY29udGVudF9fc3RlcF9fcmlnaHRBcnJvd1wiIHN2Z0ljb249XCJnaW86YXJyb3ctcmlnaHRcIj48L21hdC1pY29uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY29udGVudF9fc3RlcF9fYWRkQnRuXCIgbWF0LWJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uQWRkUG9saWN5KHN0ZXBWTS5pbmRleClcIj5cbiAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzpwbHVzXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNvbnRlbnRfX3N0ZXBfX3JpZ2h0QXJyb3dcIiBzdmdJY29uPVwiZ2lvOmFycm93LXJpZ2h0XCI+PC9tYXQtaWNvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2Rpc2FibGVkUGhhc2VDb250ZW50PlxuICA8ZGl2IGNsYXNzPVwiZGlzYWJsZWRDb250ZW50XCI+XG4gICAgPGdpby1iYW5uZXItd2FybmluZz5cbiAgICAgIFBvbGljaWVzIG1pZ2h0IG5vdCBiZSBldmFsdWF0ZWRcbiAgICAgIDxzcGFuIGdpb0Jhbm5lckJvZHk+IFlvdXIgQVBJIGVudHJ5cG9pbnRzIGRvbid0IGFwcGx5IG9uIHRoaXMgcGhhc2UuIFRvIGVuYWJsZSB0aGVtLCBhZGQgYW4gZW50cnlwb2ludCBzdXBwb3J0aW5nIHRoaXMgcGhhc2UuIDwvc3Bhbj5cbiAgICA8L2dpby1iYW5uZXItd2FybmluZz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -28,6 +28,7 @@ export class GioPolicyStudioDetailsPhaseStepComponent {
28
28
  this.policies = [];
29
29
  this.stepChange = new EventEmitter();
30
30
  this.deleted = new EventEmitter();
31
+ this.disabled = new EventEmitter();
31
32
  }
32
33
  ngOnChanges(changes) {
33
34
  if (changes.policies || changes.step) {
@@ -58,17 +59,17 @@ export class GioPolicyStudioDetailsPhaseStepComponent {
58
59
  });
59
60
  }
60
61
  onDisable() {
61
- throw new Error('Wip');
62
+ this.disabled.emit();
62
63
  }
63
64
  onDelete() {
64
65
  this.deleted.emit();
65
66
  }
66
67
  }
67
68
  GioPolicyStudioDetailsPhaseStepComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioDetailsPhaseStepComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
68
- GioPolicyStudioDetailsPhaseStepComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioDetailsPhaseStepComponent, selector: "gio-ps-flow-details-phase-step", inputs: { step: "step", policies: "policies" }, outputs: { stepChange: "stepChange", deleted: "deleted" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (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 http://www.apache.org/licenses/LICENSE-2.0\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\n<div class=\"info\">\n <div class=\"info__head\">\n <mat-icon class=\"info__head__icon\" [svgIcon]=\"policy?.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"info__head__name\">{{ step.name }}</span>\n </div>\n\n <div *ngIf=\"step.description\" class=\"info__description\">{{ step.description }}</div>\n</div>\n\n<button class=\"menuBtn\" mat-icon-button [matMenuTriggerFor]=\"policyMenu\"><mat-icon svgIcon=\"gio:more-vertical\"></mat-icon></button>\n\n<mat-menu #policyMenu=\"matMenu\">\n <button mat-menu-item (click)=\"onEdit()\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n <span>Edit</span>\n </button>\n\n <button disabled mat-menu-item (click)=\"onDisable()\">\n <mat-icon svgIcon=\"gio:prohibition\"></mat-icon>\n <span>Disable \uD83D\uDEA7</span>\n </button>\n\n <button mat-menu-item (click)=\"onDelete()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n <span>Delete</span>\n </button>\n</mat-menu>\n", styles: [":host{display:flex;align-items:center;padding:8px;border:1px solid #6c59bd;border-radius:8px}:host :host-context(.disabled){border:1px solid #d3d5dc}.info{display:flex;max-width:300px;flex-direction:column;margin-left:4px;gap:4px}.info__head{display:flex;align-items:center}.info__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.info__head__name{overflow:hidden;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap}.info__description{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;color:#606274;-webkit-line-clamp:2}.info__description:empty{display:none}\n"], components: [{ type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }] });
69
+ GioPolicyStudioDetailsPhaseStepComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioDetailsPhaseStepComponent, selector: "gio-ps-flow-details-phase-step", inputs: { step: "step", policies: "policies" }, outputs: { stepChange: "stepChange", deleted: "deleted", disabled: "disabled" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (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 http://www.apache.org/licenses/LICENSE-2.0\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\n<div class=\"info\">\n <div class=\"info__head\">\n <mat-icon class=\"info__head__icon\" [svgIcon]=\"policy?.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"info__head__name\">{{ step.name }}</span>\n </div>\n\n <div *ngIf=\"step.description\" class=\"info__description\">{{ step.description }}</div>\n</div>\n\n<button class=\"menuBtn\" mat-icon-button [matMenuTriggerFor]=\"policyMenu\"><mat-icon svgIcon=\"gio:more-vertical\"></mat-icon></button>\n\n<mat-menu #policyMenu=\"matMenu\">\n <button mat-menu-item (click)=\"onEdit()\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n <span>Edit</span>\n </button>\n\n <button mat-menu-item (click)=\"onDisable()\">\n <mat-icon [svgIcon]=\"step.enabled ? 'gio:prohibition' : 'gio:check-circled-outline'\"></mat-icon>\n <span>{{ step.enabled ? 'Disable' : 'Enable' }}</span>\n </button>\n\n <button mat-menu-item (click)=\"onDelete()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n <span>Delete</span>\n </button>\n</mat-menu>\n", styles: [":host{display:flex;align-items:center;padding:8px;border:1px solid #6c59bd;border-radius:8px}:host-context(.disabled){border:1px solid #d3d5dc}.info{display:flex;max-width:300px;flex-direction:column;margin-left:4px;gap:4px}.info__head{display:flex;align-items:center}.info__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.info__head__name{overflow:hidden;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap}.info__description{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;color:#606274;-webkit-line-clamp:2}.info__description:empty{display:none}\n"], components: [{ type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }] });
69
70
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioDetailsPhaseStepComponent, decorators: [{
70
71
  type: Component,
71
- args: [{ selector: 'gio-ps-flow-details-phase-step', template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (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 http://www.apache.org/licenses/LICENSE-2.0\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\n<div class=\"info\">\n <div class=\"info__head\">\n <mat-icon class=\"info__head__icon\" [svgIcon]=\"policy?.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"info__head__name\">{{ step.name }}</span>\n </div>\n\n <div *ngIf=\"step.description\" class=\"info__description\">{{ step.description }}</div>\n</div>\n\n<button class=\"menuBtn\" mat-icon-button [matMenuTriggerFor]=\"policyMenu\"><mat-icon svgIcon=\"gio:more-vertical\"></mat-icon></button>\n\n<mat-menu #policyMenu=\"matMenu\">\n <button mat-menu-item (click)=\"onEdit()\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n <span>Edit</span>\n </button>\n\n <button disabled mat-menu-item (click)=\"onDisable()\">\n <mat-icon svgIcon=\"gio:prohibition\"></mat-icon>\n <span>Disable \uD83D\uDEA7</span>\n </button>\n\n <button mat-menu-item (click)=\"onDelete()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n <span>Delete</span>\n </button>\n</mat-menu>\n", styles: [":host{display:flex;align-items:center;padding:8px;border:1px solid #6c59bd;border-radius:8px}:host :host-context(.disabled){border:1px solid #d3d5dc}.info{display:flex;max-width:300px;flex-direction:column;margin-left:4px;gap:4px}.info__head{display:flex;align-items:center}.info__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.info__head__name{overflow:hidden;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap}.info__description{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;color:#606274;-webkit-line-clamp:2}.info__description:empty{display:none}\n"] }]
72
+ args: [{ selector: 'gio-ps-flow-details-phase-step', template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (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 http://www.apache.org/licenses/LICENSE-2.0\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\n<div class=\"info\">\n <div class=\"info__head\">\n <mat-icon class=\"info__head__icon\" [svgIcon]=\"policy?.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"info__head__name\">{{ step.name }}</span>\n </div>\n\n <div *ngIf=\"step.description\" class=\"info__description\">{{ step.description }}</div>\n</div>\n\n<button class=\"menuBtn\" mat-icon-button [matMenuTriggerFor]=\"policyMenu\"><mat-icon svgIcon=\"gio:more-vertical\"></mat-icon></button>\n\n<mat-menu #policyMenu=\"matMenu\">\n <button mat-menu-item (click)=\"onEdit()\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n <span>Edit</span>\n </button>\n\n <button mat-menu-item (click)=\"onDisable()\">\n <mat-icon [svgIcon]=\"step.enabled ? 'gio:prohibition' : 'gio:check-circled-outline'\"></mat-icon>\n <span>{{ step.enabled ? 'Disable' : 'Enable' }}</span>\n </button>\n\n <button mat-menu-item (click)=\"onDelete()\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n <span>Delete</span>\n </button>\n</mat-menu>\n", styles: [":host{display:flex;align-items:center;padding:8px;border:1px solid #6c59bd;border-radius:8px}:host-context(.disabled){border:1px solid #d3d5dc}.info{display:flex;max-width:300px;flex-direction:column;margin-left:4px;gap:4px}.info__head{display:flex;align-items:center}.info__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.info__head__name{overflow:hidden;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap}.info__description{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;color:#606274;-webkit-line-clamp:2}.info__description:empty{display:none}\n"] }]
72
73
  }], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { step: [{
73
74
  type: Input
74
75
  }], policies: [{
@@ -77,5 +78,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
77
78
  type: Output
78
79
  }], deleted: [{
79
80
  type: Output
81
+ }], disabled: [{
82
+ type: Output
80
83
  }] } });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS1zdGVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzLXBoYXNlLXN0ZXAvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS1zdGVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzLXBoYXNlLXN0ZXAvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS1zdGVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFakcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHbEUsT0FBTyxFQUNMLHNDQUFzQyxHQUd2QyxNQUFNLHVEQUF1RCxDQUFDOzs7Ozs7O0FBTy9ELE1BQU0sT0FBTyx3Q0FBd0M7SUFlbkQsWUFBNkIsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQVYxQyxhQUFRLEdBQWEsRUFBRSxDQUFDO1FBR3hCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBR3RDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBSVUsQ0FBQztJQUU5QyxXQUFXLENBQUMsT0FBc0I7UUFDdkMsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM1RTtJQUNILENBQUM7SUFFTSxNQUFNO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDaEIsa0dBQWtHO1lBQ2xHLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxTQUFTO2FBQ1gsSUFBSSxDQUNILHNDQUFzQyxFQUN0QztZQUNFLElBQUksRUFBRTtnQkFDSixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTthQUNoQjtZQUNELElBQUksRUFBRSxhQUFhO1lBQ25CLEVBQUUsRUFBRSxpQ0FBaUM7WUFDckMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEtBQUs7U0FDOUIsQ0FDRjthQUNBLFdBQVcsRUFBRTthQUNiLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN0QixJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNmLE9BQU87YUFDUjtZQUVELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFNBQVM7UUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDOztzSUExRFUsd0NBQXdDOzBIQUF4Qyx3Q0FBd0Msc01DL0JyRCx1bkRBOENBOzRGRGZhLHdDQUF3QztrQkFMcEQsU0FBUzsrQkFDRSxnQ0FBZ0M7Z0dBTW5DLElBQUk7c0JBRFYsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsTUFBTTtnQkFJQSxPQUFPO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEdJT19ESUFMT0dfV0lEVEggfSBmcm9tICdAZ3Jhdml0ZWUvdWktcGFydGljbGVzLWFuZ3VsYXInO1xuXG5pbXBvcnQgeyBQb2xpY3ksIFN0ZXAgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgR2lvUG9saWN5U3R1ZGlvU3RlcEVkaXREaWFsb2dDb21wb25lbnQsXG4gIEdpb1BvbGljeVN0dWRpb1N0ZXBFZGl0RGlhbG9nRGF0YSxcbiAgR2lvUG9saWN5U3R1ZGlvU3RlcEVkaXREaWFsb2dSZXN1bHQsXG59IGZyb20gJy4uL3N0ZXAtZWRpdC1kaWFsb2cvZ2lvLXBzLXN0ZXAtZWRpdC1kaWFsb2cuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS1zdGVwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2Utc3RlcC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2Utc3RlcC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9Qb2xpY3lTdHVkaW9EZXRhaWxzUGhhc2VTdGVwQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KClcbiAgcHVibGljIHN0ZXAhOiBTdGVwO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwb2xpY2llczogUG9saWN5W10gPSBbXTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIHN0ZXBDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFN0ZXA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBkZWxldGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHB1YmxpYyBwb2xpY3k/OiBQb2xpY3k7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBtYXREaWFsb2c6IE1hdERpYWxvZykge31cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnBvbGljaWVzIHx8IGNoYW5nZXMuc3RlcCkge1xuICAgICAgdGhpcy5wb2xpY3kgPSB0aGlzLnBvbGljaWVzLmZpbmQocG9saWN5ID0+IHBvbGljeS5pZCA9PT0gdGhpcy5zdGVwLnBvbGljeSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uRWRpdCgpIHtcbiAgICBpZiAoIXRoaXMucG9saWN5KSB7XG4gICAgICAvLyBUT0RPOiBIYW5kbGUgVXNlQ2FzZSB3aGVuIHBvbGljeSBpcyBub3QgZm91bmQuIChMaWtlIGlmIHRoZSBwbHVnaW4gaXMgcmVtb3ZlZCBmcm9tIHRoZSBCYWNrRW5kKVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubWF0RGlhbG9nXG4gICAgICAub3BlbjxHaW9Qb2xpY3lTdHVkaW9TdGVwRWRpdERpYWxvZ0NvbXBvbmVudCwgR2lvUG9saWN5U3R1ZGlvU3RlcEVkaXREaWFsb2dEYXRhLCBHaW9Qb2xpY3lTdHVkaW9TdGVwRWRpdERpYWxvZ1Jlc3VsdD4oXG4gICAgICAgIEdpb1BvbGljeVN0dWRpb1N0ZXBFZGl0RGlhbG9nQ29tcG9uZW50LFxuICAgICAgICB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgcG9saWN5OiB0aGlzLnBvbGljeSxcbiAgICAgICAgICAgIHN0ZXA6IHRoaXMuc3RlcCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJvbGU6ICdhbGVydGRpYWxvZycsXG4gICAgICAgICAgaWQ6ICdnaW9Qb2xpY3lTdHVkaW9Qb2xpY3lGb3JtRGlhbG9nJyxcbiAgICAgICAgICB3aWR0aDogR0lPX0RJQUxPR19XSURUSC5MQVJHRSxcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAuc3Vic2NyaWJlKHN0ZXBUb0VkaXQgPT4ge1xuICAgICAgICBpZiAoIXN0ZXBUb0VkaXQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0ZXBDaGFuZ2UuZW1pdChzdGVwVG9FZGl0KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uRGlzYWJsZSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1dpcCcpO1xuICB9XG5cbiAgcHVibGljIG9uRGVsZXRlKCkge1xuICAgIHRoaXMuZGVsZXRlZC5lbWl0KCk7XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAyMyBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICAgIFxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgIFxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuXG48ZGl2IGNsYXNzPVwiaW5mb1wiPlxuICA8ZGl2IGNsYXNzPVwiaW5mb19faGVhZFwiPlxuICAgIDxtYXQtaWNvbiBjbGFzcz1cImluZm9fX2hlYWRfX2ljb25cIiBbc3ZnSWNvbl09XCJwb2xpY3k/Lmljb24gPz8gJ2dpbzpwdXp6bGUnXCI+PC9tYXQtaWNvbj5cblxuICAgIDxzcGFuICpuZ0lmPVwic3RlcC5uYW1lXCIgY2xhc3M9XCJpbmZvX19oZWFkX19uYW1lXCI+e3sgc3RlcC5uYW1lIH19PC9zcGFuPlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwic3RlcC5kZXNjcmlwdGlvblwiIGNsYXNzPVwiaW5mb19fZGVzY3JpcHRpb25cIj57eyBzdGVwLmRlc2NyaXB0aW9uIH19PC9kaXY+XG48L2Rpdj5cblxuPGJ1dHRvbiBjbGFzcz1cIm1lbnVCdG5cIiBtYXQtaWNvbi1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cInBvbGljeU1lbnVcIj48bWF0LWljb24gc3ZnSWNvbj1cImdpbzptb3JlLXZlcnRpY2FsXCI+PC9tYXQtaWNvbj48L2J1dHRvbj5cblxuPG1hdC1tZW51ICNwb2xpY3lNZW51PVwibWF0TWVudVwiPlxuICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uRWRpdCgpXCI+XG4gICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86ZWRpdC1wZW5jaWxcIj48L21hdC1pY29uPlxuICAgIDxzcGFuPkVkaXQ8L3NwYW4+XG4gIDwvYnV0dG9uPlxuXG4gIDxidXR0b24gZGlzYWJsZWQgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25EaXNhYmxlKClcIj5cbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzpwcm9oaWJpdGlvblwiPjwvbWF0LWljb24+XG4gICAgPHNwYW4+RGlzYWJsZSDwn5qnPC9zcGFuPlxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm9uRGVsZXRlKClcIj5cbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzp0cmFzaFwiPjwvbWF0LWljb24+XG4gICAgPHNwYW4+RGVsZXRlPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvbWF0LW1lbnU+XG4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS1zdGVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzLXBoYXNlLXN0ZXAvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS1zdGVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzLXBoYXNlLXN0ZXAvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS1zdGVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFakcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHbEUsT0FBTyxFQUNMLHNDQUFzQyxHQUd2QyxNQUFNLHVEQUF1RCxDQUFDOzs7Ozs7O0FBTy9ELE1BQU0sT0FBTyx3Q0FBd0M7SUFrQm5ELFlBQTZCLFNBQW9CO1FBQXBCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFiMUMsYUFBUSxHQUFhLEVBQUUsQ0FBQztRQUd4QixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUd0QyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUduQyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUlTLENBQUM7SUFFOUMsV0FBVyxDQUFDLE9BQXNCO1FBQ3ZDLElBQUksT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDNUU7SUFDSCxDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLGtHQUFrRztZQUNsRyxPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsU0FBUzthQUNYLElBQUksQ0FDSCxzQ0FBc0MsRUFDdEM7WUFDRSxJQUFJLEVBQUU7Z0JBQ0osTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7YUFDaEI7WUFDRCxJQUFJLEVBQUUsYUFBYTtZQUNuQixFQUFFLEVBQUUsaUNBQWlDO1lBQ3JDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLO1NBQzlCLENBQ0Y7YUFDQSxXQUFXLEVBQUU7YUFDYixTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDZixPQUFPO2FBQ1I7WUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxTQUFTO1FBQ2QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQzs7c0lBN0RVLHdDQUF3QzswSEFBeEMsd0NBQXdDLDROQy9CckQsb3JEQThDQTs0RkRmYSx3Q0FBd0M7a0JBTHBELFNBQVM7K0JBQ0UsZ0NBQWdDO2dHQU1uQyxJQUFJO3NCQURWLEtBQUs7Z0JBSUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLE1BQU07Z0JBSUEsT0FBTztzQkFEYixNQUFNO2dCQUlBLFFBQVE7c0JBRGQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjIgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgR0lPX0RJQUxPR19XSURUSCB9IGZyb20gJ0BncmF2aXRlZS91aS1wYXJ0aWNsZXMtYW5ndWxhcic7XG5cbmltcG9ydCB7IFBvbGljeSwgU3RlcCB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge1xuICBHaW9Qb2xpY3lTdHVkaW9TdGVwRWRpdERpYWxvZ0NvbXBvbmVudCxcbiAgR2lvUG9saWN5U3R1ZGlvU3RlcEVkaXREaWFsb2dEYXRhLFxuICBHaW9Qb2xpY3lTdHVkaW9TdGVwRWRpdERpYWxvZ1Jlc3VsdCxcbn0gZnJvbSAnLi4vc3RlcC1lZGl0LWRpYWxvZy9naW8tcHMtc3RlcC1lZGl0LWRpYWxvZy5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLXN0ZXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS1zdGVwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS1zdGVwLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEdpb1BvbGljeVN0dWRpb0RldGFpbHNQaGFzZVN0ZXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBwdWJsaWMgc3RlcCE6IFN0ZXA7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBvbGljaWVzOiBQb2xpY3lbXSA9IFtdO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc3RlcENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U3RlcD4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGRlbGV0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBkaXNhYmxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwdWJsaWMgcG9saWN5PzogUG9saWN5O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbWF0RGlhbG9nOiBNYXREaWFsb2cpIHt9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5wb2xpY2llcyB8fCBjaGFuZ2VzLnN0ZXApIHtcbiAgICAgIHRoaXMucG9saWN5ID0gdGhpcy5wb2xpY2llcy5maW5kKHBvbGljeSA9PiBwb2xpY3kuaWQgPT09IHRoaXMuc3RlcC5wb2xpY3kpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkVkaXQoKSB7XG4gICAgaWYgKCF0aGlzLnBvbGljeSkge1xuICAgICAgLy8gVE9ETzogSGFuZGxlIFVzZUNhc2Ugd2hlbiBwb2xpY3kgaXMgbm90IGZvdW5kLiAoTGlrZSBpZiB0aGUgcGx1Z2luIGlzIHJlbW92ZWQgZnJvbSB0aGUgQmFja0VuZClcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1hdERpYWxvZ1xuICAgICAgLm9wZW48R2lvUG9saWN5U3R1ZGlvU3RlcEVkaXREaWFsb2dDb21wb25lbnQsIEdpb1BvbGljeVN0dWRpb1N0ZXBFZGl0RGlhbG9nRGF0YSwgR2lvUG9saWN5U3R1ZGlvU3RlcEVkaXREaWFsb2dSZXN1bHQ+KFxuICAgICAgICBHaW9Qb2xpY3lTdHVkaW9TdGVwRWRpdERpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIHBvbGljeTogdGhpcy5wb2xpY3ksXG4gICAgICAgICAgICBzdGVwOiB0aGlzLnN0ZXAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICByb2xlOiAnYWxlcnRkaWFsb2cnLFxuICAgICAgICAgIGlkOiAnZ2lvUG9saWN5U3R1ZGlvUG9saWN5Rm9ybURpYWxvZycsXG4gICAgICAgICAgd2lkdGg6IEdJT19ESUFMT0dfV0lEVEguTEFSR0UsXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgLnN1YnNjcmliZShzdGVwVG9FZGl0ID0+IHtcbiAgICAgICAgaWYgKCFzdGVwVG9FZGl0KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdGVwQ2hhbmdlLmVtaXQoc3RlcFRvRWRpdCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRpc2FibGUoKSB7XG4gICAgdGhpcy5kaXNhYmxlZC5lbWl0KCk7XG4gIH1cblxuICBwdWJsaWMgb25EZWxldGUoKSB7XG4gICAgdGhpcy5kZWxldGVkLmVtaXQoKTtcbiAgfVxufVxuIiwiPCEtLVxuXG4gICAgQ29weXJpZ2h0IChDKSAyMDIzIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gICAgXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gICAgXG4gICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAgICBcbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuLS0+XG5cbjxkaXYgY2xhc3M9XCJpbmZvXCI+XG4gIDxkaXYgY2xhc3M9XCJpbmZvX19oZWFkXCI+XG4gICAgPG1hdC1pY29uIGNsYXNzPVwiaW5mb19faGVhZF9faWNvblwiIFtzdmdJY29uXT1cInBvbGljeT8uaWNvbiA/PyAnZ2lvOnB1enpsZSdcIj48L21hdC1pY29uPlxuXG4gICAgPHNwYW4gKm5nSWY9XCJzdGVwLm5hbWVcIiBjbGFzcz1cImluZm9fX2hlYWRfX25hbWVcIj57eyBzdGVwLm5hbWUgfX08L3NwYW4+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJzdGVwLmRlc2NyaXB0aW9uXCIgY2xhc3M9XCJpbmZvX19kZXNjcmlwdGlvblwiPnt7IHN0ZXAuZGVzY3JpcHRpb24gfX08L2Rpdj5cbjwvZGl2PlxuXG48YnV0dG9uIGNsYXNzPVwibWVudUJ0blwiIG1hdC1pY29uLWJ1dHRvbiBbbWF0TWVudVRyaWdnZXJGb3JdPVwicG9saWN5TWVudVwiPjxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOm1vcmUtdmVydGljYWxcIj48L21hdC1pY29uPjwvYnV0dG9uPlxuXG48bWF0LW1lbnUgI3BvbGljeU1lbnU9XCJtYXRNZW51XCI+XG4gIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25FZGl0KClcIj5cbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzplZGl0LXBlbmNpbFwiPjwvbWF0LWljb24+XG4gICAgPHNwYW4+RWRpdDwvc3Bhbj5cbiAgPC9idXR0b24+XG5cbiAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJvbkRpc2FibGUoKVwiPlxuICAgIDxtYXQtaWNvbiBbc3ZnSWNvbl09XCJzdGVwLmVuYWJsZWQgPyAnZ2lvOnByb2hpYml0aW9uJyA6ICdnaW86Y2hlY2stY2lyY2xlZC1vdXRsaW5lJ1wiPjwvbWF0LWljb24+XG4gICAgPHNwYW4+e3sgc3RlcC5lbmFibGVkID8gJ0Rpc2FibGUnIDogJ0VuYWJsZScgfX08L3NwYW4+XG4gIDwvYnV0dG9uPlxuXG4gIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwib25EZWxldGUoKVwiPlxuICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOnRyYXNoXCI+PC9tYXQtaWNvbj5cbiAgICA8c3Bhbj5EZWxldGU8L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9tYXQtbWVudT5cbiJdfQ==