@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
95 lines • 13.7 kB
JavaScript
// © 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 { DOCUMENT } from "@angular/common";
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostBinding, Inject, Input, SecurityContext, ViewChild, } from "@angular/core";
import { DomSanitizer } from "@angular/platform-browser";
import { EmbeddedContentMode } from "../types";
import * as i0 from "@angular/core";
import * as i1 from "@angular/platform-browser";
/* @dynamic */
export class EmbeddedContentComponent {
static { this.lateLoadKey = "EmbeddedContentComponent"; }
constructor(changeDetector, document, domSanitizer) {
this.changeDetector = changeDetector;
this.document = document;
this.domSanitizer = domSanitizer;
this.sanitized = true;
this.elementClass = "";
}
ngOnInit() {
this.validateAndApplyEmbeddedContent();
}
ngOnChanges(changes) {
if (changes.customEmbeddedContent &&
!changes.customEmbeddedContent.firstChange) {
this.validateAndApplyEmbeddedContent();
}
}
validateAndApplyEmbeddedContent() {
const context = this.sanitized &&
this.sanitizeContext(this.mode === EmbeddedContentMode.URL
? SecurityContext.URL
: SecurityContext.HTML);
this.anchor.nativeElement.innerHTML = "";
if (this.mode === EmbeddedContentMode.URL) {
const iframe = this.document.createElement("iframe");
iframe.src = (this.sanitized ? context : this.customEmbeddedContent);
iframe.width = "100%";
iframe.height = "100%";
this.anchor.nativeElement.appendChild(iframe);
}
else {
this.anchor.nativeElement.innerHTML = this.sanitized
? context
: this.customEmbeddedContent;
}
}
sanitizeContext(securityContextValue) {
return this.domSanitizer.sanitize(securityContextValue, this.customEmbeddedContent?.trim());
}
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EmbeddedContentComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: DOCUMENT }, { token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: EmbeddedContentComponent, selector: "nui-embedded-content", inputs: { mode: "mode", customEmbeddedContent: "customEmbeddedContent", sanitized: "sanitized", elementClass: "elementClass" }, host: { properties: { "class": "this.elementClass" } }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: `<div style="width: 100%; height: 100%" #anchor></div>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EmbeddedContentComponent, decorators: [{
type: Component,
args: [{
selector: "nui-embedded-content",
template: `<div style="width: 100%; height: 100%" #anchor></div>`,
changeDetection: ChangeDetectionStrategy.OnPush,
}]
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: Document, decorators: [{
type: Inject,
args: [DOCUMENT]
}] }, { type: i1.DomSanitizer }], propDecorators: { mode: [{
type: Input
}], customEmbeddedContent: [{
type: Input
}], sanitized: [{
type: Input
}], elementClass: [{
type: Input
}, {
type: HostBinding,
args: ["class"]
}], anchor: [{
type: ViewChild,
args: ["anchor", { static: true }]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1iZWRkZWQtY29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZW1iZWRkZWQtY29udGVudC9lbWJlZGRlZC1jb250ZW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5REFBeUQ7QUFDekQsRUFBRTtBQUNGLCtFQUErRTtBQUMvRSw0RUFBNEU7QUFDNUUsOEVBQThFO0FBQzlFLCtFQUErRTtBQUMvRSw4RUFBOEU7QUFDOUUsNERBQTREO0FBQzVELEVBQUU7QUFDRiw2RUFBNkU7QUFDN0UsdURBQXVEO0FBQ3ZELEVBQUU7QUFDRiw2RUFBNkU7QUFDN0UsNEVBQTRFO0FBQzVFLCtFQUErRTtBQUMvRSwwRUFBMEU7QUFDMUUsaUZBQWlGO0FBQ2pGLDZFQUE2RTtBQUM3RSxpQkFBaUI7QUFFakIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBR0wsZUFBZSxFQUVmLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7QUFFL0MsY0FBYztBQU1kLE1BQU0sT0FBTyx3QkFBd0I7YUFHbkIsZ0JBQVcsR0FBRywwQkFBMEIsQUFBN0IsQ0FBOEI7SUFVdkQsWUFDVyxjQUFpQyxFQUNkLFFBQWtCLEVBQ3BDLFlBQTBCO1FBRjNCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNkLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDcEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFUdEIsY0FBUyxHQUFZLElBQUksQ0FBQztRQUVKLGlCQUFZLEdBQUcsRUFBRSxDQUFDO0lBUXJELENBQUM7SUFFRyxRQUFRO1FBQ1gsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVNLFdBQVcsQ0FBQyxPQUFzQjtRQUNyQyxJQUNJLE9BQU8sQ0FBQyxxQkFBcUI7WUFDN0IsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsV0FBVyxFQUM1QztZQUNFLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO1NBQzFDO0lBQ0wsQ0FBQztJQUVPLCtCQUErQjtRQUNuQyxNQUFNLE9BQU8sR0FDVCxJQUFJLENBQUMsU0FBUztZQUNkLElBQUksQ0FBQyxlQUFlLENBQ2hCLElBQUksQ0FBQyxJQUFJLEtBQUssbUJBQW1CLENBQUMsR0FBRztnQkFDakMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFHO2dCQUNyQixDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FDN0IsQ0FBQztRQUVOLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFFekMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLG1CQUFtQixDQUFDLEdBQUcsRUFBRTtZQUN2QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyRCxNQUFNLENBQUMsR0FBRyxHQUFHLENBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQzlDLENBQUM7WUFDWixNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztZQUN0QixNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUV2QixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDakQ7YUFBTTtZQUNILElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUztnQkFDaEQsQ0FBQyxDQUFDLE9BQU87Z0JBQ1QsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztTQUNwQztJQUNMLENBQUM7SUFFTyxlQUFlLENBQ25CLG9CQUFxQztRQUVyQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUM3QixvQkFBb0IsRUFDcEIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLElBQUksRUFBRSxDQUNyQyxDQUFDO0lBQ04sQ0FBQztrSUFsRVEsd0JBQXdCLG1EQWVyQixRQUFRO3NIQWZYLHdCQUF3Qix5WEFIdkIsdURBQXVEOzs0RkFHeEQsd0JBQXdCO2tCQUxwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFFBQVEsRUFBRSx1REFBdUQ7b0JBQ2pFLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRDs7MEJBZ0JRLE1BQU07MkJBQUMsUUFBUTtvRUFWSixJQUFJO3NCQUFuQixLQUFLO2dCQUNVLHFCQUFxQjtzQkFBcEMsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUVnQyxZQUFZO3NCQUFqRCxLQUFLOztzQkFBSSxXQUFXO3VCQUFDLE9BQU87Z0JBRVUsTUFBTTtzQkFBNUMsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gwqkgMjAyMiBTb2xhcldpbmRzIFdvcmxkd2lkZSwgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vICBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0b1xuLy8gIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlXG4vLyAgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yXG4vLyAgc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vICBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyAgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vICBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uSW5pdCxcbiAgICBTZWN1cml0eUNvbnRleHQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuXG5pbXBvcnQgeyBJSGFzQ2hhbmdlRGV0ZWN0b3IgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IEVtYmVkZGVkQ29udGVudE1vZGUgfSBmcm9tIFwiLi4vdHlwZXNcIjtcblxuLyogQGR5bmFtaWMgKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm51aS1lbWJlZGRlZC1jb250ZW50XCIsXG4gICAgdGVtcGxhdGU6IGA8ZGl2IHN0eWxlPVwid2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJVwiICNhbmNob3I+PC9kaXY+YCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRW1iZWRkZWRDb250ZW50Q29tcG9uZW50XG4gICAgaW1wbGVtZW50cyBJSGFzQ2hhbmdlRGV0ZWN0b3IsIE9uSW5pdCwgT25DaGFuZ2VzXG57XG4gICAgcHVibGljIHN0YXRpYyBsYXRlTG9hZEtleSA9IFwiRW1iZWRkZWRDb250ZW50Q29tcG9uZW50XCI7XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgbW9kZTogRW1iZWRkZWRDb250ZW50TW9kZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tRW1iZWRkZWRDb250ZW50OiBzdHJpbmc7XG4gICAgQElucHV0KCkgcHVibGljIHNhbml0aXplZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBASG9zdEJpbmRpbmcoXCJjbGFzc1wiKSBwdWJsaWMgZWxlbWVudENsYXNzID0gXCJcIjtcblxuICAgIEBWaWV3Q2hpbGQoXCJhbmNob3JcIiwgeyBzdGF0aWM6IHRydWUgfSkgYW5jaG9yOiBFbGVtZW50UmVmO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgICAgICBwcml2YXRlIGRvbVNhbml0aXplcjogRG9tU2FuaXRpemVyXG4gICAgKSB7fVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbGlkYXRlQW5kQXBwbHlFbWJlZGRlZENvbnRlbnQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjaGFuZ2VzLmN1c3RvbUVtYmVkZGVkQ29udGVudCAmJlxuICAgICAgICAgICAgIWNoYW5nZXMuY3VzdG9tRW1iZWRkZWRDb250ZW50LmZpcnN0Q2hhbmdlXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUFuZEFwcGx5RW1iZWRkZWRDb250ZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlQW5kQXBwbHlFbWJlZGRlZENvbnRlbnQoKSB7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPVxuICAgICAgICAgICAgdGhpcy5zYW5pdGl6ZWQgJiZcbiAgICAgICAgICAgIHRoaXMuc2FuaXRpemVDb250ZXh0KFxuICAgICAgICAgICAgICAgIHRoaXMubW9kZSA9PT0gRW1iZWRkZWRDb250ZW50TW9kZS5VUkxcbiAgICAgICAgICAgICAgICAgICAgPyBTZWN1cml0eUNvbnRleHQuVVJMXG4gICAgICAgICAgICAgICAgICAgIDogU2VjdXJpdHlDb250ZXh0LkhUTUxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5hbmNob3IubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSBcIlwiO1xuXG4gICAgICAgIGlmICh0aGlzLm1vZGUgPT09IEVtYmVkZGVkQ29udGVudE1vZGUuVVJMKSB7XG4gICAgICAgICAgICBjb25zdCBpZnJhbWUgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpZnJhbWVcIik7XG4gICAgICAgICAgICBpZnJhbWUuc3JjID0gKFxuICAgICAgICAgICAgICAgIHRoaXMuc2FuaXRpemVkID8gY29udGV4dCA6IHRoaXMuY3VzdG9tRW1iZWRkZWRDb250ZW50XG4gICAgICAgICAgICApIGFzIHN0cmluZztcbiAgICAgICAgICAgIGlmcmFtZS53aWR0aCA9IFwiMTAwJVwiO1xuICAgICAgICAgICAgaWZyYW1lLmhlaWdodCA9IFwiMTAwJVwiO1xuXG4gICAgICAgICAgICB0aGlzLmFuY2hvci5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFuY2hvci5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IHRoaXMuc2FuaXRpemVkXG4gICAgICAgICAgICAgICAgPyBjb250ZXh0XG4gICAgICAgICAgICAgICAgOiB0aGlzLmN1c3RvbUVtYmVkZGVkQ29udGVudDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2FuaXRpemVDb250ZXh0KFxuICAgICAgICBzZWN1cml0eUNvbnRleHRWYWx1ZTogU2VjdXJpdHlDb250ZXh0XG4gICAgKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvbVNhbml0aXplci5zYW5pdGl6ZShcbiAgICAgICAgICAgIHNlY3VyaXR5Q29udGV4dFZhbHVlLFxuICAgICAgICAgICAgdGhpcy5jdXN0b21FbWJlZGRlZENvbnRlbnQ/LnRyaW0oKVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==