UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

613 lines (612 loc) 41.2 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, ElementRef, Input, Output, EventEmitter } from '@angular/core'; import { I18N, Option } from '../../decorator/decorators'; import { AbstractTableComponent } from './AbstractTableComponent'; var /** @type {?} */ TYPE_NAME = "phx-table-body"; var DefaultTableBody = /** @class */ (function (_super) { tslib_1.__extends(DefaultTableBody, _super); function DefaultTableBody(elementRef) { var _this = _super.call(this, elementRef) || this; _this.rowDragEvent = new EventEmitter(); _this.rowDragStartEvent = new EventEmitter(); _this.rowDragEndEvent = new EventEmitter(); _this.rowDragEnterEvent = new EventEmitter(); _this.rowDragOverEvent = new EventEmitter(); _this.rowDragLeaveEvent = new EventEmitter(); _this.rowDropEvent = new EventEmitter(); _this.rowDropAcceptedEvent = new EventEmitter(); _this.rowDropRejectedEvent = new EventEmitter(); return _this; } // Implement /** * @param {?} table * @return {?} */ DefaultTableBody.prototype.doInitialize = /** * @param {?} table * @return {?} */ function (table) { }; /** * @return {?} */ DefaultTableBody.prototype.isSelfDataDirty = /** * @return {?} */ function () { return false; }; /** * @return {?} */ DefaultTableBody.prototype.selfResetData = /** * @return {?} */ function () { }; /** * @param {?} data * @return {?} */ DefaultTableBody.prototype.selfSaveData = /** * @param {?} data * @return {?} */ function (data) { }; /** * @param {?} rows * @return {?} */ DefaultTableBody.prototype.render = /** * @param {?} rows * @return {?} */ function (rows) { var _this = this; return new Promise(function (resolve, reject) { try { _this.rows = rows; resolve(); } catch (/** @type {?} */ e) { reject(e); } }); }; /** * @return {?} */ DefaultTableBody.prototype.getRowControllers = /** * @return {?} */ function () { return this.rows; }; /** * @return {?} */ DefaultTableBody.prototype.getRowDragEvent = /** * @return {?} */ function () { return this.rowDragEvent; }; /** * @param {?} event * @return {?} */ DefaultTableBody.prototype.setRowDragEvent = /** * @param {?} event * @return {?} */ function (event) { this.rowDragEvent = event; }; /** * @return {?} */ DefaultTableBody.prototype.getRowDragStartEvent = /** * @return {?} */ function () { return this.rowDragStartEvent; }; /** * @param {?} event * @return {?} */ DefaultTableBody.prototype.setRowDragStartEvent = /** * @param {?} event * @return {?} */ function (event) { this.rowDragStartEvent = event; }; /** * @return {?} */ DefaultTableBody.prototype.getRowDragEndEvent = /** * @return {?} */ function () { return this.rowDragEndEvent; }; /** * @param {?} event * @return {?} */ DefaultTableBody.prototype.setRowDragEndEvent = /** * @param {?} event * @return {?} */ function (event) { this.rowDragEndEvent = event; }; /** * @return {?} */ DefaultTableBody.prototype.getRowDragEnterEvent = /** * @return {?} */ function () { return this.rowDragEnterEvent; }; /** * @param {?} event * @return {?} */ DefaultTableBody.prototype.setRowDragEnterEvent = /** * @param {?} event * @return {?} */ function (event) { this.rowDragEnterEvent = event; }; /** * @return {?} */ DefaultTableBody.prototype.getRowDragOverEvent = /** * @return {?} */ function () { return this.rowDragOverEvent; }; /** * @param {?} event * @return {?} */ DefaultTableBody.prototype.setRowDragOverEvent = /** * @param {?} event * @return {?} */ function (event) { this.rowDragOverEvent = event; }; /** * @return {?} */ DefaultTableBody.prototype.getRowDragLeaveEvent = /** * @return {?} */ function () { return this.rowDragLeaveEvent; }; /** * @param {?} event * @return {?} */ DefaultTableBody.prototype.setRowDragLeaveEvent = /** * @param {?} event * @return {?} */ function (event) { this.rowDragLeaveEvent = event; }; /** * @return {?} */ DefaultTableBody.prototype.getRowDropEvent = /** * @return {?} */ function () { return this.rowDropEvent; }; /** * @param {?} event * @return {?} */ DefaultTableBody.prototype.setRowDropEvent = /** * @param {?} event * @return {?} */ function (event) { this.rowDropEvent = event; }; /** * @return {?} */ DefaultTableBody.prototype.getRowDropAcceptedEvent = /** * @return {?} */ function () { return this.rowDropAcceptedEvent; }; /** * @param {?} event * @return {?} */ DefaultTableBody.prototype.setRowDropAcceptedEvent = /** * @param {?} event * @return {?} */ function (event) { this.rowDropAcceptedEvent = event; }; /** * @return {?} */ DefaultTableBody.prototype.getRowDropRejectedEvent = /** * @return {?} */ function () { return this.rowDropRejectedEvent; }; /** * @param {?} event * @return {?} */ DefaultTableBody.prototype.setRowDropRejectedEvent = /** * @param {?} event * @return {?} */ function (event) { this.rowDropRejectedEvent = event; }; /** * @param {?} event * @return {?} */ DefaultTableBody.prototype.onDrag = /** * @param {?} event * @return {?} */ function (event) { if (this.rowDragEvent !== null && this.rowDragEvent !== undefined) { this.rowDragEvent.emit(event); } var /** @type {?} */ parent = /** @type {?} */ (this.getDataParent()); if (parent !== null && typeof parent.onDrag === 'function') { parent.onDrag(event); } }; /** * @param {?} event * @return {?} */ DefaultTableBody.prototype.onDragStart = /** * @param {?} event * @return {?} */ function (event) { if (this.rowDragStartEvent !== null && this.rowDragStartEvent !== undefined) { this.rowDragStartEvent.emit(event); } var /** @type {?} */ parent = /** @type {?} */ (this.getDataParent()); if (parent !== null && typeof parent.onDragStart === 'function') { parent.onDragStart(event); } }; /** * @param {?} event * @return {?} */ DefaultTableBody.prototype.onDragEnd = /** * @param {?} event * @return {?} */ function (event) { if (this.rowDragEndEvent !== null && this.rowDragEndEvent !== undefined) { this.rowDragEndEvent.emit(event); } var /** @type {?} */ parent = /** @type {?} */ (this.getDataParent()); if (parent !== null && typeof parent.onDragEnd === 'function') { parent.onDragEnd(event); } }; /** * @param {?} event * @return {?} */ DefaultTableBody.prototype.onDragEnter = /** * @param {?} event * @return {?} */ function (event) { if (this.rowDragEnterEvent !== null && this.rowDragEnterEvent !== undefined) { this.rowDragEnterEvent.emit(event); } var /** @type {?} */ parent = /** @type {?} */ (this.getDataParent()); if (parent !== null && typeof parent.onDragEnter === 'function') { parent.onDragEnter(event); } }; /** * @param {?} event * @return {?} */ DefaultTableBody.prototype.onDragOver = /** * @param {?} event * @return {?} */ function (event) { if (this.rowDragOverEvent !== null && this.rowDragOverEvent !== undefined) { this.rowDragOverEvent.emit(event); } var /** @type {?} */ parent = /** @type {?} */ (this.getDataParent()); if (parent !== null && typeof parent.onDragOver === 'function') { parent.onDragOver(event); } }; /** * @param {?} event * @return {?} */ DefaultTableBody.prototype.onDragLeave = /** * @param {?} event * @return {?} */ function (event) { if (this.rowDragLeaveEvent !== null && this.rowDragLeaveEvent !== undefined) { this.rowDragLeaveEvent.emit(event); } var /** @type {?} */ parent = /** @type {?} */ (this.getDataParent()); if (parent !== null && typeof parent.onDragLeave === 'function') { parent.onDragLeave(event); } }; /** * @param {?} event * @return {?} */ DefaultTableBody.prototype.onDrop = /** * @param {?} event * @return {?} */ function (event) { if (this.rowDropEvent !== null && this.rowDropEvent !== undefined) { this.rowDropEvent.emit(event); } var /** @type {?} */ parent = /** @type {?} */ (this.getDataParent()); if (parent !== null && typeof parent.onDrop === 'function') { parent.onDrop(event); } }; /** * @param {?} event * @return {?} */ DefaultTableBody.prototype.onDropAccepted = /** * @param {?} event * @return {?} */ function (event) { if (this.rowDropAcceptedEvent !== null && this.rowDropAcceptedEvent !== undefined) { this.rowDropAcceptedEvent.emit(event); } var /** @type {?} */ parent = /** @type {?} */ (this.getDataParent()); if (parent !== null && typeof parent.onDropAccepted === 'function') { parent.onDropAccepted(event); } }; /** * @param {?} event * @return {?} */ DefaultTableBody.prototype.onDropRejected = /** * @param {?} event * @return {?} */ function (event) { if (this.rowDropRejectedEvent !== null && this.rowDropRejectedEvent !== undefined) { this.rowDropRejectedEvent.emit(event); } var /** @type {?} */ parent = /** @type {?} */ (this.getDataParent()); if (parent !== null && typeof parent.onDropRejected === 'function') { parent.onDropRejected(event); } }; DefaultTableBody.TYPE_NAME = TYPE_NAME; DefaultTableBody.decorators = [ { type: Component, args: [{ moduleId: module.id, selector: TYPE_NAME, template: "<phx-component-wrapper [type]=\"getTable().getModel().getRowModel().getComponentType()\"\n [options]=\"getTable().getModel().getRowModel().getComponentOptions()\"\n [dataParent]=\"this\"\n [ignoreParentData]=\"true\"\n [handler]=\"row.wrapperHandler\"\n [data]=\"row.data\"\n [class]=\"'phx-table-row' + (getTable().getModel().getRowModel().getCSSClass() ? ' ' + getTable().getModel().getRowModel().getCSSClass() : '')\"\n *ngFor=\"let row of getRowControllers(); let idx = index\">\n</phx-component-wrapper>\n" },] }, ]; /** @nocollapse */ DefaultTableBody.ctorParameters = function () { return [ { type: ElementRef, }, ]; }; DefaultTableBody.propDecorators = { "dataParent": [{ type: Input },], "ignoreParentData": [{ type: Input },], "data": [{ type: Input },], "ignoreParentDisabled": [{ type: Input },], "delegateHistory": [{ type: Input },], "onDisabled": [{ type: Input },], "onEnabled": [{ type: Input },], "loadingEnabled": [{ type: Input },], "i18nKey": [{ type: Input },], "bypass": [{ type: Input, args: ['i18nBypass',] },], "options": [{ type: Input },], "disabled": [{ type: Input },], "help": [{ type: Input },], "rowDragEvent": [{ type: Output, args: ['phxRowDrag',] },], "rowDragStartEvent": [{ type: Output, args: ['phxRowDragStart',] },], "rowDragEndEvent": [{ type: Output, args: ['phxRowDragEnd',] },], "rowDragEnterEvent": [{ type: Output, args: ['phxRowDragEnter',] },], "rowDragOverEvent": [{ type: Output, args: ['phxRowDragOver',] },], "rowDragLeaveEvent": [{ type: Output, args: ['phxRowDragLeave',] },], "rowDropEvent": [{ type: Output, args: ['phxRowDrop',] },], "rowDropAcceptedEvent": [{ type: Output, args: ['phxRowDropAccepted',] },], "rowDropRejectedEvent": [{ type: Output, args: ['phxRowDropRejected',] },], }; tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], DefaultTableBody.prototype, "dataParent", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], DefaultTableBody.prototype, "ignoreParentData", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], DefaultTableBody.prototype, "data", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], DefaultTableBody.prototype, "ignoreParentDisabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], DefaultTableBody.prototype, "delegateHistory", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], DefaultTableBody.prototype, "onDisabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], DefaultTableBody.prototype, "onEnabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], DefaultTableBody.prototype, "loadingEnabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], DefaultTableBody.prototype, "i18nKey", void 0); tslib_1.__decorate([ Option('i18nBypass'), tslib_1.__metadata("design:type", Boolean) ], DefaultTableBody.prototype, "bypass", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], DefaultTableBody.prototype, "disabled", void 0); tslib_1.__decorate([ Option(), I18N(), tslib_1.__metadata("design:type", Object) ], DefaultTableBody.prototype, "help", void 0); tslib_1.__decorate([ I18N(), tslib_1.__metadata("design:type", Array) ], DefaultTableBody.prototype, "rows", void 0); tslib_1.__decorate([ Option('rowDrag'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultTableBody.prototype, "rowDragEvent", void 0); tslib_1.__decorate([ Option('rowDragStart'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultTableBody.prototype, "rowDragStartEvent", void 0); tslib_1.__decorate([ Option('rowDragEnd'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultTableBody.prototype, "rowDragEndEvent", void 0); tslib_1.__decorate([ Option('rowDragEnter'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultTableBody.prototype, "rowDragEnterEvent", void 0); tslib_1.__decorate([ Option('rowDragOver'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultTableBody.prototype, "rowDragOverEvent", void 0); tslib_1.__decorate([ Option('rowDragLeave'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultTableBody.prototype, "rowDragLeaveEvent", void 0); tslib_1.__decorate([ Option('rowDrop'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultTableBody.prototype, "rowDropEvent", void 0); tslib_1.__decorate([ Option('rowDropAccepted'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultTableBody.prototype, "rowDropAcceptedEvent", void 0); tslib_1.__decorate([ Option('rowDropRejected'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultTableBody.prototype, "rowDropRejectedEvent", void 0); return DefaultTableBody; }(AbstractTableComponent)); export { DefaultTableBody }; function DefaultTableBody_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ DefaultTableBody.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ DefaultTableBody.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ DefaultTableBody.propDecorators; /** @type {?} */ DefaultTableBody.TYPE_NAME; /** @type {?} */ DefaultTableBody.prototype.dataParent; /** @type {?} */ DefaultTableBody.prototype.ignoreParentData; /** @type {?} */ DefaultTableBody.prototype.data; /** @type {?} */ DefaultTableBody.prototype.ignoreParentDisabled; /** @type {?} */ DefaultTableBody.prototype.delegateHistory; /** @type {?} */ DefaultTableBody.prototype.onDisabled; /** @type {?} */ DefaultTableBody.prototype.onEnabled; /** @type {?} */ DefaultTableBody.prototype.loadingEnabled; /** @type {?} */ DefaultTableBody.prototype.i18nKey; /** @type {?} */ DefaultTableBody.prototype.bypass; /** @type {?} */ DefaultTableBody.prototype.options; /** @type {?} */ DefaultTableBody.prototype.disabled; /** @type {?} */ DefaultTableBody.prototype.help; /** @type {?} */ DefaultTableBody.prototype.rows; /** @type {?} */ DefaultTableBody.prototype.rowDragEvent; /** @type {?} */ DefaultTableBody.prototype.rowDragStartEvent; /** @type {?} */ DefaultTableBody.prototype.rowDragEndEvent; /** @type {?} */ DefaultTableBody.prototype.rowDragEnterEvent; /** @type {?} */ DefaultTableBody.prototype.rowDragOverEvent; /** @type {?} */ DefaultTableBody.prototype.rowDragLeaveEvent; /** @type {?} */ DefaultTableBody.prototype.rowDropEvent; /** @type {?} */ DefaultTableBody.prototype.rowDropAcceptedEvent; /** @type {?} */ DefaultTableBody.prototype.rowDropRejectedEvent; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdFRhYmxlQm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvdGFibGUvRGVmYXVsdFRhYmxlQm9keS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRzFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBS2xFLHFCQUFNLFNBQVMsR0FBVyxnQkFBZ0IsQ0FBQzs7SUFnQkwsNENBQXNCOzhCQWdGdkMsVUFBc0I7b0JBQ3ZDLGtCQUFNLFVBQVUsQ0FBQztRQUVqQixLQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkMsS0FBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDNUMsS0FBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTFDLEtBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVDLEtBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNDLEtBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVDLEtBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN2QyxLQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMvQyxLQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQzs7O0lBR2pELFlBQVk7Ozs7O0lBQ0YsdUNBQVk7Ozs7SUFB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QUFFOzs7O1FBR1IsTUFBTSxFQUFFOzs7O1FBR1IsTUFBTSxFQUFFOzs7O1FBR1IsTUFBTSxFQUFFOzBDQUNhLFFBQVE7OztRQUU3QixNQUFNLEVBQUU7MENBQ1ksUUFBUTs7O1FBRTVCLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sQ0FBQyxZQUFZLENBQUM7Ozs7UUFLcEIsTUFBTSxFQUFFOzs7O1FBSVIsTUFBTSxFQUFFO1FBQ1IsSUFBSSxFQUFFOzs7O1FBR04sSUFBSSxFQUFFOzs7O1FBS04sTUFBTSxDQUFDLFNBQVMsQ0FBQzswQ0FFTSxZQUFZOzs7UUFDbkMsTUFBTSxDQUFDLGNBQWMsQ0FBQzswQ0FFTSxZQUFZOzs7UUFDeEMsTUFBTSxDQUFDLFlBQVksQ0FBQzswQ0FFTSxZQUFZOzs7UUFDdEMsTUFBTSxDQUFDLGNBQWMsQ0FBQzswQ0FFTSxZQUFZOzs7UUFDeEMsTUFBTSxDQUFDLGFBQWEsQ0FBQzswQ0FFTSxZQUFZOzs7UUFDdkMsTUFBTSxDQUFDLGNBQWMsQ0FBQzswQ0FFTSxZQUFZOzs7UUFDeEMsTUFBTSxDQUFDLFNBQVMsQ0FBQzswQ0FFTSxZQUFZOzs7UUFDbkMsTUFBTSxDQUFDLGlCQUFpQixDQUFDOzBDQUVNLFlBQVk7OztRQUMzQyxNQUFNLENBQUMsaUJBQWlCLENBQUM7MENBRU0sWUFBWTs7MkJBeEc5QztFQTBCc0Msc0JBQXNCO1NBQS9DLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEkxOE4sIE9wdGlvbiB9IGZyb20gJy4uLy4uL2RlY29yYXRvci9kZWNvcmF0b3JzJztcblxuaW1wb3J0IHsgSVRhYmxlQm9keSB9IGZyb20gJy4vSVRhYmxlQm9keSc7XG5pbXBvcnQgeyBBYnN0cmFjdFRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9BYnN0cmFjdFRhYmxlQ29tcG9uZW50JztcbmltcG9ydCB7IElUYWJsZVJvd0NvbnRyb2xsZXIgfSBmcm9tICcuL0lUYWJsZVJvd0NvbnRyb2xsZXInO1xuaW1wb3J0IHsgUGhsb3hUYWJsZSB9IGZyb20gJy4vUGhsb3hUYWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSUhhc0RhdGEgfSBmcm9tICcuLi9JSGFzRGF0YSc7XG5cbmNvbnN0IFRZUEVfTkFNRTogc3RyaW5nID0gXCJwaHgtdGFibGUtYm9keVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgbW9kdWxlSWQ6IG1vZHVsZS5pZCxcbiAgc2VsZWN0b3I6IFRZUEVfTkFNRSxcbiAgdGVtcGxhdGU6IGA8cGh4LWNvbXBvbmVudC13cmFwcGVyIFt0eXBlXT1cImdldFRhYmxlKCkuZ2V0TW9kZWwoKS5nZXRSb3dNb2RlbCgpLmdldENvbXBvbmVudFR5cGUoKVwiXG4gICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiZ2V0VGFibGUoKS5nZXRNb2RlbCgpLmdldFJvd01vZGVsKCkuZ2V0Q29tcG9uZW50T3B0aW9ucygpXCJcbiAgICAgICAgICAgICAgICAgICBbZGF0YVBhcmVudF09XCJ0aGlzXCJcbiAgICAgICAgICAgICAgICAgICBbaWdub3JlUGFyZW50RGF0YV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICBbaGFuZGxlcl09XCJyb3cud3JhcHBlckhhbmRsZXJcIlxuICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cInJvdy5kYXRhXCJcbiAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ3BoeC10YWJsZS1yb3cnICsgKGdldFRhYmxlKCkuZ2V0TW9kZWwoKS5nZXRSb3dNb2RlbCgpLmdldENTU0NsYXNzKCkgPyAnICcgKyBnZXRUYWJsZSgpLmdldE1vZGVsKCkuZ2V0Um93TW9kZWwoKS5nZXRDU1NDbGFzcygpIDogJycpXCJcbiAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcm93IG9mIGdldFJvd0NvbnRyb2xsZXJzKCk7IGxldCBpZHggPSBpbmRleFwiPlxuPC9waHgtY29tcG9uZW50LXdyYXBwZXI+XG5gXG59KVxuZXhwb3J0IGNsYXNzIERlZmF1bHRUYWJsZUJvZHkgZXh0ZW5kcyBBYnN0cmFjdFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgSVRhYmxlQm9keSB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBUWVBFX05BTUU6IHN0cmluZyA9IFRZUEVfTkFNRTtcblxuICAvLyBSZS1kZWNsYXJlIGZpZWxkIHRvIGRlY2xhcmUgbmcgQElucHV0LlxuICAvLyAtLS0gZnJvbSBBYnN0cmFjdEhhc0RhdGFcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBkYXRhUGFyZW50OiBJSGFzRGF0YTtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBpZ25vcmVQYXJlbnREYXRhOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGRhdGE6IGFueTtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBpZ25vcmVQYXJlbnREaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBkZWxlZ2F0ZUhpc3Rvcnk6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgb25EaXNhYmxlZDogRnVuY3Rpb247XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgb25FbmFibGVkOiBGdW5jdGlvbjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBsb2FkaW5nRW5hYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBpMThuS2V5OiBzdHJpbmc7XG4gIEBJbnB1dCgnaTE4bkJ5cGFzcycpXG4gIEBPcHRpb24oJ2kxOG5CeXBhc3MnKVxuICBwcm90ZWN0ZWQgYnlwYXNzOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgb3B0aW9uczogYW55O1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGRpc2FibGVkOiBib29sZWFuO1xuICAvLyAtLS0gQWJzdHJhY3RIYXNEYXRhSGVscFxuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgQEkxOE4oKVxuICBwcm90ZWN0ZWQgaGVscDogYW55O1xuICAvLyAtLS0gc2VsZlxuICBASTE4TigpXG4gIHByb3RlY3RlZCByb3dzOiBJVGFibGVSb3dDb250cm9sbGVyW107XG5cbiAgLy8gUmUtZGVjbGFyZSBmaWVsZCB0byBkZWNsYXJlIG5nIEBPdXRwdXQuXG4gIC8vIC0tLSBzZWxmXG4gIEBPcHRpb24oJ3Jvd0RyYWcnKVxuICBAT3V0cHV0KCdwaHhSb3dEcmFnJylcbiAgcHJvdGVjdGVkIHJvd0RyYWdFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPcHRpb24oJ3Jvd0RyYWdTdGFydCcpXG4gIEBPdXRwdXQoJ3BoeFJvd0RyYWdTdGFydCcpXG4gIHByb3RlY3RlZCByb3dEcmFnU3RhcnRFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPcHRpb24oJ3Jvd0RyYWdFbmQnKVxuICBAT3V0cHV0KCdwaHhSb3dEcmFnRW5kJylcbiAgcHJvdGVjdGVkIHJvd0RyYWdFbmRFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPcHRpb24oJ3Jvd0RyYWdFbnRlcicpXG4gIEBPdXRwdXQoJ3BoeFJvd0RyYWdFbnRlcicpXG4gIHByb3RlY3RlZCByb3dEcmFnRW50ZXJFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPcHRpb24oJ3Jvd0RyYWdPdmVyJylcbiAgQE91dHB1dCgncGh4Um93RHJhZ092ZXInKVxuICBwcm90ZWN0ZWQgcm93RHJhZ092ZXJFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPcHRpb24oJ3Jvd0RyYWdMZWF2ZScpXG4gIEBPdXRwdXQoJ3BoeFJvd0RyYWdMZWF2ZScpXG4gIHByb3RlY3RlZCByb3dEcmFnTGVhdmVFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPcHRpb24oJ3Jvd0Ryb3AnKVxuICBAT3V0cHV0KCdwaHhSb3dEcm9wJylcbiAgcHJvdGVjdGVkIHJvd0Ryb3BFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPcHRpb24oJ3Jvd0Ryb3BBY2NlcHRlZCcpXG4gIEBPdXRwdXQoJ3BoeFJvd0Ryb3BBY2NlcHRlZCcpXG4gIHByb3RlY3RlZCByb3dEcm9wQWNjZXB0ZWRFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIEBPcHRpb24oJ3Jvd0Ryb3BSZWplY3RlZCcpXG4gIEBPdXRwdXQoJ3BoeFJvd0Ryb3BSZWplY3RlZCcpXG4gIHByb3RlY3RlZCByb3dEcm9wUmVqZWN0ZWRFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICBzdXBlcihlbGVtZW50UmVmKTtcblxuICAgIHRoaXMucm93RHJhZ0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRoaXMucm93RHJhZ1N0YXJ0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5yb3dEcmFnRW5kRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICB0aGlzLnJvd0RyYWdFbnRlckV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRoaXMucm93RHJhZ092ZXJFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aGlzLnJvd0RyYWdMZWF2ZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRoaXMucm93RHJvcEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRoaXMucm93RHJvcEFjY2VwdGVkRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5yb3dEcm9wUmVqZWN0ZWRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgfVxuXG4gIC8vIEltcGxlbWVudFxuICBwcm90ZWN0ZWQgZG9Jbml0aWFsaXplKHRhYmxlOiBQaGxveFRhYmxlKTogdm9pZCB7XG4gIH1cblxuICAvLyBJbXBsZW1lbnRcbiAgcHVibGljIGlzU2VsZkRhdGFEaXJ0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvLyBJbXBsZW1lbnRcbiAgcHVibGljIHNlbGZSZXNldERhdGEoKTogdm9pZCB7XG4gIH1cblxuICAvLyBJbXBsZW1lbnRcbiAgcHVibGljIHNlbGZTYXZlRGF0YShkYXRhOiBhbnkpOiB2b2lkIHtcbiAgfVxuXG4gIHB1YmxpYyByZW5kZXIocm93czogSVRhYmxlUm93Q29udHJvbGxlcltdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMucm93cyA9IHJvd3M7XG5cbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Um93Q29udHJvbGxlcnMoKTogSVRhYmxlUm93Q29udHJvbGxlcltdIHtcbiAgICByZXR1cm4gdGhpcy5yb3dzO1xuICB9XG5cbiAgcHVibGljIGdldFJvd0RyYWdFdmVudCgpOiBFdmVudEVtaXR0ZXI8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucm93RHJhZ0V2ZW50O1xuICB9XG5cbiAgcHVibGljIHNldFJvd0RyYWdFdmVudChldmVudDogRXZlbnRFbWl0dGVyPGFueT4pOiB2b2lkIHtcbiAgICB0aGlzLnJvd0RyYWdFdmVudCA9IGV2ZW50O1xuICB9XG5cbiAgcHVibGljIGdldFJvd0RyYWdTdGFydEV2ZW50KCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yb3dEcmFnU3RhcnRFdmVudDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRSb3dEcmFnU3RhcnRFdmVudChldmVudDogRXZlbnRFbWl0dGVyPGFueT4pOiB2b2lkIHtcbiAgICB0aGlzLnJvd0RyYWdTdGFydEV2ZW50ID0gZXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Um93RHJhZ0VuZEV2ZW50KCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yb3dEcmFnRW5kRXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgc2V0Um93RHJhZ0VuZEV2ZW50KGV2ZW50OiBFdmVudEVtaXR0ZXI8YW55Pik6IHZvaWQge1xuICAgIHRoaXMucm93RHJhZ0VuZEV2ZW50ID0gZXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Um93RHJhZ0VudGVyRXZlbnQoKTogRXZlbnRFbWl0dGVyPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJvd0RyYWdFbnRlckV2ZW50O1xuICB9XG5cbiAgcHVibGljIHNldFJvd0RyYWdFbnRlckV2ZW50KGV2ZW50OiBFdmVudEVtaXR0ZXI8YW55Pik6IHZvaWQge1xuICAgIHRoaXMucm93RHJhZ0VudGVyRXZlbnQgPSBldmVudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3dEcmFnT3ZlckV2ZW50KCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yb3dEcmFnT3ZlckV2ZW50O1xuICB9XG5cbiAgcHVibGljIHNldFJvd0RyYWdPdmVyRXZlbnQoZXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5yb3dEcmFnT3ZlckV2ZW50ID0gZXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Um93RHJhZ0xlYXZlRXZlbnQoKTogRXZlbnRFbWl0dGVyPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJvd0RyYWdMZWF2ZUV2ZW50O1xuICB9XG5cbiAgcHVibGljIHNldFJvd0RyYWdMZWF2ZUV2ZW50KGV2ZW50OiBFdmVudEVtaXR0ZXI8YW55Pik6IHZvaWQge1xuICAgIHRoaXMucm93RHJhZ0xlYXZlRXZlbnQgPSBldmVudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3dEcm9wRXZlbnQoKTogRXZlbnRFbWl0dGVyPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJvd0Ryb3BFdmVudDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRSb3dEcm9wRXZlbnQoZXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5yb3dEcm9wRXZlbnQgPSBldmVudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3dEcm9wQWNjZXB0ZWRFdmVudCgpOiBFdmVudEVtaXR0ZXI8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucm93RHJvcEFjY2VwdGVkRXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgc2V0Um93RHJvcEFjY2VwdGVkRXZlbnQoZXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5yb3dEcm9wQWNjZXB0ZWRFdmVudCA9IGV2ZW50O1xuICB9XG5cbiAgcHVibGljIGdldFJvd0Ryb3BSZWplY3RlZEV2ZW50KCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yb3dEcm9wUmVqZWN0ZWRFdmVudDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRSb3dEcm9wUmVqZWN0ZWRFdmVudChldmVudDogRXZlbnRFbWl0dGVyPGFueT4pOiB2b2lkIHtcbiAgICB0aGlzLnJvd0Ryb3BSZWplY3RlZEV2ZW50ID0gZXZlbnQ7XG4gIH1cblxuICAvLyBJbXBsZW1lbnQ6IElEcmFnZ2FibGVcbiAgcHVibGljIG9uRHJhZyhldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucm93RHJhZ0V2ZW50ICE9PSBudWxsICYmIHRoaXMucm93RHJhZ0V2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucm93RHJhZ0V2ZW50LmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIGxldCBwYXJlbnQ6IGFueSA9IHRoaXMuZ2V0RGF0YVBhcmVudCgpIGFzIGFueTtcbiAgICBpZiAocGFyZW50ICE9PSBudWxsICYmIHR5cGVvZiBwYXJlbnQub25EcmFnID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwYXJlbnQub25EcmFnKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBJbXBsZW1lbnQ6IElEcmFnZ2FibGVcbiAgcHVibGljIG9uRHJhZ1N0YXJ0KGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3dEcmFnU3RhcnRFdmVudCAhPT0gbnVsbCAmJiB0aGlzLnJvd0RyYWdTdGFydEV2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucm93RHJhZ1N0YXJ0RXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgbGV0IHBhcmVudDogYW55ID0gdGhpcy5nZXREYXRhUGFyZW50KCkgYXMgYW55O1xuICAgIGlmIChwYXJlbnQgIT09IG51bGwgJiYgdHlwZW9mIHBhcmVudC5vbkRyYWdTdGFydCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGFyZW50Lm9uRHJhZ1N0YXJ0KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBJbXBsZW1lbnQ6IElEcmFnZ2FibGVcbiAgcHVibGljIG9uRHJhZ0VuZChldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucm93RHJhZ0VuZEV2ZW50ICE9PSBudWxsICYmIHRoaXMucm93RHJhZ0VuZEV2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucm93RHJhZ0VuZEV2ZW50LmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIGxldCBwYXJlbnQ6IGFueSA9IHRoaXMuZ2V0RGF0YVBhcmVudCgpIGFzIGFueTtcbiAgICBpZiAocGFyZW50ICE9PSBudWxsICYmIHR5cGVvZiBwYXJlbnQub25EcmFnRW5kID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwYXJlbnQub25EcmFnRW5kKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBJbXBsZW1lbnQ6IElEcm9wcGFibGVcbiAgcHVibGljIG9uRHJhZ0VudGVyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3dEcmFnRW50ZXJFdmVudCAhPT0gbnVsbCAmJiB0aGlzLnJvd0RyYWdFbnRlckV2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucm93RHJhZ0VudGVyRXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgbGV0IHBhcmVudDogYW55ID0gdGhpcy5nZXREYXRhUGFyZW50KCkgYXMgYW55O1xuICAgIGlmIChwYXJlbnQgIT09IG51bGwgJiYgdHlwZW9mIHBhcmVudC5vbkRyYWdFbnRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGFyZW50Lm9uRHJhZ0VudGVyKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBJbXBsZW1lbnQ6IElEcm9wcGFibGVcbiAgcHVibGljIG9uRHJhZ092ZXIoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJvd0RyYWdPdmVyRXZlbnQgIT09IG51bGwgJiYgdGhpcy5yb3dEcmFnT3ZlckV2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucm93RHJhZ092ZXJFdmVudC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBsZXQgcGFyZW50OiBhbnkgPSB0aGlzLmdldERhdGFQYXJlbnQoKSBhcyBhbnk7XG4gICAgaWYgKHBhcmVudCAhPT0gbnVsbCAmJiB0eXBlb2YgcGFyZW50Lm9uRHJhZ092ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHBhcmVudC5vbkRyYWdPdmVyKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBJbXBsZW1lbnQ6IElEcm9wcGFibGVcbiAgcHVibGljIG9uRHJhZ0xlYXZlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3dEcmFnTGVhdmVFdmVudCAhPT0gbnVsbCAmJiB0aGlzLnJvd0RyYWdMZWF2ZUV2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucm93RHJhZ0xlYXZlRXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgbGV0IHBhcmVudDogYW55ID0gdGhpcy5nZXREYXRhUGFyZW50KCkgYXMgYW55O1xuICAgIGlmIChwYXJlbnQgIT09IG51bGwgJiYgdHlwZW9mIHBhcmVudC5vbkRyYWdMZWF2ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGFyZW50Lm9uRHJhZ0xlYXZlKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBJbXBsZW1lbnQ6IElEcm9wcGFibGVcbiAgcHVibGljIG9uRHJvcChldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucm93RHJvcEV2ZW50ICE9PSBudWxsICYmIHRoaXMucm93RHJvcEV2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucm93RHJvcEV2ZW50LmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIGxldCBwYXJlbnQ6IGFueSA9IHRoaXMuZ2V0RGF0YVBhcmVudCgpIGFzIGFueTtcbiAgICBpZiAocGFyZW50ICE9PSBudWxsICYmIHR5cGVvZiBwYXJlbnQub25Ecm9wID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwYXJlbnQub25Ecm9wKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBJbXBsZW1lbnQ6IElEcm9wcGFibGVcbiAgcHVibGljIG9uRHJvcEFjY2VwdGVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3dEcm9wQWNjZXB0ZWRFdmVudCAhPT0gbnVsbCAmJiB0aGlzLnJvd0Ryb3BBY2NlcHRlZEV2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucm93RHJvcEFjY2VwdGVkRXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgbGV0IHBhcmVudDogYW55ID0gdGhpcy5nZXREYXRhUGFyZW50KCkgYXMgYW55O1xuICAgIGlmIChwYXJlbnQgIT09IG51bGwgJiYgdHlwZW9mIHBhcmVudC5vbkRyb3BBY2NlcHRlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGFyZW50Lm9uRHJvcEFjY2VwdGVkKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBJbXBsZW1lbnQ6IElEcm9wcGFibGVcbiAgcHVibGljIG9uRHJvcFJlamVjdGVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3dEcm9wUmVqZWN0ZWRFdmVudCAhPT0gbnVsbCAmJiB0aGlzLnJvd0Ryb3BSZWplY3RlZEV2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucm93RHJvcFJlamVjdGVkRXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgbGV0IHBhcmVudDogYW55ID0gdGhpcy5nZXREYXRhUGFyZW50KCkgYXMgYW55O1xuICAgIGlmIChwYXJlbnQgIT09IG51bGwgJiYgdHlwZW9mIHBhcmVudC5vbkRyb3BSZWplY3RlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGFyZW50Lm9uRHJvcFJlamVjdGVkKGV2ZW50KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==