ng-configcat-publicapi-ui 2.13.2 → 3.0.1

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 (53) hide show
  1. package/esm2020/lib/_directives/input-display-normalizer.directive.mjs +4 -4
  2. package/esm2020/lib/_models/deleteSettingModel.mjs +2 -0
  3. package/esm2020/lib/_models/index.mjs +2 -1
  4. package/esm2020/lib/_services/public-api.service.mjs +4 -4
  5. package/esm2020/lib/_services/setting-list-form-helper.mjs +4 -4
  6. package/esm2020/lib/authorization/authorization.component.mjs +5 -5
  7. package/esm2020/lib/base/base.component.mjs +4 -4
  8. package/esm2020/lib/configuration.mjs +4 -4
  9. package/esm2020/lib/dialogs/delete-setting-dialog/delete-setting-dialog.component.mjs +27 -0
  10. package/esm2020/lib/dialogs/expand-dialog/expand-dialog.component.mjs +6 -5
  11. package/esm2020/lib/dialogs/reason-dialog/reason-dialog.component.mjs +5 -5
  12. package/esm2020/lib/dialogs/save-snackbar/save-snackbar.component.mjs +4 -4
  13. package/esm2020/lib/ng-configcat-publicapi-ui.module.mjs +13 -11
  14. package/esm2020/lib/selects/config-select/config-select.component.mjs +6 -6
  15. package/esm2020/lib/selects/environment-select/environment-select.component.mjs +5 -5
  16. package/esm2020/lib/selects/product-select/product-select.component.mjs +4 -4
  17. package/esm2020/lib/selects/setting-select/setting-select.component.mjs +5 -5
  18. package/esm2020/lib/setting-item/setting-item.component.mjs +7 -18
  19. package/esm2020/lib/setting-list/setting/rollout-percentage-items/rollout-percentage-items.component.mjs +9 -9
  20. package/esm2020/lib/setting-list/setting/rollout-rules/rollout-rules.component.mjs +5 -5
  21. package/esm2020/lib/setting-list/setting/setting.component.mjs +7 -17
  22. package/esm2020/lib/setting-list/setting/value/value.component.mjs +4 -4
  23. package/esm2020/lib/setting-list/setting-list.component.mjs +9 -40
  24. package/esm2020/public-api.mjs +2 -1
  25. package/fesm2015/ng-configcat-publicapi-ui.mjs +121 -167
  26. package/fesm2015/ng-configcat-publicapi-ui.mjs.map +1 -1
  27. package/fesm2020/ng-configcat-publicapi-ui.mjs +119 -167
  28. package/fesm2020/ng-configcat-publicapi-ui.mjs.map +1 -1
  29. package/lib/_directives/input-display-normalizer.directive.d.ts +1 -1
  30. package/lib/_models/deleteSettingModel.d.ts +6 -0
  31. package/lib/_models/index.d.ts +1 -0
  32. package/lib/authorization/authorization.component.d.ts +1 -1
  33. package/lib/base/base.component.d.ts +1 -1
  34. package/lib/dialogs/delete-setting-dialog/delete-setting-dialog.component.d.ts +17 -0
  35. package/lib/dialogs/expand-dialog/expand-dialog.component.d.ts +1 -1
  36. package/lib/dialogs/reason-dialog/reason-dialog.component.d.ts +1 -1
  37. package/lib/dialogs/save-snackbar/save-snackbar.component.d.ts +1 -1
  38. package/lib/ng-configcat-publicapi-ui.module.d.ts +4 -4
  39. package/lib/selects/config-select/config-select.component.d.ts +1 -1
  40. package/lib/selects/environment-select/environment-select.component.d.ts +1 -1
  41. package/lib/selects/product-select/product-select.component.d.ts +1 -1
  42. package/lib/selects/setting-select/setting-select.component.d.ts +1 -1
  43. package/lib/setting-item/setting-item.component.d.ts +2 -4
  44. package/lib/setting-list/setting/rollout-percentage-items/rollout-percentage-items.component.d.ts +1 -1
  45. package/lib/setting-list/setting/rollout-rules/rollout-rules.component.d.ts +1 -1
  46. package/lib/setting-list/setting/setting.component.d.ts +5 -9
  47. package/lib/setting-list/setting/value/value.component.d.ts +1 -1
  48. package/lib/setting-list/setting-list.component.d.ts +8 -9
  49. package/package.json +4 -4
  50. package/public-api.d.ts +1 -0
  51. package/public-api.scss +125 -0
  52. package/esm2020/lib/dialogs/concurrent-dialog/concurrent-dialog.component.mjs +0 -25
  53. package/lib/dialogs/concurrent-dialog/concurrent-dialog.component.d.ts +0 -12
@@ -11,16 +11,13 @@ import * as i7 from "./rollout-percentage-items/rollout-percentage-items.compone
11
11
  import * as i8 from "./rollout-rules/rollout-rules.component";
12
12
  import * as i9 from "./value/value.component";
13
13
  export class SettingComponent {
14
- constructor(formHelper, cdRef) {
14
+ constructor(formHelper) {
15
15
  this.formHelper = formHelper;
16
- this.cdRef = cdRef;
17
16
  this.dashboardBasePath = 'https://app.configcat.com';
18
17
  this.readOnly = false;
19
- this.canEditSetting = false;
20
18
  this.canDeleteSetting = false;
21
19
  this.deleteSettingText = 'Delete setting';
22
20
  this.showEnvironmentName = false;
23
- this.editSettingRequested = new EventEmitter();
24
21
  this.deleteSettingRequested = new EventEmitter();
25
22
  this.rulesBeingRendered = false;
26
23
  this.SettingType = SettingType;
@@ -101,9 +98,6 @@ export class SettingComponent {
101
98
  this.rolloutPercentageItems().clear();
102
99
  this.rolloutPercentageItems().markAsDirty();
103
100
  }
104
- editSetting() {
105
- this.editSettingRequested.emit({ setting: this.setting() });
106
- }
107
101
  deleteSetting() {
108
102
  this.deleteSettingRequested.emit({ setting: this.setting() });
109
103
  }
@@ -111,12 +105,12 @@ export class SettingComponent {
111
105
  return this.dashboardBasePath + '/' + this.productId + '/' + this.configId + '/' + this.environmentId + '?settingId=' + this.setting().settingId;
112
106
  }
113
107
  }
114
- SettingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SettingComponent, deps: [{ token: i1.SettingListFormHelper }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
115
- SettingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: SettingComponent, selector: "setting", inputs: { dashboardBasePath: "dashboardBasePath", productId: "productId", environmentId: "environmentId", configId: "configId", formGroup: "formGroup", readOnly: "readOnly", canEditSetting: "canEditSetting", canDeleteSetting: "canDeleteSetting", deleteSettingText: "deleteSettingText", showEnvironmentName: "showEnvironmentName", segments: "segments" }, outputs: { editSettingRequested: "editSettingRequested", deleteSettingRequested: "deleteSettingRequested" }, ngImport: i0, template: "<div class=\"setting-full\" [formGroup]=\"formGroup\">\n <div class=\"delete\" (click)=\"deleteSetting()\" *ngIf=\"canDeleteSetting\" [matTooltip]=\"deleteSettingText\"\n data-robot=\"deleteSetting\">\n <mat-icon>cancel</mat-icon>\n </div>\n <div class=\"setting-header flex\">\n <div class=\"setting-name flex\">\n <div class=\"name\" data-robot=\"settingName\">\n {{setting().name}}\n <span *ngIf=\"showEnvironmentName\"> ({{environment().name}})</span>\n </div>\n <div class=\"edit\" matTooltip=\"Edit name and description\" (click)=\"editSetting()\" *ngIf=\"canEditSetting\"\n data-robot=\"renameSetting\">\n <mat-icon>edit</mat-icon>\n </div>\n </div>\n </div>\n <div class=\"setting-content\">\n <div class=\"setting-details\">\n <div class=\"setting-key\"><code data-robot=\"settingKey\">{{setting().key}}</code></div>\n <span *ngIf=\"setting().hint\" class=\"description\">{{setting().hint}}</span>\n <div class=\"open\"><a [href]=\"getDashboardUrl()\" target=\"_blank\" rel=\"noopener noreferrer\">Open in ConfigCat</a>\n </div>\n </div>\n\n <div class=\"rules-list\">\n <div>\n <configcat-rollout-rules *ngIf=\"rolloutRules().controls.length !== 0\" [formGroup]=\"formGroup\"\n [segments]=\"segments\">\n </configcat-rollout-rules>\n </div>\n\n <configcat-rollout-percentage-items *ngIf=\"rolloutPercentageItems().controls.length !== 0\"\n [formGroup]=\"formGroup\">\n </configcat-rollout-percentage-items>\n\n <div class=\"all-other flex\">\n <div *ngIf=\"rolloutPercentageItems().length === 0 && rolloutRules().length !== 0\"\n matTooltip=\"This value will be served to all users who the above rules don't apply.\"\n matTooltipPosition=\"above\">\n <mat-chip-list>\n <mat-chip class=\"chip\">To all other users, serve:</mat-chip>\n </mat-chip-list>\n </div>\n <div *ngIf=\"rolloutPercentageItems().length !== 0\"\n matTooltip=\"This fallback value will be served in case the user can't be identified.\"\n matTooltipPosition=\"above\">\n <mat-chip-list>\n <mat-chip class=\"chip\">To unidentified users, serve:</mat-chip>\n </mat-chip-list>\n </div>\n <div *ngIf=\"rolloutPercentageItems().length === 0 && rolloutRules().length === 0\">\n <mat-chip-list>\n <mat-chip class=\"chip\">To all users, serve:</mat-chip>\n </mat-chip-list>\n </div>\n <configcat-value class=\"served-value\" [valueFormControl]=\"value()\" [setting]=\"setting()\">\n </configcat-value>\n </div>\n <div class=\"buttons\">\n <button type=\"button\" class=\"sige-button targeting-button\" (click)=\"addRolloutRule()\" *ngIf=\"!readOnly\">\n {{rolloutRules().length === 0 ? 'Target specific users' : 'Add new targeting rule'}}\n </button>\n <button type=\"button\" class=\"sige-button targeting-button\" (click)=\"addSegmentRolloutRule()\" *ngIf=\"!readOnly\">\n {{rolloutRules().length === 0 ? 'Target segment' : 'Target new segment'}}\n </button>\n <button type=\"button\" class=\"sige-button targeting-button\" (click)=\"addRolloutPercentageItem()\"\n *ngIf=\"!readOnly\"\n [disabled]=\"setting().settingType === SettingType.Boolean && rolloutPercentageItems().length !== 0\">\n {{rolloutPercentageItems().length === 0 ? 'Target % of users' : 'Add new % option'}}\n </button>\n </div>\n </div>\n </div>\n</div>", styles: [".setting-full{position:relative;display:flex;flex-wrap:nowrap;flex-direction:column}.setting-full .delete{position:absolute;right:-10px;top:-10px;color:#ed5251;background-color:#fff;border-radius:50%;height:20px;width:20px;cursor:pointer}.setting-full .delete mat-icon{font-size:20px;height:20px;width:20px;opacity:.5}.setting-full .delete:hover mat-icon{opacity:1}.setting-full .setting-header{padding:1.5em .8em 0 1em}.setting-full .setting-header .setting-name{flex-direction:row}.setting-full .setting-header .setting-name:hover>.edit{visibility:visible}.setting-full .setting-header .setting-name .name{font-weight:700;word-wrap:break-word;max-width:100%}.setting-full .setting-header .setting-name .edit{margin:5px 0 0 5px;cursor:pointer;visibility:hidden;color:gray}.setting-full .setting-header .setting-name .edit:hover{visibility:visible}.setting-full .setting-header .setting-name .edit mat-icon{font-size:18px}.setting-full .setting-header .setting-meta{margin-left:auto;margin-right:14px;font-size:.7em;color:gray}.setting-full .setting-content{display:flex}.setting-full .setting-content .setting-details{display:flex;flex-direction:column;width:400px;padding:0 0 .5em .5em}.setting-full .setting-content .setting-details>*{margin:.5em}.setting-full .setting-content .setting-details .open{font-size:14px}.setting-full .setting-content .setting-details .integrations{font-size:.8rem}.setting-full .setting-content .setting-details .integrations>div{margin:3px}.setting-full .setting-content .setting-details .integrations>div>a:hover{text-decoration:underline}.setting-full .setting-content .setting-details .setting-key{word-wrap:break-word}.setting-full .setting-content .setting-details .description{font-size:.8em;white-space:pre-wrap;word-wrap:break-word;max-width:300px}.setting-full .setting-content .setting-details code{background-color:#d3d3d3;padding:3px 6px}.setting-full .setting-content .rules-list{width:100%;padding:0 .3em .3em 1em}.setting-full .setting-content .targeting-button{margin-left:.5rem;margin-right:.5rem;margin-bottom:1.5em;text-transform:uppercase}.all-other{min-height:40px;justify-content:flex-start;border:1px solid #d5d5d5;background-color:#fff;margin:.5em 1em;padding:4px 0 4px .5em}.all-other .chip{background-color:#67b1fc3d}.all-other .served-value{margin-left:auto;margin-top:3px;margin-bottom:3px}.end{margin-left:auto}.buttons{display:flex;margin-left:.5rem;margin-right:.5rem}.buttons .updated-date{font-size:.7em;margin-left:auto;margin-right:22px;color:gray}.flex{display:flex;flex-wrap:wrap;align-items:center}.show-hide-toggle{margin-left:1em;cursor:pointer}.show-hide-toggle a{font-size:.8rem}.sige-button{background-color:#d9eadc;color:#363636;cursor:pointer;justify-content:center;padding:.375em .75em;text-align:center;white-space:nowrap;font-size:.75rem;border:1px solid #dbdbdb;box-shadow:none;display:inline-flex;font-family:Montserrat,Roboto,Helvetica Neue,sans-serif}.sige-button:hover{background-color:#bad0be}.sige-button:disabled{background-color:#fff;color:#b3b3b3}.mat-chip{font-size:12px}@media (max-width: 1200px){.setting-details{width:300px!important}}@media (max-width: 920px){.setting-full .setting-content{flex-wrap:wrap}.setting-full .setting-content .rules-list{padding:0}.setting-full .setting-content .targeting-button{margin-bottom:.5em;margin-top:.5em;padding:.6em 0}.colorbar{min-width:5px}.buttons{flex-direction:column;margin-bottom:.5em;margin-left:.4em;margin-right:.4em}.created-date,.updated-date{display:none}.setting-details{width:100%!important;padding:.2em 0 .2em .2em}.setting-details .description{max-width:none!important}.rollout-rules{margin-bottom:1em}.all-other{margin:1em;padding:7px 0 7px .5em}.all-other .served-value{margin:7px 7px 4px auto}}@media (max-width: 380px){.mat-standard-chip{min-height:auto!important;height:auto!important}.mat-chip-list-wrapper{padding-right:7px}.sige-button{font-size:.65rem}}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i6.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: i6.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: i7.RolloutPercentageItemsComponent, selector: "configcat-rollout-percentage-items", inputs: ["formGroup", "readOnly"] }, { kind: "component", type: i8.RolloutRulesComponent, selector: "configcat-rollout-rules", inputs: ["formGroup", "readOnly", "segments"] }, { kind: "component", type: i9.ValueComponent, selector: "configcat-value", inputs: ["valueFormControl", "setting"] }] });
116
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SettingComponent, decorators: [{
108
+ SettingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SettingComponent, deps: [{ token: i1.SettingListFormHelper }], target: i0.ɵɵFactoryTarget.Component });
109
+ SettingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: SettingComponent, selector: "setting", inputs: { dashboardBasePath: "dashboardBasePath", productId: "productId", environmentId: "environmentId", configId: "configId", formGroup: "formGroup", readOnly: "readOnly", canDeleteSetting: "canDeleteSetting", deleteSettingText: "deleteSettingText", showEnvironmentName: "showEnvironmentName", segments: "segments" }, outputs: { deleteSettingRequested: "deleteSettingRequested" }, ngImport: i0, template: "<div class=\"setting-full\" [formGroup]=\"formGroup\">\n <div class=\"delete\" (click)=\"deleteSetting()\" *ngIf=\"canDeleteSetting\" [matTooltip]=\"deleteSettingText\"\n data-robot=\"deleteSetting\">\n <mat-icon>cancel</mat-icon>\n </div>\n <div class=\"setting-header flex\">\n <div class=\"setting-name flex\">\n <div class=\"name\" data-robot=\"settingName\">\n {{setting().name}}\n <span *ngIf=\"showEnvironmentName\"> ({{environment().name}})</span>\n </div>\n </div>\n </div>\n <div class=\"setting-content\">\n <div class=\"setting-details\">\n <div class=\"setting-key\"><code data-robot=\"settingKey\">{{setting().key}}</code></div>\n <span *ngIf=\"setting().hint\" class=\"description\">{{setting().hint}}</span>\n <div class=\"open\"><a [href]=\"getDashboardUrl()\" target=\"_blank\" rel=\"noopener noreferrer\">Open in ConfigCat</a>\n </div>\n </div>\n\n <div class=\"rules-list\">\n <div>\n <configcat-rollout-rules *ngIf=\"rolloutRules().controls.length !== 0\" [formGroup]=\"formGroup\"\n [segments]=\"segments\">\n </configcat-rollout-rules>\n </div>\n\n <configcat-rollout-percentage-items *ngIf=\"rolloutPercentageItems().controls.length !== 0\"\n [formGroup]=\"formGroup\">\n </configcat-rollout-percentage-items>\n\n <div class=\"all-other flex\">\n <div *ngIf=\"rolloutPercentageItems().length === 0 && rolloutRules().length !== 0\"\n matTooltip=\"This value will be served to all users who the above rules don't apply.\"\n matTooltipPosition=\"above\">\n <mat-chip-set>\n <mat-chip class=\"chip\">To all other users, serve:</mat-chip>\n </mat-chip-set>\n </div>\n <div *ngIf=\"rolloutPercentageItems().length !== 0\"\n matTooltip=\"This fallback value will be served in case the user can't be identified.\"\n matTooltipPosition=\"above\">\n <mat-chip-set>\n <mat-chip class=\"chip\">To unidentified users, serve:</mat-chip>\n </mat-chip-set>\n </div>\n <div *ngIf=\"rolloutPercentageItems().length === 0 && rolloutRules().length === 0\">\n <mat-chip-set>\n <mat-chip class=\"chip\">To all users, serve:</mat-chip>\n </mat-chip-set>\n </div>\n <configcat-value class=\"served-value\" [valueFormControl]=\"value()\" [setting]=\"setting()\">\n </configcat-value>\n </div>\n <div class=\"buttons\">\n <button type=\"button\" class=\"sige-button targeting-button\" (click)=\"addRolloutRule()\" *ngIf=\"!readOnly\">\n {{rolloutRules().length === 0 ? 'Target specific users' : 'Add new targeting rule'}}\n </button>\n <button type=\"button\" class=\"sige-button targeting-button\" (click)=\"addSegmentRolloutRule()\" *ngIf=\"!readOnly\">\n {{rolloutRules().length === 0 ? 'Target segment' : 'Target new segment'}}\n </button>\n <button type=\"button\" class=\"sige-button targeting-button\" (click)=\"addRolloutPercentageItem()\"\n *ngIf=\"!readOnly\"\n [disabled]=\"setting().settingType === SettingType.Boolean && rolloutPercentageItems().length !== 0\">\n {{rolloutPercentageItems().length === 0 ? 'Target % of users' : 'Add new % option'}}\n </button>\n </div>\n </div>\n </div>\n</div>", styles: [".setting-full{position:relative;display:flex;flex-wrap:nowrap;flex-direction:column}.setting-full .delete{position:absolute;right:-10px;top:-10px;color:#ed5251;background-color:#fff;border-radius:50%;height:20px;width:20px;cursor:pointer}.setting-full .delete mat-icon{font-size:20px;height:20px;width:20px;opacity:.5}.setting-full .delete:hover mat-icon{opacity:1}.setting-full .setting-header{padding:1.5em .8em 0 1em}.setting-full .setting-header .setting-name{flex-direction:row}.setting-full .setting-header .setting-name:hover>.edit{visibility:visible}.setting-full .setting-header .setting-name .name{font-weight:700;word-wrap:break-word;max-width:100%}.setting-full .setting-header .setting-name .edit{margin:5px 0 0 5px;cursor:pointer;visibility:hidden;color:gray}.setting-full .setting-header .setting-name .edit:hover{visibility:visible}.setting-full .setting-header .setting-name .edit mat-icon{font-size:18px}.setting-full .setting-header .setting-meta{margin-left:auto;margin-right:14px;font-size:.7em;color:gray}.setting-full .setting-content{display:flex}.setting-full .setting-content .setting-details{display:flex;flex-direction:column;width:400px;padding:0 0 .5em .5em}.setting-full .setting-content .setting-details>*{margin:.5em}.setting-full .setting-content .setting-details .open{font-size:14px}.setting-full .setting-content .setting-details .integrations{font-size:.8rem}.setting-full .setting-content .setting-details .integrations>div{margin:3px}.setting-full .setting-content .setting-details .integrations>div>a:hover{text-decoration:underline}.setting-full .setting-content .setting-details .setting-key{word-wrap:break-word}.setting-full .setting-content .setting-details .description{font-size:.8em;white-space:pre-wrap;word-wrap:break-word;max-width:300px}.setting-full .setting-content .setting-details code{background-color:#d3d3d3;padding:3px 6px}.setting-full .setting-content .rules-list{width:100%;padding:0 .3em .3em 1em}.setting-full .setting-content .targeting-button{margin-left:.5rem;margin-right:.5rem;margin-bottom:1.5em;text-transform:uppercase}.all-other{min-height:40px;justify-content:flex-start;border:1px solid #d5d5d5;background-color:#fff;margin:.5em 1em;padding:4px 0 4px .5em}.all-other .chip{font-size:12px;background-color:#67b1fc3d}.all-other .served-value{margin-left:auto;margin-top:3px;margin-bottom:3px}.end{margin-left:auto}.buttons{display:flex;margin-left:.5rem;margin-right:.5rem}.buttons .updated-date{font-size:.7em;margin-left:auto;margin-right:22px;color:gray}.flex{display:flex;flex-wrap:wrap;align-items:center}.show-hide-toggle{margin-left:1em;cursor:pointer}.show-hide-toggle a{font-size:.8rem}.sige-button{background-color:#d9eadc;color:#363636;cursor:pointer;justify-content:center;padding:.375em .75em;text-align:center;white-space:nowrap;font-size:.75rem;border:1px solid #dbdbdb;box-shadow:none;display:inline-flex;font-family:Montserrat,Roboto,Helvetica Neue,sans-serif}.sige-button:hover{background-color:#bad0be}.sige-button:disabled{background-color:#fff;color:#b3b3b3}@media (max-width: 1200px){.setting-details{width:300px!important}}@media (max-width: 920px){.setting-full .setting-content{flex-wrap:wrap}.setting-full .setting-content .rules-list{padding:0}.setting-full .setting-content .targeting-button{margin-bottom:.5em;margin-top:.5em;padding:.6em 0}.colorbar{min-width:5px}.buttons{flex-direction:column;margin-bottom:.5em;margin-left:.4em;margin-right:.4em}.created-date,.updated-date{display:none}.setting-details{width:100%!important;padding:.2em 0 .2em .2em}.setting-details .description{max-width:none!important}.rollout-rules{margin-bottom:1em}.all-other{margin:1em;padding:7px 0 7px .5em}.all-other .served-value{margin:7px 7px 4px auto}}@media (max-width: 380px){.mat-mdc-standard-chip{min-height:auto!important;height:auto!important}.mat-chip-list-wrapper{padding-right:7px}.sige-button{font-size:.65rem}}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i6.MatChip, selector: "mat-basic-chip, mat-chip", inputs: ["color", "disabled", "disableRipple", "tabIndex", "role", "id", "aria-label", "aria-description", "value", "removable", "highlighted"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i6.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role"] }, { kind: "component", type: i7.RolloutPercentageItemsComponent, selector: "configcat-rollout-percentage-items", inputs: ["formGroup", "readOnly"] }, { kind: "component", type: i8.RolloutRulesComponent, selector: "configcat-rollout-rules", inputs: ["formGroup", "readOnly", "segments"] }, { kind: "component", type: i9.ValueComponent, selector: "configcat-value", inputs: ["valueFormControl", "setting"] }] });
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SettingComponent, decorators: [{
117
111
  type: Component,
118
- args: [{ selector: 'setting', template: "<div class=\"setting-full\" [formGroup]=\"formGroup\">\n <div class=\"delete\" (click)=\"deleteSetting()\" *ngIf=\"canDeleteSetting\" [matTooltip]=\"deleteSettingText\"\n data-robot=\"deleteSetting\">\n <mat-icon>cancel</mat-icon>\n </div>\n <div class=\"setting-header flex\">\n <div class=\"setting-name flex\">\n <div class=\"name\" data-robot=\"settingName\">\n {{setting().name}}\n <span *ngIf=\"showEnvironmentName\"> ({{environment().name}})</span>\n </div>\n <div class=\"edit\" matTooltip=\"Edit name and description\" (click)=\"editSetting()\" *ngIf=\"canEditSetting\"\n data-robot=\"renameSetting\">\n <mat-icon>edit</mat-icon>\n </div>\n </div>\n </div>\n <div class=\"setting-content\">\n <div class=\"setting-details\">\n <div class=\"setting-key\"><code data-robot=\"settingKey\">{{setting().key}}</code></div>\n <span *ngIf=\"setting().hint\" class=\"description\">{{setting().hint}}</span>\n <div class=\"open\"><a [href]=\"getDashboardUrl()\" target=\"_blank\" rel=\"noopener noreferrer\">Open in ConfigCat</a>\n </div>\n </div>\n\n <div class=\"rules-list\">\n <div>\n <configcat-rollout-rules *ngIf=\"rolloutRules().controls.length !== 0\" [formGroup]=\"formGroup\"\n [segments]=\"segments\">\n </configcat-rollout-rules>\n </div>\n\n <configcat-rollout-percentage-items *ngIf=\"rolloutPercentageItems().controls.length !== 0\"\n [formGroup]=\"formGroup\">\n </configcat-rollout-percentage-items>\n\n <div class=\"all-other flex\">\n <div *ngIf=\"rolloutPercentageItems().length === 0 && rolloutRules().length !== 0\"\n matTooltip=\"This value will be served to all users who the above rules don't apply.\"\n matTooltipPosition=\"above\">\n <mat-chip-list>\n <mat-chip class=\"chip\">To all other users, serve:</mat-chip>\n </mat-chip-list>\n </div>\n <div *ngIf=\"rolloutPercentageItems().length !== 0\"\n matTooltip=\"This fallback value will be served in case the user can't be identified.\"\n matTooltipPosition=\"above\">\n <mat-chip-list>\n <mat-chip class=\"chip\">To unidentified users, serve:</mat-chip>\n </mat-chip-list>\n </div>\n <div *ngIf=\"rolloutPercentageItems().length === 0 && rolloutRules().length === 0\">\n <mat-chip-list>\n <mat-chip class=\"chip\">To all users, serve:</mat-chip>\n </mat-chip-list>\n </div>\n <configcat-value class=\"served-value\" [valueFormControl]=\"value()\" [setting]=\"setting()\">\n </configcat-value>\n </div>\n <div class=\"buttons\">\n <button type=\"button\" class=\"sige-button targeting-button\" (click)=\"addRolloutRule()\" *ngIf=\"!readOnly\">\n {{rolloutRules().length === 0 ? 'Target specific users' : 'Add new targeting rule'}}\n </button>\n <button type=\"button\" class=\"sige-button targeting-button\" (click)=\"addSegmentRolloutRule()\" *ngIf=\"!readOnly\">\n {{rolloutRules().length === 0 ? 'Target segment' : 'Target new segment'}}\n </button>\n <button type=\"button\" class=\"sige-button targeting-button\" (click)=\"addRolloutPercentageItem()\"\n *ngIf=\"!readOnly\"\n [disabled]=\"setting().settingType === SettingType.Boolean && rolloutPercentageItems().length !== 0\">\n {{rolloutPercentageItems().length === 0 ? 'Target % of users' : 'Add new % option'}}\n </button>\n </div>\n </div>\n </div>\n</div>", styles: [".setting-full{position:relative;display:flex;flex-wrap:nowrap;flex-direction:column}.setting-full .delete{position:absolute;right:-10px;top:-10px;color:#ed5251;background-color:#fff;border-radius:50%;height:20px;width:20px;cursor:pointer}.setting-full .delete mat-icon{font-size:20px;height:20px;width:20px;opacity:.5}.setting-full .delete:hover mat-icon{opacity:1}.setting-full .setting-header{padding:1.5em .8em 0 1em}.setting-full .setting-header .setting-name{flex-direction:row}.setting-full .setting-header .setting-name:hover>.edit{visibility:visible}.setting-full .setting-header .setting-name .name{font-weight:700;word-wrap:break-word;max-width:100%}.setting-full .setting-header .setting-name .edit{margin:5px 0 0 5px;cursor:pointer;visibility:hidden;color:gray}.setting-full .setting-header .setting-name .edit:hover{visibility:visible}.setting-full .setting-header .setting-name .edit mat-icon{font-size:18px}.setting-full .setting-header .setting-meta{margin-left:auto;margin-right:14px;font-size:.7em;color:gray}.setting-full .setting-content{display:flex}.setting-full .setting-content .setting-details{display:flex;flex-direction:column;width:400px;padding:0 0 .5em .5em}.setting-full .setting-content .setting-details>*{margin:.5em}.setting-full .setting-content .setting-details .open{font-size:14px}.setting-full .setting-content .setting-details .integrations{font-size:.8rem}.setting-full .setting-content .setting-details .integrations>div{margin:3px}.setting-full .setting-content .setting-details .integrations>div>a:hover{text-decoration:underline}.setting-full .setting-content .setting-details .setting-key{word-wrap:break-word}.setting-full .setting-content .setting-details .description{font-size:.8em;white-space:pre-wrap;word-wrap:break-word;max-width:300px}.setting-full .setting-content .setting-details code{background-color:#d3d3d3;padding:3px 6px}.setting-full .setting-content .rules-list{width:100%;padding:0 .3em .3em 1em}.setting-full .setting-content .targeting-button{margin-left:.5rem;margin-right:.5rem;margin-bottom:1.5em;text-transform:uppercase}.all-other{min-height:40px;justify-content:flex-start;border:1px solid #d5d5d5;background-color:#fff;margin:.5em 1em;padding:4px 0 4px .5em}.all-other .chip{background-color:#67b1fc3d}.all-other .served-value{margin-left:auto;margin-top:3px;margin-bottom:3px}.end{margin-left:auto}.buttons{display:flex;margin-left:.5rem;margin-right:.5rem}.buttons .updated-date{font-size:.7em;margin-left:auto;margin-right:22px;color:gray}.flex{display:flex;flex-wrap:wrap;align-items:center}.show-hide-toggle{margin-left:1em;cursor:pointer}.show-hide-toggle a{font-size:.8rem}.sige-button{background-color:#d9eadc;color:#363636;cursor:pointer;justify-content:center;padding:.375em .75em;text-align:center;white-space:nowrap;font-size:.75rem;border:1px solid #dbdbdb;box-shadow:none;display:inline-flex;font-family:Montserrat,Roboto,Helvetica Neue,sans-serif}.sige-button:hover{background-color:#bad0be}.sige-button:disabled{background-color:#fff;color:#b3b3b3}.mat-chip{font-size:12px}@media (max-width: 1200px){.setting-details{width:300px!important}}@media (max-width: 920px){.setting-full .setting-content{flex-wrap:wrap}.setting-full .setting-content .rules-list{padding:0}.setting-full .setting-content .targeting-button{margin-bottom:.5em;margin-top:.5em;padding:.6em 0}.colorbar{min-width:5px}.buttons{flex-direction:column;margin-bottom:.5em;margin-left:.4em;margin-right:.4em}.created-date,.updated-date{display:none}.setting-details{width:100%!important;padding:.2em 0 .2em .2em}.setting-details .description{max-width:none!important}.rollout-rules{margin-bottom:1em}.all-other{margin:1em;padding:7px 0 7px .5em}.all-other .served-value{margin:7px 7px 4px auto}}@media (max-width: 380px){.mat-standard-chip{min-height:auto!important;height:auto!important}.mat-chip-list-wrapper{padding-right:7px}.sige-button{font-size:.65rem}}\n"] }]
119
- }], ctorParameters: function () { return [{ type: i1.SettingListFormHelper }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { dashboardBasePath: [{
112
+ args: [{ selector: 'setting', template: "<div class=\"setting-full\" [formGroup]=\"formGroup\">\n <div class=\"delete\" (click)=\"deleteSetting()\" *ngIf=\"canDeleteSetting\" [matTooltip]=\"deleteSettingText\"\n data-robot=\"deleteSetting\">\n <mat-icon>cancel</mat-icon>\n </div>\n <div class=\"setting-header flex\">\n <div class=\"setting-name flex\">\n <div class=\"name\" data-robot=\"settingName\">\n {{setting().name}}\n <span *ngIf=\"showEnvironmentName\"> ({{environment().name}})</span>\n </div>\n </div>\n </div>\n <div class=\"setting-content\">\n <div class=\"setting-details\">\n <div class=\"setting-key\"><code data-robot=\"settingKey\">{{setting().key}}</code></div>\n <span *ngIf=\"setting().hint\" class=\"description\">{{setting().hint}}</span>\n <div class=\"open\"><a [href]=\"getDashboardUrl()\" target=\"_blank\" rel=\"noopener noreferrer\">Open in ConfigCat</a>\n </div>\n </div>\n\n <div class=\"rules-list\">\n <div>\n <configcat-rollout-rules *ngIf=\"rolloutRules().controls.length !== 0\" [formGroup]=\"formGroup\"\n [segments]=\"segments\">\n </configcat-rollout-rules>\n </div>\n\n <configcat-rollout-percentage-items *ngIf=\"rolloutPercentageItems().controls.length !== 0\"\n [formGroup]=\"formGroup\">\n </configcat-rollout-percentage-items>\n\n <div class=\"all-other flex\">\n <div *ngIf=\"rolloutPercentageItems().length === 0 && rolloutRules().length !== 0\"\n matTooltip=\"This value will be served to all users who the above rules don't apply.\"\n matTooltipPosition=\"above\">\n <mat-chip-set>\n <mat-chip class=\"chip\">To all other users, serve:</mat-chip>\n </mat-chip-set>\n </div>\n <div *ngIf=\"rolloutPercentageItems().length !== 0\"\n matTooltip=\"This fallback value will be served in case the user can't be identified.\"\n matTooltipPosition=\"above\">\n <mat-chip-set>\n <mat-chip class=\"chip\">To unidentified users, serve:</mat-chip>\n </mat-chip-set>\n </div>\n <div *ngIf=\"rolloutPercentageItems().length === 0 && rolloutRules().length === 0\">\n <mat-chip-set>\n <mat-chip class=\"chip\">To all users, serve:</mat-chip>\n </mat-chip-set>\n </div>\n <configcat-value class=\"served-value\" [valueFormControl]=\"value()\" [setting]=\"setting()\">\n </configcat-value>\n </div>\n <div class=\"buttons\">\n <button type=\"button\" class=\"sige-button targeting-button\" (click)=\"addRolloutRule()\" *ngIf=\"!readOnly\">\n {{rolloutRules().length === 0 ? 'Target specific users' : 'Add new targeting rule'}}\n </button>\n <button type=\"button\" class=\"sige-button targeting-button\" (click)=\"addSegmentRolloutRule()\" *ngIf=\"!readOnly\">\n {{rolloutRules().length === 0 ? 'Target segment' : 'Target new segment'}}\n </button>\n <button type=\"button\" class=\"sige-button targeting-button\" (click)=\"addRolloutPercentageItem()\"\n *ngIf=\"!readOnly\"\n [disabled]=\"setting().settingType === SettingType.Boolean && rolloutPercentageItems().length !== 0\">\n {{rolloutPercentageItems().length === 0 ? 'Target % of users' : 'Add new % option'}}\n </button>\n </div>\n </div>\n </div>\n</div>", styles: [".setting-full{position:relative;display:flex;flex-wrap:nowrap;flex-direction:column}.setting-full .delete{position:absolute;right:-10px;top:-10px;color:#ed5251;background-color:#fff;border-radius:50%;height:20px;width:20px;cursor:pointer}.setting-full .delete mat-icon{font-size:20px;height:20px;width:20px;opacity:.5}.setting-full .delete:hover mat-icon{opacity:1}.setting-full .setting-header{padding:1.5em .8em 0 1em}.setting-full .setting-header .setting-name{flex-direction:row}.setting-full .setting-header .setting-name:hover>.edit{visibility:visible}.setting-full .setting-header .setting-name .name{font-weight:700;word-wrap:break-word;max-width:100%}.setting-full .setting-header .setting-name .edit{margin:5px 0 0 5px;cursor:pointer;visibility:hidden;color:gray}.setting-full .setting-header .setting-name .edit:hover{visibility:visible}.setting-full .setting-header .setting-name .edit mat-icon{font-size:18px}.setting-full .setting-header .setting-meta{margin-left:auto;margin-right:14px;font-size:.7em;color:gray}.setting-full .setting-content{display:flex}.setting-full .setting-content .setting-details{display:flex;flex-direction:column;width:400px;padding:0 0 .5em .5em}.setting-full .setting-content .setting-details>*{margin:.5em}.setting-full .setting-content .setting-details .open{font-size:14px}.setting-full .setting-content .setting-details .integrations{font-size:.8rem}.setting-full .setting-content .setting-details .integrations>div{margin:3px}.setting-full .setting-content .setting-details .integrations>div>a:hover{text-decoration:underline}.setting-full .setting-content .setting-details .setting-key{word-wrap:break-word}.setting-full .setting-content .setting-details .description{font-size:.8em;white-space:pre-wrap;word-wrap:break-word;max-width:300px}.setting-full .setting-content .setting-details code{background-color:#d3d3d3;padding:3px 6px}.setting-full .setting-content .rules-list{width:100%;padding:0 .3em .3em 1em}.setting-full .setting-content .targeting-button{margin-left:.5rem;margin-right:.5rem;margin-bottom:1.5em;text-transform:uppercase}.all-other{min-height:40px;justify-content:flex-start;border:1px solid #d5d5d5;background-color:#fff;margin:.5em 1em;padding:4px 0 4px .5em}.all-other .chip{font-size:12px;background-color:#67b1fc3d}.all-other .served-value{margin-left:auto;margin-top:3px;margin-bottom:3px}.end{margin-left:auto}.buttons{display:flex;margin-left:.5rem;margin-right:.5rem}.buttons .updated-date{font-size:.7em;margin-left:auto;margin-right:22px;color:gray}.flex{display:flex;flex-wrap:wrap;align-items:center}.show-hide-toggle{margin-left:1em;cursor:pointer}.show-hide-toggle a{font-size:.8rem}.sige-button{background-color:#d9eadc;color:#363636;cursor:pointer;justify-content:center;padding:.375em .75em;text-align:center;white-space:nowrap;font-size:.75rem;border:1px solid #dbdbdb;box-shadow:none;display:inline-flex;font-family:Montserrat,Roboto,Helvetica Neue,sans-serif}.sige-button:hover{background-color:#bad0be}.sige-button:disabled{background-color:#fff;color:#b3b3b3}@media (max-width: 1200px){.setting-details{width:300px!important}}@media (max-width: 920px){.setting-full .setting-content{flex-wrap:wrap}.setting-full .setting-content .rules-list{padding:0}.setting-full .setting-content .targeting-button{margin-bottom:.5em;margin-top:.5em;padding:.6em 0}.colorbar{min-width:5px}.buttons{flex-direction:column;margin-bottom:.5em;margin-left:.4em;margin-right:.4em}.created-date,.updated-date{display:none}.setting-details{width:100%!important;padding:.2em 0 .2em .2em}.setting-details .description{max-width:none!important}.rollout-rules{margin-bottom:1em}.all-other{margin:1em;padding:7px 0 7px .5em}.all-other .served-value{margin:7px 7px 4px auto}}@media (max-width: 380px){.mat-mdc-standard-chip{min-height:auto!important;height:auto!important}.mat-chip-list-wrapper{padding-right:7px}.sige-button{font-size:.65rem}}\n"] }]
113
+ }], ctorParameters: function () { return [{ type: i1.SettingListFormHelper }]; }, propDecorators: { dashboardBasePath: [{
120
114
  type: Input
121
115
  }], productId: [{
122
116
  type: Input
@@ -128,8 +122,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
128
122
  type: Input
129
123
  }], readOnly: [{
130
124
  type: Input
131
- }], canEditSetting: [{
132
- type: Input
133
125
  }], canDeleteSetting: [{
134
126
  type: Input
135
127
  }], deleteSettingText: [{
@@ -138,9 +130,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
138
130
  type: Input
139
131
  }], segments: [{
140
132
  type: Input
141
- }], editSettingRequested: [{
142
- type: Output
143
133
  }], deleteSettingRequested: [{
144
134
  type: Output
145
135
  }] } });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb25maWdjYXQtcHVibGljYXBpLXVpL3NyYy9saWIvc2V0dGluZy1saXN0L3NldHRpbmcvc2V0dGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb25maWdjYXQtcHVibGljYXBpLXVpL3NyYy9saWIvc2V0dGluZy1saXN0L3NldHRpbmcvc2V0dGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUVsRyxPQUFPLEVBQThCLHFCQUFxQixFQUFvQixpQkFBaUIsRUFBb0IsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7O0FBUS9KLE1BQU0sT0FBTyxnQkFBZ0I7SUFzQjNCLFlBQW9CLFVBQWlDLEVBQzNDLEtBQXdCO1FBRGQsZUFBVSxHQUFWLFVBQVUsQ0FBdUI7UUFDM0MsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFyQnpCLHNCQUFpQixHQUFHLDJCQUEyQixDQUFDO1FBTWhELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLHNCQUFpQixHQUFHLGdCQUFnQixDQUFDO1FBQ3JDLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUczQix5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzFDLDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFdEQsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRTNCLGdCQUFXLEdBQUcsV0FBVyxDQUFDO0lBR1ksQ0FBQztJQUV2QyxRQUFRLEtBQUssQ0FBQztJQUVk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LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAsIFVudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJvbGxvdXRQZXJjZW50YWdlSXRlbU1vZGVsLCBSb2xsb3V0UnVsZUNvbXBhcmF0b3IsIFJvbGxvdXRSdWxlTW9kZWwsIFNlZ21lbnRDb21wYXJhdG9yLCBTZWdtZW50TGlzdE1vZGVsLCBTZXR0aW5nVHlwZSB9IGZyb20gJ25nLWNvbmZpZ2NhdC1wdWJsaWNhcGknO1xuaW1wb3J0IHsgU2V0dGluZ0xpc3RGb3JtSGVscGVyIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzL3NldHRpbmctbGlzdC1mb3JtLWhlbHBlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NldHRpbmcnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2V0dGluZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NldHRpbmcuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZXR0aW5nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKSBkYXNoYm9hcmRCYXNlUGF0aCA9ICdodHRwczovL2FwcC5jb25maWdjYXQuY29tJztcbiAgQElucHV0KCkgcHJvZHVjdElkITogc3RyaW5nO1xuICBASW5wdXQoKSBlbnZpcm9ubWVudElkITogc3RyaW5nO1xuICBASW5wdXQoKSBjb25maWdJZCE6IHN0cmluZztcblxuICBASW5wdXQoKSBmb3JtR3JvdXAhOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBASW5wdXQoKSByZWFkT25seSA9IGZhbHNlO1xuICBASW5wdXQoKSBjYW5FZGl0U2V0dGluZyA9IGZhbHNlO1xuICBASW5wdXQoKSBjYW5EZWxldGVTZXR0aW5nID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRlbGV0ZVNldHRpbmdUZXh0ID0gJ0RlbGV0ZSBzZXR0aW5nJztcbiAgQElucHV0KCkgc2hvd0Vudmlyb25tZW50TmFtZSA9IGZhbHNlO1xuICBASW5wdXQoKSBzZWdtZW50cyE6IFNlZ21lbnRMaXN0TW9kZWxbXTtcblxuICBAT3V0cHV0KCkgZWRpdFNldHRpbmdSZXF1ZXN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBkZWxldGVTZXR0aW5nUmVxdWVzdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHJ1bGVzQmVpbmdSZW5kZXJlZCA9IGZhbHNlO1xuXG4gIFNldHRpbmdUeXBlID0gU2V0dGluZ1R5cGU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmb3JtSGVscGVyOiBTZXR0aW5nTGlzdEZvcm1IZWxwZXIsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxuXG4gIG5nT25Jbml0KCkgeyB9XG5cbiAgZW52aXJvbm1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLnJvb3QuZ2V0KCdlbnZpcm9ubWVudCcpPy52YWx1ZTtcbiAgfVxuXG4gIHNldHRpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgnc2V0dGluZycpPy52YWx1ZTtcbiAgfVxuXG4gIGludGVncmF0aW9uTGlua3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgnaW50ZWdyYXRpb25MaW5rcycpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gIH1cblxuICByb2xsb3V0UnVsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgncm9sbG91dFJ1bGVzJykgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgfVxuXG4gIHJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgncm9sbG91dFBlcmNlbnRhZ2VJdGVtcycpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gIH1cblxuICB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KCd2YWx1ZScpIGFzIFVudHlwZWRGb3JtQ29udHJvbDtcbiAgfVxuXG4gIGFkZFJvbGxvdXRSdWxlKCkge1xuICAgIHRoaXMucm9sbG91dFJ1bGVzKCkucHVzaCh0aGlzLmZvcm1IZWxwZXIuY3JlYXRlUm9sbG91dFJ1bGVGb3JtR3JvdXAoXG4gICAgICA8Um9sbG91dFJ1bGVNb2RlbD57XG4gICAgICAgIGNvbXBhcmlzb25BdHRyaWJ1dGU6ICdJZGVudGlmaWVyJyxcbiAgICAgICAgY29tcGFyYXRvcjogUm9sbG91dFJ1bGVDb21wYXJhdG9yLlNlbnNpdGl2ZUlzT25lT2YsXG4gICAgICAgIGNvbXBhcmlzb25WYWx1ZTogJycsXG4gICAgICAgIHZhbHVlOiB0aGlzLnNldHRpbmcoKS5zZXR0aW5nVHlwZSA9PT0gU2V0dGluZ1R5cGUuQm9vbGVhbiA/IGZhbHNlIGFzIHVua25vd24gOiBudWxsXG4gICAgICB9LFxuICAgICAgdGhpcy5yZWFkT25seSwgdGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUpKTtcbiAgICB0aGlzLnJvbGxvdXRSdWxlcygpLm1hcmtBc0RpcnR5KCk7XG4gIH1cblxuICBhZGRTZWdtZW50Um9sbG91dFJ1bGUoKSB7XG4gICAgdGhpcy5yb2xsb3V0UnVsZXMoKS5wdXNoKHRoaXMuZm9ybUhlbHBlci5jcmVhdGVSb2xsb3V0UnVsZUZvcm1Hcm91cChcbiAgICAgIDxSb2xsb3V0UnVsZU1vZGVsPntcbiAgICAgICAgc2VnbWVudENvbXBhcmF0b3I6IFNlZ21lbnRDb21wYXJhdG9yLklzSW4sXG4gICAgICAgIHZhbHVlOiB0aGlzLnNldHRpbmcoKS5zZXR0aW5nVHlwZSA9PT0gU2V0dGluZ1R5cGUuQm9vbGVhbiA/IGZhbHNlIGFzIHVua25vd24gOiBudWxsXG4gICAgICB9LFxuICAgICAgdGhpcy5yZWFkT25seSwgdGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUpKTtcbiAgICB0aGlzLnJvbGxvdXRSdWxlcygpLm1hcmtBc0RpcnR5KCk7XG4gIH1cblxuICByZW1vdmVSb2xsb3V0UnVsZXMoKSB7XG4gICAgdGhpcy5yb2xsb3V0UnVsZXMoKS5jbGVhcigpO1xuICAgIHRoaXMucm9sbG91dFJ1bGVzKCkubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIGFkZFJvbGxvdXRQZXJjZW50YWdlSXRlbSgpIHtcblxuICAgIGlmICh0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHN3aXRjaCAodGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUpIHtcbiAgICAgICAgY2FzZSBTZXR0aW5nVHlwZS5Cb29sZWFuOlxuICAgICAgICAgIHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLnB1c2godGhpcy5mb3JtSGVscGVyLmNyZWF0ZVJvbGxvdXRQZXJjZW50YWdlSXRlbUZvcm1Hcm91cChcbiAgICAgICAgICAgIDxSb2xsb3V0UGVyY2VudGFnZUl0ZW1Nb2RlbD57XG4gICAgICAgICAgICAgIHBlcmNlbnRhZ2U6IDAsXG4gICAgICAgICAgICAgIHZhbHVlOiB0cnVlIGFzIHVua25vd25cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLnJlYWRPbmx5LCB0aGlzLnNldHRpbmcoKS5zZXR0aW5nVHlwZSkpO1xuICAgICAgICAgIHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLnB1c2godGhpcy5mb3JtSGVscGVyLmNyZWF0ZVJvbGxvdXRQZXJjZW50YWdlSXRlbUZvcm1Hcm91cChcbiAgICAgICAgICAgIDxSb2xsb3V0UGVyY2VudGFnZUl0ZW1Nb2RlbD57XG4gICAgICAgICAgICAgIHBlcmNlbnRhZ2U6IDEwMCxcbiAgICAgICAgICAgICAgdmFsdWU6IGZhbHNlIGFzIHVua25vd25cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGlzLnJlYWRPbmx5LCB0aGlzLnNldHRpbmcoKS5zZXR0aW5nVHlwZSkpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgU2V0dGluZ1R5cGUuU3RyaW5nOlxuICAgICAgICBjYXNlIFNldHRpbmdUeXBlLkludDpcbiAgICAgICAgY2FzZSBTZXR0aW5nVHlwZS5Eb3VibGU6XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLnB1c2godGhpcy5mb3JtSGVscGVyLmNyZWF0ZVJvbGxvdXRQZXJjZW50YWdlSXRlbUZvcm1Hcm91cChcbiAgICAgICAgICAgICAgPFJvbGxvdXRQZXJjZW50YWdlSXRlbU1vZGVsPntcbiAgICAgICAgICAgICAgICBwZXJjZW50YWdlOiAyNSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB0aGlzLnJlYWRPbmx5LCB0aGlzLnNldHRpbmcoKS5zZXR0aW5nVHlwZSkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUgIT09IFNldHRpbmdUeXBlLkJvb2xlYW4pIHtcbiAgICAgIHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLnB1c2godGhpcy5mb3JtSGVscGVyLmNyZWF0ZVJvbGxvdXRQZXJjZW50YWdlSXRlbUZvcm1Hcm91cChcbiAgICAgICAgPFJvbGxvdXRQZXJjZW50YWdlSXRlbU1vZGVsPntcbiAgICAgICAgICBwZXJjZW50YWdlOiAwLFxuICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMucmVhZE9ubHksIHRoaXMuc2V0dGluZygpLnNldHRpbmdUeXBlKSk7XG4gICAgfVxuXG4gICAgdGhpcy5yb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIHJlbW92ZVJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKSB7XG4gICAgdGhpcy5yb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkuY2xlYXIoKTtcbiAgICB0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5tYXJrQXNEaXJ0eSgpO1xuICB9XG5cbiAgZWRpdFNldHRpbmcoKSB7XG4gICAgdGhpcy5lZGl0U2V0dGluZ1JlcXVlc3RlZC5lbWl0KHsgc2V0dGluZzogdGhpcy5zZXR0aW5nKCkgfSk7XG4gIH1cblxuICBkZWxldGVTZXR0aW5nKCkge1xuICAgIHRoaXMuZGVsZXRlU2V0dGluZ1JlcXVlc3RlZC5lbWl0KHsgc2V0dGluZzogdGhpcy5zZXR0aW5nKCkgfSk7XG4gIH1cblxuICBnZXREYXNoYm9hcmRVcmwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGFzaGJvYXJkQmFzZVBhdGggKyAnLycgKyB0aGlzLnByb2R1Y3RJZCArICcvJyArIHRoaXMuY29uZmlnSWQgKyAnLycgKyB0aGlzLmVudmlyb25tZW50SWQgKyAnP3NldHRpbmdJZD0nICsgdGhpcy5zZXR0aW5nKCkuc2V0dGluZ0lkO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2V0dGluZy1mdWxsXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgPGRpdiBjbGFzcz1cImRlbGV0ZVwiIChjbGljayk9XCJkZWxldGVTZXR0aW5nKClcIiAqbmdJZj1cImNhbkRlbGV0ZVNldHRpbmdcIiBbbWF0VG9vbHRpcF09XCJkZWxldGVTZXR0aW5nVGV4dFwiXG4gICAgZGF0YS1yb2JvdD1cImRlbGV0ZVNldHRpbmdcIj5cbiAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJzZXR0aW5nLWhlYWRlciBmbGV4XCI+XG4gICAgPGRpdiBjbGFzcz1cInNldHRpbmctbmFtZSBmbGV4XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibmFtZVwiIGRhdGEtcm9ib3Q9XCJzZXR0aW5nTmFtZVwiPlxuICAgICAgICB7e3NldHRpbmcoKS5uYW1lfX1cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJzaG93RW52aXJvbm1lbnROYW1lXCI+ICh7e2Vudmlyb25tZW50KCkubmFtZX19KTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImVkaXRcIiBtYXRUb29sdGlwPVwiRWRpdCBuYW1lIGFuZCBkZXNjcmlwdGlvblwiIChjbGljayk9XCJlZGl0U2V0dGluZygpXCIgKm5nSWY9XCJjYW5FZGl0U2V0dGluZ1wiXG4gICAgICAgIGRhdGEtcm9ib3Q9XCJyZW5hbWVTZXR0aW5nXCI+XG4gICAgICAgIDxtYXQtaWNvbj5lZGl0PC9tYXQtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInNldHRpbmctY29udGVudFwiPlxuICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5nLWRldGFpbHNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZXR0aW5nLWtleVwiPjxjb2RlIGRhdGEtcm9ib3Q9XCJzZXR0aW5nS2V5XCI+e3tzZXR0aW5nKCkua2V5fX08L2NvZGU+PC9kaXY+XG4gICAgICA8c3BhbiAqbmdJZj1cInNldHRpbmcoKS5oaW50XCIgY2xhc3M9XCJkZXNjcmlwdGlvblwiPnt7c2V0dGluZygpLmhpbnR9fTwvc3Bhbj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvcGVuXCI+PGEgW2hyZWZdPVwiZ2V0RGFzaGJvYXJkVXJsKClcIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+T3BlbiBpbiBDb25maWdDYXQ8L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJydWxlcy1saXN0XCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8Y29uZmlnY2F0LXJvbGxvdXQtcnVsZXMgKm5nSWY9XCJyb2xsb3V0UnVsZXMoKS5jb250cm9scy5sZW5ndGggIT09IDBcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4gICAgICAgICAgW3NlZ21lbnRzXT1cInNlZ21lbnRzXCI+XG4gICAgICAgIDwvY29uZmlnY2F0LXJvbGxvdXQtcnVsZXM+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGNvbmZpZ2NhdC1yb2xsb3V0LXBlcmNlbnRhZ2UtaXRlbXMgKm5nSWY9XCJyb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkuY29udHJvbHMubGVuZ3RoICE9PSAwXCJcbiAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgICAgIDwvY29uZmlnY2F0LXJvbGxvdXQtcGVyY2VudGFnZS1pdGVtcz5cblxuICAgICAgPGRpdiBjbGFzcz1cImFsbC1vdGhlciBmbGV4XCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJyb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkubGVuZ3RoID09PSAwICYmIHJvbGxvdXRSdWxlcygpLmxlbmd0aCAhPT0gMFwiXG4gICAgICAgICAgbWF0VG9vbHRpcD1cIlRoaXMgdmFsdWUgd2lsbCBiZSBzZXJ2ZWQgdG8gYWxsIHVzZXJzIHdobyB0aGUgYWJvdmUgcnVsZXMgZG9uJ3QgYXBwbHkuXCJcbiAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiPlxuICAgICAgICAgIDxtYXQtY2hpcC1saXN0PlxuICAgICAgICAgICAgPG1hdC1jaGlwIGNsYXNzPVwiY2hpcFwiPlRvIGFsbCBvdGhlciB1c2Vycywgc2VydmU6PC9tYXQtY2hpcD5cbiAgICAgICAgICA8L21hdC1jaGlwLWxpc3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLmxlbmd0aCAhPT0gMFwiXG4gICAgICAgICAgbWF0VG9vbHRpcD1cIlRoaXMgZmFsbGJhY2sgdmFsdWUgd2lsbCBiZSBzZXJ2ZWQgaW4gY2FzZSB0aGUgdXNlciBjYW4ndCBiZSBpZGVudGlmaWVkLlwiXG4gICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIj5cbiAgICAgICAgICA8bWF0LWNoaXAtbGlzdD5cbiAgICAgICAgICAgIDxtYXQtY2hpcCBjbGFzcz1cImNoaXBcIj5UbyB1bmlkZW50aWZpZWQgdXNlcnMsIHNlcnZlOjwvbWF0LWNoaXA+XG4gICAgICAgICAgPC9tYXQtY2hpcC1saXN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5sZW5ndGggPT09IDAgJiYgcm9sbG91dFJ1bGVzKCkubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgPG1hdC1jaGlwLWxpc3Q+XG4gICAgICAgICAgICA8bWF0LWNoaXAgY2xhc3M9XCJjaGlwXCI+VG8gYWxsIHVzZXJzLCBzZXJ2ZTo8L21hdC1jaGlwPlxuICAgICAgICAgIDwvbWF0LWNoaXAtbGlzdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxjb25maWdjYXQtdmFsdWUgY2xhc3M9XCJzZXJ2ZWQtdmFsdWVcIiBbdmFsdWVGb3JtQ29udHJvbF09XCJ2YWx1ZSgpXCIgW3NldHRpbmddPVwic2V0dGluZygpXCI+XG4gICAgICAgIDwvY29uZmlnY2F0LXZhbHVlPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInNpZ2UtYnV0dG9uIHRhcmdldGluZy1idXR0b25cIiAoY2xpY2spPVwiYWRkUm9sbG91dFJ1bGUoKVwiICpuZ0lmPVwiIXJlYWRPbmx5XCI+XG4gICAgICAgICAge3tyb2xsb3V0UnVsZXMoKS5sZW5ndGggPT09IDAgPyAnVGFyZ2V0IHNwZWNpZmljIHVzZXJzJyA6ICdBZGQgbmV3IHRhcmdldGluZyBydWxlJ319XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInNpZ2UtYnV0dG9uIHRhcmdldGluZy1idXR0b25cIiAoY2xpY2spPVwiYWRkU2VnbWVudFJvbGxvdXRSdWxlKClcIiAqbmdJZj1cIiFyZWFkT25seVwiPlxuICAgICAgICAgIHt7cm9sbG91dFJ1bGVzKCkubGVuZ3RoID09PSAwID8gJ1RhcmdldCBzZWdtZW50JyA6ICdUYXJnZXQgbmV3IHNlZ21lbnQnfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwic2lnZS1idXR0b24gdGFyZ2V0aW5nLWJ1dHRvblwiIChjbGljayk9XCJhZGRSb2xsb3V0UGVyY2VudGFnZUl0ZW0oKVwiXG4gICAgICAgICAgKm5nSWY9XCIhcmVhZE9ubHlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJzZXR0aW5nKCkuc2V0dGluZ1R5cGUgPT09IFNldHRpbmdUeXBlLkJvb2xlYW4gJiYgcm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLmxlbmd0aCAhPT0gMFwiPlxuICAgICAgICAgIHt7cm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLmxlbmd0aCA9PT0gMCA/ICdUYXJnZXQgJSBvZiB1c2VycycgOiAnQWRkIG5ldyAlIG9wdGlvbid9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb25maWdjYXQtcHVibGljYXBpLXVpL3NyYy9saWIvc2V0dGluZy1saXN0L3NldHRpbmcvc2V0dGluZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb25maWdjYXQtcHVibGljYXBpLXVpL3NyYy9saWIvc2V0dGluZy1saXN0L3NldHRpbmcvc2V0dGluZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBOEIscUJBQXFCLEVBQW9CLGlCQUFpQixFQUFrQyxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFRN0ssTUFBTSxPQUFPLGdCQUFnQjtJQW9CM0IsWUFBb0IsVUFBaUM7UUFBakMsZUFBVSxHQUFWLFVBQVUsQ0FBdUI7UUFsQjVDLHNCQUFpQixHQUFHLDJCQUEyQixDQUFDO1FBTWhELGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLHNCQUFpQixHQUFHLGdCQUFnQixDQUFDO1FBQ3JDLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUczQiwyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXRELHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUUzQixnQkFBVyxHQUFHLFdBQVcsQ0FBQztJQUUrQixDQUFDO0lBRTFELFFBQVEsS0FBSyxDQUFDO0lBRWQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUN2RCxDQUFDO0lBRUQsT0FBTztR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LE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFDbkosQ0FBQzs7NkdBbklVLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLDhhQ1Y3QiwwMUdBc0VNOzJGRDVETyxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsU0FBUzs0R0FNVixpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksc0JBQXNCO3NCQUEvQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCwgVW50eXBlZEZvcm1BcnJheSwgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm9sbG91dFBlcmNlbnRhZ2VJdGVtTW9kZWwsIFJvbGxvdXRSdWxlQ29tcGFyYXRvciwgUm9sbG91dFJ1bGVNb2RlbCwgU2VnbWVudENvbXBhcmF0b3IsIFNlZ21lbnRMaXN0TW9kZWwsIFNldHRpbmdNb2RlbCwgU2V0dGluZ1R5cGUgfSBmcm9tICduZy1jb25maWdjYXQtcHVibGljYXBpJztcbmltcG9ydCB7IFNldHRpbmdMaXN0Rm9ybUhlbHBlciB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy9zZXR0aW5nLWxpc3QtZm9ybS1oZWxwZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZXR0aW5nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NldHRpbmcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZXR0aW5nLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2V0dGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgZGFzaGJvYXJkQmFzZVBhdGggPSAnaHR0cHM6Ly9hcHAuY29uZmlnY2F0LmNvbSc7XG4gIEBJbnB1dCgpIHByb2R1Y3RJZCE6IHN0cmluZztcbiAgQElucHV0KCkgZW52aXJvbm1lbnRJZCE6IHN0cmluZztcbiAgQElucHV0KCkgY29uZmlnSWQhOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgZm9ybUdyb3VwITogVW50eXBlZEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcmVhZE9ubHkgPSBmYWxzZTtcbiAgQElucHV0KCkgY2FuRGVsZXRlU2V0dGluZyA9IGZhbHNlO1xuICBASW5wdXQoKSBkZWxldGVTZXR0aW5nVGV4dCA9ICdEZWxldGUgc2V0dGluZyc7XG4gIEBJbnB1dCgpIHNob3dFbnZpcm9ubWVudE5hbWUgPSBmYWxzZTtcbiAgQElucHV0KCkgc2VnbWVudHMhOiBTZWdtZW50TGlzdE1vZGVsW107XG5cbiAgQE91dHB1dCgpIGRlbGV0ZVNldHRpbmdSZXF1ZXN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcnVsZXNCZWluZ1JlbmRlcmVkID0gZmFsc2U7XG5cbiAgU2V0dGluZ1R5cGUgPSBTZXR0aW5nVHlwZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1IZWxwZXI6IFNldHRpbmdMaXN0Rm9ybUhlbHBlcikgeyB9XG5cbiAgbmdPbkluaXQoKSB7IH1cblxuICBlbnZpcm9ubWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAucm9vdC5nZXQoJ2Vudmlyb25tZW50Jyk/LnZhbHVlO1xuICB9XG5cbiAgc2V0dGluZygpIHtcbiAgICByZXR1cm4gPFNldHRpbmdNb2RlbD50aGlzLmZvcm1Hcm91cC5nZXQoJ3NldHRpbmcnKT8udmFsdWU7XG4gIH1cblxuICBpbnRlZ3JhdGlvbkxpbmtzKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ2ludGVncmF0aW9uTGlua3MnKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICB9XG5cbiAgcm9sbG91dFJ1bGVzKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ3JvbGxvdXRSdWxlcycpIGFzIFVudHlwZWRGb3JtQXJyYXk7XG4gIH1cblxuICByb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ3JvbGxvdXRQZXJjZW50YWdlSXRlbXMnKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICB9XG5cbiAgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgndmFsdWUnKSBhcyBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIH1cblxuICBhZGRSb2xsb3V0UnVsZSgpIHtcbiAgICB0aGlzLnJvbGxvdXRSdWxlcygpLnB1c2godGhpcy5mb3JtSGVscGVyLmNyZWF0ZVJvbGxvdXRSdWxlRm9ybUdyb3VwKFxuICAgICAgPFJvbGxvdXRSdWxlTW9kZWw+e1xuICAgICAgICBjb21wYXJpc29uQXR0cmlidXRlOiAnSWRlbnRpZmllcicsXG4gICAgICAgIGNvbXBhcmF0b3I6IFJvbGxvdXRSdWxlQ29tcGFyYXRvci5TZW5zaXRpdmVJc09uZU9mLFxuICAgICAgICBjb21wYXJpc29uVmFsdWU6ICcnLFxuICAgICAgICB2YWx1ZTogdGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUgPT09IFNldHRpbmdUeXBlLkJvb2xlYW4gPyBmYWxzZSBhcyB1bmtub3duIDogbnVsbFxuICAgICAgfSxcbiAgICAgIHRoaXMucmVhZE9ubHksIHRoaXMuc2V0dGluZygpLnNldHRpbmdUeXBlKSk7XG4gICAgdGhpcy5yb2xsb3V0UnVsZXMoKS5tYXJrQXNEaXJ0eSgpO1xuICB9XG5cbiAgYWRkU2VnbWVudFJvbGxvdXRSdWxlKCkge1xuICAgIHRoaXMucm9sbG91dFJ1bGVzKCkucHVzaCh0aGlzLmZvcm1IZWxwZXIuY3JlYXRlUm9sbG91dFJ1bGVGb3JtR3JvdXAoXG4gICAgICA8Um9sbG91dFJ1bGVNb2RlbD57XG4gICAgICAgIHNlZ21lbnRDb21wYXJhdG9yOiBTZWdtZW50Q29tcGFyYXRvci5Jc0luLFxuICAgICAgICB2YWx1ZTogdGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUgPT09IFNldHRpbmdUeXBlLkJvb2xlYW4gPyBmYWxzZSBhcyB1bmtub3duIDogbnVsbFxuICAgICAgfSxcbiAgICAgIHRoaXMucmVhZE9ubHksIHRoaXMuc2V0dGluZygpLnNldHRpbmdUeXBlKSk7XG4gICAgdGhpcy5yb2xsb3V0UnVsZXMoKS5tYXJrQXNEaXJ0eSgpO1xuICB9XG5cbiAgcmVtb3ZlUm9sbG91dFJ1bGVzKCkge1xuICAgIHRoaXMucm9sbG91dFJ1bGVzKCkuY2xlYXIoKTtcbiAgICB0aGlzLnJvbGxvdXRSdWxlcygpLm1hcmtBc0RpcnR5KCk7XG4gIH1cblxuICBhZGRSb2xsb3V0UGVyY2VudGFnZUl0ZW0oKSB7XG5cbiAgICBpZiAodGhpcy5yb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMuc2V0dGluZygpLnNldHRpbmdUeXBlKSB7XG4gICAgICAgIGNhc2UgU2V0dGluZ1R5cGUuQm9vbGVhbjpcbiAgICAgICAgICB0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5wdXNoKHRoaXMuZm9ybUhlbHBlci5jcmVhdGVSb2xsb3V0UGVyY2VudGFnZUl0ZW1Gb3JtR3JvdXAoXG4gICAgICAgICAgICA8Um9sbG91dFBlcmNlbnRhZ2VJdGVtTW9kZWw+e1xuICAgICAgICAgICAgICBwZXJjZW50YWdlOiAwLFxuICAgICAgICAgICAgICB2YWx1ZTogdHJ1ZSBhcyB1bmtub3duXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy5yZWFkT25seSwgdGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUpKTtcbiAgICAgICAgICB0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5wdXNoKHRoaXMuZm9ybUhlbHBlci5jcmVhdGVSb2xsb3V0UGVyY2VudGFnZUl0ZW1Gb3JtR3JvdXAoXG4gICAgICAgICAgICA8Um9sbG91dFBlcmNlbnRhZ2VJdGVtTW9kZWw+e1xuICAgICAgICAgICAgICBwZXJjZW50YWdlOiAxMDAsXG4gICAgICAgICAgICAgIHZhbHVlOiBmYWxzZSBhcyB1bmtub3duXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhpcy5yZWFkT25seSwgdGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUpKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFNldHRpbmdUeXBlLlN0cmluZzpcbiAgICAgICAgY2FzZSBTZXR0aW5nVHlwZS5JbnQ6XG4gICAgICAgIGNhc2UgU2V0dGluZ1R5cGUuRG91YmxlOlxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5wdXNoKHRoaXMuZm9ybUhlbHBlci5jcmVhdGVSb2xsb3V0UGVyY2VudGFnZUl0ZW1Gb3JtR3JvdXAoXG4gICAgICAgICAgICAgIDxSb2xsb3V0UGVyY2VudGFnZUl0ZW1Nb2RlbD57XG4gICAgICAgICAgICAgICAgcGVyY2VudGFnZTogMjUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG51bGxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgdGhpcy5yZWFkT25seSwgdGhpcy5zZXR0aW5nKCkuc2V0dGluZ1R5cGUpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuc2V0dGluZygpLnNldHRpbmdUeXBlICE9PSBTZXR0aW5nVHlwZS5Cb29sZWFuKSB7XG4gICAgICB0aGlzLnJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5wdXNoKHRoaXMuZm9ybUhlbHBlci5jcmVhdGVSb2xsb3V0UGVyY2VudGFnZUl0ZW1Gb3JtR3JvdXAoXG4gICAgICAgIDxSb2xsb3V0UGVyY2VudGFnZUl0ZW1Nb2RlbD57XG4gICAgICAgICAgcGVyY2VudGFnZTogMCxcbiAgICAgICAgICB2YWx1ZTogbnVsbFxuICAgICAgICB9LFxuICAgICAgICB0aGlzLnJlYWRPbmx5LCB0aGlzLnNldHRpbmcoKS5zZXR0aW5nVHlwZSkpO1xuICAgIH1cblxuICAgIHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLm1hcmtBc0RpcnR5KCk7XG4gIH1cblxuICByZW1vdmVSb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkge1xuICAgIHRoaXMucm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLmNsZWFyKCk7XG4gICAgdGhpcy5yb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIGRlbGV0ZVNldHRpbmcoKSB7XG4gICAgdGhpcy5kZWxldGVTZXR0aW5nUmVxdWVzdGVkLmVtaXQoeyBzZXR0aW5nOiB0aGlzLnNldHRpbmcoKSB9KTtcbiAgfVxuXG4gIGdldERhc2hib2FyZFVybCgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXNoYm9hcmRCYXNlUGF0aCArICcvJyArIHRoaXMucHJvZHVjdElkICsgJy8nICsgdGhpcy5jb25maWdJZCArICcvJyArIHRoaXMuZW52aXJvbm1lbnRJZCArICc/c2V0dGluZ0lkPScgKyB0aGlzLnNldHRpbmcoKS5zZXR0aW5nSWQ7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzZXR0aW5nLWZ1bGxcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICA8ZGl2IGNsYXNzPVwiZGVsZXRlXCIgKGNsaWNrKT1cImRlbGV0ZVNldHRpbmcoKVwiICpuZ0lmPVwiY2FuRGVsZXRlU2V0dGluZ1wiIFttYXRUb29sdGlwXT1cImRlbGV0ZVNldHRpbmdUZXh0XCJcbiAgICBkYXRhLXJvYm90PVwiZGVsZXRlU2V0dGluZ1wiPlxuICAgIDxtYXQtaWNvbj5jYW5jZWw8L21hdC1pY29uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInNldHRpbmctaGVhZGVyIGZsZXhcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2V0dGluZy1uYW1lIGZsZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJuYW1lXCIgZGF0YS1yb2JvdD1cInNldHRpbmdOYW1lXCI+XG4gICAgICAgIHt7c2V0dGluZygpLm5hbWV9fVxuICAgICAgICA8c3BhbiAqbmdJZj1cInNob3dFbnZpcm9ubWVudE5hbWVcIj4gKHt7ZW52aXJvbm1lbnQoKS5uYW1lfX0pPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2V0dGluZy1jb250ZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cInNldHRpbmctZGV0YWlsc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInNldHRpbmcta2V5XCI+PGNvZGUgZGF0YS1yb2JvdD1cInNldHRpbmdLZXlcIj57e3NldHRpbmcoKS5rZXl9fTwvY29kZT48L2Rpdj5cbiAgICAgIDxzcGFuICpuZ0lmPVwic2V0dGluZygpLmhpbnRcIiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+e3tzZXR0aW5nKCkuaGludH19PC9zcGFuPlxuICAgICAgPGRpdiBjbGFzcz1cIm9wZW5cIj48YSBbaHJlZl09XCJnZXREYXNoYm9hcmRVcmwoKVwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5PcGVuIGluIENvbmZpZ0NhdDwvYT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInJ1bGVzLWxpc3RcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxjb25maWdjYXQtcm9sbG91dC1ydWxlcyAqbmdJZj1cInJvbGxvdXRSdWxlcygpLmNvbnRyb2xzLmxlbmd0aCAhPT0gMFwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCJcbiAgICAgICAgICBbc2VnbWVudHNdPVwic2VnbWVudHNcIj5cbiAgICAgICAgPC9jb25maWdjYXQtcm9sbG91dC1ydWxlcz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8Y29uZmlnY2F0LXJvbGxvdXQtcGVyY2VudGFnZS1pdGVtcyAqbmdJZj1cInJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5jb250cm9scy5sZW5ndGggIT09IDBcIlxuICAgICAgICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICAgICAgPC9jb25maWdjYXQtcm9sbG91dC1wZXJjZW50YWdlLWl0ZW1zPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiYWxsLW90aGVyIGZsZXhcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInJvbGxvdXRQZXJjZW50YWdlSXRlbXMoKS5sZW5ndGggPT09IDAgJiYgcm9sbG91dFJ1bGVzKCkubGVuZ3RoICE9PSAwXCJcbiAgICAgICAgICBtYXRUb29sdGlwPVwiVGhpcyB2YWx1ZSB3aWxsIGJlIHNlcnZlZCB0byBhbGwgdXNlcnMgd2hvIHRoZSBhYm92ZSBydWxlcyBkb24ndCBhcHBseS5cIlxuICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCI+XG4gICAgICAgICAgPG1hdC1jaGlwLXNldD5cbiAgICAgICAgICAgIDxtYXQtY2hpcCBjbGFzcz1cImNoaXBcIj5UbyBhbGwgb3RoZXIgdXNlcnMsIHNlcnZlOjwvbWF0LWNoaXA+XG4gICAgICAgICAgPC9tYXQtY2hpcC1zZXQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicm9sbG91dFBlcmNlbnRhZ2VJdGVtcygpLmxlbmd0aCAhPT0gMFwiXG4gICAgICAgICAgbWF0VG9vbHRpcD1cIlRoaXMgZmFsbGJhY2sgdmFsdWUgd2lsbCBiZSBzZXJ2ZWQgaW4gY2FzZSB0aGUgdXNlciBjYW4ndCBiZSBpZGVudGlmaWVkLlwiXG4gICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIj5cbiAgICAgICAgICA8bWF0LWNoaXAtc2V0PlxuICAgICAgICAgICAgPG1hdC1jaGlwIGNsYXNzPVwiY2hpcFwiPlRvIHVuaWRlbnRpZmllZCB1c2Vycywgc2VydmU6PC9tYXQtY2hpcD5cbiAgICAgICAgICA8L21hdC1jaGlwLXNldD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJyb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkubGVuZ3RoID09PSAwICYmIHJvbGxvdXRSdWxlcygpLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgIDxtYXQtY2hpcC1zZXQ+XG4gICAgICAgICAgICA8bWF0LWNoaXAgY2xhc3M9XCJjaGlwXCI+VG8gYWxsIHVzZXJzLCBzZXJ2ZTo8L21hdC1jaGlwPlxuICAgICAgICAgIDwvbWF0LWNoaXAtc2V0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGNvbmZpZ2NhdC12YWx1ZSBjbGFzcz1cInNlcnZlZC12YWx1ZVwiIFt2YWx1ZUZvcm1Db250cm9sXT1cInZhbHVlKClcIiBbc2V0dGluZ109XCJzZXR0aW5nKClcIj5cbiAgICAgICAgPC9jb25maWdjYXQtdmFsdWU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zXCI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwic2lnZS1idXR0b24gdGFyZ2V0aW5nLWJ1dHRvblwiIChjbGljayk9XCJhZGRSb2xsb3V0UnVsZSgpXCIgKm5nSWY9XCIhcmVhZE9ubHlcIj5cbiAgICAgICAgICB7e3JvbGxvdXRSdWxlcygpLmxlbmd0aCA9PT0gMCA/ICdUYXJnZXQgc3BlY2lmaWMgdXNlcnMnIDogJ0FkZCBuZXcgdGFyZ2V0aW5nIHJ1bGUnfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwic2lnZS1idXR0b24gdGFyZ2V0aW5nLWJ1dHRvblwiIChjbGljayk9XCJhZGRTZWdtZW50Um9sbG91dFJ1bGUoKVwiICpuZ0lmPVwiIXJlYWRPbmx5XCI+XG4gICAgICAgICAge3tyb2xsb3V0UnVsZXMoKS5sZW5ndGggPT09IDAgPyAnVGFyZ2V0IHNlZ21lbnQnIDogJ1RhcmdldCBuZXcgc2VnbWVudCd9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJzaWdlLWJ1dHRvbiB0YXJnZXRpbmctYnV0dG9uXCIgKGNsaWNrKT1cImFkZFJvbGxvdXRQZXJjZW50YWdlSXRlbSgpXCJcbiAgICAgICAgICAqbmdJZj1cIiFyZWFkT25seVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInNldHRpbmcoKS5zZXR0aW5nVHlwZSA9PT0gU2V0dGluZ1R5cGUuQm9vbGVhbiAmJiByb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkubGVuZ3RoICE9PSAwXCI+XG4gICAgICAgICAge3tyb2xsb3V0UGVyY2VudGFnZUl0ZW1zKCkubGVuZ3RoID09PSAwID8gJ1RhcmdldCAlIG9mIHVzZXJzJyA6ICdBZGQgbmV3ICUgb3B0aW9uJ319XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+Il19
@@ -24,9 +24,9 @@ export class ValueComponent {
24
24
  return FormHelper.formatNumberForDisplay(value);
25
25
  }
26
26
  }
27
- ValueComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ValueComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
28
- ValueComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ValueComponent, selector: "configcat-value", inputs: { valueFormControl: "valueFormControl", setting: "setting" }, ngImport: i0, template: "<div class=\"flex\">\n <div class=\"container\" [ngSwitch]=\"setting.settingType\">\n <div *ngSwitchCase=\"SettingType.String\" class=\"with-validation\">\n <span *ngIf=\"valueFormControl.invalid\" class=\"error\">*</span>\n <input [ngClass]=\"{'invalid': valueFormControl.invalid}\" type=\"text\"\n [formControl]=\"valueFormControl\" placeholder=\"my value\" name=\"value\">\n <div class=\"expand\" (click)=\"popOut()\" matTooltip=\"Pop-out Editor\">\n <mat-icon>height</mat-icon>\n </div>\n </div>\n <div *ngSwitchCase=\"SettingType.Int\" class=\"with-validation\">\n <span *ngIf=\"valueFormControl.invalid\" class=\"error\">*</span>\n <input [ngClass]=\"{'invalid': valueFormControl.invalid}\" type=\"number\" [formControl]=\"valueFormControl\"\n placeholder=\"42\" name=\"value\" />\n </div>\n <div *ngSwitchCase=\"SettingType.Double\" class=\"with-validation\">\n <span *ngIf=\"valueFormControl.invalid\" class=\"error\">*</span>\n <input [ngClass]=\"{'invalid': valueFormControl.invalid}\" type=\"number\" [formControl]=\"valueFormControl\"\n placeholder=\"{{ formatDecimalNumber(3.14) }}\" name=\"value\" inputDisplayNormalizer>\n </div>\n <div *ngSwitchCase=\"SettingType.Boolean\" class=\"toggle\">\n <label class=\"switch\">\n <input type=\"checkbox\" [formControl]=\"valueFormControl\" name=\"value\" />\n <span class=\"slider round\"></span>\n </label>\n </div>\n </div>\n <div *ngIf=\"setting.settingType === SettingType.Boolean\" class=\"spacer\"></div>\n\n</div>\n", styles: [".switch{position:relative;width:66px;height:30px;margin-left:4px;margin-top:0;margin-bottom:0}.switch input{display:none}.slider{position:absolute;cursor:pointer;inset:0;background-color:#ff5252;transition:.4s;width:66px;height:30px}.slider:before{position:absolute;content:\"\";height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;transition:.4s}input:checked+.slider{background-color:#9acd32}input:focus+.slider{box-shadow:0 0 1px #9acd32}input:checked+.slider:before{transform:translate(36px)}.slider.round{border-radius:34px}.slider.round:before{border-radius:50%}.slider:after{content:\"Off\";color:#fff;display:block;position:absolute;transform:translate(-14%,-50%);top:50%;left:50%;font-size:10px;font-family:Verdana,sans-serif}input:checked+.slider:after{content:\"On\";transform:translate(-91%,-50%)}\n", ".flex{display:flex;margin-right:10px;align-items:center}.flex .spacer{min-width:15px}.flex .container .with-validation{display:flex;flex-wrap:nowrap}.flex .container .toggle{width:66px;height:30px}.flex .container input{background-color:#fff;border:1px solid #e5e5e5;min-height:28px;padding:0 30px 0 5px;font-family:Montserrat,Roboto,Helvetica Neue,sans-serif;font-weight:300;min-width:150px;margin:0 3px}.flex .container input[type=number]{padding:0 2px 0 5px}.flex .container .invalid{border:1px solid #ff5252}.flex .container .error{color:#ff5252;margin-right:5px}.flex .variationId{margin:0 4px 0 5px;cursor:pointer;color:#888;display:flex;align-items:center}.flex .expand{position:relative;top:2px;height:24px;cursor:pointer;margin-left:-28px;z-index:1;color:#b3b3b3;background-color:#fff}.flex .expand mat-icon{transform:rotate(45deg)}@media (max-width: 920px){.flex{margin-right:0!important}.flex .spacer{min-width:5px}}@media (max-width: 510px){.flex .container .error{display:none}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { 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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i6.InputDisplayNormalizerDirective, selector: "input[inputDisplayNormalizer]" }] });
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ValueComponent, decorators: [{
27
+ ValueComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ValueComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
28
+ ValueComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: ValueComponent, selector: "configcat-value", inputs: { valueFormControl: "valueFormControl", setting: "setting" }, ngImport: i0, template: "<div class=\"flex\">\n <div class=\"container\" [ngSwitch]=\"setting.settingType\">\n <div *ngSwitchCase=\"SettingType.String\" class=\"with-validation\">\n <span *ngIf=\"valueFormControl.invalid\" class=\"error\">*</span>\n <input [ngClass]=\"{'invalid': valueFormControl.invalid}\" type=\"text\"\n [formControl]=\"valueFormControl\" placeholder=\"my value\" name=\"value\">\n <div class=\"expand\" (click)=\"popOut()\" matTooltip=\"Pop-out Editor\">\n <mat-icon>height</mat-icon>\n </div>\n </div>\n <div *ngSwitchCase=\"SettingType.Int\" class=\"with-validation\">\n <span *ngIf=\"valueFormControl.invalid\" class=\"error\">*</span>\n <input [ngClass]=\"{'invalid': valueFormControl.invalid}\" type=\"number\" [formControl]=\"valueFormControl\"\n placeholder=\"42\" name=\"value\" />\n </div>\n <div *ngSwitchCase=\"SettingType.Double\" class=\"with-validation\">\n <span *ngIf=\"valueFormControl.invalid\" class=\"error\">*</span>\n <input [ngClass]=\"{'invalid': valueFormControl.invalid}\" type=\"number\" [formControl]=\"valueFormControl\"\n placeholder=\"{{ formatDecimalNumber(3.14) }}\" name=\"value\" inputDisplayNormalizer>\n </div>\n <div *ngSwitchCase=\"SettingType.Boolean\" class=\"toggle\">\n <label class=\"switch\">\n <input type=\"checkbox\" [formControl]=\"valueFormControl\" name=\"value\" />\n <span class=\"slider round\"></span>\n </label>\n </div>\n </div>\n <div *ngIf=\"setting.settingType === SettingType.Boolean\" class=\"spacer\"></div>\n\n</div>\n", styles: [".switch{position:relative;width:66px;height:30px;margin-left:4px;margin-top:0;margin-bottom:0}.switch input{display:none}.slider{position:absolute;cursor:pointer;inset:0;background-color:#ff5252;transition:.4s;width:66px;height:30px}.slider:before{position:absolute;content:\"\";height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;transition:.4s}input:checked+.slider{background-color:#9acd32}input:focus+.slider{box-shadow:0 0 1px #9acd32}input:checked+.slider:before{transform:translate(36px)}.slider.round{border-radius:34px}.slider.round:before{border-radius:50%}.slider:after{content:\"Off\";color:#fff;display:block;position:absolute;transform:translate(-14%,-50%);top:50%;left:50%;font-size:10px;font-family:Verdana,sans-serif}input:checked+.slider:after{content:\"On\";transform:translate(-91%,-50%)}\n", ".flex{display:flex;margin-right:10px;align-items:center}.flex .spacer{min-width:15px}.flex .container .with-validation{display:flex;flex-wrap:nowrap}.flex .container .toggle{width:66px;height:30px}.flex .container input{background-color:#fff;border:1px solid #e5e5e5;min-height:28px;padding:0 30px 0 5px;font-family:Montserrat,Roboto,Helvetica Neue,sans-serif;font-weight:300;min-width:150px;margin:0 3px}.flex .container input[type=number]{padding:0 2px 0 5px}.flex .container .invalid{border:1px solid #ff5252}.flex .container .error{color:#ff5252;margin-right:5px}.flex .variationId{margin:0 4px 0 5px;cursor:pointer;color:#888;display:flex;align-items:center}.flex .expand{position:relative;top:2px;height:24px;cursor:pointer;margin-left:-28px;z-index:1;color:#b3b3b3;background-color:#fff}.flex .expand mat-icon{transform:rotate(45deg)}@media (max-width: 920px){.flex{margin-right:0!important}.flex .spacer{min-width:5px}}@media (max-width: 510px){.flex .container .error{display:none}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { 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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i6.InputDisplayNormalizerDirective, selector: "input[inputDisplayNormalizer]" }] });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ValueComponent, decorators: [{
30
30
  type: Component,
31
31
  args: [{ selector: 'configcat-value', template: "<div class=\"flex\">\n <div class=\"container\" [ngSwitch]=\"setting.settingType\">\n <div *ngSwitchCase=\"SettingType.String\" class=\"with-validation\">\n <span *ngIf=\"valueFormControl.invalid\" class=\"error\">*</span>\n <input [ngClass]=\"{'invalid': valueFormControl.invalid}\" type=\"text\"\n [formControl]=\"valueFormControl\" placeholder=\"my value\" name=\"value\">\n <div class=\"expand\" (click)=\"popOut()\" matTooltip=\"Pop-out Editor\">\n <mat-icon>height</mat-icon>\n </div>\n </div>\n <div *ngSwitchCase=\"SettingType.Int\" class=\"with-validation\">\n <span *ngIf=\"valueFormControl.invalid\" class=\"error\">*</span>\n <input [ngClass]=\"{'invalid': valueFormControl.invalid}\" type=\"number\" [formControl]=\"valueFormControl\"\n placeholder=\"42\" name=\"value\" />\n </div>\n <div *ngSwitchCase=\"SettingType.Double\" class=\"with-validation\">\n <span *ngIf=\"valueFormControl.invalid\" class=\"error\">*</span>\n <input [ngClass]=\"{'invalid': valueFormControl.invalid}\" type=\"number\" [formControl]=\"valueFormControl\"\n placeholder=\"{{ formatDecimalNumber(3.14) }}\" name=\"value\" inputDisplayNormalizer>\n </div>\n <div *ngSwitchCase=\"SettingType.Boolean\" class=\"toggle\">\n <label class=\"switch\">\n <input type=\"checkbox\" [formControl]=\"valueFormControl\" name=\"value\" />\n <span class=\"slider round\"></span>\n </label>\n </div>\n </div>\n <div *ngIf=\"setting.settingType === SettingType.Boolean\" class=\"spacer\"></div>\n\n</div>\n", styles: [".switch{position:relative;width:66px;height:30px;margin-left:4px;margin-top:0;margin-bottom:0}.switch input{display:none}.slider{position:absolute;cursor:pointer;inset:0;background-color:#ff5252;transition:.4s;width:66px;height:30px}.slider:before{position:absolute;content:\"\";height:22px;width:22px;left:4px;bottom:4px;background-color:#fff;transition:.4s}input:checked+.slider{background-color:#9acd32}input:focus+.slider{box-shadow:0 0 1px #9acd32}input:checked+.slider:before{transform:translate(36px)}.slider.round{border-radius:34px}.slider.round:before{border-radius:50%}.slider:after{content:\"Off\";color:#fff;display:block;position:absolute;transform:translate(-14%,-50%);top:50%;left:50%;font-size:10px;font-family:Verdana,sans-serif}input:checked+.slider:after{content:\"On\";transform:translate(-91%,-50%)}\n", ".flex{display:flex;margin-right:10px;align-items:center}.flex .spacer{min-width:15px}.flex .container .with-validation{display:flex;flex-wrap:nowrap}.flex .container .toggle{width:66px;height:30px}.flex .container input{background-color:#fff;border:1px solid #e5e5e5;min-height:28px;padding:0 30px 0 5px;font-family:Montserrat,Roboto,Helvetica Neue,sans-serif;font-weight:300;min-width:150px;margin:0 3px}.flex .container input[type=number]{padding:0 2px 0 5px}.flex .container .invalid{border:1px solid #ff5252}.flex .container .error{color:#ff5252;margin-right:5px}.flex .variationId{margin:0 4px 0 5px;cursor:pointer;color:#888;display:flex;align-items:center}.flex .expand{position:relative;top:2px;height:24px;cursor:pointer;margin-left:-28px;z-index:1;color:#b3b3b3;background-color:#fff}.flex .expand mat-icon{transform:rotate(45deg)}@media (max-width: 920px){.flex{margin-right:0!important}.flex .spacer{min-width:5px}}@media (max-width: 510px){.flex .container .error{display:none}}\n"] }]
32
32
  }], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { valueFormControl: [{
@@ -34,4 +34,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
34
34
  }], setting: [{
35
35
  type: Input
36
36
  }] } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29uZmlnY2F0LXB1YmxpY2FwaS11aS9zcmMvbGliL3NldHRpbmctbGlzdC9zZXR0aW5nL3ZhbHVlL3ZhbHVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9zZXR0aW5nLWxpc3Qvc2V0dGluZy92YWx1ZS92YWx1ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYyxNQUFNLGVBQWUsQ0FBQztBQUc3RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUMvRixPQUFPLEVBQWdCLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7QUFVNUQsTUFBTSxPQUFPLGNBQWM7SUFRekIsWUFBb0IsTUFBaUI7UUFBakIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUZyQyxnQkFBVyxHQUFHLFdBQVcsQ0FBQztJQUcxQixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQ3RDLEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtTQUN6QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBYTtRQUMvQixPQUFPLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRCxDQUFDOzs0R0FwQlUsY0FBYztnR0FBZCxjQUFjLDZIQ2YzQiwra0RBOEJBOzRGRGZhLGNBQWM7a0JBUjFCLFNBQVM7K0JBQ0UsaUJBQWlCO2dHQVNsQixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEV4cGFuZERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2RpYWxvZ3MvZXhwYW5kLWRpYWxvZy9leHBhbmQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZXR0aW5nTW9kZWwsIFNldHRpbmdUeXBlIH0gZnJvbSAnbmctY29uZmlnY2F0LXB1YmxpY2FwaSc7XG5pbXBvcnQgeyBGb3JtSGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vX3NlcnZpY2VzL2Zvcm0taGVscGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY29uZmlnY2F0LXZhbHVlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZhbHVlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXG4gICAgJy4vc2xpZGVyLnNjc3MnLFxuICAgICcuL3ZhbHVlLmNvbXBvbmVudC5zY3NzJ1xuICBdXG59KVxuZXhwb3J0IGNsYXNzIFZhbHVlQ29tcG9uZW50IHtcblxuICBASW5wdXQoKSB2YWx1ZUZvcm1Db250cm9sITogVW50eXBlZEZvcm1Db250cm9sO1xuXG4gIEBJbnB1dCgpIHNldHRpbmchOiBTZXR0aW5nTW9kZWw7XG5cbiAgU2V0dGluZ1R5cGUgPSBTZXR0aW5nVHlwZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nKSB7XG4gIH1cblxuICBwb3BPdXQoKSB7XG4gICAgdGhpcy5kaWFsb2cub3BlbihFeHBhbmREaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnNjQwcHgnLFxuICAgICAgZGF0YTogeyBjb250cm9sOiB0aGlzLnZhbHVlRm9ybUNvbnRyb2wgfVxuICAgIH0pO1xuICB9XG5cbiAgZm9ybWF0RGVjaW1hbE51bWJlcih2YWx1ZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIEZvcm1IZWxwZXIuZm9ybWF0TnVtYmVyRm9yRGlzcGxheSh2YWx1ZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBbbmdTd2l0Y2hdPVwic2V0dGluZy5zZXR0aW5nVHlwZVwiPlxuICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIlNldHRpbmdUeXBlLlN0cmluZ1wiIGNsYXNzPVwid2l0aC12YWxpZGF0aW9uXCI+XG4gICAgICA8c3BhbiAqbmdJZj1cInZhbHVlRm9ybUNvbnRyb2wuaW52YWxpZFwiIGNsYXNzPVwiZXJyb3JcIj4qPC9zcGFuPlxuICAgICAgPGlucHV0IFtuZ0NsYXNzXT1cInsnaW52YWxpZCc6IHZhbHVlRm9ybUNvbnRyb2wuaW52YWxpZH1cIiB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInZhbHVlRm9ybUNvbnRyb2xcIiBwbGFjZWhvbGRlcj1cIm15IHZhbHVlXCIgbmFtZT1cInZhbHVlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZXhwYW5kXCIgKGNsaWNrKT1cInBvcE91dCgpXCIgbWF0VG9vbHRpcD1cIlBvcC1vdXQgRWRpdG9yXCI+XG4gICAgICAgIDxtYXQtaWNvbj5oZWlnaHQ8L21hdC1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiU2V0dGluZ1R5cGUuSW50XCIgY2xhc3M9XCJ3aXRoLXZhbGlkYXRpb25cIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwidmFsdWVGb3JtQ29udHJvbC5pbnZhbGlkXCIgY2xhc3M9XCJlcnJvclwiPio8L3NwYW4+XG4gICAgICA8aW5wdXQgW25nQ2xhc3NdPVwieydpbnZhbGlkJzogdmFsdWVGb3JtQ29udHJvbC5pbnZhbGlkfVwiIHR5cGU9XCJudW1iZXJcIiBbZm9ybUNvbnRyb2xdPVwidmFsdWVGb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCI0MlwiIG5hbWU9XCJ2YWx1ZVwiIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiU2V0dGluZ1R5cGUuRG91YmxlXCIgY2xhc3M9XCJ3aXRoLXZhbGlkYXRpb25cIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwidmFsdWVGb3JtQ29udHJvbC5pbnZhbGlkXCIgY2xhc3M9XCJlcnJvclwiPio8L3NwYW4+XG4gICAgICA8aW5wdXQgW25nQ2xhc3NdPVwieydpbnZhbGlkJzogdmFsdWVGb3JtQ29udHJvbC5pbnZhbGlkfVwiIHR5cGU9XCJudW1iZXJcIiBbZm9ybUNvbnRyb2xdPVwidmFsdWVGb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBmb3JtYXREZWNpbWFsTnVtYmVyKDMuMTQpIH19XCIgbmFtZT1cInZhbHVlXCIgaW5wdXREaXNwbGF5Tm9ybWFsaXplcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJTZXR0aW5nVHlwZS5Cb29sZWFuXCIgY2xhc3M9XCJ0b2dnbGVcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInN3aXRjaFwiPlxuICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2Zvcm1Db250cm9sXT1cInZhbHVlRm9ybUNvbnRyb2xcIiBuYW1lPVwidmFsdWVcIiAvPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNsaWRlciByb3VuZFwiPjwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwic2V0dGluZy5zZXR0aW5nVHlwZSA9PT0gU2V0dGluZ1R5cGUuQm9vbGVhblwiIGNsYXNzPVwic3BhY2VyXCI+PC9kaXY+XG5cbjwvZGl2PlxuIl19
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29uZmlnY2F0LXB1YmxpY2FwaS11aS9zcmMvbGliL3NldHRpbmctbGlzdC9zZXR0aW5nL3ZhbHVlL3ZhbHVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9zZXR0aW5nLWxpc3Qvc2V0dGluZy92YWx1ZS92YWx1ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUMvRixPQUFPLEVBQWdCLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7QUFVNUQsTUFBTSxPQUFPLGNBQWM7SUFRekIsWUFBb0IsTUFBaUI7UUFBakIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUZyQyxnQkFBVyxHQUFHLFdBQVcsQ0FBQztJQUcxQixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQ3RDLEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtTQUN6QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsS0FBYTtRQUMvQixPQUFPLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRCxDQUFDOzsyR0FwQlUsY0FBYzsrRkFBZCxjQUFjLDZIQ2YzQiwra0RBOEJBOzJGRGZhLGNBQWM7a0JBUjFCLFNBQVM7K0JBQ0UsaUJBQWlCO2dHQVNsQixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEV4cGFuZERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2RpYWxvZ3MvZXhwYW5kLWRpYWxvZy9leHBhbmQtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZXR0aW5nTW9kZWwsIFNldHRpbmdUeXBlIH0gZnJvbSAnbmctY29uZmlnY2F0LXB1YmxpY2FwaSc7XG5pbXBvcnQgeyBGb3JtSGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vX3NlcnZpY2VzL2Zvcm0taGVscGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY29uZmlnY2F0LXZhbHVlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3ZhbHVlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXG4gICAgJy4vc2xpZGVyLnNjc3MnLFxuICAgICcuL3ZhbHVlLmNvbXBvbmVudC5zY3NzJ1xuICBdXG59KVxuZXhwb3J0IGNsYXNzIFZhbHVlQ29tcG9uZW50IHtcblxuICBASW5wdXQoKSB2YWx1ZUZvcm1Db250cm9sITogVW50eXBlZEZvcm1Db250cm9sO1xuXG4gIEBJbnB1dCgpIHNldHRpbmchOiBTZXR0aW5nTW9kZWw7XG5cbiAgU2V0dGluZ1R5cGUgPSBTZXR0aW5nVHlwZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nKSB7XG4gIH1cblxuICBwb3BPdXQoKSB7XG4gICAgdGhpcy5kaWFsb2cub3BlbihFeHBhbmREaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnNjQwcHgnLFxuICAgICAgZGF0YTogeyBjb250cm9sOiB0aGlzLnZhbHVlRm9ybUNvbnRyb2wgfVxuICAgIH0pO1xuICB9XG5cbiAgZm9ybWF0RGVjaW1hbE51bWJlcih2YWx1ZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIEZvcm1IZWxwZXIuZm9ybWF0TnVtYmVyRm9yRGlzcGxheSh2YWx1ZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4XCI+XG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBbbmdTd2l0Y2hdPVwic2V0dGluZy5zZXR0aW5nVHlwZVwiPlxuICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIlNldHRpbmdUeXBlLlN0cmluZ1wiIGNsYXNzPVwid2l0aC12YWxpZGF0aW9uXCI+XG4gICAgICA8c3BhbiAqbmdJZj1cInZhbHVlRm9ybUNvbnRyb2wuaW52YWxpZFwiIGNsYXNzPVwiZXJyb3JcIj4qPC9zcGFuPlxuICAgICAgPGlucHV0IFtuZ0NsYXNzXT1cInsnaW52YWxpZCc6IHZhbHVlRm9ybUNvbnRyb2wuaW52YWxpZH1cIiB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInZhbHVlRm9ybUNvbnRyb2xcIiBwbGFjZWhvbGRlcj1cIm15IHZhbHVlXCIgbmFtZT1cInZhbHVlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZXhwYW5kXCIgKGNsaWNrKT1cInBvcE91dCgpXCIgbWF0VG9vbHRpcD1cIlBvcC1vdXQgRWRpdG9yXCI+XG4gICAgICAgIDxtYXQtaWNvbj5oZWlnaHQ8L21hdC1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiU2V0dGluZ1R5cGUuSW50XCIgY2xhc3M9XCJ3aXRoLXZhbGlkYXRpb25cIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwidmFsdWVGb3JtQ29udHJvbC5pbnZhbGlkXCIgY2xhc3M9XCJlcnJvclwiPio8L3NwYW4+XG4gICAgICA8aW5wdXQgW25nQ2xhc3NdPVwieydpbnZhbGlkJzogdmFsdWVGb3JtQ29udHJvbC5pbnZhbGlkfVwiIHR5cGU9XCJudW1iZXJcIiBbZm9ybUNvbnRyb2xdPVwidmFsdWVGb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCI0MlwiIG5hbWU9XCJ2YWx1ZVwiIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiU2V0dGluZ1R5cGUuRG91YmxlXCIgY2xhc3M9XCJ3aXRoLXZhbGlkYXRpb25cIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwidmFsdWVGb3JtQ29udHJvbC5pbnZhbGlkXCIgY2xhc3M9XCJlcnJvclwiPio8L3NwYW4+XG4gICAgICA8aW5wdXQgW25nQ2xhc3NdPVwieydpbnZhbGlkJzogdmFsdWVGb3JtQ29udHJvbC5pbnZhbGlkfVwiIHR5cGU9XCJudW1iZXJcIiBbZm9ybUNvbnRyb2xdPVwidmFsdWVGb3JtQ29udHJvbFwiXG4gICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBmb3JtYXREZWNpbWFsTnVtYmVyKDMuMTQpIH19XCIgbmFtZT1cInZhbHVlXCIgaW5wdXREaXNwbGF5Tm9ybWFsaXplcj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJTZXR0aW5nVHlwZS5Cb29sZWFuXCIgY2xhc3M9XCJ0b2dnbGVcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInN3aXRjaFwiPlxuICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2Zvcm1Db250cm9sXT1cInZhbHVlRm9ybUNvbnRyb2xcIiBuYW1lPVwidmFsdWVcIiAvPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNsaWRlciByb3VuZFwiPjwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwic2V0dGluZy5zZXR0aW5nVHlwZSA9PT0gU2V0dGluZ1R5cGUuQm9vbGVhblwiIGNsYXNzPVwic3BhY2VyXCI+PC9kaXY+XG5cbjwvZGl2PlxuIl19
@@ -2,7 +2,6 @@ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
2
  import { forkJoin } from 'rxjs';
3
3
  import { ReasonDialogComponent } from '../dialogs/reason-dialog/reason-dialog.component';
4
4
  import { SaveSnackbarComponent } from '../dialogs/save-snackbar/save-snackbar.component';
5
- import { ConcurrentDialogComponent } from '../dialogs/concurrent-dialog/concurrent-dialog.component';
6
5
  import * as i0 from "@angular/core";
7
6
  import * as i1 from "../_services/setting-list-form-helper";
8
7
  import * as i2 from "@angular/material/snack-bar";
@@ -18,11 +17,10 @@ export class SettingListComponent {
18
17
  this.snackBar = snackBar;
19
18
  this.dialog = dialog;
20
19
  this.dashboardBasePath = 'https://app.configcat.com';
21
- this.canEditSetting = false;
22
20
  this.canDeleteSetting = false;
23
21
  this.deleteSettingText = 'Delete setting';
24
22
  this.showEnvironmentName = false;
25
- this.editSettingRequested = new EventEmitter();
23
+ this.loadSucceeded = new EventEmitter();
26
24
  this.deleteSettingRequested = new EventEmitter();
27
25
  this.formValuesChanged = new EventEmitter();
28
26
  this.loading = true;
@@ -31,9 +29,6 @@ export class SettingListComponent {
31
29
  this.showFeedBackMessage = false;
32
30
  this.readOnly = false;
33
31
  }
34
- ngOnInit() {
35
- this.reloadSettingValues();
36
- }
37
32
  ngOnChanges() {
38
33
  this.reloadSettingValues();
39
34
  }
@@ -55,7 +50,8 @@ export class SettingListComponent {
55
50
  this.segments = result.segments;
56
51
  this.createFormGroup();
57
52
  this.loading = false;
58
- }, error => {
53
+ this.loadSucceeded.emit(true);
54
+ }, () => {
59
55
  this.snackBar.open('Ooops. We could not load your Feature Flags and Settings. Please try again or contact us.', 'Dismiss', { duration: 60000, panelClass: 'red-snackbar' });
60
56
  });
61
57
  }
@@ -128,24 +124,6 @@ export class SettingListComponent {
128
124
  this.submitting = false;
129
125
  this.snackBar.openFromComponent(SaveSnackbarComponent, { duration: 5000, panelClass: 'green-snackbar' });
130
126
  }, (error) => {
131
- if (error.status === 400 && error.error
132
- && error.error.KnownLastUpdatedAt && error.error.KnownLastUpdatedAt[0] === 'Concurrent update') {
133
- const dialogRef = this.dialog.open(ConcurrentDialogComponent, {
134
- width: '560px'
135
- });
136
- dialogRef.afterClosed()
137
- .subscribe(result => {
138
- if (result && result.button === 'save') {
139
- updateSettingValuesModel.forced = true;
140
- this.updateSettingValues(updateSettingValuesModel);
141
- }
142
- else {
143
- this.reloadSettingValues();
144
- this.submitting = false;
145
- }
146
- });
147
- return;
148
- }
149
127
  if (error.status === 400 && error.error && error.error.Reason && error.error.Reason[0] === 'Reason required') {
150
128
  const dialogRef = this.dialog.open(ReasonDialogComponent, {
151
129
  width: '450px'
@@ -173,13 +151,6 @@ export class SettingListComponent {
173
151
  handleRevertCancel() {
174
152
  this.showRevertQuestion = false;
175
153
  }
176
- onEditSettingRequested(setting) {
177
- this.editSettingRequested.emit({
178
- setting: setting.setting,
179
- environment: this.settingValues.environment,
180
- config: this.settingValues.config
181
- });
182
- }
183
154
  onDeleteSettingRequested(setting) {
184
155
  this.deleteSettingRequested.emit({
185
156
  setting: setting.setting,
@@ -188,11 +159,11 @@ export class SettingListComponent {
188
159
  });
189
160
  }
190
161
  }
191
- SettingListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SettingListComponent, deps: [{ token: i1.SettingListFormHelper }, { token: i2.MatSnackBar }, { token: i3.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
192
- SettingListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: SettingListComponent, selector: "configcat-setting-list", inputs: { productId: "productId", environmentId: "environmentId", configId: "configId", dashboardBasePath: "dashboardBasePath", canEditSetting: "canEditSetting", canDeleteSetting: "canDeleteSetting", onSave: "onSave", loadSettingValues: "loadSettingValues", loadSegments: "loadSegments", deleteSettingText: "deleteSettingText", showEnvironmentName: "showEnvironmentName" }, outputs: { editSettingRequested: "editSettingRequested", deleteSettingRequested: "deleteSettingRequested", formValuesChanged: "formValuesChanged" }, usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"formGroup\" (ngSubmit)=\"submit()\" *ngIf=\"!loading\">\n <div class=\"wrapper\" *ngFor=\"let settingValueFromGroup of getSettingValueFormGroups(); let i = index\">\n <setting [formGroup]=\"settingValueFromGroup\" [readOnly]=\"readOnly\" [canEditSetting]=\"canEditSetting\"\n [canDeleteSetting]=\"canDeleteSetting\" (editSettingRequested)=\"onEditSettingRequested($event)\"\n (deleteSettingRequested)=\"onDeleteSettingRequested($event)\" [deleteSettingText]=\"deleteSettingText\"\n [showEnvironmentName]=\"showEnvironmentName\" [segments]=\"segments\" [productId]=\"productId\" [configId]=\"configId\"\n [environmentId]=\"environmentId\" [dashboardBasePath]=\"dashboardBasePath\">\n </setting>\n </div>\n\n <div class=\"save\" *ngIf=\"!readOnly && !submitting && formGroup.dirty\">\n <div class=\"feedback\" *ngIf=\"formGroup.touched && formGroup.invalid && showFeedBackMessage\">\n <div class=\"error\" *ngIf=\"formGroup.errors && formGroup.errors.internalServerError\">\n <span>Something went wrong and we could not save your settings. You can try again or <a\n href=\"https://configcat.com/support\" target=\"_blank\" rel=\"noopener noreferrer\">contact us.</a></span>\n </div>\n <div class=\"error\" *ngIf=\"!formGroup.errors || !formGroup.errors.internalServerError\">\n <span>Oh no! A feature flag has invalid or missing data.</span>\n </div>\n </div>\n <button type=\"button\" mat-stroked-button *ngIf=\"!showRevertQuestion\" (click)=\"showRevertQuestion = true\">\n <mat-icon>history</mat-icon><span>Revert changes</span>\n </button>\n <div *ngIf=\"showRevertQuestion\">\n <span class=\"revert\">Revert to last saved state?</span>\n <button type=\"button\" class=\"yes\" mat-stroked-button (click)=\"handleRevertYes()\">Yes</button>\n <button type=\"button\" mat-stroked-button (click)=\"handleRevertCancel()\">No</button>\n </div>\n <button class=\"save-button\" mat-flat-button color=\"warn\" type=\"submit\" [disabled]=\"submitting\">\n <mat-icon>backup</mat-icon> <span> Save & publish changes</span>\n </button>\n </div>\n</form>", styles: [".wrapper{background-color:#f3f3f3;border:1px solid rgba(0,0,0,.12);margin:1em 0}.show-hide a{cursor:pointer;font-size:.8rem}.save{position:sticky;bottom:0;min-height:38px;padding:.5rem .5rem .5rem 0;background-color:#fff;display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-end;z-index:1000}.save .save-button{animation:shadow-pulse 1s 3;margin-left:1rem}.save>*{margin:.3em}.save .revert{margin:0 16px;font-size:14px}.save .yes{margin:0 5px}.error{background-color:#a32b2d;color:#fff;padding:5px;font-size:.9em}.error a{color:#fff;text-decoration:underline}@media (max-width: 700px){.save{padding:.5rem 0}}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i6.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: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.SettingComponent, selector: "setting", inputs: ["dashboardBasePath", "productId", "environmentId", "configId", "formGroup", "readOnly", "canEditSetting", "canDeleteSetting", "deleteSettingText", "showEnvironmentName", "segments"], outputs: ["editSettingRequested", "deleteSettingRequested"] }] });
193
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SettingListComponent, decorators: [{
162
+ SettingListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SettingListComponent, deps: [{ token: i1.SettingListFormHelper }, { token: i2.MatSnackBar }, { token: i3.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
163
+ SettingListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: SettingListComponent, selector: "configcat-setting-list", inputs: { productId: "productId", environmentId: "environmentId", configId: "configId", dashboardBasePath: "dashboardBasePath", canDeleteSetting: "canDeleteSetting", onSave: "onSave", loadSettingValues: "loadSettingValues", loadSegments: "loadSegments", deleteSettingText: "deleteSettingText", showEnvironmentName: "showEnvironmentName" }, outputs: { loadSucceeded: "loadSucceeded", deleteSettingRequested: "deleteSettingRequested", formValuesChanged: "formValuesChanged" }, usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"formGroup\" (ngSubmit)=\"submit()\" *ngIf=\"!loading\">\n <div class=\"wrapper\" *ngFor=\"let settingValueFromGroup of getSettingValueFormGroups(); let i = index\">\n <setting [formGroup]=\"settingValueFromGroup\" [readOnly]=\"readOnly\" [canDeleteSetting]=\"canDeleteSetting\"\n (deleteSettingRequested)=\"onDeleteSettingRequested($event)\" [deleteSettingText]=\"deleteSettingText\"\n [showEnvironmentName]=\"showEnvironmentName\" [segments]=\"segments\" [productId]=\"productId\" [configId]=\"configId\"\n [environmentId]=\"environmentId\" [dashboardBasePath]=\"dashboardBasePath\">\n </setting>\n </div>\n\n <div class=\"save\" *ngIf=\"!readOnly && !submitting && formGroup.dirty\">\n <div class=\"feedback\" *ngIf=\"formGroup.touched && formGroup.invalid && showFeedBackMessage\">\n <div class=\"error\" *ngIf=\"formGroup.errors && formGroup.errors.internalServerError\">\n <span>Something went wrong and we could not save your settings. You can try again or <a\n href=\"https://configcat.com/support\" target=\"_blank\" rel=\"noopener noreferrer\">contact us.</a></span>\n </div>\n <div class=\"error\" *ngIf=\"!formGroup.errors || !formGroup.errors.internalServerError\">\n <span>Oh no! A feature flag has invalid or missing data.</span>\n </div>\n </div>\n <button type=\"button\" mat-stroked-button *ngIf=\"!showRevertQuestion\" (click)=\"showRevertQuestion = true\">\n <mat-icon>history</mat-icon><span>Revert changes</span>\n </button>\n <div *ngIf=\"showRevertQuestion\">\n <span class=\"revert\">Revert to last saved state?</span>\n <button type=\"button\" class=\"yes\" mat-stroked-button (click)=\"handleRevertYes()\">Yes</button>\n <button type=\"button\" mat-stroked-button (click)=\"handleRevertCancel()\">No</button>\n </div>\n <button class=\"save-button\" mat-flat-button color=\"warn\" type=\"submit\" [disabled]=\"submitting\">\n <mat-icon>backup</mat-icon> <span> Save & publish changes</span>\n </button>\n </div>\n</form>", styles: [".wrapper{background-color:#f3f3f3;border:1px solid rgba(0,0,0,.12);margin:1em 0}.show-hide a{cursor:pointer;font-size:.8rem}.save{position:sticky;bottom:0;min-height:38px;padding:.5rem .5rem .5rem 0;background-color:#fff;display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-end;z-index:1000}.save .save-button{animation:shadow-pulse 1s 3;margin-left:1rem}.save>*{margin:.3em}.save .revert{margin:0 16px;font-size:14px}.save .yes{margin:0 5px}.error{background-color:#a32b2d;color:#fff;padding:5px;font-size:.9em}.error a{color:#fff;text-decoration:underline}@media (max-width: 700px){.save{padding:.5rem 0}}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i8.SettingComponent, selector: "setting", inputs: ["dashboardBasePath", "productId", "environmentId", "configId", "formGroup", "readOnly", "canDeleteSetting", "deleteSettingText", "showEnvironmentName", "segments"], outputs: ["deleteSettingRequested"] }] });
164
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SettingListComponent, decorators: [{
194
165
  type: Component,
195
- args: [{ selector: 'configcat-setting-list', template: "<form [formGroup]=\"formGroup\" (ngSubmit)=\"submit()\" *ngIf=\"!loading\">\n <div class=\"wrapper\" *ngFor=\"let settingValueFromGroup of getSettingValueFormGroups(); let i = index\">\n <setting [formGroup]=\"settingValueFromGroup\" [readOnly]=\"readOnly\" [canEditSetting]=\"canEditSetting\"\n [canDeleteSetting]=\"canDeleteSetting\" (editSettingRequested)=\"onEditSettingRequested($event)\"\n (deleteSettingRequested)=\"onDeleteSettingRequested($event)\" [deleteSettingText]=\"deleteSettingText\"\n [showEnvironmentName]=\"showEnvironmentName\" [segments]=\"segments\" [productId]=\"productId\" [configId]=\"configId\"\n [environmentId]=\"environmentId\" [dashboardBasePath]=\"dashboardBasePath\">\n </setting>\n </div>\n\n <div class=\"save\" *ngIf=\"!readOnly && !submitting && formGroup.dirty\">\n <div class=\"feedback\" *ngIf=\"formGroup.touched && formGroup.invalid && showFeedBackMessage\">\n <div class=\"error\" *ngIf=\"formGroup.errors && formGroup.errors.internalServerError\">\n <span>Something went wrong and we could not save your settings. You can try again or <a\n href=\"https://configcat.com/support\" target=\"_blank\" rel=\"noopener noreferrer\">contact us.</a></span>\n </div>\n <div class=\"error\" *ngIf=\"!formGroup.errors || !formGroup.errors.internalServerError\">\n <span>Oh no! A feature flag has invalid or missing data.</span>\n </div>\n </div>\n <button type=\"button\" mat-stroked-button *ngIf=\"!showRevertQuestion\" (click)=\"showRevertQuestion = true\">\n <mat-icon>history</mat-icon><span>Revert changes</span>\n </button>\n <div *ngIf=\"showRevertQuestion\">\n <span class=\"revert\">Revert to last saved state?</span>\n <button type=\"button\" class=\"yes\" mat-stroked-button (click)=\"handleRevertYes()\">Yes</button>\n <button type=\"button\" mat-stroked-button (click)=\"handleRevertCancel()\">No</button>\n </div>\n <button class=\"save-button\" mat-flat-button color=\"warn\" type=\"submit\" [disabled]=\"submitting\">\n <mat-icon>backup</mat-icon> <span> Save & publish changes</span>\n </button>\n </div>\n</form>", styles: [".wrapper{background-color:#f3f3f3;border:1px solid rgba(0,0,0,.12);margin:1em 0}.show-hide a{cursor:pointer;font-size:.8rem}.save{position:sticky;bottom:0;min-height:38px;padding:.5rem .5rem .5rem 0;background-color:#fff;display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-end;z-index:1000}.save .save-button{animation:shadow-pulse 1s 3;margin-left:1rem}.save>*{margin:.3em}.save .revert{margin:0 16px;font-size:14px}.save .yes{margin:0 5px}.error{background-color:#a32b2d;color:#fff;padding:5px;font-size:.9em}.error a{color:#fff;text-decoration:underline}@media (max-width: 700px){.save{padding:.5rem 0}}\n"] }]
166
+ args: [{ selector: 'configcat-setting-list', template: "<form [formGroup]=\"formGroup\" (ngSubmit)=\"submit()\" *ngIf=\"!loading\">\n <div class=\"wrapper\" *ngFor=\"let settingValueFromGroup of getSettingValueFormGroups(); let i = index\">\n <setting [formGroup]=\"settingValueFromGroup\" [readOnly]=\"readOnly\" [canDeleteSetting]=\"canDeleteSetting\"\n (deleteSettingRequested)=\"onDeleteSettingRequested($event)\" [deleteSettingText]=\"deleteSettingText\"\n [showEnvironmentName]=\"showEnvironmentName\" [segments]=\"segments\" [productId]=\"productId\" [configId]=\"configId\"\n [environmentId]=\"environmentId\" [dashboardBasePath]=\"dashboardBasePath\">\n </setting>\n </div>\n\n <div class=\"save\" *ngIf=\"!readOnly && !submitting && formGroup.dirty\">\n <div class=\"feedback\" *ngIf=\"formGroup.touched && formGroup.invalid && showFeedBackMessage\">\n <div class=\"error\" *ngIf=\"formGroup.errors && formGroup.errors.internalServerError\">\n <span>Something went wrong and we could not save your settings. You can try again or <a\n href=\"https://configcat.com/support\" target=\"_blank\" rel=\"noopener noreferrer\">contact us.</a></span>\n </div>\n <div class=\"error\" *ngIf=\"!formGroup.errors || !formGroup.errors.internalServerError\">\n <span>Oh no! A feature flag has invalid or missing data.</span>\n </div>\n </div>\n <button type=\"button\" mat-stroked-button *ngIf=\"!showRevertQuestion\" (click)=\"showRevertQuestion = true\">\n <mat-icon>history</mat-icon><span>Revert changes</span>\n </button>\n <div *ngIf=\"showRevertQuestion\">\n <span class=\"revert\">Revert to last saved state?</span>\n <button type=\"button\" class=\"yes\" mat-stroked-button (click)=\"handleRevertYes()\">Yes</button>\n <button type=\"button\" mat-stroked-button (click)=\"handleRevertCancel()\">No</button>\n </div>\n <button class=\"save-button\" mat-flat-button color=\"warn\" type=\"submit\" [disabled]=\"submitting\">\n <mat-icon>backup</mat-icon> <span> Save & publish changes</span>\n </button>\n </div>\n</form>", styles: [".wrapper{background-color:#f3f3f3;border:1px solid rgba(0,0,0,.12);margin:1em 0}.show-hide a{cursor:pointer;font-size:.8rem}.save{position:sticky;bottom:0;min-height:38px;padding:.5rem .5rem .5rem 0;background-color:#fff;display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-end;z-index:1000}.save .save-button{animation:shadow-pulse 1s 3;margin-left:1rem}.save>*{margin:.3em}.save .revert{margin:0 16px;font-size:14px}.save .yes{margin:0 5px}.error{background-color:#a32b2d;color:#fff;padding:5px;font-size:.9em}.error a{color:#fff;text-decoration:underline}@media (max-width: 700px){.save{padding:.5rem 0}}\n"] }]
196
167
  }], ctorParameters: function () { return [{ type: i1.SettingListFormHelper }, { type: i2.MatSnackBar }, { type: i3.MatDialog }]; }, propDecorators: { productId: [{
197
168
  type: Input
198
169
  }], environmentId: [{
@@ -201,8 +172,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
201
172
  type: Input
202
173
  }], dashboardBasePath: [{
203
174
  type: Input
204
- }], canEditSetting: [{
205
- type: Input
206
175
  }], canDeleteSetting: [{
207
176
  type: Input
208
177
  }], onSave: [{
@@ -215,11 +184,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
215
184
  type: Input
216
185
  }], showEnvironmentName: [{
217
186
  type: Input
218
- }], editSettingRequested: [{
187
+ }], loadSucceeded: [{
219
188
  type: Output
220
189
  }], deleteSettingRequested: [{
221
190
  type: Output
222
191
  }], formValuesChanged: [{
223
192
  type: Output
224
193
  }] } });
225
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9zZXR0aW5nLWxpc3Qvc2V0dGluZy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9zZXR0aW5nLWxpc3Qvc2V0dGluZy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBR3JHLE9BQU8sRUFBRSxRQUFRLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBRzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDOzs7Ozs7Ozs7O0FBVXJHLE1BQU0sT0FBTyxvQkFBb0I7SUFpQy9CLFlBQW9CLFVBQWlDLEVBQzNDLFFBQXFCLEVBQ3JCLE1BQWlCO1FBRlAsZUFBVSxHQUFWLFVBQVUsQ0FBdUI7UUFDM0MsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBOUJsQixzQkFBaUIsR0FBRywyQkFBMkIsQ0FBQztRQUVoRCxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFLekIsc0JBQWlCLEdBQUcsZ0JBQWdCLENBQUM7UUFDckMsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRTNCLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUMsMkJBQXNCLEdBQUcs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QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVJLG9CQUFvQjtzQkFBN0IsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNldHRpbmdWYWx1ZXNNb2RlbCwgVXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsIH0gZnJvbSAnLi4vX21vZGVscyc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUFycmF5LCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFJlYXNvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZ3MvcmVhc29uLWRpYWxvZy9yZWFzb24tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTYXZlU25hY2tiYXJDb21wb25lbnQgfSBmcm9tICcuLi9kaWFsb2dzL3NhdmUtc25hY2tiYXIvc2F2ZS1zbmFja2Jhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29uY3VycmVudERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZ3MvY29uY3VycmVudC1kaWFsb2cvY29uY3VycmVudC1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IFNldHRpbmdMaXN0Rm9ybUhlbHBlciB9IGZyb20gJy4uL19zZXJ2aWNlcy9zZXR0aW5nLWxpc3QtZm9ybS1oZWxwZXInO1xuaW1wb3J0IHsgUm9sbG91dFBlcmNlbnRhZ2VJdGVtTW9kZWwsIFJvbGxvdXRSdWxlTW9kZWwsIFNlZ21lbnRMaXN0TW9kZWwsIFVwZGF0ZVNldHRpbmdWYWx1ZU1vZGVsIH0gZnJvbSAnbmctY29uZmlnY2F0LXB1YmxpY2FwaSc7XG5pbXBvcnQgeyBGb3JtSGVscGVyIH0gZnJvbSAnLi4vX3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY29uZmlnY2F0LXNldHRpbmctbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZXR0aW5nLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZXR0aW5nLWxpc3QuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZXR0aW5nTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHByb2R1Y3RJZCE6IHN0cmluZztcbiAgQElucHV0KCkgZW52aXJvbm1lbnRJZCE6IHN0cmluZztcbiAgQElucHV0KCkgY29uZmlnSWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRhc2hib2FyZEJhc2VQYXRoID0gJ2h0dHBzOi8vYXBwLmNvbmZpZ2NhdC5jb20nO1xuXG4gIEBJbnB1dCgpIGNhbkVkaXRTZXR0aW5nID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhbkRlbGV0ZVNldHRpbmcgPSBmYWxzZTtcblxuICBASW5wdXQoKSBvblNhdmUhOiAodmFsdWU6IFVwZGF0ZVNldHRpbmdWYWx1ZXNNb2RlbCkgPT4gT2JzZXJ2YWJsZTxTZXR0aW5nVmFsdWVzTW9kZWw+O1xuICBASW5wdXQoKSBsb2FkU2V0dGluZ1ZhbHVlcyE6ICgpID0+IE9ic2VydmFibGU8U2V0dGluZ1ZhbHVlc01vZGVsPjtcbiAgQElucHV0KCkgbG9hZFNlZ21lbnRzITogKCkgPT4gT2JzZXJ2YWJsZTxTZWdtZW50TGlzdE1vZGVsW10+O1xuICBASW5wdXQoKSBkZWxldGVTZXR0aW5nVGV4dCA9ICdEZWxldGUgc2V0dGluZyc7XG4gIEBJbnB1dCgpIHNob3dFbnZpcm9ubWVudE5hbWUgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgZWRpdFNldHRpbmdSZXF1ZXN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBkZWxldGVTZXR0aW5nUmVxdWVzdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZm9ybVZhbHVlc0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgZm9ybVZhbHVlc0NoYW5nZWRTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb24gfCBudWxsO1xuXG4gIGxvYWRpbmcgPSB0cnVlO1xuXG4gIHNldHRpbmdWYWx1ZXMhOiBTZXR0aW5nVmFsdWVzTW9kZWw7XG4gIHNlZ21lbnRzITogU2VnbWVudExpc3RNb2RlbFtdO1xuICBmb3JtR3JvdXAhOiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIHN1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgc2hvd1JldmVydFF1ZXN0aW9uID0gZmFsc2U7XG4gIHNob3dGZWVkQmFja01lc3NhZ2UgPSBmYWxzZTtcbiAgcmVhZE9ubHkgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1IZWxwZXI6IFNldHRpbmdMaXN0Rm9ybUhlbHBlcixcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbG9hZFNldHRpbmdWYWx1ZXMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMucmVsb2FkU2V0dGluZ1ZhbHVlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuZm9ybVZhbHVlc0NoYW5nZWRTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZm9ybVZhbHVlc0NoYW5nZWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuZm9ybVZhbHVlc0NoYW5nZWRTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHJlbG9hZFNldHRpbmdWYWx1ZXMoKSB7XG4gICAgdGhpcy5zaG93RmVlZEJhY2tNZXNzYWdlID0gZmFsc2U7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBmb3JrSm9pbih7XG4gICAgICBzZWdtZW50czogdGhpcy5sb2FkU2VnbWVudHMoKSxcbiAgICAgIHNldHRpbmdWYWx1ZXM6IHRoaXMubG9hZFNldHRpbmdWYWx1ZXMoKVxuICAgIH0pLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgdGhpcy5yZWFkT25seSA9IHJlc3VsdC5zZXR0aW5nVmFsdWVzLnJlYWRPbmx5O1xuICAgICAgdGhpcy5zZXR0aW5nVmFsdWVzID0gcmVzdWx0LnNldHRpbmdWYWx1ZXM7XG4gICAgICB0aGlzLnNlZ21lbnRzID0gcmVzdWx0LnNlZ21lbnRzO1xuICAgICAgdGhpcy5jcmVhdGVGb3JtR3JvdXAoKTtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH0sXG4gICAgICBlcnJvciA9PiB7XG4gICAgICAgIHRoaXMuc25hY2tCYXIub3BlbignT29vcHMuIFdlIGNvdWxkIG5vdCBsb2FkIHlvdXIgRmVhdHVyZSBGbGFncyBhbmQgU2V0dGluZ3MuIFBsZWFzZSB0cnkgYWdhaW4gb3IgY29udGFjdCB1cy4nLFxuICAgICAgICAgICdEaXNtaXNzJywgeyBkdXJhdGlvbjogNjAwMDAsIHBhbmVsQ2xhc3M6ICdyZWQtc25hY2tiYXInIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBjcmVhdGVGb3JtR3JvdXAoKSB7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmZvcm1IZWxwZXIuY3JlYXRlU2V0dGluZ1ZhbHVlc0Zvcm1Hcm91cCh0aGlzLnNldHRpbmdWYWx1ZXMpO1xuICAgIHRoaXMuZm9ybVZhbHVlc0NoYW5nZWRTdWJzY3JpcHRpb24gPSB0aGlzLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZm9ybVZhbHVlc0NoYW5nZWQuZW1pdCgpO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0dGluZ1ZhbHVlc0Zvcm1BcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KCdzZXR0aW5nVmFsdWVzJykgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgfVxuXG4gIGdldFNldHRpbmdWYWx1ZUZvcm1Hcm91cHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dGluZ1ZhbHVlc0Zvcm1BcnJheSgpLmNvbnRyb2xzLm1hcChjID0+IGMgYXMgVW50eXBlZEZvcm1Hcm91cCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkVXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsKHNldHRpbmdWYWx1ZXNWTTogVXBkYXRlU2V0dGluZ1ZhbHVlTW9kZWxbXSkge1xuICAgIHJldHVybiBzZXR0aW5nVmFsdWVzVk0ubWFwKHNldHRpbmdWYWx1ZVZNID0+IHtcbiAgICAgIHJldHVybiA8VXBkYXRlU2V0dGluZ1ZhbHVlTW9kZWw+XG4gICAgICB7XG4gICAgICAgIHJvbGxvdXRSdWxlczogc2V0dGluZ1ZhbHVlVk0ucm9sbG91dFJ1bGVzPy5tYXAocm9sbG91dFJ1bGVWTSA9PlxuICAgICAgICAgIDxSb2xsb3V0UnVsZU1vZGVsPntcbiAgICAgICAgICAgIGNvbXBhcmlzb25BdHRyaWJ1dGU6IHJvbGxvdXRSdWxlVk0uY29tcGFyaXNvbkF0dHJpYnV0ZSxcbiAgICAgICAgICAgIGNvbXBhcmF0b3I6IHJvbGxvdXRSdWxlVk0uY29tcGFyYXRvcixcbiAgICAgICAgICAgIGNvbXBhcmlzb25WYWx1ZTogdGhpcy5mb3JtSGVscGVyLm5vcm1hbGl6ZUNvbXBhcmlzb25WYWx1ZShyb2xsb3V0UnVsZVZNLmNvbXBhcmF0b3IsIHJvbGxvdXRSdWxlVk0uY29tcGFyaXNvblZhbHVlKSxcbiAgICAgICAgICAgIHNlZ21lbnRDb21wYXJhdG9yOiByb2xsb3V0UnVsZVZNLnNlZ21lbnRDb21wYXJhdG9yLFxuICAgICAgICAgICAgc2VnbWVudElkOiByb2xsb3V0UnVsZVZNLnNlZ21lbnRJZCxcbiAgICAgICAgICAgIHZhbHVlOiByb2xsb3V0UnVsZVZNLnZhbHVlXG4gICAgICAgICAgfSksXG4gICAgICAgIHJvbGxvdXRQZXJjZW50YWdlSXRlbXM6IHNldHRpbmdWYWx1ZVZNLnJvbGxvdXRQZXJjZW50YWdlSXRlbXM/Lm1hcChyb2xsb3V0UGVyY2VudGFnZUl0ZW1WTSA9PlxuICAgICAgICAgIDxSb2xsb3V0UGVyY2VudGFnZUl0ZW1Nb2RlbD57XG4gICAgICAgICAgICBwZXJjZW50YWdlOiByb2xsb3V0UGVyY2VudGFnZUl0ZW1WTS5wZXJjZW50YWdlLFxuICAgICAgICAgICAgdmFsdWU6IHJvbGxvdXRQZXJjZW50YWdlSXRlbVZNLnZhbHVlXG4gICAgICAgICAgfSksXG4gICAgICAgIHZhbHVlOiBzZXR0aW5nVmFsdWVWTS52YWx1ZVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHN1Ym1pdCgpIHtcbiAgICBpZiAoIXRoaXMuZm9ybUdyb3VwIHx8ICF0aGlzLmZvcm1Hcm91cC52YWxpZCkge1xuICAgICAgdGhpcy5zaG93RmVlZEJhY2tNZXNzYWdlID0gdHJ1ZTtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNob3dGZWVkQmFja01lc3NhZ2UgPSBmYWxzZTtcbiAgICB0aGlzLnN1Ym1pdHRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgdXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsID0gPFVwZGF0ZVNldHRpbmdWYWx1ZXNNb2RlbD57XG4gICAgICBzZXR0aW5nVmFsdWVzOiB0aGlzLmJ1aWxkVXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLnNldHRpbmdWYWx1ZXMudmFsdWUpLFxuICAgICAga25vd25MYXN0VXBkYXRlZEF0OiB0aGlzLnNldHRpbmdWYWx1ZXMubGFzdFVwZGF0ZWRBdCxcbiAgICAgIGZvcmNlZDogZmFsc2VcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuc2V0dGluZ1ZhbHVlcy5yZWFzb25SZXF1aXJlZCkge1xuICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihSZWFzb25EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgd2lkdGg6ICc0NTBweCdcbiAgICAgIH0pO1xuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmJ1dHRvbiA9PT0gJ3NhdmUnICYmIHJlc3VsdC5yZWFzb24pIHtcblxuICAgICAgICAgICAgdXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsLnJlYXNvbiA9IHJlc3VsdC5yZWFzb247XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNldHRpbmdWYWx1ZXModXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdWJtaXR0aW5nID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVNldHRpbmdWYWx1ZXModXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsKTtcbiAgfVxuXG4gIHVwZGF0ZVNldHRpbmdWYWx1ZXModXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsOiBhbnkpIHtcbiAgICB0aGlzLm9uU2F2ZSh1cGRhdGVTZXR0aW5nVmFsdWVzTW9kZWwpLnN1YnNjcmliZShzZXR0aW5nVmFsdWVzID0+IHtcbiAgICAgIHRoaXMuc2V0dGluZ1ZhbHVlcyA9IHNldHRpbmdWYWx1ZXM7XG4gICAgICB0aGlzLmNyZWF0ZUZvcm1Hcm91cCgpO1xuICAgICAgdGhpcy5zdWJtaXR0aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW5Gcm9tQ29tcG9uZW50KFNhdmVTbmFja2JhckNvbXBvbmVudCwgeyBkdXJhdGlvbjogNTAwMCwgcGFuZWxDbGFzczogJ2dyZWVuLXNuYWNrYmFyJyB9KTtcbiAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMCAmJiBlcnJvci5lcnJvclxuICAgICAgICAmJiBlcnJvci5lcnJvci5Lbm93bkxhc3RVcGRhdGVkQXQgJiYgZXJyb3IuZXJyb3IuS25vd25MYXN0VXBkYXRlZEF0WzBdID09PSAnQ29uY3VycmVudCB1cGRhdGUnKSB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQ29uY3VycmVudERpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgIHdpZHRoOiAnNTYwcHgnXG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmJ1dHRvbiA9PT0gJ3NhdmUnKSB7XG4gICAgICAgICAgICAgIHVwZGF0ZVNldHRpbmdWYWx1ZXNNb2RlbC5mb3JjZWQgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNldHRpbmdWYWx1ZXModXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMucmVsb2FkU2V0dGluZ1ZhbHVlcygpO1xuICAgICAgICAgICAgICB0aGlzLnN1Ym1pdHRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDAgJiYgZXJyb3IuZXJyb3IgJiYgZXJyb3IuZXJyb3IuUmVhc29uICYmIGVycm9yLmVycm9yLlJlYXNvblswXSA9PT0gJ1JlYXNvbiByZXF1aXJlZCcpIHtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihSZWFzb25EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICB3aWR0aDogJzQ1MHB4J1xuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5idXR0b24gPT09ICdzYXZlJyAmJiByZXN1bHQucmVhc29uKSB7XG4gICAgICAgICAgICAgIHVwZGF0ZVNldHRpbmdWYWx1ZXNNb2RlbC5yZWFzb24gPSByZXN1bHQucmVhc29uO1xuICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNldHRpbmdWYWx1ZXModXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuc3VibWl0dGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZm9ybUdyb3VwLnNldEVycm9ycyh7IGludGVybmFsU2VydmVyRXJyb3I6ICdJbnRlcm5hbCBzZXJ2ZXIgZXJyb3InIH0pO1xuICAgICAgdGhpcy5zaG93RmVlZEJhY2tNZXNzYWdlID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZVJldmVydFllcygpIHtcbiAgICB0aGlzLnNob3dSZXZlcnRRdWVzdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMucmVsb2FkU2V0dGluZ1ZhbHVlcygpO1xuICB9XG5cbiAgaGFuZGxlUmV2ZXJ0Q2FuY2VsKCkge1xuICAgIHRoaXMuc2hvd1JldmVydFF1ZXN0aW9uID0gZmFsc2U7XG4gIH1cblxuICBvbkVkaXRTZXR0aW5nUmVxdWVzdGVkKHNldHRpbmc6IGFueSkge1xuICAgIHRoaXMuZWRpdFNldHRpbmdSZXF1ZXN0ZWQuZW1pdCh7XG4gICAgICBzZXR0aW5nOiBzZXR0aW5nLnNldHRpbmcsXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5zZXR0aW5nVmFsdWVzLmVudmlyb25tZW50LFxuICAgICAgY29uZmlnOiB0aGlzLnNldHRpbmdWYWx1ZXMuY29uZmlnXG4gICAgfSk7XG4gIH1cblxuICBvbkRlbGV0ZVNldHRpbmdSZXF1ZXN0ZWQoc2V0dGluZzogYW55KSB7XG4gICAgdGhpcy5kZWxldGVTZXR0aW5nUmVxdWVzdGVkLmVtaXQoe1xuICAgICAgc2V0dGluZzogc2V0dGluZy5zZXR0aW5nLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuc2V0dGluZ1ZhbHVlcy5lbnZpcm9ubWVudCxcbiAgICAgIGNvbmZpZzogdGhpcy5zZXR0aW5nVmFsdWVzLmNvbmZpZ1xuICAgIH0pO1xuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIChuZ1N1Ym1pdCk9XCJzdWJtaXQoKVwiICpuZ0lmPVwiIWxvYWRpbmdcIj5cbiAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIiAqbmdGb3I9XCJsZXQgc2V0dGluZ1ZhbHVlRnJvbUdyb3VwIG9mIGdldFNldHRpbmdWYWx1ZUZvcm1Hcm91cHMoKTsgbGV0IGkgPSBpbmRleFwiPlxuICAgIDxzZXR0aW5nIFtmb3JtR3JvdXBdPVwic2V0dGluZ1ZhbHVlRnJvbUdyb3VwXCIgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCIgW2NhbkVkaXRTZXR0aW5nXT1cImNhbkVkaXRTZXR0aW5nXCJcbiAgICAgIFtjYW5EZWxldGVTZXR0aW5nXT1cImNhbkRlbGV0ZVNldHRpbmdcIiAoZWRpdFNldHRpbmdSZXF1ZXN0ZWQpPVwib25FZGl0U2V0dGluZ1JlcXVlc3RlZCgkZXZlbnQpXCJcbiAgICAgIChkZWxldGVTZXR0aW5nUmVxdWVzdGVkKT1cIm9uRGVsZXRlU2V0dGluZ1JlcXVlc3RlZCgkZXZlbnQpXCIgW2RlbGV0ZVNldHRpbmdUZXh0XT1cImRlbGV0ZVNldHRpbmdUZXh0XCJcbiAgICAgIFtzaG93RW52aXJvbm1lbnROYW1lXT1cInNob3dFbnZpcm9ubWVudE5hbWVcIiBbc2VnbWVudHNdPVwic2VnbWVudHNcIiBbcHJvZHVjdElkXT1cInByb2R1Y3RJZFwiIFtjb25maWdJZF09XCJjb25maWdJZFwiXG4gICAgICBbZW52aXJvbm1lbnRJZF09XCJlbnZpcm9ubWVudElkXCIgW2Rhc2hib2FyZEJhc2VQYXRoXT1cImRhc2hib2FyZEJhc2VQYXRoXCI+XG4gICAgPC9zZXR0aW5nPlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwic2F2ZVwiICpuZ0lmPVwiIXJlYWRPbmx5ICYmICFzdWJtaXR0aW5nICYmIGZvcm1Hcm91cC5kaXJ0eVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmZWVkYmFja1wiICpuZ0lmPVwiZm9ybUdyb3VwLnRvdWNoZWQgJiYgZm9ybUdyb3VwLmludmFsaWQgJiYgc2hvd0ZlZWRCYWNrTWVzc2FnZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImVycm9yXCIgKm5nSWY9XCJmb3JtR3JvdXAuZXJyb3JzICYmIGZvcm1Hcm91cC5lcnJvcnMuaW50ZXJuYWxTZXJ2ZXJFcnJvclwiPlxuICAgICAgICA8c3Bhbj5Tb21ldGhpbmcgd2VudCB3cm9uZyBhbmQgd2UgY291bGQgbm90IHNhdmUgeW91ciBzZXR0aW5ncy4gWW91IGNhbiB0cnkgYWdhaW4gb3IgPGFcbiAgICAgICAgICAgIGhyZWY9XCJodHRwczovL2NvbmZpZ2NhdC5jb20vc3VwcG9ydFwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5jb250YWN0IHVzLjwvYT48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlcnJvclwiICpuZ0lmPVwiIWZvcm1Hcm91cC5lcnJvcnMgfHwgIWZvcm1Hcm91cC5lcnJvcnMuaW50ZXJuYWxTZXJ2ZXJFcnJvclwiPlxuICAgICAgICA8c3Bhbj5PaCBubyEgQSBmZWF0dXJlIGZsYWcgaGFzIGludmFsaWQgb3IgbWlzc2luZyBkYXRhLjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiAqbmdJZj1cIiFzaG93UmV2ZXJ0UXVlc3Rpb25cIiAoY2xpY2spPVwic2hvd1JldmVydFF1ZXN0aW9uID0gdHJ1ZVwiPlxuICAgICAgPG1hdC1pY29uPmhpc3Rvcnk8L21hdC1pY29uPjxzcGFuPlJldmVydCBjaGFuZ2VzPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxkaXYgKm5nSWY9XCJzaG93UmV2ZXJ0UXVlc3Rpb25cIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicmV2ZXJ0XCI+UmV2ZXJ0IHRvIGxhc3Qgc2F2ZWQgc3RhdGU/PC9zcGFuPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJ5ZXNcIiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cImhhbmRsZVJldmVydFllcygpXCI+WWVzPC9idXR0b24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gKGNsaWNrKT1cImhhbmRsZVJldmVydENhbmNlbCgpXCI+Tm88L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uIGNsYXNzPVwic2F2ZS1idXR0b25cIiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJ3YXJuXCIgdHlwZT1cInN1Ym1pdFwiIFtkaXNhYmxlZF09XCJzdWJtaXR0aW5nXCI+XG4gICAgICA8bWF0LWljb24+YmFja3VwPC9tYXQtaWNvbj4gPHNwYW4+IFNhdmUgJiBwdWJsaXNoIGNoYW5nZXM8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9mb3JtPiJdfQ==
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9zZXR0aW5nLWxpc3Qvc2V0dGluZy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL2xpYi9zZXR0aW5nLWxpc3Qvc2V0dGluZy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBRzdGLE9BQU8sRUFBRSxRQUFRLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBRzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDOzs7Ozs7Ozs7O0FBU3pGLE1BQU0sT0FBTyxvQkFBb0I7SUFnQy9CLFlBQW9CLFVBQWlDLEVBQzNDLFFBQXFCLEVBQ3JCLE1BQWlCO1FBRlAsZUFBVSxHQUFWLFVBQVUsQ0FBdUI7UUFDM0MsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBN0JsQixzQkFBaUIsR0FBRywyQkFBMkIsQ0FBQztRQUVoRCxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFLekIsc0JBQWlCLEdBQUcsZ0JBQWdCLENBQUM7UUFDckMsd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRTNCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQywyQkFBc0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVDLHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFJakQsWUFBTyxHQUFH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QUF3Qjs4SkFNekIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNldHRpbmdWYWx1ZXNNb2RlbCwgVXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsIH0gZnJvbSAnLi4vX21vZGVscyc7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUFycmF5LCBVbnR5cGVkRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFJlYXNvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZ3MvcmVhc29uLWRpYWxvZy9yZWFzb24tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTYXZlU25hY2tiYXJDb21wb25lbnQgfSBmcm9tICcuLi9kaWFsb2dzL3NhdmUtc25hY2tiYXIvc2F2ZS1zbmFja2Jhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2V0dGluZ0xpc3RGb3JtSGVscGVyIH0gZnJvbSAnLi4vX3NlcnZpY2VzL3NldHRpbmctbGlzdC1mb3JtLWhlbHBlcic7XG5pbXBvcnQgeyBSb2xsb3V0UGVyY2VudGFnZUl0ZW1Nb2RlbCwgUm9sbG91dFJ1bGVNb2RlbCwgU2VnbWVudExpc3RNb2RlbCwgU2V0dGluZ01vZGVsLCBVcGRhdGVTZXR0aW5nVmFsdWVNb2RlbCB9IGZyb20gJ25nLWNvbmZpZ2NhdC1wdWJsaWNhcGknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjb25maWdjYXQtc2V0dGluZy1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NldHRpbmctbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NldHRpbmctbGlzdC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNldHRpbmdMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHByb2R1Y3RJZCE6IHN0cmluZztcbiAgQElucHV0KCkgZW52aXJvbm1lbnRJZCE6IHN0cmluZztcbiAgQElucHV0KCkgY29uZmlnSWQhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRhc2hib2FyZEJhc2VQYXRoID0gJ2h0dHBzOi8vYXBwLmNvbmZpZ2NhdC5jb20nO1xuXG4gIEBJbnB1dCgpIGNhbkRlbGV0ZVNldHRpbmcgPSBmYWxzZTtcblxuICBASW5wdXQoKSBvblNhdmUhOiAodmFsdWU6IFVwZGF0ZVNldHRpbmdWYWx1ZXNNb2RlbCkgPT4gT2JzZXJ2YWJsZTxTZXR0aW5nVmFsdWVzTW9kZWw+O1xuICBASW5wdXQoKSBsb2FkU2V0dGluZ1ZhbHVlcyE6ICgpID0+IE9ic2VydmFibGU8U2V0dGluZ1ZhbHVlc01vZGVsPjtcbiAgQElucHV0KCkgbG9hZFNlZ21lbnRzITogKCkgPT4gT2JzZXJ2YWJsZTxTZWdtZW50TGlzdE1vZGVsW10+O1xuICBASW5wdXQoKSBkZWxldGVTZXR0aW5nVGV4dCA9ICdEZWxldGUgc2V0dGluZyc7XG4gIEBJbnB1dCgpIHNob3dFbnZpcm9ubWVudE5hbWUgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgbG9hZFN1Y2NlZWRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRlbGV0ZVNldHRpbmdSZXF1ZXN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBmb3JtVmFsdWVzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBmb3JtVmFsdWVzQ2hhbmdlZFN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbiB8IG51bGw7XG5cbiAgbG9hZGluZyA9IHRydWU7XG5cbiAgc2V0dGluZ1ZhbHVlcyE6IFNldHRpbmdWYWx1ZXNNb2RlbDtcbiAgc2VnbWVudHMhOiBTZWdtZW50TGlzdE1vZGVsW107XG4gIGZvcm1Hcm91cCE6IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgc3VibWl0dGluZyA9IGZhbHNlO1xuICBzaG93UmV2ZXJ0UXVlc3Rpb24gPSBmYWxzZTtcbiAgc2hvd0ZlZWRCYWNrTWVzc2FnZSA9IGZhbHNlO1xuICByZWFkT25seSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybUhlbHBlcjogU2V0dGluZ0xpc3RGb3JtSGVscGVyLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2cpIHsgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMucmVsb2FkU2V0dGluZ1ZhbHVlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuZm9ybVZhbHVlc0NoYW5nZWRTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZm9ybVZhbHVlc0NoYW5nZWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuZm9ybVZhbHVlc0NoYW5nZWRTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHJlbG9hZFNldHRpbmdWYWx1ZXMoKSB7XG4gICAgdGhpcy5zaG93RmVlZEJhY2tNZXNzYWdlID0gZmFsc2U7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBmb3JrSm9pbih7XG4gICAgICBzZWdtZW50czogdGhpcy5sb2FkU2VnbWVudHMoKSxcbiAgICAgIHNldHRpbmdWYWx1ZXM6IHRoaXMubG9hZFNldHRpbmdWYWx1ZXMoKVxuICAgIH0pLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgdGhpcy5yZWFkT25seSA9IHJlc3VsdC5zZXR0aW5nVmFsdWVzLnJlYWRPbmx5O1xuICAgICAgdGhpcy5zZXR0aW5nVmFsdWVzID0gcmVzdWx0LnNldHRpbmdWYWx1ZXM7XG4gICAgICB0aGlzLnNlZ21lbnRzID0gcmVzdWx0LnNlZ21lbnRzO1xuICAgICAgdGhpcy5jcmVhdGVGb3JtR3JvdXAoKTtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5sb2FkU3VjY2VlZGVkLmVtaXQodHJ1ZSk7XG4gICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdPb29wcy4gV2UgY291bGQgbm90IGxvYWQgeW91ciBGZWF0dXJlIEZsYWdzIGFuZCBTZXR0aW5ncy4gUGxlYXNlIHRyeSBhZ2FpbiBvciBjb250YWN0IHVzLicsXG4gICAgICAgICAgJ0Rpc21pc3MnLCB7IGR1cmF0aW9uOiA2MDAwMCwgcGFuZWxDbGFzczogJ3JlZC1zbmFja2JhcicgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUZvcm1Hcm91cCgpIHtcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMuZm9ybUhlbHBlci5jcmVhdGVTZXR0aW5nVmFsdWVzRm9ybUdyb3VwKHRoaXMuc2V0dGluZ1ZhbHVlcyk7XG4gICAgdGhpcy5mb3JtVmFsdWVzQ2hhbmdlZFN1YnNjcmlwdGlvbiA9IHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5mb3JtVmFsdWVzQ2hhbmdlZC5lbWl0KCk7XG4gICAgfSk7XG4gIH1cblxuICBzZXR0aW5nVmFsdWVzRm9ybUFycmF5KCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ3NldHRpbmdWYWx1ZXMnKSBhcyBVbnR5cGVkRm9ybUFycmF5O1xuICB9XG5cbiAgZ2V0U2V0dGluZ1ZhbHVlRm9ybUdyb3VwcygpIHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5nVmFsdWVzRm9ybUFycmF5KCkuY29udHJvbHMubWFwKGMgPT4gYyBhcyBVbnR5cGVkRm9ybUdyb3VwKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRVcGRhdGVTZXR0aW5nVmFsdWVzTW9kZWwoc2V0dGluZ1ZhbHVlc1ZNOiBVcGRhdGVTZXR0aW5nVmFsdWVNb2RlbFtdKSB7XG4gICAgcmV0dXJuIHNldHRpbmdWYWx1ZXNWTS5tYXAoc2V0dGluZ1ZhbHVlVk0gPT4ge1xuICAgICAgcmV0dXJuIDxVcGRhdGVTZXR0aW5nVmFsdWVNb2RlbD5cbiAgICAgICAge1xuICAgICAgICAgIHJvbGxvdXRSdWxlczogc2V0dGluZ1ZhbHVlVk0ucm9sbG91dFJ1bGVzPy5tYXAocm9sbG91dFJ1bGVWTSA9PlxuICAgICAgICAgICAgPFJvbGxvdXRSdWxlTW9kZWw+e1xuICAgICAgICAgICAgICBjb21wYXJpc29uQXR0cmlidXRlOiByb2xsb3V0UnVsZVZNLmNvbXBhcmlzb25BdHRyaWJ1dGUsXG4gICAgICAgICAgICAgIGNvbXBhcmF0b3I6IHJvbGxvdXRSdWxlVk0uY29tcGFyYXRvcixcbiAgICAgICAgICAgICAgY29tcGFyaXNvblZhbHVlOiB0aGlzLmZvcm1IZWxwZXIubm9ybWFsaXplQ29tcGFyaXNvblZhbHVlKHJvbGxvdXRSdWxlVk0uY29tcGFyYXRvciwgcm9sbG91dFJ1bGVWTS5jb21wYXJpc29uVmFsdWUpLFxuICAgICAgICAgICAgICBzZWdtZW50Q29tcGFyYXRvcjogcm9sbG91dFJ1bGVWTS5zZWdtZW50Q29tcGFyYXRvcixcbiAgICAgICAgICAgICAgc2VnbWVudElkOiByb2xsb3V0UnVsZVZNLnNlZ21lbnRJZCxcbiAgICAgICAgICAgICAgdmFsdWU6IHJvbGxvdXRSdWxlVk0udmFsdWVcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIHJvbGxvdXRQZXJjZW50YWdlSXRlbXM6IHNldHRpbmdWYWx1ZVZNLnJvbGxvdXRQZXJjZW50YWdlSXRlbXM/Lm1hcChyb2xsb3V0UGVyY2VudGFnZUl0ZW1WTSA9PlxuICAgICAgICAgICAgPFJvbGxvdXRQZXJjZW50YWdlSXRlbU1vZGVsPntcbiAgICAgICAgICAgICAgcGVyY2VudGFnZTogcm9sbG91dFBlcmNlbnRhZ2VJdGVtVk0ucGVyY2VudGFnZSxcbiAgICAgICAgICAgICAgdmFsdWU6IHJvbGxvdXRQZXJjZW50YWdlSXRlbVZNLnZhbHVlXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB2YWx1ZTogc2V0dGluZ1ZhbHVlVk0udmFsdWVcbiAgICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHN1Ym1pdCgpIHtcbiAgICBpZiAoIXRoaXMuZm9ybUdyb3VwIHx8ICF0aGlzLmZvcm1Hcm91cC52YWxpZCkge1xuICAgICAgdGhpcy5zaG93RmVlZEJhY2tNZXNzYWdlID0gdHJ1ZTtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNob3dGZWVkQmFja01lc3NhZ2UgPSBmYWxzZTtcbiAgICB0aGlzLnN1Ym1pdHRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgdXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsID0gPFVwZGF0ZVNldHRpbmdWYWx1ZXNNb2RlbD57XG4gICAgICBzZXR0aW5nVmFsdWVzOiB0aGlzLmJ1aWxkVXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzLnNldHRpbmdWYWx1ZXMudmFsdWUpLFxuICAgICAga25vd25MYXN0VXBkYXRlZEF0OiB0aGlzLnNldHRpbmdWYWx1ZXMubGFzdFVwZGF0ZWRBdCxcbiAgICAgIGZvcmNlZDogZmFsc2VcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuc2V0dGluZ1ZhbHVlcy5yZWFzb25SZXF1aXJlZCkge1xuICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihSZWFzb25EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgd2lkdGg6ICc0NTBweCdcbiAgICAgIH0pO1xuICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmJ1dHRvbiA9PT0gJ3NhdmUnICYmIHJlc3VsdC5yZWFzb24pIHtcblxuICAgICAgICAgICAgdXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsLnJlYXNvbiA9IHJlc3VsdC5yZWFzb247XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNldHRpbmdWYWx1ZXModXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdWJtaXR0aW5nID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVNldHRpbmdWYWx1ZXModXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsKTtcbiAgfVxuXG4gIHVwZGF0ZVNldHRpbmdWYWx1ZXModXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsOiBhbnkpIHtcbiAgICB0aGlzLm9uU2F2ZSh1cGRhdGVTZXR0aW5nVmFsdWVzTW9kZWwpLnN1YnNjcmliZShzZXR0aW5nVmFsdWVzID0+IHtcbiAgICAgIHRoaXMuc2V0dGluZ1ZhbHVlcyA9IHNldHRpbmdWYWx1ZXM7XG4gICAgICB0aGlzLmNyZWF0ZUZvcm1Hcm91cCgpO1xuICAgICAgdGhpcy5zdWJtaXR0aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW5Gcm9tQ29tcG9uZW50KFNhdmVTbmFja2JhckNvbXBvbmVudCwgeyBkdXJhdGlvbjogNTAwMCwgcGFuZWxDbGFzczogJ2dyZWVuLXNuYWNrYmFyJyB9KTtcbiAgICB9LCAoZXJyb3IpID0+IHtcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMCAmJiBlcnJvci5lcnJvciAmJiBlcnJvci5lcnJvci5SZWFzb24gJiYgZXJyb3IuZXJyb3IuUmVhc29uWzBdID09PSAnUmVhc29uIHJlcXVpcmVkJykge1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFJlYXNvbkRpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgIHdpZHRoOiAnNDUwcHgnXG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LmJ1dHRvbiA9PT0gJ3NhdmUnICYmIHJlc3VsdC5yZWFzb24pIHtcbiAgICAgICAgICAgICAgdXBkYXRlU2V0dGluZ1ZhbHVlc01vZGVsLnJlYXNvbiA9IHJlc3VsdC5yZWFzb247XG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlU2V0dGluZ1ZhbHVlcyh1cGRhdGVTZXR0aW5nVmFsdWVzTW9kZWwpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zdWJtaXR0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5mb3JtR3JvdXAuc2V0RXJyb3JzKHsgaW50ZXJuYWxTZXJ2ZXJFcnJvcjogJ0ludGVybmFsIHNlcnZlciBlcnJvcicgfSk7XG4gICAgICB0aGlzLnNob3dGZWVkQmFja01lc3NhZ2UgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlUmV2ZXJ0WWVzKCkge1xuICAgIHRoaXMuc2hvd1JldmVydFF1ZXN0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5yZWxvYWRTZXR0aW5nVmFsdWVzKCk7XG4gIH1cblxuICBoYW5kbGVSZXZlcnRDYW5jZWwoKSB7XG4gICAgdGhpcy5zaG93UmV2ZXJ0UXVlc3Rpb24gPSBmYWxzZTtcbiAgfVxuXG4gIG9uRGVsZXRlU2V0dGluZ1JlcXVlc3RlZChzZXR0aW5nOiB7IHNldHRpbmc6IFNldHRpbmdNb2RlbCB9KSB7XG4gICAgdGhpcy5kZWxldGVTZXR0aW5nUmVxdWVzdGVkLmVtaXQoe1xuICAgICAgc2V0dGluZzogc2V0dGluZy5zZXR0aW5nLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuc2V0dGluZ1ZhbHVlcy5lbnZpcm9ubWVudCxcbiAgICAgIGNvbmZpZzogdGhpcy5zZXR0aW5nVmFsdWVzLmNvbmZpZ1xuICAgIH0pO1xuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIChuZ1N1Ym1pdCk9XCJzdWJtaXQoKVwiICpuZ0lmPVwiIWxvYWRpbmdcIj5cbiAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIiAqbmdGb3I9XCJsZXQgc2V0dGluZ1ZhbHVlRnJvbUdyb3VwIG9mIGdldFNldHRpbmdWYWx1ZUZvcm1Hcm91cHMoKTsgbGV0IGkgPSBpbmRleFwiPlxuICAgIDxzZXR0aW5nIFtmb3JtR3JvdXBdPVwic2V0dGluZ1ZhbHVlRnJvbUdyb3VwXCIgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCIgW2NhbkRlbGV0ZVNldHRpbmddPVwiY2FuRGVsZXRlU2V0dGluZ1wiXG4gICAgICAoZGVsZXRlU2V0dGluZ1JlcXVlc3RlZCk9XCJvbkRlbGV0ZVNldHRpbmdSZXF1ZXN0ZWQoJGV2ZW50KVwiIFtkZWxldGVTZXR0aW5nVGV4dF09XCJkZWxldGVTZXR0aW5nVGV4dFwiXG4gICAgICBbc2hvd0Vudmlyb25tZW50TmFtZV09XCJzaG93RW52aXJvbm1lbnROYW1lXCIgW3NlZ21lbnRzXT1cInNlZ21lbnRzXCIgW3Byb2R1Y3RJZF09XCJwcm9kdWN0SWRcIiBbY29uZmlnSWRdPVwiY29uZmlnSWRcIlxuICAgICAgW2Vudmlyb25tZW50SWRdPVwiZW52aXJvbm1lbnRJZFwiIFtkYXNoYm9hcmRCYXNlUGF0aF09XCJkYXNoYm9hcmRCYXNlUGF0aFwiPlxuICAgIDwvc2V0dGluZz5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInNhdmVcIiAqbmdJZj1cIiFyZWFkT25seSAmJiAhc3VibWl0dGluZyAmJiBmb3JtR3JvdXAuZGlydHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmVlZGJhY2tcIiAqbmdJZj1cImZvcm1Hcm91cC50b3VjaGVkICYmIGZvcm1Hcm91cC5pbnZhbGlkICYmIHNob3dGZWVkQmFja01lc3NhZ2VcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlcnJvclwiICpuZ0lmPVwiZm9ybUdyb3VwLmVycm9ycyAmJiBmb3JtR3JvdXAuZXJyb3JzLmludGVybmFsU2VydmVyRXJyb3JcIj5cbiAgICAgICAgPHNwYW4+U29tZXRoaW5nIHdlbnQgd3JvbmcgYW5kIHdlIGNvdWxkIG5vdCBzYXZlIHlvdXIgc2V0dGluZ3MuIFlvdSBjYW4gdHJ5IGFnYWluIG9yIDxhXG4gICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9jb25maWdjYXQuY29tL3N1cHBvcnRcIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+Y29udGFjdCB1cy48L2E+PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZXJyb3JcIiAqbmdJZj1cIiFmb3JtR3JvdXAuZXJyb3JzIHx8ICFmb3JtR3JvdXAuZXJyb3JzLmludGVybmFsU2VydmVyRXJyb3JcIj5cbiAgICAgICAgPHNwYW4+T2ggbm8hIEEgZmVhdHVyZSBmbGFnIGhhcyBpbnZhbGlkIG9yIG1pc3NpbmcgZGF0YS48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gKm5nSWY9XCIhc2hvd1JldmVydFF1ZXN0aW9uXCIgKGNsaWNrKT1cInNob3dSZXZlcnRRdWVzdGlvbiA9IHRydWVcIj5cbiAgICAgIDxtYXQtaWNvbj5oaXN0b3J5PC9tYXQtaWNvbj48c3Bhbj5SZXZlcnQgY2hhbmdlczwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8ZGl2ICpuZ0lmPVwic2hvd1JldmVydFF1ZXN0aW9uXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInJldmVydFwiPlJldmVydCB0byBsYXN0IHNhdmVkIHN0YXRlPzwvc3Bhbj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwieWVzXCIgbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJoYW5kbGVSZXZlcnRZZXMoKVwiPlllczwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJoYW5kbGVSZXZlcnRDYW5jZWwoKVwiPk5vPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInNhdmUtYnV0dG9uXCIgbWF0LWZsYXQtYnV0dG9uIGNvbG9yPVwid2FyblwiIHR5cGU9XCJzdWJtaXRcIiBbZGlzYWJsZWRdPVwic3VibWl0dGluZ1wiPlxuICAgICAgPG1hdC1pY29uPmJhY2t1cDwvbWF0LWljb24+IDxzcGFuPiBTYXZlICYgcHVibGlzaCBjaGFuZ2VzPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZm9ybT4iXX0=
@@ -10,4 +10,5 @@ export * from './lib/selects/product-select/product-select.component';
10
10
  export * from './lib/selects/config-select/config-select.component';
11
11
  export * from './lib/selects/environment-select/environment-select.component';
12
12
  export * from './lib/selects/setting-select/setting-select.component';
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsK0RBQStELENBQUM7QUFDOUUsY0FBYyx1REFBdUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgbmctY29uZmlnY2F0LXB1YmxpY2FwaS11aVxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL19kaXJlY3RpdmVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL19zZXJ2aWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXR0aW5nLWl0ZW0vc2V0dGluZy1pdGVtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdXRob3JpemF0aW9uL2F1dGhvcml6YXRpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlbGVjdHMvcHJvZHVjdC1zZWxlY3QvcHJvZHVjdC1zZWxlY3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlbGVjdHMvY29uZmlnLXNlbGVjdC9jb25maWctc2VsZWN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZWxlY3RzL2Vudmlyb25tZW50LXNlbGVjdC9lbnZpcm9ubWVudC1zZWxlY3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlbGVjdHMvc2V0dGluZy1zZWxlY3Qvc2V0dGluZy1zZWxlY3QuY29tcG9uZW50JztcbiJdfQ==
13
+ export * from './lib/dialogs/delete-setting-dialog/delete-setting-dialog.component';
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25nLWNvbmZpZ2NhdC1wdWJsaWNhcGktdWkvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsK0RBQStELENBQUM7QUFDOUUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLHFFQUFxRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZy1jb25maWdjYXQtcHVibGljYXBpLXVpXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbmctY29uZmlnY2F0LXB1YmxpY2FwaS11aS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvX2RpcmVjdGl2ZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvX3NlcnZpY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NldHRpbmctaXRlbS9zZXR0aW5nLWl0ZW0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGhvcml6YXRpb24vYXV0aG9yaXphdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VsZWN0cy9wcm9kdWN0LXNlbGVjdC9wcm9kdWN0LXNlbGVjdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VsZWN0cy9jb25maWctc2VsZWN0L2NvbmZpZy1zZWxlY3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlbGVjdHMvZW52aXJvbm1lbnQtc2VsZWN0L2Vudmlyb25tZW50LXNlbGVjdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VsZWN0cy9zZXR0aW5nLXNlbGVjdC9zZXR0aW5nLXNlbGVjdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlhbG9ncy9kZWxldGUtc2V0dGluZy1kaWFsb2cvZGVsZXRlLXNldHRpbmctZGlhbG9nLmNvbXBvbmVudCc7XG4iXX0=