info-library 2.14.52 → 2.14.53-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/directives/index.d.ts +1 -0
  2. package/directives/safehtml.directive.d.ts +16 -0
  3. package/esm2020/controls/alert/alert.component.mjs +7 -6
  4. package/esm2020/controls/autocomplete/autocomplete.component.mjs +7 -6
  5. package/esm2020/controls/big-checkbox/big-checkbox.component.mjs +10 -9
  6. package/esm2020/controls/card/card.component.mjs +7 -6
  7. package/esm2020/controls/card-menu/card-menu.component.mjs +7 -6
  8. package/esm2020/controls/checkbox/checkbox.component.mjs +7 -6
  9. package/esm2020/controls/grid/grid.component.mjs +17 -16
  10. package/esm2020/controls/list-checkbox/list-checkbox.component.mjs +8 -7
  11. package/esm2020/controls/multi-select/multi-select.component.mjs +7 -6
  12. package/esm2020/controls/select/select.component.mjs +7 -6
  13. package/esm2020/controls/timeline/timeline.component.mjs +7 -6
  14. package/esm2020/directives/index.mjs +2 -0
  15. package/esm2020/directives/safehtml.directive.mjs +42 -0
  16. package/esm2020/global-config.mjs +2 -1
  17. package/esm2020/info-library.module.mjs +6 -1
  18. package/esm2020/layouts/dialog/dialog.component.mjs +11 -10
  19. package/esm2020/layouts/modal/modal.component.mjs +10 -9
  20. package/esm2020/layouts/pagebar/pagebar.component.mjs +14 -13
  21. package/esm2020/layouts/topbar/topbar.component.mjs +8 -7
  22. package/esm2020/model/html-sanitizer-config.model.mjs +9 -0
  23. package/esm2020/public_api.mjs +3 -2
  24. package/esm2020/service/configuration.service.mjs +20 -1
  25. package/fesm2015/info-library.mjs +199 -127
  26. package/fesm2015/info-library.mjs.map +1 -1
  27. package/fesm2020/info-library.mjs +194 -127
  28. package/fesm2020/info-library.mjs.map +1 -1
  29. package/global-config.d.ts +2 -0
  30. package/info-library.module.d.ts +53 -52
  31. package/model/html-sanitizer-config.model.d.ts +4 -0
  32. package/package.json +4 -4
  33. package/public_api.d.ts +2 -1
  34. package/service/configuration.service.d.ts +1 -0
@@ -17,11 +17,12 @@ import * as i6 from "@angular/common";
17
17
  import * as i7 from "@angular/material/icon";
18
18
  import * as i8 from "@angular/material/button";
19
19
  import * as i9 from "@angular/material/progress-bar";
20
- import * as i10 from "../../pipe/translate.pipe";
21
- import * as i11 from "@angular/forms";
22
- import * as i12 from "../../controls/input/input.component";
23
- import * as i13 from "../modal/modal.component";
24
- import * as i14 from "../../model/form-prop.model";
20
+ import * as i10 from "../../directives/safehtml.directive";
21
+ import * as i11 from "../../pipe/translate.pipe";
22
+ import * as i12 from "@angular/forms";
23
+ import * as i13 from "../../controls/input/input.component";
24
+ import * as i14 from "../modal/modal.component";
25
+ import * as i15 from "../../model/form-prop.model";
25
26
  function InfoPagebarComponent_ng_container_1_mat_icon_2_Template(rf, ctx) { if (rf & 1) {
26
27
  i0.ɵɵelementStart(0, "mat-icon");
27
28
  i0.ɵɵtext(1);
@@ -109,7 +110,7 @@ function InfoPagebarComponent_ng_container_1_Template(rf, ctx) { if (rf & 1) {
109
110
  i0.ɵɵadvance(1);
110
111
  i0.ɵɵproperty("ngIf", ctx_r0.icon);
111
112
  i0.ɵɵadvance(1);
112
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind1(4, 6, ctx_r0.pagetitle), i0.ɵɵsanitizeHtml);
113
+ i0.ɵɵproperty("safeHtml", i0.ɵɵpipeBind1(4, 6, ctx_r0.pagetitle));
113
114
  i0.ɵɵadvance(3);
114
115
  i0.ɵɵproperty("ngIf", ctx_r0.backurl);
115
116
  i0.ɵɵadvance(1);
@@ -232,7 +233,7 @@ function InfoPagebarComponent_div_2_Template(rf, ctx) { if (rf & 1) {
232
233
  i0.ɵɵadvance(2);
233
234
  i0.ɵɵproperty("ngIf", ctx_r1.podeCriarAtalho);
234
235
  i0.ɵɵadvance(1);
235
- i0.ɵɵproperty("innerHTML", i0.ɵɵpipeBind1(8, 9, ctx_r1.description), i0.ɵɵsanitizeHtml);
236
+ i0.ɵɵproperty("safeHtml", i0.ɵɵpipeBind1(8, 9, ctx_r1.description));
236
237
  i0.ɵɵadvance(3);
237
238
  i0.ɵɵproperty("ngIf", ctx_r1.backurl);
238
239
  i0.ɵɵadvance(1);
@@ -345,7 +346,7 @@ export class InfoPagebarComponent {
345
346
  }
346
347
  }
347
348
  /** @nocollapse */ InfoPagebarComponent.ɵfac = function InfoPagebarComponent_Factory(t) { return new (t || InfoPagebarComponent)(i0.ɵɵdirectiveInject(i1.Router), i0.ɵɵdirectiveInject(i2.MatDialog), i0.ɵɵdirectiveInject(i3.InfoDataService), i0.ɵɵdirectiveInject(i4.InfoTranslateService), i0.ɵɵdirectiveInject(i5.InfoPlatformModel), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef)); };
348
- /** @nocollapse */ InfoPagebarComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: InfoPagebarComponent, selectors: [["info-pagebar"]], inputs: { margintop: "margintop", icon: "icon", description: "description", backurl: "backurl", access: "access", transparent: "transparent", pagetitle: "pagetitle" }, ngContentSelectors: _c5, decls: 6, vars: 9, consts: [[3, "ngStyle", "ngClass"], [4, "ngIf"], ["class", "row", 4, "ngIf"], ["class", "loading-bar", 4, "ngIf"], ["content", ""], [3, "ngClass"], [3, "innerHTML"], [1, "link-button"], ["mat-button", "", "type", "button", "color", "primary", 3, "click", 4, "ngIf"], [4, "ngTemplateOutlet"], ["class", "acesso-rapido", 3, "mouseenter", "mouseleave", 4, "ngIf"], ["mat-button", "", "type", "button", "color", "primary", 3, "click"], [1, "fs-20"], [1, "acesso-rapido", 3, "mouseenter", "mouseleave"], [4, "ngFor", "ngForOf"], ["target", "_blank", 3, "routerLink"], [1, "row"], [1, "col-md-6"], ["id", "page-title", 4, "ngIf"], [3, "outerHTML"], ["type", "button", "mat-icon-button", "", "class", "shortcut-button", 3, "ngClass", "disabled", "click", 4, "ngIf"], [1, "pagebar-description", 3, "innerHTML"], [1, "col-md-6", "align-right", "buttons"], ["id", "page-title"], ["type", "button", "mat-icon-button", "", 1, "shortcut-button", 3, "ngClass", "disabled", "click"], ["inline", ""], [1, "loading-bar"], ["color", "primary", "mode", "indeterminate"]], template: function InfoPagebarComponent_Template(rf, ctx) { if (rf & 1) {
349
+ /** @nocollapse */ InfoPagebarComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: InfoPagebarComponent, selectors: [["info-pagebar"]], inputs: { margintop: "margintop", icon: "icon", description: "description", backurl: "backurl", access: "access", transparent: "transparent", pagetitle: "pagetitle" }, ngContentSelectors: _c5, decls: 6, vars: 9, consts: [[3, "ngStyle", "ngClass"], [4, "ngIf"], ["class", "row", 4, "ngIf"], ["class", "loading-bar", 4, "ngIf"], ["content", ""], [3, "ngClass"], [3, "safeHtml"], [1, "link-button"], ["mat-button", "", "type", "button", "color", "primary", 3, "click", 4, "ngIf"], [4, "ngTemplateOutlet"], ["class", "acesso-rapido", 3, "mouseenter", "mouseleave", 4, "ngIf"], ["mat-button", "", "type", "button", "color", "primary", 3, "click"], [1, "fs-20"], [1, "acesso-rapido", 3, "mouseenter", "mouseleave"], [4, "ngFor", "ngForOf"], ["target", "_blank", 3, "routerLink"], [1, "row"], [1, "col-md-6"], ["id", "page-title", 4, "ngIf"], [3, "outerHTML"], ["type", "button", "mat-icon-button", "", "class", "shortcut-button", 3, "ngClass", "disabled", "click", 4, "ngIf"], [1, "pagebar-description", 3, "safeHtml"], [1, "col-md-6", "align-right", "buttons"], ["id", "page-title"], ["type", "button", "mat-icon-button", "", 1, "shortcut-button", 3, "ngClass", "disabled", "click"], ["inline", ""], [1, "loading-bar"], ["color", "primary", "mode", "indeterminate"]], template: function InfoPagebarComponent_Template(rf, ctx) { if (rf & 1) {
349
350
  i0.ɵɵprojectionDef();
350
351
  i0.ɵɵelementStart(0, "div", 0);
351
352
  i0.ɵɵtemplate(1, InfoPagebarComponent_ng_container_1_Template, 10, 11, "ng-container", 1);
@@ -361,10 +362,10 @@ export class InfoPagebarComponent {
361
362
  i0.ɵɵproperty("ngIf", ctx._platform.Config.ux <= 2);
362
363
  i0.ɵɵadvance(1);
363
364
  i0.ɵɵproperty("ngIf", ctx.loading);
364
- } }, dependencies: [i6.NgClass, i6.NgForOf, i6.NgIf, i6.NgTemplateOutlet, i6.NgStyle, i7.MatIcon, i8.MatButton, i9.MatProgressBar, i1.RouterLinkWithHref, i10.InfoTranslatePipe], styles: ["body[_ngcontent-%COMP%]{--ux-cor-hover: #F5F5F5;--ux-cor-hover-2: #eee;--ux-cor-hover-3: #fafafa;--ux-cor-hover-4: #e5e3ed;--ux-cor-hover-5: #f9f9f9;--ux-cor-bg: #adadad;--ux-cor-P: #fff;--ux-cor-A: #eeeef2;--ux-cor-X: #f5f5f5;--ux-cor-S: #666;--ux-cor-O: #ddd;--ux-cor-F: #222;--ux-cor-D: #ccdbb4;--ux-cor-linha: #CCCEDB;--ux-cor-btn-pri: #eeeef2;--ux-cor-btn-wrn: #BA5005;--ux-cor-btn-dis: #6a7282}.topmenu[_nghost-%COMP%] > div[_ngcontent-%COMP%]{left:0!important;top:125px!important;width:100%!important}.uxc3[_nghost-%COMP%] > div[_ngcontent-%COMP%]{position:fixed;left:120px;z-index:100;top:80px;background:#FFF;padding:15px 20px 10px;min-height:60px;width:calc(100% - 120px);transition:left .2s ease-in-out,width .2s ease-in-out}.uxc3[_nghost-%COMP%] > div[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:1.7em;font-weight:500;display:inline-block;padding-right:20px;margin:0;max-width:65%;background:inherit}.uxc3[_nghost-%COMP%] > div[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{top:3px;font-size:22px}.uxc3[_nghost-%COMP%] > div[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] > small[_ngcontent-%COMP%]{font-size:70%}.uxc3[_nghost-%COMP%] > div[_ngcontent-%COMP%] h2.title-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{top:14px;left:0;font-size:42px;position:absolute}.uxc3[_nghost-%COMP%] > div[_ngcontent-%COMP%] h2.title-icon[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:30px;margin-left:40px;position:relative;top:3px}.uxc3[_nghost-%COMP%] > div[_ngcontent-%COMP%] .link-button[_ngcontent-%COMP%]{display:block;background:inherit;position:absolute;right:20px;top:18px;padding-left:20px}.uxc3[_nghost-%COMP%] > div[_ngcontent-%COMP%] hr[_ngcontent-%COMP%]{position:absolute;top:50%;margin:0;width:calc(100% - 40px);z-index:-1}@media only screen and (max-width: 991px){.uxc3[_nghost-%COMP%] > div[_ngcontent-%COMP%]{left:0}}.uxc2[_nghost-%COMP%] > div[_ngcontent-%COMP%]{position:fixed;left:120px;right:0;z-index:100;top:70px;background:#fff;padding:10px 20px;min-height:60px;border-bottom:solid 1px #e4e9f0;box-shadow:0 0 5px #eee}@media only screen and (max-width: 543px){.uxc2[_nghost-%COMP%] > div[_ngcontent-%COMP%]{left:0}}.uxc2[_nghost-%COMP%] > div[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;padding:0;font-size:1.2em;display:inline}.uxc2[_nghost-%COMP%] > div[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:.9em;width:100%;padding-top:3px;margin:0}@media only screen and (max-width: 543px){.uxc2[_nghost-%COMP%] > div[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{display:none}}.uxc2[_nghost-%COMP%] > div[_ngcontent-%COMP%] .buttons[_ngcontent-%COMP%]{padding-top:2px}.uxc2[_nghost-%COMP%] > div[_ngcontent-%COMP%] .buttons[_ngcontent-%COMP%] .mat-button[_ngcontent-%COMP%]{margin-left:8px}.uxc2[_nghost-%COMP%] > div[_ngcontent-%COMP%]:hover .shortcut-button[_ngcontent-%COMP%]{opacity:1}.uxc2[_nghost-%COMP%] > div[_ngcontent-%COMP%] .shortcut-button[_ngcontent-%COMP%]{width:22px;height:22px;line-height:22px;text-align:center;opacity:0;transition:opacity .2s}.uxc2[_nghost-%COMP%] > div[_ngcontent-%COMP%] .shortcut-button.tem-atalho[_ngcontent-%COMP%]{opacity:1!important}.uxc2[_nghost-%COMP%] > div[_ngcontent-%COMP%] .shortcut-button[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{font-size:14px;color:#b99206;top:-2px}"] });
365
+ } }, dependencies: [i6.NgClass, i6.NgForOf, i6.NgIf, i6.NgTemplateOutlet, i6.NgStyle, i7.MatIcon, i8.MatButton, i9.MatProgressBar, i1.RouterLinkWithHref, i10.InfoSafeHtmlDirective, i11.InfoTranslatePipe], styles: ["body[_ngcontent-%COMP%]{--ux-cor-hover: #F5F5F5;--ux-cor-hover-2: #eee;--ux-cor-hover-3: #fafafa;--ux-cor-hover-4: #e5e3ed;--ux-cor-hover-5: #f9f9f9;--ux-cor-bg: #adadad;--ux-cor-P: #fff;--ux-cor-A: #eeeef2;--ux-cor-X: #f5f5f5;--ux-cor-S: #666;--ux-cor-O: #ddd;--ux-cor-F: #222;--ux-cor-D: #ccdbb4;--ux-cor-linha: #CCCEDB;--ux-cor-btn-pri: #eeeef2;--ux-cor-btn-wrn: #BA5005;--ux-cor-btn-dis: #6a7282}.topmenu[_nghost-%COMP%] > div[_ngcontent-%COMP%]{left:0!important;top:125px!important;width:100%!important}.uxc3[_nghost-%COMP%] > div[_ngcontent-%COMP%]{position:fixed;left:120px;z-index:100;top:80px;background:#FFF;padding:15px 20px 10px;min-height:60px;width:calc(100% - 120px);transition:left .2s ease-in-out,width .2s ease-in-out}.uxc3[_nghost-%COMP%] > div[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:1.7em;font-weight:500;display:inline-block;padding-right:20px;margin:0;max-width:65%;background:inherit}.uxc3[_nghost-%COMP%] > div[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{top:3px;font-size:22px}.uxc3[_nghost-%COMP%] > div[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] > small[_ngcontent-%COMP%]{font-size:70%}.uxc3[_nghost-%COMP%] > div[_ngcontent-%COMP%] h2.title-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{top:14px;left:0;font-size:42px;position:absolute}.uxc3[_nghost-%COMP%] > div[_ngcontent-%COMP%] h2.title-icon[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:30px;margin-left:40px;position:relative;top:3px}.uxc3[_nghost-%COMP%] > div[_ngcontent-%COMP%] .link-button[_ngcontent-%COMP%]{display:block;background:inherit;position:absolute;right:20px;top:18px;padding-left:20px}.uxc3[_nghost-%COMP%] > div[_ngcontent-%COMP%] hr[_ngcontent-%COMP%]{position:absolute;top:50%;margin:0;width:calc(100% - 40px);z-index:-1}@media only screen and (max-width: 991px){.uxc3[_nghost-%COMP%] > div[_ngcontent-%COMP%]{left:0}}.uxc2[_nghost-%COMP%] > div[_ngcontent-%COMP%]{position:fixed;left:120px;right:0;z-index:100;top:70px;background:#fff;padding:10px 20px;min-height:60px;border-bottom:solid 1px #e4e9f0;box-shadow:0 0 5px #eee}@media only screen and (max-width: 543px){.uxc2[_nghost-%COMP%] > div[_ngcontent-%COMP%]{left:0}}.uxc2[_nghost-%COMP%] > div[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;padding:0;font-size:1.2em;display:inline}.uxc2[_nghost-%COMP%] > div[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:.9em;width:100%;padding-top:3px;margin:0}@media only screen and (max-width: 543px){.uxc2[_nghost-%COMP%] > div[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{display:none}}.uxc2[_nghost-%COMP%] > div[_ngcontent-%COMP%] .buttons[_ngcontent-%COMP%]{padding-top:2px}.uxc2[_nghost-%COMP%] > div[_ngcontent-%COMP%] .buttons[_ngcontent-%COMP%] .mat-button[_ngcontent-%COMP%]{margin-left:8px}.uxc2[_nghost-%COMP%] > div[_ngcontent-%COMP%]:hover .shortcut-button[_ngcontent-%COMP%]{opacity:1}.uxc2[_nghost-%COMP%] > div[_ngcontent-%COMP%] .shortcut-button[_ngcontent-%COMP%]{width:22px;height:22px;line-height:22px;text-align:center;opacity:0;transition:opacity .2s}.uxc2[_nghost-%COMP%] > div[_ngcontent-%COMP%] .shortcut-button.tem-atalho[_ngcontent-%COMP%]{opacity:1!important}.uxc2[_nghost-%COMP%] > div[_ngcontent-%COMP%] .shortcut-button[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{font-size:14px;color:#b99206;top:-2px}"] });
365
366
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfoPagebarComponent, [{
366
367
  type: Component,
367
- args: [{ selector: 'info-pagebar', template: "<div [ngStyle]=\"{ 'marginTop': margintop + 'px' }\" [ngClass]=\"{ 'transparent': transparent }\" >\r\n \r\n <ng-container *ngIf=\"_platform.Config.ux >= 3\" >\r\n <h2 [ngClass]=\"{ 'title-icon': icon }\">\r\n <mat-icon *ngIf=\"icon\">{{ icon }}</mat-icon>\r\n <span [innerHTML]=\"pagetitle | translate\"></span>\r\n </h2>\r\n \r\n <div class=\"link-button\">\r\n <button mat-button type=\"button\" *ngIf=\"backurl\" color=\"primary\" (click)=\"goBack()\">\r\n <mat-icon class=\"fs-20\">chevron_left</mat-icon>{{ 'Voltar' | translate}}</button>\r\n\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n\r\n <dl *ngIf=\"(access || []).length > 0\" class=\"acesso-rapido\" (mouseenter)=\"exibirAcessos = true\" (mouseleave)=\"exibirAcessos = false\">\r\n <dt>\r\n <mat-icon class=\"fs-20\">share</mat-icon>\r\n </dt>\r\n <dd *ngIf=\"exibirAcessos\">\r\n <ul>\r\n <li *ngFor=\"let a of access\">\r\n <a target=\"_blank\" [routerLink]=\"a.Url\" ><mat-icon>chevron_right</mat-icon> {{ a.Label | translate }}</a>\r\n </li>\r\n </ul> \r\n </dd>\r\n </dl>\r\n </div>\r\n <hr>\r\n </ng-container>\r\n \r\n <div class=\"row\" *ngIf=\"_platform.Config.ux <= 2\" >\r\n <div class=\"col-md-6\">\r\n <h2>\r\n <label id=\"page-title\" *ngIf=\"_platform.PaginaAtiva\">\r\n <mat-icon>{{ _platform.PaginaAtiva.Icone }}</mat-icon>\r\n {{ _platform.PaginaAtiva.Titulo | translate }}\r\n\r\n <ng-container *ngIf=\"pagetitle != null && pagetitle != ''\"> / </ng-container>\r\n </label>\r\n <label [outerHTML]=\"pagetitle | translate\"></label>\r\n </h2>\r\n <button *ngIf=\"podeCriarAtalho\" type=\"button\" mat-icon-button class=\"shortcut-button\" [ngClass]=\"{ 'tem-atalho': !!atalhoId }\" (click)=\"toggleAtalho()\" [disabled]=\"loading\">\r\n <mat-icon inline>{{ atalhoId ? 'star' : 'star_border' }}</mat-icon>\r\n </button>\r\n \r\n <p class=\"pagebar-description\" [innerHTML]=\"description | translate\"></p>\r\n </div>\r\n\r\n <div class=\"col-md-6 align-right buttons\">\r\n <button mat-button type=\"button\" *ngIf=\"backurl\" color=\"primary\" (click)=\"goBack()\">\r\n <mat-icon class=\"fs-20\">chevron_left</mat-icon>{{ 'Voltar' | translate}}\r\n </button>\r\n \r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n\r\n <dl *ngIf=\"(access || []).length > 0\" class=\"acesso-rapido\" (mouseenter)=\"exibirAcessos = true\" (mouseleave)=\"exibirAcessos = false\">\r\n <dt>\r\n <mat-icon class=\"fs-20\">share</mat-icon>\r\n </dt>\r\n <dd *ngIf=\"exibirAcessos\">\r\n <ul>\r\n <li *ngFor=\"let a of access\">\r\n <a target=\"_blank\" [routerLink]=\"a.Url\" ><mat-icon>chevron_right</mat-icon> {{ a.Label | translate }}</a>\r\n </li>\r\n </ul> \r\n </dd>\r\n </dl>\r\n </div>\r\n </div>\r\n</div>\r\n<section class=\"loading-bar\" *ngIf=\"loading\">\r\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\r\n</section>\r\n\r\n<ng-template #content><ng-content></ng-content></ng-template>", styles: ["body{--ux-cor-hover: #F5F5F5;--ux-cor-hover-2: #eee;--ux-cor-hover-3: #fafafa;--ux-cor-hover-4: #e5e3ed;--ux-cor-hover-5: #f9f9f9;--ux-cor-bg: #adadad;--ux-cor-P: #fff;--ux-cor-A: #eeeef2;--ux-cor-X: #f5f5f5;--ux-cor-S: #666;--ux-cor-O: #ddd;--ux-cor-F: #222;--ux-cor-D: #ccdbb4;--ux-cor-linha: #CCCEDB;--ux-cor-btn-pri: #eeeef2;--ux-cor-btn-wrn: #BA5005;--ux-cor-btn-dis: #6a7282}:host.topmenu>div{left:0!important;top:125px!important;width:100%!important}:host.uxc3>div{position:fixed;left:120px;z-index:100;top:80px;background:#FFF;padding:15px 20px 10px;min-height:60px;width:calc(100% - 120px);transition:left .2s ease-in-out,width .2s ease-in-out}:host.uxc3>div h2{font-size:1.7em;font-weight:500;display:inline-block;padding-right:20px;margin:0;max-width:65%;background:inherit}:host.uxc3>div h2 .mat-icon{top:3px;font-size:22px}:host.uxc3>div h2>small{font-size:70%}:host.uxc3>div h2.title-icon mat-icon{top:14px;left:0;font-size:42px;position:absolute}:host.uxc3>div h2.title-icon span{font-size:30px;margin-left:40px;position:relative;top:3px}:host.uxc3>div .link-button{display:block;background:inherit;position:absolute;right:20px;top:18px;padding-left:20px}:host.uxc3>div hr{position:absolute;top:50%;margin:0;width:calc(100% - 40px);z-index:-1}@media only screen and (max-width: 991px){:host.uxc3>div{left:0}}:host.uxc2>div{position:fixed;left:120px;right:0;z-index:100;top:70px;background:#fff;padding:10px 20px;min-height:60px;border-bottom:solid 1px #e4e9f0;box-shadow:0 0 5px #eee}@media only screen and (max-width: 543px){:host.uxc2>div{left:0}}:host.uxc2>div h2{margin:0;padding:0;font-size:1.2em;display:inline}:host.uxc2>div p{font-size:.9em;width:100%;padding-top:3px;margin:0}@media only screen and (max-width: 543px){:host.uxc2>div p{display:none}}:host.uxc2>div .buttons{padding-top:2px}:host.uxc2>div .buttons .mat-button{margin-left:8px}:host.uxc2>div:hover .shortcut-button{opacity:1}:host.uxc2>div .shortcut-button{width:22px;height:22px;line-height:22px;text-align:center;opacity:0;transition:opacity .2s}:host.uxc2>div .shortcut-button.tem-atalho{opacity:1!important}:host.uxc2>div .shortcut-button .mat-icon{font-size:14px;color:#b99206;top:-2px}\n"] }]
368
+ args: [{ selector: 'info-pagebar', template: "<div [ngStyle]=\"{ 'marginTop': margintop + 'px' }\" [ngClass]=\"{ 'transparent': transparent }\" >\r\n \r\n <ng-container *ngIf=\"_platform.Config.ux >= 3\" >\r\n <h2 [ngClass]=\"{ 'title-icon': icon }\">\r\n <mat-icon *ngIf=\"icon\">{{ icon }}</mat-icon>\r\n <span [safeHtml]=\"pagetitle | translate\"></span>\r\n </h2>\r\n \r\n <div class=\"link-button\">\r\n <button mat-button type=\"button\" *ngIf=\"backurl\" color=\"primary\" (click)=\"goBack()\">\r\n <mat-icon class=\"fs-20\">chevron_left</mat-icon>{{ 'Voltar' | translate}}</button>\r\n\r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n\r\n <dl *ngIf=\"(access || []).length > 0\" class=\"acesso-rapido\" (mouseenter)=\"exibirAcessos = true\" (mouseleave)=\"exibirAcessos = false\">\r\n <dt>\r\n <mat-icon class=\"fs-20\">share</mat-icon>\r\n </dt>\r\n <dd *ngIf=\"exibirAcessos\">\r\n <ul>\r\n <li *ngFor=\"let a of access\">\r\n <a target=\"_blank\" [routerLink]=\"a.Url\" ><mat-icon>chevron_right</mat-icon> {{ a.Label | translate }}</a>\r\n </li>\r\n </ul> \r\n </dd>\r\n </dl>\r\n </div>\r\n <hr>\r\n </ng-container>\r\n \r\n <div class=\"row\" *ngIf=\"_platform.Config.ux <= 2\" >\r\n <div class=\"col-md-6\">\r\n <h2>\r\n <label id=\"page-title\" *ngIf=\"_platform.PaginaAtiva\">\r\n <mat-icon>{{ _platform.PaginaAtiva.Icone }}</mat-icon>\r\n {{ _platform.PaginaAtiva.Titulo | translate }}\r\n\r\n <ng-container *ngIf=\"pagetitle != null && pagetitle != ''\"> / </ng-container>\r\n </label>\r\n <label [outerHTML]=\"pagetitle | translate\"></label>\r\n </h2>\r\n <button *ngIf=\"podeCriarAtalho\" type=\"button\" mat-icon-button class=\"shortcut-button\" [ngClass]=\"{ 'tem-atalho': !!atalhoId }\" (click)=\"toggleAtalho()\" [disabled]=\"loading\">\r\n <mat-icon inline>{{ atalhoId ? 'star' : 'star_border' }}</mat-icon>\r\n </button>\r\n \r\n <p class=\"pagebar-description\" [safeHtml]=\"description | translate\"></p>\r\n </div>\r\n\r\n <div class=\"col-md-6 align-right buttons\">\r\n <button mat-button type=\"button\" *ngIf=\"backurl\" color=\"primary\" (click)=\"goBack()\">\r\n <mat-icon class=\"fs-20\">chevron_left</mat-icon>{{ 'Voltar' | translate}}\r\n </button>\r\n \r\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\r\n\r\n <dl *ngIf=\"(access || []).length > 0\" class=\"acesso-rapido\" (mouseenter)=\"exibirAcessos = true\" (mouseleave)=\"exibirAcessos = false\">\r\n <dt>\r\n <mat-icon class=\"fs-20\">share</mat-icon>\r\n </dt>\r\n <dd *ngIf=\"exibirAcessos\">\r\n <ul>\r\n <li *ngFor=\"let a of access\">\r\n <a target=\"_blank\" [routerLink]=\"a.Url\" ><mat-icon>chevron_right</mat-icon> {{ a.Label | translate }}</a>\r\n </li>\r\n </ul> \r\n </dd>\r\n </dl>\r\n </div>\r\n </div>\r\n</div>\r\n<section class=\"loading-bar\" *ngIf=\"loading\">\r\n <mat-progress-bar color=\"primary\" mode=\"indeterminate\"></mat-progress-bar>\r\n</section>\r\n\r\n<ng-template #content><ng-content></ng-content></ng-template>", styles: ["body{--ux-cor-hover: #F5F5F5;--ux-cor-hover-2: #eee;--ux-cor-hover-3: #fafafa;--ux-cor-hover-4: #e5e3ed;--ux-cor-hover-5: #f9f9f9;--ux-cor-bg: #adadad;--ux-cor-P: #fff;--ux-cor-A: #eeeef2;--ux-cor-X: #f5f5f5;--ux-cor-S: #666;--ux-cor-O: #ddd;--ux-cor-F: #222;--ux-cor-D: #ccdbb4;--ux-cor-linha: #CCCEDB;--ux-cor-btn-pri: #eeeef2;--ux-cor-btn-wrn: #BA5005;--ux-cor-btn-dis: #6a7282}:host.topmenu>div{left:0!important;top:125px!important;width:100%!important}:host.uxc3>div{position:fixed;left:120px;z-index:100;top:80px;background:#FFF;padding:15px 20px 10px;min-height:60px;width:calc(100% - 120px);transition:left .2s ease-in-out,width .2s ease-in-out}:host.uxc3>div h2{font-size:1.7em;font-weight:500;display:inline-block;padding-right:20px;margin:0;max-width:65%;background:inherit}:host.uxc3>div h2 .mat-icon{top:3px;font-size:22px}:host.uxc3>div h2>small{font-size:70%}:host.uxc3>div h2.title-icon mat-icon{top:14px;left:0;font-size:42px;position:absolute}:host.uxc3>div h2.title-icon span{font-size:30px;margin-left:40px;position:relative;top:3px}:host.uxc3>div .link-button{display:block;background:inherit;position:absolute;right:20px;top:18px;padding-left:20px}:host.uxc3>div hr{position:absolute;top:50%;margin:0;width:calc(100% - 40px);z-index:-1}@media only screen and (max-width: 991px){:host.uxc3>div{left:0}}:host.uxc2>div{position:fixed;left:120px;right:0;z-index:100;top:70px;background:#fff;padding:10px 20px;min-height:60px;border-bottom:solid 1px #e4e9f0;box-shadow:0 0 5px #eee}@media only screen and (max-width: 543px){:host.uxc2>div{left:0}}:host.uxc2>div h2{margin:0;padding:0;font-size:1.2em;display:inline}:host.uxc2>div p{font-size:.9em;width:100%;padding-top:3px;margin:0}@media only screen and (max-width: 543px){:host.uxc2>div p{display:none}}:host.uxc2>div .buttons{padding-top:2px}:host.uxc2>div .buttons .mat-button{margin-left:8px}:host.uxc2>div:hover .shortcut-button{opacity:1}:host.uxc2>div .shortcut-button{width:22px;height:22px;line-height:22px;text-align:center;opacity:0;transition:opacity .2s}:host.uxc2>div .shortcut-button.tem-atalho{opacity:1!important}:host.uxc2>div .shortcut-button .mat-icon{font-size:14px;color:#b99206;top:-2px}\n"] }]
368
369
  }], function () { return [{ type: i1.Router }, { type: i2.MatDialog }, { type: i3.InfoDataService }, { type: i4.InfoTranslateService }, { type: i5.InfoPlatformModel }, { type: i0.Renderer2 }, { type: i0.ElementRef }]; }, { margintop: [{
369
370
  type: Input
370
371
  }], icon: [{
@@ -401,7 +402,7 @@ export class AtalhoModalComponent {
401
402
  i0.ɵɵproperty("form", _r0)("ngModel", ctx.model);
402
403
  i0.ɵɵadvance(4);
403
404
  i0.ɵɵproperty("ngModel", ctx.model.Titulo);
404
- } }, dependencies: [i11.ɵNgNoValidate, i11.NgControlStatus, i11.NgControlStatusGroup, i11.RequiredValidator, i11.NgModel, i11.NgForm, i12.InfoInputComponent, i13.InfoModalComponent], encapsulation: 2 });
405
+ } }, dependencies: [i12.ɵNgNoValidate, i12.NgControlStatus, i12.NgControlStatusGroup, i12.RequiredValidator, i12.NgModel, i12.NgForm, i13.InfoInputComponent, i14.InfoModalComponent], encapsulation: 2 });
405
406
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AtalhoModalComponent, [{
406
407
  type: Component,
407
408
  args: [{
@@ -415,8 +416,8 @@ export class AtalhoModalComponent {
415
416
  </info-modal>
416
417
  `
417
418
  }]
418
- }], function () { return [{ type: i14.InfoFormPropModel, decorators: [{
419
+ }], function () { return [{ type: i15.InfoFormPropModel, decorators: [{
419
420
  type: Inject,
420
421
  args: [MAT_DIALOG_DATA]
421
422
  }] }]; }, null); })();
422
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2xheW91dHMvcGFnZWJhci9wYWdlYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvbGF5b3V0cy9wYWdlYmFyL3BhZ2ViYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNKbkQsZ0NBQXVCO0lBQUEsWUFBVTtJQUFBLGlCQUFXOzs7SUFBckIsZUFBVTtJQUFWLGlDQUFVOzs7O0lBS2pDLGtDQUFvRjtJQUFuQixxTEFBUyxlQUFBLGVBQVEsQ0FBQSxJQUFDO0lBQy9FLG9DQUF3QjtJQUFBLDRCQUFZO0lBQUEsaUJBQVc7SUFBQSxZQUF5Qjs7SUFB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RUFBNkMsd0RBQUE7UUFFL0IsZUFBOEI7UUFBOUIsbURBQThCO1FBNEIzQixlQUE4QjtRQUE5QixtREFBOEI7UUF3Q3RCLGVBQWE7UUFBYixrQ0FBYTs7dUZEdkQ5QixvQkFBb0I7Y0FMaEMsU0FBUzsyQkFDQyxjQUFjO21PQU1mLFNBQVM7a0JBQWpCLEtBQUs7WUFDRyxJQUFJO2tCQUFaLEtBQUs7WUFDRyxXQUFXO2tCQUFuQixLQUFLO1lBQ0csT0FBTztrQkFBZixLQUFLO1lBQ0csTUFBTTtrQkFBZCxLQUFLO1lBQ0csV0FBVztrQkFBbkIsS0FBSztZQU9rQixTQUFTO2tCQUFoQyxLQUFLO21CQUFDLFdBQVc7O0FBb0duQixNQUFNLE9BQU8sb0JBQW9CO0lBRWhDLFlBQTRDLElBQXVCO1FBQXZCLFNBQUksR0FBSixJQUFJLENBQW1CO1FBRG5FLFVBQUssR0FBUSxFQUFFLENBQUM7UUFFZixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxzQ0FBc0MsQ0FBQztJQUN6RSxDQUFDOzsyR0FMVyxvQkFBb0IsdUJBRVosZUFBZTtzR0FGdkIsb0JBQW9CO1FBVC9CLHFDQUFrRjtRQUFwQixpSkFBbUI7UUFDaEYsa0NBQTZDLGFBQUEsb0JBQUE7UUFFYix3SkFBMEI7UUFBNkMsaUJBQWEsRUFBQSxFQUFBLEVBQUE7OztRQUgxRSwwQkFBa0Isc0JBQUE7UUFHNUIsZUFBMEI7UUFBMUIsMENBQTBCOzt1RkFNaEQsb0JBQW9CO2NBWGhDLFNBQVM7ZUFBQztnQkFDVixRQUFRLEVBQUU7Ozs7Ozs7O0VBUVQ7YUFDRDs7c0JBR2EsTUFBTTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgSW5qZWN0LCBFbGVtZW50UmVmLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyLCBOYXZpZ2F0aW9uU3RhcnQsIEd1YXJkc0NoZWNrU3RhcnQsIE5hdmlnYXRpb25FbmQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBJbmZvUGxhdGZvcm1Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVsL3BsYXRmb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgSW5mb0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9kYXRhLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbmZvVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvdHJhbnNsYXRlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEluZm9Gb3JtUHJvcE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWwvZm9ybS1wcm9wLm1vZGVsJztcclxuaW1wb3J0IHsgSW5mb1BhZ2VBY3Rpb24gfSBmcm9tICcuLi8uLi9lbnVtL3BhZ2UtYWN0aW9uLmVudW0nO1xyXG5pbXBvcnQgeyBJbmZvTW9kYWxBY3Rpb24gfSBmcm9tICcuLi8uLi9lbnVtL21vZGFsLWFjdGlvbi5lbnVtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnaW5mby1wYWdlYmFyJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vcGFnZWJhci5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vcGFnZWJhci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmZvUGFnZWJhckNvbXBvbmVudCB7XHJcblxyXG5cdEBJbnB1dCgpIG1hcmdpbnRvcCA9IDA7XHJcblx0QElucHV0KCkgaWNvbjogc3RyaW5nID0gbnVsbDtcclxuXHRASW5wdXQoKSBkZXNjcmlwdGlvbjogc3RyaW5nO1xyXG5cdEBJbnB1dCgpIGJhY2t1cmw6IHN0cmluZyA9IG51bGw7XHJcblx0QElucHV0KCkgYWNjZXNzOiBhbnkgPSBbXTtcclxuXHRASW5wdXQoKSB0cmFuc3BhcmVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHRwcml2YXRlIF9wYWdlVGl0bGU6IHN0cmluZztcclxuXHRnZXQgcGFnZXRpdGxlKCl7XHJcblx0XHRyZXR1cm4gdGhpcy5fcGFnZVRpdGxlO1xyXG5cdH1cclxuXHJcblx0QElucHV0KCdwYWdldGl0bGUnKSBzZXQgcGFnZXRpdGxlKHZhbHVlOiBzdHJpbmcpeyBcclxuXHRcdHRoaXMuX3BhZ2VUaXRsZSA9IHZhbHVlLnJlcGxhY2UoL1xcKC9nLCAnPHNtYWxsPignKS5yZXBsYWNlKC9cXCkvZywgJyk8L3NtYWxsPicpO1xyXG5cdH1cclxuXHJcblx0bG9hZGluZyA9IGZhbHNlO1xyXG5cdGF0YWxob0lkOiBhbnkgPSBudWxsO1xyXG5cdHBvZGVDcmlhckF0YWxobyA9IGZhbHNlO1xyXG5cdGV4aWJpckFjZXNzb3MgPSBmYWxzZTtcclxuXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXHJcblx0XHRcdFx0cHJpdmF0ZSBfbW9kYWw6IE1hdERpYWxvZyxcclxuXHRcdFx0XHRwcml2YXRlIF9kYXRhU2VydmljZTogSW5mb0RhdGFTZXJ2aWNlLFxyXG5cdFx0XHRcdHByaXZhdGUgX3RyYW5zbGF0ZTogSW5mb1RyYW5zbGF0ZVNlcnZpY2UsXHJcblx0XHRcdFx0cHVibGljIF9wbGF0Zm9ybTogSW5mb1BsYXRmb3JtTW9kZWwsXHJcblx0XHRcdFx0cHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBfZWxlbWVudDogRWxlbWVudFJlZikgeyBcclxuXHRcdF9yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShlID0+IHtcclxuICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQgfHwgZSBpbnN0YW5jZW9mIEd1YXJkc0NoZWNrU3RhcnQpXHJcblx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB0aGlzLmxvYWRpbmcgPSB0cnVlLCAwKTtcclxuXHRcdFx0XHJcblx0XHRcdGVsc2Ugc2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcblx0XHRcdFx0aWYgKGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcblx0XHRcdFx0XHR0aGlzLnBvZGVDcmlhckF0YWxobyA9ICEhdGhpcy5fcGxhdGZvcm0uU2hvcnRjdXRBcGkgJiYgdGhpcy5fcm91dGVyLnVybCAhPSAnLyc7XHJcblx0XHRcdFx0XHR0aGlzLmdldEF0YWxobygpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSwgMCk7XHJcbiAgICAgICAgfSk7XHJcblx0fVxyXG5cclxuXHRuZ09uSW5pdCgpe1xyXG5cdFx0dGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCAndXhjJyArIHRoaXMuX3BsYXRmb3JtLkNvbmZpZy51eCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMuX3BsYXRmb3JtLkNvbmZpZy50b3BNZW51KVxyXG4gICAgICAgICAgICB0aGlzLl9yZW5kZXJlci5hZGRDbGFzcyh0aGlzLl9lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsICd0b3BtZW51Jyk7XHJcblx0fVxyXG5cclxuXHRnb0JhY2soKXtcclxuXHRcdHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRoaXMuYmFja3VybCk7XHJcblx0fVxyXG5cclxuXHRnZXRBdGFsaG8oKSB7XHJcblx0XHRpZiAoIXRoaXMucG9kZUNyaWFyQXRhbGhvKVxyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0dGhpcy5fZGF0YVNlcnZpY2UuZ2V0KHRoaXMuX3BsYXRmb3JtLlNob3J0Y3V0QXBpLCAnR2V0QnlVcmwnLCAndXJsPScrdGhpcy5fcm91dGVyLnVybCkuc3Vic2NyaWJlKHIgPT4ge1xyXG5cdFx0XHR0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHRcdFx0aWYgKHIuc3VjY2VzcykgdGhpcy5hdGFsaG9JZCA9IChyLmRhdGEgfHwge30pLklkO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHR0b2dnbGVBdGFsaG8oKSB7XHJcblx0XHRpZiAodGhpcy5hdGFsaG9JZCkge1xyXG5cdFx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHR0aGlzLl9kYXRhU2VydmljZS5kZWxldGUodGhpcy5fcGxhdGZvcm0uU2hvcnRjdXRBcGksIHRoaXMuYXRhbGhvSWQpLnN1YnNjcmliZShyID0+IHtcclxuXHRcdFx0XHR0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRpZiAoci5zdWNjZXNzKSB0aGlzLmF0YWxob0lkID0gbnVsbDtcclxuXHRcdFx0fSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG5cdFx0XHR0aGlzLm9wZW5Nb2RhbEF0YWxobygpLnN1YnNjcmliZSgocjogSW5mb0Zvcm1Qcm9wTW9kZWwpID0+IHtcclxuXHRcdFx0XHR0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuXHRcdFx0XHRpZiAociAmJiByLm1vZGFsQWN0aW9uID09IEluZm9Nb2RhbEFjdGlvbi5TYXZlKSB0aGlzLmdldEF0YWxobygpO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgb3Blbk1vZGFsQXRhbGhvKCkge1xyXG5cdFx0dmFyIHByb3AgPSBuZXcgSW5mb0Zvcm1Qcm9wTW9kZWwoKTtcclxuXHRcdHByb3AuYXBpID0gdGhpcy5fcGxhdGZvcm0uU2hvcnRjdXRBcGk7XHJcblx0XHRwcm9wLnNldChJbmZvUGFnZUFjdGlvbi5OZXcsIHsgXHJcblx0XHRcdElkOiB0aGlzLmF0YWxob0lkLFxyXG5cdFx0XHRVcmw6IHRoaXMuX3JvdXRlci51cmwsXHJcblx0XHRcdFRpdHVsbzogYCR7dGhpcy5fdHJhbnNsYXRlLnRyYW5zbGF0ZSh0aGlzLl9wbGF0Zm9ybS5QYWdpbmFBdGl2YS5UaXR1bG8pfSAvICR7dGhpcy5fdHJhbnNsYXRlLnRyYW5zbGF0ZSh0aGlzLnBhZ2V0aXRsZSl9YFxyXG5cdFx0fSk7XHJcblxyXG5cdFx0bGV0IHJlZiA9IHRoaXMuX21vZGFsLm9wZW4oQXRhbGhvTW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgZGF0YTogcHJvcCxcclxuXHRcdFx0ZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG5cdFx0XHR3aWR0aDogJzQwMHB4J1xyXG5cdFx0fSk7XHJcblx0XHRcclxuXHRcdHJlZi5rZXlkb3duRXZlbnRzKCkuc3Vic2NyaWJlKChyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5sb2FkaW5nICYmIChyLmtleSA9PSBcIkVzY2FwZVwiIHx8IHIua2V5ID09IFwiRXNjXCIgfHwgci5rZXkgPT0gXCIyN1wiKSlcclxuICAgICAgICAgICAgICAgIHJlZi5jbG9zZSgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gcmVmLmFmdGVyQ2xvc2VkKCk7XHJcblx0fVxyXG59XHJcbkBDb21wb25lbnQoe1xyXG5cdHRlbXBsYXRlOiBgXHJcblx0XHQ8aW5mby1tb2RhbCBtb2RhbHRpdGxlPVwiQ3JpYXJBY2Vzc29SYXBpZG9cIiBbZm9ybV09XCJmb3JtTW9kYWxcIiBbKG5nTW9kZWwpXT1cIm1vZGVsXCI+XHJcblx0XHRcdDxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiICNmb3JtTW9kYWw9XCJuZ0Zvcm1cIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwicm93XCI+ICAgICAgICAgICAgXHJcblx0XHRcdFx0XHQ8aW5mby1pbnB1dCBjbGFzcz1cImNvbC1tZC0xMlwiIFsobmdNb2RlbCldPVwibW9kZWwuVGl0dWxvXCIgcGxhY2Vob2xkZXI9XCJUaXR1bG9cIiBuYW1lPVwiVGl0dWxvXCIgcmVxdWlyZWQ+PC9pbmZvLWlucHV0PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Zvcm0+XHJcblx0XHQ8L2luZm8tbW9kYWw+XHJcblx0YFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXRhbGhvTW9kYWxDb21wb25lbnQge1xyXG5cdG1vZGVsOiBhbnkgPSB7fTtcclxuXHRjb25zdHJ1Y3RvcihASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIHByb3A6IEluZm9Gb3JtUHJvcE1vZGVsKSB7XHJcblx0XHR0aGlzLm1vZGVsID0gT2JqZWN0LmFzc2lnbih7fSwgcHJvcC5kYXRhKTtcclxuXHRcdHRoaXMubW9kZWwuSWQgPSB0aGlzLm1vZGVsLklkIHx8ICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnO1xyXG5cdH1cclxufSIsIjxkaXYgW25nU3R5bGVdPVwieyAnbWFyZ2luVG9wJzogbWFyZ2ludG9wICsgJ3B4JyB9XCIgW25nQ2xhc3NdPVwieyAndHJhbnNwYXJlbnQnOiB0cmFuc3BhcmVudCB9XCIgPlxyXG4gICAgXHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX3BsYXRmb3JtLkNvbmZpZy51eCA+PSAzXCIgPlxyXG4gICAgICAgIDxoMiBbbmdDbGFzc109XCJ7ICd0aXRsZS1pY29uJzogaWNvbiB9XCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImljb25cIj57eyBpY29uIH19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJwYWdldGl0bGUgfCB0cmFuc2xhdGVcIj48L3NwYW4+XHJcbiAgICAgICAgPC9oMj5cclxuICAgICAgICBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGluay1idXR0b25cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImJhY2t1cmxcIiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiZ29CYWNrKClcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImZzLTIwXCI+Y2hldnJvbl9sZWZ0PC9tYXQtaWNvbj57eyAnVm9sdGFyJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPGRsICpuZ0lmPVwiKGFjY2VzcyB8fCBbXSkubGVuZ3RoID4gMFwiIGNsYXNzPVwiYWNlc3NvLXJhcGlkb1wiIChtb3VzZWVudGVyKT1cImV4aWJpckFjZXNzb3MgPSB0cnVlXCIgKG1vdXNlbGVhdmUpPVwiZXhpYmlyQWNlc3NvcyA9IGZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZnMtMjBcIj5zaGFyZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2R0PlxyXG4gICAgICAgICAgICAgICAgPGRkICpuZ0lmPVwiZXhpYmlyQWNlc3Nvc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBhIG9mIGFjY2Vzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgW3JvdXRlckxpbmtdPVwiYS5VcmxcIiA+PG1hdC1pY29uPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPiB7eyBhLkxhYmVsIHwgdHJhbnNsYXRlIH19PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+ICAgXHJcbiAgICAgICAgICAgICAgICA8L2RkPlxyXG4gICAgICAgICAgICA8L2RsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxocj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJfcGxhdGZvcm0uQ29uZmlnLnV4IDw9IDJcIiA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxoMj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBpZD1cInBhZ2UtdGl0bGVcIiAqbmdJZj1cIl9wbGF0Zm9ybS5QYWdpbmFBdGl2YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57eyBfcGxhdGZvcm0uUGFnaW5hQXRpdmEuSWNvbmUgfX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IF9wbGF0Zm9ybS5QYWdpbmFBdGl2YS5UaXR1bG8gfCB0cmFuc2xhdGUgfX1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhZ2V0aXRsZSAhPSBudWxsICYmIHBhZ2V0aXRsZSAhPSAnJ1wiPiAvIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBbb3V0ZXJIVE1MXT1cInBhZ2V0aXRsZSB8IHRyYW5zbGF0ZVwiPjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJwb2RlQ3JpYXJBdGFsaG9cIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwic2hvcnRjdXQtYnV0dG9uXCIgW25nQ2xhc3NdPVwieyAndGVtLWF0YWxobyc6ICEhYXRhbGhvSWQgfVwiIChjbGljayk9XCJ0b2dnbGVBdGFsaG8oKVwiIFtkaXNhYmxlZF09XCJsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gaW5saW5lPnt7IGF0YWxob0lkID8gJ3N0YXInIDogJ3N0YXJfYm9yZGVyJyB9fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJwYWdlYmFyLWRlc2NyaXB0aW9uXCIgW2lubmVySFRNTF09XCJkZXNjcmlwdGlvbiB8IHRyYW5zbGF0ZVwiPjwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGFsaWduLXJpZ2h0IGJ1dHRvbnNcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImJhY2t1cmxcIiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiZ29CYWNrKClcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImZzLTIwXCI+Y2hldnJvbl9sZWZ0PC9tYXQtaWNvbj57eyAnVm9sdGFyJyB8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgIDxkbCAqbmdJZj1cIihhY2Nlc3MgfHwgW10pLmxlbmd0aCA+IDBcIiBjbGFzcz1cImFjZXNzby1yYXBpZG9cIiAobW91c2VlbnRlcik9XCJleGliaXJBY2Vzc29zID0gdHJ1ZVwiIChtb3VzZWxlYXZlKT1cImV4aWJpckFjZXNzb3MgPSBmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgPGR0PlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImZzLTIwXCI+c2hhcmU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9kdD5cclxuICAgICAgICAgICAgICAgIDxkZCAqbmdJZj1cImV4aWJpckFjZXNzb3NcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgYSBvZiBhY2Nlc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIFtyb3V0ZXJMaW5rXT1cImEuVXJsXCIgPjxtYXQtaWNvbj5jaGV2cm9uX3JpZ2h0PC9tYXQtaWNvbj4ge3sgYS5MYWJlbCB8IHRyYW5zbGF0ZSB9fTwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPiAgIFxyXG4gICAgICAgICAgICAgICAgPC9kZD5cclxuICAgICAgICAgICAgPC9kbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuPHNlY3Rpb24gY2xhc3M9XCJsb2FkaW5nLWJhclwiICpuZ0lmPVwibG9hZGluZ1wiPlxyXG4gICAgPG1hdC1wcm9ncmVzcy1iYXIgY29sb3I9XCJwcmltYXJ5XCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcbjwvc2VjdGlvbj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY29udGVudD48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9uZy10ZW1wbGF0ZT4iXX0=
423
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2xheW91dHMvcGFnZWJhci9wYWdlYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2luZm8tbGlicmFyeS9zcmMvbGF5b3V0cy9wYWdlYmFyL3BhZ2ViYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDSm5ELGdDQUF1QjtJQUFBLFlBQVU7SUFBQSxpQkFBVzs7O0lBQXJCLGVBQVU7SUFBVixpQ0FBVTs7OztJQUtqQyxrQ0FBb0Y7SUFBbkIscUxBQVMsZUFBQSxlQUFRLENBQUEsSUFBQztJQUMvRSxvQ0FBd0I7SUFBQSw0QkFBWTtJQUFBLGlCQUFXO0lBQUEsWUFBeUI7O0lB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MEVBQTZDLHdEQUFBO1FBRS9CLGVBQThCO1FBQTlCLG1EQUE4QjtRQTRCM0IsZUFBOEI7UUFBOUIsbURBQThCO1FBd0N0QixlQUFhO1FBQWIsa0NBQWE7O3VGRHZEOUIsb0JBQW9CO2NBTGhDLFNBQVM7MkJBQ0MsY0FBYzttT0FNZixTQUFTO2tCQUFqQixLQUFLO1lBQ0csSUFBSTtrQkFBWixLQUFLO1lBQ0csV0FBVztrQkFBbkIsS0FBSztZQUNHLE9BQU87a0JBQWYsS0FBSztZQUNHLE1BQU07a0JBQWQsS0FBSztZQUNHLFdBQVc7a0JBQW5CLEtBQUs7WUFPa0IsU0FBUztrQkFBaEMsS0FBSzttQkFBQyxXQUFXOztBQW9HbkIsTUFBTSxPQUFPLG9CQUFvQjtJQUVoQyxZQUE0QyxJQUF1QjtRQUF2QixTQUFJLEdBQUosSUFBSSxDQUFtQjtRQURuRSxVQUFLLEdBQVEsRUFBRSxDQUFDO1FBRWYsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksc0NBQXNDLENBQUM7SUFDekUsQ0FBQzs7MkdBTFcsb0JBQW9CLHVCQUVaLGVBQWU7c0dBRnZCLG9CQUFvQjtRQVQvQixxQ0FBa0Y7UUFBcEIsaUpBQW1CO1FBQ2hGLGtDQUE2QyxhQUFBLG9CQUFBO1FBRWIsd0pBQTBCO1FBQTZDLGlCQUFhLEVBQUEsRUFBQSxFQUFBOzs7UUFIMUUsMEJBQWtCLHNCQUFBO1FBRzVCLGVBQTBCO1FBQTFCLDBDQUEwQjs7dUZBTWhELG9CQUFvQjtjQVhoQyxTQUFTO2VBQUM7Z0JBQ1YsUUFBUSxFQUFFOzs7Ozs7OztFQVFUO2FBQ0Q7O3NCQUdhLE1BQU07dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEluamVjdCwgRWxlbWVudFJlZiwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciwgTmF2aWdhdGlvblN0YXJ0LCBHdWFyZHNDaGVja1N0YXJ0LCBOYXZpZ2F0aW9uRW5kIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgSW5mb1BsYXRmb3JtTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbC9wbGF0Zm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IEluZm9EYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW5mb1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3RyYW5zbGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBJbmZvRm9ybVByb3BNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVsL2Zvcm0tcHJvcC5tb2RlbCc7XHJcbmltcG9ydCB7IEluZm9QYWdlQWN0aW9uIH0gZnJvbSAnLi4vLi4vZW51bS9wYWdlLWFjdGlvbi5lbnVtJztcclxuaW1wb3J0IHsgSW5mb01vZGFsQWN0aW9uIH0gZnJvbSAnLi4vLi4vZW51bS9tb2RhbC1hY3Rpb24uZW51bSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ2luZm8tcGFnZWJhcicsXHJcblx0dGVtcGxhdGVVcmw6ICcuL3BhZ2ViYXIuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL3BhZ2ViYXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5mb1BhZ2ViYXJDb21wb25lbnQge1xyXG5cclxuXHRASW5wdXQoKSBtYXJnaW50b3AgPSAwO1xyXG5cdEBJbnB1dCgpIGljb246IHN0cmluZyA9IG51bGw7XHJcblx0QElucHV0KCkgZGVzY3JpcHRpb246IHN0cmluZztcclxuXHRASW5wdXQoKSBiYWNrdXJsOiBzdHJpbmcgPSBudWxsO1xyXG5cdEBJbnB1dCgpIGFjY2VzczogYW55ID0gW107XHJcblx0QElucHV0KCkgdHJhbnNwYXJlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0cHJpdmF0ZSBfcGFnZVRpdGxlOiBzdHJpbmc7XHJcblx0Z2V0IHBhZ2V0aXRsZSgpe1xyXG5cdFx0cmV0dXJuIHRoaXMuX3BhZ2VUaXRsZTtcclxuXHR9XHJcblxyXG5cdEBJbnB1dCgncGFnZXRpdGxlJykgc2V0IHBhZ2V0aXRsZSh2YWx1ZTogc3RyaW5nKXsgXHJcblx0XHR0aGlzLl9wYWdlVGl0bGUgPSB2YWx1ZS5yZXBsYWNlKC9cXCgvZywgJzxzbWFsbD4oJykucmVwbGFjZSgvXFwpL2csICcpPC9zbWFsbD4nKTtcclxuXHR9XHJcblxyXG5cdGxvYWRpbmcgPSBmYWxzZTtcclxuXHRhdGFsaG9JZDogYW55ID0gbnVsbDtcclxuXHRwb2RlQ3JpYXJBdGFsaG8gPSBmYWxzZTtcclxuXHRleGliaXJBY2Vzc29zID0gZmFsc2U7XHJcblxyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxyXG5cdFx0XHRcdHByaXZhdGUgX21vZGFsOiBNYXREaWFsb2csXHJcblx0XHRcdFx0cHJpdmF0ZSBfZGF0YVNlcnZpY2U6IEluZm9EYXRhU2VydmljZSxcclxuXHRcdFx0XHRwcml2YXRlIF90cmFuc2xhdGU6IEluZm9UcmFuc2xhdGVTZXJ2aWNlLFxyXG5cdFx0XHRcdHB1YmxpYyBfcGxhdGZvcm06IEluZm9QbGF0Zm9ybU1vZGVsLFxyXG5cdFx0XHRcdHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWYpIHsgXHJcblx0XHRfcm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0IHx8IGUgaW5zdGFuY2VvZiBHdWFyZHNDaGVja1N0YXJ0KVxyXG5cdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4gdGhpcy5sb2FkaW5nID0gdHJ1ZSwgMCk7XHJcblx0XHRcdFxyXG5cdFx0XHRlbHNlIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG5cdFx0XHRcdGlmIChlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG5cdFx0XHRcdFx0dGhpcy5wb2RlQ3JpYXJBdGFsaG8gPSAhIXRoaXMuX3BsYXRmb3JtLlNob3J0Y3V0QXBpICYmIHRoaXMuX3JvdXRlci51cmwgIT0gJy8nO1xyXG5cdFx0XHRcdFx0dGhpcy5nZXRBdGFsaG8oKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sIDApO1xyXG4gICAgICAgIH0pO1xyXG5cdH1cclxuXHJcblx0bmdPbkluaXQoKXtcclxuXHRcdHRoaXMuX3JlbmRlcmVyLmFkZENsYXNzKHRoaXMuX2VsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3V4YycgKyB0aGlzLl9wbGF0Zm9ybS5Db25maWcudXgpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICh0aGlzLl9wbGF0Zm9ybS5Db25maWcudG9wTWVudSlcclxuICAgICAgICAgICAgdGhpcy5fcmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LCAndG9wbWVudScpO1xyXG5cdH1cclxuXHJcblx0Z29CYWNrKCl7XHJcblx0XHR0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLmJhY2t1cmwpO1xyXG5cdH1cclxuXHJcblx0Z2V0QXRhbGhvKCkge1xyXG5cdFx0aWYgKCF0aGlzLnBvZGVDcmlhckF0YWxobylcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0dGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHRcdHRoaXMuX2RhdGFTZXJ2aWNlLmdldCh0aGlzLl9wbGF0Zm9ybS5TaG9ydGN1dEFwaSwgJ0dldEJ5VXJsJywgJ3VybD0nK3RoaXMuX3JvdXRlci51cmwpLnN1YnNjcmliZShyID0+IHtcclxuXHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcblx0XHRcdGlmIChyLnN1Y2Nlc3MpIHRoaXMuYXRhbGhvSWQgPSAoci5kYXRhIHx8IHt9KS5JZDtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0dG9nZ2xlQXRhbGhvKCkge1xyXG5cdFx0aWYgKHRoaXMuYXRhbGhvSWQpIHtcclxuXHRcdFx0dGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHRcdFx0dGhpcy5fZGF0YVNlcnZpY2UuZGVsZXRlKHRoaXMuX3BsYXRmb3JtLlNob3J0Y3V0QXBpLCB0aGlzLmF0YWxob0lkKS5zdWJzY3JpYmUociA9PiB7XHJcblx0XHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcblx0XHRcdFx0aWYgKHIuc3VjY2VzcykgdGhpcy5hdGFsaG9JZCA9IG51bGw7XHJcblx0XHRcdH0pO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuXHRcdFx0dGhpcy5vcGVuTW9kYWxBdGFsaG8oKS5zdWJzY3JpYmUoKHI6IEluZm9Gb3JtUHJvcE1vZGVsKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcblx0XHRcdFx0aWYgKHIgJiYgci5tb2RhbEFjdGlvbiA9PSBJbmZvTW9kYWxBY3Rpb24uU2F2ZSkgdGhpcy5nZXRBdGFsaG8oKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIG9wZW5Nb2RhbEF0YWxobygpIHtcclxuXHRcdHZhciBwcm9wID0gbmV3IEluZm9Gb3JtUHJvcE1vZGVsKCk7XHJcblx0XHRwcm9wLmFwaSA9IHRoaXMuX3BsYXRmb3JtLlNob3J0Y3V0QXBpO1xyXG5cdFx0cHJvcC5zZXQoSW5mb1BhZ2VBY3Rpb24uTmV3LCB7IFxyXG5cdFx0XHRJZDogdGhpcy5hdGFsaG9JZCxcclxuXHRcdFx0VXJsOiB0aGlzLl9yb3V0ZXIudXJsLFxyXG5cdFx0XHRUaXR1bG86IGAke3RoaXMuX3RyYW5zbGF0ZS50cmFuc2xhdGUodGhpcy5fcGxhdGZvcm0uUGFnaW5hQXRpdmEuVGl0dWxvKX0gLyAke3RoaXMuX3RyYW5zbGF0ZS50cmFuc2xhdGUodGhpcy5wYWdldGl0bGUpfWBcclxuXHRcdH0pO1xyXG5cclxuXHRcdGxldCByZWYgPSB0aGlzLl9tb2RhbC5vcGVuKEF0YWxob01vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgIGRhdGE6IHByb3AsXHJcblx0XHRcdGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuXHRcdFx0d2lkdGg6ICc0MDBweCdcclxuXHRcdH0pO1xyXG5cdFx0XHJcblx0XHRyZWYua2V5ZG93bkV2ZW50cygpLnN1YnNjcmliZSgocikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMubG9hZGluZyAmJiAoci5rZXkgPT0gXCJFc2NhcGVcIiB8fCByLmtleSA9PSBcIkVzY1wiIHx8IHIua2V5ID09IFwiMjdcIikpXHJcbiAgICAgICAgICAgICAgICByZWYuY2xvc2UoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJlZi5hZnRlckNsb3NlZCgpO1xyXG5cdH1cclxufVxyXG5AQ29tcG9uZW50KHtcclxuXHR0ZW1wbGF0ZTogYFxyXG5cdFx0PGluZm8tbW9kYWwgbW9kYWx0aXRsZT1cIkNyaWFyQWNlc3NvUmFwaWRvXCIgW2Zvcm1dPVwiZm9ybU1vZGFsXCIgWyhuZ01vZGVsKV09XCJtb2RlbFwiPlxyXG5cdFx0XHQ8Zm9ybSBhdXRvY29tcGxldGU9XCJvZmZcIiAjZm9ybU1vZGFsPVwibmdGb3JtXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cInJvd1wiPiAgICAgICAgICAgIFxyXG5cdFx0XHRcdFx0PGluZm8taW5wdXQgY2xhc3M9XCJjb2wtbWQtMTJcIiBbKG5nTW9kZWwpXT1cIm1vZGVsLlRpdHVsb1wiIHBsYWNlaG9sZGVyPVwiVGl0dWxvXCIgbmFtZT1cIlRpdHVsb1wiIHJlcXVpcmVkPjwvaW5mby1pbnB1dD5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PC9mb3JtPlxyXG5cdFx0PC9pbmZvLW1vZGFsPlxyXG5cdGBcclxufSlcclxuZXhwb3J0IGNsYXNzIEF0YWxob01vZGFsQ29tcG9uZW50IHtcclxuXHRtb2RlbDogYW55ID0ge307XHJcblx0Y29uc3RydWN0b3IoQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBwcm9wOiBJbmZvRm9ybVByb3BNb2RlbCkge1xyXG5cdFx0dGhpcy5tb2RlbCA9IE9iamVjdC5hc3NpZ24oe30sIHByb3AuZGF0YSk7XHJcblx0XHR0aGlzLm1vZGVsLklkID0gdGhpcy5tb2RlbC5JZCB8fCAnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwJztcclxuXHR9XHJcbn0iLCI8ZGl2IFtuZ1N0eWxlXT1cInsgJ21hcmdpblRvcCc6IG1hcmdpbnRvcCArICdweCcgfVwiIFtuZ0NsYXNzXT1cInsgJ3RyYW5zcGFyZW50JzogdHJhbnNwYXJlbnQgfVwiID5cclxuICAgIFxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9wbGF0Zm9ybS5Db25maWcudXggPj0gM1wiID5cclxuICAgICAgICA8aDIgW25nQ2xhc3NdPVwieyAndGl0bGUtaWNvbic6IGljb24gfVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJpY29uXCI+e3sgaWNvbiB9fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDxzcGFuIFtzYWZlSHRtbF09XCJwYWdldGl0bGUgfCB0cmFuc2xhdGVcIj48L3NwYW4+XHJcbiAgICAgICAgPC9oMj5cclxuICAgICAgICBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwibGluay1idXR0b25cIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImJhY2t1cmxcIiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwiZ29CYWNrKClcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImZzLTIwXCI+Y2hldnJvbl9sZWZ0PC9tYXQtaWNvbj57eyAnVm9sdGFyJyB8IHRyYW5zbGF0ZX19PC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPGRsICpuZ0lmPVwiKGFjY2VzcyB8fCBbXSkubGVuZ3RoID4gMFwiIGNsYXNzPVwiYWNlc3NvLXJhcGlkb1wiIChtb3VzZWVudGVyKT1cImV4aWJpckFjZXNzb3MgPSB0cnVlXCIgKG1vdXNlbGVhdmUpPVwiZXhpYmlyQWNlc3NvcyA9IGZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZnMtMjBcIj5zaGFyZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2R0PlxyXG4gICAgICAgICAgICAgICAgPGRkICpuZ0lmPVwiZXhpYmlyQWNlc3Nvc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBhIG9mIGFjY2Vzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgW3JvdXRlckxpbmtdPVwiYS5VcmxcIiA+PG1hdC1pY29uPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPiB7eyBhLkxhYmVsIHwgdHJhbnNsYXRlIH19PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+ICAgXHJcbiAgICAgICAgICAgICAgICA8L2RkPlxyXG4gICAgICAgICAgICA8L2RsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxocj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJfcGxhdGZvcm0uQ29uZmlnLnV4IDw9IDJcIiA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgIDxoMj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBpZD1cInBhZ2UtdGl0bGVcIiAqbmdJZj1cIl9wbGF0Zm9ybS5QYWdpbmFBdGl2YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj57eyBfcGxhdGZvcm0uUGFnaW5hQXRpdmEuSWNvbmUgfX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IF9wbGF0Zm9ybS5QYWdpbmFBdGl2YS5UaXR1bG8gfCB0cmFuc2xhdGUgfX1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhZ2V0aXRsZSAhPSBudWxsICYmIHBhZ2V0aXRsZSAhPSAnJ1wiPiAvIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBbb3V0ZXJIVE1MXT1cInBhZ2V0aXRsZSB8IHRyYW5zbGF0ZVwiPjwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwvaDI+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJwb2RlQ3JpYXJBdGFsaG9cIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIGNsYXNzPVwic2hvcnRjdXQtYnV0dG9uXCIgW25nQ2xhc3NdPVwieyAndGVtLWF0YWxobyc6ICEhYXRhbGhvSWQgfVwiIChjbGljayk9XCJ0b2dnbGVBdGFsaG8oKVwiIFtkaXNhYmxlZF09XCJsb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gaW5saW5lPnt7IGF0YWxob0lkID8gJ3N0YXInIDogJ3N0YXJfYm9yZGVyJyB9fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgPHAgY2xhc3M9XCJwYWdlYmFyLWRlc2NyaXB0aW9uXCIgW3NhZmVIdG1sXT1cImRlc2NyaXB0aW9uIHwgdHJhbnNsYXRlXCI+PC9wPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgYWxpZ24tcmlnaHQgYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiYmFja3VybFwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJnb0JhY2soKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZnMtMjBcIj5jaGV2cm9uX2xlZnQ8L21hdC1pY29uPnt7ICdWb2x0YXInIHwgdHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiPjwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPGRsICpuZ0lmPVwiKGFjY2VzcyB8fCBbXSkubGVuZ3RoID4gMFwiIGNsYXNzPVwiYWNlc3NvLXJhcGlkb1wiIChtb3VzZWVudGVyKT1cImV4aWJpckFjZXNzb3MgPSB0cnVlXCIgKG1vdXNlbGVhdmUpPVwiZXhpYmlyQWNlc3NvcyA9IGZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICA8ZHQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZnMtMjBcIj5zaGFyZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2R0PlxyXG4gICAgICAgICAgICAgICAgPGRkICpuZ0lmPVwiZXhpYmlyQWNlc3Nvc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBhIG9mIGFjY2Vzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgW3JvdXRlckxpbmtdPVwiYS5VcmxcIiA+PG1hdC1pY29uPmNoZXZyb25fcmlnaHQ8L21hdC1pY29uPiB7eyBhLkxhYmVsIHwgdHJhbnNsYXRlIH19PC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+ICAgXHJcbiAgICAgICAgICAgICAgICA8L2RkPlxyXG4gICAgICAgICAgICA8L2RsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48c2VjdGlvbiBjbGFzcz1cImxvYWRpbmctYmFyXCIgKm5nSWY9XCJsb2FkaW5nXCI+XHJcbiAgICA8bWF0LXByb2dyZXNzLWJhciBjb2xvcj1cInByaW1hcnlcIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cclxuPC9zZWN0aW9uPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjb250ZW50PjxuZy1jb250ZW50PjwvbmctY29udGVudD48L25nLXRlbXBsYXRlPiJdfQ==