barsa-sap-ui 1.0.324 → 1.0.326
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.
- package/esm2020/lib/barsa-pishnamayesh-payam/barsa-pishnamayesh-payam.component.mjs +2 -2
- package/esm2020/lib/barsa-table-row/barsa-table-row.component.mjs +1 -1
- package/esm2020/lib/barsa-ulv-main/barsa-ulv-main.component.mjs +12 -4
- package/esm2020/lib/file-viewer-popover/file-viewer-popover.component.mjs +8 -8
- package/esm2020/lib/form-dialog/form-dialog.component.mjs +1 -1
- package/esm2020/lib/form-dialog-less/form-dialog-less.component.mjs +1 -1
- package/esm2020/lib/fundamental-dynamic-form/fundamental-dynamic-form.component.mjs +7 -4
- package/esm2020/lib/sap-ui-report-base.component.mjs +2 -1
- package/esm2020/lib/ui-list-view/ui-list-view.component.mjs +1 -1
- package/esm2020/lib/ui-mo-info-ulv-combo/ui-mo-info-ulv-combo.component.mjs +10 -10
- package/esm2020/lib/ui-simple-combo/ui-simple-combo.component.mjs +1 -1
- package/esm2020/lib/ui-ulv-main-ui/ui-ulv-main-ui.component.mjs +11 -7
- package/esm2020/lib/ulv-toolbar/ulv-toolbar.component.mjs +9 -5
- package/fesm2015/barsa-sap-ui.mjs +138 -119
- package/fesm2015/barsa-sap-ui.mjs.map +1 -1
- package/fesm2020/barsa-sap-ui.mjs +137 -118
- package/fesm2020/barsa-sap-ui.mjs.map +1 -1
- package/lib/barsa-ulv-main/barsa-ulv-main.component.d.ts +6 -3
- package/lib/fundamental-dynamic-form/fundamental-dynamic-form.component.d.ts +1 -0
- package/lib/ui-ulv-main-ui/ui-ulv-main-ui.component.d.ts +2 -0
- package/lib/ulv-toolbar/ulv-toolbar.component.d.ts +2 -1
- package/package.json +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { ToolbarComponent } from '@fundamental-ngx/core';
|
|
2
3
|
import { BaseComponent } from 'barsa-novin-ray-core';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
import * as i1 from "@angular/common";
|
|
@@ -52,11 +53,14 @@ export class UlvToolbarComponent extends BaseComponent {
|
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
55
|
UlvToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UlvToolbarComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
55
|
-
UlvToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UlvToolbarComponent, selector: "bsu-ulv-toolbar", inputs: { useLayoutItemTextForControl: "useLayoutItemTextForControl", enableSearch: "enableSearch", hideTitle: "hideTitle", title: "title", deviceName: "deviceName", deviceSize: "deviceSize", access: "access", hideToolbar: "hideToolbar", toolbarButtons: "toolbarButtons", contentDensity: "contentDensity", inlineEditMode: "inlineEditMode", allowInlineEdit: "allowInlineEdit", gridSetting: "gridSetting", viewCollection: "viewCollection", reportView: "reportView", inDialog: "inDialog", isMultiSelect: "isMultiSelect", hasSelected: "hasSelected", config: "config", hidden: "hidden", buttons: "buttons" }, outputs: { search: "search", groupbyClick: "groupbyClick", sortClick: "sortClick", columnClick: "columnClick", editModeClick: "editModeClick", viewClick: "viewClick", createNewInlineMo: "createNewInlineMo" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container *untilInView=\"el\">\r\n <fd-toolbar\r\n #toolbar\r\n [shouldOverflow]=\"deviceName === 'mobile'\"\r\n [hasTitle]=\"true\"\r\n [clearBorder]=\"true\"\r\n *ngIf=\"!useLayoutItemTextForControl && !hideToolbar; else searchField\"\r\n >\r\n <h4 fd-toolbar-item *ngIf=\"!hideTitle\">{{ title | bbbTranslate }}</h4>\r\n <fd-toolbar-spacer fd-toolbar-item></fd-toolbar-spacer>\r\n\r\n <ng-container *ngIf=\"!hideToolbar\">\r\n <ng-container *ngFor=\"let btn of toolbarButtons; trackBy: _trackBy; let i = index\">\r\n <fd-toolbar-separator\r\n fd-toolbar-item\r\n *ngIf=\"(btn === '-' || btn.type === 'seperator') && deviceName !== 'mobile'\"\r\n ></fd-toolbar-separator>\r\n <fd-split-button\r\n *ngIf=\"btn.menu; else btnTemplate\"\r\n fd-toolbar-item\r\n [fdType]=\"'transparent'\"\r\n [mainAction]=\"{ mainActionTitle: btn.text, keepMainAction: true }\"\r\n >\r\n <fd-menu>\r\n <li fd-menu-item *ngFor=\"let btnCommand of btn.menu.items\" [ulvCommandHandler]=\"btnCommand\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ btnCommand.text }}</span>\r\n </div>\r\n </li>\r\n </fd-menu>\r\n </fd-split-button>\r\n <ng-template #btnTemplate>\r\n <ng-container *ngIf=\"btn.type !== 'seperator' && btn.Command?._isVisible\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n btn?.Command?.CustomUi ? customButtonTemplate : defaultButtonTemplate;\r\n context: { $implicit: btn }\r\n \"\r\n ></ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ng-container>\r\n <ng-content select=\"[fd-toolbar-item]\"></ng-content>\r\n\r\n <ng-container *ngIf=\"gridSetting && gridSetting.Hidden !== true\">\r\n <fdp-search-field\r\n *ngIf=\"enableSearch === true\"\r\n fd-toolbar-item\r\n placeholder=\"\u0639\u0628\u0627\u0631\u062A \u062C\u0633\u062A\u062C\u0648\"\r\n [suggestions]=\"[]\"\r\n [contentDensity]=\"contentDensity\"\r\n (searchSubmit)=\"onSearchSubmit($event)\"\r\n ></fdp-search-field>\r\n\r\n <!-- <fdp-button-->\r\n <!-- fd-toolbar-item-->\r\n <!-- [contentDensity]=\"contentDensity\"-->\r\n <!-- buttonType=\"transparent\"-->\r\n <!-- [label]=\"device === 'mobile' ? ('Filter' | bbbTranslate) : ''\"-->\r\n <!-- [glyph]=\"'filter'\"-->\r\n <!-- >-->\r\n <!-- </fdp-button>-->\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [contentDensity]=\"contentDensity\"\r\n fdType=\"transparent\"\r\n [glyph]=\"'group-2'\"\r\n [fdOverflowGroup]=\"1\"\r\n fdOverflowPriority=\"low\"\r\n (click)=\"onGroupbySettings()\"\r\n [title]=\"'Groups' | bbbTranslate\"\r\n ></button>\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [contentDensity]=\"contentDensity\"\r\n fdType=\"transparent\"\r\n [fdOverflowGroup]=\"1\"\r\n fdOverflowPriority=\"low\"\r\n [glyph]=\"'sort'\"\r\n (click)=\"onSortSettings()\"\r\n [title]=\"'Sort' | bbbTranslate\"\r\n ></button>\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [contentDensity]=\"contentDensity\"\r\n fdType=\"transparent\"\r\n [fdOverflowGroup]=\"1\"\r\n fdOverflowPriority=\"low\"\r\n [glyph]=\"'action-settings'\"\r\n (click)=\"onColumnSettings()\"\r\n [title]=\"'Columns' | bbbTranslate\"\r\n ></button>\r\n <button\r\n *ngIf=\"allowInlineEdit && access.Edit\"\r\n fd-button\r\n fd-toolbar-item\r\n [fdType]=\"inlineEditMode ? 'emphasized' : 'transparent'\"\r\n [glyph]=\"'edit'\"\r\n (click)=\"onEditMode()\"\r\n [title]=\"'Edit' | bbbTranslate\"\r\n ></button>\r\n\r\n <fd-split-button\r\n *ngIf=\"viewCollection && viewCollection.length > 1\"\r\n fd-toolbar-item\r\n [fdType]=\"'transparent'\"\r\n [mainAction]=\"{\r\n keepMainAction: true,\r\n mainActionTitle: splitBtnTitle\r\n }\"\r\n >\r\n <fd-menu>\r\n <li fd-menu-item *ngFor=\"let viewObject of viewCollection\">\r\n <div fd-menu-interactive (click)=\"onChangeView(viewObject)\">\r\n <span fd-menu-title>\r\n <fd-icon [glyph]=\"viewObject.UiComponent.Settings?.Icon\"> </fd-icon>\r\n </span>\r\n </div>\r\n </li>\r\n </fd-menu>\r\n </fd-split-button>\r\n <ng-template #splitBtnTitle>\r\n <fd-icon [glyph]=\"reportView.UiComponent.Settings?.Icon\"></fd-icon>\r\n </ng-template>\r\n </ng-container>\r\n </ng-container>\r\n </fd-toolbar>\r\n <ng-template #searchField>\r\n <fd-toolbar *ngIf=\"enableSearch\">\r\n <fdp-search-field\r\n fd-toolbar-item\r\n placeholder=\"\u0639\u0628\u0627\u0631\u062A \u062C\u0633\u062A\u062C\u0648\"\r\n [suggestions]=\"[]\"\r\n [contentDensity]=\"contentDensity\"\r\n (searchSubmit)=\"onSearchSubmit($event)\"\r\n ></fdp-search-field\r\n ></fd-toolbar>\r\n </ng-template>\r\n</ng-container>\r\n<ng-template #defaultButtonTemplate let-btn>\r\n <button\r\n *ngIf=\"inlineEditMode && btn.text === ('New' | bbbTranslate); else tplToolbarBtn\"\r\n fd-button\r\n fd-toolbar-item\r\n [disabled]=\"btn.Command._isEnable === false ? true : false\"\r\n [fdType]=\"!btn.Command._isEnable ? 'transparent' : btn.Command.JsonExtraProp?.Design || 'transparent'\"\r\n [glyph]=\"btn.Command.JsonExtraProp?.Icon\"\r\n [title]=\"btn.Command?.IsBuiltin ? btn.text : ''\"\r\n (click)=\"createNewInlineMo.emit()\"\r\n >\r\n <img\r\n *ngIf=\"!btn.Command.JsonExtraProp?.Icon && !btn.Command?.IsBuiltin && btn.icon\"\r\n width=\"16\"\r\n [src]=\"btn.icon\"\r\n />\r\n <span *ngIf=\"!btn.hideText\">{{ btn.text }}</span>\r\n </button>\r\n <ng-template #tplToolbarBtn>\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [ulvCommandHandler]=\"btn\"\r\n [disabled]=\"btn.Command._isEnable === false ? true : false\"\r\n [fdType]=\"!btn.Command._isEnable ? 'transparent' : btn.Command.JsonExtraProp?.Design || 'transparent'\"\r\n [glyph]=\"btn.Command.JsonExtraProp?.Icon\"\r\n [title]=\"btn.Command?.IsBuiltin ? btn.text : ''\"\r\n >\r\n <img\r\n *ngIf=\"!btn.Command.JsonExtraProp?.Icon && !btn.Command?.IsBuiltin && btn.icon\"\r\n width=\"16\"\r\n [src]=\"btn.icon\"\r\n />\r\n <span *ngIf=\"!btn.hideText\">{{ btn.text }}</span>\r\n </button>\r\n </ng-template>\r\n</ng-template>\r\n<ng-template #customButtonTemplate let-btn>\r\n <bnrc-dynamic-form-toolbaritem\r\n fd-toolbar-item\r\n [ulvCommandHandler]=\"btn\"\r\n [component]=\"btn.Command?.CustomUi\"\r\n [context]=\"btn\"\r\n [isEnable]=\"btn.Command?._isEnable\"\r\n [deviceName]=\"deviceName\"\r\n ></bnrc-dynamic-form-toolbaritem>\r\n</ng-template>\r\n", styles: [":host{display:block;width:100%}:host ::ng-deep .fd-toolbar{flex-wrap:nowrap!important}:host ::ng-deep .fd-toolbar{border-top:var(--sapList_BorderWidth) solid var(--sapList_BorderColor);border-left:var(--sapList_BorderWidth) solid var(--sapList_BorderColor);border-right:var(--sapList_BorderWidth) solid var(--sapList_BorderColor)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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.DynamicFormToolbaritemComponent, selector: "bnrc-dynamic-form-toolbaritem", inputs: ["mo", "index", "deviceName", "context", "btn", "isEnable", "showText", "allColumns", "conditionalFormats"], outputs: ["btnClick"] }, { kind: "directive", type: i2.UlvCommandDirective, selector: "[ulvCommandHandler]", inputs: ["ulvCommandHandler"], outputs: ["commandClick"] }, { kind: "directive", type: i2.UntilInViewDirective, selector: "[untilInView]", inputs: ["untilInView", "intersectionDebounce"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i5.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: i5.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "directive", type: i5.MenuInteractiveDirective, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i5.MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "component", type: i6.SplitButtonComponent, selector: "fd-split-button", inputs: ["glyph", "disabled", "mainActionTitle", "fdType", "expandButtonAriaLabel", "expandButtonTitle", "selected", "fixedWidth", "mainAction", "arialLabel"], outputs: ["primaryButtonClicked"] }, { kind: "component", type: i7.ToolbarComponent, selector: "fd-toolbar", inputs: ["class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i7.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "component", type: i7.ToolbarSpacerComponent, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: i7.ToolbarSeparatorComponent, selector: "fd-toolbar-separator" }, { kind: "directive", type: i7.ToolbarOverflowPriorityDirective, selector: "[fdOverflowPriority]", inputs: ["fdOverflowPriority"] }, { kind: "directive", type: i7.ToolbarOverflowGroupDirective, selector: "[fdOverflowGroup]", inputs: ["fdOverflowGroup"] }, { kind: "directive", type: i8.PlatformContentDensityDeprecationDirective, selector: " fdp-action-bar[contentDensity], fdp-button[contentDensity], fdp-object-list-item[contentDensity], fdp-standard-list-item[contentDensity], fdp-menu[contentDensity], fdp-menu-button[contentDensity], fdp-panel[contentDensity], fdp-search-field[contentDensity], fdp-split-menu-button[contentDensity], fdp-file-uploader[contentDensity], fdp-upload-collection[contentDensity], fdp-table[contentDensity], fdp-multi-input[contentDensity], fdp-list[contentDensity], fdp-slider[contentDensity], fdp-time-picker[contentDensity], fdp-textarea[contentDensity], fdp-switch[contentDensity], fdp-number-step-input[contentDensity], fdp-select[contentDensity], fdp-date-picker[contentDensity], fdp-checkbox[contentDensity], fdp-checkbox-group[contentDensity], fdp-combobox[contentDensity], fdp-datetime-picker[contentDensity], fdp-input[contentDensity], fdp-radio-group[contentDensity], fdp-radio-button[contentDensity], fdp-multi-combobox[contentDensity], fdp-input-group-addon-body[contentDensity], fdp-input-group[contentDensity], fdp-value-help-dialog[contentDensity], fdp-filter-single-select[contentDensity], fdp-filter-multi-select[contentDensity], fdp-filter-custom[contentDensity] " }, { kind: "component", type: i9.SearchFieldComponent, selector: "fdp-search-field", inputs: ["placeholder", "mobile", "mobileConfig", "disableRefresh", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "ariaLabel", "ariaLabelledby", "searchSuggestionMessage", "searchSuggestionNavigateMessage"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
56
|
+
UlvToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UlvToolbarComponent, selector: "bsu-ulv-toolbar", inputs: { useLayoutItemTextForControl: "useLayoutItemTextForControl", enableSearch: "enableSearch", hideTitle: "hideTitle", title: "title", deviceName: "deviceName", deviceSize: "deviceSize", access: "access", hideToolbar: "hideToolbar", toolbarButtons: "toolbarButtons", contentDensity: "contentDensity", inlineEditMode: "inlineEditMode", allowInlineEdit: "allowInlineEdit", gridSetting: "gridSetting", viewCollection: "viewCollection", reportView: "reportView", inDialog: "inDialog", isMultiSelect: "isMultiSelect", hasSelected: "hasSelected", config: "config", hidden: "hidden", buttons: "buttons" }, outputs: { search: "search", groupbyClick: "groupbyClick", sortClick: "sortClick", columnClick: "columnClick", editModeClick: "editModeClick", viewClick: "viewClick", createNewInlineMo: "createNewInlineMo" }, viewQueries: [{ propertyName: "_toolbar", first: true, predicate: ToolbarComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<ng-container>\n <fd-toolbar\n #toolbar\n [shouldOverflow]=\"deviceSize === 's'\"\n [hasTitle]=\"!hideTitle\"\n [clearBorder]=\"true\"\n [forceOverflow]=\"true\"\n [title]=\"!hideTitle ? (title | bbbTranslate) : ''\"\n *ngIf=\"!useLayoutItemTextForControl && !hideToolbar; else searchField\"\n >\n <fd-toolbar-spacer fd-toolbar-item></fd-toolbar-spacer>\n\n <ng-container *ngIf=\"!hideToolbar\">\n <ng-container *ngFor=\"let btn of toolbarButtons; trackBy: _trackBy; let i = index\">\n <fd-toolbar-separator\n fd-toolbar-item\n *ngIf=\"(btn === '-' || btn.type === 'seperator') && deviceName !== 'mobile'\"\n ></fd-toolbar-separator>\n <fd-split-button\n *ngIf=\"btn.menu; else btnTemplate\"\n fd-toolbar-item\n [fdType]=\"'transparent'\"\n [mainAction]=\"{ mainActionTitle: btn.text, keepMainAction: true }\"\n >\n <fd-menu>\n <li fd-menu-item *ngFor=\"let btnCommand of btn.menu.items\" [ulvCommandHandler]=\"btnCommand\">\n <div fd-menu-interactive>\n <span fd-menu-title>{{ btnCommand.text }}</span>\n </div>\n </li>\n </fd-menu>\n </fd-split-button>\n <ng-template #btnTemplate>\n <ng-container *ngIf=\"btn.type !== 'seperator' && btn.Command?._isVisible\">\n <ng-container\n *ngTemplateOutlet=\"\n btn?.Command?.CustomUi ? customButtonTemplate : defaultButtonTemplate;\n context: { $implicit: btn }\n \"\n ></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-content select=\"[fd-toolbar-item]\"></ng-content>\n\n <ng-container *ngIf=\"gridSetting && gridSetting.Hidden !== true\">\n <fdp-search-field\n *ngIf=\"enableSearch === true\"\n fd-toolbar-item\n placeholder=\"\u0639\u0628\u0627\u0631\u062A \u062C\u0633\u062A\u062C\u0648\"\n [suggestions]=\"[]\"\n [contentDensity]=\"contentDensity\"\n (searchSubmit)=\"onSearchSubmit($event)\"\n ></fdp-search-field>\n\n <!-- <fdp-button-->\n <!-- fd-toolbar-item-->\n <!-- [contentDensity]=\"contentDensity\"-->\n <!-- buttonType=\"transparent\"-->\n <!-- [label]=\"device === 'mobile' ? ('Filter' | bbbTranslate) : ''\"-->\n <!-- [glyph]=\"'filter'\"-->\n <!-- >-->\n <!-- </fdp-button>-->\n <button\n fd-toolbar-item\n fd-button\n [contentDensity]=\"contentDensity\"\n fdType=\"transparent\"\n [glyph]=\"'group-2'\"\n [attr.fdOverflowGroup]=\"1\"\n [attr.fdOverflowPriority]=\"'low'\"\n (click)=\"onGroupbySettings()\"\n [title]=\"'Groups' | bbbTranslate\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n [contentDensity]=\"contentDensity\"\n fdType=\"transparent\"\n [attr.fdOverflowGroup]=\"1\"\n [glyph]=\"'sort'\"\n [attr.fdOverflowPriority]=\"'low'\"\n (click)=\"onSortSettings()\"\n [title]=\"'Sort' | bbbTranslate\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n [contentDensity]=\"contentDensity\"\n fdType=\"transparent\"\n [attr.fdOverflowGroup]=\"1\"\n [glyph]=\"'action-settings'\"\n [attr.fdOverflowPriority]=\"'low'\"\n (click)=\"onColumnSettings()\"\n [title]=\"'Columns' | bbbTranslate\"\n ></button>\n <button\n *ngIf=\"allowInlineEdit && access.Edit\"\n fd-button\n fd-toolbar-item\n [fdType]=\"inlineEditMode ? 'emphasized' : 'transparent'\"\n [glyph]=\"'edit'\"\n (click)=\"onEditMode()\"\n [attr.fdOverflowGroup]=\"2\"\n [attr.fdOverflowPriority]=\"'low'\"\n [title]=\"'Edit' | bbbTranslate\"\n ></button>\n\n <fd-split-button\n *ngIf=\"viewCollection && viewCollection.length > 1\"\n fd-toolbar-item\n [attr.fdOverflowGroup]=\"2\"\n [attr.fdOverflowPriority]=\"'low'\"\n [fdType]=\"'transparent'\"\n [mainAction]=\"{\n keepMainAction: true,\n mainActionTitle: splitBtnTitle\n }\"\n >\n <fd-menu>\n <li fd-menu-item *ngFor=\"let viewObject of viewCollection\">\n <div fd-menu-interactive (click)=\"onChangeView(viewObject)\">\n <span fd-menu-title>\n <fd-icon [glyph]=\"viewObject.UiComponent.Settings?.Icon\"> </fd-icon>\n </span>\n </div>\n </li>\n </fd-menu>\n </fd-split-button>\n <ng-template #splitBtnTitle>\n <fd-icon [glyph]=\"reportView.UiComponent.Settings?.Icon\"></fd-icon>\n </ng-template>\n </ng-container>\n </ng-container>\n </fd-toolbar>\n <ng-template #searchField>\n <fd-toolbar *ngIf=\"enableSearch\">\n <fdp-search-field\n fd-toolbar-item\n placeholder=\"\u0639\u0628\u0627\u0631\u062A \u062C\u0633\u062A\u062C\u0648\"\n [suggestions]=\"[]\"\n [contentDensity]=\"contentDensity\"\n (searchSubmit)=\"onSearchSubmit($event)\"\n ></fdp-search-field\n ></fd-toolbar>\n </ng-template>\n</ng-container>\n<ng-template #defaultButtonTemplate let-btn>\n <button\n *ngIf=\"inlineEditMode && btn.text === ('New' | bbbTranslate); else tplToolbarBtn\"\n fd-button\n fd-toolbar-item\n [attr.fdOverflowPriority]=\"btn.Command?.IsBuiltin ? 'low' : ''\"\n [disabled]=\"btn.Command._isEnable === false ? true : false\"\n [fdType]=\"!btn.Command._isEnable ? 'transparent' : btn.Command.JsonExtraProp?.Design || 'transparent'\"\n [glyph]=\"btn.Command.JsonExtraProp?.Icon\"\n [title]=\"btn.Command?.IsBuiltin ? btn.text : ''\"\n (click)=\"createNewInlineMo.emit()\"\n >\n <img\n *ngIf=\"!btn.Command.JsonExtraProp?.Icon && !btn.Command?.IsBuiltin && btn.icon\"\n width=\"16\"\n [src]=\"btn.icon\"\n />\n <span *ngIf=\"!btn.hideText\">{{ btn.text }}</span>\n </button>\n <ng-template #tplToolbarBtn>\n <button\n fd-button\n fd-toolbar-item\n [attr.fdOverflowPriority]=\"btn.Command?.IsBuiltin ? 'low' : ''\"\n [ulvCommandHandler]=\"btn\"\n [disabled]=\"btn.Command._isEnable === false ? true : false\"\n [fdType]=\"!btn.Command._isEnable ? 'transparent' : btn.Command.JsonExtraProp?.Design || 'transparent'\"\n [glyph]=\"btn.Command.JsonExtraProp?.Icon\"\n [title]=\"btn.Command?.IsBuiltin ? btn.text : ''\"\n >\n <img\n *ngIf=\"!btn.Command.JsonExtraProp?.Icon && !btn.Command?.IsBuiltin && btn.icon\"\n width=\"16\"\n [src]=\"btn.icon\"\n />\n <span *ngIf=\"!btn.hideText\">{{ btn.text }}</span>\n </button>\n </ng-template>\n</ng-template>\n<ng-template #customButtonTemplate let-btn>\n <bnrc-dynamic-form-toolbaritem\n fd-toolbar-item\n [ulvCommandHandler]=\"btn\"\n [component]=\"btn.Command?.CustomUi\"\n [context]=\"btn\"\n [isEnable]=\"btn.Command?._isEnable\"\n [deviceName]=\"deviceName\"\n ></bnrc-dynamic-form-toolbaritem>\n</ng-template>\n", styles: [":host{display:block;width:100%}:host ::ng-deep .fd-toolbar{flex-wrap:nowrap!important}:host ::ng-deep .fd-toolbar{border-top:var(--sapList_BorderWidth) solid var(--sapList_BorderColor);border-left:var(--sapList_BorderWidth) solid var(--sapList_BorderColor);border-right:var(--sapList_BorderWidth) solid var(--sapList_BorderColor)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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.DynamicFormToolbaritemComponent, selector: "bnrc-dynamic-form-toolbaritem", inputs: ["mo", "index", "deviceName", "context", "btn", "isEnable", "showText", "allColumns", "conditionalFormats"], outputs: ["btnClick"] }, { kind: "directive", type: i2.UlvCommandDirective, selector: "[ulvCommandHandler]", inputs: ["ulvCommandHandler"], outputs: ["commandClick"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i5.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: i5.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "directive", type: i5.MenuInteractiveDirective, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i5.MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "component", type: i6.SplitButtonComponent, selector: "fd-split-button", inputs: ["glyph", "disabled", "mainActionTitle", "fdType", "expandButtonAriaLabel", "expandButtonTitle", "selected", "fixedWidth", "mainAction", "arialLabel"], outputs: ["primaryButtonClicked"] }, { kind: "component", type: i7.ToolbarComponent, selector: "fd-toolbar", inputs: ["class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i7.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "component", type: i7.ToolbarSpacerComponent, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: i7.ToolbarSeparatorComponent, selector: "fd-toolbar-separator" }, { kind: "directive", type: i7.ToolbarOverflowPriorityDirective, selector: "[fdOverflowPriority]", inputs: ["fdOverflowPriority"] }, { kind: "directive", type: i7.ToolbarOverflowGroupDirective, selector: "[fdOverflowGroup]", inputs: ["fdOverflowGroup"] }, { kind: "directive", type: i8.PlatformContentDensityDeprecationDirective, selector: " fdp-action-bar[contentDensity], fdp-button[contentDensity], fdp-object-list-item[contentDensity], fdp-standard-list-item[contentDensity], fdp-menu[contentDensity], fdp-menu-button[contentDensity], fdp-panel[contentDensity], fdp-search-field[contentDensity], fdp-split-menu-button[contentDensity], fdp-file-uploader[contentDensity], fdp-upload-collection[contentDensity], fdp-table[contentDensity], fdp-multi-input[contentDensity], fdp-list[contentDensity], fdp-slider[contentDensity], fdp-time-picker[contentDensity], fdp-textarea[contentDensity], fdp-switch[contentDensity], fdp-number-step-input[contentDensity], fdp-select[contentDensity], fdp-date-picker[contentDensity], fdp-checkbox[contentDensity], fdp-checkbox-group[contentDensity], fdp-combobox[contentDensity], fdp-datetime-picker[contentDensity], fdp-input[contentDensity], fdp-radio-group[contentDensity], fdp-radio-button[contentDensity], fdp-multi-combobox[contentDensity], fdp-input-group-addon-body[contentDensity], fdp-input-group[contentDensity], fdp-value-help-dialog[contentDensity], fdp-filter-single-select[contentDensity], fdp-filter-multi-select[contentDensity], fdp-filter-custom[contentDensity] " }, { kind: "component", type: i9.SearchFieldComponent, selector: "fdp-search-field", inputs: ["placeholder", "mobile", "mobileConfig", "disableRefresh", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "ariaLabel", "ariaLabelledby", "searchSuggestionMessage", "searchSuggestionNavigateMessage"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
56
57
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UlvToolbarComponent, decorators: [{
|
|
57
58
|
type: Component,
|
|
58
|
-
args: [{ selector: 'bsu-ulv-toolbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container
|
|
59
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: {
|
|
59
|
+
args: [{ selector: 'bsu-ulv-toolbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container>\n <fd-toolbar\n #toolbar\n [shouldOverflow]=\"deviceSize === 's'\"\n [hasTitle]=\"!hideTitle\"\n [clearBorder]=\"true\"\n [forceOverflow]=\"true\"\n [title]=\"!hideTitle ? (title | bbbTranslate) : ''\"\n *ngIf=\"!useLayoutItemTextForControl && !hideToolbar; else searchField\"\n >\n <fd-toolbar-spacer fd-toolbar-item></fd-toolbar-spacer>\n\n <ng-container *ngIf=\"!hideToolbar\">\n <ng-container *ngFor=\"let btn of toolbarButtons; trackBy: _trackBy; let i = index\">\n <fd-toolbar-separator\n fd-toolbar-item\n *ngIf=\"(btn === '-' || btn.type === 'seperator') && deviceName !== 'mobile'\"\n ></fd-toolbar-separator>\n <fd-split-button\n *ngIf=\"btn.menu; else btnTemplate\"\n fd-toolbar-item\n [fdType]=\"'transparent'\"\n [mainAction]=\"{ mainActionTitle: btn.text, keepMainAction: true }\"\n >\n <fd-menu>\n <li fd-menu-item *ngFor=\"let btnCommand of btn.menu.items\" [ulvCommandHandler]=\"btnCommand\">\n <div fd-menu-interactive>\n <span fd-menu-title>{{ btnCommand.text }}</span>\n </div>\n </li>\n </fd-menu>\n </fd-split-button>\n <ng-template #btnTemplate>\n <ng-container *ngIf=\"btn.type !== 'seperator' && btn.Command?._isVisible\">\n <ng-container\n *ngTemplateOutlet=\"\n btn?.Command?.CustomUi ? customButtonTemplate : defaultButtonTemplate;\n context: { $implicit: btn }\n \"\n ></ng-container>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-content select=\"[fd-toolbar-item]\"></ng-content>\n\n <ng-container *ngIf=\"gridSetting && gridSetting.Hidden !== true\">\n <fdp-search-field\n *ngIf=\"enableSearch === true\"\n fd-toolbar-item\n placeholder=\"\u0639\u0628\u0627\u0631\u062A \u062C\u0633\u062A\u062C\u0648\"\n [suggestions]=\"[]\"\n [contentDensity]=\"contentDensity\"\n (searchSubmit)=\"onSearchSubmit($event)\"\n ></fdp-search-field>\n\n <!-- <fdp-button-->\n <!-- fd-toolbar-item-->\n <!-- [contentDensity]=\"contentDensity\"-->\n <!-- buttonType=\"transparent\"-->\n <!-- [label]=\"device === 'mobile' ? ('Filter' | bbbTranslate) : ''\"-->\n <!-- [glyph]=\"'filter'\"-->\n <!-- >-->\n <!-- </fdp-button>-->\n <button\n fd-toolbar-item\n fd-button\n [contentDensity]=\"contentDensity\"\n fdType=\"transparent\"\n [glyph]=\"'group-2'\"\n [attr.fdOverflowGroup]=\"1\"\n [attr.fdOverflowPriority]=\"'low'\"\n (click)=\"onGroupbySettings()\"\n [title]=\"'Groups' | bbbTranslate\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n [contentDensity]=\"contentDensity\"\n fdType=\"transparent\"\n [attr.fdOverflowGroup]=\"1\"\n [glyph]=\"'sort'\"\n [attr.fdOverflowPriority]=\"'low'\"\n (click)=\"onSortSettings()\"\n [title]=\"'Sort' | bbbTranslate\"\n ></button>\n <button\n fd-toolbar-item\n fd-button\n [contentDensity]=\"contentDensity\"\n fdType=\"transparent\"\n [attr.fdOverflowGroup]=\"1\"\n [glyph]=\"'action-settings'\"\n [attr.fdOverflowPriority]=\"'low'\"\n (click)=\"onColumnSettings()\"\n [title]=\"'Columns' | bbbTranslate\"\n ></button>\n <button\n *ngIf=\"allowInlineEdit && access.Edit\"\n fd-button\n fd-toolbar-item\n [fdType]=\"inlineEditMode ? 'emphasized' : 'transparent'\"\n [glyph]=\"'edit'\"\n (click)=\"onEditMode()\"\n [attr.fdOverflowGroup]=\"2\"\n [attr.fdOverflowPriority]=\"'low'\"\n [title]=\"'Edit' | bbbTranslate\"\n ></button>\n\n <fd-split-button\n *ngIf=\"viewCollection && viewCollection.length > 1\"\n fd-toolbar-item\n [attr.fdOverflowGroup]=\"2\"\n [attr.fdOverflowPriority]=\"'low'\"\n [fdType]=\"'transparent'\"\n [mainAction]=\"{\n keepMainAction: true,\n mainActionTitle: splitBtnTitle\n }\"\n >\n <fd-menu>\n <li fd-menu-item *ngFor=\"let viewObject of viewCollection\">\n <div fd-menu-interactive (click)=\"onChangeView(viewObject)\">\n <span fd-menu-title>\n <fd-icon [glyph]=\"viewObject.UiComponent.Settings?.Icon\"> </fd-icon>\n </span>\n </div>\n </li>\n </fd-menu>\n </fd-split-button>\n <ng-template #splitBtnTitle>\n <fd-icon [glyph]=\"reportView.UiComponent.Settings?.Icon\"></fd-icon>\n </ng-template>\n </ng-container>\n </ng-container>\n </fd-toolbar>\n <ng-template #searchField>\n <fd-toolbar *ngIf=\"enableSearch\">\n <fdp-search-field\n fd-toolbar-item\n placeholder=\"\u0639\u0628\u0627\u0631\u062A \u062C\u0633\u062A\u062C\u0648\"\n [suggestions]=\"[]\"\n [contentDensity]=\"contentDensity\"\n (searchSubmit)=\"onSearchSubmit($event)\"\n ></fdp-search-field\n ></fd-toolbar>\n </ng-template>\n</ng-container>\n<ng-template #defaultButtonTemplate let-btn>\n <button\n *ngIf=\"inlineEditMode && btn.text === ('New' | bbbTranslate); else tplToolbarBtn\"\n fd-button\n fd-toolbar-item\n [attr.fdOverflowPriority]=\"btn.Command?.IsBuiltin ? 'low' : ''\"\n [disabled]=\"btn.Command._isEnable === false ? true : false\"\n [fdType]=\"!btn.Command._isEnable ? 'transparent' : btn.Command.JsonExtraProp?.Design || 'transparent'\"\n [glyph]=\"btn.Command.JsonExtraProp?.Icon\"\n [title]=\"btn.Command?.IsBuiltin ? btn.text : ''\"\n (click)=\"createNewInlineMo.emit()\"\n >\n <img\n *ngIf=\"!btn.Command.JsonExtraProp?.Icon && !btn.Command?.IsBuiltin && btn.icon\"\n width=\"16\"\n [src]=\"btn.icon\"\n />\n <span *ngIf=\"!btn.hideText\">{{ btn.text }}</span>\n </button>\n <ng-template #tplToolbarBtn>\n <button\n fd-button\n fd-toolbar-item\n [attr.fdOverflowPriority]=\"btn.Command?.IsBuiltin ? 'low' : ''\"\n [ulvCommandHandler]=\"btn\"\n [disabled]=\"btn.Command._isEnable === false ? true : false\"\n [fdType]=\"!btn.Command._isEnable ? 'transparent' : btn.Command.JsonExtraProp?.Design || 'transparent'\"\n [glyph]=\"btn.Command.JsonExtraProp?.Icon\"\n [title]=\"btn.Command?.IsBuiltin ? btn.text : ''\"\n >\n <img\n *ngIf=\"!btn.Command.JsonExtraProp?.Icon && !btn.Command?.IsBuiltin && btn.icon\"\n width=\"16\"\n [src]=\"btn.icon\"\n />\n <span *ngIf=\"!btn.hideText\">{{ btn.text }}</span>\n </button>\n </ng-template>\n</ng-template>\n<ng-template #customButtonTemplate let-btn>\n <bnrc-dynamic-form-toolbaritem\n fd-toolbar-item\n [ulvCommandHandler]=\"btn\"\n [component]=\"btn.Command?.CustomUi\"\n [context]=\"btn\"\n [isEnable]=\"btn.Command?._isEnable\"\n [deviceName]=\"deviceName\"\n ></bnrc-dynamic-form-toolbaritem>\n</ng-template>\n", styles: [":host{display:block;width:100%}:host ::ng-deep .fd-toolbar{flex-wrap:nowrap!important}:host ::ng-deep .fd-toolbar{border-top:var(--sapList_BorderWidth) solid var(--sapList_BorderColor);border-left:var(--sapList_BorderWidth) solid var(--sapList_BorderColor);border-right:var(--sapList_BorderWidth) solid var(--sapList_BorderColor)}\n"] }]
|
|
60
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { _toolbar: [{
|
|
61
|
+
type: ViewChild,
|
|
62
|
+
args: [ToolbarComponent]
|
|
63
|
+
}], useLayoutItemTextForControl: [{
|
|
60
64
|
type: Input
|
|
61
65
|
}], enableSearch: [{
|
|
62
66
|
type: Input
|
|
@@ -113,4 +117,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
|
|
|
113
117
|
}], createNewInlineMo: [{
|
|
114
118
|
type: Output
|
|
115
119
|
}] } });
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWx2LXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWx2LXRvb2xiYXIvdWx2LXRvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWx2LXRvb2xiYXIvdWx2LXRvb2xiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLGFBQWEsRUFBdUQsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFPMUcsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGFBQWE7SUFnQ2xELFlBQW1CLEVBQWM7UUFDN0IsS0FBSyxFQUFFLENBQUM7UUFETyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBN0J4QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBb0JqQixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNwQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDMUMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDdkMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3pDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFDakQsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUt2RCxDQUFDO0lBQ0QsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELGlCQUFpQjtRQUNiLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsY0FBYztRQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBQ0QsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFDRCxVQUFVO1FBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBQ0QsWUFBWSxDQUFDLElBQXNCO1FBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFDRCxjQUFjLENBQUMsTUFBbUI7UUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUk7UUFDaEIsT0FBTyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ3hCLENBQUM7SUFDTSxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUk7UUFDdkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3JCLENBQUM7O2dIQTlEUSxtQkFBbUI7b0dBQW5CLG1CQUFtQixnNUJDcEJoQyx3clJBNkxBOzJGRHpLYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0ksaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU07aUdBR3RDLDJCQUEyQjtzQkFBbkMsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHkgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtJztcblxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCwgRGVmYXVsdENvbW1hbmRzQWNjZXNzLCBEZXZpY2VTaXplLCBVaVJlcG9ydFZpZXdCYXNlIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdic3UtdWx2LXRvb2xiYXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91bHYtdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdWx2LXRvb2xiYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBVbHZUb29sYmFyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgdXNlTGF5b3V0SXRlbVRleHRGb3JDb250cm9sOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGVuYWJsZVNlYXJjaDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoaWRlVGl0bGUgPSBmYWxzZTtcbiAgICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRldmljZU5hbWU6IERldmljZVNpemU7XG4gICAgQElucHV0KCkgZGV2aWNlU2l6ZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGFjY2VzczogRGVmYXVsdENvbW1hbmRzQWNjZXNzO1xuICAgIEBJbnB1dCgpIGhpZGVUb29sYmFyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHRvb2xiYXJCdXR0b25zOiBhbnlbXTtcbiAgICBASW5wdXQoKSBjb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHk7XG4gICAgQElucHV0KCkgaW5saW5lRWRpdE1vZGU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgYWxsb3dJbmxpbmVFZGl0OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGdyaWRTZXR0aW5nOiBhbnk7XG4gICAgQElucHV0KCkgdmlld0NvbGxlY3Rpb246IGFueVtdO1xuICAgIEBJbnB1dCgpIHJlcG9ydFZpZXc6IFVpUmVwb3J0Vmlld0Jhc2U7XG4gICAgQElucHV0KCkgaW5EaWFsb2c6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaXNNdWx0aVNlbGVjdDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGhhc1NlbGVjdGVkOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGNvbmZpZzogYW55O1xuICAgIEBJbnB1dCgpIGhpZGRlbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBidXR0b25zOiBhbnlbXTtcbiAgICBAT3V0cHV0KCkgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgQE91dHB1dCgpIGdyb3VwYnlDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIEBPdXRwdXQoKSBzb3J0Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBAT3V0cHV0KCkgY29sdW1uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBAT3V0cHV0KCkgZWRpdE1vZGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgdmlld0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxVaVJlcG9ydFZpZXdCYXNlPigpO1xuICAgIEBPdXRwdXQoKSBjcmVhdGVOZXdJbmxpbmVNbyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBzZWFyY2hUZXJtOiBzdHJpbmc7XG4gICAgZW5hYmxlOiBib29sZWFuO1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZikge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgIH1cblxuICAgIG9uR3JvdXBieVNldHRpbmdzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmdyb3VwYnlDbGljay5lbWl0KHRoaXMuZGV2aWNlTmFtZSk7XG4gICAgfVxuICAgIG9uU29ydFNldHRpbmdzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNvcnRDbGljay5lbWl0KHRoaXMuZGV2aWNlTmFtZSk7XG4gICAgfVxuICAgIG9uQ29sdW1uU2V0dGluZ3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29sdW1uQ2xpY2suZW1pdCh0aGlzLmRldmljZU5hbWUpO1xuICAgIH1cbiAgICBvbkVkaXRNb2RlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVkaXRNb2RlQ2xpY2suZW1pdCgpO1xuICAgIH1cbiAgICBvbkNoYW5nZVZpZXcodmlldzogVWlSZXBvcnRWaWV3QmFzZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdDbGljay5lbWl0KHZpZXcpO1xuICAgIH1cbiAgICBvblNlYXJjaFN1Ym1pdCgkZXZlbnQ6IFNlYXJjaElucHV0KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VhcmNoLmVtaXQoJGV2ZW50LnRleHQpO1xuICAgIH1cbiAgICBfdHJhY2tCeShpbmRleCwgaXRlbSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBpdGVtPy5pdGVtSWQ7XG4gICAgfVxuICAgIHB1YmxpYyBpZGVudGlmeShpbmRleCwgaXRlbSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBpdGVtLnRleHQ7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqdW50aWxJblZpZXc9XCJlbFwiPlxyXG4gICAgPGZkLXRvb2xiYXJcclxuICAgICAgICAjdG9vbGJhclxyXG4gICAgICAgIFtzaG91bGRPdmVyZmxvd109XCJkZXZpY2VOYW1lID09PSAnbW9iaWxlJ1wiXHJcbiAgICAgICAgW2hhc1RpdGxlXT1cInRydWVcIlxyXG4gICAgICAgIFtjbGVhckJvcmRlcl09XCJ0cnVlXCJcclxuICAgICAgICAqbmdJZj1cIiF1c2VMYXlvdXRJdGVtVGV4dEZvckNvbnRyb2wgJiYgIWhpZGVUb29sYmFyOyBlbHNlIHNlYXJjaEZpZWxkXCJcclxuICAgID5cclxuICAgICAgICA8aDQgZmQtdG9vbGJhci1pdGVtICpuZ0lmPVwiIWhpZGVUaXRsZVwiPnt7IHRpdGxlIHwgYmJiVHJhbnNsYXRlIH19PC9oND5cclxuICAgICAgICA8ZmQtdG9vbGJhci1zcGFjZXIgZmQtdG9vbGJhci1pdGVtPjwvZmQtdG9vbGJhci1zcGFjZXI+XHJcblxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaGlkZVRvb2xiYXJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnRuIG9mIHRvb2xiYXJCdXR0b25zOyB0cmFja0J5OiBfdHJhY2tCeTsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPGZkLXRvb2xiYXItc2VwYXJhdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoYnRuID09PSAnLScgfHwgYnRuLnR5cGUgPT09ICdzZXBlcmF0b3InKSAmJiBkZXZpY2VOYW1lICE9PSAnbW9iaWxlJ1wiXHJcbiAgICAgICAgICAgICAgICA+PC9mZC10b29sYmFyLXNlcGFyYXRvcj5cclxuICAgICAgICAgICAgICAgIDxmZC1zcGxpdC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImJ0bi5tZW51OyBlbHNlIGJ0blRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFttYWluQWN0aW9uXT1cInsgbWFpbkFjdGlvblRpdGxlOiBidG4udGV4dCwga2VlcE1haW5BY3Rpb246IHRydWUgfVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZkLW1lbnU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IGJ0bkNvbW1hbmQgb2YgYnRuLm1lbnUuaXRlbXNcIiBbdWx2Q29tbWFuZEhhbmRsZXJdPVwiYnRuQ29tbWFuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1tZW51LWludGVyYWN0aXZlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+e3sgYnRuQ29tbWFuZC50ZXh0IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9mZC1tZW51PlxyXG4gICAgICAgICAgICAgICAgPC9mZC1zcGxpdC1idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2J0blRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJidG4udHlwZSAhPT0gJ3NlcGVyYXRvcicgJiYgYnRuLkNvbW1hbmQ/Ll9pc1Zpc2libGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidG4/LkNvbW1hbmQ/LkN1c3RvbVVpID8gY3VzdG9tQnV0dG9uVGVtcGxhdGUgOiBkZWZhdWx0QnV0dG9uVGVtcGxhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGJ0biB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ZkLXRvb2xiYXItaXRlbV1cIj48L25nLWNvbnRlbnQ+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JpZFNldHRpbmcgJiYgZ3JpZFNldHRpbmcuSGlkZGVuICE9PSB0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZmRwLXNlYXJjaC1maWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZW5hYmxlU2VhcmNoID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIti52KjYp9ix2Kog2KzYs9iq2KzZiFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N1Z2dlc3Rpb25zXT1cIltdXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udGVudERlbnNpdHldPVwiY29udGVudERlbnNpdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgIChzZWFyY2hTdWJtaXQpPVwib25TZWFyY2hTdWJtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICA+PC9mZHAtc2VhcmNoLWZpZWxkPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gICAgICAgIDxmZHAtYnV0dG9uLS0+XHJcbiAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgIGZkLXRvb2xiYXItaXRlbS0tPlxyXG4gICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICBbY29udGVudERlbnNpdHldPVwiY29udGVudERlbnNpdHlcIi0tPlxyXG4gICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICBidXR0b25UeXBlPVwidHJhbnNwYXJlbnRcIi0tPlxyXG4gICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICBbbGFiZWxdPVwiZGV2aWNlID09PSAnbW9iaWxlJyA/ICgnRmlsdGVyJyB8IGJiYlRyYW5zbGF0ZSkgOiAnJ1wiLS0+XHJcbiAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgIFtnbHlwaF09XCInZmlsdGVyJ1wiLS0+XHJcbiAgICAgICAgICAgICAgICA8IS0tICAgICAgICA+LS0+XHJcbiAgICAgICAgICAgICAgICA8IS0tICAgICAgICA8L2ZkcC1idXR0b24+LS0+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnREZW5zaXR5XT1cImNvbnRlbnREZW5zaXR5XCJcclxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cIidncm91cC0yJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZkT3ZlcmZsb3dHcm91cF09XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICBmZE92ZXJmbG93UHJpb3JpdHk9XCJsb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkdyb3VwYnlTZXR0aW5ncygpXCJcclxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0dyb3VwcycgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250ZW50RGVuc2l0eV09XCJjb250ZW50RGVuc2l0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmZE92ZXJmbG93R3JvdXBdPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmRPdmVyZmxvd1ByaW9yaXR5PVwibG93XCJcclxuICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiJ3NvcnQnXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Tb3J0U2V0dGluZ3MoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidTb3J0JyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnREZW5zaXR5XT1cImNvbnRlbnREZW5zaXR5XCJcclxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZkT3ZlcmZsb3dHcm91cF09XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICBmZE92ZXJmbG93UHJpb3JpdHk9XCJsb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCInYWN0aW9uLXNldHRpbmdzJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ29sdW1uU2V0dGluZ3MoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidDb2x1bW5zJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhbGxvd0lubGluZUVkaXQgJiYgYWNjZXNzLkVkaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgIFtmZFR5cGVdPVwiaW5saW5lRWRpdE1vZGUgPyAnZW1waGFzaXplZCcgOiAndHJhbnNwYXJlbnQnXCJcclxuICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiJ2VkaXQnXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25FZGl0TW9kZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0VkaXQnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZmQtc3BsaXQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ2aWV3Q29sbGVjdGlvbiAmJiB2aWV3Q29sbGVjdGlvbi5sZW5ndGggPiAxXCJcclxuICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFttYWluQWN0aW9uXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAga2VlcE1haW5BY3Rpb246IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1haW5BY3Rpb25UaXRsZTogc3BsaXRCdG5UaXRsZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmZC1tZW51PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtbWVudS1pdGVtICpuZ0Zvcj1cImxldCB2aWV3T2JqZWN0IG9mIHZpZXdDb2xsZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmUgKGNsaWNrKT1cIm9uQ2hhbmdlVmlldyh2aWV3T2JqZWN0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIFtnbHlwaF09XCJ2aWV3T2JqZWN0LlVpQ29tcG9uZW50LlNldHRpbmdzPy5JY29uXCI+IDwvZmQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L2ZkLW1lbnU+XHJcbiAgICAgICAgICAgICAgICA8L2ZkLXNwbGl0LWJ1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3BsaXRCdG5UaXRsZT5cclxuICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBbZ2x5cGhdPVwicmVwb3J0Vmlldy5VaUNvbXBvbmVudC5TZXR0aW5ncz8uSWNvblwiPjwvZmQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9mZC10b29sYmFyPlxyXG4gICAgPG5nLXRlbXBsYXRlICNzZWFyY2hGaWVsZD5cclxuICAgICAgICA8ZmQtdG9vbGJhciAqbmdJZj1cImVuYWJsZVNlYXJjaFwiPlxyXG4gICAgICAgICAgICA8ZmRwLXNlYXJjaC1maWVsZFxyXG4gICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIti52KjYp9ix2Kog2KzYs9iq2KzZiFwiXHJcbiAgICAgICAgICAgICAgICBbc3VnZ2VzdGlvbnNdPVwiW11cIlxyXG4gICAgICAgICAgICAgICAgW2NvbnRlbnREZW5zaXR5XT1cImNvbnRlbnREZW5zaXR5XCJcclxuICAgICAgICAgICAgICAgIChzZWFyY2hTdWJtaXQpPVwib25TZWFyY2hTdWJtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgID48L2ZkcC1zZWFyY2gtZmllbGRcclxuICAgICAgICA+PC9mZC10b29sYmFyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9uZy1jb250YWluZXI+XHJcbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEJ1dHRvblRlbXBsYXRlIGxldC1idG4+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICAgKm5nSWY9XCJpbmxpbmVFZGl0TW9kZSAmJiBidG4udGV4dCA9PT0gKCdOZXcnIHwgYmJiVHJhbnNsYXRlKTsgZWxzZSB0cGxUb29sYmFyQnRuXCJcclxuICAgICAgICBmZC1idXR0b25cclxuICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICBbZGlzYWJsZWRdPVwiYnRuLkNvbW1hbmQuX2lzRW5hYmxlID09PSBmYWxzZSA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgW2ZkVHlwZV09XCIhYnRuLkNvbW1hbmQuX2lzRW5hYmxlID8gJ3RyYW5zcGFyZW50JyA6IGJ0bi5Db21tYW5kLkpzb25FeHRyYVByb3A/LkRlc2lnbiB8fCAndHJhbnNwYXJlbnQnXCJcclxuICAgICAgICBbZ2x5cGhdPVwiYnRuLkNvbW1hbmQuSnNvbkV4dHJhUHJvcD8uSWNvblwiXHJcbiAgICAgICAgW3RpdGxlXT1cImJ0bi5Db21tYW5kPy5Jc0J1aWx0aW4gPyBidG4udGV4dCA6ICcnXCJcclxuICAgICAgICAoY2xpY2spPVwiY3JlYXRlTmV3SW5saW5lTW8uZW1pdCgpXCJcclxuICAgID5cclxuICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICpuZ0lmPVwiIWJ0bi5Db21tYW5kLkpzb25FeHRyYVByb3A/Lkljb24gJiYgIWJ0bi5Db21tYW5kPy5Jc0J1aWx0aW4gJiYgYnRuLmljb25cIlxyXG4gICAgICAgICAgICB3aWR0aD1cIjE2XCJcclxuICAgICAgICAgICAgW3NyY109XCJidG4uaWNvblwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFidG4uaGlkZVRleHRcIj57eyBidG4udGV4dCB9fTwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPG5nLXRlbXBsYXRlICN0cGxUb29sYmFyQnRuPlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgICAgICBbdWx2Q29tbWFuZEhhbmRsZXJdPVwiYnRuXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImJ0bi5Db21tYW5kLl9pc0VuYWJsZSA9PT0gZmFsc2UgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICBbZmRUeXBlXT1cIiFidG4uQ29tbWFuZC5faXNFbmFibGUgPyAndHJhbnNwYXJlbnQnIDogYnRuLkNvbW1hbmQuSnNvbkV4dHJhUHJvcD8uRGVzaWduIHx8ICd0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgICAgICBbZ2x5cGhdPVwiYnRuLkNvbW1hbmQuSnNvbkV4dHJhUHJvcD8uSWNvblwiXHJcbiAgICAgICAgICAgIFt0aXRsZV09XCJidG4uQ29tbWFuZD8uSXNCdWlsdGluID8gYnRuLnRleHQgOiAnJ1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFidG4uQ29tbWFuZC5Kc29uRXh0cmFQcm9wPy5JY29uICYmICFidG4uQ29tbWFuZD8uSXNCdWlsdGluICYmIGJ0bi5pY29uXCJcclxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgW3NyY109XCJidG4uaWNvblwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWJ0bi5oaWRlVGV4dFwiPnt7IGJ0bi50ZXh0IH19PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLXRlbXBsYXRlICNjdXN0b21CdXR0b25UZW1wbGF0ZSBsZXQtYnRuPlxyXG4gICAgPGJucmMtZHluYW1pYy1mb3JtLXRvb2xiYXJpdGVtXHJcbiAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgW3VsdkNvbW1hbmRIYW5kbGVyXT1cImJ0blwiXHJcbiAgICAgICAgW2NvbXBvbmVudF09XCJidG4uQ29tbWFuZD8uQ3VzdG9tVWlcIlxyXG4gICAgICAgIFtjb250ZXh0XT1cImJ0blwiXHJcbiAgICAgICAgW2lzRW5hYmxlXT1cImJ0bi5Db21tYW5kPy5faXNFbmFibGVcIlxyXG4gICAgICAgIFtkZXZpY2VOYW1lXT1cImRldmljZU5hbWVcIlxyXG4gICAgPjwvYm5yYy1keW5hbWljLWZvcm0tdG9vbGJhcml0ZW0+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWx2LXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWx2LXRvb2xiYXIvdWx2LXRvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWx2LXRvb2xiYXIvdWx2LXRvb2xiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUd6RSxPQUFPLEVBQUUsYUFBYSxFQUF1RCxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7OztBQU8xRyxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsYUFBYTtJQWlDbEQsWUFBbUIsRUFBYztRQUM3QixLQUFLLEVBQUUsQ0FBQztRQURPLE9BQUUsR0FBRixFQUFFLENBQVk7UUE3QnhCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFvQmpCLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3BDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUMxQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN2QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDekMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUNqRCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBS3ZELENBQUM7SUFDRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsaUJBQWlCO1FBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFDRCxjQUFjO1FBQ1YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELFVBQVU7UUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFDRCxZQUFZLENBQUMsSUFBc0I7UUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNELGNBQWMsQ0FBQyxNQUFtQjtRQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSTtRQUNoQixPQUFPLElBQUksRUFBRSxNQUFNLENBQUM7SUFDeEIsQ0FBQztJQUNNLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSTtRQUN2QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQzs7Z0hBL0RRLG1CQUFtQjtvR0FBbkIsbUJBQW1CLDg0QkFDakIsZ0JBQWdCLDRGQ3RCL0IsbXRSQW9NQTsyRkQvS2EsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNJLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNO2lHQUdsQixRQUFRO3NCQUFwQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFDbEIsMkJBQTJCO3NCQUFuQyxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHksIFRvb2xiYXJDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xuaW1wb3J0IHsgU2VhcmNoSW5wdXQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtJztcblxuaW1wb3J0IHsgQmFzZUNvbXBvbmVudCwgRGVmYXVsdENvbW1hbmRzQWNjZXNzLCBEZXZpY2VTaXplLCBVaVJlcG9ydFZpZXdCYXNlIH0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdic3UtdWx2LXRvb2xiYXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91bHYtdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdWx2LXRvb2xiYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBVbHZUb29sYmFyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgQFZpZXdDaGlsZChUb29sYmFyQ29tcG9uZW50KSBfdG9vbGJhcjogVG9vbGJhckNvbXBvbmVudDtcbiAgICBASW5wdXQoKSB1c2VMYXlvdXRJdGVtVGV4dEZvckNvbnRyb2w6IGJvb2xlYW47XG4gICAgQElucHV0KCkgZW5hYmxlU2VhcmNoOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhpZGVUaXRsZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZGV2aWNlTmFtZTogRGV2aWNlU2l6ZTtcbiAgICBASW5wdXQoKSBkZXZpY2VTaXplOiBzdHJpbmc7XG4gICAgQElucHV0KCkgYWNjZXNzOiBEZWZhdWx0Q29tbWFuZHNBY2Nlc3M7XG4gICAgQElucHV0KCkgaGlkZVRvb2xiYXI6IGJvb2xlYW47XG4gICAgQElucHV0KCkgdG9vbGJhckJ1dHRvbnM6IGFueVtdO1xuICAgIEBJbnB1dCgpIGNvbnRlbnREZW5zaXR5OiBDb250ZW50RGVuc2l0eTtcbiAgICBASW5wdXQoKSBpbmxpbmVFZGl0TW9kZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBhbGxvd0lubGluZUVkaXQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgZ3JpZFNldHRpbmc6IGFueTtcbiAgICBASW5wdXQoKSB2aWV3Q29sbGVjdGlvbjogYW55W107XG4gICAgQElucHV0KCkgcmVwb3J0VmlldzogVWlSZXBvcnRWaWV3QmFzZTtcbiAgICBASW5wdXQoKSBpbkRpYWxvZzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc011bHRpU2VsZWN0OiBib29sZWFuO1xuXG4gICAgQElucHV0KCkgaGFzU2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgY29uZmlnOiBhbnk7XG4gICAgQElucHV0KCkgaGlkZGVuOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGJ1dHRvbnM6IGFueVtdO1xuICAgIEBPdXRwdXQoKSBzZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBAT3V0cHV0KCkgZ3JvdXBieUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgQE91dHB1dCgpIHNvcnRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIEBPdXRwdXQoKSBjb2x1bW5DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIEBPdXRwdXQoKSBlZGl0TW9kZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSB2aWV3Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFVpUmVwb3J0Vmlld0Jhc2U+KCk7XG4gICAgQE91dHB1dCgpIGNyZWF0ZU5ld0lubGluZU1vID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIHNlYXJjaFRlcm06IHN0cmluZztcbiAgICBlbmFibGU6IGJvb2xlYW47XG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XG4gICAgfVxuXG4gICAgb25Hcm91cGJ5U2V0dGluZ3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ3JvdXBieUNsaWNrLmVtaXQodGhpcy5kZXZpY2VOYW1lKTtcbiAgICB9XG4gICAgb25Tb3J0U2V0dGluZ3MoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc29ydENsaWNrLmVtaXQodGhpcy5kZXZpY2VOYW1lKTtcbiAgICB9XG4gICAgb25Db2x1bW5TZXR0aW5ncygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb2x1bW5DbGljay5lbWl0KHRoaXMuZGV2aWNlTmFtZSk7XG4gICAgfVxuICAgIG9uRWRpdE1vZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWRpdE1vZGVDbGljay5lbWl0KCk7XG4gICAgfVxuICAgIG9uQ2hhbmdlVmlldyh2aWV3OiBVaVJlcG9ydFZpZXdCYXNlKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld0NsaWNrLmVtaXQodmlldyk7XG4gICAgfVxuICAgIG9uU2VhcmNoU3VibWl0KCRldmVudDogU2VhcmNoSW5wdXQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFyY2guZW1pdCgkZXZlbnQudGV4dCk7XG4gICAgfVxuICAgIF90cmFja0J5KGluZGV4LCBpdGVtKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0/Lml0ZW1JZDtcbiAgICB9XG4gICAgcHVibGljIGlkZW50aWZ5KGluZGV4LCBpdGVtKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0udGV4dDtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyPlxuICAgIDxmZC10b29sYmFyXG4gICAgICAgICN0b29sYmFyXG4gICAgICAgIFtzaG91bGRPdmVyZmxvd109XCJkZXZpY2VTaXplID09PSAncydcIlxuICAgICAgICBbaGFzVGl0bGVdPVwiIWhpZGVUaXRsZVwiXG4gICAgICAgIFtjbGVhckJvcmRlcl09XCJ0cnVlXCJcbiAgICAgICAgW2ZvcmNlT3ZlcmZsb3ddPVwidHJ1ZVwiXG4gICAgICAgIFt0aXRsZV09XCIhaGlkZVRpdGxlID8gKHRpdGxlIHwgYmJiVHJhbnNsYXRlKSA6ICcnXCJcbiAgICAgICAgKm5nSWY9XCIhdXNlTGF5b3V0SXRlbVRleHRGb3JDb250cm9sICYmICFoaWRlVG9vbGJhcjsgZWxzZSBzZWFyY2hGaWVsZFwiXG4gICAgPlxuICAgICAgICA8ZmQtdG9vbGJhci1zcGFjZXIgZmQtdG9vbGJhci1pdGVtPjwvZmQtdG9vbGJhci1zcGFjZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoaWRlVG9vbGJhclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYnRuIG9mIHRvb2xiYXJCdXR0b25zOyB0cmFja0J5OiBfdHJhY2tCeTsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgIDxmZC10b29sYmFyLXNlcGFyYXRvclxuICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoYnRuID09PSAnLScgfHwgYnRuLnR5cGUgPT09ICdzZXBlcmF0b3InKSAmJiBkZXZpY2VOYW1lICE9PSAnbW9iaWxlJ1wiXG4gICAgICAgICAgICAgICAgPjwvZmQtdG9vbGJhci1zZXBhcmF0b3I+XG4gICAgICAgICAgICAgICAgPGZkLXNwbGl0LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImJ0bi5tZW51OyBlbHNlIGJ0blRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICAgICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgICAgICAgICAgICAgIFttYWluQWN0aW9uXT1cInsgbWFpbkFjdGlvblRpdGxlOiBidG4udGV4dCwga2VlcE1haW5BY3Rpb246IHRydWUgfVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtbWVudT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IGJ0bkNvbW1hbmQgb2YgYnRuLm1lbnUuaXRlbXNcIiBbdWx2Q29tbWFuZEhhbmRsZXJdPVwiYnRuQ29tbWFuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtbWVudS1pbnRlcmFjdGl2ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT57eyBidG5Db21tYW5kLnRleHQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8L2ZkLW1lbnU+XG4gICAgICAgICAgICAgICAgPC9mZC1zcGxpdC1idXR0b24+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNidG5UZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJ0bi50eXBlICE9PSAnc2VwZXJhdG9yJyAmJiBidG4uQ29tbWFuZD8uX2lzVmlzaWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0bj8uQ29tbWFuZD8uQ3VzdG9tVWkgPyBjdXN0b21CdXR0b25UZW1wbGF0ZSA6IGRlZmF1bHRCdXR0b25UZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IGJ0biB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ZkLXRvb2xiYXItaXRlbV1cIj48L25nLWNvbnRlbnQ+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncmlkU2V0dGluZyAmJiBncmlkU2V0dGluZy5IaWRkZW4gIT09IHRydWVcIj5cbiAgICAgICAgICAgICAgICA8ZmRwLXNlYXJjaC1maWVsZFxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImVuYWJsZVNlYXJjaCA9PT0gdHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIti52KjYp9ix2Kog2KzYs9iq2KzZiFwiXG4gICAgICAgICAgICAgICAgICAgIFtzdWdnZXN0aW9uc109XCJbXVwiXG4gICAgICAgICAgICAgICAgICAgIFtjb250ZW50RGVuc2l0eV09XCJjb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgICAgIChzZWFyY2hTdWJtaXQpPVwib25TZWFyY2hTdWJtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvZmRwLXNlYXJjaC1maWVsZD5cblxuICAgICAgICAgICAgICAgIDwhLS0gICAgICAgIDxmZHAtYnV0dG9uLS0+XG4gICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICBmZC10b29sYmFyLWl0ZW0tLT5cbiAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgIFtjb250ZW50RGVuc2l0eV09XCJjb250ZW50RGVuc2l0eVwiLS0+XG4gICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICBidXR0b25UeXBlPVwidHJhbnNwYXJlbnRcIi0tPlxuICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgW2xhYmVsXT1cImRldmljZSA9PT0gJ21vYmlsZScgPyAoJ0ZpbHRlcicgfCBiYmJUcmFuc2xhdGUpIDogJydcIi0tPlxuICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgW2dseXBoXT1cIidmaWx0ZXInXCItLT5cbiAgICAgICAgICAgICAgICA8IS0tICAgICAgICA+LS0+XG4gICAgICAgICAgICAgICAgPCEtLSAgICAgICAgPC9mZHAtYnV0dG9uPi0tPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBbY29udGVudERlbnNpdHldPVwiY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtnbHlwaF09XCInZ3JvdXAtMidcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5mZE92ZXJmbG93R3JvdXBdPVwiMVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmZkT3ZlcmZsb3dQcmlvcml0eV09XCInbG93J1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkdyb3VwYnlTZXR0aW5ncygpXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidHcm91cHMnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFtjb250ZW50RGVuc2l0eV09XCJjb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZmRPdmVyZmxvd0dyb3VwXT1cIjFcIlxuICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiJ3NvcnQnXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZmRPdmVyZmxvd1ByaW9yaXR5XT1cIidsb3cnXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU29ydFNldHRpbmdzKClcIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1NvcnQnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIFtjb250ZW50RGVuc2l0eV09XCJjb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZmRPdmVyZmxvd0dyb3VwXT1cIjFcIlxuICAgICAgICAgICAgICAgICAgICBbZ2x5cGhdPVwiJ2FjdGlvbi1zZXR0aW5ncydcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5mZE92ZXJmbG93UHJpb3JpdHldPVwiJ2xvdydcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Db2x1bW5TZXR0aW5ncygpXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidDb2x1bW5zJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhbGxvd0lubGluZUVkaXQgJiYgYWNjZXNzLkVkaXRcIlxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICAgICAgICAgIFtmZFR5cGVdPVwiaW5saW5lRWRpdE1vZGUgPyAnZW1waGFzaXplZCcgOiAndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cIidlZGl0J1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkVkaXRNb2RlKClcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5mZE92ZXJmbG93R3JvdXBdPVwiMlwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmZkT3ZlcmZsb3dQcmlvcml0eV09XCInbG93J1wiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInRWRpdCcgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cblxuICAgICAgICAgICAgICAgIDxmZC1zcGxpdC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ2aWV3Q29sbGVjdGlvbiAmJiB2aWV3Q29sbGVjdGlvbi5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmZkT3ZlcmZsb3dHcm91cF09XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZmRPdmVyZmxvd1ByaW9yaXR5XT1cIidsb3cnXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZkVHlwZV09XCIndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgW21haW5BY3Rpb25dPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAga2VlcE1haW5BY3Rpb246IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYWluQWN0aW9uVGl0bGU6IHNwbGl0QnRuVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtbWVudT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1tZW51LWl0ZW0gKm5nRm9yPVwibGV0IHZpZXdPYmplY3Qgb2Ygdmlld0NvbGxlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmUgKGNsaWNrKT1cIm9uQ2hhbmdlVmlldyh2aWV3T2JqZWN0KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1tZW51LXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWljb24gW2dseXBoXT1cInZpZXdPYmplY3QuVWlDb21wb25lbnQuU2V0dGluZ3M/Lkljb25cIj4gPC9mZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8L2ZkLW1lbnU+XG4gICAgICAgICAgICAgICAgPC9mZC1zcGxpdC1idXR0b24+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzcGxpdEJ0blRpdGxlPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBbZ2x5cGhdPVwicmVwb3J0Vmlldy5VaUNvbXBvbmVudC5TZXR0aW5ncz8uSWNvblwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZmQtdG9vbGJhcj5cbiAgICA8bmctdGVtcGxhdGUgI3NlYXJjaEZpZWxkPlxuICAgICAgICA8ZmQtdG9vbGJhciAqbmdJZj1cImVuYWJsZVNlYXJjaFwiPlxuICAgICAgICAgICAgPGZkcC1zZWFyY2gtZmllbGRcbiAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIti52KjYp9ix2Kog2KzYs9iq2KzZiFwiXG4gICAgICAgICAgICAgICAgW3N1Z2dlc3Rpb25zXT1cIltdXCJcbiAgICAgICAgICAgICAgICBbY29udGVudERlbnNpdHldPVwiY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgIChzZWFyY2hTdWJtaXQpPVwib25TZWFyY2hTdWJtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICA+PC9mZHAtc2VhcmNoLWZpZWxkXG4gICAgICAgID48L2ZkLXRvb2xiYXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNkZWZhdWx0QnV0dG9uVGVtcGxhdGUgbGV0LWJ0bj5cbiAgICA8YnV0dG9uXG4gICAgICAgICpuZ0lmPVwiaW5saW5lRWRpdE1vZGUgJiYgYnRuLnRleHQgPT09ICgnTmV3JyB8IGJiYlRyYW5zbGF0ZSk7IGVsc2UgdHBsVG9vbGJhckJ0blwiXG4gICAgICAgIGZkLWJ1dHRvblxuICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgW2F0dHIuZmRPdmVyZmxvd1ByaW9yaXR5XT1cImJ0bi5Db21tYW5kPy5Jc0J1aWx0aW4gPyAnbG93JyA6ICcnXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImJ0bi5Db21tYW5kLl9pc0VuYWJsZSA9PT0gZmFsc2UgPyB0cnVlIDogZmFsc2VcIlxuICAgICAgICBbZmRUeXBlXT1cIiFidG4uQ29tbWFuZC5faXNFbmFibGUgPyAndHJhbnNwYXJlbnQnIDogYnRuLkNvbW1hbmQuSnNvbkV4dHJhUHJvcD8uRGVzaWduIHx8ICd0cmFuc3BhcmVudCdcIlxuICAgICAgICBbZ2x5cGhdPVwiYnRuLkNvbW1hbmQuSnNvbkV4dHJhUHJvcD8uSWNvblwiXG4gICAgICAgIFt0aXRsZV09XCJidG4uQ29tbWFuZD8uSXNCdWlsdGluID8gYnRuLnRleHQgOiAnJ1wiXG4gICAgICAgIChjbGljayk9XCJjcmVhdGVOZXdJbmxpbmVNby5lbWl0KClcIlxuICAgID5cbiAgICAgICAgPGltZ1xuICAgICAgICAgICAgKm5nSWY9XCIhYnRuLkNvbW1hbmQuSnNvbkV4dHJhUHJvcD8uSWNvbiAmJiAhYnRuLkNvbW1hbmQ/LklzQnVpbHRpbiAmJiBidG4uaWNvblwiXG4gICAgICAgICAgICB3aWR0aD1cIjE2XCJcbiAgICAgICAgICAgIFtzcmNdPVwiYnRuLmljb25cIlxuICAgICAgICAvPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFidG4uaGlkZVRleHRcIj57eyBidG4udGV4dCB9fTwvc3Bhbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8bmctdGVtcGxhdGUgI3RwbFRvb2xiYXJCdG4+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICBbYXR0ci5mZE92ZXJmbG93UHJpb3JpdHldPVwiYnRuLkNvbW1hbmQ/LklzQnVpbHRpbiA/ICdsb3cnIDogJydcIlxuICAgICAgICAgICAgW3VsdkNvbW1hbmRIYW5kbGVyXT1cImJ0blwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiYnRuLkNvbW1hbmQuX2lzRW5hYmxlID09PSBmYWxzZSA/IHRydWUgOiBmYWxzZVwiXG4gICAgICAgICAgICBbZmRUeXBlXT1cIiFidG4uQ29tbWFuZC5faXNFbmFibGUgPyAndHJhbnNwYXJlbnQnIDogYnRuLkNvbW1hbmQuSnNvbkV4dHJhUHJvcD8uRGVzaWduIHx8ICd0cmFuc3BhcmVudCdcIlxuICAgICAgICAgICAgW2dseXBoXT1cImJ0bi5Db21tYW5kLkpzb25FeHRyYVByb3A/Lkljb25cIlxuICAgICAgICAgICAgW3RpdGxlXT1cImJ0bi5Db21tYW5kPy5Jc0J1aWx0aW4gPyBidG4udGV4dCA6ICcnXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWJ0bi5Db21tYW5kLkpzb25FeHRyYVByb3A/Lkljb24gJiYgIWJ0bi5Db21tYW5kPy5Jc0J1aWx0aW4gJiYgYnRuLmljb25cIlxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiYnRuLmljb25cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWJ0bi5oaWRlVGV4dFwiPnt7IGJ0bi50ZXh0IH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjY3VzdG9tQnV0dG9uVGVtcGxhdGUgbGV0LWJ0bj5cbiAgICA8Ym5yYy1keW5hbWljLWZvcm0tdG9vbGJhcml0ZW1cbiAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgIFt1bHZDb21tYW5kSGFuZGxlcl09XCJidG5cIlxuICAgICAgICBbY29tcG9uZW50XT1cImJ0bi5Db21tYW5kPy5DdXN0b21VaVwiXG4gICAgICAgIFtjb250ZXh0XT1cImJ0blwiXG4gICAgICAgIFtpc0VuYWJsZV09XCJidG4uQ29tbWFuZD8uX2lzRW5hYmxlXCJcbiAgICAgICAgW2RldmljZU5hbWVdPVwiZGV2aWNlTmFtZVwiXG4gICAgPjwvYm5yYy1keW5hbWljLWZvcm0tdG9vbGJhcml0ZW0+XG48L25nLXRlbXBsYXRlPlxuIl19
|