@esfaenza/core 15.2.41 → 15.2.42-beta2
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/assets/fontawesome/css/all.css +27093 -0
- package/assets/fontawesome/css/all.min.css +9 -0
- package/assets/fontawesome/css/brands.css +1522 -0
- package/assets/fontawesome/css/brands.min.css +6 -0
- package/assets/fontawesome/css/duotone.css +12491 -0
- package/assets/fontawesome/css/duotone.min.css +6 -0
- package/assets/fontawesome/css/fontawesome.css +12984 -0
- package/assets/fontawesome/css/fontawesome.min.css +9 -0
- package/assets/fontawesome/css/light.css +19 -0
- package/assets/fontawesome/css/light.min.css +6 -0
- package/assets/fontawesome/css/regular.css +19 -0
- package/assets/fontawesome/css/regular.min.css +6 -0
- package/assets/fontawesome/css/sharp-regular.css +19 -0
- package/assets/fontawesome/css/sharp-regular.min.css +6 -0
- package/assets/fontawesome/css/sharp-solid.css +19 -0
- package/assets/fontawesome/css/sharp-solid.min.css +6 -0
- package/assets/fontawesome/css/solid.css +19 -0
- package/assets/fontawesome/css/solid.min.css +6 -0
- package/assets/fontawesome/css/svg-with-js.css +638 -0
- package/assets/fontawesome/css/svg-with-js.min.css +6 -0
- package/assets/fontawesome/css/thin.css +19 -0
- package/assets/fontawesome/css/thin.min.css +6 -0
- package/assets/fontawesome/css/v4-font-face.css +26 -0
- package/assets/fontawesome/css/v4-font-face.min.css +6 -0
- package/assets/fontawesome/css/v4-shims.css +2194 -0
- package/assets/fontawesome/css/v4-shims.min.css +6 -0
- package/assets/fontawesome/css/v5-font-face.css +34 -0
- package/assets/fontawesome/css/v5-font-face.min.css +6 -0
- package/assets/fontawesome/webfonts/fa-brands-400.ttf +0 -0
- package/assets/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
- package/assets/fontawesome/webfonts/fa-duotone-900.ttf +0 -0
- package/assets/fontawesome/webfonts/fa-duotone-900.woff2 +0 -0
- package/assets/fontawesome/webfonts/fa-light-300.ttf +0 -0
- package/assets/fontawesome/webfonts/fa-light-300.woff2 +0 -0
- package/assets/fontawesome/webfonts/fa-regular-400.ttf +0 -0
- package/assets/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
- package/assets/fontawesome/webfonts/fa-sharp-regular-400.ttf +0 -0
- package/assets/fontawesome/webfonts/fa-sharp-regular-400.woff2 +0 -0
- package/assets/fontawesome/webfonts/fa-sharp-solid-900.ttf +0 -0
- package/assets/fontawesome/webfonts/fa-sharp-solid-900.woff2 +0 -0
- package/assets/fontawesome/webfonts/fa-solid-900.ttf +0 -0
- package/assets/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
- package/assets/fontawesome/webfonts/fa-thin-100.ttf +0 -0
- package/assets/fontawesome/webfonts/fa-thin-100.woff2 +0 -0
- package/assets/fontawesome/webfonts/fa-v4compatibility.ttf +0 -0
- package/assets/fontawesome/webfonts/fa-v4compatibility.woff2 +0 -0
- package/components/components.module.d.ts +22 -16
- package/components/page-structure/breadcrumb/breadcrumb.component.d.ts +23 -0
- package/components/{navbar → page-structure/navbar}/navbar.component.d.ts +6 -16
- package/components/{sidebar → page-structure/sidebar}/sidebar.component.d.ts +32 -5
- package/components/public-api.d.ts +20 -15
- package/components/search/es-filters/es-filters.component.d.ts +27 -0
- package/components/search/es-filters/es-filters.service.d.ts +6 -0
- package/components/search/filters-sidebar/filters-sidebar.component.d.ts +20 -0
- package/components/search/filters-sidebar-item/filters-sidebar-item.component.d.ts +16 -0
- package/components/search/filters-sidebar-section/filters-sidebar-section.component.d.ts +9 -0
- package/components/search/filters-topbar/filters-topbar.component.d.ts +38 -0
- package/domain/models/decorators/decorators.d.ts +1 -0
- package/domain/models/jace/ActiveModuleView.d.ts +8 -8
- package/domain/models/user/ChangePasswordDto.d.ts +9 -0
- package/domain/models/user/ChangeProfilePictureDto.d.ts +4 -0
- package/domain/models/user/UpdateAccountRecoverySettingsDto.d.ts +6 -0
- package/domain/public-api.d.ts +4 -0
- package/esm2020/components/components.module.mjs +74 -20
- package/esm2020/components/page-structure/back-top/back-top.component.mjs +43 -0
- package/esm2020/components/page-structure/base/base.component.mjs +55 -0
- package/esm2020/components/page-structure/base/reactive.component.mjs +26 -0
- package/esm2020/components/page-structure/breadcrumb/breadcrumb.component.mjs +70 -0
- package/esm2020/components/page-structure/error/404/pagenotfound.component.mjs +30 -0
- package/esm2020/components/page-structure/error/500/servererror.component.mjs +39 -0
- package/esm2020/components/page-structure/error/Angular/angularerror.component.mjs +55 -0
- package/esm2020/components/page-structure/external-page/external_pages.component.mjs +47 -0
- package/esm2020/components/{jace-login → page-structure/jace-login}/jace-login.component.mjs +1 -1
- package/esm2020/components/page-structure/jace-resource/jace-resource.component.mjs +65 -0
- package/esm2020/components/page-structure/navbar/modules-board/jace-modules-board.component.mjs +40 -0
- package/esm2020/components/page-structure/navbar/navbar.component.loc.mjs +36 -0
- package/esm2020/components/page-structure/navbar/navbar.component.mjs +161 -0
- package/esm2020/components/page-structure/page/pages.component.mjs +60 -0
- package/esm2020/components/page-structure/redirecter/redirecter.component.mjs +53 -0
- package/esm2020/components/page-structure/sidebar/sidebar.component.mjs +302 -0
- package/esm2020/components/public-api.mjs +21 -16
- package/esm2020/components/search/es-filters/es-filters.component.mjs +56 -0
- package/esm2020/components/search/es-filters/es-filters.service.mjs +19 -0
- package/esm2020/components/search/filters-sidebar/filters-sidebar.component.mjs +65 -0
- package/esm2020/components/search/filters-sidebar-item/filters-sidebar-item.component.mjs +39 -0
- package/esm2020/components/search/filters-sidebar-section/filters-sidebar-section.component.mjs +22 -0
- package/esm2020/components/search/filters-topbar/filters-topbar.component.mjs +94 -0
- package/esm2020/domain/models/decorators/decorators.mjs +6 -0
- package/esm2020/domain/models/jace/ActiveModuleView.mjs +1 -1
- package/esm2020/domain/models/user/ChangePasswordDto.mjs +11 -0
- package/esm2020/domain/models/user/ChangeProfilePictureDto.mjs +6 -0
- package/esm2020/domain/models/user/UpdateAccountRecoverySettingsDto.mjs +8 -0
- package/esm2020/domain/public-api.mjs +5 -1
- package/esm2020/lib/app.component.mjs +3 -3
- package/esm2020/lib/core.module.mjs +1 -1
- package/esm2020/services/classes/preferences/user/app.userpreferences.base.mjs +76 -0
- package/esm2020/services/public-api.mjs +2 -1
- package/fesm2015/esfaenza-core-components.mjs +532 -161
- package/fesm2015/esfaenza-core-components.mjs.map +1 -1
- package/fesm2015/esfaenza-core-domain.mjs +32 -1
- package/fesm2015/esfaenza-core-domain.mjs.map +1 -1
- package/fesm2015/esfaenza-core-services.mjs +85 -5
- package/fesm2015/esfaenza-core-services.mjs.map +1 -1
- package/fesm2015/esfaenza-core.mjs +2 -2
- package/fesm2015/esfaenza-core.mjs.map +1 -1
- package/fesm2020/esfaenza-core-components.mjs +527 -160
- package/fesm2020/esfaenza-core-components.mjs.map +1 -1
- package/fesm2020/esfaenza-core-domain.mjs +32 -1
- package/fesm2020/esfaenza-core-domain.mjs.map +1 -1
- package/fesm2020/esfaenza-core-services.mjs +72 -5
- package/fesm2020/esfaenza-core-services.mjs.map +1 -1
- package/fesm2020/esfaenza-core.mjs +2 -2
- package/fesm2020/esfaenza-core.mjs.map +1 -1
- package/lib/core.module.d.ts +2 -1
- package/package.json +2 -2
- package/services/classes/preferences/user/app.userpreferences.base.d.ts +23 -0
- package/services/public-api.d.ts +1 -0
- package/theme/styles/_base.scss +8 -23
- package/theme/styles/_bootstrap-override.scss +36 -62
- package/theme/styles/_libs-override.scss +43 -6
- package/theme/styles/_project-override.scss +66 -0
- package/theme/styles/_variables.scss +14 -42
- package/theme/styles/skins/enuma.scss +60 -0
- package/theme/styles/skins/etnograph.scss +52 -0
- package/theme/styles/skins/jace.scss +63 -0
- package/assets/fonts/fontawesome/FontAwesome.otf +0 -0
- package/assets/fonts/fontawesome/fontawesome-webfont.eot +0 -0
- package/assets/fonts/fontawesome/fontawesome-webfont.svg +0 -2671
- package/assets/fonts/fontawesome/fontawesome-webfont.ttf +0 -0
- package/assets/fonts/fontawesome/fontawesome-webfont.woff +0 -0
- package/assets/fonts/fontawesome/fontawesome-webfont.woff2 +0 -0
- package/assets/styles/font-awesome.min.css +0 -2929
- package/components/breadcrumb/breadcrumb.component.d.ts +0 -19
- package/esm2020/components/back-top/back-top.component.mjs +0 -43
- package/esm2020/components/base/base.component.mjs +0 -55
- package/esm2020/components/base/reactive.component.mjs +0 -26
- package/esm2020/components/breadcrumb/breadcrumb.component.mjs +0 -60
- package/esm2020/components/error/404/pagenotfound.component.mjs +0 -30
- package/esm2020/components/error/500/servererror.component.mjs +0 -39
- package/esm2020/components/error/Angular/angularerror.component.mjs +0 -55
- package/esm2020/components/external-page/external_pages.component.mjs +0 -47
- package/esm2020/components/jace-resource/jace-resource.component.mjs +0 -65
- package/esm2020/components/navbar/modules-board/jace-modules-board.component.mjs +0 -40
- package/esm2020/components/navbar/navbar.component.loc.mjs +0 -36
- package/esm2020/components/navbar/navbar.component.mjs +0 -208
- package/esm2020/components/page/pages.component.mjs +0 -60
- package/esm2020/components/redirecter/redirecter.component.mjs +0 -53
- package/esm2020/components/sidebar/sidebar.component.mjs +0 -210
- package/theme/styles/skins/_blue.scss +0 -16
- /package/components/{back-top → page-structure/back-top}/back-top.component.d.ts +0 -0
- /package/components/{base → page-structure/base}/base.component.d.ts +0 -0
- /package/components/{base → page-structure/base}/reactive.component.d.ts +0 -0
- /package/components/{error → page-structure/error}/404/pagenotfound.component.d.ts +0 -0
- /package/components/{error → page-structure/error}/500/servererror.component.d.ts +0 -0
- /package/components/{error → page-structure/error}/Angular/angularerror.component.d.ts +0 -0
- /package/components/{external-page → page-structure/external-page}/external_pages.component.d.ts +0 -0
- /package/components/{jace-login → page-structure/jace-login}/jace-login.component.d.ts +0 -0
- /package/components/{jace-resource → page-structure/jace-resource}/jace-resource.component.d.ts +0 -0
- /package/components/{navbar → page-structure/navbar}/modules-board/jace-modules-board.component.d.ts +0 -0
- /package/components/{navbar → page-structure/navbar}/navbar.component.loc.d.ts +0 -0
- /package/components/{page → page-structure/page}/pages.component.d.ts +0 -0
- /package/components/{redirecter → page-structure/redirecter}/redirecter.component.d.ts +0 -0
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
// Angular
|
|
2
|
-
import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
|
|
3
|
-
import { NgIf, NgFor } from "@angular/common";
|
|
4
|
-
// Applicazione
|
|
5
|
-
import { CategoriesWithModules } from "@esfaenza/core/domain";
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@esfaenza/core/services";
|
|
8
|
-
export class JaceModulesBoardComponent {
|
|
9
|
-
constructor(bts) {
|
|
10
|
-
this.bts = bts;
|
|
11
|
-
this.Categories = [];
|
|
12
|
-
this.Tenant = this.bts.getJaceIdentity().Idtenant;
|
|
13
|
-
}
|
|
14
|
-
ngOnInit() {
|
|
15
|
-
if (!this.Modules)
|
|
16
|
-
return;
|
|
17
|
-
this.Modules.forEach(m => {
|
|
18
|
-
//Fixo href
|
|
19
|
-
m.href = m.uiurl?.replace("{tenant}", this.Tenant);
|
|
20
|
-
//Aggiungo il modulo alla categoria giusta. In ogni "fila" di moduli non ce ne possono essere pi� di 6
|
|
21
|
-
var prev = this.Categories.find(c => c.category.toUpperCase() == m.category.toUpperCase());
|
|
22
|
-
var lastRow = prev?.module_rows[prev.module_rows.length - 1];
|
|
23
|
-
if (prev && lastRow.length < 6)
|
|
24
|
-
lastRow.push(m);
|
|
25
|
-
else if (prev && lastRow.length == 6)
|
|
26
|
-
prev.module_rows.push([m]);
|
|
27
|
-
else
|
|
28
|
-
this.Categories.push(new CategoriesWithModules(m));
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
JaceModulesBoardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: JaceModulesBoardComponent, deps: [{ token: i1.TokenService }], target: i0.ɵɵFactoryTarget.Component });
|
|
33
|
-
JaceModulesBoardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: JaceModulesBoardComponent, isStandalone: true, selector: "jace-modules-board", inputs: { Modules: "Modules" }, ngImport: i0, template: "<div *ngIf=\"Categories\">\r\n <div *ngFor=\"let cat of Categories\">\r\n <div class=\"row\">\r\n <div class=\"section-title app-padding-left-0 app-padding-top-0\">\r\n {{cat.category}}\r\n </div>\r\n </div>\r\n <div *ngFor=\"let modRow of cat.module_rows\" class=\"row app-padding-left-10 app-padding-right-15\">\r\n <div class=\"module\" [class.module-available]=\"module.href\" [class.module-unavailable]=\"!module.href\" *ngFor=\"let module of modRow\">\r\n <a [href]=\"module.href\">\r\n <div class=\"module-name\"><span>{{module.name}}</span></div>\r\n <div class=\"module-footer\">\r\n <span class=\"fa-stack\"><i class=\"fa fa-circle-thin fa-stack-2x\"></i><i class=\"fa fa-chevron-right fa-stack-1x\"></i></span>\r\n </div>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".module{padding:.4em .4em .4em .7em;height:6em;width:11.5em;background:#3d3d3d;border:1px solid #383737;border-radius:5px;text-align:center;color:#f7ca26;border-top:3px solid transparent;border-bottom:3px solid transparent;margin-left:5px;margin-bottom:5px}.module-name{color:#fcf9cf;font-family:Passion One,cursive;font-size:18px;text-transform:uppercase;text-align:left;height:65%;white-space:pre-line}.module-footer{height:25%;text-align:right;color:#f7ca26}.module-available{cursor:pointer}.module-available:hover{border-top:3px solid #8e9aaf;border-bottom:3px solid #8e9aaf;background-color:#242d3a;box-shadow:3px 3px 2px #151515}.module-available:hover .module-name{color:#fff}.module-available:hover .module-footer{color:#f7ca26}.module-unavailable,.module-unavailable .module-name,.module-unavailable .module-footer{cursor:not-allowed}.module-unavailable .module-name,.module-unavailable .module-footer{color:#7d7d7d!important}.section-title{margin-left:15px;margin-right:15px;text-align:left;color:#f7ca26;padding:.4em .4em .4em .7em;border-radius:5px;font-family:Passion One,cursive;font-size:20px;text-transform:uppercase}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
34
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: JaceModulesBoardComponent, decorators: [{
|
|
35
|
-
type: Component,
|
|
36
|
-
args: [{ selector: "jace-modules-board", changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, NgFor], template: "<div *ngIf=\"Categories\">\r\n <div *ngFor=\"let cat of Categories\">\r\n <div class=\"row\">\r\n <div class=\"section-title app-padding-left-0 app-padding-top-0\">\r\n {{cat.category}}\r\n </div>\r\n </div>\r\n <div *ngFor=\"let modRow of cat.module_rows\" class=\"row app-padding-left-10 app-padding-right-15\">\r\n <div class=\"module\" [class.module-available]=\"module.href\" [class.module-unavailable]=\"!module.href\" *ngFor=\"let module of modRow\">\r\n <a [href]=\"module.href\">\r\n <div class=\"module-name\"><span>{{module.name}}</span></div>\r\n <div class=\"module-footer\">\r\n <span class=\"fa-stack\"><i class=\"fa fa-circle-thin fa-stack-2x\"></i><i class=\"fa fa-chevron-right fa-stack-1x\"></i></span>\r\n </div>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".module{padding:.4em .4em .4em .7em;height:6em;width:11.5em;background:#3d3d3d;border:1px solid #383737;border-radius:5px;text-align:center;color:#f7ca26;border-top:3px solid transparent;border-bottom:3px solid transparent;margin-left:5px;margin-bottom:5px}.module-name{color:#fcf9cf;font-family:Passion One,cursive;font-size:18px;text-transform:uppercase;text-align:left;height:65%;white-space:pre-line}.module-footer{height:25%;text-align:right;color:#f7ca26}.module-available{cursor:pointer}.module-available:hover{border-top:3px solid #8e9aaf;border-bottom:3px solid #8e9aaf;background-color:#242d3a;box-shadow:3px 3px 2px #151515}.module-available:hover .module-name{color:#fff}.module-available:hover .module-footer{color:#f7ca26}.module-unavailable,.module-unavailable .module-name,.module-unavailable .module-footer{cursor:not-allowed}.module-unavailable .module-name,.module-unavailable .module-footer{color:#7d7d7d!important}.section-title{margin-left:15px;margin-right:15px;text-align:left;color:#f7ca26;padding:.4em .4em .4em .7em;border-radius:5px;font-family:Passion One,cursive;font-size:20px;text-transform:uppercase}\n"] }]
|
|
37
|
-
}], ctorParameters: function () { return [{ type: i1.TokenService }]; }, propDecorators: { Modules: [{
|
|
38
|
-
type: Input
|
|
39
|
-
}] } });
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamFjZS1tb2R1bGVzLWJvYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zcmMvbmF2YmFyL21vZHVsZXMtYm9hcmQvamFjZS1tb2R1bGVzLWJvYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zcmMvbmF2YmFyL21vZHVsZXMtYm9hcmQvamFjZS1tb2R1bGVzLWJvYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVU7QUFDVixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBSzlDLGVBQWU7QUFDZixPQUFPLEVBQW9CLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7OztBQVVoRixNQUFNLE9BQU8seUJBQXlCO0lBT2xDLFlBQW9CLEdBQWlCO1FBQWpCLFFBQUcsR0FBSCxHQUFHLENBQWM7UUFIOUIsZUFBVSxHQUE0QixFQUFFLENBQUM7UUFJNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUN0RCxDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTztZQUNaLE9BQU87UUFFWCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNyQixXQUFXO1lBQ1gsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBRWxELHNHQUFzRztZQUN0RyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQzNGLElBQUksT0FBTyxHQUFHLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFN0QsSUFBSSxJQUFJLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUMxQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNmLElBQUksSUFBSSxJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQztnQkFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztnQkFFM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQzFELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7c0hBOUJRLHlCQUF5QjswR0FBekIseUJBQXlCLDhHQ2xCdEMsNjlCQWtCTSx5cUNERlEsSUFBSSw2RkFBRSxLQUFLOzJGQUVaLHlCQUF5QjtrQkFSckMsU0FBUzsrQkFDSSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO21HQUliLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBOZ0lmLCBOZ0ZvciB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcclxuXHJcbi8vIENvbmZpZ3VyYXppb25pXHJcbmltcG9ydCB7IFRva2VuU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9zZXJ2aWNlc1wiO1xyXG5cclxuLy8gQXBwbGljYXppb25lXHJcbmltcG9ydCB7IEFjdGl2ZU1vZHVsZVZpZXcsIENhdGVnb3JpZXNXaXRoTW9kdWxlcyB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kb21haW5cIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwiamFjZS1tb2R1bGVzLWJvYXJkXCIsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCJqYWNlLW1vZHVsZXMtYm9hcmQuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHN0eWxlVXJsczogW1wiamFjZS1tb2R1bGVzLWJvYXJkLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW05nSWYsIE5nRm9yXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSmFjZU1vZHVsZXNCb2FyZENvbXBvbmVudCB7XHJcblxyXG4gICAgQElucHV0KCkgTW9kdWxlcyA6IEFjdGl2ZU1vZHVsZVZpZXdbXTtcclxuICAgIFxyXG4gICAgcHVibGljIENhdGVnb3JpZXM6IENhdGVnb3JpZXNXaXRoTW9kdWxlc1tdID0gW107XHJcbiAgICBwcml2YXRlIFRlbmFudDogc3RyaW5nO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgYnRzOiBUb2tlblNlcnZpY2UpIHsgXHJcbiAgICAgICAgdGhpcy5UZW5hbnQgPSB0aGlzLmJ0cy5nZXRKYWNlSWRlbnRpdHkoKS5JZHRlbmFudDtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBpZighdGhpcy5Nb2R1bGVzKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuTW9kdWxlcy5mb3JFYWNoKG0gPT4ge1xyXG4gICAgICAgICAgICAvL0ZpeG8gaHJlZlxyXG4gICAgICAgICAgICBtLmhyZWYgPSBtLnVpdXJsPy5yZXBsYWNlKFwie3RlbmFudH1cIiwgdGhpcy5UZW5hbnQpXHJcblxyXG4gICAgICAgICAgICAvL0FnZ2l1bmdvIGlsIG1vZHVsbyBhbGxhIGNhdGVnb3JpYSBnaXVzdGEuIEluIG9nbmkgXCJmaWxhXCIgZGkgbW9kdWxpIG5vbiBjZSBuZSBwb3Nzb25vIGVzc2VyZSBwae+/vSBkaSA2XHJcbiAgICAgICAgICAgIHZhciBwcmV2ID0gdGhpcy5DYXRlZ29yaWVzLmZpbmQoYyA9PiBjLmNhdGVnb3J5LnRvVXBwZXJDYXNlKCkgPT0gbS5jYXRlZ29yeS50b1VwcGVyQ2FzZSgpKTtcclxuICAgICAgICAgICAgdmFyIGxhc3RSb3cgPSBwcmV2Py5tb2R1bGVfcm93c1twcmV2Lm1vZHVsZV9yb3dzLmxlbmd0aCAtIDFdO1xyXG5cclxuICAgICAgICAgICAgaWYgKHByZXYgJiYgbGFzdFJvdy5sZW5ndGggPCA2KVxyXG4gICAgICAgICAgICAgICAgbGFzdFJvdy5wdXNoKG0pO1xyXG4gICAgICAgICAgICBlbHNlIGlmIChwcmV2ICYmIGxhc3RSb3cubGVuZ3RoID09IDYpXHJcbiAgICAgICAgICAgICAgICBwcmV2Lm1vZHVsZV9yb3dzLnB1c2goW21dKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5DYXRlZ29yaWVzLnB1c2gobmV3IENhdGVnb3JpZXNXaXRoTW9kdWxlcyhtKSlcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSIsIjxkaXYgKm5nSWY9XCJDYXRlZ29yaWVzXCI+XHJcbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBjYXQgb2YgQ2F0ZWdvcmllc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24tdGl0bGUgYXBwLXBhZGRpbmctbGVmdC0wIGFwcC1wYWRkaW5nLXRvcC0wXCI+XHJcbiAgICAgICAgICAgICAgICB7e2NhdC5jYXRlZ29yeX19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG1vZFJvdyBvZiBjYXQubW9kdWxlX3Jvd3NcIiBjbGFzcz1cInJvdyBhcHAtcGFkZGluZy1sZWZ0LTEwIGFwcC1wYWRkaW5nLXJpZ2h0LTE1XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2R1bGVcIiBbY2xhc3MubW9kdWxlLWF2YWlsYWJsZV09XCJtb2R1bGUuaHJlZlwiIFtjbGFzcy5tb2R1bGUtdW5hdmFpbGFibGVdPVwiIW1vZHVsZS5ocmVmXCIgKm5nRm9yPVwibGV0IG1vZHVsZSBvZiBtb2RSb3dcIj5cclxuICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cIm1vZHVsZS5ocmVmXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZHVsZS1uYW1lXCI+PHNwYW4+e3ttb2R1bGUubmFtZX19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2R1bGUtZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEtc3RhY2tcIj48aSBjbGFzcz1cImZhIGZhLWNpcmNsZS10aGluIGZhLXN0YWNrLTJ4XCI+PC9pPjxpIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1yaWdodCBmYS1zdGFjay0xeFwiPjwvaT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Injectable } from "@angular/core";
|
|
2
|
-
import { LocalizationService } from "@esfaenza/localizations";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class NavBarLoc extends LocalizationService {
|
|
5
|
-
constructor(injector) {
|
|
6
|
-
super(injector);
|
|
7
|
-
super.set("it->en", "Sessione Scaduta", ["Expired session"]);
|
|
8
|
-
super.set("it->en", "Backend Offline", ["Backend Offline"]);
|
|
9
|
-
super.set("it->en", "Sembra che il Backend sia momentaneamente offline. Questa pagina si aggiornera' automaticamente non appena la situazione tornera' alla normalita'. Ci scusiamo per il disagio", ["Backend seems to be currently offline. This page will reset itself when the situation goes back to normal. Sorry for the inconvenience"]);
|
|
10
|
-
super.set("it->en", "Ripulisci la Cache", ["Clear Caches"]);
|
|
11
|
-
super.set("it->en", "Cache Ripulita", ["Cache Cleared"]);
|
|
12
|
-
super.set("it->en", "Ambiente di Produzione", ["Production Environment"]);
|
|
13
|
-
super.set("it->en", "È disponibile una nuova versione per l'applicazione corrente. Si suggerisce di ricaricare la pagina (CTRL + F5)", ["A new version is available for this application. It is suggested to reload this page (CTRL + F5)"]);
|
|
14
|
-
super.set("it->en", "Le informazioni di Sessione (Tenant/Account) sono cambiate a seguito di un login su modulo diverso utilizzando diverso Tenant/Utente sullo stesso browser. Si suggerisce di ricaricare la pagina (CTRL + F5)", ["Session informations (Tenant/Account) has changed after a login to a different module with the same Tenant/Username using the same browser. It is suggested to reload this page (CTRL + F5)"]);
|
|
15
|
-
super.set("it->en", "Cambia Modulo", ["Change module"]);
|
|
16
|
-
super.set("it->en", "Cambia Tenant", ["Change tenant"]);
|
|
17
|
-
super.set("it->en", "Usa notifiche semplici", ["Use simple alerts"]);
|
|
18
|
-
super.set("it->en", "Consenti notifiche eleganti", ["Allow fancy alerts"]);
|
|
19
|
-
super.set("it->en", "Ambiente di Sviluppo", ["Development Environment"]);
|
|
20
|
-
super.set("it->en", "Ripulisci le Preferenze Utente", ["Clear User Preferences"]);
|
|
21
|
-
super.set("it->en", "Preferenze utente ripulite", ["User preferences has been cleared"]);
|
|
22
|
-
super.set("it->en", "Ambiente di Staging", ["Staging Environment"]);
|
|
23
|
-
super.set("it->en", "Ambiente di Staging A", ["Staging A Environment"]);
|
|
24
|
-
super.set("it->en", "L'attuale sessione di lavoro non è più valida.<br>Si prega di eseguire nuovamente il login.", ["Current session has expired.<br>Please login back into the application."]);
|
|
25
|
-
super.set("it->en", "Notifiche", ["Notifications"]);
|
|
26
|
-
super.set("it->en", "Job Applicativi", ["Application Jobs"]);
|
|
27
|
-
super.set("it->en", "Al momento non c'è nulla in esecuzione", ["Nothing being executed at the moment"]);
|
|
28
|
-
super.set("it->en", "Job Completato", ["Job Completed"]);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
NavBarLoc.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NavBarLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
32
|
-
NavBarLoc.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NavBarLoc });
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NavBarLoc, decorators: [{
|
|
34
|
-
type: Injectable
|
|
35
|
-
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLmNvbXBvbmVudC5sb2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL25hdmJhci9uYXZiYXIuY29tcG9uZW50LmxvYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUc5RCxNQUFNLE9BQU8sU0FBVSxTQUFRLG1CQUFtQjtJQUM5QyxZQUFZLFFBQWtCO1FBQzFCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQixLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUM3RCxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUM1RCxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSwrS0FBK0ssRUFBRSxDQUFDLHdJQUF3SSxDQUFDLENBQUMsQ0FBQztRQUNqVixLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDNUQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQ3pELEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLHdCQUF3QixFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO1FBQzFFLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGlIQUFpSCxFQUFFLENBQUMsa0dBQWtHLENBQUMsQ0FBQyxDQUFBO1FBQzVPLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLDhNQUE4TSxFQUFFLENBQUMsNkxBQTZMLENBQUMsQ0FBQyxDQUFDO1FBQ3JhLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGVBQWUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFDeEQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUN4RCxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUNyRSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSw2QkFBNkIsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztRQUMzRSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQztRQUN6RSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxnQ0FBZ0MsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQztRQUNsRixLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSw0QkFBNEIsRUFBRSxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQztRQUN6RixLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQztRQUNwRSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSx1QkFBdUIsRUFBRSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztRQUN4RSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSw2RkFBNkYsRUFBRSxDQUFDLHlFQUF5RSxDQUFDLENBQUMsQ0FBQztRQUNoTSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQ3BELEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1FBQzdELEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLHdDQUF3QyxFQUFFLENBQUMsc0NBQXNDLENBQUMsQ0FBQyxDQUFDO1FBQ3hHLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGdCQUFnQixFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDOztzR0F6QlEsU0FBUzswR0FBVCxTQUFTOzJGQUFULFNBQVM7a0JBRHJCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE5hdkJhckxvYyBleHRlbmRzIExvY2FsaXphdGlvblNlcnZpY2Uge1xyXG4gICAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIlNlc3Npb25lIFNjYWR1dGFcIiwgW1wiRXhwaXJlZCBzZXNzaW9uXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJCYWNrZW5kIE9mZmxpbmVcIiwgW1wiQmFja2VuZCBPZmZsaW5lXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJTZW1icmEgY2hlIGlsIEJhY2tlbmQgc2lhIG1vbWVudGFuZWFtZW50ZSBvZmZsaW5lLiBRdWVzdGEgcGFnaW5hIHNpIGFnZ2lvcm5lcmEnIGF1dG9tYXRpY2FtZW50ZSBub24gYXBwZW5hIGxhIHNpdHVhemlvbmUgdG9ybmVyYScgYWxsYSBub3JtYWxpdGEnLiBDaSBzY3VzaWFtbyBwZXIgaWwgZGlzYWdpb1wiLCBbXCJCYWNrZW5kIHNlZW1zIHRvIGJlIGN1cnJlbnRseSBvZmZsaW5lLiBUaGlzIHBhZ2Ugd2lsbCByZXNldCBpdHNlbGYgd2hlbiB0aGUgc2l0dWF0aW9uIGdvZXMgYmFjayB0byBub3JtYWwuIFNvcnJ5IGZvciB0aGUgaW5jb252ZW5pZW5jZVwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiUmlwdWxpc2NpIGxhIENhY2hlXCIsIFtcIkNsZWFyIENhY2hlc1wiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiQ2FjaGUgUmlwdWxpdGFcIiwgW1wiQ2FjaGUgQ2xlYXJlZFwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiQW1iaWVudGUgZGkgUHJvZHV6aW9uZVwiLCBbXCJQcm9kdWN0aW9uIEVudmlyb25tZW50XCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCLDiCBkaXNwb25pYmlsZSB1bmEgbnVvdmEgdmVyc2lvbmUgcGVyIGwnYXBwbGljYXppb25lIGNvcnJlbnRlLiBTaSBzdWdnZXJpc2NlIGRpIHJpY2FyaWNhcmUgbGEgcGFnaW5hIChDVFJMICsgRjUpXCIsIFtcIkEgbmV3IHZlcnNpb24gaXMgYXZhaWxhYmxlIGZvciB0aGlzIGFwcGxpY2F0aW9uLiBJdCBpcyBzdWdnZXN0ZWQgdG8gcmVsb2FkIHRoaXMgcGFnZSAoQ1RSTCArIEY1KVwiXSlcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJMZSBpbmZvcm1hemlvbmkgZGkgU2Vzc2lvbmUgKFRlbmFudC9BY2NvdW50KSBzb25vIGNhbWJpYXRlIGEgc2VndWl0byBkaSB1biBsb2dpbiBzdSBtb2R1bG8gZGl2ZXJzbyB1dGlsaXp6YW5kbyBkaXZlcnNvIFRlbmFudC9VdGVudGUgc3VsbG8gc3Rlc3NvIGJyb3dzZXIuIFNpIHN1Z2dlcmlzY2UgZGkgcmljYXJpY2FyZSBsYSBwYWdpbmEgKENUUkwgKyBGNSlcIiwgW1wiU2Vzc2lvbiBpbmZvcm1hdGlvbnMgKFRlbmFudC9BY2NvdW50KSBoYXMgY2hhbmdlZCBhZnRlciBhIGxvZ2luIHRvIGEgZGlmZmVyZW50IG1vZHVsZSB3aXRoIHRoZSBzYW1lIFRlbmFudC9Vc2VybmFtZSB1c2luZyB0aGUgc2FtZSBicm93c2VyLiBJdCBpcyBzdWdnZXN0ZWQgdG8gcmVsb2FkIHRoaXMgcGFnZSAoQ1RSTCArIEY1KVwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiQ2FtYmlhIE1vZHVsb1wiLCBbXCJDaGFuZ2UgbW9kdWxlXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJDYW1iaWEgVGVuYW50XCIsIFtcIkNoYW5nZSB0ZW5hbnRcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIlVzYSBub3RpZmljaGUgc2VtcGxpY2lcIiwgW1wiVXNlIHNpbXBsZSBhbGVydHNcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIkNvbnNlbnRpIG5vdGlmaWNoZSBlbGVnYW50aVwiLCBbXCJBbGxvdyBmYW5jeSBhbGVydHNcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIkFtYmllbnRlIGRpIFN2aWx1cHBvXCIsIFtcIkRldmVsb3BtZW50IEVudmlyb25tZW50XCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJSaXB1bGlzY2kgbGUgUHJlZmVyZW56ZSBVdGVudGVcIiwgW1wiQ2xlYXIgVXNlciBQcmVmZXJlbmNlc1wiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiUHJlZmVyZW56ZSB1dGVudGUgcmlwdWxpdGVcIiwgW1wiVXNlciBwcmVmZXJlbmNlcyBoYXMgYmVlbiBjbGVhcmVkXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJBbWJpZW50ZSBkaSBTdGFnaW5nXCIsIFtcIlN0YWdpbmcgRW52aXJvbm1lbnRcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIkFtYmllbnRlIGRpIFN0YWdpbmcgQVwiLCBbXCJTdGFnaW5nIEEgRW52aXJvbm1lbnRcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIkwnYXR0dWFsZSBzZXNzaW9uZSBkaSBsYXZvcm8gbm9uIMOoIHBpw7kgdmFsaWRhLjxicj5TaSBwcmVnYSBkaSBlc2VndWlyZSBudW92YW1lbnRlIGlsIGxvZ2luLlwiLCBbXCJDdXJyZW50IHNlc3Npb24gaGFzIGV4cGlyZWQuPGJyPlBsZWFzZSBsb2dpbiBiYWNrIGludG8gdGhlIGFwcGxpY2F0aW9uLlwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiTm90aWZpY2hlXCIsIFtcIk5vdGlmaWNhdGlvbnNcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIkpvYiBBcHBsaWNhdGl2aVwiLCBbXCJBcHBsaWNhdGlvbiBKb2JzXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJBbCBtb21lbnRvIG5vbiBjJ8OoIG51bGxhIGluIGVzZWN1emlvbmVcIiwgW1wiTm90aGluZyBiZWluZyBleGVjdXRlZCBhdCB0aGUgbW9tZW50XCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJKb2IgQ29tcGxldGF0b1wiLCBbXCJKb2IgQ29tcGxldGVkXCJdKTtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
// Angular
|
|
2
|
-
import { ChangeDetectionStrategy, Component, Inject, ViewChild, ViewEncapsulation } from "@angular/core";
|
|
3
|
-
import { RouterLink } from "@angular/router";
|
|
4
|
-
import { MatSlideToggleModule } from "@angular/material/slide-toggle";
|
|
5
|
-
import { NgIf, NgFor, NgTemplateOutlet } from "@angular/common";
|
|
6
|
-
import { FormsModule } from "@angular/forms";
|
|
7
|
-
import { LocalizationService, LocalizationModule } from "@esfaenza/localizations";
|
|
8
|
-
// EsFaenza
|
|
9
|
-
import { EsTableColumnsDefinition, EsTableModule } from "@esfaenza/es-table";
|
|
10
|
-
import { ComponentHostDirective } from "@esfaenza/core/directives";
|
|
11
|
-
import { NAVBAR_EXTENSIONS } from "@esfaenza/core/domain";
|
|
12
|
-
// Librerie
|
|
13
|
-
import { interval, startWith, takeUntil, takeWhile } from "rxjs";
|
|
14
|
-
import { ProgressbarModule } from "ngx-bootstrap/progressbar";
|
|
15
|
-
import { BsDropdownModule } from "ngx-bootstrap/dropdown";
|
|
16
|
-
// Applicazione
|
|
17
|
-
import { NavBarLoc } from "./navbar.component.loc";
|
|
18
|
-
// Componenti
|
|
19
|
-
import { ReactiveComponent } from "../base/reactive.component";
|
|
20
|
-
import { JaceModulesBoardComponent } from "./modules-board/jace-modules-board.component";
|
|
21
|
-
import * as i0 from "@angular/core";
|
|
22
|
-
import * as i1 from "@esfaenza/preferences";
|
|
23
|
-
import * as i2 from "@esfaenza/core/services";
|
|
24
|
-
import * as i3 from "@esfaenza/signalr-notifications";
|
|
25
|
-
import * as i4 from "@esfaenza/extensions";
|
|
26
|
-
import * as i5 from "@esfaenza/localizations";
|
|
27
|
-
import * as i6 from "@esfaenza/httpservice";
|
|
28
|
-
import * as i7 from "@angular/router";
|
|
29
|
-
import * as i8 from "@angular/forms";
|
|
30
|
-
import * as i9 from "ngx-bootstrap/dropdown";
|
|
31
|
-
import * as i10 from "@angular/material/slide-toggle";
|
|
32
|
-
import * as i11 from "ngx-bootstrap/progressbar";
|
|
33
|
-
import * as i12 from "@esfaenza/es-table";
|
|
34
|
-
// Chiamate ai Repository
|
|
35
|
-
const GET_Jace_GetActiveJaceModules = "/api/Jace/GetActiveJaceModules";
|
|
36
|
-
const GET_Adm_ClearAllCaches = "/api/Adm/ClearAllCaches";
|
|
37
|
-
export class Navbar extends ReactiveComponent {
|
|
38
|
-
constructor(prefsService, cacheService, globalSearchService, MessageDef, notifications, msgExts, lc, http, cdr, _state, sr, router, cjrService, extensionComponents) {
|
|
39
|
-
super();
|
|
40
|
-
this.prefsService = prefsService;
|
|
41
|
-
this.cacheService = cacheService;
|
|
42
|
-
this.globalSearchService = globalSearchService;
|
|
43
|
-
this.MessageDef = MessageDef;
|
|
44
|
-
this.notifications = notifications;
|
|
45
|
-
this.msgExts = msgExts;
|
|
46
|
-
this.lc = lc;
|
|
47
|
-
this.http = http;
|
|
48
|
-
this.cdr = cdr;
|
|
49
|
-
this._state = _state;
|
|
50
|
-
this.sr = sr;
|
|
51
|
-
this.router = router;
|
|
52
|
-
this.cjrService = cjrService;
|
|
53
|
-
this.extensionComponents = extensionComponents;
|
|
54
|
-
this.applicationVersion = myconfig.AppData.ComponentVersion;
|
|
55
|
-
this.applicationEnvironment = myconfig.AppData.ComponentEnvironment;
|
|
56
|
-
this.isMenuCollapsed = false;
|
|
57
|
-
this.anomaliesProcessing = false;
|
|
58
|
-
this.newVersionWarned = false;
|
|
59
|
-
// ***************************************** Gestione Ricerca Globale *****************************************
|
|
60
|
-
this.SelectedResult = null;
|
|
61
|
-
this.ShowSingleTable = false;
|
|
62
|
-
this.searchingTerm = false;
|
|
63
|
-
this._state.subscribe("menu.isCollapsed", (isCollapsed) => { this.isMenuCollapsed = isCollapsed; });
|
|
64
|
-
this._state.subscribe("app.completedJob", (jobDescription) => {
|
|
65
|
-
this.msgExts.simpleSuccess(this.lc.loc("Job Completato") + ": " + jobDescription);
|
|
66
|
-
});
|
|
67
|
-
this.handleBaseNotifications();
|
|
68
|
-
this.getActiveJaceModules();
|
|
69
|
-
// Appena la pagina parte, poi ogni secondo, controllo l'identity per verificare se rimane la stessa
|
|
70
|
-
interval(1000).pipe(startWith(0), takeUntil(this.destroyed$), takeWhile(_ => !myconfig.redirectInProgress)).subscribe(t => {
|
|
71
|
-
this.checkIdentity();
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
ngOnDestroy() {
|
|
75
|
-
super.ngOnDestroy();
|
|
76
|
-
//Quando viene distrutta la navbar devo distruggere anche il client di signalr perchè vuol dire che ho chiuso la pagina
|
|
77
|
-
this.notifications.disconnect();
|
|
78
|
-
}
|
|
79
|
-
handleBaseNotifications() {
|
|
80
|
-
this.notifications.send(this.MessageDef.OUT_QueryJobStatus, null);
|
|
81
|
-
this.notifications.observe(this.MessageDef.IN_SendVersion).pipe(takeUntil(this.destroyed$)).subscribe((message) => {
|
|
82
|
-
if (message != myconfig.AppData.ComponentVersion && !this.newVersionWarned) {
|
|
83
|
-
this.msgExts.simpleWarning(this.lc.loc("È disponibile una nuova versione per l'applicazione corrente. Si suggerisce di ricaricare la pagina (CTRL + F5)"));
|
|
84
|
-
this.newVersionWarned = true;
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
checkIdentity() {
|
|
89
|
-
let id = this.sr.getJaceIdentity();
|
|
90
|
-
let idLast = this.CurrentIdentity;
|
|
91
|
-
if (!id)
|
|
92
|
-
return;
|
|
93
|
-
this.checkSessionTimeout(id);
|
|
94
|
-
if (this.CurrentIdentity && (id.IdAccount != idLast?.IdAccount || id.IdUser != idLast?.IdUser || id.Idtenant != idLast?.Idtenant)) {
|
|
95
|
-
this.msgExts.simpleWarning(this.lc.loc("Le informazioni di Sessione (Tenant/Account) sono cambiate a seguito di un login su modulo diverso utilizzando diverso Tenant/Utente sullo stesso browser. Si suggerisce di ricaricare la pagina (CTRL + F5)"));
|
|
96
|
-
this.cdr.markForCheck();
|
|
97
|
-
}
|
|
98
|
-
this.CurrentIdentity = id;
|
|
99
|
-
}
|
|
100
|
-
getActiveJaceModules() {
|
|
101
|
-
this.http.get(GET_Jace_GetActiveJaceModules).subscribe(res => {
|
|
102
|
-
this.Modules = res;
|
|
103
|
-
this._state.Modules = this.Modules;
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
checkSessionTimeout(identity) {
|
|
107
|
-
if (dayjs() >= dayjs(identity.ExpirationTime).subtract(10, 'minutes') && !myconfig.redirectInProgress) {
|
|
108
|
-
myconfig.redirectInProgress = true;
|
|
109
|
-
this.msgExts.expiredSessionMessage(this.lc.loc('Expired session'), this.lc.loc("L'attuale sessione di lavoro non è più valida.<br>Si prega di eseguire nuovamente il login."), () => {
|
|
110
|
-
myconfig.redirectInProgress = false;
|
|
111
|
-
console.log("checkSessionTimeout - redirecting to login");
|
|
112
|
-
this.router.navigate(["login"]);
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
ngAfterViewInit() {
|
|
117
|
-
this._state.setHeaderHeight(this.navbar.nativeElement.offsetHeight);
|
|
118
|
-
}
|
|
119
|
-
toggleMenu() {
|
|
120
|
-
this.isMenuCollapsed = !this.isMenuCollapsed;
|
|
121
|
-
this._state.notifyDataChanged("menu.isCollapsed", this.isMenuCollapsed);
|
|
122
|
-
}
|
|
123
|
-
logout() {
|
|
124
|
-
window.location.href = `${myconfig.AuthUrl}/logout?client=${myconfig.Client}`;
|
|
125
|
-
}
|
|
126
|
-
changeModule() {
|
|
127
|
-
window.location.href = myconfig.JaceDashboardUrl;
|
|
128
|
-
}
|
|
129
|
-
changeTenant() {
|
|
130
|
-
window.location.href = `${myconfig.AuthUrl}/login/tenant?client=${myconfig.Client}`;
|
|
131
|
-
}
|
|
132
|
-
clearUserPreferences() {
|
|
133
|
-
this.prefsService.clear().subscribe();
|
|
134
|
-
this.msgExts.simpleSuccess(this.lc.loc("Preferenze utente ripulite"));
|
|
135
|
-
}
|
|
136
|
-
clearCacheClient() {
|
|
137
|
-
this.cacheService.clear().subscribe();
|
|
138
|
-
this.http.resetHttpUntimedCacheStorage();
|
|
139
|
-
this.http.resetHttpTimedCacheStorage();
|
|
140
|
-
this.msgExts.simpleSuccess(this.lc.loc("Cache Ripulita"));
|
|
141
|
-
}
|
|
142
|
-
clearCacheServer() {
|
|
143
|
-
this.http.get(GET_Adm_ClearAllCaches).subscribe(_ => {
|
|
144
|
-
this.msgExts.simpleSuccess(this.lc.loc("Cache Ripulita"));
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
clearAll() {
|
|
148
|
-
this.cacheService.clear().subscribe();
|
|
149
|
-
this.http.resetHttpUntimedCacheStorage();
|
|
150
|
-
this.http.resetHttpTimedCacheStorage();
|
|
151
|
-
this.http.get(GET_Adm_ClearAllCaches).subscribe(_ => {
|
|
152
|
-
this.msgExts.simpleSuccess(this.lc.loc("Cache Ripulita"));
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
clearMessages() {
|
|
156
|
-
this.msgExts.clearMessages();
|
|
157
|
-
}
|
|
158
|
-
completedJobClicked(job) {
|
|
159
|
-
this.cjrService.redirect(job);
|
|
160
|
-
}
|
|
161
|
-
searchRequest() {
|
|
162
|
-
this.searchingTerm = true;
|
|
163
|
-
this.searchResult = null;
|
|
164
|
-
if (!this.globalSearchService.Enabled)
|
|
165
|
-
return;
|
|
166
|
-
this.globalSearchService.search(this.searchTerm).subscribe(t => {
|
|
167
|
-
this.searchingTerm = false;
|
|
168
|
-
this.searchResult = t;
|
|
169
|
-
this.searchResult.results.forEach(t => {
|
|
170
|
-
t.est_cols = t.columns.map(c => {
|
|
171
|
-
let colLink = this.globalSearchService.generateColumnLink(c);
|
|
172
|
-
return new EsTableColumnsDefinition(c.description, c.id, colLink?.routePath, colLink?.routeProperties);
|
|
173
|
-
});
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
searchModelChanged() {
|
|
178
|
-
if (!this.searchingTerm)
|
|
179
|
-
this.closeSearch();
|
|
180
|
-
}
|
|
181
|
-
closeSearch() {
|
|
182
|
-
this.searchingTerm = false;
|
|
183
|
-
this.searchResult = null;
|
|
184
|
-
}
|
|
185
|
-
FilterSearchResults(item = null) {
|
|
186
|
-
this.SelectedResult = null;
|
|
187
|
-
this.ShowSingleTable = true;
|
|
188
|
-
requestAnimationFrame(() => {
|
|
189
|
-
if (item)
|
|
190
|
-
this.SelectedResult = this.searchResult?.results?.find(f => f.description == item.description);
|
|
191
|
-
else
|
|
192
|
-
this.ShowSingleTable = false;
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
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 }], target: i0.ɵɵFactoryTarget.Component });
|
|
197
|
-
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: ["EsTableTemplate", "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 });
|
|
198
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Navbar, decorators: [{
|
|
199
|
-
type: Component,
|
|
200
|
-
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"] }]
|
|
201
|
-
}], 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: [{
|
|
202
|
-
type: Inject,
|
|
203
|
-
args: [NAVBAR_EXTENSIONS]
|
|
204
|
-
}] }]; }, propDecorators: { navbar: [{
|
|
205
|
-
type: ViewChild,
|
|
206
|
-
args: ["navbar", { static: false }]
|
|
207
|
-
}] } });
|
|
208
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zcmMvbmF2YmFyL25hdmJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL25hdmJhci9uYXZiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLE1BQU0sRUFBUSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUksT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBSWxGLFdBQVc7QUFDWCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFtRyxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRzNKLFdBQVc7QUFDWCxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxN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bXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBUeXBlLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGVcIjtcclxuaW1wb3J0IHsgTmdJZiwgTmdGb3IsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBCYXNlTWVzc2FnZVNlcnZpY2UsIE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9zaWduYWxyLW5vdGlmaWNhdGlvbnNcIjtcclxuaW1wb3J0IHsgQ2FjaGVTZXJ2aWNlLCBQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL3ByZWZlcmVuY2VzXCI7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UsIExvY2FsaXphdGlvbk1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvbG9jYWxpemF0aW9uc1wiO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvZXh0ZW5zaW9uc1wiO1xyXG5pbXBvcnQgeyBIVFRQU2VydmljZSB9IGZyb20gXCJAZXNmYWVuemEvaHR0cHNlcnZpY2VcIjtcclxuXHJcbi8vIEVzRmFlbnphXHJcbmltcG9ydCB7IEVzVGFibGVDb2x1bW5zRGVmaW5pdGlvbiwgRXNUYWJsZU1vZHVsZSB9IGZyb20gXCJAZXNmYWVuemEvZXMtdGFibGVcIjtcclxuaW1wb3J0IHsgQ29tcG9uZW50SG9zdERpcmVjdGl2ZSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kaXJlY3RpdmVzXCI7XHJcbmltcG9ydCB7IEphY2VJZGVudGl0eSwgQWN0aXZlTW9kdWxlVmlldywgRW52T3B0aW9ucywgQXBwbGljYXRpb25Kb2IsIFNlYXJjaFJlc3VsdCwgU2VhcmNoUmVzdWx0Q29udGFpbmVyLCBOQVZCQVJfRVhURU5TSU9OUyB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kb21haW5cIjtcclxuaW1wb3J0IHsgQXBwU3RhdGUsIENvbXBsZXRlZEpvYlJlZGlyZWN0aW9uU2VydmljZSwgR2xvYmFsU2VhcmNoU2VydmljZSwgVG9rZW5TZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9jb3JlL3NlcnZpY2VzXCI7XHJcblxyXG4vLyBMaWJyZXJpZVxyXG5pbXBvcnQgeyBpbnRlcnZhbCwgc3RhcnRXaXRoLCB0YWtlVW50aWwsIHRha2VXaGlsZSB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFByb2dyZXNzYmFyTW9kdWxlIH0gZnJvbSBcIm5neC1ib290c3RyYXAvcHJvZ3Jlc3NiYXJcIjtcclxuaW1wb3J0IHsgQnNEcm9wZG93bk1vZHVsZSB9IGZyb20gXCJuZ3gtYm9vdHN0cmFwL2Ryb3Bkb3duXCI7XHJcblxyXG4vLyBBcHBsaWNhemlvbmVcclxuaW1wb3J0IHsgTmF2QmFyTG9jIH0gZnJvbSBcIi4vbmF2YmFyLmNvbXBvbmVudC5sb2NcIjtcclxuXHJcbi8vIENvbXBvbmVudGlcclxuaW1wb3J0IHsgUmVhY3RpdmVDb21wb25lbnQgfSBmcm9tIFwiLi4vYmFzZS9yZWFjdGl2ZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgSmFjZU1vZHVsZXNCb2FyZENvbXBvbmVudCB9IGZyb20gXCIuL21vZHVsZXMtYm9hcmQvamFjZS1tb2R1bGVzLWJvYXJkLmNvbXBvbmVudFwiO1xyXG5cclxuLy8gQ2hpYW1hdGUgYWkgUmVwb3NpdG9yeVxyXG5jb25zdCBHRVRfSmFjZV9HZXRBY3RpdmVKYWNlTW9kdWxlczogc3RyaW5nID0gXCIvYXBpL0phY2UvR2V0QWN0aXZlSmFjZU1vZHVsZXNcIjtcclxuY29uc3QgR0VUX0FkbV9DbGVhckFsbENhY2hlczogc3RyaW5nID0gXCIvYXBpL0FkbS9DbGVhckFsbENhY2hlc1wiO1xyXG5cclxuZGVjbGFyZSB2YXIgbXljb25maWc6IEVudk9wdGlvbnM7XHJcbmRlY2xhcmUgdmFyIGRheWpzO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJuYXZiYXJcIixcclxuICAgIHZpZXdQcm92aWRlcnM6IFt7IHByb3ZpZGU6IExvY2FsaXphdGlvblNlcnZpY2UsIHVzZUNsYXNzOiBOYXZCYXJMb2MgfV0sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4vbmF2YmFyLmNvbXBvbmVudC5zY3NzXCJdLFxyXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9uYXZiYXIuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbUm91dGVyTGluaywgRm9ybXNNb2R1bGUsIEJzRHJvcGRvd25Nb2R1bGUsIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLCBOZ0lmLCBOZ0ZvciwgUHJvZ3Jlc3NiYXJNb2R1bGUsIEphY2VNb2R1bGVzQm9hcmRDb21wb25lbnQsIENvbXBvbmVudEhvc3REaXJlY3RpdmUsIE5nVGVtcGxhdGVPdXRsZXQsIEVzVGFibGVNb2R1bGUsIExvY2FsaXphdGlvbk1vZHVsZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5hdmJhciBleHRlbmRzIFJlYWN0aXZlQ29tcG9uZW50IHtcclxuXHJcbiAgICBwdWJsaWMgYXBwbGljYXRpb25WZXJzaW9uID0gbXljb25maWcuQXBwRGF0YS5Db21wb25lbnRWZXJzaW9uO1xyXG4gICAgcHVibGljIGFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPSBteWNvbmZpZy5BcHBEYXRhLkNvbXBvbmVudEVudmlyb25tZW50O1xyXG5cclxuICAgIHB1YmxpYyBpc01lbnVDb2xsYXBzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBhbm9tYWxpZXNQcm9jZXNzaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgcHVibGljIEN1cnJlbnRJZGVudGl0eTogSmFjZUlkZW50aXR5O1xyXG5cclxuICAgIHByaXZhdGUgbmV3VmVyc2lvbldhcm5lZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQFZpZXdDaGlsZChcIm5hdmJhclwiLCB7IHN0YXRpYzogZmFsc2UgfSkgbmF2YmFyOiBFbGVtZW50UmVmO1xyXG5cclxuICAgIHB1YmxpYyBNb2R1bGVzOiBBY3RpdmVNb2R1bGVWaWV3W107XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBwcmVmc1NlcnZpY2U6IFByZWZlcmVuY2VzU2VydmljZSwgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IENhY2hlU2VydmljZSwgcHVibGljIGdsb2JhbFNlYXJjaFNlcnZpY2U6IEdsb2JhbFNlYXJjaFNlcnZpY2UsIHByaXZhdGUgTWVzc2FnZURlZjogQmFzZU1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgbm90aWZpY2F0aW9uczogTm90aWZpY2F0aW9uc1NlcnZpY2UsIHByaXZhdGUgbXNnRXh0czogTWVzc2FnZVNlcnZpY2UsIHB1YmxpYyBsYzogTG9jYWxpemF0aW9uU2VydmljZSwgcHJpdmF0ZSBodHRwOiBIVFRQU2VydmljZSwgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgcHVibGljIF9zdGF0ZTogQXBwU3RhdGUsIHB1YmxpYyBzcjogVG9rZW5TZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIGNqclNlcnZpY2U6IENvbXBsZXRlZEpvYlJlZGlyZWN0aW9uU2VydmljZSwgQEluamVjdChOQVZCQVJfRVhURU5TSU9OUykgcHVibGljIGV4dGVuc2lvbkNvbXBvbmVudHM6IFR5cGU8YW55PltdKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuXHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc3Vic2NyaWJlKFwibWVudS5pc0NvbGxhcHNlZFwiLCAoaXNDb2xsYXBzZWQpID0+IHsgdGhpcy5pc01lbnVDb2xsYXBzZWQgPSBpc0NvbGxhcHNlZDsgfSk7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc3Vic2NyaWJlKFwiYXBwLmNvbXBsZXRlZEpvYlwiLCAoam9iRGVzY3JpcHRpb24pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVN1Y2Nlc3ModGhpcy5sYy5sb2MoXCJKb2IgQ29tcGxldGF0b1wiKSArIFwiOiBcIiArIGpvYkRlc2NyaXB0aW9uKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5oYW5kbGVCYXNlTm90aWZpY2F0aW9ucygpO1xyXG4gICAgICAgIHRoaXMuZ2V0QWN0aXZlSmFjZU1vZHVsZXMoKTtcclxuXHJcbiAgICAgICAgLy8gQXBwZW5hIGxhIHBhZ2luYSBwYXJ0ZSwgcG9pIG9nbmkgc2Vjb25kbywgY29udHJvbGxvIGwnaWRlbnRpdHkgcGVyIHZlcmlmaWNhcmUgc2UgcmltYW5lIGxhIHN0ZXNzYVxyXG4gICAgICAgIGludGVydmFsKDEwMDApLnBpcGUoXHJcbiAgICAgICAgICAgIHN0YXJ0V2l0aCgwKSxcclxuICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCksXHJcbiAgICAgICAgICAgIHRha2VXaGlsZShfID0+ICFteWNvbmZpZy5yZWRpcmVjdEluUHJvZ3Jlc3MpXHJcbiAgICAgICAgKS5zdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tJZGVudGl0eSgpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgICAgICAvL1F1YW5kbyB2aWVuZSBkaXN0cnV0dGEgbGEgbmF2YmFyIGRldm8gZGlzdHJ1Z2dlcmUgYW5jaGUgaWwgY2xpZW50IGRpIHNpZ25hbHIgcGVyY2jDqCB2dW9sIGRpcmUgY2hlIGhvIGNoaXVzbyBsYSBwYWdpbmFcclxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnMuZGlzY29ubmVjdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlQmFzZU5vdGlmaWNhdGlvbnMoKSB7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLnNlbmQodGhpcy5NZXNzYWdlRGVmLk9VVF9RdWVyeUpvYlN0YXR1cywgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zLm9ic2VydmUodGhpcy5NZXNzYWdlRGVmLklOX1NlbmRWZXJzaW9uKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKG1lc3NhZ2UpID0+IHtcclxuICAgICAgICAgICAgaWYgKG1lc3NhZ2UgIT0gbXljb25maWcuQXBwRGF0YS5Db21wb25lbnRWZXJzaW9uICYmICF0aGlzLm5ld1ZlcnNpb25XYXJuZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVXYXJuaW5nKHRoaXMubGMubG9jKFwiw4ggZGlzcG9uaWJpbGUgdW5hIG51b3ZhIHZlcnNpb25lIHBlciBsJ2FwcGxpY2F6aW9uZSBjb3JyZW50ZS4gU2kgc3VnZ2VyaXNjZSBkaSByaWNhcmljYXJlIGxhIHBhZ2luYSAoQ1RSTCArIEY1KVwiKSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5ld1ZlcnNpb25XYXJuZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja0lkZW50aXR5KCkge1xyXG4gICAgICAgIGxldCBpZCA9IHRoaXMuc3IuZ2V0SmFjZUlkZW50aXR5KCk7XHJcbiAgICAgICAgbGV0IGlkTGFzdCA9IHRoaXMuQ3VycmVudElkZW50aXR5O1xyXG5cclxuICAgICAgICBpZiAoIWlkKSByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuY2hlY2tTZXNzaW9uVGltZW91dChpZCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLkN1cnJlbnRJZGVudGl0eSAmJiAoaWQuSWRBY2NvdW50ICE9IGlkTGFzdD8uSWRBY2NvdW50IHx8IGlkLklkVXNlciAhPSBpZExhc3Q/LklkVXNlciB8fCBpZC5JZHRlbmFudCAhPSBpZExhc3Q/LklkdGVuYW50KSkge1xyXG4gICAgICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlV2FybmluZyh0aGlzLmxjLmxvYyhcIkxlIGluZm9ybWF6aW9uaSBkaSBTZXNzaW9uZSAoVGVuYW50L0FjY291bnQpIHNvbm8gY2FtYmlhdGUgYSBzZWd1aXRvIGRpIHVuIGxvZ2luIHN1IG1vZHVsbyBkaXZlcnNvIHV0aWxpenphbmRvIGRpdmVyc28gVGVuYW50L1V0ZW50ZSBzdWxsbyBzdGVzc28gYnJvd3Nlci4gU2kgc3VnZ2VyaXNjZSBkaSByaWNhcmljYXJlIGxhIHBhZ2luYSAoQ1RSTCArIEY1KVwiKSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5DdXJyZW50SWRlbnRpdHkgPSBpZDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRBY3RpdmVKYWNlTW9kdWxlcygpIHtcclxuICAgICAgICB0aGlzLmh0dHAuZ2V0PEFjdGl2ZU1vZHVsZVZpZXdbXT4oR0VUX0phY2VfR2V0QWN0aXZlSmFjZU1vZHVsZXMpLnN1YnNjcmliZShyZXMgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLk1vZHVsZXMgPSByZXM7XHJcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlLk1vZHVsZXMgPSB0aGlzLk1vZHVsZXM7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja1Nlc3Npb25UaW1lb3V0KGlkZW50aXR5OiBKYWNlSWRlbnRpdHkpIHtcclxuICAgICAgICBpZiAoZGF5anMoKSA+PSBkYXlqcyhpZGVudGl0eS5FeHBpcmF0aW9uVGltZSkuc3VidHJhY3QoMTAsICdtaW51dGVzJykgJiYgIW15Y29uZmlnLnJlZGlyZWN0SW5Qcm9ncmVzcykge1xyXG4gICAgICAgICAgICBteWNvbmZpZy5yZWRpcmVjdEluUHJvZ3Jlc3MgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLmV4cGlyZWRTZXNzaW9uTWVzc2FnZShcclxuICAgICAgICAgICAgICAgIHRoaXMubGMubG9jKCdFeHBpcmVkIHNlc3Npb24nKSxcclxuICAgICAgICAgICAgICAgIHRoaXMubGMubG9jKFwiTCdhdHR1YWxlIHNlc3Npb25lIGRpIGxhdm9ybyBub24gw6ggcGnDuSB2YWxpZGEuPGJyPlNpIHByZWdhIGRpIGVzZWd1aXJlIG51b3ZhbWVudGUgaWwgbG9naW4uXCIpLFxyXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIG15Y29uZmlnLnJlZGlyZWN0SW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiY2hlY2tTZXNzaW9uVGltZW91dCAtIHJlZGlyZWN0aW5nIHRvIGxvZ2luXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wibG9naW5cIl0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc2V0SGVhZGVySGVpZ2h0KHRoaXMubmF2YmFyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9nZ2xlTWVudSgpIHtcclxuICAgICAgICB0aGlzLmlzTWVudUNvbGxhcHNlZCA9ICF0aGlzLmlzTWVudUNvbGxhcHNlZDtcclxuICAgICAgICB0aGlzLl9zdGF0ZS5ub3RpZnlEYXRhQ2hhbmdlZChcIm1lbnUuaXNDb2xsYXBzZWRcIiwgdGhpcy5pc01lbnVDb2xsYXBzZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBsb2dvdXQoKSB7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHtteWNvbmZpZy5BdXRoVXJsfS9sb2dvdXQ/Y2xpZW50PSR7bXljb25maWcuQ2xpZW50fWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNoYW5nZU1vZHVsZSgpIHtcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IG15Y29uZmlnLkphY2VEYXNoYm9hcmRVcmw7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNoYW5nZVRlbmFudCgpIHtcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke215Y29uZmlnLkF1dGhVcmx9L2xvZ2luL3RlbmFudD9jbGllbnQ9JHtteWNvbmZpZy5DbGllbnR9YDtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhclVzZXJQcmVmZXJlbmNlcygpIHtcclxuICAgICAgICB0aGlzLnByZWZzU2VydmljZS5jbGVhcigpLnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVTdWNjZXNzKHRoaXMubGMubG9jKFwiUHJlZmVyZW56ZSB1dGVudGUgcmlwdWxpdGVcIikpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyQ2FjaGVDbGllbnQoKSB7XHJcbiAgICAgICAgdGhpcy5jYWNoZVNlcnZpY2UuY2xlYXIoKS5zdWJzY3JpYmUoKTtcclxuICAgICAgICB0aGlzLmh0dHAucmVzZXRIdHRwVW50aW1lZENhY2hlU3RvcmFnZSgpO1xyXG4gICAgICAgIHRoaXMuaHR0cC5yZXNldEh0dHBUaW1lZENhY2hlU3RvcmFnZSgpO1xyXG4gICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVTdWNjZXNzKHRoaXMubGMubG9jKFwiQ2FjaGUgUmlwdWxpdGFcIikpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyQ2FjaGVTZXJ2ZXIoKSB7XHJcbiAgICAgICAgdGhpcy5odHRwLmdldChHRVRfQWRtX0NsZWFyQWxsQ2FjaGVzKS5zdWJzY3JpYmUoXyA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubXNnRXh0cy5zaW1wbGVTdWNjZXNzKHRoaXMubGMubG9jKFwiQ2FjaGUgUmlwdWxpdGFcIikpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNsZWFyQWxsKCkge1xyXG4gICAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLmNsZWFyKCkuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgdGhpcy5odHRwLnJlc2V0SHR0cFVudGltZWRDYWNoZVN0b3JhZ2UoKTtcclxuICAgICAgICB0aGlzLmh0dHAucmVzZXRIdHRwVGltZWRDYWNoZVN0b3JhZ2UoKTtcclxuICAgICAgICB0aGlzLmh0dHAuZ2V0KEdFVF9BZG1fQ2xlYXJBbGxDYWNoZXMpLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICAgICAgdGhpcy5tc2dFeHRzLnNpbXBsZVN1Y2Nlc3ModGhpcy5sYy5sb2MoXCJDYWNoZSBSaXB1bGl0YVwiKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xlYXJNZXNzYWdlcygpIHtcclxuICAgICAgICB0aGlzLm1zZ0V4dHMuY2xlYXJNZXNzYWdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbXBsZXRlZEpvYkNsaWNrZWQoam9iOiBBcHBsaWNhdGlvbkpvYikge1xyXG4gICAgICAgIHRoaXMuY2pyU2VydmljZS5yZWRpcmVjdChqb2IpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIEdlc3Rpb25lIFJpY2VyY2EgR2xvYmFsZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuICAgIHB1YmxpYyBTZWxlY3RlZFJlc3VsdDogU2VhcmNoUmVzdWx0ID0gbnVsbDtcclxuICAgIHB1YmxpYyBTaG93U2luZ2xlVGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBzZWFyY2hUZXJtOiBzdHJpbmc7XHJcbiAgICBzZWFyY2hpbmdUZXJtOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBzZWFyY2hSZXN1bHQ6IFNlYXJjaFJlc3VsdENvbnRhaW5lcjtcclxuXHJcbiAgICBzZWFyY2hSZXF1ZXN0KCkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoaW5nVGVybSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHQgPSBudWxsO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuZ2xvYmFsU2VhcmNoU2VydmljZS5FbmFibGVkKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuZ2xvYmFsU2VhcmNoU2VydmljZS5zZWFyY2godGhpcy5zZWFyY2hUZXJtKS5zdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoaW5nVGVybSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdCA9IHQ7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdC5yZXN1bHRzLmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0LmVzdF9jb2xzID0gdC5jb2x1bW5zLm1hcChjID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29sTGluayA9IHRoaXMuZ2xvYmFsU2VhcmNoU2VydmljZS5nZW5lcmF0ZUNvbHVtbkxpbmsoYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc1RhYmxlQ29sdW1uc0RlZmluaXRpb24oYy5kZXNjcmlwdGlvbiwgYy5pZCwgY29sTGluaz8ucm91dGVQYXRoLCBjb2xMaW5rPy5yb3V0ZVByb3BlcnRpZXMpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNlYXJjaE1vZGVsQ2hhbmdlZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoaW5nVGVybSlcclxuICAgICAgICAgICAgdGhpcy5jbG9zZVNlYXJjaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlU2VhcmNoKCkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoaW5nVGVybSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0ID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBGaWx0ZXJTZWFyY2hSZXN1bHRzKGl0ZW06IFNlYXJjaFJlc3VsdCA9IG51bGwpIHtcclxuICAgICAgICB0aGlzLlNlbGVjdGVkUmVzdWx0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLlNob3dTaW5nbGVUYWJsZSA9IHRydWU7XHJcblxyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5TZWxlY3RlZFJlc3VsdCA9IHRoaXMuc2VhcmNoUmVzdWx0Py5yZXN1bHRzPy5maW5kKGYgPT4gZi5kZXNjcmlwdGlvbiA9PSBpdGVtLmRlc2NyaXB0aW9uKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5TaG93U2luZ2xlVGFibGUgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSIsIjxuYXYgI25hdmJhciBjbGFzcz1cIm5hdiBhei1uYXZiYXIgZml4ZWQtdG9wXCI+XHJcbiAgICA8IS0tIExvZ28gLS0+XHJcbiAgICA8YSBjbGFzcz1cIm5hdmJhci1icmFuZFwiIHJvdXRlckxpbms9XCIvcGFnZXMvZGFzaGJvYXJkXCI+XHJcbiAgICAgICAgPGltZyBzcmM9XCIuLi9hc3NldHMvaW1nL2xvZ28vbG9nby5wbmdcIiBjbGFzcz1cImQtbWQtYmxvY2sgZC1ub25lXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMHB4OyBtYXJnaW4tYm90dG9tOiAtMTBweDtcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLWZlLXYgZC1tZC1ibG9jayBkLW5vbmVcIj57eyBhcHBsaWNhdGlvblZlcnNpb24gfX08L2Rpdj5cclxuXHJcbiAgICAgICAgPGltZyBzcmM9XCIuLi9hc3NldHMvaW1nL2xvZ28vbG9nb19zbS5wbmdcIiBjbGFzcz1cImQtbWQtbm9uZVwiIHN0eWxlPVwibWFyZ2luLXRvcDogMTBweDsgbWFyZ2luLWJvdHRvbTogLTEwcHg7XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1mZS1zbS12IGQtbWQtbm9uZVwiPnt7IGFwcGxpY2F0aW9uVmVyc2lvbiB9fTwvZGl2PlxyXG4gICAgPC9hPlxyXG5cclxuICAgIDx1bCBjbGFzcz1cIm5hdiBuYXZiYXItbmF2IG5hdmJhci1maWxsYWJsZVwiIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICA8IS0tIENvbGxhcHNlIG1lbsO5IGEgc2luaXN0cmEgLS0+XHJcbiAgICAgICAgPGxpIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICAgICAgPGEgKGNsaWNrKT1cInRvZ2dsZU1lbnUoKVwiIHN0eWxlPVwiY29sb3I6IHdoaXRlOyBmb250LXNpemU6IDIwcHg7IGFsaWduLXNlbGY6IGNlbnRlcjtcIiBjbGFzcz1cImZhIGZhLW5hdmljb25cIj48L2E+XHJcbiAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgPCEtLSBTZWFyY2ggLS0+XHJcbiAgICAgICAgPGxpIHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cclxuICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJhcHAtc2VhcmNoXCIgc3R5bGU9XCJhbGlnbi1zZWxmOiBjZW50ZXI7XCIgcm9sZT1cInNlYXJjaFwiIChuZ1N1Ym1pdCk9XCJzZWFyY2hSZXF1ZXN0KClcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCIgKG5nTW9kZWxDaGFuZ2UpPVwic2VhcmNoTW9kZWxDaGFuZ2VkKClcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmUgOiB0cnVlfVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgICAgICAgICA8YT48aSBjbGFzcz1cImlvbi1pb3Mtc2VhcmNoLXN0cm9uZ1wiPjwvaT48L2E+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGhpZGRlbj48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvbGk+XHJcblxyXG4gICAgICAgIDx1bCBjbGFzcz1cIm5hdlwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IGF1dG87IHBhZGRpbmctdG9wOiA1cHg7IHBhZGRpbmctcmlnaHQ6IDEwcHg7XCI+XHJcblxyXG4gICAgICAgICAgICA8IS0tRHJvcGRvd24gam9iIGluIGVzZWN1emlvbmUtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItbWVudSBhcHAtbm8tc2VsZWN0aW9uIGFwcC1tYXJnaW4tcmlnaHQtMTBcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCIgZHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIHBsYWNlbWVudD1cImJvdHRvbSByaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPGEgW2NsYXNzLmZhLXNwaW5dPVwiX3N0YXRlLmpvYnNJblByb2dyZXNzID4gMFwiIGNsYXNzPVwiZmEgZmEtY29nIGRyb3Bkb3duLXRvZ2dsZSBhcHAtcG9pbnRlclwiIHN0eWxlPVwiY29sb3I6IHdoaXRlOyBmb250LXNpemU6IDIwcHg7IGFsaWduLXNlbGY6IGNlbnRlcjtcIiBkcm9wZG93blRvZ2dsZT48L2E+XHJcbiAgICAgICAgICAgICAgICA8dWwgKmRyb3Bkb3duTWVudSBjbGFzcz1cIm5hdi1qb2JzLW1lbnVcIiByb2xlPVwibWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXYtam9icy1tZW51LWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eydKb2IgQXBwbGljYXRpdmknIHwgbG9jYWxpemUgOiBsY319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInB1bGwtcmlnaHQgbS10LW1pbi0yXCI+PG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJfc3RhdGUubm90aWZ5T25Db21wbGV0ZWRKb2JzXCIgKGNsaWNrKT1cImNsZWFyTWVzc2FnZXMoKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPjwvbWF0LXNsaWRlLXRvZ2dsZT48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHVsbC1yaWdodCBhcHAtbWFyZ2luLXJpZ2h0LTVcIj57eydOb3RpZmljaGUnIHwgbG9jYWxpemUgOiBsY319Ojwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2LWpvYnMtbWVudS1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJfc3RhdGUuYWxsSm9icy5sZW5ndGggPT0gMFwiIGNsYXNzPVwibmF2LWpvYnMtbWVudS1saXN0LWVtcHR5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7XCJBbCBtb21lbnRvIG5vbiBjJ8OoIG51bGxhIGluIGVzZWN1emlvbmVcIiB8IGxvY2FsaXplIDogbGN9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgam9iIG9mIF9zdGF0ZS5hbGxKb2JzOyBsZXQgbGFzdCA9IGxhc3RcIiBbY2xhc3MuYXBwLW1hcmdpbi1ib3R0b20tNV09XCIhbGFzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYXYtam9icy1tZW51LWxpc3QtZGVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFqb2IuY29tcGxldGVkXCIgdGl0bGU9XCJ7e2pvYi5kZXNjcmlwdGlvbn19XCI+e3tqb2Iuc21hbGxkZXNjcmlwdGlvbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiam9iLmNvbXBsZXRlZFwiIHRpdGxlPVwie3tqb2IuZGVzY3JpcHRpb259fVwiIGNsYXNzPVwiYXBwLWxpbmsgYXBwLW5vLXNlbGVjdGlvbiBhcHAtaW5saW5lIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImNvbXBsZXRlZEpvYkNsaWNrZWQoam9iKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1wiPnt7am9iLnNtYWxsZGVzY3JpcHRpb259fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwicHVsbC1yaWdodFwiICpuZ0lmPVwiIWpvYi5jb21wbGV0ZWRcIj57e2pvYi5wZXJjZW50YWdlfX0lPC9zdHJvbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cInB1bGwtcmlnaHRcIiAqbmdJZj1cImpvYi5jb21wbGV0ZWRcIj57eyAnQ29tcGxldGVkJyB8IGxvY2FsaXplIDogbGMgfX08L3N0cm9uZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzcyBwcm9ncmVzcy1zbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9ncmVzc2JhciAqbmdJZj1cIiFqb2IuY29tcGxldGVkXCIgW21heF09XCIxMDBcIiBbdmFsdWVdPVwiam9iLnBlcmNlbnRhZ2VcIiBbc3RyaXBlZF09XCJ0cnVlXCIgW2FuaW1hdGVdPVwidHJ1ZVwiPjwvcHJvZ3Jlc3NiYXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb2dyZXNzYmFyICpuZ0lmPVwiam9iLmNvbXBsZXRlZFwiIHR5cGU9XCJzdWNjZXNzXCIgW21heF09XCIxMDBcIiBbdmFsdWVdPVwiMTAwXCIgW3N0cmlwZWRdPVwiZmFsc2VcIiBbYW5pbWF0ZV09XCJmYWxzZVwiPjwvcHJvZ3Jlc3NiYXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS1Ecm9wZG93biBtb2R1bGktLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItbWVudSBhcHAtbm8tc2VsZWN0aW9uIGFwcC1tYXJnaW4tcmlnaHQtMTBcIiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCIgZHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIHBsYWNlbWVudD1cImJvdHRvbSByaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJmYSBmYS10aCBkcm9wZG93bi10b2dnbGUgYXBwLXBvaW50ZXJcIiBzdHlsZT1cImNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OyBmb250LXNpemU6IDIwcHg7IGFsaWduLXNlbGY6IGNlbnRlcjtcIiBkcm9wZG93blRvZ2dsZT48L2E+XHJcbiAgICAgICAgICAgICAgICA8dWwgKmRyb3Bkb3duTWVudSBjbGFzcz1cIm1vZHVsZS1ib2FyZC1tZW51IGNvbnRhaW5lclwiIHJvbGU9XCJtZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1yZWxhdGl2ZVwiPjxqYWNlLW1vZHVsZXMtYm9hcmQgW01vZHVsZXNdPVwiTW9kdWxlc1wiPjwvamFjZS1tb2R1bGVzLWJvYXJkPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFB1bnRpIGRpIGVzdGVuc2lvbmUgcGVyIENhbGVuZGFyLCBDaGF0cm9vbSBlIGNoaSBwacO5IG5lIGhhIHBpw7kgbmUgbWV0dGEuLi4gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLW1lbnUgYXBwLW5vLXNlbGVjdGlvbiBhcHAtbWFyZ2luLXJpZ2h0LTEwXCIgKm5nRm9yPVwibGV0IGNvbXAgb2YgZXh0ZW5zaW9uQ29tcG9uZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtjb21wb25lbnRIb3N0XT1cImNvbXBcIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS1Ecm9wZG93biBVc2VyIE1lbnUtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVzZXItbWVudSBhcHAtbm8tc2VsZWN0aW9uXCIgZHJvcGRvd24gY29udGFpbmVyPVwiYm9keVwiIHBsYWNlbWVudD1cImJvdHRvbSByaWdodFwiIHN0eWxlPVwiaGVpZ2h0OjQ1cHg7IHBhZGRpbmctcmlnaHQ6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLXRvZ2dsZSB1c2VyLWxpbmsgYXBwLXBvaW50ZXJcIiBkcm9wZG93blRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHVsbC1sZWZ0IGFwcC1tYXJnaW4tcmlnaHQtMTAgYXBwLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ1c2VySWNvbjtcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXdoaXRlLXRleHQgcHVsbC1yaWdodCBkLW5vbmUgZC1zbS1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGVidWdJbmZvc1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbGVhcmZpeFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICAgICAgICAgIDx1bCAqZHJvcGRvd25NZW51IGNsYXNzPVwiZHJvcGRvd24tbWVudSBkcm9wZG93bi1tZW51LXJpZ2h0LXVzZXIgYXBwLW5vLXBhZGRpbmdcIiByb2xlPVwibWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cInVzZXItaW5mb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXJlbGF0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidXNlckljb247IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB7cmlnaHQ6IDYyfSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXdoaXRlLXRleHQgYXBwLW1hcmdpbi10b3AtMTAgYXBwLW1hcmdpbi1ib3R0b20tMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRlYnVnSW5mb3NcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAqbmdJZj1cImxjLkxvY2FsZSA9PSAnZW4tVVMnXCIgKGNsaWNrKT1cImxjLmNoYW5nZUxvY2FsZSgnaXQtSVQnKVwiPjxpIGNsYXNzPVwiZmEgZmEtZ2xvYmVcIj4mbmJzcDs8L2k+U3dpdGNoIHRvIEl0YWxpYW4gU2l0ZTwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAqbmdJZj1cImxjLkxvY2FsZSA9PSAnaXQtSVQnXCIgKGNsaWNrKT1cImxjLmNoYW5nZUxvY2FsZSgnZW4tVVMnKVwiPjxpIGNsYXNzPVwiZmEgZmEtZ2xvYmVcIj4mbmJzcDs8L2k+UGFzc2EgYWwgU2l0byBpbiBJbmdsZXNlPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiIChjbGljayk9XCJjaGFuZ2VNb2R1bGUoKVwiPjxpIGNsYXNzPVwiZmEgZmEtdGhcIj4mbmJzcDs8L2k+e3snQ2FtYmlhIE1vZHVsbycgfCBsb2NhbGl6ZSA6IGxjfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImNoYW5nZVRlbmFudCgpXCI+PGkgY2xhc3M9XCJmYSBmYS1idWlsZGluZ1wiPiZuYnNwOzwvaT57eydDYW1iaWEgVGVuYW50JyB8IGxvY2FsaXplIDogbGN9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwiY2xlYXJVc2VyUHJlZmVyZW5jZXMoKVwiPjxpIGNsYXNzPVwiZmEgZmEtdXNlci10aW1lc1wiPiZuYnNwOzwvaT57eydSaXB1bGlzY2kgbGUgUHJlZmVyZW56ZSBVdGVudGUnIHwgbG9jYWxpemUgOiBsY319PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbSBhcHAtcG9pbnRlclwiIChjbGljayk9XCJjbGVhckFsbCgpXCI+PGkgY2xhc3M9XCJmYSBmYS1yZWN5Y2xlIFwiPiZuYnNwOzwvaT57eydSaXB1bGlzY2kgbGEgQ2FjaGUnIHwgbG9jYWxpemUgOiBsY319PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1kaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGFwcC1wb2ludGVyXCIgKGNsaWNrKT1cImxvZ291dCgpXCI+PGkgY2xhc3M9XCJmYSBmYS1wb3dlci1vZmZcIj4mbmJzcDs8L2k+TG9nIG91dDwvYT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICA8L3VsPlxyXG48L25hdj5cclxuXHJcbjwhLS0gVGVtcGxhdGUgcGVyIGwnaWNvbmEgZGVsbCd1dGVudGUgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjdXNlckljb24gbGV0LWNvbnRleHQ+XHJcbiAgICA8aW1nIHNyYz0nLi4vYXNzZXRzL2ltZy91c2Vycy91c2VyLmpwZycgYWx0PVwidXNlci1pbWdcIiBjbGFzcz1cImltZy1jaXJjbGUgdXNlci1pbWdcIj5cclxuICAgIDxpbWcgc3JjPScuLi9hc3NldHMvaW1nL2V2ZW50cy9jaHJpc3RtYXMucG5nJyBhbHQ9XCJ1c2VyLWltZ1wiIGNsYXNzPVwiaW1nLWNpcmNsZSB1c2VyLWltZyBhcHAtYWJzb2x1dGUgYXBwLXJpZ2h0LTBcIiBbc3R5bGUucmlnaHQucHhdPVwiY29udGV4dD8ucmlnaHQgfHwgdW5kZWZpbmVkXCIgKm5nSWY9XCJfc3RhdGUuY2hyaXN0bWFzVGltZVwiPlxyXG4gICAgPGltZyBzcmM9Jy4uL2Fzc2V0cy9pbWcvZXZlbnRzL2hhbGxvd2Vlbi5wbmcnIGFsdD1cInVzZXItaW1nXCIgY2xhc3M9XCJpbWctY2lyY2xlIHVzZXItaW1nIGFwcC1hYnNvbHV0ZSBhcHAtcmlnaHQtMFwiIFtzdHlsZS5yaWdodC5weF09XCJjb250ZXh0Py5yaWdodCB8fCB1bmRlZmluZWRcIiAqbmdJZj1cIl9zdGF0ZS5oYWxsb3dlZW5UaW1lXCI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFRlbXBsYXRlIHBlciBsZSBpbmZvcm1haXpvbmkgZGkgZGVidWc6IEFtYmllbnRlLCBydW9saSwgcGVybWVzc2kgZWNjIC0tPlxyXG48bmctdGVtcGxhdGUgI2RlYnVnSW5mb3M+XHJcbiAgICA8ZGl2Pnt7Q3VycmVudElkZW50aXR5Py5GdWxsTmFtZX19IC0gKHt7Q3VycmVudElkZW50aXR5Py5UZW5hbnROYW1lfX0pPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1zbS1jZW50ZXJcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwbGljYXRpb25FbnZpcm9ubWVudCA9PSAyXCI+e3snQW1iaWVudGUgZGkgU3ZpbHVwcG8nIHwgbG9jYWxpemUgOiBsY319PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPT0gNVwiPnt7J0FtYmllbnRlIGRpIFN0YWdpbmcnIHwgbG9jYWxpemUgOiBsY319PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwcGxpY2F0aW9uRW52aXJvbm1lbnQgPT0gNlwiPnt7J0FtYmllbnRlIGRpIFN0YWdpbmcgQScgfCBsb2NhbGl6ZSA6IGxjfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwbGljYXRpb25FbnZpcm9ubWVudCA9PSAxXCI+e3snQW1iaWVudGUgZGkgUHJvZHV6aW9uZScgfCBsb2NhbGl6ZSA6IGxjfX08L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBbaGlkZGVuXT1cInRydWVcIj5cclxuICAgICAgICA8ZGl2PlBlcm1pc3Npb25zOjwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHAgb2YgQ3VycmVudElkZW50aXR5LlBlcm1pc3Npb25zXCI+e3twfX08L2Rpdj5cclxuICAgICAgICA8ZGl2PlJvbGVzOjwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHIgb2YgQ3VycmVudElkZW50aXR5LlJvbGVzXCI+e3tyfX08L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBPdmVybGF5IHBlciBsYSByaWNlcmNhIGdsb2JhbGUgLS0+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hpbmdUZXJtIHx8IHNlYXJjaFJlc3VsdFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImFwcC1hYnNvbHV0ZSBhcHAtc2VhcmNoLWJhY2tncm91bmRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNlYXJjaC1yZXN1bHQtYm94XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hpbmdUZXJtXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNlYXJjaC1jYXJkXCI+PGkgY2xhc3M9XCJmYSBmYS1zcGlubmVyIGZhLXNwaW5cIj48L2k+U3RvIGVmZmV0dHVhbmRvIGxhIHJpY2VyY2EuLi48L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hSZXN1bHQgJiYgIXNlYXJjaGluZ1Rlcm1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImhlaWdodDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFNwYXppbyBhIHNpbmlzdHJhIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQmxvY2NvIGNvbiBsZSBjYXRlZ29yaWUgZGVpIHJpc3VsdGF0aSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1zZWFyY2gtY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1yZWxhdGl2ZVwiPjxhIGNsYXNzPVwiZmEgZmEtdGltZXMgdGV4dC1kYW5nZXIgYXBwLWFic29sdXRlIGFwcC1yaWdodC0wIGFwcC1mcy0yMCBhcHAtcG9pbnRlclwiIChjbGljayk9XCJjbG9zZVNlYXJjaCgpO1wiPjwvYT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5DYXRlZ29yaWUgZGkgUmljZXJjYTwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXBvaW50ZXIgYXBwLWxpbmtcIiBbY2xhc3MuYXBwLWJvbGRdPVwiIVNlbGVjdGVkUmVzdWx0ICYmICFTaG93U2luZ2xlVGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiRmlsdGVyU2VhcmNoUmVzdWx0cygpXCI+e3tTZWxlY3RlZFJlc3VsdCA/ICctJyA6ICc+J319IE1vc3RyYSBUdXR0bzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWFyY2hSZXN1bHQucmVzdWx0c1wiIGNsYXNzPVwiYXBwLXBvaW50ZXIgYXBwLWxpbmtcIiBbY2xhc3MuYXBwLWJvbGRdPVwiU2VsZWN0ZWRSZXN1bHQ/LmRlc2NyaXB0aW9uID09IGl0ZW0uZGVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiRmlsdGVyU2VhcmNoUmVzdWx0cyhpdGVtKVwiPnt7U2VsZWN0ZWRSZXN1bHQ/LmRlc2NyaXB0aW9uID09IGl0ZW0uZGVzY3JpcHRpb24gPyAnPicgOiAnLSd9fSBNb3N0cmEge3tpdGVtLmRlc2NyaXB0aW9ufX0gKHt7aXRlbS5pdGVtcz8ubGVuZ3RofX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gRGV0dGFnbGlvIHJpc3VsdGF0aSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIiBzdHlsZT1cIm92ZXJmbG93OiBhdXRvOyBoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhU2VsZWN0ZWRSZXN1bHQgJiYgIVNob3dTaW5nbGVUYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcmVzIG9mIHNlYXJjaFJlc3VsdC5yZXN1bHRzOyBsZXQgaSA9IGluZGV4O1wiIGNsYXNzPVwiYXBwLXNlYXJjaC1jYXJkXCIgW3N0eWxlLm1hcmdpbi1ib3R0b20ucHhdPVwiaSA9PSAoc2VhcmNoUmVzdWx0LnJlc3VsdHM/Lmxlbmd0aCAtIDEpID8gMiA6IDEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0Pnt7cmVzLmRlc2NyaXB0aW9ufX08L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcy10YWJsZSBbKG5nTW9kZWwpXT1cInJlcy5pdGVtc1wiIFtEeW5hbWljUm93Q29sdW1uc0RlZmluaXRpb25dPVwicmVzLmVzdF9jb2xzXCIgW0FycmF5bW9kZUl0ZW1zUGVyUGFnZV09XCIxMFwiPjwvZXMtdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJTZWxlY3RlZFJlc3VsdCAmJiBTaG93U2luZ2xlVGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2VhcmNoLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+e3tTZWxlY3RlZFJlc3VsdC5kZXNjcmlwdGlvbn19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXMtdGFibGUgWyhuZ01vZGVsKV09XCJTZWxlY3RlZFJlc3VsdC5pdGVtc1wiIFtEeW5hbWljUm93Q29sdW1uc0RlZmluaXRpb25dPVwiU2VsZWN0ZWRSZXN1bHQuZXN0X2NvbHNcIiBbQXJyYXltb2RlSXRlbXNQZXJQYWdlXT1cIjEwXCI+PC9lcy10YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFNwYXppbyBhIGRlc3RyYSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTFcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj4iXX0=
|