@c8y/ngx-components 1018.0.176 → 1018.0.183
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.
- package/core/bootstrap/cookie-banner/cookie-banner.service.d.ts +1 -1
- package/core/common/ApplicationOptions.d.ts +2 -0
- package/core/date-time-picker/close-date-picker.directive.d.ts +14 -0
- package/core/date-time-picker/date-time-picker.component.d.ts +7 -2
- package/core/date-time-picker/date-time-picker.module.d.ts +8 -7
- package/core/product-experience/gainsight.service.d.ts +86 -28
- package/core/product-experience/index.d.ts +1 -0
- package/core/product-experience/product-experience.module.d.ts +18 -5
- package/core/product-experience/user-engagements.service.d.ts +109 -0
- package/core/user/user-edit-modal.component.d.ts +33 -6
- package/core/user/user-edit.component.d.ts +6 -11
- package/esm2020/context-dashboard/widget-config.component.mjs +3 -3
- package/esm2020/core/bootstrap/cookie-banner/cookie-banner.service.mjs +2 -2
- package/esm2020/core/common/ApplicationOptions.mjs +1 -1
- package/esm2020/core/date-time-picker/close-date-picker.directive.mjs +36 -0
- package/esm2020/core/date-time-picker/date-time-picker.component.mjs +28 -8
- package/esm2020/core/date-time-picker/date-time-picker.module.mjs +4 -3
- package/esm2020/core/product-experience/gainsight.service.mjs +170 -81
- package/esm2020/core/product-experience/index.mjs +2 -1
- package/esm2020/core/product-experience/product-experience.module.mjs +42 -24
- package/esm2020/core/product-experience/user-engagements.service.mjs +174 -0
- package/esm2020/core/user/user-edit-modal.component.mjs +68 -33
- package/esm2020/core/user/user-edit.component.mjs +30 -39
- package/esm2020/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.mjs +3 -3
- package/fesm2015/c8y-ngx-components-context-dashboard.mjs +2 -2
- package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-datapoint-selector.mjs +2 -2
- package/fesm2015/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +516 -167
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-context-dashboard.mjs +2 -2
- package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-datapoint-selector.mjs +2 -2
- package/fesm2020/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +511 -161
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/locales/locales.pot +2 -2
- package/package.json +1 -1
|
@@ -227,12 +227,12 @@ export class WidgetConfigComponent {
|
|
|
227
227
|
}
|
|
228
228
|
}
|
|
229
229
|
WidgetConfigComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WidgetConfigComponent, deps: [{ token: i1.WidgetService }, { token: i2.BsModalRef }, { token: i3.InventoryService }, { token: i4.ContextDashboardService }], target: i0.ɵɵFactoryTarget.Component });
|
|
230
|
-
WidgetConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: WidgetConfigComponent, selector: "c8y-widget-config", viewQueries: [{ propertyName: "dynamicComponent", first: true, predicate: ["config"], descendants: true }], ngImport: i0, template: "<div class=\"modal-header separator\">\n <div\n class=\"h3\"\n title=\"{{ 'Add widget' | translate }}\"\n id=\"modal-title\"\n *ngIf=\"!current\"\n translate\n >\n Add widget\n </div>\n <div\n class=\"h3\"\n title=\"{{ 'Edit widget' | translate }}\"\n id=\"modal-title\"\n *ngIf=\"current\"\n translate\n >\n Edit widget\n </div>\n</div>\n<form\n name=\"form\"\n #configForm=\"ngForm\"\n>\n <div\n class=\"c8y-modal-tabs\"\n id=\"modal-body\"\n >\n <div class=\"tabContainer\">\n <ul class=\"nav nav-tabs nav-tabsc8y p-l-24\">\n <li [class.active]=\"mode === 'select'\">\n <button\n class=\"btn\"\n title=\"{{ 'Select widget' | translate }}\"\n type=\"button\"\n (click)=\"changeMode('select'); (false)\"\n >\n <i c8yIcon=\"th-large\"></i>\n <span translate>Select widget</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'config'\">\n <button\n class=\"btn\"\n title=\"{{ 'Configuration' | translate }}\"\n type=\"button\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('config'); (false)\"\n >\n <i c8yIcon=\"cog\"></i>\n <span translate>Configuration</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'style'\">\n <button\n class=\"btn\"\n title=\"{{ 'Appearance' | translate }}\"\n type=\"button\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('style'); (false)\"\n >\n <i c8yIcon=\"paint-brush\"></i>\n <span translate>Appearance</span>\n </button>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"modal-inner-scroll modal-inner-scroll--fixed\">\n <div\n class=\"bg-level-0 p-l-24 p-r-24 p-t-8 p-b-8 sticky-header-top-0\"\n style=\"z-index: 2\"\n *ngIf=\"mode === 'select'\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n [attr.aria-label]=\"'Search' | translate\"\n placeholder=\"{{ 'Search\u2026' | translate }}\"\n type=\"text\"\n data-cy=\"widget-config--Search\"\n [(ngModel)]=\"searchTerm\"\n [ngModelOptions]=\"{ standalone: true }\"\n (keydown)=\"searchChange$.next($event)\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n <i [c8yIcon]=\"searchTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"modal-body bg-level-2\"\n *ngIf=\"mode === 'select'\"\n >\n <div class=\"card-group card-select m-b-0\">\n <div\n class=\"col-md-3 col-sm-4 col-xs-6\"\n title=\"{{ cmp.description | translate }}\"\n *ngFor=\"let cmp of searchResult || components\"\n >\n <button\n class=\"btn-clean d-col card p-8\"\n [class.active]=\"selected === cmp\"\n type=\"button\"\n (click)=\"select(cmp)\"\n >\n <div\n class=\"text-center p-8 m-b-8 d-col flex-center flex-grow bg-level-2\"\n role=\"presentation\"\n >\n <ng-container *ngIf=\"!cmp.previewImage; else previewImage\">\n <div class=\"h1\"><i c8yIcon=\"file-image-o\"></i></div>\n <small translate>Preview not available</small>\n </ng-container>\n <ng-template #previewImage>\n <img\n class=\"widget-thumbnail\"\n alt\n [src]=\"cmp.previewImage\"\n />\n </ng-template>\n </div>\n <p class=\"card-title text-truncate\">\n <c8y-highlight\n text=\"{{ cmp.label | translate }}\"\n [pattern]=\"searchTerm\"\n ></c8y-highlight>\n </p>\n </button>\n </div>\n\n <div\n class=\"c8y-empty-state text-center\"\n *ngIf=\"searchResult && searchResult.length === 0\"\n >\n <div\n class=\"h1\"\n c8yIcon=\"search\"\n ></div>\n <h3 translate>No widgets found.</h3>\n <div class=\"d-flex\">\n <p\n class=\"m-r-8\"\n translate\n >\n Rephrase your search term.\n </p>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n {{ 'Reset search' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- The following is intentional set to hidden to allow the ViewChild ref in the controller -->\n <div\n class=\"d-flex d-col fit-h\"\n *ngIf=\"selected\"\n [ngClass]=\"{ hidden: mode !== 'config' }\"\n >\n <div class=\"p-t-16 flex-no-shrink separator-bottom p-b-16\">\n <div class=\"row\">\n <div class=\"col-sm-4\">\n <div class=\"p-l-24\">\n <div class=\"text-left text-medium h4\">\n {{ selected.label | translate }}\n </div>\n <p>\n {{ selected.description | translate }}\n </p>\n </div>\n </div>\n <div class=\"col-sm-8\">\n <div class=\"p-r-24\">\n <c8y-form-group>\n <label\n for=\"widgetTitle\"\n translate\n >\n Title\n </label>\n <input\n class=\"form-control\"\n id=\"widgetTitle\"\n placeholder=\"{{ 'e.g.' | translate }} {{ componentLabel | translate }}\"\n name=\"title\"\n type=\"text\"\n required\n [(ngModel)]=\"selected.data.title\"\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"row flex-grow\"\n [ngClass]=\"{ 'd-flex': widgetConfig.options || hasConfig() }\"\n >\n <div\n class=\"a-s-stretch\"\n *ngIf=\"!widgetConfig.settings?.noDeviceTarget\"\n [ngClass]=\"{\n 'bg-level-1 col-sm-4 p-r-0': hasConfig(),\n 'bg-level-0 col-sm-12': !hasConfig()\n }\"\n >\n <div\n class=\"fit-h bg-inherit p-l-16\"\n [ngClass]=\"{ 'p-r-24': !hasConfig() }\"\n >\n <div class=\"p-relative bg-inherit\">\n <c8y-asset-selector-miller\n class=\"d-block bg-inherit p-relative\"\n style=\"height: calc(100vh - 422px)\"\n (onSelected)=\"selectionChanged($event)\"\n (onClearSelected)=\"selectionChanged()\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: this.widgetConfig.settings?.groupsSelectable,\n showChildDevices: true,\n columnHeaders: true,\n showUnassignedDevices: true,\n search: !this.widgetConfig.settings.context?.additionParents,\n showFilter: true,\n singleColumn: !!this.hasConfig()\n }\"\n [asset]=\"widgetConfig.settings?.context\"\n [selectedDevice]=\"selectedDevice\"\n ></c8y-asset-selector-miller>\n </div>\n </div>\n </div>\n <div\n [ngClass]=\"{\n 'col-sm-8': !widgetConfig.settings?.noDeviceTarget,\n 'col-sm-12': widgetConfig.settings?.noDeviceTarget,\n 'sr-only': !hasConfig()\n }\"\n >\n <c8y-dynamic-component\n class=\"d-block\"\n style=\"height: {{ hasConfig() ? 'calc(100vh - 422px)' : '0' }}\"\n [ngClass]=\"{ 'inner-scroll p-r-24': !widgetConfig.settings?.noDeviceTarget }\"\n [componentId]=\"selected.id\"\n mode=\"config\"\n [config]=\"widgetConfig\"\n [notFoundError]=\"false\"\n #config\n ></c8y-dynamic-component>\n </div>\n </div>\n </div>\n\n <div\n class=\"modal-body p-t-0\"\n style=\"height: calc(100vh - 310px)\"\n *ngIf=\"mode === 'style'\"\n >\n <div class=\"row\">\n <div class=\"col-xs-6\">\n <c8y-appearance-settings\n [(themeClass)]=\"styling.contentClass\"\n [(headerClass)]=\"styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"defaultStyling.contentClass\"\n [defaultHeaderClass]=\"defaultStyling.headerClass\"\n ></c8y-appearance-settings>\n </div>\n <div class=\"col-xs-6 sticky-header-top-0\">\n <c8y-widget-preview\n style=\"height: calc(100vh - 382px)\"\n [previewClasses]=\"getStyle(true)\"\n ></c8y-widget-preview>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n (click)=\"save()\"\n [disabled]=\"\n contextDashboardService.formDisabled || configForm.invalid || checkIfDeviceRequired()\n \"\n c8yProductExperience\n [actionName]=\"current ? 'editWidget' : 'createWidget'\"\n [actionData]=\"{ widgetName: selected && selected.id }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i5.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "component", type: i5.DynamicComponentComponent, selector: "c8y-dynamic-component", inputs: ["componentId", "config", "mode", "notFoundError", "executeResolvers"], outputs: ["updateWidgetClasses"] }, { kind: "directive", type: i5.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: i8.MillerViewComponent, selector: "c8y-asset-selector-miller", inputs: ["config", "asset", "selectedDevice", "rootNode", "container"], outputs: ["onSelected", "onClearSelected"] }, { kind: "component", type: i9.AppearanceSettingsComponent, selector: "c8y-appearance-settings", inputs: ["themeClass", "headerClass", "defaultThemeClass", "defaultHeaderClass", "possibleStylingTheme", "possibleStylingHeader"], outputs: ["themeClassChange", "headerClassChange"] }, { kind: "component", type: i10.WidgetPreviewComponent, selector: "c8y-widget-preview", inputs: ["previewClasses", "tab"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }] });
|
|
230
|
+
WidgetConfigComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: WidgetConfigComponent, selector: "c8y-widget-config", viewQueries: [{ propertyName: "dynamicComponent", first: true, predicate: ["config"], descendants: true }], ngImport: i0, template: "<div class=\"modal-header separator\">\n <div\n class=\"h3\"\n title=\"{{ 'Add widget' | translate }}\"\n id=\"modal-title\"\n *ngIf=\"!current\"\n translate\n >\n Add widget\n </div>\n <div\n class=\"h3\"\n title=\"{{ 'Edit widget' | translate }}\"\n id=\"modal-title\"\n *ngIf=\"current\"\n translate\n >\n Edit widget\n </div>\n</div>\n<form\n name=\"form\"\n #configForm=\"ngForm\"\n>\n <div\n class=\"c8y-modal-tabs\"\n id=\"modal-body\"\n >\n <div class=\"tabContainer\">\n <ul class=\"nav nav-tabs nav-tabsc8y p-l-24\">\n <li [class.active]=\"mode === 'select'\">\n <button\n class=\"btn\"\n title=\"{{ 'Select widget' | translate }}\"\n type=\"button\"\n (click)=\"changeMode('select'); (false)\"\n >\n <i c8yIcon=\"th-large\"></i>\n <span translate>Select widget</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'config'\">\n <button\n class=\"btn\"\n title=\"{{ 'Configuration' | translate }}\"\n type=\"button\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('config'); (false)\"\n >\n <i c8yIcon=\"cog\"></i>\n <span translate>Configuration</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'style'\">\n <button\n class=\"btn\"\n title=\"{{ 'Appearance' | translate }}\"\n type=\"button\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('style'); (false)\"\n >\n <i c8yIcon=\"paint-brush\"></i>\n <span translate>Appearance</span>\n </button>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"modal-inner-scroll modal-inner-scroll--fixed\">\n <div\n class=\"bg-level-0 p-l-24 p-r-24 p-t-8 p-b-8 sticky-header-top-0\"\n style=\"z-index: 2\"\n *ngIf=\"mode === 'select'\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n [attr.aria-label]=\"'Search' | translate\"\n placeholder=\"{{ 'Search\u2026' | translate }}\"\n type=\"text\"\n data-cy=\"widget-config--Search\"\n [(ngModel)]=\"searchTerm\"\n [ngModelOptions]=\"{ standalone: true }\"\n (keydown)=\"searchChange$.next($event)\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n <i [c8yIcon]=\"searchTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"modal-body bg-level-2\"\n *ngIf=\"mode === 'select'\"\n >\n <div class=\"card-group card-select m-b-0\">\n <div\n class=\"col-md-3 col-sm-4 col-xs-6\"\n title=\"{{ cmp.description | translate }}\"\n *ngFor=\"let cmp of searchResult || components\"\n >\n <button\n class=\"btn-clean d-col card p-8\"\n [class.active]=\"selected === cmp\"\n type=\"button\"\n (click)=\"select(cmp)\"\n >\n <div\n class=\"text-center p-8 m-b-8 d-col flex-center flex-grow bg-level-2\"\n role=\"presentation\"\n >\n <ng-container *ngIf=\"!cmp.previewImage; else previewImage\">\n <div class=\"h1\"><i c8yIcon=\"file-image-o\"></i></div>\n <small translate>Preview not available</small>\n </ng-container>\n <ng-template #previewImage>\n <img\n class=\"widget-thumbnail\"\n alt\n [src]=\"cmp.previewImage\"\n />\n </ng-template>\n </div>\n <p class=\"card-title text-truncate\">\n <c8y-highlight\n text=\"{{ cmp.label | translate }}\"\n [pattern]=\"searchTerm\"\n ></c8y-highlight>\n </p>\n </button>\n </div>\n\n <div\n class=\"c8y-empty-state text-center\"\n *ngIf=\"searchResult && searchResult.length === 0\"\n >\n <div\n class=\"h1\"\n c8yIcon=\"search\"\n ></div>\n <h3 translate>No widgets found.</h3>\n <div class=\"d-flex\">\n <p\n class=\"m-r-8\"\n translate\n >\n Rephrase your search term.\n </p>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n {{ 'Reset search' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- The following is intentional set to hidden to allow the ViewChild ref in the controller -->\n <div\n class=\"d-flex d-col fit-h\"\n *ngIf=\"selected\"\n [ngClass]=\"{ hidden: mode !== 'config' }\"\n >\n <div class=\"p-t-16 flex-no-shrink separator-bottom p-b-16\">\n <div class=\"row\">\n <div class=\"col-sm-4\">\n <div class=\"p-l-24\">\n <div class=\"text-left text-medium h4\">\n {{ selected.label | translate }}\n </div>\n <p>\n {{ selected.description | translate }}\n </p>\n </div>\n </div>\n <div class=\"col-sm-8\">\n <div class=\"p-r-24\">\n <c8y-form-group>\n <label\n for=\"widgetTitle\"\n translate\n >\n Title\n </label>\n <input\n class=\"form-control\"\n id=\"widgetTitle\"\n placeholder=\"{{ 'e.g.' | translate }} {{ componentLabel | translate }}\"\n name=\"title\"\n type=\"text\"\n required\n [(ngModel)]=\"selected.data.title\"\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"row flex-grow\"\n [ngClass]=\"{ 'd-flex': widgetConfig.options || hasConfig() }\"\n >\n <div\n class=\"a-s-stretch\"\n *ngIf=\"!widgetConfig.settings?.noDeviceTarget && mode === 'config'\"\n [ngClass]=\"{\n 'bg-level-1 col-sm-4 p-r-0': hasConfig(),\n 'bg-level-0 col-sm-12': !hasConfig()\n }\"\n >\n <div\n class=\"fit-h bg-inherit p-l-16\"\n [ngClass]=\"{ 'p-r-24': !hasConfig() }\"\n >\n <div class=\"p-relative bg-inherit\">\n <c8y-asset-selector-miller\n class=\"d-block bg-inherit p-relative\"\n style=\"height: calc(100vh - 422px)\"\n (onSelected)=\"selectionChanged($event)\"\n (onClearSelected)=\"selectionChanged()\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: this.widgetConfig.settings?.groupsSelectable,\n showChildDevices: true,\n columnHeaders: true,\n showUnassignedDevices: true,\n search: !this.widgetConfig.settings.context?.additionParents,\n showFilter: true,\n singleColumn: !!this.hasConfig()\n }\"\n [asset]=\"widgetConfig.settings?.context\"\n [selectedDevice]=\"selectedDevice\"\n ></c8y-asset-selector-miller>\n </div>\n </div>\n </div>\n <div\n [ngClass]=\"{\n 'col-sm-8': !widgetConfig.settings?.noDeviceTarget,\n 'col-sm-12': widgetConfig.settings?.noDeviceTarget,\n 'sr-only': !hasConfig()\n }\"\n >\n <c8y-dynamic-component\n class=\"d-block\"\n style=\"height: {{ hasConfig() ? 'calc(100vh - 422px)' : '0' }}\"\n [ngClass]=\"{ 'inner-scroll p-r-24': !widgetConfig.settings?.noDeviceTarget }\"\n [componentId]=\"selected.id\"\n mode=\"config\"\n [config]=\"widgetConfig\"\n [notFoundError]=\"false\"\n #config\n ></c8y-dynamic-component>\n </div>\n </div>\n </div>\n\n <div\n class=\"modal-body p-t-0\"\n style=\"height: calc(100vh - 310px)\"\n *ngIf=\"mode === 'style'\"\n >\n <div class=\"row\">\n <div class=\"col-xs-6\">\n <c8y-appearance-settings\n [(themeClass)]=\"styling.contentClass\"\n [(headerClass)]=\"styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"defaultStyling.contentClass\"\n [defaultHeaderClass]=\"defaultStyling.headerClass\"\n ></c8y-appearance-settings>\n </div>\n <div class=\"col-xs-6 sticky-header-top-0\">\n <c8y-widget-preview\n style=\"height: calc(100vh - 382px)\"\n [previewClasses]=\"getStyle(true)\"\n ></c8y-widget-preview>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n (click)=\"save()\"\n [disabled]=\"\n contextDashboardService.formDisabled || configForm.invalid || checkIfDeviceRequired()\n \"\n c8yProductExperience\n [actionName]=\"current ? 'editWidget' : 'createWidget'\"\n [actionData]=\"{ widgetName: selected && selected.id }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i5.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i5.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.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: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i5.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "component", type: i5.DynamicComponentComponent, selector: "c8y-dynamic-component", inputs: ["componentId", "config", "mode", "notFoundError", "executeResolvers"], outputs: ["updateWidgetClasses"] }, { kind: "directive", type: i5.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "component", type: i8.MillerViewComponent, selector: "c8y-asset-selector-miller", inputs: ["config", "asset", "selectedDevice", "rootNode", "container"], outputs: ["onSelected", "onClearSelected"] }, { kind: "component", type: i9.AppearanceSettingsComponent, selector: "c8y-appearance-settings", inputs: ["themeClass", "headerClass", "defaultThemeClass", "defaultHeaderClass", "possibleStylingTheme", "possibleStylingHeader"], outputs: ["themeClassChange", "headerClassChange"] }, { kind: "component", type: i10.WidgetPreviewComponent, selector: "c8y-widget-preview", inputs: ["previewClasses", "tab"] }, { kind: "pipe", type: i5.C8yTranslatePipe, name: "translate" }] });
|
|
231
231
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WidgetConfigComponent, decorators: [{
|
|
232
232
|
type: Component,
|
|
233
|
-
args: [{ selector: 'c8y-widget-config', template: "<div class=\"modal-header separator\">\n <div\n class=\"h3\"\n title=\"{{ 'Add widget' | translate }}\"\n id=\"modal-title\"\n *ngIf=\"!current\"\n translate\n >\n Add widget\n </div>\n <div\n class=\"h3\"\n title=\"{{ 'Edit widget' | translate }}\"\n id=\"modal-title\"\n *ngIf=\"current\"\n translate\n >\n Edit widget\n </div>\n</div>\n<form\n name=\"form\"\n #configForm=\"ngForm\"\n>\n <div\n class=\"c8y-modal-tabs\"\n id=\"modal-body\"\n >\n <div class=\"tabContainer\">\n <ul class=\"nav nav-tabs nav-tabsc8y p-l-24\">\n <li [class.active]=\"mode === 'select'\">\n <button\n class=\"btn\"\n title=\"{{ 'Select widget' | translate }}\"\n type=\"button\"\n (click)=\"changeMode('select'); (false)\"\n >\n <i c8yIcon=\"th-large\"></i>\n <span translate>Select widget</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'config'\">\n <button\n class=\"btn\"\n title=\"{{ 'Configuration' | translate }}\"\n type=\"button\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('config'); (false)\"\n >\n <i c8yIcon=\"cog\"></i>\n <span translate>Configuration</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'style'\">\n <button\n class=\"btn\"\n title=\"{{ 'Appearance' | translate }}\"\n type=\"button\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('style'); (false)\"\n >\n <i c8yIcon=\"paint-brush\"></i>\n <span translate>Appearance</span>\n </button>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"modal-inner-scroll modal-inner-scroll--fixed\">\n <div\n class=\"bg-level-0 p-l-24 p-r-24 p-t-8 p-b-8 sticky-header-top-0\"\n style=\"z-index: 2\"\n *ngIf=\"mode === 'select'\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n [attr.aria-label]=\"'Search' | translate\"\n placeholder=\"{{ 'Search\u2026' | translate }}\"\n type=\"text\"\n data-cy=\"widget-config--Search\"\n [(ngModel)]=\"searchTerm\"\n [ngModelOptions]=\"{ standalone: true }\"\n (keydown)=\"searchChange$.next($event)\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n <i [c8yIcon]=\"searchTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"modal-body bg-level-2\"\n *ngIf=\"mode === 'select'\"\n >\n <div class=\"card-group card-select m-b-0\">\n <div\n class=\"col-md-3 col-sm-4 col-xs-6\"\n title=\"{{ cmp.description | translate }}\"\n *ngFor=\"let cmp of searchResult || components\"\n >\n <button\n class=\"btn-clean d-col card p-8\"\n [class.active]=\"selected === cmp\"\n type=\"button\"\n (click)=\"select(cmp)\"\n >\n <div\n class=\"text-center p-8 m-b-8 d-col flex-center flex-grow bg-level-2\"\n role=\"presentation\"\n >\n <ng-container *ngIf=\"!cmp.previewImage; else previewImage\">\n <div class=\"h1\"><i c8yIcon=\"file-image-o\"></i></div>\n <small translate>Preview not available</small>\n </ng-container>\n <ng-template #previewImage>\n <img\n class=\"widget-thumbnail\"\n alt\n [src]=\"cmp.previewImage\"\n />\n </ng-template>\n </div>\n <p class=\"card-title text-truncate\">\n <c8y-highlight\n text=\"{{ cmp.label | translate }}\"\n [pattern]=\"searchTerm\"\n ></c8y-highlight>\n </p>\n </button>\n </div>\n\n <div\n class=\"c8y-empty-state text-center\"\n *ngIf=\"searchResult && searchResult.length === 0\"\n >\n <div\n class=\"h1\"\n c8yIcon=\"search\"\n ></div>\n <h3 translate>No widgets found.</h3>\n <div class=\"d-flex\">\n <p\n class=\"m-r-8\"\n translate\n >\n Rephrase your search term.\n </p>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n {{ 'Reset search' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- The following is intentional set to hidden to allow the ViewChild ref in the controller -->\n <div\n class=\"d-flex d-col fit-h\"\n *ngIf=\"selected\"\n [ngClass]=\"{ hidden: mode !== 'config' }\"\n >\n <div class=\"p-t-16 flex-no-shrink separator-bottom p-b-16\">\n <div class=\"row\">\n <div class=\"col-sm-4\">\n <div class=\"p-l-24\">\n <div class=\"text-left text-medium h4\">\n {{ selected.label | translate }}\n </div>\n <p>\n {{ selected.description | translate }}\n </p>\n </div>\n </div>\n <div class=\"col-sm-8\">\n <div class=\"p-r-24\">\n <c8y-form-group>\n <label\n for=\"widgetTitle\"\n translate\n >\n Title\n </label>\n <input\n class=\"form-control\"\n id=\"widgetTitle\"\n placeholder=\"{{ 'e.g.' | translate }} {{ componentLabel | translate }}\"\n name=\"title\"\n type=\"text\"\n required\n [(ngModel)]=\"selected.data.title\"\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"row flex-grow\"\n [ngClass]=\"{ 'd-flex': widgetConfig.options || hasConfig() }\"\n >\n <div\n class=\"a-s-stretch\"\n *ngIf=\"!widgetConfig.settings?.noDeviceTarget\"\n [ngClass]=\"{\n 'bg-level-1 col-sm-4 p-r-0': hasConfig(),\n 'bg-level-0 col-sm-12': !hasConfig()\n }\"\n >\n <div\n class=\"fit-h bg-inherit p-l-16\"\n [ngClass]=\"{ 'p-r-24': !hasConfig() }\"\n >\n <div class=\"p-relative bg-inherit\">\n <c8y-asset-selector-miller\n class=\"d-block bg-inherit p-relative\"\n style=\"height: calc(100vh - 422px)\"\n (onSelected)=\"selectionChanged($event)\"\n (onClearSelected)=\"selectionChanged()\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: this.widgetConfig.settings?.groupsSelectable,\n showChildDevices: true,\n columnHeaders: true,\n showUnassignedDevices: true,\n search: !this.widgetConfig.settings.context?.additionParents,\n showFilter: true,\n singleColumn: !!this.hasConfig()\n }\"\n [asset]=\"widgetConfig.settings?.context\"\n [selectedDevice]=\"selectedDevice\"\n ></c8y-asset-selector-miller>\n </div>\n </div>\n </div>\n <div\n [ngClass]=\"{\n 'col-sm-8': !widgetConfig.settings?.noDeviceTarget,\n 'col-sm-12': widgetConfig.settings?.noDeviceTarget,\n 'sr-only': !hasConfig()\n }\"\n >\n <c8y-dynamic-component\n class=\"d-block\"\n style=\"height: {{ hasConfig() ? 'calc(100vh - 422px)' : '0' }}\"\n [ngClass]=\"{ 'inner-scroll p-r-24': !widgetConfig.settings?.noDeviceTarget }\"\n [componentId]=\"selected.id\"\n mode=\"config\"\n [config]=\"widgetConfig\"\n [notFoundError]=\"false\"\n #config\n ></c8y-dynamic-component>\n </div>\n </div>\n </div>\n\n <div\n class=\"modal-body p-t-0\"\n style=\"height: calc(100vh - 310px)\"\n *ngIf=\"mode === 'style'\"\n >\n <div class=\"row\">\n <div class=\"col-xs-6\">\n <c8y-appearance-settings\n [(themeClass)]=\"styling.contentClass\"\n [(headerClass)]=\"styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"defaultStyling.contentClass\"\n [defaultHeaderClass]=\"defaultStyling.headerClass\"\n ></c8y-appearance-settings>\n </div>\n <div class=\"col-xs-6 sticky-header-top-0\">\n <c8y-widget-preview\n style=\"height: calc(100vh - 382px)\"\n [previewClasses]=\"getStyle(true)\"\n ></c8y-widget-preview>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n (click)=\"save()\"\n [disabled]=\"\n contextDashboardService.formDisabled || configForm.invalid || checkIfDeviceRequired()\n \"\n c8yProductExperience\n [actionName]=\"current ? 'editWidget' : 'createWidget'\"\n [actionData]=\"{ widgetName: selected && selected.id }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</form>\n" }]
|
|
233
|
+
args: [{ selector: 'c8y-widget-config', template: "<div class=\"modal-header separator\">\n <div\n class=\"h3\"\n title=\"{{ 'Add widget' | translate }}\"\n id=\"modal-title\"\n *ngIf=\"!current\"\n translate\n >\n Add widget\n </div>\n <div\n class=\"h3\"\n title=\"{{ 'Edit widget' | translate }}\"\n id=\"modal-title\"\n *ngIf=\"current\"\n translate\n >\n Edit widget\n </div>\n</div>\n<form\n name=\"form\"\n #configForm=\"ngForm\"\n>\n <div\n class=\"c8y-modal-tabs\"\n id=\"modal-body\"\n >\n <div class=\"tabContainer\">\n <ul class=\"nav nav-tabs nav-tabsc8y p-l-24\">\n <li [class.active]=\"mode === 'select'\">\n <button\n class=\"btn\"\n title=\"{{ 'Select widget' | translate }}\"\n type=\"button\"\n (click)=\"changeMode('select'); (false)\"\n >\n <i c8yIcon=\"th-large\"></i>\n <span translate>Select widget</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'config'\">\n <button\n class=\"btn\"\n title=\"{{ 'Configuration' | translate }}\"\n type=\"button\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('config'); (false)\"\n >\n <i c8yIcon=\"cog\"></i>\n <span translate>Configuration</span>\n </button>\n </li>\n <li [class.active]=\"mode === 'style'\">\n <button\n class=\"btn\"\n title=\"{{ 'Appearance' | translate }}\"\n type=\"button\"\n [disabled]=\"!selected\"\n (click)=\"changeMode('style'); (false)\"\n >\n <i c8yIcon=\"paint-brush\"></i>\n <span translate>Appearance</span>\n </button>\n </li>\n </ul>\n </div>\n </div>\n\n <div class=\"modal-inner-scroll modal-inner-scroll--fixed\">\n <div\n class=\"bg-level-0 p-l-24 p-r-24 p-t-8 p-b-8 sticky-header-top-0\"\n style=\"z-index: 2\"\n *ngIf=\"mode === 'select'\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n [attr.aria-label]=\"'Search' | translate\"\n placeholder=\"{{ 'Search\u2026' | translate }}\"\n type=\"text\"\n data-cy=\"widget-config--Search\"\n [(ngModel)]=\"searchTerm\"\n [ngModelOptions]=\"{ standalone: true }\"\n (keydown)=\"searchChange$.next($event)\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n <i [c8yIcon]=\"searchTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"modal-body bg-level-2\"\n *ngIf=\"mode === 'select'\"\n >\n <div class=\"card-group card-select m-b-0\">\n <div\n class=\"col-md-3 col-sm-4 col-xs-6\"\n title=\"{{ cmp.description | translate }}\"\n *ngFor=\"let cmp of searchResult || components\"\n >\n <button\n class=\"btn-clean d-col card p-8\"\n [class.active]=\"selected === cmp\"\n type=\"button\"\n (click)=\"select(cmp)\"\n >\n <div\n class=\"text-center p-8 m-b-8 d-col flex-center flex-grow bg-level-2\"\n role=\"presentation\"\n >\n <ng-container *ngIf=\"!cmp.previewImage; else previewImage\">\n <div class=\"h1\"><i c8yIcon=\"file-image-o\"></i></div>\n <small translate>Preview not available</small>\n </ng-container>\n <ng-template #previewImage>\n <img\n class=\"widget-thumbnail\"\n alt\n [src]=\"cmp.previewImage\"\n />\n </ng-template>\n </div>\n <p class=\"card-title text-truncate\">\n <c8y-highlight\n text=\"{{ cmp.label | translate }}\"\n [pattern]=\"searchTerm\"\n ></c8y-highlight>\n </p>\n </button>\n </div>\n\n <div\n class=\"c8y-empty-state text-center\"\n *ngIf=\"searchResult && searchResult.length === 0\"\n >\n <div\n class=\"h1\"\n c8yIcon=\"search\"\n ></div>\n <h3 translate>No widgets found.</h3>\n <div class=\"d-flex\">\n <p\n class=\"m-r-8\"\n translate\n >\n Rephrase your search term.\n </p>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n {{ 'Reset search' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <!-- The following is intentional set to hidden to allow the ViewChild ref in the controller -->\n <div\n class=\"d-flex d-col fit-h\"\n *ngIf=\"selected\"\n [ngClass]=\"{ hidden: mode !== 'config' }\"\n >\n <div class=\"p-t-16 flex-no-shrink separator-bottom p-b-16\">\n <div class=\"row\">\n <div class=\"col-sm-4\">\n <div class=\"p-l-24\">\n <div class=\"text-left text-medium h4\">\n {{ selected.label | translate }}\n </div>\n <p>\n {{ selected.description | translate }}\n </p>\n </div>\n </div>\n <div class=\"col-sm-8\">\n <div class=\"p-r-24\">\n <c8y-form-group>\n <label\n for=\"widgetTitle\"\n translate\n >\n Title\n </label>\n <input\n class=\"form-control\"\n id=\"widgetTitle\"\n placeholder=\"{{ 'e.g.' | translate }} {{ componentLabel | translate }}\"\n name=\"title\"\n type=\"text\"\n required\n [(ngModel)]=\"selected.data.title\"\n />\n </c8y-form-group>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"row flex-grow\"\n [ngClass]=\"{ 'd-flex': widgetConfig.options || hasConfig() }\"\n >\n <div\n class=\"a-s-stretch\"\n *ngIf=\"!widgetConfig.settings?.noDeviceTarget && mode === 'config'\"\n [ngClass]=\"{\n 'bg-level-1 col-sm-4 p-r-0': hasConfig(),\n 'bg-level-0 col-sm-12': !hasConfig()\n }\"\n >\n <div\n class=\"fit-h bg-inherit p-l-16\"\n [ngClass]=\"{ 'p-r-24': !hasConfig() }\"\n >\n <div class=\"p-relative bg-inherit\">\n <c8y-asset-selector-miller\n class=\"d-block bg-inherit p-relative\"\n style=\"height: calc(100vh - 422px)\"\n (onSelected)=\"selectionChanged($event)\"\n (onClearSelected)=\"selectionChanged()\"\n [config]=\"{\n view: 'miller',\n groupsSelectable: this.widgetConfig.settings?.groupsSelectable,\n showChildDevices: true,\n columnHeaders: true,\n showUnassignedDevices: true,\n search: !this.widgetConfig.settings.context?.additionParents,\n showFilter: true,\n singleColumn: !!this.hasConfig()\n }\"\n [asset]=\"widgetConfig.settings?.context\"\n [selectedDevice]=\"selectedDevice\"\n ></c8y-asset-selector-miller>\n </div>\n </div>\n </div>\n <div\n [ngClass]=\"{\n 'col-sm-8': !widgetConfig.settings?.noDeviceTarget,\n 'col-sm-12': widgetConfig.settings?.noDeviceTarget,\n 'sr-only': !hasConfig()\n }\"\n >\n <c8y-dynamic-component\n class=\"d-block\"\n style=\"height: {{ hasConfig() ? 'calc(100vh - 422px)' : '0' }}\"\n [ngClass]=\"{ 'inner-scroll p-r-24': !widgetConfig.settings?.noDeviceTarget }\"\n [componentId]=\"selected.id\"\n mode=\"config\"\n [config]=\"widgetConfig\"\n [notFoundError]=\"false\"\n #config\n ></c8y-dynamic-component>\n </div>\n </div>\n </div>\n\n <div\n class=\"modal-body p-t-0\"\n style=\"height: calc(100vh - 310px)\"\n *ngIf=\"mode === 'style'\"\n >\n <div class=\"row\">\n <div class=\"col-xs-6\">\n <c8y-appearance-settings\n [(themeClass)]=\"styling.contentClass\"\n [(headerClass)]=\"styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"defaultStyling.contentClass\"\n [defaultHeaderClass]=\"defaultStyling.headerClass\"\n ></c8y-appearance-settings>\n </div>\n <div class=\"col-xs-6 sticky-header-top-0\">\n <c8y-widget-preview\n style=\"height: calc(100vh - 382px)\"\n [previewClasses]=\"getStyle(true)\"\n ></c8y-widget-preview>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n (click)=\"save()\"\n [disabled]=\"\n contextDashboardService.formDisabled || configForm.invalid || checkIfDeviceRequired()\n \"\n c8yProductExperience\n [actionName]=\"current ? 'editWidget' : 'createWidget'\"\n [actionData]=\"{ widgetName: selected && selected.id }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</form>\n" }]
|
|
234
234
|
}], ctorParameters: function () { return [{ type: i1.WidgetService }, { type: i2.BsModalRef }, { type: i3.InventoryService }, { type: i4.ContextDashboardService }]; }, propDecorators: { dynamicComponent: [{
|
|
235
235
|
type: ViewChild,
|
|
236
236
|
args: ['config', { static: false }]
|
|
237
237
|
}] } });
|
|
238
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbmZpZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC93aWRnZXQtY29uZmlnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL3dpZGdldC1jb25maWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFzQyx5QkFBeUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXBHLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBRUwsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUV0QixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQWtCLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7QUFNL0QsTUFBTSxPQUFPLHFCQUFxQjtJQTRDaEMsWUFDVSxhQUE0QixFQUM1QixLQUFpQixFQUNqQixTQUEyQixFQUM1Qix1QkFBZ0Q7UUFIL0Msa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtR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ImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uLCBXaWRnZXQsIER5bmFtaWNDb21wb25lbnRDb21wb25lbnQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFzc2V0U2VsZWN0aW9uQ2hhbmdlRXZlbnQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Fzc2V0cy1uYXZpZ2F0b3InO1xuaW1wb3J0IHsgY2xvbmUsIGNsb25lRGVlcCwgZXNjYXBlUmVnRXhwLCBnZXQsIG9taXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgaWlmLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCxcbiAgV0lER0VUX0NPTlRFTlRfQ0xBU1NFUyxcbiAgV0lER0VUX0hFQURFUl9DTEFTU0VTLFxuICBDb250ZXh0V2lkZ2V0Q29uZmlnXG59IGZyb20gJy4vY29udGV4dC1kYXNoYm9hcmQubW9kZWwnO1xuaW1wb3J0IHsgV2lkZ2V0U2VydmljZSB9IGZyb20gJy4vd2lkZ2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGV4dERhc2hib2FyZFNlcnZpY2UgfSBmcm9tICcuL2NvbnRleHQtZGFzaGJvYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIEludmVudG9yeVNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS13aWRnZXQtY29uZmlnJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldC1jb25maWcuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldENvbmZpZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHNlbGVjdGVkRGV2aWNlOiBJTWFuYWdlZE9iamVjdDtcbiAgbW9kZTogJ2NvbmZpZycgfCAnc2VsZWN0JyB8ICdzdHlsZScgPSAnc2VsZWN0JztcbiAgc2VhcmNoUmVzdWx0OiBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbltdO1xuICBjb21wb25lbnRzOiBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbltdO1xuICBzZWxlY3RlZDogRHluYW1pY0NvbXBvbmVudERlZmluaXRpb247XG4gIHNlYXJjaENoYW5nZSQgPSBuZXcgU3ViamVjdCgpO1xuICBzZWFyY2hUZXJtID0gJyc7XG4gIGNvbnRleHQ6IGFueTtcbiAgY29tcG9uZW50TGFiZWw6IHN0cmluZztcbiAgbW86IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0O1xuICBzdHlsaW5nID0ge1xuICAgIGhlYWRlckNsYXNzOiAncGFuZWwtdGl0bGUtcmVndWxhcicsXG4gICAgY29udGVudENsYXNzOiAncGFuZWwtY29udGVudC1saWdodCdcbiAgfTtcbiAgZGVmYXVsdFN0eWxpbmcgPSB7XG4gICAgaGVhZGVyQ2xhc3M6ICdwYW5lbC10aXRsZS1yZWd1bGFyJyxcbiAgICBjb250ZW50Q2xhc3M6ICdwYW5lbC1jb250ZW50LWxpZ2h0J1xuICB9O1xuICBwb3NzaWJsZVN0eWxpbmcgPSB7IFdJREdFVF9IRUFERVJfQ0xBU1NFUywgV0lER0VUX0NPTlRFTlRfQ0xBU1NFUyB9O1xuICBjdXJyZW50OiBhbnk7XG4gIHdpZGdldENvbmZpZzogQ29udGV4dFdpZGdldENvbmZpZztcbiAgaXNVcGdyYWRlID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnY29uZmlnJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGR5bmFtaWNDb21wb25lbnQ6IER5bmFtaWNDb21wb25lbnRDb21wb25lbnQ7XG5cbiAgZ2V0IGlzRWRpdCgpIHtcbiAgICByZXR1cm4gISF0aGlzLmN1cnJlbnQ7XG4gIH1cblxuICBnZXQgaXNEZXZpY2VUeXBlRGFzaGJvYXJkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMubW8uYzh5X0Rhc2hib2FyZD8uZGV2aWNlVHlwZSAmJiAhIXRoaXMubW8uYzh5X0Rhc2hib2FyZD8uZGV2aWNlVHlwZVZhbHVlO1xuICB9XG5cbiAgcmVzdWx0OiBQcm9taXNlPFdpZGdldD4gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdGhpcy5fc2F2ZSA9IHJlc29sdmU7XG4gICAgdGhpcy5fY2FuY2VsID0gcmVqZWN0O1xuICB9KTtcblxuICBwcml2YXRlIHNlYXJjaFN1YjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIF9zYXZlOiAodmFsdWU6IFdpZGdldCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBfY2FuY2VsOiAocmVhc29uPzogYW55KSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgd2lkZ2V0U2VydmljZTogV2lkZ2V0U2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsOiBCc01vZGFsUmVmLFxuICAgIHByaXZhdGUgaW52ZW50b3J5OiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHB1YmxpYyBjb250ZXh0RGFzaGJvYXJkU2VydmljZTogQ29udGV4dERhc2hib2FyZFNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNvbXBvbmVudHMgPSB0aGlzLndpZGdldFNlcnZpY2UuZ2V0V2lkZ2V0RGVmaW5pdGlvbnMoKTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGVkKSB7XG4gICAgICB0aGlzLmN1cnJlbnQgPSBjbG9uZSh0aGlzLnNlbGVjdGVkKTtcbiAgICAgIHRoaXMuc2VsZWN0KHRoaXMuc2VsZWN0ZWQsIHRoaXMuaXNFZGl0ID8gJ2NvbmZpZycgOiAnc2VsZWN0Jyk7XG4gICAgfVxuXG4gICAgdGhpcy5zZWFyY2hTdWIgPSB0aGlzLnNlYXJjaENoYW5nZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiBpaWYoKCkgPT4gZXZlbnQud2hpY2ggIT09IDEzLCB0aW1lcigyMDApLCB0aW1lcigxMCkpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2VhcmNoKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuc2V0U3R5bGluZ3MoKTtcbiAgICBpZiAodGhpcy53aWRnZXRDb25maWc/LmRldmljZSkge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmludmVudG9yeS5kZXRhaWwodGhpcy53aWRnZXRDb25maWcuZGV2aWNlLmlkKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWREZXZpY2UgPSBkYXRhO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrSWZEZXZpY2VSZXF1aXJlZCgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgIXRoaXMud2lkZ2V0Q29uZmlnIHx8XG4gICAgICAoIXRoaXMud2lkZ2V0Q29uZmlnLnNldHRpbmdzLmRldmljZVRhcmdldE5vdFJlcXVpcmVkICYmXG4gICAgICAgICF0aGlzLndpZGdldENvbmZpZy5kZXZpY2UgJiZcbiAgICAgICAgIXRoaXMud2lkZ2V0Q29uZmlnLnNldHRpbmdzLm5vRGV2aWNlVGFyZ2V0KVxuICAgICk7XG4gIH1cblxuICBzZWxlY3Rpb25DaGFuZ2VkKHNlbGVjdGlvbj86IEFzc2V0U2VsZWN0aW9uQ2hhbmdlRXZlbnQpIHtcbiAgICB0aGlzLndpZGdldENvbmZpZy5kZXZpY2UgPSBzZWxlY3Rpb24/LmNoYW5nZT8uaXRlbTtcbiAgICB0aGlzLmR5bmFtaWNDb21wb25lbnQuZW1pdENvbmZpZ0NoYW5nZSh7XG4gICAgICBkZXZpY2U6IHRoaXMud2lkZ2V0Q29uZmlnLmRldmljZVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc2F2ZSgpIHtcbiAgICBjb25zdCBob29rU3VjY2VzcyA9IGF3YWl0IHRoaXMuZHluYW1pY0NvbXBvbmVudC5jYWxsTGlmZUN5Y2xlSG9va3MoKS50b1Byb21pc2UoKTtcbiAgICBpZiAoIWhvb2tTdWNjZXNzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBfeCwgX3ksIF93aWR0aCwgX2hlaWdodCB9ID0gdGhpcy5zZWxlY3RlZC5kYXRhO1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy53aWRnZXRDb25maWcgJiZcbiAgICAgIHRoaXMud2lkZ2V0Q29uZmlnLmRldmljZSAmJlxuICAgICAgLy8gc2VyaWFsaXppbmcgd2lsbCBiZSBoYW5kbGVkIGJ5IHJlc29sdmVyXG4gICAgICAhdGhpcy5zZWxlY3RlZD8ucmVzb2x2ZT8uZGV2aWNlXG4gICAgKSB7XG4gICAgICBjb25zdCB7IGlkLCBuYW1lIH0gPSB0aGlzLndpZGdldENvbmZpZy5kZXZpY2U7XG4gICAgICB0aGlzLndpZGdldENvbmZpZy5kZXZpY2UgPSB7IGlkLCBuYW1lIH07XG4gICAgfVxuXG4gICAgY29uc3Qgd2lkZ2V0ID0ge1xuICAgICAgX3gsXG4gICAgICBfeSxcbiAgICAgIF93aWR0aCxcbiAgICAgIF9oZWlnaHQsXG4gICAgICBjb25maWc6IG9taXQodGhpcy53aWRnZXRDb25maWcsIFsnc2V0dGluZ3MnLCAnZGlzcGxheVNldHRpbmdzJ10pLFxuICAgICAgdGl0bGU6IHRoaXMuc2VsZWN0ZWQuZGF0YS50aXRsZSxcbiAgICAgIGNvbXBvbmVudElkOiB0aGlzLnNlbGVjdGVkLmlkLFxuICAgICAgaWQ6IHRoaXMuaXNFZGl0ID8gdGhpcy5jdXJyZW50LmRhdGEuaWQgOiBTdHJpbmcoTWF0aC5yYW5kb20oKSkuc3Vic3RyKDIpLFxuICAgICAgY2xhc3NlczogdGhpcy5nZXRTdHlsZSgpLFxuICAgICAgLi4uKCF0aGlzLmlzRWRpdCA/IHRoaXMud2lkZ2V0Q29uZmlnLnNldHRpbmdzLndpZGdldERlZmF1bHRzIDoge30pXG4gICAgfSBhcyBXaWRnZXQ7XG5cbiAgICB0aGlzLl9zYXZlKHdpZGdldCk7XG4gIH1cblxuICBzZWxlY3QoY21wLCBtb2RlOiAnc2VsZWN0JyB8ICdjb25maWcnID0gJ2NvbmZpZycpIHtcbiAgICBjbXAuZGF0YSA9IGNtcC5kYXRhIHx8IHt9O1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBjbXA7XG5cbiAgICB0aGlzLmlzVXBncmFkZSA9ICEhZ2V0KGNtcCwgJ2RhdGEuc2V0dGluZ3MudXBncmFkZScpO1xuICAgIHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuZm9ybURpc2FibGVkID0gdGhpcy5pc1VwZ3JhZGU7XG5cbiAgICBpZiAodGhpcy5pc0VkaXQpIHtcbiAgICAgIGNvbnN0IHsgX3gsIF95LCBfd2lkdGgsIF9oZWlnaHQsIGNsYXNzZXMsIHRpdGxlIH0gPSB0aGlzLmN1cnJlbnQuZGF0YTtcbiAgICAgIHRoaXMuc2VsZWN0ZWQuZGF0YSA9IHsgLi4udGhpcy5zZWxlY3RlZC5kYXRhLCBfeCwgX3ksIF93aWR0aCwgX2hlaWdodCwgY2xhc3NlcywgdGl0bGUgfTtcbiAgICB9XG5cbiAgICB0aGlzLndpZGdldENvbmZpZyA9IGNsb25lRGVlcCh0aGlzLmNvbXBvc2VXaWRnZXRDb25maWcodGhpcy5zZWxlY3RlZCwgdGhpcy5jb250ZXh0KSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkLmRhdGEudGl0bGUgPSB0aGlzLnNlbGVjdGVkLmRhdGEudGl0bGUgfHwgY21wLmxhYmVsO1xuICAgIHRoaXMuY29tcG9uZW50TGFiZWwgPSBjbXAubGFiZWw7XG4gICAgdGhpcy5tb2RlID0gbW9kZTtcbiAgfVxuXG4gIHNlYXJjaCgpIHtcbiAgICBpZiAodGhpcy5zZWFyY2hUZXJtLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VhcmNoUmVzdWx0ID0gdGhpcy5jb21wb25lbnRzLmZpbHRlcihjbXAgPT5cbiAgICAgICAgbmV3IFJlZ0V4cChlc2NhcGVSZWdFeHAodGhpcy5zZWFyY2hUZXJtLnRyaW0oKSksICdpJykudGVzdChjbXAubGFiZWwpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc2V0U2VhcmNoKCk7XG4gICAgfVxuICB9XG5cbiAgcmVzZXRTZWFyY2goKSB7XG4gICAgdGhpcy5zZWFyY2hUZXJtID0gJyc7XG4gICAgdGhpcy5zZWFyY2hSZXN1bHQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBjaGFuZ2VNb2RlKG1vZGU6ICdjb25maWcnIHwgJ3NlbGVjdCcgfCAnc3R5bGUnKSB7XG4gICAgdGhpcy5tb2RlID0gbW9kZTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMuX2NhbmNlbCgpO1xuICAgIHRoaXMubW9kYWwuaGlkZSgpO1xuICB9XG5cbiAgZ2V0U3R5bGUoaXNQcmV2aWV3ID0gZmFsc2UpIHtcbiAgICBjb25zdCBjc3NDbGFzc2VzID0ge307XG4gICAgaWYgKGlzUHJldmlldyB8fCAhdGhpcy5pc0Rhc2hib2FyZERlZmF1bHRTdHlsZSh0aGlzLnN0eWxpbmcuaGVhZGVyQ2xhc3MpKSB7XG4gICAgICBjc3NDbGFzc2VzW3RoaXMuc3R5bGluZy5oZWFkZXJDbGFzc10gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChpc1ByZXZpZXcgfHwgIXRoaXMuaXNEYXNoYm9hcmREZWZhdWx0U3R5bGUodGhpcy5zdHlsaW5nLmNvbnRlbnRDbGFzcykpIHtcbiAgICAgIGNzc0NsYXNzZXNbdGhpcy5zdHlsaW5nLmNvbnRlbnRDbGFzc10gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChpc1ByZXZpZXcpIHtcbiAgICAgIGNzc0NsYXNzZXNbYGRhc2hib2FyZC10aGVtZS0ke3RoaXMuZGVmYXVsdFN0eWxpbmcuY29udGVudENsYXNzLnNwbGl0KCctJykucG9wKCl9YF0gPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBjc3NDbGFzc2VzO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5mb3JtRGlzYWJsZWQgPSB0cnVlO1xuICAgIGlmICh0aGlzLnNlYXJjaFN1Yikge1xuICAgICAgdGhpcy5zZWFyY2hTdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBoYXNDb25maWcoKSB7XG4gICAgaWYgKHRoaXMud2lkZ2V0Q29uZmlnLnNldHRpbmdzPy51cGdyYWRlKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLndpZGdldENvbmZpZy5zZXR0aW5ncz8uY29uZmlnQ29tcG9uZW50IHx8IHRoaXMud2lkZ2V0Q29uZmlnLnNldHRpbmdzPy5jb25maWdUZW1wbGF0ZVVybFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuICF0aGlzLmR5bmFtaWNDb21wb25lbnQ/LmVycm9yO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTdHlsaW5ncygpOiB2b2lkIHtcbiAgICBjb25zdCBkYXNoYm9hcmRDbGFzc2VzOiBzdHJpbmdbXSA9XG4gICAgICAodGhpcy5tby5jOHlfRGFzaGJvYXJkPy5jbGFzc2VzICYmIE9iamVjdC5rZXlzKHRoaXMubW8uYzh5X0Rhc2hib2FyZC5jbGFzc2VzKSkgfHwgW107XG4gICAgY29uc3QgZGFzaGJvYXJkV2lkZ2V0Q2xhc3Nlczogc3RyaW5nW10gPVxuICAgICAgKHRoaXMubW8uYzh5X0Rhc2hib2FyZD8ud2lkZ2V0Q2xhc3NlcyAmJiBPYmplY3Qua2V5cyh0aGlzLm1vLmM4eV9EYXNoYm9hcmQud2lkZ2V0Q2xhc3NlcykpIHx8XG4gICAgICBbXTtcbiAgICBjb25zdCB3aWRnZXRDbGFzc2VzOiBzdHJpbmdbXSA9IHRoaXMuaXNFZGl0ID8gT2JqZWN0LmtleXModGhpcy5jdXJyZW50LmRhdGEuY2xhc3NlcykgOiBbXTtcblxuICAgIHRoaXMuc3R5bGluZyA9IHRoaXMuc2V0RGVmYXVsdFN0eWxlKFtcbiAgICAgIC4uLmRhc2hib2FyZENsYXNzZXMsXG4gICAgICAuLi5kYXNoYm9hcmRXaWRnZXRDbGFzc2VzLFxuICAgICAgLi4ud2lkZ2V0Q2xhc3Nlc1xuICAgIF0pO1xuICAgIHRoaXMuZGVmYXVsdFN0eWxpbmcgPSB0aGlzLnNldERlZmF1bHRTdHlsZShbLi4uZGFzaGJvYXJkQ2xhc3NlcywgLi4uZGFzaGJvYXJkV2lkZ2V0Q2xhc3Nlc10pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0Rhc2hib2FyZERlZmF1bHRTdHlsZShjbGFzc05hbWUpIHtcbiAgICBjb25zdCBhbGxDbGFzc2VzID0ge1xuICAgICAgLi4udGhpcy5tby5jOHlfRGFzaGJvYXJkLmNsYXNzZXMsXG4gICAgICAuLi50aGlzLm1vLmM4eV9EYXNoYm9hcmQud2lkZ2V0Q2xhc3Nlc1xuICAgIH07XG4gICAgY29uc3Qgc3R5bGVzID0gT2JqZWN0LmtleXMoYWxsQ2xhc3NlcykubWFwKGNzc0NsYXNzID0+ICh7IGNsYXNzOiBjc3NDbGFzcyB9KSk7XG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmdldFN0eWxpbmcoXG4gICAgICBzdHlsZXMsXG4gICAgICBjbGFzc05hbWUuc3BsaXQoJy0nKS5wb3AoKSxcbiAgICAgIHVuZGVmaW5lZFxuICAgICk7XG4gICAgcmV0dXJuICEhc3R5bGU7XG4gIH1cblxuICBwcml2YXRlIHNldERlZmF1bHRTdHlsZShzZXRDbGFzc2VzOiBzdHJpbmdbXSkge1xuICAgIGxldCBjb250ZW50Q2xhc3MgPSB0aGlzLnN0eWxpbmcuY29udGVudENsYXNzO1xuICAgIGxldCBoZWFkZXJDbGFzcyA9IHRoaXMuc3R5bGluZy5oZWFkZXJDbGFzcztcbiAgICBjb25zdCBzdHlsZXMgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlXG4gICAgICAuZ2V0RmlsdGVyZWREYXNoYm9hcmRTdHlsZXMoc2V0Q2xhc3NlcylcbiAgICAgIC5tYXAoYyA9PiBjLnNwbGl0KCctJykucG9wKCkpO1xuICAgIHN0eWxlcy5mb3JFYWNoKHN0eWxlTmFtZSA9PiB7XG4gICAgICBjb250ZW50Q2xhc3MgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmdldFN0eWxpbmcoXG4gICAgICAgIFdJREdFVF9DT05URU5UX0NMQVNTRVMsXG4gICAgICAgIHN0eWxlTmFtZSxcbiAgICAgICAgY29udGVudENsYXNzXG4gICAgICApO1xuICAgICAgaGVhZGVyQ2xhc3MgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmdldFN0eWxpbmcoXG4gICAgICAgIFdJREdFVF9IRUFERVJfQ0xBU1NFUyxcbiAgICAgICAgc3R5bGVOYW1lLFxuICAgICAgICBoZWFkZXJDbGFzc1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7IGhlYWRlckNsYXNzLCBjb250ZW50Q2xhc3MgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcG9zZVdpZGdldENvbmZpZyhzZWxlY3RlZENvbXBvbmVudCwgY29udGV4dCA9IHt9KSB7XG4gICAgY29uc3Qgc2V0dGluZyA9IHtcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgIC4uLnNlbGVjdGVkQ29tcG9uZW50LmRhdGEuc2V0dGluZ3MsXG4gICAgICAgIC4uLmdldChzZWxlY3RlZENvbXBvbmVudC5kYXRhLnNldHRpbmdzLCAnbmcxLm9wdGlvbnMnKSxcbiAgICAgICAgLi4uZ2V0KHNlbGVjdGVkQ29tcG9uZW50LmRhdGEsICduZzEub3B0aW9ucycpLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXNoYm9hcmRNbzogdGhpcy5tby5jOHlfRGFzaGJvYXJkXG4gICAgICB9LFxuICAgICAgLi4uc2VsZWN0ZWRDb21wb25lbnQuZGF0YS5jb25maWdcbiAgICB9IGFzIENvbnRleHRXaWRnZXRDb25maWc7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlUYXJnZXRJZkRldmljZURhc2hib2FyZChzZXR0aW5nKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlUYXJnZXRJZkRldmljZURhc2hib2FyZCh3aWRnZXRDb25maWc6IENvbnRleHRXaWRnZXRDb25maWcpIHtcbiAgICBjb25zdCBpc0RldmljZVR5cGUgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmlzRGV2aWNlVHlwZSh0aGlzLm1vKTtcblxuICAgIGlmIChpc0RldmljZVR5cGUpIHtcbiAgICAgIHdpZGdldENvbmZpZy5zZXR0aW5ncy5oaWRlVGFyZ2V0ID0gaXNEZXZpY2VUeXBlO1xuXG4gICAgICBjb25zdCBub0RldmljZVRhcmdldCA9IHdpZGdldENvbmZpZy5zZXR0aW5ncy5uZzFcbiAgICAgICAgPyB3aWRnZXRDb25maWcuc2V0dGluZ3MubmcxLm9wdGlvbnMubm9EZXZpY2VUYXJnZXRcbiAgICAgICAgOiB3aWRnZXRDb25maWcuc2V0dGluZ3Mubm9EZXZpY2VUYXJnZXQ7XG5cbiAgICAgIGlmICghbm9EZXZpY2VUYXJnZXQpIHtcbiAgICAgICAgd2lkZ2V0Q29uZmlnLmRldmljZSA9IHtcbiAgICAgICAgICBpZDogdGhpcy5jb250ZXh0LmlkLFxuICAgICAgICAgIG5hbWU6IHRoaXMuY29udGV4dC5uYW1lXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB3aWRnZXRDb25maWc7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgc2VwYXJhdG9yXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImgzXCJcbiAgICB0aXRsZT1cInt7ICdBZGQgd2lkZ2V0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgaWQ9XCJtb2RhbC10aXRsZVwiXG4gICAgKm5nSWY9XCIhY3VycmVudFwiXG4gICAgdHJhbnNsYXRlXG4gID5cbiAgICBBZGQgd2lkZ2V0XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJoM1wiXG4gICAgdGl0bGU9XCJ7eyAnRWRpdCB3aWRnZXQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICBpZD1cIm1vZGFsLXRpdGxlXCJcbiAgICAqbmdJZj1cImN1cnJlbnRcIlxuICAgIHRyYW5zbGF0ZVxuICA+XG4gICAgRWRpdCB3aWRnZXRcbiAgPC9kaXY+XG48L2Rpdj5cbjxmb3JtXG4gIG5hbWU9XCJmb3JtXCJcbiAgI2NvbmZpZ0Zvcm09XCJuZ0Zvcm1cIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjOHktbW9kYWwtdGFic1wiXG4gICAgaWQ9XCJtb2RhbC1ib2R5XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJ0YWJDb250YWluZXJcIj5cbiAgICAgIDx1bCBjbGFzcz1cIm5hdiBuYXYtdGFicyBuYXYtdGFic2M4eSBwLWwtMjRcIj5cbiAgICAgICAgPGxpIFtjbGFzcy5hY3RpdmVdPVwibW9kZSA9PT0gJ3NlbGVjdCdcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImJ0blwiXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdTZWxlY3Qgd2lkZ2V0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VNb2RlKCdzZWxlY3QnKTsgKGZhbHNlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgYzh5SWNvbj1cInRoLWxhcmdlXCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlNlbGVjdCB3aWRnZXQ8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBbY2xhc3MuYWN0aXZlXT1cIm1vZGUgPT09ICdjb25maWcnXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG5cIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQ29uZmlndXJhdGlvbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VNb2RlKCdjb25maWcnKTsgKGZhbHNlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgYzh5SWNvbj1cImNvZ1wiPjwvaT5cbiAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5Db25maWd1cmF0aW9uPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bGkgW2NsYXNzLmFjdGl2ZV09XCJtb2RlID09PSAnc3R5bGUnXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG5cIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQXBwZWFyYW5jZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VNb2RlKCdzdHlsZScpOyAoZmFsc2UpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjOHlJY29uPVwicGFpbnQtYnJ1c2hcIj48L2k+XG4gICAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+QXBwZWFyYW5jZTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1pbm5lci1zY3JvbGwgbW9kYWwtaW5uZXItc2Nyb2xsLS1maXhlZFwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYmctbGV2ZWwtMCBwLWwtMjQgcC1yLTI0IHAtdC04IHAtYi04IHN0aWNreS1oZWFkZXItdG9wLTBcIlxuICAgICAgc3R5bGU9XCJ6LWluZGV4OiAyXCJcbiAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ3NlbGVjdCdcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLXNlYXJjaFwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInU2VhcmNoJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ1NlYXJjaOKApicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGRhdGEtY3k9XCJ3aWRnZXQtY29uZmlnLS1TZWFyY2hcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIlxuICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgICAoa2V5ZG93bik9XCJzZWFyY2hDaGFuZ2UkLm5leHQoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kb3RcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1NlYXJjaCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXNldFNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cInNlYXJjaFRlcm0ubGVuZ3RoID09PSAwID8gJ3NlYXJjaCcgOiAnY2xvc2UnXCI+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm1vZGFsLWJvZHkgYmctbGV2ZWwtMlwiXG4gICAgICAqbmdJZj1cIm1vZGUgPT09ICdzZWxlY3QnXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ncm91cCBjYXJkLXNlbGVjdCBtLWItMFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjb2wtbWQtMyBjb2wtc20tNCBjb2wteHMtNlwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyBjbXAuZGVzY3JpcHRpb24gfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjbXAgb2Ygc2VhcmNoUmVzdWx0IHx8IGNvbXBvbmVudHNcIlxuICAgICAgICA+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG4tY2xlYW4gZC1jb2wgY2FyZCBwLThcIlxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzZWxlY3RlZCA9PT0gY21wXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdChjbXApXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1jZW50ZXIgcC04IG0tYi04IGQtY29sIGZsZXgtY2VudGVyIGZsZXgtZ3JvdyBiZy1sZXZlbC0yXCJcbiAgICAgICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY21wLnByZXZpZXdJbWFnZTsgZWxzZSBwcmV2aWV3SW1hZ2VcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaDFcIj48aSBjOHlJY29uPVwiZmlsZS1pbWFnZS1vXCI+PC9pPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGU+UHJldmlldyBub3QgYXZhaWxhYmxlPC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcHJldmlld0ltYWdlPlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2lkZ2V0LXRodW1ibmFpbFwiXG4gICAgICAgICAgICAgICAgICBhbHRcbiAgICAgICAgICAgICAgICAgIFtzcmNdPVwiY21wLnByZXZpZXdJbWFnZVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJjYXJkLXRpdGxlIHRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgPGM4eS1oaWdobGlnaHRcbiAgICAgICAgICAgICAgICB0ZXh0PVwie3sgY21wLmxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBbcGF0dGVybl09XCJzZWFyY2hUZXJtXCJcbiAgICAgICAgICAgICAgPjwvYzh5LWhpZ2hsaWdodD5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYzh5LWVtcHR5LXN0YXRlIHRleHQtY2VudGVyXCJcbiAgICAgICAgICAqbmdJZj1cInNlYXJjaFJlc3VsdCAmJiBzZWFyY2hSZXN1bHQubGVuZ3RoID09PSAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaDFcIlxuICAgICAgICAgICAgYzh5SWNvbj1cInNlYXJjaFwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDxoMyB0cmFuc2xhdGU+Tm8gd2lkZ2V0cyBmb3VuZC48L2gzPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgIGNsYXNzPVwibS1yLThcIlxuICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUmVwaHJhc2UgeW91ciBzZWFyY2ggdGVybS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICB0aXRsZT1cInt7ICdSZXNldCBzZWFyY2gnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZXNldFNlYXJjaCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ1Jlc2V0IHNlYXJjaCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBUaGUgZm9sbG93aW5nIGlzIGludGVudGlvbmFsIHNldCB0byBoaWRkZW4gdG8gYWxsb3cgdGhlIFZpZXdDaGlsZCByZWYgaW4gdGhlIGNvbnRyb2xsZXIgLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJkLWZsZXggZC1jb2wgZml0LWhcIlxuICAgICAgKm5nSWY9XCJzZWxlY3RlZFwiXG4gICAgICBbbmdDbGFzc109XCJ7IGhpZGRlbjogbW9kZSAhPT0gJ2NvbmZpZycgfVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInAtdC0xNiBmbGV4LW5vLXNocmluayBzZXBhcmF0b3ItYm90dG9tIHAtYi0xNlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS00XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1sLTI0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxlZnQgdGV4dC1tZWRpdW0gaDRcIj5cbiAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZC5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAge3sgc2VsZWN0ZWQuZGVzY3JpcHRpb24gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS04XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1yLTI0XCI+XG4gICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgIGZvcj1cIndpZGdldFRpdGxlXCJcbiAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIFRpdGxlXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwid2lkZ2V0VGl0bGVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLicgfCB0cmFuc2xhdGUgfX0ge3sgY29tcG9uZW50TGFiZWwgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cInRpdGxlXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkLmRhdGEudGl0bGVcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJyb3cgZmxleC1ncm93XCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnZC1mbGV4Jzogd2lkZ2V0Q29uZmlnLm9wdGlvbnMgfHwgaGFzQ29uZmlnKCkgfVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImEtcy1zdHJldGNoXCJcbiAgICAgICAgICAqbmdJZj1cIiF3aWRnZXRDb25maWcuc2V0dGluZ3M/Lm5vRGV2aWNlVGFyZ2V0XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnYmctbGV2ZWwtMSBjb2wtc20tNCBwLXItMCc6IGhhc0NvbmZpZygpLFxuICAgICAgICAgICAgJ2JnLWxldmVsLTAgY29sLXNtLTEyJzogIWhhc0NvbmZpZygpXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZpdC1oIGJnLWluaGVyaXQgcC1sLTE2XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3Atci0yNCc6ICFoYXNDb25maWcoKSB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1yZWxhdGl2ZSBiZy1pbmhlcml0XCI+XG4gICAgICAgICAgICAgIDxjOHktYXNzZXQtc2VsZWN0b3ItbWlsbGVyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWJsb2NrIGJnLWluaGVyaXQgcC1yZWxhdGl2ZVwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IGNhbGMoMTAwdmggLSA0MjJweClcIlxuICAgICAgICAgICAgICAgIChvblNlbGVjdGVkKT1cInNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKG9uQ2xlYXJTZWxlY3RlZCk9XCJzZWxlY3Rpb25DaGFuZ2VkKClcIlxuICAgICAgICAgICAgICAgIFtjb25maWddPVwie1xuICAgICAgICAgICAgICAgICAgdmlldzogJ21pbGxlcicsXG4gICAgICAgICAgICAgICAgICBncm91cHNTZWxlY3RhYmxlOiB0aGlzLndpZGdldENvbmZpZy5zZXR0aW5ncz8uZ3JvdXBzU2VsZWN0YWJsZSxcbiAgICAgICAgICAgICAgICAgIHNob3dDaGlsZERldmljZXM6IHRydWUsXG4gICAgICAgICAgICAgICAgICBjb2x1bW5IZWFkZXJzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgc2hvd1VuYXNzaWduZWREZXZpY2VzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgc2VhcmNoOiAhdGhpcy53aWRnZXRDb25maWcuc2V0dGluZ3MuY29udGV4dD8uYWRkaXRpb25QYXJlbnRzLFxuICAgICAgICAgICAgICAgICAgc2hvd0ZpbHRlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHNpbmdsZUNvbHVtbjogISF0aGlzLmhhc0NvbmZpZygpXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgW2Fzc2V0XT1cIndpZGdldENvbmZpZy5zZXR0aW5ncz8uY29udGV4dFwiXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkRGV2aWNlXT1cInNlbGVjdGVkRGV2aWNlXCJcbiAgICAgICAgICAgICAgPjwvYzh5LWFzc2V0LXNlbGVjdG9yLW1pbGxlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdjb2wtc20tOCc6ICF3aWRnZXRDb25maWcuc2V0dGluZ3M/Lm5vRGV2aWNlVGFyZ2V0LFxuICAgICAgICAgICAgJ2NvbC1zbS0xMic6IHdpZGdldENvbmZpZy5zZXR0aW5ncz8ubm9EZXZpY2VUYXJnZXQsXG4gICAgICAgICAgICAnc3Itb25seSc6ICFoYXNDb25maWcoKVxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGM4eS1keW5hbWljLWNvbXBvbmVudFxuICAgICAgICAgICAgY2xhc3M9XCJkLWJsb2NrXCJcbiAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiB7eyBoYXNDb25maWcoKSA/ICdjYWxjKDEwMHZoIC0gNDIycHgpJyA6ICcwJyB9fVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpbm5lci1zY3JvbGwgcC1yLTI0JzogIXdpZGdldENvbmZpZy5zZXR0aW5ncz8ubm9EZXZpY2VUYXJnZXQgfVwiXG4gICAgICAgICAgICBbY29tcG9uZW50SWRdPVwic2VsZWN0ZWQuaWRcIlxuICAgICAgICAgICAgbW9kZT1cImNvbmZpZ1wiXG4gICAgICAgICAgICBbY29uZmlnXT1cIndpZGdldENvbmZpZ1wiXG4gICAgICAgICAgICBbbm90Rm91bmRFcnJvcl09XCJmYWxzZVwiXG4gICAgICAgICAgICAjY29uZmlnXG4gICAgICAgICAgPjwvYzh5LWR5bmFtaWMtY29tcG9uZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJtb2RhbC1ib2R5IHAtdC0wXCJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMzEwcHgpXCJcbiAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ3N0eWxlJ1wiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTZcIj5cbiAgICAgICAgICA8Yzh5LWFwcGVhcmFuY2Utc2V0dGluZ3NcbiAgICAgICAgICAgIFsodGhlbWVDbGFzcyldPVwic3R5bGluZy5jb250ZW50Q2xhc3NcIlxuICAgICAgICAgICAgWyhoZWFkZXJDbGFzcyldPVwic3R5bGluZy5oZWFkZXJDbGFzc1wiXG4gICAgICAgICAgICBbcG9zc2libGVTdHlsaW5nVGhlbWVdPVwicG9zc2libGVTdHlsaW5nLldJREdFVF9DT05URU5UX0NMQVNTRVNcIlxuICAgICAgICAgICAgW3Bvc3NpYmxlU3R5bGluZ0hlYWRlcl09XCJwb3NzaWJsZVN0eWxpbmcuV0lER0VUX0hFQURFUl9DTEFTU0VTXCJcbiAgICAgICAgICAgIFtkZWZhdWx0VGhlbWVDbGFzc109XCJkZWZhdWx0U3R5bGluZy5jb250ZW50Q2xhc3NcIlxuICAgICAgICAgICAgW2RlZmF1bHRIZWFkZXJDbGFzc109XCJkZWZhdWx0U3R5bGluZy5oZWFkZXJDbGFzc1wiXG4gICAgICAgICAgPjwvYzh5LWFwcGVhcmFuY2Utc2V0dGluZ3M+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTYgc3RpY2t5LWhlYWRlci10b3AtMFwiPlxuICAgICAgICAgIDxjOHktd2lkZ2V0LXByZXZpZXdcbiAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMzgycHgpXCJcbiAgICAgICAgICAgIFtwcmV2aWV3Q2xhc3Nlc109XCJnZXRTdHlsZSh0cnVlKVwiXG4gICAgICAgICAgPjwvYzh5LXdpZGdldC1wcmV2aWV3PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgdGl0bGU9XCJ7eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJjbG9zZSgpXCJcbiAgICA+XG4gICAgICB7eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgIHRpdGxlPVwie3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIGNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmZvcm1EaXNhYmxlZCB8fCBjb25maWdGb3JtLmludmFsaWQgfHwgY2hlY2tJZkRldmljZVJlcXVpcmVkKClcbiAgICAgIFwiXG4gICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgW2FjdGlvbk5hbWVdPVwiY3VycmVudCA/ICdlZGl0V2lkZ2V0JyA6ICdjcmVhdGVXaWRnZXQnXCJcbiAgICAgIFthY3Rpb25EYXRhXT1cInsgd2lkZ2V0TmFtZTogc2VsZWN0ZWQgJiYgc2VsZWN0ZWQuaWQgfVwiXG4gICAgPlxuICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbmZpZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC93aWRnZXQtY29uZmlnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL3dpZGdldC1jb25maWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFzQyx5QkFBeUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXBHLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBRUwsc0JBQXNCLEVBQ3RCLHFCQUFxQixFQUV0QixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQWtCLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7Ozs7Ozs7QUFNL0QsTUFBTSxPQUFPLHFCQUFxQjtJQTRDaEMsWUFDVSxhQUE0QixFQUM1QixLQUFpQixFQUNqQixTQUEyQixFQUM1Qix1QkFBZ0Q7UUFIL0Msa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtR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ImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uLCBXaWRnZXQsIER5bmFtaWNDb21wb25lbnRDb21wb25lbnQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFzc2V0U2VsZWN0aW9uQ2hhbmdlRXZlbnQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2Fzc2V0cy1uYXZpZ2F0b3InO1xuaW1wb3J0IHsgY2xvbmUsIGNsb25lRGVlcCwgZXNjYXBlUmVnRXhwLCBnZXQsIG9taXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgaWlmLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBDb250ZXh0RGFzaGJvYXJkTWFuYWdlZE9iamVjdCxcbiAgV0lER0VUX0NPTlRFTlRfQ0xBU1NFUyxcbiAgV0lER0VUX0hFQURFUl9DTEFTU0VTLFxuICBDb250ZXh0V2lkZ2V0Q29uZmlnXG59IGZyb20gJy4vY29udGV4dC1kYXNoYm9hcmQubW9kZWwnO1xuaW1wb3J0IHsgV2lkZ2V0U2VydmljZSB9IGZyb20gJy4vd2lkZ2V0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGV4dERhc2hib2FyZFNlcnZpY2UgfSBmcm9tICcuL2NvbnRleHQtZGFzaGJvYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIEludmVudG9yeVNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS13aWRnZXQtY29uZmlnJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldC1jb25maWcuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldENvbmZpZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHNlbGVjdGVkRGV2aWNlOiBJTWFuYWdlZE9iamVjdDtcbiAgbW9kZTogJ2NvbmZpZycgfCAnc2VsZWN0JyB8ICdzdHlsZScgPSAnc2VsZWN0JztcbiAgc2VhcmNoUmVzdWx0OiBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbltdO1xuICBjb21wb25lbnRzOiBEeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbltdO1xuICBzZWxlY3RlZDogRHluYW1pY0NvbXBvbmVudERlZmluaXRpb247XG4gIHNlYXJjaENoYW5nZSQgPSBuZXcgU3ViamVjdCgpO1xuICBzZWFyY2hUZXJtID0gJyc7XG4gIGNvbnRleHQ6IGFueTtcbiAgY29tcG9uZW50TGFiZWw6IHN0cmluZztcbiAgbW86IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0O1xuICBzdHlsaW5nID0ge1xuICAgIGhlYWRlckNsYXNzOiAncGFuZWwtdGl0bGUtcmVndWxhcicsXG4gICAgY29udGVudENsYXNzOiAncGFuZWwtY29udGVudC1saWdodCdcbiAgfTtcbiAgZGVmYXVsdFN0eWxpbmcgPSB7XG4gICAgaGVhZGVyQ2xhc3M6ICdwYW5lbC10aXRsZS1yZWd1bGFyJyxcbiAgICBjb250ZW50Q2xhc3M6ICdwYW5lbC1jb250ZW50LWxpZ2h0J1xuICB9O1xuICBwb3NzaWJsZVN0eWxpbmcgPSB7IFdJREdFVF9IRUFERVJfQ0xBU1NFUywgV0lER0VUX0NPTlRFTlRfQ0xBU1NFUyB9O1xuICBjdXJyZW50OiBhbnk7XG4gIHdpZGdldENvbmZpZzogQ29udGV4dFdpZGdldENvbmZpZztcbiAgaXNVcGdyYWRlID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnY29uZmlnJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGR5bmFtaWNDb21wb25lbnQ6IER5bmFtaWNDb21wb25lbnRDb21wb25lbnQ7XG5cbiAgZ2V0IGlzRWRpdCgpIHtcbiAgICByZXR1cm4gISF0aGlzLmN1cnJlbnQ7XG4gIH1cblxuICBnZXQgaXNEZXZpY2VUeXBlRGFzaGJvYXJkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMubW8uYzh5X0Rhc2hib2FyZD8uZGV2aWNlVHlwZSAmJiAhIXRoaXMubW8uYzh5X0Rhc2hib2FyZD8uZGV2aWNlVHlwZVZhbHVlO1xuICB9XG5cbiAgcmVzdWx0OiBQcm9taXNlPFdpZGdldD4gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdGhpcy5fc2F2ZSA9IHJlc29sdmU7XG4gICAgdGhpcy5fY2FuY2VsID0gcmVqZWN0O1xuICB9KTtcblxuICBwcml2YXRlIHNlYXJjaFN1YjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIF9zYXZlOiAodmFsdWU6IFdpZGdldCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBfY2FuY2VsOiAocmVhc29uPzogYW55KSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgd2lkZ2V0U2VydmljZTogV2lkZ2V0U2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsOiBCc01vZGFsUmVmLFxuICAgIHByaXZhdGUgaW52ZW50b3J5OiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHB1YmxpYyBjb250ZXh0RGFzaGJvYXJkU2VydmljZTogQ29udGV4dERhc2hib2FyZFNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmNvbXBvbmVudHMgPSB0aGlzLndpZGdldFNlcnZpY2UuZ2V0V2lkZ2V0RGVmaW5pdGlvbnMoKTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGVkKSB7XG4gICAgICB0aGlzLmN1cnJlbnQgPSBjbG9uZSh0aGlzLnNlbGVjdGVkKTtcbiAgICAgIHRoaXMuc2VsZWN0KHRoaXMuc2VsZWN0ZWQsIHRoaXMuaXNFZGl0ID8gJ2NvbmZpZycgOiAnc2VsZWN0Jyk7XG4gICAgfVxuXG4gICAgdGhpcy5zZWFyY2hTdWIgPSB0aGlzLnNlYXJjaENoYW5nZSRcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiBpaWYoKCkgPT4gZXZlbnQud2hpY2ggIT09IDEzLCB0aW1lcigyMDApLCB0aW1lcigxMCkpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2VhcmNoKCk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuc2V0U3R5bGluZ3MoKTtcbiAgICBpZiAodGhpcy53aWRnZXRDb25maWc/LmRldmljZSkge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmludmVudG9yeS5kZXRhaWwodGhpcy53aWRnZXRDb25maWcuZGV2aWNlLmlkKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWREZXZpY2UgPSBkYXRhO1xuICAgIH1cbiAgfVxuXG4gIGNoZWNrSWZEZXZpY2VSZXF1aXJlZCgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgIXRoaXMud2lkZ2V0Q29uZmlnIHx8XG4gICAgICAoIXRoaXMud2lkZ2V0Q29uZmlnLnNldHRpbmdzLmRldmljZVRhcmdldE5vdFJlcXVpcmVkICYmXG4gICAgICAgICF0aGlzLndpZGdldENvbmZpZy5kZXZpY2UgJiZcbiAgICAgICAgIXRoaXMud2lkZ2V0Q29uZmlnLnNldHRpbmdzLm5vRGV2aWNlVGFyZ2V0KVxuICAgICk7XG4gIH1cblxuICBzZWxlY3Rpb25DaGFuZ2VkKHNlbGVjdGlvbj86IEFzc2V0U2VsZWN0aW9uQ2hhbmdlRXZlbnQpIHtcbiAgICB0aGlzLndpZGdldENvbmZpZy5kZXZpY2UgPSBzZWxlY3Rpb24/LmNoYW5nZT8uaXRlbTtcbiAgICB0aGlzLmR5bmFtaWNDb21wb25lbnQuZW1pdENvbmZpZ0NoYW5nZSh7XG4gICAgICBkZXZpY2U6IHRoaXMud2lkZ2V0Q29uZmlnLmRldmljZVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc2F2ZSgpIHtcbiAgICBjb25zdCBob29rU3VjY2VzcyA9IGF3YWl0IHRoaXMuZHluYW1pY0NvbXBvbmVudC5jYWxsTGlmZUN5Y2xlSG9va3MoKS50b1Byb21pc2UoKTtcbiAgICBpZiAoIWhvb2tTdWNjZXNzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgeyBfeCwgX3ksIF93aWR0aCwgX2hlaWdodCB9ID0gdGhpcy5zZWxlY3RlZC5kYXRhO1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy53aWRnZXRDb25maWcgJiZcbiAgICAgIHRoaXMud2lkZ2V0Q29uZmlnLmRldmljZSAmJlxuICAgICAgLy8gc2VyaWFsaXppbmcgd2lsbCBiZSBoYW5kbGVkIGJ5IHJlc29sdmVyXG4gICAgICAhdGhpcy5zZWxlY3RlZD8ucmVzb2x2ZT8uZGV2aWNlXG4gICAgKSB7XG4gICAgICBjb25zdCB7IGlkLCBuYW1lIH0gPSB0aGlzLndpZGdldENvbmZpZy5kZXZpY2U7XG4gICAgICB0aGlzLndpZGdldENvbmZpZy5kZXZpY2UgPSB7IGlkLCBuYW1lIH07XG4gICAgfVxuXG4gICAgY29uc3Qgd2lkZ2V0ID0ge1xuICAgICAgX3gsXG4gICAgICBfeSxcbiAgICAgIF93aWR0aCxcbiAgICAgIF9oZWlnaHQsXG4gICAgICBjb25maWc6IG9taXQodGhpcy53aWRnZXRDb25maWcsIFsnc2V0dGluZ3MnLCAnZGlzcGxheVNldHRpbmdzJ10pLFxuICAgICAgdGl0bGU6IHRoaXMuc2VsZWN0ZWQuZGF0YS50aXRsZSxcbiAgICAgIGNvbXBvbmVudElkOiB0aGlzLnNlbGVjdGVkLmlkLFxuICAgICAgaWQ6IHRoaXMuaXNFZGl0ID8gdGhpcy5jdXJyZW50LmRhdGEuaWQgOiBTdHJpbmcoTWF0aC5yYW5kb20oKSkuc3Vic3RyKDIpLFxuICAgICAgY2xhc3NlczogdGhpcy5nZXRTdHlsZSgpLFxuICAgICAgLi4uKCF0aGlzLmlzRWRpdCA/IHRoaXMud2lkZ2V0Q29uZmlnLnNldHRpbmdzLndpZGdldERlZmF1bHRzIDoge30pXG4gICAgfSBhcyBXaWRnZXQ7XG5cbiAgICB0aGlzLl9zYXZlKHdpZGdldCk7XG4gIH1cblxuICBzZWxlY3QoY21wLCBtb2RlOiAnc2VsZWN0JyB8ICdjb25maWcnID0gJ2NvbmZpZycpIHtcbiAgICBjbXAuZGF0YSA9IGNtcC5kYXRhIHx8IHt9O1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBjbXA7XG5cbiAgICB0aGlzLmlzVXBncmFkZSA9ICEhZ2V0KGNtcCwgJ2RhdGEuc2V0dGluZ3MudXBncmFkZScpO1xuICAgIHRoaXMuY29udGV4dERhc2hib2FyZFNlcnZpY2UuZm9ybURpc2FibGVkID0gdGhpcy5pc1VwZ3JhZGU7XG5cbiAgICBpZiAodGhpcy5pc0VkaXQpIHtcbiAgICAgIGNvbnN0IHsgX3gsIF95LCBfd2lkdGgsIF9oZWlnaHQsIGNsYXNzZXMsIHRpdGxlIH0gPSB0aGlzLmN1cnJlbnQuZGF0YTtcbiAgICAgIHRoaXMuc2VsZWN0ZWQuZGF0YSA9IHsgLi4udGhpcy5zZWxlY3RlZC5kYXRhLCBfeCwgX3ksIF93aWR0aCwgX2hlaWdodCwgY2xhc3NlcywgdGl0bGUgfTtcbiAgICB9XG5cbiAgICB0aGlzLndpZGdldENvbmZpZyA9IGNsb25lRGVlcCh0aGlzLmNvbXBvc2VXaWRnZXRDb25maWcodGhpcy5zZWxlY3RlZCwgdGhpcy5jb250ZXh0KSk7XG5cbiAgICB0aGlzLnNlbGVjdGVkLmRhdGEudGl0bGUgPSB0aGlzLnNlbGVjdGVkLmRhdGEudGl0bGUgfHwgY21wLmxhYmVsO1xuICAgIHRoaXMuY29tcG9uZW50TGFiZWwgPSBjbXAubGFiZWw7XG4gICAgdGhpcy5tb2RlID0gbW9kZTtcbiAgfVxuXG4gIHNlYXJjaCgpIHtcbiAgICBpZiAodGhpcy5zZWFyY2hUZXJtLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VhcmNoUmVzdWx0ID0gdGhpcy5jb21wb25lbnRzLmZpbHRlcihjbXAgPT5cbiAgICAgICAgbmV3IFJlZ0V4cChlc2NhcGVSZWdFeHAodGhpcy5zZWFyY2hUZXJtLnRyaW0oKSksICdpJykudGVzdChjbXAubGFiZWwpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc2V0U2VhcmNoKCk7XG4gICAgfVxuICB9XG5cbiAgcmVzZXRTZWFyY2goKSB7XG4gICAgdGhpcy5zZWFyY2hUZXJtID0gJyc7XG4gICAgdGhpcy5zZWFyY2hSZXN1bHQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBjaGFuZ2VNb2RlKG1vZGU6ICdjb25maWcnIHwgJ3NlbGVjdCcgfCAnc3R5bGUnKSB7XG4gICAgdGhpcy5tb2RlID0gbW9kZTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMuX2NhbmNlbCgpO1xuICAgIHRoaXMubW9kYWwuaGlkZSgpO1xuICB9XG5cbiAgZ2V0U3R5bGUoaXNQcmV2aWV3ID0gZmFsc2UpIHtcbiAgICBjb25zdCBjc3NDbGFzc2VzID0ge307XG4gICAgaWYgKGlzUHJldmlldyB8fCAhdGhpcy5pc0Rhc2hib2FyZERlZmF1bHRTdHlsZSh0aGlzLnN0eWxpbmcuaGVhZGVyQ2xhc3MpKSB7XG4gICAgICBjc3NDbGFzc2VzW3RoaXMuc3R5bGluZy5oZWFkZXJDbGFzc10gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChpc1ByZXZpZXcgfHwgIXRoaXMuaXNEYXNoYm9hcmREZWZhdWx0U3R5bGUodGhpcy5zdHlsaW5nLmNvbnRlbnRDbGFzcykpIHtcbiAgICAgIGNzc0NsYXNzZXNbdGhpcy5zdHlsaW5nLmNvbnRlbnRDbGFzc10gPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChpc1ByZXZpZXcpIHtcbiAgICAgIGNzc0NsYXNzZXNbYGRhc2hib2FyZC10aGVtZS0ke3RoaXMuZGVmYXVsdFN0eWxpbmcuY29udGVudENsYXNzLnNwbGl0KCctJykucG9wKCl9YF0gPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBjc3NDbGFzc2VzO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5mb3JtRGlzYWJsZWQgPSB0cnVlO1xuICAgIGlmICh0aGlzLnNlYXJjaFN1Yikge1xuICAgICAgdGhpcy5zZWFyY2hTdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBoYXNDb25maWcoKSB7XG4gICAgaWYgKHRoaXMud2lkZ2V0Q29uZmlnLnNldHRpbmdzPy51cGdyYWRlKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICB0aGlzLndpZGdldENvbmZpZy5zZXR0aW5ncz8uY29uZmlnQ29tcG9uZW50IHx8IHRoaXMud2lkZ2V0Q29uZmlnLnNldHRpbmdzPy5jb25maWdUZW1wbGF0ZVVybFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuICF0aGlzLmR5bmFtaWNDb21wb25lbnQ/LmVycm9yO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRTdHlsaW5ncygpOiB2b2lkIHtcbiAgICBjb25zdCBkYXNoYm9hcmRDbGFzc2VzOiBzdHJpbmdbXSA9XG4gICAgICAodGhpcy5tby5jOHlfRGFzaGJvYXJkPy5jbGFzc2VzICYmIE9iamVjdC5rZXlzKHRoaXMubW8uYzh5X0Rhc2hib2FyZC5jbGFzc2VzKSkgfHwgW107XG4gICAgY29uc3QgZGFzaGJvYXJkV2lkZ2V0Q2xhc3Nlczogc3RyaW5nW10gPVxuICAgICAgKHRoaXMubW8uYzh5X0Rhc2hib2FyZD8ud2lkZ2V0Q2xhc3NlcyAmJiBPYmplY3Qua2V5cyh0aGlzLm1vLmM4eV9EYXNoYm9hcmQud2lkZ2V0Q2xhc3NlcykpIHx8XG4gICAgICBbXTtcbiAgICBjb25zdCB3aWRnZXRDbGFzc2VzOiBzdHJpbmdbXSA9IHRoaXMuaXNFZGl0ID8gT2JqZWN0LmtleXModGhpcy5jdXJyZW50LmRhdGEuY2xhc3NlcykgOiBbXTtcblxuICAgIHRoaXMuc3R5bGluZyA9IHRoaXMuc2V0RGVmYXVsdFN0eWxlKFtcbiAgICAgIC4uLmRhc2hib2FyZENsYXNzZXMsXG4gICAgICAuLi5kYXNoYm9hcmRXaWRnZXRDbGFzc2VzLFxuICAgICAgLi4ud2lkZ2V0Q2xhc3Nlc1xuICAgIF0pO1xuICAgIHRoaXMuZGVmYXVsdFN0eWxpbmcgPSB0aGlzLnNldERlZmF1bHRTdHlsZShbLi4uZGFzaGJvYXJkQ2xhc3NlcywgLi4uZGFzaGJvYXJkV2lkZ2V0Q2xhc3Nlc10pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0Rhc2hib2FyZERlZmF1bHRTdHlsZShjbGFzc05hbWUpIHtcbiAgICBjb25zdCBhbGxDbGFzc2VzID0ge1xuICAgICAgLi4udGhpcy5tby5jOHlfRGFzaGJvYXJkLmNsYXNzZXMsXG4gICAgICAuLi50aGlzLm1vLmM4eV9EYXNoYm9hcmQud2lkZ2V0Q2xhc3Nlc1xuICAgIH07XG4gICAgY29uc3Qgc3R5bGVzID0gT2JqZWN0LmtleXMoYWxsQ2xhc3NlcykubWFwKGNzc0NsYXNzID0+ICh7IGNsYXNzOiBjc3NDbGFzcyB9KSk7XG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmdldFN0eWxpbmcoXG4gICAgICBzdHlsZXMsXG4gICAgICBjbGFzc05hbWUuc3BsaXQoJy0nKS5wb3AoKSxcbiAgICAgIHVuZGVmaW5lZFxuICAgICk7XG4gICAgcmV0dXJuICEhc3R5bGU7XG4gIH1cblxuICBwcml2YXRlIHNldERlZmF1bHRTdHlsZShzZXRDbGFzc2VzOiBzdHJpbmdbXSkge1xuICAgIGxldCBjb250ZW50Q2xhc3MgPSB0aGlzLnN0eWxpbmcuY29udGVudENsYXNzO1xuICAgIGxldCBoZWFkZXJDbGFzcyA9IHRoaXMuc3R5bGluZy5oZWFkZXJDbGFzcztcbiAgICBjb25zdCBzdHlsZXMgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlXG4gICAgICAuZ2V0RmlsdGVyZWREYXNoYm9hcmRTdHlsZXMoc2V0Q2xhc3NlcylcbiAgICAgIC5tYXAoYyA9PiBjLnNwbGl0KCctJykucG9wKCkpO1xuICAgIHN0eWxlcy5mb3JFYWNoKHN0eWxlTmFtZSA9PiB7XG4gICAgICBjb250ZW50Q2xhc3MgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmdldFN0eWxpbmcoXG4gICAgICAgIFdJREdFVF9DT05URU5UX0NMQVNTRVMsXG4gICAgICAgIHN0eWxlTmFtZSxcbiAgICAgICAgY29udGVudENsYXNzXG4gICAgICApO1xuICAgICAgaGVhZGVyQ2xhc3MgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmdldFN0eWxpbmcoXG4gICAgICAgIFdJREdFVF9IRUFERVJfQ0xBU1NFUyxcbiAgICAgICAgc3R5bGVOYW1lLFxuICAgICAgICBoZWFkZXJDbGFzc1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7IGhlYWRlckNsYXNzLCBjb250ZW50Q2xhc3MgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29tcG9zZVdpZGdldENvbmZpZyhzZWxlY3RlZENvbXBvbmVudCwgY29udGV4dCA9IHt9KSB7XG4gICAgY29uc3Qgc2V0dGluZyA9IHtcbiAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgIC4uLnNlbGVjdGVkQ29tcG9uZW50LmRhdGEuc2V0dGluZ3MsXG4gICAgICAgIC4uLmdldChzZWxlY3RlZENvbXBvbmVudC5kYXRhLnNldHRpbmdzLCAnbmcxLm9wdGlvbnMnKSxcbiAgICAgICAgLi4uZ2V0KHNlbGVjdGVkQ29tcG9uZW50LmRhdGEsICduZzEub3B0aW9ucycpLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICBkYXNoYm9hcmRNbzogdGhpcy5tby5jOHlfRGFzaGJvYXJkXG4gICAgICB9LFxuICAgICAgLi4uc2VsZWN0ZWRDb21wb25lbnQuZGF0YS5jb25maWdcbiAgICB9IGFzIENvbnRleHRXaWRnZXRDb25maWc7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlUYXJnZXRJZkRldmljZURhc2hib2FyZChzZXR0aW5nKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlUYXJnZXRJZkRldmljZURhc2hib2FyZCh3aWRnZXRDb25maWc6IENvbnRleHRXaWRnZXRDb25maWcpIHtcbiAgICBjb25zdCBpc0RldmljZVR5cGUgPSB0aGlzLmNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmlzRGV2aWNlVHlwZSh0aGlzLm1vKTtcblxuICAgIGlmIChpc0RldmljZVR5cGUpIHtcbiAgICAgIHdpZGdldENvbmZpZy5zZXR0aW5ncy5oaWRlVGFyZ2V0ID0gaXNEZXZpY2VUeXBlO1xuXG4gICAgICBjb25zdCBub0RldmljZVRhcmdldCA9IHdpZGdldENvbmZpZy5zZXR0aW5ncy5uZzFcbiAgICAgICAgPyB3aWRnZXRDb25maWcuc2V0dGluZ3MubmcxLm9wdGlvbnMubm9EZXZpY2VUYXJnZXRcbiAgICAgICAgOiB3aWRnZXRDb25maWcuc2V0dGluZ3Mubm9EZXZpY2VUYXJnZXQ7XG5cbiAgICAgIGlmICghbm9EZXZpY2VUYXJnZXQpIHtcbiAgICAgICAgd2lkZ2V0Q29uZmlnLmRldmljZSA9IHtcbiAgICAgICAgICBpZDogdGhpcy5jb250ZXh0LmlkLFxuICAgICAgICAgIG5hbWU6IHRoaXMuY29udGV4dC5uYW1lXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB3aWRnZXRDb25maWc7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgc2VwYXJhdG9yXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImgzXCJcbiAgICB0aXRsZT1cInt7ICdBZGQgd2lkZ2V0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgaWQ9XCJtb2RhbC10aXRsZVwiXG4gICAgKm5nSWY9XCIhY3VycmVudFwiXG4gICAgdHJhbnNsYXRlXG4gID5cbiAgICBBZGQgd2lkZ2V0XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJoM1wiXG4gICAgdGl0bGU9XCJ7eyAnRWRpdCB3aWRnZXQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICBpZD1cIm1vZGFsLXRpdGxlXCJcbiAgICAqbmdJZj1cImN1cnJlbnRcIlxuICAgIHRyYW5zbGF0ZVxuICA+XG4gICAgRWRpdCB3aWRnZXRcbiAgPC9kaXY+XG48L2Rpdj5cbjxmb3JtXG4gIG5hbWU9XCJmb3JtXCJcbiAgI2NvbmZpZ0Zvcm09XCJuZ0Zvcm1cIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjOHktbW9kYWwtdGFic1wiXG4gICAgaWQ9XCJtb2RhbC1ib2R5XCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJ0YWJDb250YWluZXJcIj5cbiAgICAgIDx1bCBjbGFzcz1cIm5hdiBuYXYtdGFicyBuYXYtdGFic2M4eSBwLWwtMjRcIj5cbiAgICAgICAgPGxpIFtjbGFzcy5hY3RpdmVdPVwibW9kZSA9PT0gJ3NlbGVjdCdcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImJ0blwiXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdTZWxlY3Qgd2lkZ2V0JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VNb2RlKCdzZWxlY3QnKTsgKGZhbHNlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgYzh5SWNvbj1cInRoLWxhcmdlXCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4gdHJhbnNsYXRlPlNlbGVjdCB3aWRnZXQ8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBbY2xhc3MuYWN0aXZlXT1cIm1vZGUgPT09ICdjb25maWcnXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG5cIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQ29uZmlndXJhdGlvbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VNb2RlKCdjb25maWcnKTsgKGZhbHNlKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgYzh5SWNvbj1cImNvZ1wiPjwvaT5cbiAgICAgICAgICAgIDxzcGFuIHRyYW5zbGF0ZT5Db25maWd1cmF0aW9uPC9zcGFuPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bGkgW2NsYXNzLmFjdGl2ZV09XCJtb2RlID09PSAnc3R5bGUnXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG5cIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQXBwZWFyYW5jZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiIXNlbGVjdGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjaGFuZ2VNb2RlKCdzdHlsZScpOyAoZmFsc2UpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjOHlJY29uPVwicGFpbnQtYnJ1c2hcIj48L2k+XG4gICAgICAgICAgICA8c3BhbiB0cmFuc2xhdGU+QXBwZWFyYW5jZTwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1pbm5lci1zY3JvbGwgbW9kYWwtaW5uZXItc2Nyb2xsLS1maXhlZFwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYmctbGV2ZWwtMCBwLWwtMjQgcC1yLTI0IHAtdC04IHAtYi04IHN0aWNreS1oZWFkZXItdG9wLTBcIlxuICAgICAgc3R5bGU9XCJ6LWluZGV4OiAyXCJcbiAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ3NlbGVjdCdcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIGlucHV0LWdyb3VwLXNlYXJjaFwiPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInU2VhcmNoJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ1NlYXJjaOKApicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGRhdGEtY3k9XCJ3aWRnZXQtY29uZmlnLS1TZWFyY2hcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIlxuICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAgICAgICAoa2V5ZG93bik9XCJzZWFyY2hDaGFuZ2UkLm5leHQoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1idG5cIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kb3RcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1NlYXJjaCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXNldFNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cInNlYXJjaFRlcm0ubGVuZ3RoID09PSAwID8gJ3NlYXJjaCcgOiAnY2xvc2UnXCI+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm1vZGFsLWJvZHkgYmctbGV2ZWwtMlwiXG4gICAgICAqbmdJZj1cIm1vZGUgPT09ICdzZWxlY3QnXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ncm91cCBjYXJkLXNlbGVjdCBtLWItMFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjb2wtbWQtMyBjb2wtc20tNCBjb2wteHMtNlwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyBjbXAuZGVzY3JpcHRpb24gfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBjbXAgb2Ygc2VhcmNoUmVzdWx0IHx8IGNvbXBvbmVudHNcIlxuICAgICAgICA+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG4tY2xlYW4gZC1jb2wgY2FyZCBwLThcIlxuICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJzZWxlY3RlZCA9PT0gY21wXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdChjbXApXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1jZW50ZXIgcC04IG0tYi04IGQtY29sIGZsZXgtY2VudGVyIGZsZXgtZ3JvdyBiZy1sZXZlbC0yXCJcbiAgICAgICAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY21wLnByZXZpZXdJbWFnZTsgZWxzZSBwcmV2aWV3SW1hZ2VcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaDFcIj48aSBjOHlJY29uPVwiZmlsZS1pbWFnZS1vXCI+PC9pPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGU+UHJldmlldyBub3QgYXZhaWxhYmxlPC9zbWFsbD5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcHJldmlld0ltYWdlPlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwid2lkZ2V0LXRodW1ibmFpbFwiXG4gICAgICAgICAgICAgICAgICBhbHRcbiAgICAgICAgICAgICAgICAgIFtzcmNdPVwiY21wLnByZXZpZXdJbWFnZVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJjYXJkLXRpdGxlIHRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgICAgPGM4eS1oaWdobGlnaHRcbiAgICAgICAgICAgICAgICB0ZXh0PVwie3sgY21wLmxhYmVsIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICBbcGF0dGVybl09XCJzZWFyY2hUZXJtXCJcbiAgICAgICAgICAgICAgPjwvYzh5LWhpZ2hsaWdodD5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYzh5LWVtcHR5LXN0YXRlIHRleHQtY2VudGVyXCJcbiAgICAgICAgICAqbmdJZj1cInNlYXJjaFJlc3VsdCAmJiBzZWFyY2hSZXN1bHQubGVuZ3RoID09PSAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaDFcIlxuICAgICAgICAgICAgYzh5SWNvbj1cInNlYXJjaFwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgIDxoMyB0cmFuc2xhdGU+Tm8gd2lkZ2V0cyBmb3VuZC48L2gzPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgIGNsYXNzPVwibS1yLThcIlxuICAgICAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgUmVwaHJhc2UgeW91ciBzZWFyY2ggdGVybS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgICAgICB0aXRsZT1cInt7ICdSZXNldCBzZWFyY2gnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZXNldFNlYXJjaCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ1Jlc2V0IHNlYXJjaCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBUaGUgZm9sbG93aW5nIGlzIGludGVudGlvbmFsIHNldCB0byBoaWRkZW4gdG8gYWxsb3cgdGhlIFZpZXdDaGlsZCByZWYgaW4gdGhlIGNvbnRyb2xsZXIgLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJkLWZsZXggZC1jb2wgZml0LWhcIlxuICAgICAgKm5nSWY9XCJzZWxlY3RlZFwiXG4gICAgICBbbmdDbGFzc109XCJ7IGhpZGRlbjogbW9kZSAhPT0gJ2NvbmZpZycgfVwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInAtdC0xNiBmbGV4LW5vLXNocmluayBzZXBhcmF0b3ItYm90dG9tIHAtYi0xNlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS00XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1sLTI0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxlZnQgdGV4dC1tZWRpdW0gaDRcIj5cbiAgICAgICAgICAgICAgICB7eyBzZWxlY3RlZC5sYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAge3sgc2VsZWN0ZWQuZGVzY3JpcHRpb24gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS04XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1yLTI0XCI+XG4gICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgIGZvcj1cIndpZGdldFRpdGxlXCJcbiAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIFRpdGxlXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwid2lkZ2V0VGl0bGVcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLicgfCB0cmFuc2xhdGUgfX0ge3sgY29tcG9uZW50TGFiZWwgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgbmFtZT1cInRpdGxlXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkLmRhdGEudGl0bGVcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJyb3cgZmxleC1ncm93XCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyAnZC1mbGV4Jzogd2lkZ2V0Q29uZmlnLm9wdGlvbnMgfHwgaGFzQ29uZmlnKCkgfVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImEtcy1zdHJldGNoXCJcbiAgICAgICAgICAqbmdJZj1cIiF3aWRnZXRDb25maWcuc2V0dGluZ3M/Lm5vRGV2aWNlVGFyZ2V0ICYmIG1vZGUgPT09ICdjb25maWcnXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnYmctbGV2ZWwtMSBjb2wtc20tNCBwLXItMCc6IGhhc0NvbmZpZygpLFxuICAgICAgICAgICAgJ2JnLWxldmVsLTAgY29sLXNtLTEyJzogIWhhc0NvbmZpZygpXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZpdC1oIGJnLWluaGVyaXQgcC1sLTE2XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3Atci0yNCc6ICFoYXNDb25maWcoKSB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1yZWxhdGl2ZSBiZy1pbmhlcml0XCI+XG4gICAgICAgICAgICAgIDxjOHktYXNzZXQtc2VsZWN0b3ItbWlsbGVyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWJsb2NrIGJnLWluaGVyaXQgcC1yZWxhdGl2ZVwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IGNhbGMoMTAwdmggLSA0MjJweClcIlxuICAgICAgICAgICAgICAgIChvblNlbGVjdGVkKT1cInNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKG9uQ2xlYXJTZWxlY3RlZCk9XCJzZWxlY3Rpb25DaGFuZ2VkKClcIlxuICAgICAgICAgICAgICAgIFtjb25maWddPVwie1xuICAgICAgICAgICAgICAgICAgdmlldzogJ21pbGxlcicsXG4gICAgICAgICAgICAgICAgICBncm91cHNTZWxlY3RhYmxlOiB0aGlzLndpZGdldENvbmZpZy5zZXR0aW5ncz8uZ3JvdXBzU2VsZWN0YWJsZSxcbiAgICAgICAgICAgICAgICAgIHNob3dDaGlsZERldmljZXM6IHRydWUsXG4gICAgICAgICAgICAgICAgICBjb2x1bW5IZWFkZXJzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgc2hvd1VuYXNzaWduZWREZXZpY2VzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgc2VhcmNoOiAhdGhpcy53aWRnZXRDb25maWcuc2V0dGluZ3MuY29udGV4dD8uYWRkaXRpb25QYXJlbnRzLFxuICAgICAgICAgICAgICAgICAgc2hvd0ZpbHRlcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHNpbmdsZUNvbHVtbjogISF0aGlzLmhhc0NvbmZpZygpXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgW2Fzc2V0XT1cIndpZGdldENvbmZpZy5zZXR0aW5ncz8uY29udGV4dFwiXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkRGV2aWNlXT1cInNlbGVjdGVkRGV2aWNlXCJcbiAgICAgICAgICAgICAgPjwvYzh5LWFzc2V0LXNlbGVjdG9yLW1pbGxlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICdjb2wtc20tOCc6ICF3aWRnZXRDb25maWcuc2V0dGluZ3M/Lm5vRGV2aWNlVGFyZ2V0LFxuICAgICAgICAgICAgJ2NvbC1zbS0xMic6IHdpZGdldENvbmZpZy5zZXR0aW5ncz8ubm9EZXZpY2VUYXJnZXQsXG4gICAgICAgICAgICAnc3Itb25seSc6ICFoYXNDb25maWcoKVxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPGM4eS1keW5hbWljLWNvbXBvbmVudFxuICAgICAgICAgICAgY2xhc3M9XCJkLWJsb2NrXCJcbiAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiB7eyBoYXNDb25maWcoKSA/ICdjYWxjKDEwMHZoIC0gNDIycHgpJyA6ICcwJyB9fVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpbm5lci1zY3JvbGwgcC1yLTI0JzogIXdpZGdldENvbmZpZy5zZXR0aW5ncz8ubm9EZXZpY2VUYXJnZXQgfVwiXG4gICAgICAgICAgICBbY29tcG9uZW50SWRdPVwic2VsZWN0ZWQuaWRcIlxuICAgICAgICAgICAgbW9kZT1cImNvbmZpZ1wiXG4gICAgICAgICAgICBbY29uZmlnXT1cIndpZGdldENvbmZpZ1wiXG4gICAgICAgICAgICBbbm90Rm91bmRFcnJvcl09XCJmYWxzZVwiXG4gICAgICAgICAgICAjY29uZmlnXG4gICAgICAgICAgPjwvYzh5LWR5bmFtaWMtY29tcG9uZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJtb2RhbC1ib2R5IHAtdC0wXCJcbiAgICAgIHN0eWxlPVwiaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMzEwcHgpXCJcbiAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ3N0eWxlJ1wiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTZcIj5cbiAgICAgICAgICA8Yzh5LWFwcGVhcmFuY2Utc2V0dGluZ3NcbiAgICAgICAgICAgIFsodGhlbWVDbGFzcyldPVwic3R5bGluZy5jb250ZW50Q2xhc3NcIlxuICAgICAgICAgICAgWyhoZWFkZXJDbGFzcyldPVwic3R5bGluZy5oZWFkZXJDbGFzc1wiXG4gICAgICAgICAgICBbcG9zc2libGVTdHlsaW5nVGhlbWVdPVwicG9zc2libGVTdHlsaW5nLldJREdFVF9DT05URU5UX0NMQVNTRVNcIlxuICAgICAgICAgICAgW3Bvc3NpYmxlU3R5bGluZ0hlYWRlcl09XCJwb3NzaWJsZVN0eWxpbmcuV0lER0VUX0hFQURFUl9DTEFTU0VTXCJcbiAgICAgICAgICAgIFtkZWZhdWx0VGhlbWVDbGFzc109XCJkZWZhdWx0U3R5bGluZy5jb250ZW50Q2xhc3NcIlxuICAgICAgICAgICAgW2RlZmF1bHRIZWFkZXJDbGFzc109XCJkZWZhdWx0U3R5bGluZy5oZWFkZXJDbGFzc1wiXG4gICAgICAgICAgPjwvYzh5LWFwcGVhcmFuY2Utc2V0dGluZ3M+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTYgc3RpY2t5LWhlYWRlci10b3AtMFwiPlxuICAgICAgICAgIDxjOHktd2lkZ2V0LXByZXZpZXdcbiAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMzgycHgpXCJcbiAgICAgICAgICAgIFtwcmV2aWV3Q2xhc3Nlc109XCJnZXRTdHlsZSh0cnVlKVwiXG4gICAgICAgICAgPjwvYzh5LXdpZGdldC1wcmV2aWV3PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgdGl0bGU9XCJ7eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJjbG9zZSgpXCJcbiAgICA+XG4gICAgICB7eyAnQ2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgIHRpdGxlPVwie3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgIGNvbnRleHREYXNoYm9hcmRTZXJ2aWNlLmZvcm1EaXNhYmxlZCB8fCBjb25maWdGb3JtLmludmFsaWQgfHwgY2hlY2tJZkRldmljZVJlcXVpcmVkKClcbiAgICAgIFwiXG4gICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgW2FjdGlvbk5hbWVdPVwiY3VycmVudCA/ICdlZGl0V2lkZ2V0JyA6ICdjcmVhdGVXaWRnZXQnXCJcbiAgICAgIFthY3Rpb25EYXRhXT1cInsgd2lkZ2V0TmFtZTogc2VsZWN0ZWQgJiYgc2VsZWN0ZWQuaWQgfVwiXG4gICAgPlxuICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9mb3JtPlxuIl19
|
|
@@ -75,7 +75,7 @@ export class CookieBannerService {
|
|
|
75
75
|
return JSON.parse(localStorage.getItem(this.STORAGE_KEY));
|
|
76
76
|
}
|
|
77
77
|
/**
|
|
78
|
-
* Verifies that cookie preferences configuration is defined.
|
|
78
|
+
* Verifies that cookie preferences configuration is defined in the application options.
|
|
79
79
|
* @returns {boolean} Returns if the cookie preferences configuration is defined.
|
|
80
80
|
*/
|
|
81
81
|
isConfigCookiePreferencesDefined() {
|
|
@@ -137,4 +137,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
137
137
|
providedIn: 'root'
|
|
138
138
|
}]
|
|
139
139
|
}], ctorParameters: function () { return [{ type: i1.OptionsService }]; } });
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLWJhbm5lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vY29yZS9ib290c3RyYXAvY29va2llLWJhbm5lci9jb29raWUtYmFubmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQUc3Qzs7R0FFRztBQUlILE1BQU0sT0FBTyxtQkFBbUI7SUFrQjlCLFlBQW9CLE9BQXVCO1FBQXZCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBakJsQyxnQkFBVyxHQUFXLG9CQUFvQixDQUFDO1FBQzNDLGtCQUFhLEdBQUcsY0FBYyxDQUFDO1FBQy9CLDBCQUFxQixHQUFHLHFCQUFxQixDQUFDO1FBQzlDLGVBQVUsR0FBRyxTQUFTLENBQUM7UUFDdkIsOEJBQXlCLEdBQUcsbUJBQW1CLENBQUM7UUFDekQsMEJBQXFCLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFeEQsdUJBQWtCLEdBQUc7WUFDbkIsUUFBUSxFQUFFLE9BQU8sQ0FDZiw0SkFBNEosQ0FDN0o7WUFDRCxVQUFVLEVBQUUsT0FBTyxDQUNqQix3U0FBd1MsQ0FDelM7WUFDRCxTQUFTLEVBQUUsT0FBTyxDQUFDLHlEQUF5RCxDQUFDO1NBQzlFLENBQUM7SUFFNEMsQ0FBQztJQUUvQzs7O09BR0c7SUFDSCwwQkFBMEI7UUFDeEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsdUJBQXVCO1FBQ3JCLElBQUksY0FBb0Ms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LENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsaURBQWlELENBQy9DLHFCQUErQjtRQUUvQixPQUFPLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQTZCLEVBQUUsTUFBYyxFQUFFLEVBQUU7WUFDcEYsTUFBTSxHQUFHLEdBQVcsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNoQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUMvQixPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDO0lBRU8sYUFBYTtRQUNuQixnSUFBZ0k7UUFDaEksT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDOztnSEF6SVUsbUJBQW1CO29IQUFuQixtQkFBbUIsY0FGbEIsTUFBTTsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24vb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICcuLi8uLi9pMThuL2dldHRleHQnO1xuaW1wb3J0IHsgQ29va2llLCBDb29raWVCYW5uZXJTZXR0aW5ncywgQ29va2llUHJlZmVyZW5jZXMgfSBmcm9tICcuL2Nvb2tpZS1iYW5uZXIubW9kZWwnO1xuXG4vKipcbiAqIFRoaXMgc2VydmljZSBpcyBoYW5kbGluZyB0aGUgY29va2llIGJhbm5lciBhbmQgY29va2llIHByZWZlcmVuY2VzIHJlbGF0ZWQgbG9naWMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvb2tpZUJhbm5lclNlcnZpY2Uge1xuICByZWFkb25seSBTVE9SQUdFX0tFWTogc3RyaW5nID0gJ2FjY2VwdENvb2tpZU5vdGljZSc7XG4gIHJlYWRvbmx5IENPT0tJRV9CQU5ORVIgPSAnY29va2llQmFubmVyJztcbiAgcmVhZG9ubHkgUFJFVklFV19DT09LSUVfQkFOTkVSID0gJ3ByZXZpZXdDb29raWVCYW5uZXInO1xuICByZWFkb25seSBJU19QUkVWSUVXID0gJ3ByZXZpZXcnO1xuICByZWFkb25seSBDT09LSUVfUFJFRkVSRU5DRVNfQ09ORklHID0gJ2Nvb2tpZVByZWZlcmVuY2VzJztcbiAgaXNDb29raWVCYW5uZXJTaG93ZWQkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcblxuICBjb29raWVEZXNjcmlwdGlvbnMgPSB7XG4gICAgcmVxdWlyZWQ6IGdldHRleHQoXG4gICAgICBcIlRoZXNlIGNvb2tpZXMgYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSBjb3JlIHNpdGUgZnVuY3Rpb25hbGl0eS4gVGhleSBwZXJmb3JtIGEgdGFzayBvciBvcGVyYXRpb24gd2l0aG91dCB3aGljaCBhIHNpdGUncyBmdW5jdGlvbmFsaXR5IHdvdWxkIG5vdCBiZSBwb3NzaWJsZS5cIlxuICAgICksXG4gICAgZnVuY3Rpb25hbDogZ2V0dGV4dChcbiAgICAgICdUaGVzZSBjb29raWVzIGFyZSB1c2VkIHRvIHRyYWNrIHNpdGUgdXNhZ2UgYW5kIHRvIHByb2Nlc3MgbXkgcGVyc29uYWwgZGF0YSB0byBtZWFzdXJlIGFuZCBpbXByb3ZlIHVzYWJpbGl0eSBhbmQgcGVyZm9ybWFuY2UuIFdlIHdpbGwgbmVpdGhlciBmb3J3YXJkIHRoaXMgZGF0YSB0byBhbnkgdGhpcmQgcGFydHkgbm9yIHVzZSB0aGlzIGRhdGEgZm9yIGRpcmVjdCBtYXJrZXRpbmcgcHVycG9zZXMuIEkgcmVjb2duaXplIHRoYXQgSSBjYW4gb3B0IGluIGFuZCBvdXQgb2YgdGhlc2UgY29va2llcyBhdCBhbnkgdGltZS4nXG4gICAgKSxcbiAgICBtYXJrZXRpbmc6IGdldHRleHQoJ1RoZXNlIGNvb2tpZXMgYXJlIHVzZWQgdG8gdGFyZ2V0IGFkdmVydGlzaW5nIHRvIGEgdXNlci4nKVxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3B0aW9uczogT3B0aW9uc1NlcnZpY2UpIHt9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgQ29va2llIHByZWZlcmVuY2VzIGNvbmZpZ3VyYXRpb24uXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IFJldHVybiBhbiBvYmplY3Qgd2l0aCBjb29raWUgcHJlZmVyZW5jZXMgY29uZmlndXJhdGlvbiBkZWZpbmVkIGluIGFwcGxpY2F0aW9uIG9wdGlvbnMuXG4gICAqL1xuICBnZXRDb29raWVQcmVmZXJlbmNlc0NvbmZpZygpOiBDb29raWVQcmVmZXJlbmNlcyB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5nZXQodGhpcy5DT09LSUVfUFJFRkVSRU5DRVNfQ09ORklHKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIENvb2tpZSBiYW5uZXIgY29uZmlndXJhdGlvbi5cbiAgICogQHJldHVybnMge29iamVjdH0gUmV0dXJuIGFuIG9iamVjdCB3aXRoIGNvb2tpZSBiYW5uZXIgY29uZmlndXJhdGlvbiBkZWZpbmVkIGluIGFwcGxpY2F0aW9uIG9wdGlvbnMuXG4gICAqL1xuICBnZXRDb29raWVCYW5uZXJTZXR0aW5ncygpOiBDb29raWVCYW5uZXJTZXR0aW5ncyB7XG4gICAgbGV0IGNvb2tpZVNldHRpbmdzOiBDb29raWVCYW5uZXJTZXR0aW5ncztcbiAgICBpZiAodGhpcy5pc1ByZXZpZXdNb2RlKCkpIHtcbiAgICAgIGNvb2tpZVNldHRpbmdzID0gdGhpcy5vcHRpb25zLmdldCh0aGlzLlBSRVZJRVdfQ09PS0lFX0JBTk5FUik7XG4gICAgICBpZiAoY29va2llU2V0dGluZ3MpIHtcbiAgICAgICAgcmV0dXJuIGNvb2tpZVNldHRpbmdzO1xuICAgICAgfVxuICAgIH1cbiAgICBjb29raWVTZXR0aW5ncyA9IHRoaXMub3B0aW9ucy5nZXQodGhpcy5DT09LSUVfQkFOTkVSKSB8fCB7fTtcbiAgICByZXR1cm4gY29va2llU2V0dGluZ3M7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIGNvb2tpZSBwcmVmZXJlbmNlcyB0byBib29sZWFuLiBTZXRzIHRoZSBjb29raWUgcHJlZmVyZW5jZXMgY29uZmlndXJhdGlvbiBpbiBsb2NhbCBzdG9yYWdlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29va2llUHJlZmVyZW5jZXMgT2JqZWN0IHdpdGggY29va2llIHByZWZlcmVuY2VzIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHNldENvb2tpZXMoY29va2llUHJlZmVyZW5jZXM6IENvb2tpZVByZWZlcmVuY2VzKSB7XG4gICAgY29uc3QgY29va2llc1RvU2V0ID0geyAuLi5jb29raWVQcmVmZXJlbmNlcyB9O1xuICAgIE9iamVjdC5lbnRyaWVzKGNvb2tpZXNUb1NldCkuZm9yRWFjaCgoW2Nvb2tpZU5hbWUsIGNvb2tpZVZhbHVlXSkgPT4ge1xuICAgICAgY29va2llc1RvU2V0W2Nvb2tpZU5hbWVdID0gdHlwZW9mIGNvb2tpZVZhbHVlID09PSAnc3RyaW5nJyA/IHRydWUgOiBjb29raWVWYWx1ZTtcbiAgICB9KTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLlNUT1JBR0VfS0VZLCBKU09OLnN0cmluZ2lmeShjb29raWVzVG9TZXQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyB0aGF0IGNvb2tpZSBiYW5uZXIgc2hvdWxkIGJlIHNob3duLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBpZiB0aGUgY29va2llIGJhbm5lciBzaG91bGQgYmUgc2hvd24uXG4gICAqL1xuICBzaG91bGRTaG93Q29va2llQmFubmVyKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNldHRpbmdzID0gdGhpcy5nZXRDb29raWVCYW5uZXJTZXR0aW5ncygpO1xuICAgIGNvbnN0IHNob3VsZFNob3dEZWZhdWx0ID0gISFzZXR0aW5ncy5jb29raWVCYW5uZXJUZXh0ICYmICF0aGlzLmdldFVzZXJDb29raWVQcmVmZXJlbmNlcygpO1xuICAgIGlmICh0aGlzLmlzUHJldmlld01vZGUoKSkge1xuICAgICAgcmV0dXJuICEoc2V0dGluZ3MgJiYgc2V0dGluZ3MuY29va2llQmFubmVyRGlzYWJsZWQpO1xuICAgIH1cbiAgICByZXR1cm4gc2hvdWxkU2hvd0RlZmF1bHQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY29va2llIHByZWZlcmVuY2VzIGNvbmZpZ3VyYXRpb24gZnJvbSBsb2NhbCBzdG9yYWdlLlxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSBPYmplY3Qgd2l0aCBjb29raWUgcHJlZmVyZW5jZXMgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIGdldFVzZXJDb29raWVQcmVmZXJlbmNlcygpOiBDb29raWVQcmVmZXJlbmNlcyB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5TVE9SQUdFX0tFWSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIHRoYXQgY29va2llIHByZWZlcmVuY2VzIGNvbmZpZ3VyYXRpb24gaXMgZGVmaW5lZC5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgaWYgdGhlIGNvb2tpZSBwcmVmZXJlbmNlcyBjb25maWd1cmF0aW9uIGlzIGRlZmluZWQuXG4gICAqL1xuICBpc0NvbmZpZ0Nvb2tpZVByZWZlcmVuY2VzRGVmaW5lZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmdldENvb2tpZVByZWZlcmVuY2VzQ29uZmlnKCk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgdGhhdCBmdW5jdGlvbmFsIGNvb2tpZXMgYXJlIGVuYWJsZWQuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIHdoZW4gZnVuY3Rpb25hbCBjb29raWVzIGFyZSBlbmFibGVkLlxuICAgKi9cbiAgaXNGdW5jdGlvbmFsQ29va2llRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCB7IGZ1bmN0aW9uYWwgfTogQ29va2llUHJlZmVyZW5jZXMgPSB0aGlzLmdldFVzZXJDb29raWVQcmVmZXJlbmNlcygpIHx8IHt9O1xuICAgIHJldHVybiBmdW5jdGlvbmFsID09PSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIG9mIGNvb2tpZXMuXG4gICAqIEBwYXJhbSB7J3JlcXVpcmVkJyB8ICdmdW5jdGlvbmFsJyB8ICdtYXJrZXRpbmcnfSBjb29raWVUeXBlIFRha2VzIG9uZSBvZiB0aGUgZm9sbG93aW5nIG9wdGlvbnM6ICdyZXF1aXJlZCcsICdmdW5jdGlvbmFsJywgJ21hcmtldGluZycuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBkZWZhdWx0IGNvb2tpZSBkZXNjcmlwdGlvbiwgaWYgbm90IGV4cGxpY2l0bHkgZGVmaW5lZCBpbiBhcHBsaWNhdGlvbiBvcHRpb25zLlxuICAgKi9cbiAgZ2V0Q29va2llRGVzY3JpcHRpb24oY29va2llVHlwZTogJ3JlcXVpcmVkJyB8ICdmdW5jdGlvbmFsJyB8ICdtYXJrZXRpbmcnKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb29raWVCYW5uZXJDb25maWdTZXR0aW5ncyA9IHRoaXMuZ2V0Q29va2llUHJlZmVyZW5jZXNDb25maWcoKTtcbiAgICBjb25zdCBjb29raWVCYW5uZXJTZXR0aW5nVmFsdWUgPSBjb29raWVCYW5uZXJDb25maWdTZXR0aW5nc1tjb29raWVUeXBlXTtcbiAgICByZXR1cm4gdHlwZW9mIGNvb2tpZUJhbm5lclNldHRpbmdWYWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgID8gY29va2llQmFubmVyU2V0dGluZ1ZhbHVlXG4gICAgICA6IHRoaXMuY29va2llRGVzY3JpcHRpb25zW2Nvb2tpZVR5cGVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgY29va2llIHByZWZlcmVuY2VzIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHRvIGFuIGFycmF5IG9mIGNvb2tpZSBwcmVmZXJlbmNlcyBvYmplY3RzLiBFYWNoIG9iamVjdCBpbiByZXR1cm5lZCBhcnJheSBjb250YWlucyBjb29raWUgJ25hbWUnLCAndmFsdWUnIGFuZCAnaXNSZWFkb25seScgcHJvcGVydHkuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb29raWVQcmVmZXJlbmNlcy5cbiAgICogQHJldHVybnMge0FycmF5fSBBcnJheSBzaG93cyBpZiB0aGUgY29va2llIGlzIFJlYWRvbmx5LlxuICAgKi9cbiAgdHJhbnNmb3JtQ29va2llUHJlZmVyZW5jZXNUb0xpc3QoY29va2llUHJlZmVyZW5jZXM6IENvb2tpZVByZWZlcmVuY2VzKTogQ29va2llW10ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhjb29raWVQcmVmZXJlbmNlcykubWFwKChbbmFtZSwgdmFsdWVdKSA9PiB7XG4gICAgICBjb25zdCBpc1JlYWRvbmx5ID0gbmFtZSA9PT0gJ3JlcXVpcmVkJztcbiAgICAgIHJldHVybiB7IG5hbWUsIHZhbHVlLCBpc1JlYWRvbmx5IH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBhbiBhcnJheSBvZiBjb29raWUgcHJlZmVyZW5jZXMgb2JqZWN0cyB0byBjb29raWUgcHJlZmVyZW5jZXMgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAqIEBwYXJhbSB7QXJyYXl9IGNvb2tpZVByZWZlcmVuY2VzTGlzdCBBcnJheSBvZiBjb29raWUgcHJlZmVyZW5jZXMuXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IEFuIG9iamVjdCB3aXRoIGNvb2tpZSBwcmVmZXJlbmNlcyBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgdHJhbnNmb3JtQ29va2llUHJlZmVyZW5jZXNMaXN0VG9Db29raWVQcmVmZXJlbmNlcyhcbiAgICBjb29raWVQcmVmZXJlbmNlc0xpc3Q6IENvb2tpZVtdXG4gICk6IENvb2tpZVByZWZlcmVuY2VzIHtcbiAgICByZXR1cm4gY29va2llUHJlZmVyZW5jZXNMaXN0LnJlZHVjZSgoY29va2llUHJlZjogQ29va2llUHJlZmVyZW5jZXMsIGNvb2tpZTogQ29va2llKSA9PiB7XG4gICAgICBjb25zdCBrZXk6IHN0cmluZyA9IGNvb2tpZS5uYW1lO1xuICAgICAgY29va2llUHJlZltrZXldID0gY29va2llLnZhbHVlO1xuICAgICAgcmV0dXJuIGNvb2tpZVByZWY7XG4gICAgfSwge30pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ByZXZpZXdNb2RlKCk6IGJvb2xlYW4ge1xuICAgIC8vIHBhcmFtcyBmcm9tIHVybCBhcmUgYXV0b21hdGljYWxseSByZXNvbHZlZCBkdXJpbmcgYm9vdHN0cmFwIGFzIHN0cmluZyBvcHRpb25zLCBzZWU6IHBhY2thZ2VzL2NsaS9zcmMvYXBwLWJvb3RzdHJhcC9vcHRpb25zLnRzXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5nZXQodGhpcy5JU19QUkVWSUVXLCBmYWxzZSwgdHJ1ZSk7XG4gIH1cbn1cbiJdfQ==
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLWJhbm5lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vY29yZS9ib290c3RyYXAvY29va2llLWJhbm5lci9jb29raWUtYmFubmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7OztBQUc3Qzs7R0FFRztBQUlILE1BQU0sT0FBTyxtQkFBbUI7SUFrQjlCLFlBQW9CLE9BQXVCO1FBQXZCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBakJsQyxnQkFBVyxHQUFXLG9CQUFvQixDQUFDO1FBQzNDLGtCQUFhLEdBQUcsY0FBYyxDQUFDO1FBQy9CLDBCQUFxQixHQUFHLHFCQUFxQixDQUFDO1FBQzlDLGVBQVUsR0FBRyxTQUFTLENBQUM7UUFDdkIsOEJBQXlCLEdBQUcsbUJBQW1CLENBQUM7UUFDekQsMEJBQXFCLEdBQXFCLElBQUksT0FBTyxFQUFFLENBQUM7UUFFeEQsdUJBQWtCLEdBQUc7WUFDbkIsUUFBUSxFQUFFLE9BQU8sQ0FDZiw0SkFBNEosQ0FDN0o7WUFDRCxVQUFVLEVBQUUsT0FBTyxDQUNqQix3U0FBd1MsQ0FDelM7WUFDRCxTQUFTLEVBQUUsT0FBTyxDQUFDLHlEQUF5RCxDQUFDO1NBQzlFLENBQUM7SUFFNEMsQ0FBQztJQUUvQzs7O09BR0c7SUFDSCwwQkFBMEI7UUFDeEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsdUJBQXVCO1FBQ3JCLElBQUksY0FBb0Ms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LENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsaURBQWlELENBQy9DLHFCQUErQjtRQUUvQixPQUFPLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQTZCLEVBQUUsTUFBYyxFQUFFLEVBQUU7WUFDcEYsTUFBTSxHQUFHLEdBQVcsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNoQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUMvQixPQUFPLFVBQVUsQ0FBQztRQUNwQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDO0lBRU8sYUFBYTtRQUNuQixnSUFBZ0k7UUFDaEksT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDOztnSEF6SVUsbUJBQW1CO29IQUFuQixtQkFBbUIsY0FGbEIsTUFBTTsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24vb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICcuLi8uLi9pMThuL2dldHRleHQnO1xuaW1wb3J0IHsgQ29va2llLCBDb29raWVCYW5uZXJTZXR0aW5ncywgQ29va2llUHJlZmVyZW5jZXMgfSBmcm9tICcuL2Nvb2tpZS1iYW5uZXIubW9kZWwnO1xuXG4vKipcbiAqIFRoaXMgc2VydmljZSBpcyBoYW5kbGluZyB0aGUgY29va2llIGJhbm5lciBhbmQgY29va2llIHByZWZlcmVuY2VzIHJlbGF0ZWQgbG9naWMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvb2tpZUJhbm5lclNlcnZpY2Uge1xuICByZWFkb25seSBTVE9SQUdFX0tFWTogc3RyaW5nID0gJ2FjY2VwdENvb2tpZU5vdGljZSc7XG4gIHJlYWRvbmx5IENPT0tJRV9CQU5ORVIgPSAnY29va2llQmFubmVyJztcbiAgcmVhZG9ubHkgUFJFVklFV19DT09LSUVfQkFOTkVSID0gJ3ByZXZpZXdDb29raWVCYW5uZXInO1xuICByZWFkb25seSBJU19QUkVWSUVXID0gJ3ByZXZpZXcnO1xuICByZWFkb25seSBDT09LSUVfUFJFRkVSRU5DRVNfQ09ORklHID0gJ2Nvb2tpZVByZWZlcmVuY2VzJztcbiAgaXNDb29raWVCYW5uZXJTaG93ZWQkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3QoKTtcblxuICBjb29raWVEZXNjcmlwdGlvbnMgPSB7XG4gICAgcmVxdWlyZWQ6IGdldHRleHQoXG4gICAgICBcIlRoZXNlIGNvb2tpZXMgYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSBjb3JlIHNpdGUgZnVuY3Rpb25hbGl0eS4gVGhleSBwZXJmb3JtIGEgdGFzayBvciBvcGVyYXRpb24gd2l0aG91dCB3aGljaCBhIHNpdGUncyBmdW5jdGlvbmFsaXR5IHdvdWxkIG5vdCBiZSBwb3NzaWJsZS5cIlxuICAgICksXG4gICAgZnVuY3Rpb25hbDogZ2V0dGV4dChcbiAgICAgICdUaGVzZSBjb29raWVzIGFyZSB1c2VkIHRvIHRyYWNrIHNpdGUgdXNhZ2UgYW5kIHRvIHByb2Nlc3MgbXkgcGVyc29uYWwgZGF0YSB0byBtZWFzdXJlIGFuZCBpbXByb3ZlIHVzYWJpbGl0eSBhbmQgcGVyZm9ybWFuY2UuIFdlIHdpbGwgbmVpdGhlciBmb3J3YXJkIHRoaXMgZGF0YSB0byBhbnkgdGhpcmQgcGFydHkgbm9yIHVzZSB0aGlzIGRhdGEgZm9yIGRpcmVjdCBtYXJrZXRpbmcgcHVycG9zZXMuIEkgcmVjb2duaXplIHRoYXQgSSBjYW4gb3B0IGluIGFuZCBvdXQgb2YgdGhlc2UgY29va2llcyBhdCBhbnkgdGltZS4nXG4gICAgKSxcbiAgICBtYXJrZXRpbmc6IGdldHRleHQoJ1RoZXNlIGNvb2tpZXMgYXJlIHVzZWQgdG8gdGFyZ2V0IGFkdmVydGlzaW5nIHRvIGEgdXNlci4nKVxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgb3B0aW9uczogT3B0aW9uc1NlcnZpY2UpIHt9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgQ29va2llIHByZWZlcmVuY2VzIGNvbmZpZ3VyYXRpb24uXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IFJldHVybiBhbiBvYmplY3Qgd2l0aCBjb29raWUgcHJlZmVyZW5jZXMgY29uZmlndXJhdGlvbiBkZWZpbmVkIGluIGFwcGxpY2F0aW9uIG9wdGlvbnMuXG4gICAqL1xuICBnZXRDb29raWVQcmVmZXJlbmNlc0NvbmZpZygpOiBDb29raWVQcmVmZXJlbmNlcyB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5nZXQodGhpcy5DT09LSUVfUFJFRkVSRU5DRVNfQ09ORklHKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIENvb2tpZSBiYW5uZXIgY29uZmlndXJhdGlvbi5cbiAgICogQHJldHVybnMge29iamVjdH0gUmV0dXJuIGFuIG9iamVjdCB3aXRoIGNvb2tpZSBiYW5uZXIgY29uZmlndXJhdGlvbiBkZWZpbmVkIGluIGFwcGxpY2F0aW9uIG9wdGlvbnMuXG4gICAqL1xuICBnZXRDb29raWVCYW5uZXJTZXR0aW5ncygpOiBDb29raWVCYW5uZXJTZXR0aW5ncyB7XG4gICAgbGV0IGNvb2tpZVNldHRpbmdzOiBDb29raWVCYW5uZXJTZXR0aW5ncztcbiAgICBpZiAodGhpcy5pc1ByZXZpZXdNb2RlKCkpIHtcbiAgICAgIGNvb2tpZVNldHRpbmdzID0gdGhpcy5vcHRpb25zLmdldCh0aGlzLlBSRVZJRVdfQ09PS0lFX0JBTk5FUik7XG4gICAgICBpZiAoY29va2llU2V0dGluZ3MpIHtcbiAgICAgICAgcmV0dXJuIGNvb2tpZVNldHRpbmdzO1xuICAgICAgfVxuICAgIH1cbiAgICBjb29raWVTZXR0aW5ncyA9IHRoaXMub3B0aW9ucy5nZXQodGhpcy5DT09LSUVfQkFOTkVSKSB8fCB7fTtcbiAgICByZXR1cm4gY29va2llU2V0dGluZ3M7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIGNvb2tpZSBwcmVmZXJlbmNlcyB0byBib29sZWFuLiBTZXRzIHRoZSBjb29raWUgcHJlZmVyZW5jZXMgY29uZmlndXJhdGlvbiBpbiBsb2NhbCBzdG9yYWdlLlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29va2llUHJlZmVyZW5jZXMgT2JqZWN0IHdpdGggY29va2llIHByZWZlcmVuY2VzIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHNldENvb2tpZXMoY29va2llUHJlZmVyZW5jZXM6IENvb2tpZVByZWZlcmVuY2VzKSB7XG4gICAgY29uc3QgY29va2llc1RvU2V0ID0geyAuLi5jb29raWVQcmVmZXJlbmNlcyB9O1xuICAgIE9iamVjdC5lbnRyaWVzKGNvb2tpZXNUb1NldCkuZm9yRWFjaCgoW2Nvb2tpZU5hbWUsIGNvb2tpZVZhbHVlXSkgPT4ge1xuICAgICAgY29va2llc1RvU2V0W2Nvb2tpZU5hbWVdID0gdHlwZW9mIGNvb2tpZVZhbHVlID09PSAnc3RyaW5nJyA/IHRydWUgOiBjb29raWVWYWx1ZTtcbiAgICB9KTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLlNUT1JBR0VfS0VZLCBKU09OLnN0cmluZ2lmeShjb29raWVzVG9TZXQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyB0aGF0IGNvb2tpZSBiYW5uZXIgc2hvdWxkIGJlIHNob3duLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBpZiB0aGUgY29va2llIGJhbm5lciBzaG91bGQgYmUgc2hvd24uXG4gICAqL1xuICBzaG91bGRTaG93Q29va2llQmFubmVyKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNldHRpbmdzID0gdGhpcy5nZXRDb29raWVCYW5uZXJTZXR0aW5ncygpO1xuICAgIGNvbnN0IHNob3VsZFNob3dEZWZhdWx0ID0gISFzZXR0aW5ncy5jb29raWVCYW5uZXJUZXh0ICYmICF0aGlzLmdldFVzZXJDb29raWVQcmVmZXJlbmNlcygpO1xuICAgIGlmICh0aGlzLmlzUHJldmlld01vZGUoKSkge1xuICAgICAgcmV0dXJuICEoc2V0dGluZ3MgJiYgc2V0dGluZ3MuY29va2llQmFubmVyRGlzYWJsZWQpO1xuICAgIH1cbiAgICByZXR1cm4gc2hvdWxkU2hvd0RlZmF1bHQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY29va2llIHByZWZlcmVuY2VzIGNvbmZpZ3VyYXRpb24gZnJvbSBsb2NhbCBzdG9yYWdlLlxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSBPYmplY3Qgd2l0aCBjb29raWUgcHJlZmVyZW5jZXMgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIGdldFVzZXJDb29raWVQcmVmZXJlbmNlcygpOiBDb29raWVQcmVmZXJlbmNlcyB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5TVE9SQUdFX0tFWSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIHRoYXQgY29va2llIHByZWZlcmVuY2VzIGNvbmZpZ3VyYXRpb24gaXMgZGVmaW5lZCBpbiB0aGUgYXBwbGljYXRpb24gb3B0aW9ucy5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgaWYgdGhlIGNvb2tpZSBwcmVmZXJlbmNlcyBjb25maWd1cmF0aW9uIGlzIGRlZmluZWQuXG4gICAqL1xuICBpc0NvbmZpZ0Nvb2tpZVByZWZlcmVuY2VzRGVmaW5lZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmdldENvb2tpZVByZWZlcmVuY2VzQ29uZmlnKCk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpZXMgdGhhdCBmdW5jdGlvbmFsIGNvb2tpZXMgYXJlIGVuYWJsZWQuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIHdoZW4gZnVuY3Rpb25hbCBjb29raWVzIGFyZSBlbmFibGVkLlxuICAgKi9cbiAgaXNGdW5jdGlvbmFsQ29va2llRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCB7IGZ1bmN0aW9uYWwgfTogQ29va2llUHJlZmVyZW5jZXMgPSB0aGlzLmdldFVzZXJDb29raWVQcmVmZXJlbmNlcygpIHx8IHt9O1xuICAgIHJldHVybiBmdW5jdGlvbmFsID09PSB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIG9mIGNvb2tpZXMuXG4gICAqIEBwYXJhbSB7J3JlcXVpcmVkJyB8ICdmdW5jdGlvbmFsJyB8ICdtYXJrZXRpbmcnfSBjb29raWVUeXBlIFRha2VzIG9uZSBvZiB0aGUgZm9sbG93aW5nIG9wdGlvbnM6ICdyZXF1aXJlZCcsICdmdW5jdGlvbmFsJywgJ21hcmtldGluZycuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBkZWZhdWx0IGNvb2tpZSBkZXNjcmlwdGlvbiwgaWYgbm90IGV4cGxpY2l0bHkgZGVmaW5lZCBpbiBhcHBsaWNhdGlvbiBvcHRpb25zLlxuICAgKi9cbiAgZ2V0Q29va2llRGVzY3JpcHRpb24oY29va2llVHlwZTogJ3JlcXVpcmVkJyB8ICdmdW5jdGlvbmFsJyB8ICdtYXJrZXRpbmcnKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb29raWVCYW5uZXJDb25maWdTZXR0aW5ncyA9IHRoaXMuZ2V0Q29va2llUHJlZmVyZW5jZXNDb25maWcoKTtcbiAgICBjb25zdCBjb29raWVCYW5uZXJTZXR0aW5nVmFsdWUgPSBjb29raWVCYW5uZXJDb25maWdTZXR0aW5nc1tjb29raWVUeXBlXTtcbiAgICByZXR1cm4gdHlwZW9mIGNvb2tpZUJhbm5lclNldHRpbmdWYWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgID8gY29va2llQmFubmVyU2V0dGluZ1ZhbHVlXG4gICAgICA6IHRoaXMuY29va2llRGVzY3JpcHRpb25zW2Nvb2tpZVR5cGVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgY29va2llIHByZWZlcmVuY2VzIGNvbmZpZ3VyYXRpb24gb2JqZWN0IHRvIGFuIGFycmF5IG9mIGNvb2tpZSBwcmVmZXJlbmNlcyBvYmplY3RzLiBFYWNoIG9iamVjdCBpbiByZXR1cm5lZCBhcnJheSBjb250YWlucyBjb29raWUgJ25hbWUnLCAndmFsdWUnIGFuZCAnaXNSZWFkb25seScgcHJvcGVydHkuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb29raWVQcmVmZXJlbmNlcy5cbiAgICogQHJldHVybnMge0FycmF5fSBBcnJheSBzaG93cyBpZiB0aGUgY29va2llIGlzIFJlYWRvbmx5LlxuICAgKi9cbiAgdHJhbnNmb3JtQ29va2llUHJlZmVyZW5jZXNUb0xpc3QoY29va2llUHJlZmVyZW5jZXM6IENvb2tpZVByZWZlcmVuY2VzKTogQ29va2llW10ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhjb29raWVQcmVmZXJlbmNlcykubWFwKChbbmFtZSwgdmFsdWVdKSA9PiB7XG4gICAgICBjb25zdCBpc1JlYWRvbmx5ID0gbmFtZSA9PT0gJ3JlcXVpcmVkJztcbiAgICAgIHJldHVybiB7IG5hbWUsIHZhbHVlLCBpc1JlYWRvbmx5IH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBhbiBhcnJheSBvZiBjb29raWUgcHJlZmVyZW5jZXMgb2JqZWN0cyB0byBjb29raWUgcHJlZmVyZW5jZXMgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAqIEBwYXJhbSB7QXJyYXl9IGNvb2tpZVByZWZlcmVuY2VzTGlzdCBBcnJheSBvZiBjb29raWUgcHJlZmVyZW5jZXMuXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IEFuIG9iamVjdCB3aXRoIGNvb2tpZSBwcmVmZXJlbmNlcyBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgdHJhbnNmb3JtQ29va2llUHJlZmVyZW5jZXNMaXN0VG9Db29raWVQcmVmZXJlbmNlcyhcbiAgICBjb29raWVQcmVmZXJlbmNlc0xpc3Q6IENvb2tpZVtdXG4gICk6IENvb2tpZVByZWZlcmVuY2VzIHtcbiAgICByZXR1cm4gY29va2llUHJlZmVyZW5jZXNMaXN0LnJlZHVjZSgoY29va2llUHJlZjogQ29va2llUHJlZmVyZW5jZXMsIGNvb2tpZTogQ29va2llKSA9PiB7XG4gICAgICBjb25zdCBrZXk6IHN0cmluZyA9IGNvb2tpZS5uYW1lO1xuICAgICAgY29va2llUHJlZltrZXldID0gY29va2llLnZhbHVlO1xuICAgICAgcmV0dXJuIGNvb2tpZVByZWY7XG4gICAgfSwge30pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1ByZXZpZXdNb2RlKCk6IGJvb2xlYW4ge1xuICAgIC8vIHBhcmFtcyBmcm9tIHVybCBhcmUgYXV0b21hdGljYWxseSByZXNvbHZlZCBkdXJpbmcgYm9vdHN0cmFwIGFzIHN0cmluZyBvcHRpb25zLCBzZWU6IHBhY2thZ2VzL2NsaS9zcmMvYXBwLWJvb3RzdHJhcC9vcHRpb25zLnRzXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5nZXQodGhpcy5JU19QUkVWSUVXLCBmYWxzZSwgdHJ1ZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -5,4 +5,4 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export class ApplicationOptions {
|
|
7
7
|
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25PcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vQXBwbGljYXRpb25PcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0NBNEw5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElBcHBsaWNhdGlvbiB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuLypcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tV0FSTklORy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVGhpcyBmaWxlIGhhcyBhbiAqZXhhY3QqIGNvcHkgaW4gcGFja2FnZXMvY2xpL3NyYy93ZWJwYWNrLy5cbiAqIEFueSBjaGFuZ2VzIHRvIHRoaXMgZmlsZSBtdXN0IGJlIHJlZmxlY3RlZCB0aGVyZSwgdG9vLlxuICovXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25PcHRpb25zIHtcbiAgLyoqIEFwcGxpY2F0aW9uIG5hbWUgKHNhdmVkIHRvIHRoZSBzZXJ2ZXIpLiAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBBcHBsaWNhdGlvbiBjb250ZXh0IHBhdGggKHNhdmVkIHRvIHRoZSBzZXJ2ZXIpLiAqL1xuICBjb250ZXh0UGF0aDogc3RyaW5nO1xuICAvKiogQXBwbGljYXRpb24ga2V5IChzYXZlZCB0byB0aGUgc2VydmVyKS4gKi9cbiAga2V5OiBzdHJpbmc7XG4gIC8qKiBUaGUgdmVyc2lvbiBvZiB0aGUgYXBwbGljYXRpb24gKi9cbiAgdmVyc2lvbj86IHN0cmluZztcbiAgLyoqIFRoZSB2ZXJzaW9uIG9mIHRoZSB1c2VkIFdlYiBTREsgdmVyc2lvbiAqL1xuICB3ZWJTZGtWZXJzaW9uPzogc3RyaW5nO1xuICAvKiogU2V0IHRvIGB0cnVlYCBpZiB0aGUgYXBwbGljYXRpb24gaXMgaHlicmlkIGFuZCB1c2VzIEFuZ3VsYXIgYW5kIEFuZ3VsYXJKUyBzaW11bHRhbmVvdXNseS4gKi9cbiAgdXBncmFkZT86IGJvb2xlYW47XG4gIC8qKiBQYXRoIHRvIHRoZSBicmFuZGluZyBlbnRyeSBmaWxlLiAoU2V0IGl0IHRvIGZhbHNlIHRvIGRpc2FibGUgYW55IHN0eWxpbmcuIFlvdSBjYW4gaGFuZGxlIHRoZSBzdHlsaW5nIHRoZW4gb24geW91ciBvd24gZS5nLiBpbiBhbiBhbmd1bGFyLmpzb24gZmlsZSB1c2luZyBuZy1jbGkpICovXG4gIGJyYW5kaW5nRW50cnk/OiBzdHJpbmcgfCBib29sZWFuO1xuICAvKiogUGF0aCB0byB0c2NjbmZpZy5qc29uIGZpbGUgaWYgVHlwZVNjcmlwdCBpcyB1c2VkIChkZWZhdWx0OiAuL3RzY29uZmlnLmpzb24pLiAqL1xuICB0c0NvbmZpZ1BhdGg/OiBzdHJpbmc7XG4gIC8qKiBFbnRyeSBtb2R1bGUgZm9yIEFuZ3VsYXIgY29tcGlsZXIgKG9ubHkgdXNlZCB3aXRoIGxhenkgbG9hZGVkIHJvdXRlcyksIGUuZy4gYCdhcHAubW9kdWxlLnRzI0FwcE1vZHVsZSdgLiAqL1xuICBlbnRyeU1vZHVsZT86IHN0cmluZztcbiAgLyoqIFBhdGggdG8gY3VzdG9tIGluZGV4Lmh0bWwgKG90aGVyd2lzZSBkZWZhdWx0IG9uZSB3aWxsIGJlIHVzZWQpLiAqL1xuICBpbmRleFRlbXBsYXRlPzogc3RyaW5nO1xuICAvKiogVVJMIHRvIGR5bmFtaWNhbGx5IGZldGNoZWQgb3B0aW9ucy4gKi9cbiAgZHluYW1pY09wdGlvbnNVcmw/OiBzdHJpbmc7XG4gIC8qKiBVUkwgdG8gZmF2aWNvbi4gKi9cbiAgZmF2aWNvblVybD86IHN0cmluZztcbiAgLyoqIFVSTCB0byAqLmNzcyBmaWxlIHdoaWNoIHdpbGwgcmVwbGFjZSBkZWZhdWx0IGJyYW5kaW5nLiAqL1xuICBicmFuZGluZ1VybD86IHN0cmluZztcbiAgLyoqIE9iamVjdCB3aXRoIHByb3BlcnRpZXMgdGhhdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBDU1MgY3VzdG9tIHZhcmlhYmxlcy4gKi9cbiAgYnJhbmRpbmdDc3NWYXJzPzogQnJhbmRpbmdDc3NWYXJzO1xuICAvKipcbiAgICogQWxsb3dzIGZvciBhZGRpbmcgb3Igb3ZlcnJpZGluZyBsYW5ndWFnZXMgYXZhaWxhYmxlIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogSXRzIGtleXMgYXJlIGxhbmd1YWdlIGNvZGVzIGFuZCBpdHMgdmFsdWVzIGFyZSBvYmplY3RzIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgKlxuICAgKiAtIGBuYW1lYDogRW5nbGlzaCBuYW1lIG9mIHRoZSBsYW5ndWFnZSxcbiAgICogLSBgbmF0aXZlTmFtZWA6IG5hdGl2ZSBuYW1lIG9mIHRoZSBsYW5ndWFnZSxcbiAgICogLSBgdXJsYDogZnVsbCBVUkwgdG8gSlNPTiBmaWxlIHdpdGggY29tcGlsZWQgdHJhbnNsYXRpb25zO1xuICAgKiAgICBpZiBub3QgZGVmaW5lZCwgdHJhbnNsYXRpb25zIHdpbGwgYmUgbG9hZGVkIGZyb20gYCR7bG9jYWxlUGF0aH0vJHtsYW5nQ29kZX0uanNvbmAuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIGBgYGpzb25cbiAgICogXCJsYW5ndWFnZXNcIjoge1xuICAgKiAgIFwiZGVcIjoge1xuICAgKiAgICAgXCJuYW1lXCI6IFwiR2VybWFuXCIsXG4gICAqICAgICBcIm5hdGl2ZU5hbWVcIjogXCJEZXV0c2NoXCIsXG4gICAqICAgICBcInVybFwiOiBcIi9hcHBzL3B1YmxpYy91aS1hc3NldHMvZGUuanNvblwiXG4gICAqICAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgbGFuZ3VhZ2VzPzogTGFuZ3VhZ2VzO1xuICAvKipcbiAgICogQWxsb3dzIGZvciBhZGRpbmcgY3VzdG9tIHRyYW5zbGF0aW9ucy4gSXQgaXMgYW4gb3B0aW9uYWwgcHJvcGVydHkuXG4gICAqXG4gICAqIEl0cyBrZXlzIGFyZSBsYW5ndWFnZSBjb2RlcyAoaHR0cHM6Ly9jdW11bG9jaXR5LmNvbS9ndWlkZXMvdXNlcnMtZ3VpZGUvZ2V0dGluZy1zdGFydGVkLyNhLW5hbWUtbGFuZ3VhZ2VzLWEtYXZhaWxhYmxlLWxhbmd1YWdlcylcbiAgICogYW5kIGl0cyB2YWx1ZXMgYXJlIG9iamVjdHMgd2l0aCBrZXktdmFsdWUgcGFpcnMsIHdoZXJlIHRoZSBrZXkgaXMgdGhlIG9yaWdpbmFsIHN0cmluZyBpbiBFbmdsaXNoIGFuZCB0aGUgdmFsdWUgLSBpdHMgdHJhbnNsYXRpb24uXG4gICAqXG4gICAqIC0gYEhvbWVgOiBcIlN0YXJ0c2VpdGVcIlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSB5b3UgY2FuIGFkZCB0aGUgdHJhbnNsYXRpb24gb2YgeW91ciBjdXN0b20gY29va2llIGJhbm5lciBjb25maWd1cmVkIGluIHRoZSBicmFuZGluZyBzZXR0aW5nczpcbiAgICogYGBganNvblxuICAgKiBcImkxOG5FeHRyYVwiOiB7XG4gICAqICAgXCJkZVwiOiB7XG4gICAqICAgICBcIkFib3V0IGNvb2tpZXMgb24gQ3VtdWxvY2l0eSBJb1RcIjogXCJJbmZvcm1hdGlvbmVuIHp1IENvb2tpZXMgaW4gQ3VtdWxvY2l0eSBJb1RcIixcbiAgICogICAgIFwiQ2xpY2sgQWdyZWUgYW5kIFByb2NlZWQgdG8gYWNjZXB0IGNvb2tpZXMgYW5kIGdvIGRpcmVjdGx5IHRvIHRoZSBwbGF0Zm9ybSBvciBjbGljayBvbiBQcml2YWN5IFBvbGljeSB0byBzZWUgZGV0YWlsZWQgZGVzY3JpcHRpb25zIG9mIHRoZSB1c2VkIGNvb2tpZXMuXCI6IFwiS2xpY2tlbiBTaWUgYXVmIFp1c3RpbW1lbiB1bmQgZm9ydGZhaHJlbiwgdW0gQ29va2llcyB6dSBha3plcHRpZXJlbiB1bmQgZGlyZWt0IHp1ciBQbGF0dGZvcm0genUgZ2VsYW5nZW4sIG9kZXIga2xpY2tlbiBTaWUgYXVmIERhdGVuc2NodXR6cmljaHRsaW5pZSwgdW0gZGV0YWlsbGllcnRlIEJlc2NocmVpYnVuZ2VuIGRlciB2ZXJ3ZW5kZXRlbiBDb29raWVzIGFuenV6ZWlnZW4uXCJcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBpMThuRXh0cmE/OiBJMThuRXh0cmE7XG4gIC8qKiBQYXRoIHRvIHRoZSBmb2xkZXIgZnJvbSB3aGljaCAqLnBvIGZpbGVzIHdpbGwgYmUgbG9hZGVkLiAqL1xuICBsb2NhbGVQYXRoPzogc3RyaW5nO1xuICAvKiogQXJyYXkgb2YgVVJMcyB0byBhZGRpdGlvbmFsICouY3NzIGZpbGVzIHRvIGJlIGxvYWRlZCBhdCBydW50aW1lLiAqL1xuICBleHRyYUNzc1VybHM/OiBzdHJpbmdbXTtcbiAgLyoqIERvY3VtZW50YXRpb24gbGlua3Mgc2V0dGluZ3MuICovXG4gIGRvY3M/OiBEb2NzO1xuICAvKiogQXBwbGljYXRpb24gaWNvbiB0byBiZSBkaXNwbGF5ZWQgaW4gYXBwIHN3aXRjaGVyIGFuZCBoZWFkZXIgYmFyLiAqL1xuICBpY29uPzogSWNvbjtcblxuICAvLyBUaGVzZSBhcmUgdGhlIG9sZCBvcHRpb25zXG4gIC8qKiBIaWRlIGFwcGxpY2F0aW9uIGluIGFwcCBzd2l0Y2hlciAoc2F2ZWQgdG8gdGhlIHNlcnZlcikuICovXG4gIG5vQXBwU3dpdGNoZXI/OiBib29sZWFuO1xuICAvKiogSFRNTCBwYWdlIHRpdGxlLiAqL1xuICBnbG9iYWxUaXRsZT86IHN0cmluZztcbiAgLyoqIEhpZGUgXCJwb3dlcmVkIGJ5XCIgYW5kIHZlcnNpb24gaW5mbyBhdCB0aGUgYm90dG9tIG9mIHRoZSBuYXZpZ2F0b3IgYW5kIGluIHRoZSByaWdodCBkcmF3ZXIuICovXG4gIGhpZGVQb3dlcmVkPzogYm9vbGVhbjtcbiAgLyoqIEhpZGVzIHRoZSBcIlBsYXRmb3JtIGluZm9ybWF0aW9uXCIgaW4gdGhlIHJpZ2h0IGRyYXdlciwgd2lsbCBvdmVycnVsZSB0aGUgXCJoaWRlUG93ZXJlZFwiIG9wdGlvbiAqL1xuICBoaWRlUGxhdGZvcm1JbmZvcm1hdGlvbj86IGJvb2xlYW47XG4gIC8qKiBVUkwgdG8gc3VwcG9ydCBwYWdlIChzZXQgdG8gYGZhbHNlYCB0byBoaWRlIHRoZSBsaW5rKS4gKi9cbiAgc3VwcG9ydFVybD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBSZXBsYWNlbWVudCBzdHJpbmcgZm9yIGB1c2VyYCBmaWVsZCBpbiBhdWRpdCBsb2dzIGZvciBhY3Rpb25zIHBlcmZvcm1lZCBieSBhIHN1cHBvcnQgdXNlclxuICAgKiAoYXZhaWxhYmxlIHBsYWNlaG9sZGVyczogYHt7c3VwcG9ydF91c2VyfX1gLCBge3tzdXBwb3J0ZWRfdXNlcn19YCkuXG4gICAqL1xuICBzdXBwb3J0VXNlclN0cmluZz86IHN0cmluZztcbiAgLyoqXG4gICAqIERpc2FibGVzIHJlYWx0aW1lIHVwZGF0ZXMgb24gdGhlIG1hcCB3aWRnZXQgYW5kIG1hcHMgaW4gZ2VuZXJhbC5cbiAgICovXG4gIG1hcFdpZGdldFJlYWx0aW1lRGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGFkanVzdCB0aGUgZGVmYXVsdCBwYWdlc2l6ZSBvZiAxMDAgaXRlbXMgb2YgdGhlIG1hcCB3aWRnZXQgYW5kIG1hcHMgaW4gZ2VuZXJhbC5cbiAgICovXG4gIG1hcFdpZGdldFBhZ2VTaXplPzogbnVtYmVyO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGhpZGUgdGhlIGhpbnQgdGhhdCB0aGVyZSBhcmUgbW9yZSBkZXZpY2VzIHdpdGggZ2VvIGNvb3JkaW5hdGVzIHRoZW4gZGlzcGxheWVkIG9uIHRoZSBtYXAgd2lkZ2V0IGFuZCBtYXBzIGluIGdlbmVyYWwuXG4gICAqL1xuICBtYXBXaWRnZXRIaWRlTWF4RGV2aWNlT25NYXBIaW50PzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBvciBkaXNhYmxlIHRoZSByaWdodCBkcmF3ZXIuICovXG4gIHJpZ2h0RHJhd2VyPzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBvciBkaXNhYmxlIGJyZWFkY3J1bWJzIGluIHRoZSBoZWFkZXIgZm9yIGdyb3VwcyBhbmQgZGV2aWNlcyAoZGVmYXVsdDogZmFsc2UpLiAqL1xuICBicmVhZGNydW1icz86IGJvb2xlYW47XG4gIC8qKiBDb2xsYXBzZSBuYXZpZ2F0b3Igb24gaW5pdGlhbCBsb2FkLiAqL1xuICBoaWRlTmF2aWdhdG9yPzogYm9vbGVhbjtcbiAgLyoqIFNob3cgdGFicyBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseS4gKi9cbiAgdGFic0hvcml6b250YWw/OiBib29sZWFuO1xuICAvKiogQWRkaXRpb25hbCBsaW5rIHRvIGRpc3BsYXkgb24gbG9naW4gc2NyZWVuLiAqL1xuICBsb2dpbkV4dHJhTGluaz86IExvZ2luRXh0cmFMaW5rO1xuICAvKiogRW5hYmxlIG9yIGRpc2FibGUgc3RvcmFnZSBsaW1pdGF0aW9uIGZlYXR1cmUuICovXG4gIHN0b3JhZ2VMaW1pdGF0aW9uRmVhdHVyZUVuYWJsZWQ/OiBib29sZWFuO1xuICAvKiogTmFtZSBvZiBjb21wYW55IGhhbmRsaW5nIHN1cHBvcnQgcmVxdWVzdHMgZnJvbSBhcHAgdXNlcnMgKGRpc3BsYXllZCBpbiBub3RpZmljYXRpb24gbWVzc2FnZSkuICovXG4gIGNvbXBhbnlOYW1lPzogc3RyaW5nO1xuICAvKiogVVJMIHRlbXBsYXRlIGZvciBkb2N1bWVudGF0aW9uIGxpbmtzIChkZWZhdWx0OiBgJyR7ZG9jc0Jhc2VVcmx9JHtwYXJ0aWFsVXJsfSdgKS4gKi9cbiAgZ3VpZGVIcmVmVGVtcGxhdGU/OiBzdHJpbmc7XG4gIC8qKiBCYXNlIFVSTCBmb3IgZG9jdW1lbnRhdGlvbiBsaW5rcyAoaW5jbHVkZSBge3sgdmVyc2lvbiB9fWAgcGxhY2Vob2xkZXIsIGlmIHlvdSB3YW50IHZlcnNpb25lZCBsaW5rcykuICovXG4gIGRvY3NCYXNlVXJsPzogc3RyaW5nO1xuICAvKiogQ1NQIHN0cmluZyB0byBiZSBhcHBsaWVkIHRvIGBpbmRleC5odG1sYCBieSByZXBsYWNpbmcgZGVmYXVsdCB2YWx1ZXMuICovXG4gIGNvbnRlbnRTZWN1cml0eVBvbGljeT86IHN0cmluZztcbiAgLyoqIEVuYWJsZXMgY2xvdWQgc2Vuc29yIHdpemFyZCAqL1xuICBzZW5zb3JQaG9uZT86IGJvb2xlYW47XG4gIC8qKiBTaG93IG9yIGhpZGUgYSBuZXdzbGV0dGVyIHN1YnNjcmlwdGlvbiBjaGVja2JveCBpbiBlZGl0IHVzZXIgbW9kYWwuICovXG4gIG5ld3NsZXR0ZXI/OiBib29sZWFuO1xuICAvKiogUGF0aCB0byB0aGUgcm9vdCBub2RlX21vZHVsZXMgZGlyICh1c2VmdWwgd2hlbiB3b3JraW5nIGluIG1vbm9yZXBvIHNldHVwLCBlLmcuIHlhcm4gd29ya3NwYWNlcykuICovXG4gIHJvb3ROb2RlTW9kdWxlc1BhdGg/OiBzdHJpbmc7XG4gIC8qKiBDb29raWUgQmFubmVyIGNvbmZpZ3VyYXRpb24gKi9cbiAgY29va2llQmFubmVyPzogQ29va2llQmFubmVyQ29uZmlndXJhdGlvbjtcbiAgLyoqIENvb2tpZSBwcmVmZXJlbmNlcyBjb25maWd1cmF0aW9uLiBIZXJlIHlvdSBjYW4gZW5hYmxlIG9yIGRpc2FibGUgY29va2llIGNhdGVnb3JpZXMgKi9cbiAgY29va2llUHJlZmVyZW5jZXM/OiBDb29raWVQcmVmZXJlbmNlc0NvbmZpZ3VyYXRpb247XG4gIC8qKiBBIGtleSBmb3IgdGhlIHByb2R1Y3QgZXhwZXJpZW5jZSBzb2Z0d2FyZSBHYWluc2lnaHQuICovXG4gIGdhaW5zaWdodEtleT86IHN0cmluZztcbiAgLyoqIE5nTW9kdWxlIGV4cG9ydCBmb3IgcGx1Z2lucy4gKi9cbiAgZXhwb3J0cz86IFBsdWdpbnNFeHBvcnRzW107XG4gIC8qKiBMaXN0IG9mIGltcG9ydGVkIHJlbW90ZSBwbHVnaW5zLiAqL1xuICByZW1vdGVzPzogUmVtb3RlUGx1Z2lucztcbiAgLyoqIFRoZSBwYWNrYWdlIHNvdXJjZSBhIGFwcGxpY2F0aW9uIG9yaWdpbnMgZnJvbSBhcyBJQXBwbGljYXRpb24gb3Igc2ltcGx5IHRoZSBpZCBvZiB0aGUgc291cmNlICovXG4gIHNvdXJjZT86IHN0cmluZyB8IG51bWJlciB8IElBcHBsaWNhdGlvbjtcbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgYXNzZXRzIHRvIGNvcHkgdG8gdGhlIGJ1aWxkIG91dHB1dC5cbiAgICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrLWNvbnRyaWIvY29weS13ZWJwYWNrLXBsdWdpbiBmb3IgbW9yZSBpbmZvcm1hdGlvblxuICAgKiBhYm91dCB0aGUgcGF0dGVybnMgdG8gYWRkIGhlcmUuXG4gICAqL1xuICBjb3B5PzogW107XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gZW5hYmxlIG9yIGRpc2FibGUgY29udGV4dCBoZWxwLCBvciB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBiYXNlIFVSTCB1c2VkIHRvIGxvYWQgaXRzIGNvbnRlbnRzLlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgY29udGV4dCBoZWxwIHVzZXMgdGhlIHNhbWUgYmFzZSBVUkwgYXMgZGVmaW5lZCBpbiB0aGUgYGRvY3NCYXNlVXJsYCBvcHRpb25cbiAgICogKGlmIHRoaXMgb3B0aW9uIGlzIHVuZGVmaW5lZCwgdGhlbiB0aGUgZm9sbG93aW5nIHZhbHVlIHdpbGwgYmUgdXNlZDogYGh0dHBzOi8vd3d3LmN1bXVsb2NpdHkuY29tL2d1aWRlcy97e3ZlcnNpb259fWApLlxuICAgKiBBbHRlcm5hdGl2ZWx5LCBpZiBhIHN0cmluZyBpcyBwcm92aWRlZCBoZXJlLCBpdCdsbCBiZSB1c2VkIGFzIHRoZSBiYXNlIFVSTFxuICAgKiBhbmQgYW55IGB7eyB2ZXJzaW9uIH19YCBwbGFjZWhvbGRlciB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdGhlIHJlbGV2YW50IGRvY3MgdmVyc2lvbi5cbiAgICovXG4gIGNvbnRleHRIZWxwPzogYm9vbGVhbiB8IHN0cmluZztcbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQsIGNvY2twaXQgYW5kIGRldmljZW1hbmFnZW1lbnQgdXNlIHRoZSBvbmx5Um9vdHMgcXVlcnkgdG8gcmVzb2x2ZSByb290IG5vZGVzLiBUaGlzXG4gICAqIGNvdWxkIGxlYWQgdG8gcGVyZm9ybWFuY2UgaXNzdWVzLCBpZiBhIGN1c3RvbWVyIGhhcyBhIGxvdCBvZiByb290IG5vZGVzLiBUaGVyZWZvcmUgeW91IGNhbiBkaXNhYmxlXG4gICAqIHRoZSB1c2Ugb2YgdGhpcyBxdWVyeSB3aXRoIHRoaXMgZmxhZy5cbiAgICovXG4gIGRpc2FibGVPbmx5Um9vdHNRdWVyeT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gZm9yY2Ugc2hvd2luZyB0aGUgc2V0dXAgd2l6YXJkLlxuICAgKi9cbiAgZm9yY2VTZXR1cD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGFwcGxpY2F0aW9uIG5lZWRzIHRvIHNob3cgdGhlIHNldHVwIHdpemFyZC5cbiAgICovXG4gIGlzU2V0dXA/OiBib29sZWFuO1xuICAvKipcbiAgICogQnkgZGVmYXVsdCBhIFdlYlNESyBhcHAgcmVxdWlyZXMgdGhlIHVzZXIgdG8gYmUgbG9nZ2VkIGluLlxuICAgKiBJbiBjYXNlIHlvdSB3b3VsZCBsaWtlIHRvIGRldmVsb3AganVzdCBhIHN0YXRpYyBhcHBsaWNhdGlvbiwgdGhhdCBkb2VzIG5vdCByZXF1aXJlIGFueSBraW5kIG9mIGFjY2VzcyB0byB0aGUgYmFja2VuZCxcbiAgICogeW91IGNhbiB1c2UgdGhpcyBmbGFnIHRvIGRpc2FibGUgdGhlIGxvZ2luIHNjcmVlbi5cbiAgICogTk9URTogbm90IGFsbCBXZWJTREsgY29tcG9uZW50cyBzdXBwb3J0IHRoaXMsIHNvbWUgbWlnaHQgcmVxdWlyZSB0aGUgdXNlciB0byBiZSBsb2dnZWQgaW4gYW5kIHdvbid0IHdvcmsuXG4gICAqL1xuICBub0xvZ2luPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFsbG93cyB0byBvcHQgb3V0IG9mIHN1cHBvcnRpbmcvbG9hZGluZyBwbHVnaW5zIGZvciB0aGlzIGFwcGxpY2F0aW9uLlxuICAgKi9cbiAgbm9QbHVnaW5zPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFsbG93cyB0byBvcHQgb3V0IG9mIHRoZSB2ZXJzaW9uIHdhcm5pbmcgd2hpY2ggaXMgc2hvd24gaW4gdGhlIGRldiB0b29scy5cbiAgICovXG4gIG5vVmVyc2lvbldhcm5pbmc/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlbW90ZVBsdWdpbnMge1xuICAvKipcbiAgICogQSBrZXkgdmFsdWUgcGFpciwgd2hpbGUgdGhlIHZhbHVlIGlzIGFuIGFycmF5IG9mIG1vZHVsZXMgdG8gbG9hZCBhbmQgdGhlXG4gICAqIGtleSBpcyB0aGUgY29udGV4dCBwYXRoLlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGBqc1xuICAgKiB7XG4gICAqICAgICdjb2NrcGl0JzogWydIb21lRGFzaGJvYXJkTW9kdWxlJywgJ0RhdGFFeHBsb3JlckRhc2hib2FyZCddLFxuICAgKiAgICAnd2lkZ2V0LXBhY2thZ2VAMS4wLjAnOiBbJ0V4dGVuZGVkTWFwV2lkZ2V0J11cbiAgICogfVxuICAgKiBgYFxuICAgKi9cbiAgW2tleTogc3RyaW5nXTogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luc0V4cG9ydHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIEFuZ3VsYXIgbW9kdWxlIGNsYXNzLlxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGZpbGUgcGF0aCB0byB0aGUgbW9kdWxlIHR5cGVzY3JpcHQgZmlsZS5cbiAgICovXG4gIHBhdGg6IHN0cmluZztcbiAgLyoqXG4gICAqIEFuIHNob3J0IGRlc2NyaXB0aW9uIGFib3V0IHdoYXQgdGhlIG1vZHVsZSBkb2VzLlxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBbGxvd3MgdG8gc2NvcGUgdGhlIHBsdWdpbiB0byBjZXJ0YWluIGFwcGxpY2F0aW9ucy4gRS5nLiBpZiB5b3VcbiAgICogYWRkIGhlcmUgJ2NvY2twaXQnLCB0aGUgcGx1Z2luIGNhbiBvbmx5IGJlIGluc3RhbGxlZCBpbnRvIGFuXG4gICAqIGFwcGxpY2F0aW9uIG9uIHRoZSBjb250ZXh0UGF0aCBgYXBwcy9jb2NrcGl0YC4gWW91IGNhbiB1c2UgY29tbWFcbiAgICogc2VwYXJhdGVkIHZhbHVlcywgYXN0ZXJpc2sgKGRlZmF1bHQpIHRvIGFsbG93IGFsbCBhcHBsaWNhdGlvbnMgb3JcbiAgICogYHNlbGZgIHRvIGxpbWl0IHRoZSBwbHVnaW4gdG8gdGhlIGN1cnJlbnQgc29sdXRpb24uXG4gICAqL1xuICBzY29wZT86ICcqJyB8ICdzZWxmJyB8IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb29raWVCYW5uZXJDb25maWd1cmF0aW9uIHtcbiAgLyoqIEhlcmUgeW91IGNhbiBzZXQgdGhlIHRpdGxlIG9mIENvb2tpZSBCYW5uZXIgKi9cbiAgY29va2llQmFubmVyVGl0bGU/OiBzdHJpbmc7XG4gIC8qKiBIZXJlIHlvdSBjYW4gc2V0IHRoZSBUZXh0IG9mIENvb2tpZSBCYW5uZXIgKi9cbiAgY29va2llQmFubmVyVGV4dD86IHN0cmluZztcbiAgLyoqIEhlcmUgeW91IGNhbiBzZXQgdGhlIHBvbGljeVVybCBvZiBDb29raWUgQmFubmVyICovXG4gIHBvbGljeVVybD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb29raWVQcmVmZXJlbmNlc0NvbmZpZ3VyYXRpb24ge1xuICAvKiogVGhpcyBjYXRlZ29yeSBpbmNsdWRlcyBlLmcuIGNvb2tpZXMgcmVsYXRlZCB0byBsb2dnaW5nIGluICAqL1xuICByZXF1aXJlZD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIC8qKiBUaGlzIGNhdGVnb3J5IGluY2x1ZGVzIGUuZy4gdHJhY2tpbmcgY29va2llcyAgKi9cbiAgZnVuY3Rpb25hbD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIC8qKiBUaGlzIGNhdGVnb3J5IGluY2x1ZGVzIGUuZy4gY29va2llcyByZWxhdGVkIHRvIGFkdmVydGlzaW5nICAqL1xuICBtYXJrZXRpbmc/OiBib29sZWFuIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvZ2luRXh0cmFMaW5rIHtcbiAgdXJsOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWNvbiB7XG4gIGNsYXNzPzogc3RyaW5nO1xuICB1cmw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jcyB7XG4gIC8qKiBIaWRlIGRlZmF1bHQgbGlua3MgdG8gZG9jdW1lbnRhdGlvbi4gKi9cbiAgbm9EZWZhdWx0OiBib29sZWFuO1xuICAvKiogTGlzdCBvZiByZWdleCBzdHJpbmdzLiBNYXRjaGluZyBkZWZhdWx0IGRvY3MgVVJMcyB3aWxsIGJlIGhpZGRlbi4gKi9cbiAgZXhjbHVkZURlZmF1bHQ6IHN0cmluZ1tdO1xuICAvKiogQWRkaXRpb25hbCBsaW5rcyB0byBiZSBkaXNwbGF5ZWQuICovXG4gIGxpbmtzOiBMaW5rc1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpbmtzIHtcbiAgLyoqIEljb24gY2xhc3NlcyB3aXRoIGBjOHktaWNvbmAsIGUuZy4gYGM4eS1pY29uIGM4eS1pY29uLWFkZC11c2VyYCBvciBgYzh5LWljb24gYzh5LWljb24tZGV2aWNlLWNvbm5lY3RgLiAqL1xuICBpY29uOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xuICB0eXBlOiAnZG9jJyB8ICdxdWlja2xpbmsnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEkxOG5FeHRyYSB7XG4gIFtsYW5nQ29kZTogc3RyaW5nXTogSTE4bkV4dHJhTGFuZ0NvZGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSTE4bkV4dHJhTGFuZ0NvZGUge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2VzIHtcbiAgW2xhbmdDb2RlOiBzdHJpbmddOiBMYW5ndWFnZXNMYW5nQ29kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYW5ndWFnZXNMYW5nQ29kZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgbmF0aXZlTmFtZTogc3RyaW5nO1xuICB1cmw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCcmFuZGluZ0Nzc1ZhcnMge1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG59XG4iXX0=
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25PcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24vQXBwbGljYXRpb25PcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0NBOEw5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElBcHBsaWNhdGlvbiB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuLypcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tV0FSTklORy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVGhpcyBmaWxlIGhhcyBhbiAqZXhhY3QqIGNvcHkgaW4gcGFja2FnZXMvY2xpL3NyYy93ZWJwYWNrLy5cbiAqIEFueSBjaGFuZ2VzIHRvIHRoaXMgZmlsZSBtdXN0IGJlIHJlZmxlY3RlZCB0aGVyZSwgdG9vLlxuICovXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25PcHRpb25zIHtcbiAgLyoqIEFwcGxpY2F0aW9uIG5hbWUgKHNhdmVkIHRvIHRoZSBzZXJ2ZXIpLiAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBBcHBsaWNhdGlvbiBjb250ZXh0IHBhdGggKHNhdmVkIHRvIHRoZSBzZXJ2ZXIpLiAqL1xuICBjb250ZXh0UGF0aDogc3RyaW5nO1xuICAvKiogQXBwbGljYXRpb24ga2V5IChzYXZlZCB0byB0aGUgc2VydmVyKS4gKi9cbiAga2V5OiBzdHJpbmc7XG4gIC8qKiBUaGUgdmVyc2lvbiBvZiB0aGUgYXBwbGljYXRpb24gKi9cbiAgdmVyc2lvbj86IHN0cmluZztcbiAgLyoqIFRoZSB2ZXJzaW9uIG9mIHRoZSB1c2VkIFdlYiBTREsgdmVyc2lvbiAqL1xuICB3ZWJTZGtWZXJzaW9uPzogc3RyaW5nO1xuICAvKiogU2V0IHRvIGB0cnVlYCBpZiB0aGUgYXBwbGljYXRpb24gaXMgaHlicmlkIGFuZCB1c2VzIEFuZ3VsYXIgYW5kIEFuZ3VsYXJKUyBzaW11bHRhbmVvdXNseS4gKi9cbiAgdXBncmFkZT86IGJvb2xlYW47XG4gIC8qKiBQYXRoIHRvIHRoZSBicmFuZGluZyBlbnRyeSBmaWxlLiAoU2V0IGl0IHRvIGZhbHNlIHRvIGRpc2FibGUgYW55IHN0eWxpbmcuIFlvdSBjYW4gaGFuZGxlIHRoZSBzdHlsaW5nIHRoZW4gb24geW91ciBvd24gZS5nLiBpbiBhbiBhbmd1bGFyLmpzb24gZmlsZSB1c2luZyBuZy1jbGkpICovXG4gIGJyYW5kaW5nRW50cnk/OiBzdHJpbmcgfCBib29sZWFuO1xuICAvKiogUGF0aCB0byB0c2NjbmZpZy5qc29uIGZpbGUgaWYgVHlwZVNjcmlwdCBpcyB1c2VkIChkZWZhdWx0OiAuL3RzY29uZmlnLmpzb24pLiAqL1xuICB0c0NvbmZpZ1BhdGg/OiBzdHJpbmc7XG4gIC8qKiBFbnRyeSBtb2R1bGUgZm9yIEFuZ3VsYXIgY29tcGlsZXIgKG9ubHkgdXNlZCB3aXRoIGxhenkgbG9hZGVkIHJvdXRlcyksIGUuZy4gYCdhcHAubW9kdWxlLnRzI0FwcE1vZHVsZSdgLiAqL1xuICBlbnRyeU1vZHVsZT86IHN0cmluZztcbiAgLyoqIFBhdGggdG8gY3VzdG9tIGluZGV4Lmh0bWwgKG90aGVyd2lzZSBkZWZhdWx0IG9uZSB3aWxsIGJlIHVzZWQpLiAqL1xuICBpbmRleFRlbXBsYXRlPzogc3RyaW5nO1xuICAvKiogVVJMIHRvIGR5bmFtaWNhbGx5IGZldGNoZWQgb3B0aW9ucy4gKi9cbiAgZHluYW1pY09wdGlvbnNVcmw/OiBzdHJpbmc7XG4gIC8qKiBVUkwgdG8gZmF2aWNvbi4gKi9cbiAgZmF2aWNvblVybD86IHN0cmluZztcbiAgLyoqIFVSTCB0byAqLmNzcyBmaWxlIHdoaWNoIHdpbGwgcmVwbGFjZSBkZWZhdWx0IGJyYW5kaW5nLiAqL1xuICBicmFuZGluZ1VybD86IHN0cmluZztcbiAgLyoqIE9iamVjdCB3aXRoIHByb3BlcnRpZXMgdGhhdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBDU1MgY3VzdG9tIHZhcmlhYmxlcy4gKi9cbiAgYnJhbmRpbmdDc3NWYXJzPzogQnJhbmRpbmdDc3NWYXJzO1xuICAvKipcbiAgICogQWxsb3dzIGZvciBhZGRpbmcgb3Igb3ZlcnJpZGluZyBsYW5ndWFnZXMgYXZhaWxhYmxlIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogSXRzIGtleXMgYXJlIGxhbmd1YWdlIGNvZGVzIGFuZCBpdHMgdmFsdWVzIGFyZSBvYmplY3RzIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgKlxuICAgKiAtIGBuYW1lYDogRW5nbGlzaCBuYW1lIG9mIHRoZSBsYW5ndWFnZSxcbiAgICogLSBgbmF0aXZlTmFtZWA6IG5hdGl2ZSBuYW1lIG9mIHRoZSBsYW5ndWFnZSxcbiAgICogLSBgdXJsYDogZnVsbCBVUkwgdG8gSlNPTiBmaWxlIHdpdGggY29tcGlsZWQgdHJhbnNsYXRpb25zO1xuICAgKiAgICBpZiBub3QgZGVmaW5lZCwgdHJhbnNsYXRpb25zIHdpbGwgYmUgbG9hZGVkIGZyb20gYCR7bG9jYWxlUGF0aH0vJHtsYW5nQ29kZX0uanNvbmAuXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqIGBgYGpzb25cbiAgICogXCJsYW5ndWFnZXNcIjoge1xuICAgKiAgIFwiZGVcIjoge1xuICAgKiAgICAgXCJuYW1lXCI6IFwiR2VybWFuXCIsXG4gICAqICAgICBcIm5hdGl2ZU5hbWVcIjogXCJEZXV0c2NoXCIsXG4gICAqICAgICBcInVybFwiOiBcIi9hcHBzL3B1YmxpYy91aS1hc3NldHMvZGUuanNvblwiXG4gICAqICAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgbGFuZ3VhZ2VzPzogTGFuZ3VhZ2VzO1xuICAvKipcbiAgICogQWxsb3dzIGZvciBhZGRpbmcgY3VzdG9tIHRyYW5zbGF0aW9ucy4gSXQgaXMgYW4gb3B0aW9uYWwgcHJvcGVydHkuXG4gICAqXG4gICAqIEl0cyBrZXlzIGFyZSBsYW5ndWFnZSBjb2RlcyAoaHR0cHM6Ly9jdW11bG9jaXR5LmNvbS9ndWlkZXMvdXNlcnMtZ3VpZGUvZ2V0dGluZy1zdGFydGVkLyNhLW5hbWUtbGFuZ3VhZ2VzLWEtYXZhaWxhYmxlLWxhbmd1YWdlcylcbiAgICogYW5kIGl0cyB2YWx1ZXMgYXJlIG9iamVjdHMgd2l0aCBrZXktdmFsdWUgcGFpcnMsIHdoZXJlIHRoZSBrZXkgaXMgdGhlIG9yaWdpbmFsIHN0cmluZyBpbiBFbmdsaXNoIGFuZCB0aGUgdmFsdWUgLSBpdHMgdHJhbnNsYXRpb24uXG4gICAqXG4gICAqIC0gYEhvbWVgOiBcIlN0YXJ0c2VpdGVcIlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSB5b3UgY2FuIGFkZCB0aGUgdHJhbnNsYXRpb24gb2YgeW91ciBjdXN0b20gY29va2llIGJhbm5lciBjb25maWd1cmVkIGluIHRoZSBicmFuZGluZyBzZXR0aW5nczpcbiAgICogYGBganNvblxuICAgKiBcImkxOG5FeHRyYVwiOiB7XG4gICAqICAgXCJkZVwiOiB7XG4gICAqICAgICBcIkFib3V0IGNvb2tpZXMgb24gQ3VtdWxvY2l0eSBJb1RcIjogXCJJbmZvcm1hdGlvbmVuIHp1IENvb2tpZXMgaW4gQ3VtdWxvY2l0eSBJb1RcIixcbiAgICogICAgIFwiQ2xpY2sgQWdyZWUgYW5kIFByb2NlZWQgdG8gYWNjZXB0IGNvb2tpZXMgYW5kIGdvIGRpcmVjdGx5IHRvIHRoZSBwbGF0Zm9ybSBvciBjbGljayBvbiBQcml2YWN5IFBvbGljeSB0byBzZWUgZGV0YWlsZWQgZGVzY3JpcHRpb25zIG9mIHRoZSB1c2VkIGNvb2tpZXMuXCI6IFwiS2xpY2tlbiBTaWUgYXVmIFp1c3RpbW1lbiB1bmQgZm9ydGZhaHJlbiwgdW0gQ29va2llcyB6dSBha3plcHRpZXJlbiB1bmQgZGlyZWt0IHp1ciBQbGF0dGZvcm0genUgZ2VsYW5nZW4sIG9kZXIga2xpY2tlbiBTaWUgYXVmIERhdGVuc2NodXR6cmljaHRsaW5pZSwgdW0gZGV0YWlsbGllcnRlIEJlc2NocmVpYnVuZ2VuIGRlciB2ZXJ3ZW5kZXRlbiBDb29raWVzIGFuenV6ZWlnZW4uXCJcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBpMThuRXh0cmE/OiBJMThuRXh0cmE7XG4gIC8qKiBQYXRoIHRvIHRoZSBmb2xkZXIgZnJvbSB3aGljaCAqLnBvIGZpbGVzIHdpbGwgYmUgbG9hZGVkLiAqL1xuICBsb2NhbGVQYXRoPzogc3RyaW5nO1xuICAvKiogQXJyYXkgb2YgVVJMcyB0byBhZGRpdGlvbmFsICouY3NzIGZpbGVzIHRvIGJlIGxvYWRlZCBhdCBydW50aW1lLiAqL1xuICBleHRyYUNzc1VybHM/OiBzdHJpbmdbXTtcbiAgLyoqIERvY3VtZW50YXRpb24gbGlua3Mgc2V0dGluZ3MuICovXG4gIGRvY3M/OiBEb2NzO1xuICAvKiogQXBwbGljYXRpb24gaWNvbiB0byBiZSBkaXNwbGF5ZWQgaW4gYXBwIHN3aXRjaGVyIGFuZCBoZWFkZXIgYmFyLiAqL1xuICBpY29uPzogSWNvbjtcblxuICAvLyBUaGVzZSBhcmUgdGhlIG9sZCBvcHRpb25zXG4gIC8qKiBIaWRlIGFwcGxpY2F0aW9uIGluIGFwcCBzd2l0Y2hlciAoc2F2ZWQgdG8gdGhlIHNlcnZlcikuICovXG4gIG5vQXBwU3dpdGNoZXI/OiBib29sZWFuO1xuICAvKiogSFRNTCBwYWdlIHRpdGxlLiAqL1xuICBnbG9iYWxUaXRsZT86IHN0cmluZztcbiAgLyoqIEhpZGUgXCJwb3dlcmVkIGJ5XCIgYW5kIHZlcnNpb24gaW5mbyBhdCB0aGUgYm90dG9tIG9mIHRoZSBuYXZpZ2F0b3IgYW5kIGluIHRoZSByaWdodCBkcmF3ZXIuICovXG4gIGhpZGVQb3dlcmVkPzogYm9vbGVhbjtcbiAgLyoqIEhpZGVzIHRoZSBcIlBsYXRmb3JtIGluZm9ybWF0aW9uXCIgaW4gdGhlIHJpZ2h0IGRyYXdlciwgd2lsbCBvdmVycnVsZSB0aGUgXCJoaWRlUG93ZXJlZFwiIG9wdGlvbiAqL1xuICBoaWRlUGxhdGZvcm1JbmZvcm1hdGlvbj86IGJvb2xlYW47XG4gIC8qKiBVUkwgdG8gc3VwcG9ydCBwYWdlIChzZXQgdG8gYGZhbHNlYCB0byBoaWRlIHRoZSBsaW5rKS4gKi9cbiAgc3VwcG9ydFVybD86IGJvb2xlYW4gfCBzdHJpbmc7XG4gIC8qKlxuICAgKiBSZXBsYWNlbWVudCBzdHJpbmcgZm9yIGB1c2VyYCBmaWVsZCBpbiBhdWRpdCBsb2dzIGZvciBhY3Rpb25zIHBlcmZvcm1lZCBieSBhIHN1cHBvcnQgdXNlclxuICAgKiAoYXZhaWxhYmxlIHBsYWNlaG9sZGVyczogYHt7c3VwcG9ydF91c2VyfX1gLCBge3tzdXBwb3J0ZWRfdXNlcn19YCkuXG4gICAqL1xuICBzdXBwb3J0VXNlclN0cmluZz86IHN0cmluZztcbiAgLyoqXG4gICAqIERpc2FibGVzIHJlYWx0aW1lIHVwZGF0ZXMgb24gdGhlIG1hcCB3aWRnZXQgYW5kIG1hcHMgaW4gZ2VuZXJhbC5cbiAgICovXG4gIG1hcFdpZGdldFJlYWx0aW1lRGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGFkanVzdCB0aGUgZGVmYXVsdCBwYWdlc2l6ZSBvZiAxMDAgaXRlbXMgb2YgdGhlIG1hcCB3aWRnZXQgYW5kIG1hcHMgaW4gZ2VuZXJhbC5cbiAgICovXG4gIG1hcFdpZGdldFBhZ2VTaXplPzogbnVtYmVyO1xuICAvKipcbiAgICogQWxsb3dzIHRvIGhpZGUgdGhlIGhpbnQgdGhhdCB0aGVyZSBhcmUgbW9yZSBkZXZpY2VzIHdpdGggZ2VvIGNvb3JkaW5hdGVzIHRoZW4gZGlzcGxheWVkIG9uIHRoZSBtYXAgd2lkZ2V0IGFuZCBtYXBzIGluIGdlbmVyYWwuXG4gICAqL1xuICBtYXBXaWRnZXRIaWRlTWF4RGV2aWNlT25NYXBIaW50PzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBvciBkaXNhYmxlIHRoZSByaWdodCBkcmF3ZXIuICovXG4gIHJpZ2h0RHJhd2VyPzogYm9vbGVhbjtcbiAgLyoqIEVuYWJsZSBvciBkaXNhYmxlIGJyZWFkY3J1bWJzIGluIHRoZSBoZWFkZXIgZm9yIGdyb3VwcyBhbmQgZGV2aWNlcyAoZGVmYXVsdDogZmFsc2UpLiAqL1xuICBicmVhZGNydW1icz86IGJvb2xlYW47XG4gIC8qKiBDb2xsYXBzZSBuYXZpZ2F0b3Igb24gaW5pdGlhbCBsb2FkLiAqL1xuICBoaWRlTmF2aWdhdG9yPzogYm9vbGVhbjtcbiAgLyoqIFNob3cgdGFicyBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseS4gKi9cbiAgdGFic0hvcml6b250YWw/OiBib29sZWFuO1xuICAvKiogQWRkaXRpb25hbCBsaW5rIHRvIGRpc3BsYXkgb24gbG9naW4gc2NyZWVuLiAqL1xuICBsb2dpbkV4dHJhTGluaz86IExvZ2luRXh0cmFMaW5rO1xuICAvKiogRW5hYmxlIG9yIGRpc2FibGUgc3RvcmFnZSBsaW1pdGF0aW9uIGZlYXR1cmUuICovXG4gIHN0b3JhZ2VMaW1pdGF0aW9uRmVhdHVyZUVuYWJsZWQ/OiBib29sZWFuO1xuICAvKiogTmFtZSBvZiBjb21wYW55IGhhbmRsaW5nIHN1cHBvcnQgcmVxdWVzdHMgZnJvbSBhcHAgdXNlcnMgKGRpc3BsYXllZCBpbiBub3RpZmljYXRpb24gbWVzc2FnZSkuICovXG4gIGNvbXBhbnlOYW1lPzogc3RyaW5nO1xuICAvKiogVVJMIHRlbXBsYXRlIGZvciBkb2N1bWVudGF0aW9uIGxpbmtzIChkZWZhdWx0OiBgJyR7ZG9jc0Jhc2VVcmx9JHtwYXJ0aWFsVXJsfSdgKS4gKi9cbiAgZ3VpZGVIcmVmVGVtcGxhdGU/OiBzdHJpbmc7XG4gIC8qKiBCYXNlIFVSTCBmb3IgZG9jdW1lbnRhdGlvbiBsaW5rcyAoaW5jbHVkZSBge3sgdmVyc2lvbiB9fWAgcGxhY2Vob2xkZXIsIGlmIHlvdSB3YW50IHZlcnNpb25lZCBsaW5rcykuICovXG4gIGRvY3NCYXNlVXJsPzogc3RyaW5nO1xuICAvKiogQ1NQIHN0cmluZyB0byBiZSBhcHBsaWVkIHRvIGBpbmRleC5odG1sYCBieSByZXBsYWNpbmcgZGVmYXVsdCB2YWx1ZXMuICovXG4gIGNvbnRlbnRTZWN1cml0eVBvbGljeT86IHN0cmluZztcbiAgLyoqIEVuYWJsZXMgY2xvdWQgc2Vuc29yIHdpemFyZCAqL1xuICBzZW5zb3JQaG9uZT86IGJvb2xlYW47XG4gIC8qKiBTaG93IG9yIGhpZGUgYSBuZXdzbGV0dGVyIHN1YnNjcmlwdGlvbiBjaGVja2JveCBpbiBlZGl0IHVzZXIgbW9kYWwuICovXG4gIG5ld3NsZXR0ZXI/OiBib29sZWFuO1xuICAvKiogUGF0aCB0byB0aGUgcm9vdCBub2RlX21vZHVsZXMgZGlyICh1c2VmdWwgd2hlbiB3b3JraW5nIGluIG1vbm9yZXBvIHNldHVwLCBlLmcuIHlhcm4gd29ya3NwYWNlcykuICovXG4gIHJvb3ROb2RlTW9kdWxlc1BhdGg/OiBzdHJpbmc7XG4gIC8qKiBDb29raWUgQmFubmVyIGNvbmZpZ3VyYXRpb24gKi9cbiAgY29va2llQmFubmVyPzogQ29va2llQmFubmVyQ29uZmlndXJhdGlvbjtcbiAgLyoqIENvb2tpZSBwcmVmZXJlbmNlcyBjb25maWd1cmF0aW9uLiBIZXJlIHlvdSBjYW4gZW5hYmxlIG9yIGRpc2FibGUgY29va2llIGNhdGVnb3JpZXMgKi9cbiAgY29va2llUHJlZmVyZW5jZXM/OiBDb29raWVQcmVmZXJlbmNlc0NvbmZpZ3VyYXRpb247XG4gIC8qKiBBIGtleSBmb3IgdGhlIHByb2R1Y3QgZXhwZXJpZW5jZSBzb2Z0d2FyZSBHYWluc2lnaHQuICovXG4gIGdhaW5zaWdodEtleT86IHN0cmluZztcbiAgLyoqIERpc2FibGUgdXNlciB0cmFja2luZyAqL1xuICBkaXNhYmxlVHJhY2tpbmc/OiBib29sZWFuO1xuICAvKiogTmdNb2R1bGUgZXhwb3J0IGZvciBwbHVnaW5zLiAqL1xuICBleHBvcnRzPzogUGx1Z2luc0V4cG9ydHNbXTtcbiAgLyoqIExpc3Qgb2YgaW1wb3J0ZWQgcmVtb3RlIHBsdWdpbnMuICovXG4gIHJlbW90ZXM/OiBSZW1vdGVQbHVnaW5zO1xuICAvKiogVGhlIHBhY2thZ2Ugc291cmNlIGEgYXBwbGljYXRpb24gb3JpZ2lucyBmcm9tIGFzIElBcHBsaWNhdGlvbiBvciBzaW1wbHkgdGhlIGlkIG9mIHRoZSBzb3VyY2UgKi9cbiAgc291cmNlPzogc3RyaW5nIHwgbnVtYmVyIHwgSUFwcGxpY2F0aW9uO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBhc3NldHMgdG8gY29weSB0byB0aGUgYnVpbGQgb3V0cHV0LlxuICAgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2stY29udHJpYi9jb3B5LXdlYnBhY2stcGx1Z2luIGZvciBtb3JlIGluZm9ybWF0aW9uXG4gICAqIGFib3V0IHRoZSBwYXR0ZXJucyB0byBhZGQgaGVyZS5cbiAgICovXG4gIGNvcHk/OiBbXTtcbiAgLyoqXG4gICAqIEFsbG93cyB0byBlbmFibGUgb3IgZGlzYWJsZSBjb250ZXh0IGhlbHAsIG9yIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJhc2UgVVJMIHVzZWQgdG8gbG9hZCBpdHMgY29udGVudHMuXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBjb250ZXh0IGhlbHAgdXNlcyB0aGUgc2FtZSBiYXNlIFVSTCBhcyBkZWZpbmVkIGluIHRoZSBgZG9jc0Jhc2VVcmxgIG9wdGlvblxuICAgKiAoaWYgdGhpcyBvcHRpb24gaXMgdW5kZWZpbmVkLCB0aGVuIHRoZSBmb2xsb3dpbmcgdmFsdWUgd2lsbCBiZSB1c2VkOiBgaHR0cHM6Ly93d3cuY3VtdWxvY2l0eS5jb20vZ3VpZGVzL3t7dmVyc2lvbn19YCkuXG4gICAqIEFsdGVybmF0aXZlbHksIGlmIGEgc3RyaW5nIGlzIHByb3ZpZGVkIGhlcmUsIGl0J2xsIGJlIHVzZWQgYXMgdGhlIGJhc2UgVVJMXG4gICAqIGFuZCBhbnkgYHt7IHZlcnNpb24gfX1gIHBsYWNlaG9sZGVyIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgcmVsZXZhbnQgZG9jcyB2ZXJzaW9uLlxuICAgKi9cbiAgY29udGV4dEhlbHA/OiBib29sZWFuIHwgc3RyaW5nO1xuICAvKipcbiAgICogQnkgZGVmYXVsdCwgY29ja3BpdCBhbmQgZGV2aWNlbWFuYWdlbWVudCB1c2UgdGhlIG9ubHlSb290cyBxdWVyeSB0byByZXNvbHZlIHJvb3Qgbm9kZXMuIFRoaXNcbiAgICogY291bGQgbGVhZCB0byBwZXJmb3JtYW5jZSBpc3N1ZXMsIGlmIGEgY3VzdG9tZXIgaGFzIGEgbG90IG9mIHJvb3Qgbm9kZXMuIFRoZXJlZm9yZSB5b3UgY2FuIGRpc2FibGVcbiAgICogdGhlIHVzZSBvZiB0aGlzIHF1ZXJ5IHdpdGggdGhpcyBmbGFnLlxuICAgKi9cbiAgZGlzYWJsZU9ubHlSb290c1F1ZXJ5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFsbG93cyB0byBmb3JjZSBzaG93aW5nIHRoZSBzZXR1cCB3aXphcmQuXG4gICAqL1xuICBmb3JjZVNldHVwPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgYXBwbGljYXRpb24gbmVlZHMgdG8gc2hvdyB0aGUgc2V0dXAgd2l6YXJkLlxuICAgKi9cbiAgaXNTZXR1cD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0IGEgV2ViU0RLIGFwcCByZXF1aXJlcyB0aGUgdXNlciB0byBiZSBsb2dnZWQgaW4uXG4gICAqIEluIGNhc2UgeW91IHdvdWxkIGxpa2UgdG8gZGV2ZWxvcCBqdXN0IGEgc3RhdGljIGFwcGxpY2F0aW9uLCB0aGF0IGRvZXMgbm90IHJlcXVpcmUgYW55IGtpbmQgb2YgYWNjZXNzIHRvIHRoZSBiYWNrZW5kLFxuICAgKiB5b3UgY2FuIHVzZSB0aGlzIGZsYWcgdG8gZGlzYWJsZSB0aGUgbG9naW4gc2NyZWVuLlxuICAgKiBOT1RFOiBub3QgYWxsIFdlYlNESyBjb21wb25lbnRzIHN1cHBvcnQgdGhpcywgc29tZSBtaWdodCByZXF1aXJlIHRoZSB1c2VyIHRvIGJlIGxvZ2dlZCBpbiBhbmQgd29uJ3Qgd29yay5cbiAgICovXG4gIG5vTG9naW4/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHRvIG9wdCBvdXQgb2Ygc3VwcG9ydGluZy9sb2FkaW5nIHBsdWdpbnMgZm9yIHRoaXMgYXBwbGljYXRpb24uXG4gICAqL1xuICBub1BsdWdpbnM/OiBib29sZWFuO1xuICAvKipcbiAgICogQWxsb3dzIHRvIG9wdCBvdXQgb2YgdGhlIHZlcnNpb24gd2FybmluZyB3aGljaCBpcyBzaG93biBpbiB0aGUgZGV2IHRvb2xzLlxuICAgKi9cbiAgbm9WZXJzaW9uV2FybmluZz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3RlUGx1Z2lucyB7XG4gIC8qKlxuICAgKiBBIGtleSB2YWx1ZSBwYWlyLCB3aGlsZSB0aGUgdmFsdWUgaXMgYW4gYXJyYXkgb2YgbW9kdWxlcyB0byBsb2FkIGFuZCB0aGVcbiAgICoga2V5IGlzIHRoZSBjb250ZXh0IHBhdGguXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYGpzXG4gICAqIHtcbiAgICogICAgJ2NvY2twaXQnOiBbJ0hvbWVEYXNoYm9hcmRNb2R1bGUnLCAnRGF0YUV4cGxvcmVyRGFzaGJvYXJkJ10sXG4gICAqICAgICd3aWRnZXQtcGFja2FnZUAxLjAuMCc6IFsnRXh0ZW5kZWRNYXBXaWRnZXQnXVxuICAgKiB9XG4gICAqIGBgXG4gICAqL1xuICBba2V5OiBzdHJpbmddOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5zRXhwb3J0cyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgQW5ndWxhciBtb2R1bGUgY2xhc3MuXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZmlsZSBwYXRoIHRvIHRoZSBtb2R1bGUgdHlwZXNjcmlwdCBmaWxlLlxuICAgKi9cbiAgcGF0aDogc3RyaW5nO1xuICAvKipcbiAgICogQW4gc2hvcnQgZGVzY3JpcHRpb24gYWJvdXQgd2hhdCB0aGUgbW9kdWxlIGRvZXMuXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIEFsbG93cyB0byBzY29wZSB0aGUgcGx1Z2luIHRvIGNlcnRhaW4gYXBwbGljYXRpb25zLiBFLmcuIGlmIHlvdVxuICAgKiBhZGQgaGVyZSAnY29ja3BpdCcsIHRoZSBwbHVnaW4gY2FuIG9ubHkgYmUgaW5zdGFsbGVkIGludG8gYW5cbiAgICogYXBwbGljYXRpb24gb24gdGhlIGNvbnRleHRQYXRoIGBhcHBzL2NvY2twaXRgLiBZb3UgY2FuIHVzZSBjb21tYVxuICAgKiBzZXBhcmF0ZWQgdmFsdWVzLCBhc3RlcmlzayAoZGVmYXVsdCkgdG8gYWxsb3cgYWxsIGFwcGxpY2F0aW9ucyBvclxuICAgKiBgc2VsZmAgdG8gbGltaXQgdGhlIHBsdWdpbiB0byB0aGUgY3VycmVudCBzb2x1dGlvbi5cbiAgICovXG4gIHNjb3BlPzogJyonIHwgJ3NlbGYnIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvb2tpZUJhbm5lckNvbmZpZ3VyYXRpb24ge1xuICAvKiogSGVyZSB5b3UgY2FuIHNldCB0aGUgdGl0bGUgb2YgQ29va2llIEJhbm5lciAqL1xuICBjb29raWVCYW5uZXJUaXRsZT86IHN0cmluZztcbiAgLyoqIEhlcmUgeW91IGNhbiBzZXQgdGhlIFRleHQgb2YgQ29va2llIEJhbm5lciAqL1xuICBjb29raWVCYW5uZXJUZXh0Pzogc3RyaW5nO1xuICAvKiogSGVyZSB5b3UgY2FuIHNldCB0aGUgcG9saWN5VXJsIG9mIENvb2tpZSBCYW5uZXIgKi9cbiAgcG9saWN5VXJsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvb2tpZVByZWZlcmVuY2VzQ29uZmlndXJhdGlvbiB7XG4gIC8qKiBUaGlzIGNhdGVnb3J5IGluY2x1ZGVzIGUuZy4gY29va2llcyByZWxhdGVkIHRvIGxvZ2dpbmcgaW4gICovXG4gIHJlcXVpcmVkPzogYm9vbGVhbiB8IHN0cmluZztcbiAgLyoqIFRoaXMgY2F0ZWdvcnkgaW5jbHVkZXMgZS5nLiB0cmFja2luZyBjb29raWVzICAqL1xuICBmdW5jdGlvbmFsPzogYm9vbGVhbiB8IHN0cmluZztcbiAgLyoqIFRoaXMgY2F0ZWdvcnkgaW5jbHVkZXMgZS5nLiBjb29raWVzIHJlbGF0ZWQgdG8gYWR2ZXJ0aXNpbmcgICovXG4gIG1hcmtldGluZz86IGJvb2xlYW4gfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9naW5FeHRyYUxpbmsge1xuICB1cmw6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJY29uIHtcbiAgY2xhc3M/OiBzdHJpbmc7XG4gIHVybD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2NzIHtcbiAgLyoqIEhpZGUgZGVmYXVsdCBsaW5rcyB0byBkb2N1bWVudGF0aW9uLiAqL1xuICBub0RlZmF1bHQ6IGJvb2xlYW47XG4gIC8qKiBMaXN0IG9mIHJlZ2V4IHN0cmluZ3MuIE1hdGNoaW5nIGRlZmF1bHQgZG9jcyBVUkxzIHdpbGwgYmUgaGlkZGVuLiAqL1xuICBleGNsdWRlRGVmYXVsdDogc3RyaW5nW107XG4gIC8qKiBBZGRpdGlvbmFsIGxpbmtzIHRvIGJlIGRpc3BsYXllZC4gKi9cbiAgbGlua3M6IExpbmtzW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlua3Mge1xuICAvKiogSWNvbiBjbGFzc2VzIHdpdGggYGM4eS1pY29uYCwgZS5nLiBgYzh5LWljb24gYzh5LWljb24tYWRkLXVzZXJgIG9yIGBjOHktaWNvbiBjOHktaWNvbi1kZXZpY2UtY29ubmVjdGAuICovXG4gIGljb246IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgdXJsOiBzdHJpbmc7XG4gIHR5cGU6ICdkb2MnIHwgJ3F1aWNrbGluayc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSTE4bkV4dHJhIHtcbiAgW2xhbmdDb2RlOiBzdHJpbmddOiBJMThuRXh0cmFMYW5nQ29kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJMThuRXh0cmFMYW5nQ29kZSB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYW5ndWFnZXMge1xuICBbbGFuZ0NvZGU6IHN0cmluZ106IExhbmd1YWdlc0xhbmdDb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExhbmd1YWdlc0xhbmdDb2RlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBuYXRpdmVOYW1lOiBzdHJpbmc7XG4gIHVybDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJyYW5kaW5nQ3NzVmFycyB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Directive, ElementRef, Input } from '@angular/core';
|
|
2
|
+
import { Subject, fromEvent, merge } from 'rxjs';
|
|
3
|
+
import { filter, map, takeUntil } from 'rxjs/operators';
|
|
4
|
+
import { BsDatepickerDirective } from 'ngx-bootstrap/datepicker';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class CloseDatePickerDirective {
|
|
7
|
+
constructor(el) {
|
|
8
|
+
this.el = el;
|
|
9
|
+
this.destroy$ = new Subject();
|
|
10
|
+
}
|
|
11
|
+
ngOnInit() {
|
|
12
|
+
const element = this.el.nativeElement.closest('.dropdown-menu');
|
|
13
|
+
const clickEvent$ = element
|
|
14
|
+
? merge(fromEvent(element, 'click'), fromEvent(document, 'click'))
|
|
15
|
+
: fromEvent(document, 'click');
|
|
16
|
+
clickEvent$
|
|
17
|
+
.pipe(map((event) => event.target), filter(target => !this.el.nativeElement.contains(target)), // i.e. anything which is not inside this `c8y-date-time-picker`
|
|
18
|
+
takeUntil(this.destroy$))
|
|
19
|
+
.subscribe(() => this.closeDatepicker.hide());
|
|
20
|
+
}
|
|
21
|
+
ngOnDestroy() {
|
|
22
|
+
this.destroy$.next();
|
|
23
|
+
this.destroy$.complete();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
CloseDatePickerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CloseDatePickerDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
27
|
+
CloseDatePickerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.6", type: CloseDatePickerDirective, selector: "[closeDatepicker]", inputs: { closeDatepicker: "closeDatepicker" }, ngImport: i0 });
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CloseDatePickerDirective, decorators: [{
|
|
29
|
+
type: Directive,
|
|
30
|
+
args: [{
|
|
31
|
+
selector: '[closeDatepicker]'
|
|
32
|
+
}]
|
|
33
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { closeDatepicker: [{
|
|
34
|
+
type: Input
|
|
35
|
+
}] } });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvc2UtZGF0ZS1waWNrZXIuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9kYXRlLXRpbWUtcGlja2VyL2Nsb3NlLWRhdGUtcGlja2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUtqRSxNQUFNLE9BQU8sd0JBQXdCO0lBTW5DLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBTHhCLGFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBS0UsQ0FBQztJQUV0QyxRQUFRO1FBQ04sTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDaEUsTUFBTSxXQUFXLEdBQUcsT0FBTztZQUN6QixDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNsRSxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqQyxXQUFXO2FBQ1IsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLEtBQW1CLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFpQixDQUFDLEVBQ3JELE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsZ0VBQWdFO1FBQzNILFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQ3pCO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDOztxSEF6QlUsd0JBQXdCO3lHQUF4Qix3QkFBd0I7MkZBQXhCLHdCQUF3QjtrQkFIcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO2lCQUM5QjtpR0FLQyxlQUFlO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBmcm9tRXZlbnQsIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQnNEYXRlcGlja2VyRGlyZWN0aXZlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9kYXRlcGlja2VyJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2Nsb3NlRGF0ZXBpY2tlcl0nXG59KVxuZXhwb3J0IGNsYXNzIENsb3NlRGF0ZVBpY2tlckRpcmVjdGl2ZSB7XG4gIHByb3RlY3RlZCBkZXN0cm95JCA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgQElucHV0KClcbiAgY2xvc2VEYXRlcGlja2VyOiBCc0RhdGVwaWNrZXJEaXJlY3RpdmU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoJy5kcm9wZG93bi1tZW51Jyk7XG4gICAgY29uc3QgY2xpY2tFdmVudCQgPSBlbGVtZW50XG4gICAgICA/IG1lcmdlKGZyb21FdmVudChlbGVtZW50LCAnY2xpY2snKSwgZnJvbUV2ZW50KGRvY3VtZW50LCAnY2xpY2snKSlcbiAgICAgIDogZnJvbUV2ZW50KGRvY3VtZW50LCAnY2xpY2snKTtcbiAgICBjbGlja0V2ZW50JFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4gZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpLFxuICAgICAgICBmaWx0ZXIodGFyZ2V0ID0+ICF0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0KSksIC8vIGkuZS4gYW55dGhpbmcgd2hpY2ggaXMgbm90IGluc2lkZSB0aGlzIGBjOHktZGF0ZS10aW1lLXBpY2tlcmBcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2VEYXRlcGlja2VyLmhpZGUoKSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
|