UNPKG

@nova-ui/dashboards

Version:

Nova Dashboards is a framework designed to provide feature developers with a common solution for presenting data coming from various sources within a single view, as well as a set of predefined widget visualizations that are 100% configuration-driven and

68 lines 16.7 kB
// © 2022 SolarWinds Worldwide, LLC. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to // deal in the Software without restriction, including without limitation the // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or // sell copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, } from "@angular/core"; import { FormBuilder, Validators } from "@angular/forms"; import * as i0 from "@angular/core"; import * as i1 from "@angular/forms"; import * as i2 from "@nova-ui/bits"; import * as i3 from "../../../widget-editor-accordion/widget-editor-accordion.component"; import * as i4 from "../../../widget-editor-accordion/widget-editor-accordion-header/widget-editor-accordion-header.component"; import * as i5 from "@angular/common"; import * as i6 from "../../../../pipe/widget-editor-accordion-form-state.pipe"; import * as i7 from "../../../../pipe/widget-editor-accordion-header-icon.pipe"; export class TimeseriesTileDescriptionConfigurationComponent { static { this.lateLoadKey = "TimeseriesTileDescriptionConfigurationComponent"; } constructor(formBuilder, changeDetector) { this.formBuilder = formBuilder; this.changeDetector = changeDetector; this.formReady = new EventEmitter(); this.formDestroy = new EventEmitter(); } ngOnInit() { this.form = this.formBuilder.group({ label: [this.label, Validators.required], }); this.formReady.emit(this.form); } ngOnChanges(changes) { if (changes.label) { const value = changes.label.currentValue; if (value) { this.form.patchValue({ label: value }); } } } ngOnDestroy() { this.formDestroy.emit(this.form); } /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TimeseriesTileDescriptionConfigurationComponent, deps: [{ token: i1.FormBuilder }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); } /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TimeseriesTileDescriptionConfigurationComponent, selector: "nui-table-column-description-configuration", inputs: { label: "label" }, outputs: { formReady: "formReady", formDestroy: "formDestroy" }, usesOnChanges: true, ngImport: i0, template: "<ng-container [formGroup]=\"form\">\n <nui-widget-editor-accordion\n [state]=\"form.get('label') | nuiWidgetEditorAccordionFormState | async\"\n >\n <nui-widget-editor-accordion-header\n [headerIcon]=\"\n form.get('label') | nuiFormHeaderIconPipe : 'edit' | async\n \"\n [iconColor]=\"\n form.get('label') | nuiFormHeaderIconPipe : 'gray' : '' | async\n \"\n [subtitle]=\"form.get('label')?.value\"\n headerTitle=\"Description\"\n />\n <div\n class=\"timeseries-tile-description-configuration__accordion-content\"\n >\n <nui-form-field\n caption=\"Label\"\n i18n-caption\n [control]=\"form.get('label')\"\n >\n <nui-textbox\n formControlName=\"label\"\n placeholder=\"Set label\"\n i18n-placeholder\n ></nui-textbox>\n <nui-validation-message for=\"required\" i18n>\n This field is required\n </nui-validation-message>\n </nui-form-field>\n </div>\n </nui-widget-editor-accordion>\n</ng-container>\n", styles: [".timeseries-tile-description-configuration__accordion-content{padding:15px 15px 15px 46px}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i2.TextboxComponent, selector: "nui-textbox", inputs: ["caption", "autocomplete", "info", "customBoxWidth", "disabled", "hint", "name", "placeholder", "readonly", "rows", "type", "value", "isInErrorState", "ariaLabel", "isBusy"], outputs: ["textChange", "blurred"] }, { kind: "component", type: i2.FormFieldComponent, selector: "nui-form-field", inputs: ["control", "caption", "info", "infoTemplate", "hint", "hintTemplate", "customBoxWidth", "showOptionalText"] }, { kind: "component", type: i2.ValidationMessageComponent, selector: "nui-validation-message", inputs: ["show", "for"] }, { kind: "component", type: i3.WidgetEditorAccordionComponent, selector: "nui-widget-editor-accordion", inputs: ["showOpenStateIcon", "state"], outputs: ["openToggle"] }, { kind: "component", type: i4.WidgetEditorAccordionHeaderComponent, selector: "nui-widget-editor-accordion-header", inputs: ["headerIcon", "iconColor", "subtitle", "headerTitle"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.WidgetEditorAccordionFormStatePipe, name: "nuiWidgetEditorAccordionFormState" }, { kind: "pipe", type: i7.FormHeaderIconPipePipe, name: "nuiFormHeaderIconPipe" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TimeseriesTileDescriptionConfigurationComponent, decorators: [{ type: Component, args: [{ selector: "nui-table-column-description-configuration", changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [formGroup]=\"form\">\n <nui-widget-editor-accordion\n [state]=\"form.get('label') | nuiWidgetEditorAccordionFormState | async\"\n >\n <nui-widget-editor-accordion-header\n [headerIcon]=\"\n form.get('label') | nuiFormHeaderIconPipe : 'edit' | async\n \"\n [iconColor]=\"\n form.get('label') | nuiFormHeaderIconPipe : 'gray' : '' | async\n \"\n [subtitle]=\"form.get('label')?.value\"\n headerTitle=\"Description\"\n />\n <div\n class=\"timeseries-tile-description-configuration__accordion-content\"\n >\n <nui-form-field\n caption=\"Label\"\n i18n-caption\n [control]=\"form.get('label')\"\n >\n <nui-textbox\n formControlName=\"label\"\n placeholder=\"Set label\"\n i18n-placeholder\n ></nui-textbox>\n <nui-validation-message for=\"required\" i18n>\n This field is required\n </nui-validation-message>\n </nui-form-field>\n </div>\n </nui-widget-editor-accordion>\n</ng-container>\n", styles: [".timeseries-tile-description-configuration__accordion-content{padding:15px 15px 15px 46px}\n"] }] }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i0.ChangeDetectorRef }], propDecorators: { label: [{ type: Input }], formReady: [{ type: Output }], formDestroy: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXNlcmllcy10aWxlLWRlc2NyaXB0aW9uLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb25maWd1cmF0b3IvY29tcG9uZW50cy93aWRnZXRzL3RpbWVzZXJpZXMvdGltZXNlcmllcy10aWxlLWRlc2NyaXB0aW9uLWNvbmZpZ3VyYXRpb24vdGltZXNlcmllcy10aWxlLWRlc2NyaXB0aW9uLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb25maWd1cmF0b3IvY29tcG9uZW50cy93aWRnZXRzL3RpbWVzZXJpZXMvdGltZXNlcmllcy10aWxlLWRlc2NyaXB0aW9uLWNvbmZpZ3VyYXRpb24vdGltZXNlcmllcy10aWxlLWRlc2NyaXB0aW9uLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseURBQXlEO0FBQ3pELEVBQUU7QUFDRiwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLDhFQUE4RTtBQUM5RSwrRUFBK0U7QUFDL0UsOEVBQThFO0FBQzlFLDREQUE0RDtBQUM1RCxFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLHVEQUF1RDtBQUN2RCxFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLDRFQUE0RTtBQUM1RSwrRUFBK0U7QUFDL0UsMEVBQTBFO0FBQzFFLGlGQUFpRjtBQUNqRiw2RUFBNkU7QUFDN0UsaUJBQWlCO0FBRWpCLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sR0FFVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFVcEUsTUFBTSxPQUFPLCtDQUErQzthQUdqRCxnQkFBVyxHQUFHLGlEQUFpRCxBQUFwRCxDQUFxRDtJQVd2RSxZQUNZLFdBQXdCLEVBQ3pCLGNBQWlDO1FBRGhDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3pCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQVRsQyxjQUFTLEdBQ2YsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUN4QixnQkFBVyxHQUNqQixJQUFJLFlBQVksRUFBYSxDQUFDO0lBTy9CLENBQUM7SUFFRyxRQUFRO1FBQ1gsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUMvQixLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDM0MsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxXQUFXLENBQUMsT0FBc0I7UUFDckMsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO1lBQ2YsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDekMsSUFBSSxLQUFLLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzthQUMxQztTQUNKO0lBQ0wsQ0FBQztJQUVNLFdBQVc7UUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztrSUF0Q1EsK0NBQStDO3NIQUEvQywrQ0FBK0Msb01DMUM1RCx5dkNBa0NBOzs0RkRRYSwrQ0FBK0M7a0JBTjNELFNBQVM7K0JBQ0ksNENBQTRDLG1CQUdyQyx1QkFBdUIsQ0FBQyxNQUFNO2dIQU90QyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTTtnQkFFRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLy8gwqkgMjAyMiBTb2xhcldpbmRzIFdvcmxkd2lkZSwgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vICBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0b1xuLy8gIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlXG4vLyAgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yXG4vLyAgc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vICBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyAgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vICBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcblxuaW1wb3J0IHsgSUhhc0NoYW5nZURldGVjdG9yLCBJSGFzRm9ybSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi90eXBlc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJudWktdGFibGUtY29sdW1uLWRlc2NyaXB0aW9uLWNvbmZpZ3VyYXRpb25cIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3RpbWVzZXJpZXMtdGlsZS1kZXNjcmlwdGlvbi1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL3RpbWVzZXJpZXMtdGlsZS1kZXNjcmlwdGlvbi1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5sZXNzXCJdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUaW1lc2VyaWVzVGlsZURlc2NyaXB0aW9uQ29uZmlndXJhdGlvbkNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgSUhhc0NoYW5nZURldGVjdG9yLCBJSGFzRm9ybVxue1xuICAgIHN0YXRpYyBsYXRlTG9hZEtleSA9IFwiVGltZXNlcmllc1RpbGVEZXNjcmlwdGlvbkNvbmZpZ3VyYXRpb25Db21wb25lbnRcIjtcblxuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG5cbiAgICBAT3V0cHV0KCkgZm9ybVJlYWR5OiBFdmVudEVtaXR0ZXI8Rm9ybUdyb3VwPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Rm9ybUdyb3VwPigpO1xuICAgIEBPdXRwdXQoKSBmb3JtRGVzdHJveTogRXZlbnRFbWl0dGVyPEZvcm1Hcm91cD4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPEZvcm1Hcm91cD4oKTtcblxuICAgIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgICAgIHB1YmxpYyBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgbGFiZWw6IFt0aGlzLmxhYmVsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5mb3JtUmVhZHkuZW1pdCh0aGlzLmZvcm0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmxhYmVsKSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNoYW5nZXMubGFiZWwuY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoeyBsYWJlbDogdmFsdWUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybURlc3Ryb3kuZW1pdCh0aGlzLmZvcm0pO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgPG51aS13aWRnZXQtZWRpdG9yLWFjY29yZGlvblxuICAgICAgICBbc3RhdGVdPVwiZm9ybS5nZXQoJ2xhYmVsJykgfCBudWlXaWRnZXRFZGl0b3JBY2NvcmRpb25Gb3JtU3RhdGUgfCBhc3luY1wiXG4gICAgPlxuICAgICAgICA8bnVpLXdpZGdldC1lZGl0b3ItYWNjb3JkaW9uLWhlYWRlclxuICAgICAgICAgICAgW2hlYWRlckljb25dPVwiXG4gICAgICAgICAgICAgICAgZm9ybS5nZXQoJ2xhYmVsJykgfCBudWlGb3JtSGVhZGVySWNvblBpcGUgOiAnZWRpdCcgfCBhc3luY1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtpY29uQ29sb3JdPVwiXG4gICAgICAgICAgICAgICAgZm9ybS5nZXQoJ2xhYmVsJykgfCBudWlGb3JtSGVhZGVySWNvblBpcGUgOiAnZ3JheScgOiAnJyB8IGFzeW5jXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3N1YnRpdGxlXT1cImZvcm0uZ2V0KCdsYWJlbCcpPy52YWx1ZVwiXG4gICAgICAgICAgICBoZWFkZXJUaXRsZT1cIkRlc2NyaXB0aW9uXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJ0aW1lc2VyaWVzLXRpbGUtZGVzY3JpcHRpb24tY29uZmlndXJhdGlvbl9fYWNjb3JkaW9uLWNvbnRlbnRcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8bnVpLWZvcm0tZmllbGRcbiAgICAgICAgICAgICAgICBjYXB0aW9uPVwiTGFiZWxcIlxuICAgICAgICAgICAgICAgIGkxOG4tY2FwdGlvblxuICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImZvcm0uZ2V0KCdsYWJlbCcpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bnVpLXRleHRib3hcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNldCBsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIGkxOG4tcGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgICA+PC9udWktdGV4dGJveD5cbiAgICAgICAgICAgICAgICA8bnVpLXZhbGlkYXRpb24tbWVzc2FnZSBmb3I9XCJyZXF1aXJlZFwiIGkxOG4+XG4gICAgICAgICAgICAgICAgICAgIFRoaXMgZmllbGQgaXMgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICA8L251aS12YWxpZGF0aW9uLW1lc3NhZ2U+XG4gICAgICAgICAgICA8L251aS1mb3JtLWZpZWxkPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L251aS13aWRnZXQtZWRpdG9yLWFjY29yZGlvbj5cbjwvbmctY29udGFpbmVyPlxuIl19