UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

462 lines (461 loc) 36.4 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 { DefaultTableBody } from './DefaultTableBody.component'; import { BEFORE_EXPAND_EVENT, EXPAND_EVENT, BEFORE_CONTRACT_EVENT, CONTRACT_EVENT } from '../../share/CustomEventType'; import { EventUtils } from '../../share/utils/EventUtils'; var /** @type {?} */ TYPE_NAME = "phx-table-expand-body"; var DefaultExpandTableBody = /** @class */ (function (_super) { tslib_1.__extends(DefaultExpandTableBody, _super); function DefaultExpandTableBody(elementRef) { var _this = _super.call(this, elementRef) || this; _this.expandAllEvent = new EventEmitter(); _this.contractAllEvent = new EventEmitter(); _this.beforeExpandAllEvent = new EventEmitter(); _this.beforeContractAllEvent = new EventEmitter(); return _this; } /** * @return {?} */ DefaultExpandTableBody.prototype.expandAll = /** * @return {?} */ function () { var /** @type {?} */ bData = { isExpand: true }; var /** @type {?} */ bEV = EventUtils.newCustomEvent(BEFORE_EXPAND_EVENT, this, bData, null); if (this.beforeExpandAllEvent !== null && this.beforeExpandAllEvent !== undefined) { this.beforeExpandAllEvent.emit(bEV); } try { for (var _a = tslib_1.__values(this.table.getRowControllers()), _b = _a.next(); !_b.done; _b = _a.next()) { var controller = _b.value; var /** @type {?} */ tableController = /** @type {?} */ (controller); tableController.expand(); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (_b && !_b.done && (_c = _a.return)) _c.call(_a); } finally { if (e_1) throw e_1.error; } } var /** @type {?} */ data = { isExpand: true }; var /** @type {?} */ ev = EventUtils.newCustomEvent(EXPAND_EVENT, this, data, null); if (this.expandAllEvent !== null && this.expandAllEvent !== undefined) { this.expandAllEvent.emit(ev); } var e_1, _c; }; /** * @return {?} */ DefaultExpandTableBody.prototype.contractAll = /** * @return {?} */ function () { var /** @type {?} */ bData = { isExpand: false }; var /** @type {?} */ bEV = EventUtils.newCustomEvent(BEFORE_CONTRACT_EVENT, this, bData, null); if (this.beforeContractAllEvent !== null && this.beforeContractAllEvent !== undefined) { this.beforeContractAllEvent.emit(bEV); } try { for (var _a = tslib_1.__values(this.table.getRowControllers()), _b = _a.next(); !_b.done; _b = _a.next()) { var controller = _b.value; var /** @type {?} */ tableController = /** @type {?} */ (controller); tableController.contract(); } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (_b && !_b.done && (_c = _a.return)) _c.call(_a); } finally { if (e_2) throw e_2.error; } } var /** @type {?} */ data = { isExpand: false }; var /** @type {?} */ ev = EventUtils.newCustomEvent(CONTRACT_EVENT, this, data, null); if (this.contractAllEvent !== null && this.contractAllEvent !== undefined) { this.contractAllEvent.emit(ev); } var e_2, _c; }; /** * @param {?} event * @return {?} */ DefaultExpandTableBody.prototype.setExpandAllEvent = /** * @param {?} event * @return {?} */ function (event) { this.expandAllEvent = event; }; /** * @return {?} */ DefaultExpandTableBody.prototype.getExpandAllEvent = /** * @return {?} */ function () { return this.expandAllEvent; }; /** * @param {?} event * @return {?} */ DefaultExpandTableBody.prototype.setBeforeExpandAllEvent = /** * @param {?} event * @return {?} */ function (event) { this.beforeExpandAllEvent = event; }; /** * @return {?} */ DefaultExpandTableBody.prototype.getBeforeExpandAllEvent = /** * @return {?} */ function () { return this.beforeExpandAllEvent; }; /** * @param {?} event * @return {?} */ DefaultExpandTableBody.prototype.setContractAllEvent = /** * @param {?} event * @return {?} */ function (event) { this.contractAllEvent = event; }; /** * @return {?} */ DefaultExpandTableBody.prototype.getContractAllEvent = /** * @return {?} */ function () { return this.contractAllEvent; }; /** * @param {?} event * @return {?} */ DefaultExpandTableBody.prototype.setBeforeContractAllEvent = /** * @param {?} event * @return {?} */ function (event) { this.beforeContractAllEvent = event; }; /** * @return {?} */ DefaultExpandTableBody.prototype.getBeforeContractAllEvent = /** * @return {?} */ function () { return this.beforeContractAllEvent; }; DefaultExpandTableBody.TYPE_NAME = TYPE_NAME; DefaultExpandTableBody.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 */ DefaultExpandTableBody.ctorParameters = function () { return [ { type: ElementRef, }, ]; }; DefaultExpandTableBody.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 },], "beforeCellClickEvent": [{ type: Output, args: ['phxBeforeCellClick',] },], "beforeCellDblClickEvent": [{ type: Output, args: ['phxBeforeCellDblClick',] },], "beforeCellLostFocusEvent": [{ type: Output, args: ['phxBeforeCellLostFocus',] },], "beforeCellFocusEvent": [{ type: Output, args: ['phxBeforeCellFocus',] },], "cellClickEvent": [{ type: Output, args: ['phxCellClick',] },], "cellDblClickEvent": [{ type: Output, args: ['phxCellDblClick',] },], "cellLostFocusEvent": [{ type: Output, args: ['phxCellLostFocus',] },], "cellFocusEvent": [{ type: Output, args: ['phxCellFocus',] },], "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',] },], "changeEvent": [{ type: Output, args: ['phxChange',] },], "beforeChangeEvent": [{ type: Output, args: ['phxBeforeChange',] },], "expandAllEvent": [{ type: Output, args: ['phxExpandAll',] },], "contractAllEvent": [{ type: Output, args: ['phxContractAll',] },], "beforeExpandAllEvent": [{ type: Output, args: ['phxBeforeExpandAll',] },], "beforeContractAllEvent": [{ type: Output, args: ['phxBeforeContractAll',] },], }; tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], DefaultExpandTableBody.prototype, "dataParent", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], DefaultExpandTableBody.prototype, "ignoreParentData", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], DefaultExpandTableBody.prototype, "data", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], DefaultExpandTableBody.prototype, "ignoreParentDisabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], DefaultExpandTableBody.prototype, "delegateHistory", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], DefaultExpandTableBody.prototype, "onDisabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], DefaultExpandTableBody.prototype, "onEnabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], DefaultExpandTableBody.prototype, "loadingEnabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], DefaultExpandTableBody.prototype, "i18nKey", void 0); tslib_1.__decorate([ Option('i18nBypass'), tslib_1.__metadata("design:type", Boolean) ], DefaultExpandTableBody.prototype, "bypass", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], DefaultExpandTableBody.prototype, "disabled", void 0); tslib_1.__decorate([ Option(), I18N(), tslib_1.__metadata("design:type", Object) ], DefaultExpandTableBody.prototype, "help", void 0); tslib_1.__decorate([ I18N(), tslib_1.__metadata("design:type", Array) ], DefaultExpandTableBody.prototype, "rows", void 0); tslib_1.__decorate([ Option('beforeCellClick'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "beforeCellClickEvent", void 0); tslib_1.__decorate([ Option('beforeCellDblClick'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "beforeCellDblClickEvent", void 0); tslib_1.__decorate([ Option('beforeCellLostFocus'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "beforeCellLostFocusEvent", void 0); tslib_1.__decorate([ Option('beforeCellFocus'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "beforeCellFocusEvent", void 0); tslib_1.__decorate([ Option('cellClick'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "cellClickEvent", void 0); tslib_1.__decorate([ Option('cellDblClick'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "cellDblClickEvent", void 0); tslib_1.__decorate([ Option('cellLostFocus'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "cellLostFocusEvent", void 0); tslib_1.__decorate([ Option('cellFocus'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "cellFocusEvent", void 0); tslib_1.__decorate([ Option('rowDrag'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "rowDragEvent", void 0); tslib_1.__decorate([ Option('rowDragStart'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "rowDragStartEvent", void 0); tslib_1.__decorate([ Option('rowDragEnd'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "rowDragEndEvent", void 0); tslib_1.__decorate([ Option('rowDragEnter'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "rowDragEnterEvent", void 0); tslib_1.__decorate([ Option('rowDragOver'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "rowDragOverEvent", void 0); tslib_1.__decorate([ Option('rowDragLeave'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "rowDragLeaveEvent", void 0); tslib_1.__decorate([ Option('rowDrop'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "rowDropEvent", void 0); tslib_1.__decorate([ Option('rowDropAccepted'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "rowDropAcceptedEvent", void 0); tslib_1.__decorate([ Option('rowDropRejected'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "rowDropRejectedEvent", void 0); tslib_1.__decorate([ Option('change'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "changeEvent", void 0); tslib_1.__decorate([ Option('beforeChange'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "beforeChangeEvent", void 0); tslib_1.__decorate([ Option('expandAll'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "expandAllEvent", void 0); tslib_1.__decorate([ Option('contractAll'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "contractAllEvent", void 0); tslib_1.__decorate([ Option('beforeExpandAll'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "beforeExpandAllEvent", void 0); tslib_1.__decorate([ Option('beforeContractAll'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultExpandTableBody.prototype, "beforeContractAllEvent", void 0); return DefaultExpandTableBody; }(DefaultTableBody)); export { DefaultExpandTableBody }; function DefaultExpandTableBody_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ DefaultExpandTableBody.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ DefaultExpandTableBody.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ DefaultExpandTableBody.propDecorators; /** @type {?} */ DefaultExpandTableBody.TYPE_NAME; /** @type {?} */ DefaultExpandTableBody.prototype.dataParent; /** @type {?} */ DefaultExpandTableBody.prototype.ignoreParentData; /** @type {?} */ DefaultExpandTableBody.prototype.data; /** @type {?} */ DefaultExpandTableBody.prototype.ignoreParentDisabled; /** @type {?} */ DefaultExpandTableBody.prototype.delegateHistory; /** @type {?} */ DefaultExpandTableBody.prototype.onDisabled; /** @type {?} */ DefaultExpandTableBody.prototype.onEnabled; /** @type {?} */ DefaultExpandTableBody.prototype.loadingEnabled; /** @type {?} */ DefaultExpandTableBody.prototype.i18nKey; /** @type {?} */ DefaultExpandTableBody.prototype.bypass; /** @type {?} */ DefaultExpandTableBody.prototype.options; /** @type {?} */ DefaultExpandTableBody.prototype.disabled; /** @type {?} */ DefaultExpandTableBody.prototype.help; /** @type {?} */ DefaultExpandTableBody.prototype.rows; /** @type {?} */ DefaultExpandTableBody.prototype.beforeCellClickEvent; /** @type {?} */ DefaultExpandTableBody.prototype.beforeCellDblClickEvent; /** @type {?} */ DefaultExpandTableBody.prototype.beforeCellLostFocusEvent; /** @type {?} */ DefaultExpandTableBody.prototype.beforeCellFocusEvent; /** @type {?} */ DefaultExpandTableBody.prototype.cellClickEvent; /** @type {?} */ DefaultExpandTableBody.prototype.cellDblClickEvent; /** @type {?} */ DefaultExpandTableBody.prototype.cellLostFocusEvent; /** @type {?} */ DefaultExpandTableBody.prototype.cellFocusEvent; /** @type {?} */ DefaultExpandTableBody.prototype.rowDragEvent; /** @type {?} */ DefaultExpandTableBody.prototype.rowDragStartEvent; /** @type {?} */ DefaultExpandTableBody.prototype.rowDragEndEvent; /** @type {?} */ DefaultExpandTableBody.prototype.rowDragEnterEvent; /** @type {?} */ DefaultExpandTableBody.prototype.rowDragOverEvent; /** @type {?} */ DefaultExpandTableBody.prototype.rowDragLeaveEvent; /** @type {?} */ DefaultExpandTableBody.prototype.rowDropEvent; /** @type {?} */ DefaultExpandTableBody.prototype.rowDropAcceptedEvent; /** @type {?} */ DefaultExpandTableBody.prototype.rowDropRejectedEvent; /** @type {?} */ DefaultExpandTableBody.prototype.changeEvent; /** @type {?} */ DefaultExpandTableBody.prototype.beforeChangeEvent; /** @type {?} */ DefaultExpandTableBody.prototype.expandAllEvent; /** @type {?} */ DefaultExpandTableBody.prototype.contractAllEvent; /** @type {?} */ DefaultExpandTableBody.prototype.beforeExpandAllEvent; /** @type {?} */ DefaultExpandTableBody.prototype.beforeContractAllEvent; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdEV4cGFuZFRhYmxlQm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvdGFibGUvRGVmYXVsdEV4cGFuZFRhYmxlQm9keS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRzFELHFCQUFNLFNBQVMsR0FBVyx1QkFBdUIsQ0FBQzs7SUFnQk4sa0RBQWdCO29DQTJIdkMsVUFBc0I7b0JBQ3ZDLGtCQUFNLFVBQVUsQ0FBQztRQUVqQixLQUFJLENBQUMsY0FBYyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDekMsS0FBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDM0MsS0FBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDL0MsS0FBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7Ozs7OztJQUc1QywwQ0FBUzs7OztRQUNkLHFCQUFJLEtBQUssR0FBUTtZQUNmLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztRQUNGLHFCQUFJLEdBQUcsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLG1CQUFtQixFQUFFLElBQUksRUFBRSxLQUFL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LENBQUM7MENBRU0sWUFBWTs7O1FBQ3hDLE1BQU0sQ0FBQyxTQUFTLENBQUM7MENBRU0sWUFBWTs7O1FBQ25DLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQzswQ0FFTSxZQUFZOzs7UUFDM0MsTUFBTSxDQUFDLGlCQUFpQixDQUFDOzBDQUVNLFlBQVk7OztRQUMzQyxNQUFNLENBQUMsUUFBUSxDQUFDOzBDQUVNLFlBQVk7OztRQUNsQyxNQUFNLENBQUMsY0FBYyxDQUFDOzBDQUVNLFlBQVk7OztRQUV4QyxNQUFNLENBQUMsV0FBVyxDQUFDOzBDQUVNLFlBQVk7OztRQUNyQyxNQUFNLENBQUMsYUFBYSxDQUFDOzBDQUVNLFlBQVk7OztRQUN2QyxNQUFNLENBQUMsaUJBQWlCLENBQUM7MENBRU0sWUFBWTs7O1FBQzNDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQzswQ0FFTSxZQUFZOztpQ0FuSmhEO0VBMEI0QyxnQkFBZ0I7U0FBL0Msc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSTE4TiwgT3B0aW9uIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9yL2RlY29yYXRvcnMnO1xyXG5pbXBvcnQgeyBJVGFibGVSb3dDb250cm9sbGVyIH0gZnJvbSAnLi9JVGFibGVSb3dDb250cm9sbGVyJztcclxuaW1wb3J0IHsgSUV4cGFuZGFibGVUYWJsZUJvZHkgfSBmcm9tICcuL0lFeHBhbmRhYmxlVGFibGVCb2R5JztcclxuaW1wb3J0IHsgRGVmYXVsdFRhYmxlQm9keSB9IGZyb20gJy4vRGVmYXVsdFRhYmxlQm9keS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJRXhwYW5kYWJsZVRhYmxlUm93Q29udHJvbGxlciB9IGZyb20gJy4vSUV4cGFuZGFibGVUYWJsZVJvd0NvbnRyb2xsZXInO1xyXG5pbXBvcnQgeyBCRUZPUkVfRVhQQU5EX0VWRU5ULCBFWFBBTkRfRVZFTlQsIEJFRk9SRV9DT05UUkFDVF9FVkVOVCwgQ09OVFJBQ1RfRVZFTlQgfSBmcm9tICcuLi8uLi9zaGFyZS9DdXN0b21FdmVudFR5cGUnO1xyXG5pbXBvcnQgeyBFdmVudFV0aWxzIH0gZnJvbSAnLi4vLi4vc2hhcmUvdXRpbHMvRXZlbnRVdGlscyc7XHJcbmltcG9ydCB7IElIYXNEYXRhIH0gZnJvbSAnLi4vSUhhc0RhdGEnO1xyXG5cclxuY29uc3QgVFlQRV9OQU1FOiBzdHJpbmcgPSBcInBoeC10YWJsZS1leHBhbmQtYm9keVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgbW9kdWxlSWQ6IG1vZHVsZS5pZCxcclxuICBzZWxlY3RvcjogVFlQRV9OQU1FLFxyXG4gIHRlbXBsYXRlOiBgPHBoeC1jb21wb25lbnQtd3JhcHBlciBbdHlwZV09XCJnZXRUYWJsZSgpLmdldE1vZGVsKCkuZ2V0Um93TW9kZWwoKS5nZXRDb21wb25lbnRUeXBlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiZ2V0VGFibGUoKS5nZXRNb2RlbCgpLmdldFJvd01vZGVsKCkuZ2V0Q29tcG9uZW50T3B0aW9ucygpXCJcclxuICAgICAgICAgICAgICAgICAgIFtkYXRhUGFyZW50XT1cInRoaXNcIlxyXG4gICAgICAgICAgICAgICAgICAgW2lnbm9yZVBhcmVudERhdGFdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICBbaGFuZGxlcl09XCJyb3cud3JhcHBlckhhbmRsZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgW2RhdGFdPVwicm93LmRhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidwaHgtdGFibGUtcm93JyArIChnZXRUYWJsZSgpLmdldE1vZGVsKCkuZ2V0Um93TW9kZWwoKS5nZXRDU1NDbGFzcygpID8gJyAnICsgZ2V0VGFibGUoKS5nZXRNb2RlbCgpLmdldFJvd01vZGVsKCkuZ2V0Q1NTQ2xhc3MoKSA6ICcnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcm93IG9mIGdldFJvd0NvbnRyb2xsZXJzKCk7IGxldCBpZHggPSBpbmRleFwiPlxyXG48L3BoeC1jb21wb25lbnQtd3JhcHBlcj5cclxuYFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVmYXVsdEV4cGFuZFRhYmxlQm9keSBleHRlbmRzIERlZmF1bHRUYWJsZUJvZHkgaW1wbGVtZW50cyBJRXhwYW5kYWJsZVRhYmxlQm9keSB7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVFlQRV9OQU1FOiBzdHJpbmcgPSBUWVBFX05BTUU7XHJcblxyXG4gIC8vIFJlLWRlY2xhcmUgZmllbGQgdG8gZGVjbGFyZSBuZyBASW5wdXQuXHJcbiAgLy8gLS0tIGZyb20gQWJzdHJhY3RIYXNEYXRhXHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgZGF0YVBhcmVudDogSUhhc0RhdGE7XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgaWdub3JlUGFyZW50RGF0YTogYm9vbGVhbjtcclxuICBASW5wdXQoKVxyXG4gIEBPcHRpb24oKVxyXG4gIHByb3RlY3RlZCBkYXRhOiBhbnk7XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgaWdub3JlUGFyZW50RGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgZGVsZWdhdGVIaXN0b3J5OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpXHJcbiAgQE9wdGlvbigpXHJcbiAgcHJvdGVjdGVkIG9uRGlzYWJsZWQ6IEZ1bmN0aW9uO1xyXG4gIEBJbnB1dCgpXHJcbiAgQE9wdGlvbigpXHJcbiAgcHJvdGVjdGVkIG9uRW5hYmxlZDogRnVuY3Rpb247XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgbG9hZGluZ0VuYWJsZWQ6IGJvb2xlYW47XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgaTE4bktleTogc3RyaW5nO1xyXG4gIEBJbnB1dCgnaTE4bkJ5cGFzcycpXHJcbiAgQE9wdGlvbignaTE4bkJ5cGFzcycpXHJcbiAgcHJvdGVjdGVkIGJ5cGFzczogYm9vbGVhbjtcclxuICBASW5wdXQoKVxyXG4gIHByb3RlY3RlZCBvcHRpb25zOiBhbnk7XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgZGlzYWJsZWQ6IGJvb2xlYW47XHJcbiAgLy8gLS0tIEFic3RyYWN0SGFzRGF0YUhlbHBcclxuICBASW5wdXQoKVxyXG4gIEBPcHRpb24oKVxyXG4gIEBJMThOKClcclxuICBwcm90ZWN0ZWQgaGVscDogYW55O1xyXG4gIC8vIC0tLSBEZWZhdWx0VGFibGVCb2R5XHJcbiAgQEkxOE4oKVxyXG4gIHByb3RlY3RlZCByb3dzOiBJVGFibGVSb3dDb250cm9sbGVyW107XHJcblxyXG4gIC8vIFJlLWRlY2xhcmUgZmllbGQgdG8gZGVjbGFyZSBuZyBAT3V0cHV0LlxyXG4gIC8vIC0tLSBmcm9tIERlZmF1bHRUYWJsZUJvZHlcclxuICBAT3B0aW9uKCdiZWZvcmVDZWxsQ2xpY2snKVxyXG4gIEBPdXRwdXQoJ3BoeEJlZm9yZUNlbGxDbGljaycpXHJcbiAgcHJvdGVjdGVkIGJlZm9yZUNlbGxDbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3B0aW9uKCdiZWZvcmVDZWxsRGJsQ2xpY2snKVxyXG4gIEBPdXRwdXQoJ3BoeEJlZm9yZUNlbGxEYmxDbGljaycpXHJcbiAgcHJvdGVjdGVkIGJlZm9yZUNlbGxEYmxDbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3B0aW9uKCdiZWZvcmVDZWxsTG9zdEZvY3VzJylcclxuICBAT3V0cHV0KCdwaHhCZWZvcmVDZWxsTG9zdEZvY3VzJylcclxuICBwcm90ZWN0ZWQgYmVmb3JlQ2VsbExvc3RGb2N1c0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3B0aW9uKCdiZWZvcmVDZWxsRm9jdXMnKVxyXG4gIEBPdXRwdXQoJ3BoeEJlZm9yZUNlbGxGb2N1cycpXHJcbiAgcHJvdGVjdGVkIGJlZm9yZUNlbGxGb2N1c0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3B0aW9uKCdjZWxsQ2xpY2snKVxyXG4gIEBPdXRwdXQoJ3BoeENlbGxDbGljaycpXHJcbiAgcHJvdGVjdGVkIGNlbGxDbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3B0aW9uKCdjZWxsRGJsQ2xpY2snKVxyXG4gIEBPdXRwdXQoJ3BoeENlbGxEYmxDbGljaycpXHJcbiAgcHJvdGVjdGVkIGNlbGxEYmxDbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3B0aW9uKCdjZWxsTG9zdEZvY3VzJylcclxuICBAT3V0cHV0KCdwaHhDZWxsTG9zdEZvY3VzJylcclxuICBwcm90ZWN0ZWQgY2VsbExvc3RGb2N1c0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3B0aW9uKCdjZWxsRm9jdXMnKVxyXG4gIEBPdXRwdXQoJ3BoeENlbGxGb2N1cycpXHJcbiAgcHJvdGVjdGVkIGNlbGxGb2N1c0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3B0aW9uKCdyb3dEcmFnJylcclxuICBAT3V0cHV0KCdwaHhSb3dEcmFnJylcclxuICBwcm90ZWN0ZWQgcm93RHJhZ0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3B0aW9uKCdyb3dEcmFnU3RhcnQnKVxyXG4gIEBPdXRwdXQoJ3BoeFJvd0RyYWdTdGFydCcpXHJcbiAgcHJvdGVjdGVkIHJvd0RyYWdTdGFydEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3B0aW9uKCdyb3dEcmFnRW5kJylcclxuICBAT3V0cHV0KCdwaHhSb3dEcmFnRW5kJylcclxuICBwcm90ZWN0ZWQgcm93RHJhZ0VuZEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3B0aW9uKCdyb3dEcmFnRW50ZXInKVxyXG4gIEBPdXRwdXQoJ3BoeFJvd0RyYWdFbnRlcicpXHJcbiAgcHJvdGVjdGVkIHJvd0RyYWdFbnRlckV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3B0aW9uKCdyb3dEcmFnT3ZlcicpXHJcbiAgQE91dHB1dCgncGh4Um93RHJhZ092ZXInKVxyXG4gIHByb3RlY3RlZCByb3dEcmFnT3ZlckV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3B0aW9uKCdyb3dEcmFnTGVhdmUnKVxyXG4gIEBPdXRwdXQoJ3BoeFJvd0RyYWdMZWF2ZScpXHJcbiAgcHJvdGVjdGVkIHJvd0RyYWdMZWF2ZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3B0aW9uKCdyb3dEcm9wJylcclxuICBAT3V0cHV0KCdwaHhSb3dEcm9wJylcclxuICBwcm90ZWN0ZWQgcm93RHJvcEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3B0aW9uKCdyb3dEcm9wQWNjZXB0ZWQnKVxyXG4gIEBPdXRwdXQoJ3BoeFJvd0Ryb3BBY2NlcHRlZCcpXHJcbiAgcHJvdGVjdGVkIHJvd0Ryb3BBY2NlcHRlZEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3B0aW9uKCdyb3dEcm9wUmVqZWN0ZWQnKVxyXG4gIEBPdXRwdXQoJ3BoeFJvd0Ryb3BSZWplY3RlZCcpXHJcbiAgcHJvdGVjdGVkIHJvd0Ryb3BSZWplY3RlZEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3B0aW9uKCdjaGFuZ2UnKVxyXG4gIEBPdXRwdXQoJ3BoeENoYW5nZScpXHJcbiAgcHJvdGVjdGVkIGNoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3B0aW9uKCdiZWZvcmVDaGFuZ2UnKVxyXG4gIEBPdXRwdXQoJ3BoeEJlZm9yZUNoYW5nZScpXHJcbiAgcHJvdGVjdGVkIGJlZm9yZUNoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICAvLyAtLS0gc2VsZlxyXG4gIEBPcHRpb24oJ2V4cGFuZEFsbCcpXHJcbiAgQE91dHB1dCgncGh4RXhwYW5kQWxsJylcclxuICBwcm90ZWN0ZWQgZXhwYW5kQWxsRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gIEBPcHRpb24oJ2NvbnRyYWN0QWxsJylcclxuICBAT3V0cHV0KCdwaHhDb250cmFjdEFsbCcpXHJcbiAgcHJvdGVjdGVkIGNvbnRyYWN0QWxsRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gIEBPcHRpb24oJ2JlZm9yZUV4cGFuZEFsbCcpXHJcbiAgQE91dHB1dCgncGh4QmVmb3JlRXhwYW5kQWxsJylcclxuICBwcm90ZWN0ZWQgYmVmb3JlRXhwYW5kQWxsRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gIEBPcHRpb24oJ2JlZm9yZUNvbnRyYWN0QWxsJylcclxuICBAT3V0cHV0KCdwaHhCZWZvcmVDb250cmFjdEFsbCcpXHJcbiAgcHJvdGVjdGVkIGJlZm9yZUNvbnRyYWN0QWxsRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IoZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xyXG4gICAgc3VwZXIoZWxlbWVudFJlZik7XHJcblxyXG4gICAgdGhpcy5leHBhbmRBbGxFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIHRoaXMuY29udHJhY3RBbGxFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIHRoaXMuYmVmb3JlRXhwYW5kQWxsRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICB0aGlzLmJlZm9yZUNvbnRyYWN0QWxsRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhwYW5kQWxsKCk6IHZvaWQge1xyXG4gICAgbGV0IGJEYXRhOiBhbnkgPSB7XHJcbiAgICAgIGlzRXhwYW5kOiB0cnVlXHJcbiAgICB9O1xyXG4gICAgbGV0IGJFViA9IEV2ZW50VXRpbHMubmV3Q3VzdG9tRXZlbnQoQkVGT1JFX0VYUEFORF9FVkVOVCwgdGhpcywgYkRhdGEsIG51bGwpO1xyXG5cclxuICAgIGlmKHRoaXMuYmVmb3JlRXhwYW5kQWxsRXZlbnQgIT09IG51bGwgJiYgdGhpcy5iZWZvcmVFeHBhbmRBbGxFdmVudCAhPT0gdW5kZWZpbmVkKXtcclxuICAgICAgdGhpcy5iZWZvcmVFeHBhbmRBbGxFdmVudC5lbWl0KGJFVik7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChsZXQgY29udHJvbGxlciBvZiB0aGlzLnRhYmxlLmdldFJvd0NvbnRyb2xsZXJzKCkpIHtcclxuICAgICAgbGV0IHRhYmxlQ29udHJvbGxlcjogSUV4cGFuZGFibGVUYWJsZVJvd0NvbnRyb2xsZXIgPSBjb250cm9sbGVyIGFzIElFeHBhbmRhYmxlVGFibGVSb3dDb250cm9sbGVyO1xyXG5cclxuICAgICAgdGFibGVDb250cm9sbGVyLmV4cGFuZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBkYXRhOiBhbnkgPSB7XHJcbiAgICAgIGlzRXhwYW5kOiB0cnVlXHJcbiAgICB9O1xyXG4gICAgbGV0IGV2ID0gRXZlbnRVdGlscy5uZXdDdXN0b21FdmVudChFWFBBTkRfRVZFTlQsIHRoaXMsIGRhdGEsIG51bGwpO1xyXG5cclxuICAgIGlmKHRoaXMuZXhwYW5kQWxsRXZlbnQgIT09IG51bGwgJiYgdGhpcy5leHBhbmRBbGxFdmVudCAhPT0gdW5kZWZpbmVkKXtcclxuICAgICAgdGhpcy5leHBhbmRBbGxFdmVudC5lbWl0KGV2KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb250cmFjdEFsbCgpOiB2b2lkIHtcclxuICAgIGxldCBiRGF0YTogYW55ID0ge1xyXG4gICAgICBpc0V4cGFuZDogZmFsc2VcclxuICAgIH07XHJcbiAgICBsZXQgYkVWID0gRXZlbnRVdGlscy5uZXdDdXN0b21FdmVudChCRUZPUkVfQ09OVFJBQ1RfRVZFTlQsIHRoaXMsIGJEYXRhLCBudWxsKTtcclxuXHJcbiAgICBpZih0aGlzLmJlZm9yZUNvbnRyYWN0QWxsRXZlbnQgIT09IG51bGwgJiYgdGhpcy5iZWZvcmVDb250cmFjdEFsbEV2ZW50ICE9PSB1bmRlZmluZWQpe1xyXG4gICAgICB0aGlzLmJlZm9yZUNvbnRyYWN0QWxsRXZlbnQuZW1pdChiRVYpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGNvbnRyb2xsZXIgb2YgdGhpcy50YWJsZS5nZXRSb3dDb250cm9sbGVycygpKSB7XHJcbiAgICAgIGxldCB0YWJsZUNvbnRyb2xsZXI6IElFeHBhbmRhYmxlVGFibGVSb3dDb250cm9sbGVyID0gY29udHJvbGxlciBhcyBJRXhwYW5kYWJsZVRhYmxlUm93Q29udHJvbGxlcjtcclxuXHJcbiAgICAgIHRhYmxlQ29udHJvbGxlci5jb250cmFjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBkYXRhOiBhbnkgPSB7XHJcbiAgICAgIGlzRXhwYW5kOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIGxldCBldiA9IEV2ZW50VXRpbHMubmV3Q3VzdG9tRXZlbnQoQ09OVFJBQ1RfRVZFTlQsIHRoaXMsIGRhdGEsIG51bGwpO1xyXG5cclxuICAgIGlmKHRoaXMuY29udHJhY3RBbGxFdmVudCAhPT0gbnVsbCAmJiB0aGlzLmNvbnRyYWN0QWxsRXZlbnQgIT09IHVuZGVmaW5lZCl7XHJcbiAgICAgIHRoaXMuY29udHJhY3RBbGxFdmVudC5lbWl0KGV2KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRFeHBhbmRBbGxFdmVudChldmVudDogRXZlbnRFbWl0dGVyPGFueT4pOiB2b2lkIHtcclxuICAgIHRoaXMuZXhwYW5kQWxsRXZlbnQgPSBldmVudDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRFeHBhbmRBbGxFdmVudCgpOiBFdmVudEVtaXR0ZXI8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5leHBhbmRBbGxFdmVudDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRCZWZvcmVFeHBhbmRBbGxFdmVudChldmVudDogRXZlbnRFbWl0dGVyPGFueT4pOiB2b2lkIHtcclxuICAgIHRoaXMuYmVmb3JlRXhwYW5kQWxsRXZlbnQgPSBldmVudDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRCZWZvcmVFeHBhbmRBbGxFdmVudCgpOiBFdmVudEVtaXR0ZXI8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5iZWZvcmVFeHBhbmRBbGxFdmVudDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRDb250cmFjdEFsbEV2ZW50KGV2ZW50OiBFdmVudEVtaXR0ZXI8YW55Pik6IHZvaWQge1xyXG4gICAgdGhpcy5jb250cmFjdEFsbEV2ZW50ID0gZXZlbnQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q29udHJhY3RBbGxFdmVudCgpOiBFdmVudEVtaXR0ZXI8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5jb250cmFjdEFsbEV2ZW50O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEJlZm9yZUNvbnRyYWN0QWxsRXZlbnQoZXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+KTogdm9pZCB7XHJcbiAgICB0aGlzLmJlZm9yZUNvbnRyYWN0QWxsRXZlbnQgPSBldmVudDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRCZWZvcmVDb250cmFjdEFsbEV2ZW50KCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmJlZm9yZUNvbnRyYWN0QWxsRXZlbnQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==