UNPKG

@grapecity/inputman.angular

Version:

このパッケージには、Angular用の[InputManJS](https://developer.mescius.jp/inputmanjs)コンポーネントが含まれます。

387 lines 44.4 kB
import { __decorate, __metadata } from "tslib"; import { Component, Input, ElementRef, Output, ContentChildren, QueryList, EventEmitter, forwardRef } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { GC } from '../inputman'; import { Property } from '../common'; import { provideParent, GcComponents } from './GcComponents'; import * as i0 from "@angular/core"; export class GcComboBoxColumnComponent { } GcComboBoxColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GcComboBoxColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); GcComboBoxColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GcComboBoxColumnComponent, selector: "gc-combo-box-column", inputs: { name: "name", label: "label", width: "width", isValuePath: "isValuePath", visible: "visible", clickSort: "clickSort", contentAlignment: "contentAlignment", headerAlignment: "headerAlignment", showTip: "showTip" }, ngImport: i0, template: ``, isInline: true }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GcComboBoxColumnComponent, decorators: [{ type: Component, args: [{ selector: 'gc-combo-box-column', template: `` }] }], propDecorators: { name: [{ type: Input }], label: [{ type: Input }], width: [{ type: Input }], isValuePath: [{ type: Input }], visible: [{ type: Input }], clickSort: [{ type: Input }], contentAlignment: [{ type: Input }], headerAlignment: [{ type: Input }], showTip: [{ type: Input }] } }); export class GcComboBoxComponent extends GcComponents { constructor(ref) { super(ref); this.onChange = () => { }; this.onTouched = () => { }; this.selectedChanged = new EventEmitter(); this.checkedChanged = new EventEmitter(); this.dropDownClosed = new EventEmitter(); this.dropDownOpened = new EventEmitter(); this.textChanged = new EventEmitter(); this.spinDown = new EventEmitter(); this.spinUp = new EventEmitter(); this.itemsChanged = new EventEmitter(); this.itemsChange = new EventEmitter(); this.selectedValueChange = new EventEmitter(); this.selectedIndexChange = new EventEmitter(); this.checkedValuesChange = new EventEmitter(); this.selectedItemChange = new EventEmitter(); this.checkedItemsChange = new EventEmitter(); this.checkedIndicesChange = new EventEmitter(); } writeValue(value) { this.text = value; if (this._imCtrl) { this._imCtrl.text = this.text; } } registerOnChange(onChange) { this.onChange = onChange; } registerOnTouched(onTouched) { this.onTouched = onTouched; } setDisabledState(isDisabled) { this.enabled = !isDisabled; if (this._imCtrl) { this._imCtrl.enabled = this.enabled; } } initGcComponent() { if (this.columnComponents && this.columnComponents.length > 0) { this.columns = []; this.columnComponents.forEach((column) => { this.columns.push({ name: column.name, label: column.label, width: column.width, isValuePath: column.isValuePath, visible: column.visible, clickSort: column.clickSort, contentAlignment: column.contentAlignment, headerAlignment: column.headerAlignment, showTip: column.showTip }); }); } var element = document.createElement('select'); this.createTemplate(element); this._imCtrl = new GC.InputMan.GcComboBox(element, this); } bindEvent() { if (!this._imCtrl) { return; } this._imCtrl.addEventListener(GC.InputMan.GcComboBoxEvent.SelectedChanged, (eventArgs) => { this.selectedChanged.emit(eventArgs); this.selectedValueChange.emit(this._imCtrl.getSelectedValue()); this.selectedIndexChange.emit(this._imCtrl.getSelectedIndex()); this.selectedItemChange.emit(this._imCtrl.getSelectedItem()); }); this._imCtrl.addEventListener(GC.InputMan.GcComboBoxEvent.CheckedChanged, (eventArgs) => { this.checkedChanged.emit(eventArgs); this.checkedValuesChange.emit(this._imCtrl.getCheckedValues()); this.checkedItemsChange.emit(this._imCtrl.getCheckedItems()); this.checkedIndicesChange.emit(this._imCtrl.getCheckedIndices()); }); this._imCtrl.addEventListener(GC.InputMan.GcComboBoxEvent.DropDownClosed, (eventArgs) => { this.dropDownClosed.emit(eventArgs); }); this._imCtrl.addEventListener(GC.InputMan.GcComboBoxEvent.DropDownOpened, (eventArgs) => { this.dropDownOpened.emit(eventArgs); }); this._imCtrl.addEventListener(GC.InputMan.GcComboBoxEvent.TextChanged, (eventArgs) => { this.textChanged.emit(eventArgs); this.onChange(this._imCtrl.text); this.onTouched(); }); this._imCtrl.addEventListener(GC.InputMan.GcComboBoxEvent.SpinDown, (eventArgs) => { this.spinDown.emit(eventArgs); }); this._imCtrl.addEventListener(GC.InputMan.GcComboBoxEvent.SpinUp, (eventArgs) => { this.spinUp.emit(eventArgs); }); this._imCtrl.addEventListener(GC.InputMan.GcComboBoxEvent.ItemsChanged, (eventArgs) => { this.itemsChanged.emit(eventArgs); this.itemsChange.emit(this._imCtrl.getItems()); }); } } GcComboBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GcComboBoxComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); GcComboBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GcComboBoxComponent, selector: "gc-combo-box", inputs: { items: "items", selectedValue: "selectedValue", allowDropDownResize: "allowDropDownResize", width: "width", height: "height", minWidth: "minWidth", minHeight: "minHeight", maxWidth: "maxWidth", maxHeight: "maxHeight", fontSize: "fontSize", readOnly: "readOnly", autoSelect: "autoSelect", selectedIndex: "selectedIndex", autoFilter: "autoFilter", visible: "visible", enabled: "enabled", showTip: "showTip", isEditable: "isEditable", watermarkDisplayNullText: "watermarkDisplayNullText", watermarkNullText: "watermarkNullText", highlightText: "highlightText", exitOnEnterKey: "exitOnEnterKey", useClipboard: "useClipboard", acceptsCrlf: "acceptsCrlf", acceptsTabChar: "acceptsTabChar", ellipsis: "ellipsis", ellipsisString: "ellipsisString", exitOnLeftRightKey: "exitOnLeftRightKey", tabIndex: "tabIndex", showHelpButton: "showHelpButton", autoCompleteMode: "autoCompleteMode", autoCompleteMatchMode: "autoCompleteMatchMode", showCopyButton: "showCopyButton", helpContent: "helpContent", copyMessage: "copyMessage", copiedMessage: "copiedMessage", floatingLabelText: "floatingLabelText", floatingLabelType: "floatingLabelType", floatingLabelDirection: "floatingLabelDirection", editMode: "editMode", checkedValues: "checkedValues", selectedItem: "selectedItem", checkedItems: "checkedItems", checkedIndices: "checkedIndices", showDropDownButton: "showDropDownButton", dropDownButtonPosition: "dropDownButtonPosition", showSpinButton: "showSpinButton", spinButtonPosition: "spinButtonPosition", dropDownWidth: "dropDownWidth", dropDownHeight: "dropDownHeight", minPrefixLength: "minPrefixLength", isMultiSelect: "isMultiSelect", dropDownOverflow: "dropDownOverflow", visibleItems: "visibleItems", itemHeight: "itemHeight", columns: "columns", showHeader: "showHeader", valueMemberPath: "valueMemberPath", displayMemberPath: "displayMemberPath", checkOnClick: "checkOnClick", itemTemplate: "itemTemplate", headerTemplate: "headerTemplate", footerTemplate: "footerTemplate", spinWheel: "spinWheel", emptyTemplate: "emptyTemplate", load: "load", pageSize: "pageSize", virtualMode: "virtualMode", generatingItem: "generatingItem", selectTemplate: "selectTemplate", formatItem: "formatItem", allowColumnResize: "allowColumnResize", colHeaderHeight: "colHeaderHeight", container: "container", autoDropDown: "autoDropDown", dropDownButtonVisible: "dropDownButtonVisible", showClearButton: "showClearButton", autoScale: "autoScale", minScaleFactor: "minScaleFactor", multipleItemSeparator: "multipleItemSeparator", dropDownType: "dropDownType", dropDownTreeConfig: "dropDownTreeConfig", checkBySpace: "checkBySpace" }, outputs: { selectedChanged: "selectedChanged", checkedChanged: "checkedChanged", dropDownClosed: "dropDownClosed", dropDownOpened: "dropDownOpened", textChanged: "textChanged", spinDown: "spinDown", spinUp: "spinUp", itemsChanged: "itemsChanged", itemsChange: "itemsChange", selectedValueChange: "selectedValueChange", selectedIndexChange: "selectedIndexChange", checkedValuesChange: "checkedValuesChange", selectedItemChange: "selectedItemChange", checkedItemsChange: "checkedItemsChange", checkedIndicesChange: "checkedIndicesChange" }, providers: [ provideParent(GcComboBoxComponent), { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: forwardRef(() => GcComboBoxComponent), } ], queries: [{ propertyName: "columnComponents", predicate: GcComboBoxColumnComponent }], usesInheritance: true, ngImport: i0, template: ``, isInline: true }); __decorate([ Property("", "", false, false), __metadata("design:type", Object) ], GcComboBoxComponent.prototype, "selectedValue", void 0); __decorate([ Property("", "", false, false), __metadata("design:type", Number) ], GcComboBoxComponent.prototype, "selectedIndex", void 0); __decorate([ Property("setEditable"), __metadata("design:type", Boolean) ], GcComboBoxComponent.prototype, "isEditable", void 0); __decorate([ Property("", "", false, false), __metadata("design:type", Object) ], GcComboBoxComponent.prototype, "checkedValues", void 0); __decorate([ Property("", "", false, false), __metadata("design:type", Object) ], GcComboBoxComponent.prototype, "selectedItem", void 0); __decorate([ Property("", "", false, false), __metadata("design:type", Object) ], GcComboBoxComponent.prototype, "checkedItems", void 0); __decorate([ Property("", "", false, false), __metadata("design:type", Array) ], GcComboBoxComponent.prototype, "checkedIndices", void 0); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GcComboBoxComponent, decorators: [{ type: Component, args: [{ selector: 'gc-combo-box', template: ``, providers: [ provideParent(GcComboBoxComponent), { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: forwardRef(() => GcComboBoxComponent), } ] }] }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { items: [{ type: Input }], selectedValue: [{ type: Input }], allowDropDownResize: [{ type: Input }], width: [{ type: Input }], height: [{ type: Input }], minWidth: [{ type: Input }], minHeight: [{ type: Input }], maxWidth: [{ type: Input }], maxHeight: [{ type: Input }], fontSize: [{ type: Input }], readOnly: [{ type: Input }], autoSelect: [{ type: Input }], selectedIndex: [{ type: Input }], autoFilter: [{ type: Input }], visible: [{ type: Input }], enabled: [{ type: Input }], showTip: [{ type: Input }], isEditable: [{ type: Input }], watermarkDisplayNullText: [{ type: Input }], watermarkNullText: [{ type: Input }], highlightText: [{ type: Input }], exitOnEnterKey: [{ type: Input }], useClipboard: [{ type: Input }], acceptsCrlf: [{ type: Input }], acceptsTabChar: [{ type: Input }], ellipsis: [{ type: Input }], ellipsisString: [{ type: Input }], exitOnLeftRightKey: [{ type: Input }], tabIndex: [{ type: Input }], showHelpButton: [{ type: Input }], autoCompleteMode: [{ type: Input }], autoCompleteMatchMode: [{ type: Input }], showCopyButton: [{ type: Input }], helpContent: [{ type: Input }], copyMessage: [{ type: Input }], copiedMessage: [{ type: Input }], floatingLabelText: [{ type: Input }], floatingLabelType: [{ type: Input }], floatingLabelDirection: [{ type: Input }], editMode: [{ type: Input }], checkedValues: [{ type: Input }], selectedItem: [{ type: Input }], checkedItems: [{ type: Input }], checkedIndices: [{ type: Input }], showDropDownButton: [{ type: Input }], dropDownButtonPosition: [{ type: Input }], showSpinButton: [{ type: Input }], spinButtonPosition: [{ type: Input }], dropDownWidth: [{ type: Input }], dropDownHeight: [{ type: Input }], minPrefixLength: [{ type: Input }], isMultiSelect: [{ type: Input }], dropDownOverflow: [{ type: Input }], visibleItems: [{ type: Input }], itemHeight: [{ type: Input }], columns: [{ type: Input }], showHeader: [{ type: Input }], valueMemberPath: [{ type: Input }], displayMemberPath: [{ type: Input }], checkOnClick: [{ type: Input }], itemTemplate: [{ type: Input }], headerTemplate: [{ type: Input }], footerTemplate: [{ type: Input }], spinWheel: [{ type: Input }], emptyTemplate: [{ type: Input }], load: [{ type: Input }], pageSize: [{ type: Input }], virtualMode: [{ type: Input }], generatingItem: [{ type: Input }], selectTemplate: [{ type: Input }], formatItem: [{ type: Input }], allowColumnResize: [{ type: Input }], colHeaderHeight: [{ type: Input }], container: [{ type: Input }], autoDropDown: [{ type: Input }], dropDownButtonVisible: [{ type: Input }], showClearButton: [{ type: Input }], autoScale: [{ type: Input }], minScaleFactor: [{ type: Input }], multipleItemSeparator: [{ type: Input }], dropDownType: [{ type: Input }], dropDownTreeConfig: [{ type: Input }], checkBySpace: [{ type: Input }], selectedChanged: [{ type: Output }], checkedChanged: [{ type: Output }], dropDownClosed: [{ type: Output }], dropDownOpened: [{ type: Output }], textChanged: [{ type: Output }], spinDown: [{ type: Output }], spinUp: [{ type: Output }], itemsChanged: [{ type: Output }], itemsChange: [{ type: Output }], selectedValueChange: [{ type: Output }], selectedIndexChange: [{ type: Output }], checkedValuesChange: [{ type: Output }], selectedItemChange: [{ type: Output }], checkedItemsChange: [{ type: Output }], checkedIndicesChange: [{ type: Output }], columnComponents: [{ type: ContentChildren, args: [GcComboBoxColumnComponent] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2NDb21ib0JveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvR2NDb21ib0JveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVU3RCxNQUFNLE9BQU8seUJBQXlCOzt1SEFBekIseUJBQXlCOzJHQUF6Qix5QkFBeUIsMlJBRnhCLEVBQUU7NEZBRUgseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxxQkFBcUI7b0JBQy9CLFFBQVEsRUFBRSxFQUFFO2lCQUNmOzhCQUdVLElBQUk7c0JBRFYsS0FBSztnQkFHQyxLQUFLO3NCQURYLEtBQUs7Z0JBR0MsS0FBSztzQkFEWCxLQUFLO2dCQUdDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBR0MsT0FBTztzQkFEYixLQUFLO2dCQUdDLFNBQVM7c0JBRGYsS0FBSztnQkFHQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBR0MsZUFBZTtzQkFEckIsS0FBSztnQkFHQyxPQUFPO3NCQURiLEtBQUs7O0FBZ0JWLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxZQUFvQztJQUV6RSxZQUFZLEdBQWU7UUFDdkIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBR1AsYUFBUSxHQUFhLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMvQixjQUFTLEdB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QUdDLFFBQVE7c0JBRGQsS0FBSztnQkFHQyxXQUFXO3NCQURqQixLQUFLO2dCQUdDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBR0MsY0FBYztzQkFEcEIsS0FBSztnQkFHQyxVQUFVO3NCQURoQixLQUFLO2dCQUdDLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFHQyxlQUFlO3NCQURyQixLQUFLO2dCQUdDLFNBQVM7c0JBRGYsS0FBSztnQkFHQyxZQUFZO3NCQURsQixLQUFLO2dCQUdDLHFCQUFxQjtzQkFEM0IsS0FBSztnQkFHQyxlQUFlO3NCQURyQixLQUFLO2dCQUdDLFNBQVM7c0JBRGYsS0FBSztnQkFHQyxjQUFjO3NCQURwQixLQUFLO2dCQUdDLHFCQUFxQjtzQkFEM0IsS0FBSztnQkFHQyxZQUFZO3NCQURsQixLQUFLO2dCQUdDLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFHQyxZQUFZO3NCQURsQixLQUFLO2dCQUdDLGVBQWU7c0JBRHJCLE1BQU07Z0JBR0EsY0FBYztzQkFEcEIsTUFBTTtnQkFHQSxjQUFjO3NCQURwQixNQUFNO2dCQUdBLGNBQWM7c0JBRHBCLE1BQU07Z0JBR0EsV0FBVztzQkFEakIsTUFBTTtnQkFHQSxRQUFRO3NCQURkLE1BQU07Z0JBR0EsTUFBTTtzQkFEWixNQUFNO2dCQUdBLFlBQVk7c0JBRGxCLE1BQU07Z0JBR0EsV0FBVztzQkFEakIsTUFBTTtnQkFHQSxtQkFBbUI7c0JBRHpCLE1BQU07Z0JBR0EsbUJBQW1CO3NCQUR6QixNQUFNO2dCQUdBLG1CQUFtQjtzQkFEekIsTUFBTTtnQkFHQSxrQkFBa0I7c0JBRHhCLE1BQU07Z0JBR0Esa0JBQWtCO3NCQUR4QixNQUFNO2dCQUdBLG9CQUFvQjtzQkFEMUIsTUFBTTtnQkFJQSxnQkFBZ0I7c0JBRHRCLGVBQWU7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgRWxlbWVudFJlZiwgT3V0cHV0LCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBHQyB9IGZyb20gJy4uL2lucHV0bWFuJztcbmltcG9ydCB7IFByb3BlcnR5IH0gZnJvbSAnLi4vY29tbW9uJztcbmltcG9ydCB7IHByb3ZpZGVQYXJlbnQsIEdjQ29tcG9uZW50cyB9IGZyb20gJy4vR2NDb21wb25lbnRzJztcblxudHlwZSBDb21ib0JveFZhbHVlc1R5cGUgPSBudW1iZXJbXSB8IHN0cmluZ1tdIHwgYm9vbGVhbltdIHwgb2JqZWN0W107XG50eXBlIENvbWJvQm94SXRlbVR5cGUgPSBzdHJpbmcgfCBvYmplY3Q7XG50eXBlIENvbWJvQm94SXRlbXNUeXBlID0gc3RyaW5nW10gfCBvYmplY3RbXTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdnYy1jb21iby1ib3gtY29sdW1uJyxcbiAgICB0ZW1wbGF0ZTogYGBcbn0pXG5leHBvcnQgY2xhc3MgR2NDb21ib0JveENvbHVtbkNvbXBvbmVudCB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgd2lkdGg6IG51bWJlciB8IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpc1ZhbHVlUGF0aDogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2aXNpYmxlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNsaWNrU29ydDogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb250ZW50QWxpZ25tZW50OiBHQy5JbnB1dE1hbi5BbGlnbm1lbnQ7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaGVhZGVyQWxpZ25tZW50OiBHQy5JbnB1dE1hbi5BbGlnbm1lbnQ7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd1RpcDogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdnYy1jb21iby1ib3gnLFxuICAgIHRlbXBsYXRlOiBgYCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZVBhcmVudChHY0NvbWJvQm94Q29tcG9uZW50KSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEdjQ29tYm9Cb3hDb21wb25lbnQpLFxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBHY0NvbWJvQm94Q29tcG9uZW50IGV4dGVuZHMgR2NDb21wb25lbnRzPEdDLklucHV0TWFuLkdjQ29tYm9Cb3g+IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gICAgY29uc3RydWN0b3IocmVmOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHN1cGVyKHJlZik7XG4gICAgfVxuICAgIHByaXZhdGUgdGV4dDogc3RyaW5nO1xuICAgIHByaXZhdGUgb25DaGFuZ2U6IEZ1bmN0aW9uID0gKCkgPT4geyB9O1xuICAgIHByaXZhdGUgb25Ub3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHsgfTtcblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnRleHQgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuX2ltQ3RybCkge1xuICAgICAgICAgICAgdGhpcy5faW1DdHJsLnRleHQgPSB0aGlzLnRleHQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBvbkNoYW5nZTtcbiAgICB9XG4gICAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG4gICAgfVxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmVuYWJsZWQgPSAhaXNEaXNhYmxlZDtcbiAgICAgICAgaWYgKHRoaXMuX2ltQ3RybCkge1xuICAgICAgICAgICAgdGhpcy5faW1DdHJsLmVuYWJsZWQgPSB0aGlzLmVuYWJsZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpdGVtczogQ29tYm9Cb3hWYWx1ZXNUeXBlO1xuICAgIEBJbnB1dCgpXG4gICAgQFByb3BlcnR5KFwiXCIsIFwiXCIsIGZhbHNlLCBmYWxzZSlcbiAgICBwdWJsaWMgc2VsZWN0ZWRWYWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbiB8IG9iamVjdDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhbGxvd0Ryb3BEb3duUmVzaXplOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHdpZHRoOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaGVpZ2h0OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluV2lkdGg6IG51bWJlciB8IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtaW5IZWlnaHQ6IG51bWJlciB8IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtYXhXaWR0aDogbnVtYmVyIHwgc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1heEhlaWdodDogbnVtYmVyIHwgc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZvbnRTaXplOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcmVhZE9ubHk6IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXV0b1NlbGVjdDogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIEBQcm9wZXJ0eShcIlwiLCBcIlwiLCBmYWxzZSwgZmFsc2UpXG4gICAgcHVibGljIHNlbGVjdGVkSW5kZXg6IG51bWJlcjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhdXRvRmlsdGVyOiBzdHJpbmcgfCBHQy5JbnB1dE1hbi5BdXRvRmlsdGVyO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZpc2libGU6IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZW5hYmxlZDogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93VGlwOiBib29sZWFuO1xuICAgIEBQcm9wZXJ0eShcInNldEVkaXRhYmxlXCIpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNFZGl0YWJsZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB3YXRlcm1hcmtEaXNwbGF5TnVsbFRleHQ6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB3YXRlcm1hcmtOdWxsVGV4dDogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhpZ2hsaWdodFRleHQ6IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZXhpdE9uRW50ZXJLZXk6IHN0cmluZyB8IEdDLklucHV0TWFuLkV4aXRLZXk7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdXNlQ2xpcGJvYXJkOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFjY2VwdHNDcmxmOiBzdHJpbmcgfCBHQy5JbnB1dE1hbi5DckxmTW9kZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhY2NlcHRzVGFiQ2hhcjogR0MuSW5wdXRNYW4uVGFiQ2hhck1vZGU7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZWxsaXBzaXM6IHN0cmluZyB8IEdDLklucHV0TWFuLkVsbGlwc2lzTW9kZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlbGxpcHNpc1N0cmluZzogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGV4aXRPbkxlZnRSaWdodEtleTogc3RyaW5nIHwgR0MuSW5wdXRNYW4uRXhpdE9uTGVmdFJpZ2h0S2V5O1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRhYkluZGV4OiBudW1iZXI7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hvd0hlbHBCdXR0b246IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXV0b0NvbXBsZXRlTW9kZTogR0MuSW5wdXRNYW4uQXV0b0NvbXBsZXRlTW9kZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhdXRvQ29tcGxldGVNYXRjaE1vZGU6IEdDLklucHV0TWFuLkF1dG9Db21wbGV0ZU1hdGNoTW9kZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93Q29weUJ1dHRvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBoZWxwQ29udGVudDogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvcHlNZXNzYWdlOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29waWVkTWVzc2FnZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZsb2F0aW5nTGFiZWxUZXh0OiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmxvYXRpbmdMYWJlbFR5cGU6IEdDLklucHV0TWFuLkZsb2F0aW5nTGFiZWxUeXBlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZsb2F0aW5nTGFiZWxEaXJlY3Rpb246IEdDLklucHV0TWFuLkZsb2F0aW5nTGFiZWxEaXJlY3Rpb247XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlZGl0TW9kZTogc3RyaW5nIHwgR0MuSW5wdXRNYW4uRWRpdE1vZGU7XG4gICAgQElucHV0KClcbiAgICBAUHJvcGVydHkoXCJcIiwgXCJcIiwgZmFsc2UsIGZhbHNlKVxuICAgIHB1YmxpYyBjaGVja2VkVmFsdWVzOiBDb21ib0JveFZhbHVlc1R5cGU7XG4gICAgQElucHV0KClcbiAgICBAUHJvcGVydHkoXCJcIiwgXCJcIiwgZmFsc2UsIGZhbHNlKVxuICAgIHB1YmxpYyBzZWxlY3RlZEl0ZW06IENvbWJvQm94SXRlbVR5cGU7XG4gICAgQElucHV0KClcbiAgICBAUHJvcGVydHkoXCJcIiwgXCJcIiwgZmFsc2UsIGZhbHNlKVxuICAgIHB1YmxpYyBjaGVja2VkSXRlbXM6IENvbWJvQm94SXRlbXNUeXBlO1xuICAgIEBJbnB1dCgpXG4gICAgQFByb3BlcnR5KFwiXCIsIFwiXCIsIGZhbHNlLCBmYWxzZSlcbiAgICBwdWJsaWMgY2hlY2tlZEluZGljZXM6IG51bWJlcltdO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dEcm9wRG93bkJ1dHRvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkcm9wRG93bkJ1dHRvblBvc2l0aW9uOiBzdHJpbmcgfCBHQy5JbnB1dE1hbi5Ecm9wRG93bkJ1dHRvbkFsaWdubWVudDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93U3BpbkJ1dHRvbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzcGluQnV0dG9uUG9zaXRpb246IHN0cmluZyB8IEdDLklucHV0TWFuLlNwaW5CdXR0b25BbGlnbm1lbnQ7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZHJvcERvd25XaWR0aDogbnVtYmVyIHwgJ2F1dG8nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRyb3BEb3duSGVpZ2h0OiBudW1iZXI7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWluUHJlZml4TGVuZ3RoOiBudW1iZXI7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNNdWx0aVNlbGVjdDogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkcm9wRG93bk92ZXJmbG93OiBzdHJpbmcgfCBHQy5JbnB1dE1hbi5TY3JvbGxCYXJzO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZpc2libGVJdGVtczogbnVtYmVyO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGl0ZW1IZWlnaHQ6IG51bWJlcjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb2x1bW5zOiBHQy5JbnB1dE1hbi5Db2x1bW5Db25maWdbXTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93SGVhZGVyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbHVlTWVtYmVyUGF0aDogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc3BsYXlNZW1iZXJQYXRoOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY2hlY2tPbkNsaWNrOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGl0ZW1UZW1wbGF0ZTogc3RyaW5nIHwgc3RyaW5nW107XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaGVhZGVyVGVtcGxhdGU6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb290ZXJUZW1wbGF0ZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNwaW5XaGVlbDogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlbXB0eVRlbXBsYXRlOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbG9hZDogKGNvbnRleHQ6IEdDLklucHV0TWFuLklMb2FkQ29udGV4dCkgPT4gdm9pZDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwYWdlU2l6ZTogbnVtYmVyO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZpcnR1YWxNb2RlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdlbmVyYXRpbmdJdGVtOiAoYXJnczogR0MuSW5wdXRNYW4uSUl0ZW1HZW5lcmF0aW5nQXJncykgPT4gdm9pZDtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZWxlY3RUZW1wbGF0ZTogKGFyZ3M6IEdDLklucHV0TWFuLklUZW1wbGF0ZVNlbGVjdEFyZ3MpID0+IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb3JtYXRJdGVtOiAoYXJnczogR0MuSW5wdXRNYW4uSUl0ZW1BcmdzKSA9PiB2b2lkO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGFsbG93Q29sdW1uUmVzaXplOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbEhlYWRlckhlaWdodDogbnVtYmVyO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQ7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXV0b0Ryb3BEb3duOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRyb3BEb3duQnV0dG9uVmlzaWJsZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93Q2xlYXJCdXR0b246IGJvb2xlYW47XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXV0b1NjYWxlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1pblNjYWxlRmFjdG9yOiBudW1iZXI7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbXVsdGlwbGVJdGVtU2VwYXJhdG9yOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZHJvcERvd25UeXBlOiBHQy5JbnB1dE1hbi5Db21ib0Ryb3BEb3duVHlwZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkcm9wRG93blRyZWVDb25maWc6IEdDLklucHV0TWFuLkNvbWJvQm94RHJvcERvd25UcmVlQ29uZmlnO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNoZWNrQnlTcGFjZTogYm9vbGVhbjtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0ZWRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8R0MuSW5wdXRNYW4uR2NDb21ib0JveD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNoZWNrZWRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8R0MuSW5wdXRNYW4uR2NDb21ib0JveD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGRyb3BEb3duQ2xvc2VkOiBFdmVudEVtaXR0ZXI8R0MuSW5wdXRNYW4uR2NDb21ib0JveD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGRyb3BEb3duT3BlbmVkOiBFdmVudEVtaXR0ZXI8R0MuSW5wdXRNYW4uR2NDb21ib0JveD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHRleHRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8R0MuSW5wdXRNYW4uR2NDb21ib0JveD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNwaW5Eb3duOiBFdmVudEVtaXR0ZXI8R0MuSW5wdXRNYW4uR2NDb21ib0JveD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNwaW5VcDogRXZlbnRFbWl0dGVyPEdDLklucHV0TWFuLkdjQ29tYm9Cb3g+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBpdGVtc0NoYW5nZWQ6IEV2ZW50RW1pdHRlcjxHQy5JbnB1dE1hbi5HY0NvbWJvQm94PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgaXRlbXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDb21ib0JveFZhbHVlc1R5cGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBzZWxlY3RlZFZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8b2JqZWN0IHwgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNlbGVjdGVkSW5kZXhDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjaGVja2VkVmFsdWVzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q29tYm9Cb3hWYWx1ZXNUeXBlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0ZWRJdGVtQ2hhbmdlOiBFdmVudEVtaXR0ZXI8b2JqZWN0IHwgc3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY2hlY2tlZEl0ZW1zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q29tYm9Cb3hJdGVtc1R5cGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjaGVja2VkSW5kaWNlc0NoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcltdPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oR2NDb21ib0JveENvbHVtbkNvbXBvbmVudClcbiAgICBwdWJsaWMgY29sdW1uQ29tcG9uZW50czogUXVlcnlMaXN0PEdjQ29tYm9Cb3hDb2x1bW5Db21wb25lbnQ+O1xuXG4gICAgcHJvdGVjdGVkIGluaXRHY0NvbXBvbmVudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29sdW1uQ29tcG9uZW50cyAmJiB0aGlzLmNvbHVtbkNvbXBvbmVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5jb2x1bW5zID0gW107XG4gICAgICAgICAgICB0aGlzLmNvbHVtbkNvbXBvbmVudHMuZm9yRWFjaCgoY29sdW1uOiBHY0NvbWJvQm94Q29sdW1uQ29tcG9uZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb2x1bW4ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGNvbHVtbi5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGNvbHVtbi53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgaXNWYWx1ZVBhdGg6IGNvbHVtbi5pc1ZhbHVlUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogY29sdW1uLnZpc2libGUsXG4gICAgICAgICAgICAgICAgICAgIGNsaWNrU29ydDogY29sdW1uLmNsaWNrU29ydCxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudEFsaWdubWVudDogY29sdW1uLmNvbnRlbnRBbGlnbm1lbnQsXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlckFsaWdubWVudDogY29sdW1uLmhlYWRlckFsaWdubWVudCxcbiAgICAgICAgICAgICAgICAgICAgc2hvd1RpcDogY29sdW1uLnNob3dUaXBcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2VsZWN0Jyk7XG4gICAgICAgIHRoaXMuY3JlYXRlVGVtcGxhdGUoZWxlbWVudCk7XG4gICAgICAgIHRoaXMuX2ltQ3RybCA9IG5ldyBHQy5JbnB1dE1hbi5HY0NvbWJvQm94KGVsZW1lbnQsIHRoaXMgYXMgYW55KTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIGJpbmRFdmVudCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9pbUN0cmwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2ltQ3RybC5hZGRFdmVudExpc3RlbmVyKEdDLklucHV0TWFuLkdjQ29tYm9Cb3hFdmVudC5TZWxlY3RlZENoYW5nZWQsIChldmVudEFyZ3MpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2VkLmVtaXQoZXZlbnRBcmdzKTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZUNoYW5nZS5lbWl0KHRoaXMuX2ltQ3RybC5nZXRTZWxlY3RlZFZhbHVlKCkpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4Q2hhbmdlLmVtaXQodGhpcy5faW1DdHJsLmdldFNlbGVjdGVkSW5kZXgoKSk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUNoYW5nZS5lbWl0KHRoaXMuX2ltQ3RybC5nZXRTZWxlY3RlZEl0ZW0oKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9pbUN0cmwuYWRkRXZlbnRMaXN0ZW5lcihHQy5JbnB1dE1hbi5HY0NvbWJvQm94RXZlbnQuQ2hlY2tlZENoYW5nZWQsIChldmVudEFyZ3MpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZENoYW5nZWQuZW1pdChldmVudEFyZ3MpO1xuICAgICAgICAgICAgdGhpcy5jaGVja2VkVmFsdWVzQ2hhbmdlLmVtaXQodGhpcy5faW1DdHJsLmdldENoZWNrZWRWYWx1ZXMoKSk7XG4gICAgICAgICAgICB0aGlzLmNoZWNrZWRJdGVtc0NoYW5nZS5lbWl0KHRoaXMuX2ltQ3RybC5nZXRDaGVja2VkSXRlbXMoKSk7XG4gICAgICAgICAgICB0aGlzLmNoZWNrZWRJbmRpY2VzQ2hhbmdlLmVtaXQodGhpcy5faW1DdHJsLmdldENoZWNrZWRJbmRpY2VzKCkpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5faW1DdHJsLmFkZEV2ZW50TGlzdGVuZXIoR0MuSW5wdXRNYW4uR2NDb21ib0JveEV2ZW50LkRyb3BEb3duQ2xvc2VkLCAoZXZlbnRBcmdzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRyb3BEb3duQ2xvc2VkLmVtaXQoZXZlbnRBcmdzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2ltQ3RybC5hZGRFdmVudExpc3RlbmVyKEdDLklucHV0TWFuLkdjQ29tYm9Cb3hFdmVudC5Ecm9wRG93bk9wZW5lZCwgKGV2ZW50QXJncykgPT4ge1xuICAgICAgICAgICAgdGhpcy5kcm9wRG93bk9wZW5lZC5lbWl0KGV2ZW50QXJncyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9pbUN0cmwuYWRkRXZlbnRMaXN0ZW5lcihHQy5JbnB1dE1hbi5HY0NvbWJvQm94RXZlbnQuVGV4dENoYW5nZWQsIChldmVudEFyZ3MpID0+IHtcbiAgICAgICAgICAgIHRoaXMudGV4dENoYW5nZWQuZW1pdChldmVudEFyZ3MpO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLl9pbUN0cmwudGV4dCk7XG4gICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5faW1DdHJsLmFkZEV2ZW50TGlzdGVuZXIoR0MuSW5wdXRNYW4uR2NDb21ib0JveEV2ZW50LlNwaW5Eb3duLCAoZXZlbnRBcmdzKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNwaW5Eb3duLmVtaXQoZXZlbnRBcmdzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2ltQ3RybC5hZGRFdmVudExpc3RlbmVyKEdDLklucHV0TWFuLkdjQ29tYm9Cb3hFdmVudC5TcGluVXAsIChldmVudEFyZ3MpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc3BpblVwLmVtaXQoZXZlbnRBcmdzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2ltQ3RybC5hZGRFdmVudExpc3RlbmVyKEdDLklucHV0TWFuLkdjQ29tYm9Cb3hFdmVudC5JdGVtc0NoYW5nZWQsIChldmVudEFyZ3MpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXRlbXNDaGFuZ2VkLmVtaXQoZXZlbnRBcmdzKTtcbiAgICAgICAgICAgIHRoaXMuaXRlbXNDaGFuZ2UuZW1pdCh0aGlzLl9pbUN0cmwuZ2V0SXRlbXMoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn0iXX0=