@gravitee/ui-policy-studio-angular 7.58.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/esm2020/lib/components/filter-pipe/gio-flter-connectors-by-mode.pipe.mjs +4 -4
  2. package/esm2020/lib/components/flow-details/gio-ps-flow-details.component.mjs +11 -11
  3. package/esm2020/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.component.mjs +6 -6
  4. package/esm2020/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.mjs +9 -9
  5. package/esm2020/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.component.mjs +6 -6
  6. package/esm2020/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.component.mjs +13 -13
  7. package/esm2020/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.component.mjs +20 -20
  8. package/esm2020/lib/components/flow-form-dialog/flow-proxy-form-dialog/gio-ps-flow-proxy-form-dialog.component.mjs +20 -20
  9. package/esm2020/lib/components/flows-menu/gio-ps-flows-menu.component.mjs +8 -8
  10. package/esm2020/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.component.mjs +18 -18
  11. package/esm2020/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.component.mjs +7 -7
  12. package/esm2020/lib/components/step-form/gio-ps-step-form.component.mjs +14 -14
  13. package/esm2020/lib/gio-policy-studio.component.mjs +9 -9
  14. package/esm2020/lib/gio-policy-studio.module.mjs +23 -25
  15. package/fesm2015/gravitee-ui-policy-studio-angular.mjs +99 -101
  16. package/fesm2015/gravitee-ui-policy-studio-angular.mjs.map +1 -1
  17. package/fesm2020/gravitee-ui-policy-studio-angular.mjs +99 -101
  18. package/fesm2020/gravitee-ui-policy-studio-angular.mjs.map +1 -1
  19. package/lib/components/filter-pipe/gio-flter-connectors-by-mode.pipe.d.ts +1 -1
  20. package/lib/components/flow-details/gio-ps-flow-details.component.d.ts +1 -1
  21. package/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.component.d.ts +1 -1
  22. package/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.d.ts +1 -1
  23. package/lib/components/flow-details-phase-step/gio-ps-flow-details-phase-step.component.d.ts +1 -1
  24. package/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.component.d.ts +3 -3
  25. package/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.component.d.ts +3 -3
  26. package/lib/components/flow-form-dialog/flow-proxy-form-dialog/gio-ps-flow-proxy-form-dialog.component.d.ts +3 -3
  27. package/lib/components/flows-menu/gio-ps-flows-menu.component.d.ts +1 -1
  28. package/lib/components/policies-catalog-dialog/gio-ps-policies-catalog-dialog.component.d.ts +4 -4
  29. package/lib/components/step-edit-dialog/gio-ps-step-edit-dialog.component.d.ts +1 -1
  30. package/lib/components/step-form/gio-ps-step-form.component.d.ts +3 -3
  31. package/lib/gio-policy-studio.component.d.ts +1 -1
  32. package/package.json +8 -8
@@ -16,21 +16,21 @@
16
16
  import { Component, Inject } from '@angular/core';
17
17
  import { MAT_DIALOG_DATA } from '@angular/material/dialog';
18
18
  import { toLower, uniq } from 'lodash';
19
- import { FormControl, FormGroup } from '@angular/forms';
19
+ import { UntypedFormControl, UntypedFormGroup } from '@angular/forms';
20
20
  import { startWith, takeUntil } from 'rxjs/operators';
21
21
  import { Subject } from 'rxjs';
22
22
  import * as i0 from "@angular/core";
23
23
  import * as i1 from "@angular/material/dialog";
24
- import * as i2 from "@angular/material/button";
25
- import * as i3 from "@angular/material/icon";
26
- import * as i4 from "@angular/material/form-field";
27
- import * as i5 from "@angular/material/chips";
28
- import * as i6 from "@gravitee/ui-particles-angular";
29
- import * as i7 from "../step-form/gio-ps-step-form.component";
30
- import * as i8 from "@angular/common";
31
- import * as i9 from "@angular/forms";
32
- import * as i10 from "@angular/material/input";
33
- import * as i11 from "@angular/material/tooltip";
24
+ import * as i2 from "@angular/common";
25
+ import * as i3 from "@angular/forms";
26
+ import * as i4 from "@angular/material/button";
27
+ import * as i5 from "@angular/material/tooltip";
28
+ import * as i6 from "@angular/material/form-field";
29
+ import * as i7 from "@angular/material/input";
30
+ import * as i8 from "@angular/material/chips";
31
+ import * as i9 from "@angular/material/icon";
32
+ import * as i10 from "@gravitee/ui-particles-angular";
33
+ import * as i11 from "../step-form/gio-ps-step-form.component";
34
34
  const executionPhaseLabels = {
35
35
  REQUEST: 'Request',
36
36
  RESPONSE: 'Response',
@@ -43,9 +43,9 @@ export class GioPolicyStudioPoliciesCatalogDialogComponent {
43
43
  this.policies = [];
44
44
  this.categories = [];
45
45
  this.isValid = false;
46
- this.filtersForm = new FormGroup({
47
- categories: new FormControl([]),
48
- search: new FormControl(''),
46
+ this.filtersForm = new UntypedFormGroup({
47
+ categories: new UntypedFormControl([]),
48
+ search: new UntypedFormControl(''),
49
49
  });
50
50
  this.allPolicies = [];
51
51
  this.unsubscribe$ = new Subject();
@@ -112,13 +112,13 @@ export class GioPolicyStudioPoliciesCatalogDialogComponent {
112
112
  this.isUnlicensed = false;
113
113
  }
114
114
  }
115
- GioPolicyStudioPoliciesCatalogDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioPoliciesCatalogDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
116
- GioPolicyStudioPoliciesCatalogDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioPoliciesCatalogDialogComponent, selector: "gio-ps-policies-catalog-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 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<h2 mat-dialog-title class=\"title\">\n Policies for <span class=\"title__phase\">{{ executionPhaseLabel }}</span> phase\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<ng-container>\n <mat-dialog-content *ngIf=\"!selectedPolicy\" class=\"policiesCatalog\">\n <div class=\"policiesCatalog__filters\" [formGroup]=\"filtersForm\">\n <mat-form-field class=\"policiesCatalog__filters__search\" appearance=\"outline\">\n <mat-label>Search</mat-label>\n <input matInput formControlName=\"search\" />\n <button\n matSuffix\n mat-icon-button\n aria-label=\"Clear\"\n *ngIf=\"filtersForm.get('search')?.value\"\n (click)=\"filtersForm.get('search')?.setValue('')\"\n >\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n </mat-form-field>\n <mat-chip-list\n *ngIf=\"categories.length > 1\"\n class=\"policiesCatalog__filters__categories\"\n aria-label=\"Categories selection\"\n multiple\n formControlName=\"categories\"\n >\n <mat-chip\n *ngFor=\"let category of categories\"\n [selected]=\"category\"\n [value]=\"category\"\n #chip=\"matChip\"\n (click)=\"chip.toggleSelected(true)\"\n >{{ category | titlecase }}</mat-chip\n >\n </mat-chip-list>\n </div>\n\n <div *ngIf=\"policies.length; else emptyPoliciesTpl\" class=\"policiesCatalog__list\">\n <div *ngFor=\"let policy of policies\" class=\"policiesCatalog__list__policy\">\n <div class=\"policiesCatalog__list__policy__head\">\n <mat-icon class=\"policiesCatalog__list__policy__head__icon\" [svgIcon]=\"policy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"policy.name\" class=\"policiesCatalog__list__policy__head__name\">{{ policy.name }}</span>\n </div>\n\n <div class=\"policiesCatalog__list__policy__enterprise\" *ngIf=\"policy.deployed === false\">\n <mat-icon\n class=\"policiesCatalog__list__policy__enterprise__lock\"\n [svgIcon]=\"'gio:lock'\"\n matTooltip=\"This policy is only available for users with an enterprise license.\"\n ></mat-icon>\n </div>\n\n <div *ngIf=\"policy.description\" class=\"policiesCatalog__list__policy__description\">{{ policy.description }}</div>\n\n <button class=\"policiesCatalog__list__policy__selectBtn\" mat-stroked-button role=\"dialog\" (click)=\"onSelectPolicy(policy)\">\n Select\n </button>\n </div>\n </div>\n </mat-dialog-content>\n</ng-container>\n\n<ng-template #emptyPoliciesTpl>\n <mat-dialog-content class=\"emptyPoliciesCatalog\">No policies available.</mat-dialog-content>\n</ng-template>\n\n<mat-dialog-content *ngIf=\"selectedPolicy\" class=\"policyForm\">\n <button class=\"policyForm__goBackBtn\" mat-stroked-button (click)=\"onGoBack()\">\n <mat-icon svgIcon=\"gio:arrow-left\"></mat-icon>\n Go back\n </button>\n\n <gio-banner *ngIf=\"isUnlicensed\" type=\"error\" icon=\"gio:universe\">\n This policy is only available for users with an enterprise license.\n <span gioBannerBody>Request a license to upgrade your account and unlock this policy</span>\n <div gioBannerAction>\n <a *ngIf=\"trialUrl\" mat-stroked-button [href]=\"trialUrl\" target=\"_blank\">Request upgrade</a>\n </div>\n </gio-banner>\n\n <div class=\"policyForm__info\">\n <div class=\"policyForm__info__head\">\n <mat-icon class=\"policyForm__info__head__icon\" [svgIcon]=\"selectedPolicy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"selectedPolicy.name\" class=\"policyForm__info__head__name\">{{ selectedPolicy.name }}</span>\n </div>\n\n <div *ngIf=\"selectedPolicy.description\" class=\"policyForm__info__description\">{{ selectedPolicy.description }}</div>\n </div>\n\n <gio-ps-step-form [policy]=\"selectedPolicy\" (stepChange)=\"onStepChange($event)\" (isValid)=\"onIsValid($event)\"></gio-ps-step-form>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\" align=\"end\">\n <button class=\"actions__cancelBtn\" mat-button [mat-dialog-close]=\"\">Cancel</button>\n <button\n *ngIf=\"selectedPolicy\"\n class=\"actions__addBtn\"\n color=\"primary\"\n mat-flat-button\n role=\"dialog\"\n [disabled]=\"!isValid || isUnlicensed\"\n (click)=\"onAddPolicy()\"\n >\n Add policy\n </button>\n</mat-dialog-actions>\n", styles: [".gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}.title__closeBtn{top:-20px;right:-20px;float:right}.policiesCatalog__filters{display:flex;flex-direction:column;padding:0 0 8px;gap:8px}.policiesCatalog__filters__search{width:100%;height:54px;padding-bottom:0}.policiesCatalog__list{--grid-layout-gap: 16px;--grid-column-count: 3;--grid-item-min-width: 200px;--gap-count: calc(var(--grid-column-count) - 1);--total-gap-width: calc(var(--gap-count) * var(--grid-layout-gap));--grid-item-max-width: calc((100% - var(--total-gap-width)) / var(--grid-column-count));display:grid;grid-gap:var(--grid-layout-gap);grid-template-columns:repeat(auto-fill,minmax(max(var(--grid-item-min-width),var(--grid-item-max-width)),1fr))}.policiesCatalog__list__policy{position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;padding:16px;border:1px solid #d3d5dc;border-radius:8px;gap:4px}.policiesCatalog__list__policy__head{display:flex;max-width:95%;align-items:center}.policiesCatalog__list__policy__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.policiesCatalog__list__policy__head__name{overflow:hidden;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap}.policiesCatalog__list__policy__enterprise{position:absolute;top:0;right:0;padding:8px 8px 8px 16px;border-radius:0 8px 0 38px;background:#e7e8ef;color:#6c59bd}.policiesCatalog__list__policy__enterprise__lock{min-width:16px;max-width:16px;color:#6c59bd}.policiesCatalog__list__policy__description{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;color:#606274;-webkit-line-clamp:2}.policiesCatalog__list__policy__description:empty{display:none}.policiesCatalog__list__policy__selectBtn{margin-top:8px}.policyForm__goBackBtn{margin:16px 0}.policyForm__info{display:flex;max-width:100%;flex-direction:column;align-items:flex-start;padding-bottom:16px;gap:4px}.policyForm__info__head{display:flex;align-items:center}.policyForm__info__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.policyForm__info__head__name{flex:1 1 auto}.policyForm__info__description{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;color:#606274}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatChipList, selector: "mat-chip-list", inputs: ["errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { type: i6.GioBannerComponent, selector: "gio-banner", inputs: ["type", "icon", "collapsible"] }, { type: i2.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { type: i7.GioPolicyStudioStepFormComponent, selector: "gio-ps-step-form", inputs: ["step", "policy"], outputs: ["stepChange", "isValid"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.MatLabel, selector: "mat-label" }, { type: i10.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i9.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.MatSuffix, selector: "[matSuffix]" }, { type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { type: i11.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i6.GioBannerBodyDirective, selector: "[gioBannerBody]" }, { type: i6.GioBannerActionDirective, selector: "[gioBannerAction]" }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }], pipes: { "titlecase": i8.TitleCasePipe } });
117
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioPoliciesCatalogDialogComponent, decorators: [{
115
+ GioPolicyStudioPoliciesCatalogDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GioPolicyStudioPoliciesCatalogDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
116
+ GioPolicyStudioPoliciesCatalogDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: GioPolicyStudioPoliciesCatalogDialogComponent, selector: "gio-ps-policies-catalog-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 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<h2 mat-dialog-title class=\"title\">\n Policies for <span class=\"title__phase\">{{ executionPhaseLabel }}</span> phase\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<ng-container>\n <mat-dialog-content *ngIf=\"!selectedPolicy\" class=\"policiesCatalog\">\n <div class=\"policiesCatalog__filters\" [formGroup]=\"filtersForm\">\n <mat-form-field class=\"policiesCatalog__filters__search\" appearance=\"outline\">\n <mat-label>Search</mat-label>\n <input matInput formControlName=\"search\" />\n <button\n matSuffix\n mat-icon-button\n aria-label=\"Clear\"\n *ngIf=\"filtersForm.get('search')?.value\"\n (click)=\"filtersForm.get('search')?.setValue('')\"\n >\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n </mat-form-field>\n <mat-chip-list\n *ngIf=\"categories.length > 1\"\n class=\"policiesCatalog__filters__categories\"\n aria-label=\"Categories selection\"\n multiple\n formControlName=\"categories\"\n >\n <mat-chip\n *ngFor=\"let category of categories\"\n [selected]=\"category\"\n [value]=\"category\"\n #chip=\"matChip\"\n (click)=\"chip.toggleSelected(true)\"\n >{{ category | titlecase }}</mat-chip\n >\n </mat-chip-list>\n </div>\n\n <div *ngIf=\"policies.length; else emptyPoliciesTpl\" class=\"policiesCatalog__list\">\n <div *ngFor=\"let policy of policies\" class=\"policiesCatalog__list__policy\">\n <div class=\"policiesCatalog__list__policy__head\">\n <mat-icon class=\"policiesCatalog__list__policy__head__icon\" [svgIcon]=\"policy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"policy.name\" class=\"policiesCatalog__list__policy__head__name\">{{ policy.name }}</span>\n </div>\n\n <div class=\"policiesCatalog__list__policy__enterprise\" *ngIf=\"policy.deployed === false\">\n <mat-icon\n class=\"policiesCatalog__list__policy__enterprise__lock\"\n [svgIcon]=\"'gio:lock'\"\n matTooltip=\"This policy is only available for users with an enterprise license.\"\n ></mat-icon>\n </div>\n\n <div *ngIf=\"policy.description\" class=\"policiesCatalog__list__policy__description\">{{ policy.description }}</div>\n\n <button class=\"policiesCatalog__list__policy__selectBtn\" mat-stroked-button role=\"dialog\" (click)=\"onSelectPolicy(policy)\">\n Select\n </button>\n </div>\n </div>\n </mat-dialog-content>\n</ng-container>\n\n<ng-template #emptyPoliciesTpl>\n <mat-dialog-content class=\"emptyPoliciesCatalog\">No policies available.</mat-dialog-content>\n</ng-template>\n\n<mat-dialog-content *ngIf=\"selectedPolicy\" class=\"policyForm\">\n <button class=\"policyForm__goBackBtn\" mat-stroked-button (click)=\"onGoBack()\">\n <mat-icon svgIcon=\"gio:arrow-left\"></mat-icon>\n Go back\n </button>\n\n <gio-banner *ngIf=\"isUnlicensed\" type=\"error\" icon=\"gio:universe\">\n This policy is only available for users with an enterprise license.\n <span gioBannerBody>Request a license to upgrade your account and unlock this policy</span>\n <div gioBannerAction>\n <a *ngIf=\"trialUrl\" mat-stroked-button [href]=\"trialUrl\" target=\"_blank\">Request upgrade</a>\n </div>\n </gio-banner>\n\n <div class=\"policyForm__info\">\n <div class=\"policyForm__info__head\">\n <mat-icon class=\"policyForm__info__head__icon\" [svgIcon]=\"selectedPolicy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"selectedPolicy.name\" class=\"policyForm__info__head__name\">{{ selectedPolicy.name }}</span>\n </div>\n\n <div *ngIf=\"selectedPolicy.description\" class=\"policyForm__info__description\">{{ selectedPolicy.description }}</div>\n </div>\n\n <gio-ps-step-form [policy]=\"selectedPolicy\" (stepChange)=\"onStepChange($event)\" (isValid)=\"onIsValid($event)\"></gio-ps-step-form>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\" align=\"end\">\n <button class=\"actions__cancelBtn\" mat-button [mat-dialog-close]=\"\">Cancel</button>\n <button\n *ngIf=\"selectedPolicy\"\n class=\"actions__addBtn\"\n color=\"primary\"\n mat-flat-button\n role=\"dialog\"\n [disabled]=\"!isValid || isUnlicensed\"\n (click)=\"onAddPolicy()\"\n >\n Add policy\n </button>\n</mat-dialog-actions>\n", styles: [".gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}.title__closeBtn{top:-20px;right:-20px;float:right}.policiesCatalog__filters{display:flex;flex-direction:column;padding:0 0 8px;gap:8px}.policiesCatalog__filters__search{width:100%;height:54px;padding-bottom:0}.policiesCatalog__list{--grid-layout-gap: 16px;--grid-column-count: 3;--grid-item-min-width: 200px;--gap-count: calc(var(--grid-column-count) - 1);--total-gap-width: calc(var(--gap-count) * var(--grid-layout-gap));--grid-item-max-width: calc((100% - var(--total-gap-width)) / var(--grid-column-count));display:grid;grid-gap:var(--grid-layout-gap);grid-template-columns:repeat(auto-fill,minmax(max(var(--grid-item-min-width),var(--grid-item-max-width)),1fr))}.policiesCatalog__list__policy{position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;padding:16px;border:1px solid #d3d5dc;border-radius:8px;gap:4px}.policiesCatalog__list__policy__head{display:flex;max-width:95%;align-items:center}.policiesCatalog__list__policy__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.policiesCatalog__list__policy__head__name{overflow:hidden;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap}.policiesCatalog__list__policy__enterprise{position:absolute;top:0;right:0;padding:8px 8px 8px 16px;border-radius:0 8px 0 38px;background:#e7e8ef;color:#6c59bd}.policiesCatalog__list__policy__enterprise__lock{min-width:16px;max-width:16px;color:#6c59bd}.policiesCatalog__list__policy__description{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;color:#606274;-webkit-line-clamp:2}.policiesCatalog__list__policy__description:empty{display:none}.policiesCatalog__list__policy__selectBtn{margin-top:8px}.policyForm__goBackBtn{margin:16px 0}.policyForm__info{display:flex;max-width:100%;flex-direction:column;align-items:flex-start;padding-bottom:16px;gap:4px}.policyForm__info__head{display:flex;align-items:center}.policyForm__info__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.policyForm__info__head__name{flex:1 1 auto}.policyForm__info__description{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;color:#606274}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix]" }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i8.MatChipList, selector: "mat-chip-list", inputs: ["role", "aria-describedby", "errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { kind: "directive", type: i8.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "role", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.GioBannerComponent, selector: "gio-banner", inputs: ["type", "icon", "collapsible"] }, { kind: "directive", type: i10.GioBannerBodyDirective, selector: "[gioBannerBody]" }, { kind: "directive", type: i10.GioBannerActionDirective, selector: "[gioBannerAction]" }, { kind: "component", type: i11.GioPolicyStudioStepFormComponent, selector: "gio-ps-step-form", inputs: ["step", "policy"], outputs: ["stepChange", "isValid"] }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }] });
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GioPolicyStudioPoliciesCatalogDialogComponent, decorators: [{
118
118
  type: Component,
119
119
  args: [{ selector: 'gio-ps-policies-catalog-dialog', template: "<!--\n\n Copyright (C) 2015 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<h2 mat-dialog-title class=\"title\">\n Policies for <span class=\"title__phase\">{{ executionPhaseLabel }}</span> phase\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<ng-container>\n <mat-dialog-content *ngIf=\"!selectedPolicy\" class=\"policiesCatalog\">\n <div class=\"policiesCatalog__filters\" [formGroup]=\"filtersForm\">\n <mat-form-field class=\"policiesCatalog__filters__search\" appearance=\"outline\">\n <mat-label>Search</mat-label>\n <input matInput formControlName=\"search\" />\n <button\n matSuffix\n mat-icon-button\n aria-label=\"Clear\"\n *ngIf=\"filtersForm.get('search')?.value\"\n (click)=\"filtersForm.get('search')?.setValue('')\"\n >\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n </mat-form-field>\n <mat-chip-list\n *ngIf=\"categories.length > 1\"\n class=\"policiesCatalog__filters__categories\"\n aria-label=\"Categories selection\"\n multiple\n formControlName=\"categories\"\n >\n <mat-chip\n *ngFor=\"let category of categories\"\n [selected]=\"category\"\n [value]=\"category\"\n #chip=\"matChip\"\n (click)=\"chip.toggleSelected(true)\"\n >{{ category | titlecase }}</mat-chip\n >\n </mat-chip-list>\n </div>\n\n <div *ngIf=\"policies.length; else emptyPoliciesTpl\" class=\"policiesCatalog__list\">\n <div *ngFor=\"let policy of policies\" class=\"policiesCatalog__list__policy\">\n <div class=\"policiesCatalog__list__policy__head\">\n <mat-icon class=\"policiesCatalog__list__policy__head__icon\" [svgIcon]=\"policy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"policy.name\" class=\"policiesCatalog__list__policy__head__name\">{{ policy.name }}</span>\n </div>\n\n <div class=\"policiesCatalog__list__policy__enterprise\" *ngIf=\"policy.deployed === false\">\n <mat-icon\n class=\"policiesCatalog__list__policy__enterprise__lock\"\n [svgIcon]=\"'gio:lock'\"\n matTooltip=\"This policy is only available for users with an enterprise license.\"\n ></mat-icon>\n </div>\n\n <div *ngIf=\"policy.description\" class=\"policiesCatalog__list__policy__description\">{{ policy.description }}</div>\n\n <button class=\"policiesCatalog__list__policy__selectBtn\" mat-stroked-button role=\"dialog\" (click)=\"onSelectPolicy(policy)\">\n Select\n </button>\n </div>\n </div>\n </mat-dialog-content>\n</ng-container>\n\n<ng-template #emptyPoliciesTpl>\n <mat-dialog-content class=\"emptyPoliciesCatalog\">No policies available.</mat-dialog-content>\n</ng-template>\n\n<mat-dialog-content *ngIf=\"selectedPolicy\" class=\"policyForm\">\n <button class=\"policyForm__goBackBtn\" mat-stroked-button (click)=\"onGoBack()\">\n <mat-icon svgIcon=\"gio:arrow-left\"></mat-icon>\n Go back\n </button>\n\n <gio-banner *ngIf=\"isUnlicensed\" type=\"error\" icon=\"gio:universe\">\n This policy is only available for users with an enterprise license.\n <span gioBannerBody>Request a license to upgrade your account and unlock this policy</span>\n <div gioBannerAction>\n <a *ngIf=\"trialUrl\" mat-stroked-button [href]=\"trialUrl\" target=\"_blank\">Request upgrade</a>\n </div>\n </gio-banner>\n\n <div class=\"policyForm__info\">\n <div class=\"policyForm__info__head\">\n <mat-icon class=\"policyForm__info__head__icon\" [svgIcon]=\"selectedPolicy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"selectedPolicy.name\" class=\"policyForm__info__head__name\">{{ selectedPolicy.name }}</span>\n </div>\n\n <div *ngIf=\"selectedPolicy.description\" class=\"policyForm__info__description\">{{ selectedPolicy.description }}</div>\n </div>\n\n <gio-ps-step-form [policy]=\"selectedPolicy\" (stepChange)=\"onStepChange($event)\" (isValid)=\"onIsValid($event)\"></gio-ps-step-form>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\" align=\"end\">\n <button class=\"actions__cancelBtn\" mat-button [mat-dialog-close]=\"\">Cancel</button>\n <button\n *ngIf=\"selectedPolicy\"\n class=\"actions__addBtn\"\n color=\"primary\"\n mat-flat-button\n role=\"dialog\"\n [disabled]=\"!isValid || isUnlicensed\"\n (click)=\"onAddPolicy()\"\n >\n Add policy\n </button>\n</mat-dialog-actions>\n", styles: [".gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}.title__closeBtn{top:-20px;right:-20px;float:right}.policiesCatalog__filters{display:flex;flex-direction:column;padding:0 0 8px;gap:8px}.policiesCatalog__filters__search{width:100%;height:54px;padding-bottom:0}.policiesCatalog__list{--grid-layout-gap: 16px;--grid-column-count: 3;--grid-item-min-width: 200px;--gap-count: calc(var(--grid-column-count) - 1);--total-gap-width: calc(var(--gap-count) * var(--grid-layout-gap));--grid-item-max-width: calc((100% - var(--total-gap-width)) / var(--grid-column-count));display:grid;grid-gap:var(--grid-layout-gap);grid-template-columns:repeat(auto-fill,minmax(max(var(--grid-item-min-width),var(--grid-item-max-width)),1fr))}.policiesCatalog__list__policy{position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;padding:16px;border:1px solid #d3d5dc;border-radius:8px;gap:4px}.policiesCatalog__list__policy__head{display:flex;max-width:95%;align-items:center}.policiesCatalog__list__policy__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.policiesCatalog__list__policy__head__name{overflow:hidden;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap}.policiesCatalog__list__policy__enterprise{position:absolute;top:0;right:0;padding:8px 8px 8px 16px;border-radius:0 8px 0 38px;background:#e7e8ef;color:#6c59bd}.policiesCatalog__list__policy__enterprise__lock{min-width:16px;max-width:16px;color:#6c59bd}.policiesCatalog__list__policy__description{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;color:#606274;-webkit-line-clamp:2}.policiesCatalog__list__policy__description:empty{display:none}.policiesCatalog__list__policy__selectBtn{margin-top:8px}.policyForm__goBackBtn{margin:16px 0}.policyForm__info{display:flex;max-width:100%;flex-direction:column;align-items:flex-start;padding-bottom:16px;gap:4px}.policyForm__info__head{display:flex;align-items:center}.policyForm__info__head__icon{min-width:24px;flex:1 1 24px;margin-right:8px}.policyForm__info__head__name{flex:1 1 auto}.policyForm__info__description{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;color:#606274}\n"] }]
120
120
  }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
121
121
  type: Inject,
122
122
  args: [MAT_DIALOG_DATA]
123
123
  }] }]; } });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLXBvbGljaWVzLWNhdGFsb2ctZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcG9saWNpZXMtY2F0YWxvZy1kaWFsb2cvZ2lvLXBzLXBvbGljaWVzLWNhdGFsb2ctZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcG9saWNpZXMtY2F0YWxvZy1kaWFsb2cvZ2lvLXBzLXBvbGljaWVzLWNhdGFsb2ctZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7OztBQWEvQixNQUFNLG9CQUFvQixHQUFtQztJQUMzRCxPQUFPLEVBQUUsU0FBUztJQUNsQixRQUFRLEVBQUUsVUFBVTtJQUNwQixlQUFlLEVBQUUsU0FBUztJQUMxQixnQkFBZ0IsRUFBRSxXQUFXO0NBQzlCLENBQUM7QUFXRixNQUFNLE9BQU8sNkNBQTZDO0lBNEJ4RCxZQUNTLFNBQWtILEVBQ2hHLGNBQXdE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OytIQTlCZCw2Q0FBNkMsc0VDakQxRCx1cEtBa0lBOzRGRGpGYSw2Q0FBNkM7a0JBTHpELFNBQVM7K0JBQ0UsZ0NBQWdDOzswQkFrQ3ZDLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyB0b0xvd2VyLCB1bmlxIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBzdGFydFdpdGgsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXBpVHlwZSwgRXhlY3V0aW9uUGhhc2UsIFBvbGljeSwgU3RlcCB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cbmV4cG9ydCB0eXBlIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ0RhdGEgPSB7XG4gIHBvbGljaWVzOiBQb2xpY3lbXTtcbiAgZXhlY3V0aW9uUGhhc2U6IEV4ZWN1dGlvblBoYXNlO1xuICBhcGlUeXBlOiBBcGlUeXBlO1xuICB0cmlhbFVybD86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ1Jlc3VsdCA9IHVuZGVmaW5lZCB8IFN0ZXA7XG5cbmNvbnN0IGV4ZWN1dGlvblBoYXNlTGFiZWxzOiBSZWNvcmQ8RXhlY3V0aW9uUGhhc2UsIHN0cmluZz4gPSB7XG4gIFJFUVVFU1Q6ICdSZXF1ZXN0JyxcbiAgUkVTUE9OU0U6ICdSZXNwb25zZScsXG4gIE1FU1NBR0VfUkVRVUVTVDogJ1B1Ymxpc2gnLFxuICBNRVNTQUdFX1JFU1BPTlNFOiAnU3Vic2NyaWJlJyxcbn07XG5cbnR5cGUgUG9saWN5Vk0gPSBQb2xpY3kgJiB7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tcHMtcG9saWNpZXMtY2F0YWxvZy1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBzLXBvbGljaWVzLWNhdGFsb2ctZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2lvLXBzLXBvbGljaWVzLWNhdGFsb2ctZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBwb2xpY2llczogUG9saWN5Vk1bXSA9IFtdO1xuXG4gIHB1YmxpYyBleGVjdXRpb25QaGFzZUxhYmVsITogc3RyaW5nO1xuXG4gIHB1YmxpYyBzZWxlY3RlZFBvbGljeT86IFBvbGljeTtcblxuICBwdWJsaWMgc3RlcFRvQWRkPzogU3RlcDtcblxuICBwdWJsaWMgY2F0ZWdvcmllczogc3RyaW5nW10gPSBbXTtcblxuICBwdWJsaWMgaXNWYWxpZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBzZWxlY3RlZENhdGVnb3JpZXNDb250cm9sPzogRm9ybUNvbnRyb2w7XG5cbiAgcHVibGljIGZpbHRlcnNGb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgY2F0ZWdvcmllczogbmV3IEZvcm1Db250cm9sKFtdKSxcbiAgICBzZWFyY2g6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gIH0pO1xuXG4gIHByaXZhdGUgYWxsUG9saWNpZXM6IFBvbGljeVZNW10gPSBbXTtcblxuICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIGlzVW5saWNlbnNlZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyB0cmlhbFVybD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8R2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nQ29tcG9uZW50LCBHaW9Qb2xpY3lTdHVkaW9Qb2xpY2llc0NhdGFsb2dEaWFsb2dSZXN1bHQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBmbG93RGlhbG9nRGF0YTogR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nRGF0YSxcbiAgKSB7XG4gICAgdGhpcy5leGVjdXRpb25QaGFzZUxhYmVsID0gZXhlY3V0aW9uUGhhc2VMYWJlbHNbZmxvd0RpYWxvZ0RhdGEuZXhlY3V0aW9uUGhhc2VdO1xuXG4gICAgdGhpcy5hbGxQb2xpY2llcyA9IGZsb3dEaWFsb2dEYXRhLnBvbGljaWVzXG4gICAgICAuZmlsdGVyKHBvbGljeSA9PiB7XG4gICAgICAgIGlmIChmbG93RGlhbG9nRGF0YS5hcGlUeXBlID09PSAnUFJPWFknKSB7XG4gICAgICAgICAgcmV0dXJuIHBvbGljeS5wcm94eT8uaW5jbHVkZXMoZmxvd0RpYWxvZ0RhdGEuZXhlY3V0aW9uUGhhc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwb2xpY3kubWVzc2FnZT8uaW5jbHVkZXMoZmxvd0RpYWxvZ0RhdGEuZXhlY3V0aW9uUGhhc2UpO1xuICAgICAgfSlcbiAgICAgIC5tYXAocG9saWN5ID0+ICh7XG4gICAgICAgIC4uLnBvbGljeSxcbiAgICAgICAgY2F0ZWdvcnk6IHBvbGljeS5jYXRlZ29yeSA/PyAnT3RoZXJzJyxcbiAgICAgIH0pKTtcblxuICAgIHRoaXMuY2F0ZWdvcmllcyA9IHVuaXEodGhpcy5hbGxQb2xpY2llcy5tYXAocG9saWN5ID0+IHBvbGljeS5jYXRlZ29yeS50b0xvd2VyQ2FzZSgpKSkuc29ydCgoYSwgYikgPT4gYS5sb2NhbGVDb21wYXJlKGIpKTtcbiAgICBjb25zdCBvdGhlcnNJbmRleCA9IHRoaXMuY2F0ZWdvcmllcy5pbmRleE9mKCdvdGhlcnMnKTtcbiAgICBpZiAob3RoZXJzSW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLmNhdGVnb3JpZXMucHVzaCh0aGlzLmNhdGVnb3JpZXMuc3BsaWNlKG90aGVyc0luZGV4LCAxKVswXSk7XG4gICAgfVxuXG4gICAgdGhpcy5maWx0ZXJzRm9ybS52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKHN0YXJ0V2l0aCh0aGlzLmZpbHRlcnNGb3JtLnZhbHVlKSwgdGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHsgY2F0ZWdvcmllcywgc2VhcmNoIH06IHsgY2F0ZWdvcmllcz86IHN0cmluZ1tdOyBzZWFyY2g/OiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RlZENhdGVnb3JpZXMgPSBjYXRlZ29yaWVzICYmIGNhdGVnb3JpZXMubGVuZ3RoID4gMCA/IGNhdGVnb3JpZXMgOiB0aGlzLmNhdGVnb3JpZXM7XG4gICAgICAgIHRoaXMucG9saWNpZXMgPSB0aGlzLmFsbFBvbGljaWVzXG4gICAgICAgICAgLmZpbHRlcihwb2xpY3kgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHNlbGVjdGVkQ2F0ZWdvcmllcy5tYXAodG9Mb3dlcikuaW5jbHVkZXModG9Mb3dlcihwb2xpY3kuY2F0ZWdvcnkpKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5maWx0ZXIocG9saWN5ID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzZWFyY2ggPyB0b0xvd2VyKHBvbGljeS5uYW1lKS5pbmNsdWRlcyh0b0xvd2VyKHNlYXJjaCkpIDogdHJ1ZTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy50cmlhbFVybCA9IGZsb3dEaWFsb2dEYXRhLnRyaWFsVXJsO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLm5leHQoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0UG9saWN5KHBvbGljeTogUG9saWN5KSB7XG4gICAgaWYgKHBvbGljeS5kZXBsb3llZCA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuaXNVbmxpY2Vuc2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZFBvbGljeSA9IHBvbGljeTtcbiAgfVxuXG4gIHB1YmxpYyBvblN0ZXBDaGFuZ2Uoc3RlcDogU3RlcCkge1xuICAgIHRoaXMuc3RlcFRvQWRkID0gc3RlcDtcbiAgfVxuXG4gIHB1YmxpYyBvbklzVmFsaWQoaXNWYWxpZDogYm9vbGVhbikge1xuICAgIHRoaXMuaXNWYWxpZCA9IGlzVmFsaWQ7XG4gIH1cblxuICBwdWJsaWMgb25BZGRQb2xpY3koKSB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgLi4udGhpcy5zdGVwVG9BZGQsXG4gICAgICBuYW1lOiB0aGlzLnNlbGVjdGVkUG9saWN5Py5uYW1lLFxuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIHBvbGljeTogdGhpcy5zZWxlY3RlZFBvbGljeT8uaWQsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25Hb0JhY2soKSB7XG4gICAgLy8gUmVzZXQgdG8gaW5pdGlhbCB2YWx1ZVxuICAgIHRoaXMuc2VsZWN0ZWRQb2xpY3kgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5pc1ZhbGlkID0gZmFsc2U7XG4gICAgdGhpcy5pc1VubGljZW5zZWQgPSBmYWxzZTtcbiAgfVxufVxuIiwiPCEtLVxuXG4gICAgQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuLS0+XG48aDIgbWF0LWRpYWxvZy10aXRsZSBjbGFzcz1cInRpdGxlXCI+XG4gIFBvbGljaWVzIGZvciA8c3BhbiBjbGFzcz1cInRpdGxlX19waGFzZVwiPnt7IGV4ZWN1dGlvblBoYXNlTGFiZWwgfX08L3NwYW4+IHBoYXNlXG5cbiAgPGJ1dHRvbiBjbGFzcz1cInRpdGxlX19jbG9zZUJ0blwiIG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiQ2xvc2UgZGlhbG9nXCIgW21hdC1kaWFsb2ctY2xvc2VdPVwiXCI+XG4gICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86Y2FuY2VsXCI+PC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG48L2gyPlxuXG48bmctY29udGFpbmVyPlxuICA8bWF0LWRpYWxvZy1jb250ZW50ICpuZ0lmPVwiIXNlbGVjdGVkUG9saWN5XCIgY2xhc3M9XCJwb2xpY2llc0NhdGFsb2dcIj5cbiAgICA8ZGl2IGNsYXNzPVwicG9saWNpZXNDYXRhbG9nX19maWx0ZXJzXCIgW2Zvcm1Hcm91cF09XCJmaWx0ZXJzRm9ybVwiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicG9saWNpZXNDYXRhbG9nX19maWx0ZXJzX19zZWFyY2hcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgICA8bWF0LWxhYmVsPlNlYXJjaDwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwic2VhcmNoXCIgLz5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG1hdFN1ZmZpeFxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhclwiXG4gICAgICAgICAgKm5nSWY9XCJmaWx0ZXJzRm9ybS5nZXQoJ3NlYXJjaCcpPy52YWx1ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cImZpbHRlcnNGb3JtLmdldCgnc2VhcmNoJyk/LnNldFZhbHVlKCcnKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzpjYW5jZWxcIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWNoaXAtbGlzdFxuICAgICAgICAqbmdJZj1cImNhdGVnb3JpZXMubGVuZ3RoID4gMVwiXG4gICAgICAgIGNsYXNzPVwicG9saWNpZXNDYXRhbG9nX19maWx0ZXJzX19jYXRlZ29yaWVzXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIkNhdGVnb3JpZXMgc2VsZWN0aW9uXCJcbiAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY2F0ZWdvcmllc1wiXG4gICAgICA+XG4gICAgICAgIDxtYXQtY2hpcFxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBjYXRlZ29yaWVzXCJcbiAgICAgICAgICBbc2VsZWN0ZWRdPVwiY2F0ZWdvcnlcIlxuICAgICAgICAgIFt2YWx1ZV09XCJjYXRlZ29yeVwiXG4gICAgICAgICAgI2NoaXA9XCJtYXRDaGlwXCJcbiAgICAgICAgICAoY2xpY2spPVwiY2hpcC50b2dnbGVTZWxlY3RlZCh0cnVlKVwiXG4gICAgICAgICAgPnt7IGNhdGVnb3J5IHwgdGl0bGVjYXNlIH19PC9tYXQtY2hpcFxuICAgICAgICA+XG4gICAgICA8L21hdC1jaGlwLWxpc3Q+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwicG9saWNpZXMubGVuZ3RoOyBlbHNlIGVtcHR5UG9saWNpZXNUcGxcIiBjbGFzcz1cInBvbGljaWVzQ2F0YWxvZ19fbGlzdFwiPlxuICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcG9saWN5IG9mIHBvbGljaWVzXCIgY2xhc3M9XCJwb2xpY2llc0NhdGFsb2dfX2xpc3RfX3BvbGljeVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicG9saWNpZXNDYXRhbG9nX19saXN0X19wb2xpY3lfX2hlYWRcIj5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJwb2xpY2llc0NhdGFsb2dfX2xpc3RfX3BvbGljeV9faGVhZF9faWNvblwiIFtzdmdJY29uXT1cInBvbGljeS5pY29uID8/ICdnaW86cHV6emxlJ1wiPjwvbWF0LWljb24+XG5cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInBvbGljeS5uYW1lXCIgY2xhc3M9XCJwb2xpY2llc0NhdGFsb2dfX2xpc3RfX3BvbGljeV9faGVhZF9fbmFtZVwiPnt7IHBvbGljeS5uYW1lIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwicG9saWNpZXNDYXRhbG9nX19saXN0X19wb2xpY3lfX2VudGVycHJpc2VcIiAqbmdJZj1cInBvbGljeS5kZXBsb3llZCA9PT0gZmFsc2VcIj5cbiAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgIGNsYXNzPVwicG9saWNpZXNDYXRhbG9nX19saXN0X19wb2xpY3lfX2VudGVycHJpc2VfX2xvY2tcIlxuICAgICAgICAgICAgW3N2Z0ljb25dPVwiJ2dpbzpsb2NrJ1wiXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiVGhpcyBwb2xpY3kgaXMgb25seSBhdmFpbGFibGUgZm9yIHVzZXJzIHdpdGggYW4gZW50ZXJwcmlzZSBsaWNlbnNlLlwiXG4gICAgICAgICAgPjwvbWF0LWljb24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJwb2xpY3kuZGVzY3JpcHRpb25cIiBjbGFzcz1cInBvbGljaWVzQ2F0YWxvZ19fbGlzdF9fcG9saWN5X19kZXNjcmlwdGlvblwiPnt7IHBvbGljeS5kZXNjcmlwdGlvbiB9fTwvZGl2PlxuXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJwb2xpY2llc0NhdGFsb2dfX2xpc3RfX3BvbGljeV9fc2VsZWN0QnRuXCIgbWF0LXN0cm9rZWQtYnV0dG9uIHJvbGU9XCJkaWFsb2dcIiAoY2xpY2spPVwib25TZWxlY3RQb2xpY3kocG9saWN5KVwiPlxuICAgICAgICAgIFNlbGVjdFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L21hdC1kaWFsb2ctY29udGVudD5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2VtcHR5UG9saWNpZXNUcGw+XG4gIDxtYXQtZGlhbG9nLWNvbnRlbnQgY2xhc3M9XCJlbXB0eVBvbGljaWVzQ2F0YWxvZ1wiPk5vIHBvbGljaWVzIGF2YWlsYWJsZS48L21hdC1kaWFsb2ctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxtYXQtZGlhbG9nLWNvbnRlbnQgKm5nSWY9XCJzZWxlY3RlZFBvbGljeVwiIGNsYXNzPVwicG9saWN5Rm9ybVwiPlxuICA8YnV0dG9uIGNsYXNzPVwicG9saWN5Rm9ybV9fZ29CYWNrQnRuXCIgbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJvbkdvQmFjaygpXCI+XG4gICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86YXJyb3ctbGVmdFwiPjwvbWF0LWljb24+XG4gICAgR28gYmFja1xuICA8L2J1dHRvbj5cblxuICA8Z2lvLWJhbm5lciAqbmdJZj1cImlzVW5saWNlbnNlZFwiIHR5cGU9XCJlcnJvclwiIGljb249XCJnaW86dW5pdmVyc2VcIj5cbiAgICBUaGlzIHBvbGljeSBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgdXNlcnMgd2l0aCBhbiBlbnRlcnByaXNlIGxpY2Vuc2UuXG4gICAgPHNwYW4gZ2lvQmFubmVyQm9keT5SZXF1ZXN0IGEgbGljZW5zZSB0byB1cGdyYWRlIHlvdXIgYWNjb3VudCBhbmQgdW5sb2NrIHRoaXMgcG9saWN5PC9zcGFuPlxuICAgIDxkaXYgZ2lvQmFubmVyQWN0aW9uPlxuICAgICAgPGEgKm5nSWY9XCJ0cmlhbFVybFwiIG1hdC1zdHJva2VkLWJ1dHRvbiBbaHJlZl09XCJ0cmlhbFVybFwiIHRhcmdldD1cIl9ibGFua1wiPlJlcXVlc3QgdXBncmFkZTwvYT5cbiAgICA8L2Rpdj5cbiAgPC9naW8tYmFubmVyPlxuXG4gIDxkaXYgY2xhc3M9XCJwb2xpY3lGb3JtX19pbmZvXCI+XG4gICAgPGRpdiBjbGFzcz1cInBvbGljeUZvcm1fX2luZm9fX2hlYWRcIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInBvbGljeUZvcm1fX2luZm9fX2hlYWRfX2ljb25cIiBbc3ZnSWNvbl09XCJzZWxlY3RlZFBvbGljeS5pY29uID8/ICdnaW86cHV6emxlJ1wiPjwvbWF0LWljb24+XG5cbiAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRQb2xpY3kubmFtZVwiIGNsYXNzPVwicG9saWN5Rm9ybV9faW5mb19faGVhZF9fbmFtZVwiPnt7IHNlbGVjdGVkUG9saWN5Lm5hbWUgfX08L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRQb2xpY3kuZGVzY3JpcHRpb25cIiBjbGFzcz1cInBvbGljeUZvcm1fX2luZm9fX2Rlc2NyaXB0aW9uXCI+e3sgc2VsZWN0ZWRQb2xpY3kuZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGdpby1wcy1zdGVwLWZvcm0gW3BvbGljeV09XCJzZWxlY3RlZFBvbGljeVwiIChzdGVwQ2hhbmdlKT1cIm9uU3RlcENoYW5nZSgkZXZlbnQpXCIgKGlzVmFsaWQpPVwib25Jc1ZhbGlkKCRldmVudClcIj48L2dpby1wcy1zdGVwLWZvcm0+XG48L21hdC1kaWFsb2ctY29udGVudD5cblxuPG1hdC1kaWFsb2ctYWN0aW9ucyBjbGFzcz1cImFjdGlvbnNcIiBhbGlnbj1cImVuZFwiPlxuICA8YnV0dG9uIGNsYXNzPVwiYWN0aW9uc19fY2FuY2VsQnRuXCIgbWF0LWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJcIj5DYW5jZWw8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgICpuZ0lmPVwic2VsZWN0ZWRQb2xpY3lcIlxuICAgIGNsYXNzPVwiYWN0aW9uc19fYWRkQnRuXCJcbiAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgIG1hdC1mbGF0LWJ1dHRvblxuICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgIFtkaXNhYmxlZF09XCIhaXNWYWxpZCB8fCBpc1VubGljZW5zZWRcIlxuICAgIChjbGljayk9XCJvbkFkZFBvbGljeSgpXCJcbiAgPlxuICAgIEFkZCBwb2xpY3lcbiAgPC9idXR0b24+XG48L21hdC1kaWFsb2ctYWN0aW9ucz5cbiJdfQ==
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLXBvbGljaWVzLWNhdGFsb2ctZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcG9saWNpZXMtY2F0YWxvZy1kaWFsb2cvZ2lvLXBzLXBvbGljaWVzLWNhdGFsb2ctZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvcG9saWNpZXMtY2F0YWxvZy1kaWFsb2cvZ2lvLXBzLXBvbGljaWVzLWNhdGFsb2ctZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUN2QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFhL0IsTUFBTSxvQkFBb0IsR0FBbUM7SUFDM0QsT0FBTyxFQUFFLFNBQVM7SUFDbEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsZUFBZSxFQUFFLFNBQVM7SUFDMUIsZ0JBQWdCLEVBQUUsV0FBVztDQUM5QixDQUFDO0FBV0YsTUFBTSxPQUFPLDZDQUE2QztJQTRCeEQsWUFDUyxTQUFrSCxFQUNoRyxj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QThCOUMsZUFBZTs4SEE5QmQsNkNBQTZDLHNFQ2pEMUQsdXBLQWtJQTsyRkRqRmEsNkNBQTZDO2tCQUx6RCxTQUFTOytCQUNFLGdDQUFnQzs7MEJBa0N2QyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgdG9Mb3dlciwgdW5pcSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBzdGFydFdpdGgsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXBpVHlwZSwgRXhlY3V0aW9uUGhhc2UsIFBvbGljeSwgU3RlcCB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cbmV4cG9ydCB0eXBlIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ0RhdGEgPSB7XG4gIHBvbGljaWVzOiBQb2xpY3lbXTtcbiAgZXhlY3V0aW9uUGhhc2U6IEV4ZWN1dGlvblBoYXNlO1xuICBhcGlUeXBlOiBBcGlUeXBlO1xuICB0cmlhbFVybD86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ1Jlc3VsdCA9IHVuZGVmaW5lZCB8IFN0ZXA7XG5cbmNvbnN0IGV4ZWN1dGlvblBoYXNlTGFiZWxzOiBSZWNvcmQ8RXhlY3V0aW9uUGhhc2UsIHN0cmluZz4gPSB7XG4gIFJFUVVFU1Q6ICdSZXF1ZXN0JyxcbiAgUkVTUE9OU0U6ICdSZXNwb25zZScsXG4gIE1FU1NBR0VfUkVRVUVTVDogJ1B1Ymxpc2gnLFxuICBNRVNTQUdFX1JFU1BPTlNFOiAnU3Vic2NyaWJlJyxcbn07XG5cbnR5cGUgUG9saWN5Vk0gPSBQb2xpY3kgJiB7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tcHMtcG9saWNpZXMtY2F0YWxvZy1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBzLXBvbGljaWVzLWNhdGFsb2ctZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2lvLXBzLXBvbGljaWVzLWNhdGFsb2ctZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBwb2xpY2llczogUG9saWN5Vk1bXSA9IFtdO1xuXG4gIHB1YmxpYyBleGVjdXRpb25QaGFzZUxhYmVsITogc3RyaW5nO1xuXG4gIHB1YmxpYyBzZWxlY3RlZFBvbGljeT86IFBvbGljeTtcblxuICBwdWJsaWMgc3RlcFRvQWRkPzogU3RlcDtcblxuICBwdWJsaWMgY2F0ZWdvcmllczogc3RyaW5nW10gPSBbXTtcblxuICBwdWJsaWMgaXNWYWxpZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBzZWxlY3RlZENhdGVnb3JpZXNDb250cm9sPzogVW50eXBlZEZvcm1Db250cm9sO1xuXG4gIHB1YmxpYyBmaWx0ZXJzRm9ybSA9IG5ldyBVbnR5cGVkRm9ybUdyb3VwKHtcbiAgICBjYXRlZ29yaWVzOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKFtdKSxcbiAgICBzZWFyY2g6IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woJycpLFxuICB9KTtcblxuICBwcml2YXRlIGFsbFBvbGljaWVzOiBQb2xpY3lWTVtdID0gW107XG5cbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHB1YmxpYyBpc1VubGljZW5zZWQgPSBmYWxzZTtcblxuICBwdWJsaWMgdHJpYWxVcmw/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ0NvbXBvbmVudCwgR2lvUG9saWN5U3R1ZGlvUG9saWNpZXNDYXRhbG9nRGlhbG9nUmVzdWx0PixcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgZmxvd0RpYWxvZ0RhdGE6IEdpb1BvbGljeVN0dWRpb1BvbGljaWVzQ2F0YWxvZ0RpYWxvZ0RhdGEsXG4gICkge1xuICAgIHRoaXMuZXhlY3V0aW9uUGhhc2VMYWJlbCA9IGV4ZWN1dGlvblBoYXNlTGFiZWxzW2Zsb3dEaWFsb2dEYXRhLmV4ZWN1dGlvblBoYXNlXTtcblxuICAgIHRoaXMuYWxsUG9saWNpZXMgPSBmbG93RGlhbG9nRGF0YS5wb2xpY2llc1xuICAgICAgLmZpbHRlcihwb2xpY3kgPT4ge1xuICAgICAgICBpZiAoZmxvd0RpYWxvZ0RhdGEuYXBpVHlwZSA9PT0gJ1BST1hZJykge1xuICAgICAgICAgIHJldHVybiBwb2xpY3kucHJveHk/LmluY2x1ZGVzKGZsb3dEaWFsb2dEYXRhLmV4ZWN1dGlvblBoYXNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcG9saWN5Lm1lc3NhZ2U/LmluY2x1ZGVzKGZsb3dEaWFsb2dEYXRhLmV4ZWN1dGlvblBoYXNlKTtcbiAgICAgIH0pXG4gICAgICAubWFwKHBvbGljeSA9PiAoe1xuICAgICAgICAuLi5wb2xpY3ksXG4gICAgICAgIGNhdGVnb3J5OiBwb2xpY3kuY2F0ZWdvcnkgPz8gJ090aGVycycsXG4gICAgICB9KSk7XG5cbiAgICB0aGlzLmNhdGVnb3JpZXMgPSB1bmlxKHRoaXMuYWxsUG9saWNpZXMubWFwKHBvbGljeSA9PiBwb2xpY3kuY2F0ZWdvcnkudG9Mb3dlckNhc2UoKSkpLnNvcnQoKGEsIGIpID0+IGEubG9jYWxlQ29tcGFyZShiKSk7XG4gICAgY29uc3Qgb3RoZXJzSW5kZXggPSB0aGlzLmNhdGVnb3JpZXMuaW5kZXhPZignb3RoZXJzJyk7XG4gICAgaWYgKG90aGVyc0luZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5jYXRlZ29yaWVzLnB1c2godGhpcy5jYXRlZ29yaWVzLnNwbGljZShvdGhlcnNJbmRleCwgMSlbMF0pO1xuICAgIH1cblxuICAgIHRoaXMuZmlsdGVyc0Zvcm0udmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShzdGFydFdpdGgodGhpcy5maWx0ZXJzRm9ybS52YWx1ZSksIHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAuc3Vic2NyaWJlKCh7IGNhdGVnb3JpZXMsIHNlYXJjaCB9OiB7IGNhdGVnb3JpZXM/OiBzdHJpbmdbXTsgc2VhcmNoPzogc3RyaW5nIH0pID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRDYXRlZ29yaWVzID0gY2F0ZWdvcmllcyAmJiBjYXRlZ29yaWVzLmxlbmd0aCA+IDAgPyBjYXRlZ29yaWVzIDogdGhpcy5jYXRlZ29yaWVzO1xuICAgICAgICB0aGlzLnBvbGljaWVzID0gdGhpcy5hbGxQb2xpY2llc1xuICAgICAgICAgIC5maWx0ZXIocG9saWN5ID0+IHtcbiAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZENhdGVnb3JpZXMubWFwKHRvTG93ZXIpLmluY2x1ZGVzKHRvTG93ZXIocG9saWN5LmNhdGVnb3J5KSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuZmlsdGVyKHBvbGljeSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gc2VhcmNoID8gdG9Mb3dlcihwb2xpY3kubmFtZSkuaW5jbHVkZXModG9Mb3dlcihzZWFyY2gpKSA6IHRydWU7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMudHJpYWxVcmwgPSBmbG93RGlhbG9nRGF0YS50cmlhbFVybDtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdFBvbGljeShwb2xpY3k6IFBvbGljeSkge1xuICAgIGlmIChwb2xpY3kuZGVwbG95ZWQgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmlzVW5saWNlbnNlZCA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWRQb2xpY3kgPSBwb2xpY3k7XG4gIH1cblxuICBwdWJsaWMgb25TdGVwQ2hhbmdlKHN0ZXA6IFN0ZXApIHtcbiAgICB0aGlzLnN0ZXBUb0FkZCA9IHN0ZXA7XG4gIH1cblxuICBwdWJsaWMgb25Jc1ZhbGlkKGlzVmFsaWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzVmFsaWQgPSBpc1ZhbGlkO1xuICB9XG5cbiAgcHVibGljIG9uQWRkUG9saWN5KCkge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgIC4uLnRoaXMuc3RlcFRvQWRkLFxuICAgICAgbmFtZTogdGhpcy5zZWxlY3RlZFBvbGljeT8ubmFtZSxcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBwb2xpY3k6IHRoaXMuc2VsZWN0ZWRQb2xpY3k/LmlkLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uR29CYWNrKCkge1xuICAgIC8vIFJlc2V0IHRvIGluaXRpYWwgdmFsdWVcbiAgICB0aGlzLnNlbGVjdGVkUG9saWN5ID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuaXNWYWxpZCA9IGZhbHNlO1xuICAgIHRoaXMuaXNVbmxpY2Vuc2VkID0gZmFsc2U7XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuPGgyIG1hdC1kaWFsb2ctdGl0bGUgY2xhc3M9XCJ0aXRsZVwiPlxuICBQb2xpY2llcyBmb3IgPHNwYW4gY2xhc3M9XCJ0aXRsZV9fcGhhc2VcIj57eyBleGVjdXRpb25QaGFzZUxhYmVsIH19PC9zcGFuPiBwaGFzZVxuXG4gIDxidXR0b24gY2xhc3M9XCJ0aXRsZV9fY2xvc2VCdG5cIiBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkNsb3NlIGRpYWxvZ1wiIFttYXQtZGlhbG9nLWNsb3NlXT1cIlwiPlxuICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOmNhbmNlbFwiPjwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuPC9oMj5cblxuPG5nLWNvbnRhaW5lcj5cbiAgPG1hdC1kaWFsb2ctY29udGVudCAqbmdJZj1cIiFzZWxlY3RlZFBvbGljeVwiIGNsYXNzPVwicG9saWNpZXNDYXRhbG9nXCI+XG4gICAgPGRpdiBjbGFzcz1cInBvbGljaWVzQ2F0YWxvZ19fZmlsdGVyc1wiIFtmb3JtR3JvdXBdPVwiZmlsdGVyc0Zvcm1cIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInBvbGljaWVzQ2F0YWxvZ19fZmlsdGVyc19fc2VhcmNoXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgICAgPG1hdC1sYWJlbD5TZWFyY2g8L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInNlYXJjaFwiIC8+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBtYXRTdWZmaXhcbiAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xlYXJcIlxuICAgICAgICAgICpuZ0lmPVwiZmlsdGVyc0Zvcm0uZ2V0KCdzZWFyY2gnKT8udmFsdWVcIlxuICAgICAgICAgIChjbGljayk9XCJmaWx0ZXJzRm9ybS5nZXQoJ3NlYXJjaCcpPy5zZXRWYWx1ZSgnJylcIlxuICAgICAgICA+XG4gICAgICAgICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86Y2FuY2VsXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1jaGlwLWxpc3RcbiAgICAgICAgKm5nSWY9XCJjYXRlZ29yaWVzLmxlbmd0aCA+IDFcIlxuICAgICAgICBjbGFzcz1cInBvbGljaWVzQ2F0YWxvZ19fZmlsdGVyc19fY2F0ZWdvcmllc1wiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJDYXRlZ29yaWVzIHNlbGVjdGlvblwiXG4gICAgICAgIG11bHRpcGxlXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNhdGVnb3JpZXNcIlxuICAgICAgPlxuICAgICAgICA8bWF0LWNoaXBcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgY2F0ZWdvcmllc1wiXG4gICAgICAgICAgW3NlbGVjdGVkXT1cImNhdGVnb3J5XCJcbiAgICAgICAgICBbdmFsdWVdPVwiY2F0ZWdvcnlcIlxuICAgICAgICAgICNjaGlwPVwibWF0Q2hpcFwiXG4gICAgICAgICAgKGNsaWNrKT1cImNoaXAudG9nZ2xlU2VsZWN0ZWQodHJ1ZSlcIlxuICAgICAgICAgID57eyBjYXRlZ29yeSB8IHRpdGxlY2FzZSB9fTwvbWF0LWNoaXBcbiAgICAgICAgPlxuICAgICAgPC9tYXQtY2hpcC1saXN0PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cInBvbGljaWVzLmxlbmd0aDsgZWxzZSBlbXB0eVBvbGljaWVzVHBsXCIgY2xhc3M9XCJwb2xpY2llc0NhdGFsb2dfX2xpc3RcIj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHBvbGljeSBvZiBwb2xpY2llc1wiIGNsYXNzPVwicG9saWNpZXNDYXRhbG9nX19saXN0X19wb2xpY3lcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvbGljaWVzQ2F0YWxvZ19fbGlzdF9fcG9saWN5X19oZWFkXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwicG9saWNpZXNDYXRhbG9nX19saXN0X19wb2xpY3lfX2hlYWRfX2ljb25cIiBbc3ZnSWNvbl09XCJwb2xpY3kuaWNvbiA/PyAnZ2lvOnB1enpsZSdcIj48L21hdC1pY29uPlxuXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJwb2xpY3kubmFtZVwiIGNsYXNzPVwicG9saWNpZXNDYXRhbG9nX19saXN0X19wb2xpY3lfX2hlYWRfX25hbWVcIj57eyBwb2xpY3kubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvbGljaWVzQ2F0YWxvZ19fbGlzdF9fcG9saWN5X19lbnRlcnByaXNlXCIgKm5nSWY9XCJwb2xpY3kuZGVwbG95ZWQgPT09IGZhbHNlXCI+XG4gICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICBjbGFzcz1cInBvbGljaWVzQ2F0YWxvZ19fbGlzdF9fcG9saWN5X19lbnRlcnByaXNlX19sb2NrXCJcbiAgICAgICAgICAgIFtzdmdJY29uXT1cIidnaW86bG9jaydcIlxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIlRoaXMgcG9saWN5IGlzIG9ubHkgYXZhaWxhYmxlIGZvciB1c2VycyB3aXRoIGFuIGVudGVycHJpc2UgbGljZW5zZS5cIlxuICAgICAgICAgID48L21hdC1pY29uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2ICpuZ0lmPVwicG9saWN5LmRlc2NyaXB0aW9uXCIgY2xhc3M9XCJwb2xpY2llc0NhdGFsb2dfX2xpc3RfX3BvbGljeV9fZGVzY3JpcHRpb25cIj57eyBwb2xpY3kuZGVzY3JpcHRpb24gfX08L2Rpdj5cblxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwicG9saWNpZXNDYXRhbG9nX19saXN0X19wb2xpY3lfX3NlbGVjdEJ0blwiIG1hdC1zdHJva2VkLWJ1dHRvbiByb2xlPVwiZGlhbG9nXCIgKGNsaWNrKT1cIm9uU2VsZWN0UG9saWN5KHBvbGljeSlcIj5cbiAgICAgICAgICBTZWxlY3RcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNlbXB0eVBvbGljaWVzVHBsPlxuICA8bWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwiZW1wdHlQb2xpY2llc0NhdGFsb2dcIj5ObyBwb2xpY2llcyBhdmFpbGFibGUuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48bWF0LWRpYWxvZy1jb250ZW50ICpuZ0lmPVwic2VsZWN0ZWRQb2xpY3lcIiBjbGFzcz1cInBvbGljeUZvcm1cIj5cbiAgPGJ1dHRvbiBjbGFzcz1cInBvbGljeUZvcm1fX2dvQmFja0J0blwiIG1hdC1zdHJva2VkLWJ1dHRvbiAoY2xpY2spPVwib25Hb0JhY2soKVwiPlxuICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOmFycm93LWxlZnRcIj48L21hdC1pY29uPlxuICAgIEdvIGJhY2tcbiAgPC9idXR0b24+XG5cbiAgPGdpby1iYW5uZXIgKm5nSWY9XCJpc1VubGljZW5zZWRcIiB0eXBlPVwiZXJyb3JcIiBpY29uPVwiZ2lvOnVuaXZlcnNlXCI+XG4gICAgVGhpcyBwb2xpY3kgaXMgb25seSBhdmFpbGFibGUgZm9yIHVzZXJzIHdpdGggYW4gZW50ZXJwcmlzZSBsaWNlbnNlLlxuICAgIDxzcGFuIGdpb0Jhbm5lckJvZHk+UmVxdWVzdCBhIGxpY2Vuc2UgdG8gdXBncmFkZSB5b3VyIGFjY291bnQgYW5kIHVubG9jayB0aGlzIHBvbGljeTwvc3Bhbj5cbiAgICA8ZGl2IGdpb0Jhbm5lckFjdGlvbj5cbiAgICAgIDxhICpuZ0lmPVwidHJpYWxVcmxcIiBtYXQtc3Ryb2tlZC1idXR0b24gW2hyZWZdPVwidHJpYWxVcmxcIiB0YXJnZXQ9XCJfYmxhbmtcIj5SZXF1ZXN0IHVwZ3JhZGU8L2E+XG4gICAgPC9kaXY+XG4gIDwvZ2lvLWJhbm5lcj5cblxuICA8ZGl2IGNsYXNzPVwicG9saWN5Rm9ybV9faW5mb1wiPlxuICAgIDxkaXYgY2xhc3M9XCJwb2xpY3lGb3JtX19pbmZvX19oZWFkXCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJwb2xpY3lGb3JtX19pbmZvX19oZWFkX19pY29uXCIgW3N2Z0ljb25dPVwic2VsZWN0ZWRQb2xpY3kuaWNvbiA/PyAnZ2lvOnB1enpsZSdcIj48L21hdC1pY29uPlxuXG4gICAgICA8c3BhbiAqbmdJZj1cInNlbGVjdGVkUG9saWN5Lm5hbWVcIiBjbGFzcz1cInBvbGljeUZvcm1fX2luZm9fX2hlYWRfX25hbWVcIj57eyBzZWxlY3RlZFBvbGljeS5uYW1lIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cInNlbGVjdGVkUG9saWN5LmRlc2NyaXB0aW9uXCIgY2xhc3M9XCJwb2xpY3lGb3JtX19pbmZvX19kZXNjcmlwdGlvblwiPnt7IHNlbGVjdGVkUG9saWN5LmRlc2NyaXB0aW9uIH19PC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxnaW8tcHMtc3RlcC1mb3JtIFtwb2xpY3ldPVwic2VsZWN0ZWRQb2xpY3lcIiAoc3RlcENoYW5nZSk9XCJvblN0ZXBDaGFuZ2UoJGV2ZW50KVwiIChpc1ZhbGlkKT1cIm9uSXNWYWxpZCgkZXZlbnQpXCI+PC9naW8tcHMtc3RlcC1mb3JtPlxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnMgY2xhc3M9XCJhY3Rpb25zXCIgYWxpZ249XCJlbmRcIj5cbiAgPGJ1dHRvbiBjbGFzcz1cImFjdGlvbnNfX2NhbmNlbEJ0blwiIG1hdC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwiXCI+Q2FuY2VsPC9idXR0b24+XG4gIDxidXR0b25cbiAgICAqbmdJZj1cInNlbGVjdGVkUG9saWN5XCJcbiAgICBjbGFzcz1cImFjdGlvbnNfX2FkZEJ0blwiXG4gICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICBtYXQtZmxhdC1idXR0b25cbiAgICByb2xlPVwiZGlhbG9nXCJcbiAgICBbZGlzYWJsZWRdPVwiIWlzVmFsaWQgfHwgaXNVbmxpY2Vuc2VkXCJcbiAgICAoY2xpY2spPVwib25BZGRQb2xpY3koKVwiXG4gID5cbiAgICBBZGQgcG9saWN5XG4gIDwvYnV0dG9uPlxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4iXX0=
@@ -17,10 +17,10 @@ import { Component, Inject } from '@angular/core';
17
17
  import { MAT_DIALOG_DATA } from '@angular/material/dialog';
18
18
  import * as i0 from "@angular/core";
19
19
  import * as i1 from "@angular/material/dialog";
20
- import * as i2 from "@angular/material/icon";
20
+ import * as i2 from "@angular/common";
21
21
  import * as i3 from "@angular/material/button";
22
- import * as i4 from "../step-form/gio-ps-step-form.component";
23
- import * as i5 from "@angular/common";
22
+ import * as i4 from "@angular/material/icon";
23
+ import * as i5 from "../step-form/gio-ps-step-form.component";
24
24
  export class GioPolicyStudioStepEditDialogComponent {
25
25
  constructor(dialogRef, flowDialogData) {
26
26
  this.dialogRef = dialogRef;
@@ -34,13 +34,13 @@ export class GioPolicyStudioStepEditDialogComponent {
34
34
  });
35
35
  }
36
36
  }
37
- GioPolicyStudioStepEditDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioStepEditDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
38
- GioPolicyStudioStepEditDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioStepEditDialogComponent, selector: "gio-ps-step-edit-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 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<h2 mat-dialog-title class=\"title\">\n <mat-icon class=\"title__icon\" [svgIcon]=\"policy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"title__name\">{{ step.name }}</span>\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n\n <div class=\"title__description\">\n {{ policy.description }}\n </div>\n</h2>\n\n<mat-dialog-content class=\"content\">\n <gio-ps-step-form [policy]=\"policy\" [(step)]=\"step\" (isValid)=\"isValid = $event\"></gio-ps-step-form>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\" align=\"end\">\n <button class=\"actions__cancelBtn\" mat-button [mat-dialog-close]=\"\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-flat-button role=\"dialog\" (click)=\"onSave()\" [disabled]=\"!isValid\">Save</button>\n</mat-dialog-actions>\n", styles: [".gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}.title__icon{margin-right:8px}.title__closeBtn{top:-20px;right:-20px;float:right}.title__description{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;color:#606274}\n"], components: [{ type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i4.GioPolicyStudioStepFormComponent, selector: "gio-ps-step-form", inputs: ["step", "policy"], outputs: ["stepChange", "isValid"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioStepEditDialogComponent, decorators: [{
37
+ GioPolicyStudioStepEditDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GioPolicyStudioStepEditDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
38
+ GioPolicyStudioStepEditDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: GioPolicyStudioStepEditDialogComponent, selector: "gio-ps-step-edit-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 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<h2 mat-dialog-title class=\"title\">\n <mat-icon class=\"title__icon\" [svgIcon]=\"policy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"title__name\">{{ step.name }}</span>\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n\n <div class=\"title__description\">\n {{ policy.description }}\n </div>\n</h2>\n\n<mat-dialog-content class=\"content\">\n <gio-ps-step-form [policy]=\"policy\" [(step)]=\"step\" (isValid)=\"isValid = $event\"></gio-ps-step-form>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\" align=\"end\">\n <button class=\"actions__cancelBtn\" mat-button [mat-dialog-close]=\"\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-flat-button role=\"dialog\" (click)=\"onSave()\" [disabled]=\"!isValid\">Save</button>\n</mat-dialog-actions>\n", styles: [".gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}.title__icon{margin-right:8px}.title__closeBtn{top:-20px;right:-20px;float:right}.title__description{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;color:#606274}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.GioPolicyStudioStepFormComponent, selector: "gio-ps-step-form", inputs: ["step", "policy"], outputs: ["stepChange", "isValid"] }] });
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GioPolicyStudioStepEditDialogComponent, decorators: [{
40
40
  type: Component,
41
41
  args: [{ selector: 'gio-ps-step-edit-dialog', template: "<!--\n\n Copyright (C) 2015 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<h2 mat-dialog-title class=\"title\">\n <mat-icon class=\"title__icon\" [svgIcon]=\"policy.icon ?? 'gio:puzzle'\"></mat-icon>\n\n <span *ngIf=\"step.name\" class=\"title__name\">{{ step.name }}</span>\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n\n <div class=\"title__description\">\n {{ policy.description }}\n </div>\n</h2>\n\n<mat-dialog-content class=\"content\">\n <gio-ps-step-form [policy]=\"policy\" [(step)]=\"step\" (isValid)=\"isValid = $event\"></gio-ps-step-form>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\" align=\"end\">\n <button class=\"actions__cancelBtn\" mat-button [mat-dialog-close]=\"\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-flat-button role=\"dialog\" (click)=\"onSave()\" [disabled]=\"!isValid\">Save</button>\n</mat-dialog-actions>\n", styles: [".gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #e7e2fb);color:var(--gio-oem-palette--active-contrast, #100c27)}.title__icon{margin-right:8px}.title__closeBtn{top:-20px;right:-20px;float:right}.title__description{font:400 12px/16px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:normal;color:#606274}\n"] }]
42
42
  }], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
43
43
  type: Inject,
44
44
  args: [MAT_DIALOG_DATA]
45
45
  }] }]; } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLXN0ZXAtZWRpdC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zdGVwLWVkaXQtZGlhbG9nL2dpby1wcy1zdGVwLWVkaXQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc3RlcC1lZGl0LWRpYWxvZy9naW8tcHMtc3RlcC1lZGl0LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7QUFnQnpFLE1BQU0sT0FBTyxzQ0FBc0M7SUFNakQsWUFDUyxTQUFvRyxFQUNsRixjQUFpRDtRQURuRSxjQUFTLEdBQVQsU0FBUyxDQUEyRjtRQUh0RyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBTXJCLElBQUksQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUNuQixHQUFHLElBQUksQ0FBQyxJQUFJO1NBQ2IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7b0lBbEJVLHNDQUFzQyw4Q0FRdkMsZUFBZTt3SEFSZCxzQ0FBc0MsK0RDaENuRCwra0RBdUNBOzRGRFBhLHNDQUFzQztrQkFMbEQsU0FBUzsrQkFDRSx5QkFBeUI7OzBCQVloQyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgUG9saWN5LCBTdGVwIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuZXhwb3J0IHR5cGUgR2lvUG9saWN5U3R1ZGlvU3RlcEVkaXREaWFsb2dEYXRhID0ge1xuICBwb2xpY3k6IFBvbGljeTtcbiAgc3RlcDogU3RlcDtcbn07XG5cbmV4cG9ydCB0eXBlIEdpb1BvbGljeVN0dWRpb1N0ZXBFZGl0RGlhbG9nUmVzdWx0ID0gdW5kZWZpbmVkIHwgU3RlcDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ2lvLXBzLXN0ZXAtZWRpdC1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBzLXN0ZXAtZWRpdC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9naW8tcHMtc3RlcC1lZGl0LWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9Qb2xpY3lTdHVkaW9TdGVwRWRpdERpYWxvZ0NvbXBvbmVudCB7XG4gIHB1YmxpYyBwb2xpY3khOiBQb2xpY3k7XG4gIHB1YmxpYyBzdGVwITogU3RlcDtcblxuICBwdWJsaWMgaXNWYWxpZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxHaW9Qb2xpY3lTdHVkaW9TdGVwRWRpdERpYWxvZ0NvbXBvbmVudCwgR2lvUG9saWN5U3R1ZGlvU3RlcEVkaXREaWFsb2dSZXN1bHQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBmbG93RGlhbG9nRGF0YTogR2lvUG9saWN5U3R1ZGlvU3RlcEVkaXREaWFsb2dEYXRhLFxuICApIHtcbiAgICB0aGlzLnBvbGljeSA9IGZsb3dEaWFsb2dEYXRhLnBvbGljeTtcbiAgICB0aGlzLnN0ZXAgPSBmbG93RGlhbG9nRGF0YS5zdGVwO1xuICB9XG5cbiAgcHVibGljIG9uU2F2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7XG4gICAgICAuLi50aGlzLnN0ZXAsXG4gICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuPGgyIG1hdC1kaWFsb2ctdGl0bGUgY2xhc3M9XCJ0aXRsZVwiPlxuICA8bWF0LWljb24gY2xhc3M9XCJ0aXRsZV9faWNvblwiIFtzdmdJY29uXT1cInBvbGljeS5pY29uID8/ICdnaW86cHV6emxlJ1wiPjwvbWF0LWljb24+XG5cbiAgPHNwYW4gKm5nSWY9XCJzdGVwLm5hbWVcIiBjbGFzcz1cInRpdGxlX19uYW1lXCI+e3sgc3RlcC5uYW1lIH19PC9zcGFuPlxuXG4gIDxidXR0b24gY2xhc3M9XCJ0aXRsZV9fY2xvc2VCdG5cIiBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkNsb3NlIGRpYWxvZ1wiIFttYXQtZGlhbG9nLWNsb3NlXT1cIlwiPlxuICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOmNhbmNlbFwiPjwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuXG4gIDxkaXYgY2xhc3M9XCJ0aXRsZV9fZGVzY3JpcHRpb25cIj5cbiAgICB7eyBwb2xpY3kuZGVzY3JpcHRpb24gfX1cbiAgPC9kaXY+XG48L2gyPlxuXG48bWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwiY29udGVudFwiPlxuICA8Z2lvLXBzLXN0ZXAtZm9ybSBbcG9saWN5XT1cInBvbGljeVwiIFsoc3RlcCldPVwic3RlcFwiIChpc1ZhbGlkKT1cImlzVmFsaWQgPSAkZXZlbnRcIj48L2dpby1wcy1zdGVwLWZvcm0+XG48L21hdC1kaWFsb2ctY29udGVudD5cblxuPG1hdC1kaWFsb2ctYWN0aW9ucyBjbGFzcz1cImFjdGlvbnNcIiBhbGlnbj1cImVuZFwiPlxuICA8YnV0dG9uIGNsYXNzPVwiYWN0aW9uc19fY2FuY2VsQnRuXCIgbWF0LWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJcIj5DYW5jZWw8L2J1dHRvbj5cbiAgPGJ1dHRvbiBjbGFzcz1cImFjdGlvbnNfX3NhdmVCdG5cIiBjb2xvcj1cInByaW1hcnlcIiBtYXQtZmxhdC1idXR0b24gcm9sZT1cImRpYWxvZ1wiIChjbGljayk9XCJvblNhdmUoKVwiIFtkaXNhYmxlZF09XCIhaXNWYWxpZFwiPlNhdmU8L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuIl19
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLXN0ZXAtZWRpdC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zdGVwLWVkaXQtZGlhbG9nL2dpby1wcy1zdGVwLWVkaXQtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc3RlcC1lZGl0LWRpYWxvZy9naW8tcHMtc3RlcC1lZGl0LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7QUFnQnpFLE1BQU0sT0FBTyxzQ0FBc0M7SUFNakQsWUFDUyxTQUFvRyxFQUNsRixjQUFpRDtRQURuRSxjQUFTLEdBQVQsU0FBUyxDQUEyRjtRQUh0RyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBTXJCLElBQUksQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUNuQixHQUFHLElBQUksQ0FBQyxJQUFJO1NBQ2IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7bUlBbEJVLHNDQUFzQyw4Q0FRdkMsZUFBZTt1SEFSZCxzQ0FBc0MsK0RDaENuRCwra0RBdUNBOzJGRFBhLHNDQUFzQztrQkFMbEQsU0FBUzsrQkFDRSx5QkFBeUI7OzBCQVloQyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuaW1wb3J0IHsgUG9saWN5LCBTdGVwIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuZXhwb3J0IHR5cGUgR2lvUG9saWN5U3R1ZGlvU3RlcEVkaXREaWFsb2dEYXRhID0ge1xuICBwb2xpY3k6IFBvbGljeTtcbiAgc3RlcDogU3RlcDtcbn07XG5cbmV4cG9ydCB0eXBlIEdpb1BvbGljeVN0dWRpb1N0ZXBFZGl0RGlhbG9nUmVzdWx0ID0gdW5kZWZpbmVkIHwgU3RlcDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ2lvLXBzLXN0ZXAtZWRpdC1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBzLXN0ZXAtZWRpdC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9naW8tcHMtc3RlcC1lZGl0LWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9Qb2xpY3lTdHVkaW9TdGVwRWRpdERpYWxvZ0NvbXBvbmVudCB7XG4gIHB1YmxpYyBwb2xpY3khOiBQb2xpY3k7XG4gIHB1YmxpYyBzdGVwITogU3RlcDtcblxuICBwdWJsaWMgaXNWYWxpZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxHaW9Qb2xpY3lTdHVkaW9TdGVwRWRpdERpYWxvZ0NvbXBvbmVudCwgR2lvUG9saWN5U3R1ZGlvU3RlcEVkaXREaWFsb2dSZXN1bHQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBmbG93RGlhbG9nRGF0YTogR2lvUG9saWN5U3R1ZGlvU3RlcEVkaXREaWFsb2dEYXRhLFxuICApIHtcbiAgICB0aGlzLnBvbGljeSA9IGZsb3dEaWFsb2dEYXRhLnBvbGljeTtcbiAgICB0aGlzLnN0ZXAgPSBmbG93RGlhbG9nRGF0YS5zdGVwO1xuICB9XG5cbiAgcHVibGljIG9uU2F2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7XG4gICAgICAuLi50aGlzLnN0ZXAsXG4gICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuPGgyIG1hdC1kaWFsb2ctdGl0bGUgY2xhc3M9XCJ0aXRsZVwiPlxuICA8bWF0LWljb24gY2xhc3M9XCJ0aXRsZV9faWNvblwiIFtzdmdJY29uXT1cInBvbGljeS5pY29uID8/ICdnaW86cHV6emxlJ1wiPjwvbWF0LWljb24+XG5cbiAgPHNwYW4gKm5nSWY9XCJzdGVwLm5hbWVcIiBjbGFzcz1cInRpdGxlX19uYW1lXCI+e3sgc3RlcC5uYW1lIH19PC9zcGFuPlxuXG4gIDxidXR0b24gY2xhc3M9XCJ0aXRsZV9fY2xvc2VCdG5cIiBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkNsb3NlIGRpYWxvZ1wiIFttYXQtZGlhbG9nLWNsb3NlXT1cIlwiPlxuICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOmNhbmNlbFwiPjwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuXG4gIDxkaXYgY2xhc3M9XCJ0aXRsZV9fZGVzY3JpcHRpb25cIj5cbiAgICB7eyBwb2xpY3kuZGVzY3JpcHRpb24gfX1cbiAgPC9kaXY+XG48L2gyPlxuXG48bWF0LWRpYWxvZy1jb250ZW50IGNsYXNzPVwiY29udGVudFwiPlxuICA8Z2lvLXBzLXN0ZXAtZm9ybSBbcG9saWN5XT1cInBvbGljeVwiIFsoc3RlcCldPVwic3RlcFwiIChpc1ZhbGlkKT1cImlzVmFsaWQgPSAkZXZlbnRcIj48L2dpby1wcy1zdGVwLWZvcm0+XG48L21hdC1kaWFsb2ctY29udGVudD5cblxuPG1hdC1kaWFsb2ctYWN0aW9ucyBjbGFzcz1cImFjdGlvbnNcIiBhbGlnbj1cImVuZFwiPlxuICA8YnV0dG9uIGNsYXNzPVwiYWN0aW9uc19fY2FuY2VsQnRuXCIgbWF0LWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJcIj5DYW5jZWw8L2J1dHRvbj5cbiAgPGJ1dHRvbiBjbGFzcz1cImFjdGlvbnNfX3NhdmVCdG5cIiBjb2xvcj1cInByaW1hcnlcIiBtYXQtZmxhdC1idXR0b24gcm9sZT1cImRpYWxvZ1wiIChjbGljayk9XCJvblNhdmUoKVwiIFtkaXNhYmxlZF09XCIhaXNWYWxpZFwiPlNhdmU8L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuIl19
@@ -14,18 +14,18 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  import { Component, EventEmitter, Input, Output } from '@angular/core';
17
- import { FormControl, FormGroup } from '@angular/forms';
17
+ import { UntypedFormControl, UntypedFormGroup } from '@angular/forms';
18
18
  import { map, takeUntil } from 'rxjs/operators';
19
19
  import { Subject } from 'rxjs';
20
20
  import { GioFormJsonSchemaComponent } from '@gravitee/ui-particles-angular';
21
21
  import { isEmpty } from 'lodash';
22
22
  import * as i0 from "@angular/core";
23
23
  import * as i1 from "../../gio-policy-studio.service";
24
- import * as i2 from "@angular/material/form-field";
25
- import * as i3 from "@gravitee/ui-particles-angular";
26
- import * as i4 from "@angular/common";
27
- import * as i5 from "@angular/forms";
28
- import * as i6 from "@angular/material/input";
24
+ import * as i2 from "@angular/common";
25
+ import * as i3 from "@angular/forms";
26
+ import * as i4 from "@angular/material/form-field";
27
+ import * as i5 from "@angular/material/input";
28
+ import * as i6 from "@gravitee/ui-particles-angular";
29
29
  export class GioPolicyStudioStepFormComponent {
30
30
  constructor(policyStudioService) {
31
31
  this.policyStudioService = policyStudioService;
@@ -54,10 +54,10 @@ export class GioPolicyStudioStepFormComponent {
54
54
  this.unsubscribe$.complete();
55
55
  }
56
56
  initStepForm() {
57
- this.stepForm = new FormGroup({
58
- description: new FormControl(this.step?.description),
59
- condition: new FormControl(this.step?.condition),
60
- configuration: new FormControl(this.step?.configuration ?? {}),
57
+ this.stepForm = new UntypedFormGroup({
58
+ description: new UntypedFormControl(this.step?.description),
59
+ condition: new UntypedFormControl(this.step?.condition),
60
+ configuration: new UntypedFormControl(this.step?.configuration ?? {}),
61
61
  });
62
62
  this.stepForm.valueChanges.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {
63
63
  this.stepChange.emit({
@@ -78,9 +78,9 @@ export class GioPolicyStudioStepFormComponent {
78
78
  }
79
79
  }
80
80
  }
81
- GioPolicyStudioStepFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioStepFormComponent, deps: [{ token: i1.GioPolicyStudioService }], target: i0.ɵɵFactoryTarget.Component });
82
- GioPolicyStudioStepFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioStepFormComponent, selector: "gio-ps-step-form", inputs: { step: "step", policy: "policy" }, outputs: { stepChange: "stepChange", isValid: "isValid" }, 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=\"settings\">\n <div class=\"settings__header\">Settings</div>\n\n <div class=\"settings__content\">\n <ng-container *ngIf=\"stepForm && (policySchema$ | async) as policySchema; else loadingTmpl\" [formGroup]=\"stepForm\">\n <mat-form-field>\n <mat-label>Description</mat-label>\n <textarea matInput formControlName=\"description\" cdkFocusInitial></textarea>\n <mat-hint>Describe how your policy works.</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Trigger condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>The condition to execute this policy. Supports Expression Language.</mat-hint>\n </mat-form-field>\n\n <gio-form-json-schema\n *ngIf=\"policySchema\"\n [jsonSchema]=\"$any(policySchema)\"\n (ready)=\"onJsonSchemaReady($event)\"\n formControlName=\"configuration\"\n ></gio-form-json-schema>\n </ng-container>\n </div>\n</div>\n\n<div class=\"documentation\">\n <div class=\"documentation__header\">Documentation</div>\n\n <div class=\"documentation__content\">\n <ng-container *ngIf=\"policyDocumentation$ | async as policyDocumentation; else loadingTmpl\">\n <gio-asciidoctor [content]=\"policyDocumentation\"></gio-asciidoctor>\n </ng-container>\n </div>\n</div>\n\n<ng-template #loadingTmpl>\n <gio-loader></gio-loader>\n</ng-template>\n", styles: [".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-direction:row;border:1px solid #d3d5dc;border-radius:8px}.settings{display:flex;flex:0 0 50%;flex-direction:column}.settings__header{border-right:1px solid #d3d5dc}.settings__content{display:flex;flex:1 1 auto;flex-direction:column;padding:16px;border-right:1px solid #d3d5dc}.documentation{display:flex;overflow:auto;flex:0 0 50%;flex-direction:column}.documentation__content{overflow:auto;flex:1 1 auto;padding:16px}.settings__header,.documentation__header{padding:16px;border-bottom:1px solid #d3d5dc;font:600 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}\n"], components: [{ type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i3.GioFormJsonSchemaComponent, selector: "gio-form-json-schema", inputs: ["jsonSchema", "options"], outputs: ["ready"] }, { type: i3.GioAsciidoctorComponent, selector: "gio-asciidoctor", inputs: ["content", "src"] }, { type: i3.GioLoaderComponent, selector: "gio-loader" }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i2.MatLabel, selector: "mat-label" }, { type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }], pipes: { "async": i4.AsyncPipe } });
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioStepFormComponent, decorators: [{
81
+ GioPolicyStudioStepFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GioPolicyStudioStepFormComponent, deps: [{ token: i1.GioPolicyStudioService }], target: i0.ɵɵFactoryTarget.Component });
82
+ GioPolicyStudioStepFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: GioPolicyStudioStepFormComponent, selector: "gio-ps-step-form", inputs: { step: "step", policy: "policy" }, outputs: { stepChange: "stepChange", isValid: "isValid" }, 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=\"settings\">\n <div class=\"settings__header\">Settings</div>\n\n <div class=\"settings__content\">\n <ng-container *ngIf=\"stepForm && (policySchema$ | async) as policySchema; else loadingTmpl\" [formGroup]=\"stepForm\">\n <mat-form-field>\n <mat-label>Description</mat-label>\n <textarea matInput formControlName=\"description\" cdkFocusInitial></textarea>\n <mat-hint>Describe how your policy works.</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Trigger condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>The condition to execute this policy. Supports Expression Language.</mat-hint>\n </mat-form-field>\n\n <gio-form-json-schema\n *ngIf=\"policySchema\"\n [jsonSchema]=\"$any(policySchema)\"\n (ready)=\"onJsonSchemaReady($event)\"\n formControlName=\"configuration\"\n ></gio-form-json-schema>\n </ng-container>\n </div>\n</div>\n\n<div class=\"documentation\">\n <div class=\"documentation__header\">Documentation</div>\n\n <div class=\"documentation__content\">\n <ng-container *ngIf=\"policyDocumentation$ | async as policyDocumentation; else loadingTmpl\">\n <gio-asciidoctor [content]=\"policyDocumentation\"></gio-asciidoctor>\n </ng-container>\n </div>\n</div>\n\n<ng-template #loadingTmpl>\n <gio-loader></gio-loader>\n</ng-template>\n", styles: [".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-direction:row;border:1px solid #d3d5dc;border-radius:8px}.settings{display:flex;flex:0 0 50%;flex-direction:column}.settings__header{border-right:1px solid #d3d5dc}.settings__content{display:flex;flex:1 1 auto;flex-direction:column;padding:16px;border-right:1px solid #d3d5dc}.documentation{display:flex;overflow:auto;flex:0 0 50%;flex-direction:column}.documentation__content{overflow:auto;flex:1 1 auto;padding:16px}.settings__header,.documentation__header{padding:16px;border-bottom:1px solid #d3d5dc;font:600 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.GioFormJsonSchemaComponent, selector: "gio-form-json-schema", inputs: ["jsonSchema", "options"], outputs: ["ready"] }, { kind: "component", type: i6.GioAsciidoctorComponent, selector: "gio-asciidoctor", inputs: ["content", "src"] }, { kind: "component", type: i6.GioLoaderComponent, selector: "gio-loader" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: GioPolicyStudioStepFormComponent, decorators: [{
84
84
  type: Component,
85
85
  args: [{ selector: 'gio-ps-step-form', 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=\"settings\">\n <div class=\"settings__header\">Settings</div>\n\n <div class=\"settings__content\">\n <ng-container *ngIf=\"stepForm && (policySchema$ | async) as policySchema; else loadingTmpl\" [formGroup]=\"stepForm\">\n <mat-form-field>\n <mat-label>Description</mat-label>\n <textarea matInput formControlName=\"description\" cdkFocusInitial></textarea>\n <mat-hint>Describe how your policy works.</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Trigger condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>The condition to execute this policy. Supports Expression Language.</mat-hint>\n </mat-form-field>\n\n <gio-form-json-schema\n *ngIf=\"policySchema\"\n [jsonSchema]=\"$any(policySchema)\"\n (ready)=\"onJsonSchemaReady($event)\"\n formControlName=\"configuration\"\n ></gio-form-json-schema>\n </ng-container>\n </div>\n</div>\n\n<div class=\"documentation\">\n <div class=\"documentation__header\">Documentation</div>\n\n <div class=\"documentation__content\">\n <ng-container *ngIf=\"policyDocumentation$ | async as policyDocumentation; else loadingTmpl\">\n <gio-asciidoctor [content]=\"policyDocumentation\"></gio-asciidoctor>\n </ng-container>\n </div>\n</div>\n\n<ng-template #loadingTmpl>\n <gio-loader></gio-loader>\n</ng-template>\n", styles: [".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-direction:row;border:1px solid #d3d5dc;border-radius:8px}.settings{display:flex;flex:0 0 50%;flex-direction:column}.settings__header{border-right:1px solid #d3d5dc}.settings__content{display:flex;flex:1 1 auto;flex-direction:column;padding:16px;border-right:1px solid #d3d5dc}.documentation{display:flex;overflow:auto;flex:0 0 50%;flex-direction:column}.documentation__content{overflow:auto;flex:1 1 auto;padding:16px}.settings__header,.documentation__header{padding:16px;border-bottom:1px solid #d3d5dc;font:600 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px}\n"] }]
86
86
  }], ctorParameters: function () { return [{ type: i1.GioPolicyStudioService }]; }, propDecorators: { step: [{
@@ -92,4 +92,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
92
92
  }], isValid: [{
93
93
  type: Output
94
94
  }] } });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLXN0ZXAtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3N0ZXAtZm9ybS9naW8tcHMtc3RlcC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc3RlcC1mb3JtL2dpby1wcy1zdGVwLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLDBCQUEwQixFQUFpQixNQUFNLGdDQUFnQyxDQUFDO0FBQzNGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7Ozs7O0FBVWpDLE1BQU0sT0FBTyxnQ0FBZ0M7SUFtQjNDLFlBQTZCLG1CQUEyQztRQUEzQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXdCO1FBWGpFLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBR3RDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBT3JDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUNnQyxDQUFDO0lBRXJFLFdBQVcsQ0FBQyxPQUFzQjtRQUN2QyxJQUFJLE9BQU8s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QUFNO3NCQURaLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsTUFBTTtnQkFJQSxPQUFPO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEdpb0Zvcm1Kc29uU2NoZW1hQ29tcG9uZW50LCBHaW9Kc29uU2NoZW1hIH0gZnJvbSAnQGdyYXZpdGVlL3VpLXBhcnRpY2xlcy1hbmd1bGFyJztcbmltcG9ydCB7IGlzRW1wdHkgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBHaW9Qb2xpY3lTdHVkaW9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZ2lvLXBvbGljeS1zdHVkaW8uc2VydmljZSc7XG5pbXBvcnQgeyBQb2xpY3ksIFN0ZXAgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tcHMtc3RlcC1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dpby1wcy1zdGVwLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9naW8tcHMtc3RlcC1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEdpb1BvbGljeVN0dWRpb1N0ZXBGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGVwPzogU3RlcDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcG9saWN5ITogUG9saWN5O1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc3RlcENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U3RlcD4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGlzVmFsaWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgcHVibGljIHBvbGljeVNjaGVtYSQ/OiBPYnNlcnZhYmxlPEdpb0pzb25TY2hlbWEgfCBudWxsIHwgdW5kZWZpbmVkPjtcbiAgcHVibGljIHBvbGljeURvY3VtZW50YXRpb24kPzogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIHB1YmxpYyBzdGVwRm9ybT86IEZvcm1Hcm91cDtcblxuICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcG9saWN5U3R1ZGlvU2VydmljZTogR2lvUG9saWN5U3R1ZGlvU2VydmljZSkge31cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnBvbGljeSkge1xuICAgICAgdGhpcy5wb2xpY3lTY2hlbWEkID0gdGhpcy5wb2xpY3lTdHVkaW9TZXJ2aWNlLmdldFBvbGljeVNjaGVtYSh0aGlzLnBvbGljeSkucGlwZShcbiAgICAgICAgbWFwKHNjaGVtYSA9PiB7XG4gICAgICAgICAgaWYgKEdpb0Zvcm1Kc29uU2NoZW1hQ29tcG9uZW50LmlzRGlzcGxheWFibGUoc2NoZW1hIGFzIEdpb0pzb25TY2hlbWEpKSB7XG4gICAgICAgICAgICByZXR1cm4gc2NoZW1hIGFzIEdpb0pzb25TY2hlbWE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfSksXG4gICAgICApO1xuXG4gICAgICB0aGlzLnBvbGljeURvY3VtZW50YXRpb24kID0gdGhpcy5wb2xpY3lTdHVkaW9TZXJ2aWNlXG4gICAgICAgIC5nZXRQb2xpY3lEb2N1bWVudGF0aW9uKHRoaXMucG9saWN5KVxuICAgICAgICAucGlwZShtYXAoZG9jID0+IChpc0VtcHR5KGRvYykgPyAnTm8gZG9jdW1lbnRhdGlvbiBhdmFpbGFibGUuJyA6IGRvYykpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0U3RlcEZvcm0oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFN0ZXBGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuc3RlcEZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIGRlc2NyaXB0aW9uOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5zdGVwPy5kZXNjcmlwdGlvbiksXG4gICAgICBjb25kaXRpb246IG5ldyBGb3JtQ29udHJvbCh0aGlzLnN0ZXA/LmNvbmRpdGlvbiksXG4gICAgICBjb25maWd1cmF0aW9uOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5zdGVwPy5jb25maWd1cmF0aW9uID8/IHt9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuc3RlcEZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuc3RlcENoYW5nZS5lbWl0KHtcbiAgICAgICAgLi4udGhpcy5zdGVwLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5zdGVwRm9ybT8uZ2V0KCdkZXNjcmlwdGlvbicpPy52YWx1ZSxcbiAgICAgICAgY29uZGl0aW9uOiB0aGlzLnN0ZXBGb3JtPy5nZXQoJ2NvbmRpdGlvbicpPy52YWx1ZSA/PyB1bmRlZmluZWQsXG4gICAgICAgIGNvbmZpZ3VyYXRpb246IHRoaXMuc3RlcEZvcm0/LmdldCgnY29uZmlndXJhdGlvbicpPy52YWx1ZSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zdGVwRm9ybS5zdGF0dXNDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKHZhbGlkID0+IHtcbiAgICAgIHRoaXMuaXNWYWxpZC5lbWl0KHZhbGlkID09PSAnVkFMSUQnKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkpzb25TY2hlbWFSZWFkeShpc1JlYWR5OiBib29sZWFuKSB7XG4gICAgLy8gV2hlbiByZWFkeSBhbmQgaWYgdGhlIGZvcm0gaXMgdmFsaWQsIGVtaXRcbiAgICBpZiAoaXNSZWFkeSAmJiB0aGlzLnN0ZXBGb3JtPy5zdGF0dXMgPT09ICdWQUxJRCcpIHtcbiAgICAgIHRoaXMuaXNWYWxpZC5lbWl0KHRydWUpO1xuICAgIH1cbiAgfVxufVxuIiwiPCEtLVxuXG4gICAgQ29weXJpZ2h0IChDKSAyMDIzIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gICAgXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gICAgXG4gICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAgICBcbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuLS0+XG5cbjxkaXYgY2xhc3M9XCJzZXR0aW5nc1wiPlxuICA8ZGl2IGNsYXNzPVwic2V0dGluZ3NfX2hlYWRlclwiPlNldHRpbmdzPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInNldHRpbmdzX19jb250ZW50XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXBGb3JtICYmIChwb2xpY3lTY2hlbWEkIHwgYXN5bmMpIGFzIHBvbGljeVNjaGVtYTsgZWxzZSBsb2FkaW5nVG1wbFwiIFtmb3JtR3JvdXBdPVwic3RlcEZvcm1cIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1sYWJlbD5EZXNjcmlwdGlvbjwvbWF0LWxhYmVsPlxuICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIiBjZGtGb2N1c0luaXRpYWw+PC90ZXh0YXJlYT5cbiAgICAgICAgPG1hdC1oaW50PkRlc2NyaWJlIGhvdyB5b3VyIHBvbGljeSB3b3Jrcy48L21hdC1oaW50PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWxhYmVsPlRyaWdnZXIgY29uZGl0aW9uPC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJjb25kaXRpb25cIiAvPlxuICAgICAgICA8bWF0LWhpbnQ+VGhlIGNvbmRpdGlvbiB0byBleGVjdXRlIHRoaXMgcG9saWN5LiBTdXBwb3J0cyBFeHByZXNzaW9uIExhbmd1YWdlLjwvbWF0LWhpbnQ+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8Z2lvLWZvcm0tanNvbi1zY2hlbWFcbiAgICAgICAgKm5nSWY9XCJwb2xpY3lTY2hlbWFcIlxuICAgICAgICBbanNvblNjaGVtYV09XCIkYW55KHBvbGljeVNjaGVtYSlcIlxuICAgICAgICAocmVhZHkpPVwib25Kc29uU2NoZW1hUmVhZHkoJGV2ZW50KVwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvbmZpZ3VyYXRpb25cIlxuICAgICAgPjwvZ2lvLWZvcm0tanNvbi1zY2hlbWE+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJkb2N1bWVudGF0aW9uXCI+XG4gIDxkaXYgY2xhc3M9XCJkb2N1bWVudGF0aW9uX19oZWFkZXJcIj5Eb2N1bWVudGF0aW9uPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImRvY3VtZW50YXRpb25fX2NvbnRlbnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicG9saWN5RG9jdW1lbnRhdGlvbiQgfCBhc3luYyBhcyBwb2xpY3lEb2N1bWVudGF0aW9uOyBlbHNlIGxvYWRpbmdUbXBsXCI+XG4gICAgICA8Z2lvLWFzY2lpZG9jdG9yIFtjb250ZW50XT1cInBvbGljeURvY3VtZW50YXRpb25cIj48L2dpby1hc2NpaWRvY3Rvcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nVG1wbD5cbiAgPGdpby1sb2FkZXI+PC9naW8tbG9hZGVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLXN0ZXAtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3N0ZXAtZm9ybS9naW8tcHMtc3RlcC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc3RlcC1mb3JtL2dpby1wcy1zdGVwLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSwwQkFBMEIsRUFBaUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDOzs7Ozs7OztBQVVqQyxNQUFNLE9BQU8sZ0NBQWdDO0lBbUIzQyxZQUE2QixtQkFBMkM7UUFBM0Msd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF3QjtRQVhqRSxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUd0QyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQU9yQyxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFDZ0MsQ0FBQztJQUVyRSxXQUFXLENBQUMsT0FBc0I7UUFDdkMsSUFBSSxP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S0FBSztnQkFJQyxNQUFNO3NCQURaLEtBQUs7Z0JBSUMsVUFBVTtzQkFEaEIsTUFBTTtnQkFJQSxPQUFPO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDIyIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR2lvRm9ybUpzb25TY2hlbWFDb21wb25lbnQsIEdpb0pzb25TY2hlbWEgfSBmcm9tICdAZ3Jhdml0ZWUvdWktcGFydGljbGVzLWFuZ3VsYXInO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IEdpb1BvbGljeVN0dWRpb1NlcnZpY2UgfSBmcm9tICcuLi8uLi9naW8tcG9saWN5LXN0dWRpby5zZXJ2aWNlJztcbmltcG9ydCB7IFBvbGljeSwgU3RlcCB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dpby1wcy1zdGVwLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBzLXN0ZXAtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dpby1wcy1zdGVwLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2lvUG9saWN5U3R1ZGlvU3RlcEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KClcbiAgcHVibGljIHN0ZXA/OiBTdGVwO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwb2xpY3khOiBQb2xpY3k7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTdGVwPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgaXNWYWxpZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgcG9saWN5U2NoZW1hJD86IE9ic2VydmFibGU8R2lvSnNvblNjaGVtYSB8IG51bGwgfCB1bmRlZmluZWQ+O1xuICBwdWJsaWMgcG9saWN5RG9jdW1lbnRhdGlvbiQ/OiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgcHVibGljIHN0ZXBGb3JtPzogVW50eXBlZEZvcm1Hcm91cDtcblxuICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcG9saWN5U3R1ZGlvU2VydmljZTogR2lvUG9saWN5U3R1ZGlvU2VydmljZSkge31cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnBvbGljeSkge1xuICAgICAgdGhpcy5wb2xpY3lTY2hlbWEkID0gdGhpcy5wb2xpY3lTdHVkaW9TZXJ2aWNlLmdldFBvbGljeVNjaGVtYSh0aGlzLnBvbGljeSkucGlwZShcbiAgICAgICAgbWFwKHNjaGVtYSA9PiB7XG4gICAgICAgICAgaWYgKEdpb0Zvcm1Kc29uU2NoZW1hQ29tcG9uZW50LmlzRGlzcGxheWFibGUoc2NoZW1hIGFzIEdpb0pzb25TY2hlbWEpKSB7XG4gICAgICAgICAgICByZXR1cm4gc2NoZW1hIGFzIEdpb0pzb25TY2hlbWE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgfSksXG4gICAgICApO1xuXG4gICAgICB0aGlzLnBvbGljeURvY3VtZW50YXRpb24kID0gdGhpcy5wb2xpY3lTdHVkaW9TZXJ2aWNlXG4gICAgICAgIC5nZXRQb2xpY3lEb2N1bWVudGF0aW9uKHRoaXMucG9saWN5KVxuICAgICAgICAucGlwZShtYXAoZG9jID0+IChpc0VtcHR5KGRvYykgPyAnTm8gZG9jdW1lbnRhdGlvbiBhdmFpbGFibGUuJyA6IGRvYykpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0U3RlcEZvcm0oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlJC5uZXh0KCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFN0ZXBGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuc3RlcEZvcm0gPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7XG4gICAgICBkZXNjcmlwdGlvbjogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh0aGlzLnN0ZXA/LmRlc2NyaXB0aW9uKSxcbiAgICAgIGNvbmRpdGlvbjogbmV3IFVudHlwZWRGb3JtQ29udHJvbCh0aGlzLnN0ZXA/LmNvbmRpdGlvbiksXG4gICAgICBjb25maWd1cmF0aW9uOiBuZXcgVW50eXBlZEZvcm1Db250cm9sKHRoaXMuc3RlcD8uY29uZmlndXJhdGlvbiA/PyB7fSksXG4gICAgfSk7XG5cbiAgICB0aGlzLnN0ZXBGb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnN0ZXBDaGFuZ2UuZW1pdCh7XG4gICAgICAgIC4uLnRoaXMuc3RlcCxcbiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuc3RlcEZvcm0/LmdldCgnZGVzY3JpcHRpb24nKT8udmFsdWUsXG4gICAgICAgIGNvbmRpdGlvbjogdGhpcy5zdGVwRm9ybT8uZ2V0KCdjb25kaXRpb24nKT8udmFsdWUgPz8gdW5kZWZpbmVkLFxuICAgICAgICBjb25maWd1cmF0aW9uOiB0aGlzLnN0ZXBGb3JtPy5nZXQoJ2NvbmZpZ3VyYXRpb24nKT8udmFsdWUsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuc3RlcEZvcm0uc3RhdHVzQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSh2YWxpZCA9PiB7XG4gICAgICB0aGlzLmlzVmFsaWQuZW1pdCh2YWxpZCA9PT0gJ1ZBTElEJyk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25Kc29uU2NoZW1hUmVhZHkoaXNSZWFkeTogYm9vbGVhbikge1xuICAgIC8vIFdoZW4gcmVhZHkgYW5kIGlmIHRoZSBmb3JtIGlzIHZhbGlkLCBlbWl0XG4gICAgaWYgKGlzUmVhZHkgJiYgdGhpcy5zdGVwRm9ybT8uc3RhdHVzID09PSAnVkFMSUQnKSB7XG4gICAgICB0aGlzLmlzVmFsaWQuZW1pdCh0cnVlKTtcbiAgICB9XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAyMyBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICAgIFxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgIFxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuXG48ZGl2IGNsYXNzPVwic2V0dGluZ3NcIj5cbiAgPGRpdiBjbGFzcz1cInNldHRpbmdzX19oZWFkZXJcIj5TZXR0aW5nczwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJzZXR0aW5nc19fY29udGVudFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdGVwRm9ybSAmJiAocG9saWN5U2NoZW1hJCB8IGFzeW5jKSBhcyBwb2xpY3lTY2hlbWE7IGVsc2UgbG9hZGluZ1RtcGxcIiBbZm9ybUdyb3VwXT1cInN0ZXBGb3JtXCI+XG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtbGFiZWw+RGVzY3JpcHRpb248L21hdC1sYWJlbD5cbiAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCIgY2RrRm9jdXNJbml0aWFsPjwvdGV4dGFyZWE+XG4gICAgICAgIDxtYXQtaGludD5EZXNjcmliZSBob3cgeW91ciBwb2xpY3kgd29ya3MuPC9tYXQtaGludD5cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1sYWJlbD5UcmlnZ2VyIGNvbmRpdGlvbjwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiY29uZGl0aW9uXCIgLz5cbiAgICAgICAgPG1hdC1oaW50PlRoZSBjb25kaXRpb24gdG8gZXhlY3V0ZSB0aGlzIHBvbGljeS4gU3VwcG9ydHMgRXhwcmVzc2lvbiBMYW5ndWFnZS48L21hdC1oaW50PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPGdpby1mb3JtLWpzb24tc2NoZW1hXG4gICAgICAgICpuZ0lmPVwicG9saWN5U2NoZW1hXCJcbiAgICAgICAgW2pzb25TY2hlbWFdPVwiJGFueShwb2xpY3lTY2hlbWEpXCJcbiAgICAgICAgKHJlYWR5KT1cIm9uSnNvblNjaGVtYVJlYWR5KCRldmVudClcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb25maWd1cmF0aW9uXCJcbiAgICAgID48L2dpby1mb3JtLWpzb24tc2NoZW1hPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZG9jdW1lbnRhdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnRhdGlvbl9faGVhZGVyXCI+RG9jdW1lbnRhdGlvbjwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJkb2N1bWVudGF0aW9uX19jb250ZW50XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBvbGljeURvY3VtZW50YXRpb24kIHwgYXN5bmMgYXMgcG9saWN5RG9jdW1lbnRhdGlvbjsgZWxzZSBsb2FkaW5nVG1wbFwiPlxuICAgICAgPGdpby1hc2NpaWRvY3RvciBbY29udGVudF09XCJwb2xpY3lEb2N1bWVudGF0aW9uXCI+PC9naW8tYXNjaWlkb2N0b3I+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RtcGw+XG4gIDxnaW8tbG9hZGVyPjwvZ2lvLWxvYWRlcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=