@c8y/ngx-components 1018.0.206 → 1018.0.208

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 (69) hide show
  1. package/ecosystem/shared/ecosystem.constants.d.ts +1 -1
  2. package/esm2020/auth-configuration/sso-configuration/template-parts/external-token-config.component.mjs +3 -3
  3. package/esm2020/cockpit-config/cockpit-configuration.component.mjs +3 -3
  4. package/esm2020/cockpit-config/setup/cockpit-setup-step3.component.mjs +3 -3
  5. package/esm2020/core/file-picker-new/file-picker-new.component.mjs +3 -3
  6. package/esm2020/core/file-picker-new/file-picker-validators.mjs +4 -4
  7. package/esm2020/core/help/help.component.mjs +3 -3
  8. package/esm2020/ecosystem/license-confirm/license-confirm-modal.component.mjs +5 -5
  9. package/esm2020/ecosystem/shared/ecosystem.constants.mjs +2 -2
  10. package/esm2020/icon-selector/icons/hands/index.mjs +2 -2
  11. package/esm2020/map/map-status.component.mjs +3 -3
  12. package/esm2020/protocol-lwm2m/factories/lwm2m-device-grid.factory.mjs +2 -2
  13. package/esm2020/sub-assets/assign-devices/assign-devices.component.mjs +3 -3
  14. package/esm2020/widgets/implementations/map/map-widget-config.component.mjs +3 -3
  15. package/fesm2015/c8y-ngx-components-auth-configuration.mjs +2 -2
  16. package/fesm2015/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  17. package/fesm2015/c8y-ngx-components-cockpit-config.mjs +4 -4
  18. package/fesm2015/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  19. package/fesm2015/c8y-ngx-components-ecosystem-license-confirm.mjs +4 -4
  20. package/fesm2015/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
  21. package/fesm2015/c8y-ngx-components-ecosystem-shared.mjs +1 -1
  22. package/fesm2015/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  23. package/fesm2015/c8y-ngx-components-icon-selector-icons-hands.mjs +1 -1
  24. package/fesm2015/c8y-ngx-components-icon-selector-icons-hands.mjs.map +1 -1
  25. package/fesm2015/c8y-ngx-components-map.mjs +2 -2
  26. package/fesm2015/c8y-ngx-components-map.mjs.map +1 -1
  27. package/fesm2015/c8y-ngx-components-protocol-lwm2m-factories.mjs +1 -1
  28. package/fesm2015/c8y-ngx-components-protocol-lwm2m-factories.mjs.map +1 -1
  29. package/fesm2015/c8y-ngx-components-sub-assets.mjs +2 -2
  30. package/fesm2015/c8y-ngx-components-sub-assets.mjs.map +1 -1
  31. package/fesm2015/c8y-ngx-components-widgets-implementations-map.mjs +2 -2
  32. package/fesm2015/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  33. package/fesm2015/c8y-ngx-components.mjs +7 -7
  34. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  35. package/fesm2020/c8y-ngx-components-auth-configuration.mjs +2 -2
  36. package/fesm2020/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  37. package/fesm2020/c8y-ngx-components-cockpit-config.mjs +4 -4
  38. package/fesm2020/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  39. package/fesm2020/c8y-ngx-components-ecosystem-license-confirm.mjs +4 -4
  40. package/fesm2020/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
  41. package/fesm2020/c8y-ngx-components-ecosystem-shared.mjs +1 -1
  42. package/fesm2020/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  43. package/fesm2020/c8y-ngx-components-icon-selector-icons-hands.mjs +1 -1
  44. package/fesm2020/c8y-ngx-components-icon-selector-icons-hands.mjs.map +1 -1
  45. package/fesm2020/c8y-ngx-components-map.mjs +2 -2
  46. package/fesm2020/c8y-ngx-components-map.mjs.map +1 -1
  47. package/fesm2020/c8y-ngx-components-protocol-lwm2m-factories.mjs +1 -1
  48. package/fesm2020/c8y-ngx-components-protocol-lwm2m-factories.mjs.map +1 -1
  49. package/fesm2020/c8y-ngx-components-sub-assets.mjs +2 -2
  50. package/fesm2020/c8y-ngx-components-sub-assets.mjs.map +1 -1
  51. package/fesm2020/c8y-ngx-components-widgets-implementations-map.mjs +2 -2
  52. package/fesm2020/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  53. package/fesm2020/c8y-ngx-components.mjs +7 -7
  54. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  55. package/icon-selector/icons/hands/index.d.ts +1 -1
  56. package/locales/de.po +519 -166
  57. package/locales/en.po +4 -1
  58. package/locales/es.po +816 -305
  59. package/locales/fr.po +732 -220
  60. package/locales/ja_JP.po +812 -225
  61. package/locales/ko.po +940 -429
  62. package/locales/locales.pot +20 -38
  63. package/locales/nl.po +804 -293
  64. package/locales/pl.po +712 -222
  65. package/locales/pt_BR.po +875 -364
  66. package/locales/ru.po +752 -250
  67. package/locales/zh_CN.po +823 -312
  68. package/locales/zh_TW.po +1188 -677
  69. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import { PropertiesListItem } from '@c8y/ngx-components';
2
2
  export declare const ERROR_MESSAGES: {
3
- ALREADY_EXIST: "Could not deploy the application, as the application with the same name, context-path or key exist already.";
3
+ ALREADY_EXIST: "Could not deploy the application, as an application with the same name`KEEP_ORIGINAL`, context-path`KEEP_ORIGINAL` or key`KEEP_ORIGINAL` exists already.";
4
4
  TYPE_VALIDATION: "Wrong file format. Expected a *.zip file with a valid manifest.";
5
5
  ALREADY_SUBSCRIBED: "Could not subscribe to the microservice because another application with the same context path is already subscribed.";
6
6
  NO_MANIFEST_FILE: "Could not find a manifest.";
@@ -21,11 +21,11 @@ export class ExternalTokenConfigComponent {
21
21
  }
22
22
  }
23
23
  ExternalTokenConfigComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ExternalTokenConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
24
- ExternalTokenConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ExternalTokenConfigComponent, selector: "c8y-external-token-config", inputs: { templateModel: "templateModel" }, ngImport: i0, template: "<div class=\"col-md-12 p-16\">\n <div class=\"row m-l-8 m-r-8\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <div class=\"h4 text-normal text-right text-left-xs\" translate>\n External token configuration\n </div>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9 p-0\" *ngIf=\"templateModel\">\n <div class=\"row p-l-4\">\n <div class=\"col-md-8\">\n <label\n for=\"enabled\"\n title=\"{{\n 'Allow authentication with access token from external IAM system' | translate\n }}\"\n class=\"c8y-switch\"\n >\n <input\n id=\"enabled\"\n name=\"enabled\"\n type=\"checkbox\"\n [(ngModel)]=\"externalTokenConfig.enabled\"\n />\n <span></span>\n <span class=\"control-label\">\n {{ 'Allow authentication with access token from external IAM system' | translate }}\n </span>\n </label>\n </div>\n </div>\n <ng-container *ngIf=\"externalTokenConfig.enabled\">\n <c8y-user-id-configuration\n [userIdConfig]=\"externalTokenConfig.userOrAppIdConfig\"\n [withHeader]=\"false\"\n ></c8y-user-id-configuration>\n <div class=\"row p-l-4\">\n <div class=\"col-sm-6\">\n <label\n for=\"validationRequired\"\n title=\"{{ 'Validate access token' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n id=\"validationRequired\"\n name=\"validationRequired\"\n type=\"checkbox\"\n [(ngModel)]=\"externalTokenConfig.validationRequired\"\n />\n <span></span>\n <span class=\"control-label\">{{ 'Validate access token' | translate }}</span>\n </label>\n </div>\n </div>\n <ng-container *ngIf=\"externalTokenConfig.validationRequired\">\n <div class=\"row\">\n <div class=\"col-sm-6 m-t-16 m-l-8\">\n <label for=\"validationMethod\" class=\"control-label\" translate>\n Validation method\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"validationMethod\"\n name=\"validationMethod\"\n [ngModel]=\"externalTokenConfig.validationMethod\"\n (ngModelChange)=\"onValidationMethodChange($event)\"\n >\n <option\n *ngFor=\"let validationMethod of validationMethods | keyvalue\"\n [ngValue]=\"validationMethod.key\"\n >\n {{ validationMethod.value.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <c8y-request-configuration\n [templateModel]=\"externalTokenConfig\"\n [requestName]=\"'Token validation request' | translate\"\n [requestType]=\"'tokenValidationRequest'\"\n ></c8y-request-configuration>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6 m-l-8\">\n <c8y-form-group>\n <label\n for=\"accessTokenValidityCheckIntervalInMinutes\"\n class=\"control-label\"\n translate\n >\n Access token validation frequency\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n class=\"form-control\"\n id=\"accessTokenValidityCheckIntervalInMinutes\"\n name=\"accessTokenValidityCheckIntervalInMinutes\"\n [(ngModel)]=\"externalTokenConfig.accessTokenValidityCheckIntervalInMinutes\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: '1' }\"\n step=\"1\"\n required\n [min]=\"1\"\n />\n <span class=\"input-group-addon\" translate>minutes</span>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { 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.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "component", type: i4.RequestConfigurationComponent, selector: "c8y-request-configuration", inputs: ["templateModel", "requestName", "requestType"] }, { kind: "component", type: i5.UserIdConfigurationComponent, selector: "c8y-user-id-configuration", inputs: ["userIdConfig", "withHeader"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.KeyValuePipe, name: "keyvalue" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
24
+ ExternalTokenConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ExternalTokenConfigComponent, selector: "c8y-external-token-config", inputs: { templateModel: "templateModel" }, ngImport: i0, template: "<div class=\"col-md-12 p-16\">\n <div class=\"row m-l-8 m-r-8\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <div class=\"h4 text-normal text-right text-left-xs\" translate>\n External token configuration\n </div>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9 p-0\" *ngIf=\"templateModel\">\n <div class=\"row p-l-4\">\n <div class=\"col-md-8\">\n <label\n for=\"enabled\"\n title=\"{{\n 'Allow authentication with access token from external AIM system' | translate\n }}\"\n class=\"c8y-switch\"\n >\n <input\n id=\"enabled\"\n name=\"enabled\"\n type=\"checkbox\"\n [(ngModel)]=\"externalTokenConfig.enabled\"\n />\n <span></span>\n <span class=\"control-label\">\n {{ 'Allow authentication with access token from external AIM system' | translate }}\n </span>\n </label>\n </div>\n </div>\n <ng-container *ngIf=\"externalTokenConfig.enabled\">\n <c8y-user-id-configuration\n [userIdConfig]=\"externalTokenConfig.userOrAppIdConfig\"\n [withHeader]=\"false\"\n ></c8y-user-id-configuration>\n <div class=\"row p-l-4\">\n <div class=\"col-sm-6\">\n <label\n for=\"validationRequired\"\n title=\"{{ 'Validate access token' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n id=\"validationRequired\"\n name=\"validationRequired\"\n type=\"checkbox\"\n [(ngModel)]=\"externalTokenConfig.validationRequired\"\n />\n <span></span>\n <span class=\"control-label\">{{ 'Validate access token' | translate }}</span>\n </label>\n </div>\n </div>\n <ng-container *ngIf=\"externalTokenConfig.validationRequired\">\n <div class=\"row\">\n <div class=\"col-sm-6 m-t-16 m-l-8\">\n <label for=\"validationMethod\" class=\"control-label\" translate>\n Validation method\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"validationMethod\"\n name=\"validationMethod\"\n [ngModel]=\"externalTokenConfig.validationMethod\"\n (ngModelChange)=\"onValidationMethodChange($event)\"\n >\n <option\n *ngFor=\"let validationMethod of validationMethods | keyvalue\"\n [ngValue]=\"validationMethod.key\"\n >\n {{ validationMethod.value.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <c8y-request-configuration\n [templateModel]=\"externalTokenConfig\"\n [requestName]=\"'Token validation request' | translate\"\n [requestType]=\"'tokenValidationRequest'\"\n ></c8y-request-configuration>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6 m-l-8\">\n <c8y-form-group>\n <label\n for=\"accessTokenValidityCheckIntervalInMinutes\"\n class=\"control-label\"\n translate\n >\n Access token validation frequency\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n class=\"form-control\"\n id=\"accessTokenValidityCheckIntervalInMinutes\"\n name=\"accessTokenValidityCheckIntervalInMinutes\"\n [(ngModel)]=\"externalTokenConfig.accessTokenValidityCheckIntervalInMinutes\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: '1' }\"\n step=\"1\"\n required\n [min]=\"1\"\n />\n <span class=\"input-group-addon\" translate>minutes</span>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { 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.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "component", type: i4.RequestConfigurationComponent, selector: "c8y-request-configuration", inputs: ["templateModel", "requestName", "requestType"] }, { kind: "component", type: i5.UserIdConfigurationComponent, selector: "c8y-user-id-configuration", inputs: ["userIdConfig", "withHeader"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.KeyValuePipe, name: "keyvalue" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
25
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ExternalTokenConfigComponent, decorators: [{
26
26
  type: Component,
27
- args: [{ selector: 'c8y-external-token-config', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"col-md-12 p-16\">\n <div class=\"row m-l-8 m-r-8\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <div class=\"h4 text-normal text-right text-left-xs\" translate>\n External token configuration\n </div>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9 p-0\" *ngIf=\"templateModel\">\n <div class=\"row p-l-4\">\n <div class=\"col-md-8\">\n <label\n for=\"enabled\"\n title=\"{{\n 'Allow authentication with access token from external IAM system' | translate\n }}\"\n class=\"c8y-switch\"\n >\n <input\n id=\"enabled\"\n name=\"enabled\"\n type=\"checkbox\"\n [(ngModel)]=\"externalTokenConfig.enabled\"\n />\n <span></span>\n <span class=\"control-label\">\n {{ 'Allow authentication with access token from external IAM system' | translate }}\n </span>\n </label>\n </div>\n </div>\n <ng-container *ngIf=\"externalTokenConfig.enabled\">\n <c8y-user-id-configuration\n [userIdConfig]=\"externalTokenConfig.userOrAppIdConfig\"\n [withHeader]=\"false\"\n ></c8y-user-id-configuration>\n <div class=\"row p-l-4\">\n <div class=\"col-sm-6\">\n <label\n for=\"validationRequired\"\n title=\"{{ 'Validate access token' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n id=\"validationRequired\"\n name=\"validationRequired\"\n type=\"checkbox\"\n [(ngModel)]=\"externalTokenConfig.validationRequired\"\n />\n <span></span>\n <span class=\"control-label\">{{ 'Validate access token' | translate }}</span>\n </label>\n </div>\n </div>\n <ng-container *ngIf=\"externalTokenConfig.validationRequired\">\n <div class=\"row\">\n <div class=\"col-sm-6 m-t-16 m-l-8\">\n <label for=\"validationMethod\" class=\"control-label\" translate>\n Validation method\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"validationMethod\"\n name=\"validationMethod\"\n [ngModel]=\"externalTokenConfig.validationMethod\"\n (ngModelChange)=\"onValidationMethodChange($event)\"\n >\n <option\n *ngFor=\"let validationMethod of validationMethods | keyvalue\"\n [ngValue]=\"validationMethod.key\"\n >\n {{ validationMethod.value.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <c8y-request-configuration\n [templateModel]=\"externalTokenConfig\"\n [requestName]=\"'Token validation request' | translate\"\n [requestType]=\"'tokenValidationRequest'\"\n ></c8y-request-configuration>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6 m-l-8\">\n <c8y-form-group>\n <label\n for=\"accessTokenValidityCheckIntervalInMinutes\"\n class=\"control-label\"\n translate\n >\n Access token validation frequency\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n class=\"form-control\"\n id=\"accessTokenValidityCheckIntervalInMinutes\"\n name=\"accessTokenValidityCheckIntervalInMinutes\"\n [(ngModel)]=\"externalTokenConfig.accessTokenValidityCheckIntervalInMinutes\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: '1' }\"\n step=\"1\"\n required\n [min]=\"1\"\n />\n <span class=\"input-group-addon\" translate>minutes</span>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n" }]
27
+ args: [{ selector: 'c8y-external-token-config', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"col-md-12 p-16\">\n <div class=\"row m-l-8 m-r-8\">\n <div class=\"col-xs-12 col-sm-3 col-md-2\">\n <div class=\"h4 text-normal text-right text-left-xs\" translate>\n External token configuration\n </div>\n </div>\n\n <div class=\"col-xs-12 col-sm-9 col-md-10 col-lg-9 p-0\" *ngIf=\"templateModel\">\n <div class=\"row p-l-4\">\n <div class=\"col-md-8\">\n <label\n for=\"enabled\"\n title=\"{{\n 'Allow authentication with access token from external AIM system' | translate\n }}\"\n class=\"c8y-switch\"\n >\n <input\n id=\"enabled\"\n name=\"enabled\"\n type=\"checkbox\"\n [(ngModel)]=\"externalTokenConfig.enabled\"\n />\n <span></span>\n <span class=\"control-label\">\n {{ 'Allow authentication with access token from external AIM system' | translate }}\n </span>\n </label>\n </div>\n </div>\n <ng-container *ngIf=\"externalTokenConfig.enabled\">\n <c8y-user-id-configuration\n [userIdConfig]=\"externalTokenConfig.userOrAppIdConfig\"\n [withHeader]=\"false\"\n ></c8y-user-id-configuration>\n <div class=\"row p-l-4\">\n <div class=\"col-sm-6\">\n <label\n for=\"validationRequired\"\n title=\"{{ 'Validate access token' | translate }}\"\n class=\"c8y-switch\"\n >\n <input\n id=\"validationRequired\"\n name=\"validationRequired\"\n type=\"checkbox\"\n [(ngModel)]=\"externalTokenConfig.validationRequired\"\n />\n <span></span>\n <span class=\"control-label\">{{ 'Validate access token' | translate }}</span>\n </label>\n </div>\n </div>\n <ng-container *ngIf=\"externalTokenConfig.validationRequired\">\n <div class=\"row\">\n <div class=\"col-sm-6 m-t-16 m-l-8\">\n <label for=\"validationMethod\" class=\"control-label\" translate>\n Validation method\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"validationMethod\"\n name=\"validationMethod\"\n [ngModel]=\"externalTokenConfig.validationMethod\"\n (ngModelChange)=\"onValidationMethodChange($event)\"\n >\n <option\n *ngFor=\"let validationMethod of validationMethods | keyvalue\"\n [ngValue]=\"validationMethod.key\"\n >\n {{ validationMethod.value.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <c8y-request-configuration\n [templateModel]=\"externalTokenConfig\"\n [requestName]=\"'Token validation request' | translate\"\n [requestType]=\"'tokenValidationRequest'\"\n ></c8y-request-configuration>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6 m-l-8\">\n <c8y-form-group>\n <label\n for=\"accessTokenValidityCheckIntervalInMinutes\"\n class=\"control-label\"\n translate\n >\n Access token validation frequency\n </label>\n <div class=\"input-group\">\n <input\n type=\"number\"\n class=\"form-control\"\n id=\"accessTokenValidityCheckIntervalInMinutes\"\n name=\"accessTokenValidityCheckIntervalInMinutes\"\n [(ngModel)]=\"externalTokenConfig.accessTokenValidityCheckIntervalInMinutes\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: '1' }\"\n step=\"1\"\n required\n [min]=\"1\"\n />\n <span class=\"input-group-addon\" translate>minutes</span>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n </div>\n</div>\n" }]
28
28
  }], propDecorators: { templateModel: [{
29
29
  type: Input
30
30
  }] } });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtdG9rZW4tY29uZmlnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2F1dGgtY29uZmlndXJhdGlvbi9zc28tY29uZmlndXJhdGlvbi90ZW1wbGF0ZS1wYXJ0cy9leHRlcm5hbC10b2tlbi1jb25maWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vYXV0aC1jb25maWd1cmF0aW9uL3Nzby1jb25maWd1cmF0aW9uL3RlbXBsYXRlLXBhcnRzL2V4dGVybmFsLXRva2VuLWNvbmZpZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7QUFPckUsTUFBTSxPQUFPLDRCQUE0QjtJQUx6QztRQVFFLHNCQUFpQixHQUFHLHNCQUFzQixDQUFDO0tBWTVDO0lBVkMsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDO0lBQ2hELENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxLQUFLO1FBQzVCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDbEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHNCQUFzQixHQUFHLElBQUksb0JBQW9CLENBQ3hFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQ3ZDLENBQUM7SUFDSixDQUFDOzt5SEFkVSw0QkFBNEI7NkdBQTVCLDRCQUE0Qiw2R0NWekMsZytJQXNIQSwrMEZEOUdpQixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQzsyRkFFeEQsNEJBQTRCO2tCQUx4QyxTQUFTOytCQUNFLDJCQUEyQixpQkFFdEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUM7OEJBRzFELGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyB2YWxpZGF0aW9uTWV0aG9kQ29uZmlnIH0gZnJvbSAnLi9leHRlcm5hbC10b2tlbi1jb25maWcubW9kZWwnO1xuaW1wb3J0IHsgUmVxdWVzdENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3JlcXVlc3QtY29uZmlndXJhdGlvbi5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1leHRlcm5hbC10b2tlbi1jb25maWcnLFxuICB0ZW1wbGF0ZVVybDogJy4vZXh0ZXJuYWwtdG9rZW4tY29uZmlnLmNvbXBvbmVudC5odG1sJyxcbiAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IE5nRm9ybSB9XVxufSlcbmV4cG9ydCBjbGFzcyBFeHRlcm5hbFRva2VuQ29uZmlnQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdGVtcGxhdGVNb2RlbDtcblxuICB2YWxpZGF0aW9uTWV0aG9kcyA9IHZhbGlkYXRpb25NZXRob2RDb25maWc7XG5cbiAgZ2V0IGV4dGVybmFsVG9rZW5Db25maWcoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVNb2RlbC5leHRlcm5hbFRva2VuQ29uZmlnO1xuICB9XG5cbiAgb25WYWxpZGF0aW9uTWV0aG9kQ2hhbmdlKGV2ZW50KSB7XG4gICAgdGhpcy5leHRlcm5hbFRva2VuQ29uZmlnLnZhbGlkYXRpb25NZXRob2QgPSBldmVudDtcbiAgICB0aGlzLmV4dGVybmFsVG9rZW5Db25maWcudG9rZW5WYWxpZGF0aW9uUmVxdWVzdCA9IG5ldyBSZXF1ZXN0Q29uZmlndXJhdGlvbihcbiAgICAgIHRoaXMudmFsaWRhdGlvbk1ldGhvZHNbZXZlbnRdLmRlZmF1bHRzXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBwLTE2XCI+XG4gIDxkaXYgY2xhc3M9XCJyb3cgbS1sLTggbS1yLThcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS0zIGNvbC1tZC0yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaDQgdGV4dC1ub3JtYWwgdGV4dC1yaWdodCB0ZXh0LWxlZnQteHNcIiB0cmFuc2xhdGU+XG4gICAgICAgIEV4dGVybmFsIHRva2VuIGNvbmZpZ3VyYXRpb25cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tOSBjb2wtbWQtMTAgY29sLWxnLTkgcC0wXCIgKm5nSWY9XCJ0ZW1wbGF0ZU1vZGVsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93IHAtbC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOFwiPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwiZW5hYmxlZFwiXG4gICAgICAgICAgICB0aXRsZT1cInt7XG4gICAgICAgICAgICAgICdBbGxvdyBhdXRoZW50aWNhdGlvbiB3aXRoIGFjY2VzcyB0b2tlbiBmcm9tIGV4dGVybmFsIElBTSBzeXN0ZW0nIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICBjbGFzcz1cImM4eS1zd2l0Y2hcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBpZD1cImVuYWJsZWRcIlxuICAgICAgICAgICAgICBuYW1lPVwiZW5hYmxlZFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZXh0ZXJuYWxUb2tlbkNvbmZpZy5lbmFibGVkXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIj5cbiAgICAgICAgICAgICAge3sgJ0FsbG93IGF1dGhlbnRpY2F0aW9uIHdpdGggYWNjZXNzIHRva2VuIGZyb20gZXh0ZXJuYWwgSUFNIHN5c3RlbScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4dGVybmFsVG9rZW5Db25maWcuZW5hYmxlZFwiPlxuICAgICAgICA8Yzh5LXVzZXItaWQtY29uZmlndXJhdGlvblxuICAgICAgICAgIFt1c2VySWRDb25maWddPVwiZXh0ZXJuYWxUb2tlbkNvbmZpZy51c2VyT3JBcHBJZENvbmZpZ1wiXG4gICAgICAgICAgW3dpdGhIZWFkZXJdPVwiZmFsc2VcIlxuICAgICAgICA+PC9jOHktdXNlci1pZC1jb25maWd1cmF0aW9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHAtbC00XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgZm9yPVwidmFsaWRhdGlvblJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnVmFsaWRhdGUgYWNjZXNzIHRva2VuJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYzh5LXN3aXRjaFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGlkPVwidmFsaWRhdGlvblJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwidmFsaWRhdGlvblJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZXh0ZXJuYWxUb2tlbkNvbmZpZy52YWxpZGF0aW9uUmVxdWlyZWRcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiPnt7ICdWYWxpZGF0ZSBhY2Nlc3MgdG9rZW4nIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleHRlcm5hbFRva2VuQ29uZmlnLnZhbGlkYXRpb25SZXF1aXJlZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNiBtLXQtMTYgbS1sLThcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInZhbGlkYXRpb25NZXRob2RcIiBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIiB0cmFuc2xhdGU+XG4gICAgICAgICAgICAgICAgVmFsaWRhdGlvbiBtZXRob2RcbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1zZWxlY3Qtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwidmFsaWRhdGlvbk1ldGhvZFwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwidmFsaWRhdGlvbk1ldGhvZFwiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJleHRlcm5hbFRva2VuQ29uZmlnLnZhbGlkYXRpb25NZXRob2RcIlxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25WYWxpZGF0aW9uTWV0aG9kQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHZhbGlkYXRpb25NZXRob2Qgb2YgdmFsaWRhdGlvbk1ldGhvZHMgfCBrZXl2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cInZhbGlkYXRpb25NZXRob2Qua2V5XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgdmFsaWRhdGlvbk1ldGhvZC52YWx1ZS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxjOHktcmVxdWVzdC1jb25maWd1cmF0aW9uXG4gICAgICAgICAgICAgIFt0ZW1wbGF0ZU1vZGVsXT1cImV4dGVybmFsVG9rZW5Db25maWdcIlxuICAgICAgICAgICAgICBbcmVxdWVzdE5hbWVdPVwiJ1Rva2VuIHZhbGlkYXRpb24gcmVxdWVzdCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbcmVxdWVzdFR5cGVdPVwiJ3Rva2VuVmFsaWRhdGlvblJlcXVlc3QnXCJcbiAgICAgICAgICAgID48L2M4eS1yZXF1ZXN0LWNvbmZpZ3VyYXRpb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02IG0tbC04XCI+XG4gICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgIGZvcj1cImFjY2Vzc1Rva2VuVmFsaWRpdHlDaGVja0ludGVydmFsSW5NaW51dGVzXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBBY2Nlc3MgdG9rZW4gdmFsaWRhdGlvbiBmcmVxdWVuY3lcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiYWNjZXNzVG9rZW5WYWxpZGl0eUNoZWNrSW50ZXJ2YWxJbk1pbnV0ZXNcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwiYWNjZXNzVG9rZW5WYWxpZGl0eUNoZWNrSW50ZXJ2YWxJbk1pbnV0ZXNcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImV4dGVybmFsVG9rZW5Db25maWcuYWNjZXNzVG9rZW5WYWxpZGl0eUNoZWNrSW50ZXJ2YWxJbk1pbnV0ZXNcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogJzEnIH1cIlxuICAgICAgICAgICAgICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIFttaW5dPVwiMVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1hZGRvblwiIHRyYW5zbGF0ZT5taW51dGVzPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtdG9rZW4tY29uZmlnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2F1dGgtY29uZmlndXJhdGlvbi9zc28tY29uZmlndXJhdGlvbi90ZW1wbGF0ZS1wYXJ0cy9leHRlcm5hbC10b2tlbi1jb25maWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vYXV0aC1jb25maWd1cmF0aW9uL3Nzby1jb25maWd1cmF0aW9uL3RlbXBsYXRlLXBhcnRzL2V4dGVybmFsLXRva2VuLWNvbmZpZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7QUFPckUsTUFBTSxPQUFPLDRCQUE0QjtJQUx6QztRQVFFLHNCQUFpQixHQUFHLHNCQUFzQixDQUFDO0tBWTVDO0lBVkMsSUFBSSxtQkFBbUI7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDO0lBQ2hELENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxLQUFLO1FBQzVCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDbEQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHNCQUFzQixHQUFHLElBQUksb0JBQW9CLENBQ3hFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQ3ZDLENBQUM7SUFDSixDQUFDOzt5SEFkVSw0QkFBNEI7NkdBQTVCLDRCQUE0Qiw2R0NWekMsZytJQXNIQSwrMEZEOUdpQixDQUFDLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQzsyRkFFeEQsNEJBQTRCO2tCQUx4QyxTQUFTOytCQUNFLDJCQUEyQixpQkFFdEIsQ0FBQyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUM7OEJBRzFELGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sQ29udGFpbmVyLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyB2YWxpZGF0aW9uTWV0aG9kQ29uZmlnIH0gZnJvbSAnLi9leHRlcm5hbC10b2tlbi1jb25maWcubW9kZWwnO1xuaW1wb3J0IHsgUmVxdWVzdENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3JlcXVlc3QtY29uZmlndXJhdGlvbi5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1leHRlcm5hbC10b2tlbi1jb25maWcnLFxuICB0ZW1wbGF0ZVVybDogJy4vZXh0ZXJuYWwtdG9rZW4tY29uZmlnLmNvbXBvbmVudC5odG1sJyxcbiAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IE5nRm9ybSB9XVxufSlcbmV4cG9ydCBjbGFzcyBFeHRlcm5hbFRva2VuQ29uZmlnQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdGVtcGxhdGVNb2RlbDtcblxuICB2YWxpZGF0aW9uTWV0aG9kcyA9IHZhbGlkYXRpb25NZXRob2RDb25maWc7XG5cbiAgZ2V0IGV4dGVybmFsVG9rZW5Db25maWcoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVNb2RlbC5leHRlcm5hbFRva2VuQ29uZmlnO1xuICB9XG5cbiAgb25WYWxpZGF0aW9uTWV0aG9kQ2hhbmdlKGV2ZW50KSB7XG4gICAgdGhpcy5leHRlcm5hbFRva2VuQ29uZmlnLnZhbGlkYXRpb25NZXRob2QgPSBldmVudDtcbiAgICB0aGlzLmV4dGVybmFsVG9rZW5Db25maWcudG9rZW5WYWxpZGF0aW9uUmVxdWVzdCA9IG5ldyBSZXF1ZXN0Q29uZmlndXJhdGlvbihcbiAgICAgIHRoaXMudmFsaWRhdGlvbk1ldGhvZHNbZXZlbnRdLmRlZmF1bHRzXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBwLTE2XCI+XG4gIDxkaXYgY2xhc3M9XCJyb3cgbS1sLTggbS1yLThcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS0zIGNvbC1tZC0yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiaDQgdGV4dC1ub3JtYWwgdGV4dC1yaWdodCB0ZXh0LWxlZnQteHNcIiB0cmFuc2xhdGU+XG4gICAgICAgIEV4dGVybmFsIHRva2VuIGNvbmZpZ3VyYXRpb25cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tOSBjb2wtbWQtMTAgY29sLWxnLTkgcC0wXCIgKm5nSWY9XCJ0ZW1wbGF0ZU1vZGVsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93IHAtbC00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOFwiPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgZm9yPVwiZW5hYmxlZFwiXG4gICAgICAgICAgICB0aXRsZT1cInt7XG4gICAgICAgICAgICAgICdBbGxvdyBhdXRoZW50aWNhdGlvbiB3aXRoIGFjY2VzcyB0b2tlbiBmcm9tIGV4dGVybmFsIEFJTSBzeXN0ZW0nIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICBjbGFzcz1cImM4eS1zd2l0Y2hcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBpZD1cImVuYWJsZWRcIlxuICAgICAgICAgICAgICBuYW1lPVwiZW5hYmxlZFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZXh0ZXJuYWxUb2tlbkNvbmZpZy5lbmFibGVkXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIj5cbiAgICAgICAgICAgICAge3sgJ0FsbG93IGF1dGhlbnRpY2F0aW9uIHdpdGggYWNjZXNzIHRva2VuIGZyb20gZXh0ZXJuYWwgQUlNIHN5c3RlbScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4dGVybmFsVG9rZW5Db25maWcuZW5hYmxlZFwiPlxuICAgICAgICA8Yzh5LXVzZXItaWQtY29uZmlndXJhdGlvblxuICAgICAgICAgIFt1c2VySWRDb25maWddPVwiZXh0ZXJuYWxUb2tlbkNvbmZpZy51c2VyT3JBcHBJZENvbmZpZ1wiXG4gICAgICAgICAgW3dpdGhIZWFkZXJdPVwiZmFsc2VcIlxuICAgICAgICA+PC9jOHktdXNlci1pZC1jb25maWd1cmF0aW9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHAtbC00XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgZm9yPVwidmFsaWRhdGlvblJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnVmFsaWRhdGUgYWNjZXNzIHRva2VuJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYzh5LXN3aXRjaFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGlkPVwidmFsaWRhdGlvblJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICBuYW1lPVwidmFsaWRhdGlvblJlcXVpcmVkXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZXh0ZXJuYWxUb2tlbkNvbmZpZy52YWxpZGF0aW9uUmVxdWlyZWRcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiPnt7ICdWYWxpZGF0ZSBhY2Nlc3MgdG9rZW4nIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleHRlcm5hbFRva2VuQ29uZmlnLnZhbGlkYXRpb25SZXF1aXJlZFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNiBtLXQtMTYgbS1sLThcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInZhbGlkYXRpb25NZXRob2RcIiBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIiB0cmFuc2xhdGU+XG4gICAgICAgICAgICAgICAgVmFsaWRhdGlvbiBtZXRob2RcbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1zZWxlY3Qtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwidmFsaWRhdGlvbk1ldGhvZFwiXG4gICAgICAgICAgICAgICAgICBuYW1lPVwidmFsaWRhdGlvbk1ldGhvZFwiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJleHRlcm5hbFRva2VuQ29uZmlnLnZhbGlkYXRpb25NZXRob2RcIlxuICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25WYWxpZGF0aW9uTWV0aG9kQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHZhbGlkYXRpb25NZXRob2Qgb2YgdmFsaWRhdGlvbk1ldGhvZHMgfCBrZXl2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ1ZhbHVlXT1cInZhbGlkYXRpb25NZXRob2Qua2V5XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgdmFsaWRhdGlvbk1ldGhvZC52YWx1ZS5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxjOHktcmVxdWVzdC1jb25maWd1cmF0aW9uXG4gICAgICAgICAgICAgIFt0ZW1wbGF0ZU1vZGVsXT1cImV4dGVybmFsVG9rZW5Db25maWdcIlxuICAgICAgICAgICAgICBbcmVxdWVzdE5hbWVdPVwiJ1Rva2VuIHZhbGlkYXRpb24gcmVxdWVzdCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBbcmVxdWVzdFR5cGVdPVwiJ3Rva2VuVmFsaWRhdGlvblJlcXVlc3QnXCJcbiAgICAgICAgICAgID48L2M4eS1yZXF1ZXN0LWNvbmZpZ3VyYXRpb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02IG0tbC04XCI+XG4gICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgIGZvcj1cImFjY2Vzc1Rva2VuVmFsaWRpdHlDaGVja0ludGVydmFsSW5NaW51dGVzXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBBY2Nlc3MgdG9rZW4gdmFsaWRhdGlvbiBmcmVxdWVuY3lcbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiYWNjZXNzVG9rZW5WYWxpZGl0eUNoZWNrSW50ZXJ2YWxJbk1pbnV0ZXNcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwiYWNjZXNzVG9rZW5WYWxpZGl0eUNoZWNrSW50ZXJ2YWxJbk1pbnV0ZXNcIlxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImV4dGVybmFsVG9rZW5Db25maWcuYWNjZXNzVG9rZW5WYWxpZGl0eUNoZWNrSW50ZXJ2YWxJbk1pbnV0ZXNcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2UuZy4ge3sgZXhhbXBsZSB9fScgfCB0cmFuc2xhdGU6IHsgZXhhbXBsZTogJzEnIH1cIlxuICAgICAgICAgICAgICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgIFttaW5dPVwiMVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1hZGRvblwiIHRyYW5zbGF0ZT5taW51dGVzPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -54,9 +54,9 @@ export class CockpitConfigurationComponent {
54
54
  }
55
55
  }
56
56
  CockpitConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CockpitConfigurationComponent, deps: [{ token: i1.CockpitConfigService }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Component });
57
- CockpitConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CockpitConfigurationComponent, selector: "c8y-cockpit-configuration", ngImport: i0, template: "<c8y-title>{{ 'App configuration' | translate }}</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Configuration' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'App configuration' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form #configForm=\"ngForm\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Cockpit configuration</div>\n </div>\n\n <div class=\"inner-scroll\">\n <div class=\"card-block p-t-0 p-b-0\">\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-4\" translate>Features</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Define which are the enabled features in the current application.'\n | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-feature-config\n [config]=\"config\"\n (onUpdate)=\"updateFeatures()\"\n ></c8y-feature-config>\n </div>\n </fieldset>\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Top level nodes</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Select which nodes to display in the top level of the navigator menu. By default, only Groups is shown.'\n | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-10 col-md-10\">\n <div class=\"row\">\n <c8y-root-node-config\n [config]=\"config\"\n (onUpdate)=\"updateRootNodes()\"\n ></c8y-root-node-config>\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Home dashboard</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'The home page of this application. By default, it is a customizable dashboard displaying the most important alarms and shortcuts to frequently used features.'\n | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"h4 text-medium d-inline-block m-r-4\" translate>Misc</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </fieldset>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ 'Save' | translate }}\"\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save()\"\n [actionName]=\"'cockpitConfigurationSaved'\"\n [actionData]=\"{ config: config }\"\n c8yProductExperience\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i2.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "directive", type: i4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: i5.FeatureConfigComponent, selector: "c8y-feature-config", inputs: ["config"], outputs: ["onUpdate"] }, { kind: "component", type: i6.RootNodeConfigComponent, selector: "c8y-root-node-config", inputs: ["config"], outputs: ["onUpdate"] }, { kind: "component", type: i7.HomeDashboardConfigComponent, selector: "c8y-home-dashboard-config", inputs: ["config"] }, { kind: "component", type: i8.MiscConfigComponent, selector: "c8y-misc-config", inputs: ["config"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] });
57
+ CockpitConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CockpitConfigurationComponent, selector: "c8y-cockpit-configuration", ngImport: i0, template: "<c8y-title>{{ 'App configuration' | translate }}</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Configuration' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'App configuration' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form #configForm=\"ngForm\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Cockpit configuration</div>\n </div>\n\n <div class=\"inner-scroll\">\n <div class=\"card-block p-t-0 p-b-0\">\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-4\" translate>Features</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Define which are the enabled features in the current application.'\n | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-feature-config\n [config]=\"config\"\n (onUpdate)=\"updateFeatures()\"\n ></c8y-feature-config>\n </div>\n </fieldset>\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Top level nodes</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Select which nodes to display in the top level of the navigator menu. By default, only Groups is shown.'\n | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-10 col-md-10\">\n <div class=\"row\">\n <c8y-root-node-config\n [config]=\"config\"\n (onUpdate)=\"updateRootNodes()\"\n ></c8y-root-node-config>\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Home dashboard</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'The homepage of this application. By default, it is a customizable dashboard displaying the most important alarms and shortcuts to frequently used features.'\n | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"h4 text-medium d-inline-block m-r-4\" translate>Misc</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </fieldset>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ 'Save' | translate }}\"\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save()\"\n [actionName]=\"'cockpitConfigurationSaved'\"\n [actionData]=\"{ config: config }\"\n c8yProductExperience\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i2.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i2.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "directive", type: i4.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: i5.FeatureConfigComponent, selector: "c8y-feature-config", inputs: ["config"], outputs: ["onUpdate"] }, { kind: "component", type: i6.RootNodeConfigComponent, selector: "c8y-root-node-config", inputs: ["config"], outputs: ["onUpdate"] }, { kind: "component", type: i7.HomeDashboardConfigComponent, selector: "c8y-home-dashboard-config", inputs: ["config"] }, { kind: "component", type: i8.MiscConfigComponent, selector: "c8y-misc-config", inputs: ["config"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] });
58
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CockpitConfigurationComponent, decorators: [{
59
59
  type: Component,
60
- args: [{ selector: 'c8y-cockpit-configuration', template: "<c8y-title>{{ 'App configuration' | translate }}</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Configuration' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'App configuration' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form #configForm=\"ngForm\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Cockpit configuration</div>\n </div>\n\n <div class=\"inner-scroll\">\n <div class=\"card-block p-t-0 p-b-0\">\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-4\" translate>Features</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Define which are the enabled features in the current application.'\n | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-feature-config\n [config]=\"config\"\n (onUpdate)=\"updateFeatures()\"\n ></c8y-feature-config>\n </div>\n </fieldset>\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Top level nodes</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Select which nodes to display in the top level of the navigator menu. By default, only Groups is shown.'\n | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-10 col-md-10\">\n <div class=\"row\">\n <c8y-root-node-config\n [config]=\"config\"\n (onUpdate)=\"updateRootNodes()\"\n ></c8y-root-node-config>\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Home dashboard</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'The home page of this application. By default, it is a customizable dashboard displaying the most important alarms and shortcuts to frequently used features.'\n | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"h4 text-medium d-inline-block m-r-4\" translate>Misc</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </fieldset>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ 'Save' | translate }}\"\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save()\"\n [actionName]=\"'cockpitConfigurationSaved'\"\n [actionData]=\"{ config: config }\"\n c8yProductExperience\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n </div>\n</div>\n" }]
60
+ args: [{ selector: 'c8y-cockpit-configuration', template: "<c8y-title>{{ 'App configuration' | translate }}</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'Configuration' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-tools'\"\n [label]=\"'App configuration' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <form #configForm=\"ngForm\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Cockpit configuration</div>\n </div>\n\n <div class=\"inner-scroll\">\n <div class=\"card-block p-t-0 p-b-0\">\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-4\" translate>Features</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Define which are the enabled features in the current application.'\n | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-feature-config\n [config]=\"config\"\n (onUpdate)=\"updateFeatures()\"\n ></c8y-feature-config>\n </div>\n </fieldset>\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Top level nodes</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'Select which nodes to display in the top level of the navigator menu. By default, only Groups is shown.'\n | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-10 col-md-10\">\n <div class=\"row\">\n <c8y-root-node-config\n [config]=\"config\"\n (onUpdate)=\"updateRootNodes()\"\n ></c8y-root-node-config>\n </div>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"d-inline-flex m-b-16\">\n <div class=\"h4 text-medium m-r-8\" translate>Home dashboard</div>\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'The homepage of this application. By default, it is a customizable dashboard displaying the most important alarms and shortcuts to frequently used features.'\n | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </fieldset>\n\n <fieldset class=\"row separator-bottom p-t-24 p-b-24\">\n <div class=\"col-xs-12 col-sm-3 col-md-2 text-left-xs text-right-sm\">\n <div class=\"h4 text-medium d-inline-block m-r-4\" translate>Misc</div>\n </div>\n <div class=\"col-xs-12 col-sm-9 col-md-8\">\n <c8y-misc-config [config]=\"config\"></c8y-misc-config>\n </div>\n </fieldset>\n </div>\n </div>\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ 'Save' | translate }}\"\n [disabled]=\"!configForm.form.valid\"\n (click)=\"save()\"\n [actionName]=\"'cockpitConfigurationSaved'\"\n [actionData]=\"{ config: config }\"\n c8yProductExperience\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </form>\n </div>\n</div>\n" }]
61
61
  }], ctorParameters: function () { return [{ type: i1.CockpitConfigService }, { type: i2.AlertService }]; } });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ja3BpdC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvY2twaXQtY29uZmlnL2NvY2twaXQtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9jb2NrcGl0LWNvbmZpZy9jb2NrcGl0LWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFBaUIsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7QUFNaEUsTUFBTSxPQUFPLDZCQUE2QjtJQU14QyxZQUNVLG9CQUEwQyxFQUMxQyxZQUEwQjtRQUQxQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBUHBDOztXQUVHO1FBQ0gsV0FBTSxHQUFrQixjQUFjLENBQUM7SUFLcEMsQ0FBQztJQUVKOztPQUVHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUk7WUFDRixNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUM7U0FDcEU7UUFBQyxPQUFPLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjO1FBQ1osSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3RELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsZUFBZTtRQUNuQixJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDdEQsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDakQsQ0FBQzs7MEhBNUNVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLGlFQ1QxQyxpcEtBNkhBOzJGRHBIYSw2QkFBNkI7a0JBSnpDLFNBQVM7K0JBQ0UsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ29ja3BpdENvbmZpZywgREVGQVVMVF9DT05GSUcgfSBmcm9tICcuL2NvY2twaXQtY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IENvY2twaXRDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9jb2NrcGl0LWNvbmZpZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWNvY2twaXQtY29uZmlndXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2NrcGl0LWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIENvY2twaXRDb25maWd1cmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgdXNlZCBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgY29uZmlnOiBDb2NrcGl0Q29uZmlnID0gREVGQVVMVF9DT05GSUc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb2NrcGl0Q29uZmlnU2VydmljZTogQ29ja3BpdENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29uZmlnID0gdGhpcy5jb2NrcGl0Q29uZmlnU2VydmljZS5jdXJyZW50Q29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3JlcyB0aGUgY29uZmlndXJhdGlvbiBhbmQgc2hvd3MgYSBzdWNjZXNzIG1lc3NhZ2UuXG4gICAqL1xuICBhc3luYyBzYXZlKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmNvY2twaXRDb25maWdTZXJ2aWNlLnNhdmVDb25maWcodGhpcy5jb25maWcpO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdDb2NrcGl0IGNvbmZpZ3VyYXRpb24gc2F2ZWQuJykpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGV4KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgZmVhdHVyZXMgdG8gZGlyZWN0bHkgcmVmbGVjdCB0aGUgcmVzdWx0cyBvZiB0aGUgY2hhbmdlLlxuICAgKi9cbiAgdXBkYXRlRmVhdHVyZXMoKSB7XG4gICAgdGhpcy5jb2NrcGl0Q29uZmlnU2VydmljZS5jdXJyZW50Q29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgdGhpcy5jb2NrcGl0Q29uZmlnU2VydmljZS5yZWZyZXNoKCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcm9vdCBub2RlcyB0byBkaXJlY3RseSByZWZsZWN0IHRoZSByZXN1bHRzIG9mIHRoZSBjaGFuZ2UuXG4gICAqL1xuICBhc3luYyB1cGRhdGVSb290Tm9kZXMoKSB7XG4gICAgdGhpcy5jb2NrcGl0Q29uZmlnU2VydmljZS5jdXJyZW50Q29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgYXdhaXQgdGhpcy5jb2NrcGl0Q29uZmlnU2VydmljZS5zZXRSb290Tm9kZXMoKTtcbiAgfVxufVxuIiwiPGM4eS10aXRsZT57eyAnQXBwIGNvbmZpZ3VyYXRpb24nIHwgdHJhbnNsYXRlIH19PC9jOHktdGl0bGU+XG48Yzh5LWJyZWFkY3J1bWI+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ2M4eS10b29scydcIlxuICAgIFtsYWJlbF09XCInQ29uZmlndXJhdGlvbicgfCB0cmFuc2xhdGVcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cIidjOHktdG9vbHMnXCJcbiAgICBbbGFiZWxdPVwiJ0FwcCBjb25maWd1cmF0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG48L2M4eS1icmVhZGNydW1iPlxuPGRpdiBjbGFzcz1cInJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIGNvbC1sZy1tYXhcIj5cbiAgICA8Zm9ybSAjY29uZmlnRm9ybT1cIm5nRm9ybVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC0tZnVsbHBhZ2VcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCIgdHJhbnNsYXRlPkNvY2twaXQgY29uZmlndXJhdGlvbjwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgcC10LTAgcC1iLTBcIj5cbiAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz1cInJvdyBzZXBhcmF0b3ItYm90dG9tIHAtdC0yNCBwLWItMjRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tMyBjb2wtbWQtMiB0ZXh0LWxlZnQteHMgdGV4dC1yaWdodC1zbVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWlubGluZS1mbGV4IG0tYi0xNlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImg0IHRleHQtbWVkaXVtIG0tci00XCIgdHJhbnNsYXRlPkZlYXR1cmVzPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3Zlcj1cInt7XG4gICAgICAgICAgICAgICAgICAgICAgJ0RlZmluZSB3aGljaCBhcmUgdGhlIGVuYWJsZWQgZmVhdHVyZXMgaW4gdGhlIGN1cnJlbnQgYXBwbGljYXRpb24uJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTkgY29sLW1kLThcIj5cbiAgICAgICAgICAgICAgICA8Yzh5LWZlYXR1cmUtY29uZmlnXG4gICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAob25VcGRhdGUpPVwidXBkYXRlRmVhdHVyZXMoKVwiXG4gICAgICAgICAgICAgICAgPjwvYzh5LWZlYXR1cmUtY29uZmlnPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJyb3cgc2VwYXJhdG9yLWJvdHRvbSBwLXQtMjQgcC1iLTI0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTMgY29sLW1kLTIgdGV4dC1sZWZ0LXhzIHRleHQtcmlnaHQtc21cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1pbmxpbmUtZmxleCBtLWItMTZcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoNCB0ZXh0LW1lZGl1bSBtLXItOFwiIHRyYW5zbGF0ZT5Ub3AgbGV2ZWwgbm9kZXM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBwb3BvdmVyPVwie3tcbiAgICAgICAgICAgICAgICAgICAgICAnU2VsZWN0IHdoaWNoIG5vZGVzIHRvIGRpc3BsYXkgaW4gdGhlIHRvcCBsZXZlbCBvZiB0aGUgbmF2aWdhdG9yIG1lbnUuIEJ5IGRlZmF1bHQsIG9ubHkgR3JvdXBzIGlzIHNob3duLidcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS0xMCBjb2wtbWQtMTBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICA8Yzh5LXJvb3Qtbm9kZS1jb25maWdcbiAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAob25VcGRhdGUpPVwidXBkYXRlUm9vdE5vZGVzKClcIlxuICAgICAgICAgICAgICAgICAgPjwvYzh5LXJvb3Qtbm9kZS1jb25maWc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9maWVsZHNldD5cblxuICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwicm93IHNlcGFyYXRvci1ib3R0b20gcC10LTI0IHAtYi0yNFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS0zIGNvbC1tZC0yIHRleHQtbGVmdC14cyB0ZXh0LXJpZ2h0LXNtXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtaW5saW5lLWZsZXggbS1iLTE2XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaDQgdGV4dC1tZWRpdW0gbS1yLThcIiB0cmFuc2xhdGU+SG9tZSBkYXNoYm9hcmQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBwb3BvdmVyPVwie3tcbiAgICAgICAgICAgICAgICAgICAgICAnVGhlIGhvbWUgcGFnZSBvZiB0aGlzIGFwcGxpY2F0aW9uLiBCeSBkZWZhdWx0LCBpdCBpcyBhIGN1c3RvbWl6YWJsZSBkYXNoYm9hcmQgZGlzcGxheWluZyB0aGUgbW9zdCBpbXBvcnRhbnQgYWxhcm1zIGFuZCBzaG9ydGN1dHMgdG8gZnJlcXVlbnRseSB1c2VkIGZlYXR1cmVzLidcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS05IGNvbC1tZC04XCI+XG4gICAgICAgICAgICAgICAgPGM4eS1ob21lLWRhc2hib2FyZC1jb25maWcgW2NvbmZpZ109XCJjb25maWdcIj48L2M4eS1ob21lLWRhc2hib2FyZC1jb25maWc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9maWVsZHNldD5cblxuICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwicm93IHNlcGFyYXRvci1ib3R0b20gcC10LTI0IHAtYi0yNFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS0zIGNvbC1tZC0yIHRleHQtbGVmdC14cyB0ZXh0LXJpZ2h0LXNtXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImg0IHRleHQtbWVkaXVtIGQtaW5saW5lLWJsb2NrIG0tci00XCIgdHJhbnNsYXRlPk1pc2M8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTkgY29sLW1kLThcIj5cbiAgICAgICAgICAgICAgICA8Yzh5LW1pc2MtY29uZmlnIFtjb25maWddPVwiY29uZmlnXCI+PC9jOHktbWlzYy1jb25maWc+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9maWVsZHNldD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBzZXBhcmF0b3JcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgIHRpdGxlPVwie3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY29uZmlnRm9ybS5mb3JtLnZhbGlkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzYXZlKClcIlxuICAgICAgICAgICAgW2FjdGlvbk5hbWVdPVwiJ2NvY2twaXRDb25maWd1cmF0aW9uU2F2ZWQnXCJcbiAgICAgICAgICAgIFthY3Rpb25EYXRhXT1cInsgY29uZmlnOiBjb25maWcgfVwiXG4gICAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ja3BpdC1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvY2twaXQtY29uZmlnL2NvY2twaXQtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi9jb2NrcGl0LWNvbmZpZy9jb2NrcGl0LWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFBaUIsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7QUFNaEUsTUFBTSxPQUFPLDZCQUE2QjtJQU14QyxZQUNVLG9CQUEwQyxFQUMxQyxZQUEwQjtRQUQxQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBUHBDOztXQUVHO1FBQ0gsV0FBTSxHQUFrQixjQUFjLENBQUM7SUFLcEMsQ0FBQztJQUVKOztPQUVHO0lBQ0gsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUk7WUFDRixNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLENBQUM7U0FDcEU7UUFBQyxPQUFPLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjO1FBQ1osSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3RELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsZUFBZTtRQUNuQixJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDdEQsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDakQsQ0FBQzs7MEhBNUNVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLGlFQ1QxQyxncEtBNkhBOzJGRHBIYSw2QkFBNkI7a0JBSnpDLFNBQVM7K0JBQ0UsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ29ja3BpdENvbmZpZywgREVGQVVMVF9DT05GSUcgfSBmcm9tICcuL2NvY2twaXQtY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IENvY2twaXRDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9jb2NrcGl0LWNvbmZpZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWNvY2twaXQtY29uZmlndXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2NrcGl0LWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIENvY2twaXRDb25maWd1cmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgdXNlZCBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgY29uZmlnOiBDb2NrcGl0Q29uZmlnID0gREVGQVVMVF9DT05GSUc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb2NrcGl0Q29uZmlnU2VydmljZTogQ29ja3BpdENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29uZmlnID0gdGhpcy5jb2NrcGl0Q29uZmlnU2VydmljZS5jdXJyZW50Q29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3JlcyB0aGUgY29uZmlndXJhdGlvbiBhbmQgc2hvd3MgYSBzdWNjZXNzIG1lc3NhZ2UuXG4gICAqL1xuICBhc3luYyBzYXZlKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmNvY2twaXRDb25maWdTZXJ2aWNlLnNhdmVDb25maWcodGhpcy5jb25maWcpO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdDb2NrcGl0IGNvbmZpZ3VyYXRpb24gc2F2ZWQuJykpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGV4KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgZmVhdHVyZXMgdG8gZGlyZWN0bHkgcmVmbGVjdCB0aGUgcmVzdWx0cyBvZiB0aGUgY2hhbmdlLlxuICAgKi9cbiAgdXBkYXRlRmVhdHVyZXMoKSB7XG4gICAgdGhpcy5jb2NrcGl0Q29uZmlnU2VydmljZS5jdXJyZW50Q29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgdGhpcy5jb2NrcGl0Q29uZmlnU2VydmljZS5yZWZyZXNoKCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgcm9vdCBub2RlcyB0byBkaXJlY3RseSByZWZsZWN0IHRoZSByZXN1bHRzIG9mIHRoZSBjaGFuZ2UuXG4gICAqL1xuICBhc3luYyB1cGRhdGVSb290Tm9kZXMoKSB7XG4gICAgdGhpcy5jb2NrcGl0Q29uZmlnU2VydmljZS5jdXJyZW50Q29uZmlnID0gdGhpcy5jb25maWc7XG4gICAgYXdhaXQgdGhpcy5jb2NrcGl0Q29uZmlnU2VydmljZS5zZXRSb290Tm9kZXMoKTtcbiAgfVxufVxuIiwiPGM4eS10aXRsZT57eyAnQXBwIGNvbmZpZ3VyYXRpb24nIHwgdHJhbnNsYXRlIH19PC9jOHktdGl0bGU+XG48Yzh5LWJyZWFkY3J1bWI+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ2M4eS10b29scydcIlxuICAgIFtsYWJlbF09XCInQ29uZmlndXJhdGlvbicgfCB0cmFuc2xhdGVcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cIidjOHktdG9vbHMnXCJcbiAgICBbbGFiZWxdPVwiJ0FwcCBjb25maWd1cmF0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG48L2M4eS1icmVhZGNydW1iPlxuPGRpdiBjbGFzcz1cInJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIGNvbC1sZy1tYXhcIj5cbiAgICA8Zm9ybSAjY29uZmlnRm9ybT1cIm5nRm9ybVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC0tZnVsbHBhZ2VcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCIgdHJhbnNsYXRlPkNvY2twaXQgY29uZmlndXJhdGlvbjwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgcC10LTAgcC1iLTBcIj5cbiAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz1cInJvdyBzZXBhcmF0b3ItYm90dG9tIHAtdC0yNCBwLWItMjRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tMyBjb2wtbWQtMiB0ZXh0LWxlZnQteHMgdGV4dC1yaWdodC1zbVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWlubGluZS1mbGV4IG0tYi0xNlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImg0IHRleHQtbWVkaXVtIG0tci00XCIgdHJhbnNsYXRlPkZlYXR1cmVzPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHAgYnRuLWhlbHAtLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3Zlcj1cInt7XG4gICAgICAgICAgICAgICAgICAgICAgJ0RlZmluZSB3aGljaCBhcmUgdGhlIGVuYWJsZWQgZmVhdHVyZXMgaW4gdGhlIGN1cnJlbnQgYXBwbGljYXRpb24uJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTkgY29sLW1kLThcIj5cbiAgICAgICAgICAgICAgICA8Yzh5LWZlYXR1cmUtY29uZmlnXG4gICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAob25VcGRhdGUpPVwidXBkYXRlRmVhdHVyZXMoKVwiXG4gICAgICAgICAgICAgICAgPjwvYzh5LWZlYXR1cmUtY29uZmlnPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJyb3cgc2VwYXJhdG9yLWJvdHRvbSBwLXQtMjQgcC1iLTI0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTMgY29sLW1kLTIgdGV4dC1sZWZ0LXhzIHRleHQtcmlnaHQtc21cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1pbmxpbmUtZmxleCBtLWItMTZcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoNCB0ZXh0LW1lZGl1bSBtLXItOFwiIHRyYW5zbGF0ZT5Ub3AgbGV2ZWwgbm9kZXM8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBwb3BvdmVyPVwie3tcbiAgICAgICAgICAgICAgICAgICAgICAnU2VsZWN0IHdoaWNoIG5vZGVzIHRvIGRpc3BsYXkgaW4gdGhlIHRvcCBsZXZlbCBvZiB0aGUgbmF2aWdhdG9yIG1lbnUuIEJ5IGRlZmF1bHQsIG9ubHkgR3JvdXBzIGlzIHNob3duLidcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vycz1cImZvY3VzXCJcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS0xMCBjb2wtbWQtMTBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICA8Yzh5LXJvb3Qtbm9kZS1jb25maWdcbiAgICAgICAgICAgICAgICAgICAgW2NvbmZpZ109XCJjb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAob25VcGRhdGUpPVwidXBkYXRlUm9vdE5vZGVzKClcIlxuICAgICAgICAgICAgICAgICAgPjwvYzh5LXJvb3Qtbm9kZS1jb25maWc+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9maWVsZHNldD5cblxuICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwicm93IHNlcGFyYXRvci1ib3R0b20gcC10LTI0IHAtYi0yNFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTEyIGNvbC1zbS0zIGNvbC1tZC0yIHRleHQtbGVmdC14cyB0ZXh0LXJpZ2h0LXNtXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtaW5saW5lLWZsZXggbS1iLTE2XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaDQgdGV4dC1tZWRpdW0gbS1yLThcIiB0cmFuc2xhdGU+SG9tZSBkYXNoYm9hcmQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscCBidG4taGVscC0tc21cIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInSGVscCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBwb3BvdmVyPVwie3tcbiAgICAgICAgICAgICAgICAgICAgICAnVGhlIGhvbWVwYWdlIG9mIHRoaXMgYXBwbGljYXRpb24uIEJ5IGRlZmF1bHQsIGl0IGlzIGEgY3VzdG9taXphYmxlIGRhc2hib2FyZCBkaXNwbGF5aW5nIHRoZSBtb3N0IGltcG9ydGFudCBhbGFybXMgYW5kIHNob3J0Y3V0cyB0byBmcmVxdWVudGx5IHVzZWQgZmVhdHVyZXMuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTkgY29sLW1kLThcIj5cbiAgICAgICAgICAgICAgICA8Yzh5LWhvbWUtZGFzaGJvYXJkLWNvbmZpZyBbY29uZmlnXT1cImNvbmZpZ1wiPjwvYzh5LWhvbWUtZGFzaGJvYXJkLWNvbmZpZz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2ZpZWxkc2V0PlxuXG4gICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJyb3cgc2VwYXJhdG9yLWJvdHRvbSBwLXQtMjQgcC1iLTI0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgY29sLXNtLTMgY29sLW1kLTIgdGV4dC1sZWZ0LXhzIHRleHQtcmlnaHQtc21cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaDQgdGV4dC1tZWRpdW0gZC1pbmxpbmUtYmxvY2sgbS1yLTRcIiB0cmFuc2xhdGU+TWlzYzwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy0xMiBjb2wtc20tOSBjb2wtbWQtOFwiPlxuICAgICAgICAgICAgICAgIDxjOHktbWlzYy1jb25maWcgW2NvbmZpZ109XCJjb25maWdcIj48L2M4eS1taXNjLWNvbmZpZz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIHNlcGFyYXRvclwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFjb25maWdGb3JtLmZvcm0udmFsaWRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXG4gICAgICAgICAgICBbYWN0aW9uTmFtZV09XCInY29ja3BpdENvbmZpZ3VyYXRpb25TYXZlZCdcIlxuICAgICAgICAgICAgW2FjdGlvbkRhdGFdPVwieyBjb25maWc6IGNvbmZpZyB9XCJcbiAgICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -19,9 +19,9 @@ export class CockpitSetupStep3Component extends CockpitSetupStep {
19
19
  }
20
20
  }
21
21
  CockpitSetupStep3Component.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CockpitSetupStep3Component, deps: [{ token: i1.C8yStepper }, { token: i2.CdkStep }, { token: i1.SetupComponent }, { token: i1.AppStateService }, { token: i1.AlertService }], target: i0.ɵɵFactoryTarget.Component });
22
- CockpitSetupStep3Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CockpitSetupStep3Component, selector: "c8y-cockpit-setup-step3", host: { classAttribute: "d-contents" }, usesInheritance: true, ngImport: i0, template: "<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n <div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Home dashboard</h3>\n <p class=\"lead text-normal\" translate>\n The home page of this application. By default, it is a customizable dashboard displaying\n the most important alarms and shortcuts to frequently used features.\n </p>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </div>\n </div>\n </div>\n <c8y-cockpit-setup-stepper-buttons\n [index]=\"stepper.selectedIndex\"\n (onNext)=\"next()\"\n (onBack)=\"back()\"\n ></c8y-cockpit-setup-stepper-buttons>\n</form>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.HomeDashboardConfigComponent, selector: "c8y-home-dashboard-config", inputs: ["config"] }, { kind: "component", type: i5.CockpitSetupStepperButtonsComponent, selector: "c8y-cockpit-setup-stepper-buttons", inputs: ["index"], outputs: ["onNext", "onBack"] }] });
22
+ CockpitSetupStep3Component.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CockpitSetupStep3Component, selector: "c8y-cockpit-setup-step3", host: { classAttribute: "d-contents" }, usesInheritance: true, ngImport: i0, template: "<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n <div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Home dashboard</h3>\n <p class=\"lead text-normal\" translate>\n The homepage of this application. By default, it is a customizable dashboard displaying\n the most important alarms and shortcuts to frequently used features.\n </p>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </div>\n </div>\n </div>\n <c8y-cockpit-setup-stepper-buttons\n [index]=\"stepper.selectedIndex\"\n (onNext)=\"next()\"\n (onBack)=\"back()\"\n ></c8y-cockpit-setup-stepper-buttons>\n</form>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i4.HomeDashboardConfigComponent, selector: "c8y-home-dashboard-config", inputs: ["config"] }, { kind: "component", type: i5.CockpitSetupStepperButtonsComponent, selector: "c8y-cockpit-setup-stepper-buttons", inputs: ["index"], outputs: ["onNext", "onBack"] }] });
23
23
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CockpitSetupStep3Component, decorators: [{
24
24
  type: Component,
25
- args: [{ selector: 'c8y-cockpit-setup-step3', host: { class: 'd-contents' }, template: "<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n <div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Home dashboard</h3>\n <p class=\"lead text-normal\" translate>\n The home page of this application. By default, it is a customizable dashboard displaying\n the most important alarms and shortcuts to frequently used features.\n </p>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </div>\n </div>\n </div>\n <c8y-cockpit-setup-stepper-buttons\n [index]=\"stepper.selectedIndex\"\n (onNext)=\"next()\"\n (onBack)=\"back()\"\n ></c8y-cockpit-setup-stepper-buttons>\n</form>\n" }]
25
+ args: [{ selector: 'c8y-cockpit-setup-step3', host: { class: 'd-contents' }, template: "<form #stepForm=\"ngForm\" name=\"form\" class=\"d-contents\">\n <div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Home dashboard</h3>\n <p class=\"lead text-normal\" translate>\n The homepage of this application. By default, it is a customizable dashboard displaying\n the most important alarms and shortcuts to frequently used features.\n </p>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <c8y-home-dashboard-config [config]=\"config\"></c8y-home-dashboard-config>\n </div>\n </div>\n </div>\n </div>\n <c8y-cockpit-setup-stepper-buttons\n [index]=\"stepper.selectedIndex\"\n (onNext)=\"next()\"\n (onBack)=\"back()\"\n ></c8y-cockpit-setup-stepper-buttons>\n</form>\n" }]
26
26
  }], ctorParameters: function () { return [{ type: i1.C8yStepper }, { type: i2.CdkStep }, { type: i1.SetupComponent }, { type: i1.AppStateService }, { type: i1.AlertService }]; } });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ja3BpdC1zZXR1cC1zdGVwMy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb2NrcGl0LWNvbmZpZy9zZXR1cC9jb2NrcGl0LXNldHVwLXN0ZXAzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvY2twaXQtY29uZmlnL3NldHVwL2NvY2twaXQtc2V0dXAtc3RlcDMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7O0FBT3hELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxnQkFBZ0I7SUFDOUQsWUFDUyxPQUFtQixFQUNoQixJQUFhLEVBQ2IsS0FBcUIsRUFDckIsUUFBeUIsRUFDekIsS0FBbUI7UUFFN0IsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQU50QyxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ2hCLFNBQUksR0FBSixJQUFJLENBQVM7UUFDYixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixVQUFLLEdBQUwsS0FBSyxDQUFjO0lBRy9CLENBQUM7O3VIQVRVLDBCQUEwQjsyR0FBMUIsMEJBQTBCLDhIQ1Z2QywybENBMkJBOzJGRGpCYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UseUJBQXlCLFFBRTdCLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka1N0ZXAgfSBmcm9tICdAYW5ndWxhci9jZGsvc3RlcHBlcic7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgQXBwU3RhdGVTZXJ2aWNlLCBDOHlTdGVwcGVyLCBTZXR1cENvbXBvbmVudCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ29ja3BpdFNldHVwU3RlcCB9IGZyb20gJy4vY29ja3BpdC1zZXR1cC1zdGVwJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWNvY2twaXQtc2V0dXAtc3RlcDMnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29ja3BpdC1zZXR1cC1zdGVwMy5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHsgY2xhc3M6ICdkLWNvbnRlbnRzJyB9XG59KVxuZXhwb3J0IGNsYXNzIENvY2twaXRTZXR1cFN0ZXAzQ29tcG9uZW50IGV4dGVuZHMgQ29ja3BpdFNldHVwU3RlcCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBzdGVwcGVyOiBDOHlTdGVwcGVyLFxuICAgIHByb3RlY3RlZCBzdGVwOiBDZGtTdGVwLFxuICAgIHByb3RlY3RlZCBzZXR1cDogU2V0dXBDb21wb25lbnQsXG4gICAgcHJvdGVjdGVkIGFwcFN0YXRlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFsZXJ0OiBBbGVydFNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoc3RlcHBlciwgc3RlcCwgc2V0dXAsIGFwcFN0YXRlLCBhbGVydCk7XG4gIH1cbn1cbiIsIjxmb3JtICNzdGVwRm9ybT1cIm5nRm9ybVwiIG5hbWU9XCJmb3JtXCIgY2xhc3M9XCJkLWNvbnRlbnRzXCI+XG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWQgZmxleC1uby1zaHJpbmsgZml0LXdcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IHNlcGFyYXRvci1ib3R0b21cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOCBjb2wtbWQtb2Zmc2V0LTIgY29sLWxnLTYgY29sLWxnLW9mZnNldC0zIHAtdC0yNCBwLWwtMTYgcC1yLTE2XCI+XG4gICAgICAgIDxoMyB0cmFuc2xhdGUgY2xhc3M9XCJ0ZXh0LW1lZGl1bSBsLWgtYmFzZVwiPkhvbWUgZGFzaGJvYXJkPC9oMz5cbiAgICAgICAgPHAgY2xhc3M9XCJsZWFkIHRleHQtbm9ybWFsXCIgdHJhbnNsYXRlPlxuICAgICAgICAgIFRoZSBob21lIHBhZ2Ugb2YgdGhpcyBhcHBsaWNhdGlvbi4gQnkgZGVmYXVsdCwgaXQgaXMgYSBjdXN0b21pemFibGUgZGFzaGJvYXJkIGRpc3BsYXlpbmdcbiAgICAgICAgICB0aGUgbW9zdCBpbXBvcnRhbnQgYWxhcm1zIGFuZCBzaG9ydGN1dHMgdG8gZnJlcXVlbnRseSB1c2VkIGZlYXR1cmVzLlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGwgZmxleC1ncm93XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBmaXQtd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTggY29sLW1kLW9mZnNldC0yIGNvbC1sZy02IGNvbC1sZy1vZmZzZXQtM1wiPlxuICAgICAgICAgIDxjOHktaG9tZS1kYXNoYm9hcmQtY29uZmlnIFtjb25maWddPVwiY29uZmlnXCI+PC9jOHktaG9tZS1kYXNoYm9hcmQtY29uZmlnPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGM4eS1jb2NrcGl0LXNldHVwLXN0ZXBwZXItYnV0dG9uc1xuICAgIFtpbmRleF09XCJzdGVwcGVyLnNlbGVjdGVkSW5kZXhcIlxuICAgIChvbk5leHQpPVwibmV4dCgpXCJcbiAgICAob25CYWNrKT1cImJhY2soKVwiXG4gID48L2M4eS1jb2NrcGl0LXNldHVwLXN0ZXBwZXItYnV0dG9ucz5cbjwvZm9ybT5cbiJdfQ==
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ja3BpdC1zZXR1cC1zdGVwMy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb2NrcGl0LWNvbmZpZy9zZXR1cC9jb2NrcGl0LXNldHVwLXN0ZXAzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2NvY2twaXQtY29uZmlnL3NldHVwL2NvY2twaXQtc2V0dXAtc3RlcDMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7O0FBT3hELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxnQkFBZ0I7SUFDOUQsWUFDUyxPQUFtQixFQUNoQixJQUFhLEVBQ2IsS0FBcUIsRUFDckIsUUFBeUIsRUFDekIsS0FBbUI7UUFFN0IsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQU50QyxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ2hCLFNBQUksR0FBSixJQUFJLENBQVM7UUFDYixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixVQUFLLEdBQUwsS0FBSyxDQUFjO0lBRy9CLENBQUM7O3VIQVRVLDBCQUEwQjsyR0FBMUIsMEJBQTBCLDhIQ1Z2QywwbENBMkJBOzJGRGpCYSwwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0UseUJBQXlCLFFBRTdCLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka1N0ZXAgfSBmcm9tICdAYW5ndWxhci9jZGsvc3RlcHBlcic7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgQXBwU3RhdGVTZXJ2aWNlLCBDOHlTdGVwcGVyLCBTZXR1cENvbXBvbmVudCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ29ja3BpdFNldHVwU3RlcCB9IGZyb20gJy4vY29ja3BpdC1zZXR1cC1zdGVwJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWNvY2twaXQtc2V0dXAtc3RlcDMnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29ja3BpdC1zZXR1cC1zdGVwMy5jb21wb25lbnQuaHRtbCcsXG4gIGhvc3Q6IHsgY2xhc3M6ICdkLWNvbnRlbnRzJyB9XG59KVxuZXhwb3J0IGNsYXNzIENvY2twaXRTZXR1cFN0ZXAzQ29tcG9uZW50IGV4dGVuZHMgQ29ja3BpdFNldHVwU3RlcCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBzdGVwcGVyOiBDOHlTdGVwcGVyLFxuICAgIHByb3RlY3RlZCBzdGVwOiBDZGtTdGVwLFxuICAgIHByb3RlY3RlZCBzZXR1cDogU2V0dXBDb21wb25lbnQsXG4gICAgcHJvdGVjdGVkIGFwcFN0YXRlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFsZXJ0OiBBbGVydFNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoc3RlcHBlciwgc3RlcCwgc2V0dXAsIGFwcFN0YXRlLCBhbGVydCk7XG4gIH1cbn1cbiIsIjxmb3JtICNzdGVwRm9ybT1cIm5nRm9ybVwiIG5hbWU9XCJmb3JtXCIgY2xhc3M9XCJkLWNvbnRlbnRzXCI+XG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWQgZmxleC1uby1zaHJpbmsgZml0LXdcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IHNlcGFyYXRvci1ib3R0b21cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOCBjb2wtbWQtb2Zmc2V0LTIgY29sLWxnLTYgY29sLWxnLW9mZnNldC0zIHAtdC0yNCBwLWwtMTYgcC1yLTE2XCI+XG4gICAgICAgIDxoMyB0cmFuc2xhdGUgY2xhc3M9XCJ0ZXh0LW1lZGl1bSBsLWgtYmFzZVwiPkhvbWUgZGFzaGJvYXJkPC9oMz5cbiAgICAgICAgPHAgY2xhc3M9XCJsZWFkIHRleHQtbm9ybWFsXCIgdHJhbnNsYXRlPlxuICAgICAgICAgIFRoZSBob21lcGFnZSBvZiB0aGlzIGFwcGxpY2F0aW9uLiBCeSBkZWZhdWx0LCBpdCBpcyBhIGN1c3RvbWl6YWJsZSBkYXNoYm9hcmQgZGlzcGxheWluZ1xuICAgICAgICAgIHRoZSBtb3N0IGltcG9ydGFudCBhbGFybXMgYW5kIHNob3J0Y3V0cyB0byBmcmVxdWVudGx5IHVzZWQgZmVhdHVyZXMuXG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImlubmVyLXNjcm9sbCBmbGV4LWdyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkIGZpdC13XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOCBjb2wtbWQtb2Zmc2V0LTIgY29sLWxnLTYgY29sLWxnLW9mZnNldC0zXCI+XG4gICAgICAgICAgPGM4eS1ob21lLWRhc2hib2FyZC1jb25maWcgW2NvbmZpZ109XCJjb25maWdcIj48L2M4eS1ob21lLWRhc2hib2FyZC1jb25maWc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8Yzh5LWNvY2twaXQtc2V0dXAtc3RlcHBlci1idXR0b25zXG4gICAgW2luZGV4XT1cInN0ZXBwZXIuc2VsZWN0ZWRJbmRleFwiXG4gICAgKG9uTmV4dCk9XCJuZXh0KClcIlxuICAgIChvbkJhY2spPVwiYmFjaygpXCJcbiAgPjwvYzh5LWNvY2twaXQtc2V0dXAtc3RlcHBlci1idXR0b25zPlxuPC9mb3JtPlxuIl19
@@ -202,7 +202,7 @@ FilePickerNewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0",
202
202
  multi: true,
203
203
  useExisting: forwardRef(() => FilePickerNewComponent)
204
204
  }
205
- ], viewQueries: [{ propertyName: "filePlaceholder", first: true, predicate: ["filePlaceholder"], descendants: true, static: true }], ngImport: i0, template: "<c8y-form-group class=\"m-0\">\n <div\n class=\"file-picker-drop-zone\"\n [class.dragging]=\"isDropAreaEnlarged$ | async\"\n [class.unsupported-format]=\"isDraggedFileUnsupported$ | async\"\n tabindex=\"0\"\n >\n <div\n #filePlaceholder\n class=\"file-placeholder pointer\"\n [class.drag-over]=\"isDraggingOverFilePlaceholder$ | async\"\n (drop)=\"onDrop($event)\"\n (click)=\"!uploadInProgress && picker.click()\"\n >\n <div\n *ngIf=\"isDraggedFileUnsupported$ | async; else defaultHint\"\n class=\"hint-placeholder pointer\"\n >\n <i c8yIcon=\"warning\" class=\"warning\"></i>\n <p>\n <b translate>Unsupported file format.</b>\n </p>\n </div>\n\n <ng-template #defaultHint>\n <div *ngIf=\"!uploadInProgress\" class=\"hint-placeholder\">\n <i c8yIcon=\"upload\"></i>\n <p>\n <b>{{ 'Drop files here or click to browse' | translate }}</b>\n </p>\n <p *ngIf=\"accept\" class=\"m-t-8 text-12 text-muted\">\n {{ 'Supported file formats:' | translate }} {{ accept }}\n </p>\n <div\n class=\"c8y-messages has-error p-b-8 text-left\"\n *ngIf=\"\n controlInstance.touched && controlInstance.errors && controlInstance.errors\n | filterNonArrayValidationErrors\n \"\n >\n <ng-container\n *ngFor=\"\n let error of controlInstance.errors | filterNonArrayValidationErrors | keyvalue\n \"\n >\n <small class=\"form-control-feedback-message\">\n {{ error.key | humanizeValidationMessage | translate: error.value }}\n </small>\n </ng-container>\n </div>\n </div>\n <div *ngIf=\"uploadInProgress\" class=\"d-flex d-col p-4 flex-center\">\n <c8y-loading></c8y-loading>\n <p class=\"m-t-auto m-b-auto m-r-8 text-center\">\n {{ loadingMessage | translate }}\n </p>\n </div>\n </ng-template>\n </div>\n </div>\n <div class=\"file-container\">\n <ul class=\"list-group\">\n <ng-container *ngFor=\"let file of droppedFiles; let i = index\">\n <li class=\"list-group-item p-4 a-i-center\">\n <div class=\"d-flex a-i-center\">\n <i [c8yIcon]=\"file | fileIcon\" class=\"icon-20 m-r-8\"></i>\n <div class=\"m-r-16 text-truncate\" [title]=\"file.name\">\n {{ file.name }}\n </div>\n <div class=\"m-r-16 text-nowrap\">({{ file.size | bytes }})</div>\n <div class=\"m-l-auto\">\n <button\n *ngIf=\"!uploadInProgress\"\n (click)=\"deleteAt(i)\"\n class=\"btn btn-dot btn-dot--danger\"\n type=\"button\"\n [attr.aria-label]=\"'Remove' | translate\"\n title=\"{{ 'Remove' | translate }}\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n <div class=\"btn-dot btn\" *ngIf=\"uploadInProgress\" disabled=\"disabled\">\n <i c8yIcon=\"circled-notch\" class=\"icon-spin\"></i>\n </div>\n </div>\n </div>\n <ng-container\n *ngFor=\"\n let error of controlInstance.errors | extractArrayValidationErrors: i | keyvalue\n \"\n >\n <div class=\"c8y-messages has-error p-b-24\">\n <small class=\"form-control-feedback-message m-0\" style=\"margin-top: -6px !important\">\n {{ error.key | humanizeValidationMessage | translate: error.value }}\n </small>\n </div>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n </div>\n <input\n #picker\n (change)=\"filesSelected($event)\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n type=\"file\"\n class=\"hidden\"\n id=\"file\"\n />\n</c8y-form-group>\n", dependencies: [{ kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: i6.LoadingComponent, selector: "c8y-loading" }, { kind: "pipe", type: i7.ExtractArrayValidationErrorsPipe, name: "extractArrayValidationErrors" }, { kind: "pipe", type: i8.FilterNonArrayValidationErrorsPipe, name: "filterNonArrayValidationErrors" }, { kind: "pipe", type: i9.HumanizeValidationMessagePipe, name: "humanizeValidationMessage" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i10.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i11.BytesPipe, name: "bytes" }, { kind: "pipe", type: i12.GenericFileIconPipe, name: "fileIcon" }] });
205
+ ], viewQueries: [{ propertyName: "filePlaceholder", first: true, predicate: ["filePlaceholder"], descendants: true, static: true }], ngImport: i0, template: "<c8y-form-group class=\"m-0\">\n <div\n class=\"file-picker-drop-zone\"\n [class.dragging]=\"isDropAreaEnlarged$ | async\"\n [class.unsupported-format]=\"isDraggedFileUnsupported$ | async\"\n tabindex=\"0\"\n >\n <div\n #filePlaceholder\n class=\"file-placeholder pointer\"\n [class.drag-over]=\"isDraggingOverFilePlaceholder$ | async\"\n (drop)=\"onDrop($event)\"\n (click)=\"!uploadInProgress && picker.click()\"\n >\n <div\n *ngIf=\"isDraggedFileUnsupported$ | async; else defaultHint\"\n class=\"hint-placeholder pointer\"\n >\n <i c8yIcon=\"warning\" class=\"warning\"></i>\n <p>\n <b translate>Unsupported file format.</b>\n </p>\n </div>\n\n <ng-template #defaultHint>\n <div *ngIf=\"!uploadInProgress\" class=\"hint-placeholder\">\n <i c8yIcon=\"upload\"></i>\n <p>\n <b>{{ 'Drop files here or click to browse' | translate }}</b>\n </p>\n <p *ngIf=\"accept\" class=\"m-t-8 text-12 text-muted\">\n {{ 'Supported file types:' | translate }} {{ accept }}\n </p>\n <div\n class=\"c8y-messages has-error p-b-8 text-left\"\n *ngIf=\"\n controlInstance.touched && controlInstance.errors && controlInstance.errors\n | filterNonArrayValidationErrors\n \"\n >\n <ng-container\n *ngFor=\"\n let error of controlInstance.errors | filterNonArrayValidationErrors | keyvalue\n \"\n >\n <small class=\"form-control-feedback-message\">\n {{ error.key | humanizeValidationMessage | translate: error.value }}\n </small>\n </ng-container>\n </div>\n </div>\n <div *ngIf=\"uploadInProgress\" class=\"d-flex d-col p-4 flex-center\">\n <c8y-loading></c8y-loading>\n <p class=\"m-t-auto m-b-auto m-r-8 text-center\">\n {{ loadingMessage | translate }}\n </p>\n </div>\n </ng-template>\n </div>\n </div>\n <div class=\"file-container\">\n <ul class=\"list-group\">\n <ng-container *ngFor=\"let file of droppedFiles; let i = index\">\n <li class=\"list-group-item p-4 a-i-center\">\n <div class=\"d-flex a-i-center\">\n <i [c8yIcon]=\"file | fileIcon\" class=\"icon-20 m-r-8\"></i>\n <div class=\"m-r-16 text-truncate\" [title]=\"file.name\">\n {{ file.name }}\n </div>\n <div class=\"m-r-16 text-nowrap\">({{ file.size | bytes }})</div>\n <div class=\"m-l-auto\">\n <button\n *ngIf=\"!uploadInProgress\"\n (click)=\"deleteAt(i)\"\n class=\"btn btn-dot btn-dot--danger\"\n type=\"button\"\n [attr.aria-label]=\"'Remove' | translate\"\n title=\"{{ 'Remove' | translate }}\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n <div class=\"btn-dot btn\" *ngIf=\"uploadInProgress\" disabled=\"disabled\">\n <i c8yIcon=\"circled-notch\" class=\"icon-spin\"></i>\n </div>\n </div>\n </div>\n <ng-container\n *ngFor=\"\n let error of controlInstance.errors | extractArrayValidationErrors: i | keyvalue\n \"\n >\n <div class=\"c8y-messages has-error p-b-24\">\n <small class=\"form-control-feedback-message m-0\" style=\"margin-top: -6px !important\">\n {{ error.key | humanizeValidationMessage | translate: error.value }}\n </small>\n </div>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n </div>\n <input\n #picker\n (change)=\"filesSelected($event)\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n type=\"file\"\n class=\"hidden\"\n id=\"file\"\n />\n</c8y-form-group>\n", dependencies: [{ kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: i6.LoadingComponent, selector: "c8y-loading" }, { kind: "pipe", type: i7.ExtractArrayValidationErrorsPipe, name: "extractArrayValidationErrors" }, { kind: "pipe", type: i8.FilterNonArrayValidationErrorsPipe, name: "filterNonArrayValidationErrors" }, { kind: "pipe", type: i9.HumanizeValidationMessagePipe, name: "humanizeValidationMessage" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i10.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i11.BytesPipe, name: "bytes" }, { kind: "pipe", type: i12.GenericFileIconPipe, name: "fileIcon" }] });
206
206
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FilePickerNewComponent, decorators: [{
207
207
  type: Component,
208
208
  args: [{ selector: 'c8y-file-picker-new', providers: [
@@ -216,7 +216,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
216
216
  multi: true,
217
217
  useExisting: forwardRef(() => FilePickerNewComponent)
218
218
  }
219
- ], template: "<c8y-form-group class=\"m-0\">\n <div\n class=\"file-picker-drop-zone\"\n [class.dragging]=\"isDropAreaEnlarged$ | async\"\n [class.unsupported-format]=\"isDraggedFileUnsupported$ | async\"\n tabindex=\"0\"\n >\n <div\n #filePlaceholder\n class=\"file-placeholder pointer\"\n [class.drag-over]=\"isDraggingOverFilePlaceholder$ | async\"\n (drop)=\"onDrop($event)\"\n (click)=\"!uploadInProgress && picker.click()\"\n >\n <div\n *ngIf=\"isDraggedFileUnsupported$ | async; else defaultHint\"\n class=\"hint-placeholder pointer\"\n >\n <i c8yIcon=\"warning\" class=\"warning\"></i>\n <p>\n <b translate>Unsupported file format.</b>\n </p>\n </div>\n\n <ng-template #defaultHint>\n <div *ngIf=\"!uploadInProgress\" class=\"hint-placeholder\">\n <i c8yIcon=\"upload\"></i>\n <p>\n <b>{{ 'Drop files here or click to browse' | translate }}</b>\n </p>\n <p *ngIf=\"accept\" class=\"m-t-8 text-12 text-muted\">\n {{ 'Supported file formats:' | translate }} {{ accept }}\n </p>\n <div\n class=\"c8y-messages has-error p-b-8 text-left\"\n *ngIf=\"\n controlInstance.touched && controlInstance.errors && controlInstance.errors\n | filterNonArrayValidationErrors\n \"\n >\n <ng-container\n *ngFor=\"\n let error of controlInstance.errors | filterNonArrayValidationErrors | keyvalue\n \"\n >\n <small class=\"form-control-feedback-message\">\n {{ error.key | humanizeValidationMessage | translate: error.value }}\n </small>\n </ng-container>\n </div>\n </div>\n <div *ngIf=\"uploadInProgress\" class=\"d-flex d-col p-4 flex-center\">\n <c8y-loading></c8y-loading>\n <p class=\"m-t-auto m-b-auto m-r-8 text-center\">\n {{ loadingMessage | translate }}\n </p>\n </div>\n </ng-template>\n </div>\n </div>\n <div class=\"file-container\">\n <ul class=\"list-group\">\n <ng-container *ngFor=\"let file of droppedFiles; let i = index\">\n <li class=\"list-group-item p-4 a-i-center\">\n <div class=\"d-flex a-i-center\">\n <i [c8yIcon]=\"file | fileIcon\" class=\"icon-20 m-r-8\"></i>\n <div class=\"m-r-16 text-truncate\" [title]=\"file.name\">\n {{ file.name }}\n </div>\n <div class=\"m-r-16 text-nowrap\">({{ file.size | bytes }})</div>\n <div class=\"m-l-auto\">\n <button\n *ngIf=\"!uploadInProgress\"\n (click)=\"deleteAt(i)\"\n class=\"btn btn-dot btn-dot--danger\"\n type=\"button\"\n [attr.aria-label]=\"'Remove' | translate\"\n title=\"{{ 'Remove' | translate }}\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n <div class=\"btn-dot btn\" *ngIf=\"uploadInProgress\" disabled=\"disabled\">\n <i c8yIcon=\"circled-notch\" class=\"icon-spin\"></i>\n </div>\n </div>\n </div>\n <ng-container\n *ngFor=\"\n let error of controlInstance.errors | extractArrayValidationErrors: i | keyvalue\n \"\n >\n <div class=\"c8y-messages has-error p-b-24\">\n <small class=\"form-control-feedback-message m-0\" style=\"margin-top: -6px !important\">\n {{ error.key | humanizeValidationMessage | translate: error.value }}\n </small>\n </div>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n </div>\n <input\n #picker\n (change)=\"filesSelected($event)\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n type=\"file\"\n class=\"hidden\"\n id=\"file\"\n />\n</c8y-form-group>\n" }]
219
+ ], template: "<c8y-form-group class=\"m-0\">\n <div\n class=\"file-picker-drop-zone\"\n [class.dragging]=\"isDropAreaEnlarged$ | async\"\n [class.unsupported-format]=\"isDraggedFileUnsupported$ | async\"\n tabindex=\"0\"\n >\n <div\n #filePlaceholder\n class=\"file-placeholder pointer\"\n [class.drag-over]=\"isDraggingOverFilePlaceholder$ | async\"\n (drop)=\"onDrop($event)\"\n (click)=\"!uploadInProgress && picker.click()\"\n >\n <div\n *ngIf=\"isDraggedFileUnsupported$ | async; else defaultHint\"\n class=\"hint-placeholder pointer\"\n >\n <i c8yIcon=\"warning\" class=\"warning\"></i>\n <p>\n <b translate>Unsupported file format.</b>\n </p>\n </div>\n\n <ng-template #defaultHint>\n <div *ngIf=\"!uploadInProgress\" class=\"hint-placeholder\">\n <i c8yIcon=\"upload\"></i>\n <p>\n <b>{{ 'Drop files here or click to browse' | translate }}</b>\n </p>\n <p *ngIf=\"accept\" class=\"m-t-8 text-12 text-muted\">\n {{ 'Supported file types:' | translate }} {{ accept }}\n </p>\n <div\n class=\"c8y-messages has-error p-b-8 text-left\"\n *ngIf=\"\n controlInstance.touched && controlInstance.errors && controlInstance.errors\n | filterNonArrayValidationErrors\n \"\n >\n <ng-container\n *ngFor=\"\n let error of controlInstance.errors | filterNonArrayValidationErrors | keyvalue\n \"\n >\n <small class=\"form-control-feedback-message\">\n {{ error.key | humanizeValidationMessage | translate: error.value }}\n </small>\n </ng-container>\n </div>\n </div>\n <div *ngIf=\"uploadInProgress\" class=\"d-flex d-col p-4 flex-center\">\n <c8y-loading></c8y-loading>\n <p class=\"m-t-auto m-b-auto m-r-8 text-center\">\n {{ loadingMessage | translate }}\n </p>\n </div>\n </ng-template>\n </div>\n </div>\n <div class=\"file-container\">\n <ul class=\"list-group\">\n <ng-container *ngFor=\"let file of droppedFiles; let i = index\">\n <li class=\"list-group-item p-4 a-i-center\">\n <div class=\"d-flex a-i-center\">\n <i [c8yIcon]=\"file | fileIcon\" class=\"icon-20 m-r-8\"></i>\n <div class=\"m-r-16 text-truncate\" [title]=\"file.name\">\n {{ file.name }}\n </div>\n <div class=\"m-r-16 text-nowrap\">({{ file.size | bytes }})</div>\n <div class=\"m-l-auto\">\n <button\n *ngIf=\"!uploadInProgress\"\n (click)=\"deleteAt(i)\"\n class=\"btn btn-dot btn-dot--danger\"\n type=\"button\"\n [attr.aria-label]=\"'Remove' | translate\"\n title=\"{{ 'Remove' | translate }}\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n <div class=\"btn-dot btn\" *ngIf=\"uploadInProgress\" disabled=\"disabled\">\n <i c8yIcon=\"circled-notch\" class=\"icon-spin\"></i>\n </div>\n </div>\n </div>\n <ng-container\n *ngFor=\"\n let error of controlInstance.errors | extractArrayValidationErrors: i | keyvalue\n \"\n >\n <div class=\"c8y-messages has-error p-b-24\">\n <small class=\"form-control-feedback-message m-0\" style=\"margin-top: -6px !important\">\n {{ error.key | humanizeValidationMessage | translate: error.value }}\n </small>\n </div>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n </div>\n <input\n #picker\n (change)=\"filesSelected($event)\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n type=\"file\"\n class=\"hidden\"\n id=\"file\"\n />\n</c8y-form-group>\n" }]
220
220
  }], ctorParameters: function () { return [{ type: i1.FilesService }, { type: i0.Injector, decorators: [{
221
221
  type: Inject,
222
222
  args: [Injector]
@@ -245,4 +245,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
245
245
  function appendErrors(errors, newErrors) {
246
246
  return newErrors ? { ...errors, ...newErrors } : errors;
247
247
  }
248
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXItbmV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZmlsZS1waWNrZXItbmV3L2ZpbGUtcGlja2VyLW5ldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2ZpbGUtcGlja2VyLW5ldy9maWxlLXBpY2tlci1uZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFFVixZQUFZLEVBRVosVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILE1BQU0sRUFDTixTQUFTLEVBQ1QsR0FBRyxFQUNILGNBQWMsRUFDZixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUdMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLFNBQVMsRUFHVixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQVFsQzs7R0FFRztBQWtCSCxNQUFNLE9BQU8sc0JBQXNCO0lBbUVqQyxZQUFvQixZQUEwQixFQUE0QixRQUFrQjtRQUF4RSxpQkFB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IEVsZW1lbnRSZWYsXG4gIEFmdGVyVmlld0luaXQsXG4gIEhvc3RMaXN0ZW5lcixcbiAgT25Jbml0LFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgZmlsdGVyLFxuICBtYXAsXG4gIHNhbXBsZSxcbiAgc3dpdGNoTWFwLFxuICB0YXAsXG4gIHdpdGhMYXRlc3RGcm9tXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCAqIGFzIG1pbWVEQiBmcm9tICdtaW1lLWRiJztcbmltcG9ydCB7IEZpbGVzU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQ29udHJvbCxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5nQ29udHJvbCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpbGVQaWNrZXJWYWxpZGF0b3JzIH0gZnJvbSAnLi9maWxlLXBpY2tlci12YWxpZGF0b3JzJztcbmltcG9ydCB7IHZhbGlkYXRlQXJyYXlFbGVtZW50cyB9IGZyb20gJy4uL2Zvcm1zJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICcuLi9pMThuJztcblxuaW50ZXJmYWNlIElBdmFpbGFibGVWYWxpZGF0b3JzIHtcbiAgZmlsZU1heFNpemU/OiBib29sZWFuO1xuICBmaWxlTm9uRW1wdHk/OiBib29sZWFuO1xuICBmaWxlTmFtZU1heExlbmd0aD86IGJvb2xlYW47XG59XG5cbi8qKlxuIEZpbGUgdXBsb2FkZXJcbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZmlsZS1waWNrZXItbmV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtcGlja2VyLW5ldy5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmlsZVBpY2tlck5ld0NvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmlsZVBpY2tlck5ld0NvbXBvbmVudClcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVBpY2tlck5ld0NvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvclxue1xuICBAVmlld0NoaWxkKCdmaWxlUGxhY2Vob2xkZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBmaWxlUGxhY2Vob2xkZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIC8qKiBTcGVjaWZpZXMgYSBmaWx0ZXIgZm9yIHdoYXQgZmlsZSB0eXBlcyB0aGUgdXNlciBjYW4gcGljayBmcm9tIHRoZSBmaWxlIGlucHV0IGRpYWxvZyBib3guXG4gICAqIEJ5IGRlZmF1bHQgYWxsIHR5cGVzIGFyZSBhY2NlcHRlZC5cbiAgICogIyMgRXhhbXBsZTpcbiAgICpcbiAgICogU3BlY2lmeSBmaWxlIHR5cGVzIGJ5IGV4dGVuc2lvbnM6XG4gICAqIGBgYGh0bWxcbiAgICogIC4uLlxuICAgKiAgW2FjY2VwdF09XCInLnppcCwuN3onXCJcbiAgICogIC4uLlxuICAgKiBgYGBcbiAgICpcbiAgICogU3BlY2lmeSBmaWxlIHR5cGVzIGJ5IGV4dGVuc2lvbnMgYW5kIGdlbmVyaWMgdHlwZXMgW0dFTkVSSUNfRklMRV9UWVBFXXtAbGluayBHRU5FUklDX0ZJTEVfVFlQRX06XG4gICAqIGBgYGh0bWxcbiAgICogIC4uLlxuICAgKiAgW2FjY2VwdF09XCInLnBkZixhcmNoaXZlJ1wiXG4gICAqICAuLi5cbiAgICogYGBgXG4gICAqXG4gICAqIFNwZWNpZnkgZmlsZSB0eXBlcyBieSBnZW5lcmljIHR5cGVzIFtHRU5FUklDX0ZJTEVfVFlQRV17QGxpbmsgR0VORVJJQ19GSUxFX1RZUEV9OlxuICAgKiAgYGBgaHRtbFxuICAgKiAgLi4uXG4gICAqICBbYWNjZXB0XT1cIidhcmNoaXZlLHZpZGVvJ1wiXG4gICAqICAuLi5cbiAgICpcbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoKVxuICBhY2NlcHQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIG1heEFsbG93ZWRGaWxlcz86IG51bWJlciA9IEluZmluaXR5O1xuICBASW5wdXQoKVxuICBtaW5SZXF1aXJlZEZpbGVzPzogbnVtYmVyID0gMTtcbiAgQElucHV0KClcbiAgZGlzYWJsZVZhbGlkYXRvcnM6IElBdmFpbGFibGVWYWxpZGF0b3JzID0ge307XG4gIEBJbnB1dCgpXG4gIHVwbG9hZEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgQE91dHB1dCgpXG4gIGRyb3BwZWQ6IEV2ZW50RW1pdHRlcjxGaWxlW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGRyb3BwZWRGaWxlczogRmlsZVtdID0gW107XG5cbiAgaXNEcmFnZ2luZ0ZpbGVzJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgaXNEcmFnZ2luZ092ZXJGaWxlUGxhY2Vob2xkZXIkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc0V4dGVuc2lvbkFsbG93ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc0Ryb3BBcmVhRW5sYXJnZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc0RyYWdnZWRGaWxlVW5zdXBwb3J0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBhY2NlcHRlZEV4dHM6IHN0cmluZ1tdO1xuICB2YWxpZDogYm9vbGVhbjtcbiAgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzO1xuICBjb250cm9sSW5zdGFuY2U6IEFic3RyYWN0Q29udHJvbDtcbiAgLy8gVE9ETyBoYW5kbGUgY29udHJvbCBkaXNhYmxlZCBzdGF0ZVxuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgZGlzYWJsZWRWYWxpZGF0b3JzOiBJQXZhaWxhYmxlVmFsaWRhdG9ycyA9IHtcbiAgICBmaWxlTWF4U2l6ZTogZmFsc2UsXG4gICAgZmlsZU5vbkVtcHR5OiBmYWxzZSxcbiAgICBmaWxlTmFtZU1heExlbmd0aDogZmFsc2VcbiAgfTtcbiAgbG9hZGluZ01lc3NhZ2UgPSBnZXR0ZXh0KCdVcGxvYWQgaW4gcHJvZ3Jlc3MnKTtcbiAgcHJpdmF0ZSBpc0V4dGVuc2lvbkFsbG93ZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgZmlsZVNpemVMaW1pdDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmlsZXNTZXJ2aWNlOiBGaWxlc1NlcnZpY2UsIEBJbmplY3QoSW5qZWN0b3IpIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IG5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0PE5nQ29udHJvbCB8IGZhbHNlPihOZ0NvbnRyb2wsIGZhbHNlKTtcblxuICAgIGlmIChuZ0NvbnRyb2wgJiYgbmdDb250cm9sLmNvbnRyb2wpIHtcbiAgICAgIHRoaXMuY29udHJvbEluc3RhbmNlID0gbmdDb250cm9sLmNvbnRyb2w7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qKlxuICAgICAgICogSW4gY2FzZSBpZiBjb21wb25lbnQgaXMgdXNlZCB3aXRob3V0IHV0aWxpemluZyBDb250cm9sVmFsdWVBY2Nlc3NvciwgaW50ZXJuYWwgY29udHJvbFxuICAgICAgICogaW5zdGFuY2UgaXMgY3JlYXRlZCwgc28gaXQgY2FuIHN0aWxsIGJlbmVmaXQgZnJvbSBidWlsdCBpbiB2YWxpZGF0b3JzLlxuICAgICAgICogKGRyb3BwZWQpIEBPdXRwdXQgZXZlbnQgY2FuIGJlIHVzZWQgdG8gZ2V0IGxpc3Qgb2YgZmlsZXMuXG4gICAgICAgKi9cbiAgICAgIHRoaXMuY29udHJvbEluc3RhbmNlID0gbmV3IEZvcm1Db250cm9sKFtdLCB0aGlzLnZhbGlkYXRlLmJpbmQodGhpcykpO1xuICAgICAgdGhpcy5vbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb250cm9sSW5zdGFuY2Uuc2V0VmFsdWUodGhpcy5kcm9wcGVkRmlsZXMpO1xuICAgICAgfTtcbiAgICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuY29udHJvbEluc3RhbmNlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIH07XG4gICAgICB0aGlzLm9uVG91Y2hlZCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb250cm9sSW5zdGFuY2UubWFya0FzVG91Y2hlZCgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLmFjY2VwdGVkRXh0cyA9IHRoaXMuZmlsZXNTZXJ2aWNlLmV4dHJhY3RGaWxlRXh0ZW5zaW9ucyh0aGlzLmFjY2VwdCkubWFwKHQgPT4gYC4ke3R9YCk7XG5cbiAgICB0aGlzLmRpc2FibGVkVmFsaWRhdG9ycyA9IHsgLi4udGhpcy5kaXNhYmxlZFZhbGlkYXRvcnMsIC4uLnRoaXMuZGlzYWJsZVZhbGlkYXRvcnMgfTtcblxuICAgIHRoaXMuZmlsZXNTZXJ2aWNlLmxvYWRCeXRlc1NpemVMaW1pdCgpLnRoZW4oc2l6ZUxpbWl0ID0+IHtcbiAgICAgIHRoaXMuZmlsZVNpemVMaW1pdCA9IHNpemVMaW1pdDtcbiAgICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2UoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAvKipcbiAgICAgKiBFbWl0cyBEcmFnRXZlbnQgd2hlbiB1c2VyIGRyYWcgZmlsZSBpbnNpZGUgb3Igb3V0c2lkZSB2aWV3cG9ydC4gT25seSB3b3JrcyB3aGVuIHR5cGUgb2YgZHJhZ2dlZCBlbGVtZW50cyBpcyAnRmlsZXMnLlxuICAgICAqL1xuICAgIGNvbnN0IGRyYWdnaW5nRmlsZXNHbG9iYWxseSQgPSBtZXJnZShcbiAgICAgIGZyb21FdmVudChkb2N1bWVudCwgJ2RyYWdlbnRlcicpLFxuICAgICAgZnJvbUV2ZW50KGRvY3VtZW50LCAnZHJhZ2xlYXZlJykucGlwZShcbiAgICAgICAgLy8gVE9ETyByZXZpZXcgd2h5IHRoaXMgc3BlY2lmaWMgZmlsdGVyIGlzIG5lZWRlZFxuICAgICAgICBmaWx0ZXIoKGU6IERyYWdFdmVudCkgPT4gZS5wYWdlWCA9PT0gMCAmJiBlLnBhZ2VZID09PSAwKVxuICAgICAgKVxuICAgICkucGlwZShcbiAgICAgIGZpbHRlcigoZXY6IERyYWdFdmVudCkgPT4gZXYuZGF0YVRyYW5zZmVyPy50eXBlcy50b1N0cmluZygpID09PSAnRmlsZXMnKSxcbiAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy51cGxvYWRJblByb2dyZXNzKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyBib29sZWFuIHZhbHVlIHdoZW4gZmlsZSBpcyBkcmFnZ2VkIGluc2lkZSBvciBvdXRzaWRlIG9mIHZpZXdwb3J0LCBvciBmaWxlIGlzIG5vdCBkcmFnZ2VkIGFueW1vcmUuXG4gICAgICovXG4gICAgdGhpcy5pc0RyYWdnaW5nRmlsZXMkID0gbWVyZ2UoXG4gICAgICBkcmFnZ2luZ0ZpbGVzR2xvYmFsbHkkLnBpcGUobWFwKGV2ID0+IGV2LnR5cGUgPT09ICdkcmFnZW50ZXInKSksXG4gICAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICdtb3VzZWVudGVyJykucGlwZShtYXAoKCkgPT4gZmFsc2UpKSxcbiAgICAgIGZyb21FdmVudChkb2N1bWVudCwgJ2Ryb3AnKS5waXBlKG1hcCgoKSA9PiBmYWxzZSkpXG4gICAgKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgYm9vbGVhbiB2YWx1ZSBhZnRlciBjaGVja2luZyBpZiBkcmFnZ2VkIGZpbGVzIG1hdGNoIGNvbmZpZ3VyZWQgZXh0ZW5zaW9ucyBsaXN0LFxuICAgICAqIFdoZW4gZHJhZ2dpbmcgb2YgZmlsZSBzdGFydHMsIGdldCBtaW1ldHlwZXMgb2YgZWFjaCBmaWxlLCBjb252ZXJ0IHRoZW0gdG8gcG9zc2libGUgZXh0ZW5zaW9ucyBsaXN0XG4gICAgICogdGhhdCBtYXkgYmUgYXNzb2NpYXRlZCB3aXRoIGdpdmVuIG1pbWV0eXBlLCBhbmQgdGhlbiBjaGVjayBpZiBhbnkgb2YgdGhlc2UgZXh0ZW5zaW9ucyBtYXRjaCBjb25maWd1cmVkXG4gICAgICogZXh0ZW5zaW9ucyBhY2NlcHQgbGlzdC5cbiAgICAgKi9cbiAgICB0aGlzLmlzRXh0ZW5zaW9uQWxsb3dlZCQgPSBkcmFnZ2luZ0ZpbGVzR2xvYmFsbHkkLnBpcGUoXG4gICAgICBzYW1wbGUodGhpcy5pc0RyYWdnaW5nRmlsZXMkLnBpcGUoZmlsdGVyKGVubGFyZ2VkID0+IGVubGFyZ2VkKSkpLFxuICAgICAgc3dpdGNoTWFwKGV2ID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmFjY2VwdCkge1xuICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvZihldikucGlwZShcbiAgICAgICAgICBtYXAoZXYgPT4gWy4uLihldi5kYXRhVHJhbnNmZXIuaXRlbXMgYXMgdW5rbm93biBhcyBEYXRhVHJhbnNmZXJJdGVtW10pXSksXG4gICAgICAgICAgbWFwKGZpbGVzID0+XG4gICAgICAgICAgICBmaWxlcy5tYXAoZmlsZSA9PiAobWltZURCW2ZpbGUudHlwZV0uZXh0ZW5zaW9ucyBhcyBzdHJpbmdbXSB8IHVuZGVmaW5lZCkgfHwgWyd1bmtub3duJ10pXG4gICAgICAgICAgKSxcbiAgICAgICAgICBtYXAoZXh0ZW5zaW9uc0ZvckZpbGVzID0+XG4gICAgICAgICAgICBleHRlbnNpb25zRm9yRmlsZXMuZXZlcnkoZXh0ZW5zaW9uc0ZvckZpbGUgPT5cbiAgICAgICAgICAgICAgZXh0ZW5zaW9uc0ZvckZpbGUuc29tZShleHQgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVzU2VydmljZS5leHRyYWN0RmlsZUV4dGVuc2lvbnModGhpcy5hY2NlcHQpLmluY2x1ZGVzKGV4dClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKGFsbG93ZWQgPT4ge1xuICAgICAgICB0aGlzLmlzRXh0ZW5zaW9uQWxsb3dlZCA9IGFsbG93ZWQ7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBJZiBGaWxlIGlzIGJlaW5nIGRyYWdnZWQgYW5kIGV4dGVuc2lvbnMgbWVldHMgcmVxdWlyZW1lbnRzLCB0aGVuIGRyb3AtYXJlYSBjYW4gYmUgZW5sYXJnZWQuXG4gICAgICovXG4gICAgdGhpcy5pc0Ryb3BBcmVhRW5sYXJnZWQkID0gdGhpcy5pc0RyYWdnaW5nRmlsZXMkLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmlzRXh0ZW5zaW9uQWxsb3dlZCQpLFxuICAgICAgbWFwKChbZmlsZURyYWdnZWQsIGV4dEFsbG93ZWRdKSA9PiBmaWxlRHJhZ2dlZCAmJiBleHRBbGxvd2VkKVxuICAgICk7XG5cbiAgICB0aGlzLmlzRHJhZ2dlZEZpbGVVbnN1cHBvcnRlZCQgPSB0aGlzLmlzRHJhZ2dpbmdGaWxlcyQucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuaXNFeHRlbnNpb25BbGxvd2VkJCksXG4gICAgICBtYXAoKFtmaWxlRHJhZ2dlZCwgZXh0QWxsb3dlZF0pID0+IGZpbGVEcmFnZ2VkICYmICFleHRBbGxvd2VkKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyB0cnVlIHdoZW4gZmlsZSBpcyBob3ZlcmluZyBhYm92ZSBkcm9wLWFyZWEuIE9ubHkgd29ya3Mgd2hlbiBpc0Ryb3BBcmVhRW5sYXJnZWQkIGFsc28gZW1pdHMgdHJ1ZS5cbiAgICAgKiBUaGlzIGlzIHdvcmthcm91bmQgZm9yIENTUyA6aG92ZXIgcHNldWRvLWNsYXNzIG5vdCB0cmlnZ2VyaW5nIHdoZW4gZHJhZ2dpbmcgZmlsZS5cbiAgICAgKi9cbiAgICB0aGlzLmlzRHJhZ2dpbmdPdmVyRmlsZVBsYWNlaG9sZGVyJCA9IG1lcmdlKFxuICAgICAgZnJvbUV2ZW50KHRoaXMuZmlsZVBsYWNlaG9sZGVyLm5hdGl2ZUVsZW1lbnQsICdkcmFnZW50ZXInKSxcbiAgICAgIGZyb21FdmVudCh0aGlzLmZpbGVQbGFjZWhvbGRlci5uYXRpdmVFbGVtZW50LCAnZHJhZ2xlYXZlJyksXG4gICAgICBmcm9tRXZlbnQodGhpcy5maWxlUGxhY2Vob2xkZXIubmF0aXZlRWxlbWVudCwgJ2Ryb3AnKVxuICAgICkucGlwZShcbiAgICAgIGZpbHRlcigoZXY6IERyYWdFdmVudCkgPT4gZXYuZGF0YVRyYW5zZmVyPy50eXBlcy50b1N0cmluZygpID09PSAnRmlsZXMnKSxcbiAgICAgIG1hcChldiA9PiBldi50eXBlID09PSAnZHJhZ2VudGVyJyksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmlzRHJvcEFyZWFFbmxhcmdlZCQpLFxuICAgICAgbWFwKChbZHJhZ2dpbmdPdmVyLCBkcm9wQXJlYUVubGFyZ2VkXSkgPT4gZHJhZ2dpbmdPdmVyICYmIGRyb3BBcmVhRW5sYXJnZWQpXG4gICAgKTtcbiAgfVxuXG4gIGFmdGVyVmFsdWVDaGFuZ2VkKCkge1xuICAgIHRoaXMub25DaGFuZ2UoWy4uLnRoaXMuZHJvcHBlZEZpbGVzXSk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLmRyb3BwZWQuZW1pdChbLi4udGhpcy5kcm9wcGVkRmlsZXNdKTtcbiAgICB0aGlzLnZhbGlkID0gdGhpcy5jb250cm9sSW5zdGFuY2UudmFsaWQ7XG4gICAgdGhpcy5lcnJvcnMgPSB0aGlzLmNvbnRyb2xJbnN0YW5jZS5lcnJvcnM7XG4gIH1cblxuICBvbkRyb3AoZTogRHJhZ0V2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzRXh0ZW5zaW9uQWxsb3dlZCB8fCB0aGlzLnVwbG9hZEluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZS5kYXRhVHJhbnNmZXIudHlwZXMudG9TdHJpbmcoKSAhPT0gJ0ZpbGVzJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaWxlcyA9IGUuZGF0YVRyYW5zZmVyLmZpbGVzO1xuICAgIGlmICghZmlsZXM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuZHJvcHBlZEZpbGVzLnB1c2goZmlsZXMuaXRlbShpKSk7XG4gICAgfVxuICAgIHRoaXMuYWZ0ZXJWYWx1ZUNoYW5nZWQoKTtcbiAgfVxuXG4gIGZpbGVzU2VsZWN0ZWQoZXY6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gZXYudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgZmlsZXM6IEZpbGVbXSA9IEFycmF5LmZyb20oaW5wdXRFbGVtZW50LmZpbGVzKTtcbiAgICB0aGlzLmRyb3BwZWRGaWxlcy5wdXNoKC4uLmZpbGVzKTtcbiAgICBpbnB1dEVsZW1lbnQudmFsdWUgPSBudWxsO1xuICAgIHRoaXMuYWZ0ZXJWYWx1ZUNoYW5nZWQoKTtcbiAgfVxuXG4gIGRlbGV0ZUF0KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmRyb3BwZWRGaWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuYWZ0ZXJWYWx1ZUNoYW5nZWQoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IG5ldmVyKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IG5ldmVyKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHdyaXRlVmFsdWUoZmlsZXM6IEZpbGVbXSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIWZpbGVzKSB7XG4gICAgICBmaWxlcyA9IFtdO1xuICAgIH1cbiAgICB0aGlzLmRyb3BwZWRGaWxlcyA9IFsuLi5maWxlc107XG4gICAgdGhpcy5vblZhbGlkYXRvckNoYW5nZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmRyYWdvdmVyJywgWyckZXZlbnQnXSlcbiAgb25EcmFnT3ZlcihlKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmRyb3AnLCBbJyRldmVudCddKVxuICBvbldpbmRvd0Ryb3AoZSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBsZXQgZXJyb3JzID0ge307XG5cbiAgICBpZiAoIXRoaXMuZGlzYWJsZVZhbGlkYXRvcnMuZmlsZU1heFNpemUpIHtcbiAgICAgIGVycm9ycyA9IGFwcGVuZEVycm9ycyhcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICB2YWxpZGF0ZUFycmF5RWxlbWVudHMoXG4gICAgICAgICAgRmlsZVBpY2tlclZhbGlkYXRvcnMuZmlsZU1heFNpemUodGhpcy5maWxlU2l6ZUxpbWl0LCB0aGlzLmZpbGVzU2VydmljZSlcbiAgICAgICAgKShjb250cm9sKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmRpc2FibGVWYWxpZGF0b3JzLmZpbGVOb25FbXB0eSkge1xuICAgICAgZXJyb3JzID0gYXBwZW5kRXJyb3JzKFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIHZhbGlkYXRlQXJyYXlFbGVtZW50cyhGaWxlUGlja2VyVmFsaWRhdG9ycy5maWxlTm9uRW1wdHkodGhpcy5maWxlc1NlcnZpY2UpKShjb250cm9sKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmRpc2FibGVWYWxpZGF0b3JzLmZpbGVOYW1lTWF4TGVuZ3RoKSB7XG4gICAgICBlcnJvcnMgPSBhcHBlbmRFcnJvcnMoXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgdmFsaWRhdGVBcnJheUVsZW1lbnRzKEZpbGVQaWNrZXJWYWxpZGF0b3JzLmZpbGVOYW1lTWF4TGVuZ3RoKHRoaXMuZmlsZXNTZXJ2aWNlKSkoY29udHJvbClcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLmFjY2VwdCkge1xuICAgICAgZXJyb3JzID0gYXBwZW5kRXJyb3JzKFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIHZhbGlkYXRlQXJyYXlFbGVtZW50cyhcbiAgICAgICAgICBGaWxlUGlja2VyVmFsaWRhdG9ycy5oYXZlVmFsaWRFeHRlbnNpb25zKHRoaXMuZmlsZXNTZXJ2aWNlLCB0aGlzLmFjY2VwdClcbiAgICAgICAgKShjb250cm9sKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubWF4QWxsb3dlZEZpbGVzKSB7XG4gICAgICBlcnJvcnMgPSBhcHBlbmRFcnJvcnMoXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgRmlsZVBpY2tlclZhbGlkYXRvcnMuZmlsZUNvdW50TWF4KHRoaXMubWF4QWxsb3dlZEZpbGVzKShjb250cm9sKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubWluUmVxdWlyZWRGaWxlcykge1xuICAgICAgZXJyb3JzID0gYXBwZW5kRXJyb3JzKFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIEZpbGVQaWNrZXJWYWxpZGF0b3JzLmZpbGVDb3VudE1pbih0aGlzLm1pblJlcXVpcmVkRmlsZXMpKGNvbnRyb2wpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCA/IGVycm9ycyA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlOiAoZmlsZXM6IEZpbGVbXSkgPT4gdm9pZCA9ICgpID0+IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb25WYWxpZGF0b3JDaGFuZ2U6ICgpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZEVycm9ycyhcbiAgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzLFxuICBuZXdFcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsXG4pOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgcmV0dXJuIG5ld0Vycm9ycyA/IHsgLi4uZXJyb3JzLCAuLi5uZXdFcnJvcnMgfSA6IGVycm9ycztcbn1cbiIsIjxjOHktZm9ybS1ncm91cCBjbGFzcz1cIm0tMFwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJmaWxlLXBpY2tlci1kcm9wLXpvbmVcIlxuICAgIFtjbGFzcy5kcmFnZ2luZ109XCJpc0Ryb3BBcmVhRW5sYXJnZWQkIHwgYXN5bmNcIlxuICAgIFtjbGFzcy51bnN1cHBvcnRlZC1mb3JtYXRdPVwiaXNEcmFnZ2VkRmlsZVVuc3VwcG9ydGVkJCB8IGFzeW5jXCJcbiAgICB0YWJpbmRleD1cIjBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgI2ZpbGVQbGFjZWhvbGRlclxuICAgICAgY2xhc3M9XCJmaWxlLXBsYWNlaG9sZGVyIHBvaW50ZXJcIlxuICAgICAgW2NsYXNzLmRyYWctb3Zlcl09XCJpc0RyYWdnaW5nT3ZlckZpbGVQbGFjZWhvbGRlciQgfCBhc3luY1wiXG4gICAgICAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwiIXVwbG9hZEluUHJvZ3Jlc3MgJiYgcGlja2VyLmNsaWNrKClcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJpc0RyYWdnZWRGaWxlVW5zdXBwb3J0ZWQkIHwgYXN5bmM7IGVsc2UgZGVmYXVsdEhpbnRcIlxuICAgICAgICBjbGFzcz1cImhpbnQtcGxhY2Vob2xkZXIgcG9pbnRlclwiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJ3YXJuaW5nXCIgY2xhc3M9XCJ3YXJuaW5nXCI+PC9pPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8YiB0cmFuc2xhdGU+VW5zdXBwb3J0ZWQgZmlsZSBmb3JtYXQuPC9iPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SGludD5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiF1cGxvYWRJblByb2dyZXNzXCIgY2xhc3M9XCJoaW50LXBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cInVwbG9hZFwiPjwvaT5cbiAgICAgICAgICA8cD5cbiAgICAgICAgICAgIDxiPnt7ICdEcm9wIGZpbGVzIGhlcmUgb3IgY2xpY2sgdG8gYnJvd3NlJyB8IHRyYW5zbGF0ZSB9fTwvYj5cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPHAgKm5nSWY9XCJhY2NlcHRcIiBjbGFzcz1cIm0tdC04IHRleHQtMTIgdGV4dC1tdXRlZFwiPlxuICAgICAgICAgICAge3sgJ1N1cHBvcnRlZCBmaWxlIGZvcm1hdHM6JyB8IHRyYW5zbGF0ZSB9fSB7eyBhY2NlcHQgfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjOHktbWVzc2FnZXMgaGFzLWVycm9yIHAtYi04IHRleHQtbGVmdFwiXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBjb250cm9sSW5zdGFuY2UudG91Y2hlZCAmJiBjb250cm9sSW5zdGFuY2UuZXJyb3JzICYmIGNvbnRyb2xJbnN0YW5jZS5lcnJvcnNcbiAgICAgICAgICAgICAgICB8IGZpbHRlck5vbkFycmF5VmFsaWRhdGlvbkVycm9yc1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBlcnJvciBvZiBjb250cm9sSW5zdGFuY2UuZXJyb3JzIHwgZmlsdGVyTm9uQXJyYXlWYWxpZGF0aW9uRXJyb3JzIHwga2V5dmFsdWVcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZm9ybS1jb250cm9sLWZlZWRiYWNrLW1lc3NhZ2VcIj5cbiAgICAgICAgICAgICAgICB7eyBlcnJvci5rZXkgfCBodW1hbml6ZVZhbGlkYXRpb25NZXNzYWdlIHwgdHJhbnNsYXRlOiBlcnJvci52YWx1ZSB9fVxuICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwidXBsb2FkSW5Qcm9ncmVzc1wiIGNsYXNzPVwiZC1mbGV4IGQtY29sIHAtNCBmbGV4LWNlbnRlclwiPlxuICAgICAgICAgIDxjOHktbG9hZGluZz48L2M4eS1sb2FkaW5nPlxuICAgICAgICAgIDxwIGNsYXNzPVwibS10LWF1dG8gbS1iLWF1dG8gbS1yLTggdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIHt7IGxvYWRpbmdNZXNzYWdlIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZmlsZS1jb250YWluZXJcIj5cbiAgICA8dWwgY2xhc3M9XCJsaXN0LWdyb3VwXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWxlIG9mIGRyb3BwZWRGaWxlczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gcC00IGEtaS1jZW50ZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cImZpbGUgfCBmaWxlSWNvblwiIGNsYXNzPVwiaWNvbi0yMCBtLXItOFwiPjwvaT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLXItMTYgdGV4dC10cnVuY2F0ZVwiIFt0aXRsZV09XCJmaWxlLm5hbWVcIj5cbiAgICAgICAgICAgICAge3sgZmlsZS5uYW1lIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLXItMTYgdGV4dC1ub3dyYXBcIj4oe3sgZmlsZS5zaXplIHwgYnl0ZXMgfX0pPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1sLWF1dG9cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXVwbG9hZEluUHJvZ3Jlc3NcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVBdChpKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRvdCBidG4tZG90LS1kYW5nZXJcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1JlbW92ZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1JlbW92ZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cIm1pbnVzLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZG90IGJ0blwiICpuZ0lmPVwidXBsb2FkSW5Qcm9ncmVzc1wiIGRpc2FibGVkPVwiZGlzYWJsZWRcIj5cbiAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwiY2lyY2xlZC1ub3RjaFwiIGNsYXNzPVwiaWNvbi1zcGluXCI+PC9pPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICBsZXQgZXJyb3Igb2YgY29udHJvbEluc3RhbmNlLmVycm9ycyB8IGV4dHJhY3RBcnJheVZhbGlkYXRpb25FcnJvcnM6IGkgfCBrZXl2YWx1ZVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYzh5LW1lc3NhZ2VzIGhhcy1lcnJvciBwLWItMjRcIj5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZm9ybS1jb250cm9sLWZlZWRiYWNrLW1lc3NhZ2UgbS0wXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAtNnB4ICFpbXBvcnRhbnRcIj5cbiAgICAgICAgICAgICAgICB7eyBlcnJvci5rZXkgfCBodW1hbml6ZVZhbGlkYXRpb25NZXNzYWdlIHwgdHJhbnNsYXRlOiBlcnJvci52YWx1ZSB9fVxuICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbiAgPGlucHV0XG4gICAgI3BpY2tlclxuICAgIChjaGFuZ2UpPVwiZmlsZXNTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICBbYWNjZXB0XT1cImFjY2VwdGVkRXh0c1wiXG4gICAgW211bHRpcGxlXT1cIm1heEFsbG93ZWRGaWxlcyA+IDFcIlxuICAgIHR5cGU9XCJmaWxlXCJcbiAgICBjbGFzcz1cImhpZGRlblwiXG4gICAgaWQ9XCJmaWxlXCJcbiAgLz5cbjwvYzh5LWZvcm0tZ3JvdXA+XG4iXX0=
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXItbmV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZmlsZS1waWNrZXItbmV3L2ZpbGUtcGlja2VyLW5ldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb3JlL2ZpbGUtcGlja2VyLW5ldy9maWxlLXBpY2tlci1uZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFFVixZQUFZLEVBRVosVUFBVSxFQUNWLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUNILE1BQU0sRUFDTixTQUFTLEVBQ1QsR0FBRyxFQUNILGNBQWMsRUFDZixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sS0FBSyxNQUFNLE1BQU0sU0FBUyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUdMLFdBQVcsRUFDWCxhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLFNBQVMsRUFHVixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7OztBQVFsQzs7R0FFRztBQWtCSCxNQUFNLE9BQU8sc0JBQXNCO0lBbUVqQyxZQUFvQixZQUEwQixFQUE0QixRQUFrQjtRQUF4RSxpQkFB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IEVsZW1lbnRSZWYsXG4gIEFmdGVyVmlld0luaXQsXG4gIEhvc3RMaXN0ZW5lcixcbiAgT25Jbml0LFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgbWVyZ2UsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgZmlsdGVyLFxuICBtYXAsXG4gIHNhbXBsZSxcbiAgc3dpdGNoTWFwLFxuICB0YXAsXG4gIHdpdGhMYXRlc3RGcm9tXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCAqIGFzIG1pbWVEQiBmcm9tICdtaW1lLWRiJztcbmltcG9ydCB7IEZpbGVzU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtQ29udHJvbCxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5nQ29udHJvbCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpbGVQaWNrZXJWYWxpZGF0b3JzIH0gZnJvbSAnLi9maWxlLXBpY2tlci12YWxpZGF0b3JzJztcbmltcG9ydCB7IHZhbGlkYXRlQXJyYXlFbGVtZW50cyB9IGZyb20gJy4uL2Zvcm1zJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICcuLi9pMThuJztcblxuaW50ZXJmYWNlIElBdmFpbGFibGVWYWxpZGF0b3JzIHtcbiAgZmlsZU1heFNpemU/OiBib29sZWFuO1xuICBmaWxlTm9uRW1wdHk/OiBib29sZWFuO1xuICBmaWxlTmFtZU1heExlbmd0aD86IGJvb2xlYW47XG59XG5cbi8qKlxuIEZpbGUgdXBsb2FkZXJcbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZmlsZS1waWNrZXItbmV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtcGlja2VyLW5ldy5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmlsZVBpY2tlck5ld0NvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmlsZVBpY2tlck5ld0NvbXBvbmVudClcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVBpY2tlck5ld0NvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvclxue1xuICBAVmlld0NoaWxkKCdmaWxlUGxhY2Vob2xkZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBmaWxlUGxhY2Vob2xkZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIC8qKiBTcGVjaWZpZXMgYSBmaWx0ZXIgZm9yIHdoYXQgZmlsZSB0eXBlcyB0aGUgdXNlciBjYW4gcGljayBmcm9tIHRoZSBmaWxlIGlucHV0IGRpYWxvZyBib3guXG4gICAqIEJ5IGRlZmF1bHQgYWxsIHR5cGVzIGFyZSBhY2NlcHRlZC5cbiAgICogIyMgRXhhbXBsZTpcbiAgICpcbiAgICogU3BlY2lmeSBmaWxlIHR5cGVzIGJ5IGV4dGVuc2lvbnM6XG4gICAqIGBgYGh0bWxcbiAgICogIC4uLlxuICAgKiAgW2FjY2VwdF09XCInLnppcCwuN3onXCJcbiAgICogIC4uLlxuICAgKiBgYGBcbiAgICpcbiAgICogU3BlY2lmeSBmaWxlIHR5cGVzIGJ5IGV4dGVuc2lvbnMgYW5kIGdlbmVyaWMgdHlwZXMgW0dFTkVSSUNfRklMRV9UWVBFXXtAbGluayBHRU5FUklDX0ZJTEVfVFlQRX06XG4gICAqIGBgYGh0bWxcbiAgICogIC4uLlxuICAgKiAgW2FjY2VwdF09XCInLnBkZixhcmNoaXZlJ1wiXG4gICAqICAuLi5cbiAgICogYGBgXG4gICAqXG4gICAqIFNwZWNpZnkgZmlsZSB0eXBlcyBieSBnZW5lcmljIHR5cGVzIFtHRU5FUklDX0ZJTEVfVFlQRV17QGxpbmsgR0VORVJJQ19GSUxFX1RZUEV9OlxuICAgKiAgYGBgaHRtbFxuICAgKiAgLi4uXG4gICAqICBbYWNjZXB0XT1cIidhcmNoaXZlLHZpZGVvJ1wiXG4gICAqICAuLi5cbiAgICpcbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoKVxuICBhY2NlcHQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIG1heEFsbG93ZWRGaWxlcz86IG51bWJlciA9IEluZmluaXR5O1xuICBASW5wdXQoKVxuICBtaW5SZXF1aXJlZEZpbGVzPzogbnVtYmVyID0gMTtcbiAgQElucHV0KClcbiAgZGlzYWJsZVZhbGlkYXRvcnM6IElBdmFpbGFibGVWYWxpZGF0b3JzID0ge307XG4gIEBJbnB1dCgpXG4gIHVwbG9hZEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgQE91dHB1dCgpXG4gIGRyb3BwZWQ6IEV2ZW50RW1pdHRlcjxGaWxlW10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGRyb3BwZWRGaWxlczogRmlsZVtdID0gW107XG5cbiAgaXNEcmFnZ2luZ0ZpbGVzJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgaXNEcmFnZ2luZ092ZXJGaWxlUGxhY2Vob2xkZXIkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc0V4dGVuc2lvbkFsbG93ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc0Ryb3BBcmVhRW5sYXJnZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc0RyYWdnZWRGaWxlVW5zdXBwb3J0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBhY2NlcHRlZEV4dHM6IHN0cmluZ1tdO1xuICB2YWxpZDogYm9vbGVhbjtcbiAgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzO1xuICBjb250cm9sSW5zdGFuY2U6IEFic3RyYWN0Q29udHJvbDtcbiAgLy8gVE9ETyBoYW5kbGUgY29udHJvbCBkaXNhYmxlZCBzdGF0ZVxuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgZGlzYWJsZWRWYWxpZGF0b3JzOiBJQXZhaWxhYmxlVmFsaWRhdG9ycyA9IHtcbiAgICBmaWxlTWF4U2l6ZTogZmFsc2UsXG4gICAgZmlsZU5vbkVtcHR5OiBmYWxzZSxcbiAgICBmaWxlTmFtZU1heExlbmd0aDogZmFsc2VcbiAgfTtcbiAgbG9hZGluZ01lc3NhZ2UgPSBnZXR0ZXh0KCdVcGxvYWQgaW4gcHJvZ3Jlc3MnKTtcbiAgcHJpdmF0ZSBpc0V4dGVuc2lvbkFsbG93ZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgZmlsZVNpemVMaW1pdDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmlsZXNTZXJ2aWNlOiBGaWxlc1NlcnZpY2UsIEBJbmplY3QoSW5qZWN0b3IpIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IG5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0PE5nQ29udHJvbCB8IGZhbHNlPihOZ0NvbnRyb2wsIGZhbHNlKTtcblxuICAgIGlmIChuZ0NvbnRyb2wgJiYgbmdDb250cm9sLmNvbnRyb2wpIHtcbiAgICAgIHRoaXMuY29udHJvbEluc3RhbmNlID0gbmdDb250cm9sLmNvbnRyb2w7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qKlxuICAgICAgICogSW4gY2FzZSBpZiBjb21wb25lbnQgaXMgdXNlZCB3aXRob3V0IHV0aWxpemluZyBDb250cm9sVmFsdWVBY2Nlc3NvciwgaW50ZXJuYWwgY29udHJvbFxuICAgICAgICogaW5zdGFuY2UgaXMgY3JlYXRlZCwgc28gaXQgY2FuIHN0aWxsIGJlbmVmaXQgZnJvbSBidWlsdCBpbiB2YWxpZGF0b3JzLlxuICAgICAgICogKGRyb3BwZWQpIEBPdXRwdXQgZXZlbnQgY2FuIGJlIHVzZWQgdG8gZ2V0IGxpc3Qgb2YgZmlsZXMuXG4gICAgICAgKi9cbiAgICAgIHRoaXMuY29udHJvbEluc3RhbmNlID0gbmV3IEZvcm1Db250cm9sKFtdLCB0aGlzLnZhbGlkYXRlLmJpbmQodGhpcykpO1xuICAgICAgdGhpcy5vbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb250cm9sSW5zdGFuY2Uuc2V0VmFsdWUodGhpcy5kcm9wcGVkRmlsZXMpO1xuICAgICAgfTtcbiAgICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuY29udHJvbEluc3RhbmNlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIH07XG4gICAgICB0aGlzLm9uVG91Y2hlZCA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb250cm9sSW5zdGFuY2UubWFya0FzVG91Y2hlZCgpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLmFjY2VwdGVkRXh0cyA9IHRoaXMuZmlsZXNTZXJ2aWNlLmV4dHJhY3RGaWxlRXh0ZW5zaW9ucyh0aGlzLmFjY2VwdCkubWFwKHQgPT4gYC4ke3R9YCk7XG5cbiAgICB0aGlzLmRpc2FibGVkVmFsaWRhdG9ycyA9IHsgLi4udGhpcy5kaXNhYmxlZFZhbGlkYXRvcnMsIC4uLnRoaXMuZGlzYWJsZVZhbGlkYXRvcnMgfTtcblxuICAgIHRoaXMuZmlsZXNTZXJ2aWNlLmxvYWRCeXRlc1NpemVMaW1pdCgpLnRoZW4oc2l6ZUxpbWl0ID0+IHtcbiAgICAgIHRoaXMuZmlsZVNpemVMaW1pdCA9IHNpemVMaW1pdDtcbiAgICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2UoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAvKipcbiAgICAgKiBFbWl0cyBEcmFnRXZlbnQgd2hlbiB1c2VyIGRyYWcgZmlsZSBpbnNpZGUgb3Igb3V0c2lkZSB2aWV3cG9ydC4gT25seSB3b3JrcyB3aGVuIHR5cGUgb2YgZHJhZ2dlZCBlbGVtZW50cyBpcyAnRmlsZXMnLlxuICAgICAqL1xuICAgIGNvbnN0IGRyYWdnaW5nRmlsZXNHbG9iYWxseSQgPSBtZXJnZShcbiAgICAgIGZyb21FdmVudChkb2N1bWVudCwgJ2RyYWdlbnRlcicpLFxuICAgICAgZnJvbUV2ZW50KGRvY3VtZW50LCAnZHJhZ2xlYXZlJykucGlwZShcbiAgICAgICAgLy8gVE9ETyByZXZpZXcgd2h5IHRoaXMgc3BlY2lmaWMgZmlsdGVyIGlzIG5lZWRlZFxuICAgICAgICBmaWx0ZXIoKGU6IERyYWdFdmVudCkgPT4gZS5wYWdlWCA9PT0gMCAmJiBlLnBhZ2VZID09PSAwKVxuICAgICAgKVxuICAgICkucGlwZShcbiAgICAgIGZpbHRlcigoZXY6IERyYWdFdmVudCkgPT4gZXYuZGF0YVRyYW5zZmVyPy50eXBlcy50b1N0cmluZygpID09PSAnRmlsZXMnKSxcbiAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy51cGxvYWRJblByb2dyZXNzKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyBib29sZWFuIHZhbHVlIHdoZW4gZmlsZSBpcyBkcmFnZ2VkIGluc2lkZSBvciBvdXRzaWRlIG9mIHZpZXdwb3J0LCBvciBmaWxlIGlzIG5vdCBkcmFnZ2VkIGFueW1vcmUuXG4gICAgICovXG4gICAgdGhpcy5pc0RyYWdnaW5nRmlsZXMkID0gbWVyZ2UoXG4gICAgICBkcmFnZ2luZ0ZpbGVzR2xvYmFsbHkkLnBpcGUobWFwKGV2ID0+IGV2LnR5cGUgPT09ICdkcmFnZW50ZXInKSksXG4gICAgICBmcm9tRXZlbnQoZG9jdW1lbnQsICdtb3VzZWVudGVyJykucGlwZShtYXAoKCkgPT4gZmFsc2UpKSxcbiAgICAgIGZyb21FdmVudChkb2N1bWVudCwgJ2Ryb3AnKS5waXBlKG1hcCgoKSA9PiBmYWxzZSkpXG4gICAgKS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgYm9vbGVhbiB2YWx1ZSBhZnRlciBjaGVja2luZyBpZiBkcmFnZ2VkIGZpbGVzIG1hdGNoIGNvbmZpZ3VyZWQgZXh0ZW5zaW9ucyBsaXN0LFxuICAgICAqIFdoZW4gZHJhZ2dpbmcgb2YgZmlsZSBzdGFydHMsIGdldCBtaW1ldHlwZXMgb2YgZWFjaCBmaWxlLCBjb252ZXJ0IHRoZW0gdG8gcG9zc2libGUgZXh0ZW5zaW9ucyBsaXN0XG4gICAgICogdGhhdCBtYXkgYmUgYXNzb2NpYXRlZCB3aXRoIGdpdmVuIG1pbWV0eXBlLCBhbmQgdGhlbiBjaGVjayBpZiBhbnkgb2YgdGhlc2UgZXh0ZW5zaW9ucyBtYXRjaCBjb25maWd1cmVkXG4gICAgICogZXh0ZW5zaW9ucyBhY2NlcHQgbGlzdC5cbiAgICAgKi9cbiAgICB0aGlzLmlzRXh0ZW5zaW9uQWxsb3dlZCQgPSBkcmFnZ2luZ0ZpbGVzR2xvYmFsbHkkLnBpcGUoXG4gICAgICBzYW1wbGUodGhpcy5pc0RyYWdnaW5nRmlsZXMkLnBpcGUoZmlsdGVyKGVubGFyZ2VkID0+IGVubGFyZ2VkKSkpLFxuICAgICAgc3dpdGNoTWFwKGV2ID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmFjY2VwdCkge1xuICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvZihldikucGlwZShcbiAgICAgICAgICBtYXAoZXYgPT4gWy4uLihldi5kYXRhVHJhbnNmZXIuaXRlbXMgYXMgdW5rbm93biBhcyBEYXRhVHJhbnNmZXJJdGVtW10pXSksXG4gICAgICAgICAgbWFwKGZpbGVzID0+XG4gICAgICAgICAgICBmaWxlcy5tYXAoZmlsZSA9PiAobWltZURCW2ZpbGUudHlwZV0uZXh0ZW5zaW9ucyBhcyBzdHJpbmdbXSB8IHVuZGVmaW5lZCkgfHwgWyd1bmtub3duJ10pXG4gICAgICAgICAgKSxcbiAgICAgICAgICBtYXAoZXh0ZW5zaW9uc0ZvckZpbGVzID0+XG4gICAgICAgICAgICBleHRlbnNpb25zRm9yRmlsZXMuZXZlcnkoZXh0ZW5zaW9uc0ZvckZpbGUgPT5cbiAgICAgICAgICAgICAgZXh0ZW5zaW9uc0ZvckZpbGUuc29tZShleHQgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVzU2VydmljZS5leHRyYWN0RmlsZUV4dGVuc2lvbnModGhpcy5hY2NlcHQpLmluY2x1ZGVzKGV4dClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKGFsbG93ZWQgPT4ge1xuICAgICAgICB0aGlzLmlzRXh0ZW5zaW9uQWxsb3dlZCA9IGFsbG93ZWQ7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBJZiBGaWxlIGlzIGJlaW5nIGRyYWdnZWQgYW5kIGV4dGVuc2lvbnMgbWVldHMgcmVxdWlyZW1lbnRzLCB0aGVuIGRyb3AtYXJlYSBjYW4gYmUgZW5sYXJnZWQuXG4gICAgICovXG4gICAgdGhpcy5pc0Ryb3BBcmVhRW5sYXJnZWQkID0gdGhpcy5pc0RyYWdnaW5nRmlsZXMkLnBpcGUoXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmlzRXh0ZW5zaW9uQWxsb3dlZCQpLFxuICAgICAgbWFwKChbZmlsZURyYWdnZWQsIGV4dEFsbG93ZWRdKSA9PiBmaWxlRHJhZ2dlZCAmJiBleHRBbGxvd2VkKVxuICAgICk7XG5cbiAgICB0aGlzLmlzRHJhZ2dlZEZpbGVVbnN1cHBvcnRlZCQgPSB0aGlzLmlzRHJhZ2dpbmdGaWxlcyQucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuaXNFeHRlbnNpb25BbGxvd2VkJCksXG4gICAgICBtYXAoKFtmaWxlRHJhZ2dlZCwgZXh0QWxsb3dlZF0pID0+IGZpbGVEcmFnZ2VkICYmICFleHRBbGxvd2VkKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0cyB0cnVlIHdoZW4gZmlsZSBpcyBob3ZlcmluZyBhYm92ZSBkcm9wLWFyZWEuIE9ubHkgd29ya3Mgd2hlbiBpc0Ryb3BBcmVhRW5sYXJnZWQkIGFsc28gZW1pdHMgdHJ1ZS5cbiAgICAgKiBUaGlzIGlzIHdvcmthcm91bmQgZm9yIENTUyA6aG92ZXIgcHNldWRvLWNsYXNzIG5vdCB0cmlnZ2VyaW5nIHdoZW4gZHJhZ2dpbmcgZmlsZS5cbiAgICAgKi9cbiAgICB0aGlzLmlzRHJhZ2dpbmdPdmVyRmlsZVBsYWNlaG9sZGVyJCA9IG1lcmdlKFxuICAgICAgZnJvbUV2ZW50KHRoaXMuZmlsZVBsYWNlaG9sZGVyLm5hdGl2ZUVsZW1lbnQsICdkcmFnZW50ZXInKSxcbiAgICAgIGZyb21FdmVudCh0aGlzLmZpbGVQbGFjZWhvbGRlci5uYXRpdmVFbGVtZW50LCAnZHJhZ2xlYXZlJyksXG4gICAgICBmcm9tRXZlbnQodGhpcy5maWxlUGxhY2Vob2xkZXIubmF0aXZlRWxlbWVudCwgJ2Ryb3AnKVxuICAgICkucGlwZShcbiAgICAgIGZpbHRlcigoZXY6IERyYWdFdmVudCkgPT4gZXYuZGF0YVRyYW5zZmVyPy50eXBlcy50b1N0cmluZygpID09PSAnRmlsZXMnKSxcbiAgICAgIG1hcChldiA9PiBldi50eXBlID09PSAnZHJhZ2VudGVyJyksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmlzRHJvcEFyZWFFbmxhcmdlZCQpLFxuICAgICAgbWFwKChbZHJhZ2dpbmdPdmVyLCBkcm9wQXJlYUVubGFyZ2VkXSkgPT4gZHJhZ2dpbmdPdmVyICYmIGRyb3BBcmVhRW5sYXJnZWQpXG4gICAgKTtcbiAgfVxuXG4gIGFmdGVyVmFsdWVDaGFuZ2VkKCkge1xuICAgIHRoaXMub25DaGFuZ2UoWy4uLnRoaXMuZHJvcHBlZEZpbGVzXSk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB0aGlzLmRyb3BwZWQuZW1pdChbLi4udGhpcy5kcm9wcGVkRmlsZXNdKTtcbiAgICB0aGlzLnZhbGlkID0gdGhpcy5jb250cm9sSW5zdGFuY2UudmFsaWQ7XG4gICAgdGhpcy5lcnJvcnMgPSB0aGlzLmNvbnRyb2xJbnN0YW5jZS5lcnJvcnM7XG4gIH1cblxuICBvbkRyb3AoZTogRHJhZ0V2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzRXh0ZW5zaW9uQWxsb3dlZCB8fCB0aGlzLnVwbG9hZEluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZS5kYXRhVHJhbnNmZXIudHlwZXMudG9TdHJpbmcoKSAhPT0gJ0ZpbGVzJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmaWxlcyA9IGUuZGF0YVRyYW5zZmVyLmZpbGVzO1xuICAgIGlmICghZmlsZXM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuZHJvcHBlZEZpbGVzLnB1c2goZmlsZXMuaXRlbShpKSk7XG4gICAgfVxuICAgIHRoaXMuYWZ0ZXJWYWx1ZUNoYW5nZWQoKTtcbiAgfVxuXG4gIGZpbGVzU2VsZWN0ZWQoZXY6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gZXYudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgZmlsZXM6IEZpbGVbXSA9IEFycmF5LmZyb20oaW5wdXRFbGVtZW50LmZpbGVzKTtcbiAgICB0aGlzLmRyb3BwZWRGaWxlcy5wdXNoKC4uLmZpbGVzKTtcbiAgICBpbnB1dEVsZW1lbnQudmFsdWUgPSBudWxsO1xuICAgIHRoaXMuYWZ0ZXJWYWx1ZUNoYW5nZWQoKTtcbiAgfVxuXG4gIGRlbGV0ZUF0KGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmRyb3BwZWRGaWxlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMuYWZ0ZXJWYWx1ZUNoYW5nZWQoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IG5ldmVyKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IG5ldmVyKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25WYWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHdyaXRlVmFsdWUoZmlsZXM6IEZpbGVbXSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIWZpbGVzKSB7XG4gICAgICBmaWxlcyA9IFtdO1xuICAgIH1cbiAgICB0aGlzLmRyb3BwZWRGaWxlcyA9IFsuLi5maWxlc107XG4gICAgdGhpcy5vblZhbGlkYXRvckNoYW5nZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmRyYWdvdmVyJywgWyckZXZlbnQnXSlcbiAgb25EcmFnT3ZlcihlKSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmRyb3AnLCBbJyRldmVudCddKVxuICBvbldpbmRvd0Ryb3AoZSkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICBsZXQgZXJyb3JzID0ge307XG5cbiAgICBpZiAoIXRoaXMuZGlzYWJsZVZhbGlkYXRvcnMuZmlsZU1heFNpemUpIHtcbiAgICAgIGVycm9ycyA9IGFwcGVuZEVycm9ycyhcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICB2YWxpZGF0ZUFycmF5RWxlbWVudHMoXG4gICAgICAgICAgRmlsZVBpY2tlclZhbGlkYXRvcnMuZmlsZU1heFNpemUodGhpcy5maWxlU2l6ZUxpbWl0LCB0aGlzLmZpbGVzU2VydmljZSlcbiAgICAgICAgKShjb250cm9sKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmRpc2FibGVWYWxpZGF0b3JzLmZpbGVOb25FbXB0eSkge1xuICAgICAgZXJyb3JzID0gYXBwZW5kRXJyb3JzKFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIHZhbGlkYXRlQXJyYXlFbGVtZW50cyhGaWxlUGlja2VyVmFsaWRhdG9ycy5maWxlTm9uRW1wdHkodGhpcy5maWxlc1NlcnZpY2UpKShjb250cm9sKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmRpc2FibGVWYWxpZGF0b3JzLmZpbGVOYW1lTWF4TGVuZ3RoKSB7XG4gICAgICBlcnJvcnMgPSBhcHBlbmRFcnJvcnMoXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgdmFsaWRhdGVBcnJheUVsZW1lbnRzKEZpbGVQaWNrZXJWYWxpZGF0b3JzLmZpbGVOYW1lTWF4TGVuZ3RoKHRoaXMuZmlsZXNTZXJ2aWNlKSkoY29udHJvbClcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLmFjY2VwdCkge1xuICAgICAgZXJyb3JzID0gYXBwZW5kRXJyb3JzKFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIHZhbGlkYXRlQXJyYXlFbGVtZW50cyhcbiAgICAgICAgICBGaWxlUGlja2VyVmFsaWRhdG9ycy5oYXZlVmFsaWRFeHRlbnNpb25zKHRoaXMuZmlsZXNTZXJ2aWNlLCB0aGlzLmFjY2VwdClcbiAgICAgICAgKShjb250cm9sKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubWF4QWxsb3dlZEZpbGVzKSB7XG4gICAgICBlcnJvcnMgPSBhcHBlbmRFcnJvcnMoXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgRmlsZVBpY2tlclZhbGlkYXRvcnMuZmlsZUNvdW50TWF4KHRoaXMubWF4QWxsb3dlZEZpbGVzKShjb250cm9sKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMubWluUmVxdWlyZWRGaWxlcykge1xuICAgICAgZXJyb3JzID0gYXBwZW5kRXJyb3JzKFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIEZpbGVQaWNrZXJWYWxpZGF0b3JzLmZpbGVDb3VudE1pbih0aGlzLm1pblJlcXVpcmVkRmlsZXMpKGNvbnRyb2wpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCA/IGVycm9ycyA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlOiAoZmlsZXM6IEZpbGVbXSkgPT4gdm9pZCA9ICgpID0+IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb25WYWxpZGF0b3JDaGFuZ2U6ICgpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGFwcGVuZEVycm9ycyhcbiAgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzLFxuICBuZXdFcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsXG4pOiBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgcmV0dXJuIG5ld0Vycm9ycyA/IHsgLi4uZXJyb3JzLCAuLi5uZXdFcnJvcnMgfSA6IGVycm9ycztcbn1cbiIsIjxjOHktZm9ybS1ncm91cCBjbGFzcz1cIm0tMFwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJmaWxlLXBpY2tlci1kcm9wLXpvbmVcIlxuICAgIFtjbGFzcy5kcmFnZ2luZ109XCJpc0Ryb3BBcmVhRW5sYXJnZWQkIHwgYXN5bmNcIlxuICAgIFtjbGFzcy51bnN1cHBvcnRlZC1mb3JtYXRdPVwiaXNEcmFnZ2VkRmlsZVVuc3VwcG9ydGVkJCB8IGFzeW5jXCJcbiAgICB0YWJpbmRleD1cIjBcIlxuICA+XG4gICAgPGRpdlxuICAgICAgI2ZpbGVQbGFjZWhvbGRlclxuICAgICAgY2xhc3M9XCJmaWxlLXBsYWNlaG9sZGVyIHBvaW50ZXJcIlxuICAgICAgW2NsYXNzLmRyYWctb3Zlcl09XCJpc0RyYWdnaW5nT3ZlckZpbGVQbGFjZWhvbGRlciQgfCBhc3luY1wiXG4gICAgICAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwiIXVwbG9hZEluUHJvZ3Jlc3MgJiYgcGlja2VyLmNsaWNrKClcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJpc0RyYWdnZWRGaWxlVW5zdXBwb3J0ZWQkIHwgYXN5bmM7IGVsc2UgZGVmYXVsdEhpbnRcIlxuICAgICAgICBjbGFzcz1cImhpbnQtcGxhY2Vob2xkZXIgcG9pbnRlclwiXG4gICAgICA+XG4gICAgICAgIDxpIGM4eUljb249XCJ3YXJuaW5nXCIgY2xhc3M9XCJ3YXJuaW5nXCI+PC9pPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8YiB0cmFuc2xhdGU+VW5zdXBwb3J0ZWQgZmlsZSBmb3JtYXQuPC9iPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0SGludD5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiF1cGxvYWRJblByb2dyZXNzXCIgY2xhc3M9XCJoaW50LXBsYWNlaG9sZGVyXCI+XG4gICAgICAgICAgPGkgYzh5SWNvbj1cInVwbG9hZFwiPjwvaT5cbiAgICAgICAgICA8cD5cbiAgICAgICAgICAgIDxiPnt7ICdEcm9wIGZpbGVzIGhlcmUgb3IgY2xpY2sgdG8gYnJvd3NlJyB8IHRyYW5zbGF0ZSB9fTwvYj5cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgPHAgKm5nSWY9XCJhY2NlcHRcIiBjbGFzcz1cIm0tdC04IHRleHQtMTIgdGV4dC1tdXRlZFwiPlxuICAgICAgICAgICAge3sgJ1N1cHBvcnRlZCBmaWxlIHR5cGVzOicgfCB0cmFuc2xhdGUgfX0ge3sgYWNjZXB0IH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiYzh5LW1lc3NhZ2VzIGhhcy1lcnJvciBwLWItOCB0ZXh0LWxlZnRcIlxuICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgY29udHJvbEluc3RhbmNlLnRvdWNoZWQgJiYgY29udHJvbEluc3RhbmNlLmVycm9ycyAmJiBjb250cm9sSW5zdGFuY2UuZXJyb3JzXG4gICAgICAgICAgICAgICAgfCBmaWx0ZXJOb25BcnJheVZhbGlkYXRpb25FcnJvcnNcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3Igb2YgY29udHJvbEluc3RhbmNlLmVycm9ycyB8IGZpbHRlck5vbkFycmF5VmFsaWRhdGlvbkVycm9ycyB8IGtleXZhbHVlXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImZvcm0tY29udHJvbC1mZWVkYmFjay1tZXNzYWdlXCI+XG4gICAgICAgICAgICAgICAge3sgZXJyb3Iua2V5IHwgaHVtYW5pemVWYWxpZGF0aW9uTWVzc2FnZSB8IHRyYW5zbGF0ZTogZXJyb3IudmFsdWUgfX1cbiAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cInVwbG9hZEluUHJvZ3Jlc3NcIiBjbGFzcz1cImQtZmxleCBkLWNvbCBwLTQgZmxleC1jZW50ZXJcIj5cbiAgICAgICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICAgICAgICA8cCBjbGFzcz1cIm0tdC1hdXRvIG0tYi1hdXRvIG0tci04IHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICB7eyBsb2FkaW5nTWVzc2FnZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZpbGUtY29udGFpbmVyXCI+XG4gICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmlsZSBvZiBkcm9wcGVkRmlsZXM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIHAtNCBhLWktY2VudGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICAgICAgICA8aSBbYzh5SWNvbl09XCJmaWxlIHwgZmlsZUljb25cIiBjbGFzcz1cImljb24tMjAgbS1yLThcIj48L2k+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1yLTE2IHRleHQtdHJ1bmNhdGVcIiBbdGl0bGVdPVwiZmlsZS5uYW1lXCI+XG4gICAgICAgICAgICAgIHt7IGZpbGUubmFtZSB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1yLTE2IHRleHQtbm93cmFwXCI+KHt7IGZpbGUuc2l6ZSB8IGJ5dGVzIH19KTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tbC1hdXRvXCI+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiF1cGxvYWRJblByb2dyZXNzXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlQXQoaSlcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kb3QgYnRuLWRvdC0tZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZW1vdmUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdSZW1vdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJtaW51cy1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWRvdCBidG5cIiAqbmdJZj1cInVwbG9hZEluUHJvZ3Jlc3NcIiBkaXNhYmxlZD1cImRpc2FibGVkXCI+XG4gICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cImNpcmNsZWQtbm90Y2hcIiBjbGFzcz1cImljb24tc3BpblwiPjwvaT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgbGV0IGVycm9yIG9mIGNvbnRyb2xJbnN0YW5jZS5lcnJvcnMgfCBleHRyYWN0QXJyYXlWYWxpZGF0aW9uRXJyb3JzOiBpIHwga2V5dmFsdWVcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImM4eS1tZXNzYWdlcyBoYXMtZXJyb3IgcC1iLTI0XCI+XG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImZvcm0tY29udHJvbC1mZWVkYmFjay1tZXNzYWdlIG0tMFwiIHN0eWxlPVwibWFyZ2luLXRvcDogLTZweCAhaW1wb3J0YW50XCI+XG4gICAgICAgICAgICAgICAge3sgZXJyb3Iua2V5IHwgaHVtYW5pemVWYWxpZGF0aW9uTWVzc2FnZSB8IHRyYW5zbGF0ZTogZXJyb3IudmFsdWUgfX1cbiAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2xpPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC91bD5cbiAgPC9kaXY+XG4gIDxpbnB1dFxuICAgICNwaWNrZXJcbiAgICAoY2hhbmdlKT1cImZpbGVzU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgW2FjY2VwdF09XCJhY2NlcHRlZEV4dHNcIlxuICAgIFttdWx0aXBsZV09XCJtYXhBbGxvd2VkRmlsZXMgPiAxXCJcbiAgICB0eXBlPVwiZmlsZVwiXG4gICAgY2xhc3M9XCJoaWRkZW5cIlxuICAgIGlkPVwiZmlsZVwiXG4gIC8+XG48L2M4eS1mb3JtLWdyb3VwPlxuIl19