UNPKG

ontimize-web-ngx

Version:
88 lines 18 kB
import { ChangeDetectorRef, Component, ContentChildren, ElementRef, forwardRef, Inject, Injector, Optional, QueryList, Renderer2, ViewChild, ViewEncapsulation } from '@angular/core'; import { MatListItem, MatListItemLine, MatListItemTitle } from '@angular/material/list'; import { Util } from '../../../util/util'; import { OListComponent } from '../o-list.component'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "@angular/flex-layout/flex"; import * as i3 from "@angular/material/checkbox"; import * as i4 from "@angular/material/icon"; import * as i5 from "@angular/material/list"; import * as i6 from "../o-list.component"; export class OListItemComponent { constructor(elRef, _renderer, _injector, cd, _list) { this.elRef = elRef; this._renderer = _renderer; this._injector = _injector; this.cd = cd; this._list = _list; this.linesNo = 1; } ngAfterContentInit() { const matLinesRef = this._titles.length + this._lines.length; const ngAfterContentInitOriginal = this._innerListItem.ngAfterViewInit; this._innerListItem.ngAfterViewInit = function () { const emptyDiv = this._element.nativeElement.querySelector('.mat-list-text:empty'); if (emptyDiv) { emptyDiv.remove(); } this._lines = matLinesRef; ngAfterContentInitOriginal.apply(this); }; } onDetailIconClicked(e) { if (Util.isDefined(e)) { e.stopPropagation(); } this._list.viewDetail(this.modelData); } onEditIconClicked(e) { if (Util.isDefined(e)) { e.stopPropagation(); } this._list.editDetail(this.modelData); } setItemData(data) { if (!Util.isDefined(this.modelData)) { this.modelData = data; this.cd.detectChanges(); } } getItemData() { return this.modelData; } onCheckboxChange() { if (this._list.selectable && Util.isDefined(this.modelData)) { this._list.setSelected(this.modelData); } } onCheckboxClicked(event) { event.stopPropagation(); } get isSelected() { return this._list.isItemSelected(this.modelData); } } OListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OListItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: forwardRef(() => OListComponent), optional: true }], target: i0.ɵɵFactoryTarget.Component }); OListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OListItemComponent, selector: "o-list-item", host: { properties: { "class.o-list-item": "true" } }, queries: [{ propertyName: "_lines", predicate: MatListItemLine, descendants: true }, { propertyName: "_titles", predicate: MatListItemTitle, descendants: true }], viewQueries: [{ propertyName: "_innerListItem", first: true, predicate: ["innerListItem"], descendants: true, static: true }], ngImport: i0, template: "<mat-list-item #innerListItem>\n <div class=\"o-list-row-action o-list-item-selection-check\" *ngIf=\"_list && _list.selectable\">\n <mat-checkbox [checked]=\"isSelected\" (change)=\"onCheckboxChange()\" (click)=\"onCheckboxClicked($event)\"></mat-checkbox>\n </div>\n <ng-content select=\"[o-list-item-avatar], [matListAvatar], [matListIcon]\"> </ng-content>\n <div class=\"mat-mdc-list-item\">\n <ng-content select=\"[matLine]\"></ng-content>\n </div>\n <!--matListItemMeta to put content into the meta section of a list item-->\n <div matListItemMeta>\n <ng-content select=\"o-list-item-card-image,o-list-item-card\"></ng-content>\n </div>\n <ng-content select=\"o-list-item-text,o-list-item-avatar, [o-list-item]\"></ng-content>\n\n <div fxLayout=\"row\" class=\"row-buttons-container\">\n <div class=\"o-list-row-action o-list-item-icon\" *ngIf=\"_list && _list.editButtonInRow\" (click)=\"onEditIconClicked($event)\">\n <mat-icon class=\"material-icons\">{{ _list.editButtonInRowIcon }}</mat-icon>\n </div>\n <div class=\"o-list-row-action o-list-item-icon\" *ngIf=\"_list && _list.detailButtonInRow\" (click)=\"onDetailIconClicked($event)\">\n <mat-icon class=\"material-icons\">{{ _list.detailButtonInRowIcon }}</mat-icon>\n </div>\n </div>\n</mat-list-item>\n", styles: [".o-list-item{display:flex}.o-list-item .o-card-item{padding:8px 4px}.o-list-item .mat-mdc-list-item{width:100%}.o-list-item .mat-mdc-list-item.mdc-list-item--with-trailing-meta{height:auto}.o-list-item .mat-mdc-list-item .row-buttons-container .o-list-row-action{height:24px;text-align:center;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i5.MatListItemMeta, selector: "[matListItemMeta]" }], encapsulation: i0.ViewEncapsulation.None }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OListItemComponent, decorators: [{ type: Component, args: [{ selector: 'o-list-item', encapsulation: ViewEncapsulation.None, host: { '[class.o-list-item]': 'true' }, template: "<mat-list-item #innerListItem>\n <div class=\"o-list-row-action o-list-item-selection-check\" *ngIf=\"_list && _list.selectable\">\n <mat-checkbox [checked]=\"isSelected\" (change)=\"onCheckboxChange()\" (click)=\"onCheckboxClicked($event)\"></mat-checkbox>\n </div>\n <ng-content select=\"[o-list-item-avatar], [matListAvatar], [matListIcon]\"> </ng-content>\n <div class=\"mat-mdc-list-item\">\n <ng-content select=\"[matLine]\"></ng-content>\n </div>\n <!--matListItemMeta to put content into the meta section of a list item-->\n <div matListItemMeta>\n <ng-content select=\"o-list-item-card-image,o-list-item-card\"></ng-content>\n </div>\n <ng-content select=\"o-list-item-text,o-list-item-avatar, [o-list-item]\"></ng-content>\n\n <div fxLayout=\"row\" class=\"row-buttons-container\">\n <div class=\"o-list-row-action o-list-item-icon\" *ngIf=\"_list && _list.editButtonInRow\" (click)=\"onEditIconClicked($event)\">\n <mat-icon class=\"material-icons\">{{ _list.editButtonInRowIcon }}</mat-icon>\n </div>\n <div class=\"o-list-row-action o-list-item-icon\" *ngIf=\"_list && _list.detailButtonInRow\" (click)=\"onDetailIconClicked($event)\">\n <mat-icon class=\"material-icons\">{{ _list.detailButtonInRowIcon }}</mat-icon>\n </div>\n </div>\n</mat-list-item>\n", styles: [".o-list-item{display:flex}.o-list-item .o-card-item{padding:8px 4px}.o-list-item .mat-mdc-list-item{width:100%}.o-list-item .mat-mdc-list-item.mdc-list-item--with-trailing-meta{height:auto}.o-list-item .mat-mdc-list-item .row-buttons-container .o-list-row-action{height:24px;text-align:center;cursor:pointer}\n"] }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i6.OListComponent, decorators: [{ type: Optional }, { type: Inject, args: [forwardRef(() => OListComponent)] }] }]; }, propDecorators: { _lines: [{ type: ContentChildren, args: [MatListItemLine, { descendants: true }] }], _titles: [{ type: ContentChildren, args: [MatListItemTitle, { descendants: true }] }], _innerListItem: [{ type: ViewChild, args: ['innerListItem', { static: true }] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1saXN0LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC9saXN0LWl0ZW0vby1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvbGlzdC9saXN0LWl0ZW0vby1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsZUFBZSxFQUNmLFVBQVUsRUFDVixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFDUixRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFeEYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7QUFZckQsTUFBTSxPQUFPLGtCQUFrQjtJQWE3QixZQUNTLEtBQWlCLEVBQ2QsU0FBb0IsRUFDcEIsU0FBbUIsRUFDbkIsRUFBcUIsRUFDOEIsS0FBcUI7UUFKM0UsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNkLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFDcEIsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUM4QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQWY3RSxZQUFPLEdBQUcsQ0FBQyxDQUFDO0lBZ0JmLENBQUM7SUFFRSxrQkFBa0I7UUFDdkIsTUFB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b3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBJbmplY3QsXG4gIEluamVjdG9yLFxuICBPcHRpb25hbCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRMaXN0SXRlbSwgTWF0TGlzdEl0ZW1MaW5lLCBNYXRMaXN0SXRlbVRpdGxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5cbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0xpc3RDb21wb25lbnQgfSBmcm9tICcuLi9vLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IExpc3RJdGVtIH0gZnJvbSAnLi9vLWxpc3QtaXRlbSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tbGlzdC1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL28tbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1saXN0LWl0ZW0uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgICdbY2xhc3Muby1saXN0LWl0ZW1dJzogJ3RydWUnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgT0xpc3RJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgTGlzdEl0ZW0sIEFmdGVyQ29udGVudEluaXQge1xuXG4gIHB1YmxpYyBtb2RlbERhdGE6IGFueTtcbiAgcHVibGljIGxpbmVzTm8gPSAxO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0TGlzdEl0ZW1MaW5lLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIF9saW5lczogUXVlcnlMaXN0PE1hdExpc3RJdGVtTGluZT47XG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0TGlzdEl0ZW1UaXRsZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBfdGl0bGVzOiBRdWVyeUxpc3Q8TWF0TGlzdEl0ZW1UaXRsZT47XG5cblxuICBAVmlld0NoaWxkKCdpbm5lckxpc3RJdGVtJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIF9pbm5lckxpc3RJdGVtOiBNYXRMaXN0SXRlbTtcblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbFJlZjogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJvdGVjdGVkIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT0xpc3RDb21wb25lbnQpKSBwdWJsaWMgX2xpc3Q6IE9MaXN0Q29tcG9uZW50XG4gICkgeyB9XG5cbiAgcHVibGljIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBtYXRMaW5lc1JlZiA9IHRoaXMuX3RpdGxlcy5sZW5ndGggKyB0aGlzLl9saW5lcy5sZW5ndGg7XG5cbiAgICBjb25zdCBuZ0FmdGVyQ29udGVudEluaXRPcmlnaW5hbCA9IHRoaXMuX2lubmVyTGlzdEl0ZW0ubmdBZnRlclZpZXdJbml0O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzcGFjZS1iZWZvcmUtZnVuY3Rpb24tcGFyZW5cbiAgICB0aGlzLl9pbm5lckxpc3RJdGVtLm5nQWZ0ZXJWaWV3SW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGVtcHR5RGl2ID0gdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tYXQtbGlzdC10ZXh0OmVtcHR5Jyk7XG4gICAgICBpZiAoZW1wdHlEaXYpIHtcbiAgICAgICAgZW1wdHlEaXYucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9saW5lcyA9IG1hdExpbmVzUmVmO1xuICAgICAgbmdBZnRlckNvbnRlbnRJbml0T3JpZ2luYWwuYXBwbHkodGhpcyk7XG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRldGFpbEljb25DbGlja2VkKGU/OiBFdmVudCk6IHZvaWQge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChlKSkge1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gICAgdGhpcy5fbGlzdC52aWV3RGV0YWlsKHRoaXMubW9kZWxEYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVkaXRJY29uQ2xpY2tlZChlPzogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQoZSkpIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMuX2xpc3QuZWRpdERldGFpbCh0aGlzLm1vZGVsRGF0YSk7XG4gIH1cblxuICBwdWJsaWMgc2V0SXRlbURhdGEoZGF0YTogYW55KTogdm9pZCB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLm1vZGVsRGF0YSkpIHtcbiAgICAgIHRoaXMubW9kZWxEYXRhID0gZGF0YTtcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRJdGVtRGF0YSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm1vZGVsRGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoZWNrYm94Q2hhbmdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9saXN0LnNlbGVjdGFibGUgJiYgVXRpbC5pc0RlZmluZWQodGhpcy5tb2RlbERhdGEpKSB7XG4gICAgICB0aGlzLl9saXN0LnNldFNlbGVjdGVkKHRoaXMubW9kZWxEYXRhKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DaGVja2JveENsaWNrZWQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBnZXQgaXNTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbGlzdC5pc0l0ZW1TZWxlY3RlZCh0aGlzLm1vZGVsRGF0YSk7XG4gIH1cblxufVxuIiwiPG1hdC1saXN0LWl0ZW0gI2lubmVyTGlzdEl0ZW0+XG4gIDxkaXYgY2xhc3M9XCJvLWxpc3Qtcm93LWFjdGlvbiBvLWxpc3QtaXRlbS1zZWxlY3Rpb24tY2hlY2tcIiAqbmdJZj1cIl9saXN0ICYmIF9saXN0LnNlbGVjdGFibGVcIj5cbiAgICA8bWF0LWNoZWNrYm94IFtjaGVja2VkXT1cImlzU2VsZWN0ZWRcIiAoY2hhbmdlKT1cIm9uQ2hlY2tib3hDaGFuZ2UoKVwiIChjbGljayk9XCJvbkNoZWNrYm94Q2xpY2tlZCgkZXZlbnQpXCI+PC9tYXQtY2hlY2tib3g+XG4gIDwvZGl2PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbby1saXN0LWl0ZW0tYXZhdGFyXSwgW21hdExpc3RBdmF0YXJdLCBbbWF0TGlzdEljb25dXCI+IDwvbmctY29udGVudD5cbiAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtbGlzdC1pdGVtXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdExpbmVdXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPCEtLW1hdExpc3RJdGVtTWV0YSB0byBwdXQgY29udGVudCBpbnRvIHRoZSBtZXRhIHNlY3Rpb24gb2YgYSBsaXN0IGl0ZW0tLT5cbiAgPGRpdiBtYXRMaXN0SXRlbU1ldGE+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiby1saXN0LWl0ZW0tY2FyZC1pbWFnZSxvLWxpc3QtaXRlbS1jYXJkXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiby1saXN0LWl0ZW0tdGV4dCxvLWxpc3QtaXRlbS1hdmF0YXIsIFtvLWxpc3QtaXRlbV1cIj48L25nLWNvbnRlbnQ+XG5cbiAgPGRpdiBmeExheW91dD1cInJvd1wiIGNsYXNzPVwicm93LWJ1dHRvbnMtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8tbGlzdC1yb3ctYWN0aW9uIG8tbGlzdC1pdGVtLWljb25cIiAqbmdJZj1cIl9saXN0ICYmIF9saXN0LmVkaXRCdXR0b25JblJvd1wiIChjbGljayk9XCJvbkVkaXRJY29uQ2xpY2tlZCgkZXZlbnQpXCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPnt7IF9saXN0LmVkaXRCdXR0b25JblJvd0ljb24gfX08L21hdC1pY29uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvLWxpc3Qtcm93LWFjdGlvbiBvLWxpc3QtaXRlbS1pY29uXCIgKm5nSWY9XCJfbGlzdCAmJiBfbGlzdC5kZXRhaWxCdXR0b25JblJvd1wiIChjbGljayk9XCJvbkRldGFpbEljb25DbGlja2VkKCRldmVudClcIj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+e3sgX2xpc3QuZGV0YWlsQnV0dG9uSW5Sb3dJY29uIH19PC9tYXQtaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L21hdC1saXN0LWl0ZW0+XG4iXX0=