@rxap/layout 16.0.0-dev.4 → 16.0.0-dev.6

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.
Files changed (45) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/esm2022/index.mjs +5 -6
  3. package/esm2022/lib/app-url.service.mjs +64 -0
  4. package/esm2022/lib/footer/footer.component.mjs +3 -3
  5. package/esm2022/lib/header/apps-button/apps-button.component.mjs +30 -46
  6. package/esm2022/lib/header/header.component.mjs +41 -46
  7. package/esm2022/lib/header/language-selector/language-selector.component.mjs +10 -69
  8. package/esm2022/lib/header/navigation-progress-bar/navigation-progress-bar.component.mjs +6 -2
  9. package/esm2022/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.mjs +6 -2
  10. package/esm2022/lib/header/sign-out/sign-out.component.mjs +14 -18
  11. package/esm2022/lib/header/user-profile-icon/user-profile-icon.component.mjs +28 -28
  12. package/esm2022/lib/i18n-check.guard.mjs +34 -0
  13. package/esm2022/lib/i18n.service.mjs +36 -0
  14. package/esm2022/lib/language-selector.service.mjs +34 -0
  15. package/esm2022/lib/layout/layout.component.mjs +46 -23
  16. package/esm2022/lib/layout/layout.component.service.mjs +2 -2
  17. package/esm2022/lib/navigation/navigation-item/navigation-item.component.mjs +49 -96
  18. package/esm2022/lib/navigation/navigation.component.mjs +24 -25
  19. package/esm2022/lib/sidenav/sidenav.component.mjs +1 -1
  20. package/esm2022/lib/types.mjs +1 -1
  21. package/fesm2022/rxap-layout.mjs +637 -667
  22. package/fesm2022/rxap-layout.mjs.map +1 -1
  23. package/index.d.ts +4 -3
  24. package/lib/app-url.service.d.ts +26 -0
  25. package/lib/header/apps-button/apps-button.component.d.ts +12 -20
  26. package/lib/header/header.component.d.ts +7 -10
  27. package/lib/header/language-selector/language-selector.component.d.ts +1 -16
  28. package/lib/header/sign-out/sign-out.component.d.ts +4 -4
  29. package/lib/header/user-profile-icon/user-profile-icon.component.d.ts +11 -7
  30. package/lib/i18n-check.guard.d.ts +14 -0
  31. package/lib/i18n.service.d.ts +12 -0
  32. package/lib/language-selector.service.d.ts +15 -0
  33. package/lib/layout/layout.component.d.ts +8 -4
  34. package/lib/navigation/navigation-item/navigation-item.component.d.ts +10 -17
  35. package/lib/navigation/navigation.component.d.ts +4 -4
  36. package/lib/types.d.ts +3 -2
  37. package/package.json +36 -21
  38. package/esm2022/lib/layout/layout.component.module.mjs +0 -30
  39. package/esm2022/lib/sidenav-content/sidenav-content.component.mjs +0 -27
  40. package/esm2022/lib/sidenav-content/sidenav-content.component.service.mjs +0 -36
  41. package/lib/layout/layout.component.module.d.ts +0 -10
  42. package/lib/sidenav-content/sidenav-content.component.d.ts +0 -10
  43. package/lib/sidenav-content/sidenav-content.component.service.d.ts +0 -15
  44. package/src/lib/navigation/_navigation.component.theme.scss +0 -33
  45. package/src/lib/navigation/navigation-item/_navigation-item.component.theme.scss +0 -45
@@ -1,42 +1,65 @@
1
- import { ChangeDetectionStrategy, Component, ViewChild, } from '@angular/core';
2
- import { LayoutComponentService } from './layout.component.service';
1
+ import { ChangeDetectionStrategy, Component, Inject, ViewChild, } from '@angular/core';
3
2
  import { MatSidenav, MatSidenavModule, } from '@angular/material/sidenav';
4
- import { AsyncPipe } from '@angular/common';
5
- import { FooterComponent } from '../footer/footer.component';
6
- import { WindowContainerSidenavComponent } from '../window-container-sidenav/window-container-sidenav.component';
7
- import { ToggleWindowSidenavButtonComponent } from '../toggle-window-sidenav-button/toggle-window-sidenav-button.component';
8
- import { SidenavContentComponent } from '../sidenav-content/sidenav-content.component';
9
- import { RouterLink } from '@angular/router';
10
- import { SidenavHeaderDirective } from '../sidenav/sidenav-header.directive';
11
- import { SidenavComponent } from '../sidenav/sidenav.component';
3
+ import { DetermineReleaseName, RXAP_ENVIRONMENT, } from '@rxap/environment';
12
4
  import { HeaderComponent } from '../header/header.component';
5
+ import { AsyncPipe, NgIf, NgOptimizedImage, } from '@angular/common';
6
+ import { FlexLayoutModule } from '@angular/flex-layout';
7
+ import { MatIconModule } from '@angular/material/icon';
8
+ import { MatButtonModule } from '@angular/material/button';
9
+ import { RouterLink, RouterOutlet, } from '@angular/router';
10
+ import { MatMenuModule } from '@angular/material/menu';
11
+ import { FooterComponent } from '../footer/footer.component';
12
+ import { LayoutComponentService } from './layout.component.service';
13
+ import { NavigationComponent } from '../navigation/navigation.component';
13
14
  import * as i0 from "@angular/core";
14
15
  import * as i1 from "./layout.component.service";
15
16
  import * as i2 from "@angular/material/sidenav";
17
+ import * as i3 from "@angular/flex-layout/extended";
18
+ import * as i4 from "@angular/material/icon";
19
+ import * as i5 from "@angular/material/button";
16
20
  export class LayoutComponent {
17
- constructor(layoutComponentService) {
21
+ constructor(layoutComponentService, environment) {
18
22
  this.layoutComponentService = layoutComponentService;
19
- this.openWindowSidenav = false;
23
+ this.environment = environment;
24
+ this.sidenavMode = 'over';
20
25
  }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: LayoutComponent, deps: [{ token: i1.LayoutComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
22
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: LayoutComponent, isStandalone: true, selector: "rxap-layout", viewQueries: [{ propertyName: "sidenav", first: true, predicate: MatSidenav, descendants: true, static: true }], ngImport: i0, template: "<rxap-header [sidenav]=\"sidenav\" class=\"header\"></rxap-header>\n<mat-sidenav-container autosize class=\"container\">\n <mat-sidenav\n [fixedBottomGap]=\"layoutComponentService.fixedBottomGap$ | async\"\n [fixedInViewport]=\"true\"\n [fixedTopGap]=\"layoutComponentService.fixedTopGap$ | async\"\n [mode]=\"(layoutComponentService.mode$ | async) ?? 'side'\"\n [opened]=\"(layoutComponentService.opened$ | async) ?? true\"\n class=\"sidenav\"\n >\n <rxap-sidenav>\n <ng-template rxapSidenavHeader>\n <img\n [routerLink]=\"['/']\"\n [src]=\"layoutComponentService.logo.src\"\n [width]=\"layoutComponentService.logo.width\"\n alt=\"logo\"\n class=\"logo\"\n />\n </ng-template>\n </rxap-sidenav>\n </mat-sidenav>\n <mat-sidenav-content class=\"content\">\n <rxap-sidenav-content [sidenav]=\"sidenav\">\n <ng-content></ng-content>\n <rxap-toggle-window-sidenav-button\n [(openWindowSidenav)]=\"openWindowSidenav\"></rxap-toggle-window-sidenav-button>\n </rxap-sidenav-content>\n </mat-sidenav-content>\n <mat-sidenav\n [fixedBottomGap]=\"layoutComponentService.fixedBottomGap$ | async\"\n [fixedInViewport]=\"true\"\n [fixedTopGap]=\"layoutComponentService.fixedTopGap$ | async\"\n [opened]=\"openWindowSidenav\"\n class=\"window-container-sidenav\"\n mode=\"side\"\n position=\"end\"\n >\n <rxap-window-container-sidenav></rxap-window-container-sidenav>\n </mat-sidenav>\n</mat-sidenav-container>\n<rxap-footer class=\"footer\"></rxap-footer>\n", styles: [".container,.content{height:100%}.sidenav{display:flex;align-items:center;justify-content:center;width:auto}.sidenav .logo{padding:16px}.footer{position:fixed;bottom:0;left:0;right:0;z-index:100}.header{position:fixed;top:0;left:0;right:0;z-index:100}\n"], dependencies: [{ kind: "component", type: HeaderComponent, selector: "rxap-header", inputs: ["sidenav", "color", "settingsMenuPanel"] }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i2.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i2.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i2.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "component", type: SidenavComponent, selector: "rxap-sidenav" }, { kind: "directive", type: SidenavHeaderDirective, selector: "[rxapSidenavHeader]" }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: SidenavContentComponent, selector: "rxap-sidenav-content", inputs: ["sidenav"] }, { kind: "component", type: ToggleWindowSidenavButtonComponent, selector: "rxap-toggle-window-sidenav-button", inputs: ["openWindowSidenav"], outputs: ["openWindowSidenavChange"] }, { kind: "component", type: WindowContainerSidenavComponent, selector: "rxap-window-container-sidenav" }, { kind: "component", type: FooterComponent, selector: "rxap-footer" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
26
+ get release() {
27
+ return DetermineReleaseName(this.environment);
28
+ }
29
+ toggleSidenavMode() {
30
+ if (this.sidenavMode === 'over') {
31
+ this.sidenavMode = 'side';
32
+ this.sidenav.open();
33
+ }
34
+ else {
35
+ this.sidenavMode = 'over';
36
+ }
37
+ }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: LayoutComponent, deps: [{ token: i1.LayoutComponentService }, { token: RXAP_ENVIRONMENT }], target: i0.ɵɵFactoryTarget.Component }); }
39
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: LayoutComponent, isStandalone: true, selector: "rxap-layout", viewQueries: [{ propertyName: "sidenav", first: true, predicate: MatSidenav, descendants: true, static: true }], ngImport: i0, template: "<div class=\"flex flex-col h-screen justify-between\">\n <rxap-header [sidenav]=\"sidenav\" class=\"z-10 w-full fixed top-0\"></rxap-header>\n <mat-sidenav-container class=\"grow mt-16 mb-16\">\n <mat-sidenav\n #matSidenav=\"matSidenav\"\n (mouseenter)=\"sidenavMode === 'over' && matSidenav.open()\"\n (mouseleave)=\"sidenavMode === 'over' && matSidenav.close()\"\n [fixedBottomGap]=\"64\"\n [fixedInViewport]=\"true\"\n [fixedTopGap]=\"64\"\n [mode]=\"sidenavMode\"\n [opened]=\"false\"\n class=\"sidenav\"\n >\n <div class=\"h-full py-2 flex flex-col items-center gap-y-5 justify-items-stretch\">\n\n <div (click)=\"toggleSidenavMode()\"\n class=\"pl-2 pr-1 self-stretch grow-0 flex flex-row justify-between items-center\">\n <span class=\"text-lg\" i18n>Navigation</span>\n <button mat-icon-button>\n <mat-icon *ngIf=\"sidenavMode === 'over'\">radio_button_unchecked</mat-icon>\n <mat-icon *ngIf=\"sidenavMode === 'side'\">radio_button_checked</mat-icon>\n </button>\n </div>\n\n <ul class=\"grow self-stretch\" root rxap-navigation></ul>\n\n <img\n [height]=\"layoutComponentService.logo.height ?? 128\"\n [ngSrc]=\"layoutComponentService.logo.src ?? 'https://via.placeholder.com/256x128px'\"\n [routerLink]=\"['/']\"\n [width]=\"layoutComponentService.logo.width ?? 256\"\n alt=\"logo\"\n class=\"grow-0\"\n />\n <div class=\"grow-0\">\n <span>{{release}}</span>\n </div>\n </div>\n </mat-sidenav>\n <mat-sidenav-content\n [ngClass]=\"{ opened: matSidenav.opened, side: sidenavMode === 'side' }\"\n class=\"ml-14 p-4\"\n >\n <router-outlet></router-outlet>\n </mat-sidenav-content>\n </mat-sidenav-container>\n <rxap-footer class=\"z-10 w-full fixed bottom-0\"></rxap-footer>\n</div>\n<!--<rxap-window-task-bar-container></rxap-window-task-bar-container>-->\n", styles: [".sidenav:not(.mat-drawer-opened){transform:translate(calc(-100% + 56px))!important;visibility:visible!important;box-shadow:inherit!important;transition-property:transform;transition-delay:.25s;display:flex;border-right:solid 1px rgba(0,0,0,.12)}.footer{position:fixed;bottom:0;left:0;right:0;z-index:100}.header{position:fixed;top:0;left:0;right:0;z-index:100}.task-bar{position:fixed;bottom:0;right:0;left:0;z-index:100}\n"], dependencies: [{ kind: "component", type: HeaderComponent, selector: "rxap-header", inputs: ["sidenav", "color"] }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i2.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i2.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i2.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "ngmodule", type: FlexLayoutModule }, { kind: "directive", type: i3.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FooterComponent, selector: "rxap-footer" }, { kind: "ngmodule", type: MatMenuModule }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "src", "srcset"] }, { kind: "component", type: NavigationComponent, selector: "ul[rxap-navigation]", inputs: ["items", "level", "root"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23
40
  }
24
41
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: LayoutComponent, decorators: [{
25
42
  type: Component,
26
43
  args: [{ selector: 'rxap-layout', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
27
44
  HeaderComponent,
28
45
  MatSidenavModule,
29
- SidenavComponent,
30
- SidenavHeaderDirective,
46
+ AsyncPipe,
47
+ FlexLayoutModule,
48
+ MatIconModule,
49
+ MatButtonModule,
31
50
  RouterLink,
32
- SidenavContentComponent,
33
- ToggleWindowSidenavButtonComponent,
34
- WindowContainerSidenavComponent,
51
+ NgIf,
35
52
  FooterComponent,
36
- AsyncPipe,
37
- ], template: "<rxap-header [sidenav]=\"sidenav\" class=\"header\"></rxap-header>\n<mat-sidenav-container autosize class=\"container\">\n <mat-sidenav\n [fixedBottomGap]=\"layoutComponentService.fixedBottomGap$ | async\"\n [fixedInViewport]=\"true\"\n [fixedTopGap]=\"layoutComponentService.fixedTopGap$ | async\"\n [mode]=\"(layoutComponentService.mode$ | async) ?? 'side'\"\n [opened]=\"(layoutComponentService.opened$ | async) ?? true\"\n class=\"sidenav\"\n >\n <rxap-sidenav>\n <ng-template rxapSidenavHeader>\n <img\n [routerLink]=\"['/']\"\n [src]=\"layoutComponentService.logo.src\"\n [width]=\"layoutComponentService.logo.width\"\n alt=\"logo\"\n class=\"logo\"\n />\n </ng-template>\n </rxap-sidenav>\n </mat-sidenav>\n <mat-sidenav-content class=\"content\">\n <rxap-sidenav-content [sidenav]=\"sidenav\">\n <ng-content></ng-content>\n <rxap-toggle-window-sidenav-button\n [(openWindowSidenav)]=\"openWindowSidenav\"></rxap-toggle-window-sidenav-button>\n </rxap-sidenav-content>\n </mat-sidenav-content>\n <mat-sidenav\n [fixedBottomGap]=\"layoutComponentService.fixedBottomGap$ | async\"\n [fixedInViewport]=\"true\"\n [fixedTopGap]=\"layoutComponentService.fixedTopGap$ | async\"\n [opened]=\"openWindowSidenav\"\n class=\"window-container-sidenav\"\n mode=\"side\"\n position=\"end\"\n >\n <rxap-window-container-sidenav></rxap-window-container-sidenav>\n </mat-sidenav>\n</mat-sidenav-container>\n<rxap-footer class=\"footer\"></rxap-footer>\n", styles: [".container,.content{height:100%}.sidenav{display:flex;align-items:center;justify-content:center;width:auto}.sidenav .logo{padding:16px}.footer{position:fixed;bottom:0;left:0;right:0;z-index:100}.header{position:fixed;top:0;left:0;right:0;z-index:100}\n"] }]
38
- }], ctorParameters: function () { return [{ type: i1.LayoutComponentService }]; }, propDecorators: { sidenav: [{
53
+ MatMenuModule,
54
+ NgOptimizedImage,
55
+ NavigationComponent,
56
+ RouterOutlet,
57
+ ], template: "<div class=\"flex flex-col h-screen justify-between\">\n <rxap-header [sidenav]=\"sidenav\" class=\"z-10 w-full fixed top-0\"></rxap-header>\n <mat-sidenav-container class=\"grow mt-16 mb-16\">\n <mat-sidenav\n #matSidenav=\"matSidenav\"\n (mouseenter)=\"sidenavMode === 'over' && matSidenav.open()\"\n (mouseleave)=\"sidenavMode === 'over' && matSidenav.close()\"\n [fixedBottomGap]=\"64\"\n [fixedInViewport]=\"true\"\n [fixedTopGap]=\"64\"\n [mode]=\"sidenavMode\"\n [opened]=\"false\"\n class=\"sidenav\"\n >\n <div class=\"h-full py-2 flex flex-col items-center gap-y-5 justify-items-stretch\">\n\n <div (click)=\"toggleSidenavMode()\"\n class=\"pl-2 pr-1 self-stretch grow-0 flex flex-row justify-between items-center\">\n <span class=\"text-lg\" i18n>Navigation</span>\n <button mat-icon-button>\n <mat-icon *ngIf=\"sidenavMode === 'over'\">radio_button_unchecked</mat-icon>\n <mat-icon *ngIf=\"sidenavMode === 'side'\">radio_button_checked</mat-icon>\n </button>\n </div>\n\n <ul class=\"grow self-stretch\" root rxap-navigation></ul>\n\n <img\n [height]=\"layoutComponentService.logo.height ?? 128\"\n [ngSrc]=\"layoutComponentService.logo.src ?? 'https://via.placeholder.com/256x128px'\"\n [routerLink]=\"['/']\"\n [width]=\"layoutComponentService.logo.width ?? 256\"\n alt=\"logo\"\n class=\"grow-0\"\n />\n <div class=\"grow-0\">\n <span>{{release}}</span>\n </div>\n </div>\n </mat-sidenav>\n <mat-sidenav-content\n [ngClass]=\"{ opened: matSidenav.opened, side: sidenavMode === 'side' }\"\n class=\"ml-14 p-4\"\n >\n <router-outlet></router-outlet>\n </mat-sidenav-content>\n </mat-sidenav-container>\n <rxap-footer class=\"z-10 w-full fixed bottom-0\"></rxap-footer>\n</div>\n<!--<rxap-window-task-bar-container></rxap-window-task-bar-container>-->\n", styles: [".sidenav:not(.mat-drawer-opened){transform:translate(calc(-100% + 56px))!important;visibility:visible!important;box-shadow:inherit!important;transition-property:transform;transition-delay:.25s;display:flex;border-right:solid 1px rgba(0,0,0,.12)}.footer{position:fixed;bottom:0;left:0;right:0;z-index:100}.header{position:fixed;top:0;left:0;right:0;z-index:100}.task-bar{position:fixed;bottom:0;right:0;left:0;z-index:100}\n"] }]
58
+ }], ctorParameters: function () { return [{ type: i1.LayoutComponentService }, { type: undefined, decorators: [{
59
+ type: Inject,
60
+ args: [RXAP_ENVIRONMENT]
61
+ }] }]; }, propDecorators: { sidenav: [{
39
62
  type: ViewChild,
40
63
  args: [MatSidenav, { static: true }]
41
64
  }] } });
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbGF5b3V0L2xheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL2xheW91dC9zcmMvbGliL2xheW91dC9sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFDTCxVQUFVLEVBQ1YsZ0JBQWdCLEdBQ2pCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUNqSCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUM1SCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBcUI3RCxNQUFNLE9BQU8sZUFBZTtJQU0xQixZQUNrQixzQkFBOEM7UUFBOUMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUx6RCxzQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFPakMsQ0FBQzs4R0FUVSxlQUFlO2tHQUFmLGVBQWUsZ0hBSWYsVUFBVSw4REMzQ3ZCLDBqREEwQ0Esc1REZkksZUFBZSwwR0FDZixnQkFBZ0IsMllBQ2hCLGdCQUFnQix5REFDaEIsc0JBQXNCLGdFQUN0QixVQUFVLDROQUNWLHVCQUF1QixzRkFDdkIsa0NBQWtDLG1KQUNsQywrQkFBK0IsMEVBQy9CLGVBQWUsbURBQ2YsU0FBUzs7MkZBR0EsZUFBZTtrQkFuQjNCLFNBQVM7K0JBQ0UsYUFBYSxtQkFHTix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixzQkFBc0I7d0JBQ3RCLFVBQVU7d0JBQ1YsdUJBQXVCO3dCQUN2QixrQ0FBa0M7d0JBQ2xDLCtCQUErQjt3QkFDL0IsZUFBZTt3QkFDZixTQUFTO3FCQUNWOzZHQU0rQyxPQUFPO3NCQUF0RCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGF5b3V0Q29tcG9uZW50U2VydmljZSB9IGZyb20gJy4vbGF5b3V0LmNvbXBvbmVudC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIE1hdFNpZGVuYXYsXG4gIE1hdFNpZGVuYXZNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xuaW1wb3J0IHsgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvb3RlckNvbXBvbmVudCB9IGZyb20gJy4uL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFdpbmRvd0NvbnRhaW5lclNpZGVuYXZDb21wb25lbnQgfSBmcm9tICcuLi93aW5kb3ctY29udGFpbmVyLXNpZGVuYXYvd2luZG93LWNvbnRhaW5lci1zaWRlbmF2LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb2dnbGVXaW5kb3dTaWRlbmF2QnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vdG9nZ2xlLXdpbmRvdy1zaWRlbmF2LWJ1dHRvbi90b2dnbGUtd2luZG93LXNpZGVuYXYtYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaWRlbmF2Q29udGVudENvbXBvbmVudCB9IGZyb20gJy4uL3NpZGVuYXYtY29udGVudC9zaWRlbmF2LWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU2lkZW5hdkhlYWRlckRpcmVjdGl2ZSB9IGZyb20gJy4uL3NpZGVuYXYvc2lkZW5hdi1oZWFkZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFNpZGVuYXZDb21wb25lbnQgfSBmcm9tICcuLi9zaWRlbmF2L3NpZGVuYXYuY29tcG9uZW50JztcbmltcG9ydCB7IEhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2hlYWRlci9oZWFkZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnhhcC1sYXlvdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbICcuL2xheW91dC5jb21wb25lbnQuc2NzcycgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBIZWFkZXJDb21wb25lbnQsXG4gICAgTWF0U2lkZW5hdk1vZHVsZSxcbiAgICBTaWRlbmF2Q29tcG9uZW50LFxuICAgIFNpZGVuYXZIZWFkZXJEaXJlY3RpdmUsXG4gICAgUm91dGVyTGluayxcbiAgICBTaWRlbmF2Q29udGVudENvbXBvbmVudCxcbiAgICBUb2dnbGVXaW5kb3dTaWRlbmF2QnV0dG9uQ29tcG9uZW50LFxuICAgIFdpbmRvd0NvbnRhaW5lclNpZGVuYXZDb21wb25lbnQsXG4gICAgRm9vdGVyQ29tcG9uZW50LFxuICAgIEFzeW5jUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTGF5b3V0Q29tcG9uZW50IHtcblxuICBwdWJsaWMgb3BlbldpbmRvd1NpZGVuYXYgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKE1hdFNpZGVuYXYsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBzaWRlbmF2ITogTWF0U2lkZW5hdjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGF5b3V0Q29tcG9uZW50U2VydmljZTogTGF5b3V0Q29tcG9uZW50U2VydmljZSxcbiAgKSB7XG4gIH1cblxufVxuIiwiPHJ4YXAtaGVhZGVyIFtzaWRlbmF2XT1cInNpZGVuYXZcIiBjbGFzcz1cImhlYWRlclwiPjwvcnhhcC1oZWFkZXI+XG48bWF0LXNpZGVuYXYtY29udGFpbmVyIGF1dG9zaXplIGNsYXNzPVwiY29udGFpbmVyXCI+XG4gIDxtYXQtc2lkZW5hdlxuICAgIFtmaXhlZEJvdHRvbUdhcF09XCJsYXlvdXRDb21wb25lbnRTZXJ2aWNlLmZpeGVkQm90dG9tR2FwJCB8IGFzeW5jXCJcbiAgICBbZml4ZWRJblZpZXdwb3J0XT1cInRydWVcIlxuICAgIFtmaXhlZFRvcEdhcF09XCJsYXlvdXRDb21wb25lbnRTZXJ2aWNlLmZpeGVkVG9wR2FwJCB8IGFzeW5jXCJcbiAgICBbbW9kZV09XCIobGF5b3V0Q29tcG9uZW50U2VydmljZS5tb2RlJCB8IGFzeW5jKSA/PyAnc2lkZSdcIlxuICAgIFtvcGVuZWRdPVwiKGxheW91dENvbXBvbmVudFNlcnZpY2Uub3BlbmVkJCB8IGFzeW5jKSA/PyB0cnVlXCJcbiAgICBjbGFzcz1cInNpZGVuYXZcIlxuICA+XG4gICAgPHJ4YXAtc2lkZW5hdj5cbiAgICAgIDxuZy10ZW1wbGF0ZSByeGFwU2lkZW5hdkhlYWRlcj5cbiAgICAgICAgPGltZ1xuICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnLyddXCJcbiAgICAgICAgICBbc3JjXT1cImxheW91dENvbXBvbmVudFNlcnZpY2UubG9nby5zcmNcIlxuICAgICAgICAgIFt3aWR0aF09XCJsYXlvdXRDb21wb25lbnRTZXJ2aWNlLmxvZ28ud2lkdGhcIlxuICAgICAgICAgIGFsdD1cImxvZ29cIlxuICAgICAgICAgIGNsYXNzPVwibG9nb1wiXG4gICAgICAgIC8+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvcnhhcC1zaWRlbmF2PlxuICA8L21hdC1zaWRlbmF2PlxuICA8bWF0LXNpZGVuYXYtY29udGVudCBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICA8cnhhcC1zaWRlbmF2LWNvbnRlbnQgW3NpZGVuYXZdPVwic2lkZW5hdlwiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPHJ4YXAtdG9nZ2xlLXdpbmRvdy1zaWRlbmF2LWJ1dHRvblxuICAgICAgICBbKG9wZW5XaW5kb3dTaWRlbmF2KV09XCJvcGVuV2luZG93U2lkZW5hdlwiPjwvcnhhcC10b2dnbGUtd2luZG93LXNpZGVuYXYtYnV0dG9uPlxuICAgIDwvcnhhcC1zaWRlbmF2LWNvbnRlbnQ+XG4gIDwvbWF0LXNpZGVuYXYtY29udGVudD5cbiAgPG1hdC1zaWRlbmF2XG4gICAgW2ZpeGVkQm90dG9tR2FwXT1cImxheW91dENvbXBvbmVudFNlcnZpY2UuZml4ZWRCb3R0b21HYXAkIHwgYXN5bmNcIlxuICAgIFtmaXhlZEluVmlld3BvcnRdPVwidHJ1ZVwiXG4gICAgW2ZpeGVkVG9wR2FwXT1cImxheW91dENvbXBvbmVudFNlcnZpY2UuZml4ZWRUb3BHYXAkIHwgYXN5bmNcIlxuICAgIFtvcGVuZWRdPVwib3BlbldpbmRvd1NpZGVuYXZcIlxuICAgIGNsYXNzPVwid2luZG93LWNvbnRhaW5lci1zaWRlbmF2XCJcbiAgICBtb2RlPVwic2lkZVwiXG4gICAgcG9zaXRpb249XCJlbmRcIlxuICA+XG4gICAgPHJ4YXAtd2luZG93LWNvbnRhaW5lci1zaWRlbmF2PjwvcnhhcC13aW5kb3ctY29udGFpbmVyLXNpZGVuYXY+XG4gIDwvbWF0LXNpZGVuYXY+XG48L21hdC1zaWRlbmF2LWNvbnRhaW5lcj5cbjxyeGFwLWZvb3RlciBjbGFzcz1cImZvb3RlclwiPjwvcnhhcC1mb290ZXI+XG4iXX0=
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbGF5b3V0L2xheW91dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL2xheW91dC9zcmMvbGliL2xheW91dC9sYXlvdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsVUFBVSxFQUNWLGdCQUFnQixHQUNqQixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFDTCxvQkFBb0IsRUFFcEIsZ0JBQWdCLEdBQ2pCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFDTCxTQUFTLEVBQ1QsSUFBSSxFQUNKLGdCQUFnQixHQUNqQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUNMLFVBQVUsRUFDVixZQUFZLEdBQ2IsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7Ozs7O0FBeUJ6RSxNQUFNLE9BQU8sZUFBZTtJQU0xQixZQUNrQixzQkFBOEMsRUFFN0MsV0FBd0I7UUFGekIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUU3QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQVBwQyxnQkFBVyxHQUFrQixNQUFNLENBQUM7SUFReEMsQ0FBQztJQUVKLElBQVcsT0FBTztRQUNoQixPQUFPLG9CQUFvQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRU0saUJBQWlCO1FBQ3RCLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxNQUFNLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7WUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNyQjthQUFNO1lBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7U0FDM0I7SUFDSCxDQUFDOzhHQXZCVSxlQUFlLHdEQVFoQixnQkFBZ0I7a0dBUmYsZUFBZSxnSEFJZixVQUFVLDhEQzdEdkIsZy9EQWtEQSxpZURSSSxlQUFlLHFGQUNmLGdCQUFnQiwwWUFFaEIsZ0JBQWdCLGlpQkFDaEIsYUFBYSxtTEFDYixlQUFlLDRMQUNmLFVBQVUsNE5BQ1YsSUFBSSw2RkFDSixlQUFlLHVEQUNmLGFBQWEsK0JBQ2IsZ0JBQWdCLDRNQUNoQixtQkFBbUIsb0dBQ25CLFlBQVk7OzJGQUdILGVBQWU7a0JBdEIzQixTQUFTOytCQUNFLGFBQWEsbUJBR04sdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLFNBQVM7d0JBQ1QsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsVUFBVTt3QkFDVixJQUFJO3dCQUNKLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsWUFBWTtxQkFDYjs7MEJBVUUsTUFBTTsyQkFBQyxnQkFBZ0I7NENBSnNCLE9BQU87c0JBQXRELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEluamVjdCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE1hdERyYXdlck1vZGUsXG4gIE1hdFNpZGVuYXYsXG4gIE1hdFNpZGVuYXZNb2R1bGUsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xuaW1wb3J0IHtcbiAgRGV0ZXJtaW5lUmVsZWFzZU5hbWUsXG4gIEVudmlyb25tZW50LFxuICBSWEFQX0VOVklST05NRU5ULFxufSBmcm9tICdAcnhhcC9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9oZWFkZXIvaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBBc3luY1BpcGUsXG4gIE5nSWYsXG4gIE5nT3B0aW1pemVkSW1hZ2UsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGbGV4TGF5b3V0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZmxleC1sYXlvdXQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7XG4gIFJvdXRlckxpbmssXG4gIFJvdXRlck91dGxldCxcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcbmltcG9ydCB7IEZvb3RlckNvbXBvbmVudCB9IGZyb20gJy4uL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IExheW91dENvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuL2xheW91dC5jb21wb25lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLmNvbXBvbmVudCc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncnhhcC1sYXlvdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGF5b3V0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbICcuL2xheW91dC5jb21wb25lbnQuc2NzcycgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBIZWFkZXJDb21wb25lbnQsXG4gICAgTWF0U2lkZW5hdk1vZHVsZSxcbiAgICBBc3luY1BpcGUsXG4gICAgRmxleExheW91dE1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBSb3V0ZXJMaW5rLFxuICAgIE5nSWYsXG4gICAgRm9vdGVyQ29tcG9uZW50LFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgTmdPcHRpbWl6ZWRJbWFnZSxcbiAgICBOYXZpZ2F0aW9uQ29tcG9uZW50LFxuICAgIFJvdXRlck91dGxldCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTGF5b3V0Q29tcG9uZW50IHtcblxuICBwdWJsaWMgc2lkZW5hdk1vZGU6IE1hdERyYXdlck1vZGUgPSAnb3Zlcic7XG5cbiAgQFZpZXdDaGlsZChNYXRTaWRlbmF2LCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgc2lkZW5hdiE6IE1hdFNpZGVuYXY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGxheW91dENvbXBvbmVudFNlcnZpY2U6IExheW91dENvbXBvbmVudFNlcnZpY2UsXG4gICAgQEluamVjdChSWEFQX0VOVklST05NRU5UKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50LFxuICApIHt9XG5cbiAgcHVibGljIGdldCByZWxlYXNlKCkge1xuICAgIHJldHVybiBEZXRlcm1pbmVSZWxlYXNlTmFtZSh0aGlzLmVudmlyb25tZW50KTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVTaWRlbmF2TW9kZSgpIHtcbiAgICBpZiAodGhpcy5zaWRlbmF2TW9kZSA9PT0gJ292ZXInKSB7XG4gICAgICB0aGlzLnNpZGVuYXZNb2RlID0gJ3NpZGUnO1xuICAgICAgdGhpcy5zaWRlbmF2Lm9wZW4oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaWRlbmF2TW9kZSA9ICdvdmVyJztcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGgtc2NyZWVuIGp1c3RpZnktYmV0d2VlblwiPlxuICA8cnhhcC1oZWFkZXIgW3NpZGVuYXZdPVwic2lkZW5hdlwiIGNsYXNzPVwiei0xMCB3LWZ1bGwgZml4ZWQgdG9wLTBcIj48L3J4YXAtaGVhZGVyPlxuICA8bWF0LXNpZGVuYXYtY29udGFpbmVyIGNsYXNzPVwiZ3JvdyBtdC0xNiBtYi0xNlwiPlxuICAgIDxtYXQtc2lkZW5hdlxuICAgICAgI21hdFNpZGVuYXY9XCJtYXRTaWRlbmF2XCJcbiAgICAgIChtb3VzZWVudGVyKT1cInNpZGVuYXZNb2RlID09PSAnb3ZlcicgJiYgbWF0U2lkZW5hdi5vcGVuKClcIlxuICAgICAgKG1vdXNlbGVhdmUpPVwic2lkZW5hdk1vZGUgPT09ICdvdmVyJyAmJiBtYXRTaWRlbmF2LmNsb3NlKClcIlxuICAgICAgW2ZpeGVkQm90dG9tR2FwXT1cIjY0XCJcbiAgICAgIFtmaXhlZEluVmlld3BvcnRdPVwidHJ1ZVwiXG4gICAgICBbZml4ZWRUb3BHYXBdPVwiNjRcIlxuICAgICAgW21vZGVdPVwic2lkZW5hdk1vZGVcIlxuICAgICAgW29wZW5lZF09XCJmYWxzZVwiXG4gICAgICBjbGFzcz1cInNpZGVuYXZcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJoLWZ1bGwgcHktMiBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAteS01IGp1c3RpZnktaXRlbXMtc3RyZXRjaFwiPlxuXG4gICAgICAgIDxkaXYgKGNsaWNrKT1cInRvZ2dsZVNpZGVuYXZNb2RlKClcIlxuICAgICAgICAgICAgIGNsYXNzPVwicGwtMiBwci0xIHNlbGYtc3RyZXRjaCBncm93LTAgZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWxnXCIgaTE4bj5OYXZpZ2F0aW9uPC9zcGFuPlxuICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uPlxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwic2lkZW5hdk1vZGUgPT09ICdvdmVyJ1wiPnJhZGlvX2J1dHRvbl91bmNoZWNrZWQ8L21hdC1pY29uPlxuICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwic2lkZW5hdk1vZGUgPT09ICdzaWRlJ1wiPnJhZGlvX2J1dHRvbl9jaGVja2VkPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPHVsIGNsYXNzPVwiZ3JvdyBzZWxmLXN0cmV0Y2hcIiByb290IHJ4YXAtbmF2aWdhdGlvbj48L3VsPlxuXG4gICAgICAgIDxpbWdcbiAgICAgICAgICBbaGVpZ2h0XT1cImxheW91dENvbXBvbmVudFNlcnZpY2UubG9nby5oZWlnaHQgPz8gMTI4XCJcbiAgICAgICAgICBbbmdTcmNdPVwibGF5b3V0Q29tcG9uZW50U2VydmljZS5sb2dvLnNyYyA/PyAnaHR0cHM6Ly92aWEucGxhY2Vob2xkZXIuY29tLzI1NngxMjhweCdcIlxuICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIlsnLyddXCJcbiAgICAgICAgICBbd2lkdGhdPVwibGF5b3V0Q29tcG9uZW50U2VydmljZS5sb2dvLndpZHRoID8/IDI1NlwiXG4gICAgICAgICAgYWx0PVwibG9nb1wiXG4gICAgICAgICAgY2xhc3M9XCJncm93LTBcIlxuICAgICAgICAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3Jvdy0wXCI+XG4gICAgICAgICAgPHNwYW4+e3tyZWxlYXNlfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtc2lkZW5hdj5cbiAgICA8bWF0LXNpZGVuYXYtY29udGVudFxuICAgICAgW25nQ2xhc3NdPVwieyBvcGVuZWQ6IG1hdFNpZGVuYXYub3BlbmVkLCBzaWRlOiBzaWRlbmF2TW9kZSA9PT0gJ3NpZGUnIH1cIlxuICAgICAgY2xhc3M9XCJtbC0xNCBwLTRcIlxuICAgID5cbiAgICAgIDxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD5cbiAgICA8L21hdC1zaWRlbmF2LWNvbnRlbnQ+XG4gIDwvbWF0LXNpZGVuYXYtY29udGFpbmVyPlxuICA8cnhhcC1mb290ZXIgY2xhc3M9XCJ6LTEwIHctZnVsbCBmaXhlZCBib3R0b20tMFwiPjwvcnhhcC1mb290ZXI+XG48L2Rpdj5cbjwhLS08cnhhcC13aW5kb3ctdGFzay1iYXItY29udGFpbmVyPjwvcnhhcC13aW5kb3ctdGFzay1iYXItY29udGFpbmVyPi0tPlxuIl19
@@ -22,7 +22,7 @@ export class LayoutComponentService {
22
22
  this.headerComponentService.update$.pipe(tap(() => this.fixedTopGap$.next(this.headerComponentService.countComponent * 64))).subscribe();
23
23
  this.logo = logoConfig ?? {
24
24
  src: '/assets/logo.png',
25
- width: '192',
25
+ width: 192,
26
26
  };
27
27
  }
28
28
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: LayoutComponentService, deps: [{ token: i1.FooterService }, { token: i1.HeaderService }, { token: RXAP_LOGO_CONFIG, optional: true }, { token: ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -40,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImpor
40
40
  type: Inject,
41
41
  args: [ConfigService]
42
42
  }] }]; } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9sYXlvdXQvc3JjL2xpYi9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUNWLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZUFBZSxHQUVoQixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxHQUFHLEVBQ0gsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLGFBQWEsRUFDYixhQUFhLEdBQ2QsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7OztBQUk3QyxNQUFNLE9BQU8sc0JBQXNCO0lBUWpDLFlBQ2tCLHNCQUFxQyxFQUNyQyxzQkFBcUMsRUFDZixhQUFnQyxJQUFJLEVBRXpELE1BQXFCO1FBSnRCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBZTtRQUNyQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQWU7UUFHcEMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQVhqQyxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDN0MsVUFBSyxHQUFHLElBQUksZUFBZSxDQUFnQixNQUFNLENBQUMsQ0FBQztRQUVuRCxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBVXBELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUN0QyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUNuRixDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLElBQUk7WUFDeEIsR0FBRyxFQUFFLGtCQUFrQjtZQUN2QixLQUFLLEVBQUUsS0FBSztTQUNiLENBQUM7SUFDSixDQUFDOzhHQTFCVSxzQkFBc0IsNEVBV1gsZ0JBQWdCLDZCQUM1QixhQUFhO2tIQVpaLHNCQUFzQixjQURULE1BQU07OzJGQUNuQixzQkFBc0I7a0JBRGxDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFZN0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUNuQyxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3QsXG4gIEluamVjdGFibGUsXG4gIE9wdGlvbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBtYXAsXG4gIHRhcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgRm9vdGVyU2VydmljZSxcbiAgSGVhZGVyU2VydmljZSxcbn0gZnJvbSAnQHJ4YXAvc2VydmljZXMnO1xuaW1wb3J0IHsgUlhBUF9MT0dPX0NPTkZJRyB9IGZyb20gJy4uL3Rva2Vucyc7XG5pbXBvcnQgeyBMb2dvQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0ByeGFwL2NvbmZpZyc7XG5pbXBvcnQgeyBNYXREcmF3ZXJNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTGF5b3V0Q29tcG9uZW50U2VydmljZSB7XG5cbiAgcHVibGljIG9wZW5lZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwdWJsaWMgbW9kZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hdERyYXdlck1vZGU+KCdzaWRlJyk7XG4gIHB1YmxpYyBmaXhlZEJvdHRvbUdhcCQ6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgcHVibGljIGZpeGVkVG9wR2FwJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPig2NCk7XG4gIHB1YmxpYyBsb2dvOiBMb2dvQ29uZmlnO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgZm9vdGVyQ29tcG9uZW50U2VydmljZTogRm9vdGVyU2VydmljZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgaGVhZGVyQ29tcG9uZW50U2VydmljZTogSGVhZGVyU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFJYQVBfTE9HT19DT05GSUcpIGxvZ29Db25maWc6IExvZ29Db25maWcgfCBudWxsID0gbnVsbCxcbiAgICBASW5qZWN0KENvbmZpZ1NlcnZpY2UpXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IENvbmZpZ1NlcnZpY2UsXG4gICkge1xuICAgIHRoaXMubW9kZSQubmV4dCh0aGlzLmNvbmZpZy5nZXQoJ25hdmlnYXRpb24ubW9kZScsIHRoaXMubW9kZSQudmFsdWUpKTtcbiAgICB0aGlzLm9wZW5lZCQubmV4dCh0aGlzLmNvbmZpZy5nZXQoJ25hdmlnYXRpb24ub3BlbicsIHRoaXMub3BlbmVkJC52YWx1ZSkpO1xuICAgIHRoaXMuZml4ZWRCb3R0b21HYXAkID0gdGhpcy5mb290ZXJDb21wb25lbnRTZXJ2aWNlLnBvcnRhbENvdW50JC5waXBlKG1hcChjb3VudCA9PiBjb3VudCAqIDY0KSk7XG4gICAgdGhpcy5maXhlZFRvcEdhcCQubmV4dCh0aGlzLmhlYWRlckNvbXBvbmVudFNlcnZpY2UuY291bnRDb21wb25lbnQgKiA2NCk7XG4gICAgdGhpcy5oZWFkZXJDb21wb25lbnRTZXJ2aWNlLnVwZGF0ZSQucGlwZShcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmZpeGVkVG9wR2FwJC5uZXh0KHRoaXMuaGVhZGVyQ29tcG9uZW50U2VydmljZS5jb3VudENvbXBvbmVudCAqIDY0KSksXG4gICAgKS5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmxvZ28gPSBsb2dvQ29uZmlnID8/IHtcbiAgICAgIHNyYzogJy9hc3NldHMvbG9nby5wbmcnLFxuICAgICAgd2lkdGg6ICcxOTInLFxuICAgIH07XG4gIH1cblxufVxuIl19
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LmNvbXBvbmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci9sYXlvdXQvc3JjL2xpYi9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxNQUFNLEVBQ04sVUFBVSxFQUNWLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZUFBZSxHQUVoQixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxHQUFHLEVBQ0gsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLGFBQWEsRUFDYixhQUFhLEdBQ2QsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7OztBQUk3QyxNQUFNLE9BQU8sc0JBQXNCO0lBUWpDLFlBQ2tCLHNCQUFxQyxFQUNyQyxzQkFBcUMsRUFDZixhQUFnQyxJQUFJLEVBRXpELE1BQXFCO1FBSnRCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBZTtRQUNyQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQWU7UUFHcEMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQVhqQyxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDN0MsVUFBSyxHQUFHLElBQUksZUFBZSxDQUFnQixNQUFNLENBQUMsQ0FBQztRQUVuRCxpQkFBWSxHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBVXBELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvRixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUN0QyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUNuRixDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLElBQUk7WUFDeEIsR0FBRyxFQUFFLGtCQUFrQjtZQUN2QixLQUFLLEVBQUUsR0FBRztTQUNYLENBQUM7SUFDSixDQUFDOzhHQTFCVSxzQkFBc0IsNEVBV1gsZ0JBQWdCLDZCQUM1QixhQUFhO2tIQVpaLHNCQUFzQixjQURULE1BQU07OzJGQUNuQixzQkFBc0I7a0JBRGxDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFZN0IsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxnQkFBZ0I7OzBCQUNuQyxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3QsXG4gIEluamVjdGFibGUsXG4gIE9wdGlvbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgT2JzZXJ2YWJsZSxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBtYXAsXG4gIHRhcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgRm9vdGVyU2VydmljZSxcbiAgSGVhZGVyU2VydmljZSxcbn0gZnJvbSAnQHJ4YXAvc2VydmljZXMnO1xuaW1wb3J0IHsgUlhBUF9MT0dPX0NPTkZJRyB9IGZyb20gJy4uL3Rva2Vucyc7XG5pbXBvcnQgeyBMb2dvQ29uZmlnIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJ0ByeGFwL2NvbmZpZyc7XG5pbXBvcnQgeyBNYXREcmF3ZXJNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgTGF5b3V0Q29tcG9uZW50U2VydmljZSB7XG5cbiAgcHVibGljIG9wZW5lZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICBwdWJsaWMgbW9kZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE1hdERyYXdlck1vZGU+KCdzaWRlJyk7XG4gIHB1YmxpYyBmaXhlZEJvdHRvbUdhcCQ6IE9ic2VydmFibGU8bnVtYmVyPjtcbiAgcHVibGljIGZpeGVkVG9wR2FwJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPig2NCk7XG4gIHB1YmxpYyBsb2dvOiBMb2dvQ29uZmlnO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgZm9vdGVyQ29tcG9uZW50U2VydmljZTogRm9vdGVyU2VydmljZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgaGVhZGVyQ29tcG9uZW50U2VydmljZTogSGVhZGVyU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFJYQVBfTE9HT19DT05GSUcpIGxvZ29Db25maWc6IExvZ29Db25maWcgfCBudWxsID0gbnVsbCxcbiAgICBASW5qZWN0KENvbmZpZ1NlcnZpY2UpXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IENvbmZpZ1NlcnZpY2UsXG4gICkge1xuICAgIHRoaXMubW9kZSQubmV4dCh0aGlzLmNvbmZpZy5nZXQoJ25hdmlnYXRpb24ubW9kZScsIHRoaXMubW9kZSQudmFsdWUpKTtcbiAgICB0aGlzLm9wZW5lZCQubmV4dCh0aGlzLmNvbmZpZy5nZXQoJ25hdmlnYXRpb24ub3BlbicsIHRoaXMub3BlbmVkJC52YWx1ZSkpO1xuICAgIHRoaXMuZml4ZWRCb3R0b21HYXAkID0gdGhpcy5mb290ZXJDb21wb25lbnRTZXJ2aWNlLnBvcnRhbENvdW50JC5waXBlKG1hcChjb3VudCA9PiBjb3VudCAqIDY0KSk7XG4gICAgdGhpcy5maXhlZFRvcEdhcCQubmV4dCh0aGlzLmhlYWRlckNvbXBvbmVudFNlcnZpY2UuY291bnRDb21wb25lbnQgKiA2NCk7XG4gICAgdGhpcy5oZWFkZXJDb21wb25lbnRTZXJ2aWNlLnVwZGF0ZSQucGlwZShcbiAgICAgIHRhcCgoKSA9PiB0aGlzLmZpeGVkVG9wR2FwJC5uZXh0KHRoaXMuaGVhZGVyQ29tcG9uZW50U2VydmljZS5jb3VudENvbXBvbmVudCAqIDY0KSksXG4gICAgKS5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmxvZ28gPSBsb2dvQ29uZmlnID8/IHtcbiAgICAgIHNyYzogJy9hc3NldHMvbG9nby5wbmcnLFxuICAgICAgd2lkdGg6IDE5MixcbiAgICB9O1xuICB9XG5cbn1cbiJdfQ==
@@ -1,29 +1,33 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
- import { ChangeDetectionStrategy, Component, ElementRef, HostBinding, HostListener, Inject, Input, Renderer2, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation, } from '@angular/core';
3
- import { DebounceCall, Required, } from '@rxap/utilities';
2
+ import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, HostBinding, Inject, Input, Renderer2, signal, ViewChild, ViewContainerRef, ViewEncapsulation, } from '@angular/core';
3
+ import { Required } from '@rxap/utilities';
4
4
  import { animate, style, transition, trigger, } from '@angular/animations';
5
5
  import { NavigationEnd, Router, RouterLink, RouterLinkActive, } from '@angular/router';
6
- import { Subscription } from 'rxjs';
7
- import { delay, distinctUntilChanged, filter, skip, startWith, tap, } from 'rxjs/operators';
6
+ import { debounceTime, Subscription, } from 'rxjs';
7
+ import { filter, startWith, tap, } from 'rxjs/operators';
8
+ import { Overlay } from '@angular/cdk/overlay';
8
9
  import { SidenavComponentService } from '../../sidenav/sidenav.component.service';
9
- import { Overlay, } from '@angular/cdk/overlay';
10
- import { TemplatePortal } from '@angular/cdk/portal';
11
- import { FlexModule } from '@angular/flex-layout/flex';
12
10
  import { NavigationComponent } from '../navigation.component';
11
+ import { MatDividerModule } from '@angular/material/divider';
13
12
  import { IconDirective } from '@rxap/material-directives/icon';
14
13
  import { MatIconModule } from '@angular/material/icon';
15
- import { AsyncPipe, NgFor, NgIf, } from '@angular/common';
16
- import { MatTooltipModule } from '@angular/material/tooltip';
17
14
  import { MatRippleModule } from '@angular/material/core';
15
+ import { NgClass, NgIf, } from '@angular/common';
18
16
  import * as i0 from "@angular/core";
19
17
  import * as i1 from "@angular/material/core";
20
- import * as i2 from "@angular/material/tooltip";
21
- import * as i3 from "@angular/material/icon";
22
- import * as i4 from "@angular/flex-layout/flex";
23
- import * as i5 from "@angular/router";
24
- import * as i6 from "../../sidenav/sidenav.component.service";
25
- import * as i7 from "@angular/cdk/overlay";
18
+ import * as i2 from "@angular/material/icon";
19
+ import * as i3 from "@angular/material/divider";
20
+ import * as i4 from "@angular/router";
21
+ import * as i5 from "../../sidenav/sidenav.component.service";
22
+ import * as i6 from "@angular/cdk/overlay";
26
23
  export class NavigationItemComponent {
24
+ get isActive() {
25
+ return this._isActive;
26
+ }
27
+ set isActive(value) {
28
+ this._isActive = value;
29
+ this.active.set(value);
30
+ }
27
31
  constructor(router, sidenav, elementRef, renderer, overlay, viewContainerRef) {
28
32
  this.router = router;
29
33
  this.sidenav = sidenav;
@@ -31,14 +35,11 @@ export class NavigationItemComponent {
31
35
  this.renderer = renderer;
32
36
  this.overlay = overlay;
33
37
  this.viewContainerRef = viewContainerRef;
34
- this.children = null;
35
38
  this.level = 0;
36
- this.isActive = false;
39
+ this._isActive = false;
40
+ this.children = null;
41
+ this.active = signal(false);
37
42
  this._subscription = new Subscription();
38
- /**
39
- * indicates the mouse is over the
40
- */
41
- this.lockeOverlay = false;
42
43
  }
43
44
  ngOnChanges(changes) {
44
45
  if (changes['item']) {
@@ -49,12 +50,20 @@ export class NavigationItemComponent {
49
50
  }
50
51
  ngAfterViewInit() {
51
52
  this._subscription.add(this.router.events
52
- .pipe(filter((event) => event instanceof NavigationEnd), startWith(true), delay(100), tap(() => {
53
- if (this.routerLinkActive.isActive) {
54
- if (!this.sidenav.collapsed$.value) {
55
- // only close the overlay if sidenav collapsed
56
- this._overlayRef?.detach();
53
+ .pipe(filter((event) => event instanceof NavigationEnd), debounceTime(100), startWith(true), tap(() => {
54
+ let isActive = true;
55
+ const urlParts = this.router.url.split('/');
56
+ if (urlParts[0] === '') {
57
+ urlParts[0] = '/';
58
+ }
59
+ for (let i = 0; i < this.item.routerLink.length; i++) {
60
+ if (urlParts[i] !== this.item.routerLink[i]) {
61
+ isActive = false;
62
+ break;
57
63
  }
64
+ }
65
+ this.isActive = isActive;
66
+ if (isActive) {
58
67
  this.renderer.addClass(this.elementRef.nativeElement, 'active');
59
68
  }
60
69
  else {
@@ -63,45 +72,8 @@ export class NavigationItemComponent {
63
72
  }))
64
73
  .subscribe());
65
74
  }
66
- ngOnInit() {
67
- // detach the navigation overlay if the sidenav collapsed
68
- // state is changed
69
- this._subscription.add(this.sidenav.collapsed$
70
- .pipe(skip(1), distinctUntilChanged(), tap(() => this._overlayRef?.detach()))
71
- .subscribe());
72
- }
73
75
  ngOnDestroy() {
74
76
  this._subscription?.unsubscribe();
75
- this._overlayRef?.dispose();
76
- }
77
- onMouseenter() {
78
- if (this.children) {
79
- if (!this.routerLinkActive.isActive || this.sidenav.collapsed$.value) {
80
- if (!this._overlayRef) {
81
- this._overlayRef = this.overlay.create({
82
- positionStrategy: this.overlay
83
- .position()
84
- .flexibleConnectedTo(this.elementRef)
85
- .withPositions([
86
- {
87
- originY: 'top',
88
- originX: 'end',
89
- overlayY: 'top',
90
- overlayX: 'start',
91
- },
92
- ]),
93
- });
94
- }
95
- if (!this._overlayRef.hasAttached()) {
96
- this._embeddedViewRef = this._overlayRef.attach(new TemplatePortal(this._navigationOverlay, this.viewContainerRef));
97
- }
98
- }
99
- }
100
- }
101
- onMouseleave() {
102
- if (!this.lockeOverlay) {
103
- this._overlayRef?.detach();
104
- }
105
77
  }
106
78
  // region type save item property
107
79
  // required to check the type of the item property in the ngFor loop
@@ -118,7 +90,7 @@ export class NavigationItemComponent {
118
90
  return item;
119
91
  }
120
92
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: NavigationItemComponent, deps: [{ token: Router }, { token: SidenavComponentService }, { token: ElementRef }, { token: Renderer2 }, { token: Overlay }, { token: ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
121
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: NavigationItemComponent, isStandalone: true, selector: "li[rxap-navigation-item]", inputs: { item: "item", level: "level" }, host: { listeners: { "mouseenter": "onMouseenter()", "mouseleave": "onMouseleave()" }, properties: { "class.active": "this.isActive" }, classAttribute: "rxap-navigation-item" }, viewQueries: [{ propertyName: "routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true, static: true }, { propertyName: "_navigationOverlay", first: true, predicate: ["navigationOverlay"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<a [matTooltipDisabled]=\"(sidenav.collapsed$ | async) === false\"\n [matTooltip]=\"item.label\"\n [routerLink]=\"item.routerLink\"\n class=\"navigation-link mat-body-2 mat-body-strong navigation-level-{{level}}\"\n matRipple routerLinkActive=\"link-active\">\n <mat-icon *ngIf=\"item.icon\" [rxapIcon]=\"item.icon\" class=\"icon\"></mat-icon>\n <ng-template [ngIf]=\"(sidenav.collapsed$ | async) === false\">\n <span class=\"label\">{{ item.label }}</span>\n </ng-template>\n</a>\n\n<ul *ngIf=\"routerLinkActive.isActive && (sidenav.collapsed$ | async) === false && children\"\n [@sub-nav]\n [items]=\"children\"\n [level]=\"level + 1\"\n class=\"sub-items\"\n fxFlex=\"nogrow\"\n rxap-navigation\n>\n</ul>\n\n<ng-template #navigationOverlay>\n <div (mouseenter)=\"lockeOverlay = true\"\n (mouseleave)=\"lockeOverlay = false; onMouseleave()\" class=\"navigation-overlay-container mat-elevation-z1\">\n <ul>\n <li *ngFor=\"let child of children\">\n <a *ngIf=\"isNavigationItem(child)\" [routerLink]=\"asNavigationItem(child).routerLink\"\n class=\"navigation-link mat-subtitle-2 mat-body-strong\" matRipple>\n <mat-icon *ngIf=\"asNavigationItem(child).icon\" [rxapIcon]=\"asNavigationItem(child).icon\"\n class=\"icon\"></mat-icon>\n <span class=\"label\">{{ asNavigationItem(child).label }}</span>\n </a>\n </li>\n </ul>\n </div>\n</ng-template>\n", styles: [".rxap-navigation-item,.navigation-overlay-container{display:flex;flex-direction:column;min-height:48px}.rxap-navigation-item .navigation-link,.navigation-overlay-container .navigation-link{display:flex;flex-direction:row;align-items:center;text-decoration:none;height:48px}.rxap-navigation-item .navigation-link .icon,.navigation-overlay-container .navigation-link .icon{margin:0 16px}.rxap-navigation-item .navigation-link .label,.navigation-overlay-container .navigation-link .label{padding-right:12px}.rxap-navigation-item .navigation-link.navigation-level-1,.navigation-overlay-container .navigation-link.navigation-level-1{padding-left:52px}.rxap-navigation-item .navigation-link.navigation-level-1 .icon,.navigation-overlay-container .navigation-link.navigation-level-1 .icon{padding-left:0}.rxap-navigation-item .navigation-link.navigation-level-2,.navigation-overlay-container .navigation-link.navigation-level-2{padding-left:88px}.rxap-navigation-item .navigation-link.navigation-level-2 .icon,.navigation-overlay-container .navigation-link.navigation-level-2 .icon{padding-left:0}.navigation-overlay-container{padding:0 16px}.navigation-overlay-container ul{list-style-type:none;margin:0;padding:0}.navigation-overlay-container ul .navigation-link .label{padding-right:0}.navigation-overlay-container ul .navigation-link .icon{margin-left:0}\n"], dependencies: [{ kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: IconDirective, selector: "mat-icon[rxapIcon]", inputs: ["rxapIcon"] }, { kind: "component", type: NavigationComponent, selector: "ul[rxap-navigation]", inputs: ["root", "items", "level"] }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], animations: [
93
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: NavigationItemComponent, isStandalone: true, selector: "li[rxap-navigation-item]", inputs: { level: "level", item: "item" }, host: { properties: { "class.active": "this.isActive" } }, viewQueries: [{ propertyName: "routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"{\n 'border-l-4 text-accent-400 border-accent-600': active(),\n }\">\n <a [routerLink]=\"item.routerLink\"\n class=\"h-12 px-4 flex flex-row justify-between items-center gap-x-4\"\n matRipple\n routerLinkActive\n\n >\n <span\n [ngClass]=\"{\n 'pl-0': level === 0,\n 'pl-4': level === 1,\n 'pl-8': level === 2,\n 'pl-12': level === 3\n }\"\n class=\"grow whitespace-nowrap\"\n >\n {{ item.label }}\n </span>\n <mat-icon *ngIf=\"item.icon\" [rxapIcon]=\"item.icon\"></mat-icon>\n </a>\n\n <ng-container *ngIf=\"item.children?.length && active()\">\n\n <mat-divider></mat-divider>\n\n <ul [@sub-nav]\n [items]=\"children ?? []\"\n [level]=\"level + 1\"\n rxap-navigation\n >\n </ul>\n\n <mat-divider></mat-divider>\n\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return RouterLinkActive; }), selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i0.forwardRef(function () { return RouterLink; }), selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i0.forwardRef(function () { return NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatRippleModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i1.MatRipple; }), selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatIconModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i2.MatIcon; }), selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i0.forwardRef(function () { return IconDirective; }), selector: "mat-icon[rxapIcon]", inputs: ["rxapIcon"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatDividerModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i3.MatDivider; }), selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i0.forwardRef(function () { return NavigationComponent; }), selector: "ul[rxap-navigation]", inputs: ["items", "level", "root"] }, { kind: "directive", type: i0.forwardRef(function () { return NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
122
94
  trigger('sub-nav', [
123
95
  transition(':enter', [
124
96
  style({
@@ -140,17 +112,9 @@ __decorate([
140
112
  Required,
141
113
  __metadata("design:type", Object)
142
114
  ], NavigationItemComponent.prototype, "item", void 0);
143
- __decorate([
144
- DebounceCall(100),
145
- __metadata("design:type", Function),
146
- __metadata("design:paramtypes", []),
147
- __metadata("design:returntype", void 0)
148
- ], NavigationItemComponent.prototype, "onMouseleave", null);
149
115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: NavigationItemComponent, decorators: [{
150
116
  type: Component,
151
- args: [{ selector: 'li[rxap-navigation-item]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
152
- class: 'rxap-navigation-item',
153
- }, animations: [
117
+ args: [{ selector: 'li[rxap-navigation-item]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [
154
118
  trigger('sub-nav', [
155
119
  transition(':enter', [
156
120
  style({
@@ -168,21 +132,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImpor
168
132
  ]),
169
133
  ], standalone: true, imports: [
170
134
  RouterLinkActive,
171
- MatRippleModule,
172
135
  RouterLink,
173
- MatTooltipModule,
174
136
  NgIf,
137
+ MatRippleModule,
175
138
  MatIconModule,
176
139
  IconDirective,
177
- NavigationComponent,
178
- FlexModule,
179
- NgFor,
180
- AsyncPipe,
181
- ], template: "<a [matTooltipDisabled]=\"(sidenav.collapsed$ | async) === false\"\n [matTooltip]=\"item.label\"\n [routerLink]=\"item.routerLink\"\n class=\"navigation-link mat-body-2 mat-body-strong navigation-level-{{level}}\"\n matRipple routerLinkActive=\"link-active\">\n <mat-icon *ngIf=\"item.icon\" [rxapIcon]=\"item.icon\" class=\"icon\"></mat-icon>\n <ng-template [ngIf]=\"(sidenav.collapsed$ | async) === false\">\n <span class=\"label\">{{ item.label }}</span>\n </ng-template>\n</a>\n\n<ul *ngIf=\"routerLinkActive.isActive && (sidenav.collapsed$ | async) === false && children\"\n [@sub-nav]\n [items]=\"children\"\n [level]=\"level + 1\"\n class=\"sub-items\"\n fxFlex=\"nogrow\"\n rxap-navigation\n>\n</ul>\n\n<ng-template #navigationOverlay>\n <div (mouseenter)=\"lockeOverlay = true\"\n (mouseleave)=\"lockeOverlay = false; onMouseleave()\" class=\"navigation-overlay-container mat-elevation-z1\">\n <ul>\n <li *ngFor=\"let child of children\">\n <a *ngIf=\"isNavigationItem(child)\" [routerLink]=\"asNavigationItem(child).routerLink\"\n class=\"navigation-link mat-subtitle-2 mat-body-strong\" matRipple>\n <mat-icon *ngIf=\"asNavigationItem(child).icon\" [rxapIcon]=\"asNavigationItem(child).icon\"\n class=\"icon\"></mat-icon>\n <span class=\"label\">{{ asNavigationItem(child).label }}</span>\n </a>\n </li>\n </ul>\n </div>\n</ng-template>\n", styles: [".rxap-navigation-item,.navigation-overlay-container{display:flex;flex-direction:column;min-height:48px}.rxap-navigation-item .navigation-link,.navigation-overlay-container .navigation-link{display:flex;flex-direction:row;align-items:center;text-decoration:none;height:48px}.rxap-navigation-item .navigation-link .icon,.navigation-overlay-container .navigation-link .icon{margin:0 16px}.rxap-navigation-item .navigation-link .label,.navigation-overlay-container .navigation-link .label{padding-right:12px}.rxap-navigation-item .navigation-link.navigation-level-1,.navigation-overlay-container .navigation-link.navigation-level-1{padding-left:52px}.rxap-navigation-item .navigation-link.navigation-level-1 .icon,.navigation-overlay-container .navigation-link.navigation-level-1 .icon{padding-left:0}.rxap-navigation-item .navigation-link.navigation-level-2,.navigation-overlay-container .navigation-link.navigation-level-2{padding-left:88px}.rxap-navigation-item .navigation-link.navigation-level-2 .icon,.navigation-overlay-container .navigation-link.navigation-level-2 .icon{padding-left:0}.navigation-overlay-container{padding:0 16px}.navigation-overlay-container ul{list-style-type:none;margin:0;padding:0}.navigation-overlay-container ul .navigation-link .label{padding-right:0}.navigation-overlay-container ul .navigation-link .icon{margin-left:0}\n"] }]
182
- }], ctorParameters: function () { return [{ type: i5.Router, decorators: [{
140
+ MatDividerModule,
141
+ forwardRef(() => NavigationComponent),
142
+ NgClass,
143
+ ], template: "<div [ngClass]=\"{\n 'border-l-4 text-accent-400 border-accent-600': active(),\n }\">\n <a [routerLink]=\"item.routerLink\"\n class=\"h-12 px-4 flex flex-row justify-between items-center gap-x-4\"\n matRipple\n routerLinkActive\n\n >\n <span\n [ngClass]=\"{\n 'pl-0': level === 0,\n 'pl-4': level === 1,\n 'pl-8': level === 2,\n 'pl-12': level === 3\n }\"\n class=\"grow whitespace-nowrap\"\n >\n {{ item.label }}\n </span>\n <mat-icon *ngIf=\"item.icon\" [rxapIcon]=\"item.icon\"></mat-icon>\n </a>\n\n <ng-container *ngIf=\"item.children?.length && active()\">\n\n <mat-divider></mat-divider>\n\n <ul [@sub-nav]\n [items]=\"children ?? []\"\n [level]=\"level + 1\"\n rxap-navigation\n >\n </ul>\n\n <mat-divider></mat-divider>\n\n </ng-container>\n</div>\n" }]
144
+ }], ctorParameters: function () { return [{ type: i4.Router, decorators: [{
183
145
  type: Inject,
184
146
  args: [Router]
185
- }] }, { type: i6.SidenavComponentService, decorators: [{
147
+ }] }, { type: i5.SidenavComponentService, decorators: [{
186
148
  type: Inject,
187
149
  args: [SidenavComponentService]
188
150
  }] }, { type: i0.ElementRef, decorators: [{
@@ -191,30 +153,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImpor
191
153
  }] }, { type: i0.Renderer2, decorators: [{
192
154
  type: Inject,
193
155
  args: [Renderer2]
194
- }] }, { type: i7.Overlay, decorators: [{
156
+ }] }, { type: i6.Overlay, decorators: [{
195
157
  type: Inject,
196
158
  args: [Overlay]
197
159
  }] }, { type: i0.ViewContainerRef, decorators: [{
198
160
  type: Inject,
199
161
  args: [ViewContainerRef]
200
- }] }]; }, propDecorators: { routerLinkActive: [{
162
+ }] }]; }, propDecorators: { level: [{
163
+ type: Input
164
+ }], routerLinkActive: [{
201
165
  type: ViewChild,
202
166
  args: [RouterLinkActive, { static: true }]
203
167
  }], item: [{
204
168
  type: Input
205
- }], level: [{
206
- type: Input
207
169
  }], isActive: [{
208
170
  type: HostBinding,
209
171
  args: ['class.active']
210
- }], _navigationOverlay: [{
211
- type: ViewChild,
212
- args: ['navigationOverlay']
213
- }], onMouseenter: [{
214
- type: HostListener,
215
- args: ['mouseenter']
216
- }], onMouseleave: [{
217
- type: HostListener,
218
- args: ['mouseleave']
219
172
  }] } });
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBRVYsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUlMLFNBQVMsRUFFVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLFlBQVksRUFDWixRQUFRLEdBQ1QsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxHQUNSLE1BQU0scUJBQXFCLENBQUM7QUFNN0IsT0FBTyxFQUNMLGFBQWEsRUFDYixNQUFNLEVBQ04sVUFBVSxFQUNWLGdCQUFnQixHQUNqQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUNMLEtBQUssRUFDTCxvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEYsT0FBTyxFQUNMLE9BQU8sR0FFUixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxJQUFJLEdBQ0wsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7OztBQTZDekQsTUFBTSxPQUFPLHVCQUF1QjtJQThCbEMsWUFFbUIsTUFBYyxFQUVmLE9BQWdDLEVBRS9CLFVBQXNCLEVBRXRCLFFBQW1CLEVBRW5CLE9BQWdCLEVBRWhCLGdCQUFrQztRQVZsQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBRWYsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUFFL0IsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUV0QixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBRW5CLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFFaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQXhDOUMsYUFBUSxHQUFzQixJQUFJLENBQUM7UUFVbkMsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUdWLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFLUCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFLcEQ7O1dBRUc7UUFDSSxpQkFBWSxHQUFHLEtBQUssQ0FBQztJQWdCNUIsQ0FBQztJQUVNLFdBQVcsQ0FBQyxPQUFzQjtRQUN2QyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNuQixNQUFNLElBQUksR0FBbUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQztZQUMxRCxJQUFJLENBQUMsUUFBUTtnQkFDWCxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDaEU7SUFDSCxDQUFDO0lBRU0sZUFBZTtRQUNwQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO2FBQ2IsSUFBSSxDQUNILE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxZQUFZLGFBQWEsQ0FBQyxFQUNqRCxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQ2YsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUNWLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUU7b0JBQ2xDLDhDQUE4QztvQkFDOUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQztpQkFDNUI7Z0JBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7YUFDakU7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQ3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUM3QixRQUFRLENBQ1QsQ0FBQzthQUNIO1FBQ0gsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FDakIsQ0FBQztJQUNKLENBQUM7SUFFTSxRQUFRO1FBQ2IseURBQXlEO1FBQ3pELG1CQUFtQjtRQUNuQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVO2FBQ2xCLElBQUksQ0FDSCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1Asb0JBQW9CLEVBQUUsRUFDdEIsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FDdEM7YUFDQSxTQUFTLEVBQUUsQ0FDakIsQ0FBQztJQUNKLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBR00sWUFBWTtRQUNqQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFO2dCQUNwRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtvQkFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQzt3QkFDckMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE9BQU87NkJBQ1AsUUFBUSxFQUFFOzZCQUNWLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7NkJBQ3BDLGFBQWEsQ0FBQzs0QkFDYjtnQ0FDRSxPQUFPLEVBQUUsS0FBSztnQ0FDZCxPQUFPLEVBQUUsS0FBSztnQ0FDZCxRQUFRLEVBQUUsS0FBSztnQ0FDZixRQUFRLEVBQUUsT0FBTzs2QkFDbEI7eUJBQ0YsQ0FBQztxQkFDekIsQ0FBQyxDQUFDO2lCQUNKO2dCQUNELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxFQUFFO29CQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQzdDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FDbkUsQ0FBQztpQkFDSDthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBSU0sWUFBWTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN0QixJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVELGlDQUFpQztJQUVqQyxvRUFBb0U7SUFFN0QsdUJBQXVCLENBQzVCLElBQTRDO1FBRTVDLE9BQVEsSUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxnQkFBZ0IsQ0FDckIsSUFBNEM7UUFFNUMsT0FBTyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU0sZ0JBQWdCLENBQ3JCLElBQTRDO1FBRTVDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1NBQ3JEO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzhHQTlKVSx1QkFBdUIsa0JBK0J4QixNQUFNLGFBRU4sdUJBQXVCLGFBRXZCLFVBQVUsYUFFVixTQUFTLGFBRVQsT0FBTyxhQUVQLGdCQUFnQjtrR0F6Q2YsdUJBQXVCLGtXQUl2QixnQkFBZ0IsNkxDbkg3Qiw0N0NBb0NBLG00Q0Q4REksZ0JBQWdCLDZNQUNoQixlQUFlLG1TQUNmLFVBQVUsMk5BQ1YsZ0JBQWdCLCtIQUNoQixJQUFJLDRGQUNKLGFBQWEsb0xBQ2IsYUFBYSxxRkFDYixtQkFBbUIsbUdBQ25CLFVBQVUsc2dCQUNWLEtBQUssOEdBQ0wsU0FBUyxnQ0E3QkM7WUFDVixPQUFPLENBQUMsU0FBUyxFQUFFO2dCQUNqQixVQUFVLENBQUMsUUFBUSxFQUFFO29CQUNuQixLQUFLLENBQUM7d0JBQ0osT0FBTyxFQUFFLE9BQU87d0JBQ2hCLE1BQU0sRUFBRSxHQUFHO3dCQUNYLFFBQVEsRUFBRSxRQUFRO3FCQUNuQixDQUFDO29CQUNGLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7aUJBQ3JDLENBQUM7Z0JBQ0YsVUFBVSxDQUFDLFFBQVEsRUFBRTtvQkFDbkIsS0FBSyxDQUFDLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDO29CQUM3QixPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO29CQUNwQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7aUJBQzNCLENBQUM7YUFDSCxDQUFDO1NBQ0g7O0FBeUJNO0lBRE4sUUFBUTs7cURBQ29CO0FBd0h0QjtJQUROLFlBQVksQ0FBQyxHQUFHLENBQUM7Ozs7MkRBS2pCOzJGQXJJVSx1QkFBdUI7a0JBM0NuQyxTQUFTOytCQUVFLDBCQUEwQixtQkFHbkIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUUvQjt3QkFDSixLQUFLLEVBQUUsc0JBQXNCO3FCQUM5QixjQUNXO3dCQUNWLE9BQU8sQ0FBQyxTQUFTLEVBQUU7NEJBQ2pCLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLEtBQUssQ0FBQztvQ0FDSixPQUFPLEVBQUUsT0FBTztvQ0FDaEIsTUFBTSxFQUFFLEdBQUc7b0NBQ1gsUUFBUSxFQUFFLFFBQVE7aUNBQ25CLENBQUM7Z0NBQ0YsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQzs2QkFDckMsQ0FBQzs0QkFDRixVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNuQixLQUFLLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUM7Z0NBQzdCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0NBQ3BDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQzs2QkFDM0IsQ0FBQzt5QkFDSCxDQUFDO3FCQUNILGNBQ1csSUFBSSxXQUNQO3dCQUNQLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixVQUFVO3dCQUNWLGdCQUFnQjt3QkFDaEIsSUFBSTt3QkFDSixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixVQUFVO3dCQUNWLEtBQUs7d0JBQ0wsU0FBUztxQkFDVjs7MEJBaUNFLE1BQU07MkJBQUMsTUFBTTs7MEJBRWIsTUFBTTsyQkFBQyx1QkFBdUI7OzBCQUU5QixNQUFNOzJCQUFDLFVBQVU7OzBCQUVqQixNQUFNOzJCQUFDLFNBQVM7OzBCQUVoQixNQUFNOzJCQUFDLE9BQU87OzBCQUVkLE1BQU07MkJBQUMsZ0JBQWdCOzRDQXBDbkIsZ0JBQWdCO3NCQUR0QixTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFLdEMsSUFBSTtzQkFGVixLQUFLO2dCQUtDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxRQUFRO3NCQURkLFdBQVc7dUJBQUMsY0FBYztnQkFJbkIsa0JBQWtCO3NCQUR6QixTQUFTO3VCQUFDLG1CQUFtQjtnQkFtRnZCLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsWUFBWTtnQkE4Qm5CLFlBQVk7c0JBRmxCLFlBQVk7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBEZWJvdW5jZUNhbGwsXG4gIFJlcXVpcmVkLFxufSBmcm9tICdAcnhhcC91dGlsaXRpZXMnO1xuaW1wb3J0IHtcbiAgYW5pbWF0ZSxcbiAgc3R5bGUsXG4gIHRyYW5zaXRpb24sXG4gIHRyaWdnZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgTmF2aWdhdGlvbixcbiAgTmF2aWdhdGlvbkRpdmlkZXJJdGVtLFxuICBOYXZpZ2F0aW9uSXRlbSxcbn0gZnJvbSAnLi4vbmF2aWdhdGlvbi1pdGVtJztcbmltcG9ydCB7XG4gIE5hdmlnYXRpb25FbmQsXG4gIFJvdXRlcixcbiAgUm91dGVyTGluayxcbiAgUm91dGVyTGlua0FjdGl2ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGVsYXksXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIHNraXAsXG4gIHN0YXJ0V2l0aCxcbiAgdGFwLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTaWRlbmF2Q29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NpZGVuYXYvc2lkZW5hdi5jb21wb25lbnQuc2VydmljZSc7XG5pbXBvcnQge1xuICBPdmVybGF5LFxuICBPdmVybGF5UmVmLFxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgRmxleE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2ZsZXgtbGF5b3V0L2ZsZXgnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL25hdmlnYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEljb25EaXJlY3RpdmUgfSBmcm9tICdAcnhhcC9tYXRlcmlhbC1kaXJlY3RpdmVzL2ljb24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtcbiAgQXN5bmNQaXBlLFxuICBOZ0ZvcixcbiAgTmdJZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE1hdFJpcHBsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaVtyeGFwLW5hdmlnYXRpb24taXRlbV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbICcuL25hdmlnYXRpb24taXRlbS5jb21wb25lbnQuc2NzcycgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taG9zdC1tZXRhZGF0YS1wcm9wZXJ0eVxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdyeGFwLW5hdmlnYXRpb24taXRlbScsXG4gIH0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdzdWItbmF2JywgW1xuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICAgICAgICBoZWlnaHQ6ICcwJyxcbiAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgIH0pLFxuICAgICAgICBhbmltYXRlKDE1MCwgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSksXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgc3R5bGUoeyBvdmVyZmxvdzogJ2hpZGRlbicgfSksXG4gICAgICAgIGFuaW1hdGUoMzAwLCBzdHlsZSh7IGhlaWdodDogJzAnIH0pKSxcbiAgICAgICAgc3R5bGUoeyBkaXNwbGF5OiAnbm9uZScgfSksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFJvdXRlckxpbmtBY3RpdmUsXG4gICAgTWF0UmlwcGxlTW9kdWxlLFxuICAgIFJvdXRlckxpbmssXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBOZ0lmLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgSWNvbkRpcmVjdGl2ZSxcbiAgICBOYXZpZ2F0aW9uQ29tcG9uZW50LFxuICAgIEZsZXhNb2R1bGUsXG4gICAgTmdGb3IsXG4gICAgQXN5bmNQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uSXRlbUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkluaXQge1xuICBwdWJsaWMgY2hpbGRyZW46IE5hdmlnYXRpb24gfCBudWxsID0gbnVsbDtcblxuICBAVmlld0NoaWxkKFJvdXRlckxpbmtBY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHB1YmxpYyByb3V0ZXJMaW5rQWN0aXZlITogUm91dGVyTGlua0FjdGl2ZTtcblxuICBASW5wdXQoKVxuICBAUmVxdWlyZWRcbiAgcHVibGljIGl0ZW0hOiBOYXZpZ2F0aW9uSXRlbTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbGV2ZWwgPSAwO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYWN0aXZlJylcbiAgcHVibGljIGlzQWN0aXZlID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnbmF2aWdhdGlvbk92ZXJsYXknKVxuICBwcml2YXRlIF9uYXZpZ2F0aW9uT3ZlcmxheSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByaXZhdGUgX292ZXJsYXlSZWY/OiBPdmVybGF5UmVmO1xuICBwcml2YXRlIF9lbWJlZGRlZFZpZXdSZWY/OiBFbWJlZGRlZFZpZXdSZWY8YW55PjtcblxuICAvKipcbiAgICogaW5kaWNhdGVzIHRoZSBtb3VzZSBpcyBvdmVyIHRoZVxuICAgKi9cbiAgcHVibGljIGxvY2tlT3ZlcmxheSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoUm91dGVyKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgQEluamVjdChTaWRlbmF2Q29tcG9uZW50U2VydmljZSlcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2lkZW5hdjogU2lkZW5hdkNvbXBvbmVudFNlcnZpY2UsXG4gICAgQEluamVjdChFbGVtZW50UmVmKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBASW5qZWN0KFJlbmRlcmVyMilcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgQEluamVjdChPdmVybGF5KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBASW5qZWN0KFZpZXdDb250YWluZXJSZWYpXG4gICAgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW0nXSkge1xuICAgICAgY29uc3QgaXRlbTogTmF2aWdhdGlvbkl0ZW0gPSBjaGFuZ2VzWydpdGVtJ10uY3VycmVudFZhbHVlO1xuICAgICAgdGhpcy5jaGlsZHJlbiA9XG4gICAgICAgIGl0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPyBpdGVtLmNoaWxkcmVuIDogbnVsbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgICAgICAgICBzdGFydFdpdGgodHJ1ZSksXG4gICAgICAgICAgICBkZWxheSgxMDApLFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMucm91dGVyTGlua0FjdGl2ZS5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zaWRlbmF2LmNvbGxhcHNlZCQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIC8vIG9ubHkgY2xvc2UgdGhlIG92ZXJsYXkgaWYgc2lkZW5hdiBjb2xsYXBzZWRcbiAgICAgICAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWY/LmRldGFjaCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnYWN0aXZlJyk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhcbiAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgJ2FjdGl2ZScsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIC8vIGRldGFjaCB0aGUgbmF2aWdhdGlvbiBvdmVybGF5IGlmIHRoZSBzaWRlbmF2IGNvbGxhcHNlZFxuICAgIC8vIHN0YXRlIGlzIGNoYW5nZWRcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5zaWRlbmF2LmNvbGxhcHNlZCRcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuX292ZXJsYXlSZWY/LmRldGFjaCgpKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX292ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInKVxuICBwdWJsaWMgb25Nb3VzZWVudGVyKCkge1xuICAgIGlmICh0aGlzLmNoaWxkcmVuKSB7XG4gICAgICBpZiAoIXRoaXMucm91dGVyTGlua0FjdGl2ZS5pc0FjdGl2ZSB8fCB0aGlzLnNpZGVuYXYuY29sbGFwc2VkJC52YWx1ZSkge1xuICAgICAgICBpZiAoIXRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl9vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgICAgICB0aGlzLl9lbWJlZGRlZFZpZXdSZWYgPSB0aGlzLl9vdmVybGF5UmVmLmF0dGFjaChcbiAgICAgICAgICAgIG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLl9uYXZpZ2F0aW9uT3ZlcmxheSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXG4gIEBEZWJvdW5jZUNhbGwoMTAwKVxuICBwdWJsaWMgb25Nb3VzZWxlYXZlKCkge1xuICAgIGlmICghdGhpcy5sb2NrZU92ZXJsYXkpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWY/LmRldGFjaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHJlZ2lvbiB0eXBlIHNhdmUgaXRlbSBwcm9wZXJ0eVxuXG4gIC8vIHJlcXVpcmVkIHRvIGNoZWNrIHRoZSB0eXBlIG9mIHRoZSBpdGVtIHByb3BlcnR5IGluIHRoZSBuZ0ZvciBsb29wXG5cbiAgcHVibGljIGlzTmF2aWdhdGlvbkRpdmlkZXJJdGVtKFxuICAgIGl0ZW06IE5hdmlnYXRpb25JdGVtIHwgTmF2aWdhdGlvbkRpdmlkZXJJdGVtLFxuICApOiBpdGVtIGlzIE5hdmlnYXRpb25EaXZpZGVySXRlbSB7XG4gICAgcmV0dXJuIChpdGVtIGFzIGFueSlbJ2RpdmlkZXInXTtcbiAgfVxuXG4gIHB1YmxpYyBpc05hdmlnYXRpb25JdGVtKFxuICAgIGl0ZW06IE5hdmlnYXRpb25JdGVtIHwgTmF2aWdhdGlvbkRpdmlkZXJJdGVtLFxuICApOiBpdGVtIGlzIE5hdmlnYXRpb25JdGVtIHtcbiAgICByZXR1cm4gIXRoaXMuaXNOYXZpZ2F0aW9uRGl2aWRlckl0ZW0oaXRlbSk7XG4gIH1cblxuICBwdWJsaWMgYXNOYXZpZ2F0aW9uSXRlbShcbiAgICBpdGVtOiBOYXZpZ2F0aW9uSXRlbSB8IE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgKTogTmF2aWdhdGlvbkl0ZW0ge1xuICAgIGlmICghdGhpcy5pc05hdmlnYXRpb25JdGVtKGl0ZW0pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBpdGVtIGlzIG5vdCBhIE5hdmlnYXRpb25JdGVtJyk7XG4gICAgfVxuICAgIHJldHVybiBpdGVtO1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG59XG4iLCI8YSBbbWF0VG9vbHRpcERpc2FibGVkXT1cIihzaWRlbmF2LmNvbGxhcHNlZCQgfCBhc3luYykgPT09IGZhbHNlXCJcbiAgIFttYXRUb29sdGlwXT1cIml0ZW0ubGFiZWxcIlxuICAgW3JvdXRlckxpbmtdPVwiaXRlbS5yb3V0ZXJMaW5rXCJcbiAgIGNsYXNzPVwibmF2aWdhdGlvbi1saW5rIG1hdC1ib2R5LTIgbWF0LWJvZHktc3Ryb25nIG5hdmlnYXRpb24tbGV2ZWwte3tsZXZlbH19XCJcbiAgIG1hdFJpcHBsZSByb3V0ZXJMaW5rQWN0aXZlPVwibGluay1hY3RpdmVcIj5cbiAgPG1hdC1pY29uICpuZ0lmPVwiaXRlbS5pY29uXCIgW3J4YXBJY29uXT1cIml0ZW0uaWNvblwiIGNsYXNzPVwiaWNvblwiPjwvbWF0LWljb24+XG4gIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIoc2lkZW5hdi5jb2xsYXBzZWQkIHwgYXN5bmMpID09PSBmYWxzZVwiPlxuICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICA8L25nLXRlbXBsYXRlPlxuPC9hPlxuXG48dWwgKm5nSWY9XCJyb3V0ZXJMaW5rQWN0aXZlLmlzQWN0aXZlICYmIChzaWRlbmF2LmNvbGxhcHNlZCQgfCBhc3luYykgPT09IGZhbHNlICYmIGNoaWxkcmVuXCJcbiAgICBbQHN1Yi1uYXZdXG4gICAgW2l0ZW1zXT1cImNoaWxkcmVuXCJcbiAgICBbbGV2ZWxdPVwibGV2ZWwgKyAxXCJcbiAgICBjbGFzcz1cInN1Yi1pdGVtc1wiXG4gICAgZnhGbGV4PVwibm9ncm93XCJcbiAgICByeGFwLW5hdmlnYXRpb25cbj5cbjwvdWw+XG5cbjxuZy10ZW1wbGF0ZSAjbmF2aWdhdGlvbk92ZXJsYXk+XG4gIDxkaXYgKG1vdXNlZW50ZXIpPVwibG9ja2VPdmVybGF5ID0gdHJ1ZVwiXG4gICAgICAgKG1vdXNlbGVhdmUpPVwibG9ja2VPdmVybGF5ID0gZmFsc2U7IG9uTW91c2VsZWF2ZSgpXCIgY2xhc3M9XCJuYXZpZ2F0aW9uLW92ZXJsYXktY29udGFpbmVyIG1hdC1lbGV2YXRpb24tejFcIj5cbiAgICA8dWw+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNoaWxkcmVuXCI+XG4gICAgICAgIDxhICpuZ0lmPVwiaXNOYXZpZ2F0aW9uSXRlbShjaGlsZClcIiBbcm91dGVyTGlua109XCJhc05hdmlnYXRpb25JdGVtKGNoaWxkKS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgY2xhc3M9XCJuYXZpZ2F0aW9uLWxpbmsgbWF0LXN1YnRpdGxlLTIgbWF0LWJvZHktc3Ryb25nXCIgbWF0UmlwcGxlPlxuICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImFzTmF2aWdhdGlvbkl0ZW0oY2hpbGQpLmljb25cIiBbcnhhcEljb25dPVwiYXNOYXZpZ2F0aW9uSXRlbShjaGlsZCkuaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvblwiPjwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPnt7IGFzTmF2aWdhdGlvbkl0ZW0oY2hpbGQpLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUdMLFNBQVMsRUFDVCxNQUFNLEVBRU4sU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxPQUFPLEVBQ1AsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEdBQ1IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQ0wsYUFBYSxFQUNiLE1BQU0sRUFDTixVQUFVLEVBQ1YsZ0JBQWdCLEdBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLFlBQVksRUFDWixZQUFZLEdBQ2IsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxHQUFHLEdBQ0osTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEYsT0FBTyxFQUFF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QUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztnQ0FDcEMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDOzZCQUMzQixDQUFDO3lCQUNILENBQUM7cUJBQ0gsY0FDVyxJQUFJLFdBQ1A7d0JBQ1AsZ0JBQWdCO3dCQUNoQixVQUFVO3dCQUNWLElBQUk7d0JBQ0osZUFBZTt3QkFDZixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7d0JBQ3JDLE9BQU87cUJBQ1I7OzBCQWtDRSxNQUFNOzJCQUFDLE1BQU07OzBCQUViLE1BQU07MkJBQUMsdUJBQXVCOzswQkFFOUIsTUFBTTsyQkFBQyxVQUFVOzswQkFFakIsTUFBTTsyQkFBQyxTQUFTOzswQkFFaEIsTUFBTTsyQkFBQyxPQUFPOzswQkFFZCxNQUFNOzJCQUFDLGdCQUFnQjs0Q0F0Q25CLEtBQUs7c0JBRFgsS0FBSztnQkFRQyxnQkFBZ0I7c0JBRHRCLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUt0QyxJQUFJO3NCQUZWLEtBQUs7Z0JBT0YsUUFBUTtzQkFEWCxXQUFXO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIFJlbmRlcmVyMixcbiAgc2lnbmFsLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlcXVpcmVkIH0gZnJvbSAnQHJ4YXAvdXRpbGl0aWVzJztcbmltcG9ydCB7XG4gIGFuaW1hdGUsXG4gIHN0eWxlLFxuICB0cmFuc2l0aW9uLFxuICB0cmlnZ2VyLFxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gIE5hdmlnYXRpb25FbmQsXG4gIFJvdXRlcixcbiAgUm91dGVyTGluayxcbiAgUm91dGVyTGlua0FjdGl2ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIGRlYm91bmNlVGltZSxcbiAgU3Vic2NyaXB0aW9uLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGZpbHRlcixcbiAgc3RhcnRXaXRoLFxuICB0YXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE92ZXJsYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBTaWRlbmF2Q29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NpZGVuYXYvc2lkZW5hdi5jb21wb25lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgSWNvbkRpcmVjdGl2ZSB9IGZyb20gJ0ByeGFwL21hdGVyaWFsLWRpcmVjdGl2ZXMvaWNvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRSaXBwbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7XG4gIE5nQ2xhc3MsXG4gIE5nSWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBOYXZpZ2F0aW9uLFxuICBOYXZpZ2F0aW9uRGl2aWRlckl0ZW0sXG4gIE5hdmlnYXRpb25JdGVtLFxufSBmcm9tICcuLi9uYXZpZ2F0aW9uLWl0ZW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaVtyeGFwLW5hdmlnYXRpb24taXRlbV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbICcuL25hdmlnYXRpb24taXRlbS5jb21wb25lbnQuc2NzcycgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdzdWItbmF2JywgW1xuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICAgICAgICBoZWlnaHQ6ICcwJyxcbiAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgIH0pLFxuICAgICAgICBhbmltYXRlKDE1MCwgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSksXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgc3R5bGUoeyBvdmVyZmxvdzogJ2hpZGRlbicgfSksXG4gICAgICAgIGFuaW1hdGUoMzAwLCBzdHlsZSh7IGhlaWdodDogJzAnIH0pKSxcbiAgICAgICAgc3R5bGUoeyBkaXNwbGF5OiAnbm9uZScgfSksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFJvdXRlckxpbmtBY3RpdmUsXG4gICAgUm91dGVyTGluayxcbiAgICBOZ0lmLFxuICAgIE1hdFJpcHBsZU1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIEljb25EaXJlY3RpdmUsXG4gICAgTWF0RGl2aWRlck1vZHVsZSxcbiAgICBmb3J3YXJkUmVmKCgpID0+IE5hdmlnYXRpb25Db21wb25lbnQpLFxuICAgIE5nQ2xhc3MsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5hdmlnYXRpb25JdGVtQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsZXZlbCA9IDA7XG5cbiAgcHJpdmF0ZSBfaXNBY3RpdmUgPSBmYWxzZTtcblxuICBwdWJsaWMgY2hpbGRyZW46IE5hdmlnYXRpb24gfCBudWxsID0gbnVsbDtcblxuICBAVmlld0NoaWxkKFJvdXRlckxpbmtBY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHB1YmxpYyByb3V0ZXJMaW5rQWN0aXZlITogUm91dGVyTGlua0FjdGl2ZTtcblxuICBASW5wdXQoKVxuICBAUmVxdWlyZWRcbiAgcHVibGljIGl0ZW0hOiBOYXZpZ2F0aW9uSXRlbTtcblxuICBwdWJsaWMgYWN0aXZlID0gc2lnbmFsKGZhbHNlKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFjdGl2ZScpXG4gIGdldCBpc0FjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNBY3RpdmU7XG4gIH1cblxuICBzZXQgaXNBY3RpdmUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc0FjdGl2ZSA9IHZhbHVlO1xuICAgIHRoaXMuYWN0aXZlLnNldCh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChSb3V0ZXIpXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBASW5qZWN0KFNpZGVuYXZDb21wb25lbnRTZXJ2aWNlKVxuICAgIHB1YmxpYyByZWFkb25seSBzaWRlbmF2OiBTaWRlbmF2Q29tcG9uZW50U2VydmljZSxcbiAgICBASW5qZWN0KEVsZW1lbnRSZWYpXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIEBJbmplY3QoUmVuZGVyZXIyKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBASW5qZWN0KE92ZXJsYXkpXG4gICAgcHJpdmF0ZSByZWFkb25seSBvdmVybGF5OiBPdmVybGF5LFxuICAgIEBJbmplY3QoVmlld0NvbnRhaW5lclJlZilcbiAgICBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICkge1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snaXRlbSddKSB7XG4gICAgICBjb25zdCBpdGVtOiBOYXZpZ2F0aW9uSXRlbSA9IGNoYW5nZXNbJ2l0ZW0nXS5jdXJyZW50VmFsdWU7XG4gICAgICB0aGlzLmNoaWxkcmVuID1cbiAgICAgICAgaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA/IGl0ZW0uY2hpbGRyZW4gOiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICAgICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICAgICAgc3RhcnRXaXRoKHRydWUpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgbGV0IGlzQWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgY29uc3QgdXJsUGFydHMgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJy8nKTtcbiAgICAgICAgICAgICAgaWYgKHVybFBhcnRzWzBdID09PSAnJykge1xuICAgICAgICAgICAgICAgIHVybFBhcnRzWzBdID0gJy8nO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5pdGVtLnJvdXRlckxpbmsubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodXJsUGFydHNbaV0gIT09IHRoaXMuaXRlbS5yb3V0ZXJMaW5rW2ldKSB7XG4gICAgICAgICAgICAgICAgICBpc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMuaXNBY3RpdmUgPSBpc0FjdGl2ZTtcbiAgICAgICAgICAgICAgaWYgKGlzQWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2FjdGl2ZScpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdhY3RpdmUnKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8vIHJlZ2lvbiB0eXBlIHNhdmUgaXRlbSBwcm9wZXJ0eVxuXG4gIC8vIHJlcXVpcmVkIHRvIGNoZWNrIHRoZSB0eXBlIG9mIHRoZSBpdGVtIHByb3BlcnR5IGluIHRoZSBuZ0ZvciBsb29wXG5cbiAgcHVibGljIGlzTmF2aWdhdGlvbkRpdmlkZXJJdGVtKFxuICAgIGl0ZW06IE5hdmlnYXRpb25JdGVtIHwgTmF2aWdhdGlvbkRpdmlkZXJJdGVtLFxuICApOiBpdGVtIGlzIE5hdmlnYXRpb25EaXZpZGVySXRlbSB7XG4gICAgcmV0dXJuIChpdGVtIGFzIGFueSlbJ2RpdmlkZXInXTtcbiAgfVxuXG4gIHB1YmxpYyBpc05hdmlnYXRpb25JdGVtKFxuICAgIGl0ZW06IE5hdmlnYXRpb25JdGVtIHwgTmF2aWdhdGlvbkRpdmlkZXJJdGVtLFxuICApOiBpdGVtIGlzIE5hdmlnYXRpb25JdGVtIHtcbiAgICByZXR1cm4gIXRoaXMuaXNOYXZpZ2F0aW9uRGl2aWRlckl0ZW0oaXRlbSk7XG4gIH1cblxuICBwdWJsaWMgYXNOYXZpZ2F0aW9uSXRlbShcbiAgICBpdGVtOiBOYXZpZ2F0aW9uSXRlbSB8IE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgKTogTmF2aWdhdGlvbkl0ZW0ge1xuICAgIGlmICghdGhpcy5pc05hdmlnYXRpb25JdGVtKGl0ZW0pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBpdGVtIGlzIG5vdCBhIE5hdmlnYXRpb25JdGVtJyk7XG4gICAgfVxuICAgIHJldHVybiBpdGVtO1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG59XG4iLCI8ZGl2IFtuZ0NsYXNzXT1cIntcbiAgICAgJ2JvcmRlci1sLTQgdGV4dC1hY2NlbnQtNDAwIGJvcmRlci1hY2NlbnQtNjAwJzogYWN0aXZlKCksXG4gICAgIH1cIj5cbiAgPGEgW3JvdXRlckxpbmtdPVwiaXRlbS5yb3V0ZXJMaW5rXCJcbiAgICAgY2xhc3M9XCJoLTEyIHB4LTQgZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGdhcC14LTRcIlxuICAgICBtYXRSaXBwbGVcbiAgICAgcm91dGVyTGlua0FjdGl2ZVxuXG4gID5cbiAgICA8c3BhblxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAncGwtMCc6IGxldmVsID09PSAwLFxuICAgICAgICAncGwtNCc6IGxldmVsID09PSAxLFxuICAgICAgICAncGwtOCc6IGxldmVsID09PSAyLFxuICAgICAgICAncGwtMTInOiBsZXZlbCA9PT0gM1xuICAgICAgfVwiXG4gICAgICBjbGFzcz1cImdyb3cgd2hpdGVzcGFjZS1ub3dyYXBcIlxuICAgID5cbiAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICA8L3NwYW4+XG4gICAgPG1hdC1pY29uICpuZ0lmPVwiaXRlbS5pY29uXCIgW3J4YXBJY29uXT1cIml0ZW0uaWNvblwiPjwvbWF0LWljb24+XG4gIDwvYT5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5jaGlsZHJlbj8ubGVuZ3RoICYmIGFjdGl2ZSgpXCI+XG5cbiAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cblxuICAgIDx1bCBbQHN1Yi1uYXZdXG4gICAgICAgIFtpdGVtc109XCJjaGlsZHJlbiA/PyBbXVwiXG4gICAgICAgIFtsZXZlbF09XCJsZXZlbCArIDFcIlxuICAgICAgICByeGFwLW5hdmlnYXRpb25cbiAgICA+XG4gICAgPC91bD5cblxuICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuXG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=