UNPKG

e5core-angular-ui

Version:

e5 Anywhere Angular UI

211 lines 19 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; import { UiDocumentService } from 'e5core-angular-services'; import { DataSourceColumnStatus } from './data-source-column'; import { map } from 'rxjs/operators'; import { of } from 'rxjs'; import * as i0 from "@angular/core"; import * as i1 from "e5core-angular-services"; export class DocumentDataSourceService { /** * @param {?} uiDocumentService */ constructor(uiDocumentService) { this.uiDocumentService = uiDocumentService; this.folderName = ""; this.fieldsToShow = null; this.searchOptions = {}; } /** * @return {?} */ defaultOptions() { return (this.searchOptions); } /** * @param {?} options * @return {?} */ setDefaultOptions(options) { this.searchOptions = Object.assign({}, options); // clone } /** * @param {?} libraryId * @param {?} folderName * @param {?} includeSelect * @param {?} fieldsToShow * @param {?} searchText * @return {?} */ setLibrary(libraryId, folderName, includeSelect, fieldsToShow, searchText) { this.libraryId = libraryId; this.folderName = folderName; this.includeSelect = includeSelect; this.fieldsToShow = fieldsToShow; this.searchText = searchText; return (this); } /** * @return {?} */ columns() { /** @type {?} */ let columns = this.fieldsToShow.filter(f => f.display).map(sf => (/** @type {?} */ ({ code: sf.fieldCode, label: sf.name, type: "Input", status: DataSourceColumnStatus.Selected }))); columns = this.addOptionalColumns(columns); return of(columns); } /** * @private * @param {?} columns * @return {?} */ addOptionalColumns(columns) { if (this.includeSelect) // Add to start columns.unshift((/** @type {?} */ ({ label: "", code: "ActionSelect", type: "ActionSelect", status: DataSourceColumnStatus.Selected }))); return (columns); } /** * @param {?} page * @param {?} pageSize * @param {?} optionsIn * @return {?} */ read(page, pageSize, optionsIn) { /** @type {?} */ let options = Object.assign({}, this.searchOptions, optionsIn); /** @type {?} */ var returnFields = ""; if (this.fieldsToShow && typeof (this.fieldsToShow) !== 'undefined') { //var fieldsToRetrieve = fieldsToShow.reduce((fid, fs) => [ ...fid, ...fs.fieldId ], <string[]> []); //.join(",") /** @type {?} */ var fieldsToRetrieve = this.fieldsToShow.filter(f => f.display).reduce(function (a, b) { return [a, b.fieldId]; }, []).toString(); if (fieldsToRetrieve.length > 0) fieldsToRetrieve = fieldsToRetrieve.substring(1); returnFields = fieldsToRetrieve; } /** @type {?} */ var orderBy = (options && options.orderBy) ? options.orderBy : ""; pageSize = (pageSize) ? pageSize : 10; //return this.uiDocumentService.getAll(this.libraryId, returnFields, page, pageSize, "", this.searchText, orderBy) return this.uiDocumentService.getAll(this.libraryId, { returnFields: returnFields, page: page, pageSize: pageSize, orderBy: "", searchBy: this.searchText, filter: "", folderName: "" }) .pipe(map(results => { return { total: results.length, data: this.mapResults(results) }; })); } /** * @private * @param {?} result * @return {?} */ mapResults(result) { /** @type {?} */ let results = []; if (result && result.length > 0) { for (var r = 0; r < result.length; r++) { /** @type {?} */ let dataRow = result[r]; /** @type {?} */ let objectRow = {}; for (var c = 0; c < this.fieldsToShow.length; c++) { /** @type {?} */ let field = this.fieldsToShow[c]; objectRow[field.fieldCode] = dataRow.fields[field.fieldCode]; } results[results.length] = objectRow; } } return results; } // In order to use the foundation service we need to map the DataSourceQuery into // the underlying foundation query // { // "filters": [ // { // "field": "string", // "operator": "string", // "value": "string" // } // ], // "logic": "string" // } /** * @private * @param {?} query * @return {?} */ mapQueryToFilterBy(query) { /** @type {?} */ let filterBy = {}; if (query && query.Expressions && query.Expressions.length > 0) { /** @type {?} */ let filters = query.Expressions .filter(e => e.Value) .map(e => { return { field: e.Field, value: e.Value }; }); filterBy = { filters: filters }; } return (filterBy); } } DocumentDataSourceService.decorators = [ { type: Injectable, args: [{ providedIn: null //'root' },] } ]; /** @nocollapse */ DocumentDataSourceService.ctorParameters = () => [ { type: UiDocumentService } ]; /** @nocollapse */ DocumentDataSourceService.ngInjectableDef = i0.defineInjectable({ factory: function DocumentDataSourceService_Factory() { return new DocumentDataSourceService(i0.inject(i1.UiDocumentService)); }, token: DocumentDataSourceService, providedIn: null }); if (false) { /** @type {?} */ DocumentDataSourceService.prototype.libraryId; /** @type {?} */ DocumentDataSourceService.prototype.folderName; /** @type {?} */ DocumentDataSourceService.prototype.includeSelect; /** @type {?} */ DocumentDataSourceService.prototype.searchText; /** @type {?} */ DocumentDataSourceService.prototype.fieldsToShow; /** @type {?} */ DocumentDataSourceService.prototype.searchOptions; /** * @type {?} * @private */ DocumentDataSourceService.prototype.uiDocumentService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtZGF0YS1zb3VyY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2U1Y29yZS1hbmd1bGFyLXVpLyIsInNvdXJjZXMiOlsibGliL2RhdGFzb3VyY2UvZG9jdW1lbnQtZGF0YS1zb3VyY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUk1RCxPQUFPLEVBQW9CLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHaEYsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUsxQixNQUFNLE9BQU8seUJBQXlCOzs7O0lBU3JDLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBTnhELGVBQVUsR0FBWSxFQUFFLENBQUM7UUFHeEIsaUJBQVksR0FBNEIsSUFBSSxDQUFDO1FBQzlDLGtCQUFhLEdBQXNCLEVBQUUsQ0FBRTtJQUd2QyxDQUFDOzs7O0lBRU0sY0FBYztRQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFFO0lBQzlCLENBQUM7Ozs7O0lBRU0saUJBQWlCLENBQUMsT0FBeUI7UUFDakQsSUFBSSxDQUFDLGFBQWEscUJBQU8sT0FBTyxDQUFDLENBQUUsQ0FBQyxRQUFRO0lBQzdDLENBQUM7Ozs7Ozs7OztJQUVNLFVBQVUsQ0FBQyxTQUFrQixFQUFFLFVBQW1CLEVBQUUsYUFBdUIsRUFBRSxZQUFvQyxFQUFFLFVBQWtCO1FBQ3pJLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxD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QUMsRUFBRTtnQkFDVCxPQUFPO29CQUNOLEtBQUssRUFBRyxDQUFDLENBQUMsS0FBSztvQkFDZixLQUFLLEVBQUcsQ0FBQyxDQUFDLEtBQUs7aUJBQ2YsQ0FBQTtZQUNGLENBQUMsQ0FBQztZQUNILFFBQVEsR0FBRztnQkFDVixPQUFPLEVBQUcsT0FBTzthQUNqQixDQUFBO1NBQ0Q7UUFDRCxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDbEIsQ0FBQzs7O1lBM0lELFVBQVUsU0FBQztnQkFDWCxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVE7YUFDekI7Ozs7WUFiUSxpQkFBaUI7Ozs7O0lBZ0J4Qiw4Q0FBbUI7O0lBQ3BCLCtDQUF5Qjs7SUFDekIsa0RBQXdCOztJQUN4QiwrQ0FBb0I7O0lBQ25CLGlEQUE2Qzs7SUFDOUMsa0RBQXVDOzs7OztJQUUzQixzREFBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVaURvY3VtZW50U2VydmljZSB9IGZyb20gJ2U1Y29yZS1hbmd1bGFyLXNlcnZpY2VzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElEYXRhU291cmNlIH0gZnJvbSAnLi9kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gJy4vZGF0YS1zb3VyY2Utb3B0aW9ucyc7XG5pbXBvcnQgeyBEYXRhU291cmNlQ29sdW1uLCBEYXRhU291cmNlQ29sdW1uU3RhdHVzIH0gZnJvbSAnLi9kYXRhLXNvdXJjZS1jb2x1bW4nO1xuaW1wb3J0IHsgRGF0YVNvdXJjZVF1ZXJ5IH0gZnJvbSAnLi9kYXRhLXNvdXJjZS1xdWVyeSc7XG5pbXBvcnQgeyBEYXRhU291cmNlUmVzdWx0cyB9IGZyb20gJy4vZGF0YS1zb3VyY2UtcmVzdWx0cyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGaWVsZERlZmluaXRpb25Nb2RlbCB9IGZyb20gJy4uL21vZGVscy9maWVsZC1kZWZpbml0aW9uLm1vZGVsJztcbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHtcblx0cHJvdmlkZWRJbjogbnVsbCAvLydyb290J1xufSlcbmV4cG9ydCBjbGFzcyBEb2N1bWVudERhdGFTb3VyY2VTZXJ2aWNlIGltcGxlbWVudHMgSURhdGFTb3VyY2Uge1xuXG4gIGxpYnJhcnlJZCA6IG51bWJlcjtcblx0Zm9sZGVyTmFtZSA6IHN0cmluZyA9IFwiXCI7XG5cdGluY2x1ZGVTZWxlY3QgOiBib29sZWFuO1xuXHRzZWFyY2hUZXh0IDogc3RyaW5nO1xuICBmaWVsZHNUb1Nob3cgOiBGaWVsZERlZmluaXRpb25Nb2RlbFtdID0gbnVsbDtcblx0c2VhcmNoT3B0aW9uczogRGF0YVNvdXJjZU9wdGlvbnMgPSB7fSA7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSB1aURvY3VtZW50U2VydmljZTogVWlEb2N1bWVudFNlcnZpY2UpIHtcblx0fVxuXG5cdHB1YmxpYyBkZWZhdWx0T3B0aW9ucygpOiBEYXRhU291cmNlT3B0aW9ucyB7XG5cdFx0cmV0dXJuICh0aGlzLnNlYXJjaE9wdGlvbnMpIDtcblx0fVxuXG5cdHB1YmxpYyBzZXREZWZhdWx0T3B0aW9ucyhvcHRpb25zOkRhdGFTb3VyY2VPcHRpb25zKSB7XG5cdFx0dGhpcy5zZWFyY2hPcHRpb25zID0gey4uLm9wdGlvbnN9IDsgLy8gY2xvbmVcblx0fVxuXG5cdHB1YmxpYyBzZXRMaWJyYXJ5KGxpYnJhcnlJZCA6IG51bWJlciwgZm9sZGVyTmFtZSA6IHN0cmluZywgaW5jbHVkZVNlbGVjdCA6IGJvb2xlYW4sIGZpZWxkc1RvU2hvdzogRmllbGREZWZpbml0aW9uTW9kZWxbXSwgc2VhcmNoVGV4dDogc3RyaW5nKTogRG9jdW1lbnREYXRhU291cmNlU2VydmljZSB7XG4gICAgdGhpcy5saWJyYXJ5SWQgPSBsaWJyYXJ5SWQ7XG5cdFx0dGhpcy5mb2xkZXJOYW1lID0gZm9sZGVyTmFtZTtcblx0XHR0aGlzLmluY2x1ZGVTZWxlY3QgPSBpbmNsdWRlU2VsZWN0O1xuXHRcdHRoaXMuZmllbGRzVG9TaG93ID0gZmllbGRzVG9TaG93O1xuXHRcdHRoaXMuc2VhcmNoVGV4dCA9IHNlYXJjaFRleHQ7XG5cdFx0cmV0dXJuICh0aGlzKVxuXHR9XG5cblx0Y29sdW1ucygpOiBPYnNlcnZhYmxlPERhdGFTb3VyY2VDb2x1bW5bXT4ge1xuXHRcdGxldCBjb2x1bW5zID0gdGhpcy5maWVsZHNUb1Nob3cuZmlsdGVyKGYgPT4gZi5kaXNwbGF5KS5tYXA8RGF0YVNvdXJjZUNvbHVtbj4oc2YgPT4gPERhdGFTb3VyY2VDb2x1bW4+e1xuXHRcdFx0Y29kZTogc2YuZmllbGRDb2RlLFxuXHRcdFx0bGFiZWw6IHNmLm5hbWUsXG5cdFx0XHR0eXBlOiBcIklucHV0XCIsXG5cdFx0XHRzdGF0dXM6IERhdGFTb3VyY2VDb2x1bW5TdGF0dXMuU2VsZWN0ZWRcblx0XHR9KTtcblx0XHRjb2x1bW5zID0gdGhpcy5hZGRPcHRpb25hbENvbHVtbnMoY29sdW1ucyk7XG5cdFx0cmV0dXJuIG9mKGNvbHVtbnMpO1xuXHR9XG5cblx0cHJpdmF0ZSBhZGRPcHRpb25hbENvbHVtbnMoY29sdW1uczpEYXRhU291cmNlQ29sdW1uW10pOiBEYXRhU291cmNlQ29sdW1uW10ge1xuXHRcdGlmKHRoaXMuaW5jbHVkZVNlbGVjdClcblx0XHRcdC8vIEFkZCB0byBzdGFydFxuXHRcdFx0Y29sdW1ucy51bnNoaWZ0KDxEYXRhU291cmNlQ29sdW1uPntcblx0XHRcdFx0bGFiZWw6IFwiXCIsXG5cdFx0XHRcdGNvZGU6IFwiQWN0aW9uU2VsZWN0XCIsXG5cdFx0XHRcdHR5cGU6IFwiQWN0aW9uU2VsZWN0XCIsXG5cdFx0XHRcdHN0YXR1czogRGF0YVNvdXJjZUNvbHVtblN0YXR1cy5TZWxlY3RlZFxuXHRcdFx0fSk7XG5cdFx0cmV0dXJuIChjb2x1bW5zKSA7XG5cdH1cblxuXHRwdWJsaWMgcmVhZChwYWdlOiBudW1iZXIsIHBhZ2VTaXplOiBudW1iZXIsIG9wdGlvbnNJbjogRGF0YVNvdXJjZU9wdGlvbnMpOiBPYnNlcnZhYmxlPERhdGFTb3VyY2VSZXN1bHRzPiB7XG5cdFx0bGV0IG9wdGlvbnM6IERhdGFTb3VyY2VPcHRpb25zID0ge1xuXHRcdFx0Li4udGhpcy5zZWFyY2hPcHRpb25zLFxuXHRcdFx0Li4ub3B0aW9uc0luXG5cdFx0fVxuXHRcdFxuXHRcdHZhciByZXR1cm5GaWVsZHMgPSBcIlwiO1xuICAgIGlmICh0aGlzLmZpZWxkc1RvU2hvdyAmJiB0eXBlb2YodGhpcy5maWVsZHNUb1Nob3cpICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgLy92YXIgZmllbGRzVG9SZXRyaWV2ZSA9IGZpZWxkc1RvU2hvdy5yZWR1Y2UoKGZpZCwgZnMpID0+IFsgLi4uZmlkLCAuLi5mcy5maWVsZElkIF0sIDxzdHJpbmdbXT4gW10pO1xuICAgICAgLy8uam9pbihcIixcIilcbiAgICAgIHZhciBmaWVsZHNUb1JldHJpZXZlID0gdGhpcy5maWVsZHNUb1Nob3cuZmlsdGVyKGYgPT4gZi5kaXNwbGF5KS5yZWR1Y2UoZnVuY3Rpb24oYSwgYikge3JldHVybiBbYSxiLmZpZWxkSWRdfSwgW10pLnRvU3RyaW5nKCk7XG4gICAgICBpZiAoZmllbGRzVG9SZXRyaWV2ZS5sZW5ndGg+IDApXG4gICAgICAgIGZpZWxkc1RvUmV0cmlldmUgPSBmaWVsZHNUb1JldHJpZXZlLnN1YnN0cmluZygxKTtcbiAgICAgIHJldHVybkZpZWxkcyA9IGZpZWxkc1RvUmV0cmlldmU7XG5cdFx0fVxuXHRcdHZhciBvcmRlckJ5ID0gKG9wdGlvbnMgJiYgb3B0aW9ucy5vcmRlckJ5KSA/IG9wdGlvbnMub3JkZXJCeSA6IFwiXCI7XG5cdFx0XG5cdFx0cGFnZVNpemUgPSAocGFnZVNpemUpID8gcGFnZVNpemUgOiAxMFxuXG5cdFx0Ly9yZXR1cm4gdGhpcy51aURvY3VtZW50U2VydmljZS5nZXRBbGwodGhpcy5saWJyYXJ5SWQsIHJldHVybkZpZWxkcywgcGFnZSwgcGFnZVNpemUsIFwiXCIsIHRoaXMuc2VhcmNoVGV4dCwgb3JkZXJCeSlcblx0XHRyZXR1cm4gdGhpcy51aURvY3VtZW50U2VydmljZS5nZXRBbGwodGhpcy5saWJyYXJ5SWQsIHsgXG5cdFx0XHRyZXR1cm5GaWVsZHM6IHJldHVybkZpZWxkcywgXG5cdFx0XHRwYWdlOiBwYWdlLCBcblx0XHRcdHBhZ2VTaXplOnBhZ2VTaXplLCBcblx0XHRcdG9yZGVyQnk6XCJcIiwgXG5cdFx0XHRzZWFyY2hCeTp0aGlzLnNlYXJjaFRleHQsIFxuXHRcdFx0ZmlsdGVyOiBcIlwiLFxuXHRcdFx0Zm9sZGVyTmFtZTogXCJcIlxuXHRcdH0pXG5cdFx0LnBpcGU8RGF0YVNvdXJjZVJlc3VsdHM+KFxuXHRcdFx0bWFwKHJlc3VsdHMgPT4ge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdHRvdGFsOiByZXN1bHRzLmxlbmd0aCxcblx0XHRcdFx0XHRkYXRhOiB0aGlzLm1hcFJlc3VsdHMocmVzdWx0cylcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHQpO1xuXHR9XG5cbiAgcHJpdmF0ZSBtYXBSZXN1bHRzKHJlc3VsdDogYW55KTogYW55W10ge1xuICAgIGxldCByZXN1bHRzOiBhbnlbXSA9IFtdO1xuXG4gICAgaWYgKHJlc3VsdCAmJiByZXN1bHQubGVuZ3RoID4gMCkge1xuICAgICAgZm9yICh2YXIgcjogbnVtYmVyID0gMDsgciA8IHJlc3VsdC5sZW5ndGg7IHIrKykge1xuICAgICAgICBsZXQgZGF0YVJvdzogYW55ID0gcmVzdWx0W3JdO1xuICAgICAgICBsZXQgb2JqZWN0Um93OiBhbnkgPSB7fTtcbiAgICAgICAgZm9yICh2YXIgYzogbnVtYmVyID0gMDsgYyA8IHRoaXMuZmllbGRzVG9TaG93Lmxlbmd0aDsgYysrKSB7XG4gICAgICAgICAgbGV0IGZpZWxkID0gdGhpcy5maWVsZHNUb1Nob3dbY107XG4gICAgICAgICAgb2JqZWN0Um93W2ZpZWxkLmZpZWxkQ29kZV0gPSBkYXRhUm93LmZpZWxkc1tmaWVsZC5maWVsZENvZGVdO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdHNbcmVzdWx0cy5sZW5ndGhdID0gb2JqZWN0Um93O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0c1xuICB9XG5cblx0Ly8gSW4gb3JkZXIgdG8gdXNlIHRoZSBmb3VuZGF0aW9uIHNlcnZpY2Ugd2UgbmVlZCB0byBtYXAgdGhlIERhdGFTb3VyY2VRdWVyeSBpbnRvIFxuXHQvL1x0dGhlIHVuZGVybHlpbmcgZm91bmRhdGlvbiBxdWVyeVxuXHQvLyBcdHtcblx0Ly8gXHRcdFwiZmlsdGVyc1wiOiBbXG5cdC8vIFx0ICBcdFx0e1xuXHQvLyBcdFx0XHRcdFwiZmllbGRcIjogXCJzdHJpbmdcIixcblx0Ly8gXHRcdFx0XHRcIm9wZXJhdG9yXCI6IFwic3RyaW5nXCIsXG5cdC8vIFx0XHRcdFx0XCJ2YWx1ZVwiOiBcInN0cmluZ1wiXG5cdC8vIFx0ICBcdFx0fVxuXHQvLyBcdFx0XSxcblx0Ly8gXHRcdFwibG9naWNcIjogXCJzdHJpbmdcIlxuXHQvLyBcdH1cblx0cHJpdmF0ZSBtYXBRdWVyeVRvRmlsdGVyQnkocXVlcnk6RGF0YVNvdXJjZVF1ZXJ5KTogYW55IHtcblx0XHRsZXQgZmlsdGVyQnkgPSB7fSA7XG5cdFx0aWYocXVlcnkgJiYgcXVlcnkuRXhwcmVzc2lvbnMgJiYgcXVlcnkuRXhwcmVzc2lvbnMubGVuZ3RoID4gMCkge1xuXHRcdFx0bGV0IGZpbHRlcnMgPSBxdWVyeS5FeHByZXNzaW9uc1xuXHRcdFx0XHQuZmlsdGVyKCBlID0+IGUuVmFsdWUgKVxuXHRcdFx0XHQubWFwKCBlID0+IHtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0ZmllbGQgOiBlLkZpZWxkLFxuXHRcdFx0XHRcdFx0dmFsdWUgOiBlLlZhbHVlXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KSA7XG5cdFx0XHRmaWx0ZXJCeSA9IHtcblx0XHRcdFx0ZmlsdGVycyA6IGZpbHRlcnNcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIChmaWx0ZXJCeSlcblx0fVxufVxuIl19