@gravitee/ui-policy-studio-angular 14.1.5 → 14.2.0-update-gravitee-theme-6776356

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.
@@ -142,7 +142,7 @@ export class GioPolicyStudioDetailsComponent {
142
142
  });
143
143
  }
144
144
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioDetailsComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
145
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioPolicyStudioDetailsComponent, isStandalone: true, selector: "gio-ps-flow-details", inputs: { readOnly: "readOnly", loading: "loading", apiType: "apiType", flow: "flow", entrypointsInfo: "entrypointsInfo", endpointsInfo: "endpointsInfo", policies: "policies", genericPolicies: "genericPolicies", 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\">\n Flow details\n <div *ngIf=\"!flow.enabled\" class=\"gio-badge gio-badge-neutral\">Disabled</div>\n </div>\n <div class=\"header__configBtn\">\n <button\n [disabled]=\"readOnly\"\n class=\"header__configBtn__enableDisable\"\n mat-stroked-button\n [matTooltip]=\"flow.enabled ? 'Disable' : 'Enable'\"\n (click)=\"onEnableDisableFlow()\"\n >\n <mat-icon [svgIcon]=\"flow.enabled ? 'gio:prohibition' : 'gio:check-circled-outline'\"></mat-icon>\n </button>\n <button [disabled]=\"readOnly\" class=\"header__configBtn__edit\" mat-stroked-button (click)=\"onEditFlow()\" matTooltip=\"Edit\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button [disabled]=\"readOnly\" class=\"header__configBtn__delete\" mat-stroked-button (click)=\"onDeleteFlow()\" matTooltip=\"Delete\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar\n class=\"infoBar\"\n [class.flowDisabled]=\"!flow.enabled\"\n [flow]=\"flow\"\n [entrypointsInfo]=\"entrypointsInfo\"\n ></gio-ps-flow-details-info-bar>\n\n <div class=\"content\" [class.flowDisabled]=\"!flow.enabled\">\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 [readOnly]=\"readOnly\"\n [startConnector]=\"messageFlowEntrypointsInfo\"\n [endConnector]=\"endpointsInfo\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"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 [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo\"\n [endConnector]=\"messageFlowEntrypointsInfo\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"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 [readOnly]=\"readOnly\"\n [startConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode: 'PUBLISH' : operations\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'PUBLISH' : operations\"\n [steps]=\"flow.publish ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"PUBLISH\"\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 [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE' : operations\"\n [endConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE' : operations\"\n [steps]=\"flow.subscribe ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"SUBSCRIBE\"\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 [readOnly]=\"readOnly\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"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 [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </ng-container>\n\n <mat-tab-group *ngIf=\"apiType === 'NATIVE'\" class=\"content__tabs\" dynamicHeight>\n <mat-tab label=\"Global\" bodyClass=\"content__tabs__body\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Connect phase\"\n description=\"Policies will be applied when the client connects to the Gateway\"\n [disabledNotYetAvailable]=\"true\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'CONNECT'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'CONNECT'\"\n [steps]=\"flow.connect ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"CONNECT\"\n (stepsChange)=\"onStepsChange('connect', $event)\"\n >\n </gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Interact phase\"\n description=\"Policies will be applied on all interactions between the client and the Gateway\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'INTERACT'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'INTERACT'\"\n [steps]=\"flow.interact ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"INTERACT\"\n (stepsChange)=\"onStepsChange('interact', $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 when publishing messages\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'PUBLISH'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'PUBLISH'\"\n [steps]=\"flow.publish ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"PUBLISH\"\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 when fetching messages\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE'\"\n [steps]=\"flow.subscribe ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"SUBSCRIBE\"\n (stepsChange)=\"onStepsChange('subscribe', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n </mat-tab-group>\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 disabled>\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button class=\"header__configBtn__delete\" mat-stroked-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: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}: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-size:16px;font-weight:500;letter-spacing:.4px;line-height:24px;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}.infoBar.flowDisabled{opacity:.5}.content{overflow:auto;flex:1 1 auto;background-color:#f7f8fd}.content.flowDisabled{opacity:.5}.content__tabs{min-height:100%;min-height:calc(100% - 64px)}.content__phase{margin:16px 16px 0}.content.loading{display:flex}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: GioIconsModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: GioPolicyStudioDetailsPhaseComponent, selector: "gio-ps-flow-details-phase", inputs: ["readOnly", "steps", "name", "description", "startConnector", "endConnector", "apiType", "genericPolicies", "policyFlowPhase", "trialUrl", "disabledNotYetAvailable"], outputs: ["stepsChange"] }, { kind: "pipe", type: GioFilterConnectorsByModePipe, name: "gioFilterConnectorsByMode" }, { kind: "ngmodule", type: GioLoaderModule }, { kind: "component", type: i6.GioLoaderComponent, selector: "gio-loader" }, { kind: "component", type: GioPolicyStudioDetailsInfoBarComponent, selector: "gio-ps-flow-details-info-bar", inputs: ["flow", "entrypointsInfo"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: GioBannerModule }] }); }
145
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioPolicyStudioDetailsComponent, isStandalone: true, selector: "gio-ps-flow-details", inputs: { readOnly: "readOnly", loading: "loading", apiType: "apiType", flow: "flow", entrypointsInfo: "entrypointsInfo", endpointsInfo: "endpointsInfo", policies: "policies", genericPolicies: "genericPolicies", 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\">\n Flow details\n <div *ngIf=\"!flow.enabled\" class=\"gio-badge gio-badge-neutral\">Disabled</div>\n </div>\n <div class=\"header__configBtn\">\n <button\n [disabled]=\"readOnly\"\n class=\"header__configBtn__enableDisable\"\n mat-stroked-button\n [matTooltip]=\"flow.enabled ? 'Disable' : 'Enable'\"\n (click)=\"onEnableDisableFlow()\"\n >\n <mat-icon [svgIcon]=\"flow.enabled ? 'gio:prohibition' : 'gio:check-circled-outline'\"></mat-icon>\n </button>\n <button [disabled]=\"readOnly\" class=\"header__configBtn__edit\" mat-stroked-button (click)=\"onEditFlow()\" matTooltip=\"Edit\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button [disabled]=\"readOnly\" class=\"header__configBtn__delete\" mat-stroked-button (click)=\"onDeleteFlow()\" matTooltip=\"Delete\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar\n class=\"infoBar\"\n [class.flowDisabled]=\"!flow.enabled\"\n [flow]=\"flow\"\n [entrypointsInfo]=\"entrypointsInfo\"\n ></gio-ps-flow-details-info-bar>\n\n <div class=\"content\" [class.flowDisabled]=\"!flow.enabled\">\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 [readOnly]=\"readOnly\"\n [startConnector]=\"messageFlowEntrypointsInfo\"\n [endConnector]=\"endpointsInfo\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"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 [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo\"\n [endConnector]=\"messageFlowEntrypointsInfo\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"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 [readOnly]=\"readOnly\"\n [startConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode: 'PUBLISH' : operations\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'PUBLISH' : operations\"\n [steps]=\"flow.publish ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"PUBLISH\"\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 [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE' : operations\"\n [endConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE' : operations\"\n [steps]=\"flow.subscribe ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"SUBSCRIBE\"\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 [readOnly]=\"readOnly\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"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 [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </ng-container>\n\n <mat-tab-group *ngIf=\"apiType === 'NATIVE'\" class=\"content__tabs\" dynamicHeight>\n <mat-tab label=\"Global\" bodyClass=\"content__tabs__body\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Connect phase\"\n description=\"Policies will be applied when the client connects to the Gateway\"\n [disabledNotYetAvailable]=\"true\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'CONNECT'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'CONNECT'\"\n [steps]=\"flow.connect ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"CONNECT\"\n (stepsChange)=\"onStepsChange('connect', $event)\"\n >\n </gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Interact phase\"\n description=\"Policies will be applied on all interactions between the client and the Gateway\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'INTERACT'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'INTERACT'\"\n [steps]=\"flow.interact ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"INTERACT\"\n (stepsChange)=\"onStepsChange('interact', $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 when publishing messages\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'PUBLISH'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'PUBLISH'\"\n [steps]=\"flow.publish ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"PUBLISH\"\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 when fetching messages\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE'\"\n [steps]=\"flow.subscribe ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"SUBSCRIBE\"\n (stepsChange)=\"onStepsChange('subscribe', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n </mat-tab-group>\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 disabled>\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button class=\"header__configBtn__delete\" mat-stroked-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: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #96f3ff);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}: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 #d2cecd}.header__label{font-size:16px;font-weight:500;letter-spacing:.4px;line-height:24px;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 #d2cecd}.infoBar.loading{min-height:52px}.infoBar.flowDisabled{opacity:.5}.content{overflow:auto;flex:1 1 auto;background-color:#f7f7f8}.content.flowDisabled{opacity:.5}.content__tabs{min-height:100%;min-height:calc(100% - 64px)}.content__phase{margin:16px 16px 0}.content.loading{display:flex}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i3.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: GioIconsModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: GioPolicyStudioDetailsPhaseComponent, selector: "gio-ps-flow-details-phase", inputs: ["readOnly", "steps", "name", "description", "startConnector", "endConnector", "apiType", "genericPolicies", "policyFlowPhase", "trialUrl", "disabledNotYetAvailable"], outputs: ["stepsChange"] }, { kind: "pipe", type: GioFilterConnectorsByModePipe, name: "gioFilterConnectorsByMode" }, { kind: "ngmodule", type: GioLoaderModule }, { kind: "component", type: i6.GioLoaderComponent, selector: "gio-loader" }, { kind: "component", type: GioPolicyStudioDetailsInfoBarComponent, selector: "gio-ps-flow-details-info-bar", inputs: ["flow", "entrypointsInfo"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: GioBannerModule }] }); }
146
146
  }
147
147
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioDetailsComponent, decorators: [{
148
148
  type: Component,
@@ -157,7 +157,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
157
157
  GioPolicyStudioDetailsInfoBarComponent,
158
158
  MatTooltipModule,
159
159
  GioBannerModule,
160
- ], 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\">\n Flow details\n <div *ngIf=\"!flow.enabled\" class=\"gio-badge gio-badge-neutral\">Disabled</div>\n </div>\n <div class=\"header__configBtn\">\n <button\n [disabled]=\"readOnly\"\n class=\"header__configBtn__enableDisable\"\n mat-stroked-button\n [matTooltip]=\"flow.enabled ? 'Disable' : 'Enable'\"\n (click)=\"onEnableDisableFlow()\"\n >\n <mat-icon [svgIcon]=\"flow.enabled ? 'gio:prohibition' : 'gio:check-circled-outline'\"></mat-icon>\n </button>\n <button [disabled]=\"readOnly\" class=\"header__configBtn__edit\" mat-stroked-button (click)=\"onEditFlow()\" matTooltip=\"Edit\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button [disabled]=\"readOnly\" class=\"header__configBtn__delete\" mat-stroked-button (click)=\"onDeleteFlow()\" matTooltip=\"Delete\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar\n class=\"infoBar\"\n [class.flowDisabled]=\"!flow.enabled\"\n [flow]=\"flow\"\n [entrypointsInfo]=\"entrypointsInfo\"\n ></gio-ps-flow-details-info-bar>\n\n <div class=\"content\" [class.flowDisabled]=\"!flow.enabled\">\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 [readOnly]=\"readOnly\"\n [startConnector]=\"messageFlowEntrypointsInfo\"\n [endConnector]=\"endpointsInfo\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"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 [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo\"\n [endConnector]=\"messageFlowEntrypointsInfo\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"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 [readOnly]=\"readOnly\"\n [startConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode: 'PUBLISH' : operations\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'PUBLISH' : operations\"\n [steps]=\"flow.publish ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"PUBLISH\"\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 [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE' : operations\"\n [endConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE' : operations\"\n [steps]=\"flow.subscribe ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"SUBSCRIBE\"\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 [readOnly]=\"readOnly\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"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 [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </ng-container>\n\n <mat-tab-group *ngIf=\"apiType === 'NATIVE'\" class=\"content__tabs\" dynamicHeight>\n <mat-tab label=\"Global\" bodyClass=\"content__tabs__body\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Connect phase\"\n description=\"Policies will be applied when the client connects to the Gateway\"\n [disabledNotYetAvailable]=\"true\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'CONNECT'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'CONNECT'\"\n [steps]=\"flow.connect ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"CONNECT\"\n (stepsChange)=\"onStepsChange('connect', $event)\"\n >\n </gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Interact phase\"\n description=\"Policies will be applied on all interactions between the client and the Gateway\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'INTERACT'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'INTERACT'\"\n [steps]=\"flow.interact ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"INTERACT\"\n (stepsChange)=\"onStepsChange('interact', $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 when publishing messages\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'PUBLISH'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'PUBLISH'\"\n [steps]=\"flow.publish ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"PUBLISH\"\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 when fetching messages\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE'\"\n [steps]=\"flow.subscribe ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"SUBSCRIBE\"\n (stepsChange)=\"onStepsChange('subscribe', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n </mat-tab-group>\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 disabled>\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button class=\"header__configBtn__delete\" mat-stroked-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: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}: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-size:16px;font-weight:500;letter-spacing:.4px;line-height:24px;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}.infoBar.flowDisabled{opacity:.5}.content{overflow:auto;flex:1 1 auto;background-color:#f7f8fd}.content.flowDisabled{opacity:.5}.content__tabs{min-height:100%;min-height:calc(100% - 64px)}.content__phase{margin:16px 16px 0}.content.loading{display:flex}\n"] }]
160
+ ], 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\">\n Flow details\n <div *ngIf=\"!flow.enabled\" class=\"gio-badge gio-badge-neutral\">Disabled</div>\n </div>\n <div class=\"header__configBtn\">\n <button\n [disabled]=\"readOnly\"\n class=\"header__configBtn__enableDisable\"\n mat-stroked-button\n [matTooltip]=\"flow.enabled ? 'Disable' : 'Enable'\"\n (click)=\"onEnableDisableFlow()\"\n >\n <mat-icon [svgIcon]=\"flow.enabled ? 'gio:prohibition' : 'gio:check-circled-outline'\"></mat-icon>\n </button>\n <button [disabled]=\"readOnly\" class=\"header__configBtn__edit\" mat-stroked-button (click)=\"onEditFlow()\" matTooltip=\"Edit\">\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button [disabled]=\"readOnly\" class=\"header__configBtn__delete\" mat-stroked-button (click)=\"onDeleteFlow()\" matTooltip=\"Delete\">\n <mat-icon svgIcon=\"gio:trash\"></mat-icon>\n </button>\n </div>\n </div>\n <gio-ps-flow-details-info-bar\n class=\"infoBar\"\n [class.flowDisabled]=\"!flow.enabled\"\n [flow]=\"flow\"\n [entrypointsInfo]=\"entrypointsInfo\"\n ></gio-ps-flow-details-info-bar>\n\n <div class=\"content\" [class.flowDisabled]=\"!flow.enabled\">\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 [readOnly]=\"readOnly\"\n [startConnector]=\"messageFlowEntrypointsInfo\"\n [endConnector]=\"endpointsInfo\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"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 [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo\"\n [endConnector]=\"messageFlowEntrypointsInfo\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"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 [readOnly]=\"readOnly\"\n [startConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode: 'PUBLISH' : operations\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'PUBLISH' : operations\"\n [steps]=\"flow.publish ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"PUBLISH\"\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 [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE' : operations\"\n [endConnector]=\"messageFlowEntrypointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE' : operations\"\n [steps]=\"flow.subscribe ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"SUBSCRIBE\"\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 [readOnly]=\"readOnly\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [steps]=\"flow.request ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"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 [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'REQUEST_RESPONSE'\"\n [steps]=\"flow.response ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"RESPONSE\"\n (stepsChange)=\"onStepsChange('response', $event)\"\n ></gio-ps-flow-details-phase>\n </ng-container>\n\n <mat-tab-group *ngIf=\"apiType === 'NATIVE'\" class=\"content__tabs\" dynamicHeight>\n <mat-tab label=\"Global\" bodyClass=\"content__tabs__body\">\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Connect phase\"\n description=\"Policies will be applied when the client connects to the Gateway\"\n [disabledNotYetAvailable]=\"true\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'CONNECT'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'CONNECT'\"\n [steps]=\"flow.connect ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"CONNECT\"\n (stepsChange)=\"onStepsChange('connect', $event)\"\n >\n </gio-ps-flow-details-phase>\n <gio-ps-flow-details-phase\n class=\"content__phase\"\n name=\"Interact phase\"\n description=\"Policies will be applied on all interactions between the client and the Gateway\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'INTERACT'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'INTERACT'\"\n [steps]=\"flow.interact ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"INTERACT\"\n (stepsChange)=\"onStepsChange('interact', $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 when publishing messages\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'PUBLISH'\"\n [endConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'PUBLISH'\"\n [steps]=\"flow.publish ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"PUBLISH\"\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 when fetching messages\"\n [readOnly]=\"readOnly\"\n [startConnector]=\"endpointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE'\"\n [endConnector]=\"entrypointsInfo | gioFilterConnectorsByMode: 'SUBSCRIBE'\"\n [steps]=\"flow.subscribe ?? []\"\n [apiType]=\"apiType\"\n [genericPolicies]=\"genericPolicies\"\n [trialUrl]=\"trialUrl\"\n policyFlowPhase=\"SUBSCRIBE\"\n (stepsChange)=\"onStepsChange('subscribe', $event)\"\n ></gio-ps-flow-details-phase>\n </mat-tab>\n </mat-tab-group>\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 disabled>\n <mat-icon svgIcon=\"gio:edit-pencil\"></mat-icon>\n </button>\n <button class=\"header__configBtn__delete\" mat-stroked-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: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #96f3ff);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}: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 #d2cecd}.header__label{font-size:16px;font-weight:500;letter-spacing:.4px;line-height:24px;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 #d2cecd}.infoBar.loading{min-height:52px}.infoBar.flowDisabled{opacity:.5}.content{overflow:auto;flex:1 1 auto;background-color:#f7f7f8}.content.flowDisabled{opacity:.5}.content__tabs{min-height:100%;min-height:calc(100% - 64px)}.content__phase{margin:16px 16px 0}.content.loading{display:flex}\n"] }]
161
161
  }], ctorParameters: () => [{ type: i1.MatDialog }], propDecorators: { readOnly: [{
162
162
  type: Input
163
163
  }], loading: [{
@@ -102,14 +102,14 @@ export class GioPolicyStudioDetailsInfoBarComponent {
102
102
  ];
103
103
  }
104
104
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioDetailsInfoBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
105
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioPolicyStudioDetailsInfoBarComponent, isStandalone: true, selector: "gio-ps-flow-details-info-bar", inputs: { flow: "flow", entrypointsInfo: "entrypointsInfo" }, 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<div *ngIf=\"flow?.name\" class=\"info\">\n <span class=\"info__label\">Name</span>\n <span class=\"info__value strong\">{{ flow?.name }}</span>\n</div>\n\n<div *ngIf=\"entrypoints\" class=\"info\">\n <span class=\"info__label\">Entrypoints</span>\n <span *ngFor=\"let entrypoint of entrypoints\" class=\"info__value gio-badge gio-badge-neutral\">\n <mat-icon [svgIcon]=\"entrypoint.icon\"></mat-icon>\n {{ entrypoint.name }}</span\n >\n</div>\n\n<!-- MESSAGE API type -->\n\n<div *ngIf=\"operations\" class=\"info\">\n <span class=\"info__label\">Operations</span>\n <span *ngFor=\"let operation of operations\" class=\"info__value gio-badge-neutral\"> {{ operation }}</span>\n</div>\n\n<div *ngIf=\"channel\" class=\"info\">\n <span class=\"info__label\">Channel</span>\n <span class=\"info__value strong\">{{ channel }}</span>\n</div>\n\n<div *ngIf=\"channelOperator\" class=\"info\">\n <span class=\"info__label\">Channel Operator</span>\n <span class=\"info__value gio-badge-neutral\">{{ channelOperator }}</span>\n</div>\n\n<!-- PROXY API type -->\n\n<div *ngIf=\"path\" class=\"info\">\n <span class=\"info__label\">Path</span>\n <span class=\"info__value strong\">{{ path }}</span>\n</div>\n\n<div *ngIf=\"pathOperator\" class=\"info\">\n <span class=\"info__label\">Path Operator</span>\n <span class=\"info__value gio-badge-neutral\">{{ pathOperator }}</span>\n</div>\n\n<div *ngIf=\"methods\" class=\"info\">\n <span class=\"info__label\">HTTP methods</span>\n <span *ngFor=\"let method of methods\" class=\"info__value method\" [ngClass]=\"method.class\"> {{ method.name }}</span>\n</div>\n\n<!-- Condition -->\n\n<div *ngIf=\"condition\" class=\"info\">\n <span class=\"info__label\">Condition</span>\n <span class=\"info__value gio-badge-neutral condition\">{{ condition }}</span>\n</div>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}:host{display:flex;flex-flow:row wrap;padding:16px;gap:12px}.info__label{font-size:14px;font-weight:400;line-height:22px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;color:#606274}.info__value.strong{padding-left:8px;font-size:14px;font-weight:500;line-height:20px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}.info__value.method{width:auto}.info__value.gio-badge mat-icon{margin-right:4px}.info__value.condition{text-transform:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: GioIconsModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCommonModule }] }); }
105
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.4", type: GioPolicyStudioDetailsInfoBarComponent, isStandalone: true, selector: "gio-ps-flow-details-info-bar", inputs: { flow: "flow", entrypointsInfo: "entrypointsInfo" }, 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<div *ngIf=\"flow?.name\" class=\"info\">\n <span class=\"info__label\">Name</span>\n <span class=\"info__value strong\">{{ flow?.name }}</span>\n</div>\n\n<div *ngIf=\"entrypoints\" class=\"info\">\n <span class=\"info__label\">Entrypoints</span>\n <span *ngFor=\"let entrypoint of entrypoints\" class=\"info__value gio-badge gio-badge-neutral\">\n <mat-icon [svgIcon]=\"entrypoint.icon\"></mat-icon>\n {{ entrypoint.name }}</span\n >\n</div>\n\n<!-- MESSAGE API type -->\n\n<div *ngIf=\"operations\" class=\"info\">\n <span class=\"info__label\">Operations</span>\n <span *ngFor=\"let operation of operations\" class=\"info__value gio-badge-neutral\"> {{ operation }}</span>\n</div>\n\n<div *ngIf=\"channel\" class=\"info\">\n <span class=\"info__label\">Channel</span>\n <span class=\"info__value strong\">{{ channel }}</span>\n</div>\n\n<div *ngIf=\"channelOperator\" class=\"info\">\n <span class=\"info__label\">Channel Operator</span>\n <span class=\"info__value gio-badge-neutral\">{{ channelOperator }}</span>\n</div>\n\n<!-- PROXY API type -->\n\n<div *ngIf=\"path\" class=\"info\">\n <span class=\"info__label\">Path</span>\n <span class=\"info__value strong\">{{ path }}</span>\n</div>\n\n<div *ngIf=\"pathOperator\" class=\"info\">\n <span class=\"info__label\">Path Operator</span>\n <span class=\"info__value gio-badge-neutral\">{{ pathOperator }}</span>\n</div>\n\n<div *ngIf=\"methods\" class=\"info\">\n <span class=\"info__label\">HTTP methods</span>\n <span *ngFor=\"let method of methods\" class=\"info__value method\" [ngClass]=\"method.class\"> {{ method.name }}</span>\n</div>\n\n<!-- Condition -->\n\n<div *ngIf=\"condition\" class=\"info\">\n <span class=\"info__label\">Condition</span>\n <span class=\"info__value gio-badge-neutral condition\">{{ condition }}</span>\n</div>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #96f3ff);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}:host{display:flex;flex-flow:row wrap;padding:16px;gap:12px}.info__label{font-size:14px;font-weight:400;line-height:22px;font-family:Manrope,sans-serif;letter-spacing:.4px;color:#322f2f}.info__value.strong{padding-left:8px;font-size:14px;font-weight:500;line-height:20px;font-family:Manrope,sans-serif;letter-spacing:.4px}.info__value.method{width:auto}.info__value.gio-badge mat-icon{margin-right:4px}.info__value.condition{text-transform:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: GioIconsModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCommonModule }] }); }
106
106
  }
107
107
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioDetailsInfoBarComponent, decorators: [{
108
108
  type: Component,
109
- args: [{ imports: [CommonModule, GioIconsModule, MatCommonModule], selector: 'gio-ps-flow-details-info-bar', 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<div *ngIf=\"flow?.name\" class=\"info\">\n <span class=\"info__label\">Name</span>\n <span class=\"info__value strong\">{{ flow?.name }}</span>\n</div>\n\n<div *ngIf=\"entrypoints\" class=\"info\">\n <span class=\"info__label\">Entrypoints</span>\n <span *ngFor=\"let entrypoint of entrypoints\" class=\"info__value gio-badge gio-badge-neutral\">\n <mat-icon [svgIcon]=\"entrypoint.icon\"></mat-icon>\n {{ entrypoint.name }}</span\n >\n</div>\n\n<!-- MESSAGE API type -->\n\n<div *ngIf=\"operations\" class=\"info\">\n <span class=\"info__label\">Operations</span>\n <span *ngFor=\"let operation of operations\" class=\"info__value gio-badge-neutral\"> {{ operation }}</span>\n</div>\n\n<div *ngIf=\"channel\" class=\"info\">\n <span class=\"info__label\">Channel</span>\n <span class=\"info__value strong\">{{ channel }}</span>\n</div>\n\n<div *ngIf=\"channelOperator\" class=\"info\">\n <span class=\"info__label\">Channel Operator</span>\n <span class=\"info__value gio-badge-neutral\">{{ channelOperator }}</span>\n</div>\n\n<!-- PROXY API type -->\n\n<div *ngIf=\"path\" class=\"info\">\n <span class=\"info__label\">Path</span>\n <span class=\"info__value strong\">{{ path }}</span>\n</div>\n\n<div *ngIf=\"pathOperator\" class=\"info\">\n <span class=\"info__label\">Path Operator</span>\n <span class=\"info__value gio-badge-neutral\">{{ pathOperator }}</span>\n</div>\n\n<div *ngIf=\"methods\" class=\"info\">\n <span class=\"info__label\">HTTP methods</span>\n <span *ngFor=\"let method of methods\" class=\"info__value method\" [ngClass]=\"method.class\"> {{ method.name }}</span>\n</div>\n\n<!-- Condition -->\n\n<div *ngIf=\"condition\" class=\"info\">\n <span class=\"info__label\">Condition</span>\n <span class=\"info__value gio-badge-neutral condition\">{{ condition }}</span>\n</div>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}:host{display:flex;flex-flow:row wrap;padding:16px;gap:12px}.info__label{font-size:14px;font-weight:400;line-height:22px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;color:#606274}.info__value.strong{padding-left:8px;font-size:14px;font-weight:500;line-height:20px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}.info__value.method{width:auto}.info__value.gio-badge mat-icon{margin-right:4px}.info__value.condition{text-transform:none}\n"] }]
109
+ args: [{ imports: [CommonModule, GioIconsModule, MatCommonModule], selector: 'gio-ps-flow-details-info-bar', 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<div *ngIf=\"flow?.name\" class=\"info\">\n <span class=\"info__label\">Name</span>\n <span class=\"info__value strong\">{{ flow?.name }}</span>\n</div>\n\n<div *ngIf=\"entrypoints\" class=\"info\">\n <span class=\"info__label\">Entrypoints</span>\n <span *ngFor=\"let entrypoint of entrypoints\" class=\"info__value gio-badge gio-badge-neutral\">\n <mat-icon [svgIcon]=\"entrypoint.icon\"></mat-icon>\n {{ entrypoint.name }}</span\n >\n</div>\n\n<!-- MESSAGE API type -->\n\n<div *ngIf=\"operations\" class=\"info\">\n <span class=\"info__label\">Operations</span>\n <span *ngFor=\"let operation of operations\" class=\"info__value gio-badge-neutral\"> {{ operation }}</span>\n</div>\n\n<div *ngIf=\"channel\" class=\"info\">\n <span class=\"info__label\">Channel</span>\n <span class=\"info__value strong\">{{ channel }}</span>\n</div>\n\n<div *ngIf=\"channelOperator\" class=\"info\">\n <span class=\"info__label\">Channel Operator</span>\n <span class=\"info__value gio-badge-neutral\">{{ channelOperator }}</span>\n</div>\n\n<!-- PROXY API type -->\n\n<div *ngIf=\"path\" class=\"info\">\n <span class=\"info__label\">Path</span>\n <span class=\"info__value strong\">{{ path }}</span>\n</div>\n\n<div *ngIf=\"pathOperator\" class=\"info\">\n <span class=\"info__label\">Path Operator</span>\n <span class=\"info__value gio-badge-neutral\">{{ pathOperator }}</span>\n</div>\n\n<div *ngIf=\"methods\" class=\"info\">\n <span class=\"info__label\">HTTP methods</span>\n <span *ngFor=\"let method of methods\" class=\"info__value method\" [ngClass]=\"method.class\"> {{ method.name }}</span>\n</div>\n\n<!-- Condition -->\n\n<div *ngIf=\"condition\" class=\"info\">\n <span class=\"info__label\">Condition</span>\n <span class=\"info__value gio-badge-neutral condition\">{{ condition }}</span>\n</div>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #96f3ff);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}:host{display:flex;flex-flow:row wrap;padding:16px;gap:12px}.info__label{font-size:14px;font-weight:400;line-height:22px;font-family:Manrope,sans-serif;letter-spacing:.4px;color:#322f2f}.info__value.strong{padding-left:8px;font-size:14px;font-weight:500;line-height:20px;font-family:Manrope,sans-serif;letter-spacing:.4px}.info__value.method{width:auto}.info__value.gio-badge mat-icon{margin-right:4px}.info__value.condition{text-transform:none}\n"] }]
110
110
  }], propDecorators: { flow: [{
111
111
  type: Input
112
112
  }], entrypointsInfo: [{
113
113
  type: Input
114
114
  }] } });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZGV0YWlscy1pbmZvLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3ctZGV0YWlscy1pbmZvLWJhci9naW8tcHMtZmxvdy1kZXRhaWxzLWluZm8tYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzLWluZm8tYmFyL2dpby1wcy1mbG93LWRldGFpbHMtaW5mby1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBVy9DLE1BQU0sT0FBTyxzQ0FBc0M7SUFObkQ7UUFRUyxTQUFJLEdBQVksU0FBUyxDQUFDO0tBK0ZsQztJQTFGQyxJQUFXLFNBQVM7UUFDbEIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBc0IsQ0FBQztRQUN2RyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN2QixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FB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IChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBHaW9JY29uc01vZHVsZSB9IGZyb20gJ0BncmF2aXRlZS91aS1wYXJ0aWNsZXMtYW5ndWxhcic7XG5pbXBvcnQgeyBNYXRDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IENoYW5uZWxTZWxlY3RvciwgQ29uZGl0aW9uU2VsZWN0b3IsIENvbm5lY3RvckluZm8sIEh0dHBTZWxlY3RvciwgT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEZsb3dWTSB9IGZyb20gJy4uLy4uL3BvbGljeS1zdHVkaW8vZ2lvLXBvbGljeS1zdHVkaW8ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgR2lvSWNvbnNNb2R1bGUsIE1hdENvbW1vbk1vZHVsZV0sXG4gIHNlbGVjdG9yOiAnZ2lvLXBzLWZsb3ctZGV0YWlscy1pbmZvLWJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9naW8tcHMtZmxvdy1kZXRhaWxzLWluZm8tYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2lvLXBzLWZsb3ctZGV0YWlscy1pbmZvLWJhci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9Qb2xpY3lTdHVkaW9EZXRhaWxzSW5mb0JhckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmbG93PzogRmxvd1ZNID0gdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbnRyeXBvaW50c0luZm8/OiBDb25uZWN0b3JJbmZvW107XG5cbiAgcHVibGljIGdldCBjb25kaXRpb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjb25kaXRpb25TZWxlY3RvciA9IHRoaXMuZmxvdz8uc2VsZWN0b3JzPy5maW5kKHMgPT4gcy50eXBlID09PSAnQ09ORElUSU9OJykgYXMgQ29uZGl0aW9uU2VsZWN0b3I7XG4gICAgaWYgKCFjb25kaXRpb25TZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGNvbmRpdGlvblNlbGVjdG9yPy5jb25kaXRpb247XG4gIH1cblxuICAvLyBNRVNTQUdFIEFQSSB0eXBlXG5cbiAgcHVibGljIGdldCBvcGVyYXRpb25zKCk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjaGFubmVsU2VsZWN0b3IgPSB0aGlzLmZsb3c/LnNlbGVjdG9ycz8uZmluZChzID0+IHMudHlwZSA9PT0gJ0NIQU5ORUwnKSBhcyBDaGFubmVsU2VsZWN0b3I7XG4gICAgaWYgKCFjaGFubmVsU2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IG9wZXJhdGlvblRvQmFkZ2U6IFJlY29yZDxPcGVyYXRpb24sIHN0cmluZz4gPSB7XG4gICAgICBQVUJMSVNIOiAnUFVCJyxcbiAgICAgIFNVQlNDUklCRTogJ1NVQicsXG4gICAgfTtcbiAgICAvLyBJZiBubyBvcGVyYXRpb25zIGFyZSBzZWxlY3RlZCwgYWxsIG9wZXJhdGlvbnMgYXJlIHZhbGlkXG4gICAgY29uc3Qgb3BlcmF0aW9ucyA9XG4gICAgICAhY2hhbm5lbFNlbGVjdG9yLm9wZXJhdGlvbnMgfHwgaXNFbXB0eShjaGFubmVsU2VsZWN0b3Iub3BlcmF0aW9ucykgPyAoWydQVUJMSVNIJywgJ1NVQlNDUklCRSddIGFzIGNvbnN0KSA6IGNoYW5uZWxTZWxlY3Rvci5vcGVyYXRpb25zO1xuXG4gICAgcmV0dXJuIG9wZXJhdGlvbnMubWFwKG8gPT4gb3BlcmF0aW9uVG9CYWRnZVtvXSkuc29ydCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGFubmVsKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY2hhbm5lbFNlbGVjdG9yID0gdGhpcy5mbG93Py5zZWxlY3RvcnM/LmZpbmQocyA9PiBzLnR5cGUgPT09ICdDSEFOTkVMJykgYXMgQ2hhbm5lbFNlbGVjdG9yO1xuICAgIGlmICghY2hhbm5lbFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gY2hhbm5lbFNlbGVjdG9yPy5jaGFubmVsO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGFubmVsT3BlcmF0b3IoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjaGFubmVsU2VsZWN0b3IgPSB0aGlzLmZsb3c/LnNlbGVjdG9ycz8uZmluZChzID0+IHMudHlwZSA9PT0gJ0NIQU5ORUwnKSBhcyBDaGFubmVsU2VsZWN0b3I7XG4gICAgaWYgKCFjaGFubmVsU2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBjaGFubmVsU2VsZWN0b3I/LmNoYW5uZWxPcGVyYXRvcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZW50cnlwb2ludHMoKTogQ29ubmVjdG9ySW5mb1tdIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjaGFubmVsU2VsZWN0b3IgPSB0aGlzLmZsb3c/LnNlbGVjdG9ycz8uZmluZChzID0+IHMudHlwZSA9PT0gJ0NIQU5ORUwnKSBhcyBDaGFubmVsU2VsZWN0b3I7XG4gICAgaWYgKCFjaGFubmVsU2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZW50cnlwb2ludHNJbmZvPy5maWx0ZXIoXG4gICAgICBlID0+XG4gICAgICAgIC8vIElmIG5vIGVudHJ5cG9pbnRzIGFyZSBzZWxlY3RlZCwgYWxsIGVudHJ5cG9pbnRzIGFyZSB2YWxpZFxuICAgICAgICAhY2hhbm5lbFNlbGVjdG9yLmVudHJ5cG9pbnRzIHx8IGlzRW1wdHkoY2hhbm5lbFNlbGVjdG9yLmVudHJ5cG9pbnRzKSB8fCBjaGFubmVsU2VsZWN0b3IuZW50cnlwb2ludHM/LmluY2x1ZGVzKGUudHlwZSksXG4gICAgKTtcbiAgfVxuXG4gIC8vIFBST1hZIEFQSSB0eXBlXG5cbiAgcHVibGljIGdldCBwYXRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaHR0cFNlbGVjdG9yID0gdGhpcy5mbG93Py5zZWxlY3RvcnM/LmZpbmQocyA9PiBzLnR5cGUgPT09ICdIVFRQJykgYXMgSHR0cFNlbGVjdG9yO1xuICAgIGlmICghaHR0cFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gaHR0cFNlbGVjdG9yPy5wYXRoO1xuICB9XG5cbiAgcHVibGljIGdldCBwYXRoT3BlcmF0b3IoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBodHRwU2VsZWN0b3IgPSB0aGlzLmZsb3c/LnNlbGVjdG9ycz8uZmluZChzID0+IHMudHlwZSA9PT0gJ0hUVFAnKSBhcyBIdHRwU2VsZWN0b3I7XG4gICAgaWYgKCFodHRwU2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBodHRwU2VsZWN0b3I/LnBhdGhPcGVyYXRvcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWV0aG9kcygpOiB7IG5hbWU6IHN0cmluZzsgY2xhc3M6IHN0cmluZyB9W10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGh0dHBTZWxlY3RvciA9IHRoaXMuZmxvdz8uc2VsZWN0b3JzPy5maW5kKHMgPT4gcy50eXBlID09PSAnSFRUUCcpIGFzIEh0dHBTZWxlY3RvcjtcbiAgICBpZiAoIWh0dHBTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGh0dHBTZWxlY3Rvcj8ubWV0aG9kcz8ubGVuZ3RoXG4gICAgICA/IGh0dHBTZWxlY3Rvcj8ubWV0aG9kcy5tYXAobSA9PiAoe1xuICAgICAgICAgIG5hbWU6IG0sXG4gICAgICAgICAgY2xhc3M6IGBnaW8tbWV0aG9kLWJhZGdlLSR7bS50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICAgIH0pKVxuICAgICAgOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0FMTCcsXG4gICAgICAgICAgICBjbGFzczogJ2dpby1iYWRnZS1uZXV0cmFsJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICB9XG59XG4iLCI8IS0tXG5cbiAgICBDb3B5cmlnaHQgKEMpIDIwMjMgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAgICBcbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgICBcbiAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICAgIFxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4tLT5cbjxkaXYgKm5nSWY9XCJmbG93Py5uYW1lXCIgY2xhc3M9XCJpbmZvXCI+XG4gIDxzcGFuIGNsYXNzPVwiaW5mb19fbGFiZWxcIj5OYW1lPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX3ZhbHVlIHN0cm9uZ1wiPnt7IGZsb3c/Lm5hbWUgfX08L3NwYW4+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImVudHJ5cG9pbnRzXCIgY2xhc3M9XCJpbmZvXCI+XG4gIDxzcGFuIGNsYXNzPVwiaW5mb19fbGFiZWxcIj5FbnRyeXBvaW50czwvc3Bhbj5cbiAgPHNwYW4gKm5nRm9yPVwibGV0IGVudHJ5cG9pbnQgb2YgZW50cnlwb2ludHNcIiBjbGFzcz1cImluZm9fX3ZhbHVlIGdpby1iYWRnZSBnaW8tYmFkZ2UtbmV1dHJhbFwiPlxuICAgIDxtYXQtaWNvbiBbc3ZnSWNvbl09XCJlbnRyeXBvaW50Lmljb25cIj48L21hdC1pY29uPlxuICAgIHt7IGVudHJ5cG9pbnQubmFtZSB9fTwvc3BhblxuICA+XG48L2Rpdj5cblxuPCEtLSBNRVNTQUdFIEFQSSB0eXBlIC0tPlxuXG48ZGl2ICpuZ0lmPVwib3BlcmF0aW9uc1wiIGNsYXNzPVwiaW5mb1wiPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX2xhYmVsXCI+T3BlcmF0aW9uczwvc3Bhbj5cbiAgPHNwYW4gKm5nRm9yPVwibGV0IG9wZXJhdGlvbiBvZiBvcGVyYXRpb25zXCIgY2xhc3M9XCJpbmZvX192YWx1ZSBnaW8tYmFkZ2UtbmV1dHJhbFwiPiB7eyBvcGVyYXRpb24gfX08L3NwYW4+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImNoYW5uZWxcIiBjbGFzcz1cImluZm9cIj5cbiAgPHNwYW4gY2xhc3M9XCJpbmZvX19sYWJlbFwiPkNoYW5uZWw8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwiaW5mb19fdmFsdWUgc3Ryb25nXCI+e3sgY2hhbm5lbCB9fTwvc3Bhbj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiY2hhbm5lbE9wZXJhdG9yXCIgY2xhc3M9XCJpbmZvXCI+XG4gIDxzcGFuIGNsYXNzPVwiaW5mb19fbGFiZWxcIj5DaGFubmVsIE9wZXJhdG9yPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX3ZhbHVlIGdpby1iYWRnZS1uZXV0cmFsXCI+e3sgY2hhbm5lbE9wZXJhdG9yIH19PC9zcGFuPlxuPC9kaXY+XG5cbjwhLS0gUFJPWFkgQVBJIHR5cGUgLS0+XG5cbjxkaXYgKm5nSWY9XCJwYXRoXCIgY2xhc3M9XCJpbmZvXCI+XG4gIDxzcGFuIGNsYXNzPVwiaW5mb19fbGFiZWxcIj5QYXRoPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX3ZhbHVlIHN0cm9uZ1wiPnt7IHBhdGggfX08L3NwYW4+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cInBhdGhPcGVyYXRvclwiIGNsYXNzPVwiaW5mb1wiPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX2xhYmVsXCI+UGF0aCBPcGVyYXRvcjwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJpbmZvX192YWx1ZSBnaW8tYmFkZ2UtbmV1dHJhbFwiPnt7IHBhdGhPcGVyYXRvciB9fTwvc3Bhbj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwibWV0aG9kc1wiIGNsYXNzPVwiaW5mb1wiPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX2xhYmVsXCI+SFRUUCBtZXRob2RzPC9zcGFuPlxuICA8c3BhbiAqbmdGb3I9XCJsZXQgbWV0aG9kIG9mIG1ldGhvZHNcIiBjbGFzcz1cImluZm9fX3ZhbHVlIG1ldGhvZFwiIFtuZ0NsYXNzXT1cIm1ldGhvZC5jbGFzc1wiPiB7eyBtZXRob2QubmFtZSB9fTwvc3Bhbj5cbjwvZGl2PlxuXG48IS0tIENvbmRpdGlvbiAtLT5cblxuPGRpdiAqbmdJZj1cImNvbmRpdGlvblwiIGNsYXNzPVwiaW5mb1wiPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX2xhYmVsXCI+Q29uZGl0aW9uPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX3ZhbHVlIGdpby1iYWRnZS1uZXV0cmFsIGNvbmRpdGlvblwiPnt7IGNvbmRpdGlvbiB9fTwvc3Bhbj5cbjwvZGl2PlxuIl19
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZGV0YWlscy1pbmZvLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3ctZGV0YWlscy1pbmZvLWJhci9naW8tcHMtZmxvdy1kZXRhaWxzLWluZm8tYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzLWluZm8tYmFyL2dpby1wcy1mbG93LWRldGFpbHMtaW5mby1iYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBVy9DLE1BQU0sT0FBTyxzQ0FBc0M7SUFObkQ7UUFRUyxTQUFJLEdBQVksU0FBUyxDQUFDO0tBK0ZsQztJQTFGQyxJQUFXLFNBQVM7UUFDbEIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBc0IsQ0FBQztRQUN2RyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN2QixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsT0FBTyxpQkFBaUIsRUFBRSxTQUFTLENBQUM7SUFDdEMsQ0FBQztJQUVELG1CQUFtQjtJQUVuQixJQUFXLFVBQVU7UUFDbkIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxTQUFTLENBQW9CLENBQUM7UUFDakcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxNQUFNLGdCQUFnQixHQUE4QjtZQUNsRCxPQUFPLEVBQUUsS0FBSztZQUNkLFNBQVMsRUFBRSxLQUFLO1NBQ2pCLENBQUM7UUFDRiwwREFBMEQ7UUFDMUQsTUFBTSxVQUFVLEdBQ2QsQ0FBQyxlQUFlLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFFLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBVyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDO1FBRXhJLE9BQU8sVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekQsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBb0IsQ0FBQztRQUNqRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDckIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE9BQU8sZUFBZSxFQUFFLE9BQU8sQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBVyxlQUFlO1FBQ3hCLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFvQixDQUFDO1FBQ2pHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNyQixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsT0FBTyxlQUFlLEVBQUUsZUFBZSxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxTQUFTLENBQW9CLENBQUM7UUFDakcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUNqQyxDQUFDLENBQUMsRUFBRTtRQUNGLDREQUE0RDtRQUM1RCxDQUFDLGVBQWUsQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsSUFBSSxlQUFlLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQ3hILENBQUM7SUFDSixDQUFDO0lBRUQsaUJBQWlCO0lBRWpCLElBQVcsSUFBSTtRQUNiLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFpQixDQUFDO1FBQ3hGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsT0FBTyxZQUFZLEVBQUUsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDckIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQWlCLENBQUM7UUFDeEYsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxPQUFPLFlBQVksRUFBRSxZQUFZLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBaUIsQ0FBQztRQUN4RixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELE9BQU8sWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNO1lBQ2xDLENBQUMsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzlCLElBQUksRUFBRSxDQUFDO2dCQUNQLEtBQUssRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO2FBQzdDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQztnQkFDRTtvQkFDRSxJQUFJLEVBQUUsS0FBSztvQkFDWCxLQUFLLEVBQUUsbUJBQW1CO2lCQUMzQjthQUNGLENBQUM7SUFDUixDQUFDOzhHQWhHVSxzQ0FBc0M7a0dBQXRDLHNDQUFzQyxzSkM5Qm5ELHM4RUFzRUEsK3BCRDdDWSxZQUFZLDZWQUFFLGNBQWMsbUxBQUUsZUFBZTs7MkZBSzVDLHNDQUFzQztrQkFObEQsU0FBUzs4QkFDQyxDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsZUFBZSxDQUFDLFlBQzlDLDhCQUE4Qjs4QkFNakMsSUFBSTtzQkFEVixLQUFLO2dCQUlDLGVBQWU7c0JBRHJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBHaW9JY29uc01vZHVsZSB9IGZyb20gJ0BncmF2aXRlZS91aS1wYXJ0aWNsZXMtYW5ndWxhcic7XG5pbXBvcnQgeyBNYXRDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IENoYW5uZWxTZWxlY3RvciwgQ29uZGl0aW9uU2VsZWN0b3IsIENvbm5lY3RvckluZm8sIEh0dHBTZWxlY3RvciwgT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEZsb3dWTSB9IGZyb20gJy4uLy4uL3BvbGljeS1zdHVkaW8vZ2lvLXBvbGljeS1zdHVkaW8ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgR2lvSWNvbnNNb2R1bGUsIE1hdENvbW1vbk1vZHVsZV0sXG4gIHNlbGVjdG9yOiAnZ2lvLXBzLWZsb3ctZGV0YWlscy1pbmZvLWJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9naW8tcHMtZmxvdy1kZXRhaWxzLWluZm8tYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2lvLXBzLWZsb3ctZGV0YWlscy1pbmZvLWJhci5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9Qb2xpY3lTdHVkaW9EZXRhaWxzSW5mb0JhckNvbXBvbmVudCB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmbG93PzogRmxvd1ZNID0gdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbnRyeXBvaW50c0luZm8/OiBDb25uZWN0b3JJbmZvW107XG5cbiAgcHVibGljIGdldCBjb25kaXRpb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjb25kaXRpb25TZWxlY3RvciA9IHRoaXMuZmxvdz8uc2VsZWN0b3JzPy5maW5kKHMgPT4gcy50eXBlID09PSAnQ09ORElUSU9OJykgYXMgQ29uZGl0aW9uU2VsZWN0b3I7XG4gICAgaWYgKCFjb25kaXRpb25TZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGNvbmRpdGlvblNlbGVjdG9yPy5jb25kaXRpb247XG4gIH1cblxuICAvLyBNRVNTQUdFIEFQSSB0eXBlXG5cbiAgcHVibGljIGdldCBvcGVyYXRpb25zKCk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjaGFubmVsU2VsZWN0b3IgPSB0aGlzLmZsb3c/LnNlbGVjdG9ycz8uZmluZChzID0+IHMudHlwZSA9PT0gJ0NIQU5ORUwnKSBhcyBDaGFubmVsU2VsZWN0b3I7XG4gICAgaWYgKCFjaGFubmVsU2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IG9wZXJhdGlvblRvQmFkZ2U6IFJlY29yZDxPcGVyYXRpb24sIHN0cmluZz4gPSB7XG4gICAgICBQVUJMSVNIOiAnUFVCJyxcbiAgICAgIFNVQlNDUklCRTogJ1NVQicsXG4gICAgfTtcbiAgICAvLyBJZiBubyBvcGVyYXRpb25zIGFyZSBzZWxlY3RlZCwgYWxsIG9wZXJhdGlvbnMgYXJlIHZhbGlkXG4gICAgY29uc3Qgb3BlcmF0aW9ucyA9XG4gICAgICAhY2hhbm5lbFNlbGVjdG9yLm9wZXJhdGlvbnMgfHwgaXNFbXB0eShjaGFubmVsU2VsZWN0b3Iub3BlcmF0aW9ucykgPyAoWydQVUJMSVNIJywgJ1NVQlNDUklCRSddIGFzIGNvbnN0KSA6IGNoYW5uZWxTZWxlY3Rvci5vcGVyYXRpb25zO1xuXG4gICAgcmV0dXJuIG9wZXJhdGlvbnMubWFwKG8gPT4gb3BlcmF0aW9uVG9CYWRnZVtvXSkuc29ydCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGFubmVsKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY2hhbm5lbFNlbGVjdG9yID0gdGhpcy5mbG93Py5zZWxlY3RvcnM/LmZpbmQocyA9PiBzLnR5cGUgPT09ICdDSEFOTkVMJykgYXMgQ2hhbm5lbFNlbGVjdG9yO1xuICAgIGlmICghY2hhbm5lbFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gY2hhbm5lbFNlbGVjdG9yPy5jaGFubmVsO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGFubmVsT3BlcmF0b3IoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjaGFubmVsU2VsZWN0b3IgPSB0aGlzLmZsb3c/LnNlbGVjdG9ycz8uZmluZChzID0+IHMudHlwZSA9PT0gJ0NIQU5ORUwnKSBhcyBDaGFubmVsU2VsZWN0b3I7XG4gICAgaWYgKCFjaGFubmVsU2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBjaGFubmVsU2VsZWN0b3I/LmNoYW5uZWxPcGVyYXRvcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZW50cnlwb2ludHMoKTogQ29ubmVjdG9ySW5mb1tdIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjaGFubmVsU2VsZWN0b3IgPSB0aGlzLmZsb3c/LnNlbGVjdG9ycz8uZmluZChzID0+IHMudHlwZSA9PT0gJ0NIQU5ORUwnKSBhcyBDaGFubmVsU2VsZWN0b3I7XG4gICAgaWYgKCFjaGFubmVsU2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZW50cnlwb2ludHNJbmZvPy5maWx0ZXIoXG4gICAgICBlID0+XG4gICAgICAgIC8vIElmIG5vIGVudHJ5cG9pbnRzIGFyZSBzZWxlY3RlZCwgYWxsIGVudHJ5cG9pbnRzIGFyZSB2YWxpZFxuICAgICAgICAhY2hhbm5lbFNlbGVjdG9yLmVudHJ5cG9pbnRzIHx8IGlzRW1wdHkoY2hhbm5lbFNlbGVjdG9yLmVudHJ5cG9pbnRzKSB8fCBjaGFubmVsU2VsZWN0b3IuZW50cnlwb2ludHM/LmluY2x1ZGVzKGUudHlwZSksXG4gICAgKTtcbiAgfVxuXG4gIC8vIFBST1hZIEFQSSB0eXBlXG5cbiAgcHVibGljIGdldCBwYXRoKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaHR0cFNlbGVjdG9yID0gdGhpcy5mbG93Py5zZWxlY3RvcnM/LmZpbmQocyA9PiBzLnR5cGUgPT09ICdIVFRQJykgYXMgSHR0cFNlbGVjdG9yO1xuICAgIGlmICghaHR0cFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICByZXR1cm4gaHR0cFNlbGVjdG9yPy5wYXRoO1xuICB9XG5cbiAgcHVibGljIGdldCBwYXRoT3BlcmF0b3IoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBodHRwU2VsZWN0b3IgPSB0aGlzLmZsb3c/LnNlbGVjdG9ycz8uZmluZChzID0+IHMudHlwZSA9PT0gJ0hUVFAnKSBhcyBIdHRwU2VsZWN0b3I7XG4gICAgaWYgKCFodHRwU2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiBodHRwU2VsZWN0b3I/LnBhdGhPcGVyYXRvcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbWV0aG9kcygpOiB7IG5hbWU6IHN0cmluZzsgY2xhc3M6IHN0cmluZyB9W10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGh0dHBTZWxlY3RvciA9IHRoaXMuZmxvdz8uc2VsZWN0b3JzPy5maW5kKHMgPT4gcy50eXBlID09PSAnSFRUUCcpIGFzIEh0dHBTZWxlY3RvcjtcbiAgICBpZiAoIWh0dHBTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIGh0dHBTZWxlY3Rvcj8ubWV0aG9kcz8ubGVuZ3RoXG4gICAgICA/IGh0dHBTZWxlY3Rvcj8ubWV0aG9kcy5tYXAobSA9PiAoe1xuICAgICAgICAgIG5hbWU6IG0sXG4gICAgICAgICAgY2xhc3M6IGBnaW8tbWV0aG9kLWJhZGdlLSR7bS50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICAgIH0pKVxuICAgICAgOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ0FMTCcsXG4gICAgICAgICAgICBjbGFzczogJ2dpby1iYWRnZS1uZXV0cmFsJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICB9XG59XG4iLCI8IS0tXG5cbiAgICBDb3B5cmlnaHQgKEMpIDIwMjMgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAgICBcbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgICBcbiAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICAgIFxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4tLT5cbjxkaXYgKm5nSWY9XCJmbG93Py5uYW1lXCIgY2xhc3M9XCJpbmZvXCI+XG4gIDxzcGFuIGNsYXNzPVwiaW5mb19fbGFiZWxcIj5OYW1lPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX3ZhbHVlIHN0cm9uZ1wiPnt7IGZsb3c/Lm5hbWUgfX08L3NwYW4+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImVudHJ5cG9pbnRzXCIgY2xhc3M9XCJpbmZvXCI+XG4gIDxzcGFuIGNsYXNzPVwiaW5mb19fbGFiZWxcIj5FbnRyeXBvaW50czwvc3Bhbj5cbiAgPHNwYW4gKm5nRm9yPVwibGV0IGVudHJ5cG9pbnQgb2YgZW50cnlwb2ludHNcIiBjbGFzcz1cImluZm9fX3ZhbHVlIGdpby1iYWRnZSBnaW8tYmFkZ2UtbmV1dHJhbFwiPlxuICAgIDxtYXQtaWNvbiBbc3ZnSWNvbl09XCJlbnRyeXBvaW50Lmljb25cIj48L21hdC1pY29uPlxuICAgIHt7IGVudHJ5cG9pbnQubmFtZSB9fTwvc3BhblxuICA+XG48L2Rpdj5cblxuPCEtLSBNRVNTQUdFIEFQSSB0eXBlIC0tPlxuXG48ZGl2ICpuZ0lmPVwib3BlcmF0aW9uc1wiIGNsYXNzPVwiaW5mb1wiPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX2xhYmVsXCI+T3BlcmF0aW9uczwvc3Bhbj5cbiAgPHNwYW4gKm5nRm9yPVwibGV0IG9wZXJhdGlvbiBvZiBvcGVyYXRpb25zXCIgY2xhc3M9XCJpbmZvX192YWx1ZSBnaW8tYmFkZ2UtbmV1dHJhbFwiPiB7eyBvcGVyYXRpb24gfX08L3NwYW4+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImNoYW5uZWxcIiBjbGFzcz1cImluZm9cIj5cbiAgPHNwYW4gY2xhc3M9XCJpbmZvX19sYWJlbFwiPkNoYW5uZWw8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwiaW5mb19fdmFsdWUgc3Ryb25nXCI+e3sgY2hhbm5lbCB9fTwvc3Bhbj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiY2hhbm5lbE9wZXJhdG9yXCIgY2xhc3M9XCJpbmZvXCI+XG4gIDxzcGFuIGNsYXNzPVwiaW5mb19fbGFiZWxcIj5DaGFubmVsIE9wZXJhdG9yPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX3ZhbHVlIGdpby1iYWRnZS1uZXV0cmFsXCI+e3sgY2hhbm5lbE9wZXJhdG9yIH19PC9zcGFuPlxuPC9kaXY+XG5cbjwhLS0gUFJPWFkgQVBJIHR5cGUgLS0+XG5cbjxkaXYgKm5nSWY9XCJwYXRoXCIgY2xhc3M9XCJpbmZvXCI+XG4gIDxzcGFuIGNsYXNzPVwiaW5mb19fbGFiZWxcIj5QYXRoPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX3ZhbHVlIHN0cm9uZ1wiPnt7IHBhdGggfX08L3NwYW4+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cInBhdGhPcGVyYXRvclwiIGNsYXNzPVwiaW5mb1wiPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX2xhYmVsXCI+UGF0aCBPcGVyYXRvcjwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJpbmZvX192YWx1ZSBnaW8tYmFkZ2UtbmV1dHJhbFwiPnt7IHBhdGhPcGVyYXRvciB9fTwvc3Bhbj5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwibWV0aG9kc1wiIGNsYXNzPVwiaW5mb1wiPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX2xhYmVsXCI+SFRUUCBtZXRob2RzPC9zcGFuPlxuICA8c3BhbiAqbmdGb3I9XCJsZXQgbWV0aG9kIG9mIG1ldGhvZHNcIiBjbGFzcz1cImluZm9fX3ZhbHVlIG1ldGhvZFwiIFtuZ0NsYXNzXT1cIm1ldGhvZC5jbGFzc1wiPiB7eyBtZXRob2QubmFtZSB9fTwvc3Bhbj5cbjwvZGl2PlxuXG48IS0tIENvbmRpdGlvbiAtLT5cblxuPGRpdiAqbmdJZj1cImNvbmRpdGlvblwiIGNsYXNzPVwiaW5mb1wiPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX2xhYmVsXCI+Q29uZGl0aW9uPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cImluZm9fX3ZhbHVlIGdpby1iYWRnZS1uZXV0cmFsIGNvbmRpdGlvblwiPnt7IGNvbmRpdGlvbiB9fTwvc3Bhbj5cbjwvZGl2PlxuIl19
@@ -146,11 +146,11 @@ export class GioPolicyStudioDetailsPhaseComponent {
146
146
  this.stepsChange.emit([...this.steps.slice(0, index - 1), this.steps[index], this.steps[index - 1], ...this.steps.slice(index + 1)]);
147
147
  }
148
148
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioDetailsPhaseComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
149
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: GioPolicyStudioDetailsPhaseComponent, isStandalone: true, selector: "gio-ps-flow-details-phase", inputs: { readOnly: "readOnly", steps: "steps", name: "name", description: "description", startConnector: "startConnector", endConnector: "endConnector", apiType: "apiType", genericPolicies: "genericPolicies", policyFlowPhase: "policyFlowPhase", trialUrl: "trialUrl", disabledNotYetAvailable: "disabledNotYetAvailable" }, 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\n *ngIf=\"!hasStartAndEndConnectors && !disabledNotYetAvailable\"\n class=\"header__infoIcon\"\n matTooltip=\"Policies might not be evaluated\"\n matTooltipPosition=\"before\"\n >\n <mat-icon svgIcon=\"gio:info\"></mat-icon>\n </span>\n</div>\n\n@if (disabledNotYetAvailable) {\n <div class=\"disabledContent\">\n <gio-banner-info>\n Coming soon\n <span gioBannerBody> This feature is not yet available in the current version of the API Studio. Stay tuned for updates. </span>\n </gio-banner-info>\n </div>\n} @else if (hasStartAndEndConnectors) {\n <div class=\"wrapper\">\n <div class=\"content\">\n @for (stepVM of stepsVM; track stepVM._id; let isFirst = $first) {\n <div 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 [disabled]=\"readOnly\" class=\"content__step__addBtn\" mat-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 @if (stepVM.type === 'step') {\n <div class=\"content__step__policy\">\n <div *ngIf=\"stepVM.step?.condition\" class=\"content__step__policy__condition\" [class.disabled]=\"!stepVM.step.enabled\">\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\n <gio-ps-flow-details-phase-step\n class=\"content__step__step\"\n [readOnly]=\"readOnly\"\n [class.disabled]=\"readOnly || !stepVM.step.enabled\"\n [genericPolicies]=\"genericPolicies\"\n [step]=\"stepVM.step\"\n [flowPhase]=\"policyFlowPhase\"\n [apiType]=\"apiType\"\n (stepChange)=\"onStepChange(stepVM.index, $event)\"\n (deleted)=\"onStepDeleted(stepVM.index)\"\n (disabled)=\"onStepDisabled(stepVM.index)\"\n (duplicated)=\"onStepDuplicated(stepVM.index)\"\n [disableMoveRight]=\"stepVM.index !== this.steps.length - 1\"\n (movedRight)=\"onStepMovedRight(stepVM.index)\"\n [disableMoveLeft]=\"stepVM.index !== 0\"\n (movedLeft)=\"onStepMovedLeft(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 [disabled]=\"readOnly\" class=\"content__step__addBtn\" mat-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 }\n </div>\n }\n </div>\n </div>\n} @else {\n <div class=\"disabledContent\">\n <gio-banner-warning>\n Policies might not be evaluated\n <span gioBannerBody>\n Your current flow settings are not applicable to this phase. Select supporting endpoints and operations in the flow configuration to\n enable this phase.\n </span>\n </gio-banner-warning>\n </div>\n}\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}: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-size:14px;font-weight:500;line-height:20px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}.header__description{flex:1 1 auto;font-size:14px;font-weight:400;line-height:22px;font-family: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.disabled{opacity:.5;text-decoration:line-through}.content__step__policy__condition span{display:inline-block;overflow:hidden;text-overflow:ellipsis;text-transform:none;white-space:nowrap}.content__step__policy__condition span mat-icon{margin-right:4px}.disabledContent{display:flex;flex-direction:column;padding:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: GioPolicyStudioDetailsPhaseStepComponent, selector: "gio-ps-flow-details-phase-step", inputs: ["readOnly", "step", "genericPolicies", "flowPhase", "apiType", "disableMoveRight", "disableMoveLeft"], outputs: ["stepChange", "deleted", "disabled", "duplicated", "movedRight", "movedLeft"] }, { kind: "ngmodule", type: GioIconsModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: GioBannerModule }, { kind: "component", type: i6.GioBannerInfoComponent, selector: "gio-banner-info" }, { kind: "component", type: i6.GioBannerWarningComponent, selector: "gio-banner-warning" }, { kind: "directive", type: i6.GioBannerBodyDirective, selector: "[gioBannerBody]" }] }); }
149
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: GioPolicyStudioDetailsPhaseComponent, isStandalone: true, selector: "gio-ps-flow-details-phase", inputs: { readOnly: "readOnly", steps: "steps", name: "name", description: "description", startConnector: "startConnector", endConnector: "endConnector", apiType: "apiType", genericPolicies: "genericPolicies", policyFlowPhase: "policyFlowPhase", trialUrl: "trialUrl", disabledNotYetAvailable: "disabledNotYetAvailable" }, 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\n *ngIf=\"!hasStartAndEndConnectors && !disabledNotYetAvailable\"\n class=\"header__infoIcon\"\n matTooltip=\"Policies might not be evaluated\"\n matTooltipPosition=\"before\"\n >\n <mat-icon svgIcon=\"gio:info\"></mat-icon>\n </span>\n</div>\n\n@if (disabledNotYetAvailable) {\n <div class=\"disabledContent\">\n <gio-banner-info>\n Coming soon\n <span gioBannerBody> This feature is not yet available in the current version of the API Studio. Stay tuned for updates. </span>\n </gio-banner-info>\n </div>\n} @else if (hasStartAndEndConnectors) {\n <div class=\"wrapper\">\n <div class=\"content\">\n @for (stepVM of stepsVM; track stepVM._id; let isFirst = $first) {\n <div 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 [disabled]=\"readOnly\" class=\"content__step__addBtn\" mat-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 @if (stepVM.type === 'step') {\n <div class=\"content__step__policy\">\n <div *ngIf=\"stepVM.step?.condition\" class=\"content__step__policy__condition\" [class.disabled]=\"!stepVM.step.enabled\">\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\n <gio-ps-flow-details-phase-step\n class=\"content__step__step\"\n [readOnly]=\"readOnly\"\n [class.disabled]=\"readOnly || !stepVM.step.enabled\"\n [genericPolicies]=\"genericPolicies\"\n [step]=\"stepVM.step\"\n [flowPhase]=\"policyFlowPhase\"\n [apiType]=\"apiType\"\n (stepChange)=\"onStepChange(stepVM.index, $event)\"\n (deleted)=\"onStepDeleted(stepVM.index)\"\n (disabled)=\"onStepDisabled(stepVM.index)\"\n (duplicated)=\"onStepDuplicated(stepVM.index)\"\n [disableMoveRight]=\"stepVM.index !== this.steps.length - 1\"\n (movedRight)=\"onStepMovedRight(stepVM.index)\"\n [disableMoveLeft]=\"stepVM.index !== 0\"\n (movedLeft)=\"onStepMovedLeft(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 [disabled]=\"readOnly\" class=\"content__step__addBtn\" mat-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 }\n </div>\n }\n </div>\n </div>\n} @else {\n <div class=\"disabledContent\">\n <gio-banner-warning>\n Policies might not be evaluated\n <span gioBannerBody>\n Your current flow settings are not applicable to this phase. Select supporting endpoints and operations in the flow configuration to\n enable this phase.\n </span>\n </gio-banner-warning>\n </div>\n}\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #96f3ff);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}:host{display:flex;overflow:hidden;min-height:215px;flex-direction:column;padding-top:16px;border:1px solid #d2cecd;border-radius:8px;background-color:#fff}.header{display:flex;padding:0 16px;gap:8px}.header__name{flex:0 1 auto;font-size:14px;font-weight:500;line-height:20px;font-family:Manrope,sans-serif;letter-spacing:.4px}.header__description{flex:1 1 auto;font-size:14px;font-weight:400;line-height:22px;font-family:Manrope,sans-serif;letter-spacing:.4px;color:#322f2f}.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 #1e1b1b;border-radius:16px}.content__step__connector__badge__icon{margin-right:4px}.content__step__rightArrow{width:16px;height:16px;margin:0 8px;color:#b2aaa9}.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.disabled{opacity:.5;text-decoration:line-through}.content__step__policy__condition span{display:inline-block;overflow:hidden;text-overflow:ellipsis;text-transform:none;white-space:nowrap}.content__step__policy__condition span mat-icon{margin-right:4px}.disabledContent{display:flex;flex-direction:column;padding:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: GioPolicyStudioDetailsPhaseStepComponent, selector: "gio-ps-flow-details-phase-step", inputs: ["readOnly", "step", "genericPolicies", "flowPhase", "apiType", "disableMoveRight", "disableMoveLeft"], outputs: ["stepChange", "deleted", "disabled", "duplicated", "movedRight", "movedLeft"] }, { kind: "ngmodule", type: GioIconsModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: GioBannerModule }, { kind: "component", type: i6.GioBannerInfoComponent, selector: "gio-banner-info" }, { kind: "component", type: i6.GioBannerWarningComponent, selector: "gio-banner-warning" }, { kind: "directive", type: i6.GioBannerBodyDirective, selector: "[gioBannerBody]" }] }); }
150
150
  }
151
151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioDetailsPhaseComponent, decorators: [{
152
152
  type: Component,
153
- args: [{ imports: [CommonModule, MatTooltipModule, MatButtonModule, GioPolicyStudioDetailsPhaseStepComponent, GioIconsModule, GioBannerModule], 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\n *ngIf=\"!hasStartAndEndConnectors && !disabledNotYetAvailable\"\n class=\"header__infoIcon\"\n matTooltip=\"Policies might not be evaluated\"\n matTooltipPosition=\"before\"\n >\n <mat-icon svgIcon=\"gio:info\"></mat-icon>\n </span>\n</div>\n\n@if (disabledNotYetAvailable) {\n <div class=\"disabledContent\">\n <gio-banner-info>\n Coming soon\n <span gioBannerBody> This feature is not yet available in the current version of the API Studio. Stay tuned for updates. </span>\n </gio-banner-info>\n </div>\n} @else if (hasStartAndEndConnectors) {\n <div class=\"wrapper\">\n <div class=\"content\">\n @for (stepVM of stepsVM; track stepVM._id; let isFirst = $first) {\n <div 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 [disabled]=\"readOnly\" class=\"content__step__addBtn\" mat-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 @if (stepVM.type === 'step') {\n <div class=\"content__step__policy\">\n <div *ngIf=\"stepVM.step?.condition\" class=\"content__step__policy__condition\" [class.disabled]=\"!stepVM.step.enabled\">\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\n <gio-ps-flow-details-phase-step\n class=\"content__step__step\"\n [readOnly]=\"readOnly\"\n [class.disabled]=\"readOnly || !stepVM.step.enabled\"\n [genericPolicies]=\"genericPolicies\"\n [step]=\"stepVM.step\"\n [flowPhase]=\"policyFlowPhase\"\n [apiType]=\"apiType\"\n (stepChange)=\"onStepChange(stepVM.index, $event)\"\n (deleted)=\"onStepDeleted(stepVM.index)\"\n (disabled)=\"onStepDisabled(stepVM.index)\"\n (duplicated)=\"onStepDuplicated(stepVM.index)\"\n [disableMoveRight]=\"stepVM.index !== this.steps.length - 1\"\n (movedRight)=\"onStepMovedRight(stepVM.index)\"\n [disableMoveLeft]=\"stepVM.index !== 0\"\n (movedLeft)=\"onStepMovedLeft(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 [disabled]=\"readOnly\" class=\"content__step__addBtn\" mat-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 }\n </div>\n }\n </div>\n </div>\n} @else {\n <div class=\"disabledContent\">\n <gio-banner-warning>\n Policies might not be evaluated\n <span gioBannerBody>\n Your current flow settings are not applicable to this phase. Select supporting endpoints and operations in the flow configuration to\n enable this phase.\n </span>\n </gio-banner-warning>\n </div>\n}\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}: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-size:14px;font-weight:500;line-height:20px;font-family:Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}.header__description{flex:1 1 auto;font-size:14px;font-weight:400;line-height:22px;font-family: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.disabled{opacity:.5;text-decoration:line-through}.content__step__policy__condition span{display:inline-block;overflow:hidden;text-overflow:ellipsis;text-transform:none;white-space:nowrap}.content__step__policy__condition span mat-icon{margin-right:4px}.disabledContent{display:flex;flex-direction:column;padding:16px}\n"] }]
153
+ args: [{ imports: [CommonModule, MatTooltipModule, MatButtonModule, GioPolicyStudioDetailsPhaseStepComponent, GioIconsModule, GioBannerModule], 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\n *ngIf=\"!hasStartAndEndConnectors && !disabledNotYetAvailable\"\n class=\"header__infoIcon\"\n matTooltip=\"Policies might not be evaluated\"\n matTooltipPosition=\"before\"\n >\n <mat-icon svgIcon=\"gio:info\"></mat-icon>\n </span>\n</div>\n\n@if (disabledNotYetAvailable) {\n <div class=\"disabledContent\">\n <gio-banner-info>\n Coming soon\n <span gioBannerBody> This feature is not yet available in the current version of the API Studio. Stay tuned for updates. </span>\n </gio-banner-info>\n </div>\n} @else if (hasStartAndEndConnectors) {\n <div class=\"wrapper\">\n <div class=\"content\">\n @for (stepVM of stepsVM; track stepVM._id; let isFirst = $first) {\n <div 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 [disabled]=\"readOnly\" class=\"content__step__addBtn\" mat-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 @if (stepVM.type === 'step') {\n <div class=\"content__step__policy\">\n <div *ngIf=\"stepVM.step?.condition\" class=\"content__step__policy__condition\" [class.disabled]=\"!stepVM.step.enabled\">\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\n <gio-ps-flow-details-phase-step\n class=\"content__step__step\"\n [readOnly]=\"readOnly\"\n [class.disabled]=\"readOnly || !stepVM.step.enabled\"\n [genericPolicies]=\"genericPolicies\"\n [step]=\"stepVM.step\"\n [flowPhase]=\"policyFlowPhase\"\n [apiType]=\"apiType\"\n (stepChange)=\"onStepChange(stepVM.index, $event)\"\n (deleted)=\"onStepDeleted(stepVM.index)\"\n (disabled)=\"onStepDisabled(stepVM.index)\"\n (duplicated)=\"onStepDuplicated(stepVM.index)\"\n [disableMoveRight]=\"stepVM.index !== this.steps.length - 1\"\n (movedRight)=\"onStepMovedRight(stepVM.index)\"\n [disableMoveLeft]=\"stepVM.index !== 0\"\n (movedLeft)=\"onStepMovedLeft(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 [disabled]=\"readOnly\" class=\"content__step__addBtn\" mat-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 }\n </div>\n }\n </div>\n </div>\n} @else {\n <div class=\"disabledContent\">\n <gio-banner-warning>\n Policies might not be evaluated\n <span gioBannerBody>\n Your current flow settings are not applicable to this phase. Select supporting endpoints and operations in the flow configuration to\n enable this phase.\n </span>\n </gio-banner-warning>\n </div>\n}\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #96f3ff);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}:host{display:flex;overflow:hidden;min-height:215px;flex-direction:column;padding-top:16px;border:1px solid #d2cecd;border-radius:8px;background-color:#fff}.header{display:flex;padding:0 16px;gap:8px}.header__name{flex:0 1 auto;font-size:14px;font-weight:500;line-height:20px;font-family:Manrope,sans-serif;letter-spacing:.4px}.header__description{flex:1 1 auto;font-size:14px;font-weight:400;line-height:22px;font-family:Manrope,sans-serif;letter-spacing:.4px;color:#322f2f}.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 #1e1b1b;border-radius:16px}.content__step__connector__badge__icon{margin-right:4px}.content__step__rightArrow{width:16px;height:16px;margin:0 8px;color:#b2aaa9}.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.disabled{opacity:.5;text-decoration:line-through}.content__step__policy__condition span{display:inline-block;overflow:hidden;text-overflow:ellipsis;text-transform:none;white-space:nowrap}.content__step__policy__condition span mat-icon{margin-right:4px}.disabledContent{display:flex;flex-direction:column;padding:16px}\n"] }]
154
154
  }], ctorParameters: () => [{ type: i1.MatDialog }], propDecorators: { readOnly: [{
155
155
  type: Input
156
156
  }], steps: [{
@@ -176,4 +176,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
176
176
  }], stepsChange: [{
177
177
  type: Output
178
178
  }] } });
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3ctZGV0YWlscy1waGFzZS9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzLXBoYXNlL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUNMLDZDQUE2QyxHQUc5QyxNQUFNLHFFQUFxRSxDQUFDO0FBRTdFLE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLHFFQUFxRSxDQUFDOzs7Ozs7OztBQXlCL0gsTUFBTSxPQUFPLG9DQUFvQztJQXdDL0MsWUFBNkIsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQXRDMUMsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUdqQixVQUFLLEdBQVcsRUFBRSxDQUFDO1FBU25CLG1CQUFjLEdBQW9CLEVBQUUsQ0FBQztRQUdyQyxpQkFBWSxHQUFvQixFQUFFLENBQUM7UUFNbkMsb0JBQWUsR0FBb0IsRUFBRSxDQUFDO1FBU3RDLDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQUdoQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFekMsWUFBTyxHQUFhLEVBQUUsQ0FBQztRQUV2Qiw2QkFBd0IsR0FBRyxJQUFJLENBQUM7SUFDYSxDQUFDO0lBRTlDLFdBQVcsQ0FBQyxPQUFzQjtRQUN2QyxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLGNBQWMsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLE9BQU8sR0FBRztnQkFDYjtvQkFDRSxHQUFHLEVBQUUsT0FBTztvQkFDWixJQUFJLEVBQUUsWUFBWTtvQkFDbEIsVUFBVSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDaEQsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO3dCQUNwQixJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7cUJBQ3JCLENBQUMsQ0FBQztpQkFDSjtnQkFFRCxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUMxQyxHQUFHLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQztvQkFDdEIsSUFBSSxFQUFFLE1BQWU7b0JBQ3JCLElBQUksRUFBRSxJQUFJO29CQUNWLEtBQUs7aUJBQ04sQ0FBQyxDQUFDO2dCQUVIO29CQUNFLEdBQUcsRUFBRSxLQUFLO29CQUNWLElBQUksRUFBRSxZQUFZO29CQUNsQixVQUFVLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUM5QyxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7d0JBQ3BCLElBQUksRUFBRSxTQUFTLENBQUMsSUFBSTtxQkFDckIsQ0FBQyxDQUFDO2lCQUNKO2FBQ0YsQ0FBQztZQUVGLHVEQUF1RDtZQUN2RCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO1FBQ25JLENBQUM7SUFDSCxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQWE7UUFDOUIsSUFBSSxDQUFDLFNBQVM7YUFDWCxJQUFJLENBSUgsNkNBQTZDLEVBQUU7WUFDL0MsSUFBSSxFQUFFO2dCQUNKLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtnQkFDckMsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlO2dCQUMvQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87Z0JBQ3JCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTthQUN4QjtZQUNELElBQUksRUFBRSxhQUFhO1lBQ25CLEVBQUUsRUFBRSxzQ0FBc0M7WUFDMUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEtBQUs7U0FDOUIsQ0FBQzthQUNELFdBQVcsRUFBRTthQUNiLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUM5QixPQUFPO1lBQ1QsQ0FBQztZQUNELGlDQUFpQztZQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hHLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUFhLEVBQUUsVUFBZ0I7UUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixPQUFPO1FBQ1QsQ0FBQztRQUNELHNDQUFzQztRQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUVNLGFBQWEsQ0FBQyxLQUFhO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRU0sY0FBYyxDQUFDLEtBQWE7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3BCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztZQUM3QjtnQkFDRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUNwQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU87YUFDcEM7WUFDRCxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7U0FDL0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGdCQUFnQixDQUFDLEtBQWE7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hILENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxLQUFhO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNULENBQUM7UUFDRCx3Q0FBd0M7UUFDeEMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25JLENBQUM7SUFFTSxlQUFlLENBQUMsS0FBYTtRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLE9BQU87UUFDVCxDQUFDO1FBQ0QseUNBQXlDO1FBQ3pDLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkksQ0FBQzs4R0FuS1Usb0NBQW9DO2tHQUFwQyxvQ0FBb0MscWRDdERqRCw0NUpBcUhBLDZ2RERwRVksWUFBWSwrUEFBRSxnQkFBZ0IsNFRBQUUsZUFBZSw0TkFBRSx3Q0FBd0MsbVJBQUUsY0FBYyxtTEFBRSxlQUFlOzsyRkFLekgsb0NBQW9DO2tCQU5oRCxTQUFTOzhCQUNDLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSx3Q0FBd0MsRUFBRSxjQUFjLEVBQUUsZUFBZSxDQUFDLFlBQzNILDJCQUEyQjs4RUFNOUIsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxJQUFJO3NCQURWLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxjQUFjO3NCQURwQixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUMsT0FBTztzQkFEYixLQUFLO2dCQUlDLGVBQWU7c0JBRHJCLEtBQUs7Z0JBSUMsZUFBZTtzQkFEckIsS0FBSztnQkFJQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUMsdUJBQXVCO3NCQUQ3QixLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFbXB0eSwgdW5pcXVlSWQgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEdJT19ESUFMT0dfV0lEVEgsIEdpb0Jhbm5lck1vZHVsZSwgR2lvSWNvbnNNb2R1bGUgfSBmcm9tICdAZ3Jhdml0ZWUvdWktcGFydGljbGVzLWFuZ3VsYXInO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5cbmltcG9ydCB7XG4gIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ0NvbXBvbmVudCxcbiAgR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nRGF0YSxcbiAgR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nUmVzdWx0LFxufSBmcm9tICcuLi9wb2xpY2llcy1jYXRhbG9nLWRpYWxvZy9naW8tcHMtcG9saWNpZXMtY2F0YWxvZy1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEFwaVR5cGUsIENvbm5lY3RvckluZm8sIEZsb3dQaGFzZSwgU3RlcCB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBHaW9Qb2xpY3lTdHVkaW9EZXRhaWxzUGhhc2VTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi4vZmxvdy1kZXRhaWxzLXBoYXNlLXN0ZXAvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHZW5lcmljUG9saWN5IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BvbGljeS9HZW5lcmljUG9saWN5JztcblxudHlwZSBTdGVwVk0gPVxuICB8IHtcbiAgICAgIF9pZDogc3RyaW5nO1xuICAgICAgdHlwZTogJ2Nvbm5lY3RvcnMnO1xuICAgICAgY29ubmVjdG9yczoge1xuICAgICAgICBuYW1lPzogc3RyaW5nO1xuICAgICAgICBpY29uPzogc3RyaW5nO1xuICAgICAgfVtdO1xuICAgIH1cbiAgfCB7XG4gICAgICBfaWQ6IHN0cmluZztcbiAgICAgIHR5cGU6ICdzdGVwJztcbiAgICAgIHN0ZXA6IFN0ZXA7XG4gICAgICBpbmRleDogbnVtYmVyO1xuICAgIH07XG5cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRUb29sdGlwTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIEdpb1BvbGljeVN0dWRpb0RldGFpbHNQaGFzZVN0ZXBDb21wb25lbnQsIEdpb0ljb25zTW9kdWxlLCBHaW9CYW5uZXJNb2R1bGVdLFxuICBzZWxlY3RvcjogJ2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2UuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2lvUG9saWN5U3R1ZGlvRGV0YWlsc1BoYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KClcbiAgcHVibGljIHJlYWRPbmx5ID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHN0ZXBzOiBTdGVwW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbmFtZSE6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZGVzY3JpcHRpb24hOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHN0YXJ0Q29ubmVjdG9yOiBDb25uZWN0b3JJbmZvW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZW5kQ29ubmVjdG9yOiBDb25uZWN0b3JJbmZvW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYXBpVHlwZSE6IEFwaVR5cGU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdlbmVyaWNQb2xpY2llczogR2VuZXJpY1BvbGljeVtdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBvbGljeUZsb3dQaGFzZSE6IEZsb3dQaGFzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdHJpYWxVcmw/OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGRpc2FibGVkTm90WWV0QXZhaWxhYmxlID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzdGVwc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U3RlcFtdPigpO1xuXG4gIHB1YmxpYyBzdGVwc1ZNOiBTdGVwVk1bXSA9IFtdO1xuXG4gIHB1YmxpYyBoYXNTdGFydEFuZEVuZENvbm5lY3RvcnMgPSB0cnVlO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG1hdERpYWxvZzogTWF0RGlhbG9nKSB7fVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuc3RlcHMgfHwgY2hhbmdlcy5zdGFydENvbm5lY3RvciB8fCBjaGFuZ2VzLmVuZENvbm5lY3Rvcikge1xuICAgICAgdGhpcy5zdGVwc1ZNID0gW1xuICAgICAgICB7XG4gICAgICAgICAgX2lkOiAnc3RhcnQnLFxuICAgICAgICAgIHR5cGU6ICdjb25uZWN0b3JzJyxcbiAgICAgICAgICBjb25uZWN0b3JzOiB0aGlzLnN0YXJ0Q29ubmVjdG9yLm1hcChjb25uZWN0b3IgPT4gKHtcbiAgICAgICAgICAgIG5hbWU6IGNvbm5lY3Rvci5uYW1lLFxuICAgICAgICAgICAgaWNvbjogY29ubmVjdG9yLmljb24sXG4gICAgICAgICAgfSkpLFxuICAgICAgICB9LFxuXG4gICAgICAgIC4uLih0aGlzLnN0ZXBzID8/IFtdKS5tYXAoKHN0ZXAsIGluZGV4KSA9PiAoe1xuICAgICAgICAgIF9pZDogdW5pcXVlSWQoJ3N0ZXBfJyksXG4gICAgICAgICAgdHlwZTogJ3N0ZXAnIGFzIGNvbnN0LFxuICAgICAgICAgIHN0ZXA6IHN0ZXAsXG4gICAgICAgICAgaW5kZXgsXG4gICAgICAgIH0pKSxcblxuICAgICAgICB7XG4gICAgICAgICAgX2lkOiAnZW5kJyxcbiAgICAgICAgICB0eXBlOiAnY29ubmVjdG9ycycsXG4gICAgICAgICAgY29ubmVjdG9yczogdGhpcy5lbmRDb25uZWN0b3IubWFwKGNvbm5lY3RvciA9PiAoe1xuICAgICAgICAgICAgbmFtZTogY29ubmVjdG9yLm5hbWUsXG4gICAgICAgICAgICBpY29uOiBjb25uZWN0b3IuaWNvbixcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICAvLyBEaXNhYmxlIHBoYXNlIGlmIHRoZXJlIGFyZSBubyBzdGFydCAmIGVuZCBjb25uZWN0b3JzXG4gICAgICB0aGlzLmhhc1N0YXJ0QW5kRW5kQ29ubmVjdG9ycyA9IHRoaXMuc3RlcHNWTS5maWx0ZXIoc3RlcCA9PiBzdGVwLnR5cGUgPT09ICdjb25uZWN0b3JzJyAmJiAhaXNFbXB0eShzdGVwLmNvbm5lY3RvcnMpKS5sZW5ndGggPj0gMjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25BZGRQb2xpY3koaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMubWF0RGlhbG9nXG4gICAgICAub3BlbjxcbiAgICAgICAgR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICBHaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2dEYXRhLFxuICAgICAgICBHaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2dSZXN1bHRcbiAgICAgID4oR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBnZW5lcmljUG9saWNpZXM6IHRoaXMuZ2VuZXJpY1BvbGljaWVzLFxuICAgICAgICAgIGZsb3dQaGFzZTogdGhpcy5wb2xpY3lGbG93UGhhc2UsXG4gICAgICAgICAgYXBpVHlwZTogdGhpcy5hcGlUeXBlLFxuICAgICAgICAgIHRyaWFsVXJsOiB0aGlzLnRyaWFsVXJsLFxuICAgICAgICB9LFxuICAgICAgICByb2xlOiAnYWxlcnRkaWFsb2cnLFxuICAgICAgICBpZDogJ2dpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZycsXG4gICAgICAgIHdpZHRoOiBHSU9fRElBTE9HX1dJRFRILkxBUkdFLFxuICAgICAgfSlcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAuc3Vic2NyaWJlKHN0ZXBUb0FkZCA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zdGVwcyB8fCAhc3RlcFRvQWRkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFkZCBTdGVwIGFmdGVyIHRoZSBnaXZlbiBpbmRleFxuICAgICAgICB0aGlzLnN0ZXBzQ2hhbmdlLmVtaXQoWy4uLnRoaXMuc3RlcHMuc2xpY2UoMCwgaW5kZXggKyAxKSwgc3RlcFRvQWRkLCAuLi50aGlzLnN0ZXBzLnNsaWNlKGluZGV4ICsgMSldKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uU3RlcENoYW5nZShpbmRleDogbnVtYmVyLCBzdGVwVG9FZGl0OiBTdGVwKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0ZXBzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIFJlcGxhY2UgdGhlIHN0ZXAgYXQgdGhlIGdpdmVuIGluZGV4XG4gICAgdGhpcy5zdGVwc0NoYW5nZS5lbWl0KFsuLi50aGlzLnN0ZXBzLnNsaWNlKDAsIGluZGV4KSwgc3RlcFRvRWRpdCwgLi4udGhpcy5zdGVwcy5zbGljZShpbmRleCArIDEpXSk7XG4gIH1cblxuICBwdWJsaWMgb25TdGVwRGVsZXRlZChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0ZXBzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RlcHNDaGFuZ2UuZW1pdChbLi4udGhpcy5zdGVwcy5zbGljZSgwLCBpbmRleCksIC4uLnRoaXMuc3RlcHMuc2xpY2UoaW5kZXggKyAxKV0pO1xuICB9XG5cbiAgcHVibGljIG9uU3RlcERpc2FibGVkKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3RlcHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0ZXBzQ2hhbmdlLmVtaXQoW1xuICAgICAgLi4udGhpcy5zdGVwcy5zbGljZSgwLCBpbmRleCksXG4gICAgICB7XG4gICAgICAgIC4uLnRoaXMuc3RlcHNbaW5kZXhdLFxuICAgICAgICBlbmFibGVkOiAhdGhpcy5zdGVwc1tpbmRleF0uZW5hYmxlZCxcbiAgICAgIH0sXG4gICAgICAuLi50aGlzLnN0ZXBzLnNsaWNlKGluZGV4ICsgMSksXG4gICAgXSk7XG4gIH1cblxuICBwdWJsaWMgb25TdGVwRHVwbGljYXRlZChpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLnN0ZXBzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGVwc0NoYW5nZS5lbWl0KFsuLi50aGlzLnN0ZXBzLnNsaWNlKDAsIGluZGV4ICsgMSksIHRoaXMuc3RlcHNbaW5kZXhdLCAuLi50aGlzLnN0ZXBzLnNsaWNlKGluZGV4ICsgMSldKTtcbiAgfVxuXG4gIHB1YmxpYyBvblN0ZXBNb3ZlZFJpZ2h0KGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoIXRoaXMuc3RlcHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gQ2hlY2sgaWYgdGhlIHN0ZXAgaXMgbm90IHRoZSBsYXN0IG9uZVxuICAgIGlmIChpbmRleCA9PT0gdGhpcy5zdGVwcy5sZW5ndGggLSAxKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGVwc0NoYW5nZS5lbWl0KFsuLi50aGlzLnN0ZXBzLnNsaWNlKDAsIGluZGV4KSwgdGhpcy5zdGVwc1tpbmRleCArIDFdLCB0aGlzLnN0ZXBzW2luZGV4XSwgLi4udGhpcy5zdGVwcy5zbGljZShpbmRleCArIDIpXSk7XG4gIH1cblxuICBwdWJsaWMgb25TdGVwTW92ZWRMZWZ0KGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoIXRoaXMuc3RlcHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gQ2hlY2sgaWYgdGhlIHN0ZXAgaXMgbm90IHRoZSBmaXJzdCBvbmVcbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0ZXBzQ2hhbmdlLmVtaXQoWy4uLnRoaXMuc3RlcHMuc2xpY2UoMCwgaW5kZXggLSAxKSwgdGhpcy5zdGVwc1tpbmRleF0sIHRoaXMuc3RlcHNbaW5kZXggLSAxXSwgLi4udGhpcy5zdGVwcy5zbGljZShpbmRleCArIDEpXSk7XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAyMyBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICAgIFxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgIFxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuXG48ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gIDxzcGFuIGNsYXNzPVwiaGVhZGVyX19uYW1lXCI+XG4gICAge3sgbmFtZSB9fVxuICA8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwiaGVhZGVyX19kZXNjcmlwdGlvblwiPlxuICAgIHt7IGRlc2NyaXB0aW9uIH19XG4gIDwvc3Bhbj5cblxuICA8c3BhblxuICAgICpuZ0lmPVwiIWhhc1N0YXJ0QW5kRW5kQ29ubmVjdG9ycyAmJiAhZGlzYWJsZWROb3RZZXRBdmFpbGFibGVcIlxuICAgIGNsYXNzPVwiaGVhZGVyX19pbmZvSWNvblwiXG4gICAgbWF0VG9vbHRpcD1cIlBvbGljaWVzIG1pZ2h0IG5vdCBiZSBldmFsdWF0ZWRcIlxuICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImJlZm9yZVwiXG4gID5cbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzppbmZvXCI+PC9tYXQtaWNvbj5cbiAgPC9zcGFuPlxuPC9kaXY+XG5cbkBpZiAoZGlzYWJsZWROb3RZZXRBdmFpbGFibGUpIHtcbiAgPGRpdiBjbGFzcz1cImRpc2FibGVkQ29udGVudFwiPlxuICAgIDxnaW8tYmFubmVyLWluZm8+XG4gICAgICBDb21pbmcgc29vblxuICAgICAgPHNwYW4gZ2lvQmFubmVyQm9keT4gVGhpcyBmZWF0dXJlIGlzIG5vdCB5ZXQgYXZhaWxhYmxlIGluIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIEFQSSBTdHVkaW8uIFN0YXkgdHVuZWQgZm9yIHVwZGF0ZXMuIDwvc3Bhbj5cbiAgICA8L2dpby1iYW5uZXItaW5mbz5cbiAgPC9kaXY+XG59IEBlbHNlIGlmIChoYXNTdGFydEFuZEVuZENvbm5lY3RvcnMpIHtcbiAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgQGZvciAoc3RlcFZNIG9mIHN0ZXBzVk07IHRyYWNrIHN0ZXBWTS5faWQ7IGxldCBpc0ZpcnN0ID0gJGZpcnN0KSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50X19zdGVwXCI+XG4gICAgICAgICAgPCEtLSBDb25uZWN0b3IgLS0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXBWTS50eXBlID09PSAnY29ubmVjdG9ycydcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50X19zdGVwX19jb25uZWN0b3JcIj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGNvbm5lY3RvciBvZiBzdGVwVk0uY29ubmVjdG9yc1wiIGNsYXNzPVwiZ2lvLWJhZGdlLXdoaXRlIGNvbnRlbnRfX3N0ZXBfX2Nvbm5lY3Rvcl9fYmFkZ2VcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJjb25uZWN0b3IuaWNvblwiIFtzdmdJY29uXT1cImNvbm5lY3Rvci5pY29uXCIgY2xhc3M9XCJjb250ZW50X19zdGVwX19jb25uZWN0b3JfX2JhZGdlX19pY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICB7eyBjb25uZWN0b3IubmFtZSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBBZGQgcG9saWN5IGJ1dHRvbiBhZnRlciBmaXJzdCBjb25uZWN0b3IgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNGaXJzdFwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjb250ZW50X19zdGVwX19yaWdodEFycm93XCIgc3ZnSWNvbj1cImdpbzphcnJvdy1yaWdodFwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cInJlYWRPbmx5XCIgY2xhc3M9XCJjb250ZW50X19zdGVwX19hZGRCdG5cIiBtYXQtYnV0dG9uIChjbGljayk9XCJvbkFkZFBvbGljeSgtMSlcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzpwbHVzXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNvbnRlbnRfX3N0ZXBfX3JpZ2h0QXJyb3dcIiBzdmdJY29uPVwiZ2lvOmFycm93LXJpZ2h0XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPCEtLSBQb2xpY3kgLS0+XG4gICAgICAgICAgQGlmIChzdGVwVk0udHlwZSA9PT0gJ3N0ZXAnKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudF9fc3RlcF9fcG9saWN5XCI+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdGVwVk0uc3RlcD8uY29uZGl0aW9uXCIgY2xhc3M9XCJjb250ZW50X19zdGVwX19wb2xpY3lfX2NvbmRpdGlvblwiIFtjbGFzcy5kaXNhYmxlZF09XCIhc3RlcFZNLnN0ZXAuZW5hYmxlZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2lvLWJhZGdlLW5ldXRyYWxcIiBbbWF0VG9vbHRpcF09XCInQ29uZGl0aW9uOiAnICsgc3RlcFZNLnN0ZXAuY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgICAgID48bWF0LWljb24gc3ZnSWNvbj1cImdpbzppZlwiPjwvbWF0LWljb24+IHt7IHN0ZXBWTS5zdGVwLmNvbmRpdGlvbiB9fTwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2Utc3RlcFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udGVudF9fc3RlcF9fc3RlcFwiXG4gICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwicmVhZE9ubHkgfHwgIXN0ZXBWTS5zdGVwLmVuYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtnZW5lcmljUG9saWNpZXNdPVwiZ2VuZXJpY1BvbGljaWVzXCJcbiAgICAgICAgICAgICAgICBbc3RlcF09XCJzdGVwVk0uc3RlcFwiXG4gICAgICAgICAgICAgICAgW2Zsb3dQaGFzZV09XCJwb2xpY3lGbG93UGhhc2VcIlxuICAgICAgICAgICAgICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgICAgICAgICAgICAgIChzdGVwQ2hhbmdlKT1cIm9uU3RlcENoYW5nZShzdGVwVk0uaW5kZXgsICRldmVudClcIlxuICAgICAgICAgICAgICAgIChkZWxldGVkKT1cIm9uU3RlcERlbGV0ZWQoc3RlcFZNLmluZGV4KVwiXG4gICAgICAgICAgICAgICAgKGRpc2FibGVkKT1cIm9uU3RlcERpc2FibGVkKHN0ZXBWTS5pbmRleClcIlxuICAgICAgICAgICAgICAgIChkdXBsaWNhdGVkKT1cIm9uU3RlcER1cGxpY2F0ZWQoc3RlcFZNLmluZGV4KVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVNb3ZlUmlnaHRdPVwic3RlcFZNLmluZGV4ICE9PSB0aGlzLnN0ZXBzLmxlbmd0aCAtIDFcIlxuICAgICAgICAgICAgICAgIChtb3ZlZFJpZ2h0KT1cIm9uU3RlcE1vdmVkUmlnaHQoc3RlcFZNLmluZGV4KVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVNb3ZlTGVmdF09XCJzdGVwVk0uaW5kZXggIT09IDBcIlxuICAgICAgICAgICAgICAgIChtb3ZlZExlZnQpPVwib25TdGVwTW92ZWRMZWZ0KHN0ZXBWTS5pbmRleClcIlxuICAgICAgICAgICAgICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLXN0ZXA+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBBZGQgcG9saWN5IGJ1dHRvbiAtLT5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNvbnRlbnRfX3N0ZXBfX3JpZ2h0QXJyb3dcIiBzdmdJY29uPVwiZ2lvOmFycm93LXJpZ2h0XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cInJlYWRPbmx5XCIgY2xhc3M9XCJjb250ZW50X19zdGVwX19hZGRCdG5cIiBtYXQtYnV0dG9uIChjbGljayk9XCJvbkFkZFBvbGljeShzdGVwVk0uaW5kZXgpXCI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOnBsdXNcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjb250ZW50X19zdGVwX19yaWdodEFycm93XCIgc3ZnSWNvbj1cImdpbzphcnJvdy1yaWdodFwiPjwvbWF0LWljb24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59IEBlbHNlIHtcbiAgPGRpdiBjbGFzcz1cImRpc2FibGVkQ29udGVudFwiPlxuICAgIDxnaW8tYmFubmVyLXdhcm5pbmc+XG4gICAgICBQb2xpY2llcyBtaWdodCBub3QgYmUgZXZhbHVhdGVkXG4gICAgICA8c3BhbiBnaW9CYW5uZXJCb2R5PlxuICAgICAgICBZb3VyIGN1cnJlbnQgZmxvdyBzZXR0aW5ncyBhcmUgbm90IGFwcGxpY2FibGUgdG8gdGhpcyBwaGFzZS4gU2VsZWN0IHN1cHBvcnRpbmcgZW5kcG9pbnRzIGFuZCBvcGVyYXRpb25zIGluIHRoZSBmbG93IGNvbmZpZ3VyYXRpb24gdG9cbiAgICAgICAgZW5hYmxlIHRoaXMgcGhhc2UuXG4gICAgICA8L3NwYW4+XG4gICAgPC9naW8tYmFubmVyLXdhcm5pbmc+XG4gIDwvZGl2PlxufVxuIl19
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3ctZGV0YWlscy1waGFzZS9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1kZXRhaWxzLXBoYXNlL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUNMLDZDQUE2QyxHQUc5QyxNQUFNLHFFQUFxRSxDQUFDO0FBRTdFLE9BQU8sRUFBRSx3Q0FBd0MsRUFBRSxNQUFNLHFFQUFxRSxDQUFDOzs7Ozs7OztBQXlCL0gsTUFBTSxPQUFPLG9DQUFvQztJQXdDL0MsWUFBNkIsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQXRDMUMsYUFBUSxHQUFH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Y2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFbXB0eSwgdW5pcXVlSWQgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEdJT19ESUFMT0dfV0lEVEgsIEdpb0Jhbm5lck1vZHVsZSwgR2lvSWNvbnNNb2R1bGUgfSBmcm9tICdAZ3Jhdml0ZWUvdWktcGFydGljbGVzLWFuZ3VsYXInO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5cbmltcG9ydCB7XG4gIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ0NvbXBvbmVudCxcbiAgR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nRGF0YSxcbiAgR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nUmVzdWx0LFxufSBmcm9tICcuLi9wb2xpY2llcy1jYXRhbG9nLWRpYWxvZy9naW8tcHMtcG9saWNpZXMtY2F0YWxvZy1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEFwaVR5cGUsIENvbm5lY3RvckluZm8sIEZsb3dQaGFzZSwgU3RlcCB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBHaW9Qb2xpY3lTdHVkaW9EZXRhaWxzUGhhc2VTdGVwQ29tcG9uZW50IH0gZnJvbSAnLi4vZmxvdy1kZXRhaWxzLXBoYXNlLXN0ZXAvZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHZW5lcmljUG9saWN5IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BvbGljeS9HZW5lcmljUG9saWN5JztcblxudHlwZSBTdGVwVk0gPVxuICB8IHtcbiAgICAgIF9pZDogc3RyaW5nO1xuICAgICAgdHlwZTogJ2Nvbm5lY3RvcnMnO1xuICAgICAgY29ubmVjdG9yczoge1xuICAgICAgICBuYW1lPzogc3RyaW5nO1xuICAgICAgICBpY29uPzogc3RyaW5nO1xuICAgICAgfVtdO1xuICAgIH1cbiAgfCB7XG4gICAgICBfaWQ6IHN0cmluZztcbiAgICAgIHR5cGU6ICdzdGVwJztcbiAgICAgIHN0ZXA6IFN0ZXA7XG4gICAgICBpbmRleDogbnVtYmVyO1xuICAgIH07XG5cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRUb29sdGlwTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIEdpb1BvbGljeVN0dWRpb0RldGFpbHNQaGFzZVN0ZXBDb21wb25lbnQsIEdpb0ljb25zTW9kdWxlLCBHaW9CYW5uZXJNb2R1bGVdLFxuICBzZWxlY3RvcjogJ2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBzLWZsb3ctZGV0YWlscy1waGFzZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dpby1wcy1mbG93LWRldGFpbHMtcGhhc2UuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2lvUG9saWN5U3R1ZGlvRGV0YWlsc1BoYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KClcbiAgcHVibGljIHJlYWRPbmx5ID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHN0ZXBzOiBTdGVwW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbmFtZSE6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZGVzY3JpcHRpb24hOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHN0YXJ0Q29ubmVjdG9yOiBDb25uZWN0b3JJbmZvW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZW5kQ29ubmVjdG9yOiBDb25uZWN0b3JJbmZvW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYXBpVHlwZSE6IEFwaVR5cGU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdlbmVyaWNQb2xpY2llczogR2VuZXJpY1BvbGljeVtdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHBvbGljeUZsb3dQaGFzZSE6IEZsb3dQaGFzZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgdHJpYWxVcmw/OiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGRpc2FibGVkTm90WWV0QXZhaWxhYmxlID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzdGVwc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U3RlcFtdPigpO1xuXG4gIHB1YmxpYyBzdGVwc1ZNOiBTdGVwVk1bXSA9IFtdO1xuXG4gIHB1YmxpYyBoYXNTdGFydEFuZEVuZENvbm5lY3RvcnMgPSB0cnVlO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IG1hdERpYWxvZzogTWF0RGlhbG9nKSB7fVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuc3RlcHMgfHwgY2hhbmdlcy5zdGFydENvbm5lY3RvciB8fCBjaGFuZ2VzLmVuZENvbm5lY3Rvcikge1xuICAgICAgdGhpcy5zdGVwc1ZNID0gW1xuICAgICAgICB7XG4gICAgICAgICAgX2lkOiAnc3RhcnQnLFxuICAgICAgICAgIHR5cGU6ICdjb25uZWN0b3JzJyxcbiAgICAgICAgICBjb25uZWN0b3JzOiB0aGlzLnN0YXJ0Q29ubmVjdG9yLm1hcChjb25uZWN0b3IgPT4gKHtcbiAgICAgICAgICAgIG5hbWU6IGNvbm5lY3Rvci5uYW1lLFxuICAgICAgICAgICAgaWNvbjogY29ubmVjdG9yLmljb24sXG4gICAgICAgICAgfSkpLFxuICAgICAgICB9LFxuXG4gICAgICAgIC4uLih0aGlzLnN0ZXBzID8/IFtdKS5tYXAoKHN0ZXAsIGluZGV4KSA9PiAoe1xuICAgICAgICAgIF9pZDogdW5pcXVlSWQoJ3N0ZXBfJyksXG4gICAgICAgICAgdHlwZTogJ3N0ZXAnIGFzIGNvbnN0LFxuICAgICAgICAgIHN0ZXA6IHN0ZXAsXG4gICAgICAgICAgaW5kZXgsXG4gICAgICAgIH0pKSxcblxuICAgICAgICB7XG4gICAgICAgICAgX2lkOiAnZW5kJyxcbiAgICAgICAgICB0eXBlOiAnY29ubmVjdG9ycycsXG4gICAgICAgICAgY29ubmVjdG9yczogdGhpcy5lbmRDb25uZWN0b3IubWFwKGNvbm5lY3RvciA9PiAoe1xuICAgICAgICAgICAgbmFtZTogY29ubmVjdG9yLm5hbWUsXG4gICAgICAgICAgICBpY29uOiBjb25uZWN0b3IuaWNvbixcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICAvLyBEaXNhYmxlIHBoYXNlIGlmIHRoZXJlIGFyZSBubyBzdGFydCAmIGVuZCBjb25uZWN0b3JzXG4gICAgICB0aGlzLmhhc1N0YXJ0QW5kRW5kQ29ubmVjdG9ycyA9IHRoaXMuc3RlcHNWTS5maWx0ZXIoc3RlcCA9PiBzdGVwLnR5cGUgPT09ICdjb25uZWN0b3JzJyAmJiAhaXNFbXB0eShzdGVwLmNvbm5lY3RvcnMpKS5sZW5ndGggPj0gMjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25BZGRQb2xpY3koaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMubWF0RGlhbG9nXG4gICAgICAub3BlbjxcbiAgICAgICAgR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICBHaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2dEYXRhLFxuICAgICAgICBHaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2dSZXN1bHRcbiAgICAgID4oR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBnZW5lcmljUG9saWNpZXM6IHRoaXMuZ2VuZXJpY1BvbGljaWVzLFxuICAgICAgICAgIGZsb3dQaGFzZTogdGhpcy5wb2xpY3lGbG93UGhhc2UsXG4gICAgICAgICAgYXBpVHlwZTogdGhpcy5hcGlUeXBlLFxuICAgICAgICAgIHRyaWFsVXJsOiB0aGlzLnRyaWFsVXJsLFxuICAgICAgICB9LFxuICAgICAgICByb2xlOiAnYWxlcnRkaWFsb2cnLFxuICAgICAgICBpZDogJ2dpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZycsXG4gICAgICAgIHdpZHRoOiBHSU9fRElBTE9HX1dJRFRILkxBUkdFLFxuICAgICAgfSlcbiAgICAgIC5hZnRlckNsb3NlZCgpXG4gICAgICAuc3Vic2NyaWJlKHN0ZXBUb0FkZCA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zdGVwcyB8fCAhc3RlcFRvQWRkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFkZCBTdGVwIGFmdGVyIHRoZSBnaXZlbiBpbmRleFxuICAgICAgICB0aGlzLnN0ZXBzQ2hhbmdlLmVtaXQoWy4uLnRoaXMuc3RlcHMuc2xpY2UoMCwgaW5kZXggKyAxKSwgc3RlcFRvQWRkLCAuLi50aGlzLnN0ZXBzLnNsaWNlKGluZGV4ICsgMSldKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uU3RlcENoYW5nZShpbmRleDogbnVtYmVyLCBzdGVwVG9FZGl0OiBTdGVwKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0ZXBzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIFJlcGxhY2UgdGhlIHN0ZXAgYXQgdGhlIGdpdmVuIGluZGV4XG4gICAgdGhpcy5zdGVwc0NoYW5nZS5lbWl0KFsuLi50aGlzLnN0ZXBzLnNsaWNlKDAsIGluZGV4KSwgc3RlcFRvRWRpdCwgLi4udGhpcy5zdGVwcy5zbGljZShpbmRleCArIDEpXSk7XG4gIH1cblxuICBwdWJsaWMgb25TdGVwRGVsZXRlZChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0ZXBzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RlcHNDaGFuZ2UuZW1pdChbLi4udGhpcy5zdGVwcy5zbGljZSgwLCBpbmRleCksIC4uLnRoaXMuc3RlcHMuc2xpY2UoaW5kZXggKyAxKV0pO1xuICB9XG5cbiAgcHVibGljIG9uU3RlcERpc2FibGVkKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3RlcHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0ZXBzQ2hhbmdlLmVtaXQoW1xuICAgICAgLi4udGhpcy5zdGVwcy5zbGljZSgwLCBpbmRleCksXG4gICAgICB7XG4gICAgICAgIC4uLnRoaXMuc3RlcHNbaW5kZXhdLFxuICAgICAgICBlbmFibGVkOiAhdGhpcy5zdGVwc1tpbmRleF0uZW5hYmxlZCxcbiAgICAgIH0sXG4gICAgICAuLi50aGlzLnN0ZXBzLnNsaWNlKGluZGV4ICsgMSksXG4gICAgXSk7XG4gIH1cblxuICBwdWJsaWMgb25TdGVwRHVwbGljYXRlZChpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLnN0ZXBzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGVwc0NoYW5nZS5lbWl0KFsuLi50aGlzLnN0ZXBzLnNsaWNlKDAsIGluZGV4ICsgMSksIHRoaXMuc3RlcHNbaW5kZXhdLCAuLi50aGlzLnN0ZXBzLnNsaWNlKGluZGV4ICsgMSldKTtcbiAgfVxuXG4gIHB1YmxpYyBvblN0ZXBNb3ZlZFJpZ2h0KGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoIXRoaXMuc3RlcHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gQ2hlY2sgaWYgdGhlIHN0ZXAgaXMgbm90IHRoZSBsYXN0IG9uZVxuICAgIGlmIChpbmRleCA9PT0gdGhpcy5zdGVwcy5sZW5ndGggLSAxKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdGVwc0NoYW5nZS5lbWl0KFsuLi50aGlzLnN0ZXBzLnNsaWNlKDAsIGluZGV4KSwgdGhpcy5zdGVwc1tpbmRleCArIDFdLCB0aGlzLnN0ZXBzW2luZGV4XSwgLi4udGhpcy5zdGVwcy5zbGljZShpbmRleCArIDIpXSk7XG4gIH1cblxuICBwdWJsaWMgb25TdGVwTW92ZWRMZWZ0KGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoIXRoaXMuc3RlcHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gQ2hlY2sgaWYgdGhlIHN0ZXAgaXMgbm90IHRoZSBmaXJzdCBvbmVcbiAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnN0ZXBzQ2hhbmdlLmVtaXQoWy4uLnRoaXMuc3RlcHMuc2xpY2UoMCwgaW5kZXggLSAxKSwgdGhpcy5zdGVwc1tpbmRleF0sIHRoaXMuc3RlcHNbaW5kZXggLSAxXSwgLi4udGhpcy5zdGVwcy5zbGljZShpbmRleCArIDEpXSk7XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAyMyBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICAgIFxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgIFxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuXG48ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gIDxzcGFuIGNsYXNzPVwiaGVhZGVyX19uYW1lXCI+XG4gICAge3sgbmFtZSB9fVxuICA8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwiaGVhZGVyX19kZXNjcmlwdGlvblwiPlxuICAgIHt7IGRlc2NyaXB0aW9uIH19XG4gIDwvc3Bhbj5cblxuICA8c3BhblxuICAgICpuZ0lmPVwiIWhhc1N0YXJ0QW5kRW5kQ29ubmVjdG9ycyAmJiAhZGlzYWJsZWROb3RZZXRBdmFpbGFibGVcIlxuICAgIGNsYXNzPVwiaGVhZGVyX19pbmZvSWNvblwiXG4gICAgbWF0VG9vbHRpcD1cIlBvbGljaWVzIG1pZ2h0IG5vdCBiZSBldmFsdWF0ZWRcIlxuICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImJlZm9yZVwiXG4gID5cbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzppbmZvXCI+PC9tYXQtaWNvbj5cbiAgPC9zcGFuPlxuPC9kaXY+XG5cbkBpZiAoZGlzYWJsZWROb3RZZXRBdmFpbGFibGUpIHtcbiAgPGRpdiBjbGFzcz1cImRpc2FibGVkQ29udGVudFwiPlxuICAgIDxnaW8tYmFubmVyLWluZm8+XG4gICAgICBDb21pbmcgc29vblxuICAgICAgPHNwYW4gZ2lvQmFubmVyQm9keT4gVGhpcyBmZWF0dXJlIGlzIG5vdCB5ZXQgYXZhaWxhYmxlIGluIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIEFQSSBTdHVkaW8uIFN0YXkgdHVuZWQgZm9yIHVwZGF0ZXMuIDwvc3Bhbj5cbiAgICA8L2dpby1iYW5uZXItaW5mbz5cbiAgPC9kaXY+XG59IEBlbHNlIGlmIChoYXNTdGFydEFuZEVuZENvbm5lY3RvcnMpIHtcbiAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgQGZvciAoc3RlcFZNIG9mIHN0ZXBzVk07IHRyYWNrIHN0ZXBWTS5faWQ7IGxldCBpc0ZpcnN0ID0gJGZpcnN0KSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50X19zdGVwXCI+XG4gICAgICAgICAgPCEtLSBDb25uZWN0b3IgLS0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXBWTS50eXBlID09PSAnY29ubmVjdG9ycydcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50X19zdGVwX19jb25uZWN0b3JcIj5cbiAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGNvbm5lY3RvciBvZiBzdGVwVk0uY29ubmVjdG9yc1wiIGNsYXNzPVwiZ2lvLWJhZGdlLXdoaXRlIGNvbnRlbnRfX3N0ZXBfX2Nvbm5lY3Rvcl9fYmFkZ2VcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJjb25uZWN0b3IuaWNvblwiIFtzdmdJY29uXT1cImNvbm5lY3Rvci5pY29uXCIgY2xhc3M9XCJjb250ZW50X19zdGVwX19jb25uZWN0b3JfX2JhZGdlX19pY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICB7eyBjb25uZWN0b3IubmFtZSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBBZGQgcG9saWN5IGJ1dHRvbiBhZnRlciBmaXJzdCBjb25uZWN0b3IgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNGaXJzdFwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjb250ZW50X19zdGVwX19yaWdodEFycm93XCIgc3ZnSWNvbj1cImdpbzphcnJvdy1yaWdodFwiPjwvbWF0LWljb24+XG4gICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cInJlYWRPbmx5XCIgY2xhc3M9XCJjb250ZW50X19zdGVwX19hZGRCdG5cIiBtYXQtYnV0dG9uIChjbGljayk9XCJvbkFkZFBvbGljeSgtMSlcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzpwbHVzXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNvbnRlbnRfX3N0ZXBfX3JpZ2h0QXJyb3dcIiBzdmdJY29uPVwiZ2lvOmFycm93LXJpZ2h0XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPCEtLSBQb2xpY3kgLS0+XG4gICAgICAgICAgQGlmIChzdGVwVk0udHlwZSA9PT0gJ3N0ZXAnKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudF9fc3RlcF9fcG9saWN5XCI+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdGVwVk0uc3RlcD8uY29uZGl0aW9uXCIgY2xhc3M9XCJjb250ZW50X19zdGVwX19wb2xpY3lfX2NvbmRpdGlvblwiIFtjbGFzcy5kaXNhYmxlZF09XCIhc3RlcFZNLnN0ZXAuZW5hYmxlZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ2lvLWJhZGdlLW5ldXRyYWxcIiBbbWF0VG9vbHRpcF09XCInQ29uZGl0aW9uOiAnICsgc3RlcFZNLnN0ZXAuY29uZGl0aW9uXCJcbiAgICAgICAgICAgICAgICAgID48bWF0LWljb24gc3ZnSWNvbj1cImdpbzppZlwiPjwvbWF0LWljb24+IHt7IHN0ZXBWTS5zdGVwLmNvbmRpdGlvbiB9fTwvc3BhblxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGdpby1wcy1mbG93LWRldGFpbHMtcGhhc2Utc3RlcFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udGVudF9fc3RlcF9fc3RlcFwiXG4gICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwicmVhZE9ubHkgfHwgIXN0ZXBWTS5zdGVwLmVuYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtnZW5lcmljUG9saWNpZXNdPVwiZ2VuZXJpY1BvbGljaWVzXCJcbiAgICAgICAgICAgICAgICBbc3RlcF09XCJzdGVwVk0uc3RlcFwiXG4gICAgICAgICAgICAgICAgW2Zsb3dQaGFzZV09XCJwb2xpY3lGbG93UGhhc2VcIlxuICAgICAgICAgICAgICAgIFthcGlUeXBlXT1cImFwaVR5cGVcIlxuICAgICAgICAgICAgICAgIChzdGVwQ2hhbmdlKT1cIm9uU3RlcENoYW5nZShzdGVwVk0uaW5kZXgsICRldmVudClcIlxuICAgICAgICAgICAgICAgIChkZWxldGVkKT1cIm9uU3RlcERlbGV0ZWQoc3RlcFZNLmluZGV4KVwiXG4gICAgICAgICAgICAgICAgKGRpc2FibGVkKT1cIm9uU3RlcERpc2FibGVkKHN0ZXBWTS5pbmRleClcIlxuICAgICAgICAgICAgICAgIChkdXBsaWNhdGVkKT1cIm9uU3RlcER1cGxpY2F0ZWQoc3RlcFZNLmluZGV4KVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVNb3ZlUmlnaHRdPVwic3RlcFZNLmluZGV4ICE9PSB0aGlzLnN0ZXBzLmxlbmd0aCAtIDFcIlxuICAgICAgICAgICAgICAgIChtb3ZlZFJpZ2h0KT1cIm9uU3RlcE1vdmVkUmlnaHQoc3RlcFZNLmluZGV4KVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVNb3ZlTGVmdF09XCJzdGVwVk0uaW5kZXggIT09IDBcIlxuICAgICAgICAgICAgICAgIChtb3ZlZExlZnQpPVwib25TdGVwTW92ZWRMZWZ0KHN0ZXBWTS5pbmRleClcIlxuICAgICAgICAgICAgICA+PC9naW8tcHMtZmxvdy1kZXRhaWxzLXBoYXNlLXN0ZXA+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBBZGQgcG9saWN5IGJ1dHRvbiAtLT5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNvbnRlbnRfX3N0ZXBfX3JpZ2h0QXJyb3dcIiBzdmdJY29uPVwiZ2lvOmFycm93LXJpZ2h0XCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cInJlYWRPbmx5XCIgY2xhc3M9XCJjb250ZW50X19zdGVwX19hZGRCdG5cIiBtYXQtYnV0dG9uIChjbGljayk9XCJvbkFkZFBvbGljeShzdGVwVk0uaW5kZXgpXCI+XG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOnBsdXNcIj48L21hdC1pY29uPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJjb250ZW50X19zdGVwX19yaWdodEFycm93XCIgc3ZnSWNvbj1cImdpbzphcnJvdy1yaWdodFwiPjwvbWF0LWljb24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59IEBlbHNlIHtcbiAgPGRpdiBjbGFzcz1cImRpc2FibGVkQ29udGVudFwiPlxuICAgIDxnaW8tYmFubmVyLXdhcm5pbmc+XG4gICAgICBQb2xpY2llcyBtaWdodCBub3QgYmUgZXZhbHVhdGVkXG4gICAgICA8c3BhbiBnaW9CYW5uZXJCb2R5PlxuICAgICAgICBZb3VyIGN1cnJlbnQgZmxvdyBzZXR0aW5ncyBhcmUgbm90IGFwcGxpY2FibGUgdG8gdGhpcyBwaGFzZS4gU2VsZWN0IHN1cHBvcnRpbmcgZW5kcG9pbnRzIGFuZCBvcGVyYXRpb25zIGluIHRoZSBmbG93IGNvbmZpZ3VyYXRpb24gdG9cbiAgICAgICAgZW5hYmxlIHRoaXMgcGhhc2UuXG4gICAgICA8L3NwYW4+XG4gICAgPC9naW8tYmFubmVyLXdhcm5pbmc+XG4gIDwvZGl2PlxufVxuIl19