barsa-tiles 2.0.127 → 2.0.129

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.
@@ -31,6 +31,9 @@ export class ShellbarComponent extends BaseComponent {
31
31
  get logo() {
32
32
  return this.shellbarData?.Logo;
33
33
  }
34
+ get cssStyles() {
35
+ return this.shellbarData?.CssStyles;
36
+ }
34
37
  get actions() {
35
38
  return this.settings?.HideUserMenu ? [] : this.shellbarData?.ActionItems?.MoDataList ?? [];
36
39
  }
@@ -211,11 +214,11 @@ export class ShellbarComponent extends BaseComponent {
211
214
  BarsaApi.Bw.NavigateTo('/');
212
215
  }
213
216
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ShellbarComponent, deps: [{ token: i1.BbbTranslatePipe }, { token: i1.PortalService }, { token: i1.BreadcrumbService }, { token: i2.TilesService }, { token: i0.ChangeDetectorRef }, { token: i3.DomSanitizer }, { token: i1.NotificationService }, { token: APP_VERSION }], target: i0.ɵɵFactoryTarget.Component }); }
214
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: ShellbarComponent, selector: "bt-shellbar", viewQueries: [{ propertyName: "comboboxComponent", first: true, predicate: ComboboxComponent, descendants: true }, { propertyName: "popoverComponent", first: true, predicate: ["popoverComponent"], descendants: true }, { propertyName: "_notificationsDialog", first: true, predicate: ["notificationsDialog"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "@if (userLoggedIn$ | async; as userloggend) { @if (notifiationCountLoaded$ | async; as notifiationCountLoaded) { @if\n(deviceSize$ | async; as deviceSize) { @if (shellbarData) {\n<bt-barsa-shellbar\n [class.service-desk]=\"isServiceDesk\"\n [cssUrl]=\"cssUrl$ | async\"\n [cssVariableUrl]=\"cssVariableUrl$ | async\"\n [userProfileImageUrl]=\"userProfileImageUrl$ | async\"\n [cssCustomUrl]=\"cssCustomUrl$ | async\"\n [userLoggedIn]=\"true\"\n [deviceSize]=\"deviceSize\"\n [shellbarData]=\"shellbarData\"\n [productMenuControl]=\"productMenuControl\"\n [settings]=\"settings\"\n [isMobile]=\"isMobile\"\n [isTablet]=\"isTablet\"\n [isDesktop]=\"isDesktop\"\n [multiLanguages]=\"multiLanguages\"\n [notificationCount]=\"(notificationsCount$ | async)!!\"\n [notifications]=\"(notifications$ | async) ?? []\"\n [notifcationLoaded]=\"notifcationLoaded\"\n [notificationLoading]=\"(notificationLoading$ | async) === true\"\n [cultures]=\"cultures\"\n [logo]=\"logo\"\n [actions]=\"actions\"\n [userMenu]=\"userMenu\"\n [productSwitcher]=\"productSwitcher\"\n [subtitle]=\"subtitle\"\n [isServiceDesk]=\"isServiceDesk\"\n [sideMenuTemplate]=\"QuickAccessTemplate\"\n [productMenuItems1]=\"productMenuItems1\"\n [isOpenQuickAccess]=\"isOpenQuickAccess\"\n (isOpenQuickAccessChanged)=\"isOpenQuickAccess = $event\"\n (cultureChanged)=\"onCultureChanged($event)\"\n (notificationViewed)=\"onNotificationItemViewed($event)\"\n (notifiationActionClick)=\"onNotificationAction($event)\"\n (removeNotification)=\"onRemoveNotifications($event)\"\n (notificationLoadMore)=\"onNotificationLoadMore()\"\n (openNotificationPanel)=\"onHandleOpenNotificationPanel()\"\n>\n</bt-barsa-shellbar>\n} } } } @else { @if (notificationsCount$ | async; as notificationCount) {\n<bt-barsa-shellbar\n [class.service-desk]=\"isServiceDesk\"\n [cssUrl]=\"''\"\n [cssVariableUrl]=\"''\"\n [cssCustomUr]=\"''\"\n [userLoggedIn]=\"false\"\n [multiLanguages]=\"multiLanguages\"\n [userMenu]=\"userMenu\"\n [logo]=\"logo\"\n [productMenuItems1]=\"productMenuItems1\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n [shellbarData]=\"shellbarData\"\n [cultures]=\"cultures\"\n [logo]=\"logo\"\n [isMobile]=\"isMobile\"\n [isTablet]=\"isTablet\"\n [isDesktop]=\"isDesktop\"\n [isServiceDesk]=\"isServiceDesk\"\n [actions]=\"actions\"\n [userMenu]=\"userMenu\"\n [productMenuControl]=\"productMenuControl\"\n [productSwitcher]=\"productSwitcher\"\n [subtitle]=\"subtitle\"\n [settings]=\"settings\"\n [notificationCount]=\"{ unread: 0, all: 0 }\"\n [notifications]=\"[]\"\n [notifcationLoaded]=\"true\"\n [notificationLoading]=\"false\"\n [hideShellbarActions]=\"true\"\n [showExtraButton]=\"true\"\n [cultures]=\"cultures\"\n [productMenuItems1]=\"productMenuItems1\"\n (cultureChanged)=\"onCultureChanged($event)\"\n>\n @for(btn of userMenu;track btn){\n <button\n class=\"extra_btn\"\n fd-button\n [label]=\"btn.text\"\n [glyph]=\"btn.text === ('Login' | bbbTranslate) ? 'person-placeholder' : null\"\n fdType=\"emphasized\"\n (click)=\"btn.callback()\"\n ></button>\n }\n</bt-barsa-shellbar>\n} }\n<ng-template #QuickAccessTemplate>\n @if ((notificationLoading$ | async) === true) {\n <div style=\"position: relative; height: 100px\">\n <bsu-mask size=\"s\"></bsu-mask>\n </div>\n }\n <bnrc-report-container *ngIf=\"sidebarSettings\" [settings]=\"sidebarSettings\"> </bnrc-report-container>\n <!-- <bt-popover-app-finder (closeMenu)=\"isOpenQuickAccess = false\"></bt-popover-app-finder> -->\n</ng-template>\n", styles: [":host{display:block;position:relative}:host .extra_btn{background-color:transparent;border-color:transparent}:host #menu_btn{background-color:transparent;border-color:transparent}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i1.ReportContainerComponent, selector: "bnrc-report-container", inputs: ["settings"] }, { kind: "component", type: i6.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i7.BarsaShellbarComponent, selector: "bt-barsa-shellbar", inputs: ["cssCustomUrl", "cssUrl", "cssVariableUrl", "multiLanguages", "userLoggedIn", "settings", "productMenuControl", "deviceSize", "cultures", "shellbarData", "notificationCount", "notifcationLoaded", "notificationLoading", "notifications", "productMenuItems1", "bodyClick", "logo", "actions", "userMenu", "productSwitcher", "subtitle", "isMobile", "hideShellbarActions", "showExtraButton", "isTablet", "userProfileImageUrl", "isDesktop", "isServiceDesk", "isOpenQuickAccess", "sideMenuTemplate"], outputs: ["isOpenQuickAccessChanged", "openNotificationPanel", "openQuickAccessPanel", "cultureChanged", "notificationLoadMore", "removeNotification", "notifiationActionClick", "notificationViewed"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
217
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: ShellbarComponent, selector: "bt-shellbar", viewQueries: [{ propertyName: "comboboxComponent", first: true, predicate: ComboboxComponent, descendants: true }, { propertyName: "popoverComponent", first: true, predicate: ["popoverComponent"], descendants: true }, { propertyName: "_notificationsDialog", first: true, predicate: ["notificationsDialog"], descendants: true, read: TemplateRef, static: true }], usesInheritance: true, ngImport: i0, template: "@if (userLoggedIn$ | async; as userloggend) { @if (notifiationCountLoaded$ | async; as notifiationCountLoaded) { @if\n(deviceSize$ | async; as deviceSize) { @if (shellbarData) {\n<bt-barsa-shellbar\n [class.service-desk]=\"isServiceDesk\"\n [cssUrl]=\"cssUrl$ | async\"\n [cssVariableUrl]=\"cssVariableUrl$ | async\"\n [userProfileImageUrl]=\"userProfileImageUrl$ | async\"\n [cssCustomUrl]=\"cssCustomUrl$ | async\"\n [userLoggedIn]=\"true\"\n [deviceSize]=\"deviceSize\"\n [shellbarData]=\"shellbarData\"\n [cssStyle]=\"cssStyles\"\n [productMenuControl]=\"productMenuControl\"\n [settings]=\"settings\"\n [isMobile]=\"isMobile\"\n [isTablet]=\"isTablet\"\n [isDesktop]=\"isDesktop\"\n [multiLanguages]=\"multiLanguages\"\n [notificationCount]=\"(notificationsCount$ | async)!!\"\n [notifications]=\"(notifications$ | async) ?? []\"\n [notifcationLoaded]=\"notifcationLoaded\"\n [notificationLoading]=\"(notificationLoading$ | async) === true\"\n [cultures]=\"cultures\"\n [logo]=\"logo\"\n [actions]=\"actions\"\n [userMenu]=\"userMenu\"\n [productSwitcher]=\"productSwitcher\"\n [subtitle]=\"subtitle\"\n [isServiceDesk]=\"isServiceDesk\"\n [sideMenuTemplate]=\"QuickAccessTemplate\"\n [productMenuItems1]=\"productMenuItems1\"\n [isOpenQuickAccess]=\"isOpenQuickAccess\"\n (isOpenQuickAccessChanged)=\"isOpenQuickAccess = $event\"\n (cultureChanged)=\"onCultureChanged($event)\"\n (notificationViewed)=\"onNotificationItemViewed($event)\"\n (notifiationActionClick)=\"onNotificationAction($event)\"\n (removeNotification)=\"onRemoveNotifications($event)\"\n (notificationLoadMore)=\"onNotificationLoadMore()\"\n (openNotificationPanel)=\"onHandleOpenNotificationPanel()\"\n>\n</bt-barsa-shellbar>\n} } } } @else { @if (notificationsCount$ | async; as notificationCount) {\n<bt-barsa-shellbar\n [class.service-desk]=\"isServiceDesk\"\n [cssUrl]=\"''\"\n [cssStyle]=\"cssStyles\"\n [cssVariableUrl]=\"''\"\n [cssCustomUr]=\"''\"\n [userLoggedIn]=\"false\"\n [multiLanguages]=\"multiLanguages\"\n [userMenu]=\"userMenu\"\n [logo]=\"logo\"\n [productMenuItems1]=\"productMenuItems1\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n [shellbarData]=\"shellbarData\"\n [cultures]=\"cultures\"\n [logo]=\"logo\"\n [isMobile]=\"isMobile\"\n [isTablet]=\"isTablet\"\n [isDesktop]=\"isDesktop\"\n [isServiceDesk]=\"isServiceDesk\"\n [actions]=\"actions\"\n [userMenu]=\"userMenu\"\n [productMenuControl]=\"productMenuControl\"\n [productSwitcher]=\"productSwitcher\"\n [subtitle]=\"subtitle\"\n [settings]=\"settings\"\n [notificationCount]=\"{ unread: 0, all: 0 }\"\n [notifications]=\"[]\"\n [notifcationLoaded]=\"true\"\n [notificationLoading]=\"false\"\n [hideShellbarActions]=\"true\"\n [showExtraButton]=\"true\"\n [cultures]=\"cultures\"\n [productMenuItems1]=\"productMenuItems1\"\n (cultureChanged)=\"onCultureChanged($event)\"\n>\n @for(btn of userMenu;track btn){\n <button\n class=\"extra_btn\"\n fd-button\n [label]=\"btn.text\"\n [glyph]=\"btn.text === ('Login' | bbbTranslate) ? 'person-placeholder' : null\"\n fdType=\"emphasized\"\n (click)=\"btn.callback()\"\n ></button>\n }\n</bt-barsa-shellbar>\n} }\n<ng-template #QuickAccessTemplate>\n @if ((notificationLoading$ | async) === true) {\n <div style=\"position: relative; height: 100px\">\n <bsu-mask size=\"s\"></bsu-mask>\n </div>\n }\n <bnrc-report-container *ngIf=\"sidebarSettings\" [settings]=\"sidebarSettings\"> </bnrc-report-container>\n <!-- <bt-popover-app-finder (closeMenu)=\"isOpenQuickAccess = false\"></bt-popover-app-finder> -->\n</ng-template>\n", styles: [":host{display:block;position:relative}:host .extra_btn{background-color:transparent;border-color:transparent}:host #menu_btn{background-color:transparent;border-color:transparent}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i1.ReportContainerComponent, selector: "bnrc-report-container", inputs: ["settings"] }, { kind: "directive", type: i1.DynamicStyleDirective, selector: "[cssStyle]", inputs: ["cssStyle"] }, { kind: "component", type: i6.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i7.BarsaShellbarComponent, selector: "bt-barsa-shellbar", inputs: ["cssCustomUrl", "cssUrl", "cssVariableUrl", "multiLanguages", "userLoggedIn", "settings", "productMenuControl", "deviceSize", "cultures", "shellbarData", "notificationCount", "notifcationLoaded", "notificationLoading", "notifications", "productMenuItems1", "bodyClick", "logo", "actions", "userMenu", "productSwitcher", "subtitle", "isMobile", "hideShellbarActions", "showExtraButton", "isTablet", "userProfileImageUrl", "isDesktop", "isServiceDesk", "isOpenQuickAccess", "sideMenuTemplate"], outputs: ["isOpenQuickAccessChanged", "openNotificationPanel", "openQuickAccessPanel", "cultureChanged", "notificationLoadMore", "removeNotification", "notifiationActionClick", "notificationViewed"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
215
218
  }
216
219
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: ShellbarComponent, decorators: [{
217
220
  type: Component,
218
- args: [{ selector: 'bt-shellbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (userLoggedIn$ | async; as userloggend) { @if (notifiationCountLoaded$ | async; as notifiationCountLoaded) { @if\n(deviceSize$ | async; as deviceSize) { @if (shellbarData) {\n<bt-barsa-shellbar\n [class.service-desk]=\"isServiceDesk\"\n [cssUrl]=\"cssUrl$ | async\"\n [cssVariableUrl]=\"cssVariableUrl$ | async\"\n [userProfileImageUrl]=\"userProfileImageUrl$ | async\"\n [cssCustomUrl]=\"cssCustomUrl$ | async\"\n [userLoggedIn]=\"true\"\n [deviceSize]=\"deviceSize\"\n [shellbarData]=\"shellbarData\"\n [productMenuControl]=\"productMenuControl\"\n [settings]=\"settings\"\n [isMobile]=\"isMobile\"\n [isTablet]=\"isTablet\"\n [isDesktop]=\"isDesktop\"\n [multiLanguages]=\"multiLanguages\"\n [notificationCount]=\"(notificationsCount$ | async)!!\"\n [notifications]=\"(notifications$ | async) ?? []\"\n [notifcationLoaded]=\"notifcationLoaded\"\n [notificationLoading]=\"(notificationLoading$ | async) === true\"\n [cultures]=\"cultures\"\n [logo]=\"logo\"\n [actions]=\"actions\"\n [userMenu]=\"userMenu\"\n [productSwitcher]=\"productSwitcher\"\n [subtitle]=\"subtitle\"\n [isServiceDesk]=\"isServiceDesk\"\n [sideMenuTemplate]=\"QuickAccessTemplate\"\n [productMenuItems1]=\"productMenuItems1\"\n [isOpenQuickAccess]=\"isOpenQuickAccess\"\n (isOpenQuickAccessChanged)=\"isOpenQuickAccess = $event\"\n (cultureChanged)=\"onCultureChanged($event)\"\n (notificationViewed)=\"onNotificationItemViewed($event)\"\n (notifiationActionClick)=\"onNotificationAction($event)\"\n (removeNotification)=\"onRemoveNotifications($event)\"\n (notificationLoadMore)=\"onNotificationLoadMore()\"\n (openNotificationPanel)=\"onHandleOpenNotificationPanel()\"\n>\n</bt-barsa-shellbar>\n} } } } @else { @if (notificationsCount$ | async; as notificationCount) {\n<bt-barsa-shellbar\n [class.service-desk]=\"isServiceDesk\"\n [cssUrl]=\"''\"\n [cssVariableUrl]=\"''\"\n [cssCustomUr]=\"''\"\n [userLoggedIn]=\"false\"\n [multiLanguages]=\"multiLanguages\"\n [userMenu]=\"userMenu\"\n [logo]=\"logo\"\n [productMenuItems1]=\"productMenuItems1\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n [shellbarData]=\"shellbarData\"\n [cultures]=\"cultures\"\n [logo]=\"logo\"\n [isMobile]=\"isMobile\"\n [isTablet]=\"isTablet\"\n [isDesktop]=\"isDesktop\"\n [isServiceDesk]=\"isServiceDesk\"\n [actions]=\"actions\"\n [userMenu]=\"userMenu\"\n [productMenuControl]=\"productMenuControl\"\n [productSwitcher]=\"productSwitcher\"\n [subtitle]=\"subtitle\"\n [settings]=\"settings\"\n [notificationCount]=\"{ unread: 0, all: 0 }\"\n [notifications]=\"[]\"\n [notifcationLoaded]=\"true\"\n [notificationLoading]=\"false\"\n [hideShellbarActions]=\"true\"\n [showExtraButton]=\"true\"\n [cultures]=\"cultures\"\n [productMenuItems1]=\"productMenuItems1\"\n (cultureChanged)=\"onCultureChanged($event)\"\n>\n @for(btn of userMenu;track btn){\n <button\n class=\"extra_btn\"\n fd-button\n [label]=\"btn.text\"\n [glyph]=\"btn.text === ('Login' | bbbTranslate) ? 'person-placeholder' : null\"\n fdType=\"emphasized\"\n (click)=\"btn.callback()\"\n ></button>\n }\n</bt-barsa-shellbar>\n} }\n<ng-template #QuickAccessTemplate>\n @if ((notificationLoading$ | async) === true) {\n <div style=\"position: relative; height: 100px\">\n <bsu-mask size=\"s\"></bsu-mask>\n </div>\n }\n <bnrc-report-container *ngIf=\"sidebarSettings\" [settings]=\"sidebarSettings\"> </bnrc-report-container>\n <!-- <bt-popover-app-finder (closeMenu)=\"isOpenQuickAccess = false\"></bt-popover-app-finder> -->\n</ng-template>\n", styles: [":host{display:block;position:relative}:host .extra_btn{background-color:transparent;border-color:transparent}:host #menu_btn{background-color:transparent;border-color:transparent}\n"] }]
221
+ args: [{ selector: 'bt-shellbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (userLoggedIn$ | async; as userloggend) { @if (notifiationCountLoaded$ | async; as notifiationCountLoaded) { @if\n(deviceSize$ | async; as deviceSize) { @if (shellbarData) {\n<bt-barsa-shellbar\n [class.service-desk]=\"isServiceDesk\"\n [cssUrl]=\"cssUrl$ | async\"\n [cssVariableUrl]=\"cssVariableUrl$ | async\"\n [userProfileImageUrl]=\"userProfileImageUrl$ | async\"\n [cssCustomUrl]=\"cssCustomUrl$ | async\"\n [userLoggedIn]=\"true\"\n [deviceSize]=\"deviceSize\"\n [shellbarData]=\"shellbarData\"\n [cssStyle]=\"cssStyles\"\n [productMenuControl]=\"productMenuControl\"\n [settings]=\"settings\"\n [isMobile]=\"isMobile\"\n [isTablet]=\"isTablet\"\n [isDesktop]=\"isDesktop\"\n [multiLanguages]=\"multiLanguages\"\n [notificationCount]=\"(notificationsCount$ | async)!!\"\n [notifications]=\"(notifications$ | async) ?? []\"\n [notifcationLoaded]=\"notifcationLoaded\"\n [notificationLoading]=\"(notificationLoading$ | async) === true\"\n [cultures]=\"cultures\"\n [logo]=\"logo\"\n [actions]=\"actions\"\n [userMenu]=\"userMenu\"\n [productSwitcher]=\"productSwitcher\"\n [subtitle]=\"subtitle\"\n [isServiceDesk]=\"isServiceDesk\"\n [sideMenuTemplate]=\"QuickAccessTemplate\"\n [productMenuItems1]=\"productMenuItems1\"\n [isOpenQuickAccess]=\"isOpenQuickAccess\"\n (isOpenQuickAccessChanged)=\"isOpenQuickAccess = $event\"\n (cultureChanged)=\"onCultureChanged($event)\"\n (notificationViewed)=\"onNotificationItemViewed($event)\"\n (notifiationActionClick)=\"onNotificationAction($event)\"\n (removeNotification)=\"onRemoveNotifications($event)\"\n (notificationLoadMore)=\"onNotificationLoadMore()\"\n (openNotificationPanel)=\"onHandleOpenNotificationPanel()\"\n>\n</bt-barsa-shellbar>\n} } } } @else { @if (notificationsCount$ | async; as notificationCount) {\n<bt-barsa-shellbar\n [class.service-desk]=\"isServiceDesk\"\n [cssUrl]=\"''\"\n [cssStyle]=\"cssStyles\"\n [cssVariableUrl]=\"''\"\n [cssCustomUr]=\"''\"\n [userLoggedIn]=\"false\"\n [multiLanguages]=\"multiLanguages\"\n [userMenu]=\"userMenu\"\n [logo]=\"logo\"\n [productMenuItems1]=\"productMenuItems1\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n [shellbarData]=\"shellbarData\"\n [cultures]=\"cultures\"\n [logo]=\"logo\"\n [isMobile]=\"isMobile\"\n [isTablet]=\"isTablet\"\n [isDesktop]=\"isDesktop\"\n [isServiceDesk]=\"isServiceDesk\"\n [actions]=\"actions\"\n [userMenu]=\"userMenu\"\n [productMenuControl]=\"productMenuControl\"\n [productSwitcher]=\"productSwitcher\"\n [subtitle]=\"subtitle\"\n [settings]=\"settings\"\n [notificationCount]=\"{ unread: 0, all: 0 }\"\n [notifications]=\"[]\"\n [notifcationLoaded]=\"true\"\n [notificationLoading]=\"false\"\n [hideShellbarActions]=\"true\"\n [showExtraButton]=\"true\"\n [cultures]=\"cultures\"\n [productMenuItems1]=\"productMenuItems1\"\n (cultureChanged)=\"onCultureChanged($event)\"\n>\n @for(btn of userMenu;track btn){\n <button\n class=\"extra_btn\"\n fd-button\n [label]=\"btn.text\"\n [glyph]=\"btn.text === ('Login' | bbbTranslate) ? 'person-placeholder' : null\"\n fdType=\"emphasized\"\n (click)=\"btn.callback()\"\n ></button>\n }\n</bt-barsa-shellbar>\n} }\n<ng-template #QuickAccessTemplate>\n @if ((notificationLoading$ | async) === true) {\n <div style=\"position: relative; height: 100px\">\n <bsu-mask size=\"s\"></bsu-mask>\n </div>\n }\n <bnrc-report-container *ngIf=\"sidebarSettings\" [settings]=\"sidebarSettings\"> </bnrc-report-container>\n <!-- <bt-popover-app-finder (closeMenu)=\"isOpenQuickAccess = false\"></bt-popover-app-finder> -->\n</ng-template>\n", styles: [":host{display:block;position:relative}:host .extra_btn{background-color:transparent;border-color:transparent}:host #menu_btn{background-color:transparent;border-color:transparent}\n"] }]
219
222
  }], ctorParameters: () => [{ type: i1.BbbTranslatePipe }, { type: i1.PortalService }, { type: i1.BreadcrumbService }, { type: i2.TilesService }, { type: i0.ChangeDetectorRef }, { type: i3.DomSanitizer }, { type: i1.NotificationService }, { type: undefined, decorators: [{
220
223
  type: Inject,
221
224
  args: [APP_VERSION]
@@ -229,4 +232,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
229
232
  type: ViewChild,
230
233
  args: ['notificationsDialog', { static: true, read: TemplateRef }]
231
234
  }] } });
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGxiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtdGlsZXMvc3JjL2xpYi9zaGVsbGJhci9zaGVsbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3NoZWxsYmFyL3NoZWxsYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUNILGlCQUFpQixFQUtwQixNQUFNLHVCQUF1QixDQUFDO0FBRy9CLE9BQU8sRUFDSCxhQUFhLEVBQ2IsUUFBUSxFQU1SLFdBQVcsRUFNWCxpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNwQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7QUFzQjlCLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxhQUFhO0lBbUNoRCxJQUFJLGlCQUFpQjtRQUNqQixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3JCLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsY0FB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b0I7c0JBQTFGLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBJbmplY3QsXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBDb21ib2JveENvbXBvbmVudCxcbiAgICBQb3BvdmVyQ29tcG9uZW50LFxuICAgIFByb2R1Y3RTd2l0Y2hJdGVtLFxuICAgIFNoZWxsYmFyTWVudUl0ZW0sXG4gICAgU2hlbGxiYXJVc2VyXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQge1xuICAgIEJhc2VDb21wb25lbnQsXG4gICAgQmFyc2FBcGksXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBGaWxlUGljdHVyZUluZm9Nb2RlbCxcbiAgICBNb0ZvclJlcG9ydE1vZGVsLFxuICAgIFBvcnRhbFNlcnZpY2UsXG4gICAgQnJlYWRjcnVtYlNlcnZpY2UsXG4gICAgQVBQX1ZFUlNJT04sXG4gICAgTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBOb3RpZmljYXRpb25JdGVtLFxuICAgIE5vdGlmaWNhdGlvbkFjdGlvbixcbiAgICBCYmJUcmFuc2xhdGVQaXBlLFxuICAgIEFiYnJldmF0aW9uRGV2aWNlU2l6ZSxcbiAgICBnZXREZXZpY2VJc01vYmlsZSxcbiAgICBnZXREZXZpY2VJc0Rlc2t0b3AsXG4gICAgZ2V0RGV2aWNlSXNUYWJsZXRcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuXG5pbXBvcnQgeyBUaWxlc1NlcnZpY2UgfSBmcm9tICcuLi90aWxlcy5zZXJ2aWNlJztcblxuaW50ZXJmYWNlIFNoZWxsYmFyU2V0dGluZyBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xuICAgIHN1YnRpdGxlOiBzdHJpbmc7XG4gICAgY2FsY1N1YnRpdGxlOiBzdHJpbmc7XG4gICAgbG9nbzogRmlsZVBpY3R1cmVJbmZvTW9kZWw7XG4gICAgUHJvZHVjdFN3aXRjaEl0ZW1zOiBNb0ZvclJlcG9ydE1vZGVsO1xuICAgIFByb2R1Y3RNZW51SXRlbXM6IE1vRm9yUmVwb3J0TW9kZWw7XG4gICAgVXNlck1lbnVJdGVtczogTW9Gb3JSZXBvcnRNb2RlbDtcbiAgICBBY3Rpb25JdGVtczogTW9Gb3JSZXBvcnRNb2RlbDtcbiAgICBTaWRlYmFyUmVwb3J0OiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIFByb2ZpbGVJbWFnZVJlcG9ydDogTWV0YW9iamVjdERhdGFNb2RlbDtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdidC1zaGVsbGJhcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NoZWxsYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zaGVsbGJhci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNoZWxsYmFyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZChDb21ib2JveENvbXBvbmVudCkgY29tYm9ib3hDb21wb25lbnQ6IENvbWJvYm94Q29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ3BvcG92ZXJDb21wb25lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcG9wb3ZlckNvbXBvbmVudDogUG9wb3ZlckNvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdub3RpZmljYXRpb25zRGlhbG9nJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pIF9ub3RpZmljYXRpb25zRGlhbG9nOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHNoZWxsYmFyRGF0YTogU2hlbGxiYXJTZXR0aW5nO1xuICAgIHNldHRpbmdzOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIGlzT3Blbk5vdGlmaWNhdG9pbiA9IGZhbHNlO1xuICAgIGRldmljZVNpemUkOiBPYnNlcnZhYmxlPEFiYnJldmF0aW9uRGV2aWNlU2l6ZT47XG4gICAgcHJvZHVjdE1lbnVDb250cm9sOiBzdHJpbmc7XG4gICAgdXNlcjogU2hlbGxiYXJVc2VyID0ge1xuICAgICAgICBpbml0aWFsczogJ1dXJyxcbiAgICAgICAgY29sb3JBY2NlbnQ6IDFcbiAgICB9O1xuXG4gICAgcHJvZHVjdE1lbnVJdGVtczE6IFNoZWxsYmFyTWVudUl0ZW1bXTtcbiAgICB1c2VyTG9nZ2VkSW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGNzc1VybCQ6IE9ic2VydmFibGU8U2FmZVJlc291cmNlVXJsIHwgbnVsbD47XG4gICAgY3NzVmFyaWFibGVVcmwkOiBPYnNlcnZhYmxlPFNhZmVSZXNvdXJjZVVybCB8IG51bGw+O1xuICAgIGNzc0N1c3RvbVVybCQ6IE9ic2VydmFibGU8U2FmZVJlc291cmNlVXJsIHwgbnVsbD47XG4gICAgY3VsdHVyZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgbm90aWZpY2F0aW9uc0NvdW50JDogT2JzZXJ2YWJsZTx7IHVucmVhZDogbnVtYmVyOyBhbGw6IG51bWJlciB9PjtcbiAgICBub3RpZmljYXRpb25zJDogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25JdGVtW10+O1xuICAgIG5vdGlmaWNhdGlvbkxvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIG5vdGlmY2F0aW9uTG9hZGVkID0gZmFsc2U7XG4gICAgbm90aWZpYXRpb25Db3VudExvYWRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgX3ZpZXdlZE5vdGlmaWNhdGlvbnMkID0gbmV3IFN1YmplY3Q8Tm90aWZpY2F0aW9uSXRlbT4oKTtcbiAgICBfdmlld2VkTm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uSXRlbVtdID0gW107XG4gICAgYm9keUNsaWNrID0gJzskKFwiYm9keVwiKS5jbGljaygpJztcbiAgICBpc01vYmlsZSA9IGdldERldmljZUlzTW9iaWxlKCk7XG4gICAgaXNEZXNrdG9wID0gZ2V0RGV2aWNlSXNEZXNrdG9wKCk7XG4gICAgaXNUYWJsZXQgPSBnZXREZXZpY2VJc1RhYmxldCgpO1xuICAgIGxvZ2luUm91dGVyTGluayQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICBpc1NlcnZpY2VEZXNrID0gZmFsc2U7XG4gICAgaXNPcGVuUXVpY2tBY2Nlc3MgPSBmYWxzZTtcbiAgICB1c2VyUHJvZmlsZUltYWdlVXJsJDogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPjtcbiAgICBnZXQgcmVwSWRQcm9maWxlSW1hZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hlbGxiYXJEYXRhPy5Qcm9maWxlSW1hZ2VSZXBvcnQ/LklkO1xuICAgIH1cbiAgICBnZXQgc3VidGl0bGUoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLnNoZWxsYmFyRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9wb3J0YWxTZXJ2aWNlLmRldmljZVNpemUgPT09ICdzJyAmJiB0aGlzLnNoZWxsYmFyRGF0YS5Nb2JpbGVTdWJ0aXRsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hlbGxiYXJEYXRhLk1vYmlsZVN1YnRpdGxlXG4gICAgICAgICAgICAgICAgPyBgJHt0aGlzLnNoZWxsYmFyRGF0YS5Nb2JpbGVTdWJ0aXRsZX0gJHtcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy5zaGVsbGJhckRhdGE/LmNhbGNTdWJ0aXRsZSA9PT0gJ3N0cmluZycgPyB0aGlzLnNoZWxsYmFyRGF0YS5jYWxjU3VidGl0bGUgOiAnJ1xuICAgICAgICAgICAgICAgICAgfWBcbiAgICAgICAgICAgICAgICA6ICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNoZWxsYmFyRGF0YS5TdWJ0aXRsZVxuICAgICAgICAgICAgPyBgJHt0aGlzLnNoZWxsYmFyRGF0YT8uU3VidGl0bGV9ICR7XG4gICAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy5zaGVsbGJhckRhdGE/LmNhbGNTdWJ0aXRsZSA9PT0gJ3N0cmluZycgPyB0aGlzLnNoZWxsYmFyRGF0YS5jYWxjU3VidGl0bGUgOiAnJ1xuICAgICAgICAgICAgICB9YFxuICAgICAgICAgICAgOiAnJztcbiAgICB9XG4gICAgZ2V0IGxvZ28oKTogeyBGaWxlSWQ6IHN0cmluZyB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hlbGxiYXJEYXRhPy5Mb2dvO1xuICAgIH1cbiAgICBnZXQgYWN0aW9ucygpOiBBcnJheTxNZXRhb2JqZWN0RGF0YU1vZGVsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzPy5IaWRlVXNlck1lbnUgPyBbXSA6IHRoaXMuc2hlbGxiYXJEYXRhPy5BY3Rpb25JdGVtcz8uTW9EYXRhTGlzdCA/PyBbXTtcbiAgICB9XG4gICAgZ2V0IHNpZGViYXJTZXR0aW5ncygpOiBudWxsIHwgYW55IHtcbiAgICAgICAgaWYgKCF0aGlzLnNoZWxsYmFyRGF0YT8uU2lkZWJhclJlcG9ydD8uSWQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBSZWxhdGVkUmVwb3J0OiB7IElkOiB0aGlzLnNoZWxsYmFyRGF0YT8uU2lkZWJhclJlcG9ydD8uSWQsICRDYXB0aW9uOiAnJyB9LFxuICAgICAgICAgICAgUm93Q2xpY2s6ICcnLFxuICAgICAgICAgICAgRGF0YU9ubHk6IGZhbHNlXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldCB1c2VyTWVudSgpOiB7IHRleHQ6IHN0cmluZzsgY2FsbGJhY2s6ICgpID0+IHZvaWQgfVtdIHtcbiAgICAgICAgY29uc3QgbW9EYXRhTGlzdCA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKHRoaXMuc2hlbGxiYXJEYXRhLCAnVXNlck1lbnVJdGVtcy5Nb0RhdGFMaXN0Jyk7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gbW9EYXRhTGlzdCA/IFsuLi5tb0RhdGFMaXN0XSA6IFtdO1xuICAgICAgICBpZiAoIWl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgIGMudGV4dCA9IHRoaXMuX2JiYlRyYW5zbGF0ZVBpcGUudHJhbnNmb3JtKGMudGV4dCk7XG4gICAgICAgICAgICBjLmNhbGxiYWNrID0gbmV3IEZ1bmN0aW9uKGMuQ29kZSArIHRoaXMuYm9keUNsaWNrKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghdGhpcy5Jc1VzZXJBbm9ueW1vdXMgJiYgdGhpcy5Jc1VzZXJMb2dnZWRJbikge1xuICAgICAgICAgICAgaXRlbXMuc3BsaWNlKDAsIDAsIHsgSWQ6ICctMScsICRDYXB0aW9uOiAnJywgdGV4dDogQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Vc2VyRGlzcGxheU5hbWUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0dGluZ3M/LkhpZGVVc2VyTWVudSA/IFtdIDogKGl0ZW1zIGFzIGFueSk7XG4gICAgfVxuICAgIGdldCBwcm9kdWN0U3dpdGNoZXIoKTogUHJvZHVjdFN3aXRjaEl0ZW1bXSB7XG4gICAgICAgIHJldHVybiAodGhpcy5zaGVsbGJhckRhdGE/LlByb2R1Y3RTd2l0Y2hJdGVtcz8uTW9EYXRhTGlzdCA/PyBbXSkgYXMgdW5rbm93biBhcyBQcm9kdWN0U3dpdGNoSXRlbVtdO1xuICAgIH1cbiAgICBnZXQgbXVsdGlMYW5ndWFnZXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNoZWxsYmFyRGF0YT8uTXVsdGlMYW5ndWFnZXM7XG4gICAgfVxuICAgIGdldCBwcm9kdWN0TWVudUl0ZW1zKCk6IFNoZWxsYmFyTWVudUl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5zaGVsbGJhckRhdGE/LlByb2R1Y3RNZW51SXRlbXM/Lk1vRGF0YUxpc3QgPz8gW107XG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGMpID0+IChjLmNhbGxiYWNrID0gbmV3IEZ1bmN0aW9uKGMuQ29kZSArIHRoaXMuYm9keUNsaWNrKSkpO1xuICAgICAgICByZXR1cm4gaXRlbXMgYXMgdW5rbm93biBhcyBTaGVsbGJhck1lbnVJdGVtW107XG4gICAgfVxuICAgIGdldCBJc1VzZXJMb2dnZWRJbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuSXNVc2VyTG9nZ2VkSW47XG4gICAgfVxuICAgIGdldCBJc1VzZXJBbm9ueW1vdXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLklzQW5vbnltb3VzO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9iYmJUcmFuc2xhdGVQaXBlOiBCYmJUcmFuc2xhdGVQaXBlLFxuICAgICAgICBwcml2YXRlIF9wb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9icmVhZENydW1iU2VydmljZTogQnJlYWRjcnVtYlNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX3RpbGVzU2VydmljZTogVGlsZXNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9kb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICAgICAgQEluamVjdChBUFBfVkVSU0lPTikgcHVibGljIGFwcFZlcnNpb246IHN0cmluZ1xuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMudXNlckxvZ2dlZEluJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UudXNlckxvZ2dlZEluJDtcbiAgICAgICAgdGhpcy5ub3RpZmlhdGlvbkNvdW50TG9hZGVkJCA9IHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uubm90aWZpY2F0aW9uQ291bnRMb2FkZWQkO1xuICAgICAgICB0aGlzLl92aWV3ZWROb3RpZmljYXRpb25zJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIHRhcCgoaXRlbSkgPT4gdGhpcy5fdmlld2VkTm90aWZpY2F0aW9ucy5wdXNoKGl0ZW0pKSxcbiAgICAgICAgICAgICAgICBtYXAoKGl0ZW0pID0+IHRoaXMuX3ZpZXdlZE5vdGlmaWNhdGlvbnMpLFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgyMDAwKSxcbiAgICAgICAgICAgICAgICBtYXAoKGl0ZW1zKSA9PiBpdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uVGFnKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHRhZ3MpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl92aWV3ZWROb3RpZmljYXRpb25zID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5zZXROb3RpZmljYXRpb25WaWV3ZWQodGFncyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICB0aGlzLmlzU2VydmljZURlc2sgPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLklzU2VydmljZURlc2s7XG5cbiAgICAgICAgdGhpcy5jdWx0dXJlcyA9IEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuQ3VsdHVyZXM7XG4gICAgICAgIHRoaXMuY3NzVXJsJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UuY3NzVXJsJDtcbiAgICAgICAgdGhpcy5jc3NWYXJpYWJsZVVybCQgPSB0aGlzLl9wb3J0YWxTZXJ2aWNlLmNzc1ZhcmlhYmxlVXJsJDtcbiAgICAgICAgdGhpcy5jc3NDdXN0b21VcmwkID0gdGhpcy5fcG9ydGFsU2VydmljZS5jc3NDdXN0b21VcmwkO1xuICAgICAgICB0aGlzLmxvZ2luUm91dGVyTGluayQgPSB0aGlzLl9wb3J0YWxTZXJ2aWNlLmxvZ2luUm91dGUkO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNDb3VudCQgPSB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLm5vdGlmaWNhdGlvbkNvdW50JDtcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5ub3RpZmljYXRpb25Db3VudCQuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCkpO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkxvYWRpbmckID0gdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5ub3RpZmljYXRpb25Mb2FkaW5nJDtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zJCA9IHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uubm90aWZpY2F0aW9ucyQucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgIG1hcCgobm90aWZpY2F0aW9ucykgPT4gdGhpcy5fbWFwTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25zKSlcbiAgICAgICAgKTtcbiAgICAgICAgQmFyc2FBcGkuQncuU2V0VXNlclBvcnRhbFNldHRpbmdzID0gKHVzZXJQb3J0YWxTZXR0aW5nczogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZS5zZXRVc2VyUG9ydGFsU2V0dGluZ3ModXNlclBvcnRhbFNldHRpbmdzKTtcbiAgICAgICAgfTtcbiAgICAgICAgQmFyc2FBcGkuQncuU2V0U2hlbGxiYXJTdWJ0aXRsZSA9IChjYWxjU3VidGl0bGU6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaGVsbGJhckRhdGEuY2FsY1N1YnRpdGxlID0gY2FsY1N1YnRpdGxlO1xuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kZXZpY2VTaXplJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UuZGV2aWNlU2l6ZSQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xuXG4gICAgICAgIHRoaXMuX2JyZWFkQ3J1bWJTZXJ2aWNlLmJyZWFkY3J1bWJzJC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChicmVhZENydW1icykgPT4ge1xuICAgICAgICAgICAgaWYgKGJyZWFkQ3J1bWJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RNZW51Q29udHJvbCA9IGJyZWFkQ3J1bWJzW2JyZWFkQ3J1bWJzLmxlbmd0aCAtIDFdLmxhYmVsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudXNlclByb2ZpbGVJbWFnZVVybCQgPSB0aGlzLl90aWxlc1NlcnZpY2UudXNlclByb2ZpbGVJbWFnZVVybCQ7XG4gICAgICAgIHRoaXMuX3RpbGVzU2VydmljZS5zaGVsbGJhciQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgobW8pID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hlbGxiYXJEYXRhID0gbW8gYXMgU2hlbGxiYXJTZXR0aW5nO1xuICAgICAgICAgICAgaWYgKHRoaXMuSXNVc2VyTG9nZ2VkSW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90aWxlc1NlcnZpY2UubG9hZFVzZXJQcm9maWxlSW1hZ2UodGhpcy5yZXBJZFByb2ZpbGVJbWFnZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICBmb3JrSm9pbihbb2YodGhpcy5wcm9kdWN0TWVudUl0ZW1zKSwgb2YoW10pXSkgLy8gdG8gYXBwZW5kIHVzZXIgZGVmaW5lZFxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICAgICAgICAgIG1hcCgoW3MxLCBzMl0pID0+IFsuLi5zMSwgLi4uczJdKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdE1lbnVJdGVtczEgPSBjO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3M/LkFsbG93QW5vbnltb3VzKSB7XG4gICAgICAgICAgICB0aGlzLl90aWxlc1NlcnZpY2UubG9hZFNoZWxsYmFyKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZS51c2VyTG9nZ2VkSW4kLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGxvZ2dlZEluKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWxvZ2dlZEluKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fdGlsZXNTZXJ2aWNlLmxvYWRTaGVsbGJhcigpO1xuICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5sb2FkVW5yZWFkTm90aWZpY2F0aW9uQ291bnQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25DdWx0dXJlQ2hhbmdlKGN1bHR1cmUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2hhbmdlQ3VsdHVyZShjdWx0dXJlKTtcbiAgICB9XG4gICAgb25TaG93Tm90aWZpY2F0aW9uKGU6IHsgdGFnOiBzdHJpbmc7IG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsOyBuYW1hOiBzdHJpbmcgfSk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzT3Blbk5vdGlmaWNhdG9pbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLlNob3dOb3RpZmljYXRpb25SZWxhdGVkTW8oZSk7XG4gICAgfVxuICAgIG9uTm90aWZpY2F0aW9uSXRlbVZpZXdlZCh2aWV3ZWRNbzogTm90aWZpY2F0aW9uSXRlbSk6IHZvaWQge1xuICAgICAgICB0aGlzLl92aWV3ZWROb3RpZmljYXRpb25zJC5uZXh0KHZpZXdlZE1vKTtcbiAgICB9XG5cbiAgICBvblJlbW92ZU5vdGlmaWNhdGlvbnMoZTogeyBpdGVtczogTWV0YW9iamVjdERhdGFNb2RlbFtdOyBzaWxlbnQ6IGJvb2xlYW4gfSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLnJlbW92ZU5vdGlmaWNhdGlvbihlLml0ZW1zKTtcbiAgICB9XG4gICAgb25PcGVuTm90aWZpY2F0aW9uID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLmlzT3Blbk5vdGlmaWNhdG9pbiA9IHRydWU7XG4gICAgICAgIHRoaXMuX2hhbmRsZU9wZW5Ob3RpZmljYXRpb25QYW5lbCgpO1xuICAgIH07XG4gICAgb25Ob3RpZmljYXRpb25BY3Rpb24oZTogeyBpdGVtOiBOb3RpZmljYXRpb25JdGVtOyBidG46IE5vdGlmaWNhdGlvbkFjdGlvbiB9KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BvcnRhbFNlcnZpY2UuRXhlY3V0ZU5vdGlmaWNhdGlvbkFjdGlvbihlLml0ZW0uVGFnLCBlLmJ0bi5UaXRsZSk7XG4gICAgfVxuICAgIG9uQ3VsdHVyZUNoYW5nZWQgPSAoY3VsdHVyZTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5nZUN1bHR1cmUoY3VsdHVyZSk7XG4gICAgfTtcbiAgICBvbk5vdGlmaWNhdGlvbkxvYWRNb3JlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmxvYWRNb3JlKCk7XG4gICAgfVxuICAgIG9uTm90aWZpY2F0aW9uV29ya2Zsb3dDaG9pY2VTdWNjZXNzKHJlc3VsdCk6IHZvaWQge31cbiAgICBvbk5vdGlmaWNhdGlvbldvcmtmbG93Q2hvaWNlRmFpbGVkKGVycik6IHZvaWQge31cblxuICAgIG9uSGFuZGxlT3Blbk5vdGlmaWNhdGlvblBhbmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9oYW5kbGVPcGVuTm90aWZpY2F0aW9uUGFuZWwoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9oYW5kbGVPcGVuTm90aWZpY2F0aW9uUGFuZWwoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5vdGlmY2F0aW9uTG9hZGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ub3RpZmNhdGlvbkxvYWRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2UubG9hZE5vdGlmaWNhdGlvbnMoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfbWFwTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25zKTogTm90aWZpY2F0aW9uSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIG5vdGlmaWNhdGlvbnMubWFwKChub3RpZmljYXRpb24pID0+ICh7XG4gICAgICAgICAgICAuLi5ub3RpZmljYXRpb24sXG4gICAgICAgICAgICBjb250ZW50U2FmZUh0bWw6IG5vdGlmaWNhdGlvbi5Db250ZW50XG4gICAgICAgICAgICAgICAgPyB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwobm90aWZpY2F0aW9uLkNvbnRlbnQpXG4gICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICB9KSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2NoYW5nZUN1bHR1cmUoY3VsdHVyZTogc3RyaW5nIC8qIGN1bHR1cmUgc2FtcGxlIDpFbmdsaXNoICovKTogdm9pZCB7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlNldEN1bHR1cmVCeURpc3BsYXlOYW1lKGN1bHR1cmUpO1xuICAgICAgICBCYXJzYUFwaS5Cdy5OYXZpZ2F0ZVRvKCcvJyk7XG4gICAgfVxufVxuIiwiQGlmICh1c2VyTG9nZ2VkSW4kIHwgYXN5bmM7IGFzIHVzZXJsb2dnZW5kKSB7IEBpZiAobm90aWZpYXRpb25Db3VudExvYWRlZCQgfCBhc3luYzsgYXMgbm90aWZpYXRpb25Db3VudExvYWRlZCkgeyBAaWZcbihkZXZpY2VTaXplJCB8IGFzeW5jOyBhcyBkZXZpY2VTaXplKSB7IEBpZiAoc2hlbGxiYXJEYXRhKSB7XG48YnQtYmFyc2Etc2hlbGxiYXJcbiAgICBbY2xhc3Muc2VydmljZS1kZXNrXT1cImlzU2VydmljZURlc2tcIlxuICAgIFtjc3NVcmxdPVwiY3NzVXJsJCB8IGFzeW5jXCJcbiAgICBbY3NzVmFyaWFibGVVcmxdPVwiY3NzVmFyaWFibGVVcmwkIHwgYXN5bmNcIlxuICAgIFt1c2VyUHJvZmlsZUltYWdlVXJsXT1cInVzZXJQcm9maWxlSW1hZ2VVcmwkIHwgYXN5bmNcIlxuICAgIFtjc3NDdXN0b21VcmxdPVwiY3NzQ3VzdG9tVXJsJCB8IGFzeW5jXCJcbiAgICBbdXNlckxvZ2dlZEluXT1cInRydWVcIlxuICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgIFtzaGVsbGJhckRhdGFdPVwic2hlbGxiYXJEYXRhXCJcbiAgICBbcHJvZHVjdE1lbnVDb250cm9sXT1cInByb2R1Y3RNZW51Q29udHJvbFwiXG4gICAgW3NldHRpbmdzXT1cInNldHRpbmdzXCJcbiAgICBbaXNNb2JpbGVdPVwiaXNNb2JpbGVcIlxuICAgIFtpc1RhYmxldF09XCJpc1RhYmxldFwiXG4gICAgW2lzRGVza3RvcF09XCJpc0Rlc2t0b3BcIlxuICAgIFttdWx0aUxhbmd1YWdlc109XCJtdWx0aUxhbmd1YWdlc1wiXG4gICAgW25vdGlmaWNhdGlvbkNvdW50XT1cIihub3RpZmljYXRpb25zQ291bnQkIHwgYXN5bmMpISFcIlxuICAgIFtub3RpZmljYXRpb25zXT1cIihub3RpZmljYXRpb25zJCB8IGFzeW5jKSA/PyBbXVwiXG4gICAgW25vdGlmY2F0aW9uTG9hZGVkXT1cIm5vdGlmY2F0aW9uTG9hZGVkXCJcbiAgICBbbm90aWZpY2F0aW9uTG9hZGluZ109XCIobm90aWZpY2F0aW9uTG9hZGluZyQgfCBhc3luYykgPT09IHRydWVcIlxuICAgIFtjdWx0dXJlc109XCJjdWx0dXJlc1wiXG4gICAgW2xvZ29dPVwibG9nb1wiXG4gICAgW2FjdGlvbnNdPVwiYWN0aW9uc1wiXG4gICAgW3VzZXJNZW51XT1cInVzZXJNZW51XCJcbiAgICBbcHJvZHVjdFN3aXRjaGVyXT1cInByb2R1Y3RTd2l0Y2hlclwiXG4gICAgW3N1YnRpdGxlXT1cInN1YnRpdGxlXCJcbiAgICBbaXNTZXJ2aWNlRGVza109XCJpc1NlcnZpY2VEZXNrXCJcbiAgICBbc2lkZU1lbnVUZW1wbGF0ZV09XCJRdWlja0FjY2Vzc1RlbXBsYXRlXCJcbiAgICBbcHJvZHVjdE1lbnVJdGVtczFdPVwicHJvZHVjdE1lbnVJdGVtczFcIlxuICAgIFtpc09wZW5RdWlja0FjY2Vzc109XCJpc09wZW5RdWlja0FjY2Vzc1wiXG4gICAgKGlzT3BlblF1aWNrQWNjZXNzQ2hhbmdlZCk9XCJpc09wZW5RdWlja0FjY2VzcyA9ICRldmVudFwiXG4gICAgKGN1bHR1cmVDaGFuZ2VkKT1cIm9uQ3VsdHVyZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgKG5vdGlmaWNhdGlvblZpZXdlZCk9XCJvbk5vdGlmaWNhdGlvbkl0ZW1WaWV3ZWQoJGV2ZW50KVwiXG4gICAgKG5vdGlmaWF0aW9uQWN0aW9uQ2xpY2spPVwib25Ob3RpZmljYXRpb25BY3Rpb24oJGV2ZW50KVwiXG4gICAgKHJlbW92ZU5vdGlmaWNhdGlvbik9XCJvblJlbW92ZU5vdGlmaWNhdGlvbnMoJGV2ZW50KVwiXG4gICAgKG5vdGlmaWNhdGlvbkxvYWRNb3JlKT1cIm9uTm90aWZpY2F0aW9uTG9hZE1vcmUoKVwiXG4gICAgKG9wZW5Ob3RpZmljYXRpb25QYW5lbCk9XCJvbkhhbmRsZU9wZW5Ob3RpZmljYXRpb25QYW5lbCgpXCJcbj5cbjwvYnQtYmFyc2Etc2hlbGxiYXI+XG59IH0gfSB9IEBlbHNlIHsgQGlmIChub3RpZmljYXRpb25zQ291bnQkIHwgYXN5bmM7IGFzIG5vdGlmaWNhdGlvbkNvdW50KSB7XG48YnQtYmFyc2Etc2hlbGxiYXJcbiAgICBbY2xhc3Muc2VydmljZS1kZXNrXT1cImlzU2VydmljZURlc2tcIlxuICAgIFtjc3NVcmxdPVwiJydcIlxuICAgIFtjc3NWYXJpYWJsZVVybF09XCInJ1wiXG4gICAgW2Nzc0N1c3RvbVVyXT1cIicnXCJcbiAgICBbdXNlckxvZ2dlZEluXT1cImZhbHNlXCJcbiAgICBbbXVsdGlMYW5ndWFnZXNdPVwibXVsdGlMYW5ndWFnZXNcIlxuICAgIFt1c2VyTWVudV09XCJ1c2VyTWVudVwiXG4gICAgW2xvZ29dPVwibG9nb1wiXG4gICAgW3Byb2R1Y3RNZW51SXRlbXMxXT1cInByb2R1Y3RNZW51SXRlbXMxXCJcbiAgICBbZGV2aWNlU2l6ZV09XCIoZGV2aWNlU2l6ZSQgfCBhc3luYykhIVwiXG4gICAgW3NoZWxsYmFyRGF0YV09XCJzaGVsbGJhckRhdGFcIlxuICAgIFtjdWx0dXJlc109XCJjdWx0dXJlc1wiXG4gICAgW2xvZ29dPVwibG9nb1wiXG4gICAgW2lzTW9iaWxlXT1cImlzTW9iaWxlXCJcbiAgICBbaXNUYWJsZXRdPVwiaXNUYWJsZXRcIlxuICAgIFtpc0Rlc2t0b3BdPVwiaXNEZXNrdG9wXCJcbiAgICBbaXNTZXJ2aWNlRGVza109XCJpc1NlcnZpY2VEZXNrXCJcbiAgICBbYWN0aW9uc109XCJhY3Rpb25zXCJcbiAgICBbdXNlck1lbnVdPVwidXNlck1lbnVcIlxuICAgIFtwcm9kdWN0TWVudUNvbnRyb2xdPVwicHJvZHVjdE1lbnVDb250cm9sXCJcbiAgICBbcHJvZHVjdFN3aXRjaGVyXT1cInByb2R1Y3RTd2l0Y2hlclwiXG4gICAgW3N1YnRpdGxlXT1cInN1YnRpdGxlXCJcbiAgICBbc2V0dGluZ3NdPVwic2V0dGluZ3NcIlxuICAgIFtub3RpZmljYXRpb25Db3VudF09XCJ7IHVucmVhZDogMCwgYWxsOiAwIH1cIlxuICAgIFtub3RpZmljYXRpb25zXT1cIltdXCJcbiAgICBbbm90aWZjYXRpb25Mb2FkZWRdPVwidHJ1ZVwiXG4gICAgW25vdGlmaWNhdGlvbkxvYWRpbmddPVwiZmFsc2VcIlxuICAgIFtoaWRlU2hlbGxiYXJBY3Rpb25zXT1cInRydWVcIlxuICAgIFtzaG93RXh0cmFCdXR0b25dPVwidHJ1ZVwiXG4gICAgW2N1bHR1cmVzXT1cImN1bHR1cmVzXCJcbiAgICBbcHJvZHVjdE1lbnVJdGVtczFdPVwicHJvZHVjdE1lbnVJdGVtczFcIlxuICAgIChjdWx0dXJlQ2hhbmdlZCk9XCJvbkN1bHR1cmVDaGFuZ2VkKCRldmVudClcIlxuPlxuICAgIEBmb3IoYnRuIG9mIHVzZXJNZW51O3RyYWNrIGJ0bil7XG4gICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImV4dHJhX2J0blwiXG4gICAgICAgIGZkLWJ1dHRvblxuICAgICAgICBbbGFiZWxdPVwiYnRuLnRleHRcIlxuICAgICAgICBbZ2x5cGhdPVwiYnRuLnRleHQgPT09ICgnTG9naW4nIHwgYmJiVHJhbnNsYXRlKSA/ICdwZXJzb24tcGxhY2Vob2xkZXInIDogbnVsbFwiXG4gICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAoY2xpY2spPVwiYnRuLmNhbGxiYWNrKClcIlxuICAgID48L2J1dHRvbj5cbiAgICB9XG48L2J0LWJhcnNhLXNoZWxsYmFyPlxufSB9XG48bmctdGVtcGxhdGUgI1F1aWNrQWNjZXNzVGVtcGxhdGU+XG4gICAgQGlmICgobm90aWZpY2F0aW9uTG9hZGluZyQgfCBhc3luYykgPT09IHRydWUpIHtcbiAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBoZWlnaHQ6IDEwMHB4XCI+XG4gICAgICAgIDxic3UtbWFzayBzaXplPVwic1wiPjwvYnN1LW1hc2s+XG4gICAgPC9kaXY+XG4gICAgfVxuICAgIDxibnJjLXJlcG9ydC1jb250YWluZXIgKm5nSWY9XCJzaWRlYmFyU2V0dGluZ3NcIiBbc2V0dGluZ3NdPVwic2lkZWJhclNldHRpbmdzXCI+IDwvYm5yYy1yZXBvcnQtY29udGFpbmVyPlxuICAgIDwhLS0gPGJ0LXBvcG92ZXItYXBwLWZpbmRlciAoY2xvc2VNZW51KT1cImlzT3BlblF1aWNrQWNjZXNzID0gZmFsc2VcIj48L2J0LXBvcG92ZXItYXBwLWZpbmRlcj4gLS0+XG48L25nLXRlbXBsYXRlPlxuIl19
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGxiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtdGlsZXMvc3JjL2xpYi9zaGVsbGJhci9zaGVsbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3NoZWxsYmFyL3NoZWxsYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUNILGlCQUFpQixFQUtwQixNQUFNLHVCQUF1QixDQUFDO0FBRy9CLE9BQU8sRUFDSCxhQUFhLEVBQ2IsUUFBUSxFQU1SLFdBQVcsRUFNWCxpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNwQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7QUF1QjlCLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxhQUFhO0lBbUNoRCxJQUFJLGlCQUFpQjtRQUNqQixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO0lBQ3JELENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3JCLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsY0FB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c0JBQWpFLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUN1QixvQkFBb0I7c0JBQTFGLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBJbmplY3QsXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBtYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBDb21ib2JveENvbXBvbmVudCxcbiAgICBQb3BvdmVyQ29tcG9uZW50LFxuICAgIFByb2R1Y3RTd2l0Y2hJdGVtLFxuICAgIFNoZWxsYmFyTWVudUl0ZW0sXG4gICAgU2hlbGxiYXJVc2VyXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQge1xuICAgIEJhc2VDb21wb25lbnQsXG4gICAgQmFyc2FBcGksXG4gICAgTWV0YW9iamVjdERhdGFNb2RlbCxcbiAgICBGaWxlUGljdHVyZUluZm9Nb2RlbCxcbiAgICBNb0ZvclJlcG9ydE1vZGVsLFxuICAgIFBvcnRhbFNlcnZpY2UsXG4gICAgQnJlYWRjcnVtYlNlcnZpY2UsXG4gICAgQVBQX1ZFUlNJT04sXG4gICAgTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBOb3RpZmljYXRpb25JdGVtLFxuICAgIE5vdGlmaWNhdGlvbkFjdGlvbixcbiAgICBCYmJUcmFuc2xhdGVQaXBlLFxuICAgIEFiYnJldmF0aW9uRGV2aWNlU2l6ZSxcbiAgICBnZXREZXZpY2VJc01vYmlsZSxcbiAgICBnZXREZXZpY2VJc0Rlc2t0b3AsXG4gICAgZ2V0RGV2aWNlSXNUYWJsZXRcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuXG5pbXBvcnQgeyBUaWxlc1NlcnZpY2UgfSBmcm9tICcuLi90aWxlcy5zZXJ2aWNlJztcblxuaW50ZXJmYWNlIFNoZWxsYmFyU2V0dGluZyBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xuICAgIENzc1N0eWxlczogc3RyaW5nO1xuICAgIHN1YnRpdGxlOiBzdHJpbmc7XG4gICAgY2FsY1N1YnRpdGxlOiBzdHJpbmc7XG4gICAgbG9nbzogRmlsZVBpY3R1cmVJbmZvTW9kZWw7XG4gICAgUHJvZHVjdFN3aXRjaEl0ZW1zOiBNb0ZvclJlcG9ydE1vZGVsO1xuICAgIFByb2R1Y3RNZW51SXRlbXM6IE1vRm9yUmVwb3J0TW9kZWw7XG4gICAgVXNlck1lbnVJdGVtczogTW9Gb3JSZXBvcnRNb2RlbDtcbiAgICBBY3Rpb25JdGVtczogTW9Gb3JSZXBvcnRNb2RlbDtcbiAgICBTaWRlYmFyUmVwb3J0OiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIFByb2ZpbGVJbWFnZVJlcG9ydDogTWV0YW9iamVjdERhdGFNb2RlbDtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdidC1zaGVsbGJhcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NoZWxsYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zaGVsbGJhci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNoZWxsYmFyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZChDb21ib2JveENvbXBvbmVudCkgY29tYm9ib3hDb21wb25lbnQ6IENvbWJvYm94Q29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ3BvcG92ZXJDb21wb25lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcG9wb3ZlckNvbXBvbmVudDogUG9wb3ZlckNvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdub3RpZmljYXRpb25zRGlhbG9nJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pIF9ub3RpZmljYXRpb25zRGlhbG9nOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHNoZWxsYmFyRGF0YTogU2hlbGxiYXJTZXR0aW5nO1xuICAgIHNldHRpbmdzOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIGlzT3Blbk5vdGlmaWNhdG9pbiA9IGZhbHNlO1xuICAgIGRldmljZVNpemUkOiBPYnNlcnZhYmxlPEFiYnJldmF0aW9uRGV2aWNlU2l6ZT47XG4gICAgcHJvZHVjdE1lbnVDb250cm9sOiBzdHJpbmc7XG4gICAgdXNlcjogU2hlbGxiYXJVc2VyID0ge1xuICAgICAgICBpbml0aWFsczogJ1dXJyxcbiAgICAgICAgY29sb3JBY2NlbnQ6IDFcbiAgICB9O1xuXG4gICAgcHJvZHVjdE1lbnVJdGVtczE6IFNoZWxsYmFyTWVudUl0ZW1bXTtcbiAgICB1c2VyTG9nZ2VkSW4kOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGNzc1VybCQ6IE9ic2VydmFibGU8U2FmZVJlc291cmNlVXJsIHwgbnVsbD47XG4gICAgY3NzVmFyaWFibGVVcmwkOiBPYnNlcnZhYmxlPFNhZmVSZXNvdXJjZVVybCB8IG51bGw+O1xuICAgIGNzc0N1c3RvbVVybCQ6IE9ic2VydmFibGU8U2FmZVJlc291cmNlVXJsIHwgbnVsbD47XG4gICAgY3VsdHVyZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgbm90aWZpY2F0aW9uc0NvdW50JDogT2JzZXJ2YWJsZTx7IHVucmVhZDogbnVtYmVyOyBhbGw6IG51bWJlciB9PjtcbiAgICBub3RpZmljYXRpb25zJDogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25JdGVtW10+O1xuICAgIG5vdGlmaWNhdGlvbkxvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIG5vdGlmY2F0aW9uTG9hZGVkID0gZmFsc2U7XG4gICAgbm90aWZpYXRpb25Db3VudExvYWRlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgX3ZpZXdlZE5vdGlmaWNhdGlvbnMkID0gbmV3IFN1YmplY3Q8Tm90aWZpY2F0aW9uSXRlbT4oKTtcbiAgICBfdmlld2VkTm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uSXRlbVtdID0gW107XG4gICAgYm9keUNsaWNrID0gJzskKFwiYm9keVwiKS5jbGljaygpJztcbiAgICBpc01vYmlsZSA9IGdldERldmljZUlzTW9iaWxlKCk7XG4gICAgaXNEZXNrdG9wID0gZ2V0RGV2aWNlSXNEZXNrdG9wKCk7XG4gICAgaXNUYWJsZXQgPSBnZXREZXZpY2VJc1RhYmxldCgpO1xuICAgIGxvZ2luUm91dGVyTGluayQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICBpc1NlcnZpY2VEZXNrID0gZmFsc2U7XG4gICAgaXNPcGVuUXVpY2tBY2Nlc3MgPSBmYWxzZTtcbiAgICB1c2VyUHJvZmlsZUltYWdlVXJsJDogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPjtcbiAgICBnZXQgcmVwSWRQcm9maWxlSW1hZ2UoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hlbGxiYXJEYXRhPy5Qcm9maWxlSW1hZ2VSZXBvcnQ/LklkO1xuICAgIH1cbiAgICBnZXQgc3VidGl0bGUoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLnNoZWxsYmFyRGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9wb3J0YWxTZXJ2aWNlLmRldmljZVNpemUgPT09ICdzJyAmJiB0aGlzLnNoZWxsYmFyRGF0YS5Nb2JpbGVTdWJ0aXRsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2hlbGxiYXJEYXRhLk1vYmlsZVN1YnRpdGxlXG4gICAgICAgICAgICAgICAgPyBgJHt0aGlzLnNoZWxsYmFyRGF0YS5Nb2JpbGVTdWJ0aXRsZX0gJHtcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy5zaGVsbGJhckRhdGE/LmNhbGNTdWJ0aXRsZSA9PT0gJ3N0cmluZycgPyB0aGlzLnNoZWxsYmFyRGF0YS5jYWxjU3VidGl0bGUgOiAnJ1xuICAgICAgICAgICAgICAgICAgfWBcbiAgICAgICAgICAgICAgICA6ICcnO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNoZWxsYmFyRGF0YS5TdWJ0aXRsZVxuICAgICAgICAgICAgPyBgJHt0aGlzLnNoZWxsYmFyRGF0YT8uU3VidGl0bGV9ICR7XG4gICAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy5zaGVsbGJhckRhdGE/LmNhbGNTdWJ0aXRsZSA9PT0gJ3N0cmluZycgPyB0aGlzLnNoZWxsYmFyRGF0YS5jYWxjU3VidGl0bGUgOiAnJ1xuICAgICAgICAgICAgICB9YFxuICAgICAgICAgICAgOiAnJztcbiAgICB9XG4gICAgZ2V0IGxvZ28oKTogeyBGaWxlSWQ6IHN0cmluZyB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2hlbGxiYXJEYXRhPy5Mb2dvO1xuICAgIH1cbiAgICBnZXQgY3NzU3R5bGVzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnNoZWxsYmFyRGF0YT8uQ3NzU3R5bGVzO1xuICAgIH1cbiAgICBnZXQgYWN0aW9ucygpOiBBcnJheTxNZXRhb2JqZWN0RGF0YU1vZGVsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNldHRpbmdzPy5IaWRlVXNlck1lbnUgPyBbXSA6IHRoaXMuc2hlbGxiYXJEYXRhPy5BY3Rpb25JdGVtcz8uTW9EYXRhTGlzdCA/PyBbXTtcbiAgICB9XG4gICAgZ2V0IHNpZGViYXJTZXR0aW5ncygpOiBudWxsIHwgYW55IHtcbiAgICAgICAgaWYgKCF0aGlzLnNoZWxsYmFyRGF0YT8uU2lkZWJhclJlcG9ydD8uSWQpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBSZWxhdGVkUmVwb3J0OiB7IElkOiB0aGlzLnNoZWxsYmFyRGF0YT8uU2lkZWJhclJlcG9ydD8uSWQsICRDYXB0aW9uOiAnJyB9LFxuICAgICAgICAgICAgUm93Q2xpY2s6ICcnLFxuICAgICAgICAgICAgRGF0YU9ubHk6IGZhbHNlXG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldCB1c2VyTWVudSgpOiB7IHRleHQ6IHN0cmluZzsgY2FsbGJhY2s6ICgpID0+IHZvaWQgfVtdIHtcbiAgICAgICAgY29uc3QgbW9EYXRhTGlzdCA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKHRoaXMuc2hlbGxiYXJEYXRhLCAnVXNlck1lbnVJdGVtcy5Nb0RhdGFMaXN0Jyk7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gbW9EYXRhTGlzdCA/IFsuLi5tb0RhdGFMaXN0XSA6IFtdO1xuICAgICAgICBpZiAoIWl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgIGMudGV4dCA9IHRoaXMuX2JiYlRyYW5zbGF0ZVBpcGUudHJhbnNmb3JtKGMudGV4dCk7XG4gICAgICAgICAgICBjLmNhbGxiYWNrID0gbmV3IEZ1bmN0aW9uKGMuQ29kZSArIHRoaXMuYm9keUNsaWNrKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICghdGhpcy5Jc1VzZXJBbm9ueW1vdXMgJiYgdGhpcy5Jc1VzZXJMb2dnZWRJbikge1xuICAgICAgICAgICAgaXRlbXMuc3BsaWNlKDAsIDAsIHsgSWQ6ICctMScsICRDYXB0aW9uOiAnJywgdGV4dDogQmFyc2FBcGkuTG9naW5Gb3JtRGF0YS5Vc2VyRGlzcGxheU5hbWUgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2V0dGluZ3M/LkhpZGVVc2VyTWVudSA/IFtdIDogKGl0ZW1zIGFzIGFueSk7XG4gICAgfVxuICAgIGdldCBwcm9kdWN0U3dpdGNoZXIoKTogUHJvZHVjdFN3aXRjaEl0ZW1bXSB7XG4gICAgICAgIHJldHVybiAodGhpcy5zaGVsbGJhckRhdGE/LlByb2R1Y3RTd2l0Y2hJdGVtcz8uTW9EYXRhTGlzdCA/PyBbXSkgYXMgdW5rbm93biBhcyBQcm9kdWN0U3dpdGNoSXRlbVtdO1xuICAgIH1cbiAgICBnZXQgbXVsdGlMYW5ndWFnZXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNoZWxsYmFyRGF0YT8uTXVsdGlMYW5ndWFnZXM7XG4gICAgfVxuICAgIGdldCBwcm9kdWN0TWVudUl0ZW1zKCk6IFNoZWxsYmFyTWVudUl0ZW1bXSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5zaGVsbGJhckRhdGE/LlByb2R1Y3RNZW51SXRlbXM/Lk1vRGF0YUxpc3QgPz8gW107XG4gICAgICAgIGl0ZW1zLmZvckVhY2goKGMpID0+IChjLmNhbGxiYWNrID0gbmV3IEZ1bmN0aW9uKGMuQ29kZSArIHRoaXMuYm9keUNsaWNrKSkpO1xuICAgICAgICByZXR1cm4gaXRlbXMgYXMgdW5rbm93biBhcyBTaGVsbGJhck1lbnVJdGVtW107XG4gICAgfVxuICAgIGdldCBJc1VzZXJMb2dnZWRJbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuSXNVc2VyTG9nZ2VkSW47XG4gICAgfVxuICAgIGdldCBJc1VzZXJBbm9ueW1vdXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLklzQW5vbnltb3VzO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9iYmJUcmFuc2xhdGVQaXBlOiBCYmJUcmFuc2xhdGVQaXBlLFxuICAgICAgICBwcml2YXRlIF9wb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9icmVhZENydW1iU2VydmljZTogQnJlYWRjcnVtYlNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX3RpbGVzU2VydmljZTogVGlsZXNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9kb21TYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICAgICAgQEluamVjdChBUFBfVkVSU0lPTikgcHVibGljIGFwcFZlcnNpb246IHN0cmluZ1xuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuXG4gICAgICAgIHRoaXMudXNlckxvZ2dlZEluJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UudXNlckxvZ2dlZEluJDtcbiAgICAgICAgdGhpcy5ub3RpZmlhdGlvbkNvdW50TG9hZGVkJCA9IHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uubm90aWZpY2F0aW9uQ291bnRMb2FkZWQkO1xuICAgICAgICB0aGlzLl92aWV3ZWROb3RpZmljYXRpb25zJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIHRhcCgoaXRlbSkgPT4gdGhpcy5fdmlld2VkTm90aWZpY2F0aW9ucy5wdXNoKGl0ZW0pKSxcbiAgICAgICAgICAgICAgICBtYXAoKGl0ZW0pID0+IHRoaXMuX3ZpZXdlZE5vdGlmaWNhdGlvbnMpLFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgyMDAwKSxcbiAgICAgICAgICAgICAgICBtYXAoKGl0ZW1zKSA9PiBpdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uVGFnKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHRhZ3MpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl92aWV3ZWROb3RpZmljYXRpb25zID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5zZXROb3RpZmljYXRpb25WaWV3ZWQodGFncyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgICAgICB0aGlzLmlzU2VydmljZURlc2sgPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLklzU2VydmljZURlc2s7XG5cbiAgICAgICAgdGhpcy5jdWx0dXJlcyA9IEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuQ3VsdHVyZXM7XG4gICAgICAgIHRoaXMuY3NzVXJsJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UuY3NzVXJsJDtcbiAgICAgICAgdGhpcy5jc3NWYXJpYWJsZVVybCQgPSB0aGlzLl9wb3J0YWxTZXJ2aWNlLmNzc1ZhcmlhYmxlVXJsJDtcbiAgICAgICAgdGhpcy5jc3NDdXN0b21VcmwkID0gdGhpcy5fcG9ydGFsU2VydmljZS5jc3NDdXN0b21VcmwkO1xuICAgICAgICB0aGlzLmxvZ2luUm91dGVyTGluayQgPSB0aGlzLl9wb3J0YWxTZXJ2aWNlLmxvZ2luUm91dGUkO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNDb3VudCQgPSB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLm5vdGlmaWNhdGlvbkNvdW50JDtcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5ub3RpZmljYXRpb25Db3VudCQuc3Vic2NyaWJlKCgpID0+IHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCkpO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkxvYWRpbmckID0gdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5ub3RpZmljYXRpb25Mb2FkaW5nJDtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zJCA9IHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2Uubm90aWZpY2F0aW9ucyQucGlwZShcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSxcbiAgICAgICAgICAgIG1hcCgobm90aWZpY2F0aW9ucykgPT4gdGhpcy5fbWFwTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25zKSlcbiAgICAgICAgKTtcbiAgICAgICAgQmFyc2FBcGkuQncuU2V0VXNlclBvcnRhbFNldHRpbmdzID0gKHVzZXJQb3J0YWxTZXR0aW5nczogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZS5zZXRVc2VyUG9ydGFsU2V0dGluZ3ModXNlclBvcnRhbFNldHRpbmdzKTtcbiAgICAgICAgfTtcbiAgICAgICAgQmFyc2FBcGkuQncuU2V0U2hlbGxiYXJTdWJ0aXRsZSA9IChjYWxjU3VidGl0bGU6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgdGhpcy5zaGVsbGJhckRhdGEuY2FsY1N1YnRpdGxlID0gY2FsY1N1YnRpdGxlO1xuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5kZXZpY2VTaXplJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UuZGV2aWNlU2l6ZSQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpO1xuXG4gICAgICAgIHRoaXMuX2JyZWFkQ3J1bWJTZXJ2aWNlLmJyZWFkY3J1bWJzJC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKChicmVhZENydW1icykgPT4ge1xuICAgICAgICAgICAgaWYgKGJyZWFkQ3J1bWJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RNZW51Q29udHJvbCA9IGJyZWFkQ3J1bWJzW2JyZWFkQ3J1bWJzLmxlbmd0aCAtIDFdLmxhYmVsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudXNlclByb2ZpbGVJbWFnZVVybCQgPSB0aGlzLl90aWxlc1NlcnZpY2UudXNlclByb2ZpbGVJbWFnZVVybCQ7XG4gICAgICAgIHRoaXMuX3RpbGVzU2VydmljZS5zaGVsbGJhciQucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgobW8pID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hlbGxiYXJEYXRhID0gbW8gYXMgU2hlbGxiYXJTZXR0aW5nO1xuICAgICAgICAgICAgaWYgKHRoaXMuSXNVc2VyTG9nZ2VkSW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl90aWxlc1NlcnZpY2UubG9hZFVzZXJQcm9maWxlSW1hZ2UodGhpcy5yZXBJZFByb2ZpbGVJbWFnZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICBmb3JrSm9pbihbb2YodGhpcy5wcm9kdWN0TWVudUl0ZW1zKSwgb2YoW10pXSkgLy8gdG8gYXBwZW5kIHVzZXIgZGVmaW5lZFxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICAgICAgICAgIG1hcCgoW3MxLCBzMl0pID0+IFsuLi5zMSwgLi4uczJdKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdE1lbnVJdGVtczEgPSBjO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuc2V0dGluZ3M/LkFsbG93QW5vbnltb3VzKSB7XG4gICAgICAgICAgICB0aGlzLl90aWxlc1NlcnZpY2UubG9hZFNoZWxsYmFyKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZS51c2VyTG9nZ2VkSW4kLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKGxvZ2dlZEluKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWxvZ2dlZEluKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fdGlsZXNTZXJ2aWNlLmxvYWRTaGVsbGJhcigpO1xuICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uU2VydmljZS5sb2FkVW5yZWFkTm90aWZpY2F0aW9uQ291bnQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25DdWx0dXJlQ2hhbmdlKGN1bHR1cmUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2hhbmdlQ3VsdHVyZShjdWx0dXJlKTtcbiAgICB9XG4gICAgb25TaG93Tm90aWZpY2F0aW9uKGU6IHsgdGFnOiBzdHJpbmc7IG1vOiBNZXRhb2JqZWN0RGF0YU1vZGVsOyBuYW1hOiBzdHJpbmcgfSk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzT3Blbk5vdGlmaWNhdG9pbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLlNob3dOb3RpZmljYXRpb25SZWxhdGVkTW8oZSk7XG4gICAgfVxuICAgIG9uTm90aWZpY2F0aW9uSXRlbVZpZXdlZCh2aWV3ZWRNbzogTm90aWZpY2F0aW9uSXRlbSk6IHZvaWQge1xuICAgICAgICB0aGlzLl92aWV3ZWROb3RpZmljYXRpb25zJC5uZXh0KHZpZXdlZE1vKTtcbiAgICB9XG5cbiAgICBvblJlbW92ZU5vdGlmaWNhdGlvbnMoZTogeyBpdGVtczogTWV0YW9iamVjdERhdGFNb2RlbFtdOyBzaWxlbnQ6IGJvb2xlYW4gfSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLnJlbW92ZU5vdGlmaWNhdGlvbihlLml0ZW1zKTtcbiAgICB9XG4gICAgb25PcGVuTm90aWZpY2F0aW9uID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLmlzT3Blbk5vdGlmaWNhdG9pbiA9IHRydWU7XG4gICAgICAgIHRoaXMuX2hhbmRsZU9wZW5Ob3RpZmljYXRpb25QYW5lbCgpO1xuICAgIH07XG4gICAgb25Ob3RpZmljYXRpb25BY3Rpb24oZTogeyBpdGVtOiBOb3RpZmljYXRpb25JdGVtOyBidG46IE5vdGlmaWNhdGlvbkFjdGlvbiB9KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3BvcnRhbFNlcnZpY2UuRXhlY3V0ZU5vdGlmaWNhdGlvbkFjdGlvbihlLml0ZW0uVGFnLCBlLmJ0bi5UaXRsZSk7XG4gICAgfVxuICAgIG9uQ3VsdHVyZUNoYW5nZWQgPSAoY3VsdHVyZTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuX2NoYW5nZUN1bHR1cmUoY3VsdHVyZSk7XG4gICAgfTtcbiAgICBvbk5vdGlmaWNhdGlvbkxvYWRNb3JlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25TZXJ2aWNlLmxvYWRNb3JlKCk7XG4gICAgfVxuICAgIG9uTm90aWZpY2F0aW9uV29ya2Zsb3dDaG9pY2VTdWNjZXNzKHJlc3VsdCk6IHZvaWQge31cbiAgICBvbk5vdGlmaWNhdGlvbldvcmtmbG93Q2hvaWNlRmFpbGVkKGVycik6IHZvaWQge31cblxuICAgIG9uSGFuZGxlT3Blbk5vdGlmaWNhdGlvblBhbmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9oYW5kbGVPcGVuTm90aWZpY2F0aW9uUGFuZWwoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9oYW5kbGVPcGVuTm90aWZpY2F0aW9uUGFuZWwoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5vdGlmY2F0aW9uTG9hZGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ub3RpZmNhdGlvbkxvYWRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvblNlcnZpY2UubG9hZE5vdGlmaWNhdGlvbnMoKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfbWFwTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25zKTogTm90aWZpY2F0aW9uSXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIG5vdGlmaWNhdGlvbnMubWFwKChub3RpZmljYXRpb24pID0+ICh7XG4gICAgICAgICAgICAuLi5ub3RpZmljYXRpb24sXG4gICAgICAgICAgICBjb250ZW50U2FmZUh0bWw6IG5vdGlmaWNhdGlvbi5Db250ZW50XG4gICAgICAgICAgICAgICAgPyB0aGlzLl9kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwobm90aWZpY2F0aW9uLkNvbnRlbnQpXG4gICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICB9KSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2NoYW5nZUN1bHR1cmUoY3VsdHVyZTogc3RyaW5nIC8qIGN1bHR1cmUgc2FtcGxlIDpFbmdsaXNoICovKTogdm9pZCB7XG4gICAgICAgIEJhcnNhQXBpLkJ3LlNldEN1bHR1cmVCeURpc3BsYXlOYW1lKGN1bHR1cmUpO1xuICAgICAgICBCYXJzYUFwaS5Cdy5OYXZpZ2F0ZVRvKCcvJyk7XG4gICAgfVxufVxuIiwiQGlmICh1c2VyTG9nZ2VkSW4kIHwgYXN5bmM7IGFzIHVzZXJsb2dnZW5kKSB7IEBpZiAobm90aWZpYXRpb25Db3VudExvYWRlZCQgfCBhc3luYzsgYXMgbm90aWZpYXRpb25Db3VudExvYWRlZCkgeyBAaWZcbihkZXZpY2VTaXplJCB8IGFzeW5jOyBhcyBkZXZpY2VTaXplKSB7IEBpZiAoc2hlbGxiYXJEYXRhKSB7XG48YnQtYmFyc2Etc2hlbGxiYXJcbiAgICBbY2xhc3Muc2VydmljZS1kZXNrXT1cImlzU2VydmljZURlc2tcIlxuICAgIFtjc3NVcmxdPVwiY3NzVXJsJCB8IGFzeW5jXCJcbiAgICBbY3NzVmFyaWFibGVVcmxdPVwiY3NzVmFyaWFibGVVcmwkIHwgYXN5bmNcIlxuICAgIFt1c2VyUHJvZmlsZUltYWdlVXJsXT1cInVzZXJQcm9maWxlSW1hZ2VVcmwkIHwgYXN5bmNcIlxuICAgIFtjc3NDdXN0b21VcmxdPVwiY3NzQ3VzdG9tVXJsJCB8IGFzeW5jXCJcbiAgICBbdXNlckxvZ2dlZEluXT1cInRydWVcIlxuICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgIFtzaGVsbGJhckRhdGFdPVwic2hlbGxiYXJEYXRhXCJcbiAgICBbY3NzU3R5bGVdPVwiY3NzU3R5bGVzXCJcbiAgICBbcHJvZHVjdE1lbnVDb250cm9sXT1cInByb2R1Y3RNZW51Q29udHJvbFwiXG4gICAgW3NldHRpbmdzXT1cInNldHRpbmdzXCJcbiAgICBbaXNNb2JpbGVdPVwiaXNNb2JpbGVcIlxuICAgIFtpc1RhYmxldF09XCJpc1RhYmxldFwiXG4gICAgW2lzRGVza3RvcF09XCJpc0Rlc2t0b3BcIlxuICAgIFttdWx0aUxhbmd1YWdlc109XCJtdWx0aUxhbmd1YWdlc1wiXG4gICAgW25vdGlmaWNhdGlvbkNvdW50XT1cIihub3RpZmljYXRpb25zQ291bnQkIHwgYXN5bmMpISFcIlxuICAgIFtub3RpZmljYXRpb25zXT1cIihub3RpZmljYXRpb25zJCB8IGFzeW5jKSA/PyBbXVwiXG4gICAgW25vdGlmY2F0aW9uTG9hZGVkXT1cIm5vdGlmY2F0aW9uTG9hZGVkXCJcbiAgICBbbm90aWZpY2F0aW9uTG9hZGluZ109XCIobm90aWZpY2F0aW9uTG9hZGluZyQgfCBhc3luYykgPT09IHRydWVcIlxuICAgIFtjdWx0dXJlc109XCJjdWx0dXJlc1wiXG4gICAgW2xvZ29dPVwibG9nb1wiXG4gICAgW2FjdGlvbnNdPVwiYWN0aW9uc1wiXG4gICAgW3VzZXJNZW51XT1cInVzZXJNZW51XCJcbiAgICBbcHJvZHVjdFN3aXRjaGVyXT1cInByb2R1Y3RTd2l0Y2hlclwiXG4gICAgW3N1YnRpdGxlXT1cInN1YnRpdGxlXCJcbiAgICBbaXNTZXJ2aWNlRGVza109XCJpc1NlcnZpY2VEZXNrXCJcbiAgICBbc2lkZU1lbnVUZW1wbGF0ZV09XCJRdWlja0FjY2Vzc1RlbXBsYXRlXCJcbiAgICBbcHJvZHVjdE1lbnVJdGVtczFdPVwicHJvZHVjdE1lbnVJdGVtczFcIlxuICAgIFtpc09wZW5RdWlja0FjY2Vzc109XCJpc09wZW5RdWlja0FjY2Vzc1wiXG4gICAgKGlzT3BlblF1aWNrQWNjZXNzQ2hhbmdlZCk9XCJpc09wZW5RdWlja0FjY2VzcyA9ICRldmVudFwiXG4gICAgKGN1bHR1cmVDaGFuZ2VkKT1cIm9uQ3VsdHVyZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgKG5vdGlmaWNhdGlvblZpZXdlZCk9XCJvbk5vdGlmaWNhdGlvbkl0ZW1WaWV3ZWQoJGV2ZW50KVwiXG4gICAgKG5vdGlmaWF0aW9uQWN0aW9uQ2xpY2spPVwib25Ob3RpZmljYXRpb25BY3Rpb24oJGV2ZW50KVwiXG4gICAgKHJlbW92ZU5vdGlmaWNhdGlvbik9XCJvblJlbW92ZU5vdGlmaWNhdGlvbnMoJGV2ZW50KVwiXG4gICAgKG5vdGlmaWNhdGlvbkxvYWRNb3JlKT1cIm9uTm90aWZpY2F0aW9uTG9hZE1vcmUoKVwiXG4gICAgKG9wZW5Ob3RpZmljYXRpb25QYW5lbCk9XCJvbkhhbmRsZU9wZW5Ob3RpZmljYXRpb25QYW5lbCgpXCJcbj5cbjwvYnQtYmFyc2Etc2hlbGxiYXI+XG59IH0gfSB9IEBlbHNlIHsgQGlmIChub3RpZmljYXRpb25zQ291bnQkIHwgYXN5bmM7IGFzIG5vdGlmaWNhdGlvbkNvdW50KSB7XG48YnQtYmFyc2Etc2hlbGxiYXJcbiAgICBbY2xhc3Muc2VydmljZS1kZXNrXT1cImlzU2VydmljZURlc2tcIlxuICAgIFtjc3NVcmxdPVwiJydcIlxuICAgIFtjc3NTdHlsZV09XCJjc3NTdHlsZXNcIlxuICAgIFtjc3NWYXJpYWJsZVVybF09XCInJ1wiXG4gICAgW2Nzc0N1c3RvbVVyXT1cIicnXCJcbiAgICBbdXNlckxvZ2dlZEluXT1cImZhbHNlXCJcbiAgICBbbXVsdGlMYW5ndWFnZXNdPVwibXVsdGlMYW5ndWFnZXNcIlxuICAgIFt1c2VyTWVudV09XCJ1c2VyTWVudVwiXG4gICAgW2xvZ29dPVwibG9nb1wiXG4gICAgW3Byb2R1Y3RNZW51SXRlbXMxXT1cInByb2R1Y3RNZW51SXRlbXMxXCJcbiAgICBbZGV2aWNlU2l6ZV09XCIoZGV2aWNlU2l6ZSQgfCBhc3luYykhIVwiXG4gICAgW3NoZWxsYmFyRGF0YV09XCJzaGVsbGJhckRhdGFcIlxuICAgIFtjdWx0dXJlc109XCJjdWx0dXJlc1wiXG4gICAgW2xvZ29dPVwibG9nb1wiXG4gICAgW2lzTW9iaWxlXT1cImlzTW9iaWxlXCJcbiAgICBbaXNUYWJsZXRdPVwiaXNUYWJsZXRcIlxuICAgIFtpc0Rlc2t0b3BdPVwiaXNEZXNrdG9wXCJcbiAgICBbaXNTZXJ2aWNlRGVza109XCJpc1NlcnZpY2VEZXNrXCJcbiAgICBbYWN0aW9uc109XCJhY3Rpb25zXCJcbiAgICBbdXNlck1lbnVdPVwidXNlck1lbnVcIlxuICAgIFtwcm9kdWN0TWVudUNvbnRyb2xdPVwicHJvZHVjdE1lbnVDb250cm9sXCJcbiAgICBbcHJvZHVjdFN3aXRjaGVyXT1cInByb2R1Y3RTd2l0Y2hlclwiXG4gICAgW3N1YnRpdGxlXT1cInN1YnRpdGxlXCJcbiAgICBbc2V0dGluZ3NdPVwic2V0dGluZ3NcIlxuICAgIFtub3RpZmljYXRpb25Db3VudF09XCJ7IHVucmVhZDogMCwgYWxsOiAwIH1cIlxuICAgIFtub3RpZmljYXRpb25zXT1cIltdXCJcbiAgICBbbm90aWZjYXRpb25Mb2FkZWRdPVwidHJ1ZVwiXG4gICAgW25vdGlmaWNhdGlvbkxvYWRpbmddPVwiZmFsc2VcIlxuICAgIFtoaWRlU2hlbGxiYXJBY3Rpb25zXT1cInRydWVcIlxuICAgIFtzaG93RXh0cmFCdXR0b25dPVwidHJ1ZVwiXG4gICAgW2N1bHR1cmVzXT1cImN1bHR1cmVzXCJcbiAgICBbcHJvZHVjdE1lbnVJdGVtczFdPVwicHJvZHVjdE1lbnVJdGVtczFcIlxuICAgIChjdWx0dXJlQ2hhbmdlZCk9XCJvbkN1bHR1cmVDaGFuZ2VkKCRldmVudClcIlxuPlxuICAgIEBmb3IoYnRuIG9mIHVzZXJNZW51O3RyYWNrIGJ0bil7XG4gICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cImV4dHJhX2J0blwiXG4gICAgICAgIGZkLWJ1dHRvblxuICAgICAgICBbbGFiZWxdPVwiYnRuLnRleHRcIlxuICAgICAgICBbZ2x5cGhdPVwiYnRuLnRleHQgPT09ICgnTG9naW4nIHwgYmJiVHJhbnNsYXRlKSA/ICdwZXJzb24tcGxhY2Vob2xkZXInIDogbnVsbFwiXG4gICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAoY2xpY2spPVwiYnRuLmNhbGxiYWNrKClcIlxuICAgID48L2J1dHRvbj5cbiAgICB9XG48L2J0LWJhcnNhLXNoZWxsYmFyPlxufSB9XG48bmctdGVtcGxhdGUgI1F1aWNrQWNjZXNzVGVtcGxhdGU+XG4gICAgQGlmICgobm90aWZpY2F0aW9uTG9hZGluZyQgfCBhc3luYykgPT09IHRydWUpIHtcbiAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBoZWlnaHQ6IDEwMHB4XCI+XG4gICAgICAgIDxic3UtbWFzayBzaXplPVwic1wiPjwvYnN1LW1hc2s+XG4gICAgPC9kaXY+XG4gICAgfVxuICAgIDxibnJjLXJlcG9ydC1jb250YWluZXIgKm5nSWY9XCJzaWRlYmFyU2V0dGluZ3NcIiBbc2V0dGluZ3NdPVwic2lkZWJhclNldHRpbmdzXCI+IDwvYm5yYy1yZXBvcnQtY29udGFpbmVyPlxuICAgIDwhLS0gPGJ0LXBvcG92ZXItYXBwLWZpbmRlciAoY2xvc2VNZW51KT1cImlzT3BlblF1aWNrQWNjZXNzID0gZmFsc2VcIj48L2J0LXBvcG92ZXItYXBwLWZpbmRlcj4gLS0+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -125,11 +125,11 @@ export class TilesViewerComponent extends BaseComponent {
125
125
  }
126
126
  }
127
127
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TilesViewerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SaveScrollPositionService }], target: i0.ɵɵFactoryTarget.Component }); }
128
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: TilesViewerComponent, selector: "bt-tiles-viewer", inputs: { appTileGroups: "appTileGroups", loading: "loading", edit: "edit", rtl: "rtl", defaultTab: "defaultTab", stackContent: "stackContent", deviceSize: "deviceSize", selectedAppGroupId: "selectedAppGroupId", DynamicComponents: "DynamicComponents" }, outputs: { stackContentChange: "stackContentChange", closeEditHome: "closeEditHome", save: "save", listDropped: "listDropped", tabChanged: "tabChanged", toggleGroup: "toggleGroup", resetGroup: "resetGroup", deleteGroup: "deleteGroup", hideAppTileClick: "hideAppTileClick", renameAppTileClick: "renameAppTileClick", tilesDropped: "tilesDropped" }, host: { properties: { "class.page-content": "this.pageContentClass", "attr.rtl": "this._rtl" } }, viewQueries: [{ propertyName: "tabListComponent", first: true, predicate: IconTabBarComponent, descendants: true }, { propertyName: "contentPageRef", first: true, predicate: ["contentPage"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<fd-dynamic-page size=\"large\" [autoResponsive]=\"true\">\r\n <fd-dynamic-page-header [class.hide]=\"!edit\" [title]=\"'HomeEdit' | bbbTranslate\">\r\n <fd-dynamic-page-global-actions>\r\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\r\n <label fd-form-label fd-toolbar-item>Stacked Content </label>\r\n <fd-switch\r\n fd-toolbar-item\r\n [checked]=\"stackContent\"\r\n (checkedChange)=\"onStackContentChanged($event)\"\r\n ></fd-switch>\r\n </fd-toolbar>\r\n </fd-dynamic-page-global-actions>\r\n <fd-dynamic-page-layout-actions>\r\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\r\n <button fd-button fdType=\"transparent\" aria-label=\"Close\" title=\"Close\" (click)=\"onCloseEditHome()\">\r\n <i class=\"sap-icon--decline\"></i>\r\n </button>\r\n </fd-toolbar>\r\n </fd-dynamic-page-layout-actions>\r\n </fd-dynamic-page-header>\r\n\r\n <fdp-icon-tab-bar\r\n [stackContent]=\"stackContent\"\r\n maxContentHeight=\"auto\"\r\n ariaRoledescription=\"Tiles Container\"\r\n (iconTabSelected)=\"onSelectedTabChange($event)\"\r\n >\r\n @for (appTileGroup of appTileGroups; track _trackById(i, appTileGroup); let i = $index) { @if (edit ||\r\n appTileGroup.navigatorVisible) {\r\n\r\n <fdp-icon-tab-bar-tab\r\n [id]=\"appTileGroup.Id\"\r\n [color]=\"color\"\r\n [label]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n [title]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n >\r\n <fd-dynamic-page-content [id]=\"appTileGroup.Id\" cdkScrollable>\r\n <bt-tiles-viewer-group\r\n [class]=\"deviceSize\"\r\n [appTileGroup]=\"appTileGroup\"\r\n [edit]=\"edit\"\r\n [rtl]=\"rtl\"\r\n [deviceSize]=\"deviceSize\"\r\n [stackContent]=\"stackContent\"\r\n [isAppTileSubGroup]=\"false\"\r\n (tilesDropped)=\"onDrop($event)\"\r\n (renameAppTileClick)=\"renameAppTileClick.emit($event)\"\r\n (hideAppTileClick)=\"hideAppTileClick.emit($event)\"\r\n (resetGroup)=\"resetGroup.emit($event)\"\r\n (deleteGroup)=\"deleteGroup.emit($event)\"\r\n (toggleGroup)=\"toggleGroup.emit($event)\"\r\n ></bt-tiles-viewer-group>\r\n </fd-dynamic-page-content>\r\n </fdp-icon-tab-bar-tab>\r\n\r\n } }\r\n </fdp-icon-tab-bar>\r\n\r\n <fd-dynamic-page-footer>\r\n @if (edit) {\r\n <div fd-bar barDesign=\"footer\">\r\n <div fd-bar-right>\r\n <fd-button-bar\r\n [label]=\"'SaveAndClose' | bbbTranslate\"\r\n fdType=\"emphasized\"\r\n (click)=\"onExitEditHome(appTileGroups)\"\r\n ></fd-button-bar>\r\n </div>\r\n </div>\r\n }\r\n </fd-dynamic-page-footer>\r\n</fd-dynamic-page>\r\n", styles: [":host{display:block}:host ::ng-deep .fd-panel__header{border:none;padding-left:0;padding-right:0}:host ::ng-deep fd-panel[edithome=false] .fd-panel__header:first-child{display:none}:host ::ng-deep .fd-panel__content{border-bottom:none;padding:1px}:host ::ng-deep fd-tab-list[noSpy] .fd-tabs__content{overflow-y:initial}:host ::ng-deep fd-dynamic-page article{height:calc(100vh - 44px)!important}:host ::ng-deep .footer-spacer{height:0}.fd-tabs__panel:not(.is-expanded){display:none}fd-dynamic-page.stack-mode fd-dynamic-page-content{overflow-y:hidden}@media (max-width: 599px){bnrc-dynamic-component{margin-right:0!important;margin-left:0!important}}\n"], dependencies: [{ kind: "directive", type: i2.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "component", type: i3.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["disableSnapOnScroll", "ariaLabel", "ariaRoledescription", "background", "autoResponsive", "size", "offset", "expandContent", "positionRelative"] }, { kind: "component", type: i5.DynamicPageHeaderComponent, selector: "fd-dynamic-page-header", inputs: ["title", "titleWrap", "subtitle", "subtitleWrap", "headingLevel", "titleId"] }, { kind: "component", type: i5.DynamicPageGlobalActionsComponent, selector: "fd-dynamic-page-global-actions" }, { kind: "component", type: i5.DynamicPageLayoutActionsComponent, selector: "fd-dynamic-page-layout-actions" }, { kind: "component", type: i5.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i5.DynamicPageFooterComponent, selector: "fd-dynamic-page-footer" }, { kind: "component", type: i6.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: i7.SwitchComponent, selector: "fd-switch", inputs: ["activeText", "inactiveText", "id", "required", "checked", "semantic", "ariaLabel", "ariaLabelledBy"], outputs: ["checkedChange"] }, { kind: "component", type: i8.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i8.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: i9.IconTabBarComponent, selector: "fdp-icon-tab-bar", inputs: ["stackContent", "iconTabType", "tabsConfig", "densityMode", "iconTabFont", "enableTabReordering", "showTotalTab", "multiClick", "layoutMode", "iconTabBackground", "iconTabSize", "colorAssociations", "maxContentHeight"], outputs: ["tabsConfigChange", "densityModeChange", "iconTabSelected", "iconTabReordered", "closeTab"] }, { kind: "component", type: i9.IconTabBarTabComponent, selector: "fdp-icon-tab-bar-tab", inputs: ["label", "color", "icon", "iconFont", "counter", "active", "badge", "closable", "id"] }, { kind: "component", type: i10.TilesViewerGroupComponent, selector: "bt-tiles-viewer-group", inputs: ["appTileGroup", "stackContent", "edit", "rtl", "isAppTileSubGroup", "deviceSize"], outputs: ["tilesDropped", "hideAppTileClick", "renameAppTileClick", "toggleGroup", "resetGroup", "deleteGroup"] }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
128
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: TilesViewerComponent, selector: "bt-tiles-viewer", inputs: { appTileGroups: "appTileGroups", loading: "loading", edit: "edit", rtl: "rtl", defaultTab: "defaultTab", stackContent: "stackContent", deviceSize: "deviceSize", selectedAppGroupId: "selectedAppGroupId", hideTabs: "hideTabs", DynamicComponents: "DynamicComponents" }, outputs: { stackContentChange: "stackContentChange", closeEditHome: "closeEditHome", save: "save", listDropped: "listDropped", tabChanged: "tabChanged", toggleGroup: "toggleGroup", resetGroup: "resetGroup", deleteGroup: "deleteGroup", hideAppTileClick: "hideAppTileClick", renameAppTileClick: "renameAppTileClick", tilesDropped: "tilesDropped" }, host: { properties: { "class.page-content": "this.pageContentClass", "attr.rtl": "this._rtl" } }, viewQueries: [{ propertyName: "tabListComponent", first: true, predicate: IconTabBarComponent, descendants: true }, { propertyName: "contentPageRef", first: true, predicate: ["contentPage"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: "<fd-dynamic-page size=\"large\" [autoResponsive]=\"true\" [class.hideTabs]=\"hideTabs\">\n <fd-dynamic-page-header [class.hide]=\"!edit\" [title]=\"'HomeEdit' | bbbTranslate\">\n <fd-dynamic-page-global-actions>\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\n <label fd-form-label fd-toolbar-item>Stacked Content </label>\n <fd-switch\n fd-toolbar-item\n [checked]=\"stackContent\"\n (checkedChange)=\"onStackContentChanged($event)\"\n ></fd-switch>\n </fd-toolbar>\n </fd-dynamic-page-global-actions>\n <fd-dynamic-page-layout-actions>\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\n <button fd-button fdType=\"transparent\" aria-label=\"Close\" title=\"Close\" (click)=\"onCloseEditHome()\">\n <i class=\"sap-icon--decline\"></i>\n </button>\n </fd-toolbar>\n </fd-dynamic-page-layout-actions>\n </fd-dynamic-page-header>\n\n <fdp-icon-tab-bar\n [stackContent]=\"stackContent\"\n maxContentHeight=\"auto\"\n ariaRoledescription=\"Tiles Container\"\n (iconTabSelected)=\"onSelectedTabChange($event)\"\n >\n @for (appTileGroup of appTileGroups; track _trackById(i, appTileGroup); let i = $index) { @if (edit ||\n appTileGroup.navigatorVisible) {\n\n <fdp-icon-tab-bar-tab\n [id]=\"appTileGroup.Id\"\n [color]=\"color\"\n [label]=\"appTileGroup.navigatorTitle | bbbTranslate\"\n [title]=\"appTileGroup.navigatorTitle | bbbTranslate\"\n >\n <fd-dynamic-page-content [id]=\"appTileGroup.Id\" cdkScrollable>\n <bt-tiles-viewer-group\n [class]=\"deviceSize\"\n [appTileGroup]=\"appTileGroup\"\n [edit]=\"edit\"\n [rtl]=\"rtl\"\n [deviceSize]=\"deviceSize\"\n [stackContent]=\"stackContent\"\n [isAppTileSubGroup]=\"false || hideTabs\"\n (tilesDropped)=\"onDrop($event)\"\n (renameAppTileClick)=\"renameAppTileClick.emit($event)\"\n (hideAppTileClick)=\"hideAppTileClick.emit($event)\"\n (resetGroup)=\"resetGroup.emit($event)\"\n (deleteGroup)=\"deleteGroup.emit($event)\"\n (toggleGroup)=\"toggleGroup.emit($event)\"\n ></bt-tiles-viewer-group>\n </fd-dynamic-page-content>\n </fdp-icon-tab-bar-tab>\n\n } }\n </fdp-icon-tab-bar>\n\n <fd-dynamic-page-footer>\n @if (edit) {\n <div fd-bar barDesign=\"footer\">\n <div fd-bar-right>\n <fd-button-bar\n [label]=\"'SaveAndClose' | bbbTranslate\"\n fdType=\"emphasized\"\n (click)=\"onExitEditHome(appTileGroups)\"\n ></fd-button-bar>\n </div>\n </div>\n }\n </fd-dynamic-page-footer>\n</fd-dynamic-page>\n", styles: [":host{display:block}:host ::ng-deep .fd-panel__header{border:none;padding-left:0;padding-right:0}:host ::ng-deep fd-panel[edithome=false] .fd-panel__header:first-child{display:none}:host ::ng-deep .fd-panel__content{border-bottom:none;padding:1px}:host ::ng-deep fd-tab-list[noSpy] .fd-tabs__content{overflow-y:initial}:host ::ng-deep fd-dynamic-page article{height:calc(100vh - 44px)!important}:host ::ng-deep .footer-spacer{height:0}.fd-tabs__panel:not(.is-expanded){display:none}fd-dynamic-page.stack-mode fd-dynamic-page-content{overflow-y:hidden}fd-dynamic-page.hideTabs ::ng-deep fdp-icon-tab-bar-text-type{display:none}@media (max-width: 599px){bnrc-dynamic-component{margin-right:0!important;margin-left:0!important}}\n"], dependencies: [{ kind: "directive", type: i2.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }, { kind: "component", type: i3.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i5.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["disableSnapOnScroll", "ariaLabel", "ariaRoledescription", "background", "autoResponsive", "size", "offset", "expandContent", "positionRelative"] }, { kind: "component", type: i5.DynamicPageHeaderComponent, selector: "fd-dynamic-page-header", inputs: ["title", "titleWrap", "subtitle", "subtitleWrap", "headingLevel", "titleId"] }, { kind: "component", type: i5.DynamicPageGlobalActionsComponent, selector: "fd-dynamic-page-global-actions" }, { kind: "component", type: i5.DynamicPageLayoutActionsComponent, selector: "fd-dynamic-page-layout-actions" }, { kind: "component", type: i5.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i5.DynamicPageFooterComponent, selector: "fd-dynamic-page-footer" }, { kind: "component", type: i6.FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: i7.SwitchComponent, selector: "fd-switch", inputs: ["activeText", "inactiveText", "id", "required", "checked", "semantic", "ariaLabel", "ariaLabelledBy"], outputs: ["checkedChange"] }, { kind: "component", type: i8.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i8.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: i9.IconTabBarComponent, selector: "fdp-icon-tab-bar", inputs: ["stackContent", "iconTabType", "tabsConfig", "densityMode", "iconTabFont", "enableTabReordering", "showTotalTab", "multiClick", "layoutMode", "iconTabBackground", "iconTabSize", "colorAssociations", "maxContentHeight"], outputs: ["tabsConfigChange", "densityModeChange", "iconTabSelected", "iconTabReordered", "closeTab"] }, { kind: "component", type: i9.IconTabBarTabComponent, selector: "fdp-icon-tab-bar-tab", inputs: ["label", "color", "icon", "iconFont", "counter", "active", "badge", "closable", "id"] }, { kind: "component", type: i10.TilesViewerGroupComponent, selector: "bt-tiles-viewer-group", inputs: ["appTileGroup", "stackContent", "edit", "rtl", "isAppTileSubGroup", "deviceSize"], outputs: ["tilesDropped", "hideAppTileClick", "renameAppTileClick", "toggleGroup", "resetGroup", "deleteGroup"] }, { kind: "pipe", type: i1.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
129
129
  }
130
130
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TilesViewerComponent, decorators: [{
131
131
  type: Component,
132
- args: [{ selector: 'bt-tiles-viewer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-dynamic-page size=\"large\" [autoResponsive]=\"true\">\r\n <fd-dynamic-page-header [class.hide]=\"!edit\" [title]=\"'HomeEdit' | bbbTranslate\">\r\n <fd-dynamic-page-global-actions>\r\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\r\n <label fd-form-label fd-toolbar-item>Stacked Content </label>\r\n <fd-switch\r\n fd-toolbar-item\r\n [checked]=\"stackContent\"\r\n (checkedChange)=\"onStackContentChanged($event)\"\r\n ></fd-switch>\r\n </fd-toolbar>\r\n </fd-dynamic-page-global-actions>\r\n <fd-dynamic-page-layout-actions>\r\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\r\n <button fd-button fdType=\"transparent\" aria-label=\"Close\" title=\"Close\" (click)=\"onCloseEditHome()\">\r\n <i class=\"sap-icon--decline\"></i>\r\n </button>\r\n </fd-toolbar>\r\n </fd-dynamic-page-layout-actions>\r\n </fd-dynamic-page-header>\r\n\r\n <fdp-icon-tab-bar\r\n [stackContent]=\"stackContent\"\r\n maxContentHeight=\"auto\"\r\n ariaRoledescription=\"Tiles Container\"\r\n (iconTabSelected)=\"onSelectedTabChange($event)\"\r\n >\r\n @for (appTileGroup of appTileGroups; track _trackById(i, appTileGroup); let i = $index) { @if (edit ||\r\n appTileGroup.navigatorVisible) {\r\n\r\n <fdp-icon-tab-bar-tab\r\n [id]=\"appTileGroup.Id\"\r\n [color]=\"color\"\r\n [label]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n [title]=\"appTileGroup.navigatorTitle | bbbTranslate\"\r\n >\r\n <fd-dynamic-page-content [id]=\"appTileGroup.Id\" cdkScrollable>\r\n <bt-tiles-viewer-group\r\n [class]=\"deviceSize\"\r\n [appTileGroup]=\"appTileGroup\"\r\n [edit]=\"edit\"\r\n [rtl]=\"rtl\"\r\n [deviceSize]=\"deviceSize\"\r\n [stackContent]=\"stackContent\"\r\n [isAppTileSubGroup]=\"false\"\r\n (tilesDropped)=\"onDrop($event)\"\r\n (renameAppTileClick)=\"renameAppTileClick.emit($event)\"\r\n (hideAppTileClick)=\"hideAppTileClick.emit($event)\"\r\n (resetGroup)=\"resetGroup.emit($event)\"\r\n (deleteGroup)=\"deleteGroup.emit($event)\"\r\n (toggleGroup)=\"toggleGroup.emit($event)\"\r\n ></bt-tiles-viewer-group>\r\n </fd-dynamic-page-content>\r\n </fdp-icon-tab-bar-tab>\r\n\r\n } }\r\n </fdp-icon-tab-bar>\r\n\r\n <fd-dynamic-page-footer>\r\n @if (edit) {\r\n <div fd-bar barDesign=\"footer\">\r\n <div fd-bar-right>\r\n <fd-button-bar\r\n [label]=\"'SaveAndClose' | bbbTranslate\"\r\n fdType=\"emphasized\"\r\n (click)=\"onExitEditHome(appTileGroups)\"\r\n ></fd-button-bar>\r\n </div>\r\n </div>\r\n }\r\n </fd-dynamic-page-footer>\r\n</fd-dynamic-page>\r\n", styles: [":host{display:block}:host ::ng-deep .fd-panel__header{border:none;padding-left:0;padding-right:0}:host ::ng-deep fd-panel[edithome=false] .fd-panel__header:first-child{display:none}:host ::ng-deep .fd-panel__content{border-bottom:none;padding:1px}:host ::ng-deep fd-tab-list[noSpy] .fd-tabs__content{overflow-y:initial}:host ::ng-deep fd-dynamic-page article{height:calc(100vh - 44px)!important}:host ::ng-deep .footer-spacer{height:0}.fd-tabs__panel:not(.is-expanded){display:none}fd-dynamic-page.stack-mode fd-dynamic-page-content{overflow-y:hidden}@media (max-width: 599px){bnrc-dynamic-component{margin-right:0!important;margin-left:0!important}}\n"] }]
132
+ args: [{ selector: 'bt-tiles-viewer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-dynamic-page size=\"large\" [autoResponsive]=\"true\" [class.hideTabs]=\"hideTabs\">\n <fd-dynamic-page-header [class.hide]=\"!edit\" [title]=\"'HomeEdit' | bbbTranslate\">\n <fd-dynamic-page-global-actions>\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\n <label fd-form-label fd-toolbar-item>Stacked Content </label>\n <fd-switch\n fd-toolbar-item\n [checked]=\"stackContent\"\n (checkedChange)=\"onStackContentChanged($event)\"\n ></fd-switch>\n </fd-toolbar>\n </fd-dynamic-page-global-actions>\n <fd-dynamic-page-layout-actions>\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\n <button fd-button fdType=\"transparent\" aria-label=\"Close\" title=\"Close\" (click)=\"onCloseEditHome()\">\n <i class=\"sap-icon--decline\"></i>\n </button>\n </fd-toolbar>\n </fd-dynamic-page-layout-actions>\n </fd-dynamic-page-header>\n\n <fdp-icon-tab-bar\n [stackContent]=\"stackContent\"\n maxContentHeight=\"auto\"\n ariaRoledescription=\"Tiles Container\"\n (iconTabSelected)=\"onSelectedTabChange($event)\"\n >\n @for (appTileGroup of appTileGroups; track _trackById(i, appTileGroup); let i = $index) { @if (edit ||\n appTileGroup.navigatorVisible) {\n\n <fdp-icon-tab-bar-tab\n [id]=\"appTileGroup.Id\"\n [color]=\"color\"\n [label]=\"appTileGroup.navigatorTitle | bbbTranslate\"\n [title]=\"appTileGroup.navigatorTitle | bbbTranslate\"\n >\n <fd-dynamic-page-content [id]=\"appTileGroup.Id\" cdkScrollable>\n <bt-tiles-viewer-group\n [class]=\"deviceSize\"\n [appTileGroup]=\"appTileGroup\"\n [edit]=\"edit\"\n [rtl]=\"rtl\"\n [deviceSize]=\"deviceSize\"\n [stackContent]=\"stackContent\"\n [isAppTileSubGroup]=\"false || hideTabs\"\n (tilesDropped)=\"onDrop($event)\"\n (renameAppTileClick)=\"renameAppTileClick.emit($event)\"\n (hideAppTileClick)=\"hideAppTileClick.emit($event)\"\n (resetGroup)=\"resetGroup.emit($event)\"\n (deleteGroup)=\"deleteGroup.emit($event)\"\n (toggleGroup)=\"toggleGroup.emit($event)\"\n ></bt-tiles-viewer-group>\n </fd-dynamic-page-content>\n </fdp-icon-tab-bar-tab>\n\n } }\n </fdp-icon-tab-bar>\n\n <fd-dynamic-page-footer>\n @if (edit) {\n <div fd-bar barDesign=\"footer\">\n <div fd-bar-right>\n <fd-button-bar\n [label]=\"'SaveAndClose' | bbbTranslate\"\n fdType=\"emphasized\"\n (click)=\"onExitEditHome(appTileGroups)\"\n ></fd-button-bar>\n </div>\n </div>\n }\n </fd-dynamic-page-footer>\n</fd-dynamic-page>\n", styles: [":host{display:block}:host ::ng-deep .fd-panel__header{border:none;padding-left:0;padding-right:0}:host ::ng-deep fd-panel[edithome=false] .fd-panel__header:first-child{display:none}:host ::ng-deep .fd-panel__content{border-bottom:none;padding:1px}:host ::ng-deep fd-tab-list[noSpy] .fd-tabs__content{overflow-y:initial}:host ::ng-deep fd-dynamic-page article{height:calc(100vh - 44px)!important}:host ::ng-deep .footer-spacer{height:0}.fd-tabs__panel:not(.is-expanded){display:none}fd-dynamic-page.stack-mode fd-dynamic-page-content{overflow-y:hidden}fd-dynamic-page.hideTabs ::ng-deep fdp-icon-tab-bar-text-type{display:none}@media (max-width: 599px){bnrc-dynamic-component{margin-right:0!important;margin-left:0!important}}\n"] }]
133
133
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.SaveScrollPositionService }], propDecorators: { tabListComponent: [{
134
134
  type: ViewChild,
135
135
  args: [IconTabBarComponent]
@@ -155,6 +155,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
155
155
  type: Input
156
156
  }], selectedAppGroupId: [{
157
157
  type: Input
158
+ }], hideTabs: [{
159
+ type: Input
158
160
  }], DynamicComponents: [{
159
161
  type: Input
160
162
  }], stackContentChange: [{
@@ -183,4 +185,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
183
185
  type: HostBinding,
184
186
  args: ['attr.rtl']
185
187
  }] } });
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZXMtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXRpbGVzL3NyYy9saWIvdGlsZXMtdmlld2VyL3RpbGVzLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3RpbGVzLXZpZXdlci90aWxlcy12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNILGFBQWEsRUFFYixRQUFRLEVBR1Isa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUMzQixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLG1CQUFtQixFQUF5RCxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7QUFRdkgsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGFBQWE7SUErQ25ELFlBQXNCLElBQXVCLEVBQVksbUJBQThDO1FBQ25HLEtBQUssRUFBRSxDQUFDO1FBRFUsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFBWSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTJCO1FBNUNwRSxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFZakQsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNqRCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFHcEMsQ0FBQztRQUNLLGVBQVUsR0FBRyxJQUFJ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O3NCQUFiLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFJRyxVQUFVO3NCQUFuQixNQUFNO2dCQVFHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBRUcsWUFBWTtzQkFBckIsTUFBTTtnQkFLa0IsSUFBSTtzQkFBNUIsV0FBVzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSG9zdEJpbmRpbmcsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHtcclxuICAgIEJhc2VDb21wb25lbnQsXHJcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxyXG4gICAgQmFyc2FBcGksXHJcbiAgICBBYmJyZXZhdGlvbkRldmljZVNpemUsXHJcbiAgICBTYXZlU2Nyb2xsUG9zaXRpb25TZXJ2aWNlLFxyXG4gICAgSW50ZXJzZWN0aW9uU3RhdHVzLFxyXG4gICAgZnJvbUludGVyc2VjdGlvbk9ic2VydmVyXHJcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xyXG5pbXBvcnQgeyBOdWxsYWJsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBJY29uVGFiQmFyQ29tcG9uZW50LCBJY29uVGFiQmFySXRlbSwgSWNvblRhYkJhclRhYkNvbXBvbmVudCwgU2VtYW50aWNDb2xvciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2J0LXRpbGVzLXZpZXdlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGlsZXMtdmlld2VyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3RpbGVzLXZpZXdlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFRpbGVzVmlld2VyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICBAVmlld0NoaWxkKEljb25UYWJCYXJDb21wb25lbnQpIHRhYkxpc3RDb21wb25lbnQ6IEljb25UYWJCYXJDb21wb25lbnQ7XHJcbiAgICBAVmlld0NoaWxkKCdjb250ZW50UGFnZScsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pIGNvbnRlbnRQYWdlUmVmOiBFbGVtZW50UmVmPGFueT47XHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnBhZ2UtY29udGVudCcpIHBhZ2VDb250ZW50Q2xhc3MgPSB0cnVlO1xyXG4gICAgQElucHV0KCkgYXBwVGlsZUdyb3VwczogQXJyYXk8TWV0YW9iamVjdERhdGFNb2RlbD47XHJcbiAgICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgZWRpdDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIHJ0bDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGRlZmF1bHRUYWI6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHN0YWNrQ29udGVudDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGRldmljZVNpemU6IEFiYnJldmF0aW9uRGV2aWNlU2l6ZTtcclxuICAgIEBJbnB1dCgpIHNlbGVjdGVkQXBwR3JvdXBJZDogc3RyaW5nO1xyXG5cclxuICAgIEBJbnB1dCgpIER5bmFtaWNDb21wb25lbnRzOiBhbnk7XHJcblxyXG4gICAgQE91dHB1dCgpIHN0YWNrQ29udGVudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICAgIEBPdXRwdXQoKSBjbG9zZUVkaXRIb21lID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIHNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgbGlzdERyb3BwZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgICAgICBhcHBUaWxlR3JvdXBzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW107XHJcbiAgICAgICAgZXZlbnQ6IENka0RyYWdEcm9wPE1ldGFvYmplY3REYXRhTW9kZWxbXT47XHJcbiAgICB9PigpO1xyXG4gICAgQE91dHB1dCgpIHRhYkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHtcclxuICAgICAgICBmaXJzdFNlbGVjdGVkOiBib29sZWFuO1xyXG4gICAgICAgIHNlbGVjdGVkVGFiVGl0bGU6IHN0cmluZztcclxuICAgICAgICB0YWJQYW5lbHM6IEljb25UYWJCYXJUYWJDb21wb25lbnRbXTtcclxuICAgICAgICBhcHBUaWxlR3JvdXBzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW107XHJcbiAgICAgICAgdGFiYmFyQ29tcG9uZW50OiBJY29uVGFiQmFyQ29tcG9uZW50O1xyXG4gICAgfT4oKTtcclxuXHJcbiAgICBAT3V0cHV0KCkgdG9nZ2xlR3JvdXAgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XHJcbiAgICBAT3V0cHV0KCkgcmVzZXRHcm91cCA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIEBPdXRwdXQoKSBkZWxldGVHcm91cCA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuICAgIEBPdXRwdXQoKSBoaWRlQXBwVGlsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xyXG4gICAgQE91dHB1dCgpIHJlbmFtZUFwcFRpbGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TWV0YW9iamVjdERhdGFNb2RlbD4oKTtcclxuXHJcbiAgICBAT3V0cHV0KCkgdGlsZXNEcm9wcGVkID0gbmV3IEV2ZW50RW1pdHRlcjx7XHJcbiAgICAgICAgYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xyXG4gICAgICAgIGV2ZW50OiBDZGtEcmFnRHJvcDx7IGlzVGlsZTogYm9vbGVhbjsgaXRlbXM6IE1ldGFvYmplY3REYXRhTW9kZWxbXSB9PjtcclxuICAgIH0+KCk7XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnJ0bCcpIF9ydGwgPSBCYXJzYUFwaS5Mb2dpbkZvcm1EYXRhLklzUnRsO1xyXG4gICAgc2VsZWN0ZWRUYWJUaXRsZTogTnVsbGFibGU8c3RyaW5nPjtcclxuICAgIHNlbGVjdGVkVGFiSWQ6IHN0cmluZztcclxuICAgIF90aWxlc0ludGVyc2VjdGlvbjogYW55O1xyXG4gICAgZm9ybVZpc2liaWxpdHlTdGF0dXM6IEludGVyc2VjdGlvblN0YXR1cztcclxuICAgIGNvbG9yOiBTZW1hbnRpY0NvbG9yID0gJ2luZm9ybWF0aXZlJztcclxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJvdGVjdGVkIF9zYXZlU2Nyb2xsUG9zaXRpb246IFNhdmVTY3JvbGxQb3NpdGlvblNlcnZpY2UpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG4gICAgaWQgPSAndGlsZXN2aWV3ZXInO1xyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29udGVudFBhZ2VSZWYpIHtcclxuICAgICAgICAgICAgY29uc3QgZWxEb20gPSB0aGlzLmNvbnRlbnRQYWdlUmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgICAgIGVsRG9tLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVTY3JvbGxQb3NpdGlvbi5zZXRTY3JvbGxQb3NpdGlvbih0aGlzLmlkLCBlbERvbS5zY3JvbGxUb3ApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5fdGlsZXNJbnRlcnNlY3Rpb24gPSBmcm9tSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXHJcbiAgICAgICAgICAgICAgICBlbERvbSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICByb290OiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgIHJvb3RNYXJnaW46ICcwcHgnLFxyXG4gICAgICAgICAgICAgICAgICAgIHRocmVzaG9sZDogMFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb25JblZpZXcoZSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XHJcbiAgICAgICAgaWYgKHRoaXMudGFiTGlzdENvbXBvbmVudCkge1xyXG4gICAgICAgICAgICB0aGlzLnRhYkxpc3RDb21wb25lbnQuX2Rpc2FibGVTY3JvbGxTcHkgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG9uU2VsZWN0ZWRUYWJDaGFuZ2Uoc2VsZWN0ZWRUYWI6IEljb25UYWJCYXJJdGVtKTogdm9pZCB7XHJcbiAgICAgICAgbGV0IGZpcnN0U2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRUYWJUaXRsZSkge1xyXG4gICAgICAgICAgICBmaXJzdFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRUYWJUaXRsZSA9IChzZWxlY3RlZFRhYi5sYWJlbCBhcyBzdHJpbmcpIHx8ICcnO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJUaXRsZSA9IHNlbGVjdGVkVGFiVGl0bGU7XHJcbiAgICAgICAgaWYgKGZpcnN0U2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgdGFiID0gdGhpcy5hcHBUaWxlR3JvdXBzLmZpbmQoKGMpID0+IGMuSWQgPT09IHRoaXMuZGVmYXVsdFRhYik7XHJcbiAgICAgICAgICAgIGlmICh0YWIpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy50YWJMaXN0Q29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdFRhYih0YWIuSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RUYWIodGFiLklkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy50YWJDaGFuZ2VkLmVtaXQoe1xyXG4gICAgICAgICAgICAgICAgZmlyc3RTZWxlY3RlZCxcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkVGFiVGl0bGUsXHJcbiAgICAgICAgICAgICAgICB0YWJQYW5lbHM6IHRoaXMudGFiTGlzdENvbXBvbmVudC5jaGlsZHJlbigpIGFzIGFueSxcclxuICAgICAgICAgICAgICAgIGFwcFRpbGVHcm91cHM6IHRoaXMuYXBwVGlsZUdyb3VwcyxcclxuICAgICAgICAgICAgICAgIHRhYmJhckNvbXBvbmVudDogdGhpcy50YWJMaXN0Q29tcG9uZW50XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgb25Ecm9wR3JvdXAoYXBwVGlsZUdyb3VwczogTWV0YW9iamVjdERhdGFNb2RlbFtdLCBldmVudDogQ2RrRHJhZ0Ryb3A8TWV0YW9iamVjdERhdGFNb2RlbFtdPik6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5lZGl0KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5saXN0RHJvcHBlZC5lbWl0KHsgYXBwVGlsZUdyb3VwcywgZXZlbnQgfSk7XHJcbiAgICB9XHJcbiAgICBvbkRyb3AoJGV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy50aWxlc0Ryb3BwZWQuZW1pdCgkZXZlbnQpO1xyXG4gICAgfVxyXG4gICAgb25TdGFja0NvbnRlbnRDaGFuZ2VkKGNoZWNrZWQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN0YWNrQ29udGVudENoYW5nZS5lbWl0KGNoZWNrZWQpO1xyXG4gICAgfVxyXG4gICAgb25FeGl0RWRpdEhvbWUoYXBwR3JvdXBzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNhdmUuZW1pdChhcHBHcm91cHMpO1xyXG4gICAgfVxyXG4gICAgb25DbG9zZUVkaXRIb21lKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2xvc2VFZGl0SG9tZS5lbWl0KCk7XHJcbiAgICB9XHJcbiAgICBfdHJhY2tCeUlkKGluZGV4LCBpdGVtKTogc3RyaW5nIHwgbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gaXRlbSA/IGl0ZW0uSWQgOiBpbmRleDtcclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfc2VsZWN0VGFiKHRhYklkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy50YWJMaXN0Q29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFiTGlzdENvbXBvbmVudC5zZWxlY3RUYWIodGFiSWQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfb25JblZpZXcoZSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZm9ybVZpc2liaWxpdHlTdGF0dXMgPSBlO1xyXG4gICAgICAgIGlmICh0aGlzLmZvcm1WaXNpYmlsaXR5U3RhdHVzID09PSBJbnRlcnNlY3Rpb25TdGF0dXMuVmlzaWJsZSkge1xyXG4gICAgICAgICAgICBjb25zdCBzY3JvbGxUb3AgPSB0aGlzLl9zYXZlU2Nyb2xsUG9zaXRpb24uZ2V0U2Nyb2xsUG9zaXRpb24odGhpcy5pZCk7XHJcbiAgICAgICAgICAgIC8vIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogc2Nyb2xsVG9wLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XHJcbiAgICAgICAgICAgICh0aGlzLmNvbnRlbnRQYWdlUmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbFRvcCA9IHNjcm9sbFRvcDtcclxuICAgICAgICAgICAgLy8gdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGZkLWR5bmFtaWMtcGFnZSBzaXplPVwibGFyZ2VcIiBbYXV0b1Jlc3BvbnNpdmVdPVwidHJ1ZVwiPlxyXG4gICAgPGZkLWR5bmFtaWMtcGFnZS1oZWFkZXIgW2NsYXNzLmhpZGVdPVwiIWVkaXRcIiBbdGl0bGVdPVwiJ0hvbWVFZGl0JyB8IGJiYlRyYW5zbGF0ZVwiPlxyXG4gICAgICAgIDxmZC1keW5hbWljLXBhZ2UtZ2xvYmFsLWFjdGlvbnM+XHJcbiAgICAgICAgICAgIDxmZC10b29sYmFyIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgW2NsZWFyQm9yZGVyXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBmZC1mb3JtLWxhYmVsIGZkLXRvb2xiYXItaXRlbT5TdGFja2VkIENvbnRlbnQgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxmZC1zd2l0Y2hcclxuICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzdGFja0NvbnRlbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjaGVja2VkQ2hhbmdlKT1cIm9uU3RhY2tDb250ZW50Q2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgID48L2ZkLXN3aXRjaD5cclxuICAgICAgICAgICAgPC9mZC10b29sYmFyPlxyXG4gICAgICAgIDwvZmQtZHluYW1pYy1wYWdlLWdsb2JhbC1hY3Rpb25zPlxyXG4gICAgICAgIDxmZC1keW5hbWljLXBhZ2UtbGF5b3V0LWFjdGlvbnM+XHJcbiAgICAgICAgICAgIDxmZC10b29sYmFyIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgW2NsZWFyQm9yZGVyXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgdGl0bGU9XCJDbG9zZVwiIChjbGljayk9XCJvbkNsb3NlRWRpdEhvbWUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwic2FwLWljb24tLWRlY2xpbmVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9mZC10b29sYmFyPlxyXG4gICAgICAgIDwvZmQtZHluYW1pYy1wYWdlLWxheW91dC1hY3Rpb25zPlxyXG4gICAgPC9mZC1keW5hbWljLXBhZ2UtaGVhZGVyPlxyXG5cclxuICAgIDxmZHAtaWNvbi10YWItYmFyXHJcbiAgICAgICAgW3N0YWNrQ29udGVudF09XCJzdGFja0NvbnRlbnRcIlxyXG4gICAgICAgIG1heENvbnRlbnRIZWlnaHQ9XCJhdXRvXCJcclxuICAgICAgICBhcmlhUm9sZWRlc2NyaXB0aW9uPVwiVGlsZXMgQ29udGFpbmVyXCJcclxuICAgICAgICAoaWNvblRhYlNlbGVjdGVkKT1cIm9uU2VsZWN0ZWRUYWJDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgICAgICAgQGZvciAoYXBwVGlsZUdyb3VwIG9mIGFwcFRpbGVHcm91cHM7IHRyYWNrIF90cmFja0J5SWQoaSwgYXBwVGlsZUdyb3VwKTsgbGV0IGkgPSAkaW5kZXgpIHsgQGlmIChlZGl0IHx8XHJcbiAgICAgICAgYXBwVGlsZUdyb3VwLm5hdmlnYXRvclZpc2libGUpIHtcclxuXHJcbiAgICAgICAgPGZkcC1pY29uLXRhYi1iYXItdGFiXHJcbiAgICAgICAgICAgIFtpZF09XCJhcHBUaWxlR3JvdXAuSWRcIlxyXG4gICAgICAgICAgICBbY29sb3JdPVwiY29sb3JcIlxyXG4gICAgICAgICAgICBbbGFiZWxdPVwiYXBwVGlsZUdyb3VwLm5hdmlnYXRvclRpdGxlIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgW3RpdGxlXT1cImFwcFRpbGVHcm91cC5uYXZpZ2F0b3JUaXRsZSB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLWNvbnRlbnQgW2lkXT1cImFwcFRpbGVHcm91cC5JZFwiIGNka1Njcm9sbGFibGU+XHJcbiAgICAgICAgICAgICAgICA8YnQtdGlsZXMtdmlld2VyLWdyb3VwXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImRldmljZVNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthcHBUaWxlR3JvdXBdPVwiYXBwVGlsZUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICBbZWRpdF09XCJlZGl0XCJcclxuICAgICAgICAgICAgICAgICAgICBbcnRsXT1cInJ0bFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0YWNrQ29udGVudF09XCJzdGFja0NvbnRlbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpc0FwcFRpbGVTdWJHcm91cF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHRpbGVzRHJvcHBlZCk9XCJvbkRyb3AoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlbmFtZUFwcFRpbGVDbGljayk9XCJyZW5hbWVBcHBUaWxlQ2xpY2suZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAoaGlkZUFwcFRpbGVDbGljayk9XCJoaWRlQXBwVGlsZUNsaWNrLmVtaXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHJlc2V0R3JvdXApPVwicmVzZXRHcm91cC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgIChkZWxldGVHcm91cCk9XCJkZWxldGVHcm91cC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICh0b2dnbGVHcm91cCk9XCJ0b2dnbGVHcm91cC5lbWl0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgPjwvYnQtdGlsZXMtdmlld2VyLWdyb3VwPlxyXG4gICAgICAgICAgICA8L2ZkLWR5bmFtaWMtcGFnZS1jb250ZW50PlxyXG4gICAgICAgIDwvZmRwLWljb24tdGFiLWJhci10YWI+XHJcblxyXG4gICAgICAgIH0gfVxyXG4gICAgPC9mZHAtaWNvbi10YWItYmFyPlxyXG5cclxuICAgIDxmZC1keW5hbWljLXBhZ2UtZm9vdGVyPlxyXG4gICAgICAgIEBpZiAoZWRpdCkge1xyXG4gICAgICAgIDxkaXYgZmQtYmFyIGJhckRlc2lnbj1cImZvb3RlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodD5cclxuICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXHJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidTYXZlQW5kQ2xvc2UnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25FeGl0RWRpdEhvbWUoYXBwVGlsZUdyb3VwcylcIlxyXG4gICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgPC9mZC1keW5hbWljLXBhZ2UtZm9vdGVyPlxyXG48L2ZkLWR5bmFtaWMtcGFnZT5cclxuIl19
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZXMtdmlld2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXRpbGVzL3NyYy9saWIvdGlsZXMtdmlld2VyL3RpbGVzLXZpZXdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3RpbGVzLXZpZXdlci90aWxlcy12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNILGFBQWEsRUFFYixRQUFRLEVBR1Isa0JBQWtCLEVBQ2xCLHdCQUF3QixFQUMzQixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLG1CQUFtQixFQUF5RCxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7QUFRdkgsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGFBQWE7SUErQ25ELFlBQXNCLElBQXVCLEVBQVksbUJBQThDO1FBQ25HLEtBQUssRUFBRSxDQUFDO1FBRFUsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFBWSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTJCO1FBNUNwRSxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFZakQsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNqRCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDMUIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFHcEMsQ0FBQztRQUNLLGVBQVUsR0FBRyxJQUFJ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O3NCQUF0QixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUlHLFVBQVU7c0JBQW5CLE1BQU07Z0JBUUcsV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFFRyxZQUFZO3NCQUFyQixNQUFNO2dCQUtrQixJQUFJO3NCQUE1QixXQUFXO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRHJvcCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gICAgQmFzZUNvbXBvbmVudCxcbiAgICBNZXRhb2JqZWN0RGF0YU1vZGVsLFxuICAgIEJhcnNhQXBpLFxuICAgIEFiYnJldmF0aW9uRGV2aWNlU2l6ZSxcbiAgICBTYXZlU2Nyb2xsUG9zaXRpb25TZXJ2aWNlLFxuICAgIEludGVyc2VjdGlvblN0YXR1cyxcbiAgICBmcm9tSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJY29uVGFiQmFyQ29tcG9uZW50LCBJY29uVGFiQmFySXRlbSwgSWNvblRhYkJhclRhYkNvbXBvbmVudCwgU2VtYW50aWNDb2xvciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2J0LXRpbGVzLXZpZXdlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RpbGVzLXZpZXdlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGlsZXMtdmlld2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGlsZXNWaWV3ZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkKEljb25UYWJCYXJDb21wb25lbnQpIHRhYkxpc3RDb21wb25lbnQ6IEljb25UYWJCYXJDb21wb25lbnQ7XG4gICAgQFZpZXdDaGlsZCgnY29udGVudFBhZ2UnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KSBjb250ZW50UGFnZVJlZjogRWxlbWVudFJlZjxhbnk+O1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MucGFnZS1jb250ZW50JykgcGFnZUNvbnRlbnRDbGFzcyA9IHRydWU7XG4gICAgQElucHV0KCkgYXBwVGlsZUdyb3VwczogQXJyYXk8TWV0YW9iamVjdERhdGFNb2RlbD47XG4gICAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBlZGl0OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHJ0bDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBkZWZhdWx0VGFiOiBzdHJpbmc7XG4gICAgQElucHV0KCkgc3RhY2tDb250ZW50OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGRldmljZVNpemU6IEFiYnJldmF0aW9uRGV2aWNlU2l6ZTtcbiAgICBASW5wdXQoKSBzZWxlY3RlZEFwcEdyb3VwSWQ6IHN0cmluZztcbiAgICBASW5wdXQoKSBoaWRlVGFiczogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBEeW5hbWljQ29tcG9uZW50czogYW55O1xuXG4gICAgQE91dHB1dCgpIHN0YWNrQ29udGVudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgY2xvc2VFZGl0SG9tZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgc2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgbGlzdERyb3BwZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICAgICAgYXBwVGlsZUdyb3VwczogTWV0YW9iamVjdERhdGFNb2RlbFtdO1xuICAgICAgICBldmVudDogQ2RrRHJhZ0Ryb3A8TWV0YW9iamVjdERhdGFNb2RlbFtdPjtcbiAgICB9PigpO1xuICAgIEBPdXRwdXQoKSB0YWJDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIGZpcnN0U2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgICAgIHNlbGVjdGVkVGFiVGl0bGU6IHN0cmluZztcbiAgICAgICAgdGFiUGFuZWxzOiBJY29uVGFiQmFyVGFiQ29tcG9uZW50W107XG4gICAgICAgIGFwcFRpbGVHcm91cHM6IE1ldGFvYmplY3REYXRhTW9kZWxbXTtcbiAgICAgICAgdGFiYmFyQ29tcG9uZW50OiBJY29uVGFiQmFyQ29tcG9uZW50O1xuICAgIH0+KCk7XG5cbiAgICBAT3V0cHV0KCkgdG9nZ2xlR3JvdXAgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgQE91dHB1dCgpIHJlc2V0R3JvdXAgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG4gICAgQE91dHB1dCgpIGRlbGV0ZUdyb3VwID0gbmV3IEV2ZW50RW1pdHRlcjxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xuICAgIEBPdXRwdXQoKSBoaWRlQXBwVGlsZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxNZXRhb2JqZWN0RGF0YU1vZGVsPigpO1xuICAgIEBPdXRwdXQoKSByZW5hbWVBcHBUaWxlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPE1ldGFvYmplY3REYXRhTW9kZWw+KCk7XG5cbiAgICBAT3V0cHV0KCkgdGlsZXNEcm9wcGVkID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIGFwcFRpbGVHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbDtcbiAgICAgICAgZXZlbnQ6IENka0RyYWdEcm9wPHsgaXNUaWxlOiBib29sZWFuOyBpdGVtczogTWV0YW9iamVjdERhdGFNb2RlbFtdIH0+O1xuICAgIH0+KCk7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucnRsJykgX3J0bCA9IEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuSXNSdGw7XG4gICAgc2VsZWN0ZWRUYWJUaXRsZTogTnVsbGFibGU8c3RyaW5nPjtcbiAgICBzZWxlY3RlZFRhYklkOiBzdHJpbmc7XG4gICAgX3RpbGVzSW50ZXJzZWN0aW9uOiBhbnk7XG4gICAgZm9ybVZpc2liaWxpdHlTdGF0dXM6IEludGVyc2VjdGlvblN0YXR1cztcbiAgICBjb2xvcjogU2VtYW50aWNDb2xvciA9ICdpbmZvcm1hdGl2ZSc7XG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcm90ZWN0ZWQgX3NhdmVTY3JvbGxQb3NpdGlvbjogU2F2ZVNjcm9sbFBvc2l0aW9uU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cbiAgICBpZCA9ICd0aWxlc3ZpZXdlcic7XG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG5cbiAgICAgICAgaWYgKHRoaXMuY29udGVudFBhZ2VSZWYpIHtcbiAgICAgICAgICAgIGNvbnN0IGVsRG9tID0gdGhpcy5jb250ZW50UGFnZVJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgZWxEb20uYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVTY3JvbGxQb3NpdGlvbi5zZXRTY3JvbGxQb3NpdGlvbih0aGlzLmlkLCBlbERvbS5zY3JvbGxUb3ApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl90aWxlc0ludGVyc2VjdGlvbiA9IGZyb21JbnRlcnNlY3Rpb25PYnNlcnZlcihcbiAgICAgICAgICAgICAgICBlbERvbSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHJvb3Q6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHJvb3RNYXJnaW46ICcwcHgnLFxuICAgICAgICAgICAgICAgICAgICB0aHJlc2hvbGQ6IDBcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vbkluVmlldyhlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBpZiAodGhpcy50YWJMaXN0Q29tcG9uZW50KSB7XG4gICAgICAgICAgICB0aGlzLnRhYkxpc3RDb21wb25lbnQuX2Rpc2FibGVTY3JvbGxTcHkgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIG9uU2VsZWN0ZWRUYWJDaGFuZ2Uoc2VsZWN0ZWRUYWI6IEljb25UYWJCYXJJdGVtKTogdm9pZCB7XG4gICAgICAgIGxldCBmaXJzdFNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFRhYlRpdGxlKSB7XG4gICAgICAgICAgICBmaXJzdFNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZWxlY3RlZFRhYlRpdGxlID0gKHNlbGVjdGVkVGFiLmxhYmVsIGFzIHN0cmluZykgfHwgJyc7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJUaXRsZSA9IHNlbGVjdGVkVGFiVGl0bGU7XG4gICAgICAgIGlmIChmaXJzdFNlbGVjdGVkKSB7XG4gICAgICAgICAgICBjb25zdCB0YWIgPSB0aGlzLmFwcFRpbGVHcm91cHMuZmluZCgoYykgPT4gYy5JZCA9PT0gdGhpcy5kZWZhdWx0VGFiKTtcbiAgICAgICAgICAgIGlmICh0YWIpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMudGFiTGlzdENvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdFRhYih0YWIuSWQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RUYWIodGFiLklkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy50YWJDaGFuZ2VkLmVtaXQoe1xuICAgICAgICAgICAgICAgIGZpcnN0U2VsZWN0ZWQsXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRUYWJUaXRsZSxcbiAgICAgICAgICAgICAgICB0YWJQYW5lbHM6IHRoaXMudGFiTGlzdENvbXBvbmVudC5jaGlsZHJlbigpIGFzIGFueSxcbiAgICAgICAgICAgICAgICBhcHBUaWxlR3JvdXBzOiB0aGlzLmFwcFRpbGVHcm91cHMsXG4gICAgICAgICAgICAgICAgdGFiYmFyQ29tcG9uZW50OiB0aGlzLnRhYkxpc3RDb21wb25lbnRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgb25Ecm9wR3JvdXAoYXBwVGlsZUdyb3VwczogTWV0YW9iamVjdERhdGFNb2RlbFtdLCBldmVudDogQ2RrRHJhZ0Ryb3A8TWV0YW9iamVjdERhdGFNb2RlbFtdPik6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZWRpdCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGlzdERyb3BwZWQuZW1pdCh7IGFwcFRpbGVHcm91cHMsIGV2ZW50IH0pO1xuICAgIH1cbiAgICBvbkRyb3AoJGV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMudGlsZXNEcm9wcGVkLmVtaXQoJGV2ZW50KTtcbiAgICB9XG4gICAgb25TdGFja0NvbnRlbnRDaGFuZ2VkKGNoZWNrZWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGFja0NvbnRlbnRDaGFuZ2UuZW1pdChjaGVja2VkKTtcbiAgICB9XG4gICAgb25FeGl0RWRpdEhvbWUoYXBwR3JvdXBzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zYXZlLmVtaXQoYXBwR3JvdXBzKTtcbiAgICB9XG4gICAgb25DbG9zZUVkaXRIb21lKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlRWRpdEhvbWUuZW1pdCgpO1xuICAgIH1cbiAgICBfdHJhY2tCeUlkKGluZGV4LCBpdGVtKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0gPyBpdGVtLklkIDogaW5kZXg7XG4gICAgfVxuICAgIHByb3RlY3RlZCBfc2VsZWN0VGFiKHRhYklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudGFiTGlzdENvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy50YWJMaXN0Q29tcG9uZW50LnNlbGVjdFRhYih0YWJJZCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJvdGVjdGVkIF9vbkluVmlldyhlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybVZpc2liaWxpdHlTdGF0dXMgPSBlO1xuICAgICAgICBpZiAodGhpcy5mb3JtVmlzaWJpbGl0eVN0YXR1cyA9PT0gSW50ZXJzZWN0aW9uU3RhdHVzLlZpc2libGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuX3NhdmVTY3JvbGxQb3NpdGlvbi5nZXRTY3JvbGxQb3NpdGlvbih0aGlzLmlkKTtcbiAgICAgICAgICAgIC8vIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogc2Nyb2xsVG9wLCBiZWhhdmlvcjogJ3Ntb290aCcgfSk7XG4gICAgICAgICAgICAodGhpcy5jb250ZW50UGFnZVJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxUb3AgPSBzY3JvbGxUb3A7XG4gICAgICAgICAgICAvLyB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGZkLWR5bmFtaWMtcGFnZSBzaXplPVwibGFyZ2VcIiBbYXV0b1Jlc3BvbnNpdmVdPVwidHJ1ZVwiIFtjbGFzcy5oaWRlVGFic109XCJoaWRlVGFic1wiPlxuICAgIDxmZC1keW5hbWljLXBhZ2UtaGVhZGVyIFtjbGFzcy5oaWRlXT1cIiFlZGl0XCIgW3RpdGxlXT1cIidIb21lRWRpdCcgfCBiYmJUcmFuc2xhdGVcIj5cbiAgICAgICAgPGZkLWR5bmFtaWMtcGFnZS1nbG9iYWwtYWN0aW9ucz5cbiAgICAgICAgICAgIDxmZC10b29sYmFyIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgW2NsZWFyQm9yZGVyXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICA8bGFiZWwgZmQtZm9ybS1sYWJlbCBmZC10b29sYmFyLWl0ZW0+U3RhY2tlZCBDb250ZW50IDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPGZkLXN3aXRjaFxuICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic3RhY2tDb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgKGNoZWNrZWRDaGFuZ2UpPVwib25TdGFja0NvbnRlbnRDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgID48L2ZkLXN3aXRjaD5cbiAgICAgICAgICAgIDwvZmQtdG9vbGJhcj5cbiAgICAgICAgPC9mZC1keW5hbWljLXBhZ2UtZ2xvYmFsLWFjdGlvbnM+XG4gICAgICAgIDxmZC1keW5hbWljLXBhZ2UtbGF5b3V0LWFjdGlvbnM+XG4gICAgICAgICAgICA8ZmQtdG9vbGJhciBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiIFtjbGVhckJvcmRlcl09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBmZC1idXR0b24gZmRUeXBlPVwidHJhbnNwYXJlbnRcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiB0aXRsZT1cIkNsb3NlXCIgKGNsaWNrKT1cIm9uQ2xvc2VFZGl0SG9tZSgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwic2FwLWljb24tLWRlY2xpbmVcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2ZkLXRvb2xiYXI+XG4gICAgICAgIDwvZmQtZHluYW1pYy1wYWdlLWxheW91dC1hY3Rpb25zPlxuICAgIDwvZmQtZHluYW1pYy1wYWdlLWhlYWRlcj5cblxuICAgIDxmZHAtaWNvbi10YWItYmFyXG4gICAgICAgIFtzdGFja0NvbnRlbnRdPVwic3RhY2tDb250ZW50XCJcbiAgICAgICAgbWF4Q29udGVudEhlaWdodD1cImF1dG9cIlxuICAgICAgICBhcmlhUm9sZWRlc2NyaXB0aW9uPVwiVGlsZXMgQ29udGFpbmVyXCJcbiAgICAgICAgKGljb25UYWJTZWxlY3RlZCk9XCJvblNlbGVjdGVkVGFiQ2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICAgICAgQGZvciAoYXBwVGlsZUdyb3VwIG9mIGFwcFRpbGVHcm91cHM7IHRyYWNrIF90cmFja0J5SWQoaSwgYXBwVGlsZUdyb3VwKTsgbGV0IGkgPSAkaW5kZXgpIHsgQGlmIChlZGl0IHx8XG4gICAgICAgIGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JWaXNpYmxlKSB7XG5cbiAgICAgICAgPGZkcC1pY29uLXRhYi1iYXItdGFiXG4gICAgICAgICAgICBbaWRdPVwiYXBwVGlsZUdyb3VwLklkXCJcbiAgICAgICAgICAgIFtjb2xvcl09XCJjb2xvclwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiYXBwVGlsZUdyb3VwLm5hdmlnYXRvclRpdGxlIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJhcHBUaWxlR3JvdXAubmF2aWdhdG9yVGl0bGUgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLWNvbnRlbnQgW2lkXT1cImFwcFRpbGVHcm91cC5JZFwiIGNka1Njcm9sbGFibGU+XG4gICAgICAgICAgICAgICAgPGJ0LXRpbGVzLXZpZXdlci1ncm91cFxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiZGV2aWNlU2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthcHBUaWxlR3JvdXBdPVwiYXBwVGlsZUdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgW2VkaXRdPVwiZWRpdFwiXG4gICAgICAgICAgICAgICAgICAgIFtydGxdPVwicnRsXCJcbiAgICAgICAgICAgICAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdGFja0NvbnRlbnRdPVwic3RhY2tDb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2lzQXBwVGlsZVN1Ykdyb3VwXT1cImZhbHNlIHx8IGhpZGVUYWJzXCJcbiAgICAgICAgICAgICAgICAgICAgKHRpbGVzRHJvcHBlZCk9XCJvbkRyb3AoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChyZW5hbWVBcHBUaWxlQ2xpY2spPVwicmVuYW1lQXBwVGlsZUNsaWNrLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChoaWRlQXBwVGlsZUNsaWNrKT1cImhpZGVBcHBUaWxlQ2xpY2suZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKHJlc2V0R3JvdXApPVwicmVzZXRHcm91cC5lbWl0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoZGVsZXRlR3JvdXApPVwiZGVsZXRlR3JvdXAuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKHRvZ2dsZUdyb3VwKT1cInRvZ2dsZUdyb3VwLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvYnQtdGlsZXMtdmlld2VyLWdyb3VwPlxuICAgICAgICAgICAgPC9mZC1keW5hbWljLXBhZ2UtY29udGVudD5cbiAgICAgICAgPC9mZHAtaWNvbi10YWItYmFyLXRhYj5cblxuICAgICAgICB9IH1cbiAgICA8L2ZkcC1pY29uLXRhYi1iYXI+XG5cbiAgICA8ZmQtZHluYW1pYy1wYWdlLWZvb3Rlcj5cbiAgICAgICAgQGlmIChlZGl0KSB7XG4gICAgICAgIDxkaXYgZmQtYmFyIGJhckRlc2lnbj1cImZvb3RlclwiPlxuICAgICAgICAgICAgPGRpdiBmZC1iYXItcmlnaHQ+XG4gICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidTYXZlQW5kQ2xvc2UnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkV4aXRFZGl0SG9tZShhcHBUaWxlR3JvdXBzKVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIDwvZmQtZHluYW1pYy1wYWdlLWZvb3Rlcj5cbjwvZmQtZHluYW1pYy1wYWdlPlxuIl19
@@ -164,10 +164,10 @@ export class TilesViewerContainerComponent extends BaseComponent {
164
164
  this._tilesService.saveOrderAppTiles(appTileGroup, actionLinks, true, appTileIdTransferedId);
165
165
  }
166
166
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TilesViewerContainerComponent, deps: [{ token: i1.PortalService }, { token: i2.TilesService }, { token: i3.TilesViewerService }], target: i0.ɵɵFactoryTarget.Component }); }
167
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: TilesViewerContainerComponent, selector: "bt-tiles-viewer-container", providers: [TilesViewerService], usesInheritance: true, ngImport: i0, template: "@if (appTileGroups$ | async; as appTileGroups) { @if (appTileGroups) {\n<bt-tiles-viewer\n [class.edit]=\"(edit$ | async)!!\"\n [appTileGroups]=\"appTileGroups\"\n [loading]=\"(viewLoading$ | async)!!\"\n [edit]=\"(edit$ | async)!!\"\n [rtl]=\"(rtl$ | async)!!\"\n [stackContent]=\"(stackContent$ | async)!!\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n [defaultTab]=\"selectedAppGroupId\"\n (stackContentChange)=\"onStackContentChanged($event)\"\n (closeEditHome)=\"onCloseEditHome()\"\n (save)=\"onExitEditHome($event)\"\n (listDropped)=\"onDropGroup($event)\"\n (tabChanged)=\"onSelectedTabChange($event)\"\n (toggleGroup)=\"onToggleShowHide($event)\"\n (resetGroup)=\"onReset($event)\"\n (deleteGroup)=\"onDelete($event)\"\n (tilesDropped)=\"onDrop($event)\"\n (hideAppTileClick)=\"onHideAppTile($event)\"\n (renameAppTileClick)=\"onRenameAppTile($event)\"\n></bt-tiles-viewer>\n} @else {\n<bsu-no-data></bsu-no-data>\n} } @else {\n<bsu-mask></bsu-mask>\n}\n\n<ng-template #loading>\n <bsu-mask></bsu-mask>\n</ng-template>\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: i4.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i4.NoDataComponent, selector: "bsu-no-data", inputs: ["simple"] }, { kind: "component", type: i5.TilesViewerComponent, selector: "bt-tiles-viewer", inputs: ["appTileGroups", "loading", "edit", "rtl", "defaultTab", "stackContent", "deviceSize", "selectedAppGroupId", "DynamicComponents"], outputs: ["stackContentChange", "closeEditHome", "save", "listDropped", "tabChanged", "toggleGroup", "resetGroup", "deleteGroup", "hideAppTileClick", "renameAppTileClick", "tilesDropped"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
167
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: TilesViewerContainerComponent, selector: "bt-tiles-viewer-container", providers: [TilesViewerService], usesInheritance: true, ngImport: i0, template: "@if (appTileGroups$ | async; as appTileGroups) { @if (appTileGroups) {\r\n<bt-tiles-viewer\r\n [class.edit]=\"(edit$ | async)!!\"\r\n [appTileGroups]=\"appTileGroups\"\r\n [loading]=\"(viewLoading$ | async)!!\"\r\n [hideTabs]=\"settings?.HideTabs\"\r\n [edit]=\"(edit$ | async)!!\"\r\n [rtl]=\"(rtl$ | async)!!\"\r\n [stackContent]=\"(stackContent$ | async)!!\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n [defaultTab]=\"selectedAppGroupId\"\r\n (stackContentChange)=\"onStackContentChanged($event)\"\r\n (closeEditHome)=\"onCloseEditHome()\"\r\n (save)=\"onExitEditHome($event)\"\r\n (listDropped)=\"onDropGroup($event)\"\r\n (tabChanged)=\"onSelectedTabChange($event)\"\r\n (toggleGroup)=\"onToggleShowHide($event)\"\r\n (resetGroup)=\"onReset($event)\"\r\n (deleteGroup)=\"onDelete($event)\"\r\n (tilesDropped)=\"onDrop($event)\"\r\n (hideAppTileClick)=\"onHideAppTile($event)\"\r\n (renameAppTileClick)=\"onRenameAppTile($event)\"\r\n></bt-tiles-viewer>\r\n} @else {\r\n<bsu-no-data></bsu-no-data>\r\n} } @else {\r\n<bsu-mask></bsu-mask>\r\n}\r\n\r\n<ng-template #loading>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n", styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: i4.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i4.NoDataComponent, selector: "bsu-no-data", inputs: ["simple"] }, { kind: "component", type: i5.TilesViewerComponent, selector: "bt-tiles-viewer", inputs: ["appTileGroups", "loading", "edit", "rtl", "defaultTab", "stackContent", "deviceSize", "selectedAppGroupId", "hideTabs", "DynamicComponents"], outputs: ["stackContentChange", "closeEditHome", "save", "listDropped", "tabChanged", "toggleGroup", "resetGroup", "deleteGroup", "hideAppTileClick", "renameAppTileClick", "tilesDropped"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
168
168
  }
169
169
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TilesViewerContainerComponent, decorators: [{
170
170
  type: Component,
171
- args: [{ selector: 'bt-tiles-viewer-container', providers: [TilesViewerService], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (appTileGroups$ | async; as appTileGroups) { @if (appTileGroups) {\n<bt-tiles-viewer\n [class.edit]=\"(edit$ | async)!!\"\n [appTileGroups]=\"appTileGroups\"\n [loading]=\"(viewLoading$ | async)!!\"\n [edit]=\"(edit$ | async)!!\"\n [rtl]=\"(rtl$ | async)!!\"\n [stackContent]=\"(stackContent$ | async)!!\"\n [deviceSize]=\"(deviceSize$ | async)!!\"\n [defaultTab]=\"selectedAppGroupId\"\n (stackContentChange)=\"onStackContentChanged($event)\"\n (closeEditHome)=\"onCloseEditHome()\"\n (save)=\"onExitEditHome($event)\"\n (listDropped)=\"onDropGroup($event)\"\n (tabChanged)=\"onSelectedTabChange($event)\"\n (toggleGroup)=\"onToggleShowHide($event)\"\n (resetGroup)=\"onReset($event)\"\n (deleteGroup)=\"onDelete($event)\"\n (tilesDropped)=\"onDrop($event)\"\n (hideAppTileClick)=\"onHideAppTile($event)\"\n (renameAppTileClick)=\"onRenameAppTile($event)\"\n></bt-tiles-viewer>\n} @else {\n<bsu-no-data></bsu-no-data>\n} } @else {\n<bsu-mask></bsu-mask>\n}\n\n<ng-template #loading>\n <bsu-mask></bsu-mask>\n</ng-template>\n", styles: [":host{display:block}\n"] }]
171
+ args: [{ selector: 'bt-tiles-viewer-container', providers: [TilesViewerService], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (appTileGroups$ | async; as appTileGroups) { @if (appTileGroups) {\r\n<bt-tiles-viewer\r\n [class.edit]=\"(edit$ | async)!!\"\r\n [appTileGroups]=\"appTileGroups\"\r\n [loading]=\"(viewLoading$ | async)!!\"\r\n [hideTabs]=\"settings?.HideTabs\"\r\n [edit]=\"(edit$ | async)!!\"\r\n [rtl]=\"(rtl$ | async)!!\"\r\n [stackContent]=\"(stackContent$ | async)!!\"\r\n [deviceSize]=\"(deviceSize$ | async)!!\"\r\n [defaultTab]=\"selectedAppGroupId\"\r\n (stackContentChange)=\"onStackContentChanged($event)\"\r\n (closeEditHome)=\"onCloseEditHome()\"\r\n (save)=\"onExitEditHome($event)\"\r\n (listDropped)=\"onDropGroup($event)\"\r\n (tabChanged)=\"onSelectedTabChange($event)\"\r\n (toggleGroup)=\"onToggleShowHide($event)\"\r\n (resetGroup)=\"onReset($event)\"\r\n (deleteGroup)=\"onDelete($event)\"\r\n (tilesDropped)=\"onDrop($event)\"\r\n (hideAppTileClick)=\"onHideAppTile($event)\"\r\n (renameAppTileClick)=\"onRenameAppTile($event)\"\r\n></bt-tiles-viewer>\r\n} @else {\r\n<bsu-no-data></bsu-no-data>\r\n} } @else {\r\n<bsu-mask></bsu-mask>\r\n}\r\n\r\n<ng-template #loading>\r\n <bsu-mask></bsu-mask>\r\n</ng-template>\r\n", styles: [":host{display:block}\n"] }]
172
172
  }], ctorParameters: () => [{ type: i1.PortalService }, { type: i2.TilesService }, { type: i3.TilesViewerService }] });
173
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZXMtdmlld2VyLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3RpbGVzLXZpZXdlci1jb250YWluZXIvdGlsZXMtdmlld2VyLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3RpbGVzLXZpZXdlci1jb250YWluZXIvdGlsZXMtdmlld2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTlGLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLG9CQUFvQixFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRGLE9BQU8sRUFBRSxhQUFhLEVBQTZELE1BQU0sc0JBQXNCLENBQUM7QUFFaEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7QUFVekQsTUFBTSxPQUFPLDZCQUE4QixTQUFRLGFBQWE7SUFnQjVELFlBQ2MsY0FBNkIsRUFDN0IsYUFBMkIsRUFDM0IsbUJBQXVDO1FBRWpELEtBQUssRUFBRSxDQUFDO1FBSkUsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0Isa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0Isd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQWRyRCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7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QUMsRUFBRSxDQUNwRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7OEdBdExRLDZCQUE2QjtrR0FBN0IsNkJBQTZCLG9EQUgzQixDQUFDLGtCQUFrQixDQUFDLGlEQ2ZuQyxta0NBK0JBOzsyRkRiYSw2QkFBNkI7a0JBUHpDLFNBQVM7K0JBQ0ksMkJBQTJCLGFBRzFCLENBQUMsa0JBQWtCLENBQUMsbUJBQ2QsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXksIHRyYW5zZmVyQXJyYXlJdGVtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwsIG1hcCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50LCBNZXRhb2JqZWN0RGF0YU1vZGVsLCBQb3J0YWxTZXJ2aWNlLCBBYmJyZXZhdGlvbkRldmljZVNpemUgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBUaWxlc1NlcnZpY2UgfSBmcm9tICcuLi90aWxlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFRpbGVzVmlld2VyU2VydmljZSB9IGZyb20gJy4uL3RpbGVzLXZpZXdlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSWNvblRhYkJhckNvbXBvbmVudCwgSWNvblRhYkJhclRhYkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2J0LXRpbGVzLXZpZXdlci1jb250YWluZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90aWxlcy12aWV3ZXItY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90aWxlcy12aWV3ZXItY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbVGlsZXNWaWV3ZXJTZXJ2aWNlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUaWxlc1ZpZXdlckNvbnRhaW5lckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgYXBwVGlsZUdyb3VwcyQ6IE9ic2VydmFibGU8TWV0YW9iamVjdERhdGFNb2RlbFtdPjtcbiAgICB2aWV3TG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgZGV2aWNlU2l6ZSQ6IE9ic2VydmFibGU8QWJicmV2YXRpb25EZXZpY2VTaXplPjtcbiAgICBlZGl0JDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBjaGFuZ2VkT3JkZXIgPSBmYWxzZTtcbiAgICB1c2VyU3RhY2tDb250ZW50ID0gZmFsc2U7XG4gICAgaW5pdGlhbFN0YWNrQ29udGVudFZhbHVlID0gZmFsc2U7XG4gICAgdXNlclBvcnRhbFNldHRpbmdzOiBNZXRhb2JqZWN0RGF0YU1vZGVsO1xuICAgIHN0YWNrQ29udGVudCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgZmlyc3RTZWxlY3RlZCA9IGZhbHNlO1xuICAgIHJ0bCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgc2VsZWN0ZWRBcHBHcm91cElkOiBzdHJpbmc7XG4gICAgc3RhY2tDb250ZW50ID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIF9hY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gICAgcHJvdGVjdGVkIF9yb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIF9wb3J0YWxTZXJ2aWNlOiBQb3J0YWxTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgX3RpbGVzU2VydmljZTogVGlsZXNTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgX3RpbGVzVmlld2VyU2VydmljZTogVGlsZXNWaWV3ZXJTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuc3RhY2tDb250ZW50JCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UudXNlclBvcnRhbFNldHRpbmdzJC5waXBlKFxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpLFxuICAgICAgICAgICAgbWFwKChzZXR0aW5nczogUmVjb3JkPHN0cmluZywgTWV0YW9iamVjdERhdGFNb2RlbD4pID0+IHNldHRpbmdzWydVc2VyUG9ydGFsU2V0dGluZ3MnXSksXG4gICAgICAgICAgICBtYXAoKHNldHRpbmdzOiBNZXRhb2JqZWN0RGF0YU1vZGVsKSA9PiBzZXR0aW5ncz8uVGlsZXNTdGFja0NvbnRlbnQpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnN0YWNrQ29udGVudCQuc3Vic2NyaWJlKChzdGFja0NvbnRlbnQpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbFN0YWNrQ29udGVudFZhbHVlID0gdGhpcy51c2VyU3RhY2tDb250ZW50ID0gc3RhY2tDb250ZW50O1xuICAgICAgICAgICAgaWYgKHN0YWNrQ29udGVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2tDb250ZW50ID0gc3RhY2tDb250ZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy52aWV3TG9hZGluZyQgPSB0aGlzLl90aWxlc1ZpZXdlclNlcnZpY2Uudmlld0xvYWRpbmckO1xuICAgICAgICB0aGlzLnNlbGVjdGVkQXBwR3JvdXBJZCA9IHRoaXMuX3RpbGVzVmlld2VyU2VydmljZS5zZWxlY3RlZEFwcEdyb3VwSWQ7XG4gICAgICAgIHRoaXMucnRsJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UucnRsJDtcbiAgICAgICAgdGhpcy5kZXZpY2VTaXplJCA9IHRoaXMuX3BvcnRhbFNlcnZpY2UuZGV2aWNlU2l6ZSQ7XG4gICAgICAgIHRoaXMuZWRpdCQgPSB0aGlzLl90aWxlc1NlcnZpY2UuZWRpdCQ7XG4gICAgICAgIHRoaXMuYXBwVGlsZUdyb3VwcyQgPSB0aGlzLl90aWxlc1NlcnZpY2UuaG9tZUFwcFRpbGVHcm91cHMkO1xuICAgICAgICB0aGlzLmFwcFRpbGVHcm91cHMkLnBpcGUod2l0aExhdGVzdEZyb20odGhpcy5zdGFja0NvbnRlbnQkKSkuc3Vic2NyaWJlKChbdGlsZXMsIHN0YWNrQ29udGVudF0pID0+IHtcbiAgICAgICAgICAgIGlmICh0aWxlcyAmJiBzdGFja0NvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICB0aWxlcy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpbGVzU2VydmljZS5sb2FkQXBwVGlsZUdyb3VwcyhjKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAvLyAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFxuICAgICAgICAvLyAgICAgICAgIFsnaG9tZScsIHsgb3V0bGV0czogeyBkaWFsb2c6IFsnYXBwZ3JvdXBkaWFsb2cnLCAnXzJ0ZXZ4WEstcnRjRm5YX1pzZkcxTFhfVnZSMEs4MSddIH0gfV0sXG4gICAgICAgIC8vICAgICAgICAgeyByZWxhdGl2ZVRvOiB0aGlzLl9hY3RpdmF0ZWRSb3V0ZSB9XG4gICAgICAgIC8vICAgICApO1xuICAgICAgICAvLyB9LCAzMDAwKTtcbiAgICB9XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMuX3RpbGVzU2VydmljZS5zZXRFZGl0SG9tZShmYWxzZSk7XG4gICAgfVxuICAgIG9uU2VsZWN0ZWRUYWJDaGFuZ2UoZToge1xuICAgICAgICBmaXJzdFNlbGVjdGVkOiBib29sZWFuO1xuICAgICAgICBzZWxlY3RlZFRhYlRpdGxlOiBzdHJpbmc7XG4gICAgICAgIHRhYlBhbmVsczogSWNvblRhYkJhclRhYkNvbXBvbmVudFtdO1xuICAgICAgICBhcHBUaWxlR3JvdXBzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW107XG4gICAgICAgIHRhYmJhckNvbXBvbmVudDogSWNvblRhYkJhckNvbXBvbmVudDtcbiAgICB9KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgZmlyc3RTZWxlY3RlZCwgc2VsZWN0ZWRUYWJUaXRsZSwgYXBwVGlsZUdyb3VwczogYXBwR3JvdXBzLCB0YWJQYW5lbHMsIHRhYmJhckNvbXBvbmVudCB9ID0gZTtcblxuICAgICAgICBsZXQgYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsIHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAodGhpcy5zdGFja0NvbnRlbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlyc3RTZWxlY3RlZCkge1xuICAgICAgICAgICAgY29uc3QgbGFzdFNlbGVjdGVkQXBwR3JvdXBJZCA9IHRoaXMuX3RpbGVzVmlld2VyU2VydmljZS5zZWxlY3RlZEFwcEdyb3VwSWQ7XG4gICAgICAgICAgICBpZiAobGFzdFNlbGVjdGVkQXBwR3JvdXBJZCkge1xuICAgICAgICAgICAgICAgIGFwcFRpbGVHcm91cCA9IGFwcEdyb3Vwcy5maW5kKChjKSA9PiBjLklkID09PSBsYXN0U2VsZWN0ZWRBcHBHcm91cElkKTtcbiAgICAgICAgICAgICAgICBpZiAoYXBwVGlsZUdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RUYWIgPSB0YWJQYW5lbHMuZmluZCgoYykgPT4gYy5sYWJlbCA9PT0gYXBwVGlsZUdyb3VwPy5uYXZpZ2F0b3JUaXRsZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsYXN0VGFiICYmIHNlbGVjdGVkVGFiVGl0bGUgIT09IGxhc3RUYWIubGFiZWwoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBwVGlsZUdyb3VwID0gYXBwR3JvdXBzLmZpbmQoKGMpID0+IGMuSWQgPT09IGxhc3RTZWxlY3RlZEFwcEdyb3VwSWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFiYmFyQ29tcG9uZW50LnNlbGVjdFRhYihsYXN0VGFiLmlkKCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghYXBwVGlsZUdyb3VwKSB7XG4gICAgICAgICAgICBhcHBUaWxlR3JvdXAgPSBhcHBHcm91cHMuZmluZCgoYykgPT4gYy5uYXZpZ2F0b3JUaXRsZSA9PT0gc2VsZWN0ZWRUYWJUaXRsZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFwcFRpbGVHcm91cCkge1xuICAgICAgICAgICAgdGhpcy5fdGlsZXNWaWV3ZXJTZXJ2aWNlLnNldFNlbGVjdGVkVGFiKGFwcFRpbGVHcm91cCk7XG4gICAgICAgICAgICB0aGlzLl90aWxlc1ZpZXdlclNlcnZpY2UubG9hZEFwcEdyb3VwKGFwcFRpbGVHcm91cCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25Ecm9wR3JvdXAoZTogeyBhcHBUaWxlR3JvdXBzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW107IGV2ZW50OiBDZGtEcmFnRHJvcDxNZXRhb2JqZWN0RGF0YU1vZGVsW10+IH0pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBldmVudCwgYXBwVGlsZUdyb3VwczogYXBwR3JvdXBzIH0gPSBlO1xuXG4gICAgICAgIG1vdmVJdGVtSW5BcnJheShhcHBHcm91cHMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VkT3JkZXIgPSB0cnVlO1xuICAgICAgICAvLyB0aGlzLnNhdmVPcmRlckFwcFRpbGVzKGFsbEFwcHMsIGdyb3VwKTtcbiAgICB9XG4gICAgb25Ecm9wKGU6IHsgYXBwVGlsZUdyb3VwOyBldmVudDogQ2RrRHJhZ0Ryb3A8eyBpc1RpbGU6IGJvb2xlYW47IGl0ZW1zOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10gfT4gfSk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGFwcFRpbGVHcm91cDogZ3JvdXAsIGV2ZW50IH0gPSBlO1xuICAgICAgICBjb25zdCBwcmV2aW91c0NvbnRhaW5lciA9IGV2ZW50LnByZXZpb3VzQ29udGFpbmVyO1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSBldmVudC5jb250YWluZXI7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lcklzVGlsZSA9IGNvbnRhaW5lci5kYXRhLmlzVGlsZTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNJdGVtcyA9IHByZXZpb3VzQ29udGFpbmVyLmRhdGEuaXRlbXM7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckl0ZW1zID0gY29udGFpbmVyLmRhdGEuaXRlbXM7XG4gICAgICAgIGNvbnN0IHsgcHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4IH0gPSBldmVudDtcbiAgICAgICAgaWYgKHByZXZpb3VzQ29udGFpbmVyID09PSBjb250YWluZXIpIHtcbiAgICAgICAgICAgIG1vdmVJdGVtSW5BcnJheShwcmV2aW91c0l0ZW1zLCBwcmV2aW91c0luZGV4LCBjdXJyZW50SW5kZXgpO1xuICAgICAgICAgICAgaWYgKGNvbnRhaW5lcklzVGlsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVPcmRlckFwcFRpbGVzKGdyb3VwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2F2ZU9yZGVyQWN0aW9uTGlua3MoZ3JvdXApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJhbnNmZXJBcnJheUl0ZW0ocHJldmlvdXNJdGVtcywgY29udGFpbmVySXRlbXMsIHByZXZpb3VzSW5kZXgsIGN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICBjb25zdCBhcHBUaWxlSWRUcmFuc2ZlcmVkSWQgPSBjb250YWluZXJJdGVtc1tjdXJyZW50SW5kZXhdPy5BcHBUaWxlPy5JZCA/PyBjb250YWluZXJJdGVtc1tjdXJyZW50SW5kZXhdLklkO1xuICAgICAgICAgICAgaWYgKGNvbnRhaW5lcklzVGlsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVPcmRlckFjdGlvbkxpbmtzKGdyb3VwKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zYXZlT3JkZXJBcHBUaWxlcyhncm91cCwgYXBwVGlsZUlkVHJhbnNmZXJlZElkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2F2ZU9yZGVyQXBwVGlsZXMoZ3JvdXApO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVPcmRlckFjdGlvbkxpbmtzKGdyb3VwLCBhcHBUaWxlSWRUcmFuc2ZlcmVkSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIG9uU3RhY2tDb250ZW50Q2hhbmdlZChjaGVja2VkKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXNlclN0YWNrQ29udGVudCA9IGNoZWNrZWQ7XG4gICAgfVxuXG4gICAgb25FeGl0RWRpdEhvbWUoYXBwVGlsZUdyb3VwczogTWV0YW9iamVjdERhdGFNb2RlbFtdKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNoYW5nZWRPcmRlcikge1xuICAgICAgICAgICAgdGhpcy5fdGlsZXNWaWV3ZXJTZXJ2aWNlLnNhdmVBcHBHcm91cE9yZGVycyhhcHBUaWxlR3JvdXBzKTtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlZE9yZGVyID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudXNlclN0YWNrQ29udGVudCAhPT0gdGhpcy5pbml0aWFsU3RhY2tDb250ZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RpbGVzU2VydmljZS5zYXZlVGlsZXNTdGFja0NvbnRlbnQodGhpcy51c2VyU3RhY2tDb250ZW50KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZXRFZGl0SG9tZShmYWxzZSk7XG4gICAgfVxuICAgIG9uQ2xvc2VFZGl0SG9tZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2V0RWRpdEhvbWUoZmFsc2UpO1xuICAgIH1cblxuICAgIG9uRGVsZXRlKGFwcFRpbGVHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90aWxlc1ZpZXdlclNlcnZpY2UuZGVsZXRlQXBwR3JvdXAoYXBwVGlsZUdyb3VwKTtcbiAgICB9XG5cbiAgICBvblRvZ2dsZVNob3dIaWRlKGFwcFRpbGVHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90aWxlc1ZpZXdlclNlcnZpY2UudG9nZ2xlQXBwR3JvdXBTZXR0aW5nVmlzaWJsZShhcHBUaWxlR3JvdXApO1xuICAgIH1cblxuICAgIG9uUmVzZXQoYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RpbGVzVmlld2VyU2VydmljZS5yZXNldEFwcEdyb3VwKGFwcFRpbGVHcm91cCk7XG4gICAgfVxuICAgIG9uSGlkZUFwcFRpbGUoYXBwVGlsZTogTWV0YW9iamVjdERhdGFNb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLl90aWxlc1ZpZXdlclNlcnZpY2UuaGlkZVRpbGUoYXBwVGlsZSk7XG4gICAgfVxuICAgIG9uUmVuYW1lQXBwVGlsZShhcHBUaWxlOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RpbGVzVmlld2VyU2VydmljZS5vcGVuUmVuYW1lRm9ybShhcHBUaWxlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfc2V0RWRpdEhvbWUodmFsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RpbGVzU2VydmljZS5zZXRFZGl0SG9tZSh2YWwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3NhdmVPcmRlckFwcFRpbGVzKGFwcFRpbGVHcm91cDogTWV0YW9iamVjdERhdGFNb2RlbCwgYXBwVGlsZUlkVHJhbnNmZXJlZElkOiBzdHJpbmcgPSAnMCcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYXBwVGlsZXMgPSBhcHBUaWxlR3JvdXAubmF2aWdhdG9yVGlsZXMubWFwKChhcHBUaWxlKSA9PlxuICAgICAgICAgICAgYXBwVGlsZS5BcHBUaWxlID8gYXBwVGlsZS5BcHBUaWxlLklkIDogYXBwVGlsZS5JZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLl90aWxlc1NlcnZpY2Uuc2F2ZU9yZGVyQXBwVGlsZXMoYXBwVGlsZUdyb3VwLCBhcHBUaWxlcywgZmFsc2UsIGFwcFRpbGVJZFRyYW5zZmVyZWRJZCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2F2ZU9yZGVyQWN0aW9uTGlua3MoYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsLCBhcHBUaWxlSWRUcmFuc2ZlcmVkSWQ6IHN0cmluZyA9ICcwJyk6IHZvaWQge1xuICAgICAgICBjb25zdCBhY3Rpb25MaW5rcyA9IGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JBY3Rpb25MaW5rcy5tYXAoKGFwcFRpbGUpID0+XG4gICAgICAgICAgICBhcHBUaWxlLkFwcFRpbGUgPyBhcHBUaWxlLkFwcFRpbGUuSWQgOiBhcHBUaWxlLklkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3RpbGVzU2VydmljZS5zYXZlT3JkZXJBcHBUaWxlcyhhcHBUaWxlR3JvdXAsIGFjdGlvbkxpbmtzLCB0cnVlLCBhcHBUaWxlSWRUcmFuc2ZlcmVkSWQpO1xuICAgIH1cbn1cbiIsIkBpZiAoYXBwVGlsZUdyb3VwcyQgfCBhc3luYzsgYXMgYXBwVGlsZUdyb3VwcykgeyBAaWYgKGFwcFRpbGVHcm91cHMpIHtcbjxidC10aWxlcy12aWV3ZXJcbiAgICBbY2xhc3MuZWRpdF09XCIoZWRpdCQgfCBhc3luYykhIVwiXG4gICAgW2FwcFRpbGVHcm91cHNdPVwiYXBwVGlsZUdyb3Vwc1wiXG4gICAgW2xvYWRpbmddPVwiKHZpZXdMb2FkaW5nJCB8IGFzeW5jKSEhXCJcbiAgICBbZWRpdF09XCIoZWRpdCQgfCBhc3luYykhIVwiXG4gICAgW3J0bF09XCIocnRsJCB8IGFzeW5jKSEhXCJcbiAgICBbc3RhY2tDb250ZW50XT1cIihzdGFja0NvbnRlbnQkIHwgYXN5bmMpISFcIlxuICAgIFtkZXZpY2VTaXplXT1cIihkZXZpY2VTaXplJCB8IGFzeW5jKSEhXCJcbiAgICBbZGVmYXVsdFRhYl09XCJzZWxlY3RlZEFwcEdyb3VwSWRcIlxuICAgIChzdGFja0NvbnRlbnRDaGFuZ2UpPVwib25TdGFja0NvbnRlbnRDaGFuZ2VkKCRldmVudClcIlxuICAgIChjbG9zZUVkaXRIb21lKT1cIm9uQ2xvc2VFZGl0SG9tZSgpXCJcbiAgICAoc2F2ZSk9XCJvbkV4aXRFZGl0SG9tZSgkZXZlbnQpXCJcbiAgICAobGlzdERyb3BwZWQpPVwib25Ecm9wR3JvdXAoJGV2ZW50KVwiXG4gICAgKHRhYkNoYW5nZWQpPVwib25TZWxlY3RlZFRhYkNoYW5nZSgkZXZlbnQpXCJcbiAgICAodG9nZ2xlR3JvdXApPVwib25Ub2dnbGVTaG93SGlkZSgkZXZlbnQpXCJcbiAgICAocmVzZXRHcm91cCk9XCJvblJlc2V0KCRldmVudClcIlxuICAgIChkZWxldGVHcm91cCk9XCJvbkRlbGV0ZSgkZXZlbnQpXCJcbiAgICAodGlsZXNEcm9wcGVkKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgICAoaGlkZUFwcFRpbGVDbGljayk9XCJvbkhpZGVBcHBUaWxlKCRldmVudClcIlxuICAgIChyZW5hbWVBcHBUaWxlQ2xpY2spPVwib25SZW5hbWVBcHBUaWxlKCRldmVudClcIlxuPjwvYnQtdGlsZXMtdmlld2VyPlxufSBAZWxzZSB7XG48YnN1LW5vLWRhdGE+PC9ic3Utbm8tZGF0YT5cbn0gfSBAZWxzZSB7XG48YnN1LW1hc2s+PC9ic3UtbWFzaz5cbn1cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICAgIDxic3UtbWFzaz48L2JzdS1tYXNrPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZXMtdmlld2VyLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3RpbGVzLXZpZXdlci1jb250YWluZXIvdGlsZXMtdmlld2VyLWNvbnRhaW5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYXJzYS10aWxlcy9zcmMvbGliL3RpbGVzLXZpZXdlci1jb250YWluZXIvdGlsZXMtdmlld2VyLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRTlGLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLG9CQUFvQixFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRGLE9BQU8sRUFBRSxhQUFhLEVBQTZELE1BQU0sc0JBQXNCLENBQUM7QUFFaEgsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7QUFVekQsTUFBTSxPQUFPLDZCQUE4QixTQUFRLGFBQWE7SUFpQjVELFlBQ2MsY0FBNkIsRUFDN0IsYUFBMkIsRUFDM0IsbUJBQXVDO1FBRWpELEtBQUssRUFBRSxDQUFDO1FBSkUsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDN0Isa0JBQWEsR0FBYixhQUFhLENBQWM7UUFDM0Isd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQWRyRCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7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QUMsRUFBRSxDQUNwRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7OEdBdkxRLDZCQUE2QjtrR0FBN0IsNkJBQTZCLG9EQUgzQixDQUFDLGtCQUFrQixDQUFDLGlEQ2ZuQywwcUNBZ0NBOzsyRkRkYSw2QkFBNkI7a0JBUHpDLFNBQVM7K0JBQ0ksMkJBQTJCLGFBRzFCLENBQUMsa0JBQWtCLENBQUMsbUJBQ2QsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXksIHRyYW5zZmVyQXJyYXlJdGVtIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwsIG1hcCwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50LCBNZXRhb2JqZWN0RGF0YU1vZGVsLCBQb3J0YWxTZXJ2aWNlLCBBYmJyZXZhdGlvbkRldmljZVNpemUgfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5pbXBvcnQgeyBUaWxlc1NlcnZpY2UgfSBmcm9tICcuLi90aWxlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFRpbGVzVmlld2VyU2VydmljZSB9IGZyb20gJy4uL3RpbGVzLXZpZXdlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSWNvblRhYkJhckNvbXBvbmVudCwgSWNvblRhYkJhclRhYkNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvcGxhdGZvcm0nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2J0LXRpbGVzLXZpZXdlci1jb250YWluZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90aWxlcy12aWV3ZXItY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi90aWxlcy12aWV3ZXItY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbVGlsZXNWaWV3ZXJTZXJ2aWNlXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUaWxlc1ZpZXdlckNvbnRhaW5lckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgc2V0dGluZ3M6IFRpbGVWaWV3ZXJTZXR0aW5ncztcbiAgICBhcHBUaWxlR3JvdXBzJDogT2JzZXJ2YWJsZTxNZXRhb2JqZWN0RGF0YU1vZGVsW10+O1xuICAgIHZpZXdMb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBkZXZpY2VTaXplJDogT2JzZXJ2YWJsZTxBYmJyZXZhdGlvbkRldmljZVNpemU+O1xuICAgIGVkaXQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGNoYW5nZWRPcmRlciA9IGZhbHNlO1xuICAgIHVzZXJTdGFja0NvbnRlbnQgPSBmYWxzZTtcbiAgICBpbml0aWFsU3RhY2tDb250ZW50VmFsdWUgPSBmYWxzZTtcbiAgICB1c2VyUG9ydGFsU2V0dGluZ3M6IE1ldGFvYmplY3REYXRhTW9kZWw7XG4gICAgc3RhY2tDb250ZW50JDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBmaXJzdFNlbGVjdGVkID0gZmFsc2U7XG4gICAgcnRsJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBzZWxlY3RlZEFwcEdyb3VwSWQ6IHN0cmluZztcbiAgICBzdGFja0NvbnRlbnQgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgX2FjdGl2YXRlZFJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgICBwcm90ZWN0ZWQgX3JvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgX3BvcnRhbFNlcnZpY2U6IFBvcnRhbFNlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBfdGlsZXNTZXJ2aWNlOiBUaWxlc1NlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCBfdGlsZXNWaWV3ZXJTZXJ2aWNlOiBUaWxlc1ZpZXdlclNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5zdGFja0NvbnRlbnQkID0gdGhpcy5fcG9ydGFsU2VydmljZS51c2VyUG9ydGFsU2V0dGluZ3MkLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCksXG4gICAgICAgICAgICBtYXAoKHNldHRpbmdzOiBSZWNvcmQ8c3RyaW5nLCBNZXRhb2JqZWN0RGF0YU1vZGVsPikgPT4gc2V0dGluZ3NbJ1VzZXJQb3J0YWxTZXR0aW5ncyddKSxcbiAgICAgICAgICAgIG1hcCgoc2V0dGluZ3M6IE1ldGFvYmplY3REYXRhTW9kZWwpID0+IHNldHRpbmdzPy5UaWxlc1N0YWNrQ29udGVudCksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc3RhY2tDb250ZW50JC5zdWJzY3JpYmUoKHN0YWNrQ29udGVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsU3RhY2tDb250ZW50VmFsdWUgPSB0aGlzLnVzZXJTdGFja0NvbnRlbnQgPSBzdGFja0NvbnRlbnQ7XG4gICAgICAgICAgICBpZiAoc3RhY2tDb250ZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFja0NvbnRlbnQgPSBzdGFja0NvbnRlbnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLnZpZXdMb2FkaW5nJCA9IHRoaXMuX3RpbGVzVmlld2VyU2VydmljZS52aWV3TG9hZGluZyQ7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBcHBHcm91cElkID0gdGhpcy5fdGlsZXNWaWV3ZXJTZXJ2aWNlLnNlbGVjdGVkQXBwR3JvdXBJZDtcbiAgICAgICAgdGhpcy5ydGwkID0gdGhpcy5fcG9ydGFsU2VydmljZS5ydGwkO1xuICAgICAgICB0aGlzLmRldmljZVNpemUkID0gdGhpcy5fcG9ydGFsU2VydmljZS5kZXZpY2VTaXplJDtcbiAgICAgICAgdGhpcy5lZGl0JCA9IHRoaXMuX3RpbGVzU2VydmljZS5lZGl0JDtcbiAgICAgICAgdGhpcy5hcHBUaWxlR3JvdXBzJCA9IHRoaXMuX3RpbGVzU2VydmljZS5ob21lQXBwVGlsZUdyb3VwcyQ7XG4gICAgICAgIHRoaXMuYXBwVGlsZUdyb3VwcyQucGlwZSh3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0YWNrQ29udGVudCQpKS5zdWJzY3JpYmUoKFt0aWxlcywgc3RhY2tDb250ZW50XSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRpbGVzICYmIHN0YWNrQ29udGVudCkge1xuICAgICAgICAgICAgICAgIHRpbGVzLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGlsZXNTZXJ2aWNlLmxvYWRBcHBUaWxlR3JvdXBzKGMpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIC8vICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoXG4gICAgICAgIC8vICAgICAgICAgWydob21lJywgeyBvdXRsZXRzOiB7IGRpYWxvZzogWydhcHBncm91cGRpYWxvZycsICdfMnRldnhYSy1ydGNGblhfWnNmRzFMWF9WdlIwSzgxJ10gfSB9XSxcbiAgICAgICAgLy8gICAgICAgICB7IHJlbGF0aXZlVG86IHRoaXMuX2FjdGl2YXRlZFJvdXRlIH1cbiAgICAgICAgLy8gICAgICk7XG4gICAgICAgIC8vIH0sIDMwMDApO1xuICAgIH1cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgdGhpcy5fdGlsZXNTZXJ2aWNlLnNldEVkaXRIb21lKGZhbHNlKTtcbiAgICB9XG4gICAgb25TZWxlY3RlZFRhYkNoYW5nZShlOiB7XG4gICAgICAgIGZpcnN0U2VsZWN0ZWQ6IGJvb2xlYW47XG4gICAgICAgIHNlbGVjdGVkVGFiVGl0bGU6IHN0cmluZztcbiAgICAgICAgdGFiUGFuZWxzOiBJY29uVGFiQmFyVGFiQ29tcG9uZW50W107XG4gICAgICAgIGFwcFRpbGVHcm91cHM6IE1ldGFvYmplY3REYXRhTW9kZWxbXTtcbiAgICAgICAgdGFiYmFyQ29tcG9uZW50OiBJY29uVGFiQmFyQ29tcG9uZW50O1xuICAgIH0pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyBmaXJzdFNlbGVjdGVkLCBzZWxlY3RlZFRhYlRpdGxlLCBhcHBUaWxlR3JvdXBzOiBhcHBHcm91cHMsIHRhYlBhbmVscywgdGFiYmFyQ29tcG9uZW50IH0gPSBlO1xuXG4gICAgICAgIGxldCBhcHBUaWxlR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwgfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh0aGlzLnN0YWNrQ29udGVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaXJzdFNlbGVjdGVkKSB7XG4gICAgICAgICAgICBjb25zdCBsYXN0U2VsZWN0ZWRBcHBHcm91cElkID0gdGhpcy5fdGlsZXNWaWV3ZXJTZXJ2aWNlLnNlbGVjdGVkQXBwR3JvdXBJZDtcbiAgICAgICAgICAgIGlmIChsYXN0U2VsZWN0ZWRBcHBHcm91cElkKSB7XG4gICAgICAgICAgICAgICAgYXBwVGlsZUdyb3VwID0gYXBwR3JvdXBzLmZpbmQoKGMpID0+IGMuSWQgPT09IGxhc3RTZWxlY3RlZEFwcEdyb3VwSWQpO1xuICAgICAgICAgICAgICAgIGlmIChhcHBUaWxlR3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbGFzdFRhYiA9IHRhYlBhbmVscy5maW5kKChjKSA9PiBjLmxhYmVsID09PSBhcHBUaWxlR3JvdXA/Lm5hdmlnYXRvclRpdGxlKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RUYWIgJiYgc2VsZWN0ZWRUYWJUaXRsZSAhPT0gbGFzdFRhYi5sYWJlbCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBUaWxlR3JvdXAgPSBhcHBHcm91cHMuZmluZCgoYykgPT4gYy5JZCA9PT0gbGFzdFNlbGVjdGVkQXBwR3JvdXBJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJiYXJDb21wb25lbnQuc2VsZWN0VGFiKGxhc3RUYWIuaWQoKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhcHBUaWxlR3JvdXApIHtcbiAgICAgICAgICAgIGFwcFRpbGVHcm91cCA9IGFwcEdyb3Vwcy5maW5kKChjKSA9PiBjLm5hdmlnYXRvclRpdGxlID09PSBzZWxlY3RlZFRhYlRpdGxlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXBwVGlsZUdyb3VwKSB7XG4gICAgICAgICAgICB0aGlzLl90aWxlc1ZpZXdlclNlcnZpY2Uuc2V0U2VsZWN0ZWRUYWIoYXBwVGlsZUdyb3VwKTtcbiAgICAgICAgICAgIHRoaXMuX3RpbGVzVmlld2VyU2VydmljZS5sb2FkQXBwR3JvdXAoYXBwVGlsZUdyb3VwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbkRyb3BHcm91cChlOiB7IGFwcFRpbGVHcm91cHM6IE1ldGFvYmplY3REYXRhTW9kZWxbXTsgZXZlbnQ6IENka0RyYWdEcm9wPE1ldGFvYmplY3REYXRhTW9kZWxbXT4gfSk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IGV2ZW50LCBhcHBUaWxlR3JvdXBzOiBhcHBHcm91cHMgfSA9IGU7XG5cbiAgICAgICAgbW92ZUl0ZW1JbkFycmF5KGFwcEdyb3VwcywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcblxuICAgICAgICB0aGlzLmNoYW5nZWRPcmRlciA9IHRydWU7XG4gICAgICAgIC8vIHRoaXMuc2F2ZU9yZGVyQXBwVGlsZXMoYWxsQXBwcywgZ3JvdXApO1xuICAgIH1cbiAgICBvbkRyb3AoZTogeyBhcHBUaWxlR3JvdXA7IGV2ZW50OiBDZGtEcmFnRHJvcDx7IGlzVGlsZTogYm9vbGVhbjsgaXRlbXM6IE1ldGFvYmplY3REYXRhTW9kZWxbXSB9PiB9KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgYXBwVGlsZUdyb3VwOiBncm91cCwgZXZlbnQgfSA9IGU7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzQ29udGFpbmVyID0gZXZlbnQucHJldmlvdXNDb250YWluZXI7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGV2ZW50LmNvbnRhaW5lcjtcbiAgICAgICAgY29uc3QgY29udGFpbmVySXNUaWxlID0gY29udGFpbmVyLmRhdGEuaXNUaWxlO1xuICAgICAgICBjb25zdCBwcmV2aW91c0l0ZW1zID0gcHJldmlvdXNDb250YWluZXIuZGF0YS5pdGVtcztcbiAgICAgICAgY29uc3QgY29udGFpbmVySXRlbXMgPSBjb250YWluZXIuZGF0YS5pdGVtcztcbiAgICAgICAgY29uc3QgeyBwcmV2aW91c0luZGV4LCBjdXJyZW50SW5kZXggfSA9IGV2ZW50O1xuICAgICAgICBpZiAocHJldmlvdXNDb250YWluZXIgPT09IGNvbnRhaW5lcikge1xuICAgICAgICAgICAgbW92ZUl0ZW1JbkFycmF5KHByZXZpb3VzSXRlbXMsIHByZXZpb3VzSW5kZXgsIGN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICBpZiAoY29udGFpbmVySXNUaWxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2F2ZU9yZGVyQXBwVGlsZXMoZ3JvdXApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zYXZlT3JkZXJBY3Rpb25MaW5rcyhncm91cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cmFuc2ZlckFycmF5SXRlbShwcmV2aW91c0l0ZW1zLCBjb250YWluZXJJdGVtcywgcHJldmlvdXNJbmRleCwgY3VycmVudEluZGV4KTtcbiAgICAgICAgICAgIGNvbnN0IGFwcFRpbGVJZFRyYW5zZmVyZWRJZCA9IGNvbnRhaW5lckl0ZW1zW2N1cnJlbnRJbmRleF0/LkFwcFRpbGU/LklkID8/IGNvbnRhaW5lckl0ZW1zW2N1cnJlbnRJbmRleF0uSWQ7XG4gICAgICAgICAgICBpZiAoY29udGFpbmVySXNUaWxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2F2ZU9yZGVyQWN0aW9uTGlua3MoZ3JvdXApO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NhdmVPcmRlckFwcFRpbGVzKGdyb3VwLCBhcHBUaWxlSWRUcmFuc2ZlcmVkSWQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zYXZlT3JkZXJBcHBUaWxlcyhncm91cCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2F2ZU9yZGVyQWN0aW9uTGlua3MoZ3JvdXAsIGFwcFRpbGVJZFRyYW5zZmVyZWRJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25TdGFja0NvbnRlbnRDaGFuZ2VkKGNoZWNrZWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51c2VyU3RhY2tDb250ZW50ID0gY2hlY2tlZDtcbiAgICB9XG5cbiAgICBvbkV4aXRFZGl0SG9tZShhcHBUaWxlR3JvdXBzOiBNZXRhb2JqZWN0RGF0YU1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY2hhbmdlZE9yZGVyKSB7XG4gICAgICAgICAgICB0aGlzLl90aWxlc1ZpZXdlclNlcnZpY2Uuc2F2ZUFwcEdyb3VwT3JkZXJzKGFwcFRpbGVHcm91cHMpO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VkT3JkZXIgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy51c2VyU3RhY2tDb250ZW50ICE9PSB0aGlzLmluaXRpYWxTdGFja0NvbnRlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5fdGlsZXNTZXJ2aWNlLnNhdmVUaWxlc1N0YWNrQ29udGVudCh0aGlzLnVzZXJTdGFja0NvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NldEVkaXRIb21lKGZhbHNlKTtcbiAgICB9XG4gICAgb25DbG9zZUVkaXRIb21lKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZXRFZGl0SG9tZShmYWxzZSk7XG4gICAgfVxuXG4gICAgb25EZWxldGUoYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RpbGVzVmlld2VyU2VydmljZS5kZWxldGVBcHBHcm91cChhcHBUaWxlR3JvdXApO1xuICAgIH1cblxuICAgIG9uVG9nZ2xlU2hvd0hpZGUoYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RpbGVzVmlld2VyU2VydmljZS50b2dnbGVBcHBHcm91cFNldHRpbmdWaXNpYmxlKGFwcFRpbGVHcm91cCk7XG4gICAgfVxuXG4gICAgb25SZXNldChhcHBUaWxlR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGlsZXNWaWV3ZXJTZXJ2aWNlLnJlc2V0QXBwR3JvdXAoYXBwVGlsZUdyb3VwKTtcbiAgICB9XG4gICAgb25IaWRlQXBwVGlsZShhcHBUaWxlOiBNZXRhb2JqZWN0RGF0YU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3RpbGVzVmlld2VyU2VydmljZS5oaWRlVGlsZShhcHBUaWxlKTtcbiAgICB9XG4gICAgb25SZW5hbWVBcHBUaWxlKGFwcFRpbGU6IE1ldGFvYmplY3REYXRhTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGlsZXNWaWV3ZXJTZXJ2aWNlLm9wZW5SZW5hbWVGb3JtKGFwcFRpbGUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9zZXRFZGl0SG9tZSh2YWwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fdGlsZXNTZXJ2aWNlLnNldEVkaXRIb21lKHZhbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2F2ZU9yZGVyQXBwVGlsZXMoYXBwVGlsZUdyb3VwOiBNZXRhb2JqZWN0RGF0YU1vZGVsLCBhcHBUaWxlSWRUcmFuc2ZlcmVkSWQ6IHN0cmluZyA9ICcwJyk6IHZvaWQge1xuICAgICAgICBjb25zdCBhcHBUaWxlcyA9IGFwcFRpbGVHcm91cC5uYXZpZ2F0b3JUaWxlcy5tYXAoKGFwcFRpbGUpID0+XG4gICAgICAgICAgICBhcHBUaWxlLkFwcFRpbGUgPyBhcHBUaWxlLkFwcFRpbGUuSWQgOiBhcHBUaWxlLklkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX3RpbGVzU2VydmljZS5zYXZlT3JkZXJBcHBUaWxlcyhhcHBUaWxlR3JvdXAsIGFwcFRpbGVzLCBmYWxzZSwgYXBwVGlsZUlkVHJhbnNmZXJlZElkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zYXZlT3JkZXJBY3Rpb25MaW5rcyhhcHBUaWxlR3JvdXA6IE1ldGFvYmplY3REYXRhTW9kZWwsIGFwcFRpbGVJZFRyYW5zZmVyZWRJZDogc3RyaW5nID0gJzAnKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFjdGlvbkxpbmtzID0gYXBwVGlsZUdyb3VwLm5hdmlnYXRvckFjdGlvbkxpbmtzLm1hcCgoYXBwVGlsZSkgPT5cbiAgICAgICAgICAgIGFwcFRpbGUuQXBwVGlsZSA/IGFwcFRpbGUuQXBwVGlsZS5JZCA6IGFwcFRpbGUuSWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fdGlsZXNTZXJ2aWNlLnNhdmVPcmRlckFwcFRpbGVzKGFwcFRpbGVHcm91cCwgYWN0aW9uTGlua3MsIHRydWUsIGFwcFRpbGVJZFRyYW5zZmVyZWRJZCk7XG4gICAgfVxufVxuaW50ZXJmYWNlIFRpbGVWaWV3ZXJTZXR0aW5ncyBleHRlbmRzIE1ldGFvYmplY3REYXRhTW9kZWwge1xuICAgIEhpZGVUYWJzOiBib29sZWFuO1xufVxuIiwiQGlmIChhcHBUaWxlR3JvdXBzJCB8IGFzeW5jOyBhcyBhcHBUaWxlR3JvdXBzKSB7IEBpZiAoYXBwVGlsZUdyb3Vwcykge1xyXG48YnQtdGlsZXMtdmlld2VyXHJcbiAgICBbY2xhc3MuZWRpdF09XCIoZWRpdCQgfCBhc3luYykhIVwiXHJcbiAgICBbYXBwVGlsZUdyb3Vwc109XCJhcHBUaWxlR3JvdXBzXCJcclxuICAgIFtsb2FkaW5nXT1cIih2aWV3TG9hZGluZyQgfCBhc3luYykhIVwiXHJcbiAgICBbaGlkZVRhYnNdPVwic2V0dGluZ3M/LkhpZGVUYWJzXCJcclxuICAgIFtlZGl0XT1cIihlZGl0JCB8IGFzeW5jKSEhXCJcclxuICAgIFtydGxdPVwiKHJ0bCQgfCBhc3luYykhIVwiXHJcbiAgICBbc3RhY2tDb250ZW50XT1cIihzdGFja0NvbnRlbnQkIHwgYXN5bmMpISFcIlxyXG4gICAgW2RldmljZVNpemVdPVwiKGRldmljZVNpemUkIHwgYXN5bmMpISFcIlxyXG4gICAgW2RlZmF1bHRUYWJdPVwic2VsZWN0ZWRBcHBHcm91cElkXCJcclxuICAgIChzdGFja0NvbnRlbnRDaGFuZ2UpPVwib25TdGFja0NvbnRlbnRDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgKGNsb3NlRWRpdEhvbWUpPVwib25DbG9zZUVkaXRIb21lKClcIlxyXG4gICAgKHNhdmUpPVwib25FeGl0RWRpdEhvbWUoJGV2ZW50KVwiXHJcbiAgICAobGlzdERyb3BwZWQpPVwib25Ecm9wR3JvdXAoJGV2ZW50KVwiXHJcbiAgICAodGFiQ2hhbmdlZCk9XCJvblNlbGVjdGVkVGFiQ2hhbmdlKCRldmVudClcIlxyXG4gICAgKHRvZ2dsZUdyb3VwKT1cIm9uVG9nZ2xlU2hvd0hpZGUoJGV2ZW50KVwiXHJcbiAgICAocmVzZXRHcm91cCk9XCJvblJlc2V0KCRldmVudClcIlxyXG4gICAgKGRlbGV0ZUdyb3VwKT1cIm9uRGVsZXRlKCRldmVudClcIlxyXG4gICAgKHRpbGVzRHJvcHBlZCk9XCJvbkRyb3AoJGV2ZW50KVwiXHJcbiAgICAoaGlkZUFwcFRpbGVDbGljayk9XCJvbkhpZGVBcHBUaWxlKCRldmVudClcIlxyXG4gICAgKHJlbmFtZUFwcFRpbGVDbGljayk9XCJvblJlbmFtZUFwcFRpbGUoJGV2ZW50KVwiXHJcbj48L2J0LXRpbGVzLXZpZXdlcj5cclxufSBAZWxzZSB7XHJcbjxic3Utbm8tZGF0YT48L2JzdS1uby1kYXRhPlxyXG59IH0gQGVsc2Uge1xyXG48YnN1LW1hc2s+PC9ic3UtbWFzaz5cclxufVxyXG5cclxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxyXG4gICAgPGJzdS1tYXNrPjwvYnN1LW1hc2s+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==