UNPKG

ontimize-web-ngx

Version:
65 lines 15.8 kB
import { __decorate, __metadata } from "tslib"; import { ChangeDetectionStrategy, Component, Injector, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core'; import { OBaseTableCellRenderer } from '../o-base-table-cell-renderer.class'; import { Util } from '../../../../../util/util'; import { Codes } from '../../../../../util'; import { BooleanInputConverter } from '../../../../../decorators'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "@angular/flex-layout/extended"; import * as i3 from "@angular/material/icon"; import * as i4 from "../../../../../pipes/o-translate.pipe"; export const DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_CHIP = [ 'icon', 'svgIcon:svg-icon', 'iconPosition: icon-position', 'translate: boolean' ]; export class OTableCellRendererChipComponent extends OBaseTableCellRenderer { constructor(injector) { super(injector); this.injector = injector; this.iconPosition = Codes.ICON_POSITION_LEFT; this.translate = true; this.tableColumn.type = 'chip'; } initialize() { super.initialize(); this.iconPosition = Util.parseIconPosition(this.iconPosition); } getCellData(value) { return value; } isArray(value) { return Array.isArray(value); } isIconPositionLeft() { return Util.isDefined(this.icon) && this.iconPosition === Codes.ICON_POSITION_LEFT; } isIconPositionRight() { return Util.isDefined(this.icon) && this.iconPosition === Codes.ICON_POSITION_RIGHT; } isSvgIconPositionRight() { return Util.isDefined(this.svgIcon) && this.iconPosition === Codes.ICON_POSITION_RIGHT; } isSvgIconPositionLeft() { return Util.isDefined(this.svgIcon) && this.iconPosition === Codes.ICON_POSITION_LEFT; } shouldTranslate() { return this.translate !== false; } } OTableCellRendererChipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableCellRendererChipComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); OTableCellRendererChipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableCellRendererChipComponent, selector: "o-table-cell-renderer-chip", inputs: { icon: "icon", svgIcon: ["svg-icon", "svgIcon"], iconPosition: ["icon-position", "iconPosition"], translate: ["boolean", "translate"] }, viewQueries: [{ propertyName: "templateref", first: true, predicate: ["templateref"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n <div class=\"o-table-cell-renderer-chip__container\">\n <ng-container *ngIf=\"isArray(cellvalue); else notArray\">\n <ng-container *ngFor=\"let value of cellvalue\">\n <ng-container *ngTemplateOutlet=\"simpleChip; context: { cellvalue: value }\">\n </ng-container>\n </ng-container>\n </ng-container>\n\n </div>\n\n <ng-template #notArray>\n <ng-container *ngTemplateOutlet=\"simpleChip; context: { cellvalue: cellvalue }\">\n </ng-container>\n </ng-template>\n\n <ng-template #simpleChip let-cellvalue=\"cellvalue\">\n <div class=\"o-table-cell-renderer-chip__content\" [ngClass]=\"'o-table-cell-renderer-chip-' + cellvalue\">\n <mat-icon *ngIf=\"isIconPositionLeft()\">{{ icon }}</mat-icon>\n <mat-icon *ngIf=\"isSvgIconPositionLeft()\" [svgIcon]=\"svgIcon\"></mat-icon>\n <span class=\"o-chip__label\">\n <ng-container *ngIf=\"shouldTranslate(); else noTranslate\">\n {{ getCellData(cellvalue) | oTranslate }}\n </ng-container>\n <ng-template #noTranslate>\n {{ getCellData(cellvalue) }}\n </ng-template>\n </span>\n <mat-icon *ngIf=\"isIconPositionRight()\">{{ icon }}</mat-icon>\n <mat-icon *ngIf=\"isSvgIconPositionRight()\" [svgIcon]=\"svgIcon\"></mat-icon>\n </div>\n </ng-template>\n</ng-template>\n", styles: [".o-table-cell-renderer-chip__container{display:inline-flex;align-items:center;width:100%;gap:4px}.o-table-cell-renderer-chip__container .o-table-cell-renderer-chip__content{border-radius:30px;padding:2px 8px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i4.OTranslatePipe, name: "oTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); __decorate([ BooleanInputConverter(), __metadata("design:type", Boolean) ], OTableCellRendererChipComponent.prototype, "translate", void 0); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableCellRendererChipComponent, decorators: [{ type: Component, args: [{ selector: 'o-table-cell-renderer-chip', inputs: DEFAULT_INPUTS_O_TABLE_CELL_RENDERER_CHIP, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #templateref let-cellvalue=\"cellvalue\" let-rowvalue=\"rowvalue\">\n <div class=\"o-table-cell-renderer-chip__container\">\n <ng-container *ngIf=\"isArray(cellvalue); else notArray\">\n <ng-container *ngFor=\"let value of cellvalue\">\n <ng-container *ngTemplateOutlet=\"simpleChip; context: { cellvalue: value }\">\n </ng-container>\n </ng-container>\n </ng-container>\n\n </div>\n\n <ng-template #notArray>\n <ng-container *ngTemplateOutlet=\"simpleChip; context: { cellvalue: cellvalue }\">\n </ng-container>\n </ng-template>\n\n <ng-template #simpleChip let-cellvalue=\"cellvalue\">\n <div class=\"o-table-cell-renderer-chip__content\" [ngClass]=\"'o-table-cell-renderer-chip-' + cellvalue\">\n <mat-icon *ngIf=\"isIconPositionLeft()\">{{ icon }}</mat-icon>\n <mat-icon *ngIf=\"isSvgIconPositionLeft()\" [svgIcon]=\"svgIcon\"></mat-icon>\n <span class=\"o-chip__label\">\n <ng-container *ngIf=\"shouldTranslate(); else noTranslate\">\n {{ getCellData(cellvalue) | oTranslate }}\n </ng-container>\n <ng-template #noTranslate>\n {{ getCellData(cellvalue) }}\n </ng-template>\n </span>\n <mat-icon *ngIf=\"isIconPositionRight()\">{{ icon }}</mat-icon>\n <mat-icon *ngIf=\"isSvgIconPositionRight()\" [svgIcon]=\"svgIcon\"></mat-icon>\n </div>\n </ng-template>\n</ng-template>\n", styles: [".o-table-cell-renderer-chip__container{display:inline-flex;align-items:center;width:100%;gap:4px}.o-table-cell-renderer-chip__container .o-table-cell-renderer-chip__content{border-radius:30px;padding:2px 8px}\n"] }] }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { templateref: [{ type: ViewChild, args: ['templateref', { read: TemplateRef, static: true }] }], translate: [] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jZWxsLXJlbmRlcmVyLWNoaXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvY29sdW1uL2NlbGwtcmVuZGVyZXIvY2hpcC9vLXRhYmxlLWNlbGwtcmVuZGVyZXItY2hpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy90YWJsZS9jb2x1bW4vY2VsbC1yZW5kZXJlci9jaGlwL28tdGFibGUtY2VsbC1yZW5kZXJlci1jaGlwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBVSxXQUFXLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hJLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7OztBQUNsRSxNQUFNLENBQUMsTUFBTSx5Q0FBeUMsR0FBRztJQUN2RCxNQUFNO0lBQ04sa0JBQWtCO0lBQ2xCLDZCQUE2QjtJQUM3QixvQkFBb0I7Q0FDckIsQ0FBQztBQVNGLE1BQU0sT0FBTywrQkFBZ0MsU0FBUSxzQkFBc0I7SUFRekUsWUFBc0IsUUFBa0I7UUFDdEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBREksYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUxqQyxpQkFBWSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQztRQUkvQyxjQUFTLEdBQVcsSUFBSSxDQUFDO1FBR3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztJQUNqQyxDQUFDO0lBRUQsVUFBVTtRQUNSLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFakUsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNNLE9BQU8sQ0FBQyxLQUFVO1FBQ3ZCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxLQUFLLENBQUMsa0JBQWtCLENBQUM7SUFDckYsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssS0FBSyxDQUFDLG1CQUFtQixDQUFDO0lBQ3RGLENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQztJQUN6RixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxLQUFLLENBQUMsa0JBQWtCLENBQUM7SUFDeEYsQ0FBQztJQUVNLGVBQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQztJQUNsQyxDQUFDOzs2SEE1Q1UsK0JBQStCO2lIQUEvQiwrQkFBK0IsMlNBRVIsV0FBVyxrRUNyQi9DLHk0Q0FpQ0E7QURSRTtJQUFDLHFCQUFxQixFQUFFOztrRUFDQzs0RkFQZCwrQkFBK0I7a0JBUjNDLFNBQVM7K0JBQ0UsNEJBQTRCLFVBRzlCLHlDQUF5QyxpQkFDbEMsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTsrRkFJdUIsV0FBVztzQkFBaEYsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSzdELFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3RvciwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT0Jhc2VUYWJsZUNlbGxSZW5kZXJlciB9IGZyb20gJy4uL28tYmFzZS10YWJsZS1jZWxsLXJlbmRlcmVyLmNsYXNzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RlY29yYXRvcnMnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fVEFCTEVfQ0VMTF9SRU5ERVJFUl9DSElQID0gW1xuICAnaWNvbicsXG4gICdzdmdJY29uOnN2Zy1pY29uJyxcbiAgJ2ljb25Qb3NpdGlvbjogaWNvbi1wb3NpdGlvbicsXG4gICd0cmFuc2xhdGU6IGJvb2xlYW4nXG5dO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby10YWJsZS1jZWxsLXJlbmRlcmVyLWNoaXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vby10YWJsZS1jZWxsLXJlbmRlcmVyLWNoaXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLXRhYmxlLWNlbGwtcmVuZGVyZXItY2hpcC5jb21wb25lbnQuc2NzcyddLFxuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fVEFCTEVfQ0VMTF9SRU5ERVJFUl9DSElQLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgT1RhYmxlQ2VsbFJlbmRlcmVyQ2hpcENvbXBvbmVudCBleHRlbmRzIE9CYXNlVGFibGVDZWxsUmVuZGVyZXIgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlcmVmJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyB0ZW1wbGF0ZXJlZjogVGVtcGxhdGVSZWY8YW55PjtcbiAgcHVibGljIGljb25Qb3NpdGlvbiA9IENvZGVzLklDT05fUE9TSVRJT05fTEVGVDtcbiAgcHVibGljIHN2Z0ljb246IHN0cmluZztcbiAgcHVibGljIGljb246IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHRyYW5zbGF0ZTpib29sZWFuID0gdHJ1ZTtcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB0aGlzLnRhYmxlQ29sdW1uLnR5cGUgPSAnY2hpcCc7XG4gIH1cblxuICBpbml0aWFsaXplKCkge1xuICAgIHN1cGVyLmluaXRpYWxpemUoKTtcbiAgICAgdGhpcy5pY29uUG9zaXRpb24gPSBVdGlsLnBhcnNlSWNvblBvc2l0aW9uKHRoaXMuaWNvblBvc2l0aW9uKTtcblxuICB9XG5cbiAgZ2V0Q2VsbERhdGEodmFsdWU6IGFueSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBwdWJsaWMgaXNBcnJheSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpO1xuICB9XG5cbiAgaXNJY29uUG9zaXRpb25MZWZ0KCkge1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZCh0aGlzLmljb24pICYmIHRoaXMuaWNvblBvc2l0aW9uID09PSBDb2Rlcy5JQ09OX1BPU0lUSU9OX0xFRlQ7XG4gIH1cblxuICBpc0ljb25Qb3NpdGlvblJpZ2h0KCkge1xuICAgIHJldHVybiBVdGlsLmlzRGVmaW5lZCh0aGlzLmljb24pICYmIHRoaXMuaWNvblBvc2l0aW9uID09PSBDb2Rlcy5JQ09OX1BPU0lUSU9OX1JJR0hUO1xuICB9XG5cbiAgaXNTdmdJY29uUG9zaXRpb25SaWdodCgpIHtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQodGhpcy5zdmdJY29uKSAmJiB0aGlzLmljb25Qb3NpdGlvbiA9PT0gQ29kZXMuSUNPTl9QT1NJVElPTl9SSUdIVDtcbiAgfVxuXG4gIGlzU3ZnSWNvblBvc2l0aW9uTGVmdCgpIHtcbiAgICByZXR1cm4gVXRpbC5pc0RlZmluZWQodGhpcy5zdmdJY29uKSAmJiB0aGlzLmljb25Qb3NpdGlvbiA9PT0gQ29kZXMuSUNPTl9QT1NJVElPTl9MRUZUO1xuICB9XG5cbiAgcHVibGljIHNob3VsZFRyYW5zbGF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUgIT09IGZhbHNlOyAvLyBQb3IgZGVmZWN0byB0cnVlXG4gIH1cblxufVxuIiwiPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZXJlZiBsZXQtY2VsbHZhbHVlPVwiY2VsbHZhbHVlXCIgbGV0LXJvd3ZhbHVlPVwicm93dmFsdWVcIj5cbiAgPGRpdiBjbGFzcz1cIm8tdGFibGUtY2VsbC1yZW5kZXJlci1jaGlwX19jb250YWluZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNBcnJheShjZWxsdmFsdWUpOyBlbHNlIG5vdEFycmF5XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2YWx1ZSBvZiBjZWxsdmFsdWVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpbXBsZUNoaXA7IGNvbnRleHQ6IHsgY2VsbHZhbHVlOiB2YWx1ZSB9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgPC9kaXY+XG5cbiAgPG5nLXRlbXBsYXRlICNub3RBcnJheT5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2ltcGxlQ2hpcDsgY29udGV4dDogeyBjZWxsdmFsdWU6IGNlbGx2YWx1ZSB9XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLXRlbXBsYXRlICNzaW1wbGVDaGlwIGxldC1jZWxsdmFsdWU9XCJjZWxsdmFsdWVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiby10YWJsZS1jZWxsLXJlbmRlcmVyLWNoaXBfX2NvbnRlbnRcIiBbbmdDbGFzc109XCInby10YWJsZS1jZWxsLXJlbmRlcmVyLWNoaXAtJyArIGNlbGx2YWx1ZVwiPlxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwiaXNJY29uUG9zaXRpb25MZWZ0KClcIj57eyBpY29uIH19PC9tYXQtaWNvbj5cbiAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImlzU3ZnSWNvblBvc2l0aW9uTGVmdCgpXCIgW3N2Z0ljb25dPVwic3ZnSWNvblwiPjwvbWF0LWljb24+XG4gICAgICA8c3BhbiBjbGFzcz1cIm8tY2hpcF9fbGFiZWxcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3VsZFRyYW5zbGF0ZSgpOyBlbHNlIG5vVHJhbnNsYXRlXCI+XG4gICAgICAgICAge3sgZ2V0Q2VsbERhdGEoY2VsbHZhbHVlKSB8IG9UcmFuc2xhdGUgfX1cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9UcmFuc2xhdGU+XG4gICAgICAgICAge3sgZ2V0Q2VsbERhdGEoY2VsbHZhbHVlKSB9fVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9zcGFuPlxuICAgICAgPG1hdC1pY29uICpuZ0lmPVwiaXNJY29uUG9zaXRpb25SaWdodCgpXCI+e3sgaWNvbiB9fTwvbWF0LWljb24+XG4gICAgICA8bWF0LWljb24gKm5nSWY9XCJpc1N2Z0ljb25Qb3NpdGlvblJpZ2h0KClcIiBbc3ZnSWNvbl09XCJzdmdJY29uXCI+PC9tYXQtaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=