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

89 lines 13.4 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 { Inject, Injectable } from "@angular/core"; import isUndefined from "lodash/isUndefined"; import { BehaviorSubject, Subject } from "rxjs"; import { takeUntil } from "rxjs/operators"; import { EventBus } from "@nova-ui/bits"; import { PIZZAGNA_EVENT_BUS } from "../../types"; import { DashwizService } from "../components/wizard/dashwiz/dashwiz.service"; import { DATA_SOURCE_CREATED, DATA_SOURCE_OUTPUT } from "../types"; import * as i0 from "@angular/core"; import * as i1 from "../components/wizard/dashwiz/dashwiz.service"; import * as i2 from "@nova-ui/bits"; export class ConfiguratorDataSourceManagerService { constructor(eventBus, dashwizService) { this.eventBus = eventBus; this.dashwizService = dashwizService; this.onDestroy$ = new Subject(); this.dataSourceCreated$ = new Subject(); this.error$ = new Subject(); this.busy$ = new BehaviorSubject(false); this.dataSourceFields$ = new BehaviorSubject([]); this.eventBus.subscribeUntil(DATA_SOURCE_CREATED, this.onDestroy$, (event) => { if (!event.payload) { return; } this.onDataSourceCreated(event.payload); }); this.eventBus.subscribeUntil(DATA_SOURCE_OUTPUT, this.onDestroy$, (event) => { if (event.payload?.error) { this.error$.next(event.payload.error); } else { this.error$.next(null); const payload = isUndefined(event.payload.result) ? event.payload : event.payload.result || {}; if (payload?.dataFields) { this.dataSourceFields$.next(payload.dataFields); } } }); } onDataSourceCreated(dataSource) { this.dataSource = dataSource; this.dataSourceCreated$.next(); this.dataSource.busy ?.pipe(takeUntil(this.dataSourceCreated$)) .subscribe((isBusy) => { this.dashwizService?.component?.navigationControl.next({ busyState: { busy: isBusy, }, allowStepChange: !isBusy, }); this.busy$.next(isBusy); }); } ngOnDestroy() { this.onDestroy$.next(); this.onDestroy$.complete(); } /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfiguratorDataSourceManagerService, deps: [{ token: PIZZAGNA_EVENT_BUS }, { token: i1.DashwizService }], target: i0.ɵɵFactoryTarget.Injectable }); } /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfiguratorDataSourceManagerService }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfiguratorDataSourceManagerService, decorators: [{ type: Injectable }], ctorParameters: () => [{ type: i2.EventBus, decorators: [{ type: Inject, args: [PIZZAGNA_EVENT_BUS] }] }, { type: i1.DashwizService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdG9yLWRhdGEtc291cmNlLW1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29uZmlndXJhdG9yL3NlcnZpY2VzL2NvbmZpZ3VyYXRvci1kYXRhLXNvdXJjZS1tYW5hZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseURBQXlEO0FBQ3pELEVBQUU7QUFDRiwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLDhFQUE4RTtBQUM5RSwrRUFBK0U7QUFDL0UsOEVBQThFO0FBQzlFLDREQUE0RDtBQUM1RCxFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLHVEQUF1RDtBQUN2RCxFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLDRFQUE0RTtBQUM1RSwrRUFBK0U7QUFDL0UsMEVBQTBFO0FBQzFFLGlGQUFpRjtBQUNqRiw2RUFBNkU7QUFDN0UsaUJBQWlCO0FBRWpCLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sV0FBVyxNQUFNLG9CQUFvQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsUUFBUSxFQUFtQyxNQUFNLGVBQWUsQ0FBQztBQUcxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7OztBQUduRSxNQUFNLE9BQU8sb0NBQW9DO0lBWTdDLFlBQ3dDLFFBQTBCLEVBQ3RELGNBQThCO1FBREYsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7UUFDdEQsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBYmxDLGVBQVUsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUNoRCx1QkFBa0IsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUV6RCxXQUFNLEdBQ1QsSUFBSSxPQUFPLEVBQTJCLENBQUM7UUFDcEMsVUFBSyxHQUE2QixJQUFJLGVBQWUsQ0FDeEQsS0FBSyxDQUNSLENBQUM7UUFDSyxzQkFBaUIsR0FDcEIsSUFBSSxlQUFlLENBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBTTNDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUN4QixtQkFBbUIsRUFDbkIsSUFBSSxDQUFDLFVBQVUsRUFDZixDQUFDLEtBQTBCLEVBQUUsRUFBRTtZQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtnQkFDaEIsT0FBTzthQUNWO1lBQ0QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQ0osQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUN4QixrQkFBa0IsRUFDbEIsSUFBSSxDQUFDLFVBQVUsRUFDZixDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQ2QsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRTtnQkFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN6QztpQkFBTTtnQkFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkIsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO29CQUM3QyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU87b0JBQ2YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxPQUFPLEVBQUUsVUFBVSxFQUFFO29CQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztpQkFDbkQ7YUFDSjtRQUNMLENBQUMsQ0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELG1CQUFtQixDQUFDLFVBQXVCO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUUvQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUk7WUFDaEIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2FBQ3pDLFNBQVMsQ0FBQyxDQUFDLE1BQWUsRUFBRSxFQUFFO1lBQzNCLElBQUksQ0FBQyxjQUFjLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQztnQkFDbkQsU0FBUyxFQUFFO29CQUNQLElBQUksRUFBRSxNQUFNO2lCQUNmO2dCQUNELGVBQWUsRUFBRSxDQUFDLE1BQU07YUFDM0IsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU0sV0FBVztRQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDO2tJQW5FUSxvQ0FBb0Msa0JBYWpDLGtCQUFrQjtzSUFickIsb0NBQW9DOzs0RkFBcEMsb0NBQW9DO2tCQURoRCxVQUFVOzswQkFjRixNQUFNOzJCQUFDLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIMKpIDIwMjIgU29sYXJXaW5kcyBXb3JsZHdpZGUsIExMQy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyAgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG9cbi8vICBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZVxuLy8gIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vclxuLy8gIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyAgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vICBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vICBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vICBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyAgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vICBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyAgVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgaXNVbmRlZmluZWQgZnJvbSBcImxvZGFzaC9pc1VuZGVmaW5lZFwiO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuXG5pbXBvcnQgeyBFdmVudEJ1cywgSURhdGFGaWVsZCwgSURhdGFTb3VyY2UsIElFdmVudCB9IGZyb20gXCJAbm92YS11aS9iaXRzXCI7XG5cbmltcG9ydCB7IElEYXRhU291cmNlRXJyb3IgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9wcm92aWRlcnMvdHlwZXNcIjtcbmltcG9ydCB7IFBJWlpBR05BX0VWRU5UX0JVUyB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgRGFzaHdpelNlcnZpY2UgfSBmcm9tIFwiLi4vY29tcG9uZW50cy93aXphcmQvZGFzaHdpei9kYXNod2l6LnNlcnZpY2VcIjtcbmltcG9ydCB7IERBVEFfU09VUkNFX0NSRUFURUQsIERBVEFfU09VUkNFX09VVFBVVCB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdG9yRGF0YVNvdXJjZU1hbmFnZXJTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIG9uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByaXZhdGUgZGF0YVNvdXJjZUNyZWF0ZWQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBwdWJsaWMgZGF0YVNvdXJjZTogSURhdGFTb3VyY2U7XG4gICAgcHVibGljIGVycm9yJDogU3ViamVjdDxJRGF0YVNvdXJjZUVycm9yIHwgbnVsbD4gPVxuICAgICAgICBuZXcgU3ViamVjdDxJRGF0YVNvdXJjZUVycm9yIHwgbnVsbD4oKTtcbiAgICBwdWJsaWMgYnVzeSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oXG4gICAgICAgIGZhbHNlXG4gICAgKTtcbiAgICBwdWJsaWMgZGF0YVNvdXJjZUZpZWxkcyQ6IEJlaGF2aW9yU3ViamVjdDxBcnJheTxJRGF0YUZpZWxkPj4gPVxuICAgICAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PElEYXRhRmllbGQ+PihbXSk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChQSVpaQUdOQV9FVkVOVF9CVVMpIHByaXZhdGUgZXZlbnRCdXM6IEV2ZW50QnVzPElFdmVudD4sXG4gICAgICAgIHByaXZhdGUgZGFzaHdpelNlcnZpY2U6IERhc2h3aXpTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuZXZlbnRCdXMuc3Vic2NyaWJlVW50aWwoXG4gICAgICAgICAgICBEQVRBX1NPVVJDRV9DUkVBVEVELFxuICAgICAgICAgICAgdGhpcy5vbkRlc3Ryb3kkLFxuICAgICAgICAgICAgKGV2ZW50OiBJRXZlbnQ8SURhdGFTb3VyY2U+KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFldmVudC5wYXlsb2FkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5vbkRhdGFTb3VyY2VDcmVhdGVkKGV2ZW50LnBheWxvYWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZXZlbnRCdXMuc3Vic2NyaWJlVW50aWwoXG4gICAgICAgICAgICBEQVRBX1NPVVJDRV9PVVRQVVQsXG4gICAgICAgICAgICB0aGlzLm9uRGVzdHJveSQsXG4gICAgICAgICAgICAoZXZlbnQ6IElFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5wYXlsb2FkPy5lcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yJC5uZXh0KGV2ZW50LnBheWxvYWQuZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IkLm5leHQobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBheWxvYWQgPSBpc1VuZGVmaW5lZChldmVudC5wYXlsb2FkLnJlc3VsdClcbiAgICAgICAgICAgICAgICAgICAgICAgID8gZXZlbnQucGF5bG9hZFxuICAgICAgICAgICAgICAgICAgICAgICAgOiBldmVudC5wYXlsb2FkLnJlc3VsdCB8fCB7fTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBheWxvYWQ/LmRhdGFGaWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZUZpZWxkcyQubmV4dChwYXlsb2FkLmRhdGFGaWVsZHMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG9uRGF0YVNvdXJjZUNyZWF0ZWQoZGF0YVNvdXJjZTogSURhdGFTb3VyY2UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlID0gZGF0YVNvdXJjZTtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlQ3JlYXRlZCQubmV4dCgpO1xuXG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5idXN5XG4gICAgICAgICAgICA/LnBpcGUodGFrZVVudGlsKHRoaXMuZGF0YVNvdXJjZUNyZWF0ZWQkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGlzQnVzeTogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZGFzaHdpelNlcnZpY2U/LmNvbXBvbmVudD8ubmF2aWdhdGlvbkNvbnRyb2wubmV4dCh7XG4gICAgICAgICAgICAgICAgICAgIGJ1c3lTdGF0ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVzeTogaXNCdXN5LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBhbGxvd1N0ZXBDaGFuZ2U6ICFpc0J1c3ksXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmJ1c3kkLm5leHQoaXNCdXN5KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxufVxuIl19