UNPKG

devextreme-angular

Version:

Angular UI and visualization components based on DevExtreme widgets

247 lines 30.5 kB
/*! * devextreme-angular * Version: 25.1.4 * Build date: Tue Aug 05 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, SkipSelf, Input } from '@angular/core'; import { DxIntegrationModule, NestedOptionHost, } from 'devextreme-angular/core'; import { NestedOption } from 'devextreme-angular/core'; import * as i0 from "@angular/core"; import * as i1 from "devextreme-angular/core"; export class DxoTreeListRowDraggingComponent extends NestedOption { get allowDropInsideItem() { return this._getOption('allowDropInsideItem'); } set allowDropInsideItem(value) { this._setOption('allowDropInsideItem', value); } get allowReordering() { return this._getOption('allowReordering'); } set allowReordering(value) { this._setOption('allowReordering', value); } get autoScroll() { return this._getOption('autoScroll'); } set autoScroll(value) { this._setOption('autoScroll', value); } get boundary() { return this._getOption('boundary'); } set boundary(value) { this._setOption('boundary', value); } get container() { return this._getOption('container'); } set container(value) { this._setOption('container', value); } get cursorOffset() { return this._getOption('cursorOffset'); } set cursorOffset(value) { this._setOption('cursorOffset', value); } get data() { return this._getOption('data'); } set data(value) { this._setOption('data', value); } get dragDirection() { return this._getOption('dragDirection'); } set dragDirection(value) { this._setOption('dragDirection', value); } get dragTemplate() { return this._getOption('dragTemplate'); } set dragTemplate(value) { this._setOption('dragTemplate', value); } get dropFeedbackMode() { return this._getOption('dropFeedbackMode'); } set dropFeedbackMode(value) { this._setOption('dropFeedbackMode', value); } get filter() { return this._getOption('filter'); } set filter(value) { this._setOption('filter', value); } get group() { return this._getOption('group'); } set group(value) { this._setOption('group', value); } get handle() { return this._getOption('handle'); } set handle(value) { this._setOption('handle', value); } get onAdd() { return this._getOption('onAdd'); } set onAdd(value) { this._setOption('onAdd', value); } get onDragChange() { return this._getOption('onDragChange'); } set onDragChange(value) { this._setOption('onDragChange', value); } get onDragEnd() { return this._getOption('onDragEnd'); } set onDragEnd(value) { this._setOption('onDragEnd', value); } get onDragMove() { return this._getOption('onDragMove'); } set onDragMove(value) { this._setOption('onDragMove', value); } get onDragStart() { return this._getOption('onDragStart'); } set onDragStart(value) { this._setOption('onDragStart', value); } get onRemove() { return this._getOption('onRemove'); } set onRemove(value) { this._setOption('onRemove', value); } get onReorder() { return this._getOption('onReorder'); } set onReorder(value) { this._setOption('onReorder', value); } get scrollSensitivity() { return this._getOption('scrollSensitivity'); } set scrollSensitivity(value) { this._setOption('scrollSensitivity', value); } get scrollSpeed() { return this._getOption('scrollSpeed'); } set scrollSpeed(value) { this._setOption('scrollSpeed', value); } get showDragIcons() { return this._getOption('showDragIcons'); } set showDragIcons(value) { this._setOption('showDragIcons', value); } get _optionPath() { return 'rowDragging'; } constructor(parentOptionHost, optionHost) { super(); parentOptionHost.setNestedOption(this); optionHost.setHost(this, this._fullOptionPath.bind(this)); } ngOnInit() { this._addRecreatedComponent(); } ngOnDestroy() { this._addRemovedOption(this._getOptionPath()); } /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxoTreeListRowDraggingComponent, deps: [{ token: i1.NestedOptionHost, host: true, skipSelf: true }, { token: i1.NestedOptionHost, host: true }], target: i0.ɵɵFactoryTarget.Component }); /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DxoTreeListRowDraggingComponent, isStandalone: true, selector: "dxo-tree-list-row-dragging", inputs: { allowDropInsideItem: "allowDropInsideItem", allowReordering: "allowReordering", autoScroll: "autoScroll", boundary: "boundary", container: "container", cursorOffset: "cursorOffset", data: "data", dragDirection: "dragDirection", dragTemplate: "dragTemplate", dropFeedbackMode: "dropFeedbackMode", filter: "filter", group: "group", handle: "handle", onAdd: "onAdd", onDragChange: "onDragChange", onDragEnd: "onDragEnd", onDragMove: "onDragMove", onDragStart: "onDragStart", onRemove: "onRemove", onReorder: "onReorder", scrollSensitivity: "scrollSensitivity", scrollSpeed: "scrollSpeed", showDragIcons: "showDragIcons" }, providers: [NestedOptionHost], usesInheritance: true, ngImport: i0, template: '', isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: DxIntegrationModule }] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxoTreeListRowDraggingComponent, decorators: [{ type: Component, args: [{ selector: 'dxo-tree-list-row-dragging', standalone: true, template: '', imports: [DxIntegrationModule], providers: [NestedOptionHost] }] }], ctorParameters: () => [{ type: i1.NestedOptionHost, decorators: [{ type: SkipSelf }, { type: Host }] }, { type: i1.NestedOptionHost, decorators: [{ type: Host }] }], propDecorators: { allowDropInsideItem: [{ type: Input }], allowReordering: [{ type: Input }], autoScroll: [{ type: Input }], boundary: [{ type: Input }], container: [{ type: Input }], cursorOffset: [{ type: Input }], data: [{ type: Input }], dragDirection: [{ type: Input }], dragTemplate: [{ type: Input }], dropFeedbackMode: [{ type: Input }], filter: [{ type: Input }], group: [{ type: Input }], handle: [{ type: Input }], onAdd: [{ type: Input }], onDragChange: [{ type: Input }], onDragEnd: [{ type: Input }], onDragMove: [{ type: Input }], onDragStart: [{ type: Input }], onRemove: [{ type: Input }], onReorder: [{ type: Input }], scrollSensitivity: [{ type: Input }], scrollSpeed: [{ type: Input }], showDragIcons: [{ type: Input }] } }); export class DxoTreeListRowDraggingModule { /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxoTreeListRowDraggingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); /** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: DxoTreeListRowDraggingModule, imports: [DxoTreeListRowDraggingComponent], exports: [DxoTreeListRowDraggingComponent] }); /** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxoTreeListRowDraggingModule, imports: [DxoTreeListRowDraggingComponent] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxoTreeListRowDraggingModule, decorators: [{ type: NgModule, args: [{ imports: [ DxoTreeListRowDraggingComponent ], exports: [ DxoTreeListRowDraggingComponent ], }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWRyYWdnaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vZGlzdC91aS90cmVlLWxpc3QvbmVzdGVkL3Jvdy1kcmFnZ2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7R0FXRztBQUVILG9DQUFvQztBQUdwQyxPQUFPLEVBQ0gsU0FBUyxFQUdULFFBQVEsRUFDUixJQUFJLEVBQ0osUUFBUSxFQUNSLEtBQUssRUFDUixNQUFNLGVBQWUsQ0FBQztBQVd2QixPQUFPLEVBQ0gsbUJBQW1CLEVBQ25CLGdCQUFnQixHQUNuQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBV3ZELE1BQU0sT0FBTywrQkFBZ0MsU0FBUSxZQUFZO0lBQzdELElBQ0ksbUJBQW1CO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRCxJQUFJLG1CQUFtQixDQUFDLEtBQWM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFDSSxlQUFlO1FBQ2YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNELElBQUksZUFBZSxDQUFDLEtBQWM7UUFDOUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFDSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxJQUFJLFVBQVUsQ0FBQyxLQUFjO1FBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUNJLFFB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QztpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogZGV2ZXh0cmVtZS1hbmd1bGFyXG4gKiBWZXJzaW9uOiAyNS4xLjRcbiAqIEJ1aWxkIGRhdGU6IFR1ZSBBdWcgMDUgMjAyNVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMiAtIDIwMjUgRGV2ZWxvcGVyIEV4cHJlc3MgSW5jLiBBTEwgUklHSFRTIFJFU0VSVkVEXG4gKlxuICogVGhpcyBzb2Z0d2FyZSBtYXkgYmUgbW9kaWZpZWQgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtc1xuICogb2YgdGhlIE1JVCBsaWNlbnNlLiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgcHJvamVjdCBmb3IgZGV0YWlscy5cbiAqXG4gKiBodHRwczovL2dpdGh1Yi5jb20vRGV2RXhwcmVzcy9kZXZleHRyZW1lLWFuZ3VsYXJcbiAqL1xuXG4vKiB0c2xpbnQ6ZGlzYWJsZTptYXgtbGluZS1sZW5ndGggKi9cclxuXHJcblxyXG5pbXBvcnQge1xyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgT25Jbml0LFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgTmdNb2R1bGUsXHJcbiAgICBIb3N0LFxyXG4gICAgU2tpcFNlbGYsXHJcbiAgICBJbnB1dFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuXHJcblxyXG5cclxuaW1wb3J0IGR4U29ydGFibGUgZnJvbSAnZGV2ZXh0cmVtZS91aS9zb3J0YWJsZSc7XHJcbmltcG9ydCBkeERyYWdnYWJsZSBmcm9tICdkZXZleHRyZW1lL3VpL2RyYWdnYWJsZSc7XHJcbmltcG9ydCB7IERyYWdEaXJlY3Rpb24sIERyYWdIaWdobGlnaHQgfSBmcm9tICdkZXZleHRyZW1lL2NvbW1vbic7XHJcbmltcG9ydCB7IEdyaWRCYXNlIH0gZnJvbSAnZGV2ZXh0cmVtZS9jb21tb24vZ3JpZHMnO1xyXG5pbXBvcnQgeyBldmVudCB9IGZyb20gJ2RldmV4dHJlbWUvZXZlbnRzL2V2ZW50cy50eXBlcyc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgRHhJbnRlZ3JhdGlvbk1vZHVsZSxcclxuICAgIE5lc3RlZE9wdGlvbkhvc3QsXHJcbn0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZXN0ZWRPcHRpb24gfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvY29yZSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2R4by10cmVlLWxpc3Qtcm93LWRyYWdnaW5nJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICB0ZW1wbGF0ZTogJycsXHJcbiAgICBzdHlsZXM6IFsnJ10sXHJcbiAgICBpbXBvcnRzOiBbIER4SW50ZWdyYXRpb25Nb2R1bGUgXSxcclxuICAgIHByb3ZpZGVyczogW05lc3RlZE9wdGlvbkhvc3RdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeG9UcmVlTGlzdFJvd0RyYWdnaW5nQ29tcG9uZW50IGV4dGVuZHMgTmVzdGVkT3B0aW9uIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQgIHtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgYWxsb3dEcm9wSW5zaWRlSXRlbSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdhbGxvd0Ryb3BJbnNpZGVJdGVtJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgYWxsb3dEcm9wSW5zaWRlSXRlbSh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignYWxsb3dEcm9wSW5zaWRlSXRlbScsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGFsbG93UmVvcmRlcmluZygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdhbGxvd1Jlb3JkZXJpbmcnKTtcclxuICAgIH1cclxuICAgIHNldCBhbGxvd1Jlb3JkZXJpbmcodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2FsbG93UmVvcmRlcmluZycsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGF1dG9TY3JvbGwoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignYXV0b1Njcm9sbCcpO1xyXG4gICAgfVxyXG4gICAgc2V0IGF1dG9TY3JvbGwodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2F1dG9TY3JvbGwnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGdldCBib3VuZGFyeSgpOiBhbnkgfCBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2JvdW5kYXJ5Jyk7XHJcbiAgICB9XHJcbiAgICBzZXQgYm91bmRhcnkodmFsdWU6IGFueSB8IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignYm91bmRhcnknLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGdldCBjb250YWluZXIoKTogYW55IHwgc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdjb250YWluZXInKTtcclxuICAgIH1cclxuICAgIHNldCBjb250YWluZXIodmFsdWU6IGFueSB8IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignY29udGFpbmVyJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgY3Vyc29yT2Zmc2V0KCk6IHN0cmluZyB8IHsgeD86IG51bWJlciwgeT86IG51bWJlciB9IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdjdXJzb3JPZmZzZXQnKTtcclxuICAgIH1cclxuICAgIHNldCBjdXJzb3JPZmZzZXQodmFsdWU6IHN0cmluZyB8IHsgeD86IG51bWJlciwgeT86IG51bWJlciB9KSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdjdXJzb3JPZmZzZXQnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGdldCBkYXRhKCk6IGFueSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignZGF0YScpO1xyXG4gICAgfVxyXG4gICAgc2V0IGRhdGEodmFsdWU6IGFueSB8IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignZGF0YScsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGRyYWdEaXJlY3Rpb24oKTogRHJhZ0RpcmVjdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignZHJhZ0RpcmVjdGlvbicpO1xyXG4gICAgfVxyXG4gICAgc2V0IGRyYWdEaXJlY3Rpb24odmFsdWU6IERyYWdEaXJlY3Rpb24pIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2RyYWdEaXJlY3Rpb24nLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGdldCBkcmFnVGVtcGxhdGUoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdkcmFnVGVtcGxhdGUnKTtcclxuICAgIH1cclxuICAgIHNldCBkcmFnVGVtcGxhdGUodmFsdWU6IGFueSkge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignZHJhZ1RlbXBsYXRlJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgZHJvcEZlZWRiYWNrTW9kZSgpOiBEcmFnSGlnaGxpZ2h0IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdkcm9wRmVlZGJhY2tNb2RlJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgZHJvcEZlZWRiYWNrTW9kZSh2YWx1ZTogRHJhZ0hpZ2hsaWdodCkge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignZHJvcEZlZWRiYWNrTW9kZScsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGZpbHRlcigpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2ZpbHRlcicpO1xyXG4gICAgfVxyXG4gICAgc2V0IGZpbHRlcih2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdmaWx0ZXInLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGdldCBncm91cCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2dyb3VwJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgZ3JvdXAodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignZ3JvdXAnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGdldCBoYW5kbGUoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdoYW5kbGUnKTtcclxuICAgIH1cclxuICAgIHNldCBoYW5kbGUodmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignaGFuZGxlJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgb25BZGQoKTogKChlOiB7IGNvbXBvbmVudDogR3JpZEJhc2UsIGRyb3BJbnNpZGVJdGVtOiBib29sZWFuLCBldmVudDogZXZlbnQsIGZyb21Db21wb25lbnQ6IGR4U29ydGFibGUgfCBkeERyYWdnYWJsZSwgZnJvbURhdGE6IGFueSwgZnJvbUluZGV4OiBudW1iZXIsIGl0ZW1EYXRhOiBhbnksIGl0ZW1FbGVtZW50OiBhbnksIHRvQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIHRvRGF0YTogYW55LCB0b0luZGV4OiBudW1iZXIgfSkgPT4gdm9pZCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ29uQWRkJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgb25BZGQodmFsdWU6ICgoZTogeyBjb21wb25lbnQ6IEdyaWRCYXNlLCBkcm9wSW5zaWRlSXRlbTogYm9vbGVhbiwgZXZlbnQ6IGV2ZW50LCBmcm9tQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIGZyb21EYXRhOiBhbnksIGZyb21JbmRleDogbnVtYmVyLCBpdGVtRGF0YTogYW55LCBpdGVtRWxlbWVudDogYW55LCB0b0NvbXBvbmVudDogZHhTb3J0YWJsZSB8IGR4RHJhZ2dhYmxlLCB0b0RhdGE6IGFueSwgdG9JbmRleDogbnVtYmVyIH0pID0+IHZvaWQpKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdvbkFkZCcsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IG9uRHJhZ0NoYW5nZSgpOiAoKGU6IHsgY2FuY2VsOiBib29sZWFuLCBjb21wb25lbnQ6IEdyaWRCYXNlLCBkcm9wSW5zaWRlSXRlbTogYm9vbGVhbiwgZXZlbnQ6IGV2ZW50LCBmcm9tQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIGZyb21EYXRhOiBhbnksIGZyb21JbmRleDogbnVtYmVyLCBpdGVtRGF0YTogYW55LCBpdGVtRWxlbWVudDogYW55LCB0b0NvbXBvbmVudDogZHhTb3J0YWJsZSB8IGR4RHJhZ2dhYmxlLCB0b0RhdGE6IGFueSwgdG9JbmRleDogbnVtYmVyIH0pID0+IHZvaWQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdvbkRyYWdDaGFuZ2UnKTtcclxuICAgIH1cclxuICAgIHNldCBvbkRyYWdDaGFuZ2UodmFsdWU6ICgoZTogeyBjYW5jZWw6IGJvb2xlYW4sIGNvbXBvbmVudDogR3JpZEJhc2UsIGRyb3BJbnNpZGVJdGVtOiBib29sZWFuLCBldmVudDogZXZlbnQsIGZyb21Db21wb25lbnQ6IGR4U29ydGFibGUgfCBkeERyYWdnYWJsZSwgZnJvbURhdGE6IGFueSwgZnJvbUluZGV4OiBudW1iZXIsIGl0ZW1EYXRhOiBhbnksIGl0ZW1FbGVtZW50OiBhbnksIHRvQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIHRvRGF0YTogYW55LCB0b0luZGV4OiBudW1iZXIgfSkgPT4gdm9pZCkpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ29uRHJhZ0NoYW5nZScsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IG9uRHJhZ0VuZCgpOiAoKGU6IHsgY2FuY2VsOiBib29sZWFuLCBjb21wb25lbnQ6IEdyaWRCYXNlLCBkcm9wSW5zaWRlSXRlbTogYm9vbGVhbiwgZXZlbnQ6IGV2ZW50LCBmcm9tQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIGZyb21EYXRhOiBhbnksIGZyb21JbmRleDogbnVtYmVyLCBpdGVtRGF0YTogYW55LCBpdGVtRWxlbWVudDogYW55LCB0b0NvbXBvbmVudDogZHhTb3J0YWJsZSB8IGR4RHJhZ2dhYmxlLCB0b0RhdGE6IGFueSwgdG9JbmRleDogbnVtYmVyIH0pID0+IHZvaWQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdvbkRyYWdFbmQnKTtcclxuICAgIH1cclxuICAgIHNldCBvbkRyYWdFbmQodmFsdWU6ICgoZTogeyBjYW5jZWw6IGJvb2xlYW4sIGNvbXBvbmVudDogR3JpZEJhc2UsIGRyb3BJbnNpZGVJdGVtOiBib29sZWFuLCBldmVudDogZXZlbnQsIGZyb21Db21wb25lbnQ6IGR4U29ydGFibGUgfCBkeERyYWdnYWJsZSwgZnJvbURhdGE6IGFueSwgZnJvbUluZGV4OiBudW1iZXIsIGl0ZW1EYXRhOiBhbnksIGl0ZW1FbGVtZW50OiBhbnksIHRvQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIHRvRGF0YTogYW55LCB0b0luZGV4OiBudW1iZXIgfSkgPT4gdm9pZCkpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ29uRHJhZ0VuZCcsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IG9uRHJhZ01vdmUoKTogKChlOiB7IGNhbmNlbDogYm9vbGVhbiwgY29tcG9uZW50OiBHcmlkQmFzZSwgZHJvcEluc2lkZUl0ZW06IGJvb2xlYW4sIGV2ZW50OiBldmVudCwgZnJvbUNvbXBvbmVudDogZHhTb3J0YWJsZSB8IGR4RHJhZ2dhYmxlLCBmcm9tRGF0YTogYW55LCBmcm9tSW5kZXg6IG51bWJlciwgaXRlbURhdGE6IGFueSwgaXRlbUVsZW1lbnQ6IGFueSwgdG9Db21wb25lbnQ6IGR4U29ydGFibGUgfCBkeERyYWdnYWJsZSwgdG9EYXRhOiBhbnksIHRvSW5kZXg6IG51bWJlciB9KSA9PiB2b2lkKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignb25EcmFnTW92ZScpO1xyXG4gICAgfVxyXG4gICAgc2V0IG9uRHJhZ01vdmUodmFsdWU6ICgoZTogeyBjYW5jZWw6IGJvb2xlYW4sIGNvbXBvbmVudDogR3JpZEJhc2UsIGRyb3BJbnNpZGVJdGVtOiBib29sZWFuLCBldmVudDogZXZlbnQsIGZyb21Db21wb25lbnQ6IGR4U29ydGFibGUgfCBkeERyYWdnYWJsZSwgZnJvbURhdGE6IGFueSwgZnJvbUluZGV4OiBudW1iZXIsIGl0ZW1EYXRhOiBhbnksIGl0ZW1FbGVtZW50OiBhbnksIHRvQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIHRvRGF0YTogYW55LCB0b0luZGV4OiBudW1iZXIgfSkgPT4gdm9pZCkpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ29uRHJhZ01vdmUnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGdldCBvbkRyYWdTdGFydCgpOiAoKGU6IHsgY2FuY2VsOiBib29sZWFuLCBjb21wb25lbnQ6IEdyaWRCYXNlLCBldmVudDogZXZlbnQsIGZyb21EYXRhOiBhbnksIGZyb21JbmRleDogbnVtYmVyLCBpdGVtRGF0YTogYW55LCBpdGVtRWxlbWVudDogYW55IH0pID0+IHZvaWQpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdvbkRyYWdTdGFydCcpO1xyXG4gICAgfVxyXG4gICAgc2V0IG9uRHJhZ1N0YXJ0KHZhbHVlOiAoKGU6IHsgY2FuY2VsOiBib29sZWFuLCBjb21wb25lbnQ6IEdyaWRCYXNlLCBldmVudDogZXZlbnQsIGZyb21EYXRhOiBhbnksIGZyb21JbmRleDogbnVtYmVyLCBpdGVtRGF0YTogYW55LCBpdGVtRWxlbWVudDogYW55IH0pID0+IHZvaWQpKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdvbkRyYWdTdGFydCcsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IG9uUmVtb3ZlKCk6ICgoZTogeyBjb21wb25lbnQ6IEdyaWRCYXNlLCBldmVudDogZXZlbnQsIGZyb21Db21wb25lbnQ6IGR4U29ydGFibGUgfCBkeERyYWdnYWJsZSwgZnJvbURhdGE6IGFueSwgZnJvbUluZGV4OiBudW1iZXIsIGl0ZW1EYXRhOiBhbnksIGl0ZW1FbGVtZW50OiBhbnksIHRvQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIHRvRGF0YTogYW55LCB0b0luZGV4OiBudW1iZXIgfSkgPT4gdm9pZCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ29uUmVtb3ZlJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgb25SZW1vdmUodmFsdWU6ICgoZTogeyBjb21wb25lbnQ6IEdyaWRCYXNlLCBldmVudDogZXZlbnQsIGZyb21Db21wb25lbnQ6IGR4U29ydGFibGUgfCBkeERyYWdnYWJsZSwgZnJvbURhdGE6IGFueSwgZnJvbUluZGV4OiBudW1iZXIsIGl0ZW1EYXRhOiBhbnksIGl0ZW1FbGVtZW50OiBhbnksIHRvQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIHRvRGF0YTogYW55LCB0b0luZGV4OiBudW1iZXIgfSkgPT4gdm9pZCkpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ29uUmVtb3ZlJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgb25SZW9yZGVyKCk6ICgoZTogeyBjb21wb25lbnQ6IEdyaWRCYXNlLCBkcm9wSW5zaWRlSXRlbTogYm9vbGVhbiwgZXZlbnQ6IGV2ZW50LCBmcm9tQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIGZyb21EYXRhOiBhbnksIGZyb21JbmRleDogbnVtYmVyLCBpdGVtRGF0YTogYW55LCBpdGVtRWxlbWVudDogYW55LCBwcm9taXNlOiBhbnksIHRvQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIHRvRGF0YTogYW55LCB0b0luZGV4OiBudW1iZXIgfSkgPT4gdm9pZCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ29uUmVvcmRlcicpO1xyXG4gICAgfVxyXG4gICAgc2V0IG9uUmVvcmRlcih2YWx1ZTogKChlOiB7IGNvbXBvbmVudDogR3JpZEJhc2UsIGRyb3BJbnNpZGVJdGVtOiBib29sZWFuLCBldmVudDogZXZlbnQsIGZyb21Db21wb25lbnQ6IGR4U29ydGFibGUgfCBkeERyYWdnYWJsZSwgZnJvbURhdGE6IGFueSwgZnJvbUluZGV4OiBudW1iZXIsIGl0ZW1EYXRhOiBhbnksIGl0ZW1FbGVtZW50OiBhbnksIHByb21pc2U6IGFueSwgdG9Db21wb25lbnQ6IGR4U29ydGFibGUgfCBkeERyYWdnYWJsZSwgdG9EYXRhOiBhbnksIHRvSW5kZXg6IG51bWJlciB9KSA9PiB2b2lkKSkge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignb25SZW9yZGVyJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgc2Nyb2xsU2Vuc2l0aXZpdHkoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdzY3JvbGxTZW5zaXRpdml0eScpO1xyXG4gICAgfVxyXG4gICAgc2V0IHNjcm9sbFNlbnNpdGl2aXR5KHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ3Njcm9sbFNlbnNpdGl2aXR5JywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgc2Nyb2xsU3BlZWQoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdzY3JvbGxTcGVlZCcpO1xyXG4gICAgfVxyXG4gICAgc2V0IHNjcm9sbFNwZWVkKHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ3Njcm9sbFNwZWVkJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgc2hvd0RyYWdJY29ucygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdzaG93RHJhZ0ljb25zJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgc2hvd0RyYWdJY29ucyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignc2hvd0RyYWdJY29ucycsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJvdGVjdGVkIGdldCBfb3B0aW9uUGF0aCgpIHtcclxuICAgICAgICByZXR1cm4gJ3Jvd0RyYWdnaW5nJztcclxuICAgIH1cclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IoQFNraXBTZWxmKCkgQEhvc3QoKSBwYXJlbnRPcHRpb25Ib3N0OiBOZXN0ZWRPcHRpb25Ib3N0LFxyXG4gICAgICAgICAgICBASG9zdCgpIG9wdGlvbkhvc3Q6IE5lc3RlZE9wdGlvbkhvc3QpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHBhcmVudE9wdGlvbkhvc3Quc2V0TmVzdGVkT3B0aW9uKHRoaXMpO1xyXG4gICAgICAgIG9wdGlvbkhvc3Quc2V0SG9zdCh0aGlzLCB0aGlzLl9mdWxsT3B0aW9uUGF0aC5iaW5kKHRoaXMpKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5fYWRkUmVjcmVhdGVkQ29tcG9uZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgdGhpcy5fYWRkUmVtb3ZlZE9wdGlvbih0aGlzLl9nZXRPcHRpb25QYXRoKCkpO1xyXG4gICAgfVxyXG5cclxuXHJcbn1cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgRHhvVHJlZUxpc3RSb3dEcmFnZ2luZ0NvbXBvbmVudFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgRHhvVHJlZUxpc3RSb3dEcmFnZ2luZ0NvbXBvbmVudFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEeG9UcmVlTGlzdFJvd0RyYWdnaW5nTW9kdWxlIHsgfVxyXG4iXX0=