ng-prime-tools 1.0.71 → 1.0.72

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.
@@ -316,11 +316,11 @@ export class PTNavbarMenuComponent {
316
316
  };
317
317
  }
318
318
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTNavbarMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
319
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTNavbarMenuComponent, selector: "pt-nav-bar-menu", inputs: { navBarMenuConfig: "navBarMenuConfig", serverDateTime: "serverDateTime" }, outputs: { toggleSidebar: "toggleSidebar" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"pt-nav-bar-menu\" [ngStyle]=\"getNavbarStyles()\">\n <!-- LEFT -->\n <div class=\"navbar-left\">\n <a\n [routerLink]=\"\n isImageStyle(navBarMenuConfig.logo)\n ? navBarMenuConfig.logo.routerLink\n : '/'\n \"\n class=\"logo-link\"\n >\n <img\n [src]=\"getLogoUrl()\"\n [alt]=\"getLogoAltText()\"\n [ngStyle]=\"getLogoStyles()\"\n class=\"navbar-logo\"\n />\n <span class=\"navbar-title\" [ngStyle]=\"getAppNameStyles()\">\n {{ getAppName() }}\n </span>\n </a>\n\n <a (click)=\"toggleMenu()\" class=\"toggle-btn\">\n <i\n [class]=\"getToggleButtonIcon()\"\n [ngStyle]=\"getToggleButtonStyles()\"\n ></i>\n </a>\n </div>\n\n <!-- \u2705 MIDDLE (DateTime) -->\n <!-- Always visible when enabled, even if server value missing (will show placeholders). -->\n <div\n class=\"navbar-middle\"\n *ngIf=\"hasDateTime()\"\n [ngClass]=\"getDateTimePositionClass()\"\n >\n <div class=\"navbar-datetime\">\n <span class=\"dt-value\" [ngStyle]=\"getDateTimeTextStyles()\">\n {{ dateTimeText }}\n </span>\n\n <!-- Manual fixed datetime (only if config has dateValue => FIXED mode) -->\n <input\n *ngIf=\"isFixedMode()\"\n class=\"dt-input\"\n type=\"datetime-local\"\n step=\"1\"\n [value]=\"manualDateTimeLocal\"\n (input)=\"onManualDateTimeChange($any($event.target).value)\"\n />\n </div>\n </div>\n\n <!-- RIGHT -->\n <div class=\"navbar-actions\">\n <div class=\"navbar-right\">\n <pt-menu-fancy\n *ngFor=\"let menuConfig of navBarMenuConfig.menus\"\n [config]=\"menuConfig\"\n ></pt-menu-fancy>\n </div>\n </div>\n</div>\n", styles: [".pt-nav-bar-menu{display:flex;align-items:center;justify-content:space-between;padding:10px;border-bottom:1px solid #ddd;background-color:#fff;background-size:cover;background-position:center;gap:12px;min-width:0}.pt-nav-bar-menu .navbar-left{display:flex;align-items:center;gap:12px;min-width:0;flex:0 0 auto}.pt-nav-bar-menu .logo-link{display:flex;align-items:center;text-decoration:none;color:inherit;min-width:0}.pt-nav-bar-menu .navbar-logo{margin-left:10px;margin-right:20px}.pt-nav-bar-menu .navbar-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-middle{flex:1 1 auto;display:flex;align-items:center;min-width:0;padding:0 12px}.pt-nav-bar-menu .navbar-middle.dt-pos-left{justify-content:flex-start}.pt-nav-bar-menu .navbar-middle.dt-pos-center{justify-content:center}.pt-nav-bar-menu .navbar-middle.dt-pos-right{justify-content:flex-end}.pt-nav-bar-menu .navbar-datetime{display:inline-flex;align-items:center;gap:10px;flex:0 0 auto;white-space:nowrap;max-width:100%}.pt-nav-bar-menu .navbar-datetime .dt-value{white-space:nowrap}.pt-nav-bar-menu .navbar-datetime .dt-input{height:32px;padding:0 8px;border:1px solid rgba(0,0,0,.18);border-radius:6px;background:#fff;font-size:12px;color:#333;outline:none}.pt-nav-bar-menu .navbar-datetime .dt-input:focus{border-color:#034c83b3;box-shadow:0 0 0 3px #034c831f}.pt-nav-bar-menu .navbar-actions{display:flex;align-items:center;gap:12px;flex:0 0 auto;min-width:0}.pt-nav-bar-menu .navbar-right{display:flex;align-items:center;gap:10px;flex:0 0 auto}.pt-nav-bar-menu .navbar-right a{margin-left:20px;color:#333;text-decoration:none;font-size:20px;cursor:pointer}.pt-nav-bar-menu .navbar-right a:hover{color:#000}.pt-nav-bar-menu .toggle-btn{margin-left:2rem;cursor:pointer;padding:7px;border-radius:6px}.pt-nav-bar-menu .toggle-btn>.pi.pi-bars{font-size:1.5rem;color:#333}.pt-nav-bar-menu .toggle-btn:hover{background-color:#f1f1f1}@media (max-width: 900px){.pt-nav-bar-menu{flex-wrap:wrap;row-gap:8px}.pt-nav-bar-menu .navbar-left{width:100%;justify-content:space-between}.pt-nav-bar-menu .navbar-middle{width:100%;padding:0;justify-content:flex-start}.pt-nav-bar-menu .navbar-middle.dt-pos-right .navbar-datetime,.pt-nav-bar-menu .navbar-middle.dt-pos-center .navbar-datetime{padding-left:0;border-left:none}.pt-nav-bar-menu .navbar-actions{width:100%;justify-content:flex-end}}@media (max-width: 520px){.pt-nav-bar-menu .navbar-datetime .dt-value{display:none}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.PTMenuFancyComponent, selector: "pt-menu-fancy", inputs: ["config"] }] }); }
319
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTNavbarMenuComponent, selector: "pt-nav-bar-menu", inputs: { navBarMenuConfig: "navBarMenuConfig", serverDateTime: "serverDateTime" }, outputs: { toggleSidebar: "toggleSidebar" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"pt-nav-bar-menu\" [ngStyle]=\"getNavbarStyles()\">\n <!-- LEFT -->\n <div class=\"navbar-left\">\n <a\n [routerLink]=\"\n isImageStyle(navBarMenuConfig.logo)\n ? navBarMenuConfig.logo.routerLink\n : '/'\n \"\n class=\"logo-link\"\n >\n <img\n [src]=\"getLogoUrl()\"\n [alt]=\"getLogoAltText()\"\n [ngStyle]=\"getLogoStyles()\"\n class=\"navbar-logo\"\n />\n\n <span class=\"navbar-title\" [ngStyle]=\"getAppNameStyles()\">\n {{ getAppName() }}\n </span>\n </a>\n\n <a (click)=\"toggleMenu()\" class=\"toggle-btn\">\n <i\n [class]=\"getToggleButtonIcon()\"\n [ngStyle]=\"getToggleButtonStyles()\"\n ></i>\n </a>\n </div>\n\n <!-- MIDDLE DateTime -->\n <div\n class=\"navbar-middle\"\n *ngIf=\"hasDateTime()\"\n [ngClass]=\"getDateTimePositionClass()\"\n >\n <div class=\"navbar-datetime\">\n <span class=\"dt-value\" [ngStyle]=\"getDateTimeTextStyles()\">\n {{ dateTimeText }}\n </span>\n\n <input\n *ngIf=\"isFixedMode()\"\n class=\"dt-input\"\n type=\"datetime-local\"\n step=\"1\"\n [value]=\"manualDateTimeLocal\"\n (input)=\"onManualDateTimeChange($any($event.target).value)\"\n />\n </div>\n </div>\n\n <!-- RIGHT -->\n <div class=\"navbar-actions\">\n <div class=\"navbar-right\">\n <div\n class=\"navbar-menu-item-wrapper\"\n *ngFor=\"let menuConfig of navBarMenuConfig.menus\"\n >\n <div class=\"navbar-user-identity\" *ngIf=\"$any(menuConfig).userIdentity\">\n <div\n class=\"navbar-user-fullname\"\n [title]=\"$any(menuConfig).userIdentity.fullName\"\n >\n {{ $any(menuConfig).userIdentity.fullName }}\n </div>\n\n <div\n class=\"navbar-user-profile\"\n *ngIf=\"$any(menuConfig).userIdentity.profile\"\n [title]=\"$any(menuConfig).userIdentity.profile\"\n >\n {{ $any(menuConfig).userIdentity.profile }}\n </div>\n </div>\n\n <pt-menu-fancy [config]=\"menuConfig\"></pt-menu-fancy>\n </div>\n </div>\n </div>\n</div>\n", styles: [".pt-nav-bar-menu{display:flex;align-items:center;justify-content:space-between;padding:10px;border-bottom:1px solid #ddd;background-color:#fff;background-size:cover;background-position:center;gap:12px;min-width:0}.pt-nav-bar-menu .navbar-left{display:flex;align-items:center;gap:12px;min-width:0;flex:0 0 auto}.pt-nav-bar-menu .logo-link{display:flex;align-items:center;text-decoration:none;color:inherit;min-width:0}.pt-nav-bar-menu .navbar-logo{margin-left:10px;margin-right:20px}.pt-nav-bar-menu .navbar-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-middle{flex:1 1 auto;display:flex;align-items:center;min-width:0;padding:0 12px}.pt-nav-bar-menu .navbar-middle.dt-pos-left{justify-content:flex-start}.pt-nav-bar-menu .navbar-middle.dt-pos-center{justify-content:center}.pt-nav-bar-menu .navbar-middle.dt-pos-right{justify-content:flex-end}.pt-nav-bar-menu .navbar-datetime{display:inline-flex;align-items:center;gap:10px;flex:0 0 auto;white-space:nowrap;max-width:100%}.pt-nav-bar-menu .navbar-datetime .dt-value{white-space:nowrap}.pt-nav-bar-menu .navbar-datetime .dt-input{height:32px;padding:0 8px;border:1px solid rgba(0,0,0,.18);border-radius:6px;background:#fff;font-size:12px;color:#333;outline:none}.pt-nav-bar-menu .navbar-datetime .dt-input:focus{border-color:#034c83b3;box-shadow:0 0 0 3px #034c831f}.pt-nav-bar-menu .navbar-actions{display:flex;align-items:center;gap:12px;flex:0 0 auto;min-width:0}.pt-nav-bar-menu .navbar-right{display:flex;align-items:center;gap:10px;flex:0 0 auto}.pt-nav-bar-menu .navbar-menu-item-wrapper{display:inline-flex;align-items:center;gap:.65rem;min-width:0;padding:.25rem .4rem;border-radius:10px;transition:background-color .15s ease}.pt-nav-bar-menu .navbar-menu-item-wrapper:hover{background-color:#5b21b60f}.pt-nav-bar-menu .navbar-user-identity{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;max-width:260px;min-width:0;line-height:1.15}.pt-nav-bar-menu .navbar-user-fullname{max-width:260px;color:#1f2937;font-size:13px;font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pt-nav-bar-menu .navbar-user-profile{max-width:260px;margin-top:2px;color:#667085;font-size:11px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pt-nav-bar-menu .navbar-right a{margin-left:20px;color:#333;text-decoration:none;font-size:20px;cursor:pointer}.pt-nav-bar-menu .navbar-right a:hover{color:#000}.pt-nav-bar-menu .toggle-btn{margin-left:2rem;cursor:pointer;padding:7px;border-radius:6px}.pt-nav-bar-menu .toggle-btn>.pi.pi-bars{font-size:1.5rem;color:#333}.pt-nav-bar-menu .toggle-btn:hover{background-color:#f1f1f1}@media (max-width: 900px){.pt-nav-bar-menu{flex-wrap:wrap;row-gap:8px}.pt-nav-bar-menu .navbar-left{width:100%;justify-content:space-between}.pt-nav-bar-menu .navbar-middle{width:100%;padding:0;justify-content:flex-start}.pt-nav-bar-menu .navbar-middle.dt-pos-right .navbar-datetime,.pt-nav-bar-menu .navbar-middle.dt-pos-center .navbar-datetime{padding-left:0;border-left:none}.pt-nav-bar-menu .navbar-actions{width:100%;justify-content:flex-end}.pt-nav-bar-menu .navbar-user-identity,.pt-nav-bar-menu .navbar-user-fullname,.pt-nav-bar-menu .navbar-user-profile{max-width:220px}}@media (max-width: 640px){.pt-nav-bar-menu .navbar-user-identity{display:none}}@media (max-width: 520px){.pt-nav-bar-menu .navbar-datetime .dt-value{display:none}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.PTMenuFancyComponent, selector: "pt-menu-fancy", inputs: ["config"] }] }); }
320
320
  }
321
321
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTNavbarMenuComponent, decorators: [{
322
322
  type: Component,
323
- args: [{ selector: 'pt-nav-bar-menu', template: "<div class=\"pt-nav-bar-menu\" [ngStyle]=\"getNavbarStyles()\">\n <!-- LEFT -->\n <div class=\"navbar-left\">\n <a\n [routerLink]=\"\n isImageStyle(navBarMenuConfig.logo)\n ? navBarMenuConfig.logo.routerLink\n : '/'\n \"\n class=\"logo-link\"\n >\n <img\n [src]=\"getLogoUrl()\"\n [alt]=\"getLogoAltText()\"\n [ngStyle]=\"getLogoStyles()\"\n class=\"navbar-logo\"\n />\n <span class=\"navbar-title\" [ngStyle]=\"getAppNameStyles()\">\n {{ getAppName() }}\n </span>\n </a>\n\n <a (click)=\"toggleMenu()\" class=\"toggle-btn\">\n <i\n [class]=\"getToggleButtonIcon()\"\n [ngStyle]=\"getToggleButtonStyles()\"\n ></i>\n </a>\n </div>\n\n <!-- \u2705 MIDDLE (DateTime) -->\n <!-- Always visible when enabled, even if server value missing (will show placeholders). -->\n <div\n class=\"navbar-middle\"\n *ngIf=\"hasDateTime()\"\n [ngClass]=\"getDateTimePositionClass()\"\n >\n <div class=\"navbar-datetime\">\n <span class=\"dt-value\" [ngStyle]=\"getDateTimeTextStyles()\">\n {{ dateTimeText }}\n </span>\n\n <!-- Manual fixed datetime (only if config has dateValue => FIXED mode) -->\n <input\n *ngIf=\"isFixedMode()\"\n class=\"dt-input\"\n type=\"datetime-local\"\n step=\"1\"\n [value]=\"manualDateTimeLocal\"\n (input)=\"onManualDateTimeChange($any($event.target).value)\"\n />\n </div>\n </div>\n\n <!-- RIGHT -->\n <div class=\"navbar-actions\">\n <div class=\"navbar-right\">\n <pt-menu-fancy\n *ngFor=\"let menuConfig of navBarMenuConfig.menus\"\n [config]=\"menuConfig\"\n ></pt-menu-fancy>\n </div>\n </div>\n</div>\n", styles: [".pt-nav-bar-menu{display:flex;align-items:center;justify-content:space-between;padding:10px;border-bottom:1px solid #ddd;background-color:#fff;background-size:cover;background-position:center;gap:12px;min-width:0}.pt-nav-bar-menu .navbar-left{display:flex;align-items:center;gap:12px;min-width:0;flex:0 0 auto}.pt-nav-bar-menu .logo-link{display:flex;align-items:center;text-decoration:none;color:inherit;min-width:0}.pt-nav-bar-menu .navbar-logo{margin-left:10px;margin-right:20px}.pt-nav-bar-menu .navbar-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-middle{flex:1 1 auto;display:flex;align-items:center;min-width:0;padding:0 12px}.pt-nav-bar-menu .navbar-middle.dt-pos-left{justify-content:flex-start}.pt-nav-bar-menu .navbar-middle.dt-pos-center{justify-content:center}.pt-nav-bar-menu .navbar-middle.dt-pos-right{justify-content:flex-end}.pt-nav-bar-menu .navbar-datetime{display:inline-flex;align-items:center;gap:10px;flex:0 0 auto;white-space:nowrap;max-width:100%}.pt-nav-bar-menu .navbar-datetime .dt-value{white-space:nowrap}.pt-nav-bar-menu .navbar-datetime .dt-input{height:32px;padding:0 8px;border:1px solid rgba(0,0,0,.18);border-radius:6px;background:#fff;font-size:12px;color:#333;outline:none}.pt-nav-bar-menu .navbar-datetime .dt-input:focus{border-color:#034c83b3;box-shadow:0 0 0 3px #034c831f}.pt-nav-bar-menu .navbar-actions{display:flex;align-items:center;gap:12px;flex:0 0 auto;min-width:0}.pt-nav-bar-menu .navbar-right{display:flex;align-items:center;gap:10px;flex:0 0 auto}.pt-nav-bar-menu .navbar-right a{margin-left:20px;color:#333;text-decoration:none;font-size:20px;cursor:pointer}.pt-nav-bar-menu .navbar-right a:hover{color:#000}.pt-nav-bar-menu .toggle-btn{margin-left:2rem;cursor:pointer;padding:7px;border-radius:6px}.pt-nav-bar-menu .toggle-btn>.pi.pi-bars{font-size:1.5rem;color:#333}.pt-nav-bar-menu .toggle-btn:hover{background-color:#f1f1f1}@media (max-width: 900px){.pt-nav-bar-menu{flex-wrap:wrap;row-gap:8px}.pt-nav-bar-menu .navbar-left{width:100%;justify-content:space-between}.pt-nav-bar-menu .navbar-middle{width:100%;padding:0;justify-content:flex-start}.pt-nav-bar-menu .navbar-middle.dt-pos-right .navbar-datetime,.pt-nav-bar-menu .navbar-middle.dt-pos-center .navbar-datetime{padding-left:0;border-left:none}.pt-nav-bar-menu .navbar-actions{width:100%;justify-content:flex-end}}@media (max-width: 520px){.pt-nav-bar-menu .navbar-datetime .dt-value{display:none}}\n"] }]
323
+ args: [{ selector: 'pt-nav-bar-menu', template: "<div class=\"pt-nav-bar-menu\" [ngStyle]=\"getNavbarStyles()\">\n <!-- LEFT -->\n <div class=\"navbar-left\">\n <a\n [routerLink]=\"\n isImageStyle(navBarMenuConfig.logo)\n ? navBarMenuConfig.logo.routerLink\n : '/'\n \"\n class=\"logo-link\"\n >\n <img\n [src]=\"getLogoUrl()\"\n [alt]=\"getLogoAltText()\"\n [ngStyle]=\"getLogoStyles()\"\n class=\"navbar-logo\"\n />\n\n <span class=\"navbar-title\" [ngStyle]=\"getAppNameStyles()\">\n {{ getAppName() }}\n </span>\n </a>\n\n <a (click)=\"toggleMenu()\" class=\"toggle-btn\">\n <i\n [class]=\"getToggleButtonIcon()\"\n [ngStyle]=\"getToggleButtonStyles()\"\n ></i>\n </a>\n </div>\n\n <!-- MIDDLE DateTime -->\n <div\n class=\"navbar-middle\"\n *ngIf=\"hasDateTime()\"\n [ngClass]=\"getDateTimePositionClass()\"\n >\n <div class=\"navbar-datetime\">\n <span class=\"dt-value\" [ngStyle]=\"getDateTimeTextStyles()\">\n {{ dateTimeText }}\n </span>\n\n <input\n *ngIf=\"isFixedMode()\"\n class=\"dt-input\"\n type=\"datetime-local\"\n step=\"1\"\n [value]=\"manualDateTimeLocal\"\n (input)=\"onManualDateTimeChange($any($event.target).value)\"\n />\n </div>\n </div>\n\n <!-- RIGHT -->\n <div class=\"navbar-actions\">\n <div class=\"navbar-right\">\n <div\n class=\"navbar-menu-item-wrapper\"\n *ngFor=\"let menuConfig of navBarMenuConfig.menus\"\n >\n <div class=\"navbar-user-identity\" *ngIf=\"$any(menuConfig).userIdentity\">\n <div\n class=\"navbar-user-fullname\"\n [title]=\"$any(menuConfig).userIdentity.fullName\"\n >\n {{ $any(menuConfig).userIdentity.fullName }}\n </div>\n\n <div\n class=\"navbar-user-profile\"\n *ngIf=\"$any(menuConfig).userIdentity.profile\"\n [title]=\"$any(menuConfig).userIdentity.profile\"\n >\n {{ $any(menuConfig).userIdentity.profile }}\n </div>\n </div>\n\n <pt-menu-fancy [config]=\"menuConfig\"></pt-menu-fancy>\n </div>\n </div>\n </div>\n</div>\n", styles: [".pt-nav-bar-menu{display:flex;align-items:center;justify-content:space-between;padding:10px;border-bottom:1px solid #ddd;background-color:#fff;background-size:cover;background-position:center;gap:12px;min-width:0}.pt-nav-bar-menu .navbar-left{display:flex;align-items:center;gap:12px;min-width:0;flex:0 0 auto}.pt-nav-bar-menu .logo-link{display:flex;align-items:center;text-decoration:none;color:inherit;min-width:0}.pt-nav-bar-menu .navbar-logo{margin-left:10px;margin-right:20px}.pt-nav-bar-menu .navbar-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-middle{flex:1 1 auto;display:flex;align-items:center;min-width:0;padding:0 12px}.pt-nav-bar-menu .navbar-middle.dt-pos-left{justify-content:flex-start}.pt-nav-bar-menu .navbar-middle.dt-pos-center{justify-content:center}.pt-nav-bar-menu .navbar-middle.dt-pos-right{justify-content:flex-end}.pt-nav-bar-menu .navbar-datetime{display:inline-flex;align-items:center;gap:10px;flex:0 0 auto;white-space:nowrap;max-width:100%}.pt-nav-bar-menu .navbar-datetime .dt-value{white-space:nowrap}.pt-nav-bar-menu .navbar-datetime .dt-input{height:32px;padding:0 8px;border:1px solid rgba(0,0,0,.18);border-radius:6px;background:#fff;font-size:12px;color:#333;outline:none}.pt-nav-bar-menu .navbar-datetime .dt-input:focus{border-color:#034c83b3;box-shadow:0 0 0 3px #034c831f}.pt-nav-bar-menu .navbar-actions{display:flex;align-items:center;gap:12px;flex:0 0 auto;min-width:0}.pt-nav-bar-menu .navbar-right{display:flex;align-items:center;gap:10px;flex:0 0 auto}.pt-nav-bar-menu .navbar-menu-item-wrapper{display:inline-flex;align-items:center;gap:.65rem;min-width:0;padding:.25rem .4rem;border-radius:10px;transition:background-color .15s ease}.pt-nav-bar-menu .navbar-menu-item-wrapper:hover{background-color:#5b21b60f}.pt-nav-bar-menu .navbar-user-identity{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;max-width:260px;min-width:0;line-height:1.15}.pt-nav-bar-menu .navbar-user-fullname{max-width:260px;color:#1f2937;font-size:13px;font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pt-nav-bar-menu .navbar-user-profile{max-width:260px;margin-top:2px;color:#667085;font-size:11px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pt-nav-bar-menu .navbar-right a{margin-left:20px;color:#333;text-decoration:none;font-size:20px;cursor:pointer}.pt-nav-bar-menu .navbar-right a:hover{color:#000}.pt-nav-bar-menu .toggle-btn{margin-left:2rem;cursor:pointer;padding:7px;border-radius:6px}.pt-nav-bar-menu .toggle-btn>.pi.pi-bars{font-size:1.5rem;color:#333}.pt-nav-bar-menu .toggle-btn:hover{background-color:#f1f1f1}@media (max-width: 900px){.pt-nav-bar-menu{flex-wrap:wrap;row-gap:8px}.pt-nav-bar-menu .navbar-left{width:100%;justify-content:space-between}.pt-nav-bar-menu .navbar-middle{width:100%;padding:0;justify-content:flex-start}.pt-nav-bar-menu .navbar-middle.dt-pos-right .navbar-datetime,.pt-nav-bar-menu .navbar-middle.dt-pos-center .navbar-datetime{padding-left:0;border-left:none}.pt-nav-bar-menu .navbar-actions{width:100%;justify-content:flex-end}.pt-nav-bar-menu .navbar-user-identity,.pt-nav-bar-menu .navbar-user-fullname,.pt-nav-bar-menu .navbar-user-profile{max-width:220px}}@media (max-width: 640px){.pt-nav-bar-menu .navbar-user-identity{display:none}}@media (max-width: 520px){.pt-nav-bar-menu .navbar-datetime .dt-value{display:none}}\n"] }]
324
324
  }], propDecorators: { navBarMenuConfig: [{
325
325
  type: Input
326
326
  }], toggleSidebar: [{
@@ -328,4 +328,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
328
328
  }], serverDateTime: [{
329
329
  type: Input
330
330
  }] } });
331
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtbmF2LWJhci1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvcHQtbmF2LWJhci1tZW51L3B0LW5hdi1iYXItbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LW5hdi1iYXItbWVudS9wdC1uYXYtYmFyLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FLUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBZTNDLE1BQU0sT0FBTyxxQkFBcUI7SUFMbEM7UUFNVyxxQkFBZ0IsR0FBcUIsRUFBRSxDQUFDO1FBQ3ZDLGtCQUFhLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFXL0QsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFdkMsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFFbEIsa0RBQWtEO1FBQzFDLGVBQVUsR0FBZSxZQUFZLENBQUM7UUFDdEMsZUFBVSxHQUFlLFVBQVUsQ0FBQztRQUU1QyxzQkFBc0I7UUFDZCxlQUFVLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QixlQUFVLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUV0Qyw4QkFBOEI7UUFDOUIsd0JBQW1CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztLQTBYN0Q7SUF4WEMsNEJBQTRCO0lBQzVCLHNCQUFzQjtJQUN0Qiw0QkFBNEI7YUFDSixxQkFB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LENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCO1lBQ3RDLHFCQUFxQixDQUFDLDBCQUEwQixDQUNqRCxDQUFDO0lBQ0osQ0FBQztJQUVELHFCQUFxQjtRQUNuQixPQUFPO1lBQ0wsS0FBSyxFQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUI7Z0JBQ3ZDLHFCQUFxQixDQUFDLDJCQUEyQjtTQUNwRCxDQUFDO0lBQ0osQ0FBQztJQUVELHFCQUFxQjtRQUNuQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQztRQUNwRCxPQUFPO1lBQ0wsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLElBQUksTUFBTTtZQUN6QixRQUFRLEVBQUUsQ0FBQyxFQUFFLFFBQVEsSUFBSSxNQUFNO1lBQy9CLFVBQVUsRUFBRSxDQUFDLEVBQUUsVUFBVSxJQUFJLEtBQUs7U0FDbkMsQ0FBQztJQUNKLENBQUM7K0dBblpVLHFCQUFxQjttR0FBckIscUJBQXFCLDZNQzNCbEMsOHZEQWdFQTs7NEZEckNhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxpQkFBaUI7OEJBS2xCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNO2dCQVNFLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QsIGludGVydmFsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEltYWdlU3R5bGUsIE5hdkJhck1lbnVDb25maWcsIFRleHRTdHlsZSB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgdHlwZSB7XG4gIERhdGVGb3JtYXQsXG4gIFRpbWVGb3JtYXQsXG4gIERhdGVUaW1lUG9zaXRpb24sXG4gIERhdGVUaW1lU291cmNlLFxufSBmcm9tICcuLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwdC1uYXYtYmFyLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHQtbmF2LWJhci1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHQtbmF2LWJhci1tZW51LmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUFROYXZiYXJNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIG5hdkJhck1lbnVDb25maWc6IE5hdkJhck1lbnVDb25maWcgPSB7fTtcbiAgQE91dHB1dCgpIHRvZ2dsZVNpZGViYXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICog4pyFIFNFUlZFUiBtb2RlIGlucHV0IChwcm92aWRlZCBieSBIb21lIGNvbXBvbmVudClcbiAgICogRXhwZWN0ZWQgZm9ybWF0cyBNVVNUIGFscmVhZHkgbWF0Y2ggZGF0ZUZvcm1hdC90aW1lRm9ybWF0IGZyb20gY29uZmlnLlxuICAgKiBFeGFtcGxlczpcbiAgICogIC0geyBkYXRlOiBcIjE0LzAyLzIwMjZcIiwgdGltZTogXCIxODozMjoxMFwiIH1cbiAgICogIC0gXCIxNC8wMi8yMDI2IDE4OjMyOjEwXCJcbiAgICovXG4gIEBJbnB1dCgpIHNlcnZlckRhdGVUaW1lPzogeyBkYXRlOiBzdHJpbmc7IHRpbWU6IHN0cmluZyB9IHwgc3RyaW5nO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGRhdGVUaW1lVGV4dCA9ICcnO1xuXG4gIC8qKiBmb3JtYXRzIGFyZSB0YWtlbiBmcm9tIGNvbmZpZyAob3IgZGVmYXVsdHMpICovXG4gIHByaXZhdGUgZGF0ZUZvcm1hdDogRGF0ZUZvcm1hdCA9ICdkZC9NTS9ZWVlZJztcbiAgcHJpdmF0ZSB0aW1lRm9ybWF0OiBUaW1lRm9ybWF0ID0gJ0hIOm1tOnNzJztcblxuICAvKiogRklYRUQgbW9kZSBiYXNlICovXG4gIHByaXZhdGUgZml4ZWRTdGFydDogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIHByaXZhdGUgZml4ZWRTZXRBdDogRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgLyoqIHVzZWQgb25seSBpbiBGSVhFRCBtb2RlICovXG4gIG1hbnVhbERhdGVUaW1lTG9jYWwgPSB0aGlzLnRvRGF0ZVRpbWVMb2NhbFZhbHVlKG5ldyBEYXRlKCkpO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRGVmYXVsdHMgKGV4aXN0aW5nKVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfTE9HT19VUkw6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0xPR09fQUxUX1RFWFQ6IHN0cmluZyA9ICdMb2dvJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9MT0dPX1dJRFRIOiBzdHJpbmcgPSAnNDBweCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfTE9HT19IRUlHSFQ6IHN0cmluZyA9ICdhdXRvJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9BUFBfTkFNRTogc3RyaW5nID0gJ0FwcGxpY2F0aW9uJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9BUFBfTkFNRV9DT0xPUjogc3RyaW5nID0gJyMwMDAnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0FQUF9OQU1FX0ZPTlRfU0laRTogc3RyaW5nID0gJzI0cHgnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1RSQU5TUEFSRU5DWTogc3RyaW5nID0gJzEwMCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfSUNPTl9DT0xPUjogc3RyaW5nID0gJyMzMzMnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1RPR0dMRV9CVVRUT05fSUNPTjogc3RyaW5nID0gJ3BpIHBpLWJhcnMnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1RPR0dMRV9CVVRUT05fQ09MT1I6IHN0cmluZyA9ICcjMzMzJztcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIExpZmVjeWNsZVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYXBwbHlDb25maWdGb3JtYXRzQW5kRml4ZWRCYXNlKCk7XG5cbiAgICBpbnRlcnZhbCgxMDAwKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnJlZnJlc2hEYXRlVGltZSgpKTtcblxuICAgIHRoaXMucmVmcmVzaERhdGVUaW1lKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8gSWYgY29uZmlnIGNoYW5nZXM6IHVwZGF0ZSBmb3JtYXRzIGFuZCBmaXhlZCBiYXNlIGlmIG5lZWRlZC5cbiAgICBpZiAoY2hhbmdlc1snbmF2QmFyTWVudUNvbmZpZyddKSB7XG4gICAgICB0aGlzLmFwcGx5Q29uZmlnRm9ybWF0c0FuZEZpeGVkQmFzZSgpO1xuICAgIH1cblxuICAgIC8vIElmIHNlcnZlckRhdGVUaW1lIGNoYW5nZXM6IGp1c3QgcmVmcmVzaCBkaXNwbGF5XG4gICAgaWYgKGNoYW5nZXNbJ3NlcnZlckRhdGVUaW1lJ10gfHwgY2hhbmdlc1snbmF2QmFyTWVudUNvbmZpZyddKSB7XG4gICAgICB0aGlzLnJlZnJlc2hEYXRlVGltZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlDb25maWdGb3JtYXRzQW5kRml4ZWRCYXNlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5oYXNEYXRlVGltZSgpKSByZXR1cm47XG5cbiAgICBjb25zdCBkdENmZyA9IHRoaXMubmF2QmFyTWVudUNvbmZpZy5kYXRlVGltZTtcblxuICAgIHRoaXMuZGF0ZUZvcm1hdCA9IChkdENmZz8uZGF0ZUZvcm1hdCA/PyAnZGQvTU0vWVlZWScpIGFzIERhdGVGb3JtYXQ7XG4gICAgdGhpcy50aW1lRm9ybWF0ID0gKGR0Q2ZnPy50aW1lRm9ybWF0ID8/ICdISDptbTpzcycpIGFzIFRpbWVGb3JtYXQ7XG5cbiAgICAvLyBJZiBmaXhlZCBtb2RlOiByZS1pbml0IGJhc2UgZnJvbSBjb25maWcgKG9ubHkgb25jZSBwZXIgY29uZmlnIGNoYW5nZSlcbiAgICBpZiAodGhpcy5pc0ZpeGVkTW9kZSgpKSB7XG4gICAgICBjb25zdCBiYXNlID0gdGhpcy5idWlsZEZpeGVkQmFzZURhdGVGcm9tQ29uZmlnKCk7XG4gICAgICBpZiAoYmFzZSkgdGhpcy5zZXRGaXhlZERhdGVUaW1lKGJhc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRGF0ZVRpbWUgaGVscGVyc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09XG4gIGhhc0RhdGVUaW1lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMubmF2QmFyTWVudUNvbmZpZy5kYXRlVGltZTtcbiAgfVxuXG4gIGlzRml4ZWRNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMubmF2QmFyTWVudUNvbmZpZy5kYXRlVGltZT8uZGF0ZVZhbHVlO1xuICB9XG5cbiAgaXNTZXJ2ZXJNb2RlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNyYzogRGF0ZVRpbWVTb3VyY2UgPVxuICAgICAgdGhpcy5uYXZCYXJNZW51Q29uZmlnLmRhdGVUaW1lPy5zb3VyY2UgPz8gJ0NMSUVOVCc7XG4gICAgcmV0dXJuIHNyYyA9PT0gJ1NFUlZFUic7XG4gIH1cblxuICBvbk1hbnVhbERhdGVUaW1lQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLm1hbnVhbERhdGVUaW1lTG9jYWwgPSB2YWx1ZTtcbiAgICBjb25zdCBkdCA9IHRoaXMuZnJvbURhdGVUaW1lTG9jYWxWYWx1ZSh2YWx1ZSk7XG4gICAgaWYgKGR0KSB0aGlzLnNldEZpeGVkRGF0ZVRpbWUoZHQpO1xuICAgIHRoaXMucmVmcmVzaERhdGVUaW1lKCk7XG4gIH1cblxuICBnZXREYXRlVGltZVBvc2l0aW9uQ2xhc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwb3M6IERhdGVUaW1lUG9zaXRpb24gPVxuICAgICAgdGhpcy5uYXZCYXJNZW51Q29uZmlnLmRhdGVUaW1lPy5wb3NpdGlvbiA/PyAncmlnaHQnO1xuICAgIHJldHVybiBgZHQtcG9zLSR7cG9zfWA7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hEYXRlVGltZSgpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuXG4gICAgLy8gMSkgRklYRUQgbW9kZSAoY2xpZW50IGNvbXB1dGVkKVxuICAgIGlmICh0aGlzLmlzRml4ZWRNb2RlKCkpIHtcbiAgICAgIGNvbnN0IGRpc3BsYXlEYXRlID0gbmV3IERhdGUoXG4gICAgICAgIHRoaXMuZml4ZWRTdGFydC5nZXRUaW1lKCkgKyAobm93LmdldFRpbWUoKSAtIHRoaXMuZml4ZWRTZXRBdC5nZXRUaW1lKCkpLFxuICAgICAgKTtcblxuICAgICAgdGhpcy5kYXRlVGltZVRleHQgPSB0aGlzLmZvcm1hdERhdGVUaW1lKFxuICAgICAgICBkaXNwbGF5RGF0ZSxcbiAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgICB0aGlzLnRpbWVGb3JtYXQsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIDIpIFNFUlZFUiBtb2RlIChzdHJpY3QpOiBpZiBub3QgcHJvdmlkZWQgPT4gcGxhY2Vob2xkZXJzIChubyBjbGllbnQgZmFsbGJhY2spXG4gICAgaWYgKHRoaXMuaXNTZXJ2ZXJNb2RlKCkpIHtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IHRoaXMubm9ybWFsaXplU2VydmVyRGF0ZVRpbWUodGhpcy5zZXJ2ZXJEYXRlVGltZSk7XG4gICAgICB0aGlzLmRhdGVUaW1lVGV4dCA9IGZvcm1hdHRlZCA/PyB0aGlzLmdldFNlcnZlclBsYWNlaG9sZGVyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gMykgQ0xJRU5UIG1vZGVcbiAgICB0aGlzLmRhdGVUaW1lVGV4dCA9IHRoaXMuZm9ybWF0RGF0ZVRpbWUoXG4gICAgICBub3csXG4gICAgICB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICB0aGlzLnRpbWVGb3JtYXQsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplU2VydmVyRGF0ZVRpbWUoXG4gICAgdjogeyBkYXRlOiBzdHJpbmc7IHRpbWU6IHN0cmluZyB9IHwgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICApOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIXYpIHJldHVybiBudWxsO1xuXG4gICAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgcyA9IHYudHJpbSgpO1xuICAgICAgcmV0dXJuIHMgPyBzIDogbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRlID0gKHYuZGF0ZSA/PyAnJykudHJpbSgpO1xuICAgIGNvbnN0IHRpbWUgPSAodi50aW1lID8/ICcnKS50cmltKCk7XG4gICAgaWYgKCFkYXRlIHx8ICF0aW1lKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiBgJHtkYXRlfSAke3RpbWV9YC50cmltKCk7XG4gIH1cblxuICAvKiog4pyFIE5FVzogcGxhY2Vob2xkZXIgdGhhdCByZXNwZWN0cyBzZWxlY3RlZCB0aW1lRm9ybWF0ICovXG4gIHByaXZhdGUgZ2V0U2VydmVyUGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAvLyBZb3UgYXNrZWQgZXhwbGljaXRseTogXCItLS8tLS8tLSAtLTotLTotLVwiXG4gICAgLy8gV2UnbGwga2VlcCBkYXRlIHBsYWNlaG9sZGVyIGZpeGVkIGFzIC0tLy0tLy0tIGFuZCBhZGFwdCB0aW1lIHRvIEhIOm1tIHZzIEhIOm1tOnNzXG4gICAgY29uc3QgZGF0ZVBoID0gJy0tLy0tLy0tJztcbiAgICBjb25zdCB0aW1lUGggPSB0aGlzLnRpbWVGb3JtYXQgPT09ICdISDptbScgPyAnLS06LS0nIDogJy0tOi0tOi0tJztcbiAgICByZXR1cm4gYCR7ZGF0ZVBofSAke3RpbWVQaH1gLnRyaW0oKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Rml4ZWREYXRlVGltZShkdDogRGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuZml4ZWRTdGFydCA9IGR0O1xuICAgIHRoaXMuZml4ZWRTZXRBdCA9IG5ldyBEYXRlKCk7XG4gICAgdGhpcy5tYW51YWxEYXRlVGltZUxvY2FsID0gdGhpcy50b0RhdGVUaW1lTG9jYWxWYWx1ZShkdCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRml4ZWRCYXNlRGF0ZUZyb21Db25maWcoKTogRGF0ZSB8IG51bGwge1xuICAgIGNvbnN0IGRhdGVWYWx1ZSA9IHRoaXMubmF2QmFyTWVudUNvbmZpZy5kYXRlVGltZT8uZGF0ZVZhbHVlO1xuICAgIGlmICghZGF0ZVZhbHVlKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IHRpbWVTb3VyY2UgPVxuICAgICAgdGhpcy5mcm9tRGF0ZVRpbWVMb2NhbFZhbHVlKHRoaXMubWFudWFsRGF0ZVRpbWVMb2NhbCkgPz8gbmV3IERhdGUoKTtcblxuICAgIGNvbnN0IHBhcnNlZERhdGUgPSB0aGlzLnBhcnNlRGF0ZUJ5Rm9ybWF0KGRhdGVWYWx1ZSwgdGhpcy5kYXRlRm9ybWF0KTtcbiAgICBpZiAoIXBhcnNlZERhdGUpIHJldHVybiBudWxsO1xuXG4gICAgcGFyc2VkRGF0ZS5zZXRIb3VycyhcbiAgICAgIHRpbWVTb3VyY2UuZ2V0SG91cnMoKSxcbiAgICAgIHRpbWVTb3VyY2UuZ2V0TWludXRlcygpLFxuICAgICAgdGltZVNvdXJjZS5nZXRTZWNvbmRzKCksXG4gICAgICAwLFxuICAgICk7XG5cbiAgICByZXR1cm4gcGFyc2VkRGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VEYXRlQnlGb3JtYXQodmFsdWU6IHN0cmluZywgZm10OiBEYXRlRm9ybWF0KTogRGF0ZSB8IG51bGwge1xuICAgIHRyeSB7XG4gICAgICBpZiAoZm10ID09PSAnZGQvTU0vWVlZWScpIHtcbiAgICAgICAgY29uc3QgW2RkLCBNTSwgWVlZWV0gPSB2YWx1ZS5zcGxpdCgnLycpLm1hcChOdW1iZXIpO1xuICAgICAgICBpZiAoIWRkIHx8ICFNTSB8fCAhWVlZWSkgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShZWVlZLCBNTSAtIDEsIGRkKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZtdCA9PT0gJ01NL2RkL1lZWVknKSB7XG4gICAgICAgIGNvbnN0IFtNTSwgZGQsIFlZWVldID0gdmFsdWUuc3BsaXQoJy8nKS5tYXAoTnVtYmVyKTtcbiAgICAgICAgaWYgKCFkZCB8fCAhTU0gfHwgIVlZWVkpIHJldHVybiBudWxsO1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoWVlZWSwgTU0gLSAxLCBkZCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChmbXQgPT09ICdZWVlZLU1NLWRkJykge1xuICAgICAgICBjb25zdCBbWVlZWSwgTU0sIGRkXSA9IHZhbHVlLnNwbGl0KCctJykubWFwKE51bWJlcik7XG4gICAgICAgIGlmICghZGQgfHwgIU1NIHx8ICFZWVlZKSByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKFlZWVksIE1NIC0gMSwgZGQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRm9ybWF0dGluZyB1dGlscyAoY2xpZW50L2ZpeGVkIG9ubHkpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgcHJpdmF0ZSBwYWQyKG46IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIFN0cmluZyhuKS5wYWRTdGFydCgyLCAnMCcpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlQWxsQ29tcGF0KHNvdXJjZTogc3RyaW5nLCBzZWFyY2g6IHN0cmluZywgcmVwbGFjZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHNvdXJjZS5zcGxpdChzZWFyY2gpLmpvaW4ocmVwbGFjZSk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdERhdGVUaW1lKGQ6IERhdGUsIGRhdGVGbXQ6IERhdGVGb3JtYXQsIHRpbWVGbXQ6IFRpbWVGb3JtYXQpIHtcbiAgICBjb25zdCBkZCA9IHRoaXMucGFkMihkLmdldERhdGUoKSk7XG4gICAgY29uc3QgTU0gPSB0aGlzLnBhZDIoZC5nZXRNb250aCgpICsgMSk7XG4gICAgY29uc3QgWVlZWSA9IFN0cmluZyhkLmdldEZ1bGxZZWFyKCkpO1xuICAgIGNvbnN0IEhIID0gdGhpcy5wYWQyKGQuZ2V0SG91cnMoKSk7XG4gICAgY29uc3QgbW0gPSB0aGlzLnBhZDIoZC5nZXRNaW51dGVzKCkpO1xuICAgIGNvbnN0IHNzID0gdGhpcy5wYWQyKGQuZ2V0U2Vjb25kcygpKTtcblxuICAgIGxldCBkYXRlT3V0OiBzdHJpbmcgPSBkYXRlRm10O1xuICAgIGRhdGVPdXQgPSB0aGlzLnJlcGxhY2VBbGxDb21wYXQoZGF0ZU91dCwgJ2RkJywgZGQpO1xuICAgIGRhdGVPdXQgPSB0aGlzLnJlcGxhY2VBbGxDb21wYXQoZGF0ZU91dCwgJ01NJywgTU0pO1xuICAgIGRhdGVPdXQgPSB0aGlzLnJlcGxhY2VBbGxDb21wYXQoZGF0ZU91dCwgJ1lZWVknLCBZWVlZKTtcblxuICAgIGxldCB0aW1lT3V0OiBzdHJpbmcgPSB0aW1lRm10O1xuICAgIHRpbWVPdXQgPSB0aGlzLnJlcGxhY2VBbGxDb21wYXQodGltZU91dCwgJ0hIJywgSEgpO1xuICAgIHRpbWVPdXQgPSB0aGlzLnJlcGxhY2VBbGxDb21wYXQodGltZU91dCwgJ21tJywgbW0pO1xuICAgIHRpbWVPdXQgPSB0aGlzLnJlcGxhY2VBbGxDb21wYXQodGltZU91dCwgJ3NzJywgc3MpO1xuXG4gICAgcmV0dXJuIGAke2RhdGVPdXR9ICR7dGltZU91dH1gLnRyaW0oKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9EYXRlVGltZUxvY2FsVmFsdWUoZDogRGF0ZSk6IHN0cmluZyB7XG4gICAgY29uc3QgeXl5eSA9IGQuZ2V0RnVsbFllYXIoKTtcbiAgICBjb25zdCBNTSA9IHRoaXMucGFkMihkLmdldE1vbnRoKCkgKyAxKTtcbiAgICBjb25zdCBkZCA9IHRoaXMucGFkMihkLmdldERhdGUoKSk7XG4gICAgY29uc3QgSEggPSB0aGlzLnBhZDIoZC5nZXRIb3VycygpKTtcbiAgICBjb25zdCBtbSA9IHRoaXMucGFkMihkLmdldE1pbnV0ZXMoKSk7XG4gICAgY29uc3Qgc3MgPSB0aGlzLnBhZDIoZC5nZXRTZWNvbmRzKCkpO1xuICAgIHJldHVybiBgJHt5eXl5fS0ke01NfS0ke2RkfVQke0hIfToke21tfToke3NzfWA7XG4gIH1cblxuICBwcml2YXRlIGZyb21EYXRlVGltZUxvY2FsVmFsdWUodmFsdWU6IHN0cmluZyk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBkdCA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICByZXR1cm4gaXNOYU4oZHQuZ2V0VGltZSgpKSA/IG51bGwgOiBkdDtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRXhpc3RpbmcgbG9naWMgKHVuY2hhbmdlZClcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PVxuICBpc0ltYWdlU3R5bGUob2JqZWN0OiBhbnkpOiBvYmplY3QgaXMgSW1hZ2VTdHlsZSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmICdpbWFnZVVybCcgaW4gb2JqZWN0O1xuICB9XG5cbiAgaXNUZXh0U3R5bGUob2JqZWN0OiBhbnkpOiBvYmplY3QgaXMgVGV4dFN0eWxlIHtcbiAgICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgJ3RleHQnIGluIG9iamVjdDtcbiAgfVxuXG4gIGdldExvZ29VcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc0ltYWdlU3R5bGUodGhpcy5uYXZCYXJNZW51Q29uZmlnLmxvZ28pXG4gICAgICA/IHRoaXMubmF2QmFyTWVudUNvbmZpZy5sb2dvLmltYWdlVXJsXG4gICAgICA6IFBUTmF2YmFyTWVudUNvbXBvbmVudC5ERUZBVUxUX0xPR09fVVJMO1xuICB9XG5cbiAgZ2V0TG9nb0FsdFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc0ltYWdlU3R5bGUodGhpcy5uYXZCYXJNZW51Q29uZmlnLmxvZ28pXG4gICAgICA/IHRoaXMubmF2QmFyTWVudUNvbmZpZy5sb2dvLmFsdFRleHQgfHxcbiAgICAgICAgICBQVE5hdmJhck1lbnVDb21wb25lbnQuREVGQVVMVF9MT0dPX0FMVF9URVhUXG4gICAgICA6IFBUTmF2YmFyTWVudUNvbXBvbmVudC5ERUZBVUxUX0xPR09fQUxUX1RFWFQ7XG4gIH1cblxuICBnZXRMb2dvU3R5bGVzKCkge1xuICAgIGlmICh0aGlzLmlzSW1hZ2VTdHlsZSh0aGlzLm5hdkJhck1lbnVDb25maWcubG9nbykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbG9yOlxuICAgICAgICAgIHRoaXMubmF2QmFyTWVudUNvbmZpZy5sb2dvLmNvbG9yIHx8XG4gICAgICAgICAgUFROYXZiYXJNZW51Q29tcG9uZW50LkRFRkFVTFRfSUNPTl9DT0xPUixcbiAgICAgICAgd2lkdGg6XG4gICAgICAgICAgdGhpcy5uYXZCYXJNZW51Q29uZmlnLmxvZ28ud2lkdGggfHxcbiAgICAgICAgICBQVE5hdmJhck1lbnVDb21wb25lbnQuREVGQVVMVF9MT0dPX1dJRFRILFxuICAgICAgICBoZWlnaHQ6XG4gICAgICAgICAgdGhpcy5uYXZCYXJNZW51Q29uZmlnLmxvZ28uaGVpZ2h0IHx8XG4gICAgICAgICAgUFROYXZiYXJNZW51Q29tcG9uZW50LkRFRkFVTFRfTE9HT19IRUlHSFQsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cblxuICBnZXRBcHBOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNUZXh0U3R5bGUodGhpcy5uYXZCYXJNZW51Q29uZmlnLmFwcE5hbWUpXG4gICAgICA/IHRoaXMubmF2QmFyTWVudUNvbmZpZy5hcHBOYW1lLnRleHRcbiAgICAgIDogUFROYXZiYXJNZW51Q29tcG9uZW50LkRFRkFVTFRfQVBQX05BTUU7XG4gIH1cblxuICBnZXRBcHBOYW1lU3R5bGVzKCkge1xuICAgIGlmICh0aGlzLmlzVGV4dFN0eWxlKHRoaXMubmF2QmFyTWVudUNvbmZpZy5hcHBOYW1lKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3I6XG4gICAgICAgICAgdGhpcy5uYXZCYXJNZW51Q29uZmlnLmFwcE5hbWUuY29sb3IgfHxcbiAgICAgICAgICBQVE5hdmJhck1lbnVDb21wb25lbnQuREVGQVVMVF9BUFBfTkFNRV9DT0xPUixcbiAgICAgICAgZm9udFNpemU6XG4gICAgICAgICAgdGhpcy5uYXZCYXJNZW51Q29uZmlnLmFwcE5hbWUuZm9udFNpemUgfHxcbiAgICAgICAgICBQVE5hdmJhck1lbnVDb21wb25lbnQuREVGQVVMVF9BUFBfTkFNRV9GT05UX1NJWkUsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IFBUTmF2YmFyTWVudUNvbXBvbmVudC5ERUZBVUxUX0FQUF9OQU1FX0NPTE9SLFxuICAgICAgZm9udFNpemU6IFBUTmF2YmFyTWVudUNvbXBvbmVudC5ERUZBVUxUX0FQUF9OQU1FX0ZPTlRfU0laRSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0TmF2YmFyU3R5bGVzKCkge1xuICAgIGNvbnN0IHRyYW5zcGFyZW5jeSA9XG4gICAgICB0aGlzLm5hdkJhck1lbnVDb25maWcucGF0dGVybj8udHJhbnNwYXJlbmN5UGVyY2VudGFnZSB8fFxuICAgICAgUFROYXZiYXJNZW51Q29tcG9uZW50LkRFRkFVTFRfVFJBTlNQQVJFTkNZO1xuXG4gICAgY29uc3QgaW1hZ2VVcmwgPSB0aGlzLm5hdkJhck1lbnVDb25maWcucGF0dGVybj8uaW1hZ2VVcmwgfHwgJyc7XG4gICAgY29uc3QgcGF0dGVybldpZHRoID0gdGhpcy5uYXZCYXJNZW51Q29uZmlnLnBhdHRlcm4/LndpZHRoIHx8ICcxMDAlJztcbiAgICBjb25zdCBwYXR0ZXJuSGVpZ2h0ID0gdGhpcy5uYXZCYXJNZW51Q29uZmlnLnBhdHRlcm4/LmhlaWdodCB8fCAnYXV0byc7XG5cbiAgICBjb25zdCByZXBlYXRYID0gdGhpcy5uYXZCYXJNZW51Q29uZmlnLnBhdHRlcm4/LnJlcGVhdFhcbiAgICAgID8gJ3JlcGVhdCdcbiAgICAgIDogJ25vLXJlcGVhdCc7XG4gICAgY29uc3QgcmVwZWF0WSA9IHRoaXMubmF2QmFyTWVudUNvbmZpZy5wYXR0ZXJuPy5yZXBlYXRZXG4gICAgICA/ICdyZXBlYXQnXG4gICAgICA6ICduby1yZXBlYXQnO1xuICAgIGNvbnN0IGJhY2tncm91bmRSZXBlYXQgPSBgJHtyZXBlYXRYfSAke3JlcGVhdFl9YDtcbiAgICBjb25zdCBiYWNrZ3JvdW5kUG9zaXRpb24gPVxuICAgICAgdGhpcy5uYXZCYXJNZW51Q29uZmlnLnBhdHRlcm4/LnBvc2l0aW9uIHx8ICdjZW50ZXInO1xuXG4gICAgY29uc3QgYmFja2dyb3VuZEltYWdlID0gaW1hZ2VVcmxcbiAgICAgID8gYGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsICR7XG4gICAgICAgICAgMSAtIHBhcnNlRmxvYXQodHJhbnNwYXJlbmN5KSAvIDEwMFxuICAgICAgICB9KSxcbiAgICAgICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAke1xuICAgICAgICAgIDEgLSBwYXJzZUZsb2F0KHRyYW5zcGFyZW5jeSkgLyAxMDBcbiAgICAgICAgfSkpLCB1cmwoJHtpbWFnZVVybH0pYFxuICAgICAgOiAnJztcblxuICAgIHJldHVybiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMubmF2QmFyTWVudUNvbmZpZy5wYXR0ZXJuID8gJ3RyYW5zcGFyZW50JyA6ICcjZmZmJyxcbiAgICAgIGJhY2tncm91bmRJbWFnZSxcbiAgICAgIGJhY2tncm91bmRTaXplOiBgJHtwYXR0ZXJuV2lkdGh9ICR7cGF0dGVybkhlaWdodH1gLFxuICAgICAgYmFja2dyb3VuZFBvc2l0aW9uLFxuICAgICAgYmFja2dyb3VuZFJlcGVhdCxcbiAgICB9O1xuICB9XG5cbiAgdG9nZ2xlTWVudSgpIHtcbiAgICB0aGlzLnRvZ2dsZVNpZGViYXIuZW1pdCgpO1xuICB9XG5cbiAgZ2V0VG9nZ2xlQnV0dG9uSWNvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLm5hdkJhck1lbnVDb25maWcudG9nZ2xlQnV0dG9uSWNvbiB8fFxuICAgICAgUFROYXZiYXJNZW51Q29tcG9uZW50LkRFRkFVTFRfVE9HR0xFX0JVVFRPTl9JQ09OXG4gICAgKTtcbiAgfVxuXG4gIGdldFRvZ2dsZUJ1dHRvblN0eWxlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6XG4gICAgICAgIHRoaXMubmF2QmFyTWVudUNvbmZpZy50b2dnbGVCdXR0b25Db2xvciB8fFxuICAgICAgICBQVE5hdmJhck1lbnVDb21wb25lbnQuREVGQVVMVF9UT0dHTEVfQlVUVE9OX0NPTE9SLFxuICAgIH07XG4gIH1cblxuICBnZXREYXRlVGltZVRleHRTdHlsZXMoKSB7XG4gICAgY29uc3QgcyA9IHRoaXMubmF2QmFyTWVudUNvbmZpZy5kYXRlVGltZT8udGV4dFN0eWxlO1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjogcz8uY29sb3IgPz8gJyMyMjInLFxuICAgICAgZm9udFNpemU6IHM/LmZvbnRTaXplID8/ICcxNHB4JyxcbiAgICAgIGZvbnRXZWlnaHQ6IHM/LmZvbnRXZWlnaHQgPz8gJzYwMCcsXG4gICAgfTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInB0LW5hdi1iYXItbWVudVwiIFtuZ1N0eWxlXT1cImdldE5hdmJhclN0eWxlcygpXCI+XG4gIDwhLS0gTEVGVCAtLT5cbiAgPGRpdiBjbGFzcz1cIm5hdmJhci1sZWZ0XCI+XG4gICAgPGFcbiAgICAgIFtyb3V0ZXJMaW5rXT1cIlxuICAgICAgICBpc0ltYWdlU3R5bGUobmF2QmFyTWVudUNvbmZpZy5sb2dvKVxuICAgICAgICAgID8gbmF2QmFyTWVudUNvbmZpZy5sb2dvLnJvdXRlckxpbmtcbiAgICAgICAgICA6ICcvJ1xuICAgICAgXCJcbiAgICAgIGNsYXNzPVwibG9nby1saW5rXCJcbiAgICA+XG4gICAgICA8aW1nXG4gICAgICAgIFtzcmNdPVwiZ2V0TG9nb1VybCgpXCJcbiAgICAgICAgW2FsdF09XCJnZXRMb2dvQWx0VGV4dCgpXCJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0TG9nb1N0eWxlcygpXCJcbiAgICAgICAgY2xhc3M9XCJuYXZiYXItbG9nb1wiXG4gICAgICAvPlxuICAgICAgPHNwYW4gY2xhc3M9XCJuYXZiYXItdGl0bGVcIiBbbmdTdHlsZV09XCJnZXRBcHBOYW1lU3R5bGVzKClcIj5cbiAgICAgICAge3sgZ2V0QXBwTmFtZSgpIH19XG4gICAgICA8L3NwYW4+XG4gICAgPC9hPlxuXG4gICAgPGEgKGNsaWNrKT1cInRvZ2dsZU1lbnUoKVwiIGNsYXNzPVwidG9nZ2xlLWJ0blwiPlxuICAgICAgPGlcbiAgICAgICAgW2NsYXNzXT1cImdldFRvZ2dsZUJ1dHRvbkljb24oKVwiXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldFRvZ2dsZUJ1dHRvblN0eWxlcygpXCJcbiAgICAgID48L2k+XG4gICAgPC9hPlxuICA8L2Rpdj5cblxuICA8IS0tIOKchSBNSURETEUgKERhdGVUaW1lKSAtLT5cbiAgPCEtLSBBbHdheXMgdmlzaWJsZSB3aGVuIGVuYWJsZWQsIGV2ZW4gaWYgc2VydmVyIHZhbHVlIG1pc3NpbmcgKHdpbGwgc2hvdyBwbGFjZWhvbGRlcnMpLiAtLT5cbiAgPGRpdlxuICAgIGNsYXNzPVwibmF2YmFyLW1pZGRsZVwiXG4gICAgKm5nSWY9XCJoYXNEYXRlVGltZSgpXCJcbiAgICBbbmdDbGFzc109XCJnZXREYXRlVGltZVBvc2l0aW9uQ2xhc3MoKVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwibmF2YmFyLWRhdGV0aW1lXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImR0LXZhbHVlXCIgW25nU3R5bGVdPVwiZ2V0RGF0ZVRpbWVUZXh0U3R5bGVzKClcIj5cbiAgICAgICAge3sgZGF0ZVRpbWVUZXh0IH19XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDwhLS0gTWFudWFsIGZpeGVkIGRhdGV0aW1lIChvbmx5IGlmIGNvbmZpZyBoYXMgZGF0ZVZhbHVlID0+IEZJWEVEIG1vZGUpIC0tPlxuICAgICAgPGlucHV0XG4gICAgICAgICpuZ0lmPVwiaXNGaXhlZE1vZGUoKVwiXG4gICAgICAgIGNsYXNzPVwiZHQtaW5wdXRcIlxuICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgIFt2YWx1ZV09XCJtYW51YWxEYXRlVGltZUxvY2FsXCJcbiAgICAgICAgKGlucHV0KT1cIm9uTWFudWFsRGF0ZVRpbWVDaGFuZ2UoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBSSUdIVCAtLT5cbiAgPGRpdiBjbGFzcz1cIm5hdmJhci1hY3Rpb25zXCI+XG4gICAgPGRpdiBjbGFzcz1cIm5hdmJhci1yaWdodFwiPlxuICAgICAgPHB0LW1lbnUtZmFuY3lcbiAgICAgICAgKm5nRm9yPVwibGV0IG1lbnVDb25maWcgb2YgbmF2QmFyTWVudUNvbmZpZy5tZW51c1wiXG4gICAgICAgIFtjb25maWddPVwibWVudUNvbmZpZ1wiXG4gICAgICA+PC9wdC1tZW51LWZhbmN5PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
331
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHQtbmF2LWJhci1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLXByaW1lLXRvb2xzL3NyYy9saWIvcHQtbmF2LWJhci1tZW51L3B0LW5hdi1iYXItbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1wcmltZS10b29scy9zcmMvbGliL3B0LW5hdi1iYXItbWVudS9wdC1uYXYtYmFyLW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FLUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBZTNDLE1BQU0sT0FBTyxxQkFBcUI7SUFMbEM7UUFNVyxxQkFBZ0IsR0FBcUIsRUFBRSxDQUFDO1FBQ3ZDLGtCQUFhLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFXL0QsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFdkMsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFFbEIsa0RBQWtEO1FBQzFDLGVBQVUsR0FBZSxZQUFZLENBQUM7UUFDdEMsZUFBVSxHQUFlLFVBQVUsQ0FBQztRQUU1QyxzQkFBc0I7UUFDZCxlQUFVLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUM5QixlQUFVLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUV0Qyw4QkFBOEI7UUFDOUIsd0JBQW1CLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztLQTBYN0Q7SUF4WEMsNEJBQTRCO0lBQzVCLHNCQUFzQjtJQUN0Qiw0QkFBNEI7YUFDSixxQkFB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LENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCO1lBQ3RDLHFCQUFxQixDQUFDLDBCQUEwQixDQUNqRCxDQUFDO0lBQ0osQ0FBQztJQUVELHFCQUFxQjtRQUNuQixPQUFPO1lBQ0wsS0FBSyxFQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUI7Z0JBQ3ZDLHFCQUFxQixDQUFDLDJCQUEyQjtTQUNwRCxDQUFDO0lBQ0osQ0FBQztJQUVELHFCQUFxQjtRQUNuQixNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQztRQUNwRCxPQUFPO1lBQ0wsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLElBQUksTUFBTTtZQUN6QixRQUFRLEVBQUUsQ0FBQyxFQUFFLFFBQVEsSUFBSSxNQUFNO1lBQy9CLFVBQVUsRUFBRSxDQUFDLEVBQUUsVUFBVSxJQUFJLEtBQUs7U0FDbkMsQ0FBQztJQUNKLENBQUM7K0dBblpVLHFCQUFxQjttR0FBckIscUJBQXFCLDZNQzNCbEMsa3RFQWtGQTs7NEZEdkRhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxpQkFBaUI7OEJBS2xCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNO2dCQVNFLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFN1YmplY3QsIGludGVydmFsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEltYWdlU3R5bGUsIE5hdkJhck1lbnVDb25maWcsIFRleHRTdHlsZSB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgdHlwZSB7XG4gIERhdGVGb3JtYXQsXG4gIFRpbWVGb3JtYXQsXG4gIERhdGVUaW1lUG9zaXRpb24sXG4gIERhdGVUaW1lU291cmNlLFxufSBmcm9tICcuLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwdC1uYXYtYmFyLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vcHQtbmF2LWJhci1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHQtbmF2LWJhci1tZW51LmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUFROYXZiYXJNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIG5hdkJhck1lbnVDb25maWc6IE5hdkJhck1lbnVDb25maWcgPSB7fTtcbiAgQE91dHB1dCgpIHRvZ2dsZVNpZGViYXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKipcbiAgICog4pyFIFNFUlZFUiBtb2RlIGlucHV0IChwcm92aWRlZCBieSBIb21lIGNvbXBvbmVudClcbiAgICogRXhwZWN0ZWQgZm9ybWF0cyBNVVNUIGFscmVhZHkgbWF0Y2ggZGF0ZUZvcm1hdC90aW1lRm9ybWF0IGZyb20gY29uZmlnLlxuICAgKiBFeGFtcGxlczpcbiAgICogIC0geyBkYXRlOiBcIjE0LzAyLzIwMjZcIiwgdGltZTogXCIxODozMjoxMFwiIH1cbiAgICogIC0gXCIxNC8wMi8yMDI2IDE4OjMyOjEwXCJcbiAgICovXG4gIEBJbnB1dCgpIHNlcnZlckRhdGVUaW1lPzogeyBkYXRlOiBzdHJpbmc7IHRpbWU6IHN0cmluZyB9IHwgc3RyaW5nO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGRhdGVUaW1lVGV4dCA9ICcnO1xuXG4gIC8qKiBmb3JtYXRzIGFyZSB0YWtlbiBmcm9tIGNvbmZpZyAob3IgZGVmYXVsdHMpICovXG4gIHByaXZhdGUgZGF0ZUZvcm1hdDogRGF0ZUZvcm1hdCA9ICdkZC9NTS9ZWVlZJztcbiAgcHJpdmF0ZSB0aW1lRm9ybWF0OiBUaW1lRm9ybWF0ID0gJ0hIOm1tOnNzJztcblxuICAvKiogRklYRUQgbW9kZSBiYXNlICovXG4gIHByaXZhdGUgZml4ZWRTdGFydDogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIHByaXZhdGUgZml4ZWRTZXRBdDogRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgLyoqIHVzZWQgb25seSBpbiBGSVhFRCBtb2RlICovXG4gIG1hbnVhbERhdGVUaW1lTG9jYWwgPSB0aGlzLnRvRGF0ZVRpbWVMb2NhbFZhbHVlKG5ldyBEYXRlKCkpO1xuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRGVmYXVsdHMgKGV4aXN0aW5nKVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfTE9HT19VUkw6IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0xPR09fQUxUX1RFWFQ6IHN0cmluZyA9ICdMb2dvJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9MT0dPX1dJRFRIOiBzdHJpbmcgPSAnNDBweCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfTE9HT19IRUlHSFQ6IHN0cmluZyA9ICdhdXRvJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9BUFBfTkFNRTogc3RyaW5nID0gJ0FwcGxpY2F0aW9uJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9BUFBfTkFNRV9DT0xPUjogc3RyaW5nID0gJyMwMDAnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0FQUF9OQU1FX0ZPTlRfU0laRTogc3RyaW5nID0gJzI0cHgnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1RSQU5TUEFSRU5DWTogc3RyaW5nID0gJzEwMCc7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfSUNPTl9DT0xPUjogc3RyaW5nID0gJyMzMzMnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1RPR0dMRV9CVVRUT05fSUNPTjogc3RyaW5nID0gJ3BpIHBpLWJhcnMnO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1RPR0dMRV9CVVRUT05fQ09MT1I6IHN0cmluZyA9ICcjMzMzJztcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIExpZmVjeWNsZVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYXBwbHlDb25maWdGb3JtYXRzQW5kRml4ZWRCYXNlKCk7XG5cbiAgICBpbnRlcnZhbCgxMDAwKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnJlZnJlc2hEYXRlVGltZSgpKTtcblxuICAgIHRoaXMucmVmcmVzaERhdGVUaW1lKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgLy8gSWYgY29uZmlnIGNoYW5nZXM6IHVwZGF0ZSBmb3JtYXRzIGFuZCBmaXhlZCBiYXNlIGlmIG5lZWRlZC5cbiAgICBpZiAoY2hhbmdlc1snbmF2QmFyTWVudUNvbmZpZyddKSB7XG4gICAgICB0aGlzLmFwcGx5Q29uZmlnRm9ybWF0c0FuZEZpeGVkQmFzZSgpO1xuICAgIH1cblxuICAgIC8vIElmIHNlcnZlckRhdGVUaW1lIGNoYW5nZXM6IGp1c3QgcmVmcmVzaCBkaXNwbGF5XG4gICAgaWYgKGNoYW5nZXNbJ3NlcnZlckRhdGVUaW1lJ10gfHwgY2hhbmdlc1snbmF2QmFyTWVudUNvbmZpZyddKSB7XG4gICAgICB0aGlzLnJlZnJlc2hEYXRlVGltZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlDb25maWdGb3JtYXRzQW5kRml4ZWRCYXNlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5oYXNEYXRlVGltZSgpKSByZXR1cm47XG5cbiAgICBjb25zdCBkdENmZyA9IHRoaXMubmF2QmFyTWVudUNvbmZpZy5kYXRlVGltZTtcblxuICAgIHRoaXMuZGF0ZUZvcm1hdCA9IChkdENmZz8uZGF0ZUZvcm1hdCA/PyAnZGQvTU0vWVlZWScpIGFzIERhdGVGb3JtYXQ7XG4gICAgdGhpcy50aW1lRm9ybWF0ID0gKGR0Q2ZnPy50aW1lRm9ybWF0ID8/ICdISDptbTpzcycpIGFzIFRpbWVGb3JtYXQ7XG5cbiAgICAvLyBJZiBmaXhlZCBtb2RlOiByZS1pbml0IGJhc2UgZnJvbSBjb25maWcgKG9ubHkgb25jZSBwZXIgY29uZmlnIGNoYW5nZSlcbiAgICBpZiAodGhpcy5pc0ZpeGVkTW9kZSgpKSB7XG4gICAgICBjb25zdCBiYXNlID0gdGhpcy5idWlsZEZpeGVkQmFzZURhdGVGcm9tQ29uZmlnKCk7XG4gICAgICBpZiAoYmFzZSkgdGhpcy5zZXRGaXhlZERhdGVUaW1lKGJhc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRGF0ZVRpbWUgaGVscGVyc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09XG4gIGhhc0RhdGVUaW1lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMubmF2QmFyTWVudUNvbmZpZy5kYXRlVGltZTtcbiAgfVxuXG4gIGlzRml4ZWRNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMubmF2QmFyTWVudUNvbmZpZy5kYXRlVGltZT8uZGF0ZVZhbHVlO1xuICB9XG5cbiAgaXNTZXJ2ZXJNb2RlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNyYzogRGF0ZVRpbWVTb3VyY2UgPVxuICAgICAgdGhpcy5uYXZCYXJNZW51Q29uZmlnLmRhdGVUaW1lPy5zb3VyY2UgPz8gJ0NMSUVOVCc7XG4gICAgcmV0dXJuIHNyYyA9PT0gJ1NFUlZFUic7XG4gIH1cblxuICBvbk1hbnVhbERhdGVUaW1lQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLm1hbnVhbERhdGVUaW1lTG9jYWwgPSB2YWx1ZTtcbiAgICBjb25zdCBkdCA9IHRoaXMuZnJvbURhdGVUaW1lTG9jYWxWYWx1ZSh2YWx1ZSk7XG4gICAgaWYgKGR0KSB0aGlzLnNldEZpeGVkRGF0ZVRpbWUoZHQpO1xuICAgIHRoaXMucmVmcmVzaERhdGVUaW1lKCk7XG4gIH1cblxuICBnZXREYXRlVGltZVBvc2l0aW9uQ2xhc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBwb3M6IERhdGVUaW1lUG9zaXRpb24gPVxuICAgICAgdGhpcy5uYXZCYXJNZW51Q29uZmlnLmRhdGVUaW1lPy5wb3NpdGlvbiA/PyAncmlnaHQnO1xuICAgIHJldHVybiBgZHQtcG9zLSR7cG9zfWA7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hEYXRlVGltZSgpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuXG4gICAgLy8gMSkgRklYRUQgbW9kZSAoY2xpZW50IGNvbXB1dGVkKVxuICAgIGlmICh0aGlzLmlzRml4ZWRNb2RlKCkpIHtcbiAgICAgIGNvbnN0IGRpc3BsYXlEYXRlID0gbmV3IERhdGUoXG4gICAgICAgIHRoaXMuZml4ZWRTdGFydC5nZXRUaW1lKCkgKyAobm93LmdldFRpbWUoKSAtIHRoaXMuZml4ZWRTZXRBdC5nZXRUaW1lKCkpLFxuICAgICAgKTtcblxuICAgICAgdGhpcy5kYXRlVGltZVRleHQgPSB0aGlzLmZvcm1hdERhdGVUaW1lKFxuICAgICAgICBkaXNwbGF5RGF0ZSxcbiAgICAgICAgdGhpcy5kYXRlRm9ybWF0LFxuICAgICAgICB0aGlzLnRpbWVGb3JtYXQsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIDIpIFNFUlZFUiBtb2RlIChzdHJpY3QpOiBpZiBub3QgcHJvdmlkZWQgPT4gcGxhY2Vob2xkZXJzIChubyBjbGllbnQgZmFsbGJhY2spXG4gICAgaWYgKHRoaXMuaXNTZXJ2ZXJNb2RlKCkpIHtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IHRoaXMubm9ybWFsaXplU2VydmVyRGF0ZVRpbWUodGhpcy5zZXJ2ZXJEYXRlVGltZSk7XG4gICAgICB0aGlzLmRhdGVUaW1lVGV4dCA9IGZvcm1hdHRlZCA/PyB0aGlzLmdldFNlcnZlclBsYWNlaG9sZGVyKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gMykgQ0xJRU5UIG1vZGVcbiAgICB0aGlzLmRhdGVUaW1lVGV4dCA9IHRoaXMuZm9ybWF0RGF0ZVRpbWUoXG4gICAgICBub3csXG4gICAgICB0aGlzLmRhdGVGb3JtYXQsXG4gICAgICB0aGlzLnRpbWVGb3JtYXQsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplU2VydmVyRGF0ZVRpbWUoXG4gICAgdjogeyBkYXRlOiBzdHJpbmc7IHRpbWU6IHN0cmluZyB9IHwgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICApOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIXYpIHJldHVybiBudWxsO1xuXG4gICAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xuICAgICAgY29uc3QgcyA9IHYudHJpbSgpO1xuICAgICAgcmV0dXJuIHMgPyBzIDogbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRlID0gKHYuZGF0ZSA/PyAnJykudHJpbSgpO1xuICAgIGNvbnN0IHRpbWUgPSAodi50aW1lID8/ICcnKS50cmltKCk7XG4gICAgaWYgKCFkYXRlIHx8ICF0aW1lKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiBgJHtkYXRlfSAke3RpbWV9YC50cmltKCk7XG4gIH1cblxuICAvKiog4pyFIE5FVzogcGxhY2Vob2xkZXIgdGhhdCByZXNwZWN0cyBzZWxlY3RlZCB0aW1lRm9ybWF0ICovXG4gIHByaXZhdGUgZ2V0U2VydmVyUGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAvLyBZb3UgYXNrZWQgZXhwbGljaXRseTogXCItLS8tLS8tLSAtLTotLTotLVwiXG4gICAgLy8gV2UnbGwga2VlcCBkYXRlIHBsYWNlaG9sZGVyIGZpeGVkIGFzIC0tLy0tLy0tIGFuZCBhZGFwdCB0aW1lIHRvIEhIOm1tIHZzIEhIOm1tOnNzXG4gICAgY29uc3QgZGF0ZVBoID0gJy0tLy0tLy0tJztcbiAgICBjb25zdCB0aW1lUGggPSB0aGlzLnRpbWVGb3JtYXQgPT09ICdISDptbScgPyAnLS06LS0nIDogJy0tOi0tOi0tJztcbiAgICByZXR1cm4gYCR7ZGF0ZVBofSAke3RpbWVQaH1gLnRyaW0oKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Rml4ZWREYXRlVGltZShkdDogRGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuZml4ZWRTdGFydCA9IGR0O1xuICAgIHRoaXMuZml4ZWRTZXRBdCA9IG5ldyBEYXRlKCk7XG4gICAgdGhpcy5tYW51YWxEYXRlVGltZUxvY2FsID0gdGhpcy50b0RhdGVUaW1lTG9jYWxWYWx1ZShkdCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRml4ZWRCYXNlRGF0ZUZyb21Db25maWcoKTogRGF0ZSB8IG51bGwge1xuICAgIGNvbnN0IGRhdGVWYWx1ZSA9IHRoaXMubmF2QmFyTWVudUNvbmZpZy5kYXRlVGltZT8uZGF0ZVZhbHVlO1xuICAgIGlmICghZGF0ZVZhbHVlKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IHRpbWVTb3VyY2UgPVxuICAgICAgdGhpcy5mcm9tRGF0ZVRpbWVMb2NhbFZhbHVlKHRoaXMubWFudWFsRGF0ZVRpbWVMb2NhbCkgPz8gbmV3IERhdGUoKTtcblxuICAgIGNvbnN0IHBhcnNlZERhdGUgPSB0aGlzLnBhcnNlRGF0ZUJ5Rm9ybWF0KGRhdGVWYWx1ZSwgdGhpcy5kYXRlRm9ybWF0KTtcbiAgICBpZiAoIXBhcnNlZERhdGUpIHJldHVybiBudWxsO1xuXG4gICAgcGFyc2VkRGF0ZS5zZXRIb3VycyhcbiAgICAgIHRpbWVTb3VyY2UuZ2V0SG91cnMoKSxcbiAgICAgIHRpbWVTb3VyY2UuZ2V0TWludXRlcygpLFxuICAgICAgdGltZVNvdXJjZS5nZXRTZWNvbmRzKCksXG4gICAgICAwLFxuICAgICk7XG5cbiAgICByZXR1cm4gcGFyc2VkRGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VEYXRlQnlGb3JtYXQodmFsdWU6IHN0cmluZywgZm10OiBEYXRlRm9ybWF0KTogRGF0ZSB8IG51bGwge1xuICAgIHRyeSB7XG4gICAgICBpZiAoZm10ID09PSAnZGQvTU0vWVlZWScpIHtcbiAgICAgICAgY29uc3QgW2RkLCBNTSwgWVlZWV0gPSB2YWx1ZS5zcGxpdCgnLycpLm1hcChOdW1iZXIpO1xuICAgICAgICBpZiAoIWRkIHx8ICFNTSB8fCAhWVlZWSkgcmV0dXJuIG51bGw7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShZWVlZLCBNTSAtIDEsIGRkKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZtdCA9PT0gJ01NL2RkL1lZWVknKSB7XG4gICAgICAgIGNvbnN0IFtNTSwgZGQsIFlZWVldID0gdmFsdWUuc3BsaXQoJy8nKS5tYXAoTnVtYmVyKTtcbiAgICAgICAgaWYgKCFkZCB8fCAhTU0gfHwgIVlZWVkpIHJldHVybiBudWxsO1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoWVlZWSwgTU0gLSAxLCBkZCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChmbXQgPT09ICdZWVlZLU1NLWRkJykge1xuICAgICAgICBjb25zdCBbWVlZWSwgTU0sIGRkXSA9IHZhbHVlLnNwbGl0KCctJykubWFwKE51bWJlcik7XG4gICAgICAgIGlmICghZGQgfHwgIU1NIHx8ICFZWVlZKSByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKFlZWVksIE1NIC0gMSwgZGQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRm9ybWF0dGluZyB1dGlscyAoY2xpZW50L2ZpeGVkIG9ubHkpXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgcHJpdmF0ZSBwYWQyKG46IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIFN0cmluZyhuKS5wYWRTdGFydCgyLCAnMCcpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlQWxsQ29tcGF0KHNvdXJjZTogc3RyaW5nLCBzZWFyY2g6IHN0cmluZywgcmVwbGFjZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHNvdXJjZS5zcGxpdChzZWFyY2gpLmpvaW4ocmVwbGFjZSk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdERhdGVUaW1lKGQ6IERhdGUsIGRhdGVGbXQ6IERhdGVGb3JtYXQsIHRpbWVGbXQ6IFRpbWVGb3JtYXQpIHtcbiAgICBjb25zdCBkZCA9IHRoaXMucGFkMihkLmdldERhdGUoKSk7XG4gICAgY29uc3QgTU0gPSB0aGlzLnBhZDIoZC5nZXRNb250aCgpICsgMSk7XG4gICAgY29uc3QgWVlZWSA9IFN0cmluZyhkLmdldEZ1bGxZZWFyKCkpO1xuICAgIGNvbnN0IEhIID0gdGhpcy5wYWQyKGQuZ2V0SG91cnMoKSk7XG4gICAgY29uc3QgbW0gPSB0aGlzLnBhZDIoZC5nZXRNaW51dGVzKCkpO1xuICAgIGNvbnN0IHNzID0gdGhpcy5wYWQyKGQuZ2V0U2Vjb25kcygpKTtcblxuICAgIGxldCBkYXRlT3V0OiBzdHJpbmcgPSBkYXRlRm10O1xuICAgIGRhdGVPdXQgPSB0aGlzLnJlcGxhY2VBbGxDb21wYXQoZGF0ZU91dCwgJ2RkJywgZGQpO1xuICAgIGRhdGVPdXQgPSB0aGlzLnJlcGxhY2VBbGxDb21wYXQoZGF0ZU91dCwgJ01NJywgTU0pO1xuICAgIGRhdGVPdXQgPSB0aGlzLnJlcGxhY2VBbGxDb21wYXQoZGF0ZU91dCwgJ1lZWVknLCBZWVlZKTtcblxuICAgIGxldCB0aW1lT3V0OiBzdHJpbmcgPSB0aW1lRm10O1xuICAgIHRpbWVPdXQgPSB0aGlzLnJlcGxhY2VBbGxDb21wYXQodGltZU91dCwgJ0hIJywgSEgpO1xuICAgIHRpbWVPdXQgPSB0aGlzLnJlcGxhY2VBbGxDb21wYXQodGltZU91dCwgJ21tJywgbW0pO1xuICAgIHRpbWVPdXQgPSB0aGlzLnJlcGxhY2VBbGxDb21wYXQodGltZU91dCwgJ3NzJywgc3MpO1xuXG4gICAgcmV0dXJuIGAke2RhdGVPdXR9ICR7dGltZU91dH1gLnRyaW0oKTtcbiAgfVxuXG4gIHByaXZhdGUgdG9EYXRlVGltZUxvY2FsVmFsdWUoZDogRGF0ZSk6IHN0cmluZyB7XG4gICAgY29uc3QgeXl5eSA9IGQuZ2V0RnVsbFllYXIoKTtcbiAgICBjb25zdCBNTSA9IHRoaXMucGFkMihkLmdldE1vbnRoKCkgKyAxKTtcbiAgICBjb25zdCBkZCA9IHRoaXMucGFkMihkLmdldERhdGUoKSk7XG4gICAgY29uc3QgSEggPSB0aGlzLnBhZDIoZC5nZXRIb3VycygpKTtcbiAgICBjb25zdCBtbSA9IHRoaXMucGFkMihkLmdldE1pbnV0ZXMoKSk7XG4gICAgY29uc3Qgc3MgPSB0aGlzLnBhZDIoZC5nZXRTZWNvbmRzKCkpO1xuICAgIHJldHVybiBgJHt5eXl5fS0ke01NfS0ke2RkfVQke0hIfToke21tfToke3NzfWA7XG4gIH1cblxuICBwcml2YXRlIGZyb21EYXRlVGltZUxvY2FsVmFsdWUodmFsdWU6IHN0cmluZyk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBkdCA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICByZXR1cm4gaXNOYU4oZHQuZ2V0VGltZSgpKSA/IG51bGwgOiBkdDtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRXhpc3RpbmcgbG9naWMgKHVuY2hhbmdlZClcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PVxuICBpc0ltYWdlU3R5bGUob2JqZWN0OiBhbnkpOiBvYmplY3QgaXMgSW1hZ2VTdHlsZSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmICdpbWFnZVVybCcgaW4gb2JqZWN0O1xuICB9XG5cbiAgaXNUZXh0U3R5bGUob2JqZWN0OiBhbnkpOiBvYmplY3QgaXMgVGV4dFN0eWxlIHtcbiAgICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgJ3RleHQnIGluIG9iamVjdDtcbiAgfVxuXG4gIGdldExvZ29VcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc0ltYWdlU3R5bGUodGhpcy5uYXZCYXJNZW51Q29uZmlnLmxvZ28pXG4gICAgICA/IHRoaXMubmF2QmFyTWVudUNvbmZpZy5sb2dvLmltYWdlVXJsXG4gICAgICA6IFBUTmF2YmFyTWVudUNvbXBvbmVudC5ERUZBVUxUX0xPR09fVVJMO1xuICB9XG5cbiAgZ2V0TG9nb0FsdFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pc0ltYWdlU3R5bGUodGhpcy5uYXZCYXJNZW51Q29uZmlnLmxvZ28pXG4gICAgICA/IHRoaXMubmF2QmFyTWVudUNvbmZpZy5sb2dvLmFsdFRleHQgfHxcbiAgICAgICAgICBQVE5hdmJhck1lbnVDb21wb25lbnQuREVGQVVMVF9MT0dPX0FMVF9URVhUXG4gICAgICA6IFBUTmF2YmFyTWVudUNvbXBvbmVudC5ERUZBVUxUX0xPR09fQUxUX1RFWFQ7XG4gIH1cblxuICBnZXRMb2dvU3R5bGVzKCkge1xuICAgIGlmICh0aGlzLmlzSW1hZ2VTdHlsZSh0aGlzLm5hdkJhck1lbnVDb25maWcubG9nbykpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbG9yOlxuICAgICAgICAgIHRoaXMubmF2QmFyTWVudUNvbmZpZy5sb2dvLmNvbG9yIHx8XG4gICAgICAgICAgUFROYXZiYXJNZW51Q29tcG9uZW50LkRFRkFVTFRfSUNPTl9DT0xPUixcbiAgICAgICAgd2lkdGg6XG4gICAgICAgICAgdGhpcy5uYXZCYXJNZW51Q29uZmlnLmxvZ28ud2lkdGggfHxcbiAgICAgICAgICBQVE5hdmJhck1lbnVDb21wb25lbnQuREVGQVVMVF9MT0dPX1dJRFRILFxuICAgICAgICBoZWlnaHQ6XG4gICAgICAgICAgdGhpcy5uYXZCYXJNZW51Q29uZmlnLmxvZ28uaGVpZ2h0IHx8XG4gICAgICAgICAgUFROYXZiYXJNZW51Q29tcG9uZW50LkRFRkFVTFRfTE9HT19IRUlHSFQsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cblxuICBnZXRBcHBOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXNUZXh0U3R5bGUodGhpcy5uYXZCYXJNZW51Q29uZmlnLmFwcE5hbWUpXG4gICAgICA/IHRoaXMubmF2QmFyTWVudUNvbmZpZy5hcHBOYW1lLnRleHRcbiAgICAgIDogUFROYXZiYXJNZW51Q29tcG9uZW50LkRFRkFVTFRfQVBQX05BTUU7XG4gIH1cblxuICBnZXRBcHBOYW1lU3R5bGVzKCkge1xuICAgIGlmICh0aGlzLmlzVGV4dFN0eWxlKHRoaXMubmF2QmFyTWVudUNvbmZpZy5hcHBOYW1lKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sb3I6XG4gICAgICAgICAgdGhpcy5uYXZCYXJNZW51Q29uZmlnLmFwcE5hbWUuY29sb3IgfHxcbiAgICAgICAgICBQVE5hdmJhck1lbnVDb21wb25lbnQuREVGQVVMVF9BUFBfTkFNRV9DT0xPUixcbiAgICAgICAgZm9udFNpemU6XG4gICAgICAgICAgdGhpcy5uYXZCYXJNZW51Q29uZmlnLmFwcE5hbWUuZm9udFNpemUgfHxcbiAgICAgICAgICBQVE5hdmJhck1lbnVDb21wb25lbnQuREVGQVVMVF9BUFBfTkFNRV9GT05UX1NJWkUsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6IFBUTmF2YmFyTWVudUNvbXBvbmVudC5ERUZBVUxUX0FQUF9OQU1FX0NPTE9SLFxuICAgICAgZm9udFNpemU6IFBUTmF2YmFyTWVudUNvbXBvbmVudC5ERUZBVUxUX0FQUF9OQU1FX0ZPTlRfU0laRSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0TmF2YmFyU3R5bGVzKCkge1xuICAgIGNvbnN0IHRyYW5zcGFyZW5jeSA9XG4gICAgICB0aGlzLm5hdkJhck1lbnVDb25maWcucGF0dGVybj8udHJhbnNwYXJlbmN5UGVyY2VudGFnZSB8fFxuICAgICAgUFROYXZiYXJNZW51Q29tcG9uZW50LkRFRkFVTFRfVFJBTlNQQVJFTkNZO1xuXG4gICAgY29uc3QgaW1hZ2VVcmwgPSB0aGlzLm5hdkJhck1lbnVDb25maWcucGF0dGVybj8uaW1hZ2VVcmwgfHwgJyc7XG4gICAgY29uc3QgcGF0dGVybldpZHRoID0gdGhpcy5uYXZCYXJNZW51Q29uZmlnLnBhdHRlcm4/LndpZHRoIHx8ICcxMDAlJztcbiAgICBjb25zdCBwYXR0ZXJuSGVpZ2h0ID0gdGhpcy5uYXZCYXJNZW51Q29uZmlnLnBhdHRlcm4/LmhlaWdodCB8fCAnYXV0byc7XG5cbiAgICBjb25zdCByZXBlYXRYID0gdGhpcy5uYXZCYXJNZW51Q29uZmlnLnBhdHRlcm4/LnJlcGVhdFhcbiAgICAgID8gJ3JlcGVhdCdcbiAgICAgIDogJ25vLXJlcGVhdCc7XG4gICAgY29uc3QgcmVwZWF0WSA9IHRoaXMubmF2QmFyTWVudUNvbmZpZy5wYXR0ZXJuPy5yZXBlYXRZXG4gICAgICA/ICdyZXBlYXQnXG4gICAgICA6ICduby1yZXBlYXQnO1xuICAgIGNvbnN0IGJhY2tncm91bmRSZXBlYXQgPSBgJHtyZXBlYXRYfSAke3JlcGVhdFl9YDtcbiAgICBjb25zdCBiYWNrZ3JvdW5kUG9zaXRpb24gPVxuICAgICAgdGhpcy5uYXZCYXJNZW51Q29uZmlnLnBhdHRlcm4/LnBvc2l0aW9uIHx8ICdjZW50ZXInO1xuXG4gICAgY29uc3QgYmFja2dyb3VuZEltYWdlID0gaW1hZ2VVcmxcbiAgICAgID8gYGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsICR7XG4gICAgICAgICAgMSAtIHBhcnNlRmxvYXQodHJhbnNwYXJlbmN5KSAvIDEwMFxuICAgICAgICB9KSxcbiAgICAgICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAke1xuICAgICAgICAgIDEgLSBwYXJzZUZsb2F0KHRyYW5zcGFyZW5jeSkgLyAxMDBcbiAgICAgICAgfSkpLCB1cmwoJHtpbWFnZVVybH0pYFxuICAgICAgOiAnJztcblxuICAgIHJldHVybiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoaXMubmF2QmFyTWVudUNvbmZpZy5wYXR0ZXJuID8gJ3RyYW5zcGFyZW50JyA6ICcjZmZmJyxcbiAgICAgIGJhY2tncm91bmRJbWFnZSxcbiAgICAgIGJhY2tncm91bmRTaXplOiBgJHtwYXR0ZXJuV2lkdGh9ICR7cGF0dGVybkhlaWdodH1gLFxuICAgICAgYmFja2dyb3VuZFBvc2l0aW9uLFxuICAgICAgYmFja2dyb3VuZFJlcGVhdCxcbiAgICB9O1xuICB9XG5cbiAgdG9nZ2xlTWVudSgpIHtcbiAgICB0aGlzLnRvZ2dsZVNpZGViYXIuZW1pdCgpO1xuICB9XG5cbiAgZ2V0VG9nZ2xlQnV0dG9uSWNvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLm5hdkJhck1lbnVDb25maWcudG9nZ2xlQnV0dG9uSWNvbiB8fFxuICAgICAgUFROYXZiYXJNZW51Q29tcG9uZW50LkRFRkFVTFRfVE9HR0xFX0JVVFRPTl9JQ09OXG4gICAgKTtcbiAgfVxuXG4gIGdldFRvZ2dsZUJ1dHRvblN0eWxlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3I6XG4gICAgICAgIHRoaXMubmF2QmFyTWVudUNvbmZpZy50b2dnbGVCdXR0b25Db2xvciB8fFxuICAgICAgICBQVE5hdmJhck1lbnVDb21wb25lbnQuREVGQVVMVF9UT0dHTEVfQlVUVE9OX0NPTE9SLFxuICAgIH07XG4gIH1cblxuICBnZXREYXRlVGltZVRleHRTdHlsZXMoKSB7XG4gICAgY29uc3QgcyA9IHRoaXMubmF2QmFyTWVudUNvbmZpZy5kYXRlVGltZT8udGV4dFN0eWxlO1xuICAgIHJldHVybiB7XG4gICAgICBjb2xvcjogcz8uY29sb3IgPz8gJyMyMjInLFxuICAgICAgZm9udFNpemU6IHM/LmZvbnRTaXplID8/ICcxNHB4JyxcbiAgICAgIGZvbnRXZWlnaHQ6IHM/LmZvbnRXZWlnaHQgPz8gJzYwMCcsXG4gICAgfTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInB0LW5hdi1iYXItbWVudVwiIFtuZ1N0eWxlXT1cImdldE5hdmJhclN0eWxlcygpXCI+XG4gIDwhLS0gTEVGVCAtLT5cbiAgPGRpdiBjbGFzcz1cIm5hdmJhci1sZWZ0XCI+XG4gICAgPGFcbiAgICAgIFtyb3V0ZXJMaW5rXT1cIlxuICAgICAgICBpc0ltYWdlU3R5bGUobmF2QmFyTWVudUNvbmZpZy5sb2dvKVxuICAgICAgICAgID8gbmF2QmFyTWVudUNvbmZpZy5sb2dvLnJvdXRlckxpbmtcbiAgICAgICAgICA6ICcvJ1xuICAgICAgXCJcbiAgICAgIGNsYXNzPVwibG9nby1saW5rXCJcbiAgICA+XG4gICAgICA8aW1nXG4gICAgICAgIFtzcmNdPVwiZ2V0TG9nb1VybCgpXCJcbiAgICAgICAgW2FsdF09XCJnZXRMb2dvQWx0VGV4dCgpXCJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0TG9nb1N0eWxlcygpXCJcbiAgICAgICAgY2xhc3M9XCJuYXZiYXItbG9nb1wiXG4gICAgICAvPlxuXG4gICAgICA8c3BhbiBjbGFzcz1cIm5hdmJhci10aXRsZVwiIFtuZ1N0eWxlXT1cImdldEFwcE5hbWVTdHlsZXMoKVwiPlxuICAgICAgICB7eyBnZXRBcHBOYW1lKCkgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2E+XG5cbiAgICA8YSAoY2xpY2spPVwidG9nZ2xlTWVudSgpXCIgY2xhc3M9XCJ0b2dnbGUtYnRuXCI+XG4gICAgICA8aVxuICAgICAgICBbY2xhc3NdPVwiZ2V0VG9nZ2xlQnV0dG9uSWNvbigpXCJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0VG9nZ2xlQnV0dG9uU3R5bGVzKClcIlxuICAgICAgPjwvaT5cbiAgICA8L2E+XG4gIDwvZGl2PlxuXG4gIDwhLS0gTUlERExFIERhdGVUaW1lIC0tPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJuYXZiYXItbWlkZGxlXCJcbiAgICAqbmdJZj1cImhhc0RhdGVUaW1lKClcIlxuICAgIFtuZ0NsYXNzXT1cImdldERhdGVUaW1lUG9zaXRpb25DbGFzcygpXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJuYXZiYXItZGF0ZXRpbWVcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZHQtdmFsdWVcIiBbbmdTdHlsZV09XCJnZXREYXRlVGltZVRleHRTdHlsZXMoKVwiPlxuICAgICAgICB7eyBkYXRlVGltZVRleHQgfX1cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPGlucHV0XG4gICAgICAgICpuZ0lmPVwiaXNGaXhlZE1vZGUoKVwiXG4gICAgICAgIGNsYXNzPVwiZHQtaW5wdXRcIlxuICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgIFt2YWx1ZV09XCJtYW51YWxEYXRlVGltZUxvY2FsXCJcbiAgICAgICAgKGlucHV0KT1cIm9uTWFudWFsRGF0ZVRpbWVDaGFuZ2UoJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBSSUdIVCAtLT5cbiAgPGRpdiBjbGFzcz1cIm5hdmJhci1hY3Rpb25zXCI+XG4gICAgPGRpdiBjbGFzcz1cIm5hdmJhci1yaWdodFwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm5hdmJhci1tZW51LWl0ZW0td3JhcHBlclwiXG4gICAgICAgICpuZ0Zvcj1cImxldCBtZW51Q29uZmlnIG9mIG5hdkJhck1lbnVDb25maWcubWVudXNcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibmF2YmFyLXVzZXItaWRlbnRpdHlcIiAqbmdJZj1cIiRhbnkobWVudUNvbmZpZykudXNlcklkZW50aXR5XCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJuYXZiYXItdXNlci1mdWxsbmFtZVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJGFueShtZW51Q29uZmlnKS51c2VySWRlbnRpdHkuZnVsbE5hbWVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICRhbnkobWVudUNvbmZpZykudXNlcklkZW50aXR5LmZ1bGxOYW1lIH19XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm5hdmJhci11c2VyLXByb2ZpbGVcIlxuICAgICAgICAgICAgKm5nSWY9XCIkYW55KG1lbnVDb25maWcpLnVzZXJJZGVudGl0eS5wcm9maWxlXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCIkYW55KG1lbnVDb25maWcpLnVzZXJJZGVudGl0eS5wcm9maWxlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAkYW55KG1lbnVDb25maWcpLnVzZXJJZGVudGl0eS5wcm9maWxlIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxwdC1tZW51LWZhbmN5IFtjb25maWddPVwibWVudUNvbmZpZ1wiPjwvcHQtbWVudS1mYW5jeT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -4053,11 +4053,11 @@ class PTNavbarMenuComponent {
4053
4053
  };
4054
4054
  }
4055
4055
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTNavbarMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4056
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTNavbarMenuComponent, selector: "pt-nav-bar-menu", inputs: { navBarMenuConfig: "navBarMenuConfig", serverDateTime: "serverDateTime" }, outputs: { toggleSidebar: "toggleSidebar" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"pt-nav-bar-menu\" [ngStyle]=\"getNavbarStyles()\">\n <!-- LEFT -->\n <div class=\"navbar-left\">\n <a\n [routerLink]=\"\n isImageStyle(navBarMenuConfig.logo)\n ? navBarMenuConfig.logo.routerLink\n : '/'\n \"\n class=\"logo-link\"\n >\n <img\n [src]=\"getLogoUrl()\"\n [alt]=\"getLogoAltText()\"\n [ngStyle]=\"getLogoStyles()\"\n class=\"navbar-logo\"\n />\n <span class=\"navbar-title\" [ngStyle]=\"getAppNameStyles()\">\n {{ getAppName() }}\n </span>\n </a>\n\n <a (click)=\"toggleMenu()\" class=\"toggle-btn\">\n <i\n [class]=\"getToggleButtonIcon()\"\n [ngStyle]=\"getToggleButtonStyles()\"\n ></i>\n </a>\n </div>\n\n <!-- \u2705 MIDDLE (DateTime) -->\n <!-- Always visible when enabled, even if server value missing (will show placeholders). -->\n <div\n class=\"navbar-middle\"\n *ngIf=\"hasDateTime()\"\n [ngClass]=\"getDateTimePositionClass()\"\n >\n <div class=\"navbar-datetime\">\n <span class=\"dt-value\" [ngStyle]=\"getDateTimeTextStyles()\">\n {{ dateTimeText }}\n </span>\n\n <!-- Manual fixed datetime (only if config has dateValue => FIXED mode) -->\n <input\n *ngIf=\"isFixedMode()\"\n class=\"dt-input\"\n type=\"datetime-local\"\n step=\"1\"\n [value]=\"manualDateTimeLocal\"\n (input)=\"onManualDateTimeChange($any($event.target).value)\"\n />\n </div>\n </div>\n\n <!-- RIGHT -->\n <div class=\"navbar-actions\">\n <div class=\"navbar-right\">\n <pt-menu-fancy\n *ngFor=\"let menuConfig of navBarMenuConfig.menus\"\n [config]=\"menuConfig\"\n ></pt-menu-fancy>\n </div>\n </div>\n</div>\n", styles: [".pt-nav-bar-menu{display:flex;align-items:center;justify-content:space-between;padding:10px;border-bottom:1px solid #ddd;background-color:#fff;background-size:cover;background-position:center;gap:12px;min-width:0}.pt-nav-bar-menu .navbar-left{display:flex;align-items:center;gap:12px;min-width:0;flex:0 0 auto}.pt-nav-bar-menu .logo-link{display:flex;align-items:center;text-decoration:none;color:inherit;min-width:0}.pt-nav-bar-menu .navbar-logo{margin-left:10px;margin-right:20px}.pt-nav-bar-menu .navbar-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-middle{flex:1 1 auto;display:flex;align-items:center;min-width:0;padding:0 12px}.pt-nav-bar-menu .navbar-middle.dt-pos-left{justify-content:flex-start}.pt-nav-bar-menu .navbar-middle.dt-pos-center{justify-content:center}.pt-nav-bar-menu .navbar-middle.dt-pos-right{justify-content:flex-end}.pt-nav-bar-menu .navbar-datetime{display:inline-flex;align-items:center;gap:10px;flex:0 0 auto;white-space:nowrap;max-width:100%}.pt-nav-bar-menu .navbar-datetime .dt-value{white-space:nowrap}.pt-nav-bar-menu .navbar-datetime .dt-input{height:32px;padding:0 8px;border:1px solid rgba(0,0,0,.18);border-radius:6px;background:#fff;font-size:12px;color:#333;outline:none}.pt-nav-bar-menu .navbar-datetime .dt-input:focus{border-color:#034c83b3;box-shadow:0 0 0 3px #034c831f}.pt-nav-bar-menu .navbar-actions{display:flex;align-items:center;gap:12px;flex:0 0 auto;min-width:0}.pt-nav-bar-menu .navbar-right{display:flex;align-items:center;gap:10px;flex:0 0 auto}.pt-nav-bar-menu .navbar-right a{margin-left:20px;color:#333;text-decoration:none;font-size:20px;cursor:pointer}.pt-nav-bar-menu .navbar-right a:hover{color:#000}.pt-nav-bar-menu .toggle-btn{margin-left:2rem;cursor:pointer;padding:7px;border-radius:6px}.pt-nav-bar-menu .toggle-btn>.pi.pi-bars{font-size:1.5rem;color:#333}.pt-nav-bar-menu .toggle-btn:hover{background-color:#f1f1f1}@media (max-width: 900px){.pt-nav-bar-menu{flex-wrap:wrap;row-gap:8px}.pt-nav-bar-menu .navbar-left{width:100%;justify-content:space-between}.pt-nav-bar-menu .navbar-middle{width:100%;padding:0;justify-content:flex-start}.pt-nav-bar-menu .navbar-middle.dt-pos-right .navbar-datetime,.pt-nav-bar-menu .navbar-middle.dt-pos-center .navbar-datetime{padding-left:0;border-left:none}.pt-nav-bar-menu .navbar-actions{width:100%;justify-content:flex-end}}@media (max-width: 520px){.pt-nav-bar-menu .navbar-datetime .dt-value{display:none}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: PTMenuFancyComponent, selector: "pt-menu-fancy", inputs: ["config"] }] }); }
4056
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: PTNavbarMenuComponent, selector: "pt-nav-bar-menu", inputs: { navBarMenuConfig: "navBarMenuConfig", serverDateTime: "serverDateTime" }, outputs: { toggleSidebar: "toggleSidebar" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"pt-nav-bar-menu\" [ngStyle]=\"getNavbarStyles()\">\n <!-- LEFT -->\n <div class=\"navbar-left\">\n <a\n [routerLink]=\"\n isImageStyle(navBarMenuConfig.logo)\n ? navBarMenuConfig.logo.routerLink\n : '/'\n \"\n class=\"logo-link\"\n >\n <img\n [src]=\"getLogoUrl()\"\n [alt]=\"getLogoAltText()\"\n [ngStyle]=\"getLogoStyles()\"\n class=\"navbar-logo\"\n />\n\n <span class=\"navbar-title\" [ngStyle]=\"getAppNameStyles()\">\n {{ getAppName() }}\n </span>\n </a>\n\n <a (click)=\"toggleMenu()\" class=\"toggle-btn\">\n <i\n [class]=\"getToggleButtonIcon()\"\n [ngStyle]=\"getToggleButtonStyles()\"\n ></i>\n </a>\n </div>\n\n <!-- MIDDLE DateTime -->\n <div\n class=\"navbar-middle\"\n *ngIf=\"hasDateTime()\"\n [ngClass]=\"getDateTimePositionClass()\"\n >\n <div class=\"navbar-datetime\">\n <span class=\"dt-value\" [ngStyle]=\"getDateTimeTextStyles()\">\n {{ dateTimeText }}\n </span>\n\n <input\n *ngIf=\"isFixedMode()\"\n class=\"dt-input\"\n type=\"datetime-local\"\n step=\"1\"\n [value]=\"manualDateTimeLocal\"\n (input)=\"onManualDateTimeChange($any($event.target).value)\"\n />\n </div>\n </div>\n\n <!-- RIGHT -->\n <div class=\"navbar-actions\">\n <div class=\"navbar-right\">\n <div\n class=\"navbar-menu-item-wrapper\"\n *ngFor=\"let menuConfig of navBarMenuConfig.menus\"\n >\n <div class=\"navbar-user-identity\" *ngIf=\"$any(menuConfig).userIdentity\">\n <div\n class=\"navbar-user-fullname\"\n [title]=\"$any(menuConfig).userIdentity.fullName\"\n >\n {{ $any(menuConfig).userIdentity.fullName }}\n </div>\n\n <div\n class=\"navbar-user-profile\"\n *ngIf=\"$any(menuConfig).userIdentity.profile\"\n [title]=\"$any(menuConfig).userIdentity.profile\"\n >\n {{ $any(menuConfig).userIdentity.profile }}\n </div>\n </div>\n\n <pt-menu-fancy [config]=\"menuConfig\"></pt-menu-fancy>\n </div>\n </div>\n </div>\n</div>\n", styles: [".pt-nav-bar-menu{display:flex;align-items:center;justify-content:space-between;padding:10px;border-bottom:1px solid #ddd;background-color:#fff;background-size:cover;background-position:center;gap:12px;min-width:0}.pt-nav-bar-menu .navbar-left{display:flex;align-items:center;gap:12px;min-width:0;flex:0 0 auto}.pt-nav-bar-menu .logo-link{display:flex;align-items:center;text-decoration:none;color:inherit;min-width:0}.pt-nav-bar-menu .navbar-logo{margin-left:10px;margin-right:20px}.pt-nav-bar-menu .navbar-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-middle{flex:1 1 auto;display:flex;align-items:center;min-width:0;padding:0 12px}.pt-nav-bar-menu .navbar-middle.dt-pos-left{justify-content:flex-start}.pt-nav-bar-menu .navbar-middle.dt-pos-center{justify-content:center}.pt-nav-bar-menu .navbar-middle.dt-pos-right{justify-content:flex-end}.pt-nav-bar-menu .navbar-datetime{display:inline-flex;align-items:center;gap:10px;flex:0 0 auto;white-space:nowrap;max-width:100%}.pt-nav-bar-menu .navbar-datetime .dt-value{white-space:nowrap}.pt-nav-bar-menu .navbar-datetime .dt-input{height:32px;padding:0 8px;border:1px solid rgba(0,0,0,.18);border-radius:6px;background:#fff;font-size:12px;color:#333;outline:none}.pt-nav-bar-menu .navbar-datetime .dt-input:focus{border-color:#034c83b3;box-shadow:0 0 0 3px #034c831f}.pt-nav-bar-menu .navbar-actions{display:flex;align-items:center;gap:12px;flex:0 0 auto;min-width:0}.pt-nav-bar-menu .navbar-right{display:flex;align-items:center;gap:10px;flex:0 0 auto}.pt-nav-bar-menu .navbar-menu-item-wrapper{display:inline-flex;align-items:center;gap:.65rem;min-width:0;padding:.25rem .4rem;border-radius:10px;transition:background-color .15s ease}.pt-nav-bar-menu .navbar-menu-item-wrapper:hover{background-color:#5b21b60f}.pt-nav-bar-menu .navbar-user-identity{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;max-width:260px;min-width:0;line-height:1.15}.pt-nav-bar-menu .navbar-user-fullname{max-width:260px;color:#1f2937;font-size:13px;font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pt-nav-bar-menu .navbar-user-profile{max-width:260px;margin-top:2px;color:#667085;font-size:11px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pt-nav-bar-menu .navbar-right a{margin-left:20px;color:#333;text-decoration:none;font-size:20px;cursor:pointer}.pt-nav-bar-menu .navbar-right a:hover{color:#000}.pt-nav-bar-menu .toggle-btn{margin-left:2rem;cursor:pointer;padding:7px;border-radius:6px}.pt-nav-bar-menu .toggle-btn>.pi.pi-bars{font-size:1.5rem;color:#333}.pt-nav-bar-menu .toggle-btn:hover{background-color:#f1f1f1}@media (max-width: 900px){.pt-nav-bar-menu{flex-wrap:wrap;row-gap:8px}.pt-nav-bar-menu .navbar-left{width:100%;justify-content:space-between}.pt-nav-bar-menu .navbar-middle{width:100%;padding:0;justify-content:flex-start}.pt-nav-bar-menu .navbar-middle.dt-pos-right .navbar-datetime,.pt-nav-bar-menu .navbar-middle.dt-pos-center .navbar-datetime{padding-left:0;border-left:none}.pt-nav-bar-menu .navbar-actions{width:100%;justify-content:flex-end}.pt-nav-bar-menu .navbar-user-identity,.pt-nav-bar-menu .navbar-user-fullname,.pt-nav-bar-menu .navbar-user-profile{max-width:220px}}@media (max-width: 640px){.pt-nav-bar-menu .navbar-user-identity{display:none}}@media (max-width: 520px){.pt-nav-bar-menu .navbar-datetime .dt-value{display:none}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: PTMenuFancyComponent, selector: "pt-menu-fancy", inputs: ["config"] }] }); }
4057
4057
  }
4058
4058
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PTNavbarMenuComponent, decorators: [{
4059
4059
  type: Component,
4060
- args: [{ selector: 'pt-nav-bar-menu', template: "<div class=\"pt-nav-bar-menu\" [ngStyle]=\"getNavbarStyles()\">\n <!-- LEFT -->\n <div class=\"navbar-left\">\n <a\n [routerLink]=\"\n isImageStyle(navBarMenuConfig.logo)\n ? navBarMenuConfig.logo.routerLink\n : '/'\n \"\n class=\"logo-link\"\n >\n <img\n [src]=\"getLogoUrl()\"\n [alt]=\"getLogoAltText()\"\n [ngStyle]=\"getLogoStyles()\"\n class=\"navbar-logo\"\n />\n <span class=\"navbar-title\" [ngStyle]=\"getAppNameStyles()\">\n {{ getAppName() }}\n </span>\n </a>\n\n <a (click)=\"toggleMenu()\" class=\"toggle-btn\">\n <i\n [class]=\"getToggleButtonIcon()\"\n [ngStyle]=\"getToggleButtonStyles()\"\n ></i>\n </a>\n </div>\n\n <!-- \u2705 MIDDLE (DateTime) -->\n <!-- Always visible when enabled, even if server value missing (will show placeholders). -->\n <div\n class=\"navbar-middle\"\n *ngIf=\"hasDateTime()\"\n [ngClass]=\"getDateTimePositionClass()\"\n >\n <div class=\"navbar-datetime\">\n <span class=\"dt-value\" [ngStyle]=\"getDateTimeTextStyles()\">\n {{ dateTimeText }}\n </span>\n\n <!-- Manual fixed datetime (only if config has dateValue => FIXED mode) -->\n <input\n *ngIf=\"isFixedMode()\"\n class=\"dt-input\"\n type=\"datetime-local\"\n step=\"1\"\n [value]=\"manualDateTimeLocal\"\n (input)=\"onManualDateTimeChange($any($event.target).value)\"\n />\n </div>\n </div>\n\n <!-- RIGHT -->\n <div class=\"navbar-actions\">\n <div class=\"navbar-right\">\n <pt-menu-fancy\n *ngFor=\"let menuConfig of navBarMenuConfig.menus\"\n [config]=\"menuConfig\"\n ></pt-menu-fancy>\n </div>\n </div>\n</div>\n", styles: [".pt-nav-bar-menu{display:flex;align-items:center;justify-content:space-between;padding:10px;border-bottom:1px solid #ddd;background-color:#fff;background-size:cover;background-position:center;gap:12px;min-width:0}.pt-nav-bar-menu .navbar-left{display:flex;align-items:center;gap:12px;min-width:0;flex:0 0 auto}.pt-nav-bar-menu .logo-link{display:flex;align-items:center;text-decoration:none;color:inherit;min-width:0}.pt-nav-bar-menu .navbar-logo{margin-left:10px;margin-right:20px}.pt-nav-bar-menu .navbar-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-middle{flex:1 1 auto;display:flex;align-items:center;min-width:0;padding:0 12px}.pt-nav-bar-menu .navbar-middle.dt-pos-left{justify-content:flex-start}.pt-nav-bar-menu .navbar-middle.dt-pos-center{justify-content:center}.pt-nav-bar-menu .navbar-middle.dt-pos-right{justify-content:flex-end}.pt-nav-bar-menu .navbar-datetime{display:inline-flex;align-items:center;gap:10px;flex:0 0 auto;white-space:nowrap;max-width:100%}.pt-nav-bar-menu .navbar-datetime .dt-value{white-space:nowrap}.pt-nav-bar-menu .navbar-datetime .dt-input{height:32px;padding:0 8px;border:1px solid rgba(0,0,0,.18);border-radius:6px;background:#fff;font-size:12px;color:#333;outline:none}.pt-nav-bar-menu .navbar-datetime .dt-input:focus{border-color:#034c83b3;box-shadow:0 0 0 3px #034c831f}.pt-nav-bar-menu .navbar-actions{display:flex;align-items:center;gap:12px;flex:0 0 auto;min-width:0}.pt-nav-bar-menu .navbar-right{display:flex;align-items:center;gap:10px;flex:0 0 auto}.pt-nav-bar-menu .navbar-right a{margin-left:20px;color:#333;text-decoration:none;font-size:20px;cursor:pointer}.pt-nav-bar-menu .navbar-right a:hover{color:#000}.pt-nav-bar-menu .toggle-btn{margin-left:2rem;cursor:pointer;padding:7px;border-radius:6px}.pt-nav-bar-menu .toggle-btn>.pi.pi-bars{font-size:1.5rem;color:#333}.pt-nav-bar-menu .toggle-btn:hover{background-color:#f1f1f1}@media (max-width: 900px){.pt-nav-bar-menu{flex-wrap:wrap;row-gap:8px}.pt-nav-bar-menu .navbar-left{width:100%;justify-content:space-between}.pt-nav-bar-menu .navbar-middle{width:100%;padding:0;justify-content:flex-start}.pt-nav-bar-menu .navbar-middle.dt-pos-right .navbar-datetime,.pt-nav-bar-menu .navbar-middle.dt-pos-center .navbar-datetime{padding-left:0;border-left:none}.pt-nav-bar-menu .navbar-actions{width:100%;justify-content:flex-end}}@media (max-width: 520px){.pt-nav-bar-menu .navbar-datetime .dt-value{display:none}}\n"] }]
4060
+ args: [{ selector: 'pt-nav-bar-menu', template: "<div class=\"pt-nav-bar-menu\" [ngStyle]=\"getNavbarStyles()\">\n <!-- LEFT -->\n <div class=\"navbar-left\">\n <a\n [routerLink]=\"\n isImageStyle(navBarMenuConfig.logo)\n ? navBarMenuConfig.logo.routerLink\n : '/'\n \"\n class=\"logo-link\"\n >\n <img\n [src]=\"getLogoUrl()\"\n [alt]=\"getLogoAltText()\"\n [ngStyle]=\"getLogoStyles()\"\n class=\"navbar-logo\"\n />\n\n <span class=\"navbar-title\" [ngStyle]=\"getAppNameStyles()\">\n {{ getAppName() }}\n </span>\n </a>\n\n <a (click)=\"toggleMenu()\" class=\"toggle-btn\">\n <i\n [class]=\"getToggleButtonIcon()\"\n [ngStyle]=\"getToggleButtonStyles()\"\n ></i>\n </a>\n </div>\n\n <!-- MIDDLE DateTime -->\n <div\n class=\"navbar-middle\"\n *ngIf=\"hasDateTime()\"\n [ngClass]=\"getDateTimePositionClass()\"\n >\n <div class=\"navbar-datetime\">\n <span class=\"dt-value\" [ngStyle]=\"getDateTimeTextStyles()\">\n {{ dateTimeText }}\n </span>\n\n <input\n *ngIf=\"isFixedMode()\"\n class=\"dt-input\"\n type=\"datetime-local\"\n step=\"1\"\n [value]=\"manualDateTimeLocal\"\n (input)=\"onManualDateTimeChange($any($event.target).value)\"\n />\n </div>\n </div>\n\n <!-- RIGHT -->\n <div class=\"navbar-actions\">\n <div class=\"navbar-right\">\n <div\n class=\"navbar-menu-item-wrapper\"\n *ngFor=\"let menuConfig of navBarMenuConfig.menus\"\n >\n <div class=\"navbar-user-identity\" *ngIf=\"$any(menuConfig).userIdentity\">\n <div\n class=\"navbar-user-fullname\"\n [title]=\"$any(menuConfig).userIdentity.fullName\"\n >\n {{ $any(menuConfig).userIdentity.fullName }}\n </div>\n\n <div\n class=\"navbar-user-profile\"\n *ngIf=\"$any(menuConfig).userIdentity.profile\"\n [title]=\"$any(menuConfig).userIdentity.profile\"\n >\n {{ $any(menuConfig).userIdentity.profile }}\n </div>\n </div>\n\n <pt-menu-fancy [config]=\"menuConfig\"></pt-menu-fancy>\n </div>\n </div>\n </div>\n</div>\n", styles: [".pt-nav-bar-menu{display:flex;align-items:center;justify-content:space-between;padding:10px;border-bottom:1px solid #ddd;background-color:#fff;background-size:cover;background-position:center;gap:12px;min-width:0}.pt-nav-bar-menu .navbar-left{display:flex;align-items:center;gap:12px;min-width:0;flex:0 0 auto}.pt-nav-bar-menu .logo-link{display:flex;align-items:center;text-decoration:none;color:inherit;min-width:0}.pt-nav-bar-menu .navbar-logo{margin-left:10px;margin-right:20px}.pt-nav-bar-menu .navbar-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pt-nav-bar-menu .navbar-middle{flex:1 1 auto;display:flex;align-items:center;min-width:0;padding:0 12px}.pt-nav-bar-menu .navbar-middle.dt-pos-left{justify-content:flex-start}.pt-nav-bar-menu .navbar-middle.dt-pos-center{justify-content:center}.pt-nav-bar-menu .navbar-middle.dt-pos-right{justify-content:flex-end}.pt-nav-bar-menu .navbar-datetime{display:inline-flex;align-items:center;gap:10px;flex:0 0 auto;white-space:nowrap;max-width:100%}.pt-nav-bar-menu .navbar-datetime .dt-value{white-space:nowrap}.pt-nav-bar-menu .navbar-datetime .dt-input{height:32px;padding:0 8px;border:1px solid rgba(0,0,0,.18);border-radius:6px;background:#fff;font-size:12px;color:#333;outline:none}.pt-nav-bar-menu .navbar-datetime .dt-input:focus{border-color:#034c83b3;box-shadow:0 0 0 3px #034c831f}.pt-nav-bar-menu .navbar-actions{display:flex;align-items:center;gap:12px;flex:0 0 auto;min-width:0}.pt-nav-bar-menu .navbar-right{display:flex;align-items:center;gap:10px;flex:0 0 auto}.pt-nav-bar-menu .navbar-menu-item-wrapper{display:inline-flex;align-items:center;gap:.65rem;min-width:0;padding:.25rem .4rem;border-radius:10px;transition:background-color .15s ease}.pt-nav-bar-menu .navbar-menu-item-wrapper:hover{background-color:#5b21b60f}.pt-nav-bar-menu .navbar-user-identity{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;max-width:260px;min-width:0;line-height:1.15}.pt-nav-bar-menu .navbar-user-fullname{max-width:260px;color:#1f2937;font-size:13px;font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pt-nav-bar-menu .navbar-user-profile{max-width:260px;margin-top:2px;color:#667085;font-size:11px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pt-nav-bar-menu .navbar-right a{margin-left:20px;color:#333;text-decoration:none;font-size:20px;cursor:pointer}.pt-nav-bar-menu .navbar-right a:hover{color:#000}.pt-nav-bar-menu .toggle-btn{margin-left:2rem;cursor:pointer;padding:7px;border-radius:6px}.pt-nav-bar-menu .toggle-btn>.pi.pi-bars{font-size:1.5rem;color:#333}.pt-nav-bar-menu .toggle-btn:hover{background-color:#f1f1f1}@media (max-width: 900px){.pt-nav-bar-menu{flex-wrap:wrap;row-gap:8px}.pt-nav-bar-menu .navbar-left{width:100%;justify-content:space-between}.pt-nav-bar-menu .navbar-middle{width:100%;padding:0;justify-content:flex-start}.pt-nav-bar-menu .navbar-middle.dt-pos-right .navbar-datetime,.pt-nav-bar-menu .navbar-middle.dt-pos-center .navbar-datetime{padding-left:0;border-left:none}.pt-nav-bar-menu .navbar-actions{width:100%;justify-content:flex-end}.pt-nav-bar-menu .navbar-user-identity,.pt-nav-bar-menu .navbar-user-fullname,.pt-nav-bar-menu .navbar-user-profile{max-width:220px}}@media (max-width: 640px){.pt-nav-bar-menu .navbar-user-identity{display:none}}@media (max-width: 520px){.pt-nav-bar-menu .navbar-datetime .dt-value{display:none}}\n"] }]
4061
4061
  }], propDecorators: { navBarMenuConfig: [{
4062
4062
  type: Input
4063
4063
  }], toggleSidebar: [{