UNPKG

devextreme-angular

Version:

Angular UI and visualization components based on DevExtreme widgets

182 lines 20.6 kB
/*! * devextreme-angular * Version: 25.2.3 * Build date: Fri Dec 12 2025 * * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * * This software may be modified and distributed under the terms * of the MIT license. See the LICENSE file in the root of the project for details. * * https://github.com/DevExpress/devextreme-angular */ /* tslint:disable:max-line-length */ import { Component, NgModule, Host, ElementRef, Renderer2, Inject, SkipSelf, Input } from '@angular/core'; import { DOCUMENT } from '@angular/common'; import { DxIntegrationModule, NestedOptionHost, extractTemplate, DxTemplateHost, } from 'devextreme-angular/core'; import { CollectionNestedOption } from 'devextreme-angular/core'; import { PROPERTY_TOKEN_buttons } from 'devextreme-angular/core/tokens'; import * as i0 from "@angular/core"; import * as i1 from "devextreme-angular/core"; export class DxiTreeListButtonComponent extends CollectionNestedOption { renderer; document; element; get cssClass() { return this._getOption('cssClass'); } set cssClass(value) { this._setOption('cssClass', value); } get disabled() { return this._getOption('disabled'); } set disabled(value) { this._setOption('disabled', value); } get hint() { return this._getOption('hint'); } set hint(value) { this._setOption('hint', value); } get icon() { return this._getOption('icon'); } set icon(value) { this._setOption('icon', value); } get name() { return this._getOption('name'); } set name(value) { this._setOption('name', value); } get onClick() { return this._getOption('onClick'); } set onClick(value) { this._setOption('onClick', value); } get template() { return this._getOption('template'); } set template(value) { this._setOption('template', value); } get text() { return this._getOption('text'); } set text(value) { this._setOption('text', value); } get visible() { return this._getOption('visible'); } set visible(value) { this._setOption('visible', value); } get location() { return this._getOption('location'); } set location(value) { this._setOption('location', value); } get options() { return this._getOption('options'); } set options(value) { this._setOption('options', value); } get _optionPath() { return 'buttons'; } constructor(parentOptionHost, optionHost, renderer, document, templateHost, element) { super(); this.renderer = renderer; this.document = document; this.element = element; parentOptionHost.setNestedOption(this); optionHost.setHost(this, this._fullOptionPath.bind(this)); templateHost.setHost(this); } setTemplate(template) { this.template = template; } ngAfterViewInit() { extractTemplate(this, this.element, this.renderer, this.document); } ngOnDestroy() { this._deleteRemovedOptions(this._fullOptionPath()); } /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxiTreeListButtonComponent, deps: [{ token: i1.NestedOptionHost, host: true, skipSelf: true }, { token: i1.NestedOptionHost, host: true }, { token: i0.Renderer2 }, { token: DOCUMENT }, { token: i1.DxTemplateHost, host: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DxiTreeListButtonComponent, isStandalone: true, selector: "dxi-tree-list-button", inputs: { cssClass: "cssClass", disabled: "disabled", hint: "hint", icon: "icon", name: "name", onClick: "onClick", template: "template", text: "text", visible: "visible", location: "location", options: "options" }, providers: [ NestedOptionHost, DxTemplateHost, { provide: PROPERTY_TOKEN_buttons, useExisting: DxiTreeListButtonComponent, } ], usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: DxIntegrationModule }] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxiTreeListButtonComponent, decorators: [{ type: Component, args: [{ selector: 'dxi-tree-list-button', standalone: true, template: '<ng-content></ng-content>', imports: [DxIntegrationModule], providers: [ NestedOptionHost, DxTemplateHost, { provide: PROPERTY_TOKEN_buttons, useExisting: DxiTreeListButtonComponent, } ], styles: [":host{display:block}\n"] }] }], ctorParameters: () => [{ type: i1.NestedOptionHost, decorators: [{ type: SkipSelf }, { type: Host }] }, { type: i1.NestedOptionHost, decorators: [{ type: Host }] }, { type: i0.Renderer2 }, { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT] }] }, { type: i1.DxTemplateHost, decorators: [{ type: Host }] }, { type: i0.ElementRef }], propDecorators: { cssClass: [{ type: Input }], disabled: [{ type: Input }], hint: [{ type: Input }], icon: [{ type: Input }], name: [{ type: Input }], onClick: [{ type: Input }], template: [{ type: Input }], text: [{ type: Input }], visible: [{ type: Input }], location: [{ type: Input }], options: [{ type: Input }] } }); export class DxiTreeListButtonModule { /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxiTreeListButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); /** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: DxiTreeListButtonModule, imports: [DxiTreeListButtonComponent], exports: [DxiTreeListButtonComponent] }); /** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxiTreeListButtonModule, imports: [DxiTreeListButtonComponent] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxiTreeListButtonModule, decorators: [{ type: NgModule, args: [{ imports: [ DxiTreeListButtonComponent ], exports: [ DxiTreeListButtonComponent ], }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWR4aS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2Rpc3QvdWkvdHJlZS1saXN0L25lc3RlZC9idXR0b24tZHhpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBRUgsb0NBQW9DO0FBR3BDLE9BQU8sRUFDSCxTQUFTLEVBQ1QsUUFBUSxFQUNSLElBQUksRUFDSixVQUFVLEVBQ1YsU0FBUyxFQUNULE1BQU0sRUFFTixRQUFRLEVBQ1IsS0FBSyxFQUNSLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQVMzQyxPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixlQUFlLEVBR2YsY0FBYyxHQUNqQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7QUFpQnhFLE1BQU0sT0FBTywwQkFBMkIsU0FBUSxzQkFBc0I7SUFrR2xEO0lBQ2tCO0lBRWxCO0lBbkdoQixJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQ0ksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBc0g7UUFDL0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQ0ksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsS0FBYTtRQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFDSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxLQUFhO1FBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUNJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLEtBQTBEO1FBQy9ELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUNJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLEtBQTJJO1FBQ25KLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQ0ksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBQ0QsSUFBSSxJQUFJLENBQUMsS0FBYTtRQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFDSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFzSDtRQUM5SCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFDSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUErQjtRQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFDSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFrQztRQUMxQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBR0QsSUFBYyxXQUFXO1FBQ3JCLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFHRCxZQUFnQyxnQkFBa0MsRUFDbEQsVUFBNEIsRUFDNUIsUUFBbUIsRUFDRCxRQUFhLEVBQy9CLFlBQTRCLEVBQzVCLE9BQW1CO1FBQy9CLEtBQUssRUFBRSxDQUFDO1FBSkksYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNELGFBQVEsR0FBUixRQUFRLENBQUs7UUFFL0IsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUUvQixnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRCxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBNkI7UUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDN0IsQ0FBQztJQUNELGVBQWU7UUFDWCxlQUFlLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUlELFdBQVc7UUFDUCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQzsySEF2SFEsMEJBQTBCLG1KQW1HbkIsUUFBUTsrR0FuR2YsMEJBQTBCLDJSQVR4QjtZQUNQLGdCQUFnQjtZQUNoQixjQUFjO1lBQ2Q7Z0JBQ0csT0FBTyxFQUFFLHNCQUFzQjtnQkFDL0IsV0FBVyxFQUFFLDBCQUEwQjthQUN6QztTQUNKLGlEQVZTLDJCQUEyQiwrRkFFMUIsbUJBQW1COzs0RkFVckIsMEJBQTBCO2tCQWZ0QyxTQUFTOytCQUNJLHNCQUFzQixjQUNwQixJQUFJLFlBQ04sMkJBQTJCLFdBRTVCLENBQUUsbUJBQW1CLENBQUUsYUFDckI7d0JBQ1AsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkOzRCQUNHLE9BQU8sRUFBRSxzQkFBc0I7NEJBQy9CLFdBQVcsNEJBQTRCO3lCQUN6QztxQkFDSjs7MEJBa0dZLFFBQVE7OzBCQUFJLElBQUk7OzBCQUNwQixJQUFJOzswQkFFSixNQUFNOzJCQUFDLFFBQVE7OzBCQUNmLElBQUk7a0VBakdULFFBQVE7c0JBRFgsS0FBSztnQkFTRixRQUFRO3NCQURYLEtBQUs7Z0JBU0YsSUFBSTtzQkFEUCxLQUFLO2dCQVNGLElBQUk7c0JBRFAsS0FBSztnQkFTRixJQUFJO3NCQURQLEtBQUs7Z0JBU0YsT0FBTztzQkFEVixLQUFLO2dCQVNGLFFBQVE7c0JBRFgsS0FBSztnQkFTRixJQUFJO3NCQURQLEtBQUs7Z0JBU0YsT0FBTztzQkFEVixLQUFLO2dCQVNGLFFBQVE7c0JBRFgsS0FBSztnQkFTRixPQUFPO3NCQURWLEtBQUs7O0FBaURWLE1BQU0sT0FBTyx1QkFBdUI7MkhBQXZCLHVCQUF1Qjs0SEFBdkIsdUJBQXVCLFlBbkl2QiwwQkFBMEIsYUFBMUIsMEJBQTBCOzRIQW1JMUIsdUJBQXVCLFlBTmhDLDBCQUEwQjs7NEZBTWpCLHVCQUF1QjtrQkFSbkMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsMEJBQTBCO3FCQUMzQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsMEJBQTBCO3FCQUMzQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogZGV2ZXh0cmVtZS1hbmd1bGFyXG4gKiBWZXJzaW9uOiAyNS4yLjNcbiAqIEJ1aWxkIGRhdGU6IEZyaSBEZWMgMTIgMjAyNVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMiAtIDIwMjUgRGV2ZWxvcGVyIEV4cHJlc3MgSW5jLiBBTEwgUklHSFRTIFJFU0VSVkVEXG4gKlxuICogVGhpcyBzb2Z0d2FyZSBtYXkgYmUgbW9kaWZpZWQgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtc1xuICogb2YgdGhlIE1JVCBsaWNlbnNlLiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgcHJvamVjdCBmb3IgZGV0YWlscy5cbiAqXG4gKiBodHRwczovL2dpdGh1Yi5jb20vRGV2RXhwcmVzcy9kZXZleHRyZW1lLWFuZ3VsYXJcbiAqL1xuXG4vKiB0c2xpbnQ6ZGlzYWJsZTptYXgtbGluZS1sZW5ndGggKi9cclxuXHJcblxyXG5pbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgTmdNb2R1bGUsXHJcbiAgICBIb3N0LFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIFJlbmRlcmVyMixcclxuICAgIEluamVjdCxcclxuICAgIEFmdGVyVmlld0luaXQsXHJcbiAgICBTa2lwU2VsZixcclxuICAgIElucHV0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5cclxuaW1wb3J0IGR4VHJlZUxpc3QgZnJvbSAnZGV2ZXh0cmVtZS91aS90cmVlX2xpc3QnO1xyXG5pbXBvcnQgeyBkeFRyZWVMaXN0Q29sdW1uLCBkeFRyZWVMaXN0Um93T2JqZWN0LCBUcmVlTGlzdFByZWRlZmluZWRDb2x1bW5CdXR0b24gfSBmcm9tICdkZXZleHRyZW1lL3VpL3RyZWVfbGlzdCc7XHJcbmltcG9ydCB7IGV2ZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS9ldmVudHMvZXZlbnRzLnR5cGVzJztcclxuaW1wb3J0IHsgVGV4dEVkaXRvckJ1dHRvbkxvY2F0aW9uIH0gZnJvbSAnZGV2ZXh0cmVtZS9jb21tb24nO1xyXG5pbXBvcnQgeyBkeEJ1dHRvbk9wdGlvbnMgfSBmcm9tICdkZXZleHRyZW1lL3VpL2J1dHRvbic7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgRHhJbnRlZ3JhdGlvbk1vZHVsZSxcclxuICAgIE5lc3RlZE9wdGlvbkhvc3QsXHJcbiAgICBleHRyYWN0VGVtcGxhdGUsXHJcbiAgICBEeFRlbXBsYXRlRGlyZWN0aXZlLFxyXG4gICAgSUR4VGVtcGxhdGVIb3N0LFxyXG4gICAgRHhUZW1wbGF0ZUhvc3QsXHJcbn0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb2xsZWN0aW9uTmVzdGVkT3B0aW9uIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgUFJPUEVSVFlfVE9LRU5fYnV0dG9ucyB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci9jb3JlL3Rva2Vucyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnZHhpLXRyZWUtbGlzdC1idXR0b24nLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXHJcbiAgICBzdHlsZXM6IFsnOmhvc3QgeyBkaXNwbGF5OiBibG9jazsgfSddLFxyXG4gICAgaW1wb3J0czogWyBEeEludGVncmF0aW9uTW9kdWxlIF0sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBOZXN0ZWRPcHRpb25Ib3N0LFxyXG4gICAgICAgIER4VGVtcGxhdGVIb3N0LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgICBwcm92aWRlOiBQUk9QRVJUWV9UT0tFTl9idXR0b25zLFxyXG4gICAgICAgICAgIHVzZUV4aXN0aW5nOiBEeGlUcmVlTGlzdEJ1dHRvbkNvbXBvbmVudCxcclxuICAgICAgICB9XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeGlUcmVlTGlzdEJ1dHRvbkNvbXBvbmVudCBleHRlbmRzIENvbGxlY3Rpb25OZXN0ZWRPcHRpb24gaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LFxyXG4gICAgSUR4VGVtcGxhdGVIb3N0IHtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgY3NzQ2xhc3MoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdjc3NDbGFzcycpO1xyXG4gICAgfVxyXG4gICAgc2V0IGNzc0NsYXNzKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2Nzc0NsYXNzJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB8ICgob3B0aW9uczogeyBjb2x1bW46IGR4VHJlZUxpc3RDb2x1bW4sIGNvbXBvbmVudDogZHhUcmVlTGlzdCwgcm93OiBkeFRyZWVMaXN0Um93T2JqZWN0IH0pID0+IGJvb2xlYW4pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdkaXNhYmxlZCcpO1xyXG4gICAgfVxyXG4gICAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuIHwgKChvcHRpb25zOiB7IGNvbHVtbjogZHhUcmVlTGlzdENvbHVtbiwgY29tcG9uZW50OiBkeFRyZWVMaXN0LCByb3c6IGR4VHJlZUxpc3RSb3dPYmplY3QgfSkgPT4gYm9vbGVhbikpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2Rpc2FibGVkJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgaGludCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2hpbnQnKTtcclxuICAgIH1cclxuICAgIHNldCBoaW50KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2hpbnQnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGdldCBpY29uKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignaWNvbicpO1xyXG4gICAgfVxyXG4gICAgc2V0IGljb24odmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignaWNvbicsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IG5hbWUoKTogc3RyaW5nIHwgVHJlZUxpc3RQcmVkZWZpbmVkQ29sdW1uQnV0dG9uIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCduYW1lJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgbmFtZSh2YWx1ZTogc3RyaW5nIHwgVHJlZUxpc3RQcmVkZWZpbmVkQ29sdW1uQnV0dG9uIHwgdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCduYW1lJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgb25DbGljaygpOiAoKGU6IHsgY29sdW1uOiBkeFRyZWVMaXN0Q29sdW1uLCBjb21wb25lbnQ6IGR4VHJlZUxpc3QsIGVsZW1lbnQ6IGFueSwgZXZlbnQ6IGV2ZW50LCBtb2RlbDogYW55LCByb3c6IGR4VHJlZUxpc3RSb3dPYmplY3QgfSkgPT4gdm9pZCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ29uQ2xpY2snKTtcclxuICAgIH1cclxuICAgIHNldCBvbkNsaWNrKHZhbHVlOiAoKGU6IHsgY29sdW1uOiBkeFRyZWVMaXN0Q29sdW1uLCBjb21wb25lbnQ6IGR4VHJlZUxpc3QsIGVsZW1lbnQ6IGFueSwgZXZlbnQ6IGV2ZW50LCBtb2RlbDogYW55LCByb3c6IGR4VHJlZUxpc3RSb3dPYmplY3QgfSkgPT4gdm9pZCkpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ29uQ2xpY2snLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGdldCB0ZW1wbGF0ZSgpOiBhbnkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ3RlbXBsYXRlJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgdGVtcGxhdGUodmFsdWU6IGFueSkge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbigndGVtcGxhdGUnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGdldCB0ZXh0KCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbigndGV4dCcpO1xyXG4gICAgfVxyXG4gICAgc2V0IHRleHQodmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbigndGV4dCcsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB8ICgob3B0aW9uczogeyBjb2x1bW46IGR4VHJlZUxpc3RDb2x1bW4sIGNvbXBvbmVudDogZHhUcmVlTGlzdCwgcm93OiBkeFRyZWVMaXN0Um93T2JqZWN0IH0pID0+IGJvb2xlYW4pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCd2aXNpYmxlJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbiB8ICgob3B0aW9uczogeyBjb2x1bW46IGR4VHJlZUxpc3RDb2x1bW4sIGNvbXBvbmVudDogZHhUcmVlTGlzdCwgcm93OiBkeFRyZWVMaXN0Um93T2JqZWN0IH0pID0+IGJvb2xlYW4pKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCd2aXNpYmxlJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgbG9jYXRpb24oKTogVGV4dEVkaXRvckJ1dHRvbkxvY2F0aW9uIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdsb2NhdGlvbicpO1xyXG4gICAgfVxyXG4gICAgc2V0IGxvY2F0aW9uKHZhbHVlOiBUZXh0RWRpdG9yQnV0dG9uTG9jYXRpb24pIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2xvY2F0aW9uJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgb3B0aW9ucygpOiBkeEJ1dHRvbk9wdGlvbnMgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ29wdGlvbnMnKTtcclxuICAgIH1cclxuICAgIHNldCBvcHRpb25zKHZhbHVlOiBkeEJ1dHRvbk9wdGlvbnMgfCB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ29wdGlvbnMnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByb3RlY3RlZCBnZXQgX29wdGlvblBhdGgoKSB7XHJcbiAgICAgICAgcmV0dXJuICdidXR0b25zJztcclxuICAgIH1cclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IoQFNraXBTZWxmKCkgQEhvc3QoKSBwYXJlbnRPcHRpb25Ib3N0OiBOZXN0ZWRPcHRpb25Ib3N0LFxyXG4gICAgICAgICAgICBASG9zdCgpIG9wdGlvbkhvc3Q6IE5lc3RlZE9wdGlvbkhvc3QsXHJcbiAgICAgICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgICAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogYW55LFxyXG4gICAgICAgICAgICBASG9zdCgpIHRlbXBsYXRlSG9zdDogRHhUZW1wbGF0ZUhvc3QsXHJcbiAgICAgICAgICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZikge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgcGFyZW50T3B0aW9uSG9zdC5zZXROZXN0ZWRPcHRpb24odGhpcyk7XHJcbiAgICAgICAgb3B0aW9uSG9zdC5zZXRIb3N0KHRoaXMsIHRoaXMuX2Z1bGxPcHRpb25QYXRoLmJpbmQodGhpcykpO1xyXG4gICAgICAgIHRlbXBsYXRlSG9zdC5zZXRIb3N0KHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFRlbXBsYXRlKHRlbXBsYXRlOiBEeFRlbXBsYXRlRGlyZWN0aXZlKSB7XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZSA9IHRlbXBsYXRlO1xyXG4gICAgfVxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIGV4dHJhY3RUZW1wbGF0ZSh0aGlzLCB0aGlzLmVsZW1lbnQsIHRoaXMucmVuZGVyZXIsIHRoaXMuZG9jdW1lbnQpO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5fZGVsZXRlUmVtb3ZlZE9wdGlvbnModGhpcy5fZnVsbE9wdGlvblBhdGgoKSk7XHJcbiAgICB9XHJcblxyXG59XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIER4aVRyZWVMaXN0QnV0dG9uQ29tcG9uZW50XHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBEeGlUcmVlTGlzdEJ1dHRvbkNvbXBvbmVudFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeGlUcmVlTGlzdEJ1dHRvbk1vZHVsZSB7IH1cclxuIl19