UNPKG

kwikid-agent-dashboard

Version:

KwikID's EKYC Agent Map View Module.

107 lines 18 kB
import { __awaiter, __decorate } from "tslib"; import { Component, EventEmitter, Input, Output } from "@angular/core"; import { logMethod, isNotEmptyValue, getObjectValueFromPath, checkObjectPathExists } from "kwikid-toolkit"; import { PREVIEW_DATA_DEFAULT_CONFIG } from "./task-item.constant"; import * as i0 from "@angular/core"; import * as i1 from "@taiga-ui/kit"; import * as i2 from "../task-item-status/task-item-status.component"; import * as i3 from "kwikui"; import * as i4 from "@angular/common"; export class TaskItemComponent { constructor() { this.config = {}; this.data = {}; this.header = ""; this.status = ""; this.previewConfig = {}; this.previewData = []; this.onClickTaskItem = new EventEmitter(); this.onClickTaskItemViewDetail = new EventEmitter(); this.onClickPerformAction = new EventEmitter(); } ngOnInit() { return __awaiter(this, void 0, void 0, function* () { this.parseHeader(); this.parseSessionStatus(); this.parsePreviewData(); }); } parseHeader() { var _a, _b, _c, _d; if (checkObjectPathExists(this.config, "taskUI.header.taskId.path") && isNotEmptyValue(this.config.taskUI.header.taskId.path)) { this.header = getObjectValueFromPath(this.data, (_d = (_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.taskUI) === null || _b === void 0 ? void 0 : _b.header) === null || _c === void 0 ? void 0 : _c.taskId) === null || _d === void 0 ? void 0 : _d.path); } if (checkObjectPathExists(this.config, "taskUI.header.taskId.maxLengthToShow") && isNotEmptyValue(this.config.taskUI.header.taskId.maxLengthToShow) && this.header.length > this.config.taskUI.header.taskId.maxLengthToShow) { this.header = `${this.header.slice(0, this.config.taskUI.header.taskId.maxLengthToShow)}...`; } } parseSessionStatus() { var _a, _b, _c, _d, _e, _f; if (((_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.utilityFlags) === null || _b === void 0 ? void 0 : _b.isShowTaskStatus) && checkObjectPathExists(this.config, "taskUI.header.taskStatus.path") && isNotEmptyValue(this.config.taskUI.header.taskStatus.path)) { this.status = getObjectValueFromPath(this.data, (_f = (_e = (_d = (_c = this.config) === null || _c === void 0 ? void 0 : _c.taskUI) === null || _d === void 0 ? void 0 : _d.header) === null || _e === void 0 ? void 0 : _e.taskStatus) === null || _f === void 0 ? void 0 : _f.path); } } parsePreviewData() { var _a, _b, _c, _d; if (checkObjectPathExists(this.config, "taskUI.preview.data") && isNotEmptyValue(this.config.taskUI.preview.data) && Array.isArray(this.config.taskUI.preview.data) && this.config.taskUI.preview.data.length > 0) { const previewData = []; this.config.taskUI.preview.data.map((field) => { const value = getObjectValueFromPath(this.data, field.path); previewData.push({ label: field.label, value }); }); this.previewData = previewData; this.previewConfig = (_d = (_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.taskUI) === null || _b === void 0 ? void 0 : _b.preview) === null || _c === void 0 ? void 0 : _c.config) !== null && _d !== void 0 ? _d : PREVIEW_DATA_DEFAULT_CONFIG; } } handleOnClickTaskItem(e, taskItemData) { this.onClickTaskItem.emit({ data: taskItemData }); } handleOnClickTaskItemViewDetail(e, taskItemData) { this.onClickTaskItemViewDetail.emit({ data: taskItemData }); } handleOnClickPerformAction(e, action) { this.onClickPerformAction.emit({ action }); } } /** @nocollapse */ TaskItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TaskItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); /** @nocollapse */ TaskItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TaskItemComponent, selector: "task-item", inputs: { config: "config", data: "data" }, outputs: { onClickTaskItem: "onClickTaskItem", onClickTaskItemViewDetail: "onClickTaskItemViewDetail", onClickPerformAction: "onClickPerformAction" }, ngImport: i0, template: "<tui-accordion\n class=\"task-item-container\"\n (click)=\"handleOnClickTaskItem($event, data)\"\n>\n <tui-accordion-item>\n <div class=\"task-item-header\">\n <div class=\"task-item-id\">{{ header }}</div>\n <task-item-status\n *ngIf=\"status\"\n [config]=\"config?.taskUI?.header?.taskStatus\"\n [status]=\"status\"\n ></task-item-status>\n </div>\n <ng-template tuiAccordionItemContent>\n <div class=\"task-item-preview\">\n <kwikui-label-value-pair\n [config]=\"previewConfig\"\n [data]=\"previewData\"\n ></kwikui-label-value-pair>\n </div>\n <div class=\"task-item-footer\">\n <kwikui-button\n appearance=\"primary\"\n label=\"View Detail\"\n shape=\"rounded\"\n size=\"s\"\n (onClick)=\"handleOnClickTaskItemViewDetail($event, data)\"\n ></kwikui-button>\n </div>\n </ng-template>\n </tui-accordion-item>\n</tui-accordion>\n", styles: [".task-item-header{display:flex;flex-direction:column}.task-item-footer{margin-top:.5rem}\n"], components: [{ type: i1.TuiAccordionComponent, selector: "tui-accordion", inputs: ["closeOthers", "rounded"] }, { type: i1.TuiAccordionItemComponent, selector: "tui-accordion-item", inputs: ["noPadding", "showArrow", "borders", "size", "disabled", "disableHover", "open", "async"], outputs: ["openChange"] }, { type: i2.TaskItemStatusComponent, selector: "task-item-status", inputs: ["config", "status"] }, { type: i3.KwikUILabelValuePairComponent, selector: "kwikui-label-value-pair", inputs: ["config", "data", "id"] }, { type: i3.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["appearance", "class", "disabled", "icon", "iconRight", "id", "label", "shape", "showLoader", "size", "styles", "type", "pseudoHover"], outputs: ["onClick"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.TuiAccordionItemContentDirective, selector: "ng-template[tuiAccordionItemContent]" }] }); __decorate([ logMethod ], TaskItemComponent.prototype, "handleOnClickTaskItem", null); __decorate([ logMethod ], TaskItemComponent.prototype, "handleOnClickTaskItemViewDetail", null); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TaskItemComponent, decorators: [{ type: Component, args: [{ selector: "task-item", templateUrl: "./task-item.component.html", styleUrls: ["./task-item.component.scss"] }] }], ctorParameters: function () { return []; }, propDecorators: { config: [{ type: Input }], data: [{ type: Input }], onClickTaskItem: [{ type: Output }], onClickTaskItemViewDetail: [{ type: Output }], onClickPerformAction: [{ type: Output }], handleOnClickTaskItem: [], handleOnClickTaskItemViewDetail: [] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1hZ2VudC1kYXNoYm9hcmQvc3JjL2xpYi92Mi9jb21wb25lbnRzL3Rhc2staXRlbS90YXNrLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWFnZW50LWRhc2hib2FyZC9zcmMvbGliL3YyL2NvbXBvbmVudHMvdGFzay1pdGVtL3Rhc2staXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQ0wsU0FBUyxFQUNULGVBQWUsRUFDZixzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3RCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQU9uRSxNQUFNLE9BQU8saUJBQWlCO0lBd0I1QjtRQXRCQSxXQUFNLEdBQVEsRUFBRSxDQUFDO1FBR2pCLFNBQUksR0FBUSxFQUFFLENBQUM7UUFFZixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBRVosV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUVaLGtCQUFhLEdBQVEsRUFBRSxDQUFDO1FBRXhCLGdCQUFXLEdBQVEsRUFBRSxDQUFDO1FBR3RCLG9CQUFlLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFHN0QsOEJBQXlCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFHdkUseUJBQW9CLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFFbkQsQ0FBQztJQUVWLFFBQVE7O1lBQ1osSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxD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QUFNLDBDQUFFLE9BQU8sMENBQUUsTUFBTSxtQ0FBSSwyQkFBMkIsQ0FBQztTQUN2RTtJQUNILENBQUM7SUFHRCxxQkFBcUIsQ0FBQyxDQUFNLEVBQUUsWUFBaUI7UUFDN0MsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7WUFDeEIsSUFBSSxFQUFFLFlBQVk7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELCtCQUErQixDQUFDLENBQU0sRUFBRSxZQUFpQjtRQUN2RCxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDO1lBQ2xDLElBQUksRUFBRSxZQUFZO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxDQUFNLEVBQUUsTUFBVztRQUM1QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDO1lBQzdCLE1BQU07U0FDUCxDQUFDLENBQUM7SUFDTCxDQUFDOztrSUE1R1UsaUJBQWlCO3NIQUFqQixpQkFBaUIsb1BDZDlCLG8rQkFnQ0E7QUR5RUU7SUFEQyxTQUFTOzhEQUtUO0FBR0Q7SUFEQyxTQUFTO3dFQUtUOzRGQXRHVSxpQkFBaUI7a0JBTDdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFdBQVcsRUFBRSw0QkFBNEI7b0JBQ3pDLFNBQVMsRUFBRSxDQUFDLDRCQUE0QixDQUFDO2lCQUMxQzswRUFHQyxNQUFNO3NCQURMLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQVlOLGVBQWU7c0JBRGQsTUFBTTtnQkFJUCx5QkFBeUI7c0JBRHhCLE1BQU07Z0JBSVAsb0JBQW9CO3NCQURuQixNQUFNO2dCQXNFUCxxQkFBcUIsTUFPckIsK0JBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBsb2dNZXRob2QsXG4gIGlzTm90RW1wdHlWYWx1ZSxcbiAgZ2V0T2JqZWN0VmFsdWVGcm9tUGF0aCxcbiAgY2hlY2tPYmplY3RQYXRoRXhpc3RzXG59IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuaW1wb3J0IHsgUFJFVklFV19EQVRBX0RFRkFVTFRfQ09ORklHIH0gZnJvbSBcIi4vdGFzay1pdGVtLmNvbnN0YW50XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJ0YXNrLWl0ZW1cIixcbiAgdGVtcGxhdGVVcmw6IFwiLi90YXNrLWl0ZW0uY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3Rhc2staXRlbS5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBUYXNrSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIGNvbmZpZzogYW55ID0ge307XG5cbiAgQElucHV0KClcbiAgZGF0YTogYW55ID0ge307XG5cbiAgaGVhZGVyID0gXCJcIjtcblxuICBzdGF0dXMgPSBcIlwiO1xuXG4gIHByZXZpZXdDb25maWc6IGFueSA9IHt9O1xuXG4gIHByZXZpZXdEYXRhOiBhbnkgPSBbXTtcblxuICBAT3V0cHV0KClcbiAgb25DbGlja1Rhc2tJdGVtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrVGFza0l0ZW1WaWV3RGV0YWlsOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrUGVyZm9ybUFjdGlvbjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wYXJzZUhlYWRlcigpO1xuICAgIHRoaXMucGFyc2VTZXNzaW9uU3RhdHVzKCk7XG4gICAgdGhpcy5wYXJzZVByZXZpZXdEYXRhKCk7XG4gIH1cblxuICBwYXJzZUhlYWRlcigpIHtcbiAgICBpZiAoXG4gICAgICBjaGVja09iamVjdFBhdGhFeGlzdHModGhpcy5jb25maWcsIFwidGFza1VJLmhlYWRlci50YXNrSWQucGF0aFwiKSAmJlxuICAgICAgaXNOb3RFbXB0eVZhbHVlKHRoaXMuY29uZmlnLnRhc2tVSS5oZWFkZXIudGFza0lkLnBhdGgpXG4gICAgKSB7XG4gICAgICB0aGlzLmhlYWRlciA9IGdldE9iamVjdFZhbHVlRnJvbVBhdGgoXG4gICAgICAgIHRoaXMuZGF0YSxcbiAgICAgICAgdGhpcy5jb25maWc/LnRhc2tVST8uaGVhZGVyPy50YXNrSWQ/LnBhdGhcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgY2hlY2tPYmplY3RQYXRoRXhpc3RzKFxuICAgICAgICB0aGlzLmNvbmZpZyxcbiAgICAgICAgXCJ0YXNrVUkuaGVhZGVyLnRhc2tJZC5tYXhMZW5ndGhUb1Nob3dcIlxuICAgICAgKSAmJlxuICAgICAgaXNOb3RFbXB0eVZhbHVlKHRoaXMuY29uZmlnLnRhc2tVSS5oZWFkZXIudGFza0lkLm1heExlbmd0aFRvU2hvdykgJiZcbiAgICAgIHRoaXMuaGVhZGVyLmxlbmd0aCA+IHRoaXMuY29uZmlnLnRhc2tVSS5oZWFkZXIudGFza0lkLm1heExlbmd0aFRvU2hvd1xuICAgICkge1xuICAgICAgdGhpcy5oZWFkZXIgPSBgJHt0aGlzLmhlYWRlci5zbGljZShcbiAgICAgICAgMCxcbiAgICAgICAgdGhpcy5jb25maWcudGFza1VJLmhlYWRlci50YXNrSWQubWF4TGVuZ3RoVG9TaG93XG4gICAgICApfS4uLmA7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VTZXNzaW9uU3RhdHVzKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMuY29uZmlnPy51dGlsaXR5RmxhZ3M/LmlzU2hvd1Rhc2tTdGF0dXMgJiZcbiAgICAgIGNoZWNrT2JqZWN0UGF0aEV4aXN0cyh0aGlzLmNvbmZpZywgXCJ0YXNrVUkuaGVhZGVyLnRhc2tTdGF0dXMucGF0aFwiKSAmJlxuICAgICAgaXNOb3RFbXB0eVZhbHVlKHRoaXMuY29uZmlnLnRhc2tVSS5oZWFkZXIudGFza1N0YXR1cy5wYXRoKVxuICAgICkge1xuICAgICAgdGhpcy5zdGF0dXMgPSBnZXRPYmplY3RWYWx1ZUZyb21QYXRoKFxuICAgICAgICB0aGlzLmRhdGEsXG4gICAgICAgIHRoaXMuY29uZmlnPy50YXNrVUk/LmhlYWRlcj8udGFza1N0YXR1cz8ucGF0aFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwYXJzZVByZXZpZXdEYXRhKCkge1xuICAgIGlmIChcbiAgICAgIGNoZWNrT2JqZWN0UGF0aEV4aXN0cyh0aGlzLmNvbmZpZywgXCJ0YXNrVUkucHJldmlldy5kYXRhXCIpICYmXG4gICAgICBpc05vdEVtcHR5VmFsdWUodGhpcy5jb25maWcudGFza1VJLnByZXZpZXcuZGF0YSkgJiZcbiAgICAgIEFycmF5LmlzQXJyYXkodGhpcy5jb25maWcudGFza1VJLnByZXZpZXcuZGF0YSkgJiZcbiAgICAgIHRoaXMuY29uZmlnLnRhc2tVSS5wcmV2aWV3LmRhdGEubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgY29uc3QgcHJldmlld0RhdGEgPSBbXTtcbiAgICAgIHRoaXMuY29uZmlnLnRhc2tVSS5wcmV2aWV3LmRhdGEubWFwKChmaWVsZCkgPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGdldE9iamVjdFZhbHVlRnJvbVBhdGgodGhpcy5kYXRhLCBmaWVsZC5wYXRoKTtcbiAgICAgICAgcHJldmlld0RhdGEucHVzaCh7IGxhYmVsOiBmaWVsZC5sYWJlbCwgdmFsdWUgfSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMucHJldmlld0RhdGEgPSBwcmV2aWV3RGF0YTtcblxuICAgICAgdGhpcy5wcmV2aWV3Q29uZmlnID1cbiAgICAgICAgdGhpcy5jb25maWc/LnRhc2tVST8ucHJldmlldz8uY29uZmlnID8/IFBSRVZJRVdfREFUQV9ERUZBVUxUX0NPTkZJRztcbiAgICB9XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGhhbmRsZU9uQ2xpY2tUYXNrSXRlbShlOiBhbnksIHRhc2tJdGVtRGF0YTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNsaWNrVGFza0l0ZW0uZW1pdCh7XG4gICAgICBkYXRhOiB0YXNrSXRlbURhdGFcbiAgICB9KTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25DbGlja1Rhc2tJdGVtVmlld0RldGFpbChlOiBhbnksIHRhc2tJdGVtRGF0YTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNsaWNrVGFza0l0ZW1WaWV3RGV0YWlsLmVtaXQoe1xuICAgICAgZGF0YTogdGFza0l0ZW1EYXRhXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVPbkNsaWNrUGVyZm9ybUFjdGlvbihlOiBhbnksIGFjdGlvbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNsaWNrUGVyZm9ybUFjdGlvbi5lbWl0KHtcbiAgICAgIGFjdGlvblxuICAgIH0pO1xuICB9XG59XG4iLCI8dHVpLWFjY29yZGlvblxuICBjbGFzcz1cInRhc2staXRlbS1jb250YWluZXJcIlxuICAoY2xpY2spPVwiaGFuZGxlT25DbGlja1Rhc2tJdGVtKCRldmVudCwgZGF0YSlcIlxuPlxuICA8dHVpLWFjY29yZGlvbi1pdGVtPlxuICAgIDxkaXYgY2xhc3M9XCJ0YXNrLWl0ZW0taGVhZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGFzay1pdGVtLWlkXCI+e3sgaGVhZGVyIH19PC9kaXY+XG4gICAgICA8dGFzay1pdGVtLXN0YXR1c1xuICAgICAgICAqbmdJZj1cInN0YXR1c1wiXG4gICAgICAgIFtjb25maWddPVwiY29uZmlnPy50YXNrVUk/LmhlYWRlcj8udGFza1N0YXR1c1wiXG4gICAgICAgIFtzdGF0dXNdPVwic3RhdHVzXCJcbiAgICAgID48L3Rhc2staXRlbS1zdGF0dXM+XG4gICAgPC9kaXY+XG4gICAgPG5nLXRlbXBsYXRlIHR1aUFjY29yZGlvbkl0ZW1Db250ZW50PlxuICAgICAgPGRpdiBjbGFzcz1cInRhc2staXRlbS1wcmV2aWV3XCI+XG4gICAgICAgIDxrd2lrdWktbGFiZWwtdmFsdWUtcGFpclxuICAgICAgICAgIFtjb25maWddPVwicHJldmlld0NvbmZpZ1wiXG4gICAgICAgICAgW2RhdGFdPVwicHJldmlld0RhdGFcIlxuICAgICAgICA+PC9rd2lrdWktbGFiZWwtdmFsdWUtcGFpcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInRhc2staXRlbS1mb290ZXJcIj5cbiAgICAgICAgPGt3aWt1aS1idXR0b25cbiAgICAgICAgICBhcHBlYXJhbmNlPVwicHJpbWFyeVwiXG4gICAgICAgICAgbGFiZWw9XCJWaWV3IERldGFpbFwiXG4gICAgICAgICAgc2hhcGU9XCJyb3VuZGVkXCJcbiAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgKG9uQ2xpY2spPVwiaGFuZGxlT25DbGlja1Rhc2tJdGVtVmlld0RldGFpbCgkZXZlbnQsIGRhdGEpXCJcbiAgICAgICAgPjwva3dpa3VpLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvdHVpLWFjY29yZGlvbi1pdGVtPlxuPC90dWktYWNjb3JkaW9uPlxuIl19