@esfaenza/core 15.2.123 → 15.2.124
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/components.module.d.ts +7 -8
- package/components/navbar/navbar.component.d.ts +1 -0
- package/components/public-api.d.ts +0 -1
- package/esm2020/components/components.module.mjs +1 -5
- package/esm2020/components/navbar/navbar.component.mjs +6 -4
- package/esm2020/components/public-api.mjs +1 -2
- package/esm2020/lib/app.component.mjs +2 -2
- package/esm2020/lib/core.module.mjs +2 -1
- package/fesm2015/esfaenza-core-components.mjs +40 -75
- package/fesm2015/esfaenza-core-components.mjs.map +1 -1
- package/fesm2015/esfaenza-core.mjs +3 -2
- package/fesm2015/esfaenza-core.mjs.map +1 -1
- package/fesm2020/esfaenza-core-components.mjs +40 -74
- package/fesm2020/esfaenza-core-components.mjs.map +1 -1
- package/fesm2020/esfaenza-core.mjs +3 -2
- package/fesm2020/esfaenza-core.mjs.map +1 -1
- package/package.json +1 -1
- package/components/navbar/modules-board/jace-modules-board.component.d.ts +0 -13
- package/esm2020/components/navbar/modules-board/jace-modules-board.component.mjs +0 -40
|
@@ -17,15 +17,14 @@ import * as i15 from "./error/Angular/angularerror.component";
|
|
|
17
17
|
import * as i16 from "./page/pages.component";
|
|
18
18
|
import * as i17 from "./external-page/external_pages.component";
|
|
19
19
|
import * as i18 from "./jace-login/jace-login.component";
|
|
20
|
-
import * as i19 from "./navbar/
|
|
21
|
-
import * as i20 from "./
|
|
22
|
-
import * as i21 from "./
|
|
23
|
-
import * as i22 from "./
|
|
24
|
-
import * as i23 from "./
|
|
25
|
-
import * as i24 from "./es-modal/es-modal.component";
|
|
26
|
-
import * as i25 from "./es-modal/es-modal-head/es-modal-head.component";
|
|
20
|
+
import * as i19 from "./navbar/navbar.component";
|
|
21
|
+
import * as i20 from "./redirecter/redirecter.component";
|
|
22
|
+
import * as i21 from "./sidebar/sidebar.component";
|
|
23
|
+
import * as i22 from "./jace-resource/jace-resource.component";
|
|
24
|
+
import * as i23 from "./es-modal/es-modal.component";
|
|
25
|
+
import * as i24 from "./es-modal/es-modal-head/es-modal-head.component";
|
|
27
26
|
export declare class ComponentsModule {
|
|
28
27
|
static ɵfac: i0.ɵɵFactoryDeclaration<ComponentsModule, never>;
|
|
29
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ComponentsModule, never, [typeof i1.CommonModule, typeof i2.RouterModule, typeof i3.FormsModule, typeof i4.DirectivesModule, typeof i5.LocalizationModule, typeof i6.ProgressbarModule, typeof i7.MatSlideToggleModule, typeof i8.BsDropdownModule, typeof i9.EsTableModule, typeof i10.ModalModule, typeof i11.BackTop, typeof i12.Breadcrumb, typeof i13.PageNotFoundComponent, typeof i14.ServerErrorComponent, typeof i15.AngularErrorComponent, typeof i16.PagesComponent, typeof i17.ExternalPagesComponent, typeof i18.JaceLoginComponent, typeof i19.
|
|
28
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ComponentsModule, never, [typeof i1.CommonModule, typeof i2.RouterModule, typeof i3.FormsModule, typeof i4.DirectivesModule, typeof i5.LocalizationModule, typeof i6.ProgressbarModule, typeof i7.MatSlideToggleModule, typeof i8.BsDropdownModule, typeof i9.EsTableModule, typeof i10.ModalModule, typeof i11.BackTop, typeof i12.Breadcrumb, typeof i13.PageNotFoundComponent, typeof i14.ServerErrorComponent, typeof i15.AngularErrorComponent, typeof i16.PagesComponent, typeof i17.ExternalPagesComponent, typeof i18.JaceLoginComponent, typeof i19.Navbar, typeof i20.RedirecterComponent, typeof i21.Sidebar, typeof i22.JaceResourceComponent, typeof i23.EsModalComponent, typeof i24.EsModalHeadComponent], [typeof i11.BackTop, typeof i12.Breadcrumb, typeof i13.PageNotFoundComponent, typeof i14.ServerErrorComponent, typeof i15.AngularErrorComponent, typeof i16.PagesComponent, typeof i17.ExternalPagesComponent, typeof i18.JaceLoginComponent, typeof i19.Navbar, typeof i20.RedirecterComponent, typeof i21.Sidebar, typeof i22.JaceResourceComponent, typeof i23.EsModalComponent, typeof i24.EsModalHeadComponent]>;
|
|
30
29
|
static ɵinj: i0.ɵɵInjectorDeclaration<ComponentsModule>;
|
|
31
30
|
}
|
|
@@ -7,7 +7,6 @@ export * from './page/pages.component';
|
|
|
7
7
|
export * from './external-page/external_pages.component';
|
|
8
8
|
export * from './jace-login/jace-login.component';
|
|
9
9
|
export * from './navbar/navbar.component';
|
|
10
|
-
export * from './navbar/modules-board/jace-modules-board.component';
|
|
11
10
|
export * from './redirecter/redirecter.component';
|
|
12
11
|
export * from './sidebar/sidebar.component';
|
|
13
12
|
export * from './base/base.component';
|
|
@@ -20,7 +20,6 @@ import { AngularErrorComponent } from "./error/Angular/angularerror.component";
|
|
|
20
20
|
import { PagesComponent } from "./page/pages.component";
|
|
21
21
|
import { ExternalPagesComponent } from "./external-page/external_pages.component";
|
|
22
22
|
import { JaceLoginComponent } from "./jace-login/jace-login.component";
|
|
23
|
-
import { JaceModulesBoardComponent } from "./navbar/modules-board/jace-modules-board.component";
|
|
24
23
|
import { Navbar } from "./navbar/navbar.component";
|
|
25
24
|
import { JaceResourceComponent } from "./jace-resource/jace-resource.component";
|
|
26
25
|
import { RedirecterComponent } from "./redirecter/redirecter.component";
|
|
@@ -39,7 +38,6 @@ const COMPONENTS = [
|
|
|
39
38
|
PagesComponent,
|
|
40
39
|
ExternalPagesComponent,
|
|
41
40
|
JaceLoginComponent,
|
|
42
|
-
JaceModulesBoardComponent,
|
|
43
41
|
Navbar,
|
|
44
42
|
RedirecterComponent,
|
|
45
43
|
Sidebar,
|
|
@@ -58,7 +56,6 @@ ComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
|
|
|
58
56
|
PagesComponent,
|
|
59
57
|
ExternalPagesComponent,
|
|
60
58
|
JaceLoginComponent,
|
|
61
|
-
JaceModulesBoardComponent,
|
|
62
59
|
Navbar,
|
|
63
60
|
RedirecterComponent,
|
|
64
61
|
Sidebar,
|
|
@@ -72,7 +69,6 @@ ComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
|
|
|
72
69
|
PagesComponent,
|
|
73
70
|
ExternalPagesComponent,
|
|
74
71
|
JaceLoginComponent,
|
|
75
|
-
JaceModulesBoardComponent,
|
|
76
72
|
Navbar,
|
|
77
73
|
RedirecterComponent,
|
|
78
74
|
Sidebar,
|
|
@@ -87,4 +83,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
87
83
|
exports: [...COMPONENTS]
|
|
88
84
|
}]
|
|
89
85
|
}] });
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLFlBQVk7QUFDWixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbkQsUUFBUTtBQUNSLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxhQUFhO0FBQ2IsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUV4RixPQUFPO0FBQ1AsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBRTdELE1BQU0sVUFBVSxHQUFHO0lBQ2YsT0FBTztJQUNQLFVBQVU7SUFDVixxQkFBcUI7SUFDckIsb0JBQW9CO0lBQ3BCLHFCQUFxQjtJQUNyQixjQUFjO0lBQ2Qsc0JBQXNCO0lBQ3RCLGtCQUFrQjtJQUNsQixNQUFNO0lBQ04sbUJBQW1CO0lBQ25CLE9BQU87SUFDUCxxQkFBcUI7SUFDckIsZ0JBQWdCO0lBQ2hCLG9CQUFvQjtDQUN2QixDQUFDO0FBTUYsTUFBTSxPQUFPLGdCQUFnQjs7NkdBQWhCLGdCQUFnQjs4R0FBaEIsZ0JBQWdCLFlBSGYsWUFBWSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFqQjlLLE9BQU87UUFDUCxVQUFVO1FBQ1YscUJBQXFCO1FBQ3JCLG9CQUFvQjtRQUNwQixxQkFBcUI7UUFDckIsY0FBYztRQUNkLHNCQUFzQjtRQUN0QixrQkFBa0I7UUFDbEIsTUFBTTtRQUNOLG1CQUFtQjtRQUNuQixPQUFPO1FBQ1AscUJBQXFCO1FBQ3JCLGdCQUFnQjtRQUNoQixvQkFBb0IsYUFicEIsT0FBTztRQUNQLFVBQVU7UUFDVixxQkFBcUI7UUFDckIsb0JBQW9CO1FBQ3BCLHFCQUFxQjtRQUNyQixjQUFjO1FBQ2Qsc0JBQXNCO1FBQ3RCLGtCQUFrQjtRQUNsQixNQUFNO1FBQ04sbUJBQW1CO1FBQ25CLE9BQU87UUFDUCxxQkFBcUI7UUFDckIsZ0JBQWdCO1FBQ2hCLG9CQUFvQjs4R0FPWCxnQkFBZ0IsWUFIZixZQUFZLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFLLFVBQVU7MkZBR3BMLGdCQUFnQjtrQkFKNUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLEdBQUcsVUFBVSxDQUFDO29CQUM5TCxPQUFPLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQztpQkFDM0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlXCI7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLy8gRXMgZmFlbnphXHJcbmltcG9ydCB7IExvY2FsaXphdGlvbk1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5pbXBvcnQgeyBFc1RhYmxlTW9kdWxlIH0gZnJvbSBcIkBlc2ZhZW56YS9lcy10YWJsZVwiO1xyXG5cclxuLy8gTGlicyBcclxuaW1wb3J0IHsgUHJvZ3Jlc3NiYXJNb2R1bGUgfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9wcm9ncmVzc2JhclwiO1xyXG5pbXBvcnQgeyBCc0Ryb3Bkb3duTW9kdWxlIH0gZnJvbSBcIm5neC1ib290c3RyYXAvZHJvcGRvd25cIjtcclxuaW1wb3J0IHsgTW9kYWxNb2R1bGUgfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9tb2RhbFwiO1xyXG5cclxuLy8gQ29tcG9uZW50aVxyXG5pbXBvcnQgeyBCYWNrVG9wIH0gZnJvbSBcIi4vYmFjay10b3AvYmFjay10b3AuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEJyZWFkY3J1bWIgfSBmcm9tIFwiLi9icmVhZGNydW1iL2JyZWFkY3J1bWIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFBhZ2VOb3RGb3VuZENvbXBvbmVudCB9IGZyb20gXCIuL2Vycm9yLzQwNC9wYWdlbm90Zm91bmQuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFNlcnZlckVycm9yQ29tcG9uZW50IH0gZnJvbSBcIi4vZXJyb3IvNTAwL3NlcnZlcmVycm9yLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBBbmd1bGFyRXJyb3JDb21wb25lbnQgfSBmcm9tIFwiLi9lcnJvci9Bbmd1bGFyL2FuZ3VsYXJlcnJvci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgUGFnZXNDb21wb25lbnQgfSBmcm9tIFwiLi9wYWdlL3BhZ2VzLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBFeHRlcm5hbFBhZ2VzQ29tcG9uZW50IH0gZnJvbSBcIi4vZXh0ZXJuYWwtcGFnZS9leHRlcm5hbF9wYWdlcy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgSmFjZUxvZ2luQ29tcG9uZW50IH0gZnJvbSBcIi4vamFjZS1sb2dpbi9qYWNlLWxvZ2luLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBOYXZiYXIgfSBmcm9tIFwiLi9uYXZiYXIvbmF2YmFyLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBKYWNlUmVzb3VyY2VDb21wb25lbnQgfSBmcm9tIFwiLi9qYWNlLXJlc291cmNlL2phY2UtcmVzb3VyY2UuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFJlZGlyZWN0ZXJDb21wb25lbnQgfSBmcm9tIFwiLi9yZWRpcmVjdGVyL3JlZGlyZWN0ZXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFNpZGViYXIgfSBmcm9tIFwiLi9zaWRlYmFyL3NpZGViYXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEVzTW9kYWxDb21wb25lbnQgfSBmcm9tIFwiLi9lcy1tb2RhbC9lcy1tb2RhbC5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgRXNNb2RhbEhlYWRDb21wb25lbnQgfSBmcm9tIFwiLi9lcy1tb2RhbC9lcy1tb2RhbC1oZWFkL2VzLW1vZGFsLWhlYWQuY29tcG9uZW50XCI7XHJcblxyXG4vLyBDb3JlXHJcbmltcG9ydCB7IERpcmVjdGl2ZXNNb2R1bGUgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvZGlyZWN0aXZlc1wiO1xyXG5cclxuY29uc3QgQ09NUE9ORU5UUyA9IFtcclxuICAgIEJhY2tUb3AsXHJcbiAgICBCcmVhZGNydW1iLFxyXG4gICAgUGFnZU5vdEZvdW5kQ29tcG9uZW50LFxyXG4gICAgU2VydmVyRXJyb3JDb21wb25lbnQsXHJcbiAgICBBbmd1bGFyRXJyb3JDb21wb25lbnQsXHJcbiAgICBQYWdlc0NvbXBvbmVudCxcclxuICAgIEV4dGVybmFsUGFnZXNDb21wb25lbnQsXHJcbiAgICBKYWNlTG9naW5Db21wb25lbnQsXHJcbiAgICBOYXZiYXIsXHJcbiAgICBSZWRpcmVjdGVyQ29tcG9uZW50LFxyXG4gICAgU2lkZWJhcixcclxuICAgIEphY2VSZXNvdXJjZUNvbXBvbmVudCxcclxuICAgIEVzTW9kYWxDb21wb25lbnQsXHJcbiAgICBFc01vZGFsSGVhZENvbXBvbmVudFxyXG5dO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJvdXRlck1vZHVsZSwgRm9ybXNNb2R1bGUsIERpcmVjdGl2ZXNNb2R1bGUsIExvY2FsaXphdGlvbk1vZHVsZSwgUHJvZ3Jlc3NiYXJNb2R1bGUsIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLCBCc0Ryb3Bkb3duTW9kdWxlLCBFc1RhYmxlTW9kdWxlLCBNb2RhbE1vZHVsZSwgLi4uQ09NUE9ORU5UU10sXHJcbiAgICBleHBvcnRzOiBbLi4uQ09NUE9ORU5UU11cclxufSlcclxuZXhwb3J0IGNsYXNzIENvbXBvbmVudHNNb2R1bGUgeyB9Il19
|
|
@@ -17,7 +17,6 @@ import { BsDropdownModule } from "ngx-bootstrap/dropdown";
|
|
|
17
17
|
import { NavBarLoc } from "./navbar.component.loc";
|
|
18
18
|
// Componenti
|
|
19
19
|
import { ReactiveComponent } from "../base/reactive.component";
|
|
20
|
-
import { JaceModulesBoardComponent } from "./modules-board/jace-modules-board.component";
|
|
21
20
|
import * as i0 from "@angular/core";
|
|
22
21
|
import * as i1 from "@esfaenza/preferences";
|
|
23
22
|
import * as i2 from "@esfaenza/core/services";
|
|
@@ -120,6 +119,9 @@ export class Navbar extends ReactiveComponent {
|
|
|
120
119
|
ngAfterViewInit() {
|
|
121
120
|
this._state.setHeaderHeight(this.navbar.nativeElement.offsetHeight);
|
|
122
121
|
}
|
|
122
|
+
goToDashboard() {
|
|
123
|
+
window.open(myconfig.JaceDashboardUrl, '_blank').focus();
|
|
124
|
+
}
|
|
123
125
|
toggleMenu() {
|
|
124
126
|
this.isMenuCollapsed = !this.isMenuCollapsed;
|
|
125
127
|
this._state.notifyDataChanged("menu.isCollapsed", this.isMenuCollapsed);
|
|
@@ -204,10 +206,10 @@ export class Navbar extends ReactiveComponent {
|
|
|
204
206
|
}
|
|
205
207
|
}
|
|
206
208
|
Navbar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Navbar, deps: [{ token: i1.PreferencesService }, { token: i1.CacheService }, { token: i2.GlobalSearchService }, { token: i3.BaseMessageService }, { token: i3.NotificationsService }, { token: i4.MessageService }, { token: i5.LocalizationService }, { token: i6.HTTPService }, { token: i0.ChangeDetectorRef }, { token: i2.AppState }, { token: i2.TokenService }, { token: i7.Router }, { token: i2.CompletedJobRedirectionService }, { token: NAVBAR_EXTENSIONS }, { token: LOGIN_URL_LEGACY }], target: i0.ɵɵFactoryTarget.Component });
|
|
207
|
-
Navbar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: Navbar, isStandalone: true, selector: "navbar", viewQueries: [{ propertyName: "navbar", first: true, predicate: ["navbar"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<nav #navbar class=\"nav az-navbar fixed-top\">\r\n <!-- Logo -->\r\n <a class=\"navbar-brand\" routerLink=\"/pages/dashboard\">\r\n <img src=\"../assets/img/logo/logo.png\" class=\"d-md-block d-none\" style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-v d-md-block d-none\">{{ applicationVersion }}</div>\r\n\r\n <img src=\"../assets/img/logo/logo_sm.png\" class=\"d-md-none\" style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-sm-v d-md-none\">{{ applicationVersion }}</div>\r\n </a>\r\n\r\n <ul class=\"nav navbar-nav navbar-fillable\" style=\"display: flex;\">\r\n <!-- Collapse men\u00F9 a sinistra -->\r\n <li style=\"display: flex;\">\r\n <a (click)=\"toggleMenu()\" style=\"color: white; font-size: 20px; align-self: center;\" class=\"fa fa-navicon\"></a>\r\n </li>\r\n\r\n <!-- Search -->\r\n <li style=\"display: flex;\">\r\n <form class=\"app-search\" style=\"align-self: center;\" role=\"search\" (ngSubmit)=\"searchRequest()\">\r\n <input type=\"text\" placeholder=\"Search...\" [(ngModel)]=\"searchTerm\" (ngModelChange)=\"searchModelChanged()\" [ngModelOptions]=\"{standalone : true}\" class=\"form-control\" autocomplete=\"off\">\r\n <a><i class=\"ion-ios-search-strong\"></i></a>\r\n <button hidden></button>\r\n </form>\r\n </li>\r\n\r\n <ul class=\"nav\" style=\"margin-left: auto; padding-top: 5px; padding-right: 10px;\">\r\n\r\n <!--Dropdown job in esecuzione-->\r\n <div class=\"user-menu app-no-selection app-margin-right-10\" style=\"display: flex;\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a [class.fa-spin]=\"_state.jobsInProgress > 0\" class=\"fa fa-cog dropdown-toggle app-pointer\" style=\"color: white; font-size: 20px; align-self: center;\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"nav-jobs-menu\" role=\"menu\">\r\n <div class=\"nav-jobs-menu-header\">\r\n <span>{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"pull-right m-t-min-2\"><mat-slide-toggle [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"></mat-slide-toggle></span>\r\n <span class=\"pull-right app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n </div>\r\n <div class=\"nav-jobs-menu-list\">\r\n <div *ngIf=\"_state.allJobs.length == 0\" class=\"nav-jobs-menu-list-empty\">\r\n <div>{{\"Al momento non c'\u00E8 nulla in esecuzione\" | localize : lc}}</div>\r\n </div>\r\n <div *ngFor=\"let job of _state.allJobs; let last = last\" [class.app-margin-bottom-5]=\"!last\">\r\n <span class=\"nav-jobs-menu-list-description\">\r\n <span *ngIf=\"!job.completed\" title=\"{{job.description}}\">{{job.smalldescription}}</span>\r\n <span *ngIf=\"job.completed\" title=\"{{job.description}}\" class=\"app-link app-no-selection app-inline app-pointer\" (click)=\"completedJobClicked(job); $event.stopPropagation();\">{{job.smalldescription}}</span>\r\n <strong class=\"pull-right\" *ngIf=\"!job.completed\">{{job.percentage}}%</strong>\r\n <strong class=\"pull-right\" *ngIf=\"job.completed\">{{ 'Completed' | localize : lc }}</strong>\r\n </span>\r\n <div class=\"progress progress-sm\">\r\n <progressbar *ngIf=\"!job.completed\" [max]=\"100\" [value]=\"job.percentage\" [striped]=\"true\" [animate]=\"true\"></progressbar>\r\n <progressbar *ngIf=\"job.completed\" type=\"success\" [max]=\"100\" [value]=\"100\" [striped]=\"false\" [animate]=\"false\"></progressbar>\r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n <!--Dropdown moduli-->\r\n <div class=\"user-menu app-no-selection app-margin-right-10\" style=\"display: flex;\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"fa fa-th dropdown-toggle app-pointer\" style=\"color: white !important; font-size: 20px; align-self: center;\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"module-board-menu container\" role=\"menu\">\r\n <div class=\"app-relative\"><jace-modules-board [Modules]=\"Modules\"></jace-modules-board></div>\r\n </ul>\r\n </div>\r\n\r\n <!-- Punti di estensione per Calendar, Chatroom e chi pi\u00F9 ne ha pi\u00F9 ne metta... -->\r\n <div class=\"user-menu app-no-selection app-margin-right-10\" *ngFor=\"let comp of extensionComponents\">\r\n <ng-template [componentHost]=\"comp\"></ng-template>\r\n </div>\r\n\r\n <!--Dropdown User Menu-->\r\n <div class=\"user-menu app-no-selection\" dropdown container=\"body\" placement=\"bottom right\" style=\"height:45px; padding-right: 10px;\">\r\n <a class=\"dropdown-toggle user-link app-pointer\" dropdownToggle>\r\n <div class=\"pull-left app-margin-right-10 app-relative\">\r\n <ng-container *ngTemplateOutlet=\"userIcon;\"></ng-container>\r\n </div>\r\n <div class=\"app-white-text pull-right d-none d-sm-block\">\r\n <ng-container *ngTemplateOutlet=\"debugInfos\"></ng-container>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </a>\r\n\r\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right-user app-no-padding\" role=\"menu\">\r\n <li class=\"user-info\">\r\n <div class=\"app-relative\">\r\n <ng-container *ngTemplateOutlet=\"userIcon; context: { $implicit: {right: 62} }\"></ng-container>\r\n </div>\r\n <div class=\"app-white-text app-margin-top-10 app-margin-bottom-10\">\r\n <ng-container *ngTemplateOutlet=\"debugInfos\"></ng-container>\r\n </div>\r\n </li>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"lc.Locale == 'en-US'\" (click)=\"lc.changeLocale('it-IT')\"><i class=\"fa fa-globe\"> </i>Switch to Italian Site</a>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"lc.Locale == 'it-IT'\" (click)=\"lc.changeLocale('en-US')\"><i class=\"fa fa-globe\"> </i>Passa al Sito in Inglese</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeModule()\"><i class=\"fa fa-th\"> </i>{{'Cambia Modulo' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeTenant()\"><i class=\"fa fa-building\"> </i>{{'Cambia Tenant' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearUserPreferences()\"><i class=\"fa fa-user-times\"> </i>{{'Ripulisci le Preferenze Utente' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearAll()\"><i class=\"fa fa-recycle \"> </i>{{'Ripulisci la Cache' | localize : lc}}</a>\r\n <div class=\"dropdown-divider\"></div>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"logout()\"><i class=\"fa fa-power-off\"> </i>Log out</a>\r\n </ul>\r\n </div>\r\n </ul>\r\n </ul>\r\n</nav>\r\n\r\n<!-- Template per l'icona dell'utente -->\r\n<ng-template #userIcon let-context>\r\n <img src='../assets/img/users/user.jpg' alt=\"user-img\" class=\"img-circle user-img\">\r\n <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.christmasTime\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.halloweenTime\">\r\n</ng-template>\r\n\r\n<!-- Template per le informaizoni di debug: Ambiente, ruoli, permessi ecc -->\r\n<ng-template #debugInfos>\r\n <div>{{CurrentIdentity?.FullName}} - ({{CurrentIdentity?.TenantName}})</div>\r\n <div class=\"text-sm-center\">\r\n <ng-container *ngIf=\"applicationEnvironment == 2\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 5\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 6\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 1\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity.Roles\">{{r}}</div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Overlay per la ricerca globale -->\r\n<ng-container *ngIf=\"searchingTerm || searchResult\">\r\n <div class=\"app-absolute app-search-background\">\r\n <div class=\"app-search-result-box\">\r\n <ng-container *ngIf=\"searchingTerm\">\r\n <div class=\"app-search-card\"><i class=\"fa fa-spinner fa-spin\"></i>Sto effettuando la ricerca...</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"searchResult && !searchingTerm\">\r\n <div class=\"row\" style=\"height: 100%;\">\r\n <!-- Spazio a sinistra -->\r\n <div class=\"col-md-1\"></div>\r\n <!-- Blocco con le categorie dei risultati -->\r\n <div class=\"col-md-3\">\r\n <div class=\"app-search-card\">\r\n <div class=\"app-relative\"><a class=\"fa fa-times text-danger app-absolute app-right-0 app-fs-20 app-pointer\" (click)=\"closeSearch();\"></a></div>\r\n <h4>Categorie di Ricerca</h4>\r\n <div class=\"app-pointer app-link\" [class.app-bold]=\"!SelectedResult && !ShowSingleTable\">\r\n <span (click)=\"FilterSearchResults()\">{{SelectedResult ? '-' : '>'}} Mostra Tutto</span>\r\n </div>\r\n <div *ngFor=\"let item of searchResult.results\" class=\"app-pointer app-link\" [class.app-bold]=\"SelectedResult?.description == item.description\">\r\n <span (click)=\"FilterSearchResults(item)\">{{SelectedResult?.description == item.description ? '>' : '-'}} Mostra {{item.description}} ({{item.items?.length}})</span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Dettaglio risultati -->\r\n <div class=\"col-md-7\" style=\"overflow: auto; height: 100%;\">\r\n <ng-container *ngIf=\"!SelectedResult && !ShowSingleTable\">\r\n <div *ngFor=\"let res of searchResult.results; let i = index;\" class=\"app-search-card\" [style.margin-bottom.px]=\"i == (searchResult.results?.length - 1) ? 2 : 10\">\r\n <h4>{{res.description}}</h4>\r\n <es-table [(ngModel)]=\"res.items\" [DynamicRowColumnsDefinition]=\"res.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"SelectedResult && ShowSingleTable\">\r\n <div class=\"app-search-card\">\r\n <h4>{{SelectedResult.description}}</h4>\r\n <es-table [(ngModel)]=\"SelectedResult.items\" [DynamicRowColumnsDefinition]=\"SelectedResult.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- Spazio a destra -->\r\n <div class=\"col-md-1\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", styles: [".nav-jobs-icon{position:absolute;left:-20px;margin:0;padding:0;top:10px;color:#fff!important;font-size:20px}.nav-jobs-menu{width:350px;height:250px;background:white;margin:2px 0 0;padding:5px;border:1px solid #ccc}.nav-jobs-menu-header{padding:8px;font-size:14px;background-color:#242d3a;margin-top:-5px;margin-left:-5px;margin-right:-5px}.nav-jobs-menu-header span{color:#fffc}.nav-jobs-menu-list{position:relative;overflow:auto;width:auto;height:203px;padding:5px}.nav-jobs-menu-list-description{font-size:13px;color:#666}.nav-jobs-menu-list-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:15px;text-align:center}.nav.az-navbar{height:60px;align-items:center;background-color:#242d3a}.nav.az-navbar .navbar-brand{width:205px;padding-top:0;font-size:0;margin-left:10px}.navbar-nav{flex-direction:row}#lines{border-bottom:7px double;border-top:2px solid;border-color:#ffffffe6;content:\"\";height:3px;width:20px;box-sizing:content-box;cursor:pointer}#lines:hover{opacity:.8}.app-search{position:relative;margin-left:20px}.app-search a{position:absolute;top:3px;right:14px;font-size:16px;color:#ffffff4d}.app-search .form-control{border:1px solid rgba(255,255,255,.1);font-size:11px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:190px}.app-search input{border:1px solid rgba(255,255,255,.1);font-size:12px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:240px}.completer-selected-row{background-color:#0275d8!important;color:#fff!important;width:100%!important}.completer-row{width:100%!important;color:#fff!important}.completer-dropdown{margin-top:2px!important;background-color:#344154f7!important;color:#fff;border-color:#111!important;box-shadow:0 6px 12px #0003}.search-results{left:-85px;top:-2px;z-index:1050;color:#fff;background-color:#344154f7}.search-results .btn-sm{padding:.15rem .25rem;font-size:.5rem}.search-results:before{content:\"\";border:0px}.search-results a{color:#242d3a}.search-results a:hover{color:#fff;background-color:#0275d8;cursor:pointer}.search-results a i{margin-right:8px}.right-section{position:absolute;right:10px;top:10px}.user-menu{font-size:14px}.user-menu .dropdown-toggle:after{display:none}.user-menu .dropdown-menu{right:0;top:auto!important;left:auto!important;margin-top:10px;padding-top:0;overflow:hidden;border-radius:0;font-size:14px;box-shadow:0 6px 12px #0003;transform:none!important}.user-menu .dropdown-menu a{color:#242d3a}.user-menu .dropdown-menu a:hover{color:#fff;background-color:#242d3a}.user-menu .dropdown-menu a i{margin-right:8px}.user-link{margin-right:6px}.user-link span{color:#fff;margin-left:7px;letter-spacing:.02em}.user-link img{width:40px;border-radius:50%}.user-link:hover,.user-link:focus{text-decoration:none}.user-info{background-color:#242d3a;padding:8px;text-align:center;width:240px;margin-bottom:5px}.user-info img{width:100px;margin-top:5px;border-radius:50%}.user-info p{color:#ebebeb;margin-top:10px}.user-info small{display:block}@media (max-width: 767px){.nav.az-navbar .navbar-brand{width:auto}}.navbar-search{color:#ffffff80!important}.navbar-help{font-size:20px!important;color:#ffffff80!important;border:1px solid rgba(255,255,255,.1);margin-left:5px!important;padding:5px 10px 2px 8px!important;border-radius:50%;background-color:#ffffff0d;cursor:pointer;width:31px;height:31px}.navbar-fill{margin-top:-5px;margin-bottom:-5px;margin-left:10px;width:calc(100% - 530px)}.navbar-fillable{width:calc(100% - 231px)}.navbar-floating-label{position:absolute;top:-9px;left:-5px;background:#242D3A;padding-left:5px;padding-right:5px;color:#ffffffe6!important}.collapse-menu-link{color:#fff!important;font-size:20px;padding-top:5px;cursor:pointer}.module-nav-menu-link{color:#fff!important;font-size:20px;padding-top:10px;padding-right:5px;cursor:pointer}.module-board-menu{position:relative;top:1px;background-color:#1f1f1f;padding:15px}.overlay{height:100%;width:100%;display:none;padding-left:10%;padding-right:10%;position:fixed;z-index:999999;left:0;top:0;background-color:#000;background-color:#000000e6;overflow-x:hidden;transition:.5s}.overlay-content{position:relative;top:25%;width:100%;text-align:center;margin-top:30px}.overlay p{padding:8px;text-decoration:none;font-size:36px;color:#818181;display:block;transition:.3s}.overlay a:hover,.overlay a:focus{color:#f1f1f1}.overlay .closebtn{position:absolute;top:20px;right:45px;font-size:60px}@media screen and (max-height: 450px){.overlay a{font-size:20px}.overlay .closebtn{font-size:40px;top:15px;right:35px}}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: BsDropdownModule }, { kind: "directive", type: i9.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i9.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i9.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i10.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ProgressbarModule }, { kind: "component", type: i11.ProgressbarComponent, selector: "progressbar", inputs: ["max", "animate", "striped", "type", "value"] }, { kind: "component", type: JaceModulesBoardComponent, selector: "jace-modules-board", inputs: ["Modules"] }, { kind: "directive", type: ComponentHostDirective, selector: "[componentHost]", inputs: ["componentHost", "Inputs"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: EsTableModule }, { kind: "component", type: i12.EsTableComponent, selector: "es-table", inputs: ["EsThTdProvider", "CornerMenuOptions", "ColumnsResizable", "ColumnsPinnable", "AutoUpdate", "Height", "EmptySpaceBackgroundColor", "EsTableHandledSearch", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "ExportOnlyVisibleColumns", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "DefaultAlignment", "PagingStyle", "RowGroupingPagingStyle", "ItemSourceProperty", "UseSelectionCache", "ShowItemGroupsColumns", "Editable", "RangeSelection", "SearchThrottle", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onModelChange", "onOpenContextMenu", "onCornerAction", "onDynamicOperation"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i5.LocalizePipe, name: "localize" }], viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
209
|
+
Navbar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: Navbar, isStandalone: true, selector: "navbar", viewQueries: [{ propertyName: "navbar", first: true, predicate: ["navbar"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<nav #navbar class=\"nav az-navbar fixed-top\">\r\n <!-- Logo -->\r\n <a class=\"navbar-brand\" routerLink=\"/pages/dashboard\">\r\n <img src=\"../assets/img/logo/logo.png\" class=\"d-md-block d-none\" style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-v d-md-block d-none\">{{ applicationVersion }}</div>\r\n\r\n <img src=\"../assets/img/logo/logo_sm.png\" class=\"d-md-none\" style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-sm-v d-md-none\">{{ applicationVersion }}</div>\r\n </a>\r\n\r\n <ul class=\"nav navbar-nav navbar-fillable\" style=\"display: flex;\">\r\n <!-- Collapse men\u00F9 a sinistra -->\r\n <li style=\"display: flex;\">\r\n <a (click)=\"toggleMenu()\" style=\"color: white; font-size: 20px; align-self: center;\" class=\"fa fa-navicon\"></a>\r\n </li>\r\n\r\n <!-- Search -->\r\n <li style=\"display: flex;\">\r\n <form class=\"app-search\" style=\"align-self: center;\" role=\"search\" (ngSubmit)=\"searchRequest()\">\r\n <input type=\"text\" placeholder=\"Search...\" [(ngModel)]=\"searchTerm\" (ngModelChange)=\"searchModelChanged()\" [ngModelOptions]=\"{standalone : true}\" class=\"form-control\" autocomplete=\"off\">\r\n <a><i class=\"ion-ios-search-strong\"></i></a>\r\n <button hidden></button>\r\n </form>\r\n </li>\r\n\r\n <ul class=\"nav\" style=\"margin-left: auto; padding-top: 5px; padding-right: 10px;\">\r\n\r\n <!--Dropdown job in esecuzione-->\r\n <div class=\"user-menu app-no-selection app-margin-right-10\" style=\"display: flex;\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a [class.fa-spin]=\"_state.jobsInProgress > 0\" class=\"fa fa-cog dropdown-toggle app-pointer\" style=\"color: white; font-size: 20px; align-self: center;\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"nav-jobs-menu\" role=\"menu\">\r\n <div class=\"nav-jobs-menu-header\">\r\n <span>{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"pull-right m-t-min-2\"><mat-slide-toggle [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"></mat-slide-toggle></span>\r\n <span class=\"pull-right app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n </div>\r\n <div class=\"nav-jobs-menu-list\">\r\n <div *ngIf=\"_state.allJobs.length == 0\" class=\"nav-jobs-menu-list-empty\">\r\n <div>{{\"Al momento non c'\u00E8 nulla in esecuzione\" | localize : lc}}</div>\r\n </div>\r\n <div *ngFor=\"let job of _state.allJobs; let last = last\" [class.app-margin-bottom-5]=\"!last\">\r\n <span class=\"nav-jobs-menu-list-description\">\r\n <span *ngIf=\"!job.completed\" title=\"{{job.description}}\">{{job.smalldescription}}</span>\r\n <span *ngIf=\"job.completed\" title=\"{{job.description}}\" class=\"app-link app-no-selection app-inline app-pointer\" (click)=\"completedJobClicked(job); $event.stopPropagation();\">{{job.smalldescription}}</span>\r\n <strong class=\"pull-right\" *ngIf=\"!job.completed\">{{job.percentage}}%</strong>\r\n <strong class=\"pull-right\" *ngIf=\"job.completed\">{{ 'Completed' | localize : lc }}</strong>\r\n </span>\r\n <div class=\"progress progress-sm\">\r\n <progressbar *ngIf=\"!job.completed\" [max]=\"100\" [value]=\"job.percentage\" [striped]=\"true\" [animate]=\"true\"></progressbar>\r\n <progressbar *ngIf=\"job.completed\" type=\"success\" [max]=\"100\" [value]=\"100\" [striped]=\"false\" [animate]=\"false\"></progressbar>\r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n <!--Dropdown moduli-->\r\n <div class=\"user-menu app-no-selection app-margin-right-10\" style=\"display: flex;\">\r\n <a class=\"fa fa-th app-pointer\" style=\"color: white !important; font-size: 20px; align-self: center;\" (click)=\"goToDashboard();\"></a>\r\n </div>\r\n\r\n <!-- Punti di estensione per Calendar, Chatroom e chi pi\u00F9 ne ha pi\u00F9 ne metta... -->\r\n <div class=\"user-menu app-no-selection app-margin-right-10\" *ngFor=\"let comp of extensionComponents\">\r\n <ng-template [componentHost]=\"comp\"></ng-template>\r\n </div>\r\n\r\n <!--Dropdown User Menu-->\r\n <div class=\"user-menu app-no-selection\" dropdown container=\"body\" placement=\"bottom right\" style=\"height:45px; padding-right: 10px;\">\r\n <a class=\"dropdown-toggle user-link app-pointer\" dropdownToggle>\r\n <div class=\"pull-left app-margin-right-10 app-relative\">\r\n <ng-container *ngTemplateOutlet=\"userIcon;\"></ng-container>\r\n </div>\r\n <div class=\"app-white-text pull-right d-none d-sm-block\">\r\n <ng-container *ngTemplateOutlet=\"debugInfos\"></ng-container>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </a>\r\n\r\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right-user app-no-padding\" role=\"menu\">\r\n <li class=\"user-info\">\r\n <div class=\"app-relative\">\r\n <ng-container *ngTemplateOutlet=\"userIcon; context: { $implicit: {right: 62} }\"></ng-container>\r\n </div>\r\n <div class=\"app-white-text app-margin-top-10 app-margin-bottom-10\">\r\n <ng-container *ngTemplateOutlet=\"debugInfos\"></ng-container>\r\n </div>\r\n </li>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"lc.Locale == 'en-US'\" (click)=\"lc.changeLocale('it-IT')\"><i class=\"fa fa-globe\"> </i>Switch to Italian Site</a>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"lc.Locale == 'it-IT'\" (click)=\"lc.changeLocale('en-US')\"><i class=\"fa fa-globe\"> </i>Passa al Sito in Inglese</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeModule()\"><i class=\"fa fa-th\"> </i>{{'Cambia Modulo' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeTenant()\"><i class=\"fa fa-building\"> </i>{{'Cambia Tenant' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearUserPreferences()\"><i class=\"fa fa-user-times\"> </i>{{'Ripulisci le Preferenze Utente' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearAll()\"><i class=\"fa fa-recycle \"> </i>{{'Ripulisci la Cache' | localize : lc}}</a>\r\n <div class=\"dropdown-divider\"></div>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"logout()\"><i class=\"fa fa-power-off\"> </i>Log out</a>\r\n </ul>\r\n </div>\r\n </ul>\r\n </ul>\r\n</nav>\r\n\r\n<!-- Template per l'icona dell'utente -->\r\n<ng-template #userIcon let-context>\r\n <img src='../assets/img/users/user.jpg' alt=\"user-img\" class=\"img-circle user-img\">\r\n <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.christmasTime\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.halloweenTime\">\r\n</ng-template>\r\n\r\n<!-- Template per le informaizoni di debug: Ambiente, ruoli, permessi ecc -->\r\n<ng-template #debugInfos>\r\n <div>{{CurrentIdentity?.FullName}} - ({{CurrentIdentity?.TenantName}})</div>\r\n <div class=\"text-sm-center\">\r\n <ng-container *ngIf=\"applicationEnvironment == 2\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 5\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 6\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 1\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity.Roles\">{{r}}</div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Overlay per la ricerca globale -->\r\n<ng-container *ngIf=\"searchingTerm || searchResult\">\r\n <div class=\"app-absolute app-search-background\">\r\n <div class=\"app-search-result-box\">\r\n <ng-container *ngIf=\"searchingTerm\">\r\n <div class=\"app-search-card\"><i class=\"fa fa-spinner fa-spin\"></i>Sto effettuando la ricerca...</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"searchResult && !searchingTerm\">\r\n <div class=\"row\" style=\"height: 100%;\">\r\n <!-- Spazio a sinistra -->\r\n <div class=\"col-md-1\"></div>\r\n <!-- Blocco con le categorie dei risultati -->\r\n <div class=\"col-md-3\">\r\n <div class=\"app-search-card\">\r\n <div class=\"app-relative\"><a class=\"fa fa-times text-danger app-absolute app-right-0 app-fs-20 app-pointer\" (click)=\"closeSearch();\"></a></div>\r\n <h4>Categorie di Ricerca</h4>\r\n <div class=\"app-pointer app-link\" [class.app-bold]=\"!SelectedResult && !ShowSingleTable\">\r\n <span (click)=\"FilterSearchResults()\">{{SelectedResult ? '-' : '>'}} Mostra Tutto</span>\r\n </div>\r\n <div *ngFor=\"let item of searchResult.results\" class=\"app-pointer app-link\" [class.app-bold]=\"SelectedResult?.description == item.description\">\r\n <span (click)=\"FilterSearchResults(item)\">{{SelectedResult?.description == item.description ? '>' : '-'}} Mostra {{item.description}} ({{item.items?.length}})</span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Dettaglio risultati -->\r\n <div class=\"col-md-7\" style=\"overflow: auto; height: 100%;\">\r\n <ng-container *ngIf=\"!SelectedResult && !ShowSingleTable\">\r\n <div *ngFor=\"let res of searchResult.results; let i = index;\" class=\"app-search-card\" [style.margin-bottom.px]=\"i == (searchResult.results?.length - 1) ? 2 : 10\">\r\n <h4>{{res.description}}</h4>\r\n <es-table [(ngModel)]=\"res.items\" [DynamicRowColumnsDefinition]=\"res.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"SelectedResult && ShowSingleTable\">\r\n <div class=\"app-search-card\">\r\n <h4>{{SelectedResult.description}}</h4>\r\n <es-table [(ngModel)]=\"SelectedResult.items\" [DynamicRowColumnsDefinition]=\"SelectedResult.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- Spazio a destra -->\r\n <div class=\"col-md-1\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", styles: [".nav-jobs-icon{position:absolute;left:-20px;margin:0;padding:0;top:10px;color:#fff!important;font-size:20px}.nav-jobs-menu{width:350px;height:250px;background:white;margin:2px 0 0;padding:5px;border:1px solid #ccc}.nav-jobs-menu-header{padding:8px;font-size:14px;background-color:#242d3a;margin-top:-5px;margin-left:-5px;margin-right:-5px}.nav-jobs-menu-header span{color:#fffc}.nav-jobs-menu-list{position:relative;overflow:auto;width:auto;height:203px;padding:5px}.nav-jobs-menu-list-description{font-size:13px;color:#666}.nav-jobs-menu-list-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:15px;text-align:center}.nav.az-navbar{height:60px;align-items:center;background-color:#242d3a}.nav.az-navbar .navbar-brand{width:205px;padding-top:0;font-size:0;margin-left:10px}.navbar-nav{flex-direction:row}#lines{border-bottom:7px double;border-top:2px solid;border-color:#ffffffe6;content:\"\";height:3px;width:20px;box-sizing:content-box;cursor:pointer}#lines:hover{opacity:.8}.app-search{position:relative;margin-left:20px}.app-search a{position:absolute;top:3px;right:14px;font-size:16px;color:#ffffff4d}.app-search .form-control{border:1px solid rgba(255,255,255,.1);font-size:11px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:190px}.app-search input{border:1px solid rgba(255,255,255,.1);font-size:12px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:240px}.completer-selected-row{background-color:#0275d8!important;color:#fff!important;width:100%!important}.completer-row{width:100%!important;color:#fff!important}.completer-dropdown{margin-top:2px!important;background-color:#344154f7!important;color:#fff;border-color:#111!important;box-shadow:0 6px 12px #0003}.search-results{left:-85px;top:-2px;z-index:1050;color:#fff;background-color:#344154f7}.search-results .btn-sm{padding:.15rem .25rem;font-size:.5rem}.search-results:before{content:\"\";border:0px}.search-results a{color:#242d3a}.search-results a:hover{color:#fff;background-color:#0275d8;cursor:pointer}.search-results a i{margin-right:8px}.right-section{position:absolute;right:10px;top:10px}.user-menu{font-size:14px}.user-menu .dropdown-toggle:after{display:none}.user-menu .dropdown-menu{right:0;top:auto!important;left:auto!important;margin-top:10px;padding-top:0;overflow:hidden;border-radius:0;font-size:14px;box-shadow:0 6px 12px #0003;transform:none!important}.user-menu .dropdown-menu a{color:#242d3a}.user-menu .dropdown-menu a:hover{color:#fff;background-color:#242d3a}.user-menu .dropdown-menu a i{margin-right:8px}.user-link{margin-right:6px}.user-link span{color:#fff;margin-left:7px;letter-spacing:.02em}.user-link img{width:40px;border-radius:50%}.user-link:hover,.user-link:focus{text-decoration:none}.user-info{background-color:#242d3a;padding:8px;text-align:center;width:240px;margin-bottom:5px}.user-info img{width:100px;margin-top:5px;border-radius:50%}.user-info p{color:#ebebeb;margin-top:10px}.user-info small{display:block}@media (max-width: 767px){.nav.az-navbar .navbar-brand{width:auto}}.navbar-search{color:#ffffff80!important}.navbar-help{font-size:20px!important;color:#ffffff80!important;border:1px solid rgba(255,255,255,.1);margin-left:5px!important;padding:5px 10px 2px 8px!important;border-radius:50%;background-color:#ffffff0d;cursor:pointer;width:31px;height:31px}.navbar-fill{margin-top:-5px;margin-bottom:-5px;margin-left:10px;width:calc(100% - 530px)}.navbar-fillable{width:calc(100% - 231px)}.navbar-floating-label{position:absolute;top:-9px;left:-5px;background:#242D3A;padding-left:5px;padding-right:5px;color:#ffffffe6!important}.collapse-menu-link{color:#fff!important;font-size:20px;padding-top:5px;cursor:pointer}.module-nav-menu-link{color:#fff!important;font-size:20px;padding-top:10px;padding-right:5px;cursor:pointer}.module-board-menu{position:relative;top:1px;background-color:#1f1f1f;padding:15px}.overlay{height:100%;width:100%;display:none;padding-left:10%;padding-right:10%;position:fixed;z-index:999999;left:0;top:0;background-color:#000;background-color:#000000e6;overflow-x:hidden;transition:.5s}.overlay-content{position:relative;top:25%;width:100%;text-align:center;margin-top:30px}.overlay p{padding:8px;text-decoration:none;font-size:36px;color:#818181;display:block;transition:.3s}.overlay a:hover,.overlay a:focus{color:#f1f1f1}.overlay .closebtn{position:absolute;top:20px;right:45px;font-size:60px}@media screen and (max-height: 450px){.overlay a{font-size:20px}.overlay .closebtn{font-size:40px;top:15px;right:35px}}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: BsDropdownModule }, { kind: "directive", type: i9.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i9.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i9.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i10.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ProgressbarModule }, { kind: "component", type: i11.ProgressbarComponent, selector: "progressbar", inputs: ["max", "animate", "striped", "type", "value"] }, { kind: "directive", type: ComponentHostDirective, selector: "[componentHost]", inputs: ["componentHost", "Inputs"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: EsTableModule }, { kind: "component", type: i12.EsTableComponent, selector: "es-table", inputs: ["EsThTdProvider", "CornerMenuOptions", "ColumnsResizable", "ColumnsPinnable", "AutoUpdate", "Height", "EmptySpaceBackgroundColor", "EsTableHandledSearch", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "ExportOnlyVisibleColumns", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "DefaultAlignment", "PagingStyle", "RowGroupingPagingStyle", "ItemSourceProperty", "UseSelectionCache", "ShowItemGroupsColumns", "Editable", "RangeSelection", "SearchThrottle", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onModelChange", "onOpenContextMenu", "onCornerAction", "onDynamicOperation"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i5.LocalizePipe, name: "localize" }], viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
208
210
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Navbar, decorators: [{
|
|
209
211
|
type: Component,
|
|
210
|
-
args: [{ selector: "navbar", viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [RouterLink, FormsModule, BsDropdownModule, MatSlideToggleModule, NgIf, NgFor, ProgressbarModule, JaceModulesBoardComponent, ComponentHostDirective, NgTemplateOutlet, EsTableModule, LocalizationModule], template: "<nav #navbar class=\"nav az-navbar fixed-top\">\r\n <!-- Logo -->\r\n <a class=\"navbar-brand\" routerLink=\"/pages/dashboard\">\r\n <img src=\"../assets/img/logo/logo.png\" class=\"d-md-block d-none\" style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-v d-md-block d-none\">{{ applicationVersion }}</div>\r\n\r\n <img src=\"../assets/img/logo/logo_sm.png\" class=\"d-md-none\" style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-sm-v d-md-none\">{{ applicationVersion }}</div>\r\n </a>\r\n\r\n <ul class=\"nav navbar-nav navbar-fillable\" style=\"display: flex;\">\r\n <!-- Collapse men\u00F9 a sinistra -->\r\n <li style=\"display: flex;\">\r\n <a (click)=\"toggleMenu()\" style=\"color: white; font-size: 20px; align-self: center;\" class=\"fa fa-navicon\"></a>\r\n </li>\r\n\r\n <!-- Search -->\r\n <li style=\"display: flex;\">\r\n <form class=\"app-search\" style=\"align-self: center;\" role=\"search\" (ngSubmit)=\"searchRequest()\">\r\n <input type=\"text\" placeholder=\"Search...\" [(ngModel)]=\"searchTerm\" (ngModelChange)=\"searchModelChanged()\" [ngModelOptions]=\"{standalone : true}\" class=\"form-control\" autocomplete=\"off\">\r\n <a><i class=\"ion-ios-search-strong\"></i></a>\r\n <button hidden></button>\r\n </form>\r\n </li>\r\n\r\n <ul class=\"nav\" style=\"margin-left: auto; padding-top: 5px; padding-right: 10px;\">\r\n\r\n <!--Dropdown job in esecuzione-->\r\n <div class=\"user-menu app-no-selection app-margin-right-10\" style=\"display: flex;\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a [class.fa-spin]=\"_state.jobsInProgress > 0\" class=\"fa fa-cog dropdown-toggle app-pointer\" style=\"color: white; font-size: 20px; align-self: center;\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"nav-jobs-menu\" role=\"menu\">\r\n <div class=\"nav-jobs-menu-header\">\r\n <span>{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"pull-right m-t-min-2\"><mat-slide-toggle [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"></mat-slide-toggle></span>\r\n <span class=\"pull-right app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n </div>\r\n <div class=\"nav-jobs-menu-list\">\r\n <div *ngIf=\"_state.allJobs.length == 0\" class=\"nav-jobs-menu-list-empty\">\r\n <div>{{\"Al momento non c'\u00E8 nulla in esecuzione\" | localize : lc}}</div>\r\n </div>\r\n <div *ngFor=\"let job of _state.allJobs; let last = last\" [class.app-margin-bottom-5]=\"!last\">\r\n <span class=\"nav-jobs-menu-list-description\">\r\n <span *ngIf=\"!job.completed\" title=\"{{job.description}}\">{{job.smalldescription}}</span>\r\n <span *ngIf=\"job.completed\" title=\"{{job.description}}\" class=\"app-link app-no-selection app-inline app-pointer\" (click)=\"completedJobClicked(job); $event.stopPropagation();\">{{job.smalldescription}}</span>\r\n <strong class=\"pull-right\" *ngIf=\"!job.completed\">{{job.percentage}}%</strong>\r\n <strong class=\"pull-right\" *ngIf=\"job.completed\">{{ 'Completed' | localize : lc }}</strong>\r\n </span>\r\n <div class=\"progress progress-sm\">\r\n <progressbar *ngIf=\"!job.completed\" [max]=\"100\" [value]=\"job.percentage\" [striped]=\"true\" [animate]=\"true\"></progressbar>\r\n <progressbar *ngIf=\"job.completed\" type=\"success\" [max]=\"100\" [value]=\"100\" [striped]=\"false\" [animate]=\"false\"></progressbar>\r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n <!--Dropdown moduli-->\r\n <div class=\"user-menu app-no-selection app-margin-right-10\" style=\"display: flex;\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"fa fa-th dropdown-toggle app-pointer\" style=\"color: white !important; font-size: 20px; align-self: center;\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"module-board-menu container\" role=\"menu\">\r\n <div class=\"app-relative\"><jace-modules-board [Modules]=\"Modules\"></jace-modules-board></div>\r\n </ul>\r\n </div>\r\n\r\n <!-- Punti di estensione per Calendar, Chatroom e chi pi\u00F9 ne ha pi\u00F9 ne metta... -->\r\n <div class=\"user-menu app-no-selection app-margin-right-10\" *ngFor=\"let comp of extensionComponents\">\r\n <ng-template [componentHost]=\"comp\"></ng-template>\r\n </div>\r\n\r\n <!--Dropdown User Menu-->\r\n <div class=\"user-menu app-no-selection\" dropdown container=\"body\" placement=\"bottom right\" style=\"height:45px; padding-right: 10px;\">\r\n <a class=\"dropdown-toggle user-link app-pointer\" dropdownToggle>\r\n <div class=\"pull-left app-margin-right-10 app-relative\">\r\n <ng-container *ngTemplateOutlet=\"userIcon;\"></ng-container>\r\n </div>\r\n <div class=\"app-white-text pull-right d-none d-sm-block\">\r\n <ng-container *ngTemplateOutlet=\"debugInfos\"></ng-container>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </a>\r\n\r\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right-user app-no-padding\" role=\"menu\">\r\n <li class=\"user-info\">\r\n <div class=\"app-relative\">\r\n <ng-container *ngTemplateOutlet=\"userIcon; context: { $implicit: {right: 62} }\"></ng-container>\r\n </div>\r\n <div class=\"app-white-text app-margin-top-10 app-margin-bottom-10\">\r\n <ng-container *ngTemplateOutlet=\"debugInfos\"></ng-container>\r\n </div>\r\n </li>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"lc.Locale == 'en-US'\" (click)=\"lc.changeLocale('it-IT')\"><i class=\"fa fa-globe\"> </i>Switch to Italian Site</a>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"lc.Locale == 'it-IT'\" (click)=\"lc.changeLocale('en-US')\"><i class=\"fa fa-globe\"> </i>Passa al Sito in Inglese</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeModule()\"><i class=\"fa fa-th\"> </i>{{'Cambia Modulo' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeTenant()\"><i class=\"fa fa-building\"> </i>{{'Cambia Tenant' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearUserPreferences()\"><i class=\"fa fa-user-times\"> </i>{{'Ripulisci le Preferenze Utente' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearAll()\"><i class=\"fa fa-recycle \"> </i>{{'Ripulisci la Cache' | localize : lc}}</a>\r\n <div class=\"dropdown-divider\"></div>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"logout()\"><i class=\"fa fa-power-off\"> </i>Log out</a>\r\n </ul>\r\n </div>\r\n </ul>\r\n </ul>\r\n</nav>\r\n\r\n<!-- Template per l'icona dell'utente -->\r\n<ng-template #userIcon let-context>\r\n <img src='../assets/img/users/user.jpg' alt=\"user-img\" class=\"img-circle user-img\">\r\n <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.christmasTime\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.halloweenTime\">\r\n</ng-template>\r\n\r\n<!-- Template per le informaizoni di debug: Ambiente, ruoli, permessi ecc -->\r\n<ng-template #debugInfos>\r\n <div>{{CurrentIdentity?.FullName}} - ({{CurrentIdentity?.TenantName}})</div>\r\n <div class=\"text-sm-center\">\r\n <ng-container *ngIf=\"applicationEnvironment == 2\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 5\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 6\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 1\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity.Roles\">{{r}}</div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Overlay per la ricerca globale -->\r\n<ng-container *ngIf=\"searchingTerm || searchResult\">\r\n <div class=\"app-absolute app-search-background\">\r\n <div class=\"app-search-result-box\">\r\n <ng-container *ngIf=\"searchingTerm\">\r\n <div class=\"app-search-card\"><i class=\"fa fa-spinner fa-spin\"></i>Sto effettuando la ricerca...</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"searchResult && !searchingTerm\">\r\n <div class=\"row\" style=\"height: 100%;\">\r\n <!-- Spazio a sinistra -->\r\n <div class=\"col-md-1\"></div>\r\n <!-- Blocco con le categorie dei risultati -->\r\n <div class=\"col-md-3\">\r\n <div class=\"app-search-card\">\r\n <div class=\"app-relative\"><a class=\"fa fa-times text-danger app-absolute app-right-0 app-fs-20 app-pointer\" (click)=\"closeSearch();\"></a></div>\r\n <h4>Categorie di Ricerca</h4>\r\n <div class=\"app-pointer app-link\" [class.app-bold]=\"!SelectedResult && !ShowSingleTable\">\r\n <span (click)=\"FilterSearchResults()\">{{SelectedResult ? '-' : '>'}} Mostra Tutto</span>\r\n </div>\r\n <div *ngFor=\"let item of searchResult.results\" class=\"app-pointer app-link\" [class.app-bold]=\"SelectedResult?.description == item.description\">\r\n <span (click)=\"FilterSearchResults(item)\">{{SelectedResult?.description == item.description ? '>' : '-'}} Mostra {{item.description}} ({{item.items?.length}})</span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Dettaglio risultati -->\r\n <div class=\"col-md-7\" style=\"overflow: auto; height: 100%;\">\r\n <ng-container *ngIf=\"!SelectedResult && !ShowSingleTable\">\r\n <div *ngFor=\"let res of searchResult.results; let i = index;\" class=\"app-search-card\" [style.margin-bottom.px]=\"i == (searchResult.results?.length - 1) ? 2 : 10\">\r\n <h4>{{res.description}}</h4>\r\n <es-table [(ngModel)]=\"res.items\" [DynamicRowColumnsDefinition]=\"res.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"SelectedResult && ShowSingleTable\">\r\n <div class=\"app-search-card\">\r\n <h4>{{SelectedResult.description}}</h4>\r\n <es-table [(ngModel)]=\"SelectedResult.items\" [DynamicRowColumnsDefinition]=\"SelectedResult.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- Spazio a destra -->\r\n <div class=\"col-md-1\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", styles: [".nav-jobs-icon{position:absolute;left:-20px;margin:0;padding:0;top:10px;color:#fff!important;font-size:20px}.nav-jobs-menu{width:350px;height:250px;background:white;margin:2px 0 0;padding:5px;border:1px solid #ccc}.nav-jobs-menu-header{padding:8px;font-size:14px;background-color:#242d3a;margin-top:-5px;margin-left:-5px;margin-right:-5px}.nav-jobs-menu-header span{color:#fffc}.nav-jobs-menu-list{position:relative;overflow:auto;width:auto;height:203px;padding:5px}.nav-jobs-menu-list-description{font-size:13px;color:#666}.nav-jobs-menu-list-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:15px;text-align:center}.nav.az-navbar{height:60px;align-items:center;background-color:#242d3a}.nav.az-navbar .navbar-brand{width:205px;padding-top:0;font-size:0;margin-left:10px}.navbar-nav{flex-direction:row}#lines{border-bottom:7px double;border-top:2px solid;border-color:#ffffffe6;content:\"\";height:3px;width:20px;box-sizing:content-box;cursor:pointer}#lines:hover{opacity:.8}.app-search{position:relative;margin-left:20px}.app-search a{position:absolute;top:3px;right:14px;font-size:16px;color:#ffffff4d}.app-search .form-control{border:1px solid rgba(255,255,255,.1);font-size:11px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:190px}.app-search input{border:1px solid rgba(255,255,255,.1);font-size:12px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:240px}.completer-selected-row{background-color:#0275d8!important;color:#fff!important;width:100%!important}.completer-row{width:100%!important;color:#fff!important}.completer-dropdown{margin-top:2px!important;background-color:#344154f7!important;color:#fff;border-color:#111!important;box-shadow:0 6px 12px #0003}.search-results{left:-85px;top:-2px;z-index:1050;color:#fff;background-color:#344154f7}.search-results .btn-sm{padding:.15rem .25rem;font-size:.5rem}.search-results:before{content:\"\";border:0px}.search-results a{color:#242d3a}.search-results a:hover{color:#fff;background-color:#0275d8;cursor:pointer}.search-results a i{margin-right:8px}.right-section{position:absolute;right:10px;top:10px}.user-menu{font-size:14px}.user-menu .dropdown-toggle:after{display:none}.user-menu .dropdown-menu{right:0;top:auto!important;left:auto!important;margin-top:10px;padding-top:0;overflow:hidden;border-radius:0;font-size:14px;box-shadow:0 6px 12px #0003;transform:none!important}.user-menu .dropdown-menu a{color:#242d3a}.user-menu .dropdown-menu a:hover{color:#fff;background-color:#242d3a}.user-menu .dropdown-menu a i{margin-right:8px}.user-link{margin-right:6px}.user-link span{color:#fff;margin-left:7px;letter-spacing:.02em}.user-link img{width:40px;border-radius:50%}.user-link:hover,.user-link:focus{text-decoration:none}.user-info{background-color:#242d3a;padding:8px;text-align:center;width:240px;margin-bottom:5px}.user-info img{width:100px;margin-top:5px;border-radius:50%}.user-info p{color:#ebebeb;margin-top:10px}.user-info small{display:block}@media (max-width: 767px){.nav.az-navbar .navbar-brand{width:auto}}.navbar-search{color:#ffffff80!important}.navbar-help{font-size:20px!important;color:#ffffff80!important;border:1px solid rgba(255,255,255,.1);margin-left:5px!important;padding:5px 10px 2px 8px!important;border-radius:50%;background-color:#ffffff0d;cursor:pointer;width:31px;height:31px}.navbar-fill{margin-top:-5px;margin-bottom:-5px;margin-left:10px;width:calc(100% - 530px)}.navbar-fillable{width:calc(100% - 231px)}.navbar-floating-label{position:absolute;top:-9px;left:-5px;background:#242D3A;padding-left:5px;padding-right:5px;color:#ffffffe6!important}.collapse-menu-link{color:#fff!important;font-size:20px;padding-top:5px;cursor:pointer}.module-nav-menu-link{color:#fff!important;font-size:20px;padding-top:10px;padding-right:5px;cursor:pointer}.module-board-menu{position:relative;top:1px;background-color:#1f1f1f;padding:15px}.overlay{height:100%;width:100%;display:none;padding-left:10%;padding-right:10%;position:fixed;z-index:999999;left:0;top:0;background-color:#000;background-color:#000000e6;overflow-x:hidden;transition:.5s}.overlay-content{position:relative;top:25%;width:100%;text-align:center;margin-top:30px}.overlay p{padding:8px;text-decoration:none;font-size:36px;color:#818181;display:block;transition:.3s}.overlay a:hover,.overlay a:focus{color:#f1f1f1}.overlay .closebtn{position:absolute;top:20px;right:45px;font-size:60px}@media screen and (max-height: 450px){.overlay a{font-size:20px}.overlay .closebtn{font-size:40px;top:15px;right:35px}}\n"] }]
|
|
212
|
+
args: [{ selector: "navbar", viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [RouterLink, FormsModule, BsDropdownModule, MatSlideToggleModule, NgIf, NgFor, ProgressbarModule, ComponentHostDirective, NgTemplateOutlet, EsTableModule, LocalizationModule], template: "<nav #navbar class=\"nav az-navbar fixed-top\">\r\n <!-- Logo -->\r\n <a class=\"navbar-brand\" routerLink=\"/pages/dashboard\">\r\n <img src=\"../assets/img/logo/logo.png\" class=\"d-md-block d-none\" style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-v d-md-block d-none\">{{ applicationVersion }}</div>\r\n\r\n <img src=\"../assets/img/logo/logo_sm.png\" class=\"d-md-none\" style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-sm-v d-md-none\">{{ applicationVersion }}</div>\r\n </a>\r\n\r\n <ul class=\"nav navbar-nav navbar-fillable\" style=\"display: flex;\">\r\n <!-- Collapse men\u00F9 a sinistra -->\r\n <li style=\"display: flex;\">\r\n <a (click)=\"toggleMenu()\" style=\"color: white; font-size: 20px; align-self: center;\" class=\"fa fa-navicon\"></a>\r\n </li>\r\n\r\n <!-- Search -->\r\n <li style=\"display: flex;\">\r\n <form class=\"app-search\" style=\"align-self: center;\" role=\"search\" (ngSubmit)=\"searchRequest()\">\r\n <input type=\"text\" placeholder=\"Search...\" [(ngModel)]=\"searchTerm\" (ngModelChange)=\"searchModelChanged()\" [ngModelOptions]=\"{standalone : true}\" class=\"form-control\" autocomplete=\"off\">\r\n <a><i class=\"ion-ios-search-strong\"></i></a>\r\n <button hidden></button>\r\n </form>\r\n </li>\r\n\r\n <ul class=\"nav\" style=\"margin-left: auto; padding-top: 5px; padding-right: 10px;\">\r\n\r\n <!--Dropdown job in esecuzione-->\r\n <div class=\"user-menu app-no-selection app-margin-right-10\" style=\"display: flex;\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a [class.fa-spin]=\"_state.jobsInProgress > 0\" class=\"fa fa-cog dropdown-toggle app-pointer\" style=\"color: white; font-size: 20px; align-self: center;\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"nav-jobs-menu\" role=\"menu\">\r\n <div class=\"nav-jobs-menu-header\">\r\n <span>{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"pull-right m-t-min-2\"><mat-slide-toggle [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"></mat-slide-toggle></span>\r\n <span class=\"pull-right app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n </div>\r\n <div class=\"nav-jobs-menu-list\">\r\n <div *ngIf=\"_state.allJobs.length == 0\" class=\"nav-jobs-menu-list-empty\">\r\n <div>{{\"Al momento non c'\u00E8 nulla in esecuzione\" | localize : lc}}</div>\r\n </div>\r\n <div *ngFor=\"let job of _state.allJobs; let last = last\" [class.app-margin-bottom-5]=\"!last\">\r\n <span class=\"nav-jobs-menu-list-description\">\r\n <span *ngIf=\"!job.completed\" title=\"{{job.description}}\">{{job.smalldescription}}</span>\r\n <span *ngIf=\"job.completed\" title=\"{{job.description}}\" class=\"app-link app-no-selection app-inline app-pointer\" (click)=\"completedJobClicked(job); $event.stopPropagation();\">{{job.smalldescription}}</span>\r\n <strong class=\"pull-right\" *ngIf=\"!job.completed\">{{job.percentage}}%</strong>\r\n <strong class=\"pull-right\" *ngIf=\"job.completed\">{{ 'Completed' | localize : lc }}</strong>\r\n </span>\r\n <div class=\"progress progress-sm\">\r\n <progressbar *ngIf=\"!job.completed\" [max]=\"100\" [value]=\"job.percentage\" [striped]=\"true\" [animate]=\"true\"></progressbar>\r\n <progressbar *ngIf=\"job.completed\" type=\"success\" [max]=\"100\" [value]=\"100\" [striped]=\"false\" [animate]=\"false\"></progressbar>\r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n <!--Dropdown moduli-->\r\n <div class=\"user-menu app-no-selection app-margin-right-10\" style=\"display: flex;\">\r\n <a class=\"fa fa-th app-pointer\" style=\"color: white !important; font-size: 20px; align-self: center;\" (click)=\"goToDashboard();\"></a>\r\n </div>\r\n\r\n <!-- Punti di estensione per Calendar, Chatroom e chi pi\u00F9 ne ha pi\u00F9 ne metta... -->\r\n <div class=\"user-menu app-no-selection app-margin-right-10\" *ngFor=\"let comp of extensionComponents\">\r\n <ng-template [componentHost]=\"comp\"></ng-template>\r\n </div>\r\n\r\n <!--Dropdown User Menu-->\r\n <div class=\"user-menu app-no-selection\" dropdown container=\"body\" placement=\"bottom right\" style=\"height:45px; padding-right: 10px;\">\r\n <a class=\"dropdown-toggle user-link app-pointer\" dropdownToggle>\r\n <div class=\"pull-left app-margin-right-10 app-relative\">\r\n <ng-container *ngTemplateOutlet=\"userIcon;\"></ng-container>\r\n </div>\r\n <div class=\"app-white-text pull-right d-none d-sm-block\">\r\n <ng-container *ngTemplateOutlet=\"debugInfos\"></ng-container>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </a>\r\n\r\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right-user app-no-padding\" role=\"menu\">\r\n <li class=\"user-info\">\r\n <div class=\"app-relative\">\r\n <ng-container *ngTemplateOutlet=\"userIcon; context: { $implicit: {right: 62} }\"></ng-container>\r\n </div>\r\n <div class=\"app-white-text app-margin-top-10 app-margin-bottom-10\">\r\n <ng-container *ngTemplateOutlet=\"debugInfos\"></ng-container>\r\n </div>\r\n </li>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"lc.Locale == 'en-US'\" (click)=\"lc.changeLocale('it-IT')\"><i class=\"fa fa-globe\"> </i>Switch to Italian Site</a>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"lc.Locale == 'it-IT'\" (click)=\"lc.changeLocale('en-US')\"><i class=\"fa fa-globe\"> </i>Passa al Sito in Inglese</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeModule()\"><i class=\"fa fa-th\"> </i>{{'Cambia Modulo' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeTenant()\"><i class=\"fa fa-building\"> </i>{{'Cambia Tenant' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearUserPreferences()\"><i class=\"fa fa-user-times\"> </i>{{'Ripulisci le Preferenze Utente' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearAll()\"><i class=\"fa fa-recycle \"> </i>{{'Ripulisci la Cache' | localize : lc}}</a>\r\n <div class=\"dropdown-divider\"></div>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"logout()\"><i class=\"fa fa-power-off\"> </i>Log out</a>\r\n </ul>\r\n </div>\r\n </ul>\r\n </ul>\r\n</nav>\r\n\r\n<!-- Template per l'icona dell'utente -->\r\n<ng-template #userIcon let-context>\r\n <img src='../assets/img/users/user.jpg' alt=\"user-img\" class=\"img-circle user-img\">\r\n <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.christmasTime\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context?.right || undefined\" *ngIf=\"_state.halloweenTime\">\r\n</ng-template>\r\n\r\n<!-- Template per le informaizoni di debug: Ambiente, ruoli, permessi ecc -->\r\n<ng-template #debugInfos>\r\n <div>{{CurrentIdentity?.FullName}} - ({{CurrentIdentity?.TenantName}})</div>\r\n <div class=\"text-sm-center\">\r\n <ng-container *ngIf=\"applicationEnvironment == 2\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 5\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 6\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 1\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity.Roles\">{{r}}</div>\r\n </div>\r\n</ng-template>\r\n\r\n<!-- Overlay per la ricerca globale -->\r\n<ng-container *ngIf=\"searchingTerm || searchResult\">\r\n <div class=\"app-absolute app-search-background\">\r\n <div class=\"app-search-result-box\">\r\n <ng-container *ngIf=\"searchingTerm\">\r\n <div class=\"app-search-card\"><i class=\"fa fa-spinner fa-spin\"></i>Sto effettuando la ricerca...</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"searchResult && !searchingTerm\">\r\n <div class=\"row\" style=\"height: 100%;\">\r\n <!-- Spazio a sinistra -->\r\n <div class=\"col-md-1\"></div>\r\n <!-- Blocco con le categorie dei risultati -->\r\n <div class=\"col-md-3\">\r\n <div class=\"app-search-card\">\r\n <div class=\"app-relative\"><a class=\"fa fa-times text-danger app-absolute app-right-0 app-fs-20 app-pointer\" (click)=\"closeSearch();\"></a></div>\r\n <h4>Categorie di Ricerca</h4>\r\n <div class=\"app-pointer app-link\" [class.app-bold]=\"!SelectedResult && !ShowSingleTable\">\r\n <span (click)=\"FilterSearchResults()\">{{SelectedResult ? '-' : '>'}} Mostra Tutto</span>\r\n </div>\r\n <div *ngFor=\"let item of searchResult.results\" class=\"app-pointer app-link\" [class.app-bold]=\"SelectedResult?.description == item.description\">\r\n <span (click)=\"FilterSearchResults(item)\">{{SelectedResult?.description == item.description ? '>' : '-'}} Mostra {{item.description}} ({{item.items?.length}})</span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Dettaglio risultati -->\r\n <div class=\"col-md-7\" style=\"overflow: auto; height: 100%;\">\r\n <ng-container *ngIf=\"!SelectedResult && !ShowSingleTable\">\r\n <div *ngFor=\"let res of searchResult.results; let i = index;\" class=\"app-search-card\" [style.margin-bottom.px]=\"i == (searchResult.results?.length - 1) ? 2 : 10\">\r\n <h4>{{res.description}}</h4>\r\n <es-table [(ngModel)]=\"res.items\" [DynamicRowColumnsDefinition]=\"res.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"SelectedResult && ShowSingleTable\">\r\n <div class=\"app-search-card\">\r\n <h4>{{SelectedResult.description}}</h4>\r\n <es-table [(ngModel)]=\"SelectedResult.items\" [DynamicRowColumnsDefinition]=\"SelectedResult.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- Spazio a destra -->\r\n <div class=\"col-md-1\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", styles: [".nav-jobs-icon{position:absolute;left:-20px;margin:0;padding:0;top:10px;color:#fff!important;font-size:20px}.nav-jobs-menu{width:350px;height:250px;background:white;margin:2px 0 0;padding:5px;border:1px solid #ccc}.nav-jobs-menu-header{padding:8px;font-size:14px;background-color:#242d3a;margin-top:-5px;margin-left:-5px;margin-right:-5px}.nav-jobs-menu-header span{color:#fffc}.nav-jobs-menu-list{position:relative;overflow:auto;width:auto;height:203px;padding:5px}.nav-jobs-menu-list-description{font-size:13px;color:#666}.nav-jobs-menu-list-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:15px;text-align:center}.nav.az-navbar{height:60px;align-items:center;background-color:#242d3a}.nav.az-navbar .navbar-brand{width:205px;padding-top:0;font-size:0;margin-left:10px}.navbar-nav{flex-direction:row}#lines{border-bottom:7px double;border-top:2px solid;border-color:#ffffffe6;content:\"\";height:3px;width:20px;box-sizing:content-box;cursor:pointer}#lines:hover{opacity:.8}.app-search{position:relative;margin-left:20px}.app-search a{position:absolute;top:3px;right:14px;font-size:16px;color:#ffffff4d}.app-search .form-control{border:1px solid rgba(255,255,255,.1);font-size:11px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:190px}.app-search input{border:1px solid rgba(255,255,255,.1);font-size:12px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:240px}.completer-selected-row{background-color:#0275d8!important;color:#fff!important;width:100%!important}.completer-row{width:100%!important;color:#fff!important}.completer-dropdown{margin-top:2px!important;background-color:#344154f7!important;color:#fff;border-color:#111!important;box-shadow:0 6px 12px #0003}.search-results{left:-85px;top:-2px;z-index:1050;color:#fff;background-color:#344154f7}.search-results .btn-sm{padding:.15rem .25rem;font-size:.5rem}.search-results:before{content:\"\";border:0px}.search-results a{color:#242d3a}.search-results a:hover{color:#fff;background-color:#0275d8;cursor:pointer}.search-results a i{margin-right:8px}.right-section{position:absolute;right:10px;top:10px}.user-menu{font-size:14px}.user-menu .dropdown-toggle:after{display:none}.user-menu .dropdown-menu{right:0;top:auto!important;left:auto!important;margin-top:10px;padding-top:0;overflow:hidden;border-radius:0;font-size:14px;box-shadow:0 6px 12px #0003;transform:none!important}.user-menu .dropdown-menu a{color:#242d3a}.user-menu .dropdown-menu a:hover{color:#fff;background-color:#242d3a}.user-menu .dropdown-menu a i{margin-right:8px}.user-link{margin-right:6px}.user-link span{color:#fff;margin-left:7px;letter-spacing:.02em}.user-link img{width:40px;border-radius:50%}.user-link:hover,.user-link:focus{text-decoration:none}.user-info{background-color:#242d3a;padding:8px;text-align:center;width:240px;margin-bottom:5px}.user-info img{width:100px;margin-top:5px;border-radius:50%}.user-info p{color:#ebebeb;margin-top:10px}.user-info small{display:block}@media (max-width: 767px){.nav.az-navbar .navbar-brand{width:auto}}.navbar-search{color:#ffffff80!important}.navbar-help{font-size:20px!important;color:#ffffff80!important;border:1px solid rgba(255,255,255,.1);margin-left:5px!important;padding:5px 10px 2px 8px!important;border-radius:50%;background-color:#ffffff0d;cursor:pointer;width:31px;height:31px}.navbar-fill{margin-top:-5px;margin-bottom:-5px;margin-left:10px;width:calc(100% - 530px)}.navbar-fillable{width:calc(100% - 231px)}.navbar-floating-label{position:absolute;top:-9px;left:-5px;background:#242D3A;padding-left:5px;padding-right:5px;color:#ffffffe6!important}.collapse-menu-link{color:#fff!important;font-size:20px;padding-top:5px;cursor:pointer}.module-nav-menu-link{color:#fff!important;font-size:20px;padding-top:10px;padding-right:5px;cursor:pointer}.module-board-menu{position:relative;top:1px;background-color:#1f1f1f;padding:15px}.overlay{height:100%;width:100%;display:none;padding-left:10%;padding-right:10%;position:fixed;z-index:999999;left:0;top:0;background-color:#000;background-color:#000000e6;overflow-x:hidden;transition:.5s}.overlay-content{position:relative;top:25%;width:100%;text-align:center;margin-top:30px}.overlay p{padding:8px;text-decoration:none;font-size:36px;color:#818181;display:block;transition:.3s}.overlay a:hover,.overlay a:focus{color:#f1f1f1}.overlay .closebtn{position:absolute;top:20px;right:45px;font-size:60px}@media screen and (max-height: 450px){.overlay a{font-size:20px}.overlay .closebtn{font-size:40px;top:15px;right:35px}}\n"] }]
|
|
211
213
|
}], ctorParameters: function () { return [{ type: i1.PreferencesService }, { type: i1.CacheService }, { type: i2.GlobalSearchService }, { type: i3.BaseMessageService }, { type: i3.NotificationsService }, { type: i4.MessageService }, { type: i5.LocalizationService }, { type: i6.HTTPService }, { type: i0.ChangeDetectorRef }, { type: i2.AppState }, { type: i2.TokenService }, { type: i7.Router }, { type: i2.CompletedJobRedirectionService }, { type: undefined, decorators: [{
|
|
212
214
|
type: Inject,
|
|
213
215
|
args: [NAVBAR_EXTENSIONS]
|
|
@@ -218,4 +220,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
218
220
|
type: ViewChild,
|
|
219
221
|
args: ["navbar", { static: false }]
|
|
220
222
|
}] } });
|
|
221
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zcmMvbmF2YmFyL25hdmJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL25hdmJhci9uYXZiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLE1BQU0sRUFBUSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUksT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSWxGLFdBQVc7QUFDWCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFtRyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzdLLFdBQVc7QUFDWCxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxn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TSwyTENqRG5CLDBuWkE2S2UscW9KRDlIRCxVQUFVLDJOQUFFLFdBQVcsdWlDQUFFLGdCQUFnQixzbEJBQUUsb0JBQW9CLHdNQUFFLElBQUksNkZBQUUsS0FBSyxrSEFBRSxpQkFBaUIsdUtBQUUseUJBQXlCLG9GQUFFLHNCQUFzQixpR0FBRSxnQkFBZ0IsbUpBQUUsYUFBYSwwMkNBQUUsa0JBQWtCLCtFQU5sTSxDQUFDLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQzsyRkFRN0QsTUFBTTtrQkFWbEIsU0FBUzsrQkFDSSxRQUFRLGlCQUNILENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDLGlCQUN2RCxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGNBR25DLElBQUksV0FDUCxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSx5QkFBeUIsRUFBRSxzQkFBc0IsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLENBQUM7OzBCQW9CL0UsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN0SixNQUFNOzJCQUFDLGdCQUFnQjs0Q0FSWSxNQUFNO3NCQUE3QyxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIFR5cGUsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIFJvdXRlckxpbmsgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZVwiO1xyXG5pbXBvcnQgeyBOZ0lmLCBOZ0ZvciwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IEJhc2VNZXNzYWdlU2VydmljZSwgTm90aWZpY2F0aW9uc1NlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL3NpZ25hbHItbm90aWZpY2F0aW9uc1wiO1xyXG5pbXBvcnQgeyBDYWNoZVNlcnZpY2UsIFByZWZlcmVuY2VzU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvcHJlZmVyZW5jZXNcIjtcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSwgTG9jYWxpemF0aW9uTW9kdWxlIH0gZnJvbSBcIkBlc2ZhZW56YS9sb2NhbGl6YXRpb25zXCI7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcbmltcG9ydCB7IEhUVFBTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9odHRwc2VydmljZVwiO1xyXG5cclxuLy8gRXNGYWVuemFcclxuaW1wb3J0IHsgRXNUYWJsZUNvbHVtbnNEZWZpbml0aW9uLCBFc1RhYmxlTW9kdWxlIH0gZnJvbSBcIkBlc2ZhZW56YS9lcy10YWJsZVwiO1xyXG5pbXBvcnQgeyBDb21wb25lbnRIb3N0RGlyZWN0aXZlIH0gZnJvbSBcIkBlc2ZhZW56YS9jb3JlL2RpcmVjdGl2ZXNcIjtcclxuaW1wb3J0IHsgSmFjZUlkZW50aXR5LCBBY3RpdmVNb2R1bGVWaWV3LCBFbnZPcHRpb25zLCBBcHBsaWNhdGlvbkpvYiwgU2VhcmNoUmVzdWx0LCBTZWFyY2hSZXN1bHRDb250YWluZXIsIE5BVkJBUl9FWFRFTlNJT05TLCBMT0dJTl9VUkxfTEVHQUNZIH0gZnJvbSBcIkBlc2ZhZW56YS9jb3JlL2RvbWFpblwiO1xyXG5pbXBvcnQgeyBBcHBTdGF0ZSwgQ29tcGxldGVkSm9iUmVkaXJlY3Rpb25TZXJ2aWNlLCBHbG9iYWxTZWFyY2hTZXJ2aWNlLCBUb2tlblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvc2VydmljZXNcIjtcclxuXHJcbi8vIExpYnJlcmllXHJcbmltcG9ydCB7IGludGVydmFsLCBzdGFydFdpdGgsIHRha2VVbnRpbCwgdGFrZVdoaWxlIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgUHJvZ3Jlc3NiYXJNb2R1bGUgfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9wcm9ncmVzc2JhclwiO1xyXG5pbXBvcnQgeyBCc0Ryb3Bkb3duTW9kdWxlIH0gZnJvbSBcIm5neC1ib290c3RyYXAvZHJvcGRvd25cIjtcclxuXHJcbi8vIEFwcGxpY2F6aW9uZVxyXG5pbXBvcnQgeyBOYXZCYXJMb2MgfSBmcm9tIFwiLi9uYXZiYXIuY29tcG9uZW50LmxvY1wiO1xyXG5cclxuLy8gQ29tcG9uZW50aVxyXG5pbXBvcnQgeyBSZWFjdGl2ZUNvbXBvbmVudCB9IGZyb20gXCIuLi9iYXNlL3JlYWN0aXZlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBKYWNlTW9kdWxlc0JvYXJkQ29tcG9uZW50IH0gZnJvbSBcIi4vbW9kdWxlcy1ib2FyZC9qYWNlLW1vZHVsZXMtYm9hcmQuY29tcG9uZW50XCI7XHJcblxyXG4vLyBDaGlhbWF0ZSBhaSBSZXBvc2l0b3J5XHJcbmNvbnN0IEdFVF9KYWNlX0dldEFjdGl2ZUphY2VNb2R1bGVzOiBzdHJpbmcgPSBcIi9hcGkvSmFjZS9HZXRBY3RpdmVKYWNlTW9kdWxlc1wiO1xyXG5jb25zdCBHRVRfQ2FjaGVfQ2xlYXJBbGxDYWNoZXM6IHN0cmluZyA9IFwiL2FwaS9DYWNoZS9DbGVhckFsbENhY2hlc1wiO1xyXG5cclxuZGVjbGFyZSB2YXIgbXljb25maWc6IEVudk9wdGlvbnM7XHJcbmRlY2xhcmUgdmFyIGRheWpzO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJuYXZiYXJcIixcclxuICAgIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IExvY2FsaXphdGlvblNlcnZpY2UsIHVzZUNsYXNzOiBOYXZCYXJMb2MgfV0sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4vbmF2YmFyLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9uYXZiYXIuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbUm91dGVyTGluaywgRm9ybXNNb2R1bGUsIEJzRHJvcGRvd25Nb2R1bGUsIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLCBOZ0lmLCBOZ0ZvciwgUHJvZ3Jlc3NiYXJNb2R1bGUsIEphY2VNb2R1bGVzQm9hcmRDb21wb25lbnQsIENvbXBvbmVudEhvc3REaXJlY3RpdmUsIE5nVGVtcGxhdGVPdXRsZXQsIEVzVGFibGVNb2R1bGUsIExvY2FsaXphdGlvbk1vZHVsZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5hdmJhciBleHRlbmRzIFJlYWN0aXZlQ29tcG9uZW50IHtcclxuXHJcbiAgICBwdWJsaWMgYXBwbGljYXRpb25WZXJzaW9uID0gbXljb25maWcuQXBwRGF0YS5Db21wb25lbnRWZXJzaW9uO1xyXG4gICAgcHVibGljIGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSBteWNvbmZpZy5BcHBEYXRhLkNvbXBvbmVudEVudmlyb25tZW50O1xyXG5cclxuICAgIHB1YmxpYyBpc01lbnVDb2xsYXBzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBhbm9tYWxpZXNQcm9jZXNzaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcHVibGljIEN1cnJlbnRJZGVudGl0eTogSmFjZUlkZW50aXR5O1xyXG5cclxuICAgIHByaXZhdGUgbmV3VmVyc2lvbldhcm5lZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQFZpZXdDaGlsZChcIm5hdmJhclwiLCB7IHN0YXRpYzogZmFsc2UgfSkgbmF2YmFyOiBFbGVtZW50UmVmO1xyXG5cclxuICAgIHB1YmxpYyBNb2R1bGVzOiBBY3RpdmVNb2R1bGVWaWV3W107XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBwcmVmc1NlcnZpY2U6IFByZWZlcmVuY2VzU2VydmljZSwgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IENhY2hlU2VydmljZSwgcHVibGljIGdsb2JhbFNlYXJjaFNlcnZpY2U6IEdsb2JhbFNlYXJjaFNlcnZpY2UsIHByaXZhdGUgTWVzc2FnZURlZjogQmFzZU1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgbm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uc1NlcnZpY2UsIHByaXZhdGUgbXNnRXh0czogTWVzc2FnZVNlcnZpY2UsIHB1YmxpYyBsYzogTG9jYWxpemF0aW9uU2VydmljZSwgcHJpdmF0ZSBodHRwOiBIVFRQU2VydmljZSwgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgcHVibGljIF9zdGF0ZTogQXBwU3RhdGUsIHB1YmxpYyBzcjogVG9rZW5TZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGNqclNlcnZpY2U6IENvbXBsZXRlZEpvYlJlZGlyZWN0aW9uU2VydmljZSwgQEluamVjdChOQVZCQVJfRVhURU5TSU9OUykgcHVibGljIGV4dGVuc2lvbkNvbXBvbmVudHM6IFR5cGU8YW55PltdLFxyXG4gICAgICAgIEBJbmplY3QoTE9HSU5fVVJMX0xFR0FDWSkgcHVibGljIGxvZ2luVXJsTGVnYWN5OiBib29sZWFuKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuXHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc3Vic2NyaWJlKFwibWVudS5pc0NvbGxhcHNlZFwiLCAoaXNDb2xsYXBzZWQpID0+IHsgdGhpcy5pc01lbnVDb2xsYXBzZWQgPSBpc0NvbGxhcHNlZDsgfSk7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc3Vic2NyaWJlKFwiYXBwLmNvbXBsZXRlZEpvYlwiLCAoam9iRGVzY3JpcHRpb24pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVN1Y2Nlc3ModGhpcy5sYy5sb2MoXCJKb2IgQ29tcGxldGF0b1wiKSArIChqb2JEZXNjcmlwdGlvbiA/IChcIjogXCIgKyBqb2JEZXNjcmlwdGlvbikgOiAnJyksIFwidG9hc3RyXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc3Vic2NyaWJlKFwiYXBwLnN0YXJ0ZWRKb2JcIiwgKF8pID0+IHsgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7IH0pO1xyXG4gICAgICAgIHRoaXMuX3N0YXRlLnN1YnNjcmliZShcImFwcC5wcm9ncmVzc0pvYlwiLCAoXykgPT4geyB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTsgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaGFuZGxlQmFzZU5vdGlmaWNhdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmdldEFjdGl2ZUphY2VNb2R1bGVzKCk7XHJcblxyXG4gICAgICAgIC8vIEFwcGVuYSBsYSBwYWdpbmEgcGFydGUsIHBvaSBvZ25pIHNlY29uZG8sIGNvbnRyb2xsbyBsJ2lkZW50aXR5IHBlciB2ZXJpZmljYXJlIHNlIHJpbWFuZSBsYSBzdGVzc2FcclxuICAgICAgICBpbnRlcnZhbCgxMDAwKS5waXBlKFxyXG4gICAgICAgICAgICBzdGFydFdpdGgoMCksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxyXG4gICAgICAgICAgICB0YWtlV2hpbGUoXyA9PiAhbXljb25maWcucmVkaXJlY3RJblByb2dyZXNzKVxyXG4gICAgICAgICkuc3Vic2NyaWJlKHQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrSWRlbnRpdHkoKTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICAgICAgLy9RdWFuZG8gdmllbmUgZGlzdHJ1dHRhIGxhIG5hdmJhciBkZXZvIGRpc3RydWdnZXJlIGFuY2hlIGlsIGNsaWVudCBkaSBzaWduYWxyIHBlcmNow6ggdnVvbCBkaXJlIGNoZSBobyBjaGl1c28gbGEgcGFnaW5hXHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLmRpc2Nvbm5lY3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhhbmRsZUJhc2VOb3RpZmljYXRpb25zKCkge1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5zZW5kKHRoaXMuTWVzc2FnZURlZi5PVVRfUXVlcnlKb2JTdGF0dXMsIG51bGwpO1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5vYnNlcnZlKHRoaXMuTWVzc2FnZURlZi5JTl9TZW5kVmVyc2lvbikucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKChtZXNzYWdlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChtZXNzYWdlICE9IG15Y29uZmlnLkFwcERhdGEuQ29tcG9uZW50VmVyc2lvbiAmJiAhdGhpcy5uZXdWZXJzaW9uV2FybmVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlV2FybmluZyh0aGlzLmxjLmxvYyhcIsOIIGRpc3BvbmliaWxlIHVuYSBudW92YSB2ZXJzaW9uZSBwZXIgbCdhcHBsaWNhemlvbmUgY29ycmVudGUuIFNpIHN1Z2dlcmlzY2UgZGkgcmljYXJpY2FyZSBsYSBwYWdpbmEgKENUUkwgKyBGNSlcIikpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5uZXdWZXJzaW9uV2FybmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hlY2tJZGVudGl0eSgpIHtcclxuICAgICAgICBsZXQgaWQgPSB0aGlzLnNyLmdldEphY2VJZGVudGl0eSgpO1xyXG4gICAgICAgIGxldCBpZExhc3QgPSB0aGlzLkN1cnJlbnRJZGVudGl0eTtcclxuXHJcbiAgICAgICAgaWYgKCFpZCkgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLmNoZWNrU2Vzc2lvblRpbWVvdXQoaWQpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5DdXJyZW50SWRlbnRpdHkgJiYgKGlkLklkQWNjb3VudCAhPSBpZExhc3Q/LklkQWNjb3VudCB8fCBpZC5JZFVzZXIgIT0gaWRMYXN0Py5JZFVzZXIgfHwgaWQuSWR0ZW5hbnQgIT0gaWRMYXN0Py5JZHRlbmFudCkpIHtcclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVdhcm5pbmcodGhpcy5sYy5sb2MoXCJMZSBpbmZvcm1hemlvbmkgZGkgU2Vzc2lvbmUgKFRlbmFudC9BY2NvdW50KSBzb25vIGNhbWJpYXRlIGEgc2VndWl0byBkaSB1biBsb2dpbiBzdSBtb2R1bG8gZGl2ZXJzbyB1dGlsaXp6YW5kbyBkaXZlcnNvIFRlbmFudC9VdGVudGUgc3VsbG8gc3Rlc3NvIGJyb3dzZXIuIFNpIHN1Z2dlcmlzY2UgZGkgcmljYXJpY2FyZSBsYSBwYWdpbmEgKENUUkwgKyBGNSlcIikpO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuQ3VycmVudElkZW50aXR5ID0gaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWN0aXZlSmFjZU1vZHVsZXMoKSB7XHJcbiAgICAgICAgdGhpcy5odHRwLmdldDxBY3RpdmVNb2R1bGVWaWV3W10+KEdFVF9KYWNlX0dldEFjdGl2ZUphY2VNb2R1bGVzKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgdGhpcy5Nb2R1bGVzID0gcmVzO1xyXG4gICAgICAgICAgICB0aGlzLl9zdGF0ZS5Nb2R1bGVzID0gdGhpcy5Nb2R1bGVzO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hlY2tTZXNzaW9uVGltZW91dChpZGVudGl0eTogSmFjZUlkZW50aXR5KSB7XHJcbiAgICAgICAgaWYgKGRheWpzKCkgPj0gZGF5anMoaWRlbnRpdHkuRXhwaXJhdGlvblRpbWUpLnN1YnRyYWN0KDEwLCAnbWludXRlcycpICYmICFteWNvbmZpZy5yZWRpcmVjdEluUHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgbXljb25maWcucmVkaXJlY3RJblByb2dyZXNzID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMubXNnRXh0cy5leHBpcmVkU2Vzc2lvbk1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxjLmxvYygnRXhwaXJlZCBzZXNzaW9uJyksXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxjLmxvYyhcIkwnYXR0dWFsZSBzZXNzaW9uZSBkaSBsYXZvcm8gbm9uIMOoIHBpw7kgdmFsaWRhLjxicj5TaSBwcmVnYSBkaSBlc2VndWlyZSBudW92YW1lbnRlIGlsIGxvZ2luLlwiKSxcclxuICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBteWNvbmZpZy5yZWRpcmVjdEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImNoZWNrU2Vzc2lvblRpbWVvdXQgLSByZWRpcmVjdGluZyB0byBsb2dpblwiKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImxvZ2luXCJdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMuX3N0YXRlLnNldEhlYWRlckhlaWdodCh0aGlzLm5hdmJhci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvZ2dsZU1lbnUoKSB7XHJcbiAgICAgICAgdGhpcy5pc01lbnVDb2xsYXBzZWQgPSAhdGhpcy5pc01lbnVDb2xsYXBzZWQ7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUubm90aWZ5RGF0YUNoYW5nZWQoXCJtZW51LmlzQ29sbGFwc2VkXCIsIHRoaXMuaXNNZW51Q29sbGFwc2VkKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbG9nb3V0KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmxvZ2luVXJsTGVnYWN5KVxyXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke215Y29uZmlnLkF1dGhVcmx9L2xvZ291dD9jbGllbnQ9JHtteWNvbmZpZy5DbGllbnR9YDtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7bXljb25maWcuQXV0aFVybH0vIy9sb2dvdXQ7Y2xpZW50PSR7bXljb25maWcuQ2xpZW50fWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNoYW5nZU1vZHVsZSgpIHtcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IG15Y29uZmlnLkphY2VEYXNoYm9hcmRVcmw7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNoYW5nZVRlbmFudCgpIHtcclxuICAgICAgICBpZiAodGhpcy5sb2dpblVybExlZ2FjeSlcclxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHtteWNvbmZpZy5BdXRoVXJsfS9sb2dpbi90ZW5hbnQ/Y2xpZW50PSR7bXljb25maWcuQ2xpZW50fWA7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke215Y29uZmlnLkF1dGhVcmx9LyMvbG9naW47Y2xpZW50PSR7bXljb25maWcuQ2xpZW50fWA7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJVc2VyUHJlZmVyZW5jZXMoKSB7XHJcbiAgICAgICAgdGhpcy5wcmVmc1NlcnZpY2UuY2xlYXIoKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlU3VjY2Vzcyh0aGlzLmxjLmxvYyhcIlByZWZlcmVuemUgdXRlbnRlIHJpcHVsaXRlXCIpKTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhckNhY2hlQ2xpZW50KCkge1xyXG4gICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLmNsZWFyKCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy5odHRwLnJlc2V0SHR0cFVudGltZWRDYWNoZVN0b3JhZ2UoKTtcclxuICAgICAgICB0aGlzLmh0dHAucmVzZXRIdHRwVGltZWRDYWNoZVN0b3JhZ2UoKTtcclxuICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlU3VjY2Vzcyh0aGlzLmxjLmxvYyhcIkNhY2hlIFJpcHVsaXRhXCIpKTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhckNhY2hlU2VydmVyKCkge1xyXG4gICAgICAgIHRoaXMuaHR0cC5nZXQoR0VUX0NhY2hlX0NsZWFyQWxsQ2FjaGVzKS5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVTdWNjZXNzKHRoaXMubGMubG9jKFwiQ2FjaGUgUmlwdWxpdGFcIikpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyQWxsKCkge1xyXG4gICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLmNsZWFyKCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy5odHRwLnJlc2V0SHR0cFVudGltZWRDYWNoZVN0b3JhZ2UoKTtcclxuICAgICAgICB0aGlzLmh0dHAucmVzZXRIdHRwVGltZWRDYWNoZVN0b3JhZ2UoKTtcclxuICAgICAgICB0aGlzLmh0dHAuZ2V0KEdFVF9DYWNoZV9DbGVhckFsbENhY2hlcykuc3Vic2NyaWJlKF8gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlU3VjY2Vzcyh0aGlzLmxjLmxvYyhcIkNhY2hlIFJpcHVsaXRhXCIpKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhck1lc3NhZ2VzKCkge1xyXG4gICAgICAgIHRoaXMubXNnRXh0cy5jbGVhck1lc3NhZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29tcGxldGVkSm9iQ2xpY2tlZChqb2I6IEFwcGxpY2F0aW9uSm9iKSB7XHJcbiAgICAgICAgdGhpcy5janJTZXJ2aWNlLnJlZGlyZWN0KGpvYik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogR2VzdGlvbmUgUmljZXJjYSBHbG9iYWxlICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4gICAgcHVibGljIFNlbGVjdGVkUmVzdWx0OiBTZWFyY2hSZXN1bHQgPSBudWxsO1xyXG4gICAgcHVibGljIFNob3dTaW5nbGVUYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHNlYXJjaFRlcm06IHN0cmluZztcclxuICAgIHNlYXJjaGluZ1Rlcm06IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHNlYXJjaFJlc3VsdDogU2VhcmNoUmVzdWx0Q29udGFpbmVyO1xyXG5cclxuICAgIHNlYXJjaFJlcXVlc3QoKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hpbmdUZXJtID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdCA9IG51bGw7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5nbG9iYWxTZWFyY2hTZXJ2aWNlLkVuYWJsZWQpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5nbG9iYWxTZWFyY2hTZXJ2aWNlLnNlYXJjaCh0aGlzLnNlYXJjaFRlcm0pLnN1YnNjcmliZSh0ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hpbmdUZXJtID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0ID0gdDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0LnJlc3VsdHMuZm9yRWFjaCh0ID0+IHtcclxuICAgICAgICAgICAgICAgIHQuZXN0X2NvbHMgPSB0LmNvbHVtbnMubWFwKGMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb2xMaW5rID0gdGhpcy5nbG9iYWxTZWFyY2hTZXJ2aWNlLmdlbmVyYXRlQ29sdW1uTGluayhjKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEVzVGFibGVDb2x1bW5zRGVmaW5pdGlvbihjLmRlc2NyaXB0aW9uLCBjLmlkLCBjb2xMaW5rPy5yb3V0ZVBhdGgsIGNvbExpbms/LnJvdXRlUHJvcGVydGllcyk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2VhcmNoTW9kZWxDaGFuZ2VkKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hpbmdUZXJtKVxyXG4gICAgICAgICAgICB0aGlzLmNsb3NlU2VhcmNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VTZWFyY2goKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hpbmdUZXJtID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHQgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIEZpbHRlclNlYXJjaFJlc3VsdHMoaXRlbTogU2VhcmNoUmVzdWx0ID0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuU2VsZWN0ZWRSZXN1bHQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuU2hvd1NpbmdsZVRhYmxlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0pXHJcbiAgICAgICAgICAgICAgICB0aGlzLlNlbGVjdGVkUmVzdWx0ID0gdGhpcy5zZWFyY2hSZXN1bHQ/LnJlc3VsdHM/LmZpbmQoZiA9PiBmLmRlc2NyaXB0aW9uID09IGl0ZW0uZGVzY3JpcHRpb24pO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLlNob3dTaW5nbGVUYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59IiwiPG5hdiAjbmF2YmFyIGNsYXNzPVwibmF2IGF6LW5hdmJhciBmaXhlZC10b3BcIj5cclxuICAgIDwhLS0gTG9nbyAtLT5cclxuICAgIDxhIGNsYXNzPVwibmF2YmFyLWJyYW5kXCIgcm91dGVyTGluaz1cIi9wYWdlcy9kYXNoYm9hcmRcIj5cclxuICAgICAgICA8aW1nIHNyYz1cIi4uL2Fzc2V0cy9pbWcvbG9nby9sb2dvLnBuZ1wiIGNsYXNzPVwiZC1tZC1ibG9jayBkLW5vbmVcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7IG1hcmdpbi1ib3R0b206IC0xMHB4O1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtZmUtdiBkLW1kLWJsb2NrIGQtbm9uZVwiPnt7IGFwcGxpY2F0aW9uVmVyc2lvbiB9fTwvZGl2PlxyXG5cclxuICAgICAgICA8aW1nIHNyYz1cIi4uL2Fzc2V0cy9pbWcvbG9nby9sb2dvX3NtLnBuZ1wiIGNsYXNzPVwiZC1tZC1ub25lXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMHB4OyBtYXJnaW4tYm90dG9tOiAtMTBweDtcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLWZlLXNtLXYgZC1tZC1ub25lXCI+e3sgYXBwbGljYXRpb25WZXJzaW9uIH19PC9kaXY+XHJcbiAgICA8L2E+XHJcblxyXG4gICAgPHVsIGNsYXNzPVwibmF2IG5hdmJhci1uYXYgbmF2YmFyLWZpbGxhYmxlXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgIDwhLS0gQ29sbGFwc2UgbWVuw7kgYSBzaW5pc3RyYSAtLT5cclxuICAgICAgICA8bGkgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgICAgICA8YSAoY2xpY2spPVwidG9nZ2xlTWVudSgpXCIgc3R5bGU9XCJjb2xvcjogd2hpdGU7IGZvbnQtc2l6ZTogMjBweDsgYWxpZ24tc2VsZjogY2VudGVyO1wiIGNsYXNzPVwiZmEgZmEtbmF2aWNvblwiPjwvYT5cclxuICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICA8IS0tIFNlYXJjaCAtLT5cclxuICAgICAgICA8bGkgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgICAgICA8Zm9ybSBjbGFzcz1cImFwcC1zZWFyY2hcIiBzdHlsZT1cImFsaWduLXNlbGY6IGNlbnRlcjtcIiByb2xlPVwic2VhcmNoXCIgKG5nU3VibWl0KT1cInNlYXJjaFJlcXVlc3QoKVwiPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJTZWFyY2guLi5cIiBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIiAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2hNb2RlbENoYW5nZWQoKVwiIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZSA6IHRydWV9XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICAgICAgICAgIDxhPjxpIGNsYXNzPVwiaW9uLWlvcy1zZWFyY2gtc3Ryb25nXCI+PC9pPjwvYT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gaGlkZGVuPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgPHVsIGNsYXNzPVwibmF2XCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogYXV0bzsgcGFkZGluZy10b3A6IDVweDsgcGFkZGluZy1yaWdodDogMTBweDtcIj5cclxuXHJcbiAgICAgICAgICAgIDwhLS1Ecm9wZG93biBqb2IgaW4gZXNlY3V6aW9uZS0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1tZW51IGFwcC1uby1zZWxlY3Rpb24gYXBwLW1hcmdpbi1yaWdodC0xMFwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIiBkcm9wZG93biBjb250YWluZXI9XCJib2R5XCIgcGxhY2VtZW50PVwiYm90dG9tIHJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8YSBbY2xhc3MuZmEtc3Bpbl09XCJfc3RhdGUuam9ic0luUHJvZ3Jlc3MgPiAwXCIgY2xhc3M9XCJmYSBmYS1jb2cgZHJvcGRvd24tdG9nZ2xlIGFwcC1wb2ludGVyXCIgc3R5bGU9XCJjb2xvcjogd2hpdGU7IGZvbnQtc2l6ZTogMjBweDsgYWxpZ24tc2VsZjogY2VudGVyO1wiIGRyb3Bkb3duVG9nZ2xlPjwvYT5cclxuICAgICAgICAgICAgICAgIDx1bCAqZHJvcGRvd25NZW51IGNsYXNzPVwibmF2LWpvYnMtbWVudVwiIHJvbGU9XCJtZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1qb2JzLW1lbnUtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7J0pvYiBBcHBsaWNhdGl2aScgfCBsb2NhbGl6ZSA6IGxjfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHVsbC1yaWdodCBtLXQtbWluLTJcIj48bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cIl9zdGF0ZS5ub3RpZnlPbkNvbXBsZXRlZEpvYnNcIiAoY2xpY2spPVwiY2xlYXJNZXNzYWdlcygpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+PC9tYXQtc2xpZGUtdG9nZ2xlPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwdWxsLXJpZ2h0IGFwcC1tYXJnaW4tcmlnaHQtNVwiPnt7J05vdGlmaWNoZScgfCBsb2NhbGl6ZSA6IGxjfX06PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtam9icy1tZW51LWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIl9zdGF0ZS5hbGxKb2JzLmxlbmd0aCA9PSAwXCIgY2xhc3M9XCJuYXYtam9icy1tZW51LWxpc3QtZW1wdHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3tcIkFsIG1vbWVudG8gbm9uIGMnw6ggbnVsbGEgaW4gZXNlY3V6aW9uZVwiIHwgbG9jYWxpemUgOiBsY319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBqb2Igb2YgX3N0YXRlLmFsbEpvYnM7IGxldCBsYXN0ID0gbGFzdFwiIFtjbGFzcy5hcHAtbWFyZ2luLWJvdHRvbS01XT1cIiFsYXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5hdi1qb2JzLW1lbnUtbGlzdC1kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWpvYi5jb21wbGV0ZWRcIiB0aXRsZT1cInt7am9iLmRlc2NyaXB0aW9ufX1cIj57e2pvYi5zbWFsbGRlc2NyaXB0aW9ufX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJqb2IuY29tcGxldGVkXCIgdGl0bGU9XCJ7e2pvYi5kZXNjcmlwdGlvbn19XCIgY2xhc3M9XCJhcHAtbGluayBhcHAtbm8tc2VsZWN0aW9uIGFwcC1pbmxpbmUgYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwiY29tcGxldGVkSm9iQ2xpY2tlZChqb2IpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XCI+e3tqb2Iuc21hbGxkZXNjcmlwdGlvbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJwdWxsLXJpZ2h0XCIgKm5nSWY9XCIham9iLmNvbXBsZXRlZFwiPnt7am9iLnBlcmNlbnRhZ2V9fSU8L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwicHVsbC1yaWdodFwiICpuZ0lmPVwiam9iLmNvbXBsZXRlZFwiPnt7ICdDb21wbGV0ZWQnIHwgbG9jYWxpemUgOiBsYyB9fTwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzIHByb2dyZXNzLXNtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb2dyZXNzYmFyICpuZ0lmPVwiIWpvYi5jb21wbGV0ZWRcIiBbbWF4XT1cIjEwMFwiIFt2YWx1ZV09XCJqb2IucGVyY2VudGFnZVwiIFtzdHJpcGVkXT1cInRydWVcIiBbYW5pbWF0ZV09XCJ0cnVlXCI+PC9wcm9ncmVzc2Jhcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvZ3Jlc3NiYXIgKm5nSWY9XCJqb2IuY29tcGxldGVkXCIgdHlwZT1cInN1Y2Nlc3NcIiBbbWF4XT1cIjEwMFwiIFt2YWx1ZV09XCIxMDBcIiBbc3RyaXBlZF09XCJmYWxzZVwiIFthbmltYXRlXT1cImZhbHNlXCI+PC9wcm9ncmVzc2Jhcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLURyb3Bkb3duIG1vZHVsaS0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1tZW51IGFwcC1uby1zZWxlY3Rpb24gYXBwLW1hcmdpbi1yaWdodC0xMFwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIiBkcm9wZG93biBjb250YWluZXI9XCJib2R5XCIgcGxhY2VtZW50PVwiYm90dG9tIHJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImZhIGZhLXRoIGRyb3Bkb3duLXRvZ2dsZSBhcHAtcG9pbnRlclwiIHN0eWxlPVwiY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMjBweDsgYWxpZ24tc2VsZjogY2VudGVyO1wiIGRyb3Bkb3duVG9nZ2xlPjwvYT5cclxuICAgICAgICAgICAgICAgIDx1bCAqZHJvcGRvd25NZW51IGNsYXNzPVwibW9kdWxlLWJvYXJkLW1lbnUgY29udGFpbmVyXCIgcm9sZT1cIm1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXJlbGF0aXZlXCI+PGphY2UtbW9kdWxlcy1ib2FyZCBbTW9kdWxlc109XCJNb2R1bGVzXCI+PC9qYWNlLW1vZHVsZXMtYm9hcmQ+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gUHVudGkgZGkgZXN0ZW5zaW9uZSBwZXIgQ2FsZW5kYXIsIENoYXRyb29tIGUgY2hpIHBpw7kgbmUgaGEgcGnDuSBuZSBtZXR0YS4uLiAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItbWVudSBhcHAtbm8tc2VsZWN0aW9uIGFwcC1tYXJnaW4tcmlnaHQtMTBcIiAqbmdGb3I9XCJsZXQgY29tcCBvZiBleHRlbnNpb25Db21wb25lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW2NvbXBvbmVudEhvc3RdPVwiY29tcFwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLURyb3Bkb3duIFVzZXIgTWVudS0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1tZW51IGFwcC1uby1zZWxlY3Rpb25cIiBkcm9wZG93biBjb250YWluZXI9XCJib2R5XCIgcGxhY2VtZW50PVwiYm90dG9tIHJpZ2h0XCIgc3R5bGU9XCJoZWlnaHQ6NDVweDsgcGFkZGluZy1yaWdodDogMTBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlIHVzZXItbGluayBhcHAtcG9pbnRlclwiIGRyb3Bkb3duVG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdWxsLWxlZnQgYXBwLW1hcmdpbi1yaWdodC0xMCBhcHAtcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInVzZXJJY29uO1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtd2hpdGUtdGV4dCBwdWxsLXJpZ2h0IGQtbm9uZSBkLXNtLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZWJ1Z0luZm9zXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgICAgICAgPHVsICpkcm9wZG93bk1lbnUgY2xhc3M9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHQtdXNlciBhcHAtbm8tcGFkZGluZ1wiIHJvbGU9XCJtZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidXNlci1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ1c2VySWNvbjsgY29udGV4dDogeyAkaW1wbGljaXQ6IHtyaWdodDogNjJ9IH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtd2hpdGUtdGV4dCBhcHAtbWFyZ2luLXRvcC0xMCBhcHAtbWFyZ2luLWJvdHRvbS0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVidWdJbmZvc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiICpuZ0lmPVwibGMuTG9jYWxlID09ICdlbi1VUydcIiAoY2xpY2spPVwibGMuY2hhbmdlTG9jYWxlKCdpdC1JVCcpXCI+PGkgY2xhc3M9XCJmYSBmYS1nbG9iZVwiPiZuYnNwOzwvaT5Td2l0Y2ggdG8gSXRhbGlhbiBTaXRlPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiICpuZ0lmPVwibGMuTG9jYWxlID09ICdpdC1JVCdcIiAoY2xpY2spPVwibGMuY2hhbmdlTG9jYWxlKCdlbi1VUycpXCI+PGkgY2xhc3M9XCJmYSBmYS1nbG9iZVwiPiZuYnNwOzwvaT5QYXNzYSBhbCBTaXRvIGluIEluZ2xlc2U8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImNoYW5nZU1vZHVsZSgpXCI+PGkgY2xhc3M9XCJmYSBmYS10aFwiPiZuYnNwOzwvaT57eydDYW1iaWEgTW9kdWxvJyB8IGxvY2FsaXplIDogbGN9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwiY2hhbmdlVGVuYW50KClcIj48aSBjbGFzcz1cImZhIGZhLWJ1aWxkaW5nXCI+Jm5ic3A7PC9pPnt7J0NhbWJpYSBUZW5hbnQnIHwgbG9jYWxpemUgOiBsY319PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiIChjbGljayk9XCJjbGVhclVzZXJQcmVmZXJlbmNlcygpXCI+PGkgY2xhc3M9XCJmYSBmYS11c2VyLXRpbWVzXCI+Jm5ic3A7PC9pPnt7J1JpcHVsaXNjaSBsZSBQcmVmZXJlbnplIFV0ZW50ZScgfCBsb2NhbGl6ZSA6IGxjfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImNsZWFyQWxsKClcIj48aSBjbGFzcz1cImZhIGZhLXJlY3ljbGUgXCI+Jm5ic3A7PC9pPnt7J1JpcHVsaXNjaSBsYSBDYWNoZScgfCBsb2NhbGl6ZSA6IGxjfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwibG9nb3V0KClcIj48aSBjbGFzcz1cImZhIGZhLXBvd2VyLW9mZlwiPiZuYnNwOzwvaT5Mb2cgb3V0PC9hPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC91bD5cclxuICAgIDwvdWw+XHJcbjwvbmF2PlxyXG5cclxuPCEtLSBUZW1wbGF0ZSBwZXIgbCdpY29uYSBkZWxsJ3V0ZW50ZSAtLT5cclxuPG5nLXRlbXBsYXRlICN1c2VySWNvbiBsZXQtY29udGV4dD5cclxuICAgIDxpbWcgc3JjPScuLi9hc3NldHMvaW1nL3VzZXJzL3VzZXIuanBnJyBhbHQ9XCJ1c2VyLWltZ1wiIGNsYXNzPVwiaW1nLWNpcmNsZSB1c2VyLWltZ1wiPlxyXG4gICAgPGltZyBzcmM9Jy4uL2Fzc2V0cy9pbWcvZXZlbnRzL2NocmlzdG1hcy5wbmcnIGFsdD1cInVzZXItaW1nXCIgY2xhc3M9XCJpbWctY2lyY2xlIHVzZXItaW1nIGFwcC1hYnNvbHV0ZSBhcHAtcmlnaHQtMFwiIFtzdHlsZS5yaWdodC5weF09XCJjb250ZXh0Py5yaWdodCB8fCB1bmRlZmluZWRcIiAqbmdJZj1cIl9zdGF0ZS5jaHJpc3RtYXNUaW1lXCI+XHJcbiAgICA8aW1nIHNyYz0nLi4vYXNzZXRzL2ltZy9ldmVudHMvaGFsbG93ZWVuLnBuZycgYWx0PVwidXNlci1pbWdcIiBjbGFzcz1cImltZy1jaXJjbGUgdXNlci1pbWcgYXBwLWFic29sdXRlIGFwcC1yaWdodC0wXCIgW3N0eWxlLnJpZ2h0LnB4XT1cImNvbnRleHQ/LnJpZ2h0IHx8IHVuZGVmaW5lZFwiICpuZ0lmPVwiX3N0YXRlLmhhbGxvd2VlblRpbWVcIj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gVGVtcGxhdGUgcGVyIGxlIGluZm9ybWFpem9uaSBkaSBkZWJ1ZzogQW1iaWVudGUsIHJ1b2xpLCBwZXJtZXNzaSBlY2MgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGVidWdJbmZvcz5cclxuICAgIDxkaXY+e3tDdXJyZW50SWRlbnRpdHk/LkZ1bGxOYW1lfX0gLSAoe3tDdXJyZW50SWRlbnRpdHk/LlRlbmFudE5hbWV9fSk8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtLWNlbnRlclwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBsaWNhdGlvbkVudmlyb25tZW50ID09IDJcIj57eydBbWJpZW50ZSBkaSBTdmlsdXBwbycgfCBsb2NhbGl6ZSA6IGxjfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwbGljYXRpb25FbnZpcm9ubWVudCA9PSA1XCI+e3snQW1iaWVudGUgZGkgU3RhZ2luZycgfCBsb2NhbGl6ZSA6IGxjfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwbGljYXRpb25FbnZpcm9ubWVudCA9PSA2XCI+e3snQW1iaWVudGUgZGkgU3RhZ2luZyBBJyB8IGxvY2FsaXplIDogbGN9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBsaWNhdGlvbkVudmlyb25tZW50ID09IDFcIj57eydBbWJpZW50ZSBkaSBQcm9kdXppb25lJyB8IGxvY2FsaXplIDogbGN9fTwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IFtoaWRkZW5dPVwidHJ1ZVwiPlxyXG4gICAgICAgIDxkaXY+UGVybWlzc2lvbnM6PC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcCBvZiBDdXJyZW50SWRlbnRpdHkuUGVybWlzc2lvbnNcIj57e3B9fTwvZGl2PlxyXG4gICAgICAgIDxkaXY+Um9sZXM6PC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgciBvZiBDdXJyZW50SWRlbnRpdHkuUm9sZXNcIj57e3J9fTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIE92ZXJsYXkgcGVyIGxhIHJpY2VyY2EgZ2xvYmFsZSAtLT5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlYXJjaGluZ1Rlcm0gfHwgc2VhcmNoUmVzdWx0XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXBwLWFic29sdXRlIGFwcC1zZWFyY2gtYmFja2dyb3VuZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2VhcmNoLXJlc3VsdC1ib3hcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlYXJjaGluZ1Rlcm1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2VhcmNoLWNhcmRcIj48aSBjbGFzcz1cImZhIGZhLXNwaW5uZXIgZmEtc3BpblwiPjwvaT5TdG8gZWZmZXR0dWFuZG8gbGEgcmljZXJjYS4uLjwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlYXJjaFJlc3VsdCAmJiAhc2VhcmNoaW5nVGVybVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3BhemlvIGEgc2luaXN0cmEgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBCbG9jY28gY29uIGxlIGNhdGVnb3JpZSBkZWkgcmlzdWx0YXRpIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNlYXJjaC1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXJlbGF0aXZlXCI+PGEgY2xhc3M9XCJmYSBmYS10aW1lcyB0ZXh0LWRhbmdlciBhcHAtYWJzb2x1dGUgYXBwLXJpZ2h0LTAgYXBwLWZzLTIwIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImNsb3NlU2VhcmNoKCk7XCI+PC9hPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PkNhdGVnb3JpZSBkaSBSaWNlcmNhPC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtcG9pbnRlciBhcHAtbGlua1wiIFtjbGFzcy5hcHAtYm9sZF09XCIhU2VsZWN0ZWRSZXN1bHQgJiYgIVNob3dTaW5nbGVUYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJGaWx0ZXJTZWFyY2hSZXN1bHRzKClcIj57e1NlbGVjdGVkUmVzdWx0ID8gJy0nIDogJz4nfX0gTW9zdHJhIFR1dHRvPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlYXJjaFJlc3VsdC5yZXN1bHRzXCIgY2xhc3M9XCJhcHAtcG9pbnRlciBhcHAtbGlua1wiIFtjbGFzcy5hcHAtYm9sZF09XCJTZWxlY3RlZFJlc3VsdD8uZGVzY3JpcHRpb24gPT0gaXRlbS5kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJGaWx0ZXJTZWFyY2hSZXN1bHRzKGl0ZW0pXCI+e3tTZWxlY3RlZFJlc3VsdD8uZGVzY3JpcHRpb24gPT0gaXRlbS5kZXNjcmlwdGlvbiA/ICc+JyA6ICctJ319IE1vc3RyYSB7e2l0ZW0uZGVzY3JpcHRpb259fSAoe3tpdGVtLml0ZW1zPy5sZW5ndGh9fSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBEZXR0YWdsaW8gcmlzdWx0YXRpIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiIHN0eWxlPVwib3ZlcmZsb3c6IGF1dG87IGhlaWdodDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFTZWxlY3RlZFJlc3VsdCAmJiAhU2hvd1NpbmdsZVRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByZXMgb2Ygc2VhcmNoUmVzdWx0LnJlc3VsdHM7IGxldCBpID0gaW5kZXg7XCIgY2xhc3M9XCJhcHAtc2VhcmNoLWNhcmRcIiBbc3R5bGUubWFyZ2luLWJvdHRvbS5weF09XCJpID09IChzZWFyY2hSZXN1bHQucmVzdWx0cz8ubGVuZ3RoIC0gMSkgPyAyIDogMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+e3tyZXMuZGVzY3JpcHRpb259fTwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVzLXRhYmxlIFsobmdNb2RlbCldPVwicmVzLml0ZW1zXCIgW0R5bmFtaWNSb3dDb2x1bW5zRGVmaW5pdGlvbl09XCJyZXMuZXN0X2NvbHNcIiBbQXJyYXltb2RlSXRlbXNQZXJQYWdlXT1cIjEwXCI+PC9lcy10YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNlbGVjdGVkUmVzdWx0ICYmIFNob3dTaW5nbGVUYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1zZWFyY2gtY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND57e1NlbGVjdGVkUmVzdWx0LmRlc2NyaXB0aW9ufX08L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcy10YWJsZSBbKG5nTW9kZWwpXT1cIlNlbGVjdGVkUmVzdWx0Lml0ZW1zXCIgW0R5bmFtaWNSb3dDb2x1bW5zRGVmaW5pdGlvbl09XCJTZWxlY3RlZFJlc3VsdC5lc3RfY29sc1wiIFtBcnJheW1vZGVJdGVtc1BlclBhZ2VdPVwiMTBcIj48L2VzLXRhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3BhemlvIGEgZGVzdHJhIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPiJdfQ==
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zcmMvbmF2YmFyL25hdmJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL25hdmJhci9uYXZiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLE1BQU0sRUFBUSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUksT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSWxGLFdBQVc7QUFDWCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFtRyxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzdLLFdBQVc7QUFDWCxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTFELGVBQWU7QUFDZixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFbkQsYUFBYTtBQUNiLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7Ozs7Ozs7OztBQUUvRCx5QkFBeUI7QUFDekIsTUFBTSw2QkFBNkIsR0FBVyxnQ0FBZ0MsQ0FBQztBQUMvRSxNQUFNLHdCQUF3QixHQUFXLDJCQUEyQixDQUFDO0FBZXJFLE1BQU0sT0FBTyxNQUFPLFNBQVEsaUJBQWlCO0lBZXpDLFlBQ1ksWUFBZ0MsRUFBVSxZQUEwQixFQUFTLG1CQUF3QyxFQUFVLFVBQThCLEVBQzdKLGFBQW1DLEVBQVUsT0FBdUIsRUFBUyxFQUF1QixFQUFVLElBQWlCLEVBQVMsR0FBc0IsRUFDL0osTUFBZ0IsRUFBUyxFQUFnQixFQUFVLE1BQWMsRUFBVSxVQUEwQyxFQUFvQyxtQkFBZ0MsRUFDL0osY0FBdUI7UUFDeEQsS0FBSyxFQUFFLENBQUM7UUFKQSxpQkFBWSxHQUFaLFlBQVksQ0FBb0I7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUFTLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFvQjtRQUM3SixrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUFTLE9BQUUsR0FBRixFQUFFLENBQXFCO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUFTLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQy9KLFdBQU0sR0FBTixNQUFNLENBQVU7UUFBUyxPQUFFLEdBQUYsRUFBRSxDQUFjO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQWdDO1FBQW9DLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBYTtRQUMvSixtQkFBYyxHQUFkLGNBQWMsQ0FBUztRQWpCckQsdUJBQWtCLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztRQUN2RCwyQkFBc0IsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDO1FBRS9ELG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUlwQyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUEySjFDLCtHQUErRztRQUV4RyxtQkFBYyxHQUFpQixJQUFJLENBQUM7UUFDcEMsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFHeEMsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFySjNCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGtCQUFrQixFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGtCQUFrQixFQUFFLENBQUMsY0FBYyxFQUFFLEVBQUU7WUFDekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3RILElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFOUUsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFFNUIsb0dBQW9HO1FBQ3BHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQ2YsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUNaLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQzFCLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQy9DLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ1osSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVRLFdBQVc7UUFDaEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLHVIQUF1SDtRQUN2SCxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFTyx1QkFBdUI7UUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDOUcsSUFBSSxPQUFPLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDeEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsaUhBQWlILENBQUMsQ0FBQyxDQUFDO2dCQUMzSixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2FBQ2hDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sYUFBYTtRQUNqQixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ25DLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFFbEMsSUFBSSxDQUFDLEVBQUU7WUFBRSxPQUFPO1FBRWhCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU3QixJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxJQUFJLE1BQU0sRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDLE1BQU0sSUFBSSxNQUFNLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxRQUFRLElBQUksTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFO1lBQy9ILElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLDhNQUE4TSxDQUFDLENBQUMsQ0FBQztZQUN4UCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQzNCO1FBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELG9CQUFvQjtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBcUIsNkJBQTZCLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDN0UsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7WUFDbkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxRQUFzQjtRQUM5QyxJQUFJLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRTtZQUNuRyxRQUFRLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1lBRW5DLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQzlCLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEVBQzlCLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLDZGQUE2RixDQUFDLEVBQzFHLEdBQUcsRUFBRTtnQkFDRCxRQUFRLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO2dCQUNwQyxPQUFPLENBQUMsR0FBRyxDQUFDLDRDQUE0QyxDQUFDLENBQUE7Z0JBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNwQyxDQUFDLENBQ0osQ0FBQztTQUNMO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU0sYUFBYTtRQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0lBRU0sVUFBVTtRQUNiLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzdDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTSxNQUFNO1FBQ1QsSUFBSSxJQUFJLENBQUMsY0FBYztZQUNuQixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxPQUFPLGtCQUFrQixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7O1lBRTlFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLE9BQU8sb0JBQW9CLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN4RixDQUFDO0lBRU0sWUFBWTtRQUNmLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztJQUNyRCxDQUFDO0lBRU0sWUFBWTtRQUNmLElBQUksSUFBSSxDQUFDLGNBQWM7WUFDbkIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsT0FBTyx3QkFBd0IsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDOztZQUVwRixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxPQUFPLG1CQUFtQixRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdkYsQ0FBQztJQUVELG9CQUFvQjtRQUNoQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxHQUFtQjtRQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBV0QsYUFBYTtRQUNULElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBRXpCLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTztZQUNqQyxPQUFPO1FBRVgsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzNELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1lBRXRCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbEMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDM0IsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM3RCxPQUFPLElBQUksd0JBQXdCLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLGVBQWUsQ0FBQyxDQUFDO2dCQUMzRyxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO1lBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzdCLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxPQUFxQixJQUFJO1FBQ3pDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBRTVCLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtZQUN2QixJQUFJLElBQUk7Z0JBQ0osSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzs7Z0JBRS9GLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7bUdBdE5RLE1BQU0sOGFBa0IySCxpQkFBaUIsYUFDL0ksZ0JBQWdCO3VGQW5CbkIsTUFBTSwyTENoRG5CLHExWUEwS2UscW9KRDVIRCxVQUFVLDJOQUFFLFdBQVcsdWlDQUFFLGdCQUFnQixzbEJBQUUsb0JBQW9CLHdNQUFFLElBQUksNkZBQUUsS0FBSyxrSEFBRSxpQkFBaUIsdUtBQUUsc0JBQXNCLGlHQUFFLGdCQUFnQixtSkFBRSxhQUFhLDAyQ0FBRSxrQkFBa0IsK0VBTnZLLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDOzJGQVE3RCxNQUFNO2tCQVZsQixTQUFTOytCQUNJLFFBQVEsaUJBQ0gsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUMsaUJBQ3ZELGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sY0FHbkMsSUFBSSxXQUNQLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLHNCQUFzQixFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQzs7MEJBb0JwRCxNQUFNOzJCQUFDLGlCQUFpQjs7MEJBQ3RKLE1BQU07MkJBQUMsZ0JBQWdCOzRDQVJZLE1BQU07c0JBQTdDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEluamVjdCwgVHlwZSwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFJvdXRlciwgUm91dGVyTGluayB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlXCI7XHJcbmltcG9ydCB7IE5nSWYsIE5nRm9yLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLy8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgQmFzZU1lc3NhZ2VTZXJ2aWNlLCBOb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvc2lnbmFsci1ub3RpZmljYXRpb25zXCI7XHJcbmltcG9ydCB7IENhY2hlU2VydmljZSwgUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9wcmVmZXJlbmNlc1wiO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlLCBMb2NhbGl6YXRpb25Nb2R1bGUgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2V4dGVuc2lvbnNcIjtcclxuaW1wb3J0IHsgSFRUUFNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2h0dHBzZXJ2aWNlXCI7XHJcblxyXG4vLyBFc0ZhZW56YVxyXG5pbXBvcnQgeyBFc1RhYmxlQ29sdW1uc0RlZmluaXRpb24sIEVzVGFibGVNb2R1bGUgfSBmcm9tIFwiQGVzZmFlbnphL2VzLXRhYmxlXCI7XHJcbmltcG9ydCB7IENvbXBvbmVudEhvc3REaXJlY3RpdmUgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvZGlyZWN0aXZlc1wiO1xyXG5pbXBvcnQgeyBKYWNlSWRlbnRpdHksIEFjdGl2ZU1vZHVsZVZpZXcsIEVudk9wdGlvbnMsIEFwcGxpY2F0aW9uSm9iLCBTZWFyY2hSZXN1bHQsIFNlYXJjaFJlc3VsdENvbnRhaW5lciwgTkFWQkFSX0VYVEVOU0lPTlMsIExPR0lOX1VSTF9MRUdBQ1kgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvZG9tYWluXCI7XHJcbmltcG9ydCB7IEFwcFN0YXRlLCBDb21wbGV0ZWRKb2JSZWRpcmVjdGlvblNlcnZpY2UsIEdsb2JhbFNlYXJjaFNlcnZpY2UsIFRva2VuU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9zZXJ2aWNlc1wiO1xyXG5cclxuLy8gTGlicmVyaWVcclxuaW1wb3J0IHsgaW50ZXJ2YWwsIHN0YXJ0V2l0aCwgdGFrZVVudGlsLCB0YWtlV2hpbGUgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBQcm9ncmVzc2Jhck1vZHVsZSB9IGZyb20gXCJuZ3gtYm9vdHN0cmFwL3Byb2dyZXNzYmFyXCI7XHJcbmltcG9ydCB7IEJzRHJvcGRvd25Nb2R1bGUgfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9kcm9wZG93blwiO1xyXG5cclxuLy8gQXBwbGljYXppb25lXHJcbmltcG9ydCB7IE5hdkJhckxvYyB9IGZyb20gXCIuL25hdmJhci5jb21wb25lbnQubG9jXCI7XHJcblxyXG4vLyBDb21wb25lbnRpXHJcbmltcG9ydCB7IFJlYWN0aXZlQ29tcG9uZW50IH0gZnJvbSBcIi4uL2Jhc2UvcmVhY3RpdmUuY29tcG9uZW50XCI7XHJcblxyXG4vLyBDaGlhbWF0ZSBhaSBSZXBvc2l0b3J5XHJcbmNvbnN0IEdFVF9KYWNlX0dldEFjdGl2ZUphY2VNb2R1bGVzOiBzdHJpbmcgPSBcIi9hcGkvSmFjZS9HZXRBY3RpdmVKYWNlTW9kdWxlc1wiO1xyXG5jb25zdCBHRVRfQ2FjaGVfQ2xlYXJBbGxDYWNoZXM6IHN0cmluZyA9IFwiL2FwaS9DYWNoZS9DbGVhckFsbENhY2hlc1wiO1xyXG5cclxuZGVjbGFyZSB2YXIgbXljb25maWc6IEVudk9wdGlvbnM7XHJcbmRlY2xhcmUgdmFyIGRheWpzO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJuYXZiYXJcIixcclxuICAgIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IExvY2FsaXphdGlvblNlcnZpY2UsIHVzZUNsYXNzOiBOYXZCYXJMb2MgfV0sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4vbmF2YmFyLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9uYXZiYXIuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbUm91dGVyTGluaywgRm9ybXNNb2R1bGUsIEJzRHJvcGRvd25Nb2R1bGUsIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLCBOZ0lmLCBOZ0ZvciwgUHJvZ3Jlc3NiYXJNb2R1bGUsIENvbXBvbmVudEhvc3REaXJlY3RpdmUsIE5nVGVtcGxhdGVPdXRsZXQsIEVzVGFibGVNb2R1bGUsIExvY2FsaXphdGlvbk1vZHVsZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5hdmJhciBleHRlbmRzIFJlYWN0aXZlQ29tcG9uZW50IHtcclxuXHJcbiAgICBwdWJsaWMgYXBwbGljYXRpb25WZXJzaW9uID0gbXljb25maWcuQXBwRGF0YS5Db21wb25lbnRWZXJzaW9uO1xyXG4gICAgcHVibGljIGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSBteWNvbmZpZy5BcHBEYXRhLkNvbXBvbmVudEVudmlyb25tZW50O1xyXG5cclxuICAgIHB1YmxpYyBpc01lbnVDb2xsYXBzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBhbm9tYWxpZXNQcm9jZXNzaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcHVibGljIEN1cnJlbnRJZGVudGl0eTogSmFjZUlkZW50aXR5O1xyXG5cclxuICAgIHByaXZhdGUgbmV3VmVyc2lvbldhcm5lZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQFZpZXdDaGlsZChcIm5hdmJhclwiLCB7IHN0YXRpYzogZmFsc2UgfSkgbmF2YmFyOiBFbGVtZW50UmVmO1xyXG5cclxuICAgIHB1YmxpYyBNb2R1bGVzOiBBY3RpdmVNb2R1bGVWaWV3W107XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBwcmVmc1NlcnZpY2U6IFByZWZlcmVuY2VzU2VydmljZSwgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IENhY2hlU2VydmljZSwgcHVibGljIGdsb2JhbFNlYXJjaFNlcnZpY2U6IEdsb2JhbFNlYXJjaFNlcnZpY2UsIHByaXZhdGUgTWVzc2FnZURlZjogQmFzZU1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgbm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uc1NlcnZpY2UsIHByaXZhdGUgbXNnRXh0czogTWVzc2FnZVNlcnZpY2UsIHB1YmxpYyBsYzogTG9jYWxpemF0aW9uU2VydmljZSwgcHJpdmF0ZSBodHRwOiBIVFRQU2VydmljZSwgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgcHVibGljIF9zdGF0ZTogQXBwU3RhdGUsIHB1YmxpYyBzcjogVG9rZW5TZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGNqclNlcnZpY2U6IENvbXBsZXRlZEpvYlJlZGlyZWN0aW9uU2VydmljZSwgQEluamVjdChOQVZCQVJfRVhURU5TSU9OUykgcHVibGljIGV4dGVuc2lvbkNvbXBvbmVudHM6IFR5cGU8YW55PltdLFxyXG4gICAgICAgIEBJbmplY3QoTE9HSU5fVVJMX0xFR0FDWSkgcHVibGljIGxvZ2luVXJsTGVnYWN5OiBib29sZWFuKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuXHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc3Vic2NyaWJlKFwibWVudS5pc0NvbGxhcHNlZFwiLCAoaXNDb2xsYXBzZWQpID0+IHsgdGhpcy5pc01lbnVDb2xsYXBzZWQgPSBpc0NvbGxhcHNlZDsgfSk7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc3Vic2NyaWJlKFwiYXBwLmNvbXBsZXRlZEpvYlwiLCAoam9iRGVzY3JpcHRpb24pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVN1Y2Nlc3ModGhpcy5sYy5sb2MoXCJKb2IgQ29tcGxldGF0b1wiKSArIChqb2JEZXNjcmlwdGlvbiA/IChcIjogXCIgKyBqb2JEZXNjcmlwdGlvbikgOiAnJyksIFwidG9hc3RyXCIpO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc3Vic2NyaWJlKFwiYXBwLnN0YXJ0ZWRKb2JcIiwgKF8pID0+IHsgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7IH0pO1xyXG4gICAgICAgIHRoaXMuX3N0YXRlLnN1YnNjcmliZShcImFwcC5wcm9ncmVzc0pvYlwiLCAoXykgPT4geyB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTsgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuaGFuZGxlQmFzZU5vdGlmaWNhdGlvbnMoKTtcclxuICAgICAgICB0aGlzLmdldEFjdGl2ZUphY2VNb2R1bGVzKCk7XHJcblxyXG4gICAgICAgIC8vIEFwcGVuYSBsYSBwYWdpbmEgcGFydGUsIHBvaSBvZ25pIHNlY29uZG8sIGNvbnRyb2xsbyBsJ2lkZW50aXR5IHBlciB2ZXJpZmljYXJlIHNlIHJpbWFuZSBsYSBzdGVzc2FcclxuICAgICAgICBpbnRlcnZhbCgxMDAwKS5waXBlKFxyXG4gICAgICAgICAgICBzdGFydFdpdGgoMCksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxyXG4gICAgICAgICAgICB0YWtlV2hpbGUoXyA9PiAhbXljb25maWcucmVkaXJlY3RJblByb2dyZXNzKVxyXG4gICAgICAgICkuc3Vic2NyaWJlKHQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrSWRlbnRpdHkoKTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICAgICAgLy9RdWFuZG8gdmllbmUgZGlzdHJ1dHRhIGxhIG5hdmJhciBkZXZvIGRpc3RydWdnZXJlIGFuY2hlIGlsIGNsaWVudCBkaSBzaWduYWxyIHBlcmNow6ggdnVvbCBkaXJlIGNoZSBobyBjaGl1c28gbGEgcGFnaW5hXHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLmRpc2Nvbm5lY3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhhbmRsZUJhc2VOb3RpZmljYXRpb25zKCkge1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5zZW5kKHRoaXMuTWVzc2FnZURlZi5PVVRfUXVlcnlKb2JTdGF0dXMsIG51bGwpO1xyXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5vYnNlcnZlKHRoaXMuTWVzc2FnZURlZi5JTl9TZW5kVmVyc2lvbikucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSkuc3Vic2NyaWJlKChtZXNzYWdlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChtZXNzYWdlICE9IG15Y29uZmlnLkFwcERhdGEuQ29tcG9uZW50VmVyc2lvbiAmJiAhdGhpcy5uZXdWZXJzaW9uV2FybmVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlV2FybmluZyh0aGlzLmxjLmxvYyhcIsOIIGRpc3BvbmliaWxlIHVuYSBudW92YSB2ZXJzaW9uZSBwZXIgbCdhcHBsaWNhemlvbmUgY29ycmVudGUuIFNpIHN1Z2dlcmlzY2UgZGkgcmljYXJpY2FyZSBsYSBwYWdpbmEgKENUUkwgKyBGNSlcIikpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5uZXdWZXJzaW9uV2FybmVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hlY2tJZGVudGl0eSgpIHtcclxuICAgICAgICBsZXQgaWQgPSB0aGlzLnNyLmdldEphY2VJZGVudGl0eSgpO1xyXG4gICAgICAgIGxldCBpZExhc3QgPSB0aGlzLkN1cnJlbnRJZGVudGl0eTtcclxuXHJcbiAgICAgICAgaWYgKCFpZCkgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLmNoZWNrU2Vzc2lvblRpbWVvdXQoaWQpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5DdXJyZW50SWRlbnRpdHkgJiYgKGlkLklkQWNjb3VudCAhPSBpZExhc3Q/LklkQWNjb3VudCB8fCBpZC5JZFVzZXIgIT0gaWRMYXN0Py5JZFVzZXIgfHwgaWQuSWR0ZW5hbnQgIT0gaWRMYXN0Py5JZHRlbmFudCkpIHtcclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVdhcm5pbmcodGhpcy5sYy5sb2MoXCJMZSBpbmZvcm1hemlvbmkgZGkgU2Vzc2lvbmUgKFRlbmFudC9BY2NvdW50KSBzb25vIGNhbWJpYXRlIGEgc2VndWl0byBkaSB1biBsb2dpbiBzdSBtb2R1bG8gZGl2ZXJzbyB1dGlsaXp6YW5kbyBkaXZlcnNvIFRlbmFudC9VdGVudGUgc3VsbG8gc3Rlc3NvIGJyb3dzZXIuIFNpIHN1Z2dlcmlzY2UgZGkgcmljYXJpY2FyZSBsYSBwYWdpbmEgKENUUkwgKyBGNSlcIikpO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuQ3VycmVudElkZW50aXR5ID0gaWQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QWN0aXZlSmFjZU1vZHVsZXMoKSB7XHJcbiAgICAgICAgdGhpcy5odHRwLmdldDxBY3RpdmVNb2R1bGVWaWV3W10+KEdFVF9KYWNlX0dldEFjdGl2ZUphY2VNb2R1bGVzKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgICAgICAgdGhpcy5Nb2R1bGVzID0gcmVzO1xyXG4gICAgICAgICAgICB0aGlzLl9zdGF0ZS5Nb2R1bGVzID0gdGhpcy5Nb2R1bGVzO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hlY2tTZXNzaW9uVGltZW91dChpZGVudGl0eTogSmFjZUlkZW50aXR5KSB7XHJcbiAgICAgICAgaWYgKGRheWpzKCkgPj0gZGF5anMoaWRlbnRpdHkuRXhwaXJhdGlvblRpbWUpLnN1YnRyYWN0KDEwLCAnbWludXRlcycpICYmICFteWNvbmZpZy5yZWRpcmVjdEluUHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgbXljb25maWcucmVkaXJlY3RJblByb2dyZXNzID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMubXNnRXh0cy5leHBpcmVkU2Vzc2lvbk1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxjLmxvYygnRXhwaXJlZCBzZXNzaW9uJyksXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxjLmxvYyhcIkwnYXR0dWFsZSBzZXNzaW9uZSBkaSBsYXZvcm8gbm9uIMOoIHBpw7kgdmFsaWRhLjxicj5TaSBwcmVnYSBkaSBlc2VndWlyZSBudW92YW1lbnRlIGlsIGxvZ2luLlwiKSxcclxuICAgICAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBteWNvbmZpZy5yZWRpcmVjdEluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImNoZWNrU2Vzc2lvblRpbWVvdXQgLSByZWRpcmVjdGluZyB0byBsb2dpblwiKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcImxvZ2luXCJdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMuX3N0YXRlLnNldEhlYWRlckhlaWdodCh0aGlzLm5hdmJhci5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdvVG9EYXNoYm9hcmQoKXtcclxuICAgICAgICB3aW5kb3cub3BlbihteWNvbmZpZy5KYWNlRGFzaGJvYXJkVXJsLCAnX2JsYW5rJykuZm9jdXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9nZ2xlTWVudSgpIHtcclxuICAgICAgICB0aGlzLmlzTWVudUNvbGxhcHNlZCA9ICF0aGlzLmlzTWVudUNvbGxhcHNlZDtcclxuICAgICAgICB0aGlzLl9zdGF0ZS5ub3RpZnlEYXRhQ2hhbmdlZChcIm1lbnUuaXNDb2xsYXBzZWRcIiwgdGhpcy5pc01lbnVDb2xsYXBzZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBsb2dvdXQoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubG9naW5VcmxMZWdhY3kpXHJcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7bXljb25maWcuQXV0aFVybH0vbG9nb3V0P2NsaWVudD0ke215Y29uZmlnLkNsaWVudH1gO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHtteWNvbmZpZy5BdXRoVXJsfS8jL2xvZ291dDtjbGllbnQ9JHtteWNvbmZpZy5DbGllbnR9YDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY2hhbmdlTW9kdWxlKCkge1xyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbXljb25maWcuSmFjZURhc2hib2FyZFVybDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY2hhbmdlVGVuYW50KCkge1xyXG4gICAgICAgIGlmICh0aGlzLmxvZ2luVXJsTGVnYWN5KVxyXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke215Y29uZmlnLkF1dGhVcmx9L2xvZ2luL3RlbmFudD9jbGllbnQ9JHtteWNvbmZpZy5DbGllbnR9YDtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7bXljb25maWcuQXV0aFVybH0vIy9sb2dpbjtjbGllbnQ9JHtteWNvbmZpZy5DbGllbnR9YDtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhclVzZXJQcmVmZXJlbmNlcygpIHtcclxuICAgICAgICB0aGlzLnByZWZzU2VydmljZS5jbGVhcigpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVTdWNjZXNzKHRoaXMubGMubG9jKFwiUHJlZmVyZW56ZSB1dGVudGUgcmlwdWxpdGVcIikpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyQ2FjaGVDbGllbnQoKSB7XHJcbiAgICAgICAgdGhpcy5jYWNoZVNlcnZpY2UuY2xlYXIoKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICB0aGlzLmh0dHAucmVzZXRIdHRwVW50aW1lZENhY2hlU3RvcmFnZSgpO1xyXG4gICAgICAgIHRoaXMuaHR0cC5yZXNldEh0dHBUaW1lZENhY2hlU3RvcmFnZSgpO1xyXG4gICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVTdWNjZXNzKHRoaXMubGMubG9jKFwiQ2FjaGUgUmlwdWxpdGFcIikpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyQ2FjaGVTZXJ2ZXIoKSB7XHJcbiAgICAgICAgdGhpcy5odHRwLmdldChHRVRfQ2FjaGVfQ2xlYXJBbGxDYWNoZXMpLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVN1Y2Nlc3ModGhpcy5sYy5sb2MoXCJDYWNoZSBSaXB1bGl0YVwiKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJBbGwoKSB7XHJcbiAgICAgICAgdGhpcy5jYWNoZVNlcnZpY2UuY2xlYXIoKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICB0aGlzLmh0dHAucmVzZXRIdHRwVW50aW1lZENhY2hlU3RvcmFnZSgpO1xyXG4gICAgICAgIHRoaXMuaHR0cC5yZXNldEh0dHBUaW1lZENhY2hlU3RvcmFnZSgpO1xyXG4gICAgICAgIHRoaXMuaHR0cC5nZXQoR0VUX0NhY2hlX0NsZWFyQWxsQ2FjaGVzKS5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVTdWNjZXNzKHRoaXMubGMubG9jKFwiQ2FjaGUgUmlwdWxpdGFcIikpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyTWVzc2FnZXMoKSB7XHJcbiAgICAgICAgdGhpcy5tc2dFeHRzLmNsZWFyTWVzc2FnZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb21wbGV0ZWRKb2JDbGlja2VkKGpvYjogQXBwbGljYXRpb25Kb2IpIHtcclxuICAgICAgICB0aGlzLmNqclNlcnZpY2UucmVkaXJlY3Qoam9iKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBHZXN0aW9uZSBSaWNlcmNhIEdsb2JhbGUgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbiAgICBwdWJsaWMgU2VsZWN0ZWRSZXN1bHQ6IFNlYXJjaFJlc3VsdCA9IG51bGw7XHJcbiAgICBwdWJsaWMgU2hvd1NpbmdsZVRhYmxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgc2VhcmNoVGVybTogc3RyaW5nO1xyXG4gICAgc2VhcmNoaW5nVGVybTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgc2VhcmNoUmVzdWx0OiBTZWFyY2hSZXN1bHRDb250YWluZXI7XHJcblxyXG4gICAgc2VhcmNoUmVxdWVzdCgpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaGluZ1Rlcm0gPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0ID0gbnVsbDtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmdsb2JhbFNlYXJjaFNlcnZpY2UuRW5hYmxlZClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG5cclxuICAgICAgICB0aGlzLmdsb2JhbFNlYXJjaFNlcnZpY2Uuc2VhcmNoKHRoaXMuc2VhcmNoVGVybSkuc3Vic2NyaWJlKHQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaGluZ1Rlcm0gPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHQgPSB0O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHQucmVzdWx0cy5mb3JFYWNoKHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgdC5lc3RfY29scyA9IHQuY29sdW1ucy5tYXAoYyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbExpbmsgPSB0aGlzLmdsb2JhbFNlYXJjaFNlcnZpY2UuZ2VuZXJhdGVDb2x1bW5MaW5rKGMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNUYWJsZUNvbHVtbnNEZWZpbml0aW9uKGMuZGVzY3JpcHRpb24sIGMuaWQsIGNvbExpbms/LnJvdXRlUGF0aCwgY29sTGluaz8ucm91dGVQcm9wZXJ0aWVzKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZWFyY2hNb2RlbENoYW5nZWQoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaGluZ1Rlcm0pXHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2VTZWFyY2goKTtcclxuICAgIH1cclxuXHJcbiAgICBjbG9zZVNlYXJjaCgpIHtcclxuICAgICAgICB0aGlzLnNlYXJjaGluZ1Rlcm0gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdCA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgRmlsdGVyU2VhcmNoUmVzdWx0cyhpdGVtOiBTZWFyY2hSZXN1bHQgPSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5TZWxlY3RlZFJlc3VsdCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5TaG93U2luZ2xlVGFibGUgPSB0cnVlO1xyXG5cclxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXRlbSlcclxuICAgICAgICAgICAgICAgIHRoaXMuU2VsZWN0ZWRSZXN1bHQgPSB0aGlzLnNlYXJjaFJlc3VsdD8ucmVzdWx0cz8uZmluZChmID0+IGYuZGVzY3JpcHRpb24gPT0gaXRlbS5kZXNjcmlwdGlvbik7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHRoaXMuU2hvd1NpbmdsZVRhYmxlID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0iLCI8bmF2ICNuYXZiYXIgY2xhc3M9XCJuYXYgYXotbmF2YmFyIGZpeGVkLXRvcFwiPlxyXG4gICAgPCEtLSBMb2dvIC0tPlxyXG4gICAgPGEgY2xhc3M9XCJuYXZiYXItYnJhbmRcIiByb3V0ZXJMaW5rPVwiL3BhZ2VzL2Rhc2hib2FyZFwiPlxyXG4gICAgICAgIDxpbWcgc3JjPVwiLi4vYXNzZXRzL2ltZy9sb2dvL2xvZ28ucG5nXCIgY2xhc3M9XCJkLW1kLWJsb2NrIGQtbm9uZVwiIHN0eWxlPVwibWFyZ2luLXRvcDogMTBweDsgbWFyZ2luLWJvdHRvbTogLTEwcHg7XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1mZS12IGQtbWQtYmxvY2sgZC1ub25lXCI+e3sgYXBwbGljYXRpb25WZXJzaW9uIH19PC9kaXY+XHJcblxyXG4gICAgICAgIDxpbWcgc3JjPVwiLi4vYXNzZXRzL2ltZy9sb2dvL2xvZ29fc20ucG5nXCIgY2xhc3M9XCJkLW1kLW5vbmVcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7IG1hcmdpbi1ib3R0b206IC0xMHB4O1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtZmUtc20tdiBkLW1kLW5vbmVcIj57eyBhcHBsaWNhdGlvblZlcnNpb24gfX08L2Rpdj5cclxuICAgIDwvYT5cclxuXHJcbiAgICA8dWwgY2xhc3M9XCJuYXYgbmF2YmFyLW5hdiBuYXZiYXItZmlsbGFibGVcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgPCEtLSBDb2xsYXBzZSBtZW7DuSBhIHNpbmlzdHJhIC0tPlxyXG4gICAgICAgIDxsaSBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgICAgIDxhIChjbGljayk9XCJ0b2dnbGVNZW51KClcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZTsgZm9udC1zaXplOiAyMHB4OyBhbGlnbi1zZWxmOiBjZW50ZXI7XCIgY2xhc3M9XCJmYSBmYS1uYXZpY29uXCI+PC9hPlxyXG4gICAgICAgIDwvbGk+XHJcblxyXG4gICAgICAgIDwhLS0gU2VhcmNoIC0tPlxyXG4gICAgICAgIDxsaSBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XHJcbiAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwiYXBwLXNlYXJjaFwiIHN0eWxlPVwiYWxpZ24tc2VsZjogY2VudGVyO1wiIHJvbGU9XCJzZWFyY2hcIiAobmdTdWJtaXQpPVwic2VhcmNoUmVxdWVzdCgpXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiIFsobmdNb2RlbCldPVwic2VhcmNoVGVybVwiIChuZ01vZGVsQ2hhbmdlKT1cInNlYXJjaE1vZGVsQ2hhbmdlZCgpXCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lIDogdHJ1ZX1cIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICAgICAgPGE+PGkgY2xhc3M9XCJpb24taW9zLXNlYXJjaC1zdHJvbmdcIj48L2k+PC9hPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBoaWRkZW4+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICA8dWwgY2xhc3M9XCJuYXZcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiBhdXRvOyBwYWRkaW5nLXRvcDogNXB4OyBwYWRkaW5nLXJpZ2h0OiAxMHB4O1wiPlxyXG5cclxuICAgICAgICAgICAgPCEtLURyb3Bkb3duIGpvYiBpbiBlc2VjdXppb25lLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLW1lbnUgYXBwLW5vLXNlbGVjdGlvbiBhcHAtbWFyZ2luLXJpZ2h0LTEwXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiIGRyb3Bkb3duIGNvbnRhaW5lcj1cImJvZHlcIiBwbGFjZW1lbnQ9XCJib3R0b20gcmlnaHRcIj5cclxuICAgICAgICAgICAgICAgIDxhIFtjbGFzcy5mYS1zcGluXT1cIl9zdGF0ZS5qb2JzSW5Qcm9ncmVzcyA+IDBcIiBjbGFzcz1cImZhIGZhLWNvZyBkcm9wZG93bi10b2dnbGUgYXBwLXBvaW50ZXJcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZTsgZm9udC1zaXplOiAyMHB4OyBhbGlnbi1zZWxmOiBjZW50ZXI7XCIgZHJvcGRvd25Ub2dnbGU+PC9hPlxyXG4gICAgICAgICAgICAgICAgPHVsICpkcm9wZG93bk1lbnUgY2xhc3M9XCJuYXYtam9icy1tZW51XCIgcm9sZT1cIm1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWpvYnMtbWVudS1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3snSm9iIEFwcGxpY2F0aXZpJyB8IGxvY2FsaXplIDogbGN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwdWxsLXJpZ2h0IG0tdC1taW4tMlwiPjxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiX3N0YXRlLm5vdGlmeU9uQ29tcGxldGVkSm9ic1wiIChjbGljayk9XCJjbGVhck1lc3NhZ2VzKCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj48L21hdC1zbGlkZS10b2dnbGU+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInB1bGwtcmlnaHQgYXBwLW1hcmdpbi1yaWdodC01XCI+e3snTm90aWZpY2hlJyB8IGxvY2FsaXplIDogbGN9fTo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hdi1qb2JzLW1lbnUtbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiX3N0YXRlLmFsbEpvYnMubGVuZ3RoID09IDBcIiBjbGFzcz1cIm5hdi1qb2JzLW1lbnUtbGlzdC1lbXB0eVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj57e1wiQWwgbW9tZW50byBub24gYyfDqCBudWxsYSBpbiBlc2VjdXppb25lXCIgfCBsb2NhbGl6ZSA6IGxjfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGpvYiBvZiBfc3RhdGUuYWxsSm9iczsgbGV0IGxhc3QgPSBsYXN0XCIgW2NsYXNzLmFwcC1tYXJnaW4tYm90dG9tLTVdPVwiIWxhc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmF2LWpvYnMtbWVudS1saXN0LWRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIham9iLmNvbXBsZXRlZFwiIHRpdGxlPVwie3tqb2IuZGVzY3JpcHRpb259fVwiPnt7am9iLnNtYWxsZGVzY3JpcHRpb259fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImpvYi5jb21wbGV0ZWRcIiB0aXRsZT1cInt7am9iLmRlc2NyaXB0aW9ufX1cIiBjbGFzcz1cImFwcC1saW5rIGFwcC1uby1zZWxlY3Rpb24gYXBwLWlubGluZSBhcHAtcG9pbnRlclwiIChjbGljayk9XCJjb21wbGV0ZWRKb2JDbGlja2VkKGpvYik7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcIj57e2pvYi5zbWFsbGRlc2NyaXB0aW9ufX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cInB1bGwtcmlnaHRcIiAqbmdJZj1cIiFqb2IuY29tcGxldGVkXCI+e3tqb2IucGVyY2VudGFnZX19JTwvc3Ryb25nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJwdWxsLXJpZ2h0XCIgKm5nSWY9XCJqb2IuY29tcGxldGVkXCI+e3sgJ0NvbXBsZXRlZCcgfCBsb2NhbGl6ZSA6IGxjIH19PC9zdHJvbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MgcHJvZ3Jlc3Mtc21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvZ3Jlc3NiYXIgKm5nSWY9XCIham9iLmNvbXBsZXRlZFwiIFttYXhdPVwiMTAwXCIgW3ZhbHVlXT1cImpvYi5wZXJjZW50YWdlXCIgW3N0cmlwZWRdPVwidHJ1ZVwiIFthbmltYXRlXT1cInRydWVcIj48L3Byb2dyZXNzYmFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9ncmVzc2JhciAqbmdJZj1cImpvYi5jb21wbGV0ZWRcIiB0eXBlPVwic3VjY2Vzc1wiIFttYXhdPVwiMTAwXCIgW3ZhbHVlXT1cIjEwMFwiIFtzdHJpcGVkXT1cImZhbHNlXCIgW2FuaW1hdGVdPVwiZmFsc2VcIj48L3Byb2dyZXNzYmFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tRHJvcGRvd24gbW9kdWxpLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLW1lbnUgYXBwLW5vLXNlbGVjdGlvbiBhcHAtbWFyZ2luLXJpZ2h0LTEwXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmYSBmYS10aCBhcHAtcG9pbnRlclwiIHN0eWxlPVwiY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMjBweDsgYWxpZ24tc2VsZjogY2VudGVyO1wiIChjbGljayk9XCJnb1RvRGFzaGJvYXJkKCk7XCI+PC9hPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gUHVudGkgZGkgZXN0ZW5zaW9uZSBwZXIgQ2FsZW5kYXIsIENoYXRyb29tIGUgY2hpIHBpw7kgbmUgaGEgcGnDuSBuZSBtZXR0YS4uLiAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItbWVudSBhcHAtbm8tc2VsZWN0aW9uIGFwcC1tYXJnaW4tcmlnaHQtMTBcIiAqbmdGb3I9XCJsZXQgY29tcCBvZiBleHRlbnNpb25Db21wb25lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW2NvbXBvbmVudEhvc3RdPVwiY29tcFwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLURyb3Bkb3duIFVzZXIgTWVudS0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1tZW51IGFwcC1uby1zZWxlY3Rpb25cIiBkcm9wZG93biBjb250YWluZXI9XCJib2R5XCIgcGxhY2VtZW50PVwiYm90dG9tIHJpZ2h0XCIgc3R5bGU9XCJoZWlnaHQ6NDVweDsgcGFkZGluZy1yaWdodDogMTBweDtcIj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24tdG9nZ2xlIHVzZXItbGluayBhcHAtcG9pbnRlclwiIGRyb3Bkb3duVG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwdWxsLWxlZnQgYXBwLW1hcmdpbi1yaWdodC0xMCBhcHAtcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInVzZXJJY29uO1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtd2hpdGUtdGV4dCBwdWxsLXJpZ2h0IGQtbm9uZSBkLXNtLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZWJ1Z0luZm9zXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcblxyXG4gICAgICAgICAgICAgICAgPHVsICpkcm9wZG93bk1lbnUgY2xhc3M9XCJkcm9wZG93bi1tZW51IGRyb3Bkb3duLW1lbnUtcmlnaHQtdXNlciBhcHAtbm8tcGFkZGluZ1wiIHJvbGU9XCJtZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwidXNlci1pbmZvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtcmVsYXRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ1c2VySWNvbjsgY29udGV4dDogeyAkaW1wbGljaXQ6IHtyaWdodDogNjJ9IH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtd2hpdGUtdGV4dCBhcHAtbWFyZ2luLXRvcC0xMCBhcHAtbWFyZ2luLWJvdHRvbS0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVidWdJbmZvc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiICpuZ0lmPVwibGMuTG9jYWxlID09ICdlbi1VUydcIiAoY2xpY2spPVwibGMuY2hhbmdlTG9jYWxlKCdpdC1JVCcpXCI+PGkgY2xhc3M9XCJmYSBmYS1nbG9iZVwiPiZuYnNwOzwvaT5Td2l0Y2ggdG8gSXRhbGlhbiBTaXRlPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiICpuZ0lmPVwibGMuTG9jYWxlID09ICdpdC1JVCdcIiAoY2xpY2spPVwibGMuY2hhbmdlTG9jYWxlKCdlbi1VUycpXCI+PGkgY2xhc3M9XCJmYSBmYS1nbG9iZVwiPiZuYnNwOzwvaT5QYXNzYSBhbCBTaXRvIGluIEluZ2xlc2U8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImNoYW5nZU1vZHVsZSgpXCI+PGkgY2xhc3M9XCJmYSBmYS10aFwiPiZuYnNwOzwvaT57eydDYW1iaWEgTW9kdWxvJyB8IGxvY2FsaXplIDogbGN9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwiY2hhbmdlVGVuYW50KClcIj48aSBjbGFzcz1cImZhIGZhLWJ1aWxkaW5nXCI+Jm5ic3A7PC9pPnt7J0NhbWJpYSBUZW5hbnQnIHwgbG9jYWxpemUgOiBsY319PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiIChjbGljayk9XCJjbGVhclVzZXJQcmVmZXJlbmNlcygpXCI+PGkgY2xhc3M9XCJmYSBmYS11c2VyLXRpbWVzXCI+Jm5ic3A7PC9pPnt7J1JpcHVsaXNjaSBsZSBQcmVmZXJlbnplIFV0ZW50ZScgfCBsb2NhbGl6ZSA6IGxjfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImNsZWFyQWxsKClcIj48aSBjbGFzcz1cImZhIGZhLXJlY3ljbGUgXCI+Jm5ic3A7PC9pPnt7J1JpcHVsaXNjaSBsYSBDYWNoZScgfCBsb2NhbGl6ZSA6IGxjfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwibG9nb3V0KClcIj48aSBjbGFzcz1cImZhIGZhLXBvd2VyLW9mZlwiPiZuYnNwOzwvaT5Mb2cgb3V0PC9hPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC91bD5cclxuICAgIDwvdWw+XHJcbjwvbmF2PlxyXG5cclxuPCEtLSBUZW1wbGF0ZSBwZXIgbCdpY29uYSBkZWxsJ3V0ZW50ZSAtLT5cclxuPG5nLXRlbXBsYXRlICN1c2VySWNvbiBsZXQtY29udGV4dD5cclxuICAgIDxpbWcgc3JjPScuLi9hc3NldHMvaW1nL3VzZXJzL3VzZXIuanBnJyBhbHQ9XCJ1c2VyLWltZ1wiIGNsYXNzPVwiaW1nLWNpcmNsZSB1c2VyLWltZ1wiPlxyXG4gICAgPGltZyBzcmM9Jy4uL2Fzc2V0cy9pbWcvZXZlbnRzL2NocmlzdG1hcy5wbmcnIGFsdD1cInVzZXItaW1nXCIgY2xhc3M9XCJpbWctY2lyY2xlIHVzZXItaW1nIGFwcC1hYnNvbHV0ZSBhcHAtcmlnaHQtMFwiIFtzdHlsZS5yaWdodC5weF09XCJjb250ZXh0Py5yaWdodCB8fCB1bmRlZmluZWRcIiAqbmdJZj1cIl9zdGF0ZS5jaHJpc3RtYXNUaW1lXCI+XHJcbiAgICA8aW1nIHNyYz0nLi4vYXNzZXRzL2ltZy9ldmVudHMvaGFsbG93ZWVuLnBuZycgYWx0PVwidXNlci1pbWdcIiBjbGFzcz1cImltZy1jaXJjbGUgdXNlci1pbWcgYXBwLWFic29sdXRlIGFwcC1yaWdodC0wXCIgW3N0eWxlLnJpZ2h0LnB4XT1cImNvbnRleHQ/LnJpZ2h0IHx8IHVuZGVmaW5lZFwiICpuZ0lmPVwiX3N0YXRlLmhhbGxvd2VlblRpbWVcIj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gVGVtcGxhdGUgcGVyIGxlIGluZm9ybWFpem9uaSBkaSBkZWJ1ZzogQW1iaWVudGUsIHJ1b2xpLCBwZXJtZXNzaSBlY2MgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGVidWdJbmZvcz5cclxuICAgIDxkaXY+e3tDdXJyZW50SWRlbnRpdHk/LkZ1bGxOYW1lfX0gLSAoe3tDdXJyZW50SWRlbnRpdHk/LlRlbmFudE5hbWV9fSk8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXNtLWNlbnRlclwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBsaWNhdGlvbkVudmlyb25tZW50ID09IDJcIj57eydBbWJpZW50ZSBkaSBTdmlsdXBwbycgfCBsb2NhbGl6ZSA6IGxjfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwbGljYXRpb25FbnZpcm9ubWVudCA9PSA1XCI+e3snQW1iaWVudGUgZGkgU3RhZ2luZycgfCBsb2NhbGl6ZSA6IGxjfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwbGljYXRpb25FbnZpcm9ubWVudCA9PSA2XCI+e3snQW1iaWVudGUgZGkgU3RhZ2luZyBBJyB8IGxvY2FsaXplIDogbGN9fTwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBsaWNhdGlvbkVudmlyb25tZW50ID09IDFcIj57eydBbWJpZW50ZSBkaSBQcm9kdXppb25lJyB8IGxvY2FsaXplIDogbGN9fTwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IFtoaWRkZW5dPVwidHJ1ZVwiPlxyXG4gICAgICAgIDxkaXY+UGVybWlzc2lvbnM6PC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcCBvZiBDdXJyZW50SWRlbnRpdHkuUGVybWlzc2lvbnNcIj57e3B9fTwvZGl2PlxyXG4gICAgICAgIDxkaXY+Um9sZXM6PC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgciBvZiBDdXJyZW50SWRlbnRpdHkuUm9sZXNcIj57e3J9fTwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIE92ZXJsYXkgcGVyIGxhIHJpY2VyY2EgZ2xvYmFsZSAtLT5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlYXJjaGluZ1Rlcm0gfHwgc2VhcmNoUmVzdWx0XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXBwLWFic29sdXRlIGFwcC1zZWFyY2gtYmFja2dyb3VuZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2VhcmNoLXJlc3VsdC1ib3hcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlYXJjaGluZ1Rlcm1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2VhcmNoLWNhcmRcIj48aSBjbGFzcz1cImZhIGZhLXNwaW5uZXIgZmEtc3BpblwiPjwvaT5TdG8gZWZmZXR0dWFuZG8gbGEgcmljZXJjYS4uLjwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlYXJjaFJlc3VsdCAmJiAhc2VhcmNoaW5nVGVybVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3BhemlvIGEgc2luaXN0cmEgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBCbG9jY28gY29uIGxlIGNhdGVnb3JpZSBkZWkgcmlzdWx0YXRpIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNlYXJjaC1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXJlbGF0aXZlXCI+PGEgY2xhc3M9XCJmYSBmYS10aW1lcyB0ZXh0LWRhbmdlciBhcHAtYWJzb2x1dGUgYXBwLXJpZ2h0LTAgYXBwLWZzLTIwIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImNsb3NlU2VhcmNoKCk7XCI+PC9hPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PkNhdGVnb3JpZSBkaSBSaWNlcmNhPC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtcG9pbnRlciBhcHAtbGlua1wiIFtjbGFzcy5hcHAtYm9sZF09XCIhU2VsZWN0ZWRSZXN1bHQgJiYgIVNob3dTaW5nbGVUYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJGaWx0ZXJTZWFyY2hSZXN1bHRzKClcIj57e1NlbGVjdGVkUmVzdWx0ID8gJy0nIDogJz4nfX0gTW9zdHJhIFR1dHRvPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlYXJjaFJlc3VsdC5yZXN1bHRzXCIgY2xhc3M9XCJhcHAtcG9pbnRlciBhcHAtbGlua1wiIFtjbGFzcy5hcHAtYm9sZF09XCJTZWxlY3RlZFJlc3VsdD8uZGVzY3JpcHRpb24gPT0gaXRlbS5kZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJGaWx0ZXJTZWFyY2hSZXN1bHRzKGl0ZW0pXCI+e3tTZWxlY3RlZFJlc3VsdD8uZGVzY3JpcHRpb24gPT0gaXRlbS5kZXNjcmlwdGlvbiA/ICc+JyA6ICctJ319IE1vc3RyYSB7e2l0ZW0uZGVzY3JpcHRpb259fSAoe3tpdGVtLml0ZW1zPy5sZW5ndGh9fSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBEZXR0YWdsaW8gcmlzdWx0YXRpIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiIHN0eWxlPVwib3ZlcmZsb3c6IGF1dG87IGhlaWdodDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFTZWxlY3RlZFJlc3VsdCAmJiAhU2hvd1NpbmdsZVRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByZXMgb2Ygc2VhcmNoUmVzdWx0LnJlc3VsdHM7IGxldCBpID0gaW5kZXg7XCIgY2xhc3M9XCJhcHAtc2VhcmNoLWNhcmRcIiBbc3R5bGUubWFyZ2luLWJvdHRvbS5weF09XCJpID09IChzZWFyY2hSZXN1bHQucmVzdWx0cz8ubGVuZ3RoIC0gMSkgPyAyIDogMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+e3tyZXMuZGVzY3JpcHRpb259fTwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVzLXRhYmxlIFsobmdNb2RlbCldPVwicmVzLml0ZW1zXCIgW0R5bmFtaWNSb3dDb2x1bW5zRGVmaW5pdGlvbl09XCJyZXMuZXN0X2NvbHNcIiBbQXJyYXltb2RlSXRlbXNQZXJQYWdlXT1cIjEwXCI+PC9lcy10YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlNlbGVjdGVkUmVzdWx0ICYmIFNob3dTaW5nbGVUYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1zZWFyY2gtY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND57e1NlbGVjdGVkUmVzdWx0LmRlc2NyaXB0aW9ufX08L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcy10YWJsZSBbKG5nTW9kZWwpXT1cIlNlbGVjdGVkUmVzdWx0Lml0ZW1zXCIgW0R5bmFtaWNSb3dDb2x1bW5zRGVmaW5pdGlvbl09XCJTZWxlY3RlZFJlc3VsdC5lc3RfY29sc1wiIFtBcnJheW1vZGVJdGVtc1BlclBhZ2VdPVwiMTBcIj48L2VzLXRhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3BhemlvIGEgZGVzdHJhIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPiJdfQ==
|