devextreme-angular
Version:
Angular UI and visualization components based on DevExtreme widgets
3,195 lines • 317 kB
JavaScript
/*!
* devextreme-angular
* Version: 25.2.3
* Build date: Fri Dec 12 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file in the root of the project for details.
*
* https://github.com/DevExpress/devextreme-angular
*/
/* tslint:disable:max-line-length */
import { TransferState, Component, NgModule, ElementRef, NgZone, PLATFORM_ID, Inject, Input, Output, EventEmitter, ContentChildren, QueryList } from '@angular/core';
import { AIIntegration } from 'devextreme/common/ai-integration';
import DxTreeList from 'devextreme/ui/tree_list';
import { DxComponent, DxTemplateHost, DxIntegrationModule, DxTemplateModule, NestedOptionHost, IterableDifferHelper, WatcherHelper, } from 'devextreme-angular/core';
import { DxoColumnChooserModule } from 'devextreme-angular/ui/nested';
import { DxoPositionModule } from 'devextreme-angular/ui/nested';
import { DxoAtModule } from 'devextreme-angular/ui/nested';
import { DxoBoundaryOffsetModule } from 'devextreme-angular/ui/nested';
import { DxoCollisionModule } from 'devextreme-angular/ui/nested';
import { DxoMyModule } from 'devextreme-angular/ui/nested';
import { DxoOffsetModule } from 'devextreme-angular/ui/nested';
import { DxoSearchModule } from 'devextreme-angular/ui/nested';
import { DxoSelectionModule } from 'devextreme-angular/ui/nested';
import { DxoColumnFixingModule } from 'devextreme-angular/ui/nested';
import { DxoIconsModule } from 'devextreme-angular/ui/nested';
import { DxoTextsModule } from 'devextreme-angular/ui/nested';
import { DxiColumnModule } from 'devextreme-angular/ui/nested';
import { DxiButtonModule } from 'devextreme-angular/ui/nested';
import { DxoLookupModule } from 'devextreme-angular/ui/nested';
import { DxoFormatModule } from 'devextreme-angular/ui/nested';
import { DxoFormItemModule } from 'devextreme-angular/ui/nested';
import { DxoLabelModule } from 'devextreme-angular/ui/nested';
import { DxiValidationRuleModule } from 'devextreme-angular/ui/nested';
import { DxoHeaderFilterModule } from 'devextreme-angular/ui/nested';
import { DxoEditingModule } from 'devextreme-angular/ui/nested';
import { DxiChangeModule } from 'devextreme-angular/ui/nested';
import { DxoFormModule } from 'devextreme-angular/ui/nested';
import { DxoColCountByScreenModule } from 'devextreme-angular/ui/nested';
import { DxiItemModule } from 'devextreme-angular/ui/nested';
import { DxoTabPanelOptionsModule } from 'devextreme-angular/ui/nested';
import { DxiTabModule } from 'devextreme-angular/ui/nested';
import { DxoButtonOptionsModule } from 'devextreme-angular/ui/nested';
import { DxoPopupModule } from 'devextreme-angular/ui/nested';
import { DxoAnimationModule } from 'devextreme-angular/ui/nested';
import { DxoHideModule } from 'devextreme-angular/ui/nested';
import { DxoFromModule } from 'devextreme-angular/ui/nested';
import { DxoToModule } from 'devextreme-angular/ui/nested';
import { DxoShowModule } from 'devextreme-angular/ui/nested';
import { DxoFilterBuilderModule } from 'devextreme-angular/ui/nested';
import { DxiCustomOperationModule } from 'devextreme-angular/ui/nested';
import { DxiFieldModule } from 'devextreme-angular/ui/nested';
import { DxoFilterOperationDescriptionsModule } from 'devextreme-angular/ui/nested';
import { DxoGroupOperationDescriptionsModule } from 'devextreme-angular/ui/nested';
import { DxoFilterBuilderPopupModule } from 'devextreme-angular/ui/nested';
import { DxoFilterPanelModule } from 'devextreme-angular/ui/nested';
import { DxoFilterRowModule } from 'devextreme-angular/ui/nested';
import { DxoOperationDescriptionsModule } from 'devextreme-angular/ui/nested';
import { DxoKeyboardNavigationModule } from 'devextreme-angular/ui/nested';
import { DxoLoadPanelModule } from 'devextreme-angular/ui/nested';
import { DxoPagerModule } from 'devextreme-angular/ui/nested';
import { DxoPagingModule } from 'devextreme-angular/ui/nested';
import { DxoRemoteOperationsModule } from 'devextreme-angular/ui/nested';
import { DxoRowDraggingModule } from 'devextreme-angular/ui/nested';
import { DxoCursorOffsetModule } from 'devextreme-angular/ui/nested';
import { DxoScrollingModule } from 'devextreme-angular/ui/nested';
import { DxoSearchPanelModule } from 'devextreme-angular/ui/nested';
import { DxoSortingModule } from 'devextreme-angular/ui/nested';
import { DxoStateStoringModule } from 'devextreme-angular/ui/nested';
import { DxoToolbarModule } from 'devextreme-angular/ui/nested';
import { DxoTreeListAIModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListAIOptionsModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListAnimationModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListAsyncRuleModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListAtModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListBoundaryOffsetModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListButtonModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListChangeModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListColCountByScreenModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListCollisionModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListColumnModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListColumnButtonModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListColumnChooserModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListColumnChooserSearchModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListColumnChooserSelectionModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListColumnFixingModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListColumnFixingTextsModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListColumnHeaderFilterModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListColumnHeaderFilterSearchModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListColumnLookupModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListCompareRuleModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListCursorOffsetModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListCustomOperationModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListCustomRuleModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListEditingModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListEditingTextsModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListEditorOptionsModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListEditorOptionsButtonModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListEmailRuleModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListFieldModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListFieldLookupModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListFilterBuilderModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListFilterBuilderPopupModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListFilterOperationDescriptionsModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListFilterPanelModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListFilterPanelTextsModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListFilterRowModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListFormModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListFormatModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListFormItemModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListFromModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListGroupOperationDescriptionsModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListHeaderFilterModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListHideModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListIconsModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListIndicatorOptionsModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListItemModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListKeyboardNavigationModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListLabelModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListLoadPanelModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListLookupModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListMyModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListNumericRuleModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListOffsetModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListOperationDescriptionsModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListOptionsModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListPagerModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListPagingModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListPatternRuleModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListPopupModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListPositionModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListRangeRuleModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListRemoteOperationsModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListRequiredRuleModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListRowDraggingModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListScrollingModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListSearchModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListSearchPanelModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListSelectionModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListShowModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListSortingModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListStateStoringModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListStringLengthRuleModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListTextsModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListToModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListToolbarModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListToolbarItemModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListTreeListHeaderFilterModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListTreeListHeaderFilterSearchModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListTreeListHeaderFilterTextsModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxoTreeListTreeListSelectionModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListValidationRuleModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListButtonItemModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListEmptyItemModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListGroupItemModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListSimpleItemModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListTabbedItemModule } from 'devextreme-angular/ui/tree-list/nested';
import { DxiTreeListTabModule } from 'devextreme-angular/ui/tree-list/nested';
import { PROPERTY_TOKEN_validationRules, PROPERTY_TOKEN_buttons, PROPERTY_TOKEN_changes, PROPERTY_TOKEN_columns, PROPERTY_TOKEN_customOperations, PROPERTY_TOKEN_fields, PROPERTY_TOKEN_items, PROPERTY_TOKEN_toolbarItems, PROPERTY_TOKEN_tabs, } from 'devextreme-angular/core/tokens';
import * as i0 from "@angular/core";
import * as i1 from "devextreme-angular/core";
/**
* The TreeList is a UI component that represents data from a local or remote source in the form of a multi-column tree view. This UI component offers such features as sorting, filtering, editing, selection, etc.
*/
export class DxTreeListComponent extends DxComponent {
_watcherHelper;
_idh;
set _validationRulesContentChildren(value) {
this.setChildren('validationRules', value);
}
set _buttonsContentChildren(value) {
this.setChildren('buttons', value);
}
set _changesContentChildren(value) {
this.setChildren('changes', value);
}
set _columnsContentChildren(value) {
this.setChildren('columns', value);
}
set _customOperationsContentChildren(value) {
this.setChildren('customOperations', value);
}
set _fieldsContentChildren(value) {
this.setChildren('fields', value);
}
set _itemsContentChildren(value) {
this.setChildren('items', value);
}
set _toolbarItemsContentChildren(value) {
this.setChildren('toolbarItems', value);
}
set _tabsContentChildren(value) {
this.setChildren('tabs', value);
}
instance = null;
/**
* Specifies the shortcut key that sets focus on the UI component.
*/
get accessKey() {
return this._getOption('accessKey');
}
set accessKey(value) {
this._setOption('accessKey', value);
}
/**
* Specifies whether the UI component changes its visual state as a result of user interaction.
*/
get activeStateEnabled() {
return this._getOption('activeStateEnabled');
}
set activeStateEnabled(value) {
this._setOption('activeStateEnabled', value);
}
/**
* Binds the widget to an AI service.
*/
get aiIntegration() {
return this._getOption('aiIntegration');
}
set aiIntegration(value) {
this._setOption('aiIntegration', value);
}
/**
* Specifies whether a user can reorder columns.
*/
get allowColumnReordering() {
return this._getOption('allowColumnReordering');
}
set allowColumnReordering(value) {
this._setOption('allowColumnReordering', value);
}
/**
* Specifies whether a user can resize columns.
*/
get allowColumnResizing() {
return this._getOption('allowColumnResizing');
}
set allowColumnResizing(value) {
this._setOption('allowColumnResizing', value);
}
/**
* Specifies whether all rows are expanded.
*/
get autoExpandAll() {
return this._getOption('autoExpandAll');
}
set autoExpandAll(value) {
this._setOption('autoExpandAll', value);
}
/**
* Automatically scrolls the component to the focused row when the focusedRowKey is changed.
*/
get autoNavigateToFocusedRow() {
return this._getOption('autoNavigateToFocusedRow');
}
set autoNavigateToFocusedRow(value) {
this._setOption('autoNavigateToFocusedRow', value);
}
/**
* Specifies whether data should be cached.
*/
get cacheEnabled() {
return this._getOption('cacheEnabled');
}
set cacheEnabled(value) {
this._setOption('cacheEnabled', value);
}
/**
* Enables a hint that appears when a user hovers the mouse pointer over a cell with truncated content.
*/
get cellHintEnabled() {
return this._getOption('cellHintEnabled');
}
set cellHintEnabled(value) {
this._setOption('cellHintEnabled', value);
}
/**
* Specifies if the component adjusts column widths to fit content.
*/
get columnAutoWidth() {
return this._getOption('columnAutoWidth');
}
set columnAutoWidth(value) {
this._setOption('columnAutoWidth', value);
}
/**
* Configures the column chooser.
*/
get columnChooser() {
return this._getOption('columnChooser');
}
set columnChooser(value) {
this._setOption('columnChooser', value);
}
/**
* Configures column fixing.
*/
get columnFixing() {
return this._getOption('columnFixing');
}
set columnFixing(value) {
this._setOption('columnFixing', value);
}
/**
* Specifies whether the UI component hides columns to adapt to the screen or container size. Ignored if allowColumnResizing is `true` and columnResizingMode is 'widget'.
*/
get columnHidingEnabled() {
return this._getOption('columnHidingEnabled');
}
set columnHidingEnabled(value) {
this._setOption('columnHidingEnabled', value);
}
/**
* Specifies the minimum width of columns.
*/
get columnMinWidth() {
return this._getOption('columnMinWidth');
}
set columnMinWidth(value) {
this._setOption('columnMinWidth', value);
}
/**
* Specifies how the UI component resizes columns. Applies only if allowColumnResizing is true.
*/
get columnResizingMode() {
return this._getOption('columnResizingMode');
}
set columnResizingMode(value) {
this._setOption('columnResizingMode', value);
}
/**
* Configures columns.
*/
get columns() {
return this._getOption('columns');
}
set columns(value) {
this._setOption('columns', value);
}
/**
* Specifies the width for all data columns. Has a lower priority than the column.width property.
*/
get columnWidth() {
return this._getOption('columnWidth');
}
set columnWidth(value) {
this._setOption('columnWidth', value);
}
/**
* Customizes columns after they are created.
*/
get customizeColumns() {
return this._getOption('customizeColumns');
}
set customizeColumns(value) {
this._setOption('customizeColumns', value);
}
/**
* Binds the UI component to data.
*/
get dataSource() {
return this._getOption('dataSource');
}
set dataSource(value) {
this._setOption('dataSource', value);
}
/**
* Notifies the UI component of the used data structure.
*/
get dataStructure() {
return this._getOption('dataStructure');
}
set dataStructure(value) {
this._setOption('dataStructure', value);
}
/**
* Specifies the format in which date-time values should be sent to the server.
*/
get dateSerializationFormat() {
return this._getOption('dateSerializationFormat');
}
set dateSerializationFormat(value) {
this._setOption('dateSerializationFormat', value);
}
/**
* Specifies whether the UI component responds to user interaction.
*/
get disabled() {
return this._getOption('disabled');
}
set disabled(value) {
this._setOption('disabled', value);
}
/**
* Configures editing.
*/
get editing() {
return this._getOption('editing');
}
set editing(value) {
this._setOption('editing', value);
}
/**
* Specifies the global attributes to be attached to the UI component's container element.
*/
get elementAttr() {
return this._getOption('elementAttr');
}
set elementAttr(value) {
this._setOption('elementAttr', value);
}
/**
* Indicates whether to show the error row.
*/
get errorRowEnabled() {
return this._getOption('errorRowEnabled');
}
set errorRowEnabled(value) {
this._setOption('errorRowEnabled', value);
}
/**
* Specifies expanded rows with keys.
*/
get expandedRowKeys() {
return this._getOption('expandedRowKeys');
}
set expandedRowKeys(value) {
this._setOption('expandedRowKeys', value);
}
/**
* Specifies whether nodes appear expanded or collapsed after filtering is applied.
*/
get expandNodesOnFiltering() {
return this._getOption('expandNodesOnFiltering');
}
set expandNodesOnFiltering(value) {
this._setOption('expandNodesOnFiltering', value);
}
/**
* Configures the integrated filter builder.
*/
get filterBuilder() {
return this._getOption('filterBuilder');
}
set filterBuilder(value) {
this._setOption('filterBuilder', value);
}
/**
* Configures the popup in which the integrated filter builder is shown.
*/
get filterBuilderPopup() {
return this._getOption('filterBuilderPopup');
}
set filterBuilderPopup(value) {
this._setOption('filterBuilderPopup', value);
}
/**
* Specifies whether filter and search results should include matching rows only, matching rows with ancestors, or matching rows with ancestors and descendants (full branch).
*/
get filterMode() {
return this._getOption('filterMode');
}
set filterMode(value) {
this._setOption('filterMode', value);
}
/**
* Configures the filter panel.
*/
get filterPanel() {
return this._getOption('filterPanel');
}
set filterPanel(value) {
this._setOption('filterPanel', value);
}
/**
* Configures the filter row.
*/
get filterRow() {
return this._getOption('filterRow');
}
set filterRow(value) {
this._setOption('filterRow', value);
}
/**
* Specifies whether to synchronize the filter row, header filter, and filter builder. The synchronized filter expression is stored in the filterValue property.
*/
get filterSyncEnabled() {
return this._getOption('filterSyncEnabled');
}
set filterSyncEnabled(value) {
this._setOption('filterSyncEnabled', value);
}
/**
* Specifies a filter expression.
*/
get filterValue() {
return this._getOption('filterValue');
}
set filterValue(value) {
this._setOption('filterValue', value);
}
/**
* The index of the column that contains the focused data cell. This index is taken from the columns array.
*/
get focusedColumnIndex() {
return this._getOption('focusedColumnIndex');
}
set focusedColumnIndex(value) {
this._setOption('focusedColumnIndex', value);
}
/**
* Specifies whether the focused row feature is enabled.
*/
get focusedRowEnabled() {
return this._getOption('focusedRowEnabled');
}
set focusedRowEnabled(value) {
this._setOption('focusedRowEnabled', value);
}
/**
* Specifies or indicates the focused data row's index.
*/
get focusedRowIndex() {
return this._getOption('focusedRowIndex');
}
set focusedRowIndex(value) {
this._setOption('focusedRowIndex', value);
}
/**
* Specifies initially or currently focused grid row's key.
*/
get focusedRowKey() {
return this._getOption('focusedRowKey');
}
set focusedRowKey(value) {
this._setOption('focusedRowKey', value);
}
/**
* Specifies which data field defines whether the node has children.
*/
get hasItemsExpr() {
return this._getOption('hasItemsExpr');
}
set hasItemsExpr(value) {
this._setOption('hasItemsExpr', value);
}
/**
* Configures the header filter feature.
*/
get headerFilter() {
return this._getOption('headerFilter');
}
set headerFilter(value) {
this._setOption('headerFilter', value);
}
/**
* Specifies the UI component's height.
*/
get height() {
return this._getOption('height');
}
set height(value) {
this._setOption('height', value);
}
/**
* Specifies whether to highlight rows and cells with edited data. repaintChangesOnly should be true.
*/
get highlightChanges() {
return this._getOption('highlightChanges');
}
set highlightChanges(value) {
this._setOption('highlightChanges', value);
}
/**
* Specifies text for a hint that appears when a user pauses on the UI component.
*/
get hint() {
return this._getOption('hint');
}
set hint(value) {
this._setOption('hint', value);
}
/**
* Specifies whether the UI component changes its state when a user pauses on it.
*/
get hoverStateEnabled() {
return this._getOption('hoverStateEnabled');
}
set hoverStateEnabled(value) {
this._setOption('hoverStateEnabled', value);
}
/**
* Specifies which data field contains nested items. Set this property when your data has a hierarchical structure.
*/
get itemsExpr() {
return this._getOption('itemsExpr');
}
set itemsExpr(value) {
this._setOption('itemsExpr', value);
}
/**
* Configures keyboard navigation.
*/
get keyboardNavigation() {
return this._getOption('keyboardNavigation');
}
set keyboardNavigation(value) {
this._setOption('keyboardNavigation', value);
}
/**
* Specifies the key property (or properties) that provide(s) key values to access data items. Each key value must be unique.
*/
get keyExpr() {
return this._getOption('keyExpr');
}
set keyExpr(value) {
this._setOption('keyExpr', value);
}
/**
* Configures the load panel.
*/
get loadPanel() {
return this._getOption('loadPanel');
}
set loadPanel(value) {
this._setOption('loadPanel', value);
}
/**
* Specifies a text string shown when the widget does not display any data.
*/
get noDataText() {
return this._getOption('noDataText');
}
set noDataText(value) {
this._setOption('noDataText', value);
}
/**
* Configures the pager.
*/
get pager() {
return this._getOption('pager');
}
set pager(value) {
this._setOption('pager', value);
}
/**
* Configures paging.
*/
get paging() {
return this._getOption('paging');
}
set paging(value) {
this._setOption('paging', value);
}
/**
* Specifies which data field provides parent keys.
*/
get parentIdExpr() {
return this._getOption('parentIdExpr');
}
set parentIdExpr(value) {
this._setOption('parentIdExpr', value);
}
/**
* Notifies the TreeList of the server's data processing operations. Applies only if data has a plain structure.
*/
get remoteOperations() {
return this._getOption('remoteOperations');
}
set remoteOperations(value) {
this._setOption('remoteOperations', value);
}
/**
* Specifies whether to render the filter row, command columns, and columns with showEditorAlways set to true after other elements.
*/
get renderAsync() {
return this._getOption('renderAsync');
}
set renderAsync(value) {
this._setOption('renderAsync', value);
}
/**
* Specifies whether to repaint only those cells whose data changed.
*/
get repaintChangesOnly() {
return this._getOption('repaintChangesOnly');
}
set repaintChangesOnly(value) {
this._setOption('repaintChangesOnly', value);
}
/**
* Specifies the root key. Applies if dataStructure is 'plain'.
*/
get rootValue() {
return this._getOption('rootValue');
}
set rootValue(value) {
this._setOption('rootValue', value);
}
/**
* Specifies whether rows should be shaded differently.
*/
get rowAlternationEnabled() {
return this._getOption('rowAlternationEnabled');
}
set rowAlternationEnabled(value) {
this._setOption('rowAlternationEnabled', value);
}
/**
* Configures row reordering using drag and drop gestures.
*/
get rowDragging() {
return this._getOption('rowDragging');
}
set rowDragging(value) {
this._setOption('rowDragging', value);
}
/**
* Switches the UI component to a right-to-left representation.
*/
get rtlEnabled() {
return this._getOption('rtlEnabled');
}
set rtlEnabled(value) {
this._setOption('rtlEnabled', value);
}
/**
* Configures scrolling.
*/
get scrolling() {
return this._getOption('scrolling');
}
set scrolling(value) {
this._setOption('scrolling', value);
}
/**
* Configures the search panel.
*/
get searchPanel() {
return this._getOption('searchPanel');
}
set searchPanel(value) {
this._setOption('searchPanel', value);
}
/**
* Allows you to select rows or determine which rows are selected.
*/
get selectedRowKeys() {
return this._getOption('selectedRowKeys');
}
set selectedRowKeys(value) {
this._setOption('selectedRowKeys', value);
}
/**
* Configures runtime selection.
*/
get selection() {
return this._getOption('selection');
}
set selection(value) {
this._setOption('selection', value);
}
/**
* Specifies whether the outer borders of the UI component are visible.
*/
get showBorders() {
return this._getOption('showBorders');
}
set showBorders(value) {
this._setOption('showBorders', value);
}
/**
* Specifies whether column headers are visible.
*/
get showColumnHeaders() {
return this._getOption('showColumnHeaders');
}
set showColumnHeaders(value) {
this._setOption('showColumnHeaders', value);
}
/**
* Specifies whether vertical lines that separate one column from another are visible.
*/
get showColumnLines() {
return this._getOption('showColumnLines');
}
set showColumnLines(value) {
this._setOption('showColumnLines', value);
}
/**
* Specifies whether horizontal lines that separate one row from another are visible.
*/
get showRowLines() {
return this._getOption('showRowLines');
}
set showRowLines(value) {
this._setOption('showRowLines', value);
}
/**
* Configures runtime sorting.
*/
get sorting() {
return this._getOption('sorting');
}
set sorting(value) {
this._setOption('sorting', value);
}
/**
* Configures state storing.
*/
get stateStoring() {
return this._getOption('stateStoring');
}
set stateStoring(value) {
this._setOption('stateStoring', value);
}
/**
* Specifies whether to show only relevant values in the header filter and filter row.
*/
get syncLookupFilterValues() {
return this._getOption('syncLookupFilterValues');
}
set syncLookupFilterValues(value) {
this._setOption('syncLookupFilterValues', value);
}
/**
* Specifies the number of the element when the Tab key is used for navigating.
*/
get tabIndex() {
return this._getOption('tabIndex');
}
set tabIndex(value) {
this._setOption('tabIndex', value);
}
/**
* Configures the toolbar.
*/
get toolbar() {
return this._getOption('toolbar');
}
set toolbar(value) {
this._setOption('toolbar', value);
}
/**
* Specifies whether to enable two-way data binding.
*/
get twoWayBindingEnabled() {
return this._getOption('twoWayBindingEnabled');
}
set twoWayBindingEnabled(value) {
this._setOption('twoWayBindingEnabled', value);
}
/**
* Specifies whether the UI component is visible.
*/
get visible() {
return this._getOption('visible');
}
set visible(value) {
this._setOption('visible', value);
}
/**
* Specifies the UI component's width.
*/
get width() {
return this._getOption('width');
}
set width(value) {
this._setOption('width', value);
}
/**
* Specifies whether text that does not fit into a column should be wrapped.
*/
get wordWrapEnabled() {
return this._getOption('wordWrapEnabled');
}
set wordWrapEnabled(value) {
this._setOption('wordWrapEnabled', value);
}
/**
* A function that is executed before an adaptive detail row is rendered.
*/
onAdaptiveDetailRowPreparing;
/**
* A function that is executed before an AI column request is created.
*/
onAIColumnRequestCreating;
/**
* A function that is executed when a cell is clicked or tapped. Executed before onRowClick.
*/
onCellClick;
/**
* A function that is executed when a cell is double-clicked or double-tapped. Executed before onRowDblClick.
*/
onCellDblClick;
/**
* A function that is executed after the pointer enters or leaves a cell.
*/
onCellHoverChanged;
/**
* A function that is executed after a grid cell is created.
*/
onCellPrepared;
/**
* A function that is executed when the UI component is rendered and each time the component is repainted.
*/
onContentReady;
/**
* A function that is executed before the context menu is rendered.
*/
onContextMenuPreparing;
/**
* A function that is executed when an error occurs in the data source.
*/
onDataErrorOccurred;
/**
* A function that is executed before the UI component is disposed of.
*/
onDisposing;
/**
* A function that is executed after row changes are discarded.
*/
onEditCanceled;
/**
* A function that is executed when the edit operation is canceled, but row changes are not yet discarded.
*/
onEditCanceling;
/**
* A function that is executed before a cell or row switches to the editing state.
*/
onEditingStart;
/**
* A function that is executed after an editor is created. Not executed for cells with an editCellTemplate.
*/
onEditorPrepared;
/**
* A function used to customize cell editors. Not executed for cells with an editCellTemplate.
*/
onEditorPreparing;
/**
* A function that is executed after the focused cell changes. Applies only to cells in data rows.
*/
onFocusedCellChanged;
/**
* A function that is executed before the focused cell changes. Applies only to cells in data rows.
*/
onFocusedCellChanging;
/**
* A function that executed when the focused row changes. Applies only to data rows. focusedRowEnabled should be true.
*/
onFocusedRowChanged;
/**
* A function that is executed before the focused row changes. Applies only to data rows. focusedRowEnabled should be true.
*/
onFocusedRowChanging;
/**
* A function used in JavaScript frameworks to save the UI component instance.
*/
onInitialized;
/**
* A function that is executed before a new row is added to the UI component.
*/
onInitNewRow;
/**
* A function that is executed when the UI component is in focus and a key has been pressed down.
*/
onKeyDown;
/**
* A function that is executed after the loaded nodes are initialized.
*/
onNodesInitialized;
/**
* A function that is executed after a UI component property is changed.
*/
onOptionChanged;
/**
* A function that is executed when a grid row is clicked or tapped.
*/
onRowClick;
/**
* A function that is executed after a row is collapsed.
*/
onRowCollapsed;
/**
* A function that is executed before a row is collapsed.
*/
onRowCollapsing;
/**
* A function that is executed when a row is double-clicked or double-tapped. Executed after onCellDblClick.
*/
onRowDblClick;
/**
* A function that is executed after a row is expanded.
*/
onRowExpanded;
/**
* A function that is executed before a row is expanded.
*/
onRowExpanding;
/**
* A function that is executed after a new row has been inserted into the data source.
*/
onRowInserted;
/**
* A function that is executed before a new row is inserted into the data source.
*/
onRowInserting;
/**
* A function that is executed after a row is created.
*/
onRowPrepared;
/**
* A function that is executed after a row has been removed from the data source.
*/
onRowRemoved;
/**
* A function that is executed before a row is removed from the data source.
*/
onRowRemoving;
/**
* A function that is executed after a row has been updated in the data source.
*/
onRowUpdated;
/**
* A function that is executed before a row is updated in the data source.
*/
onRowUpdating;
/**
* A function that is executed after cells in a row are validated against validation rules.
*/
onRowValidating;
/**
* A function that is executed after row changes are saved.
*/
onSaved;
/**
* A function that is executed before pending row changes are saved.
*/
onSaving;
/**
* A function that is executed after selecting a row or clearing its selection.
*/
onSelectionChanged;
/**
* A function that is executed before the toolbar is created.
*/
onToolbarPreparing;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
accessKeyChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
activeStateEnabledChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
aiIntegrationChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
allowColumnReorderingChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
allowColumnResizingChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
autoExpandAllChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
autoNavigateToFocusedRowChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
cacheEnabledChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
cellHintEnabledChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
columnAutoWidthChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
columnChooserChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
columnFixingChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
columnHidingEnabledChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
columnMinWidthChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
columnResizingModeChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
columnsChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
columnWidthChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
customizeColumnsChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
dataSourceChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
dataStructureChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
dateSerializationFormatChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
disabledChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
editingChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
elementAttrChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
errorRowEnabledChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
expandedRowKeysChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
expandNodesOnFilteringChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
filterBuilderChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
filterBuilderPopupChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
filterModeChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
filterPanelChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
filterRowChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
filterSyncEnabledChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
filterValueChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
focusedColumnIndexChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
focusedRowEnabledChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
focusedRowIndexChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
focusedRowKeyChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
hasItemsExprChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
headerFilterChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
heightChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
highlightChangesChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
hintChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
hoverStateEnabledChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
itemsExprChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
keyboardNavigationChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
keyExprChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
loadPanelChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
noDataTextChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
pagerChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
pagingChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
parentIdExprChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
remoteOperationsChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
renderAsyncChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
repaintChangesOnlyChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
rootValueChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
rowAlternationEnabledChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
rowDraggingChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
rtlEnabledChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
scrollingChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
searchPanelChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
selectedRowKeysChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
selectionChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
showBordersChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
showColumnHeadersChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
showColumnLinesChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
showRowLinesChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
sortingChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
stateStoringChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
syncLookupFilterValuesChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
tabIndexChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
toolbarChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
twoWayBindingEnabledChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
visibleChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
widthChange;
/**
* This member supports the internal infrastructure and is not intended to be used directly from your code.
*/
wordWrapEnabledChange;
constructor(elementRef, ngZone, templateHost, _watcherHelper, _idh, optionHost, transferState, platformId) {
super(elementRef, ngZone, templateHost, _watcherHelper, transferState, platformId);
this._watcherHelper = _watcherHelper;
this._idh = _idh;
this._createEventEmitters([
{ subscribe: 'adaptiveDetailRowPreparing', emit: 'onAdaptiveDetailRowPreparing' },
{ subscribe: 'aIColumnRequestCreating', emit: 'onAIColumnRequestCreating' },
{ subscribe: 'cellClick', emit: 'onCellClick' },
{ subscribe: 'cellDblClick', emit: 'onCellDblClick' },
{ subscribe: 'cellHoverChanged', emit: 'onCellHoverChanged' },
{ subscribe: 'cellPrepared', emit: 'onCellPrepared' },
{ subscribe: 'contentReady', emit: 'onContentReady' },
{ subscribe: 'contextMenuPreparing', emit: 'onContextMenuPreparing' },
{ subscribe: 'dataErrorOccurred', emit: 'onDataErrorOccurred' },
{ subscribe: 'disposing', emit: 'onDisposing' },
{ subscribe: 'editCanceled', emit: 'onEditCanceled' },
{ subscribe: 'editCanceling', emit: 'onEditCanceling' },
{ subscribe: 'editingStart', emit: 'onEditingStart' },
{ subscribe: 'editorPrepared', emit: 'onEditorPrepared' },
{ subscribe: 'editorPreparing', emit: 'onEditorPreparing' },
{ subscribe: 'focusedCellChanged', emit: 'onFocusedCellChanged' },
{ subscribe: 'focusedCellChanging', emit: 'onFocusedCellChanging' },
{ subscribe: 'focusedRowChanged', emit: 'onFocusedRowChanged' },
{ subscribe: 'focusedRowChanging', emit: 'onFocusedRowChanging' },
{ subscribe: 'initialized', emit: 'onInitialized' },
{ subscribe: 'initNewRow', emit: 'onInitNewRow' },
{ subscribe: 'keyDown', emit: 'onKeyDown' },
{ subscribe: 'nodesInitialized', emit: 'onNodesInitialized' },
{ subscribe: 'optionChanged', emit: 'onOptionChanged' },
{ subscribe: 'rowClick', emit: 'onRowClick' },
{ subscribe: 'rowCollapsed', emit: 'onRowCollapsed' },
{ subscribe: 'rowCollapsing', emit: 'onRowCollapsing' },
{ subscribe: 'rowDblClick', emit: 'onRowDblClick' },
{ subscribe: 'rowExpanded', emit: 'onRowExpanded' },
{ subscribe: 'rowExpanding', emit: 'onRowExpanding' },
{ subscribe: 'rowInserted', emit: 'onRowInserted' },
{ subscribe: 'rowInserting', emit: 'onRowInserting' },
{ subscribe: 'rowPrepared', emit: 'onRowPrepared' },
{ subscribe: 'rowRemoved', emit: 'onRowRemoved' },
{ subscribe: 'rowRemoving', emit: 'onRowRemoving' },
{ subscribe: 'rowUpdated', emit: 'onRowUpdated' },
{ subscribe: 'rowUpdating', emit: 'onRowUpdating' },
{ subscribe: 'rowValidating', emit: 'onRowValidating' },
{ subscribe: 'saved', emit: 'onSaved' },
{ subscribe: 'saving', emit: 'onSaving' },
{ subscribe: 'selectionChanged', emit: 'onSelectionChanged' },
{ subscribe: 'toolbarPreparing', emit: 'onToolbarPreparing' },
{ emit: 'accessKeyChange' },
{ emit: 'activeStateEnabledChange' },
{ emit: 'aiIntegrationChange' },
{ emit: 'allowColumnReorderingChange' },
{ emit: 'allowColumnResizingChange' },
{ emit: 'autoExpandAllChange' },
{ emit: 'autoNavigateToFocusedRowChange' },
{ emit: 'cacheEnabledChange' },
{ emit: 'cellHintEnabledChange' },
{ emit: 'columnAutoWidthChange' },
{ emit: 'columnChooserChange' },
{ emit: 'columnFixingChange' },
{ emit: 'columnHidingEnabledChange' },
{ emit: 'columnMinWidthChange' },
{ emit: 'columnResizingModeChange' },
{ emit: 'columnsChange' },
{ emit: 'columnWidthChange' },
{ emit: 'customizeColumnsChange' },
{ emit: 'dataSourceChange' },
{ emit: 'dataStructureChange' },
{ emit: 'dateSerializationFormatChange' },
{ emit: 'disabledChange' },
{ emit: 'editingChange' },
{ emit: 'elementAttrChange' },
{ emit: 'errorRowEnabledChange' },
{ emit: 'expandedRowKeysChange' },
{ emit: 'expandNodesOnFilteringChange' },
{ emit: 'filterBuilderChange' },
{ emit: 'filterBuilderPopupChange' },
{ emit: 'filterModeChange' },
{ emit: 'filterPanelChange' },
{ emit: 'filterRowChange' },
{ emit: 'filterSyncEnabledChange' },
{ emit: 'filterValueChange' },
{ emit: 'focusedColumnIndexChange' },
{ emit: 'focusedRowEnabledChange' },
{ emit: 'focusedRowIndexChange' },
{ emit: 'focusedRowKeyChange' },
{ emit: 'hasItemsExprChange' },
{ emit: 'headerFilterChange' },
{ emit: 'heightChange' },
{ emit: 'highlightChangesChange' },
{ emit: 'hintChange' },
{ emit: 'hoverStateEnabledChange' },
{ emit: 'itemsExprChange' },
{ emit: 'keyboardNavigationChange' },
{ emit: 'keyExprChange' },
{ emit: 'loadPanelChange' },
{ emit: 'noDataTextChange' },
{ emit: 'pagerChange' },
{ emit: 'pagingChange' },
{ emit: 'parentIdExprChange' },
{ emit: 'remoteOperationsChange' },
{ emit: 'renderAsyncChange' },
{ emit: 'repaintChangesOnlyChange' },
{ emit: 'rootValueChange' },
{ emit: 'rowAlternationEnabledChange' },
{ emit: 'rowDraggingChange' },
{ emit: 'rtlEnabledChange' },
{ emit: 'scrollingChange' },
{ emit: 'searchPanelChange' },
{ emit: 'selectedRowKeysChange' },
{ emit: 'selectionChange' },
{ emit: 'showBordersChange' },
{ emit: 'showColumnHeadersChange' },
{ emit: 'showColumnLinesChange' },
{ emit: 'showRowLinesChange' },
{ emit: 'sortingChange' },
{ emit: 'stateStoringChange' },
{ emit: 'syncLookupFilterValuesChange' },
{ emit: 'tabIndexChange' },
{ emit: 'toolbarChange' },
{ emit: 'twoWayBindingEnabledChange' },
{ emit: 'visibleChange' },
{ emit: 'widthChange' },
{ emit: 'wordWrapEnabledChange' }
]);
this._idh.setHost(this);
optionHost.setHost(this);
}
_createInstance(element, options) {
return new DxTreeList(element, options);
}
ngOnDestroy() {
this._destroyWidget();
}
ngOnChanges(changes) {
super.ngOnChanges(changes);
this.setupChanges('columns', changes);
this.setupChanges('dataSource', changes);
this.setupChanges('expandedRowKeys', changes);
this.setupChanges('filterValue', changes);
this.setupChanges('selectedRowKeys', changes);
}
setupChanges(prop, changes) {
if (!(prop in this._optionsToUpdate)) {
this._idh.setup(prop, changes);
}
}
ngDoCheck() {
this._idh.doCheck('columns');
this._idh.doCheck('dataSource');
this._idh.doCheck('expandedRowKeys');
this._idh.doCheck('filterValue');
this._idh.doCheck('selectedRowKeys');
this._watcherHelper.checkWatchers();
super.ngDoCheck();
super.clearChangedOptions();
}
_setOption(name, value) {
let isSetup = this._idh.setupSingle(name, value);
let isChanged = this._idh.getChanges(name, value) !== null;
if (isSetup || isChanged) {
super._setOption(name, value);
}
}
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxTreeListComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.DxTemplateHost }, { token: i1.WatcherHelper }, { token: i1.IterableDifferHelper }, { token: i1.NestedOptionHost }, { token: i0.TransferState }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component });
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DxTreeListComponent, isStandalone: true, selector: "dx-tree-list", inputs: { accessKey: "accessKey", activeStateEnabled: "activeStateEnabled", aiIntegration: "aiIntegration", allowColumnReordering: "allowColumnReordering", allowColumnResizing: "allowColumnResizing", autoExpandAll: "autoExpandAll", autoNavigateToFocusedRow: "autoNavigateToFocusedRow", cacheEnabled: "cacheEnabled", cellHintEnabled: "cellHintEnabled", columnAutoWidth: "columnAutoWidth", columnChooser: "columnChooser", columnFixing: "columnFixing", columnHidingEnabled: "columnHidingEnabled", columnMinWidth: "columnMinWidth", columnResizingMode: "columnResizingMode", columns: "columns", columnWidth: "columnWidth", customizeColumns: "customizeColumns", dataSource: "dataSource", dataStructure: "dataStructure", dateSerializationFormat: "dateSerializationFormat", disabled: "disabled", editing: "editing", elementAttr: "elementAttr", errorRowEnabled: "errorRowEnabled", expandedRowKeys: "expandedRowKeys", expandNodesOnFiltering: "expandNodesOnFiltering", filterBuilder: "filterBuilder", filterBuilderPopup: "filterBuilderPopup", filterMode: "filterMode", filterPanel: "filterPanel", filterRow: "filterRow", filterSyncEnabled: "filterSyncEnabled", filterValue: "filterValue", focusedColumnIndex: "focusedColumnIndex", focusedRowEnabled: "focusedRowEnabled", focusedRowIndex: "focusedRowIndex", focusedRowKey: "focusedRowKey", hasItemsExpr: "hasItemsExpr", headerFilter: "headerFilter", height: "height", highlightChanges: "highlightChanges", hint: "hint", hoverStateEnabled: "hoverStateEnabled", itemsExpr: "itemsExpr", keyboardNavigation: "keyboardNavigation", keyExpr: "keyExpr", loadPanel: "loadPanel", noDataText: "noDataText", pager: "pager", paging: "paging", parentIdExpr: "parentIdExpr", remoteOperations: "remoteOperations", renderAsync: "renderAsync", repaintChangesOnly: "repaintChangesOnly", rootValue: "rootValue", rowAlternationEnabled: "rowAlternationEnabled", rowDragging: "rowDragging", rtlEnabled: "rtlEnabled", scrolling: "scrolling", searchPanel: "searchPanel", selectedRowKeys: "selectedRowKeys", selection: "selection", showBorders: "showBorders", showColumnHeaders: "showColumnHeaders", showColumnLines: "showColumnLines", showRowLines: "showRowLines", sorting: "sorting", stateStoring: "stateStoring", syncLookupFilterValues: "syncLookupFilterValues", tabIndex: "tabIndex", toolbar: "toolbar", twoWayBindingEnabled: "twoWayBindingEnabled", visible: "visible", width: "width", wordWrapEnabled: "wordWrapEnabled" }, outputs: { onAdaptiveDetailRowPreparing: "onAdaptiveDetailRowPreparing", onAIColumnRequestCreating: "onAIColumnRequestCreating", onCellClick: "onCellClick", onCellDblClick: "onCellDblClick", onCellHoverChanged: "onCellHoverChanged", onCellPrepared: "onCellPrepared", onContentReady: "onContentReady", onContextMenuPreparing: "onContextMenuPreparing", onDataErrorOccurred: "onDataErrorOccurred", onDisposing: "onDisposing", onEditCanceled: "onEditCanceled", onEditCanceling: "onEditCanceling", onEditingStart: "onEditingStart", onEditorPrepared: "onEditorPrepared", onEditorPreparing: "onEditorPreparing", onFocusedCellChanged: "onFocusedCellChanged", onFocusedCellChanging: "onFocusedCellChanging", onFocusedRowChanged: "onFocusedRowChanged", onFocusedRowChanging: "onFocusedRowChanging", onInitialized: "onInitialized", onInitNewRow: "onInitNewRow", onKeyDown: "onKeyDown", onNodesInitialized: "onNodesInitialized", onOptionChanged: "onOptionChanged", onRowClick: "onRowClick", onRowCollapsed: "onRowCollapsed", onRowCollapsing: "onRowCollapsing", onRowDblClick: "onRowDblClick", onRowExpanded: "onRowExpanded", onRowExpanding: "onRowExpanding", onRowInserted: "onRowInserted", onRowInserting: "onRowInserting", onRowPrepared: "onRowPrepared", onRowRemoved: "onRowRemoved", onRowRemoving: "onRowRemoving", onRowUpdated: "onRowUpdated", onRowUpdating: "onRowUpdating", onRowValidating: "onRowValidating", onSaved: "onSaved", onSaving: "onSaving", onSelectionChanged: "onSelectionChanged", onToolbarPreparing: "onToolbarPreparing", accessKeyChange: "accessKeyChange", activeStateEnabledChange: "activeStateEnabledChange", aiIntegrationChange: "aiIntegrationChange", allowColumnReorderingChange: "allowColumnReorderingChange", allowColumnResizingChange: "allowColumnResizingChange", autoExpandAllChange: "autoExpandAllChange", autoNavigateToFocusedRowChange: "autoNavigateToFocusedRowChange", cacheEnabledChange: "cacheEnabledChange", cellHintEnabledChange: "cellHintEnabledChange", columnAutoWidthChange: "columnAutoWidthChange", columnChooserChange: "columnChooserChange", columnFixingChange: "columnFixingChange", columnHidingEnabledChange: "columnHidingEnabledChange", columnMinWidthChange: "columnMinWidthChange", columnResizingModeChange: "columnResizingModeChange", columnsChange: "columnsChange", columnWidthChange: "columnWidthChange", customizeColumnsChange: "customizeColumnsChange", dataSourceChange: "dataSourceChange", dataStructureChange: "dataStructureChange", dateSerializationFormatChange: "dateSerializationFormatChange", disabledChange: "disabledChange", editingChange: "editingChange", elementAttrChange: "elementAttrChange", errorRowEnabledChange: "errorRowEnabledChange", expandedRowKeysChange: "expandedRowKeysChange", expandNodesOnFilteringChange: "expandNodesOnFilteringChange", filterBuilderChange: "filterBuilderChange", filterBuilderPopupChange: "filterBuilderPopupChange", filterModeChange: "filterModeChange", filterPanelChange: "filterPanelChange", filterRowChange: "filterRowChange", filterSyncEnabledChange: "filterSyncEnabledChange", filterValueChange: "filterValueChange", focusedColumnIndexChange: "focusedColumnIndexChange", focusedRowEnabledChange: "focusedRowEnabledChange", focusedRowIndexChange: "focusedRowIndexChange", focusedRowKeyChange: "focusedRowKeyChange", hasItemsExprChange: "hasItemsExprChange", headerFilterChange: "headerFilterChange", heightChange: "heightChange", highlightChangesChange: "highlightChangesChange", hintChange: "hintChange", hoverStateEnabledChange: "hoverStateEnabledChange", itemsExprChange: "itemsExprChange", keyboardNavigationChange: "keyboardNavigationChange", keyExprChange: "keyExprChange", loadPanelChange: "loadPanelChange", noDataTextChange: "noDataTextChange", pagerChange: "pagerChange", pagingChange: "pagingChange", parentIdExprChange: "parentIdExprChange", remoteOperationsChange: "remoteOperationsChange", renderAsyncChange: "renderAsyncChange", repaintChangesOnlyChange: "repaintChangesOnlyChange", rootValueChange: "rootValueChange", rowAlternationEnabledChange: "rowAlternationEnabledChange", rowDraggingChange: "rowDraggingChange", rtlEnabledChange: "rtlEnabledChange", scrollingChange: "scrollingChange", searchPanelChange: "searchPanelChange", selectedRowKeysChange: "selectedRowKeysChange", selectionChange: "selectionChange", showBordersChange: "showBordersChange", showColumnHeadersChange: "showColumnHeadersChange", showColumnLinesChange: "showColumnLinesChange", showRowLinesChange: "showRowLinesChange", sortingChange: "sortingChange", stateStoringChange: "stateStoringChange", syncLookupFilterValuesChange: "syncLookupFilterValuesChange", tabIndexChange: "tabIndexChange", toolbarChange: "toolbarChange", twoWayBindingEnabledChange: "twoWayBindingEnabledChange", visibleChange: "visibleChange", widthChange: "widthChange", wordWrapEnabledChange: "wordWrapEnabledChange" }, host: { attributes: { "ngSkipHydration": "true" } }, providers: [
DxTemplateHost,
WatcherHelper,
NestedOptionHost,
IterableDifferHelper
], queries: [{ propertyName: "_validationRulesContentChildren", predicate: PROPERTY_TOKEN_validationRules }, { propertyName: "_buttonsContentChildren", predicate: PROPERTY_TOKEN_buttons }, { propertyName: "_changesContentChildren", predicate: PROPERTY_TOKEN_changes }, { propertyName: "_columnsContentChildren", predicate: PROPERTY_TOKEN_columns }, { propertyName: "_customOperationsContentChildren", predicate: PROPERTY_TOKEN_customOperations }, { propertyName: "_fieldsContentChildren", predicate: PROPERTY_TOKEN_fields }, { propertyName: "_itemsContentChildren", predicate: PROPERTY_TOKEN_items }, { propertyName: "_toolbarItemsContentChildren", predicate: PROPERTY_TOKEN_toolbarItems }, { propertyName: "_tabsContentChildren", predicate: PROPERTY_TOKEN_tabs }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true, dependencies: [{ kind: "ngmodule", type: DxIntegrationModule }] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxTreeListComponent, decorators: [{
type: Component,
args: [{
selector: 'dx-tree-list',
standalone: true,
template: '',
host: { ngSkipHydration: 'true' },
imports: [DxIntegrationModule],
providers: [
DxTemplateHost,
WatcherHelper,
NestedOptionHost,
IterableDifferHelper
]
}]
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.DxTemplateHost }, { type: i1.WatcherHelper }, { type: i1.IterableDifferHelper }, { type: i1.NestedOptionHost }, { type: i0.TransferState }, { type: undefined, decorators: [{
type: Inject,
args: [PLATFORM_ID]
}] }], propDecorators: { _validationRulesContentChildren: [{
type: ContentChildren,
args: [PROPERTY_TOKEN_validationRules]
}], _buttonsContentChildren: [{
type: ContentChildren,
args: [PROPERTY_TOKEN_buttons]
}], _changesContentChildren: [{
type: ContentChildren,
args: [PROPERTY_TOKEN_changes]
}], _columnsContentChildren: [{
type: ContentChildren,
args: [PROPERTY_TOKEN_columns]
}], _customOperationsContentChildren: [{
type: ContentChildren,
args: [PROPERTY_TOKEN_customOperations]
}], _fieldsContentChildren: [{
type: ContentChildren,
args: [PROPERTY_TOKEN_fields]
}], _itemsContentChildren: [{
type: ContentChildren,
args: [PROPERTY_TOKEN_items]
}], _toolbarItemsContentChildren: [{
type: ContentChildren,
args: [PROPERTY_TOKEN_toolbarItems]
}], _tabsContentChildren: [{
type: ContentChildren,
args: [PROPERTY_TOKEN_tabs]
}], accessKey: [{
type: Input
}], activeStateEnabled: [{
type: Input
}], aiIntegration: [{
type: Input
}], allowColumnReordering: [{
type: Input
}], allowColumnResizing: [{
type: Input
}], autoExpandAll: [{
type: Input
}], autoNavigateToFocusedRow: [{
type: Input
}], cacheEnabled: [{
type: Input
}], cellHintEnabled: [{
type: Input
}], columnAutoWidth: [{
type: Input
}], columnChooser: [{
type: Input
}], columnFixing: [{
type: Input
}], columnHidingEnabled: [{
type: Input
}], columnMinWidth: [{
type: Input
}], columnResizingMode: [{
type: Input
}], columns: [{
type: Input
}], columnWidth: [{
type: Input
}], customizeColumns: [{
type: Input
}], dataSource: [{
type: Input
}], dataStructure: [{
type: Input
}], dateSerializationFormat: [{
type: Input
}], disabled: [{
type: Input
}], editing: [{
type: Input
}], elementAttr: [{
type: Input
}], errorRowEnabled: [{
type: Input
}], expandedRowKeys: [{
type: Input
}], expandNodesOnFiltering: [{
type: Input
}], filterBuilder: [{
type: Input
}], filterBuilderPopup: [{
type: Input
}], filterMode: [{
type: Input
}], filterPanel: [{
type: Input
}], filterRow: [{
type: Input
}], filterSyncEnabled: [{
type: Input
}], filterValue: [{
type: Input
}], focusedColumnIndex: [{
type: Input
}], focusedRowEnabled: [{
type: Input
}], focusedRowIndex: [{
type: Input
}], focusedRowKey: [{
type: Input
}], hasItemsExpr: [{
type: Input
}], headerFilter: [{
type: Input
}], height: [{
type: Input
}], highlightChanges: [{
type: Input
}], hint: [{
type: Input
}], hoverStateEnabled: [{
type: Input
}], itemsExpr: [{
type: Input
}], keyboardNavigation: [{
type: Input
}], keyExpr: [{
type: Input
}], loadPanel: [{
type: Input
}], noDataText: [{
type: Input
}], pager: [{
type: Input
}], paging: [{
type: Input
}], parentIdExpr: [{
type: Input
}], remoteOperations: [{
type: Input
}], renderAsync: [{
type: Input
}], repaintChangesOnly: [{
type: Input
}], rootValue: [{
type: Input
}], rowAlternationEnabled: [{
type: Input
}], rowDragging: [{
type: Input
}], rtlEnabled: [{
type: Input
}], scrolling: [{
type: Input
}], searchPanel: [{
type: Input
}], selectedRowKeys: [{
type: Input
}], selection: [{
type: Input
}], showBorders: [{
type: Input
}], showColumnHeaders: [{
type: Input
}], showColumnLines: [{
type: Input
}], showRowLines: [{
type: Input
}], sorting: [{
type: Input
}], stateStoring: [{
type: Input
}], syncLookupFilterValues: [{
type: Input
}], tabIndex: [{
type: Input
}], toolbar: [{
type: Input
}], twoWayBindingEnabled: [{
type: Input
}], visible: [{
type: Input
}], width: [{
type: Input
}], wordWrapEnabled: [{
type: Input
}], onAdaptiveDetailRowPreparing: [{
type: Output
}], onAIColumnRequestCreating: [{
type: Output
}], onCellClick: [{
type: Output
}], onCellDblClick: [{
type: Output
}], onCellHoverChanged: [{
type: Output
}], onCellPrepared: [{
type: Output
}], onContentReady: [{
type: Output
}], onContextMenuPreparing: [{
type: Output
}], onDataErrorOccurred: [{
type: Output
}], onDisposing: [{
type: Output
}], onEditCanceled: [{
type: Output
}], onEditCanceling: [{
type: Output
}], onEditingStart: [{
type: Output
}], onEditorPrepared: [{
type: Output
}], onEditorPreparing: [{
type: Output
}], onFocusedCellChanged: [{
type: Output
}], onFocusedCellChanging: [{
type: Output
}], onFocusedRowChanged: [{
type: Output
}], onFocusedRowChanging: [{
type: Output
}], onInitialized: [{
type: Output
}], onInitNewRow: [{
type: Output
}], onKeyDown: [{
type: Output
}], onNodesInitialized: [{
type: Output
}], onOptionChanged: [{
type: Output
}], onRowClick: [{
type: Output
}], onRowCollapsed: [{
type: Output
}], onRowCollapsing: [{
type: Output
}], onRowDblClick: [{
type: Output
}], onRowExpanded: [{
type: Output
}], onRowExpanding: [{
type: Output
}], onRowInserted: [{
type: Output
}], onRowInserting: [{
type: Output
}], onRowPrepared: [{
type: Output
}], onRowRemoved: [{
type: Output
}], onRowRemoving: [{
type: Output
}], onRowUpdated: [{
type: Output
}], onRowUpdating: [{
type: Output
}], onRowValidating: [{
type: Output
}], onSaved: [{
type: Output
}], onSaving: [{
type: Output
}], onSelectionChanged: [{
type: Output
}], onToolbarPreparing: [{
type: Output
}], accessKeyChange: [{
type: Output
}], activeStateEnabledChange: [{
type: Output
}], aiIntegrationChange: [{
type: Output
}], allowColumnReorderingChange: [{
type: Output
}], allowColumnResizingChange: [{
type: Output
}], autoExpandAllChange: [{
type: Output
}], autoNavigateToFocusedRowChange: [{
type: Output
}], cacheEnabledChange: [{
type: Output
}], cellHintEnabledChange: [{
type: Output
}], columnAutoWidthChange: [{
type: Output
}], columnChooserChange: [{
type: Output
}], columnFixingChange: [{
type: Output
}], columnHidingEnabledChange: [{
type: Output
}], columnMinWidthChange: [{
type: Output
}], columnResizingModeChange: [{
type: Output
}], columnsChange: [{
type: Output
}], columnWidthChange: [{
type: Output
}], customizeColumnsChange: [{
type: Output
}], dataSourceChange: [{
type: Output
}], dataStructureChange: [{
type: Output
}], dateSerializationFormatChange: [{
type: Output
}], disabledChange: [{
type: Output
}], editingChange: [{
type: Output
}], elementAttrChange: [{
type: Output
}], errorRowEnabledChange: [{
type: Output
}], expandedRowKeysChange: [{
type: Output
}], expandNodesOnFilteringChange: [{
type: Output
}], filterBuilderChange: [{
type: Output
}], filterBuilderPopupChange: [{
type: Output
}], filterModeChange: [{
type: Output
}], filterPanelChange: [{
type: Output
}], filterRowChange: [{
type: Output
}], filterSyncEnabledChange: [{
type: Output
}], filterValueChange: [{
type: Output
}], focusedColumnIndexChange: [{
type: Output
}], focusedRowEnabledChange: [{
type: Output
}], focusedRowIndexChange: [{
type: Output
}], focusedRowKeyChange: [{
type: Output
}], hasItemsExprChange: [{
type: Output
}], headerFilterChange: [{
type: Output
}], heightChange: [{
type: Output
}], highlightChangesChange: [{
type: Output
}], hintChange: [{
type: Output
}], hoverStateEnabledChange: [{
type: Output
}], itemsExprChange: [{
type: Output
}], keyboardNavigationChange: [{
type: Output
}], keyExprChange: [{
type: Output
}], loadPanelChange: [{
type: Output
}], noDataTextChange: [{
type: Output
}], pagerChange: [{
type: Output
}], pagingChange: [{
type: Output
}], parentIdExprChange: [{
type: Output
}], remoteOperationsChange: [{
type: Output
}], renderAsyncChange: [{
type: Output
}], repaintChangesOnlyChange: [{
type: Output
}], rootValueChange: [{
type: Output
}], rowAlternationEnabledChange: [{
type: Output
}], rowDraggingChange: [{
type: Output
}], rtlEnabledChange: [{
type: Output
}], scrollingChange: [{
type: Output
}], searchPanelChange: [{
type: Output
}], selectedRowKeysChange: [{
type: Output
}], selectionChange: [{
type: Output
}], showBordersChange: [{
type: Output
}], showColumnHeadersChange: [{
type: Output
}], showColumnLinesChange: [{
type: Output
}], showRowLinesChange: [{
type: Output
}], sortingChange: [{
type: Output
}], stateStoringChange: [{
type: Output
}], syncLookupFilterValuesChange: [{
type: Output
}], tabIndexChange: [{
type: Output
}], toolbarChange: [{
type: Output
}], twoWayBindingEnabledChange: [{
type: Output
}], visibleChange: [{
type: Output
}], widthChange: [{
type: Output
}], wordWrapEnabledChange: [{
type: Output
}] } });
export class DxTreeListModule {
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxTreeListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
/** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: DxTreeListModule, imports: [DxTreeListComponent, DxoColumnChooserModule,
DxoPositionModule,
DxoAtModule,
DxoBoundaryOffsetModule,
DxoCollisionModule,
DxoMyModule,
DxoOffsetModule,
DxoSearchModule,
DxoSelectionModule,
DxoColumnFixingModule,
DxoIconsModule,
DxoTextsModule,
DxiColumnModule,
DxiButtonModule,
DxoLookupModule,
DxoFormatModule,
DxoFormItemModule,
DxoLabelModule,
DxiValidationRuleModule,
DxoHeaderFilterModule,
DxoEditingModule,
DxiChangeModule,
DxoFormModule,
DxoColCountByScreenModule,
DxiItemModule,
DxoTabPanelOptionsModule,
DxiTabModule,
DxoButtonOptionsModule,
DxoPopupModule,
DxoAnimationModule,
DxoHideModule,
DxoFromModule,
DxoToModule,
DxoShowModule,
DxoFilterBuilderModule,
DxiCustomOperationModule,
DxiFieldModule,
DxoFilterOperationDescriptionsModule,
DxoGroupOperationDescriptionsModule,
DxoFilterBuilderPopupModule,
DxoFilterPanelModule,
DxoFilterRowModule,
DxoOperationDescriptionsModule,
DxoKeyboardNavigationModule,
DxoLoadPanelModule,
DxoPagerModule,
DxoPagingModule,
DxoRemoteOperationsModule,
DxoRowDraggingModule,
DxoCursorOffsetModule,
DxoScrollingModule,
DxoSearchPanelModule,
DxoSortingModule,
DxoStateStoringModule,
DxoToolbarModule,
DxoTreeListAIModule,
DxoTreeListAIOptionsModule,
DxoTreeListAnimationModule,
DxiTreeListAsyncRuleModule,
DxoTreeListAtModule,
DxoTreeListBoundaryOffsetModule,
DxiTreeListButtonModule,
DxiTreeListChangeModule,
DxoTreeListColCountByScreenModule,
DxoTreeListCollisionModule,
DxiTreeListColumnModule,
DxiTreeListColumnButtonModule,
DxoTreeListColumnChooserModule,
DxoTreeListColumnChooserSearchModule,
DxoTreeListColumnChooserSelectionModule,
DxoTreeListColumnFixingModule,
DxoTreeListColumnFixingTextsModule,
DxoTreeListColumnHeaderFilterModule,
DxoTreeListColumnHeaderFilterSearchModule,
DxoTreeListColumnLookupModule,
DxiTreeListCompareRuleModule,
DxoTreeListCursorOffsetModule,
DxiTreeListCustomOperationModule,
DxiTreeListCustomRuleModule,
DxoTreeListEditingModule,
DxoTreeListEditingTextsModule,
DxoTreeListEditorOptionsModule,
DxiTreeListEditorOptionsButtonModule,
DxiTreeListEmailRuleModule,
DxiTreeListFieldModule,
DxoTreeListFieldLookupModule,
DxoTreeListFilterBuilderModule,
DxoTreeListFilterBuilderPopupModule,
DxoTreeListFilterOperationDescriptionsModule,
DxoTreeListFilterPanelModule,
DxoTreeListFilterPanelTextsModule,
DxoTreeListFilterRowModule,
DxoTreeListFormModule,
DxoTreeListFormatModule,
DxoTreeListFormItemModule,
DxoTreeListFromModule,
DxoTreeListGroupOperationDescriptionsModule,
DxoTreeListHeaderFilterModule,
DxoTreeListHideModule,
DxoTreeListIconsModule,
DxoTreeListIndicatorOptionsModule,
DxiTreeListItemModule,
DxoTreeListKeyboardNavigationModule,
DxoTreeListLabelModule,
DxoTreeListLoadPanelModule,
DxoTreeListLookupModule,
DxoTreeListMyModule,
DxiTreeListNumericRuleModule,
DxoTreeListOffsetModule,
DxoTreeListOperationDescriptionsModule,
DxoTreeListOptionsModule,
DxoTreeListPagerModule,
DxoTreeListPagingModule,
DxiTreeListPatternRuleModule,
DxoTreeListPopupModule,
DxoTreeListPositionModule,
DxiTreeListRangeRuleModule,
DxoTreeListRemoteOperationsModule,
DxiTreeListRequiredRuleModule,
DxoTreeListRowDraggingModule,
DxoTreeListScrollingModule,
DxoTreeListSearchModule,
DxoTreeListSearchPanelModule,
DxoTreeListSelectionModule,
DxoTreeListShowModule,
DxoTreeListSortingModule,
DxoTreeListStateStoringModule,
DxiTreeListStringLengthRuleModule,
DxoTreeListTextsModule,
DxoTreeListToModule,
DxoTreeListToolbarModule,
DxiTreeListToolbarItemModule,
DxoTreeListTreeListHeaderFilterModule,
DxoTreeListTreeListHeaderFilterSearchModule,
DxoTreeListTreeListHeaderFilterTextsModule,
DxoTreeListTreeListSelectionModule,
DxiTreeListValidationRuleModule,
DxiTreeListButtonItemModule,
DxiTreeListEmptyItemModule,
DxiTreeListGroupItemModule,
DxiTreeListSimpleItemModule,
DxiTreeListTabbedItemModule,
DxiTreeListTabModule,
DxIntegrationModule,
DxTemplateModule], exports: [DxTreeListComponent, DxoColumnChooserModule,
DxoPositionModule,
DxoAtModule,
DxoBoundaryOffsetModule,
DxoCollisionModule,
DxoMyModule,
DxoOffsetModule,
DxoSearchModule,
DxoSelectionModule,
DxoColumnFixingModule,
DxoIconsModule,
DxoTextsModule,
DxiColumnModule,
DxiButtonModule,
DxoLookupModule,
DxoFormatModule,
DxoFormItemModule,
DxoLabelModule,
DxiValidationRuleModule,
DxoHeaderFilterModule,
DxoEditingModule,
DxiChangeModule,
DxoFormModule,
DxoColCountByScreenModule,
DxiItemModule,
DxoTabPanelOptionsModule,
DxiTabModule,
DxoButtonOptionsModule,
DxoPopupModule,
DxoAnimationModule,
DxoHideModule,
DxoFromModule,
DxoToModule,
DxoShowModule,
DxoFilterBuilderModule,
DxiCustomOperationModule,
DxiFieldModule,
DxoFilterOperationDescriptionsModule,
DxoGroupOperationDescriptionsModule,
DxoFilterBuilderPopupModule,
DxoFilterPanelModule,
DxoFilterRowModule,
DxoOperationDescriptionsModule,
DxoKeyboardNavigationModule,
DxoLoadPanelModule,
DxoPagerModule,
DxoPagingModule,
DxoRemoteOperationsModule,
DxoRowDraggingModule,
DxoCursorOffsetModule,
DxoScrollingModule,
DxoSearchPanelModule,
DxoSortingModule,
DxoStateStoringModule,
DxoToolbarModule,
DxoTreeListAIModule,
DxoTreeListAIOptionsModule,
DxoTreeListAnimationModule,
DxiTreeListAsyncRuleModule,
DxoTreeListAtModule,
DxoTreeListBoundaryOffsetModule,
DxiTreeListButtonModule,
DxiTreeListChangeModule,
DxoTreeListColCountByScreenModule,
DxoTreeListCollisionModule,
DxiTreeListColumnModule,
DxiTreeListColumnButtonModule,
DxoTreeListColumnChooserModule,
DxoTreeListColumnChooserSearchModule,
DxoTreeListColumnChooserSelectionModule,
DxoTreeListColumnFixingModule,
DxoTreeListColumnFixingTextsModule,
DxoTreeListColumnHeaderFilterModule,
DxoTreeListColumnHeaderFilterSearchModule,
DxoTreeListColumnLookupModule,
DxiTreeListCompareRuleModule,
DxoTreeListCursorOffsetModule,
DxiTreeListCustomOperationModule,
DxiTreeListCustomRuleModule,
DxoTreeListEditingModule,
DxoTreeListEditingTextsModule,
DxoTreeListEditorOptionsModule,
DxiTreeListEditorOptionsButtonModule,
DxiTreeListEmailRuleModule,
DxiTreeListFieldModule,
DxoTreeListFieldLookupModule,
DxoTreeListFilterBuilderModule,
DxoTreeListFilterBuilderPopupModule,
DxoTreeListFilterOperationDescriptionsModule,
DxoTreeListFilterPanelModule,
DxoTreeListFilterPanelTextsModule,
DxoTreeListFilterRowModule,
DxoTreeListFormModule,
DxoTreeListFormatModule,
DxoTreeListFormItemModule,
DxoTreeListFromModule,
DxoTreeListGroupOperationDescriptionsModule,
DxoTreeListHeaderFilterModule,
DxoTreeListHideModule,
DxoTreeListIconsModule,
DxoTreeListIndicatorOptionsModule,
DxiTreeListItemModule,
DxoTreeListKeyboardNavigationModule,
DxoTreeListLabelModule,
DxoTreeListLoadPanelModule,
DxoTreeListLookupModule,
DxoTreeListMyModule,
DxiTreeListNumericRuleModule,
DxoTreeListOffsetModule,
DxoTreeListOperationDescriptionsModule,
DxoTreeListOptionsModule,
DxoTreeListPagerModule,
DxoTreeListPagingModule,
DxiTreeListPatternRuleModule,
DxoTreeListPopupModule,
DxoTreeListPositionModule,
DxiTreeListRangeRuleModule,
DxoTreeListRemoteOperationsModule,
DxiTreeListRequiredRuleModule,
DxoTreeListRowDraggingModule,
DxoTreeListScrollingModule,
DxoTreeListSearchModule,
DxoTreeListSearchPanelModule,
DxoTreeListSelectionModule,
DxoTreeListShowModule,
DxoTreeListSortingModule,
DxoTreeListStateStoringModule,
DxiTreeListStringLengthRuleModule,
DxoTreeListTextsModule,
DxoTreeListToModule,
DxoTreeListToolbarModule,
DxiTreeListToolbarItemModule,
DxoTreeListTreeListHeaderFilterModule,
DxoTreeListTreeListHeaderFilterSearchModule,
DxoTreeListTreeListHeaderFilterTextsModule,
DxoTreeListTreeListSelectionModule,
DxiTreeListValidationRuleModule,
DxiTreeListButtonItemModule,
DxiTreeListEmptyItemModule,
DxiTreeListGroupItemModule,
DxiTreeListSimpleItemModule,
DxiTreeListTabbedItemModule,
DxiTreeListTabModule,
DxTemplateModule] });
/** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxTreeListModule, imports: [DxTreeListComponent,
DxoColumnChooserModule,
DxoPositionModule,
DxoAtModule,
DxoBoundaryOffsetModule,
DxoCollisionModule,
DxoMyModule,
DxoOffsetModule,
DxoSearchModule,
DxoSelectionModule,
DxoColumnFixingModule,
DxoIconsModule,
DxoTextsModule,
DxiColumnModule,
DxiButtonModule,
DxoLookupModule,
DxoFormatModule,
DxoFormItemModule,
DxoLabelModule,
DxiValidationRuleModule,
DxoHeaderFilterModule,
DxoEditingModule,
DxiChangeModule,
DxoFormModule,
DxoColCountByScreenModule,
DxiItemModule,
DxoTabPanelOptionsModule,
DxiTabModule,
DxoButtonOptionsModule,
DxoPopupModule,
DxoAnimationModule,
DxoHideModule,
DxoFromModule,
DxoToModule,
DxoShowModule,
DxoFilterBuilderModule,
DxiCustomOperationModule,
DxiFieldModule,
DxoFilterOperationDescriptionsModule,
DxoGroupOperationDescriptionsModule,
DxoFilterBuilderPopupModule,
DxoFilterPanelModule,
DxoFilterRowModule,
DxoOperationDescriptionsModule,
DxoKeyboardNavigationModule,
DxoLoadPanelModule,
DxoPagerModule,
DxoPagingModule,
DxoRemoteOperationsModule,
DxoRowDraggingModule,
DxoCursorOffsetModule,
DxoScrollingModule,
DxoSearchPanelModule,
DxoSortingModule,
DxoStateStoringModule,
DxoToolbarModule,
DxoTreeListAIModule,
DxoTreeListAIOptionsModule,
DxoTreeListAnimationModule,
DxiTreeListAsyncRuleModule,
DxoTreeListAtModule,
DxoTreeListBoundaryOffsetModule,
DxiTreeListButtonModule,
DxiTreeListChangeModule,
DxoTreeListColCountByScreenModule,
DxoTreeListCollisionModule,
DxiTreeListColumnModule,
DxiTreeListColumnButtonModule,
DxoTreeListColumnChooserModule,
DxoTreeListColumnChooserSearchModule,
DxoTreeListColumnChooserSelectionModule,
DxoTreeListColumnFixingModule,
DxoTreeListColumnFixingTextsModule,
DxoTreeListColumnHeaderFilterModule,
DxoTreeListColumnHeaderFilterSearchModule,
DxoTreeListColumnLookupModule,
DxiTreeListCompareRuleModule,
DxoTreeListCursorOffsetModule,
DxiTreeListCustomOperationModule,
DxiTreeListCustomRuleModule,
DxoTreeListEditingModule,
DxoTreeListEditingTextsModule,
DxoTreeListEditorOptionsModule,
DxiTreeListEditorOptionsButtonModule,
DxiTreeListEmailRuleModule,
DxiTreeListFieldModule,
DxoTreeListFieldLookupModule,
DxoTreeListFilterBuilderModule,
DxoTreeListFilterBuilderPopupModule,
DxoTreeListFilterOperationDescriptionsModule,
DxoTreeListFilterPanelModule,
DxoTreeListFilterPanelTextsModule,
DxoTreeListFilterRowModule,
DxoTreeListFormModule,
DxoTreeListFormatModule,
DxoTreeListFormItemModule,
DxoTreeListFromModule,
DxoTreeListGroupOperationDescriptionsModule,
DxoTreeListHeaderFilterModule,
DxoTreeListHideModule,
DxoTreeListIconsModule,
DxoTreeListIndicatorOptionsModule,
DxiTreeListItemModule,
DxoTreeListKeyboardNavigationModule,
DxoTreeListLabelModule,
DxoTreeListLoadPanelModule,
DxoTreeListLookupModule,
DxoTreeListMyModule,
DxiTreeListNumericRuleModule,
DxoTreeListOffsetModule,
DxoTreeListOperationDescriptionsModule,
DxoTreeListOptionsModule,
DxoTreeListPagerModule,
DxoTreeListPagingModule,
DxiTreeListPatternRuleModule,
DxoTreeListPopupModule,
DxoTreeListPositionModule,
DxiTreeListRangeRuleModule,
DxoTreeListRemoteOperationsModule,
DxiTreeListRequiredRuleModule,
DxoTreeListRowDraggingModule,
DxoTreeListScrollingModule,
DxoTreeListSearchModule,
DxoTreeListSearchPanelModule,
DxoTreeListSelectionModule,
DxoTreeListShowModule,
DxoTreeListSortingModule,
DxoTreeListStateStoringModule,
DxiTreeListStringLengthRuleModule,
DxoTreeListTextsModule,
DxoTreeListToModule,
DxoTreeListToolbarModule,
DxiTreeListToolbarItemModule,
DxoTreeListTreeListHeaderFilterModule,
DxoTreeListTreeListHeaderFilterSearchModule,
DxoTreeListTreeListHeaderFilterTextsModule,
DxoTreeListTreeListSelectionModule,
DxiTreeListValidationRuleModule,
DxiTreeListButtonItemModule,
DxiTreeListEmptyItemModule,
DxiTreeListGroupItemModule,
DxiTreeListSimpleItemModule,
DxiTreeListTabbedItemModule,
DxiTreeListTabModule,
DxIntegrationModule,
DxTemplateModule, DxoColumnChooserModule,
DxoPositionModule,
DxoAtModule,
DxoBoundaryOffsetModule,
DxoCollisionModule,
DxoMyModule,
DxoOffsetModule,
DxoSearchModule,
DxoSelectionModule,
DxoColumnFixingModule,
DxoIconsModule,
DxoTextsModule,
DxiColumnModule,
DxiButtonModule,
DxoLookupModule,
DxoFormatModule,
DxoFormItemModule,
DxoLabelModule,
DxiValidationRuleModule,
DxoHeaderFilterModule,
DxoEditingModule,
DxiChangeModule,
DxoFormModule,
DxoColCountByScreenModule,
DxiItemModule,
DxoTabPanelOptionsModule,
DxiTabModule,
DxoButtonOptionsModule,
DxoPopupModule,
DxoAnimationModule,
DxoHideModule,
DxoFromModule,
DxoToModule,
DxoShowModule,
DxoFilterBuilderModule,
DxiCustomOperationModule,
DxiFieldModule,
DxoFilterOperationDescriptionsModule,
DxoGroupOperationDescriptionsModule,
DxoFilterBuilderPopupModule,
DxoFilterPanelModule,
DxoFilterRowModule,
DxoOperationDescriptionsModule,
DxoKeyboardNavigationModule,
DxoLoadPanelModule,
DxoPagerModule,
DxoPagingModule,
DxoRemoteOperationsModule,
DxoRowDraggingModule,
DxoCursorOffsetModule,
DxoScrollingModule,
DxoSearchPanelModule,
DxoSortingModule,
DxoStateStoringModule,
DxoToolbarModule,
DxoTreeListAIModule,
DxoTreeListAIOptionsModule,
DxoTreeListAnimationModule,
DxiTreeListAsyncRuleModule,
DxoTreeListAtModule,
DxoTreeListBoundaryOffsetModule,
DxiTreeListButtonModule,
DxiTreeListChangeModule,
DxoTreeListColCountByScreenModule,
DxoTreeListCollisionModule,
DxiTreeListColumnModule,
DxiTreeListColumnButtonModule,
DxoTreeListColumnChooserModule,
DxoTreeListColumnChooserSearchModule,
DxoTreeListColumnChooserSelectionModule,
DxoTreeListColumnFixingModule,
DxoTreeListColumnFixingTextsModule,
DxoTreeListColumnHeaderFilterModule,
DxoTreeListColumnHeaderFilterSearchModule,
DxoTreeListColumnLookupModule,
DxiTreeListCompareRuleModule,
DxoTreeListCursorOffsetModule,
DxiTreeListCustomOperationModule,
DxiTreeListCustomRuleModule,
DxoTreeListEditingModule,
DxoTreeListEditingTextsModule,
DxoTreeListEditorOptionsModule,
DxiTreeListEditorOptionsButtonModule,
DxiTreeListEmailRuleModule,
DxiTreeListFieldModule,
DxoTreeListFieldLookupModule,
DxoTreeListFilterBuilderModule,
DxoTreeListFilterBuilderPopupModule,
DxoTreeListFilterOperationDescriptionsModule,
DxoTreeListFilterPanelModule,
DxoTreeListFilterPanelTextsModule,
DxoTreeListFilterRowModule,
DxoTreeListFormModule,
DxoTreeListFormatModule,
DxoTreeListFormItemModule,
DxoTreeListFromModule,
DxoTreeListGroupOperationDescriptionsModule,
DxoTreeListHeaderFilterModule,
DxoTreeListHideModule,
DxoTreeListIconsModule,
DxoTreeListIndicatorOptionsModule,
DxiTreeListItemModule,
DxoTreeListKeyboardNavigationModule,
DxoTreeListLabelModule,
DxoTreeListLoadPanelModule,
DxoTreeListLookupModule,
DxoTreeListMyModule,
DxiTreeListNumericRuleModule,
DxoTreeListOffsetModule,
DxoTreeListOperationDescriptionsModule,
DxoTreeListOptionsModule,
DxoTreeListPagerModule,
DxoTreeListPagingModule,
DxiTreeListPatternRuleModule,
DxoTreeListPopupModule,
DxoTreeListPositionModule,
DxiTreeListRangeRuleModule,
DxoTreeListRemoteOperationsModule,
DxiTreeListRequiredRuleModule,
DxoTreeListRowDraggingModule,
DxoTreeListScrollingModule,
DxoTreeListSearchModule,
DxoTreeListSearchPanelModule,
DxoTreeListSelectionModule,
DxoTreeListShowModule,
DxoTreeListSortingModule,
DxoTreeListStateStoringModule,
DxiTreeListStringLengthRuleModule,
DxoTreeListTextsModule,
DxoTreeListToModule,
DxoTreeListToolbarModule,
DxiTreeListToolbarItemModule,
DxoTreeListTreeListHeaderFilterModule,
DxoTreeListTreeListHeaderFilterSearchModule,
DxoTreeListTreeListHeaderFilterTextsModule,
DxoTreeListTreeListSelectionModule,
DxiTreeListValidationRuleModule,
DxiTreeListButtonItemModule,
DxiTreeListEmptyItemModule,
DxiTreeListGroupItemModule,
DxiTreeListSimpleItemModule,
DxiTreeListTabbedItemModule,
DxiTreeListTabModule,
DxTemplateModule] });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxTreeListModule, decorators: [{
type: NgModule,
args: [{
imports: [
DxTreeListComponent,
DxoColumnChooserModule,
DxoPositionModule,
DxoAtModule,
DxoBoundaryOffsetModule,
DxoCollisionModule,
DxoMyModule,
DxoOffsetModule,
DxoSearchModule,
DxoSelectionModule,
DxoColumnFixingModule,
DxoIconsModule,
DxoTextsModule,
DxiColumnModule,
DxiButtonModule,
DxoLookupModule,
DxoFormatModule,
DxoFormItemModule,
DxoLabelModule,
DxiValidationRuleModule,
DxoHeaderFilterModule,
DxoEditingModule,
DxiChangeModule,
DxoFormModule,
DxoColCountByScreenModule,
DxiItemModule,
DxoTabPanelOptionsModule,
DxiTabModule,
DxoButtonOptionsModule,
DxoPopupModule,
DxoAnimationModule,
DxoHideModule,
DxoFromModule,
DxoToModule,
DxoShowModule,
DxoFilterBuilderModule,
DxiCustomOperationModule,
DxiFieldModule,
DxoFilterOperationDescriptionsModule,
DxoGroupOperationDescriptionsModule,
DxoFilterBuilderPopupModule,
DxoFilterPanelModule,
DxoFilterRowModule,
DxoOperationDescriptionsModule,
DxoKeyboardNavigationModule,
DxoLoadPanelModule,
DxoPagerModule,
DxoPagingModule,
DxoRemoteOperationsModule,
DxoRowDraggingModule,
DxoCursorOffsetModule,
DxoScrollingModule,
DxoSearchPanelModule,
DxoSortingModule,
DxoStateStoringModule,
DxoToolbarModule,
DxoTreeListAIModule,
DxoTreeListAIOptionsModule,
DxoTreeListAnimationModule,
DxiTreeListAsyncRuleModule,
DxoTreeListAtModule,
DxoTreeListBoundaryOffsetModule,
DxiTreeListButtonModule,
DxiTreeListChangeModule,
DxoTreeListColCountByScreenModule,
DxoTreeListCollisionModule,
DxiTreeListColumnModule,
DxiTreeListColumnButtonModule,
DxoTreeListColumnChooserModule,
DxoTreeListColumnChooserSearchModule,
DxoTreeListColumnChooserSelectionModule,
DxoTreeListColumnFixingModule,
DxoTreeListColumnFixingTextsModule,
DxoTreeListColumnHeaderFilterModule,
DxoTreeListColumnHeaderFilterSearchModule,
DxoTreeListColumnLookupModule,
DxiTreeListCompareRuleModule,
DxoTreeListCursorOffsetModule,
DxiTreeListCustomOperationModule,
DxiTreeListCustomRuleModule,
DxoTreeListEditingModule,
DxoTreeListEditingTextsModule,
DxoTreeListEditorOptionsModule,
DxiTreeListEditorOptionsButtonModule,
DxiTreeListEmailRuleModule,
DxiTreeListFieldModule,
DxoTreeListFieldLookupModule,
DxoTreeListFilterBuilderModule,
DxoTreeListFilterBuilderPopupModule,
DxoTreeListFilterOperationDescriptionsModule,
DxoTreeListFilterPanelModule,
DxoTreeListFilterPanelTextsModule,
DxoTreeListFilterRowModule,
DxoTreeListFormModule,
DxoTreeListFormatModule,
DxoTreeListFormItemModule,
DxoTreeListFromModule,
DxoTreeListGroupOperationDescriptionsModule,
DxoTreeListHeaderFilterModule,
DxoTreeListHideModule,
DxoTreeListIconsModule,
DxoTreeListIndicatorOptionsModule,
DxiTreeListItemModule,
DxoTreeListKeyboardNavigationModule,
DxoTreeListLabelModule,
DxoTreeListLoadPanelModule,
DxoTreeListLookupModule,
DxoTreeListMyModule,
DxiTreeListNumericRuleModule,
DxoTreeListOffsetModule,
DxoTreeListOperationDescriptionsModule,
DxoTreeListOptionsModule,
DxoTreeListPagerModule,
DxoTreeListPagingModule,
DxiTreeListPatternRuleModule,
DxoTreeListPopupModule,
DxoTreeListPositionModule,
DxiTreeListRangeRuleModule,
DxoTreeListRemoteOperationsModule,
DxiTreeListRequiredRuleModule,
DxoTreeListRowDraggingModule,
DxoTreeListScrollingModule,
DxoTreeListSearchModule,
DxoTreeListSearchPanelModule,
DxoTreeListSelectionModule,
DxoTreeListShowModule,
DxoTreeListSortingModule,
DxoTreeListStateStoringModule,
DxiTreeListStringLengthRuleModule,
DxoTreeListTextsModule,
DxoTreeListToModule,
DxoTreeListToolbarModule,
DxiTreeListToolbarItemModule,
DxoTreeListTreeListHeaderFilterModule,
DxoTreeListTreeListHeaderFilterSearchModule,
DxoTreeListTreeListHeaderFilterTextsModule,
DxoTreeListTreeListSelectionModule,
DxiTreeListValidationRuleModule,
DxiTreeListButtonItemModule,
DxiTreeListEmptyItemModule,
DxiTreeListGroupItemModule,
DxiTreeListSimpleItemModule,
DxiTreeListTabbedItemModule,
DxiTreeListTabModule,
DxIntegrationModule,
DxTemplateModule
],
exports: [
DxTreeListComponent,
DxoColumnChooserModule,
DxoPositionModule,
DxoAtModule,
DxoBoundaryOffsetModule,
DxoCollisionModule,
DxoMyModule,
DxoOffsetModule,
DxoSearchModule,
DxoSelectionModule,
DxoColumnFixingModule,
DxoIconsModule,
DxoTextsModule,
DxiColumnModule,
DxiButtonModule,
DxoLookupModule,
DxoFormatModule,
DxoFormItemModule,
DxoLabelModule,
DxiValidationRuleModule,
DxoHeaderFilterModule,
DxoEditingModule,
DxiChangeModule,
DxoFormModule,
DxoColCountByScreenModule,
DxiItemModule,
DxoTabPanelOptionsModule,
DxiTabModule,
DxoButtonOptionsModule,
DxoPopupModule,
DxoAnimationModule,
DxoHideModule,
DxoFromModule,
DxoToModule,
DxoShowModule,
DxoFilterBuilderModule,
DxiCustomOperationModule,
DxiFieldModule,
DxoFilterOperationDescriptionsModule,
DxoGroupOperationDescriptionsModule,
DxoFilterBuilderPopupModule,
DxoFilterPanelModule,
DxoFilterRowModule,
DxoOperationDescriptionsModule,
DxoKeyboardNavigationModule,
DxoLoadPanelModule,
DxoPagerModule,
DxoPagingModule,
DxoRemoteOperationsModule,
DxoRowDraggingModule,
DxoCursorOffsetModule,
DxoScrollingModule,
DxoSearchPanelModule,
DxoSortingModule,
DxoStateStoringModule,
DxoToolbarModule,
DxoTreeListAIModule,
DxoTreeListAIOptionsModule,
DxoTreeListAnimationModule,
DxiTreeListAsyncRuleModule,
DxoTreeListAtModule,
DxoTreeListBoundaryOffsetModule,
DxiTreeListButtonModule,
DxiTreeListChangeModule,
DxoTreeListColCountByScreenModule,
DxoTreeListCollisionModule,
DxiTreeListColumnModule,
DxiTreeListColumnButtonModule,
DxoTreeListColumnChooserModule,
DxoTreeListColumnChooserSearchModule,
DxoTreeListColumnChooserSelectionModule,
DxoTreeListColumnFixingModule,
DxoTreeListColumnFixingTextsModule,
DxoTreeListColumnHeaderFilterModule,
DxoTreeListColumnHeaderFilterSearchModule,
DxoTreeListColumnLookupModule,
DxiTreeListCompareRuleModule,
DxoTreeListCursorOffsetModule,
DxiTreeListCustomOperationModule,
DxiTreeListCustomRuleModule,
DxoTreeListEditingModule,
DxoTreeListEditingTextsModule,
DxoTreeListEditorOptionsModule,
DxiTreeListEditorOptionsButtonModule,
DxiTreeListEmailRuleModule,
DxiTreeListFieldModule,
DxoTreeListFieldLookupModule,
DxoTreeListFilterBuilderModule,
DxoTreeListFilterBuilderPopupModule,
DxoTreeListFilterOperationDescriptionsModule,
DxoTreeListFilterPanelModule,
DxoTreeListFilterPanelTextsModule,
DxoTreeListFilterRowModule,
DxoTreeListFormModule,
DxoTreeListFormatModule,
DxoTreeListFormItemModule,
DxoTreeListFromModule,
DxoTreeListGroupOperationDescriptionsModule,
DxoTreeListHeaderFilterModule,
DxoTreeListHideModule,
DxoTreeListIconsModule,
DxoTreeListIndicatorOptionsModule,
DxiTreeListItemModule,
DxoTreeListKeyboardNavigationModule,
DxoTreeListLabelModule,
DxoTreeListLoadPanelModule,
DxoTreeListLookupModule,
DxoTreeListMyModule,
DxiTreeListNumericRuleModule,
DxoTreeListOffsetModule,
DxoTreeListOperationDescriptionsModule,
DxoTreeListOptionsModule,
DxoTreeListPagerModule,
DxoTreeListPagingModule,
DxiTreeListPatternRuleModule,
DxoTreeListPopupModule,
DxoTreeListPositionModule,
DxiTreeListRangeRuleModule,
DxoTreeListRemoteOperationsModule,
DxiTreeListRequiredRuleModule,
DxoTreeListRowDraggingModule,
DxoTreeListScrollingModule,
DxoTreeListSearchModule,
DxoTreeListSearchPanelModule,
DxoTreeListSelectionModule,
DxoTreeListShowModule,
DxoTreeListSortingModule,
DxoTreeListStateStoringModule,
DxiTreeListStringLengthRuleModule,
DxoTreeListTextsModule,
DxoTreeListToModule,
DxoTreeListToolbarModule,
DxiTreeListToolbarItemModule,
DxoTreeListTreeListHeaderFilterModule,
DxoTreeListTreeListHeaderFilterSearchModule,
DxoTreeListTreeListHeaderFilterTextsModule,
DxoTreeListTreeListSelectionModule,
DxiTreeListValidationRuleModule,
DxiTreeListButtonItemModule,
DxiTreeListEmptyItemModule,
DxiTreeListGroupItemModule,
DxiTreeListSimpleItemModule,
DxiTreeListTabbedItemModule,
DxiTreeListTabModule,
DxTemplateModule
]
}]
}] });
export * from 'devextreme-angular/ui/tree-list/nested';
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9kaXN0L3VpL3RyZWUtbGlzdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7R0FXRztBQUVILG9DQUFvQztBQUdwQyxPQUFPLEVBQ0gsYUFBYSxFQUNiLFNBQVMsRUFDVCxRQUFRLEVBQ1IsVUFBVSxFQUNWLE1BQU0sRUFDTixXQUFXLEVBQ1gsTUFBTSxFQUVOLEtBQUssRUFDTCxNQUFNLEVBRU4sWUFBWSxFQUlaLGVBQWUsRUFDZixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFRdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBWWpFLE9BQU8sVUFBVSxNQUFNLHlCQUF5QixDQUFDO0FBR2pELE9BQU8sRUFDSCxXQUFXLEVBQ1gsY0FBYyxFQUNkLG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLG9CQUFvQixFQUNwQixhQUFhLEdBRWhCLE1BQU0seUJBQXlCLENBQUM7QUFFakMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FB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QXVCO3dCQUN2Qiw0QkFBNEI7d0JBQzVCLHNCQUFzQjt3QkFDdEIseUJBQXlCO3dCQUN6QiwwQkFBMEI7d0JBQzFCLGlDQUFpQzt3QkFDakMsNkJBQTZCO3dCQUM3Qiw0QkFBNEI7d0JBQzVCLDBCQUEwQjt3QkFDMUIsdUJBQXVCO3dCQUN2Qiw0QkFBNEI7d0JBQzVCLDBCQUEwQjt3QkFDMUIscUJBQXFCO3dCQUNyQix3QkFBd0I7d0JBQ3hCLDZCQUE2Qjt3QkFDN0IsaUNBQWlDO3dCQUNqQyxzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsd0JBQXdCO3dCQUN4Qiw0QkFBNEI7d0JBQzVCLHFDQUFxQzt3QkFDckMsMkNBQTJDO3dCQUMzQywwQ0FBMEM7d0JBQzFDLGtDQUFrQzt3QkFDbEMsK0JBQStCO3dCQUMvQiwyQkFBMkI7d0JBQzNCLDBCQUEwQjt3QkFDMUIsMEJBQTBCO3dCQUMxQiwyQkFBMkI7d0JBQzNCLDJCQUEyQjt3QkFDM0Isb0JBQW9CO3dCQUNwQixnQkFBZ0I7cUJBQ2pCO2lCQUNGOztBQUdELGNBQWMsd0NBQXdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIGRldmV4dHJlbWUtYW5ndWxhclxuICogVmVyc2lvbjogMjUuMi4zXG4gKiBCdWlsZCBkYXRlOiBGcmkgRGVjIDEyIDIwMjVcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTIgLSAyMDI1IERldmVsb3BlciBFeHByZXNzIEluYy4gQUxMIFJJR0hUUyBSRVNFUlZFRFxuICpcbiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXNcbiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gU2VlIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHByb2plY3QgZm9yIGRldGFpbHMuXG4gKlxuICogaHR0cHM6Ly9naXRodWIuY29tL0RldkV4cHJlc3MvZGV2ZXh0cmVtZS1hbmd1bGFyXG4gKi9cblxuLyogdHNsaW50OmRpc2FibGU6bWF4LWxpbmUtbGVuZ3RoICovXHJcblxyXG5cclxuaW1wb3J0IHtcclxuICAgIFRyYW5zZmVyU3RhdGUsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBOZ01vZHVsZSxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBOZ1pvbmUsXHJcbiAgICBQTEFURk9STV9JRCxcclxuICAgIEluamVjdCxcclxuXHJcbiAgICBJbnB1dCxcclxuICAgIE91dHB1dCxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIERvQ2hlY2ssXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgUXVlcnlMaXN0XHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgeyBFeHBsaWNpdFR5cGVzIH0gZnJvbSAnZGV2ZXh0cmVtZS91aS90cmVlX2xpc3QnO1xyXG5cclxuaW1wb3J0IERhdGFTb3VyY2UgZnJvbSAnZGV2ZXh0cmVtZS9kYXRhL2RhdGFfc291cmNlJztcclxuaW1wb3J0IGR4VHJlZUxpc3QgZnJvbSAnZGV2ZXh0cmVtZS91aS90cmVlX2xpc3QnO1xyXG5pbXBvcnQgZHhTb3J0YWJsZSBmcm9tICdkZXZleHRyZW1lL3VpL3NvcnRhYmxlJztcclxuaW1wb3J0IGR4RHJhZ2dhYmxlIGZyb20gJ2RldmV4dHJlbWUvdWkvZHJhZ2dhYmxlJztcclxuaW1wb3J0IHsgQUlJbnRlZ3JhdGlvbiB9IGZyb20gJ2RldmV4dHJlbWUvY29tbW9uL2FpLWludGVncmF0aW9uJztcclxuaW1wb3J0IHsgQ29sdW1uQ2hvb3NlciwgQ29sdW1uUmVzaXplTW9kZSwgRGF0YUNoYW5nZSwgR3JpZHNFZGl0TW9kZSwgR3JpZHNFZGl0UmVmcmVzaE1vZGUsIFN0YXJ0RWRpdEFjdGlvbiwgRmlsdGVyUGFuZWwsIEFwcGx5RmlsdGVyTW9kZSwgSGVhZGVyRmlsdGVyLCBFbnRlcktleUFjdGlvbiwgRW50ZXJLZXlEaXJlY3Rpb24sIFBhZ2VyLCBHcmlkQmFzZSwgRGF0YVJlbmRlck1vZGUsIFNlYXJjaFBhbmVsLCBTb3J0aW5nLCBTdGF0ZVN0b3JlVHlwZSB9IGZyb20gJ2RldmV4dHJlbWUvY29tbW9uL2dyaWRzJztcclxuaW1wb3J0IHsgZHhUcmVlTGlzdENvbHVtbiwgZHhUcmVlTGlzdFJvd09iamVjdCwgVHJlZUxpc3RGaWx0ZXJNb2RlLCBBZGFwdGl2ZURldGFpbFJvd1ByZXBhcmluZ0V2ZW50LCBBSUNvbHVtblJlcXVlc3RDcmVhdGluZ0V2ZW50LCBDZWxsQ2xpY2tFdmVudCwgQ2VsbERibENsaWNrRXZlbnQsIENlbGxIb3ZlckNoYW5nZWRFdmVudCwgQ2VsbFByZXBhcmVkRXZlbnQsIENvbnRlbnRSZWFkeUV2ZW50LCBDb250ZXh0TWVudVByZXBhcmluZ0V2ZW50LCBEYXRhRXJyb3JPY2N1cnJlZEV2ZW50LCBEaXNwb3NpbmdFdmVudCwgRWRpdENhbmNlbGVkRXZlbnQsIEVkaXRDYW5jZWxpbmdFdmVudCwgRWRpdGluZ1N0YXJ0RXZlbnQsIEVkaXRvclByZXBhcmVkRXZlbnQsIEVkaXRvclByZXBhcmluZ0V2ZW50LCBGb2N1c2VkQ2VsbENoYW5nZWRFdmVudCwgRm9jdXNlZENlbGxDaGFuZ2luZ0V2ZW50LCBGb2N1c2VkUm93Q2hhbmdlZEV2ZW50LCBGb2N1c2VkUm93Q2hhbmdpbmdFdmVudCwgSW5pdGlhbGl6ZWRFdmVudCwgSW5pdE5ld1Jvd0V2ZW50LCBLZXlEb3duRXZlbnQsIE5vZGVzSW5pdGlhbGl6ZWRFdmVudCwgT3B0aW9uQ2hhbmdlZEV2ZW50LCBSb3dDbGlja0V2ZW50LCBSb3dDb2xsYXBzZWRFdmVudCwgUm93Q29sbGFwc2luZ0V2ZW50LCBSb3dEYmxDbGlja0V2ZW50LCBSb3dFeHBhbmRlZEV2ZW50LCBSb3dFeHBhbmRpbmdFdmVudCwgUm93SW5zZXJ0ZWRFdmVudCwgUm93SW5zZXJ0aW5nRXZlbnQsIFJvd1ByZXBhcmVkRXZlbnQsIFJvd1JlbW92ZWRFdmVudCwgUm93UmVtb3ZpbmdFdmVudCwgUm93VXBkYXRlZEV2ZW50LCBSb3dVcGRhdGluZ0V2ZW50LCBSb3dWYWxpZGF0aW5nRXZlbnQsIFNhdmVkRXZlbnQsIFNhdmluZ0V2ZW50LCBTZWxlY3Rpb25DaGFuZ2VkRXZlbnQsIFRvb2xiYXJQcmVwYXJpbmdFdmVudCwgZHhUcmVlTGlzdFRvb2xiYXIgfSBmcm9tICdkZXZleHRyZW1lL3VpL3RyZWVfbGlzdCc7XHJcbmltcG9ydCB7IE1vZGUsIERhdGFTdHJ1Y3R1cmUsIERyYWdEaXJlY3Rpb24sIERyYWdIaWdobGlnaHQsIFNjcm9sbE1vZGUsIFNjcm9sbGJhck1vZGUsIFNpbmdsZU11bHRpcGxlT3JOb25lIH0gZnJvbSAnZGV2ZXh0cmVtZS9jb21tb24nO1xyXG5pbXBvcnQgeyBEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gJ2RldmV4dHJlbWUvZGF0YS9kYXRhX3NvdXJjZSc7XHJcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnZGV2ZXh0cmVtZS9kYXRhL3N0b3JlJztcclxuaW1wb3J0IHsgZHhGb3JtT3B0aW9ucyB9IGZyb20gJ2RldmV4dHJlbWUvdWkvZm9ybSc7XHJcbmltcG9ydCB7IGR4UG9wdXBPcHRpb25zIH0gZnJvbSAnZGV2ZXh0cmVtZS91aS9wb3B1cCc7XHJcbmltcG9ydCB7IGR4RmlsdGVyQnVpbGRlck9wdGlvbnMgfSBmcm9tICdkZXZleHRyZW1lL3VpL2ZpbHRlcl9idWlsZGVyJztcclxuaW1wb3J0IHsgTG9hZFBhbmVsSW5kaWNhdG9yUHJvcGVydGllcyB9IGZyb20gJ2RldmV4dHJlbWUvdWkvbG9hZF9wYW5lbCc7XHJcbmltcG9ydCB7IGV2ZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS9ldmVudHMvZXZlbnRzLnR5cGVzJztcclxuXHJcbmltcG9ydCBEeFRyZWVMaXN0IGZyb20gJ2RldmV4dHJlbWUvdWkvdHJlZV9saXN0JztcclxuXHJcblxyXG5pbXBvcnQge1xyXG4gICAgRHhDb21wb25lbnQsXHJcbiAgICBEeFRlbXBsYXRlSG9zdCxcclxuICAgIER4SW50ZWdyYXRpb25Nb2R1bGUsXHJcbiAgICBEeFRlbXBsYXRlTW9kdWxlLFxyXG4gICAgTmVzdGVkT3B0aW9uSG9zdCxcclxuICAgIEl0ZXJhYmxlRGlmZmVySGVscGVyLFxyXG4gICAgV2F0Y2hlckhlbHBlcixcclxuICAgIENvbGxlY3Rpb25OZXN0ZWRPcHRpb24sXHJcbn0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgRHhvQ29sdW1uQ2hvb3Nlck1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9Qb3NpdGlvbk1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9BdE1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9Cb3VuZGFyeU9mZnNldE1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9Db2xsaXNpb25Nb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvTXlNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvT2Zmc2V0TW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1NlYXJjaE1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9TZWxlY3Rpb25Nb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvQ29sdW1uRml4aW5nTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL25lc3RlZCc7XHJcbmltcG9ydCB7IER4b0ljb25zTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RleHRzTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL25lc3RlZCc7XHJcbmltcG9ydCB7IER4aUNvbHVtbk1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeGlCdXR0b25Nb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvTG9va3VwTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL25lc3RlZCc7XHJcbmltcG9ydCB7IER4b0Zvcm1hdE1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9Gb3JtSXRlbU1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9MYWJlbE1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeGlWYWxpZGF0aW9uUnVsZU1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9IZWFkZXJGaWx0ZXJNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvRWRpdGluZ01vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeGlDaGFuZ2VNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvRm9ybU1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9Db2xDb3VudEJ5U2NyZWVuTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL25lc3RlZCc7XHJcbmltcG9ydCB7IER4aUl0ZW1Nb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVGFiUGFuZWxPcHRpb25zTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL25lc3RlZCc7XHJcbmltcG9ydCB7IER4aVRhYk1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9CdXR0b25PcHRpb25zTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1BvcHVwTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL25lc3RlZCc7XHJcbmltcG9ydCB7IER4b0FuaW1hdGlvbk1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9IaWRlTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL25lc3RlZCc7XHJcbmltcG9ydCB7IER4b0Zyb21Nb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVG9Nb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvU2hvd01vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9GaWx0ZXJCdWlsZGVyTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL25lc3RlZCc7XHJcbmltcG9ydCB7IER4aUN1c3RvbU9wZXJhdGlvbk1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeGlGaWVsZE1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9GaWx0ZXJPcGVyYXRpb25EZXNjcmlwdGlvbnNNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvR3JvdXBPcGVyYXRpb25EZXNjcmlwdGlvbnNNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvRmlsdGVyQnVpbGRlclBvcHVwTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL25lc3RlZCc7XHJcbmltcG9ydCB7IER4b0ZpbHRlclBhbmVsTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL25lc3RlZCc7XHJcbmltcG9ydCB7IER4b0ZpbHRlclJvd01vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9PcGVyYXRpb25EZXNjcmlwdGlvbnNNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvS2V5Ym9hcmROYXZpZ2F0aW9uTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL25lc3RlZCc7XHJcbmltcG9ydCB7IER4b0xvYWRQYW5lbE1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9QYWdlck1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9QYWdpbmdNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvUmVtb3RlT3BlcmF0aW9uc01vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9Sb3dEcmFnZ2luZ01vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9DdXJzb3JPZmZzZXRNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1NlYXJjaFBhbmVsTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1NvcnRpbmdNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvU3RhdGVTdG9yaW5nTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1Rvb2xiYXJNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvbmVzdGVkJztcclxuXHJcbmltcG9ydCB7IER4b1RyZWVMaXN0QUlNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0QUlPcHRpb25zTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3RyZWUtbGlzdC9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9UcmVlTGlzdEFuaW1hdGlvbk1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhpVHJlZUxpc3RBc3luY1J1bGVNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0QXRNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0Qm91bmRhcnlPZmZzZXRNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4aVRyZWVMaXN0QnV0dG9uTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3RyZWUtbGlzdC9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeGlUcmVlTGlzdENoYW5nZU1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RDb2xDb3VudEJ5U2NyZWVuTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3RyZWUtbGlzdC9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9UcmVlTGlzdENvbGxpc2lvbk1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhpVHJlZUxpc3RDb2x1bW5Nb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4aVRyZWVMaXN0Q29sdW1uQnV0dG9uTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3RyZWUtbGlzdC9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9UcmVlTGlzdENvbHVtbkNob29zZXJNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0Q29sdW1uQ2hvb3NlclNlYXJjaE1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RDb2x1bW5DaG9vc2VyU2VsZWN0aW9uTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3RyZWUtbGlzdC9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9UcmVlTGlzdENvbHVtbkZpeGluZ01vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RDb2x1bW5GaXhpbmdUZXh0c01vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RDb2x1bW5IZWFkZXJGaWx0ZXJNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0Q29sdW1uSGVhZGVyRmlsdGVyU2VhcmNoTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3RyZWUtbGlzdC9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9UcmVlTGlzdENvbHVtbkxvb2t1cE1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhpVHJlZUxpc3RDb21wYXJlUnVsZU1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RDdXJzb3JPZmZzZXRNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4aVRyZWVMaXN0Q3VzdG9tT3BlcmF0aW9uTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3RyZWUtbGlzdC9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeGlUcmVlTGlzdEN1c3RvbVJ1bGVNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0RWRpdGluZ01vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RFZGl0aW5nVGV4dHNNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0RWRpdG9yT3B0aW9uc01vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhpVHJlZUxpc3RFZGl0b3JPcHRpb25zQnV0dG9uTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3RyZWUtbGlzdC9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeGlUcmVlTGlzdEVtYWlsUnVsZU1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhpVHJlZUxpc3RGaWVsZE1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RGaWVsZExvb2t1cE1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RGaWx0ZXJCdWlsZGVyTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3RyZWUtbGlzdC9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9UcmVlTGlzdEZpbHRlckJ1aWxkZXJQb3B1cE1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RGaWx0ZXJPcGVyYXRpb25EZXNjcmlwdGlvbnNNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0RmlsdGVyUGFuZWxNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0RmlsdGVyUGFuZWxUZXh0c01vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RGaWx0ZXJSb3dNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0Rm9ybU1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RGb3JtYXRNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0Rm9ybUl0ZW1Nb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0RnJvbU1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RHcm91cE9wZXJhdGlvbkRlc2NyaXB0aW9uc01vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RIZWFkZXJGaWx0ZXJNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0SGlkZU1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RJY29uc01vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RJbmRpY2F0b3JPcHRpb25zTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3RyZWUtbGlzdC9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeGlUcmVlTGlzdEl0ZW1Nb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0S2V5Ym9hcmROYXZpZ2F0aW9uTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3RyZWUtbGlzdC9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9UcmVlTGlzdExhYmVsTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3RyZWUtbGlzdC9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9UcmVlTGlzdExvYWRQYW5lbE1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RMb29rdXBNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0TXlNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4aVRyZWVMaXN0TnVtZXJpY1J1bGVNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0T2Zmc2V0TW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3RyZWUtbGlzdC9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9UcmVlTGlzdE9wZXJhdGlvbkRlc2NyaXB0aW9uc01vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RPcHRpb25zTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3RyZWUtbGlzdC9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9UcmVlTGlzdFBhZ2VyTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3RyZWUtbGlzdC9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9UcmVlTGlzdFBhZ2luZ01vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhpVHJlZUxpc3RQYXR0ZXJuUnVsZU1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RQb3B1cE1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RQb3NpdGlvbk1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhpVHJlZUxpc3RSYW5nZVJ1bGVNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0UmVtb3RlT3BlcmF0aW9uc01vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhpVHJlZUxpc3RSZXF1aXJlZFJ1bGVNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0Um93RHJhZ2dpbmdNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0U2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3RyZWUtbGlzdC9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9UcmVlTGlzdFNlYXJjaE1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RTZWFyY2hQYW5lbE1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RTZWxlY3Rpb25Nb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0U2hvd01vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RTb3J0aW5nTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3RyZWUtbGlzdC9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9UcmVlTGlzdFN0YXRlU3RvcmluZ01vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhpVHJlZUxpc3RTdHJpbmdMZW5ndGhSdWxlTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3RyZWUtbGlzdC9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9UcmVlTGlzdFRleHRzTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3RyZWUtbGlzdC9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9UcmVlTGlzdFRvTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3RyZWUtbGlzdC9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeG9UcmVlTGlzdFRvb2xiYXJNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4aVRyZWVMaXN0VG9vbGJhckl0ZW1Nb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0VHJlZUxpc3RIZWFkZXJGaWx0ZXJNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0VHJlZUxpc3RIZWFkZXJGaWx0ZXJTZWFyY2hNb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4b1RyZWVMaXN0VHJlZUxpc3RIZWFkZXJGaWx0ZXJUZXh0c01vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhvVHJlZUxpc3RUcmVlTGlzdFNlbGVjdGlvbk1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhpVHJlZUxpc3RWYWxpZGF0aW9uUnVsZU1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhpVHJlZUxpc3RCdXR0b25JdGVtTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3RyZWUtbGlzdC9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeGlUcmVlTGlzdEVtcHR5SXRlbU1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhpVHJlZUxpc3RHcm91cEl0ZW1Nb2R1bGUgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcbmltcG9ydCB7IER4aVRyZWVMaXN0U2ltcGxlSXRlbU1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgRHhpVHJlZUxpc3RUYWJiZWRJdGVtTW9kdWxlIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL3RyZWUtbGlzdC9uZXN0ZWQnO1xyXG5pbXBvcnQgeyBEeGlUcmVlTGlzdFRhYk1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS90cmVlLWxpc3QvbmVzdGVkJztcclxuaW1wb3J0IHsgXHJcbiAgICAgICAgICAgUFJPUEVSVFlfVE9LRU5fdmFsaWRhdGlvblJ1bGVzLFxyXG4gICAgICAgICAgIFBST1BFUlRZX1RPS0VOX2J1dHRvbnMsXHJcbiAgICAgICAgICAgUFJPUEVSVFlfVE9LRU5fY2hhbmdlcyxcclxuICAgICAgICAgICBQUk9QRVJUWV9UT0tFTl9jb2x1bW5zLFxyXG4gICAgICAgICAgIFBST1BFUlRZX1RPS0VOX2N1c3RvbU9wZXJhdGlvbnMsXHJcbiAgICAgICAgICAgUFJPUEVSVFlfVE9LRU5fZmllbGRzLFxyXG4gICAgICAgICAgIFBST1BFUlRZX1RPS0VOX2l0ZW1zLFxyXG4gICAgICAgICAgIFBST1BFUlRZX1RPS0VOX3Rvb2xiYXJJdGVtcyxcclxuICAgICAgICAgICBQUk9QRVJUWV9UT0tFTl90YWJzLFxyXG4gICAgIH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL2NvcmUvdG9rZW5zJztcclxuXHJcblxyXG4vKipcclxuICogW2Rlc2NyOmR4VHJlZUxpc3RdXHJcblxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2R4LXRyZWUtbGlzdCcsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgdGVtcGxhdGU6ICcnLFxyXG4gICAgaG9zdDogeyBuZ1NraXBIeWRyYXRpb246ICd0cnVlJyB9LFxyXG4gICAgaW1wb3J0czogWyBEeEludGVncmF0aW9uTW9kdWxlIF0sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICBEeFRlbXBsYXRlSG9zdCxcclxuICAgICAgICBXYXRjaGVySGVscGVyLFxyXG4gICAgICAgIE5lc3RlZE9wdGlvbkhvc3QsXHJcbiAgICAgICAgSXRlcmFibGVEaWZmZXJIZWxwZXJcclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIER4VHJlZUxpc3RDb21wb25lbnQ8VFJvd0RhdGEgPSBhbnksIFRLZXkgPSBhbnk+IGV4dGVuZHMgRHhDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgRG9DaGVjayB7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihQUk9QRVJUWV9UT0tFTl92YWxpZGF0aW9uUnVsZXMpXHJcbiAgICBzZXQgX3ZhbGlkYXRpb25SdWxlc0NvbnRlbnRDaGlsZHJlbih2YWx1ZTogUXVlcnlMaXN0PENvbGxlY3Rpb25OZXN0ZWRPcHRpb24+KSB7XHJcbiAgICAgICAgdGhpcy5zZXRDaGlsZHJlbigndmFsaWRhdGlvblJ1bGVzJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oUFJPUEVSVFlfVE9LRU5fYnV0dG9ucylcclxuICAgIHNldCBfYnV0dG9uc0NvbnRlbnRDaGlsZHJlbih2YWx1ZTogUXVlcnlMaXN0PENvbGxlY3Rpb25OZXN0ZWRPcHRpb24+KSB7XHJcbiAgICAgICAgdGhpcy5zZXRDaGlsZHJlbignYnV0dG9ucycsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBAQ29udGVudENoaWxkcmVuKFBST1BFUlRZX1RPS0VOX2NoYW5nZXMpXHJcbiAgICBzZXQgX2NoYW5nZXNDb250ZW50Q2hpbGRyZW4odmFsdWU6IFF1ZXJ5TGlzdDxDb2xsZWN0aW9uTmVzdGVkT3B0aW9uPikge1xyXG4gICAgICAgIHRoaXMuc2V0Q2hpbGRyZW4oJ2NoYW5nZXMnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihQUk9QRVJUWV9UT0tFTl9jb2x1bW5zKVxyXG4gICAgc2V0IF9jb2x1bW5zQ29udGVudENoaWxkcmVuKHZhbHVlOiBRdWVyeUxpc3Q8Q29sbGVjdGlvbk5lc3RlZE9wdGlvbj4pIHtcclxuICAgICAgICB0aGlzLnNldENoaWxkcmVuKCdjb2x1bW5zJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oUFJPUEVSVFlfVE9LRU5fY3VzdG9tT3BlcmF0aW9ucylcclxuICAgIHNldCBfY3VzdG9tT3BlcmF0aW9uc0NvbnRlbnRDaGlsZHJlbih2YWx1ZTogUXVlcnlMaXN0PENvbGxlY3Rpb25OZXN0ZWRPcHRpb24+KSB7XHJcbiAgICAgICAgdGhpcy5zZXRDaGlsZHJlbignY3VzdG9tT3BlcmF0aW9ucycsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBAQ29udGVudENoaWxkcmVuKFBST1BFUlRZX1RPS0VOX2ZpZWxkcylcclxuICAgIHNldCBfZmllbGRzQ29udGVudENoaWxkcmVuKHZhbHVlOiBRdWVyeUxpc3Q8Q29sbGVjdGlvbk5lc3RlZE9wdGlvbj4pIHtcclxuICAgICAgICB0aGlzLnNldENoaWxkcmVuKCdmaWVsZHMnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZHJlbihQUk9QRVJUWV9UT0tFTl9pdGVtcylcclxuICAgIHNldCBfaXRlbXNDb250ZW50Q2hpbGRyZW4odmFsdWU6IFF1ZXJ5TGlzdDxDb2xsZWN0aW9uTmVzdGVkT3B0aW9uPikge1xyXG4gICAgICAgIHRoaXMuc2V0Q2hpbGRyZW4oJ2l0ZW1zJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oUFJPUEVSVFlfVE9LRU5fdG9vbGJhckl0ZW1zKVxyXG4gICAgc2V0IF90b29sYmFySXRlbXNDb250ZW50Q2hpbGRyZW4odmFsdWU6IFF1ZXJ5TGlzdDxDb2xsZWN0aW9uTmVzdGVkT3B0aW9uPikge1xyXG4gICAgICAgIHRoaXMuc2V0Q2hpbGRyZW4oJ3Rvb2xiYXJJdGVtcycsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBAQ29udGVudENoaWxkcmVuKFBST1BFUlRZX1RPS0VOX3RhYnMpXHJcbiAgICBzZXQgX3RhYnNDb250ZW50Q2hpbGRyZW4odmFsdWU6IFF1ZXJ5TGlzdDxDb2xsZWN0aW9uTmVzdGVkT3B0aW9uPikge1xyXG4gICAgICAgIHRoaXMuc2V0Q2hpbGRyZW4oJ3RhYnMnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5zdGFuY2U6IER4VHJlZUxpc3Q8VFJvd0RhdGEsIFRLZXk+ID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpXaWRnZXRPcHRpb25zLmFjY2Vzc0tleV1cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGFjY2Vzc0tleSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2FjY2Vzc0tleScpO1xyXG4gICAgfVxyXG4gICAgc2V0IGFjY2Vzc0tleSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdhY2Nlc3NLZXknLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOldpZGdldE9wdGlvbnMuYWN0aXZlU3RhdGVFbmFibGVkXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgYWN0aXZlU3RhdGVFbmFibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2FjdGl2ZVN0YXRlRW5hYmxlZCcpO1xyXG4gICAgfVxyXG4gICAgc2V0IGFjdGl2ZVN0YXRlRW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignYWN0aXZlU3RhdGVFbmFibGVkJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpHcmlkQmFzZU9wdGlvbnMuYWlJbnRlZ3JhdGlvbl1cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGFpSW50ZWdyYXRpb24oKTogQUlJbnRlZ3JhdGlvbiB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignYWlJbnRlZ3JhdGlvbicpO1xyXG4gICAgfVxyXG4gICAgc2V0IGFpSW50ZWdyYXRpb24odmFsdWU6IEFJSW50ZWdyYXRpb24gfCB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2FpSW50ZWdyYXRpb24nLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOkdyaWRCYXNlT3B0aW9ucy5hbGxvd0NvbHVtblJlb3JkZXJpbmddXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBhbGxvd0NvbHVtblJlb3JkZXJpbmcoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignYWxsb3dDb2x1bW5SZW9yZGVyaW5nJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgYWxsb3dDb2x1bW5SZW9yZGVyaW5nKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdhbGxvd0NvbHVtblJlb3JkZXJpbmcnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOkdyaWRCYXNlT3B0aW9ucy5hbGxvd0NvbHVtblJlc2l6aW5nXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgYWxsb3dDb2x1bW5SZXNpemluZygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdhbGxvd0NvbHVtblJlc2l6aW5nJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgYWxsb3dDb2x1bW5SZXNpemluZyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignYWxsb3dDb2x1bW5SZXNpemluZycsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6ZHhUcmVlTGlzdE9wdGlvbnMuYXV0b0V4cGFuZEFsbF1cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGF1dG9FeHBhbmRBbGwoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignYXV0b0V4cGFuZEFsbCcpO1xyXG4gICAgfVxyXG4gICAgc2V0IGF1dG9FeHBhbmRBbGwodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2F1dG9FeHBhbmRBbGwnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOkdyaWRCYXNlT3B0aW9ucy5hdXRvTmF2aWdhdGVUb0ZvY3VzZWRSb3ddXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBhdXRvTmF2aWdhdGVUb0ZvY3VzZWRSb3coKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignYXV0b05hdmlnYXRlVG9Gb2N1c2VkUm93Jyk7XHJcbiAgICB9XHJcbiAgICBzZXQgYXV0b05hdmlnYXRlVG9Gb2N1c2VkUm93KHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdhdXRvTmF2aWdhdGVUb0ZvY3VzZWRSb3cnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOkdyaWRCYXNlT3B0aW9ucy5jYWNoZUVuYWJsZWRdXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBjYWNoZUVuYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignY2FjaGVFbmFibGVkJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgY2FjaGVFbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdjYWNoZUVuYWJsZWQnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOkdyaWRCYXNlT3B0aW9ucy5jZWxsSGludEVuYWJsZWRdXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBjZWxsSGludEVuYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignY2VsbEhpbnRFbmFibGVkJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgY2VsbEhpbnRFbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdjZWxsSGludEVuYWJsZWQnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOkdyaWRCYXNlT3B0aW9ucy5jb2x1bW5BdXRvV2lkdGhdXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBjb2x1bW5BdXRvV2lkdGgoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignY29sdW1uQXV0b1dpZHRoJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgY29sdW1uQXV0b1dpZHRoKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdjb2x1bW5BdXRvV2lkdGgnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOkdyaWRCYXNlT3B0aW9ucy5jb2x1bW5DaG9vc2VyXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgY29sdW1uQ2hvb3NlcigpOiBDb2x1bW5DaG9vc2VyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdjb2x1bW5DaG9vc2VyJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgY29sdW1uQ2hvb3Nlcih2YWx1ZTogQ29sdW1uQ2hvb3Nlcikge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignY29sdW1uQ2hvb3NlcicsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6R3JpZEJhc2VPcHRpb25zLmNvbHVtbkZpeGluZ11cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGNvbHVtbkZpeGluZygpOiB7IGVuYWJsZWQ/OiBib29sZWFuLCBpY29ucz86IHsgZml4Pzogc3RyaW5nLCBsZWZ0UG9zaXRpb24/OiBzdHJpbmcsIHJpZ2h0UG9zaXRpb24/OiBzdHJpbmcsIHN0aWNreVBvc2l0aW9uPzogc3RyaW5nLCB1bmZpeD86IHN0cmluZyB9LCB0ZXh0cz86IHsgZml4Pzogc3RyaW5nLCBsZWZ0UG9zaXRpb24/OiBzdHJpbmcsIHJpZ2h0UG9zaXRpb24/OiBzdHJpbmcsIHN0aWNreVBvc2l0aW9uPzogc3RyaW5nLCB1bmZpeD86IHN0cmluZyB9IH0ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2NvbHVtbkZpeGluZycpO1xyXG4gICAgfVxyXG4gICAgc2V0IGNvbHVtbkZpeGluZyh2YWx1ZTogeyBlbmFibGVkPzogYm9vbGVhbiwgaWNvbnM/OiB7IGZpeD86IHN0cmluZywgbGVmdFBvc2l0aW9uPzogc3RyaW5nLCByaWdodFBvc2l0aW9uPzogc3RyaW5nLCBzdGlja3lQb3NpdGlvbj86IHN0cmluZywgdW5maXg/OiBzdHJpbmcgfSwgdGV4dHM/OiB7IGZpeD86IHN0cmluZywgbGVmdFBvc2l0aW9uPzogc3RyaW5nLCByaWdodFBvc2l0aW9uPzogc3RyaW5nLCBzdGlja3lQb3NpdGlvbj86IHN0cmluZywgdW5maXg/OiBzdHJpbmcgfSB9KSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdjb2x1bW5GaXhpbmcnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOkdyaWRCYXNlT3B0aW9ucy5jb2x1bW5IaWRpbmdFbmFibGVkXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgY29sdW1uSGlkaW5nRW5hYmxlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdjb2x1bW5IaWRpbmdFbmFibGVkJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgY29sdW1uSGlkaW5nRW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignY29sdW1uSGlkaW5nRW5hYmxlZCcsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6R3JpZEJhc2VPcHRpb25zLmNvbHVtbk1pbldpZHRoXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgY29sdW1uTWluV2lkdGgoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdjb2x1bW5NaW5XaWR0aCcpO1xyXG4gICAgfVxyXG4gICAgc2V0IGNvbHVtbk1pbldpZHRoKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2NvbHVtbk1pbldpZHRoJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpHcmlkQmFzZU9wdGlvbnMuY29sdW1uUmVzaXppbmdNb2RlXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgY29sdW1uUmVzaXppbmdNb2RlKCk6IENvbHVtblJlc2l6ZU1vZGUge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2NvbHVtblJlc2l6aW5nTW9kZScpO1xyXG4gICAgfVxyXG4gICAgc2V0IGNvbHVtblJlc2l6aW5nTW9kZSh2YWx1ZTogQ29sdW1uUmVzaXplTW9kZSkge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignY29sdW1uUmVzaXppbmdNb2RlJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpkeFRyZWVMaXN0T3B0aW9ucy5jb2x1bW5zXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgY29sdW1ucygpOiBBcnJheTxkeFRyZWVMaXN0Q29sdW1uIHwgc3RyaW5nPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignY29sdW1ucycpO1xyXG4gICAgfVxyXG4gICAgc2V0IGNvbHVtbnModmFsdWU6IEFycmF5PGR4VHJlZUxpc3RDb2x1bW4gfCBzdHJpbmc+KSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdjb2x1bW5zJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpHcmlkQmFzZU9wdGlvbnMuY29sdW1uV2lkdGhdXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBjb2x1bW5XaWR0aCgpOiBNb2RlIHwgbnVtYmVyIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdjb2x1bW5XaWR0aCcpO1xyXG4gICAgfVxyXG4gICAgc2V0IGNvbHVtbldpZHRoKHZhbHVlOiBNb2RlIHwgbnVtYmVyIHwgdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdjb2x1bW5XaWR0aCcsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6ZHhUcmVlTGlzdE9wdGlvbnMuY3VzdG9taXplQ29sdW1uc11cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGN1c3RvbWl6ZUNvbHVtbnMoKTogKChjb2x1bW5zOiBBcnJheTxkeFRyZWVMaXN0Q29sdW1uPikgPT4gdm9pZCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2N1c3RvbWl6ZUNvbHVtbnMnKTtcclxuICAgIH1cclxuICAgIHNldCBjdXN0b21pemVDb2x1bW5zKHZhbHVlOiAoKGNvbHVtbnM6IEFycmF5PGR4VHJlZUxpc3RDb2x1bW4+KSA9PiB2b2lkKSkge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignY3VzdG9taXplQ29sdW1ucycsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6R3JpZEJhc2VPcHRpb25zLmRhdGFTb3VyY2VdXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBkYXRhU291cmNlKCk6IEFycmF5PGFueT4gfCBEYXRhU291cmNlIHwgRGF0YVNvdXJjZU9wdGlvbnMgfCBudWxsIHwgU3RvcmUgfCBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2RhdGFTb3VyY2UnKTtcclxuICAgIH1cclxuICAgIHNldCBkYXRhU291cmNlKHZhbHVlOiBBcnJheTxhbnk+IHwgRGF0YVNvdXJjZSB8IERhdGFTb3VyY2VPcHRpb25zIHwgbnVsbCB8IFN0b3JlIHwgc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdkYXRhU291cmNlJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpkeFRyZWVMaXN0T3B0aW9ucy5kYXRhU3RydWN0dXJlXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgZGF0YVN0cnVjdHVyZSgpOiBEYXRhU3RydWN0dXJlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdkYXRhU3RydWN0dXJlJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgZGF0YVN0cnVjdHVyZSh2YWx1ZTogRGF0YVN0cnVjdHVyZSkge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignZGF0YVN0cnVjdHVyZScsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6R3JpZEJhc2VPcHRpb25zLmRhdGVTZXJpYWxpemF0aW9uRm9ybWF0XVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgZGF0ZVNlcmlhbGl6YXRpb25Gb3JtYXQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdkYXRlU2VyaWFsaXphdGlvbkZvcm1hdCcpO1xyXG4gICAgfVxyXG4gICAgc2V0IGRhdGVTZXJpYWxpemF0aW9uRm9ybWF0KHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2RhdGVTZXJpYWxpemF0aW9uRm9ybWF0JywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpXaWRnZXRPcHRpb25zLmRpc2FibGVkXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignZGlzYWJsZWQnKTtcclxuICAgIH1cclxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignZGlzYWJsZWQnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOmR4VHJlZUxpc3RPcHRpb25zLmVkaXRpbmddXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBlZGl0aW5nKCk6IHsgYWxsb3dBZGRpbmc/OiBib29sZWFuIHwgKChvcHRpb25zOiB7IGNvbXBvbmVudDogZHhUcmVlTGlzdCwgcm93OiBkeFRyZWVMaXN0Um93T2JqZWN0IH0pID0+IGJvb2xlYW4pLCBhbGxvd0RlbGV0aW5nPzogYm9vbGVhbiB8ICgob3B0aW9uczogeyBjb21wb25lbnQ6IGR4VHJlZUxpc3QsIHJvdzogZHhUcmVlTGlzdFJvd09iamVjdCB9KSA9PiBib29sZWFuKSwgYWxsb3dVcGRhdGluZz86IGJvb2xlYW4gfCAoKG9wdGlvbnM6IHsgY29tcG9uZW50OiBkeFRyZWVMaXN0LCByb3c6IGR4VHJlZUxpc3RSb3dPYmplY3QgfSkgPT4gYm9vbGVhbiksIGNoYW5nZXM/OiBBcnJheTxEYXRhQ2hhbmdlPiwgY29uZmlybURlbGV0ZT86IGJvb2xlYW4sIGVkaXRDb2x1bW5OYW1lPzogc3RyaW5nLCBlZGl0Um93S2V5PzogYW55LCBmb3JtPzogZHhGb3JtT3B0aW9ucywgbW9kZT86IEdyaWRzRWRpdE1vZGUsIHBvcHVwPzogZHhQb3B1cE9wdGlvbnM8YW55PiwgcmVmcmVzaE1vZGU/OiBHcmlkc0VkaXRSZWZyZXNoTW9kZSwgc2VsZWN0VGV4dE9uRWRpdFN0YXJ0PzogYm9vbGVhbiwgc3RhcnRFZGl0QWN0aW9uPzogU3RhcnRFZGl0QWN0aW9uLCB0ZXh0cz86IHsgYWRkUm93Pzogc3RyaW5nLCBhZGRSb3dUb05vZGU/OiBzdHJpbmcsIGNhbmNlbEFsbENoYW5nZXM/OiBzdHJpbmcsIGNhbmNlbFJvd0NoYW5nZXM/OiBzdHJpbmcsIGNvbmZpcm1EZWxldGVNZXNzYWdlPzogc3RyaW5nLCBjb25maXJtRGVsZXRlVGl0bGU/OiBzdHJpbmcsIGRlbGV0ZVJvdz86IHN0cmluZywgZWRpdFJvdz86IHN0cmluZywgc2F2ZUFsbENoYW5nZXM/OiBzdHJpbmcsIHNhdmVSb3dDaGFuZ2VzPzogc3RyaW5nLCB1bmRlbGV0ZVJvdz86IHN0cmluZywgdmFsaWRhdGlvbkNhbmNlbENoYW5nZXM/OiBzdHJpbmcgfSwgdXNlSWNvbnM/OiBib29sZWFuIH0ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2VkaXRpbmcnKTtcclxuICAgIH1cclxuICAgIHNldCBlZGl0aW5nKHZhbHVlOiB7IGFsbG93QWRkaW5nPzogYm9vbGVhbiB8ICgob3B0aW9uczogeyBjb21wb25lbnQ6IGR4VHJlZUxpc3QsIHJvdzogZHhUcmVlTGlzdFJvd09iamVjdCB9KSA9PiBib29sZWFuKSwgYWxsb3dEZWxldGluZz86IGJvb2xlYW4gfCAoKG9wdGlvbnM6IHsgY29tcG9uZW50OiBkeFRyZWVMaXN0LCByb3c6IGR4VHJlZUxpc3RSb3dPYmplY3QgfSkgPT4gYm9vbGVhbiksIGFsbG93VXBkYXRpbmc/OiBib29sZWFuIHwgKChvcHRpb25zOiB7IGNvbXBvbmVudDogZHhUcmVlTGlzdCwgcm93OiBkeFRyZWVMaXN0Um93T2JqZWN0IH0pID0+IGJvb2xlYW4pLCBjaGFuZ2VzPzogQXJyYXk8RGF0YUNoYW5nZT4sIGNvbmZpcm1EZWxldGU/OiBib29sZWFuLCBlZGl0Q29sdW1uTmFtZT86IHN0cmluZywgZWRpdFJvd0tleT86IGFueSwgZm9ybT86IGR4Rm9ybU9wdGlvbnMsIG1vZGU/OiBHcmlkc0VkaXRNb2RlLCBwb3B1cD86IGR4UG9wdXBPcHRpb25zPGFueT4sIHJlZnJlc2hNb2RlPzogR3JpZHNFZGl0UmVmcmVzaE1vZGUsIHNlbGVjdFRleHRPbkVkaXRTdGFydD86IGJvb2xlYW4sIHN0YXJ0RWRpdEFjdGlvbj86IFN0YXJ0RWRpdEFjdGlvbiwgdGV4dHM/OiB7IGFkZFJvdz86IHN0cmluZywgYWRkUm93VG9Ob2RlPzogc3RyaW5nLCBjYW5jZWxBbGxDaGFuZ2VzPzogc3RyaW5nLCBjYW5jZWxSb3dDaGFuZ2VzPzogc3RyaW5nLCBjb25maXJtRGVsZXRlTWVzc2FnZT86IHN0cmluZywgY29uZmlybURlbGV0ZVRpdGxlPzogc3RyaW5nLCBkZWxldGVSb3c/OiBzdHJpbmcsIGVkaXRSb3c/OiBzdHJpbmcsIHNhdmVBbGxDaGFuZ2VzPzogc3RyaW5nLCBzYXZlUm93Q2hhbmdlcz86IHN0cmluZywgdW5kZWxldGVSb3c/OiBzdHJpbmcsIHZhbGlkYXRpb25DYW5jZWxDaGFuZ2VzPzogc3RyaW5nIH0sIHVzZUljb25zPzogYm9vbGVhbiB9KSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdlZGl0aW5nJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpET01Db21wb25lbnRPcHRpb25zLmVsZW1lbnRBdHRyXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgZWxlbWVudEF0dHIoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignZWxlbWVudEF0dHInKTtcclxuICAgIH1cclxuICAgIHNldCBlbGVtZW50QXR0cih2YWx1ZTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignZWxlbWVudEF0dHInLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOkdyaWRCYXNlT3B0aW9ucy5lcnJvclJvd0VuYWJsZWRdXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBlcnJvclJvd0VuYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignZXJyb3JSb3dFbmFibGVkJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgZXJyb3JSb3dFbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdlcnJvclJvd0VuYWJsZWQnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOmR4VHJlZUxpc3RPcHRpb25zLmV4cGFuZGVkUm93S2V5c11cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGV4cGFuZGVkUm93S2V5cygpOiBBcnJheTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdleHBhbmRlZFJvd0tleXMnKTtcclxuICAgIH1cclxuICAgIHNldCBleHBhbmRlZFJvd0tleXModmFsdWU6IEFycmF5PGFueT4pIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2V4cGFuZGVkUm93S2V5cycsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6ZHhUcmVlTGlzdE9wdGlvbnMuZXhwYW5kTm9kZXNPbkZpbHRlcmluZ11cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGV4cGFuZE5vZGVzT25GaWx0ZXJpbmcoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignZXhwYW5kTm9kZXNPbkZpbHRlcmluZycpO1xyXG4gICAgfVxyXG4gICAgc2V0IGV4cGFuZE5vZGVzT25GaWx0ZXJpbmcodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2V4cGFuZE5vZGVzT25GaWx0ZXJpbmcnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOkdyaWRCYXNlT3B0aW9ucy5maWx0ZXJCdWlsZGVyXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgZmlsdGVyQnVpbGRlcigpOiBkeEZpbHRlckJ1aWxkZXJPcHRpb25zIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdmaWx0ZXJCdWlsZGVyJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgZmlsdGVyQnVpbGRlcih2YWx1ZTogZHhGaWx0ZXJCdWlsZGVyT3B0aW9ucykge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignZmlsdGVyQnVpbGRlcicsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6R3JpZEJhc2VPcHRpb25zLmZpbHRlckJ1aWxkZXJQb3B1cF1cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGZpbHRlckJ1aWxkZXJQb3B1cCgpOiBkeFBvcHVwT3B0aW9uczxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdmaWx0ZXJCdWlsZGVyUG9wdXAnKTtcclxuICAgIH1cclxuICAgIHNldCBmaWx0ZXJCdWlsZGVyUG9wdXAodmFsdWU6IGR4UG9wdXBPcHRpb25zPGFueT4pIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2ZpbHRlckJ1aWxkZXJQb3B1cCcsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6ZHhUcmVlTGlzdE9wdGlvbnMuZmlsdGVyTW9kZV1cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGZpbHRlck1vZGUoKTogVHJlZUxpc3RGaWx0ZXJNb2RlIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdmaWx0ZXJNb2RlJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgZmlsdGVyTW9kZSh2YWx1ZTogVHJlZUxpc3RGaWx0ZXJNb2RlKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdmaWx0ZXJNb2RlJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpHcmlkQmFzZU9wdGlvbnMuZmlsdGVyUGFuZWxdXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBmaWx0ZXJQYW5lbCgpOiBGaWx0ZXJQYW5lbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignZmlsdGVyUGFuZWwnKTtcclxuICAgIH1cclxuICAgIHNldCBmaWx0ZXJQYW5lbCh2YWx1ZTogRmlsdGVyUGFuZWwpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2ZpbHRlclBhbmVsJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpHcmlkQmFzZU9wdGlvbnMuZmlsdGVyUm93XVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgZmlsdGVyUm93KCk6IHsgYXBwbHlGaWx0ZXI/OiBBcHBseUZpbHRlck1vZGUsIGFwcGx5RmlsdGVyVGV4dD86IHN0cmluZywgYmV0d2VlbkVuZFRleHQ/OiBzdHJpbmcsIGJldHdlZW5TdGFydFRleHQ/OiBzdHJpbmcsIG9wZXJhdGlvbkRlc2NyaXB0aW9ucz86IHsgYmV0d2Vlbj86IHN0cmluZywgY29udGFpbnM/OiBzdHJpbmcsIGVuZHNXaXRoPzogc3RyaW5nLCBlcXVhbD86IHN0cmluZywgZ3JlYXRlclRoYW4/OiBzdHJpbmcsIGdyZWF0ZXJUaGFuT3JFcXVhbD86IHN0cmluZywgbGVzc1RoYW4/OiBzdHJpbmcsIGxlc3NUaGFuT3JFcXVhbD86IHN0cmluZywgbm90Q29udGFpbnM/OiBzdHJpbmcsIG5vdEVxdWFsPzogc3RyaW5nLCBzdGFydHNXaXRoPzogc3RyaW5nIH0sIHJlc2V0T3BlcmF0aW9uVGV4dD86IHN0cmluZywgc2hvd0FsbFRleHQ/OiBzdHJpbmcsIHNob3dPcGVyYXRpb25DaG9vc2VyPzogYm9vbGVhbiwgdmlzaWJsZT86IGJvb2xlYW4gfSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignZmlsdGVyUm93Jyk7XHJcbiAgICB9XHJcbiAgICBzZXQgZmlsdGVyUm93KHZhbHVlOiB7IGFwcGx5RmlsdGVyPzogQXBwbHlGaWx0ZXJNb2RlLCBhcHBseUZpbHRlclRleHQ/OiBzdHJpbmcsIGJldHdlZW5FbmRUZXh0Pzogc3RyaW5nLCBiZXR3ZWVuU3RhcnRUZXh0Pzogc3RyaW5nLCBvcGVyYXRpb25EZXNjcmlwdGlvbnM/OiB7IGJldHdlZW4/OiBzdHJpbmcsIGNvbnRhaW5zPzogc3RyaW5nLCBlbmRzV2l0aD86IHN0cmluZywgZXF1YWw/OiBzdHJpbmcsIGdyZWF0ZXJUaGFuPzogc3RyaW5nLCBncmVhdGVyVGhhbk9yRXF1YWw/OiBzdHJpbmcsIGxlc3NUaGFuPzogc3RyaW5nLCBsZXNzVGhhbk9yRXF1YWw/OiBzdHJpbmcsIG5vdENvbnRhaW5zPzogc3RyaW5nLCBub3RFcXVhbD86IHN0cmluZywgc3RhcnRzV2l0aD86IHN0cmluZyB9LCByZXNldE9wZXJhdGlvblRleHQ/OiBzdHJpbmcsIHNob3dBbGxUZXh0Pzogc3RyaW5nLCBzaG93T3BlcmF0aW9uQ2hvb3Nlcj86IGJvb2xlYW4sIHZpc2libGU/OiBib29sZWFuIH0pIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2ZpbHRlclJvdycsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6R3JpZEJhc2VPcHRpb25zLmZpbHRlclN5bmNFbmFibGVkXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgZmlsdGVyU3luY0VuYWJsZWQoKTogYm9vbGVhbiB8IE1vZGUge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2ZpbHRlclN5bmNFbmFibGVkJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgZmlsdGVyU3luY0VuYWJsZWQodmFsdWU6IGJvb2xlYW4gfCBNb2RlKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdmaWx0ZXJTeW5jRW5hYmxlZCcsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6R3JpZEJhc2VPcHRpb25zLmZpbHRlclZhbHVlXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgZmlsdGVyVmFsdWUoKTogQXJyYXk8YW55PiB8IEZ1bmN0aW9uIHwgc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdmaWx0ZXJWYWx1ZScpO1xyXG4gICAgfVxyXG4gICAgc2V0IGZpbHRlclZhbHVlKHZhbHVlOiBBcnJheTxhbnk+IHwgRnVuY3Rpb24gfCBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2ZpbHRlclZhbHVlJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpHcmlkQmFzZU9wdGlvbnMuZm9jdXNlZENvbHVtbkluZGV4XVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgZm9jdXNlZENvbHVtbkluZGV4KCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignZm9jdXNlZENvbHVtbkluZGV4Jyk7XHJcbiAgICB9XHJcbiAgICBzZXQgZm9jdXNlZENvbHVtbkluZGV4KHZhbHVlOiBudW1iZXIpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2ZvY3VzZWRDb2x1bW5JbmRleCcsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6R3JpZEJhc2VPcHRpb25zLmZvY3VzZWRSb3dFbmFibGVkXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgZm9jdXNlZFJvd0VuYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignZm9jdXNlZFJvd0VuYWJsZWQnKTtcclxuICAgIH1cclxuICAgIHNldCBmb2N1c2VkUm93RW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignZm9jdXNlZFJvd0VuYWJsZWQnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOkdyaWRCYXNlT3B0aW9ucy5mb2N1c2VkUm93SW5kZXhdXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBmb2N1c2VkUm93SW5kZXgoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdmb2N1c2VkUm93SW5kZXgnKTtcclxuICAgIH1cclxuICAgIHNldCBmb2N1c2VkUm93SW5kZXgodmFsdWU6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignZm9jdXNlZFJvd0luZGV4JywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpHcmlkQmFzZU9wdGlvbnMuZm9jdXNlZFJvd0tleV1cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGZvY3VzZWRSb3dLZXkoKTogYW55IHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdmb2N1c2VkUm93S2V5Jyk7XHJcbiAgICB9XHJcbiAgICBzZXQgZm9jdXNlZFJvd0tleSh2YWx1ZTogYW55IHwgdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdmb2N1c2VkUm93S2V5JywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpkeFRyZWVMaXN0T3B0aW9ucy5oYXNJdGVtc0V4cHJdXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBoYXNJdGVtc0V4cHIoKTogRnVuY3Rpb24gfCBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2hhc0l0ZW1zRXhwcicpO1xyXG4gICAgfVxyXG4gICAgc2V0IGhhc0l0ZW1zRXhwcih2YWx1ZTogRnVuY3Rpb24gfCBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2hhc0l0ZW1zRXhwcicsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6R3JpZEJhc2VPcHRpb25zLmhlYWRlckZpbHRlcl1cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGhlYWRlckZpbHRlcigpOiBIZWFkZXJGaWx0ZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2hlYWRlckZpbHRlcicpO1xyXG4gICAgfVxyXG4gICAgc2V0IGhlYWRlckZpbHRlcih2YWx1ZTogSGVhZGVyRmlsdGVyKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdoZWFkZXJGaWx0ZXInLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOkRPTUNvbXBvbmVudE9wdGlvbnMuaGVpZ2h0XVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgaGVpZ2h0KCk6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignaGVpZ2h0Jyk7XHJcbiAgICB9XHJcbiAgICBzZXQgaGVpZ2h0KHZhbHVlOiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2hlaWdodCcsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6R3JpZEJhc2VPcHRpb25zLmhpZ2hsaWdodENoYW5nZXNdXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBoaWdobGlnaHRDaGFuZ2VzKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2hpZ2hsaWdodENoYW5nZXMnKTtcclxuICAgIH1cclxuICAgIHNldCBoaWdobGlnaHRDaGFuZ2VzKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdoaWdobGlnaHRDaGFuZ2VzJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpXaWRnZXRPcHRpb25zLmhpbnRdXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBoaW50KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignaGludCcpO1xyXG4gICAgfVxyXG4gICAgc2V0IGhpbnQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignaGludCcsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6V2lkZ2V0T3B0aW9ucy5ob3ZlclN0YXRlRW5hYmxlZF1cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGhvdmVyU3RhdGVFbmFibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2hvdmVyU3RhdGVFbmFibGVkJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgaG92ZXJTdGF0ZUVuYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2hvdmVyU3RhdGVFbmFibGVkJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpkeFRyZWVMaXN0T3B0aW9ucy5pdGVtc0V4cHJdXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBpdGVtc0V4cHIoKTogRnVuY3Rpb24gfCBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2l0ZW1zRXhwcicpO1xyXG4gICAgfVxyXG4gICAgc2V0IGl0ZW1zRXhwcih2YWx1ZTogRnVuY3Rpb24gfCBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ2l0ZW1zRXhwcicsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6R3JpZEJhc2VPcHRpb25zLmtleWJvYXJkTmF2aWdhdGlvbl1cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGtleWJvYXJkTmF2aWdhdGlvbigpOiB7IGVkaXRPbktleVByZXNzPzogYm9vbGVhbiwgZW5hYmxlZD86IGJvb2xlYW4sIGVudGVyS2V5QWN0aW9uPzogRW50ZXJLZXlBY3Rpb24sIGVudGVyS2V5RGlyZWN0aW9uPzogRW50ZXJLZXlEaXJlY3Rpb24gfSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbigna2V5Ym9hcmROYXZpZ2F0aW9uJyk7XHJcbiAgICB9XHJcbiAgICBzZXQga2V5Ym9hcmROYXZpZ2F0aW9uKHZhbHVlOiB7IGVkaXRPbktleVByZXNzPzogYm9vbGVhbiwgZW5hYmxlZD86IGJvb2xlYW4sIGVudGVyS2V5QWN0aW9uPzogRW50ZXJLZXlBY3Rpb24sIGVudGVyS2V5RGlyZWN0aW9uPzogRW50ZXJLZXlEaXJlY3Rpb24gfSkge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbigna2V5Ym9hcmROYXZpZ2F0aW9uJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpkeFRyZWVMaXN0T3B0aW9ucy5rZXlFeHByXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQga2V5RXhwcigpOiBGdW5jdGlvbiB8IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbigna2V5RXhwcicpO1xyXG4gICAgfVxyXG4gICAgc2V0IGtleUV4cHIodmFsdWU6IEZ1bmN0aW9uIHwgc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdrZXlFeHByJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpHcmlkQmFzZU9wdGlvbnMubG9hZFBhbmVsXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgbG9hZFBhbmVsKCk6IHsgZW5hYmxlZD86IGJvb2xlYW4gfCBNb2RlLCBoZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmcsIGluZGljYXRvck9wdGlvbnM/OiBMb2FkUGFuZWxJbmRpY2F0b3JQcm9wZXJ0aWVzLCBpbmRpY2F0b3JTcmM/OiBzdHJpbmcsIHNoYWRpbmc/OiBib29sZWFuLCBzaGFkaW5nQ29sb3I/OiBzdHJpbmcsIHNob3dJbmRpY2F0b3I/OiBib29sZWFuLCBzaG93UGFuZT86IGJvb2xlYW4sIHRleHQ/OiBzdHJpbmcsIHdpZHRoPzogbnVtYmVyIHwgc3RyaW5nIH0ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ2xvYWRQYW5lbCcpO1xyXG4gICAgfVxyXG4gICAgc2V0IGxvYWRQYW5lbCh2YWx1ZTogeyBlbmFibGVkPzogYm9vbGVhbiB8IE1vZGUsIGhlaWdodD86IG51bWJlciB8IHN0cmluZywgaW5kaWNhdG9yT3B0aW9ucz86IExvYWRQYW5lbEluZGljYXRvclByb3BlcnRpZXMsIGluZGljYXRvclNyYz86IHN0cmluZywgc2hhZGluZz86IGJvb2xlYW4sIHNoYWRpbmdDb2xvcj86IHN0cmluZywgc2hvd0luZGljYXRvcj86IGJvb2xlYW4sIHNob3dQYW5lPzogYm9vbGVhbiwgdGV4dD86IHN0cmluZywgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmcgfSkge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignbG9hZFBhbmVsJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpHcmlkQmFzZU9wdGlvbnMubm9EYXRhVGV4dF1cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IG5vRGF0YVRleHQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdub0RhdGFUZXh0Jyk7XHJcbiAgICB9XHJcbiAgICBzZXQgbm9EYXRhVGV4dCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdub0RhdGFUZXh0JywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpHcmlkQmFzZU9wdGlvbnMucGFnZXJdXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBwYWdlcigpOiBQYWdlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbigncGFnZXInKTtcclxuICAgIH1cclxuICAgIHNldCBwYWdlcih2YWx1ZTogUGFnZXIpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ3BhZ2VyJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpkeFRyZWVMaXN0T3B0aW9ucy5wYWdpbmddXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBwYWdpbmcoKTogeyBlbmFibGVkPzogYm9vbGVhbiwgcGFnZUluZGV4PzogbnVtYmVyLCBwYWdlU2l6ZT86IG51bWJlciB9IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdwYWdpbmcnKTtcclxuICAgIH1cclxuICAgIHNldCBwYWdpbmcodmFsdWU6IHsgZW5hYmxlZD86IGJvb2xlYW4sIHBhZ2VJbmRleD86IG51bWJlciwgcGFnZVNpemU/OiBudW1iZXIgfSkge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbigncGFnaW5nJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpkeFRyZWVMaXN0T3B0aW9ucy5wYXJlbnRJZEV4cHJdXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBwYXJlbnRJZEV4cHIoKTogRnVuY3Rpb24gfCBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ3BhcmVudElkRXhwcicpO1xyXG4gICAgfVxyXG4gICAgc2V0IHBhcmVudElkRXhwcih2YWx1ZTogRnVuY3Rpb24gfCBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ3BhcmVudElkRXhwcicsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6ZHhUcmVlTGlzdE9wdGlvbnMucmVtb3RlT3BlcmF0aW9uc11cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHJlbW90ZU9wZXJhdGlvbnMoKTogTW9kZSB8IHsgZmlsdGVyaW5nPzogYm9vbGVhbiwgZ3JvdXBpbmc/OiBib29sZWFuLCBzb3J0aW5nPzogYm9vbGVhbiB9IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdyZW1vdGVPcGVyYXRpb25zJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgcmVtb3RlT3BlcmF0aW9ucyh2YWx1ZTogTW9kZSB8IHsgZmlsdGVyaW5nPzogYm9vbGVhbiwgZ3JvdXBpbmc/OiBib29sZWFuLCBzb3J0aW5nPzogYm9vbGVhbiB9KSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdyZW1vdGVPcGVyYXRpb25zJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpHcmlkQmFzZU9wdGlvbnMucmVuZGVyQXN5bmNdXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCByZW5kZXJBc3luYygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdyZW5kZXJBc3luYycpO1xyXG4gICAgfVxyXG4gICAgc2V0IHJlbmRlckFzeW5jKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdyZW5kZXJBc3luYycsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6R3JpZEJhc2VPcHRpb25zLnJlcGFpbnRDaGFuZ2VzT25seV1cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHJlcGFpbnRDaGFuZ2VzT25seSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdyZXBhaW50Q2hhbmdlc09ubHknKTtcclxuICAgIH1cclxuICAgIHNldCByZXBhaW50Q2hhbmdlc09ubHkodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ3JlcGFpbnRDaGFuZ2VzT25seScsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6ZHhUcmVlTGlzdE9wdGlvbnMucm9vdFZhbHVlXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgcm9vdFZhbHVlKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbigncm9vdFZhbHVlJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgcm9vdFZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ3Jvb3RWYWx1ZScsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6R3JpZEJhc2VPcHRpb25zLnJvd0FsdGVybmF0aW9uRW5hYmxlZF1cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHJvd0FsdGVybmF0aW9uRW5hYmxlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdyb3dBbHRlcm5hdGlvbkVuYWJsZWQnKTtcclxuICAgIH1cclxuICAgIHNldCByb3dBbHRlcm5hdGlvbkVuYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ3Jvd0FsdGVybmF0aW9uRW5hYmxlZCcsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6R3JpZEJhc2VPcHRpb25zLnJvd0RyYWdnaW5nXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgcm93RHJhZ2dpbmcoKTogeyBhbGxvd0Ryb3BJbnNpZGVJdGVtPzogYm9vbGVhbiwgYWxsb3dSZW9yZGVyaW5nPzogYm9vbGVhbiwgYXV0b1Njcm9sbD86IGJvb2xlYW4sIGJvdW5kYXJ5PzogYW55IHwgc3RyaW5nIHwgdW5kZWZpbmVkLCBjb250YWluZXI/OiBhbnkgfCBzdHJpbmcgfCB1bmRlZmluZWQsIGN1cnNvck9mZnNldD86IHN0cmluZyB8IHsgeD86IG51bWJlciwgeT86IG51bWJlciB9LCBkYXRhPzogYW55IHwgdW5kZWZpbmVkLCBkcmFnRGlyZWN0aW9uPzogRHJhZ0RpcmVjdGlvbiwgZHJhZ1RlbXBsYXRlPzogYW55LCBkcm9wRmVlZGJhY2tNb2RlPzogRHJhZ0hpZ2hsaWdodCwgZmlsdGVyPzogc3RyaW5nLCBncm91cD86IHN0cmluZyB8IHVuZGVmaW5lZCwgaGFuZGxlPzogc3RyaW5nLCBvbkFkZD86ICgoZTogeyBjb21wb25lbnQ6IEdyaWRCYXNlLCBkcm9wSW5zaWRlSXRlbTogYm9vbGVhbiwgZXZlbnQ6IGV2ZW50LCBmcm9tQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIGZyb21EYXRhOiBhbnksIGZyb21JbmRleDogbnVtYmVyLCBpdGVtRGF0YTogYW55LCBpdGVtRWxlbWVudDogYW55LCB0b0NvbXBvbmVudDogZHhTb3J0YWJsZSB8IGR4RHJhZ2dhYmxlLCB0b0RhdGE6IGFueSwgdG9JbmRleDogbnVtYmVyIH0pID0+IHZvaWQpLCBvbkRyYWdDaGFuZ2U/OiAoKGU6IHsgY2FuY2VsOiBib29sZWFuLCBjb21wb25lbnQ6IEdyaWRCYXNlLCBkcm9wSW5zaWRlSXRlbTogYm9vbGVhbiwgZXZlbnQ6IGV2ZW50LCBmcm9tQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIGZyb21EYXRhOiBhbnksIGZyb21JbmRleDogbnVtYmVyLCBpdGVtRGF0YTogYW55LCBpdGVtRWxlbWVudDogYW55LCB0b0NvbXBvbmVudDogZHhTb3J0YWJsZSB8IGR4RHJhZ2dhYmxlLCB0b0RhdGE6IGFueSwgdG9JbmRleDogbnVtYmVyIH0pID0+IHZvaWQpLCBvbkRyYWdFbmQ/OiAoKGU6IHsgY2FuY2VsOiBib29sZWFuLCBjb21wb25lbnQ6IEdyaWRCYXNlLCBkcm9wSW5zaWRlSXRlbTogYm9vbGVhbiwgZXZlbnQ6IGV2ZW50LCBmcm9tQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIGZyb21EYXRhOiBhbnksIGZyb21JbmRleDogbnVtYmVyLCBpdGVtRGF0YTogYW55LCBpdGVtRWxlbWVudDogYW55LCB0b0NvbXBvbmVudDogZHhTb3J0YWJsZSB8IGR4RHJhZ2dhYmxlLCB0b0RhdGE6IGFueSwgdG9JbmRleDogbnVtYmVyIH0pID0+IHZvaWQpLCBvbkRyYWdNb3ZlPzogKChlOiB7IGNhbmNlbDogYm9vbGVhbiwgY29tcG9uZW50OiBHcmlkQmFzZSwgZHJvcEluc2lkZUl0ZW06IGJvb2xlYW4sIGV2ZW50OiBldmVudCwgZnJvbUNvbXBvbmVudDogZHhTb3J0YWJsZSB8IGR4RHJhZ2dhYmxlLCBmcm9tRGF0YTogYW55LCBmcm9tSW5kZXg6IG51bWJlciwgaXRlbURhdGE6IGFueSwgaXRlbUVsZW1lbnQ6IGFueSwgdG9Db21wb25lbnQ6IGR4U29ydGFibGUgfCBkeERyYWdnYWJsZSwgdG9EYXRhOiBhbnksIHRvSW5kZXg6IG51bWJlciB9KSA9PiB2b2lkKSwgb25EcmFnU3RhcnQ/OiAoKGU6IHsgY2FuY2VsOiBib29sZWFuLCBjb21wb25lbnQ6IEdyaWRCYXNlLCBldmVudDogZXZlbnQsIGZyb21EYXRhOiBhbnksIGZyb21JbmRleDogbnVtYmVyLCBpdGVtRGF0YTogYW55LCBpdGVtRWxlbWVudDogYW55IH0pID0+IHZvaWQpLCBvblJlbW92ZT86ICgoZTogeyBjb21wb25lbnQ6IEdyaWRCYXNlLCBldmVudDogZXZlbnQsIGZyb21Db21wb25lbnQ6IGR4U29ydGFibGUgfCBkeERyYWdnYWJsZSwgZnJvbURhdGE6IGFueSwgZnJvbUluZGV4OiBudW1iZXIsIGl0ZW1EYXRhOiBhbnksIGl0ZW1FbGVtZW50OiBhbnksIHRvQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIHRvRGF0YTogYW55LCB0b0luZGV4OiBudW1iZXIgfSkgPT4gdm9pZCksIG9uUmVvcmRlcj86ICgoZTogeyBjb21wb25lbnQ6IEdyaWRCYXNlLCBkcm9wSW5zaWRlSXRlbTogYm9vbGVhbiwgZXZlbnQ6IGV2ZW50LCBmcm9tQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIGZyb21EYXRhOiBhbnksIGZyb21JbmRleDogbnVtYmVyLCBpdGVtRGF0YTogYW55LCBpdGVtRWxlbWVudDogYW55LCBwcm9taXNlOiBhbnksIHRvQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIHRvRGF0YTogYW55LCB0b0luZGV4OiBudW1iZXIgfSkgPT4gdm9pZCksIHNjcm9sbFNlbnNpdGl2aXR5PzogbnVtYmVyLCBzY3JvbGxTcGVlZD86IG51bWJlciwgc2hvd0RyYWdJY29ucz86IGJvb2xlYW4gfSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbigncm93RHJhZ2dpbmcnKTtcclxuICAgIH1cclxuICAgIHNldCByb3dEcmFnZ2luZyh2YWx1ZTogeyBhbGxvd0Ryb3BJbnNpZGVJdGVtPzogYm9vbGVhbiwgYWxsb3dSZW9yZGVyaW5nPzogYm9vbGVhbiwgYXV0b1Njcm9sbD86IGJvb2xlYW4sIGJvdW5kYXJ5PzogYW55IHwgc3RyaW5nIHwgdW5kZWZpbmVkLCBjb250YWluZXI/OiBhbnkgfCBzdHJpbmcgfCB1bmRlZmluZWQsIGN1cnNvck9mZnNldD86IHN0cmluZyB8IHsgeD86IG51bWJlciwgeT86IG51bWJlciB9LCBkYXRhPzogYW55IHwgdW5kZWZpbmVkLCBkcmFnRGlyZWN0aW9uPzogRHJhZ0RpcmVjdGlvbiwgZHJhZ1RlbXBsYXRlPzogYW55LCBkcm9wRmVlZGJhY2tNb2RlPzogRHJhZ0hpZ2hsaWdodCwgZmlsdGVyPzogc3RyaW5nLCBncm91cD86IHN0cmluZyB8IHVuZGVmaW5lZCwgaGFuZGxlPzogc3RyaW5nLCBvbkFkZD86ICgoZTogeyBjb21wb25lbnQ6IEdyaWRCYXNlLCBkcm9wSW5zaWRlSXRlbTogYm9vbGVhbiwgZXZlbnQ6IGV2ZW50LCBmcm9tQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIGZyb21EYXRhOiBhbnksIGZyb21JbmRleDogbnVtYmVyLCBpdGVtRGF0YTogYW55LCBpdGVtRWxlbWVudDogYW55LCB0b0NvbXBvbmVudDogZHhTb3J0YWJsZSB8IGR4RHJhZ2dhYmxlLCB0b0RhdGE6IGFueSwgdG9JbmRleDogbnVtYmVyIH0pID0+IHZvaWQpLCBvbkRyYWdDaGFuZ2U/OiAoKGU6IHsgY2FuY2VsOiBib29sZWFuLCBjb21wb25lbnQ6IEdyaWRCYXNlLCBkcm9wSW5zaWRlSXRlbTogYm9vbGVhbiwgZXZlbnQ6IGV2ZW50LCBmcm9tQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIGZyb21EYXRhOiBhbnksIGZyb21JbmRleDogbnVtYmVyLCBpdGVtRGF0YTogYW55LCBpdGVtRWxlbWVudDogYW55LCB0b0NvbXBvbmVudDogZHhTb3J0YWJsZSB8IGR4RHJhZ2dhYmxlLCB0b0RhdGE6IGFueSwgdG9JbmRleDogbnVtYmVyIH0pID0+IHZvaWQpLCBvbkRyYWdFbmQ/OiAoKGU6IHsgY2FuY2VsOiBib29sZWFuLCBjb21wb25lbnQ6IEdyaWRCYXNlLCBkcm9wSW5zaWRlSXRlbTogYm9vbGVhbiwgZXZlbnQ6IGV2ZW50LCBmcm9tQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIGZyb21EYXRhOiBhbnksIGZyb21JbmRleDogbnVtYmVyLCBpdGVtRGF0YTogYW55LCBpdGVtRWxlbWVudDogYW55LCB0b0NvbXBvbmVudDogZHhTb3J0YWJsZSB8IGR4RHJhZ2dhYmxlLCB0b0RhdGE6IGFueSwgdG9JbmRleDogbnVtYmVyIH0pID0+IHZvaWQpLCBvbkRyYWdNb3ZlPzogKChlOiB7IGNhbmNlbDogYm9vbGVhbiwgY29tcG9uZW50OiBHcmlkQmFzZSwgZHJvcEluc2lkZUl0ZW06IGJvb2xlYW4sIGV2ZW50OiBldmVudCwgZnJvbUNvbXBvbmVudDogZHhTb3J0YWJsZSB8IGR4RHJhZ2dhYmxlLCBmcm9tRGF0YTogYW55LCBmcm9tSW5kZXg6IG51bWJlciwgaXRlbURhdGE6IGFueSwgaXRlbUVsZW1lbnQ6IGFueSwgdG9Db21wb25lbnQ6IGR4U29ydGFibGUgfCBkeERyYWdnYWJsZSwgdG9EYXRhOiBhbnksIHRvSW5kZXg6IG51bWJlciB9KSA9PiB2b2lkKSwgb25EcmFnU3RhcnQ/OiAoKGU6IHsgY2FuY2VsOiBib29sZWFuLCBjb21wb25lbnQ6IEdyaWRCYXNlLCBldmVudDogZXZlbnQsIGZyb21EYXRhOiBhbnksIGZyb21JbmRleDogbnVtYmVyLCBpdGVtRGF0YTogYW55LCBpdGVtRWxlbWVudDogYW55IH0pID0+IHZvaWQpLCBvblJlbW92ZT86ICgoZTogeyBjb21wb25lbnQ6IEdyaWRCYXNlLCBldmVudDogZXZlbnQsIGZyb21Db21wb25lbnQ6IGR4U29ydGFibGUgfCBkeERyYWdnYWJsZSwgZnJvbURhdGE6IGFueSwgZnJvbUluZGV4OiBudW1iZXIsIGl0ZW1EYXRhOiBhbnksIGl0ZW1FbGVtZW50OiBhbnksIHRvQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIHRvRGF0YTogYW55LCB0b0luZGV4OiBudW1iZXIgfSkgPT4gdm9pZCksIG9uUmVvcmRlcj86ICgoZTogeyBjb21wb25lbnQ6IEdyaWRCYXNlLCBkcm9wSW5zaWRlSXRlbTogYm9vbGVhbiwgZXZlbnQ6IGV2ZW50LCBmcm9tQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIGZyb21EYXRhOiBhbnksIGZyb21JbmRleDogbnVtYmVyLCBpdGVtRGF0YTogYW55LCBpdGVtRWxlbWVudDogYW55LCBwcm9taXNlOiBhbnksIHRvQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIHRvRGF0YTogYW55LCB0b0luZGV4OiBudW1iZXIgfSkgPT4gdm9pZCksIHNjcm9sbFNlbnNpdGl2aXR5PzogbnVtYmVyLCBzY3JvbGxTcGVlZD86IG51bWJlciwgc2hvd0RyYWdJY29ucz86IGJvb2xlYW4gfSkge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbigncm93RHJhZ2dpbmcnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOkRPTUNvbXBvbmVudE9wdGlvbnMucnRsRW5hYmxlZF1cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHJ0bEVuYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbigncnRsRW5hYmxlZCcpO1xyXG4gICAgfVxyXG4gICAgc2V0IHJ0bEVuYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ3J0bEVuYWJsZWQnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOmR4VHJlZUxpc3RPcHRpb25zLnNjcm9sbGluZ11cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHNjcm9sbGluZygpOiB7IGNvbHVtblJlbmRlcmluZ01vZGU/OiBEYXRhUmVuZGVyTW9kZSwgbW9kZT86IFNjcm9sbE1vZGUsIHByZWxvYWRFbmFibGVkPzogYm9vbGVhbiwgcmVuZGVyQXN5bmM/OiBib29sZWFuIHwgdW5kZWZpbmVkLCByb3dSZW5kZXJpbmdNb2RlPzogRGF0YVJlbmRlck1vZGUsIHNjcm9sbEJ5Q29udGVudD86IGJvb2xlYW4sIHNjcm9sbEJ5VGh1bWI/OiBib29sZWFuLCBzaG93U2Nyb2xsYmFyPzogU2Nyb2xsYmFyTW9kZSwgdXNlTmF0aXZlPzogYm9vbGVhbiB8IE1vZGUgfSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignc2Nyb2xsaW5nJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgc2Nyb2xsaW5nKHZhbHVlOiB7IGNvbHVtblJlbmRlcmluZ01vZGU/OiBEYXRhUmVuZGVyTW9kZSwgbW9kZT86IFNjcm9sbE1vZGUsIHByZWxvYWRFbmFibGVkPzogYm9vbGVhbiwgcmVuZGVyQXN5bmM/OiBib29sZWFuIHwgdW5kZWZpbmVkLCByb3dSZW5kZXJpbmdNb2RlPzogRGF0YVJlbmRlck1vZGUsIHNjcm9sbEJ5Q29udGVudD86IGJvb2xlYW4sIHNjcm9sbEJ5VGh1bWI/OiBib29sZWFuLCBzaG93U2Nyb2xsYmFyPzogU2Nyb2xsYmFyTW9kZSwgdXNlTmF0aXZlPzogYm9vbGVhbiB8IE1vZGUgfSkge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignc2Nyb2xsaW5nJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpHcmlkQmFzZU9wdGlvbnMuc2VhcmNoUGFuZWxdXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBzZWFyY2hQYW5lbCgpOiBTZWFyY2hQYW5lbCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignc2VhcmNoUGFuZWwnKTtcclxuICAgIH1cclxuICAgIHNldCBzZWFyY2hQYW5lbCh2YWx1ZTogU2VhcmNoUGFuZWwpIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ3NlYXJjaFBhbmVsJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpHcmlkQmFzZU9wdGlvbnMuc2VsZWN0ZWRSb3dLZXlzXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgc2VsZWN0ZWRSb3dLZXlzKCk6IEFycmF5PGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ3NlbGVjdGVkUm93S2V5cycpO1xyXG4gICAgfVxyXG4gICAgc2V0IHNlbGVjdGVkUm93S2V5cyh2YWx1ZTogQXJyYXk8YW55Pikge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignc2VsZWN0ZWRSb3dLZXlzJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpkeFRyZWVMaXN0T3B0aW9ucy5zZWxlY3Rpb25dXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBzZWxlY3Rpb24oKTogeyBhbGxvd1NlbGVjdEFsbD86IGJvb2xlYW4sIG1vZGU/OiBTaW5nbGVNdWx0aXBsZU9yTm9uZSwgcmVjdXJzaXZlPzogYm9vbGVhbiB9IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdzZWxlY3Rpb24nKTtcclxuICAgIH1cclxuICAgIHNldCBzZWxlY3Rpb24odmFsdWU6IHsgYWxsb3dTZWxlY3RBbGw/OiBib29sZWFuLCBtb2RlPzogU2luZ2xlTXVsdGlwbGVPck5vbmUsIHJlY3Vyc2l2ZT86IGJvb2xlYW4gfSkge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignc2VsZWN0aW9uJywgdmFsdWUpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFtkZXNjcjpHcmlkQmFzZU9wdGlvbnMuc2hvd0JvcmRlcnNdXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBzaG93Qm9yZGVycygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdzaG93Qm9yZGVycycpO1xyXG4gICAgfVxyXG4gICAgc2V0IHNob3dCb3JkZXJzKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdzaG93Qm9yZGVycycsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6R3JpZEJhc2VPcHRpb25zLnNob3dDb2x1bW5IZWFkZXJzXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgc2hvd0NvbHVtbkhlYWRlcnMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignc2hvd0NvbHVtbkhlYWRlcnMnKTtcclxuICAgIH1cclxuICAgIHNldCBzaG93Q29sdW1uSGVhZGVycyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignc2hvd0NvbHVtbkhlYWRlcnMnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOkdyaWRCYXNlT3B0aW9ucy5zaG93Q29sdW1uTGluZXNdXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBzaG93Q29sdW1uTGluZXMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignc2hvd0NvbHVtbkxpbmVzJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgc2hvd0NvbHVtbkxpbmVzKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdzaG93Q29sdW1uTGluZXMnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOkdyaWRCYXNlT3B0aW9ucy5zaG93Um93TGluZXNdXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCBzaG93Um93TGluZXMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignc2hvd1Jvd0xpbmVzJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgc2hvd1Jvd0xpbmVzKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdzaG93Um93TGluZXMnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOkdyaWRCYXNlT3B0aW9ucy5zb3J0aW5nXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgc29ydGluZygpOiBTb3J0aW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdzb3J0aW5nJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgc29ydGluZyh2YWx1ZTogU29ydGluZykge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignc29ydGluZycsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6R3JpZEJhc2VPcHRpb25zLnN0YXRlU3RvcmluZ11cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHN0YXRlU3RvcmluZygpOiB7IGN1c3RvbUxvYWQ/OiBGdW5jdGlvbiwgY3VzdG9tU2F2ZT86ICgoZ3JpZFN0YXRlOiBhbnkpID0+IHZvaWQpLCBlbmFibGVkPzogYm9vbGVhbiwgc2F2aW5nVGltZW91dD86IG51bWJlciwgc3RvcmFnZUtleT86IHN0cmluZywgdHlwZT86IFN0YXRlU3RvcmVUeXBlIH0ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ3N0YXRlU3RvcmluZycpO1xyXG4gICAgfVxyXG4gICAgc2V0IHN0YXRlU3RvcmluZyh2YWx1ZTogeyBjdXN0b21Mb2FkPzogRnVuY3Rpb24sIGN1c3RvbVNhdmU/OiAoKGdyaWRTdGF0ZTogYW55KSA9PiB2b2lkKSwgZW5hYmxlZD86IGJvb2xlYW4sIHNhdmluZ1RpbWVvdXQ/OiBudW1iZXIsIHN0b3JhZ2VLZXk/OiBzdHJpbmcsIHR5cGU/OiBTdGF0ZVN0b3JlVHlwZSB9KSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCdzdGF0ZVN0b3JpbmcnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOkdyaWRCYXNlT3B0aW9ucy5zeW5jTG9va3VwRmlsdGVyVmFsdWVzXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgc3luY0xvb2t1cEZpbHRlclZhbHVlcygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0T3B0aW9uKCdzeW5jTG9va3VwRmlsdGVyVmFsdWVzJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgc3luY0xvb2t1cEZpbHRlclZhbHVlcyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignc3luY0xvb2t1cEZpbHRlclZhbHVlcycsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6V2lkZ2V0T3B0aW9ucy50YWJJbmRleF1cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHRhYkluZGV4KCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbigndGFiSW5kZXgnKTtcclxuICAgIH1cclxuICAgIHNldCB0YWJJbmRleCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCd0YWJJbmRleCcsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6ZHhUcmVlTGlzdE9wdGlvbnMudG9vbGJhcl1cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHRvb2xiYXIoKTogZHhUcmVlTGlzdFRvb2xiYXIgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ3Rvb2xiYXInKTtcclxuICAgIH1cclxuICAgIHNldCB0b29sYmFyKHZhbHVlOiBkeFRyZWVMaXN0VG9vbGJhciB8IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbigndG9vbGJhcicsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBbZGVzY3I6R3JpZEJhc2VPcHRpb25zLnR3b1dheUJpbmRpbmdFbmFibGVkXVxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgdHdvV2F5QmluZGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbigndHdvV2F5QmluZGluZ0VuYWJsZWQnKTtcclxuICAgIH1cclxuICAgIHNldCB0d29XYXlCaW5kaW5nRW5hYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbigndHdvV2F5QmluZGluZ0VuYWJsZWQnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOldpZGdldE9wdGlvbnMudmlzaWJsZV1cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbigndmlzaWJsZScpO1xyXG4gICAgfVxyXG4gICAgc2V0IHZpc2libGUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLl9zZXRPcHRpb24oJ3Zpc2libGUnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOkRPTUNvbXBvbmVudE9wdGlvbnMud2lkdGhdXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCB3aWR0aCgpOiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRPcHRpb24oJ3dpZHRoJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgd2lkdGgodmFsdWU6IG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuX3NldE9wdGlvbignd2lkdGgnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogW2Rlc2NyOkdyaWRCYXNlT3B0aW9ucy53b3JkV3JhcEVuYWJsZWRdXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGdldCB3b3JkV3JhcEVuYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldE9wdGlvbignd29yZFdyYXBFbmFibGVkJyk7XHJcbiAgICB9XHJcbiAgICBzZXQgd29yZFdyYXBFbmFibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fc2V0T3B0aW9uKCd3b3JkV3JhcEVuYWJsZWQnLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFtkZXNjcjpkeFRyZWVMaXN0T3B0aW9ucy5vbkFkYXB0aXZlRGV0YWlsUm93UHJlcGFyaW5nXVxyXG4gICAgXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIG9uQWRhcHRpdmVEZXRhaWxSb3dQcmVwYXJpbmc6IEV2ZW50RW1pdHRlcjxBZGFwdGl2ZURldGFpbFJvd1ByZXBhcmluZ0V2ZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogW2Rlc2NyOmR4VHJlZUxpc3RPcHRpb25zLm9uQUlDb2x1bW5SZXF1ZXN0Q3JlYXRpbmddXHJcbiAgICBcclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgb25BSUNvbHVtblJlcXVlc3RDcmVhdGluZzogRXZlbnRFbWl0dGVyPEFJQ29sdW1uUmVxdWVzdENyZWF0aW5nRXZlbnQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBbZGVzY3I6ZHhUcmVlTGlzdE9wdGlvbnMub25DZWxsQ2xpY2tdXHJcbiAgICBcclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgb25DZWxsQ2xpY2s6IEV2ZW50RW1pdHRlcjxDZWxsQ2xpY2tFdmVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFtkZXNjcjpkeFRyZWVMaXN0T3B0aW9ucy5vbkNlbGxEYmxDbGlja11cclxuICAgIFxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBvbkNlbGxEYmxDbGljazogRXZlbnRFbWl0dGVyPENlbGxEYmxDbGlja0V2ZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogW2Rlc2NyOmR4VHJlZUxpc3RPcHRpb25zLm9uQ2VsbEhvdmVyQ2hhbmdlZF1cclxuICAgIFxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBvbkNlbGxIb3ZlckNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDZWxsSG92ZXJDaGFuZ2VkRXZlbnQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBbZGVzY3I6ZHhUcmVlTGlzdE9wdGlvbnMub25DZWxsUHJlcGFyZWRdXHJcbiAgICBcclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgb25DZWxsUHJlcGFyZWQ6IEV2ZW50RW1pdHRlcjxDZWxsUHJlcGFyZWRFdmVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFtkZXNjcjpkeFRyZWVMaXN0T3B0aW9ucy5vbkNvbnRlbnRSZWFkeV1cclxuICAgIFxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBvbkNvbnRlbnRSZWFkeTogRXZlbnRFbWl0dGVyPENvbnRlbnRSZWFkeUV2ZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogW2Rlc2NyOmR4VHJlZUxpc3RPcHRpb25zLm9uQ29udGV4dE1lbnVQcmVwYXJpbmddXHJcbiAgICBcclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgb25Db250ZXh0TWVudVByZXBhcmluZzogRXZlbnRFbWl0dGVyPENvbnRleHRNZW51UHJlcGFyaW5nRXZlbnQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBbZGVzY3I6ZHhUcmVlTGlzdE9wdGlvbnMub25EYXRhRXJyb3JPY2N1cnJlZF1cclxuICAgIFxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBvbkRhdGFFcnJvck9jY3VycmVkOiBFdmVudEVtaXR0ZXI8RGF0YUVycm9yT2NjdXJyZWRFdmVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFtkZXNjcjpkeFRyZWVMaXN0T3B0aW9ucy5vbkRpc3Bvc2luZ11cclxuICAgIFxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBvbkRpc3Bvc2luZzogRXZlbnRFbWl0dGVyPERpc3Bvc2luZ0V2ZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogW2Rlc2NyOmR4VHJlZUxpc3RPcHRpb25zLm9uRWRpdENhbmNlbGVkXVxyXG4gICAgXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIG9uRWRpdENhbmNlbGVkOiBFdmVudEVtaXR0ZXI8RWRpdENhbmNlbGVkRXZlbnQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBbZGVzY3I6ZHhUcmVlTGlzdE9wdGlvbnMub25FZGl0Q2FuY2VsaW5nXVxyXG4gICAgXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIG9uRWRpdENhbmNlbGluZzogRXZlbnRFbWl0dGVyPEVkaXRDYW5jZWxpbmdFdmVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFtkZXNjcjpkeFRyZWVMaXN0T3B0aW9ucy5vbkVkaXRpbmdTdGFydF1cclxuICAgIFxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBvbkVkaXRpbmdTdGFydDogRXZlbnRFbWl0dGVyPEVkaXRpbmdTdGFydEV2ZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogW2Rlc2NyOmR4VHJlZUxpc3RPcHRpb25zLm9uRWRpdG9yUHJlcGFyZWRdXHJcbiAgICBcclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgb25FZGl0b3JQcmVwYXJlZDogRXZlbnRFbWl0dGVyPEVkaXRvclByZXBhcmVkRXZlbnQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBbZGVzY3I6ZHhUcmVlTGlzdE9wdGlvbnMub25FZGl0b3JQcmVwYXJpbmddXHJcbiAgICBcclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgb25FZGl0b3JQcmVwYXJpbmc6IEV2ZW50RW1pdHRlcjxFZGl0b3JQcmVwYXJpbmdFdmVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFtkZXNjcjpkeFRyZWVMaXN0T3B0aW9ucy5vbkZvY3VzZWRDZWxsQ2hhbmdlZF1cclxuICAgIFxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBvbkZvY3VzZWRDZWxsQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEZvY3VzZWRDZWxsQ2hhbmdlZEV2ZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogW2Rlc2NyOmR4VHJlZUxpc3RPcHRpb25zLm9uRm9jdXNlZENlbGxDaGFuZ2luZ11cclxuICAgIFxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBvbkZvY3VzZWRDZWxsQ2hhbmdpbmc6IEV2ZW50RW1pdHRlcjxGb2N1c2VkQ2VsbENoYW5naW5nRXZlbnQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBbZGVzY3I6ZHhUcmVlTGlzdE9wdGlvbnMub25Gb2N1c2VkUm93Q2hhbmdlZF1cclxuICAgIFxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBvbkZvY3VzZWRSb3dDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Rm9jdXNlZFJvd0NoYW5nZWRFdmVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFtkZXNjcjpkeFRyZWVMaXN0T3B0aW9ucy5vbkZvY3VzZWRSb3dDaGFuZ2luZ11cclxuICAgIFxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBvbkZvY3VzZWRSb3dDaGFuZ2luZzogRXZlbnRFbWl0dGVyPEZvY3VzZWRSb3dDaGFuZ2luZ0V2ZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogW2Rlc2NyOmR4VHJlZUxpc3RPcHRpb25zLm9uSW5pdGlhbGl6ZWRdXHJcbiAgICBcclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgb25Jbml0aWFsaXplZDogRXZlbnRFbWl0dGVyPEluaXRpYWxpemVkRXZlbnQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBbZGVzY3I6ZHhUcmVlTGlzdE9wdGlvbnMub25Jbml0TmV3Um93XVxyXG4gICAgXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIG9uSW5pdE5ld1JvdzogRXZlbnRFbWl0dGVyPEluaXROZXdSb3dFdmVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFtkZXNjcjpkeFRyZWVMaXN0T3B0aW9ucy5vbktleURvd25dXHJcbiAgICBcclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgb25LZXlEb3duOiBFdmVudEVtaXR0ZXI8S2V5RG93bkV2ZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogW2Rlc2NyOmR4VHJlZUxpc3RPcHRpb25zLm9uTm9kZXNJbml0aWFsaXplZF1cclxuICAgIFxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBvbk5vZGVzSW5pdGlhbGl6ZWQ6IEV2ZW50RW1pdHRlcjxOb2Rlc0luaXRpYWxpemVkRXZlbnQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBbZGVzY3I6ZHhUcmVlTGlzdE9wdGlvbnMub25PcHRpb25DaGFuZ2VkXVxyXG4gICAgXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIG9uT3B0aW9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPE9wdGlvbkNoYW5nZWRFdmVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFtkZXNjcjpkeFRyZWVMaXN0T3B0aW9ucy5vblJvd0NsaWNrXVxyXG4gICAgXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIG9uUm93Q2xpY2s6IEV2ZW50RW1pdHRlcjxSb3dDbGlja0V2ZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogW2Rlc2NyOmR4VHJlZUxpc3RPcHRpb25zLm9uUm93Q29sbGFwc2VkXVxyXG4gICAgXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIG9uUm93Q29sbGFwc2VkOiBFdmVudEVtaXR0ZXI8Um93Q29sbGFwc2VkRXZlbnQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBbZGVzY3I6ZHhUcmVlTGlzdE9wdGlvbnMub25Sb3dDb2xsYXBzaW5nXVxyXG4gICAgXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIG9uUm93Q29sbGFwc2luZzogRXZlbnRFbWl0dGVyPFJvd0NvbGxhcHNpbmdFdmVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFtkZXNjcjpkeFRyZWVMaXN0T3B0aW9ucy5vblJvd0RibENsaWNrXVxyXG4gICAgXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIG9uUm93RGJsQ2xpY2s6IEV2ZW50RW1pdHRlcjxSb3dEYmxDbGlja0V2ZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogW2Rlc2NyOmR4VHJlZUxpc3RPcHRpb25zLm9uUm93RXhwYW5kZWRdXHJcbiAgICBcclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgb25Sb3dFeHBhbmRlZDogRXZlbnRFbWl0dGVyPFJvd0V4cGFuZGVkRXZlbnQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBbZGVzY3I6ZHhUcmVlTGlzdE9wdGlvbnMub25Sb3dFeHBhbmRpbmddXHJcbiAgICBcclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgb25Sb3dFeHBhbmRpbmc6IEV2ZW50RW1pdHRlcjxSb3dFeHBhbmRpbmdFdmVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFtkZXNjcjpkeFRyZWVMaXN0T3B0aW9ucy5vblJvd0luc2VydGVkXVxyXG4gICAgXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIG9uUm93SW5zZXJ0ZWQ6IEV2ZW50RW1pdHRlcjxSb3dJbnNlcnRlZEV2ZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogW2Rlc2NyOmR4VHJlZUxpc3RPcHRpb25zLm9uUm93SW5zZXJ0aW5nXVxyXG4gICAgXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIG9uUm93SW5zZXJ0aW5nOiBFdmVudEVtaXR0ZXI8Um93SW5zZXJ0aW5nRXZlbnQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBbZGVzY3I6ZHhUcmVlTGlzdE9wdGlvbnMub25Sb3dQcmVwYXJlZF1cclxuICAgIFxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBvblJvd1ByZXBhcmVkOiBFdmVudEVtaXR0ZXI8Um93UHJlcGFyZWRFdmVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFtkZXNjcjpkeFRyZWVMaXN0T3B0aW9ucy5vblJvd1JlbW92ZWRdXHJcbiAgICBcclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgb25Sb3dSZW1vdmVkOiBFdmVudEVtaXR0ZXI8Um93UmVtb3ZlZEV2ZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogW2Rlc2NyOmR4VHJlZUxpc3RPcHRpb25zLm9uUm93UmVtb3ZpbmddXHJcbiAgICBcclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgb25Sb3dSZW1vdmluZzogRXZlbnRFbWl0dGVyPFJvd1JlbW92aW5nRXZlbnQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBbZGVzY3I6ZHhUcmVlTGlzdE9wdGlvbnMub25Sb3dVcGRhdGVkXVxyXG4gICAgXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIG9uUm93VXBkYXRlZDogRXZlbnRFbWl0dGVyPFJvd1VwZGF0ZWRFdmVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFtkZXNjcjpkeFRyZWVMaXN0T3B0aW9ucy5vblJvd1VwZGF0aW5nXVxyXG4gICAgXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIG9uUm93VXBkYXRpbmc6IEV2ZW50RW1pdHRlcjxSb3dVcGRhdGluZ0V2ZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogW2Rlc2NyOmR4VHJlZUxpc3RPcHRpb25zLm9uUm93VmFsaWRhdGluZ11cclxuICAgIFxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBvblJvd1ZhbGlkYXRpbmc6IEV2ZW50RW1pdHRlcjxSb3dWYWxpZGF0aW5nRXZlbnQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBbZGVzY3I6ZHhUcmVlTGlzdE9wdGlvbnMub25TYXZlZF1cclxuICAgIFxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBvblNhdmVkOiBFdmVudEVtaXR0ZXI8U2F2ZWRFdmVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFtkZXNjcjpkeFRyZWVMaXN0T3B0aW9ucy5vblNhdmluZ11cclxuICAgIFxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBvblNhdmluZzogRXZlbnRFbWl0dGVyPFNhdmluZ0V2ZW50PjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogW2Rlc2NyOmR4VHJlZUxpc3RPcHRpb25zLm9uU2VsZWN0aW9uQ2hhbmdlZF1cclxuICAgIFxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBvblNlbGVjdGlvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxTZWxlY3Rpb25DaGFuZ2VkRXZlbnQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBbZGVzY3I6ZHhUcmVlTGlzdE9wdGlvbnMub25Ub29sYmFyUHJlcGFyaW5nXVxyXG4gICAgXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIG9uVG9vbGJhclByZXBhcmluZzogRXZlbnRFbWl0dGVyPFRvb2xiYXJQcmVwYXJpbmdFdmVudD47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGFjY2Vzc0tleUNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZyB8IHVuZGVmaW5lZD47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGFjdGl2ZVN0YXRlRW5hYmxlZENoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBhaUludGVncmF0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QUlJbnRlZ3JhdGlvbiB8IHVuZGVmaW5lZD47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGFsbG93Q29sdW1uUmVvcmRlcmluZ0NoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBhbGxvd0NvbHVtblJlc2l6aW5nQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGF1dG9FeHBhbmRBbGxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgYXV0b05hdmlnYXRlVG9Gb2N1c2VkUm93Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGNhY2hlRW5hYmxlZENoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBjZWxsSGludEVuYWJsZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgY29sdW1uQXV0b1dpZHRoQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGNvbHVtbkNob29zZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDb2x1bW5DaG9vc2VyPjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgY29sdW1uRml4aW5nQ2hhbmdlOiBFdmVudEVtaXR0ZXI8eyBlbmFibGVkPzogYm9vbGVhbiwgaWNvbnM/OiB7IGZpeD86IHN0cmluZywgbGVmdFBvc2l0aW9uPzogc3RyaW5nLCByaWdodFBvc2l0aW9uPzogc3RyaW5nLCBzdGlja3lQb3NpdGlvbj86IHN0cmluZywgdW5maXg/OiBzdHJpbmcgfSwgdGV4dHM/OiB7IGZpeD86IHN0cmluZywgbGVmdFBvc2l0aW9uPzogc3RyaW5nLCByaWdodFBvc2l0aW9uPzogc3RyaW5nLCBzdGlja3lQb3NpdGlvbj86IHN0cmluZywgdW5maXg/OiBzdHJpbmcgfSB9PjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgY29sdW1uSGlkaW5nRW5hYmxlZENoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBjb2x1bW5NaW5XaWR0aENoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlciB8IHVuZGVmaW5lZD47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGNvbHVtblJlc2l6aW5nTW9kZUNoYW5nZTogRXZlbnRFbWl0dGVyPENvbHVtblJlc2l6ZU1vZGU+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBjb2x1bW5zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QXJyYXk8ZHhUcmVlTGlzdENvbHVtbiB8IHN0cmluZz4+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBjb2x1bW5XaWR0aENoYW5nZTogRXZlbnRFbWl0dGVyPE1vZGUgfCBudW1iZXIgfCB1bmRlZmluZWQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBjdXN0b21pemVDb2x1bW5zQ2hhbmdlOiBFdmVudEVtaXR0ZXI8KChjb2x1bW5zOiBBcnJheTxkeFRyZWVMaXN0Q29sdW1uPikgPT4gdm9pZCk+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBkYXRhU291cmNlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QXJyYXk8YW55PiB8IERhdGFTb3VyY2UgfCBEYXRhU291cmNlT3B0aW9ucyB8IG51bGwgfCBTdG9yZSB8IHN0cmluZz47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGRhdGFTdHJ1Y3R1cmVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxEYXRhU3RydWN0dXJlPjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgZGF0ZVNlcmlhbGl6YXRpb25Gb3JtYXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBkaXNhYmxlZENoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBlZGl0aW5nQ2hhbmdlOiBFdmVudEVtaXR0ZXI8eyBhbGxvd0FkZGluZz86IGJvb2xlYW4gfCAoKG9wdGlvbnM6IHsgY29tcG9uZW50OiBkeFRyZWVMaXN0LCByb3c6IGR4VHJlZUxpc3RSb3dPYmplY3QgfSkgPT4gYm9vbGVhbiksIGFsbG93RGVsZXRpbmc/OiBib29sZWFuIHwgKChvcHRpb25zOiB7IGNvbXBvbmVudDogZHhUcmVlTGlzdCwgcm93OiBkeFRyZWVMaXN0Um93T2JqZWN0IH0pID0+IGJvb2xlYW4pLCBhbGxvd1VwZGF0aW5nPzogYm9vbGVhbiB8ICgob3B0aW9uczogeyBjb21wb25lbnQ6IGR4VHJlZUxpc3QsIHJvdzogZHhUcmVlTGlzdFJvd09iamVjdCB9KSA9PiBib29sZWFuKSwgY2hhbmdlcz86IEFycmF5PERhdGFDaGFuZ2U+LCBjb25maXJtRGVsZXRlPzogYm9vbGVhbiwgZWRpdENvbHVtbk5hbWU/OiBzdHJpbmcsIGVkaXRSb3dLZXk/OiBhbnksIGZvcm0/OiBkeEZvcm1PcHRpb25zLCBtb2RlPzogR3JpZHNFZGl0TW9kZSwgcG9wdXA/OiBkeFBvcHVwT3B0aW9uczxhbnk+LCByZWZyZXNoTW9kZT86IEdyaWRzRWRpdFJlZnJlc2hNb2RlLCBzZWxlY3RUZXh0T25FZGl0U3RhcnQ/OiBib29sZWFuLCBzdGFydEVkaXRBY3Rpb24/OiBTdGFydEVkaXRBY3Rpb24sIHRleHRzPzogeyBhZGRSb3c/OiBzdHJpbmcsIGFkZFJvd1RvTm9kZT86IHN0cmluZywgY2FuY2VsQWxsQ2hhbmdlcz86IHN0cmluZywgY2FuY2VsUm93Q2hhbmdlcz86IHN0cmluZywgY29uZmlybURlbGV0ZU1lc3NhZ2U/OiBzdHJpbmcsIGNvbmZpcm1EZWxldGVUaXRsZT86IHN0cmluZywgZGVsZXRlUm93Pzogc3RyaW5nLCBlZGl0Um93Pzogc3RyaW5nLCBzYXZlQWxsQ2hhbmdlcz86IHN0cmluZywgc2F2ZVJvd0NoYW5nZXM/OiBzdHJpbmcsIHVuZGVsZXRlUm93Pzogc3RyaW5nLCB2YWxpZGF0aW9uQ2FuY2VsQ2hhbmdlcz86IHN0cmluZyB9LCB1c2VJY29ucz86IGJvb2xlYW4gfT47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGVsZW1lbnRBdHRyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8UmVjb3JkPHN0cmluZywgYW55Pj47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGVycm9yUm93RW5hYmxlZENoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBleHBhbmRlZFJvd0tleXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBcnJheTxhbnk+PjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgZXhwYW5kTm9kZXNPbkZpbHRlcmluZ0NoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBmaWx0ZXJCdWlsZGVyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8ZHhGaWx0ZXJCdWlsZGVyT3B0aW9ucz47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGZpbHRlckJ1aWxkZXJQb3B1cENoYW5nZTogRXZlbnRFbWl0dGVyPGR4UG9wdXBPcHRpb25zPGFueT4+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBmaWx0ZXJNb2RlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8VHJlZUxpc3RGaWx0ZXJNb2RlPjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgZmlsdGVyUGFuZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxGaWx0ZXJQYW5lbD47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGZpbHRlclJvd0NoYW5nZTogRXZlbnRFbWl0dGVyPHsgYXBwbHlGaWx0ZXI/OiBBcHBseUZpbHRlck1vZGUsIGFwcGx5RmlsdGVyVGV4dD86IHN0cmluZywgYmV0d2VlbkVuZFRleHQ/OiBzdHJpbmcsIGJldHdlZW5TdGFydFRleHQ/OiBzdHJpbmcsIG9wZXJhdGlvbkRlc2NyaXB0aW9ucz86IHsgYmV0d2Vlbj86IHN0cmluZywgY29udGFpbnM/OiBzdHJpbmcsIGVuZHNXaXRoPzogc3RyaW5nLCBlcXVhbD86IHN0cmluZywgZ3JlYXRlclRoYW4/OiBzdHJpbmcsIGdyZWF0ZXJUaGFuT3JFcXVhbD86IHN0cmluZywgbGVzc1RoYW4/OiBzdHJpbmcsIGxlc3NUaGFuT3JFcXVhbD86IHN0cmluZywgbm90Q29udGFpbnM/OiBzdHJpbmcsIG5vdEVxdWFsPzogc3RyaW5nLCBzdGFydHNXaXRoPzogc3RyaW5nIH0sIHJlc2V0T3BlcmF0aW9uVGV4dD86IHN0cmluZywgc2hvd0FsbFRleHQ/OiBzdHJpbmcsIHNob3dPcGVyYXRpb25DaG9vc2VyPzogYm9vbGVhbiwgdmlzaWJsZT86IGJvb2xlYW4gfT47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGZpbHRlclN5bmNFbmFibGVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbiB8IE1vZGU+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBmaWx0ZXJWYWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPEFycmF5PGFueT4gfCBGdW5jdGlvbiB8IHN0cmluZz47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGZvY3VzZWRDb2x1bW5JbmRleENoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGZvY3VzZWRSb3dFbmFibGVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGZvY3VzZWRSb3dJbmRleENoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGZvY3VzZWRSb3dLZXlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnkgfCB1bmRlZmluZWQ+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBoYXNJdGVtc0V4cHJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxGdW5jdGlvbiB8IHN0cmluZz47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGhlYWRlckZpbHRlckNoYW5nZTogRXZlbnRFbWl0dGVyPEhlYWRlckZpbHRlcj47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGhlaWdodENoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZD47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGhpZ2hsaWdodENoYW5nZXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgaGludENoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZyB8IHVuZGVmaW5lZD47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGhvdmVyU3RhdGVFbmFibGVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGl0ZW1zRXhwckNoYW5nZTogRXZlbnRFbWl0dGVyPEZ1bmN0aW9uIHwgc3RyaW5nPjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkga2V5Ym9hcmROYXZpZ2F0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8eyBlZGl0T25LZXlQcmVzcz86IGJvb2xlYW4sIGVuYWJsZWQ/OiBib29sZWFuLCBlbnRlcktleUFjdGlvbj86IEVudGVyS2V5QWN0aW9uLCBlbnRlcktleURpcmVjdGlvbj86IEVudGVyS2V5RGlyZWN0aW9uIH0+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBrZXlFeHByQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RnVuY3Rpb24gfCBzdHJpbmc+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBsb2FkUGFuZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjx7IGVuYWJsZWQ/OiBib29sZWFuIHwgTW9kZSwgaGVpZ2h0PzogbnVtYmVyIHwgc3RyaW5nLCBpbmRpY2F0b3JPcHRpb25zPzogTG9hZFBhbmVsSW5kaWNhdG9yUHJvcGVydGllcywgaW5kaWNhdG9yU3JjPzogc3RyaW5nLCBzaGFkaW5nPzogYm9vbGVhbiwgc2hhZGluZ0NvbG9yPzogc3RyaW5nLCBzaG93SW5kaWNhdG9yPzogYm9vbGVhbiwgc2hvd1BhbmU/OiBib29sZWFuLCB0ZXh0Pzogc3RyaW5nLCB3aWR0aD86IG51bWJlciB8IHN0cmluZyB9PjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgbm9EYXRhVGV4dENoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIHBhZ2VyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8UGFnZXI+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBwYWdpbmdDaGFuZ2U6IEV2ZW50RW1pdHRlcjx7IGVuYWJsZWQ/OiBib29sZWFuLCBwYWdlSW5kZXg/OiBudW1iZXIsIHBhZ2VTaXplPzogbnVtYmVyIH0+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBwYXJlbnRJZEV4cHJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxGdW5jdGlvbiB8IHN0cmluZz47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIHJlbW90ZU9wZXJhdGlvbnNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNb2RlIHwgeyBmaWx0ZXJpbmc/OiBib29sZWFuLCBncm91cGluZz86IGJvb2xlYW4sIHNvcnRpbmc/OiBib29sZWFuIH0+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSByZW5kZXJBc3luY0NoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSByZXBhaW50Q2hhbmdlc09ubHlDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgcm9vdFZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgcm93QWx0ZXJuYXRpb25FbmFibGVkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIHJvd0RyYWdnaW5nQ2hhbmdlOiBFdmVudEVtaXR0ZXI8eyBhbGxvd0Ryb3BJbnNpZGVJdGVtPzogYm9vbGVhbiwgYWxsb3dSZW9yZGVyaW5nPzogYm9vbGVhbiwgYXV0b1Njcm9sbD86IGJvb2xlYW4sIGJvdW5kYXJ5PzogYW55IHwgc3RyaW5nIHwgdW5kZWZpbmVkLCBjb250YWluZXI/OiBhbnkgfCBzdHJpbmcgfCB1bmRlZmluZWQsIGN1cnNvck9mZnNldD86IHN0cmluZyB8IHsgeD86IG51bWJlciwgeT86IG51bWJlciB9LCBkYXRhPzogYW55IHwgdW5kZWZpbmVkLCBkcmFnRGlyZWN0aW9uPzogRHJhZ0RpcmVjdGlvbiwgZHJhZ1RlbXBsYXRlPzogYW55LCBkcm9wRmVlZGJhY2tNb2RlPzogRHJhZ0hpZ2hsaWdodCwgZmlsdGVyPzogc3RyaW5nLCBncm91cD86IHN0cmluZyB8IHVuZGVmaW5lZCwgaGFuZGxlPzogc3RyaW5nLCBvbkFkZD86ICgoZTogeyBjb21wb25lbnQ6IEdyaWRCYXNlLCBkcm9wSW5zaWRlSXRlbTogYm9vbGVhbiwgZXZlbnQ6IGV2ZW50LCBmcm9tQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIGZyb21EYXRhOiBhbnksIGZyb21JbmRleDogbnVtYmVyLCBpdGVtRGF0YTogYW55LCBpdGVtRWxlbWVudDogYW55LCB0b0NvbXBvbmVudDogZHhTb3J0YWJsZSB8IGR4RHJhZ2dhYmxlLCB0b0RhdGE6IGFueSwgdG9JbmRleDogbnVtYmVyIH0pID0+IHZvaWQpLCBvbkRyYWdDaGFuZ2U/OiAoKGU6IHsgY2FuY2VsOiBib29sZWFuLCBjb21wb25lbnQ6IEdyaWRCYXNlLCBkcm9wSW5zaWRlSXRlbTogYm9vbGVhbiwgZXZlbnQ6IGV2ZW50LCBmcm9tQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIGZyb21EYXRhOiBhbnksIGZyb21JbmRleDogbnVtYmVyLCBpdGVtRGF0YTogYW55LCBpdGVtRWxlbWVudDogYW55LCB0b0NvbXBvbmVudDogZHhTb3J0YWJsZSB8IGR4RHJhZ2dhYmxlLCB0b0RhdGE6IGFueSwgdG9JbmRleDogbnVtYmVyIH0pID0+IHZvaWQpLCBvbkRyYWdFbmQ/OiAoKGU6IHsgY2FuY2VsOiBib29sZWFuLCBjb21wb25lbnQ6IEdyaWRCYXNlLCBkcm9wSW5zaWRlSXRlbTogYm9vbGVhbiwgZXZlbnQ6IGV2ZW50LCBmcm9tQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIGZyb21EYXRhOiBhbnksIGZyb21JbmRleDogbnVtYmVyLCBpdGVtRGF0YTogYW55LCBpdGVtRWxlbWVudDogYW55LCB0b0NvbXBvbmVudDogZHhTb3J0YWJsZSB8IGR4RHJhZ2dhYmxlLCB0b0RhdGE6IGFueSwgdG9JbmRleDogbnVtYmVyIH0pID0+IHZvaWQpLCBvbkRyYWdNb3ZlPzogKChlOiB7IGNhbmNlbDogYm9vbGVhbiwgY29tcG9uZW50OiBHcmlkQmFzZSwgZHJvcEluc2lkZUl0ZW06IGJvb2xlYW4sIGV2ZW50OiBldmVudCwgZnJvbUNvbXBvbmVudDogZHhTb3J0YWJsZSB8IGR4RHJhZ2dhYmxlLCBmcm9tRGF0YTogYW55LCBmcm9tSW5kZXg6IG51bWJlciwgaXRlbURhdGE6IGFueSwgaXRlbUVsZW1lbnQ6IGFueSwgdG9Db21wb25lbnQ6IGR4U29ydGFibGUgfCBkeERyYWdnYWJsZSwgdG9EYXRhOiBhbnksIHRvSW5kZXg6IG51bWJlciB9KSA9PiB2b2lkKSwgb25EcmFnU3RhcnQ/OiAoKGU6IHsgY2FuY2VsOiBib29sZWFuLCBjb21wb25lbnQ6IEdyaWRCYXNlLCBldmVudDogZXZlbnQsIGZyb21EYXRhOiBhbnksIGZyb21JbmRleDogbnVtYmVyLCBpdGVtRGF0YTogYW55LCBpdGVtRWxlbWVudDogYW55IH0pID0+IHZvaWQpLCBvblJlbW92ZT86ICgoZTogeyBjb21wb25lbnQ6IEdyaWRCYXNlLCBldmVudDogZXZlbnQsIGZyb21Db21wb25lbnQ6IGR4U29ydGFibGUgfCBkeERyYWdnYWJsZSwgZnJvbURhdGE6IGFueSwgZnJvbUluZGV4OiBudW1iZXIsIGl0ZW1EYXRhOiBhbnksIGl0ZW1FbGVtZW50OiBhbnksIHRvQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIHRvRGF0YTogYW55LCB0b0luZGV4OiBudW1iZXIgfSkgPT4gdm9pZCksIG9uUmVvcmRlcj86ICgoZTogeyBjb21wb25lbnQ6IEdyaWRCYXNlLCBkcm9wSW5zaWRlSXRlbTogYm9vbGVhbiwgZXZlbnQ6IGV2ZW50LCBmcm9tQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIGZyb21EYXRhOiBhbnksIGZyb21JbmRleDogbnVtYmVyLCBpdGVtRGF0YTogYW55LCBpdGVtRWxlbWVudDogYW55LCBwcm9taXNlOiBhbnksIHRvQ29tcG9uZW50OiBkeFNvcnRhYmxlIHwgZHhEcmFnZ2FibGUsIHRvRGF0YTogYW55LCB0b0luZGV4OiBudW1iZXIgfSkgPT4gdm9pZCksIHNjcm9sbFNlbnNpdGl2aXR5PzogbnVtYmVyLCBzY3JvbGxTcGVlZD86IG51bWJlciwgc2hvd0RyYWdJY29ucz86IGJvb2xlYW4gfT47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIHJ0bEVuYWJsZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgc2Nyb2xsaW5nQ2hhbmdlOiBFdmVudEVtaXR0ZXI8eyBjb2x1bW5SZW5kZXJpbmdNb2RlPzogRGF0YVJlbmRlck1vZGUsIG1vZGU/OiBTY3JvbGxNb2RlLCBwcmVsb2FkRW5hYmxlZD86IGJvb2xlYW4sIHJlbmRlckFzeW5jPzogYm9vbGVhbiB8IHVuZGVmaW5lZCwgcm93UmVuZGVyaW5nTW9kZT86IERhdGFSZW5kZXJNb2RlLCBzY3JvbGxCeUNvbnRlbnQ/OiBib29sZWFuLCBzY3JvbGxCeVRodW1iPzogYm9vbGVhbiwgc2hvd1Njcm9sbGJhcj86IFNjcm9sbGJhck1vZGUsIHVzZU5hdGl2ZT86IGJvb2xlYW4gfCBNb2RlIH0+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBzZWFyY2hQYW5lbENoYW5nZTogRXZlbnRFbWl0dGVyPFNlYXJjaFBhbmVsPjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRSb3dLZXlzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QXJyYXk8YW55Pj47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPHsgYWxsb3dTZWxlY3RBbGw/OiBib29sZWFuLCBtb2RlPzogU2luZ2xlTXVsdGlwbGVPck5vbmUsIHJlY3Vyc2l2ZT86IGJvb2xlYW4gfT47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIHNob3dCb3JkZXJzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIHNob3dDb2x1bW5IZWFkZXJzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIHNob3dDb2x1bW5MaW5lc0NoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBzaG93Um93TGluZXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgc29ydGluZ0NoYW5nZTogRXZlbnRFbWl0dGVyPFNvcnRpbmc+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBzdGF0ZVN0b3JpbmdDaGFuZ2U6IEV2ZW50RW1pdHRlcjx7IGN1c3RvbUxvYWQ/OiBGdW5jdGlvbiwgY3VzdG9tU2F2ZT86ICgoZ3JpZFN0YXRlOiBhbnkpID0+IHZvaWQpLCBlbmFibGVkPzogYm9vbGVhbiwgc2F2aW5nVGltZW91dD86IG51bWJlciwgc3RvcmFnZUtleT86IHN0cmluZywgdHlwZT86IFN0YXRlU3RvcmVUeXBlIH0+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBzeW5jTG9va3VwRmlsdGVyVmFsdWVzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIHRhYkluZGV4Q2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgdG9vbGJhckNoYW5nZTogRXZlbnRFbWl0dGVyPGR4VHJlZUxpc3RUb29sYmFyIHwgdW5kZWZpbmVkPjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgdHdvV2F5QmluZGluZ0VuYWJsZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPjtcclxuXHJcbiAgICAvKipcclxuICAgIFxyXG4gICAgICogVGhpcyBtZW1iZXIgc3VwcG9ydHMgdGhlIGludGVybmFsIGluZnJhc3RydWN0dXJlIGFuZCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZCBkaXJlY3RseSBmcm9tIHlvdXIgY29kZS5cclxuICAgIFxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgdmlzaWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgXHJcbiAgICAgKiBUaGlzIG1lbWJlciBzdXBwb3J0cyB0aGUgaW50ZXJuYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIGlzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGZyb20geW91ciBjb2RlLlxyXG4gICAgXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSB3aWR0aENoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlciB8IHN0cmluZyB8IHVuZGVmaW5lZD47XHJcblxyXG4gICAgLyoqXHJcbiAgICBcclxuICAgICAqIFRoaXMgbWVtYmVyIHN1cHBvcnRzIHRoZSBpbnRlcm5hbCBpbmZyYXN0cnVjdHVyZSBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgZnJvbSB5b3VyIGNvZGUuXHJcbiAgICBcclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIHdvcmRXcmFwRW5hYmxlZENoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xyXG5cclxuXHJcblxyXG5cclxuICAgIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIG5nWm9uZTogTmdab25lLCB0ZW1wbGF0ZUhvc3Q6IER4VGVtcGxhdGVIb3N0LFxyXG4gICAgICAgICAgICBwcml2YXRlIF93YXRjaGVySGVscGVyOiBXYXRjaGVySGVscGVyLFxyXG4gICAgICAgICAgICBwcml2YXRlIF9pZGg6IEl0ZXJhYmxlRGlmZmVySGVscGVyLFxyXG4gICAgICAgICAgICBvcHRpb25Ib3N0OiBOZXN0ZWRPcHRpb25Ib3N0LFxyXG4gICAgICAgICAgICB0cmFuc2ZlclN0YXRlOiBUcmFuc2ZlclN0YXRlLFxyXG4gICAgICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBhbnkpIHtcclxuXHJcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgbmdab25lLCB0ZW1wbGF0ZUhvc3QsIF93YXRjaGVySGVscGVyLCB0cmFuc2ZlclN0YXRlLCBwbGF0Zm9ybUlkKTtcclxuXHJcbiAgICAgICAgdGhpcy5fY3JlYXRlRXZlbnRFbWl0dGVycyhbXHJcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAnYWRhcHRpdmVEZXRhaWxSb3dQcmVwYXJpbmcnLCBlbWl0OiAnb25BZGFwdGl2ZURldGFpbFJvd1ByZXBhcmluZycgfSxcclxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdhSUNvbHVtblJlcXVlc3RDcmVhdGluZycsIGVtaXQ6ICdvbkFJQ29sdW1uUmVxdWVzdENyZWF0aW5nJyB9LFxyXG4gICAgICAgICAgICB7IHN1YnNjcmliZTogJ2NlbGxDbGljaycsIGVtaXQ6ICdvbkNlbGxDbGljaycgfSxcclxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdjZWxsRGJsQ2xpY2snLCBlbWl0OiAnb25DZWxsRGJsQ2xpY2snIH0sXHJcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAnY2VsbEhvdmVyQ2hhbmdlZCcsIGVtaXQ6ICdvbkNlbGxIb3ZlckNoYW5nZWQnIH0sXHJcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAnY2VsbFByZXBhcmVkJywgZW1pdDogJ29uQ2VsbFByZXBhcmVkJyB9LFxyXG4gICAgICAgICAgICB7IHN1YnNjcmliZTogJ2NvbnRlbnRSZWFkeScsIGVtaXQ6ICdvbkNvbnRlbnRSZWFkeScgfSxcclxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdjb250ZXh0TWVudVByZXBhcmluZycsIGVtaXQ6ICdvbkNvbnRleHRNZW51UHJlcGFyaW5nJyB9LFxyXG4gICAgICAgICAgICB7IHN1YnNjcmliZTogJ2RhdGFFcnJvck9jY3VycmVkJywgZW1pdDogJ29uRGF0YUVycm9yT2NjdXJyZWQnIH0sXHJcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAnZGlzcG9zaW5nJywgZW1pdDogJ29uRGlzcG9zaW5nJyB9LFxyXG4gICAgICAgICAgICB7IHN1YnNjcmliZTogJ2VkaXRDYW5jZWxlZCcsIGVtaXQ6ICdvbkVkaXRDYW5jZWxlZCcgfSxcclxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdlZGl0Q2FuY2VsaW5nJywgZW1pdDogJ29uRWRpdENhbmNlbGluZycgfSxcclxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdlZGl0aW5nU3RhcnQnLCBlbWl0OiAnb25FZGl0aW5nU3RhcnQnIH0sXHJcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAnZWRpdG9yUHJlcGFyZWQnLCBlbWl0OiAnb25FZGl0b3JQcmVwYXJlZCcgfSxcclxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdlZGl0b3JQcmVwYXJpbmcnLCBlbWl0OiAnb25FZGl0b3JQcmVwYXJpbmcnIH0sXHJcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAnZm9jdXNlZENlbGxDaGFuZ2VkJywgZW1pdDogJ29uRm9jdXNlZENlbGxDaGFuZ2VkJyB9LFxyXG4gICAgICAgICAgICB7IHN1YnNjcmliZTogJ2ZvY3VzZWRDZWxsQ2hhbmdpbmcnLCBlbWl0OiAnb25Gb2N1c2VkQ2VsbENoYW5naW5nJyB9LFxyXG4gICAgICAgICAgICB7IHN1YnNjcmliZTogJ2ZvY3VzZWRSb3dDaGFuZ2VkJywgZW1pdDogJ29uRm9jdXNlZFJvd0NoYW5nZWQnIH0sXHJcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAnZm9jdXNlZFJvd0NoYW5naW5nJywgZW1pdDogJ29uRm9jdXNlZFJvd0NoYW5naW5nJyB9LFxyXG4gICAgICAgICAgICB7IHN1YnNjcmliZTogJ2luaXRpYWxpemVkJywgZW1pdDogJ29uSW5pdGlhbGl6ZWQnIH0sXHJcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAnaW5pdE5ld1JvdycsIGVtaXQ6ICdvbkluaXROZXdSb3cnIH0sXHJcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAna2V5RG93bicsIGVtaXQ6ICdvbktleURvd24nIH0sXHJcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAnbm9kZXNJbml0aWFsaXplZCcsIGVtaXQ6ICdvbk5vZGVzSW5pdGlhbGl6ZWQnIH0sXHJcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAnb3B0aW9uQ2hhbmdlZCcsIGVtaXQ6ICdvbk9wdGlvbkNoYW5nZWQnIH0sXHJcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAncm93Q2xpY2snLCBlbWl0OiAnb25Sb3dDbGljaycgfSxcclxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdyb3dDb2xsYXBzZWQnLCBlbWl0OiAnb25Sb3dDb2xsYXBzZWQnIH0sXHJcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAncm93Q29sbGFwc2luZycsIGVtaXQ6ICdvblJvd0NvbGxhcHNpbmcnIH0sXHJcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAncm93RGJsQ2xpY2snLCBlbWl0OiAnb25Sb3dEYmxDbGljaycgfSxcclxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdyb3dFeHBhbmRlZCcsIGVtaXQ6ICdvblJvd0V4cGFuZGVkJyB9LFxyXG4gICAgICAgICAgICB7IHN1YnNjcmliZTogJ3Jvd0V4cGFuZGluZycsIGVtaXQ6ICdvblJvd0V4cGFuZGluZycgfSxcclxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdyb3dJbnNlcnRlZCcsIGVtaXQ6ICdvblJvd0luc2VydGVkJyB9LFxyXG4gICAgICAgICAgICB7IHN1YnNjcmliZTogJ3Jvd0luc2VydGluZycsIGVtaXQ6ICdvblJvd0luc2VydGluZycgfSxcclxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdyb3dQcmVwYXJlZCcsIGVtaXQ6ICdvblJvd1ByZXBhcmVkJyB9LFxyXG4gICAgICAgICAgICB7IHN1YnNjcmliZTogJ3Jvd1JlbW92ZWQnLCBlbWl0OiAnb25Sb3dSZW1vdmVkJyB9LFxyXG4gICAgICAgICAgICB7IHN1YnNjcmliZTogJ3Jvd1JlbW92aW5nJywgZW1pdDogJ29uUm93UmVtb3ZpbmcnIH0sXHJcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAncm93VXBkYXRlZCcsIGVtaXQ6ICdvblJvd1VwZGF0ZWQnIH0sXHJcbiAgICAgICAgICAgIHsgc3Vic2NyaWJlOiAncm93VXBkYXRpbmcnLCBlbWl0OiAnb25Sb3dVcGRhdGluZycgfSxcclxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdyb3dWYWxpZGF0aW5nJywgZW1pdDogJ29uUm93VmFsaWRhdGluZycgfSxcclxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdzYXZlZCcsIGVtaXQ6ICdvblNhdmVkJyB9LFxyXG4gICAgICAgICAgICB7IHN1YnNjcmliZTogJ3NhdmluZycsIGVtaXQ6ICdvblNhdmluZycgfSxcclxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICdzZWxlY3Rpb25DaGFuZ2VkJywgZW1pdDogJ29uU2VsZWN0aW9uQ2hhbmdlZCcgfSxcclxuICAgICAgICAgICAgeyBzdWJzY3JpYmU6ICd0b29sYmFyUHJlcGFyaW5nJywgZW1pdDogJ29uVG9vbGJhclByZXBhcmluZycgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAnYWNjZXNzS2V5Q2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdhY3RpdmVTdGF0ZUVuYWJsZWRDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ2FpSW50ZWdyYXRpb25DaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ2FsbG93Q29sdW1uUmVvcmRlcmluZ0NoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAnYWxsb3dDb2x1bW5SZXNpemluZ0NoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAnYXV0b0V4cGFuZEFsbENoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAnYXV0b05hdmlnYXRlVG9Gb2N1c2VkUm93Q2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdjYWNoZUVuYWJsZWRDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ2NlbGxIaW50RW5hYmxlZENoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAnY29sdW1uQXV0b1dpZHRoQ2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdjb2x1bW5DaG9vc2VyQ2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdjb2x1bW5GaXhpbmdDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ2NvbHVtbkhpZGluZ0VuYWJsZWRDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ2NvbHVtbk1pbldpZHRoQ2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdjb2x1bW5SZXNpemluZ01vZGVDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ2NvbHVtbnNDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ2NvbHVtbldpZHRoQ2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdjdXN0b21pemVDb2x1bW5zQ2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdkYXRhU291cmNlQ2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdkYXRhU3RydWN0dXJlQ2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdkYXRlU2VyaWFsaXphdGlvbkZvcm1hdENoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAnZGlzYWJsZWRDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ2VkaXRpbmdDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ2VsZW1lbnRBdHRyQ2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdlcnJvclJvd0VuYWJsZWRDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ2V4cGFuZGVkUm93S2V5c0NoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAnZXhwYW5kTm9kZXNPbkZpbHRlcmluZ0NoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAnZmlsdGVyQnVpbGRlckNoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAnZmlsdGVyQnVpbGRlclBvcHVwQ2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdmaWx0ZXJNb2RlQ2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdmaWx0ZXJQYW5lbENoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAnZmlsdGVyUm93Q2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdmaWx0ZXJTeW5jRW5hYmxlZENoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAnZmlsdGVyVmFsdWVDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ2ZvY3VzZWRDb2x1bW5JbmRleENoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAnZm9jdXNlZFJvd0VuYWJsZWRDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ2ZvY3VzZWRSb3dJbmRleENoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAnZm9jdXNlZFJvd0tleUNoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAnaGFzSXRlbXNFeHByQ2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdoZWFkZXJGaWx0ZXJDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ2hlaWdodENoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAnaGlnaGxpZ2h0Q2hhbmdlc0NoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAnaGludENoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAnaG92ZXJTdGF0ZUVuYWJsZWRDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ2l0ZW1zRXhwckNoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAna2V5Ym9hcmROYXZpZ2F0aW9uQ2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdrZXlFeHByQ2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdsb2FkUGFuZWxDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ25vRGF0YVRleHRDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ3BhZ2VyQ2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdwYWdpbmdDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ3BhcmVudElkRXhwckNoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAncmVtb3RlT3BlcmF0aW9uc0NoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAncmVuZGVyQXN5bmNDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ3JlcGFpbnRDaGFuZ2VzT25seUNoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAncm9vdFZhbHVlQ2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdyb3dBbHRlcm5hdGlvbkVuYWJsZWRDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ3Jvd0RyYWdnaW5nQ2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdydGxFbmFibGVkQ2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdzY3JvbGxpbmdDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ3NlYXJjaFBhbmVsQ2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdzZWxlY3RlZFJvd0tleXNDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ3NlbGVjdGlvbkNoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAnc2hvd0JvcmRlcnNDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ3Nob3dDb2x1bW5IZWFkZXJzQ2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdzaG93Q29sdW1uTGluZXNDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ3Nob3dSb3dMaW5lc0NoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAnc29ydGluZ0NoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAnc3RhdGVTdG9yaW5nQ2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICdzeW5jTG9va3VwRmlsdGVyVmFsdWVzQ2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICd0YWJJbmRleENoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAndG9vbGJhckNoYW5nZScgfSxcclxuICAgICAgICAgICAgeyBlbWl0OiAndHdvV2F5QmluZGluZ0VuYWJsZWRDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ3Zpc2libGVDaGFuZ2UnIH0sXHJcbiAgICAgICAgICAgIHsgZW1pdDogJ3dpZHRoQ2hhbmdlJyB9LFxyXG4gICAgICAgICAgICB7IGVtaXQ6ICd3b3JkV3JhcEVuYWJsZWRDaGFuZ2UnIH1cclxuICAgICAgICBdKTtcclxuXHJcbiAgICAgICAgdGhpcy5faWRoLnNldEhvc3QodGhpcyk7XHJcbiAgICAgICAgb3B0aW9uSG9zdC5zZXRIb3N0KHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfY3JlYXRlSW5zdGFuY2UoZWxlbWVudCwgb3B0aW9ucykge1xyXG5cclxuICAgICAgICByZXR1cm4gbmV3IER4VHJlZUxpc3QoZWxlbWVudCwgb3B0aW9ucyk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lXaWRnZXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgICAgICAgdGhpcy5zZXR1cENoYW5nZXMoJ2NvbHVtbnMnLCBjaGFuZ2VzKTtcclxuICAgICAgICB0aGlzLnNldHVwQ2hhbmdlcygnZGF0YVNvdXJjZScsIGNoYW5nZXMpO1xyXG4gICAgICAgIHRoaXMuc2V0dXBDaGFuZ2VzKCdleHBhbmRlZFJvd0tleXMnLCBjaGFuZ2VzKTtcclxuICAgICAgICB0aGlzLnNldHVwQ2hhbmdlcygnZmlsdGVyVmFsdWUnLCBjaGFuZ2VzKTtcclxuICAgICAgICB0aGlzLnNldHVwQ2hhbmdlcygnc2VsZWN0ZWRSb3dLZXlzJywgY2hhbmdlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0dXBDaGFuZ2VzKHByb3A6IHN0cmluZywgY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmICghKHByb3AgaW4gdGhpcy5fb3B0aW9uc1RvVXBkYXRlKSkge1xyXG4gICAgICAgICAgICB0aGlzLl9pZGguc2V0dXAocHJvcCwgY2hhbmdlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nRG9DaGVjaygpIHtcclxuICAgICAgICB0aGlzLl9pZGguZG9DaGVjaygnY29sdW1ucycpO1xyXG4gICAgICAgIHRoaXMuX2lkaC5kb0NoZWNrKCdkYXRhU291cmNlJyk7XHJcbiAgICAgICAgdGhpcy5faWRoLmRvQ2hlY2soJ2V4cGFuZGVkUm93S2V5cycpO1xyXG4gICAgICAgIHRoaXMuX2lkaC5kb0NoZWNrKCdmaWx0ZXJWYWx1ZScpO1xyXG4gICAgICAgIHRoaXMuX2lkaC5kb0NoZWNrKCdzZWxlY3RlZFJvd0tleXMnKTtcclxuICAgICAgICB0aGlzLl93YXRjaGVySGVscGVyLmNoZWNrV2F0Y2hlcnMoKTtcclxuICAgICAgICBzdXBlci5uZ0RvQ2hlY2soKTtcclxuICAgICAgICBzdXBlci5jbGVhckNoYW5nZWRPcHRpb25zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgX3NldE9wdGlvbihuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcclxuICAgICAgICBsZXQgaXNTZXR1cCA9IHRoaXMuX2lkaC5zZXR1cFNpbmdsZShuYW1lLCB2YWx1ZSk7XHJcbiAgICAgICAgbGV0IGlzQ2hhbmdlZCA9IHRoaXMuX2lkaC5nZXRDaGFuZ2VzKG5hbWUsIHZhbHVlKSAhPT0gbnVsbDtcclxuXHJcbiAgICAgICAgaWYgKGlzU2V0dXAgfHwgaXNDaGFuZ2VkKSB7XHJcbiAgICAgICAgICAgIHN1cGVyLl9zZXRPcHRpb24obmFtZSwgdmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBEeFRyZWVMaXN0Q29tcG9uZW50LFxyXG4gICAgRHhvQ29sdW1uQ2hvb3Nlck1vZHVsZSxcclxuICAgIER4b1Bvc2l0aW9uTW9kdWxlLFxyXG4gICAgRHhvQXRNb2R1bGUsXHJcbiAgICBEeG9Cb3VuZGFyeU9mZnNldE1vZHVsZSxcclxuICAgIER4b0NvbGxpc2lvbk1vZHVsZSxcclxuICAgIER4b015TW9kdWxlLFxyXG4gICAgRHhvT2Zmc2V0TW9kdWxlLFxyXG4gICAgRHhvU2VhcmNoTW9kdWxlLFxyXG4gICAgRHhvU2VsZWN0aW9uTW9kdWxlLFxyXG4gICAgRHhvQ29sdW1uRml4aW5nTW9kdWxlLFxyXG4gICAgRHhvSWNvbnNNb2R1bGUsXHJcbiAgICBEeG9UZXh0c01vZHVsZSxcclxuICAgIER4aUNvbHVtbk1vZHVsZSxcclxuICAgIER4aUJ1dHRvbk1vZHVsZSxcclxuICAgIER4b0xvb2t1cE1vZHVsZSxcclxuICAgIER4b0Zvcm1hdE1vZHVsZSxcclxuICAgIER4b0Zvcm1JdGVtTW9kdWxlLFxyXG4gICAgRHhvTGFiZWxNb2R1bGUsXHJcbiAgICBEeGlWYWxpZGF0aW9uUnVsZU1vZHVsZSxcclxuICAgIER4b0hlYWRlckZpbHRlck1vZHVsZSxcclxuICAgIER4b0VkaXRpbmdNb2R1bGUsXHJcbiAgICBEeGlDaGFuZ2VNb2R1bGUsXHJcbiAgICBEeG9Gb3JtTW9kdWxlLFxyXG4gICAgRHhvQ29sQ291bnRCeVNjcmVlbk1vZHVsZSxcclxuICAgIER4aUl0ZW1Nb2R1bGUsXHJcbiAgICBEeG9UYWJQYW5lbE9wdGlvbnNNb2R1bGUsXHJcbiAgICBEeGlUYWJNb2R1bGUsXHJcbiAgICBEeG9CdXR0b25PcHRpb25zTW9kdWxlLFxyXG4gICAgRHhvUG9wdXBNb2R1bGUsXHJcbiAgICBEeG9BbmltYXRpb25Nb2R1bGUsXHJcbiAgICBEeG9IaWRlTW9kdWxlLFxyXG4gICAgRHhvRnJvbU1vZHVsZSxcclxuICAgIER4b1RvTW9kdWxlLFxyXG4gICAgRHhvU2hvd01vZHVsZSxcclxuICAgIER4b0ZpbHRlckJ1aWxkZXJNb2R1bGUsXHJcbiAgICBEeGlDdXN0b21PcGVyYXRpb25Nb2R1bGUsXHJcbiAgICBEeGlGaWVsZE1vZHVsZSxcclxuICAgIER4b0ZpbHRlck9wZXJhdGlvbkRlc2NyaXB0aW9uc01vZHVsZSxcclxuICAgIER4b0dyb3VwT3BlcmF0aW9uRGVzY3JpcHRpb25zTW9kdWxlLFxyXG4gICAgRHhvRmlsdGVyQnVpbGRlclBvcHVwTW9kdWxlLFxyXG4gICAgRHhvRmlsdGVyUGFuZWxNb2R1bGUsXHJcbiAgICBEeG9GaWx0ZXJSb3dNb2R1bGUsXHJcbiAgICBEeG9PcGVyYXRpb25EZXNjcmlwdGlvbnNNb2R1bGUsXHJcbiAgICBEeG9LZXlib2FyZE5hdmlnYXRpb25Nb2R1bGUsXHJcbiAgICBEeG9Mb2FkUGFuZWxNb2R1bGUsXHJcbiAgICBEeG9QYWdlck1vZHVsZSxcclxuICAgIER4b1BhZ2luZ01vZHVsZSxcclxuICAgIER4b1JlbW90ZU9wZXJhdGlvbnNNb2R1bGUsXHJcbiAgICBEeG9Sb3dEcmFnZ2luZ01vZHVsZSxcclxuICAgIER4b0N1cnNvck9mZnNldE1vZHVsZSxcclxuICAgIER4b1Njcm9sbGluZ01vZHVsZSxcclxuICAgIER4b1NlYXJjaFBhbmVsTW9kdWxlLFxyXG4gICAgRHhvU29ydGluZ01vZHVsZSxcclxuICAgIER4b1N0YXRlU3RvcmluZ01vZHVsZSxcclxuICAgIER4b1Rvb2xiYXJNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdEFJTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RBSU9wdGlvbnNNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdEFuaW1hdGlvbk1vZHVsZSxcclxuICAgIER4aVRyZWVMaXN0QXN5bmNSdWxlTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RBdE1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0Qm91bmRhcnlPZmZzZXRNb2R1bGUsXHJcbiAgICBEeGlUcmVlTGlzdEJ1dHRvbk1vZHVsZSxcclxuICAgIER4aVRyZWVMaXN0Q2hhbmdlTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RDb2xDb3VudEJ5U2NyZWVuTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RDb2xsaXNpb25Nb2R1bGUsXHJcbiAgICBEeGlUcmVlTGlzdENvbHVtbk1vZHVsZSxcclxuICAgIER4aVRyZWVMaXN0Q29sdW1uQnV0dG9uTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RDb2x1bW5DaG9vc2VyTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RDb2x1bW5DaG9vc2VyU2VhcmNoTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RDb2x1bW5DaG9vc2VyU2VsZWN0aW9uTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RDb2x1bW5GaXhpbmdNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdENvbHVtbkZpeGluZ1RleHRzTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RDb2x1bW5IZWFkZXJGaWx0ZXJNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdENvbHVtbkhlYWRlckZpbHRlclNlYXJjaE1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0Q29sdW1uTG9va3VwTW9kdWxlLFxyXG4gICAgRHhpVHJlZUxpc3RDb21wYXJlUnVsZU1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0Q3Vyc29yT2Zmc2V0TW9kdWxlLFxyXG4gICAgRHhpVHJlZUxpc3RDdXN0b21PcGVyYXRpb25Nb2R1bGUsXHJcbiAgICBEeGlUcmVlTGlzdEN1c3RvbVJ1bGVNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdEVkaXRpbmdNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdEVkaXRpbmdUZXh0c01vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0RWRpdG9yT3B0aW9uc01vZHVsZSxcclxuICAgIER4aVRyZWVMaXN0RWRpdG9yT3B0aW9uc0J1dHRvbk1vZHVsZSxcclxuICAgIER4aVRyZWVMaXN0RW1haWxSdWxlTW9kdWxlLFxyXG4gICAgRHhpVHJlZUxpc3RGaWVsZE1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0RmllbGRMb29rdXBNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdEZpbHRlckJ1aWxkZXJNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdEZpbHRlckJ1aWxkZXJQb3B1cE1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0RmlsdGVyT3BlcmF0aW9uRGVzY3JpcHRpb25zTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RGaWx0ZXJQYW5lbE1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0RmlsdGVyUGFuZWxUZXh0c01vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0RmlsdGVyUm93TW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RGb3JtTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RGb3JtYXRNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdEZvcm1JdGVtTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RGcm9tTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RHcm91cE9wZXJhdGlvbkRlc2NyaXB0aW9uc01vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0SGVhZGVyRmlsdGVyTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RIaWRlTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RJY29uc01vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0SW5kaWNhdG9yT3B0aW9uc01vZHVsZSxcclxuICAgIER4aVRyZWVMaXN0SXRlbU1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0S2V5Ym9hcmROYXZpZ2F0aW9uTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RMYWJlbE1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0TG9hZFBhbmVsTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RMb29rdXBNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdE15TW9kdWxlLFxyXG4gICAgRHhpVHJlZUxpc3ROdW1lcmljUnVsZU1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0T2Zmc2V0TW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RPcGVyYXRpb25EZXNjcmlwdGlvbnNNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdE9wdGlvbnNNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdFBhZ2VyTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RQYWdpbmdNb2R1bGUsXHJcbiAgICBEeGlUcmVlTGlzdFBhdHRlcm5SdWxlTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RQb3B1cE1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0UG9zaXRpb25Nb2R1bGUsXHJcbiAgICBEeGlUcmVlTGlzdFJhbmdlUnVsZU1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0UmVtb3RlT3BlcmF0aW9uc01vZHVsZSxcclxuICAgIER4aVRyZWVMaXN0UmVxdWlyZWRSdWxlTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RSb3dEcmFnZ2luZ01vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0U2Nyb2xsaW5nTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RTZWFyY2hNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdFNlYXJjaFBhbmVsTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RTZWxlY3Rpb25Nb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdFNob3dNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdFNvcnRpbmdNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdFN0YXRlU3RvcmluZ01vZHVsZSxcclxuICAgIER4aVRyZWVMaXN0U3RyaW5nTGVuZ3RoUnVsZU1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0VGV4dHNNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdFRvTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RUb29sYmFyTW9kdWxlLFxyXG4gICAgRHhpVHJlZUxpc3RUb29sYmFySXRlbU1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0VHJlZUxpc3RIZWFkZXJGaWx0ZXJNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdFRyZWVMaXN0SGVhZGVyRmlsdGVyU2VhcmNoTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RUcmVlTGlzdEhlYWRlckZpbHRlclRleHRzTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RUcmVlTGlzdFNlbGVjdGlvbk1vZHVsZSxcclxuICAgIER4aVRyZWVMaXN0VmFsaWRhdGlvblJ1bGVNb2R1bGUsXHJcbiAgICBEeGlUcmVlTGlzdEJ1dHRvbkl0ZW1Nb2R1bGUsXHJcbiAgICBEeGlUcmVlTGlzdEVtcHR5SXRlbU1vZHVsZSxcclxuICAgIER4aVRyZWVMaXN0R3JvdXBJdGVtTW9kdWxlLFxyXG4gICAgRHhpVHJlZUxpc3RTaW1wbGVJdGVtTW9kdWxlLFxyXG4gICAgRHhpVHJlZUxpc3RUYWJiZWRJdGVtTW9kdWxlLFxyXG4gICAgRHhpVHJlZUxpc3RUYWJNb2R1bGUsXHJcbiAgICBEeEludGVncmF0aW9uTW9kdWxlLFxyXG4gICAgRHhUZW1wbGF0ZU1vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgRHhUcmVlTGlzdENvbXBvbmVudCxcclxuICAgIER4b0NvbHVtbkNob29zZXJNb2R1bGUsXHJcbiAgICBEeG9Qb3NpdGlvbk1vZHVsZSxcclxuICAgIER4b0F0TW9kdWxlLFxyXG4gICAgRHhvQm91bmRhcnlPZmZzZXRNb2R1bGUsXHJcbiAgICBEeG9Db2xsaXNpb25Nb2R1bGUsXHJcbiAgICBEeG9NeU1vZHVsZSxcclxuICAgIER4b09mZnNldE1vZHVsZSxcclxuICAgIER4b1NlYXJjaE1vZHVsZSxcclxuICAgIER4b1NlbGVjdGlvbk1vZHVsZSxcclxuICAgIER4b0NvbHVtbkZpeGluZ01vZHVsZSxcclxuICAgIER4b0ljb25zTW9kdWxlLFxyXG4gICAgRHhvVGV4dHNNb2R1bGUsXHJcbiAgICBEeGlDb2x1bW5Nb2R1bGUsXHJcbiAgICBEeGlCdXR0b25Nb2R1bGUsXHJcbiAgICBEeG9Mb29rdXBNb2R1bGUsXHJcbiAgICBEeG9Gb3JtYXRNb2R1bGUsXHJcbiAgICBEeG9Gb3JtSXRlbU1vZHVsZSxcclxuICAgIER4b0xhYmVsTW9kdWxlLFxyXG4gICAgRHhpVmFsaWRhdGlvblJ1bGVNb2R1bGUsXHJcbiAgICBEeG9IZWFkZXJGaWx0ZXJNb2R1bGUsXHJcbiAgICBEeG9FZGl0aW5nTW9kdWxlLFxyXG4gICAgRHhpQ2hhbmdlTW9kdWxlLFxyXG4gICAgRHhvRm9ybU1vZHVsZSxcclxuICAgIER4b0NvbENvdW50QnlTY3JlZW5Nb2R1bGUsXHJcbiAgICBEeGlJdGVtTW9kdWxlLFxyXG4gICAgRHhvVGFiUGFuZWxPcHRpb25zTW9kdWxlLFxyXG4gICAgRHhpVGFiTW9kdWxlLFxyXG4gICAgRHhvQnV0dG9uT3B0aW9uc01vZHVsZSxcclxuICAgIER4b1BvcHVwTW9kdWxlLFxyXG4gICAgRHhvQW5pbWF0aW9uTW9kdWxlLFxyXG4gICAgRHhvSGlkZU1vZHVsZSxcclxuICAgIER4b0Zyb21Nb2R1bGUsXHJcbiAgICBEeG9Ub01vZHVsZSxcclxuICAgIER4b1Nob3dNb2R1bGUsXHJcbiAgICBEeG9GaWx0ZXJCdWlsZGVyTW9kdWxlLFxyXG4gICAgRHhpQ3VzdG9tT3BlcmF0aW9uTW9kdWxlLFxyXG4gICAgRHhpRmllbGRNb2R1bGUsXHJcbiAgICBEeG9GaWx0ZXJPcGVyYXRpb25EZXNjcmlwdGlvbnNNb2R1bGUsXHJcbiAgICBEeG9Hcm91cE9wZXJhdGlvbkRlc2NyaXB0aW9uc01vZHVsZSxcclxuICAgIER4b0ZpbHRlckJ1aWxkZXJQb3B1cE1vZHVsZSxcclxuICAgIER4b0ZpbHRlclBhbmVsTW9kdWxlLFxyXG4gICAgRHhvRmlsdGVyUm93TW9kdWxlLFxyXG4gICAgRHhvT3BlcmF0aW9uRGVzY3JpcHRpb25zTW9kdWxlLFxyXG4gICAgRHhvS2V5Ym9hcmROYXZpZ2F0aW9uTW9kdWxlLFxyXG4gICAgRHhvTG9hZFBhbmVsTW9kdWxlLFxyXG4gICAgRHhvUGFnZXJNb2R1bGUsXHJcbiAgICBEeG9QYWdpbmdNb2R1bGUsXHJcbiAgICBEeG9SZW1vdGVPcGVyYXRpb25zTW9kdWxlLFxyXG4gICAgRHhvUm93RHJhZ2dpbmdNb2R1bGUsXHJcbiAgICBEeG9DdXJzb3JPZmZzZXRNb2R1bGUsXHJcbiAgICBEeG9TY3JvbGxpbmdNb2R1bGUsXHJcbiAgICBEeG9TZWFyY2hQYW5lbE1vZHVsZSxcclxuICAgIER4b1NvcnRpbmdNb2R1bGUsXHJcbiAgICBEeG9TdGF0ZVN0b3JpbmdNb2R1bGUsXHJcbiAgICBEeG9Ub29sYmFyTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RBSU1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0QUlPcHRpb25zTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RBbmltYXRpb25Nb2R1bGUsXHJcbiAgICBEeGlUcmVlTGlzdEFzeW5jUnVsZU1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0QXRNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdEJvdW5kYXJ5T2Zmc2V0TW9kdWxlLFxyXG4gICAgRHhpVHJlZUxpc3RCdXR0b25Nb2R1bGUsXHJcbiAgICBEeGlUcmVlTGlzdENoYW5nZU1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0Q29sQ291bnRCeVNjcmVlbk1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0Q29sbGlzaW9uTW9kdWxlLFxyXG4gICAgRHhpVHJlZUxpc3RDb2x1bW5Nb2R1bGUsXHJcbiAgICBEeGlUcmVlTGlzdENvbHVtbkJ1dHRvbk1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0Q29sdW1uQ2hvb3Nlck1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0Q29sdW1uQ2hvb3NlclNlYXJjaE1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0Q29sdW1uQ2hvb3NlclNlbGVjdGlvbk1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0Q29sdW1uRml4aW5nTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RDb2x1bW5GaXhpbmdUZXh0c01vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0Q29sdW1uSGVhZGVyRmlsdGVyTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RDb2x1bW5IZWFkZXJGaWx0ZXJTZWFyY2hNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdENvbHVtbkxvb2t1cE1vZHVsZSxcclxuICAgIER4aVRyZWVMaXN0Q29tcGFyZVJ1bGVNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdEN1cnNvck9mZnNldE1vZHVsZSxcclxuICAgIER4aVRyZWVMaXN0Q3VzdG9tT3BlcmF0aW9uTW9kdWxlLFxyXG4gICAgRHhpVHJlZUxpc3RDdXN0b21SdWxlTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RFZGl0aW5nTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RFZGl0aW5nVGV4dHNNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdEVkaXRvck9wdGlvbnNNb2R1bGUsXHJcbiAgICBEeGlUcmVlTGlzdEVkaXRvck9wdGlvbnNCdXR0b25Nb2R1bGUsXHJcbiAgICBEeGlUcmVlTGlzdEVtYWlsUnVsZU1vZHVsZSxcclxuICAgIER4aVRyZWVMaXN0RmllbGRNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdEZpZWxkTG9va3VwTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RGaWx0ZXJCdWlsZGVyTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RGaWx0ZXJCdWlsZGVyUG9wdXBNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdEZpbHRlck9wZXJhdGlvbkRlc2NyaXB0aW9uc01vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0RmlsdGVyUGFuZWxNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdEZpbHRlclBhbmVsVGV4dHNNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdEZpbHRlclJvd01vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0Rm9ybU1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0Rm9ybWF0TW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RGb3JtSXRlbU1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0RnJvbU1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0R3JvdXBPcGVyYXRpb25EZXNjcmlwdGlvbnNNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdEhlYWRlckZpbHRlck1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0SGlkZU1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0SWNvbnNNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdEluZGljYXRvck9wdGlvbnNNb2R1bGUsXHJcbiAgICBEeGlUcmVlTGlzdEl0ZW1Nb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdEtleWJvYXJkTmF2aWdhdGlvbk1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0TGFiZWxNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdExvYWRQYW5lbE1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0TG9va3VwTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RNeU1vZHVsZSxcclxuICAgIER4aVRyZWVMaXN0TnVtZXJpY1J1bGVNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdE9mZnNldE1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0T3BlcmF0aW9uRGVzY3JpcHRpb25zTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RPcHRpb25zTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RQYWdlck1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0UGFnaW5nTW9kdWxlLFxyXG4gICAgRHhpVHJlZUxpc3RQYXR0ZXJuUnVsZU1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0UG9wdXBNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdFBvc2l0aW9uTW9kdWxlLFxyXG4gICAgRHhpVHJlZUxpc3RSYW5nZVJ1bGVNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdFJlbW90ZU9wZXJhdGlvbnNNb2R1bGUsXHJcbiAgICBEeGlUcmVlTGlzdFJlcXVpcmVkUnVsZU1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0Um93RHJhZ2dpbmdNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdFNjcm9sbGluZ01vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0U2VhcmNoTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RTZWFyY2hQYW5lbE1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0U2VsZWN0aW9uTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RTaG93TW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RTb3J0aW5nTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RTdGF0ZVN0b3JpbmdNb2R1bGUsXHJcbiAgICBEeGlUcmVlTGlzdFN0cmluZ0xlbmd0aFJ1bGVNb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdFRleHRzTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RUb01vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0VG9vbGJhck1vZHVsZSxcclxuICAgIER4aVRyZWVMaXN0VG9vbGJhckl0ZW1Nb2R1bGUsXHJcbiAgICBEeG9UcmVlTGlzdFRyZWVMaXN0SGVhZGVyRmlsdGVyTW9kdWxlLFxyXG4gICAgRHhvVHJlZUxpc3RUcmVlTGlzdEhlYWRlckZpbHRlclNlYXJjaE1vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0VHJlZUxpc3RIZWFkZXJGaWx0ZXJUZXh0c01vZHVsZSxcclxuICAgIER4b1RyZWVMaXN0VHJlZUxpc3RTZWxlY3Rpb25Nb2R1bGUsXHJcbiAgICBEeGlUcmVlTGlzdFZhbGlkYXRpb25SdWxlTW9kdWxlLFxyXG4gICAgRHhpVHJlZUxpc3RCdXR0b25JdGVtTW9kdWxlLFxyXG4gICAgRHhpVHJlZUxpc3RFbXB0eUl0ZW1Nb2R1bGUsXHJcbiAgICBEeGlUcmVlTGlzdEdyb3VwSXRlbU1vZHVsZSxcclxuICAgIER4aVRyZWVMaXN0U2ltcGxlSXRlbU1vZHVsZSxcclxuICAgIER4aVRyZWVMaXN0VGFiYmVkSXRlbU1vZHVsZSxcclxuICAgIER4aVRyZWVMaXN0VGFiTW9kdWxlLFxyXG4gICAgRHhUZW1wbGF0ZU1vZHVsZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIER4VHJlZUxpc3RNb2R1bGUgeyB9XHJcblxyXG5leHBvcnQgKiBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvdHJlZS1saXN0L25lc3RlZCc7XHJcblxyXG5pbXBvcnQgdHlwZSAqIGFzIER4VHJlZUxpc3RUeXBlcyBmcm9tIFwiZGV2ZXh0cmVtZS91aS90cmVlX2xpc3RfdHlwZXNcIjtcclxuZXhwb3J0IHsgRHhUcmVlTGlzdFR5cGVzIH07XHJcblxyXG5cclxuIl19