@taiga-ui/kit
Version:
Taiga UI Angular main components kit
77 lines • 15.2 kB
JavaScript
import { AsyncPipe, NgForOf, NgIf, NgTemplateOutlet } from '@angular/common';
import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, inject, Output, TemplateRef, } from '@angular/core';
import { toSignal } from '@angular/core/rxjs-interop';
import { MutationObserverService, WA_MUTATION_OBSERVER_INIT, } from '@ng-web-apis/mutation-observer';
import { ResizeObserverService } from '@ng-web-apis/resize-observer';
import { EMPTY_QUERY } from '@taiga-ui/cdk/constants';
import { TuiItem } from '@taiga-ui/cdk/directives/item';
import { TuiItemsWithMoreDirective } from './items-with-more.directive';
import { TuiItemsWithMoreService } from './items-with-more.service';
import { TuiMore } from './more.directive';
import * as i0 from "@angular/core";
import * as i1 from "./items-with-more.directive";
class TuiItemsWithMoreComponent {
constructor() {
this.items = EMPTY_QUERY;
this.directive = inject(TuiItemsWithMoreDirective);
this.lastIndexChange = inject(TuiItemsWithMoreService);
this.lastIndex = toSignal(this.lastIndexChange, {
initialValue: 0,
});
}
get isMoreHidden() {
const { computedSide } = this.directive;
return ((this.lastIndex() >= this.items.length - 1 && computedSide === 'end') ||
(!this.lastIndex() && computedSide === 'start'));
}
isHidden(index) {
const { computedSide, required } = this.directive;
return ((index > this.lastIndex() && index !== required && computedSide === 'end') ||
(index < this.lastIndex() && index !== required && computedSide === 'start'));
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiItemsWithMoreComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiItemsWithMoreComponent, isStandalone: true, selector: "tui-items-with-more", outputs: { lastIndexChange: "lastIndexChange" }, providers: [
MutationObserverService,
ResizeObserverService,
TuiItemsWithMoreService,
{
provide: WA_MUTATION_OBSERVER_INIT,
useValue: {
childList: true,
characterData: true,
subtree: true,
},
},
], queries: [{ propertyName: "more", first: true, predicate: TuiMore, descendants: true, read: TemplateRef }, { propertyName: "items", predicate: TuiItem, descendants: true, read: TemplateRef }], hostDirectives: [{ directive: i1.TuiItemsWithMoreDirective, inputs: ["itemsLimit", "itemsLimit", "required", "required", "side", "side", "linesLimit", "linesLimit"] }], ngImport: i0, template: "<ng-container *ngIf=\"items.changes | async\" />\n<ng-container\n *ngIf=\"directive.side === 'start'\"\n [ngTemplateOutlet]=\"template\"\n/>\n<div\n *ngFor=\"let item of items; let index = index\"\n class=\"t-item\"\n [class.t-item_hidden]=\"isHidden(index)\"\n>\n <ng-container *ngTemplateOutlet=\"item\" />\n</div>\n<ng-container\n *ngIf=\"directive.side === 'end'\"\n [ngTemplateOutlet]=\"template\"\n/>\n<ng-template #template>\n <span\n *ngIf=\"!isMoreHidden\"\n class=\"t-item t-item_more\"\n >\n <ng-container\n [ngTemplateOutlet]=\"more || null\"\n [ngTemplateOutletContext]=\"{$implicit: lastIndex()}\"\n />\n </span>\n</ng-template>\n", styles: [":host{position:relative;display:flex;min-inline-size:0;flex:1;align-items:center;white-space:nowrap}:host._multiline{flex-wrap:wrap}.t-item{flex:0 0 auto}.t-item_hidden{position:absolute;bottom:0;visibility:hidden}:host._multiline .t-item_more:not(:empty){min-inline-size:var(--t-min-width, 0)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
}
export { TuiItemsWithMoreComponent };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiItemsWithMoreComponent, decorators: [{
type: Component,
args: [{ standalone: true, selector: 'tui-items-with-more', imports: [AsyncPipe, NgForOf, NgIf, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
MutationObserverService,
ResizeObserverService,
TuiItemsWithMoreService,
{
provide: WA_MUTATION_OBSERVER_INIT,
useValue: {
childList: true,
characterData: true,
subtree: true,
},
},
], hostDirectives: [
{
directive: TuiItemsWithMoreDirective,
inputs: ['itemsLimit', 'required', 'side', 'linesLimit'],
},
], template: "<ng-container *ngIf=\"items.changes | async\" />\n<ng-container\n *ngIf=\"directive.side === 'start'\"\n [ngTemplateOutlet]=\"template\"\n/>\n<div\n *ngFor=\"let item of items; let index = index\"\n class=\"t-item\"\n [class.t-item_hidden]=\"isHidden(index)\"\n>\n <ng-container *ngTemplateOutlet=\"item\" />\n</div>\n<ng-container\n *ngIf=\"directive.side === 'end'\"\n [ngTemplateOutlet]=\"template\"\n/>\n<ng-template #template>\n <span\n *ngIf=\"!isMoreHidden\"\n class=\"t-item t-item_more\"\n >\n <ng-container\n [ngTemplateOutlet]=\"more || null\"\n [ngTemplateOutletContext]=\"{$implicit: lastIndex()}\"\n />\n </span>\n</ng-template>\n", styles: [":host{position:relative;display:flex;min-inline-size:0;flex:1;align-items:center;white-space:nowrap}:host._multiline{flex-wrap:wrap}.t-item{flex:0 0 auto}.t-item_hidden{position:absolute;bottom:0;visibility:hidden}:host._multiline .t-item_more:not(:empty){min-inline-size:var(--t-min-width, 0)}\n"] }]
}], propDecorators: { items: [{
type: ContentChildren,
args: [TuiItem, { read: TemplateRef, descendants: true }]
}], more: [{
type: ContentChild,
args: [TuiMore, { read: TemplateRef }]
}], lastIndexChange: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbXMtd2l0aC1tb3JlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL2l0ZW1zLXdpdGgtbW9yZS9pdGVtcy13aXRoLW1vcmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvaXRlbXMtd2l0aC1tb3JlL2l0ZW1zLXdpdGgtbW9yZS50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTNFLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsTUFBTSxFQUNOLE1BQU0sRUFDTixXQUFXLEdBQ2QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3BELE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIseUJBQXlCLEdBQzVCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUd0RCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7OztBQUV6QyxNQTJCYSx5QkFBeUI7SUEzQnRDO1FBNkJ1QixVQUFLLEdBQW9DLFdBQVcsQ0FBQztRQUtyRCxjQUFTLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFHakQsb0JBQWUsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUVsRCxjQUFTLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDdkQsWUFBWSxFQUFFLENBQUM7U0FDbEIsQ0FBQyxDQUFDO0tBbUJOO0lBakJHLElBQWMsWUFBWTtRQUN0QixNQUFNLEVBQUMsWUFBWSxFQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUV0QyxPQUFPLENBQ0gsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFlBQVksS0FBSyxLQUFLLENBQUM7WUFDckUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxZQUFZLEtBQUssT0FBTyxDQUFDLENBQ2xELENBQUM7SUFDTixDQUFDO0lBRVMsUUFBUSxDQUFDLEtBQWE7UUFDNUIsTUFBTSxFQUFDLFlBQVksRUFBRSxRQUFRLEVBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRWhELE9BQU8sQ0FDSCxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksS0FBSyxLQUFLLFFBQVEsSUFBSSxZQUFZLEtBQUssS0FBSyxDQUFDO1lBQzFFLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxLQUFLLEtBQUssUUFBUSxJQUFJLFlBQVksS0FBSyxPQUFPLENBQUMsQ0FDL0UsQ0FBQztJQUNOLENBQUM7K0dBaENRLHlCQUF5QjttR0FBekIseUJBQXlCLG1IQXBCdkI7WUFDUCx1QkFBdUI7WUFDdkIscUJBQXFCO1lBQ3JCLHVCQUF1QjtZQUN2QjtnQkFDSSxPQUFPLEVBQUUseUJBQXlCO2dCQUNsQyxRQUFRLEVBQUU7b0JBQ04sU0FBUyxFQUFFLElBQUk7b0JBQ2YsYUFBYSxFQUFFLElBQUk7b0JBQ25CLE9BQU8sRUFBRSxJQUFJO2lCQUNoQjthQUNKO1NBQ0osNERBWWEsT0FBTywyQkFBUyxXQUFXLHdDQUh4QixPQUFPLDJCQUFTLFdBQVcsc01DckRoRCx5dEJBMkJBLDZWRENjLFNBQVMsOENBQUUsT0FBTyxtSEFBRSxJQUFJLDZGQUFFLGdCQUFnQjs7U0F3QjNDLHlCQUF5Qjs0RkFBekIseUJBQXlCO2tCQTNCckMsU0FBUztpQ0FDTSxJQUFJLFlBQ04scUJBQXFCLFdBQ3RCLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsbUJBR3BDLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1AsdUJBQXVCO3dCQUN2QixxQkFBcUI7d0JBQ3JCLHVCQUF1Qjt3QkFDdkI7NEJBQ0ksT0FBTyxFQUFFLHlCQUF5Qjs0QkFDbEMsUUFBUSxFQUFFO2dDQUNOLFNBQVMsRUFBRSxJQUFJO2dDQUNmLGFBQWEsRUFBRSxJQUFJO2dDQUNuQixPQUFPLEVBQUUsSUFBSTs2QkFDaEI7eUJBQ0o7cUJBQ0osa0JBQ2U7d0JBQ1o7NEJBQ0ksU0FBUyxFQUFFLHlCQUF5Qjs0QkFDcEMsTUFBTSxFQUFFLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsWUFBWSxDQUFDO3lCQUMzRDtxQkFDSjs4QkFJa0IsS0FBSztzQkFEdkIsZUFBZTt1QkFBQyxPQUFPLEVBQUUsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUM7Z0JBSTdDLElBQUk7c0JBRHRCLFlBQVk7dUJBQUMsT0FBTyxFQUFFLEVBQUMsSUFBSSxFQUFFLFdBQVcsRUFBQztnQkFNMUIsZUFBZTtzQkFEOUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXN5bmNQaXBlLCBOZ0Zvck9mLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHR5cGUge1F1ZXJ5TGlzdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIGluamVjdCxcbiAgICBPdXRwdXQsXG4gICAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0b1NpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgICBNdXRhdGlvbk9ic2VydmVyU2VydmljZSxcbiAgICBXQV9NVVRBVElPTl9PQlNFUlZFUl9JTklULFxufSBmcm9tICdAbmctd2ViLWFwaXMvbXV0YXRpb24tb2JzZXJ2ZXInO1xuaW1wb3J0IHtSZXNpemVPYnNlcnZlclNlcnZpY2V9IGZyb20gJ0BuZy13ZWItYXBpcy9yZXNpemUtb2JzZXJ2ZXInO1xuaW1wb3J0IHtFTVBUWV9RVUVSWX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHtUdWlJdGVtfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvaXRlbSc7XG5pbXBvcnQgdHlwZSB7VHVpQ29udGV4dH0gZnJvbSAnQHRhaWdhLXVpL2Nkay90eXBlcyc7XG5cbmltcG9ydCB7VHVpSXRlbXNXaXRoTW9yZURpcmVjdGl2ZX0gZnJvbSAnLi9pdGVtcy13aXRoLW1vcmUuZGlyZWN0aXZlJztcbmltcG9ydCB7VHVpSXRlbXNXaXRoTW9yZVNlcnZpY2V9IGZyb20gJy4vaXRlbXMtd2l0aC1tb3JlLnNlcnZpY2UnO1xuaW1wb3J0IHtUdWlNb3JlfSBmcm9tICcuL21vcmUuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3R1aS1pdGVtcy13aXRoLW1vcmUnLFxuICAgIGltcG9ydHM6IFtBc3luY1BpcGUsIE5nRm9yT2YsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXRdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pdGVtcy13aXRoLW1vcmUudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vaXRlbXMtd2l0aC1tb3JlLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgTXV0YXRpb25PYnNlcnZlclNlcnZpY2UsXG4gICAgICAgIFJlc2l6ZU9ic2VydmVyU2VydmljZSxcbiAgICAgICAgVHVpSXRlbXNXaXRoTW9yZVNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFdBX01VVEFUSU9OX09CU0VSVkVSX0lOSVQsXG4gICAgICAgICAgICB1c2VWYWx1ZToge1xuICAgICAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJEYXRhOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIF0sXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgZGlyZWN0aXZlOiBUdWlJdGVtc1dpdGhNb3JlRGlyZWN0aXZlLFxuICAgICAgICAgICAgaW5wdXRzOiBbJ2l0ZW1zTGltaXQnLCAncmVxdWlyZWQnLCAnc2lkZScsICdsaW5lc0xpbWl0J10sXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpSXRlbXNXaXRoTW9yZUNvbXBvbmVudCB7XG4gICAgQENvbnRlbnRDaGlsZHJlbihUdWlJdGVtLCB7cmVhZDogVGVtcGxhdGVSZWYsIGRlc2NlbmRhbnRzOiB0cnVlfSlcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXRlbXM6IFF1ZXJ5TGlzdDxUZW1wbGF0ZVJlZjx1bmtub3duPj4gPSBFTVBUWV9RVUVSWTtcblxuICAgIEBDb250ZW50Q2hpbGQoVHVpTW9yZSwge3JlYWQ6IFRlbXBsYXRlUmVmfSlcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbW9yZT86IFRlbXBsYXRlUmVmPFR1aUNvbnRleHQ8bnVtYmVyPj47XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlyZWN0aXZlID0gaW5qZWN0KFR1aUl0ZW1zV2l0aE1vcmVEaXJlY3RpdmUpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IGxhc3RJbmRleENoYW5nZSA9IGluamVjdChUdWlJdGVtc1dpdGhNb3JlU2VydmljZSk7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgbGFzdEluZGV4ID0gdG9TaWduYWwodGhpcy5sYXN0SW5kZXhDaGFuZ2UsIHtcbiAgICAgICAgaW5pdGlhbFZhbHVlOiAwLFxuICAgIH0pO1xuXG4gICAgcHJvdGVjdGVkIGdldCBpc01vcmVIaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHtjb21wdXRlZFNpZGV9ID0gdGhpcy5kaXJlY3RpdmU7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICh0aGlzLmxhc3RJbmRleCgpID49IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSAmJiBjb21wdXRlZFNpZGUgPT09ICdlbmQnKSB8fFxuICAgICAgICAgICAgKCF0aGlzLmxhc3RJbmRleCgpICYmIGNvbXB1dGVkU2lkZSA9PT0gJ3N0YXJ0JylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNIaWRkZW4oaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB7Y29tcHV0ZWRTaWRlLCByZXF1aXJlZH0gPSB0aGlzLmRpcmVjdGl2ZTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKGluZGV4ID4gdGhpcy5sYXN0SW5kZXgoKSAmJiBpbmRleCAhPT0gcmVxdWlyZWQgJiYgY29tcHV0ZWRTaWRlID09PSAnZW5kJykgfHxcbiAgICAgICAgICAgIChpbmRleCA8IHRoaXMubGFzdEluZGV4KCkgJiYgaW5kZXggIT09IHJlcXVpcmVkICYmIGNvbXB1dGVkU2lkZSA9PT0gJ3N0YXJ0JylcbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbXMuY2hhbmdlcyB8IGFzeW5jXCIgLz5cbjxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cImRpcmVjdGl2ZS5zaWRlID09PSAnc3RhcnQnXCJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiXG4vPlxuPGRpdlxuICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyBsZXQgaW5kZXggPSBpbmRleFwiXG4gICAgY2xhc3M9XCJ0LWl0ZW1cIlxuICAgIFtjbGFzcy50LWl0ZW1faGlkZGVuXT1cImlzSGlkZGVuKGluZGV4KVwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1cIiAvPlxuPC9kaXY+XG48bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJkaXJlY3RpdmUuc2lkZSA9PT0gJ2VuZCdcIlxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCJcbi8+XG48bmctdGVtcGxhdGUgI3RlbXBsYXRlPlxuICAgIDxzcGFuXG4gICAgICAgICpuZ0lmPVwiIWlzTW9yZUhpZGRlblwiXG4gICAgICAgIGNsYXNzPVwidC1pdGVtIHQtaXRlbV9tb3JlXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1vcmUgfHwgbnVsbFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyRpbXBsaWNpdDogbGFzdEluZGV4KCl9XCJcbiAgICAgICAgLz5cbiAgICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuIl19