@onecx/angular-accelerator 4.25.1 → 4.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -33,6 +33,9 @@ export class DataViewComponent {
33
33
  get _numberTableCell() {
34
34
  return this.numberTableCellTemplate || this.numberTableCellChildTemplate;
35
35
  }
36
+ get _customTableCell() {
37
+ return this.customTableCellTemplate || this.customTableCellChildTemplate;
38
+ }
36
39
  get _tableDateCell() {
37
40
  return this.tableDateCellTemplate || this.tableDateCellChildTemplate;
38
41
  }
@@ -208,10 +211,10 @@ export class DataViewComponent {
208
211
  }
209
212
  }
210
213
  DataViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DataViewComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
211
- DataViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DataViewComponent, selector: "ocx-data-view", inputs: { deletePermission: "deletePermission", editPermission: "editPermission", viewPermission: "viewPermission", deleteActionVisibleField: "deleteActionVisibleField", deleteActionEnabledField: "deleteActionEnabledField", viewActionVisibleField: "viewActionVisibleField", viewActionEnabledField: "viewActionEnabledField", editActionVisibleField: "editActionVisibleField", editActionEnabledField: "editActionEnabledField", data: "data", name: "name", titleLineId: "titleLineId", subtitleLineIds: "subtitleLineIds", layout: "layout", columns: "columns", emptyResultsMessage: "emptyResultsMessage", clientSideSorting: "clientSideSorting", clientSideFiltering: "clientSideFiltering", fallbackImage: "fallbackImage", filters: "filters", sortField: "sortField", sortDirection: "sortDirection", listGridPaginator: "listGridPaginator", tablePaginator: "tablePaginator", page: "page", totalRecordsOnServer: "totalRecordsOnServer", currentPageShowingKey: "currentPageShowingKey", currentPageShowingWithTotalOnServerKey: "currentPageShowingWithTotalOnServerKey", selectedRows: "selectedRows", frozenActionColumn: "frozenActionColumn", actionColumnPosition: "actionColumnPosition", paginator: "paginator", sortStates: "sortStates", pageSizes: "pageSizes", pageSize: "pageSize", stringTableCellTemplate: "stringTableCellTemplate", numberTableCellTemplate: "numberTableCellTemplate", tableDateCellTemplate: "tableDateCellTemplate", tableCellTemplate: "tableCellTemplate", tableTranslationKeyCellTemplate: "tableTranslationKeyCellTemplate", gridItemSubtitleLinesTemplate: "gridItemSubtitleLinesTemplate", listItemSubtitleLinesTemplate: "listItemSubtitleLinesTemplate", gridItemTemplate: "gridItemTemplate", listItemTemplate: "listItemTemplate", tableRelativeDateCellTemplate: "tableRelativeDateCellTemplate", additionalActions: "additionalActions" }, outputs: { filtered: "filtered", sorted: "sorted", deleteItem: "deleteItem", viewItem: "viewItem", editItem: "editItem", selectionChanged: "selectionChanged", pageChanged: "pageChanged" }, providers: [{ provide: 'DataViewComponent', useExisting: DataViewComponent }], queries: [{ propertyName: "stringTableCellChildTemplate", first: true, predicate: ["stringTableCell"], descendants: true }, { propertyName: "numberTableCellChildTemplate", first: true, predicate: ["numberTableCell"], descendants: true }, { propertyName: "tableDateCellChildTemplate", first: true, predicate: ["tableDateCell"], descendants: true }, { propertyName: "tableCellChildTemplate", first: true, predicate: ["tableCell"], descendants: true }, { propertyName: "tableTranslationKeyCellChildTemplate", first: true, predicate: ["tableTranslationKeyCell"], descendants: true }, { propertyName: "gridItemSubtitleLinesChildTemplate", first: true, predicate: ["gridItemSubtitleLines"], descendants: true }, { propertyName: "listItemSubtitleLinesChildTemplate", first: true, predicate: ["listItemSubtitleLines"], descendants: true }, { propertyName: "gridItemChildTemplate", first: true, predicate: ["gridItem"], descendants: true }, { propertyName: "listItemChildTemplate", first: true, predicate: ["listItem"], descendants: true }, { propertyName: "tableRelativeDateCellChildTemplate", first: true, predicate: ["tableRelativeDateCell"], descendants: true }], viewQueries: [{ propertyName: "listGrid", first: true, predicate: DataListGridComponent, descendants: true }, { propertyName: "dataTable", first: true, predicate: DataTableComponent, descendants: true }], ngImport: i0, template: "<div *ngIf=\"layout !== 'table'\">\n <ocx-data-list-grid\n #ocxdatalistgrid\n [name]=\"name\"\n [data]=\"data\"\n [columns]=\"columns\"\n [filters]=\"filters\"\n [sortDirection]=\"sortDirection\"\n [sortField]=\"sortField\"\n [sortStates]=\"sortStates\"\n [clientSideFiltering]=\"clientSideFiltering\"\n [clientSideSorting]=\"clientSideSorting\"\n [titleLineId]=\"titleLineId || firstColumnId\"\n [subtitleLineIds]=\"subtitleLineIds\"\n [clientSideSorting]=\"true\"\n [pageSizes]=\"pageSizes\"\n [pageSize]=\"pageSize\"\n [paginator]=\"listGridPaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [layout]=\"layout\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [gridItemSubtitleLinesTemplate]=\"_gridItemSubtitleLines ? gridItemSubtitleLines : undefined\"\n [listItemSubtitleLinesTemplate]=\"_listItemSubtitleLines ? listItemSubtitleLines : undefined\"\n [listItemTemplate]=\"_listItem ? listItem : undefined\"\n [gridItemTemplate]=\"_gridItem ? gridItem : undefined\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n >\n </ocx-data-list-grid>\n <ng-template #listItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_listItemSubtitleLines\"\n [ngTemplateOutlet]=\"_listItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #gridItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_gridItemSubtitleLines\"\n [ngTemplateOutlet]=\"_gridItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #gridItem let-item>\n <ng-container *ngIf=\"_gridItem\" [ngTemplateOutlet]=\"_gridItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n ></ng-template>\n <ng-template #listItem let-item>\n <ng-container *ngIf=\"_listItem\" [ngTemplateOutlet]=\"_listItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n ></ng-template>\n</div>\n\n<div *ngIf=\"layout === 'table'\">\n <ocx-data-table\n #ocxdatatable\n [rows]=\"data\"\n [columns]=\"columns\"\n [filters]=\"filters\"\n [sortDirection]=\"sortDirection\"\n [sortColumn]=\"sortField\"\n [sortStates]=\"sortStates\"\n [clientSideFiltering]=\"clientSideFiltering\"\n [clientSideSorting]=\"clientSideSorting\"\n [pageSizes]=\"pageSizes\"\n [pageSize]=\"pageSize\"\n [paginator]=\"tablePaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n [selectedRows]=\"selectedRows\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [name]=\"name\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [stringCellTemplate]=\"_stringTableCell ? stringCell : undefined\"\n [numberCellTemplate]=\"_numberTableCell ? numberCell : undefined\"\n [dateCellTemplate]=\"_tableDateCell ? dateCell : undefined\"\n [relativeDateCellTemplate]=\"_tableRelativeDateCell ? relativeDateCell : undefined\"\n [cellTemplate]=\"_tableCell ? cell : undefined\"\n [translationKeyCellTemplate]=\"_tableTranslationKeyCell ? translationKeyCell : undefined\"\n (sorted)=\"sorting($event)\"\n (filtered)=\"filtering($event)\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n [currentPageShowingKey]=\"currentPageShowingKey\"\n [currentPageShowingWithTotalOnServerKey]=\"currentPageShowingWithTotalOnServerKey\"\n >\n </ocx-data-table>\n <ng-template #stringCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringTableCell\"\n [ngTemplateOutlet]=\"_stringTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #numberCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_numberTableCell\"\n [ngTemplateOutlet]=\"_numberTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #dateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableDateCell\"\n [ngTemplateOutlet]=\"_tableDateCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #relativeDateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableRelativeDateCell\"\n [ngTemplateOutlet]=\"_tableRelativeDateCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #cell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableCell\"\n [ngTemplateOutlet]=\"_tableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #translationKeyCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableTranslationKeyCell\"\n [ngTemplateOutlet]=\"_tableTranslationKeyCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.DataListGridComponent, selector: "ocx-data-list-grid", inputs: ["titleLineId", "subtitleLineIds", "clientSideSorting", "clientSideFiltering", "sortStates", "pageSizes", "pageSize", "emptyResultsMessage", "fallbackImage", "layout", "viewPermission", "editPermission", "deletePermission", "deleteActionVisibleField", "deleteActionEnabledField", "viewActionVisibleField", "viewActionEnabledField", "editActionVisibleField", "editActionEnabledField", "viewMenuItemKey", "editMenuItemKey", "deleteMenuItemKey", "paginator", "page", "columns", "name", "totalRecordsOnServer", "currentPageShowingKey", "currentPageShowingWithTotalOnServerKey", "data", "filters", "sortDirection", "sortField", "gridItemSubtitleLinesTemplate", "listItemSubtitleLinesTemplate", "listItemTemplate", "gridItemTemplate", "additionalActions"], outputs: ["viewItem", "editItem", "deleteItem", "pageChanged"] }, { kind: "component", type: i3.DataTableComponent, selector: "ocx-data-table", inputs: ["rows", "selectedRows", "filters", "sortDirection", "sortColumn", "columns", "clientSideFiltering", "clientSideSorting", "sortStates", "pageSizes", "pageSize", "emptyResultsMessage", "name", "deletePermission", "viewPermission", "editPermission", "deleteActionVisibleField", "deleteActionEnabledField", "viewActionVisibleField", "viewActionEnabledField", "editActionVisibleField", "editActionEnabledField", "paginator", "page", "totalRecordsOnServer", "currentPageShowingKey", "currentPageShowingWithTotalOnServerKey", "stringCellTemplate", "numberCellTemplate", "dateCellTemplate", "relativeDateCellTemplate", "cellTemplate", "translationKeyCellTemplate", "additionalActions", "frozenActionColumn", "actionColumnPosition"], outputs: ["filtered", "sorted", "viewTableRow", "editTableRow", "deleteTableRow", "selectionChanged", "pageChanged"] }] });
214
+ DataViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DataViewComponent, selector: "ocx-data-view", inputs: { deletePermission: "deletePermission", editPermission: "editPermission", viewPermission: "viewPermission", deleteActionVisibleField: "deleteActionVisibleField", deleteActionEnabledField: "deleteActionEnabledField", viewActionVisibleField: "viewActionVisibleField", viewActionEnabledField: "viewActionEnabledField", editActionVisibleField: "editActionVisibleField", editActionEnabledField: "editActionEnabledField", data: "data", name: "name", titleLineId: "titleLineId", subtitleLineIds: "subtitleLineIds", layout: "layout", columns: "columns", emptyResultsMessage: "emptyResultsMessage", clientSideSorting: "clientSideSorting", clientSideFiltering: "clientSideFiltering", fallbackImage: "fallbackImage", filters: "filters", sortField: "sortField", sortDirection: "sortDirection", listGridPaginator: "listGridPaginator", tablePaginator: "tablePaginator", page: "page", totalRecordsOnServer: "totalRecordsOnServer", currentPageShowingKey: "currentPageShowingKey", currentPageShowingWithTotalOnServerKey: "currentPageShowingWithTotalOnServerKey", selectedRows: "selectedRows", frozenActionColumn: "frozenActionColumn", actionColumnPosition: "actionColumnPosition", paginator: "paginator", sortStates: "sortStates", pageSizes: "pageSizes", pageSize: "pageSize", stringTableCellTemplate: "stringTableCellTemplate", numberTableCellTemplate: "numberTableCellTemplate", customTableCellTemplate: "customTableCellTemplate", tableDateCellTemplate: "tableDateCellTemplate", tableCellTemplate: "tableCellTemplate", tableTranslationKeyCellTemplate: "tableTranslationKeyCellTemplate", gridItemSubtitleLinesTemplate: "gridItemSubtitleLinesTemplate", listItemSubtitleLinesTemplate: "listItemSubtitleLinesTemplate", gridItemTemplate: "gridItemTemplate", listItemTemplate: "listItemTemplate", tableRelativeDateCellTemplate: "tableRelativeDateCellTemplate", additionalActions: "additionalActions" }, outputs: { filtered: "filtered", sorted: "sorted", deleteItem: "deleteItem", viewItem: "viewItem", editItem: "editItem", selectionChanged: "selectionChanged", pageChanged: "pageChanged" }, providers: [{ provide: 'DataViewComponent', useExisting: DataViewComponent }], queries: [{ propertyName: "stringTableCellChildTemplate", first: true, predicate: ["stringTableCell"], descendants: true }, { propertyName: "numberTableCellChildTemplate", first: true, predicate: ["numberTableCell"], descendants: true }, { propertyName: "customTableCellChildTemplate", first: true, predicate: ["customTableCell"], descendants: true }, { propertyName: "tableDateCellChildTemplate", first: true, predicate: ["tableDateCell"], descendants: true }, { propertyName: "tableCellChildTemplate", first: true, predicate: ["tableCell"], descendants: true }, { propertyName: "tableTranslationKeyCellChildTemplate", first: true, predicate: ["tableTranslationKeyCell"], descendants: true }, { propertyName: "gridItemSubtitleLinesChildTemplate", first: true, predicate: ["gridItemSubtitleLines"], descendants: true }, { propertyName: "listItemSubtitleLinesChildTemplate", first: true, predicate: ["listItemSubtitleLines"], descendants: true }, { propertyName: "gridItemChildTemplate", first: true, predicate: ["gridItem"], descendants: true }, { propertyName: "listItemChildTemplate", first: true, predicate: ["listItem"], descendants: true }, { propertyName: "tableRelativeDateCellChildTemplate", first: true, predicate: ["tableRelativeDateCell"], descendants: true }], viewQueries: [{ propertyName: "listGrid", first: true, predicate: DataListGridComponent, descendants: true }, { propertyName: "dataTable", first: true, predicate: DataTableComponent, descendants: true }], ngImport: i0, template: "<div *ngIf=\"layout !== 'table'\">\n <ocx-data-list-grid\n #ocxdatalistgrid\n [name]=\"name\"\n [data]=\"data\"\n [columns]=\"columns\"\n [filters]=\"filters\"\n [sortDirection]=\"sortDirection\"\n [sortField]=\"sortField\"\n [sortStates]=\"sortStates\"\n [clientSideFiltering]=\"clientSideFiltering\"\n [clientSideSorting]=\"clientSideSorting\"\n [titleLineId]=\"titleLineId || firstColumnId\"\n [subtitleLineIds]=\"subtitleLineIds\"\n [clientSideSorting]=\"true\"\n [pageSizes]=\"pageSizes\"\n [pageSize]=\"pageSize\"\n [paginator]=\"listGridPaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [layout]=\"layout\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [gridItemSubtitleLinesTemplate]=\"_gridItemSubtitleLines ? gridItemSubtitleLines : undefined\"\n [listItemSubtitleLinesTemplate]=\"_listItemSubtitleLines ? listItemSubtitleLines : undefined\"\n [listItemTemplate]=\"_listItem ? listItem : undefined\"\n [gridItemTemplate]=\"_gridItem ? gridItem : undefined\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n >\n </ocx-data-list-grid>\n <ng-template #listItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_listItemSubtitleLines\"\n [ngTemplateOutlet]=\"_listItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #gridItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_gridItemSubtitleLines\"\n [ngTemplateOutlet]=\"_gridItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #gridItem let-item>\n <ng-container *ngIf=\"_gridItem\" [ngTemplateOutlet]=\"_gridItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n ></ng-template>\n <ng-template #listItem let-item>\n <ng-container *ngIf=\"_listItem\" [ngTemplateOutlet]=\"_listItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n ></ng-template>\n</div>\n\n<div *ngIf=\"layout === 'table'\">\n <ocx-data-table\n #ocxdatatable\n [rows]=\"data\"\n [columns]=\"columns\"\n [filters]=\"filters\"\n [sortDirection]=\"sortDirection\"\n [sortColumn]=\"sortField\"\n [sortStates]=\"sortStates\"\n [clientSideFiltering]=\"clientSideFiltering\"\n [clientSideSorting]=\"clientSideSorting\"\n [pageSizes]=\"pageSizes\"\n [pageSize]=\"pageSize\"\n [paginator]=\"tablePaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n [selectedRows]=\"selectedRows\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [name]=\"name\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [stringCellTemplate]=\"_stringTableCell ? stringCell : undefined\"\n [numberCellTemplate]=\"_numberTableCell ? numberCell : undefined\"\n [customCellTemplate]=\"_customTableCell ? customCell : undefined\"\n [dateCellTemplate]=\"_tableDateCell ? dateCell : undefined\"\n [relativeDateCellTemplate]=\"_tableRelativeDateCell ? relativeDateCell : undefined\"\n [cellTemplate]=\"_tableCell ? cell : undefined\"\n [translationKeyCellTemplate]=\"_tableTranslationKeyCell ? translationKeyCell : undefined\"\n (sorted)=\"sorting($event)\"\n (filtered)=\"filtering($event)\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n [currentPageShowingKey]=\"currentPageShowingKey\"\n [currentPageShowingWithTotalOnServerKey]=\"currentPageShowingWithTotalOnServerKey\"\n >\n </ocx-data-table>\n <ng-template #stringCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringTableCell\"\n [ngTemplateOutlet]=\"_stringTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #numberCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_numberTableCell\"\n [ngTemplateOutlet]=\"_numberTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #customCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_customTableCell\"\n [ngTemplateOutlet]=\"_customTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #dateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableDateCell\"\n [ngTemplateOutlet]=\"_tableDateCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #relativeDateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableRelativeDateCell\"\n [ngTemplateOutlet]=\"_tableRelativeDateCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #cell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableCell\"\n [ngTemplateOutlet]=\"_tableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #translationKeyCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableTranslationKeyCell\"\n [ngTemplateOutlet]=\"_tableTranslationKeyCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.DataListGridComponent, selector: "ocx-data-list-grid", inputs: ["titleLineId", "subtitleLineIds", "clientSideSorting", "clientSideFiltering", "sortStates", "pageSizes", "pageSize", "emptyResultsMessage", "fallbackImage", "layout", "viewPermission", "editPermission", "deletePermission", "deleteActionVisibleField", "deleteActionEnabledField", "viewActionVisibleField", "viewActionEnabledField", "editActionVisibleField", "editActionEnabledField", "viewMenuItemKey", "editMenuItemKey", "deleteMenuItemKey", "paginator", "page", "columns", "name", "totalRecordsOnServer", "currentPageShowingKey", "currentPageShowingWithTotalOnServerKey", "data", "filters", "sortDirection", "sortField", "gridItemSubtitleLinesTemplate", "listItemSubtitleLinesTemplate", "listItemTemplate", "gridItemTemplate", "additionalActions"], outputs: ["viewItem", "editItem", "deleteItem", "pageChanged"] }, { kind: "component", type: i3.DataTableComponent, selector: "ocx-data-table", inputs: ["rows", "selectedRows", "filters", "sortDirection", "sortColumn", "columns", "clientSideFiltering", "clientSideSorting", "sortStates", "pageSizes", "pageSize", "emptyResultsMessage", "name", "deletePermission", "viewPermission", "editPermission", "deleteActionVisibleField", "deleteActionEnabledField", "viewActionVisibleField", "viewActionEnabledField", "editActionVisibleField", "editActionEnabledField", "paginator", "page", "totalRecordsOnServer", "currentPageShowingKey", "currentPageShowingWithTotalOnServerKey", "stringCellTemplate", "numberCellTemplate", "customCellTemplate", "dateCellTemplate", "relativeDateCellTemplate", "cellTemplate", "translationKeyCellTemplate", "additionalActions", "frozenActionColumn", "actionColumnPosition"], outputs: ["filtered", "sorted", "viewTableRow", "editTableRow", "deleteTableRow", "selectionChanged", "pageChanged"] }] });
212
215
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DataViewComponent, decorators: [{
213
216
  type: Component,
214
- args: [{ selector: 'ocx-data-view', providers: [{ provide: 'DataViewComponent', useExisting: DataViewComponent }], template: "<div *ngIf=\"layout !== 'table'\">\n <ocx-data-list-grid\n #ocxdatalistgrid\n [name]=\"name\"\n [data]=\"data\"\n [columns]=\"columns\"\n [filters]=\"filters\"\n [sortDirection]=\"sortDirection\"\n [sortField]=\"sortField\"\n [sortStates]=\"sortStates\"\n [clientSideFiltering]=\"clientSideFiltering\"\n [clientSideSorting]=\"clientSideSorting\"\n [titleLineId]=\"titleLineId || firstColumnId\"\n [subtitleLineIds]=\"subtitleLineIds\"\n [clientSideSorting]=\"true\"\n [pageSizes]=\"pageSizes\"\n [pageSize]=\"pageSize\"\n [paginator]=\"listGridPaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [layout]=\"layout\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [gridItemSubtitleLinesTemplate]=\"_gridItemSubtitleLines ? gridItemSubtitleLines : undefined\"\n [listItemSubtitleLinesTemplate]=\"_listItemSubtitleLines ? listItemSubtitleLines : undefined\"\n [listItemTemplate]=\"_listItem ? listItem : undefined\"\n [gridItemTemplate]=\"_gridItem ? gridItem : undefined\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n >\n </ocx-data-list-grid>\n <ng-template #listItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_listItemSubtitleLines\"\n [ngTemplateOutlet]=\"_listItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #gridItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_gridItemSubtitleLines\"\n [ngTemplateOutlet]=\"_gridItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #gridItem let-item>\n <ng-container *ngIf=\"_gridItem\" [ngTemplateOutlet]=\"_gridItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n ></ng-template>\n <ng-template #listItem let-item>\n <ng-container *ngIf=\"_listItem\" [ngTemplateOutlet]=\"_listItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n ></ng-template>\n</div>\n\n<div *ngIf=\"layout === 'table'\">\n <ocx-data-table\n #ocxdatatable\n [rows]=\"data\"\n [columns]=\"columns\"\n [filters]=\"filters\"\n [sortDirection]=\"sortDirection\"\n [sortColumn]=\"sortField\"\n [sortStates]=\"sortStates\"\n [clientSideFiltering]=\"clientSideFiltering\"\n [clientSideSorting]=\"clientSideSorting\"\n [pageSizes]=\"pageSizes\"\n [pageSize]=\"pageSize\"\n [paginator]=\"tablePaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n [selectedRows]=\"selectedRows\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [name]=\"name\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [stringCellTemplate]=\"_stringTableCell ? stringCell : undefined\"\n [numberCellTemplate]=\"_numberTableCell ? numberCell : undefined\"\n [dateCellTemplate]=\"_tableDateCell ? dateCell : undefined\"\n [relativeDateCellTemplate]=\"_tableRelativeDateCell ? relativeDateCell : undefined\"\n [cellTemplate]=\"_tableCell ? cell : undefined\"\n [translationKeyCellTemplate]=\"_tableTranslationKeyCell ? translationKeyCell : undefined\"\n (sorted)=\"sorting($event)\"\n (filtered)=\"filtering($event)\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n [currentPageShowingKey]=\"currentPageShowingKey\"\n [currentPageShowingWithTotalOnServerKey]=\"currentPageShowingWithTotalOnServerKey\"\n >\n </ocx-data-table>\n <ng-template #stringCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringTableCell\"\n [ngTemplateOutlet]=\"_stringTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #numberCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_numberTableCell\"\n [ngTemplateOutlet]=\"_numberTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #dateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableDateCell\"\n [ngTemplateOutlet]=\"_tableDateCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #relativeDateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableRelativeDateCell\"\n [ngTemplateOutlet]=\"_tableRelativeDateCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #cell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableCell\"\n [ngTemplateOutlet]=\"_tableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #translationKeyCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableTranslationKeyCell\"\n [ngTemplateOutlet]=\"_tableTranslationKeyCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n</div>\n" }]
217
+ args: [{ selector: 'ocx-data-view', providers: [{ provide: 'DataViewComponent', useExisting: DataViewComponent }], template: "<div *ngIf=\"layout !== 'table'\">\n <ocx-data-list-grid\n #ocxdatalistgrid\n [name]=\"name\"\n [data]=\"data\"\n [columns]=\"columns\"\n [filters]=\"filters\"\n [sortDirection]=\"sortDirection\"\n [sortField]=\"sortField\"\n [sortStates]=\"sortStates\"\n [clientSideFiltering]=\"clientSideFiltering\"\n [clientSideSorting]=\"clientSideSorting\"\n [titleLineId]=\"titleLineId || firstColumnId\"\n [subtitleLineIds]=\"subtitleLineIds\"\n [clientSideSorting]=\"true\"\n [pageSizes]=\"pageSizes\"\n [pageSize]=\"pageSize\"\n [paginator]=\"listGridPaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [layout]=\"layout\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [gridItemSubtitleLinesTemplate]=\"_gridItemSubtitleLines ? gridItemSubtitleLines : undefined\"\n [listItemSubtitleLinesTemplate]=\"_listItemSubtitleLines ? listItemSubtitleLines : undefined\"\n [listItemTemplate]=\"_listItem ? listItem : undefined\"\n [gridItemTemplate]=\"_gridItem ? gridItem : undefined\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n >\n </ocx-data-list-grid>\n <ng-template #listItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_listItemSubtitleLines\"\n [ngTemplateOutlet]=\"_listItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #gridItemSubtitleLines let-item>\n <ng-container\n *ngIf=\"_gridItemSubtitleLines\"\n [ngTemplateOutlet]=\"_gridItemSubtitleLines\"\n [ngTemplateOutletContext]=\"{$implicit:item}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #gridItem let-item>\n <ng-container *ngIf=\"_gridItem\" [ngTemplateOutlet]=\"_gridItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n ></ng-template>\n <ng-template #listItem let-item>\n <ng-container *ngIf=\"_listItem\" [ngTemplateOutlet]=\"_listItem\" [ngTemplateOutletContext]=\"{$implicit:item}\">\n </ng-container\n ></ng-template>\n</div>\n\n<div *ngIf=\"layout === 'table'\">\n <ocx-data-table\n #ocxdatatable\n [rows]=\"data\"\n [columns]=\"columns\"\n [filters]=\"filters\"\n [sortDirection]=\"sortDirection\"\n [sortColumn]=\"sortField\"\n [sortStates]=\"sortStates\"\n [clientSideFiltering]=\"clientSideFiltering\"\n [clientSideSorting]=\"clientSideSorting\"\n [pageSizes]=\"pageSizes\"\n [pageSize]=\"pageSize\"\n [paginator]=\"tablePaginator\"\n [page]=\"page\"\n (pageChanged)=\"onPageChange($event)\"\n [selectedRows]=\"selectedRows\"\n [frozenActionColumn]=\"frozenActionColumn\"\n [actionColumnPosition]=\"actionColumnPosition\"\n [emptyResultsMessage]=\"emptyResultsMessage\"\n [name]=\"name\"\n [deletePermission]=\"deletePermission\"\n [editPermission]=\"editPermission\"\n [viewPermission]=\"viewPermission\"\n [deleteActionEnabledField]=\"deleteActionEnabledField\"\n [deleteActionVisibleField]=\"deleteActionVisibleField\"\n [editActionEnabledField]=\"editActionEnabledField\"\n [editActionVisibleField]=\"editActionVisibleField\"\n [viewActionEnabledField]=\"viewActionEnabledField\"\n [viewActionVisibleField]=\"viewActionVisibleField\"\n [additionalActions]=\"additionalActions\"\n [stringCellTemplate]=\"_stringTableCell ? stringCell : undefined\"\n [numberCellTemplate]=\"_numberTableCell ? numberCell : undefined\"\n [customCellTemplate]=\"_customTableCell ? customCell : undefined\"\n [dateCellTemplate]=\"_tableDateCell ? dateCell : undefined\"\n [relativeDateCellTemplate]=\"_tableRelativeDateCell ? relativeDateCell : undefined\"\n [cellTemplate]=\"_tableCell ? cell : undefined\"\n [translationKeyCellTemplate]=\"_tableTranslationKeyCell ? translationKeyCell : undefined\"\n (sorted)=\"sorting($event)\"\n (filtered)=\"filtering($event)\"\n [totalRecordsOnServer]=\"totalRecordsOnServer\"\n [currentPageShowingKey]=\"currentPageShowingKey\"\n [currentPageShowingWithTotalOnServerKey]=\"currentPageShowingWithTotalOnServerKey\"\n >\n </ocx-data-table>\n <ng-template #stringCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_stringTableCell\"\n [ngTemplateOutlet]=\"_stringTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #numberCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_numberTableCell\"\n [ngTemplateOutlet]=\"_numberTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #customCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_customTableCell\"\n [ngTemplateOutlet]=\"_customTableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #dateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableDateCell\"\n [ngTemplateOutlet]=\"_tableDateCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #relativeDateCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableRelativeDateCell\"\n [ngTemplateOutlet]=\"_tableRelativeDateCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #cell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableCell\"\n [ngTemplateOutlet]=\"_tableCell\"\n [ngTemplateOutletContext]=\"{rowObject: rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n <ng-template #translationKeyCell let-rowObject=\"rowObject\" let-column=\"column\">\n <ng-container\n *ngIf=\"_tableTranslationKeyCell\"\n [ngTemplateOutlet]=\"_tableTranslationKeyCell\"\n [ngTemplateOutletContext]=\"{rowObject:rowObject, column:column}\"\n >\n </ng-container\n ></ng-template>\n</div>\n" }]
215
218
  }], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { listGrid: [{
216
219
  type: ViewChild,
217
220
  args: [DataListGridComponent]
@@ -298,6 +301,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
298
301
  }], numberTableCellChildTemplate: [{
299
302
  type: ContentChild,
300
303
  args: ['numberTableCell']
304
+ }], customTableCellTemplate: [{
305
+ type: Input
306
+ }], customTableCellChildTemplate: [{
307
+ type: ContentChild,
308
+ args: ['customTableCell']
301
309
  }], tableDateCellTemplate: [{
302
310
  type: Input
303
311
  }], tableDateCellChildTemplate: [{
@@ -355,4 +363,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
355
363
  }], pageChanged: [{
356
364
  type: Output
357
365
  }] } });
358
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NlbGVyYXRvci9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS12aWV3L2RhdGEtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9kYXRhLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBRVosWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUscUJBQXFCLEVBQWdCLE1BQU0sNENBQTRDLENBQUE7QUFDaEcsT0FBTyxFQUFxQixrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFBOzs7OztBQVkxRixNQUFNLE9BQU8saUJBQWlCO0lBRTVCLElBQXNDLFFBQVEsQ0FBQyxHQUFzQztRQUNuRixJQUFJLENBQUMsc0JBQXNCLEdBQUcsR0FBRyxDQUFBO1FBQ2pDLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFBO0lBQ3pDLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQTtJQUNwQyxDQUFDO0lBR0QsSUFBbUMsU0FBUyxDQUFDLEdBQW1DO1FBQzlFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxHQUFHLENBQUE7UUFDOUIsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLENBQUE7SUFDMUMsQ0FBQztJQUNELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFBO0lBQ2pDLENBQUM7SUFpQ0QsSUFDSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsaUJBQWlCLElBQUks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O2dCQUs5Qiw2QkFBNkI7c0JBQXJDLEtBQUs7Z0JBQ2lDLGtDQUFrQztzQkFBeEUsWUFBWTt1QkFBQyx1QkFBdUI7Z0JBSzVCLDZCQUE2QjtzQkFBckMsS0FBSztnQkFDaUMsa0NBQWtDO3NCQUF4RSxZQUFZO3VCQUFDLHVCQUF1QjtnQkFJNUIsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNvQixxQkFBcUI7c0JBQTlDLFlBQVk7dUJBQUMsVUFBVTtnQkFLZixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ29CLHFCQUFxQjtzQkFBOUMsWUFBWTt1QkFBQyxVQUFVO2dCQUtmLDZCQUE2QjtzQkFBckMsS0FBSztnQkFDaUMsa0NBQWtDO3NCQUF4RSxZQUFZO3VCQUFDLHVCQUF1QjtnQkFLNUIsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIERvQ2hlY2ssXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IERhdGFMaXN0R3JpZENvbXBvbmVudCwgTGlzdEdyaWREYXRhIH0gZnJvbSAnLi4vZGF0YS1saXN0LWdyaWQvZGF0YS1saXN0LWdyaWQuY29tcG9uZW50J1xuaW1wb3J0IHsgUm93LCBGaWx0ZXIsIFNvcnQsIERhdGFUYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGEtdGFibGUvZGF0YS10YWJsZS5jb21wb25lbnQnXG5pbXBvcnQgeyBEYXRhVGFibGVDb2x1bW4gfSBmcm9tICcuLi8uLi9tb2RlbC9kYXRhLXRhYmxlLWNvbHVtbi5tb2RlbCdcbmltcG9ydCB7IERhdGFTb3J0RGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGF0YS1zb3J0LWRpcmVjdGlvbidcbmltcG9ydCB7IERhdGFBY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbC9kYXRhLWFjdGlvbidcblxuZXhwb3J0IHR5cGUgUm93TGlzdEdyaWREYXRhID0gTGlzdEdyaWREYXRhICYgUm93XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvY3gtZGF0YS12aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtdmlldy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RhdGEtdmlldy5jb21wb25lbnQuY3NzJ10sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogJ0RhdGFWaWV3Q29tcG9uZW50JywgdXNlRXhpc3Rpbmc6IERhdGFWaWV3Q29tcG9uZW50IH1dLFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIERvQ2hlY2ssIE9uSW5pdCB7XG4gIF9kYXRhTGlzdEdyaWRDb21wb25lbnQ6IERhdGFMaXN0R3JpZENvbXBvbmVudCB8IHVuZGVmaW5lZFxuICBAVmlld0NoaWxkKERhdGFMaXN0R3JpZENvbXBvbmVudCkgc2V0IGxpc3RHcmlkKHJlZjogRGF0YUxpc3RHcmlkQ29tcG9uZW50IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fZGF0YUxpc3RHcmlkQ29tcG9uZW50ID0gcmVmXG4gICAgdGhpcy5yZWdpc3RlckV2ZW50TGlzdGVuZXJGb3JMaXN0R3JpZCgpXG4gIH1cbiAgZ2V0IGxpc3RHcmlkKCk6IERhdGFMaXN0R3JpZENvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFMaXN0R3JpZENvbXBvbmVudFxuICB9XG5cbiAgX2RhdGFUYWJsZUNvbXBvbmVudDogRGF0YVRhYmxlQ29tcG9uZW50IHwgdW5kZWZpbmVkXG4gIEBWaWV3Q2hpbGQoRGF0YVRhYmxlQ29tcG9uZW50KSBzZXQgZGF0YVRhYmxlKHJlZjogRGF0YVRhYmxlQ29tcG9uZW50IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fZGF0YVRhYmxlQ29tcG9uZW50ID0gcmVmXG4gICAgdGhpcy5yZWdpc3RlckV2ZW50TGlzdGVuZXJGb3JEYXRhVGFibGUoKVxuICB9XG4gIGdldCBkYXRhVGFibGUoKTogRGF0YVRhYmxlQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVRhYmxlQ29tcG9uZW50XG4gIH1cbiAgQElucHV0KCkgZGVsZXRlUGVybWlzc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIGVkaXRQZXJtaXNzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgdmlld1Blcm1pc3Npb246IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBkZWxldGVBY3Rpb25WaXNpYmxlRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBkZWxldGVBY3Rpb25FbmFibGVkRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSB2aWV3QWN0aW9uVmlzaWJsZUZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgdmlld0FjdGlvbkVuYWJsZWRGaWVsZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIGVkaXRBY3Rpb25WaXNpYmxlRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBlZGl0QWN0aW9uRW5hYmxlZEZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgZGF0YTogUm93TGlzdEdyaWREYXRhW10gPSBbXVxuICBASW5wdXQoKSBuYW1lID0gJ0RhdGEgdGFibGUnXG4gIEBJbnB1dCgpIHRpdGxlTGluZUlkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgc3VidGl0bGVMaW5lSWRzOiBzdHJpbmdbXSA9IFtdXG4gIEBJbnB1dCgpIGxheW91dDogYW55ID0gWydncmlkJywgJ2xpc3QnLCAndGFibGUnXVxuICBASW5wdXQoKSBjb2x1bW5zOiBEYXRhVGFibGVDb2x1bW5bXSA9IFtdXG4gIEBJbnB1dCgpIGVtcHR5UmVzdWx0c01lc3NhZ2U6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBjbGllbnRTaWRlU29ydGluZyA9IHRydWVcbiAgQElucHV0KCkgY2xpZW50U2lkZUZpbHRlcmluZyA9IHRydWVcbiAgQElucHV0KCkgZmFsbGJhY2tJbWFnZSA9ICdwbGFjZWhvbGRlci5wbmcnXG4gIEBJbnB1dCgpIGZpbHRlcnM6IEZpbHRlcltdID0gW11cbiAgQElucHV0KCkgc29ydEZpZWxkOiBhbnkgPSAnJ1xuICBASW5wdXQoKSBzb3J0RGlyZWN0aW9uOiBEYXRhU29ydERpcmVjdGlvbiA9IERhdGFTb3J0RGlyZWN0aW9uLk5PTkVcbiAgQElucHV0KCkgbGlzdEdyaWRQYWdpbmF0b3IgPSB0cnVlXG4gIEBJbnB1dCgpIHRhYmxlUGFnaW5hdG9yID0gdHJ1ZVxuICBASW5wdXQoKSBwYWdlID0gMFxuICBASW5wdXQoKSB0b3RhbFJlY29yZHNPblNlcnZlcjogbnVtYmVyIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIGN1cnJlbnRQYWdlU2hvd2luZ0tleSA9ICdPQ1hfREFUQV9UQUJMRS5TSE9XSU5HJ1xuICBASW5wdXQoKSBjdXJyZW50UGFnZVNob3dpbmdXaXRoVG90YWxPblNlcnZlcktleSA9ICdPQ1hfREFUQV9UQUJMRS5TSE9XSU5HX1dJVEhfVE9UQUxfT05fU0VSVkVSJ1xuICBASW5wdXQoKSBzZWxlY3RlZFJvd3M6IFJvd1tdID0gW11cbiAgQElucHV0KCkgZnJvemVuQWN0aW9uQ29sdW1uID0gZmFsc2VcbiAgQElucHV0KCkgYWN0aW9uQ29sdW1uUG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCcgPSAncmlnaHQnXG5cbiAgQElucHV0KClcbiAgZ2V0IHBhZ2luYXRvcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5saXN0R3JpZFBhZ2luYXRvciAmJiB0aGlzLnRhYmxlUGFnaW5hdG9yXG4gIH1cbiAgc2V0IHBhZ2luYXRvcih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMubGlzdEdyaWRQYWdpbmF0b3IgPSB2YWx1ZVxuICAgIHRoaXMudGFibGVQYWdpbmF0b3IgPSB2YWx1ZVxuICB9XG5cbiAgQElucHV0KCkgc29ydFN0YXRlczogRGF0YVNvcnREaXJlY3Rpb25bXSA9IFtEYXRhU29ydERpcmVjdGlvbi5BU0NFTkRJTkcsIERhdGFTb3J0RGlyZWN0aW9uLkRFU0NFTkRJTkddXG4gIEBJbnB1dCgpIHBhZ2VTaXplczogbnVtYmVyW10gPSBbMTAsIDI1LCA1MF1cbiAgQElucHV0KCkgcGFnZVNpemU6IG51bWJlciA9IHRoaXMucGFnZVNpemVzPy5bMF0gfHwgNTBcblxuICBASW5wdXQoKSBzdHJpbmdUYWJsZUNlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdzdHJpbmdUYWJsZUNlbGwnKSBzdHJpbmdUYWJsZUNlbGxDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfc3RyaW5nVGFibGVDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnN0cmluZ1RhYmxlQ2VsbFRlbXBsYXRlIHx8IHRoaXMuc3RyaW5nVGFibGVDZWxsQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgbnVtYmVyVGFibGVDZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnbnVtYmVyVGFibGVDZWxsJykgbnVtYmVyVGFibGVDZWxsQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX251bWJlclRhYmxlQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5udW1iZXJUYWJsZUNlbGxUZW1wbGF0ZSB8fCB0aGlzLm51bWJlclRhYmxlQ2VsbENoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIHRhYmxlRGF0ZUNlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCd0YWJsZURhdGVDZWxsJykgdGFibGVEYXRlQ2VsbENoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF90YWJsZURhdGVDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnRhYmxlRGF0ZUNlbGxUZW1wbGF0ZSB8fCB0aGlzLnRhYmxlRGF0ZUNlbGxDaGlsZFRlbXBsYXRlXG4gIH1cblxuICBASW5wdXQoKSB0YWJsZUNlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCd0YWJsZUNlbGwnKSB0YWJsZUNlbGxDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfdGFibGVDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnRhYmxlQ2VsbFRlbXBsYXRlIHx8IHRoaXMudGFibGVDZWxsQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgdGFibGVUcmFuc2xhdGlvbktleUNlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCd0YWJsZVRyYW5zbGF0aW9uS2V5Q2VsbCcpIHRhYmxlVHJhbnNsYXRpb25LZXlDZWxsQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX3RhYmxlVHJhbnNsYXRpb25LZXlDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnRhYmxlVHJhbnNsYXRpb25LZXlDZWxsVGVtcGxhdGUgfHwgdGhpcy50YWJsZVRyYW5zbGF0aW9uS2V5Q2VsbENoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIGdyaWRJdGVtU3VidGl0bGVMaW5lc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ2dyaWRJdGVtU3VidGl0bGVMaW5lcycpIGdyaWRJdGVtU3VidGl0bGVMaW5lc0NoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9ncmlkSXRlbVN1YnRpdGxlTGluZXMoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzVGVtcGxhdGUgfHwgdGhpcy5ncmlkSXRlbVN1YnRpdGxlTGluZXNDaGlsZFRlbXBsYXRlXG4gIH1cblxuICBASW5wdXQoKSBsaXN0SXRlbVN1YnRpdGxlTGluZXNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdsaXN0SXRlbVN1YnRpdGxlTGluZXMnKSBsaXN0SXRlbVN1YnRpdGxlTGluZXNDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmxpc3RJdGVtU3VidGl0bGVMaW5lc1RlbXBsYXRlIHx8IHRoaXMubGlzdEl0ZW1TdWJ0aXRsZUxpbmVzQ2hpbGRUZW1wbGF0ZVxuICB9XG4gIEBJbnB1dCgpIGdyaWRJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnZ3JpZEl0ZW0nKSBncmlkSXRlbUNoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9ncmlkSXRlbSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkSXRlbVRlbXBsYXRlIHx8IHRoaXMuZ3JpZEl0ZW1DaGlsZFRlbXBsYXRlXG4gIH1cblxuICBASW5wdXQoKSBsaXN0SXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ2xpc3RJdGVtJykgbGlzdEl0ZW1DaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfbGlzdEl0ZW0oKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubGlzdEl0ZW1UZW1wbGF0ZSB8fCB0aGlzLmxpc3RJdGVtQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgdGFibGVSZWxhdGl2ZURhdGVDZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgndGFibGVSZWxhdGl2ZURhdGVDZWxsJykgdGFibGVSZWxhdGl2ZURhdGVDZWxsQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX3RhYmxlUmVsYXRpdmVEYXRlQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlbGF0aXZlRGF0ZUNlbGxUZW1wbGF0ZSB8fCB0aGlzLnRhYmxlUmVsYXRpdmVEYXRlQ2VsbENoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIGFkZGl0aW9uYWxBY3Rpb25zOiBEYXRhQWN0aW9uW10gPSBbXVxuXG4gIEBPdXRwdXQoKSBmaWx0ZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdGVyW10+KClcbiAgQE91dHB1dCgpIHNvcnRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydD4oKVxuICBAT3V0cHV0KCkgZGVsZXRlSXRlbSA9IG5ldyBFdmVudEVtaXR0ZXI8Um93TGlzdEdyaWREYXRhPigpXG4gIEBPdXRwdXQoKSB2aWV3SXRlbSA9IG5ldyBFdmVudEVtaXR0ZXI8Um93TGlzdEdyaWREYXRhPigpXG4gIEBPdXRwdXQoKSBlZGl0SXRlbSA9IG5ldyBFdmVudEVtaXR0ZXI8Um93TGlzdEdyaWREYXRhPigpXG4gIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dbXT4oKVxuICBAT3V0cHV0KCkgcGFnZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKVxuICBpc0RlbGV0ZUl0ZW1PYnNlcnZlZDogYm9vbGVhbiB8IHVuZGVmaW5lZFxuICBpc1ZpZXdJdGVtT2JzZXJ2ZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgSXNFZGl0SXRlbU9ic2VydmVkOiBib29sZWFuIHwgdW5kZWZpbmVkXG4gIGZpcnN0Q29sdW1uSWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuXG4gIGdldCB2aWV3SXRlbU9ic2VydmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldCgnSW50ZXJhY3RpdmVEYXRhVmlld0NvbXBvbmVudCcsIG51bGwpPy52aWV3SXRlbS5vYnNlcnZlZCB8fCB0aGlzLnZpZXdJdGVtLm9ic2VydmVkXG4gIH1cbiAgZ2V0IGVkaXRJdGVtT2JzZXJ2ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KCdJbnRlcmFjdGl2ZURhdGFWaWV3Q29tcG9uZW50JywgbnVsbCk/LmVkaXRJdGVtLm9ic2VydmVkIHx8IHRoaXMuZWRpdEl0ZW0ub2JzZXJ2ZWRcbiAgfVxuICBnZXQgZGVsZXRlSXRlbU9ic2VydmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldCgnSW50ZXJhY3RpdmVEYXRhVmlld0NvbXBvbmVudCcsIG51bGwpPy5kZWxldGVJdGVtLm9ic2VydmVkIHx8IHRoaXMuZGVsZXRlSXRlbS5vYnNlcnZlZFxuICB9XG4gIGdldCBzZWxlY3Rpb25DaGFuZ2VkT2JzZXJ2ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KCdJbnRlcmFjdGl2ZURhdGFWaWV3Q29tcG9uZW50JywgbnVsbCk/LnNlbGVjdGlvbkNoYW5nZWQub2JzZXJ2ZWQgfHxcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZC5vYnNlcnZlZFxuICAgIClcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZmlyc3RDb2x1bW5JZCA9IHRoaXMuY29sdW1uc1swXT8uaWRcbiAgfVxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgdGhpcy5yZWdpc3RlckV2ZW50TGlzdGVuZXJGb3JEYXRhVGFibGUoKVxuICAgIHRoaXMucmVnaXN0ZXJFdmVudExpc3RlbmVyRm9yTGlzdEdyaWQoKVxuICB9XG4gIHJlZ2lzdGVyRXZlbnRMaXN0ZW5lckZvckxpc3RHcmlkKCkge1xuICAgIGlmICh0aGlzLmxheW91dCAhPT0gJ3RhYmxlJykge1xuICAgICAgaWYgKHRoaXMuZGVsZXRlSXRlbS5vYnNlcnZlZCkge1xuICAgICAgICB0aGlzLmlzRGVsZXRlSXRlbU9ic2VydmVkID0gdHJ1ZVxuICAgICAgICBpZiAoIXRoaXMuX2RhdGFMaXN0R3JpZENvbXBvbmVudD8uZGVsZXRlSXRlbS5vYnNlcnZlZCkge1xuICAgICAgICAgIHRoaXMuX2RhdGFMaXN0R3JpZENvbXBvbmVudD8uZGVsZXRlSXRlbS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlbGV0aW5nRWxlbWVudChldmVudClcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy52aWV3SXRlbS5vYnNlcnZlZCkge1xuICAgICAgICB0aGlzLmlzVmlld0l0ZW1PYnNlcnZlZCA9IHRydWVcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhTGlzdEdyaWRDb21wb25lbnQ/LnZpZXdJdGVtLm9ic2VydmVkKSB7XG4gICAgICAgICAgdGhpcy5fZGF0YUxpc3RHcmlkQ29tcG9uZW50Py52aWV3SXRlbS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnZpZXdpbmdFbGVtZW50KGV2ZW50KVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmVkaXRJdGVtLm9ic2VydmVkKSB7XG4gICAgICAgIHRoaXMuSXNFZGl0SXRlbU9ic2VydmVkID0gdHJ1ZVxuICAgICAgICBpZiAoIXRoaXMuX2RhdGFMaXN0R3JpZENvbXBvbmVudD8uZWRpdEl0ZW0ub2JzZXJ2ZWQpIHtcbiAgICAgICAgICB0aGlzLl9kYXRhTGlzdEdyaWRDb21wb25lbnQ/LmVkaXRJdGVtLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZWRpdGluZ0VsZW1lbnQoZXZlbnQpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZWdpc3RlckV2ZW50TGlzdGVuZXJGb3JEYXRhVGFibGUoKSB7XG4gICAgaWYgKHRoaXMubGF5b3V0ID09PSAndGFibGUnKSB7XG4gICAgICBpZiAodGhpcy5kZWxldGVJdGVtLm9ic2VydmVkKSB7XG4gICAgICAgIHRoaXMuaXNEZWxldGVJdGVtT2JzZXJ2ZWQgPSB0cnVlXG4gICAgICAgIGlmICghdGhpcy5fZGF0YVRhYmxlQ29tcG9uZW50Py5kZWxldGVUYWJsZVJvdy5vYnNlcnZlZCkge1xuICAgICAgICAgIHRoaXMuX2RhdGFUYWJsZUNvbXBvbmVudD8uZGVsZXRlVGFibGVSb3cuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kZWxldGluZ0VsZW1lbnQoZXZlbnQpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMudmlld0l0ZW0ub2JzZXJ2ZWQpIHtcbiAgICAgICAgdGhpcy5pc1ZpZXdJdGVtT2JzZXJ2ZWQgPSB0cnVlXG4gICAgICAgIGlmICghdGhpcy5fZGF0YVRhYmxlQ29tcG9uZW50Py52aWV3VGFibGVSb3cub2JzZXJ2ZWQpIHtcbiAgICAgICAgICB0aGlzLl9kYXRhVGFibGVDb21wb25lbnQ/LnZpZXdUYWJsZVJvdy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnZpZXdpbmdFbGVtZW50KGV2ZW50KVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmVkaXRJdGVtLm9ic2VydmVkKSB7XG4gICAgICAgIHRoaXMuSXNFZGl0SXRlbU9ic2VydmVkID0gdHJ1ZVxuICAgICAgICBpZiAoIXRoaXMuX2RhdGFUYWJsZUNvbXBvbmVudD8uZWRpdFRhYmxlUm93Lm9ic2VydmVkKSB7XG4gICAgICAgICAgdGhpcy5fZGF0YVRhYmxlQ29tcG9uZW50Py5lZGl0VGFibGVSb3cuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lZGl0aW5nRWxlbWVudChldmVudClcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25DaGFuZ2VkT2JzZXJ2ZWQpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhVGFibGVDb21wb25lbnQ/LnNlbGVjdGlvbkNoYW5nZWQub2JzZXJ2ZWQpIHtcbiAgICAgICAgICB0aGlzLl9kYXRhVGFibGVDb21wb25lbnQ/LnNlbGVjdGlvbkNoYW5nZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vblJvd1NlbGVjdGlvbkNoYW5nZShldmVudClcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZmlsdGVyaW5nKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmZpbHRlcnMgPSBldmVudFxuICAgIHRoaXMuZmlsdGVyZWQuZW1pdChldmVudClcbiAgfVxuXG4gIHNvcnRpbmcoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IGV2ZW50LnNvcnREaXJlY3Rpb25cbiAgICB0aGlzLnNvcnRGaWVsZCA9IGV2ZW50LnNvcnRDb2x1bW5cbiAgICB0aGlzLnNvcnRlZC5lbWl0KGV2ZW50KVxuICB9XG5cbiAgZGVsZXRpbmdFbGVtZW50KGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5pc0RlbGV0ZUl0ZW1PYnNlcnZlZCkge1xuICAgICAgdGhpcy5kZWxldGVJdGVtLmVtaXQoZXZlbnQpXG4gICAgfVxuICB9XG5cbiAgdmlld2luZ0VsZW1lbnQoZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLmlzVmlld0l0ZW1PYnNlcnZlZCkge1xuICAgICAgdGhpcy52aWV3SXRlbS5lbWl0KGV2ZW50KVxuICAgIH1cbiAgfVxuICBlZGl0aW5nRWxlbWVudChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuSXNFZGl0SXRlbU9ic2VydmVkKSB7XG4gICAgICB0aGlzLmVkaXRJdGVtLmVtaXQoZXZlbnQpXG4gICAgfVxuICB9XG5cbiAgb25Sb3dTZWxlY3Rpb25DaGFuZ2UoZXZlbnQ6IFJvd1tdKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uQ2hhbmdlZE9ic2VydmVkKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQuZW1pdChldmVudClcbiAgICB9XG4gIH1cblxuICBvblBhZ2VDaGFuZ2UoZXZlbnQ6IG51bWJlcikge1xuICAgIHRoaXMucGFnZSA9IGV2ZW50XG4gICAgdGhpcy5wYWdlQ2hhbmdlZC5lbWl0KGV2ZW50KVxuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwibGF5b3V0ICE9PSAndGFibGUnXCI+XG4gIDxvY3gtZGF0YS1saXN0LWdyaWRcbiAgICAjb2N4ZGF0YWxpc3RncmlkXG4gICAgW25hbWVdPVwibmFtZVwiXG4gICAgW2RhdGFdPVwiZGF0YVwiXG4gICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXG4gICAgW2ZpbHRlcnNdPVwiZmlsdGVyc1wiXG4gICAgW3NvcnREaXJlY3Rpb25dPVwic29ydERpcmVjdGlvblwiXG4gICAgW3NvcnRGaWVsZF09XCJzb3J0RmllbGRcIlxuICAgIFtzb3J0U3RhdGVzXT1cInNvcnRTdGF0ZXNcIlxuICAgIFtjbGllbnRTaWRlRmlsdGVyaW5nXT1cImNsaWVudFNpZGVGaWx0ZXJpbmdcIlxuICAgIFtjbGllbnRTaWRlU29ydGluZ109XCJjbGllbnRTaWRlU29ydGluZ1wiXG4gICAgW3RpdGxlTGluZUlkXT1cInRpdGxlTGluZUlkIHx8IGZpcnN0Q29sdW1uSWRcIlxuICAgIFtzdWJ0aXRsZUxpbmVJZHNdPVwic3VidGl0bGVMaW5lSWRzXCJcbiAgICBbY2xpZW50U2lkZVNvcnRpbmddPVwidHJ1ZVwiXG4gICAgW3BhZ2VTaXplc109XCJwYWdlU2l6ZXNcIlxuICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgW3BhZ2luYXRvcl09XCJsaXN0R3JpZFBhZ2luYXRvclwiXG4gICAgW3BhZ2VdPVwicGFnZVwiXG4gICAgKHBhZ2VDaGFuZ2VkKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICBbZW1wdHlSZXN1bHRzTWVzc2FnZV09XCJlbXB0eVJlc3VsdHNNZXNzYWdlXCJcbiAgICBbbGF5b3V0XT1cImxheW91dFwiXG4gICAgW2RlbGV0ZVBlcm1pc3Npb25dPVwiZGVsZXRlUGVybWlzc2lvblwiXG4gICAgW2VkaXRQZXJtaXNzaW9uXT1cImVkaXRQZXJtaXNzaW9uXCJcbiAgICBbdmlld1Blcm1pc3Npb25dPVwidmlld1Blcm1pc3Npb25cIlxuICAgIFtkZWxldGVBY3Rpb25FbmFibGVkRmllbGRdPVwiZGVsZXRlQWN0aW9uRW5hYmxlZEZpZWxkXCJcbiAgICBbZGVsZXRlQWN0aW9uVmlzaWJsZUZpZWxkXT1cImRlbGV0ZUFjdGlvblZpc2libGVGaWVsZFwiXG4gICAgW2VkaXRBY3Rpb25FbmFibGVkRmllbGRdPVwiZWRpdEFjdGlvbkVuYWJsZWRGaWVsZFwiXG4gICAgW2VkaXRBY3Rpb25WaXNpYmxlRmllbGRdPVwiZWRpdEFjdGlvblZpc2libGVGaWVsZFwiXG4gICAgW3ZpZXdBY3Rpb25FbmFibGVkRmllbGRdPVwidmlld0FjdGlvbkVuYWJsZWRGaWVsZFwiXG4gICAgW3ZpZXdBY3Rpb25WaXNpYmxlRmllbGRdPVwidmlld0FjdGlvblZpc2libGVGaWVsZFwiXG4gICAgW2FkZGl0aW9uYWxBY3Rpb25zXT1cImFkZGl0aW9uYWxBY3Rpb25zXCJcbiAgICBbZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzVGVtcGxhdGVdPVwiX2dyaWRJdGVtU3VidGl0bGVMaW5lcyA/IGdyaWRJdGVtU3VidGl0bGVMaW5lcyA6IHVuZGVmaW5lZFwiXG4gICAgW2xpc3RJdGVtU3VidGl0bGVMaW5lc1RlbXBsYXRlXT1cIl9saXN0SXRlbVN1YnRpdGxlTGluZXMgPyBsaXN0SXRlbVN1YnRpdGxlTGluZXMgOiB1bmRlZmluZWRcIlxuICAgIFtsaXN0SXRlbVRlbXBsYXRlXT1cIl9saXN0SXRlbSA/IGxpc3RJdGVtIDogdW5kZWZpbmVkXCJcbiAgICBbZ3JpZEl0ZW1UZW1wbGF0ZV09XCJfZ3JpZEl0ZW0gPyBncmlkSXRlbSAgOiB1bmRlZmluZWRcIlxuICAgIFt0b3RhbFJlY29yZHNPblNlcnZlcl09XCJ0b3RhbFJlY29yZHNPblNlcnZlclwiXG4gID5cbiAgPC9vY3gtZGF0YS1saXN0LWdyaWQ+XG4gIDxuZy10ZW1wbGF0ZSAjbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzIGxldC1pdGVtPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX2xpc3RJdGVtU3VidGl0bGVMaW5lc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Oml0ZW19XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzIGxldC1pdGVtPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX2dyaWRJdGVtU3VidGl0bGVMaW5lc1wiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Oml0ZW19XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjZ3JpZEl0ZW0gbGV0LWl0ZW0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9ncmlkSXRlbVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9ncmlkSXRlbVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Oml0ZW19XCI+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjbGlzdEl0ZW0gbGV0LWl0ZW0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9saXN0SXRlbVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9saXN0SXRlbVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0Oml0ZW19XCI+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImxheW91dCA9PT0gJ3RhYmxlJ1wiPlxuICA8b2N4LWRhdGEtdGFibGVcbiAgICAjb2N4ZGF0YXRhYmxlXG4gICAgW3Jvd3NdPVwiZGF0YVwiXG4gICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXG4gICAgW2ZpbHRlcnNdPVwiZmlsdGVyc1wiXG4gICAgW3NvcnREaXJlY3Rpb25dPVwic29ydERpcmVjdGlvblwiXG4gICAgW3NvcnRDb2x1bW5dPVwic29ydEZpZWxkXCJcbiAgICBbc29ydFN0YXRlc109XCJzb3J0U3RhdGVzXCJcbiAgICBbY2xpZW50U2lkZUZpbHRlcmluZ109XCJjbGllbnRTaWRlRmlsdGVyaW5nXCJcbiAgICBbY2xpZW50U2lkZVNvcnRpbmddPVwiY2xpZW50U2lkZVNvcnRpbmdcIlxuICAgIFtwYWdlU2l6ZXNdPVwicGFnZVNpemVzXCJcbiAgICBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxuICAgIFtwYWdpbmF0b3JdPVwidGFibGVQYWdpbmF0b3JcIlxuICAgIFtwYWdlXT1cInBhZ2VcIlxuICAgIChwYWdlQ2hhbmdlZCk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgW3NlbGVjdGVkUm93c109XCJzZWxlY3RlZFJvd3NcIlxuICAgIFtmcm96ZW5BY3Rpb25Db2x1bW5dPVwiZnJvemVuQWN0aW9uQ29sdW1uXCJcbiAgICBbYWN0aW9uQ29sdW1uUG9zaXRpb25dPVwiYWN0aW9uQ29sdW1uUG9zaXRpb25cIlxuICAgIFtlbXB0eVJlc3VsdHNNZXNzYWdlXT1cImVtcHR5UmVzdWx0c01lc3NhZ2VcIlxuICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgIFtkZWxldGVQZXJtaXNzaW9uXT1cImRlbGV0ZVBlcm1pc3Npb25cIlxuICAgIFtlZGl0UGVybWlzc2lvbl09XCJlZGl0UGVybWlzc2lvblwiXG4gICAgW3ZpZXdQZXJtaXNzaW9uXT1cInZpZXdQZXJtaXNzaW9uXCJcbiAgICBbZGVsZXRlQWN0aW9uRW5hYmxlZEZpZWxkXT1cImRlbGV0ZUFjdGlvbkVuYWJsZWRGaWVsZFwiXG4gICAgW2RlbGV0ZUFjdGlvblZpc2libGVGaWVsZF09XCJkZWxldGVBY3Rpb25WaXNpYmxlRmllbGRcIlxuICAgIFtlZGl0QWN0aW9uRW5hYmxlZEZpZWxkXT1cImVkaXRBY3Rpb25FbmFibGVkRmllbGRcIlxuICAgIFtlZGl0QWN0aW9uVmlzaWJsZUZpZWxkXT1cImVkaXRBY3Rpb25WaXNpYmxlRmllbGRcIlxuICAgIFt2aWV3QWN0aW9uRW5hYmxlZEZpZWxkXT1cInZpZXdBY3Rpb25FbmFibGVkRmllbGRcIlxuICAgIFt2aWV3QWN0aW9uVmlzaWJsZUZpZWxkXT1cInZpZXdBY3Rpb25WaXNpYmxlRmllbGRcIlxuICAgIFthZGRpdGlvbmFsQWN0aW9uc109XCJhZGRpdGlvbmFsQWN0aW9uc1wiXG4gICAgW3N0cmluZ0NlbGxUZW1wbGF0ZV09XCJfc3RyaW5nVGFibGVDZWxsID8gc3RyaW5nQ2VsbCA6IHVuZGVmaW5lZFwiXG4gICAgW251bWJlckNlbGxUZW1wbGF0ZV09XCJfbnVtYmVyVGFibGVDZWxsID8gbnVtYmVyQ2VsbCA6IHVuZGVmaW5lZFwiXG4gICAgW2RhdGVDZWxsVGVtcGxhdGVdPVwiX3RhYmxlRGF0ZUNlbGwgPyBkYXRlQ2VsbCA6IHVuZGVmaW5lZFwiXG4gICAgW3JlbGF0aXZlRGF0ZUNlbGxUZW1wbGF0ZV09XCJfdGFibGVSZWxhdGl2ZURhdGVDZWxsID8gcmVsYXRpdmVEYXRlQ2VsbCA6IHVuZGVmaW5lZFwiXG4gICAgW2NlbGxUZW1wbGF0ZV09XCJfdGFibGVDZWxsID8gY2VsbCA6IHVuZGVmaW5lZFwiXG4gICAgW3RyYW5zbGF0aW9uS2V5Q2VsbFRlbXBsYXRlXT1cIl90YWJsZVRyYW5zbGF0aW9uS2V5Q2VsbCA/IHRyYW5zbGF0aW9uS2V5Q2VsbCA6IHVuZGVmaW5lZFwiXG4gICAgKHNvcnRlZCk9XCJzb3J0aW5nKCRldmVudClcIlxuICAgIChmaWx0ZXJlZCk9XCJmaWx0ZXJpbmcoJGV2ZW50KVwiXG4gICAgW3RvdGFsUmVjb3Jkc09uU2VydmVyXT1cInRvdGFsUmVjb3Jkc09uU2VydmVyXCJcbiAgICBbY3VycmVudFBhZ2VTaG93aW5nS2V5XT1cImN1cnJlbnRQYWdlU2hvd2luZ0tleVwiXG4gICAgW2N1cnJlbnRQYWdlU2hvd2luZ1dpdGhUb3RhbE9uU2VydmVyS2V5XT1cImN1cnJlbnRQYWdlU2hvd2luZ1dpdGhUb3RhbE9uU2VydmVyS2V5XCJcbiAgPlxuICA8L29jeC1kYXRhLXRhYmxlPlxuICA8bmctdGVtcGxhdGUgI3N0cmluZ0NlbGwgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIl9zdHJpbmdUYWJsZUNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX3N0cmluZ1RhYmxlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDogcm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyXG4gID48L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI251bWJlckNlbGwgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIl9udW1iZXJUYWJsZUNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX251bWJlclRhYmxlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDogcm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyXG4gID48L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2RhdGVDZWxsIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJfdGFibGVEYXRlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfdGFibGVEYXRlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDpyb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjcmVsYXRpdmVEYXRlQ2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX3RhYmxlUmVsYXRpdmVEYXRlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfdGFibGVSZWxhdGl2ZURhdGVDZWxsXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OnJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lclxuICA+PC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNjZWxsIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJfdGFibGVDZWxsXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl90YWJsZUNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6IHJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lclxuICA+PC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICN0cmFuc2xhdGlvbktleUNlbGwgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIl90YWJsZVRyYW5zbGF0aW9uS2V5Q2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfdGFibGVUcmFuc2xhdGlvbktleUNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6cm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyXG4gID48L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
366
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci1hY2NlbGVyYXRvci9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS12aWV3L2RhdGEtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItYWNjZWxlcmF0b3Ivc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtdmlldy9kYXRhLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBRVosWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUscUJBQXFCLEVBQWdCLE1BQU0sNENBQTRDLENBQUE7QUFDaEcsT0FBTyxFQUFxQixrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFBOzs7OztBQVkxRixNQUFNLE9BQU8saUJBQWlCO0lBRTVCLElBQXNDLFFBQVEsQ0FBQyxHQUFzQztRQUNuRixJQUFJLENBQUMsc0JBQXNCLEdBQUcsR0FBRyxDQUFBO1FBQ2pDLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFBO0lBQ3pDLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQTtJQUNwQyxDQUFDO0lBR0QsSUFBbUMsU0FBUyxDQUFDLEdBQW1DO1FBQzlFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxHQUFHLENBQUE7UUFDOUIsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLENBQUE7SUFDMUMsQ0FBQztJQUNELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFBO0lBQ2pDLENBQUM7SUFpQ0QsSUFDSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsaUJBQWlCLElBQUks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QUF4RCxZQUFZO3VCQUFDLGVBQWU7Z0JBS3BCLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDcUIsc0JBQXNCO3NCQUFoRCxZQUFZO3VCQUFDLFdBQVc7Z0JBS2hCLCtCQUErQjtzQkFBdkMsS0FBSztnQkFDbUMsb0NBQW9DO3NCQUE1RSxZQUFZO3VCQUFDLHlCQUF5QjtnQkFLOUIsNkJBQTZCO3NCQUFyQyxLQUFLO2dCQUNpQyxrQ0FBa0M7c0JBQXhFLFlBQVk7dUJBQUMsdUJBQXVCO2dCQUs1Qiw2QkFBNkI7c0JBQXJDLEtBQUs7Z0JBQ2lDLGtDQUFrQztzQkFBeEUsWUFBWTt1QkFBQyx1QkFBdUI7Z0JBSTVCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDb0IscUJBQXFCO3NCQUE5QyxZQUFZO3VCQUFDLFVBQVU7Z0JBS2YsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNvQixxQkFBcUI7c0JBQTlDLFlBQVk7dUJBQUMsVUFBVTtnQkFLZiw2QkFBNkI7c0JBQXJDLEtBQUs7Z0JBQ2lDLGtDQUFrQztzQkFBeEUsWUFBWTt1QkFBQyx1QkFBdUI7Z0JBSzVCLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBEb0NoZWNrLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBEYXRhTGlzdEdyaWRDb21wb25lbnQsIExpc3RHcmlkRGF0YSB9IGZyb20gJy4uL2RhdGEtbGlzdC1ncmlkL2RhdGEtbGlzdC1ncmlkLmNvbXBvbmVudCdcbmltcG9ydCB7IFJvdywgRmlsdGVyLCBTb3J0LCBEYXRhVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi9kYXRhLXRhYmxlL2RhdGEtdGFibGUuY29tcG9uZW50J1xuaW1wb3J0IHsgRGF0YVRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGF0YS10YWJsZS1jb2x1bW4ubW9kZWwnXG5pbXBvcnQgeyBEYXRhU29ydERpcmVjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVsL2RhdGEtc29ydC1kaXJlY3Rpb24nXG5pbXBvcnQgeyBEYXRhQWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWwvZGF0YS1hY3Rpb24nXG5cbmV4cG9ydCB0eXBlIFJvd0xpc3RHcmlkRGF0YSA9IExpc3RHcmlkRGF0YSAmIFJvd1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2N4LWRhdGEtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXRhLXZpZXcuY29tcG9uZW50LmNzcyddLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6ICdEYXRhVmlld0NvbXBvbmVudCcsIHVzZUV4aXN0aW5nOiBEYXRhVmlld0NvbXBvbmVudCB9XSxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YVZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBEb0NoZWNrLCBPbkluaXQge1xuICBfZGF0YUxpc3RHcmlkQ29tcG9uZW50OiBEYXRhTGlzdEdyaWRDb21wb25lbnQgfCB1bmRlZmluZWRcbiAgQFZpZXdDaGlsZChEYXRhTGlzdEdyaWRDb21wb25lbnQpIHNldCBsaXN0R3JpZChyZWY6IERhdGFMaXN0R3JpZENvbXBvbmVudCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2RhdGFMaXN0R3JpZENvbXBvbmVudCA9IHJlZlxuICAgIHRoaXMucmVnaXN0ZXJFdmVudExpc3RlbmVyRm9yTGlzdEdyaWQoKVxuICB9XG4gIGdldCBsaXN0R3JpZCgpOiBEYXRhTGlzdEdyaWRDb21wb25lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9kYXRhTGlzdEdyaWRDb21wb25lbnRcbiAgfVxuXG4gIF9kYXRhVGFibGVDb21wb25lbnQ6IERhdGFUYWJsZUNvbXBvbmVudCB8IHVuZGVmaW5lZFxuICBAVmlld0NoaWxkKERhdGFUYWJsZUNvbXBvbmVudCkgc2V0IGRhdGFUYWJsZShyZWY6IERhdGFUYWJsZUNvbXBvbmVudCB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuX2RhdGFUYWJsZUNvbXBvbmVudCA9IHJlZlxuICAgIHRoaXMucmVnaXN0ZXJFdmVudExpc3RlbmVyRm9yRGF0YVRhYmxlKClcbiAgfVxuICBnZXQgZGF0YVRhYmxlKCk6IERhdGFUYWJsZUNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFUYWJsZUNvbXBvbmVudFxuICB9XG4gIEBJbnB1dCgpIGRlbGV0ZVBlcm1pc3Npb246IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBlZGl0UGVybWlzc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIHZpZXdQZXJtaXNzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgZGVsZXRlQWN0aW9uVmlzaWJsZUZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgZGVsZXRlQWN0aW9uRW5hYmxlZEZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgdmlld0FjdGlvblZpc2libGVGaWVsZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIHZpZXdBY3Rpb25FbmFibGVkRmllbGQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBlZGl0QWN0aW9uVmlzaWJsZUZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgZWRpdEFjdGlvbkVuYWJsZWRGaWVsZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIGRhdGE6IFJvd0xpc3RHcmlkRGF0YVtdID0gW11cbiAgQElucHV0KCkgbmFtZSA9ICdEYXRhIHRhYmxlJ1xuICBASW5wdXQoKSB0aXRsZUxpbmVJZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIEBJbnB1dCgpIHN1YnRpdGxlTGluZUlkczogc3RyaW5nW10gPSBbXVxuICBASW5wdXQoKSBsYXlvdXQ6IGFueSA9IFsnZ3JpZCcsICdsaXN0JywgJ3RhYmxlJ11cbiAgQElucHV0KCkgY29sdW1uczogRGF0YVRhYmxlQ29sdW1uW10gPSBbXVxuICBASW5wdXQoKSBlbXB0eVJlc3VsdHNNZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgQElucHV0KCkgY2xpZW50U2lkZVNvcnRpbmcgPSB0cnVlXG4gIEBJbnB1dCgpIGNsaWVudFNpZGVGaWx0ZXJpbmcgPSB0cnVlXG4gIEBJbnB1dCgpIGZhbGxiYWNrSW1hZ2UgPSAncGxhY2Vob2xkZXIucG5nJ1xuICBASW5wdXQoKSBmaWx0ZXJzOiBGaWx0ZXJbXSA9IFtdXG4gIEBJbnB1dCgpIHNvcnRGaWVsZDogYW55ID0gJydcbiAgQElucHV0KCkgc29ydERpcmVjdGlvbjogRGF0YVNvcnREaXJlY3Rpb24gPSBEYXRhU29ydERpcmVjdGlvbi5OT05FXG4gIEBJbnB1dCgpIGxpc3RHcmlkUGFnaW5hdG9yID0gdHJ1ZVxuICBASW5wdXQoKSB0YWJsZVBhZ2luYXRvciA9IHRydWVcbiAgQElucHV0KCkgcGFnZSA9IDBcbiAgQElucHV0KCkgdG90YWxSZWNvcmRzT25TZXJ2ZXI6IG51bWJlciB8IHVuZGVmaW5lZFxuICBASW5wdXQoKSBjdXJyZW50UGFnZVNob3dpbmdLZXkgPSAnT0NYX0RBVEFfVEFCTEUuU0hPV0lORydcbiAgQElucHV0KCkgY3VycmVudFBhZ2VTaG93aW5nV2l0aFRvdGFsT25TZXJ2ZXJLZXkgPSAnT0NYX0RBVEFfVEFCTEUuU0hPV0lOR19XSVRIX1RPVEFMX09OX1NFUlZFUidcbiAgQElucHV0KCkgc2VsZWN0ZWRSb3dzOiBSb3dbXSA9IFtdXG4gIEBJbnB1dCgpIGZyb3plbkFjdGlvbkNvbHVtbiA9IGZhbHNlXG4gIEBJbnB1dCgpIGFjdGlvbkNvbHVtblBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnID0gJ3JpZ2h0J1xuXG4gIEBJbnB1dCgpXG4gIGdldCBwYWdpbmF0b3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGlzdEdyaWRQYWdpbmF0b3IgJiYgdGhpcy50YWJsZVBhZ2luYXRvclxuICB9XG4gIHNldCBwYWdpbmF0b3IodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmxpc3RHcmlkUGFnaW5hdG9yID0gdmFsdWVcbiAgICB0aGlzLnRhYmxlUGFnaW5hdG9yID0gdmFsdWVcbiAgfVxuXG4gIEBJbnB1dCgpIHNvcnRTdGF0ZXM6IERhdGFTb3J0RGlyZWN0aW9uW10gPSBbRGF0YVNvcnREaXJlY3Rpb24uQVNDRU5ESU5HLCBEYXRhU29ydERpcmVjdGlvbi5ERVNDRU5ESU5HXVxuICBASW5wdXQoKSBwYWdlU2l6ZXM6IG51bWJlcltdID0gWzEwLCAyNSwgNTBdXG4gIEBJbnB1dCgpIHBhZ2VTaXplOiBudW1iZXIgPSB0aGlzLnBhZ2VTaXplcz8uWzBdIHx8IDUwXG5cbiAgQElucHV0KCkgc3RyaW5nVGFibGVDZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnc3RyaW5nVGFibGVDZWxsJykgc3RyaW5nVGFibGVDZWxsQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX3N0cmluZ1RhYmxlQ2VsbCgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zdHJpbmdUYWJsZUNlbGxUZW1wbGF0ZSB8fCB0aGlzLnN0cmluZ1RhYmxlQ2VsbENoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIG51bWJlclRhYmxlQ2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ251bWJlclRhYmxlQ2VsbCcpIG51bWJlclRhYmxlQ2VsbENoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9udW1iZXJUYWJsZUNlbGwoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubnVtYmVyVGFibGVDZWxsVGVtcGxhdGUgfHwgdGhpcy5udW1iZXJUYWJsZUNlbGxDaGlsZFRlbXBsYXRlXG4gIH1cblxuICBASW5wdXQoKSBjdXN0b21UYWJsZUNlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdjdXN0b21UYWJsZUNlbGwnKSBjdXN0b21UYWJsZUNlbGxDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfY3VzdG9tVGFibGVDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmN1c3RvbVRhYmxlQ2VsbFRlbXBsYXRlIHx8IHRoaXMuY3VzdG9tVGFibGVDZWxsQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgdGFibGVEYXRlQ2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ3RhYmxlRGF0ZUNlbGwnKSB0YWJsZURhdGVDZWxsQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX3RhYmxlRGF0ZUNlbGwoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVEYXRlQ2VsbFRlbXBsYXRlIHx8IHRoaXMudGFibGVEYXRlQ2VsbENoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIHRhYmxlQ2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ3RhYmxlQ2VsbCcpIHRhYmxlQ2VsbENoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF90YWJsZUNlbGwoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVDZWxsVGVtcGxhdGUgfHwgdGhpcy50YWJsZUNlbGxDaGlsZFRlbXBsYXRlXG4gIH1cblxuICBASW5wdXQoKSB0YWJsZVRyYW5zbGF0aW9uS2V5Q2VsbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ3RhYmxlVHJhbnNsYXRpb25LZXlDZWxsJykgdGFibGVUcmFuc2xhdGlvbktleUNlbGxDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfdGFibGVUcmFuc2xhdGlvbktleUNlbGwoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudGFibGVUcmFuc2xhdGlvbktleUNlbGxUZW1wbGF0ZSB8fCB0aGlzLnRhYmxlVHJhbnNsYXRpb25LZXlDZWxsQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzJykgZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2dyaWRJdGVtU3VidGl0bGVMaW5lcygpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5ncmlkSXRlbVN1YnRpdGxlTGluZXNUZW1wbGF0ZSB8fCB0aGlzLmdyaWRJdGVtU3VidGl0bGVMaW5lc0NoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIGxpc3RJdGVtU3VidGl0bGVMaW5lc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIEBDb250ZW50Q2hpbGQoJ2xpc3RJdGVtU3VidGl0bGVMaW5lcycpIGxpc3RJdGVtU3VidGl0bGVMaW5lc0NoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9saXN0SXRlbVN1YnRpdGxlTGluZXMoKTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubGlzdEl0ZW1TdWJ0aXRsZUxpbmVzVGVtcGxhdGUgfHwgdGhpcy5saXN0SXRlbVN1YnRpdGxlTGluZXNDaGlsZFRlbXBsYXRlXG4gIH1cbiAgQElucHV0KCkgZ3JpZEl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCdncmlkSXRlbScpIGdyaWRJdGVtQ2hpbGRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBnZXQgX2dyaWRJdGVtKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmdyaWRJdGVtVGVtcGxhdGUgfHwgdGhpcy5ncmlkSXRlbUNoaWxkVGVtcGxhdGVcbiAgfVxuXG4gIEBJbnB1dCgpIGxpc3RJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgQENvbnRlbnRDaGlsZCgnbGlzdEl0ZW0nKSBsaXN0SXRlbUNoaWxkVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWRcbiAgZ2V0IF9saXN0SXRlbSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5saXN0SXRlbVRlbXBsYXRlIHx8IHRoaXMubGlzdEl0ZW1DaGlsZFRlbXBsYXRlXG4gIH1cblxuICBASW5wdXQoKSB0YWJsZVJlbGF0aXZlRGF0ZUNlbGxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZFxuICBAQ29udGVudENoaWxkKCd0YWJsZVJlbGF0aXZlRGF0ZUNlbGwnKSB0YWJsZVJlbGF0aXZlRGF0ZUNlbGxDaGlsZFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkXG4gIGdldCBfdGFibGVSZWxhdGl2ZURhdGVDZWxsKCk6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnRhYmxlUmVsYXRpdmVEYXRlQ2VsbFRlbXBsYXRlIHx8IHRoaXMudGFibGVSZWxhdGl2ZURhdGVDZWxsQ2hpbGRUZW1wbGF0ZVxuICB9XG5cbiAgQElucHV0KCkgYWRkaXRpb25hbEFjdGlvbnM6IERhdGFBY3Rpb25bXSA9IFtdXG5cbiAgQE91dHB1dCgpIGZpbHRlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJbXT4oKVxuICBAT3V0cHV0KCkgc29ydGVkID0gbmV3IEV2ZW50RW1pdHRlcjxTb3J0PigpXG4gIEBPdXRwdXQoKSBkZWxldGVJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dMaXN0R3JpZERhdGE+KClcbiAgQE91dHB1dCgpIHZpZXdJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dMaXN0R3JpZERhdGE+KClcbiAgQE91dHB1dCgpIGVkaXRJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dMaXN0R3JpZERhdGE+KClcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFJvd1tdPigpXG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpXG4gIGlzRGVsZXRlSXRlbU9ic2VydmVkOiBib29sZWFuIHwgdW5kZWZpbmVkXG4gIGlzVmlld0l0ZW1PYnNlcnZlZDogYm9vbGVhbiB8IHVuZGVmaW5lZFxuICBJc0VkaXRJdGVtT2JzZXJ2ZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWRcbiAgZmlyc3RDb2x1bW5JZDogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgZ2V0IHZpZXdJdGVtT2JzZXJ2ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KCdJbnRlcmFjdGl2ZURhdGFWaWV3Q29tcG9uZW50JywgbnVsbCk/LnZpZXdJdGVtLm9ic2VydmVkIHx8IHRoaXMudmlld0l0ZW0ub2JzZXJ2ZWRcbiAgfVxuICBnZXQgZWRpdEl0ZW1PYnNlcnZlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbmplY3Rvci5nZXQoJ0ludGVyYWN0aXZlRGF0YVZpZXdDb21wb25lbnQnLCBudWxsKT8uZWRpdEl0ZW0ub2JzZXJ2ZWQgfHwgdGhpcy5lZGl0SXRlbS5vYnNlcnZlZFxuICB9XG4gIGdldCBkZWxldGVJdGVtT2JzZXJ2ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KCdJbnRlcmFjdGl2ZURhdGFWaWV3Q29tcG9uZW50JywgbnVsbCk/LmRlbGV0ZUl0ZW0ub2JzZXJ2ZWQgfHwgdGhpcy5kZWxldGVJdGVtLm9ic2VydmVkXG4gIH1cbiAgZ2V0IHNlbGVjdGlvbkNoYW5nZWRPYnNlcnZlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5pbmplY3Rvci5nZXQoJ0ludGVyYWN0aXZlRGF0YVZpZXdDb21wb25lbnQnLCBudWxsKT8uc2VsZWN0aW9uQ2hhbmdlZC5vYnNlcnZlZCB8fFxuICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkLm9ic2VydmVkXG4gICAgKVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5maXJzdENvbHVtbklkID0gdGhpcy5jb2x1bW5zWzBdPy5pZFxuICB9XG4gIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICB0aGlzLnJlZ2lzdGVyRXZlbnRMaXN0ZW5lckZvckRhdGFUYWJsZSgpXG4gICAgdGhpcy5yZWdpc3RlckV2ZW50TGlzdGVuZXJGb3JMaXN0R3JpZCgpXG4gIH1cbiAgcmVnaXN0ZXJFdmVudExpc3RlbmVyRm9yTGlzdEdyaWQoKSB7XG4gICAgaWYgKHRoaXMubGF5b3V0ICE9PSAndGFibGUnKSB7XG4gICAgICBpZiAodGhpcy5kZWxldGVJdGVtLm9ic2VydmVkKSB7XG4gICAgICAgIHRoaXMuaXNEZWxldGVJdGVtT2JzZXJ2ZWQgPSB0cnVlXG4gICAgICAgIGlmICghdGhpcy5fZGF0YUxpc3RHcmlkQ29tcG9uZW50Py5kZWxldGVJdGVtLm9ic2VydmVkKSB7XG4gICAgICAgICAgdGhpcy5fZGF0YUxpc3RHcmlkQ29tcG9uZW50Py5kZWxldGVJdGVtLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGVsZXRpbmdFbGVtZW50KGV2ZW50KVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnZpZXdJdGVtLm9ic2VydmVkKSB7XG4gICAgICAgIHRoaXMuaXNWaWV3SXRlbU9ic2VydmVkID0gdHJ1ZVxuICAgICAgICBpZiAoIXRoaXMuX2RhdGFMaXN0R3JpZENvbXBvbmVudD8udmlld0l0ZW0ub2JzZXJ2ZWQpIHtcbiAgICAgICAgICB0aGlzLl9kYXRhTGlzdEdyaWRDb21wb25lbnQ/LnZpZXdJdGVtLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMudmlld2luZ0VsZW1lbnQoZXZlbnQpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZWRpdEl0ZW0ub2JzZXJ2ZWQpIHtcbiAgICAgICAgdGhpcy5Jc0VkaXRJdGVtT2JzZXJ2ZWQgPSB0cnVlXG4gICAgICAgIGlmICghdGhpcy5fZGF0YUxpc3RHcmlkQ29tcG9uZW50Py5lZGl0SXRlbS5vYnNlcnZlZCkge1xuICAgICAgICAgIHRoaXMuX2RhdGFMaXN0R3JpZENvbXBvbmVudD8uZWRpdEl0ZW0uc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lZGl0aW5nRWxlbWVudChldmVudClcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJlZ2lzdGVyRXZlbnRMaXN0ZW5lckZvckRhdGFUYWJsZSgpIHtcbiAgICBpZiAodGhpcy5sYXlvdXQgPT09ICd0YWJsZScpIHtcbiAgICAgIGlmICh0aGlzLmRlbGV0ZUl0ZW0ub2JzZXJ2ZWQpIHtcbiAgICAgICAgdGhpcy5pc0RlbGV0ZUl0ZW1PYnNlcnZlZCA9IHRydWVcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhVGFibGVDb21wb25lbnQ/LmRlbGV0ZVRhYmxlUm93Lm9ic2VydmVkKSB7XG4gICAgICAgICAgdGhpcy5fZGF0YVRhYmxlQ29tcG9uZW50Py5kZWxldGVUYWJsZVJvdy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRlbGV0aW5nRWxlbWVudChldmVudClcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy52aWV3SXRlbS5vYnNlcnZlZCkge1xuICAgICAgICB0aGlzLmlzVmlld0l0ZW1PYnNlcnZlZCA9IHRydWVcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhVGFibGVDb21wb25lbnQ/LnZpZXdUYWJsZVJvdy5vYnNlcnZlZCkge1xuICAgICAgICAgIHRoaXMuX2RhdGFUYWJsZUNvbXBvbmVudD8udmlld1RhYmxlUm93LnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMudmlld2luZ0VsZW1lbnQoZXZlbnQpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZWRpdEl0ZW0ub2JzZXJ2ZWQpIHtcbiAgICAgICAgdGhpcy5Jc0VkaXRJdGVtT2JzZXJ2ZWQgPSB0cnVlXG4gICAgICAgIGlmICghdGhpcy5fZGF0YVRhYmxlQ29tcG9uZW50Py5lZGl0VGFibGVSb3cub2JzZXJ2ZWQpIHtcbiAgICAgICAgICB0aGlzLl9kYXRhVGFibGVDb21wb25lbnQ/LmVkaXRUYWJsZVJvdy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmVkaXRpbmdFbGVtZW50KGV2ZW50KVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnNlbGVjdGlvbkNoYW5nZWRPYnNlcnZlZCkge1xuICAgICAgICBpZiAoIXRoaXMuX2RhdGFUYWJsZUNvbXBvbmVudD8uc2VsZWN0aW9uQ2hhbmdlZC5vYnNlcnZlZCkge1xuICAgICAgICAgIHRoaXMuX2RhdGFUYWJsZUNvbXBvbmVudD8uc2VsZWN0aW9uQ2hhbmdlZC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uUm93U2VsZWN0aW9uQ2hhbmdlKGV2ZW50KVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmaWx0ZXJpbmcoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZmlsdGVycyA9IGV2ZW50XG4gICAgdGhpcy5maWx0ZXJlZC5lbWl0KGV2ZW50KVxuICB9XG5cbiAgc29ydGluZyhldmVudDogYW55KSB7XG4gICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gZXZlbnQuc29ydERpcmVjdGlvblxuICAgIHRoaXMuc29ydEZpZWxkID0gZXZlbnQuc29ydENvbHVtblxuICAgIHRoaXMuc29ydGVkLmVtaXQoZXZlbnQpXG4gIH1cblxuICBkZWxldGluZ0VsZW1lbnQoZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLmlzRGVsZXRlSXRlbU9ic2VydmVkKSB7XG4gICAgICB0aGlzLmRlbGV0ZUl0ZW0uZW1pdChldmVudClcbiAgICB9XG4gIH1cblxuICB2aWV3aW5nRWxlbWVudChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuaXNWaWV3SXRlbU9ic2VydmVkKSB7XG4gICAgICB0aGlzLnZpZXdJdGVtLmVtaXQoZXZlbnQpXG4gICAgfVxuICB9XG4gIGVkaXRpbmdFbGVtZW50KGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5Jc0VkaXRJdGVtT2JzZXJ2ZWQpIHtcbiAgICAgIHRoaXMuZWRpdEl0ZW0uZW1pdChldmVudClcbiAgICB9XG4gIH1cblxuICBvblJvd1NlbGVjdGlvbkNoYW5nZShldmVudDogUm93W10pIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25DaGFuZ2VkT2JzZXJ2ZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZC5lbWl0KGV2ZW50KVxuICAgIH1cbiAgfVxuXG4gIG9uUGFnZUNoYW5nZShldmVudDogbnVtYmVyKSB7XG4gICAgdGhpcy5wYWdlID0gZXZlbnRcbiAgICB0aGlzLnBhZ2VDaGFuZ2VkLmVtaXQoZXZlbnQpXG4gIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJsYXlvdXQgIT09ICd0YWJsZSdcIj5cbiAgPG9jeC1kYXRhLWxpc3QtZ3JpZFxuICAgICNvY3hkYXRhbGlzdGdyaWRcbiAgICBbbmFtZV09XCJuYW1lXCJcbiAgICBbZGF0YV09XCJkYXRhXCJcbiAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcbiAgICBbc29ydERpcmVjdGlvbl09XCJzb3J0RGlyZWN0aW9uXCJcbiAgICBbc29ydEZpZWxkXT1cInNvcnRGaWVsZFwiXG4gICAgW3NvcnRTdGF0ZXNdPVwic29ydFN0YXRlc1wiXG4gICAgW2NsaWVudFNpZGVGaWx0ZXJpbmddPVwiY2xpZW50U2lkZUZpbHRlcmluZ1wiXG4gICAgW2NsaWVudFNpZGVTb3J0aW5nXT1cImNsaWVudFNpZGVTb3J0aW5nXCJcbiAgICBbdGl0bGVMaW5lSWRdPVwidGl0bGVMaW5lSWQgfHwgZmlyc3RDb2x1bW5JZFwiXG4gICAgW3N1YnRpdGxlTGluZUlkc109XCJzdWJ0aXRsZUxpbmVJZHNcIlxuICAgIFtjbGllbnRTaWRlU29ydGluZ109XCJ0cnVlXCJcbiAgICBbcGFnZVNpemVzXT1cInBhZ2VTaXplc1wiXG4gICAgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICBbcGFnaW5hdG9yXT1cImxpc3RHcmlkUGFnaW5hdG9yXCJcbiAgICBbcGFnZV09XCJwYWdlXCJcbiAgICAocGFnZUNoYW5nZWQpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxuICAgIFtlbXB0eVJlc3VsdHNNZXNzYWdlXT1cImVtcHR5UmVzdWx0c01lc3NhZ2VcIlxuICAgIFtsYXlvdXRdPVwibGF5b3V0XCJcbiAgICBbZGVsZXRlUGVybWlzc2lvbl09XCJkZWxldGVQZXJtaXNzaW9uXCJcbiAgICBbZWRpdFBlcm1pc3Npb25dPVwiZWRpdFBlcm1pc3Npb25cIlxuICAgIFt2aWV3UGVybWlzc2lvbl09XCJ2aWV3UGVybWlzc2lvblwiXG4gICAgW2RlbGV0ZUFjdGlvbkVuYWJsZWRGaWVsZF09XCJkZWxldGVBY3Rpb25FbmFibGVkRmllbGRcIlxuICAgIFtkZWxldGVBY3Rpb25WaXNpYmxlRmllbGRdPVwiZGVsZXRlQWN0aW9uVmlzaWJsZUZpZWxkXCJcbiAgICBbZWRpdEFjdGlvbkVuYWJsZWRGaWVsZF09XCJlZGl0QWN0aW9uRW5hYmxlZEZpZWxkXCJcbiAgICBbZWRpdEFjdGlvblZpc2libGVGaWVsZF09XCJlZGl0QWN0aW9uVmlzaWJsZUZpZWxkXCJcbiAgICBbdmlld0FjdGlvbkVuYWJsZWRGaWVsZF09XCJ2aWV3QWN0aW9uRW5hYmxlZEZpZWxkXCJcbiAgICBbdmlld0FjdGlvblZpc2libGVGaWVsZF09XCJ2aWV3QWN0aW9uVmlzaWJsZUZpZWxkXCJcbiAgICBbYWRkaXRpb25hbEFjdGlvbnNdPVwiYWRkaXRpb25hbEFjdGlvbnNcIlxuICAgIFtncmlkSXRlbVN1YnRpdGxlTGluZXNUZW1wbGF0ZV09XCJfZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzID8gZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzIDogdW5kZWZpbmVkXCJcbiAgICBbbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzVGVtcGxhdGVdPVwiX2xpc3RJdGVtU3VidGl0bGVMaW5lcyA/IGxpc3RJdGVtU3VidGl0bGVMaW5lcyA6IHVuZGVmaW5lZFwiXG4gICAgW2xpc3RJdGVtVGVtcGxhdGVdPVwiX2xpc3RJdGVtID8gbGlzdEl0ZW0gOiB1bmRlZmluZWRcIlxuICAgIFtncmlkSXRlbVRlbXBsYXRlXT1cIl9ncmlkSXRlbSA/IGdyaWRJdGVtICA6IHVuZGVmaW5lZFwiXG4gICAgW3RvdGFsUmVjb3Jkc09uU2VydmVyXT1cInRvdGFsUmVjb3Jkc09uU2VydmVyXCJcbiAgPlxuICA8L29jeC1kYXRhLWxpc3QtZ3JpZD5cbiAgPG5nLXRlbXBsYXRlICNsaXN0SXRlbVN1YnRpdGxlTGluZXMgbGV0LWl0ZW0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJfbGlzdEl0ZW1TdWJ0aXRsZUxpbmVzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9saXN0SXRlbVN1YnRpdGxlTGluZXNcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6aXRlbX1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lclxuICA+PC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNncmlkSXRlbVN1YnRpdGxlTGluZXMgbGV0LWl0ZW0+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJfZ3JpZEl0ZW1TdWJ0aXRsZUxpbmVzXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl9ncmlkSXRlbVN1YnRpdGxlTGluZXNcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6aXRlbX1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lclxuICA+PC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNncmlkSXRlbSBsZXQtaXRlbT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2dyaWRJdGVtXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2dyaWRJdGVtXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6aXRlbX1cIj5cbiAgICA8L25nLWNvbnRhaW5lclxuICA+PC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNsaXN0SXRlbSBsZXQtaXRlbT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX2xpc3RJdGVtXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiX2xpc3RJdGVtXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6aXRlbX1cIj5cbiAgICA8L25nLWNvbnRhaW5lclxuICA+PC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwibGF5b3V0ID09PSAndGFibGUnXCI+XG4gIDxvY3gtZGF0YS10YWJsZVxuICAgICNvY3hkYXRhdGFibGVcbiAgICBbcm93c109XCJkYXRhXCJcbiAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcbiAgICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcbiAgICBbc29ydERpcmVjdGlvbl09XCJzb3J0RGlyZWN0aW9uXCJcbiAgICBbc29ydENvbHVtbl09XCJzb3J0RmllbGRcIlxuICAgIFtzb3J0U3RhdGVzXT1cInNvcnRTdGF0ZXNcIlxuICAgIFtjbGllbnRTaWRlRmlsdGVyaW5nXT1cImNsaWVudFNpZGVGaWx0ZXJpbmdcIlxuICAgIFtjbGllbnRTaWRlU29ydGluZ109XCJjbGllbnRTaWRlU29ydGluZ1wiXG4gICAgW3BhZ2VTaXplc109XCJwYWdlU2l6ZXNcIlxuICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgW3BhZ2luYXRvcl09XCJ0YWJsZVBhZ2luYXRvclwiXG4gICAgW3BhZ2VdPVwicGFnZVwiXG4gICAgKHBhZ2VDaGFuZ2VkKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICBbc2VsZWN0ZWRSb3dzXT1cInNlbGVjdGVkUm93c1wiXG4gICAgW2Zyb3plbkFjdGlvbkNvbHVtbl09XCJmcm96ZW5BY3Rpb25Db2x1bW5cIlxuICAgIFthY3Rpb25Db2x1bW5Qb3NpdGlvbl09XCJhY3Rpb25Db2x1bW5Qb3NpdGlvblwiXG4gICAgW2VtcHR5UmVzdWx0c01lc3NhZ2VdPVwiZW1wdHlSZXN1bHRzTWVzc2FnZVwiXG4gICAgW25hbWVdPVwibmFtZVwiXG4gICAgW2RlbGV0ZVBlcm1pc3Npb25dPVwiZGVsZXRlUGVybWlzc2lvblwiXG4gICAgW2VkaXRQZXJtaXNzaW9uXT1cImVkaXRQZXJtaXNzaW9uXCJcbiAgICBbdmlld1Blcm1pc3Npb25dPVwidmlld1Blcm1pc3Npb25cIlxuICAgIFtkZWxldGVBY3Rpb25FbmFibGVkRmllbGRdPVwiZGVsZXRlQWN0aW9uRW5hYmxlZEZpZWxkXCJcbiAgICBbZGVsZXRlQWN0aW9uVmlzaWJsZUZpZWxkXT1cImRlbGV0ZUFjdGlvblZpc2libGVGaWVsZFwiXG4gICAgW2VkaXRBY3Rpb25FbmFibGVkRmllbGRdPVwiZWRpdEFjdGlvbkVuYWJsZWRGaWVsZFwiXG4gICAgW2VkaXRBY3Rpb25WaXNpYmxlRmllbGRdPVwiZWRpdEFjdGlvblZpc2libGVGaWVsZFwiXG4gICAgW3ZpZXdBY3Rpb25FbmFibGVkRmllbGRdPVwidmlld0FjdGlvbkVuYWJsZWRGaWVsZFwiXG4gICAgW3ZpZXdBY3Rpb25WaXNpYmxlRmllbGRdPVwidmlld0FjdGlvblZpc2libGVGaWVsZFwiXG4gICAgW2FkZGl0aW9uYWxBY3Rpb25zXT1cImFkZGl0aW9uYWxBY3Rpb25zXCJcbiAgICBbc3RyaW5nQ2VsbFRlbXBsYXRlXT1cIl9zdHJpbmdUYWJsZUNlbGwgPyBzdHJpbmdDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbbnVtYmVyQ2VsbFRlbXBsYXRlXT1cIl9udW1iZXJUYWJsZUNlbGwgPyBudW1iZXJDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbY3VzdG9tQ2VsbFRlbXBsYXRlXT1cIl9jdXN0b21UYWJsZUNlbGwgPyBjdXN0b21DZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbZGF0ZUNlbGxUZW1wbGF0ZV09XCJfdGFibGVEYXRlQ2VsbCA/IGRhdGVDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbcmVsYXRpdmVEYXRlQ2VsbFRlbXBsYXRlXT1cIl90YWJsZVJlbGF0aXZlRGF0ZUNlbGwgPyByZWxhdGl2ZURhdGVDZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbY2VsbFRlbXBsYXRlXT1cIl90YWJsZUNlbGwgPyBjZWxsIDogdW5kZWZpbmVkXCJcbiAgICBbdHJhbnNsYXRpb25LZXlDZWxsVGVtcGxhdGVdPVwiX3RhYmxlVHJhbnNsYXRpb25LZXlDZWxsID8gdHJhbnNsYXRpb25LZXlDZWxsIDogdW5kZWZpbmVkXCJcbiAgICAoc29ydGVkKT1cInNvcnRpbmcoJGV2ZW50KVwiXG4gICAgKGZpbHRlcmVkKT1cImZpbHRlcmluZygkZXZlbnQpXCJcbiAgICBbdG90YWxSZWNvcmRzT25TZXJ2ZXJdPVwidG90YWxSZWNvcmRzT25TZXJ2ZXJcIlxuICAgIFtjdXJyZW50UGFnZVNob3dpbmdLZXldPVwiY3VycmVudFBhZ2VTaG93aW5nS2V5XCJcbiAgICBbY3VycmVudFBhZ2VTaG93aW5nV2l0aFRvdGFsT25TZXJ2ZXJLZXldPVwiY3VycmVudFBhZ2VTaG93aW5nV2l0aFRvdGFsT25TZXJ2ZXJLZXlcIlxuICA+XG4gIDwvb2N4LWRhdGEtdGFibGU+XG4gIDxuZy10ZW1wbGF0ZSAjc3RyaW5nQ2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX3N0cmluZ1RhYmxlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfc3RyaW5nVGFibGVDZWxsXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OiByb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjbnVtYmVyQ2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX251bWJlclRhYmxlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfbnVtYmVyVGFibGVDZWxsXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OiByb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjY3VzdG9tQ2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX2N1c3RvbVRhYmxlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJfY3VzdG9tVGFibGVDZWxsXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OiByb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjZGF0ZUNlbGwgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIl90YWJsZURhdGVDZWxsXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl90YWJsZURhdGVDZWxsXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7cm93T2JqZWN0OnJvd09iamVjdCwgY29sdW1uOmNvbHVtbn1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lclxuICA+PC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNyZWxhdGl2ZURhdGVDZWxsIGxldC1yb3dPYmplY3Q9XCJyb3dPYmplY3RcIiBsZXQtY29sdW1uPVwiY29sdW1uXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJfdGFibGVSZWxhdGl2ZURhdGVDZWxsXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl90YWJsZVJlbGF0aXZlRGF0ZUNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntyb3dPYmplY3Q6cm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyXG4gID48L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI2NlbGwgbGV0LXJvd09iamVjdD1cInJvd09iamVjdFwiIGxldC1jb2x1bW49XCJjb2x1bW5cIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIl90YWJsZUNlbGxcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiX3RhYmxlQ2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDogcm93T2JqZWN0LCBjb2x1bW46Y29sdW1ufVwiXG4gICAgPlxuICAgIDwvbmctY29udGFpbmVyXG4gID48L25nLXRlbXBsYXRlPlxuICA8bmctdGVtcGxhdGUgI3RyYW5zbGF0aW9uS2V5Q2VsbCBsZXQtcm93T2JqZWN0PVwicm93T2JqZWN0XCIgbGV0LWNvbHVtbj1cImNvbHVtblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiX3RhYmxlVHJhbnNsYXRpb25LZXlDZWxsXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIl90YWJsZVRyYW5zbGF0aW9uS2V5Q2VsbFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie3Jvd09iamVjdDpyb3dPYmplY3QsIGNvbHVtbjpjb2x1bW59XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXJcbiAgPjwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==