@trudb/tru-common-lib 0.1.202 → 0.1.205

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.
@@ -2,6 +2,7 @@ import { Component, Input } from '@angular/core';
2
2
  import { TruDataContext } from '../../../services/tru-data-context';
3
3
  import { TruEntityAccessor } from '../../../services/tru-entity-accessor';
4
4
  import { TruWindowEventHandler } from '../services/tru-window-event-handler';
5
+ import { TruActionInvoke } from '../../../services/tru-action-invoke';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "../../../services/tru-data-context";
7
8
  import * as i2 from "../../../services/tru-ui-notification";
@@ -448,11 +449,11 @@ export class TruDesktopWindow {
448
449
  this.subs.forEach(s => s.unsubscribe());
449
450
  }
450
451
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDesktopWindow, deps: [{ token: i1.TruDataContext }, { token: i2.TruUiNotification }, { token: i3.TruTextManager }, { token: i4.TruWindowEventHandler }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
451
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruDesktopWindow, selector: "tru-desktop-window", inputs: { window: "window", viewportCtrl: "viewportCtrl", desktopCtrl: "desktopCtrl" }, providers: [TruDataContext, TruEntityAccessor, TruWindowEventHandler], ngImport: i0, template: "<div class=\"desktop-window-container\"\r\n [ngClass]=\"{'desktop-window-active': window.active, 'desktop-window-maximized': window.maximized}\"\r\n [ngStyle]=\"{'z-index': window.zIndex, 'top': window.top, 'left': window.left, 'right': window.right, 'bottom': window.bottom, 'height': window.height, 'width': window.width, 'min-height': window.minHeight, 'minWidth': window.minWidth}\"\r\n [style.offsetLeft.px]=\"x\"\r\n [style.offsetTop.px]=\"y\"\r\n (mousedown)=\"activate()\"\r\n [hidden]=\"window.minimized\">\r\n <div class=\"desktop-window-header\" [ngClass]=\"{'desktop-window-maximized': window.maximized, 'desktop-window-opacity': !window.active}\">\r\n <div class=\"toolbar-window-navigation\">\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-previous-icon'\" [tooltip]=\"'Go Back One View - [Alt + Left]'\" (click)=\"previousView()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-next-icon'\" [tooltip]=\"'Go Forward One View - [Alt + Right]'\" (click)=\"nextView()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-save-icon'\" class=\"desktop-window-save-icon\" [ngClass]=\"{'desktop-window-save-icon-has-changes': hasChanges()}\" [tooltip]=\"'Save - [Ctrl + S]'\" (click)=\"save()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-revert-icon'\" class=\"desktop-window-revert-icon\" [ngClass]=\"{'desktop-window-revert-icon-has-changes': hasChanges()}\" [tooltip]=\"'Revert - [Ctrl + Shift + R]'\" (click)=\"revert()\"></tru-toolbar-button>\r\n <tru-toolbar-separator></tru-toolbar-separator>\r\n </tru-toolbar>\r\n </div>\r\n <div class=\"desktop-window-title\" (dblclick)=\"maximize()\" (mousedown)=\"windowTitleMouseDown($event)\">\r\n <div class=\"desktop-click-through\">\r\n <div class=\"desktop-text\">{{window.title}}</div>\r\n </div>\r\n </div>\r\n <div class=\"desktop-window-action\">\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-minimize-icon'\" [tooltip]=\"'Minimize - [Alt + N]'\" (click)=\"minimize()\"></tru-toolbar-button>\r\n <tru-toolbar-button *ngIf=\"!window.maximized\" [icon]=\"'tru-toolbar-maximize-icon'\" [tooltip]=\"'Maximize Window - [Alt + M]'\" (click)=\"maximize()\" class=\"maximize\"></tru-toolbar-button>\r\n <tru-toolbar-button *ngIf=\"window.maximized\" [icon]=\"'tru-toolbar-restore-icon'\" [tooltip]=\"'Restore Window - [Alt + M]'\" (click)=\"maximize()\" class=\"maximize\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-close-icon'\" [tooltip]=\"'Close Window - [Alt + SHIFT + X]'\" (click)=\"close()\"></tru-toolbar-button>\r\n </tru-toolbar>\r\n </div>\r\n </div>\r\n <fieldset ng-disabled=\"!window.active\" class=\"desktop-window-fieldset\" [ngClass]=\"{'desktop-window-opacity': !window.active}\">\r\n <div class=\"desktop-window-content\">\r\n <div *ngFor=\"let view of window.views\">\r\n <tru-desktop-view [view]=\"view\" [active]=\"view.active\" [hidden]=\"!view.active\"><ng-template></ng-template></tru-desktop-view>\r\n </div>\r\n </div>\r\n </fieldset>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-nw\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'nw'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-ne\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'ne'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-sw\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'sw'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-se\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'se'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-n\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'n'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-s\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'s'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-w\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'w'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-e\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'e'\"></span>\r\n</div>\r\n", styles: ["body{-webkit-user-select:none;-moz-user-select:-moz-none;-ms-user-select:none;user-select:none}input,textarea{-moz-user-select:text}.desktop-text{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);font-size:14px;line-height:1;color:#333}.desktop-wrapper{position:absolute!important;inset:0;background:#fff;overflow:hidden}.desktop-relative{position:relative}.desktop-display-none{display:none}.desktop-click-through{pointer-events:none}.desktop-menubar-container{position:absolute!important;top:0;left:0;right:0;height:26px;background:#f8f8f8;border-bottom:1px solid #e7e7e7;padding-left:5px}\n", ".desktop-window-container{position:absolute!important;background-color:#fff;background-clip:padding-box;border-radius:0;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px #0003;border:1px solid #e7e7e7}.desktop-window-header{position:absolute!important;top:0;left:0;right:0;height:27px;background:#fff;border-top-left-radius:0;border-top-right-radius:0;border-bottom:1px solid #e7e7e7}.desktop-window-content{position:absolute!important;inset:27px 0 0;background:#fff;overflow:hidden}.desktop-window-busy-overlay{position:absolute!important;inset:27px 0 0;background:#fff;overflow:hidden;z-index:1000;background-repeat:no-repeat;background-position:center center}.desktop-window-fieldset{padding:0;margin:0;border:0}.desktop-window-statusbar{position:absolute!important;left:0;right:0;bottom:0;height:23px;background:#fff;border-bottom-left-radius:0;border-bottom-right-radius:0;border-top:1px solid #e7e7e7}.desktop-window-statusbar-container{position:absolute;top:1px;left:2px;right:0}.desktop-window-navigation{position:absolute!important;top:0;left:0;bottom:0;width:105px;background:transparent}.desktop-window-navigation-button-group{position:absolute!important;left:0;padding:0;margin:0}.desktop-window-navigation-button-group button{margin-left:0!important}.desktop-window-navigation-button-group-split{position:absolute!important;top:2px;right:6px}.desktop-window-title{position:absolute!important;inset:0 80px 0 110px;height:27px;background:transparent;cursor:inherit;outline:0;margin-top:2px}.desktop-window-title-hidden-nav{left:5px!important}.desktop-window-title-hidden-nav-with-buttons{left:55px!important}.desktop-window-title>div{position:absolute!important;top:5px;left:3px;cursor:default}.desktop-window-title>div>div{font-size:14px;font-weight:700}.desktop-window-action{position:absolute!important;top:0;right:0;bottom:0;width:80px;background:transparent}.desktop-window-action-button-group{position:absolute!important;top:2px;right:6px}.desktop-window-action .desktop-window-navigation-button-group{left:unset!important;right:0!important}.desktop-window-opacity{opacity:.5}.desktop-window-close-button:hover{background-color:maroon;color:#fff}.desktop-window-active{border:1px solid #6b6b6b!important;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.4);box-shadow:0 5px 10px #0006}.desktop-window-maximized{border-radius:0;-webkit-box-shadow:0 0 0 rgba(0,0,0,0);box-shadow:0 0 #0000;border-top-color:#f8f8f8!important;border-bottom-color:#f8f8f8!important}.desktop-window-is-dirty{display:block;float:left;height:15px;width:15px;font-size:15px;color:orange;margin-left:3px}.desktop-window-is-invalid{display:block;float:left;height:15px;width:15px;font-size:15px;color:red;margin-left:3px}.desktop-window-resizable-nw{position:absolute!important;overflow:hidden;width:10px;height:10px;left:-5px;top:-5px;z-index:103;cursor:nw-resize;opacity:0}.desktop-window-resizable-ne{position:absolute!important;overflow:hidden;width:10px;height:10px;right:-5px;top:-5px;z-index:103;cursor:ne-resize;opacity:0}.desktop-window-resizable-sw{position:absolute!important;overflow:hidden;width:10px;height:10px;left:-5px;bottom:-5px;z-index:103;cursor:sw-resize;opacity:0}.desktop-window-resizable-se{position:absolute!important;overflow:hidden;width:10px;height:10px;right:-5px;bottom:-5px;z-index:103;cursor:se-resize;opacity:0}.desktop-window-resizable-n{position:absolute!important;top:0;left:10px;right:10px;overflow:hidden;height:5px;z-index:102;cursor:s-resize;opacity:0;margin-top:-5px}.desktop-window-resizable-s{position:absolute!important;left:10px;right:10px;bottom:0;overflow:hidden;height:5px;z-index:102;cursor:s-resize;opacity:0;margin-bottom:-5px}.desktop-window-resizable-w{position:absolute!important;top:10px;left:0;bottom:10px;overflow:hidden;width:5px;z-index:102;cursor:w-resize;opacity:0;margin-left:-5px}.desktop-window-resizable-e{position:absolute!important;top:10px;right:0;bottom:10px;overflow:hidden;width:5px;z-index:102;cursor:e-resize;opacity:0;margin-right:-5px}div.desktop-window-resizable-handle{display:none!important;visibility:hidden!important}.desktop-window-save-icon,.desktop-window-revert-icon{opacity:.5}.desktop-window-save-icon-has-changes,.desktop-window-revert-icon-has-changes{opacity:1}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i6.TruDesktopResizable, selector: "[tru-desktop-resizable]", inputs: ["window", "maximized", "direction"] }, { kind: "component", type: i7.TruDesktopView, selector: "tru-desktop-view", inputs: ["view", "active"] }, { kind: "component", type: i8.TruToolbar, selector: "tru-toolbar", inputs: ["config"] }, { kind: "component", type: i9.TruToolbarButton, selector: "tru-toolbar-button", inputs: ["config", "icon", "text", "disabled", "tooltip", "type"], outputs: ["onClick", "onKeydown"] }, { kind: "component", type: i10.TruToolbarSeparator, selector: "tru-toolbar-separator" }] });
452
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruDesktopWindow, selector: "tru-desktop-window", inputs: { window: "window", viewportCtrl: "viewportCtrl", desktopCtrl: "desktopCtrl" }, providers: [TruDataContext, TruEntityAccessor, TruWindowEventHandler, TruActionInvoke], ngImport: i0, template: "<div class=\"desktop-window-container\"\r\n [ngClass]=\"{'desktop-window-active': window.active, 'desktop-window-maximized': window.maximized}\"\r\n [ngStyle]=\"{'z-index': window.zIndex, 'top': window.top, 'left': window.left, 'right': window.right, 'bottom': window.bottom, 'height': window.height, 'width': window.width, 'min-height': window.minHeight, 'minWidth': window.minWidth}\"\r\n [style.offsetLeft.px]=\"x\"\r\n [style.offsetTop.px]=\"y\"\r\n (mousedown)=\"activate()\"\r\n [hidden]=\"window.minimized\">\r\n <div class=\"desktop-window-header\" [ngClass]=\"{'desktop-window-maximized': window.maximized, 'desktop-window-opacity': !window.active}\">\r\n <div class=\"toolbar-window-navigation\">\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-previous-icon'\" [tooltip]=\"'Go Back One View - [Alt + Left]'\" (click)=\"previousView()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-next-icon'\" [tooltip]=\"'Go Forward One View - [Alt + Right]'\" (click)=\"nextView()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-save-icon'\" class=\"desktop-window-save-icon\" [ngClass]=\"{'desktop-window-save-icon-has-changes': hasChanges()}\" [tooltip]=\"'Save - [Ctrl + S]'\" (click)=\"save()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-revert-icon'\" class=\"desktop-window-revert-icon\" [ngClass]=\"{'desktop-window-revert-icon-has-changes': hasChanges()}\" [tooltip]=\"'Revert - [Ctrl + Shift + R]'\" (click)=\"revert()\"></tru-toolbar-button>\r\n <tru-toolbar-separator></tru-toolbar-separator>\r\n </tru-toolbar>\r\n </div>\r\n <div class=\"desktop-window-title\" (dblclick)=\"maximize()\" (mousedown)=\"windowTitleMouseDown($event)\">\r\n <div class=\"desktop-click-through\">\r\n <div class=\"desktop-text\">{{window.title}}</div>\r\n </div>\r\n </div>\r\n <div class=\"desktop-window-action\">\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-minimize-icon'\" [tooltip]=\"'Minimize - [Alt + N]'\" (click)=\"minimize()\"></tru-toolbar-button>\r\n <tru-toolbar-button *ngIf=\"!window.maximized\" [icon]=\"'tru-toolbar-maximize-icon'\" [tooltip]=\"'Maximize Window - [Alt + M]'\" (click)=\"maximize()\" class=\"maximize\"></tru-toolbar-button>\r\n <tru-toolbar-button *ngIf=\"window.maximized\" [icon]=\"'tru-toolbar-restore-icon'\" [tooltip]=\"'Restore Window - [Alt + M]'\" (click)=\"maximize()\" class=\"maximize\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-close-icon'\" [tooltip]=\"'Close Window - [Alt + SHIFT + X]'\" (click)=\"close()\"></tru-toolbar-button>\r\n </tru-toolbar>\r\n </div>\r\n </div>\r\n <fieldset ng-disabled=\"!window.active\" class=\"desktop-window-fieldset\" [ngClass]=\"{'desktop-window-opacity': !window.active}\">\r\n <div class=\"desktop-window-content\">\r\n <div *ngFor=\"let view of window.views\">\r\n <tru-desktop-view [view]=\"view\" [active]=\"view.active\" [hidden]=\"!view.active\"><ng-template></ng-template></tru-desktop-view>\r\n </div>\r\n </div>\r\n </fieldset>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-nw\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'nw'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-ne\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'ne'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-sw\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'sw'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-se\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'se'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-n\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'n'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-s\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'s'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-w\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'w'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-e\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'e'\"></span>\r\n</div>\r\n", styles: ["body{-webkit-user-select:none;-moz-user-select:-moz-none;-ms-user-select:none;user-select:none}input,textarea{-moz-user-select:text}.desktop-text{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);font-size:14px;line-height:1;color:#333}.desktop-wrapper{position:absolute!important;inset:0;background:#fff;overflow:hidden}.desktop-relative{position:relative}.desktop-display-none{display:none}.desktop-click-through{pointer-events:none}.desktop-menubar-container{position:absolute!important;top:0;left:0;right:0;height:26px;background:#f8f8f8;border-bottom:1px solid #e7e7e7;padding-left:5px}\n", ".desktop-window-container{position:absolute!important;background-color:#fff;background-clip:padding-box;border-radius:0;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px #0003;border:1px solid #e7e7e7}.desktop-window-header{position:absolute!important;top:0;left:0;right:0;height:27px;background:#fff;border-top-left-radius:0;border-top-right-radius:0;border-bottom:1px solid #e7e7e7}.desktop-window-content{position:absolute!important;inset:27px 0 0;background:#fff;overflow:hidden}.desktop-window-busy-overlay{position:absolute!important;inset:27px 0 0;background:#fff;overflow:hidden;z-index:1000;background-repeat:no-repeat;background-position:center center}.desktop-window-fieldset{padding:0;margin:0;border:0}.desktop-window-statusbar{position:absolute!important;left:0;right:0;bottom:0;height:23px;background:#fff;border-bottom-left-radius:0;border-bottom-right-radius:0;border-top:1px solid #e7e7e7}.desktop-window-statusbar-container{position:absolute;top:1px;left:2px;right:0}.desktop-window-navigation{position:absolute!important;top:0;left:0;bottom:0;width:105px;background:transparent}.desktop-window-navigation-button-group{position:absolute!important;left:0;padding:0;margin:0}.desktop-window-navigation-button-group button{margin-left:0!important}.desktop-window-navigation-button-group-split{position:absolute!important;top:2px;right:6px}.desktop-window-title{position:absolute!important;inset:0 80px 0 110px;height:27px;background:transparent;cursor:inherit;outline:0;margin-top:2px}.desktop-window-title-hidden-nav{left:5px!important}.desktop-window-title-hidden-nav-with-buttons{left:55px!important}.desktop-window-title>div{position:absolute!important;top:5px;left:3px;cursor:default}.desktop-window-title>div>div{font-size:14px;font-weight:700}.desktop-window-action{position:absolute!important;top:0;right:0;bottom:0;width:80px;background:transparent}.desktop-window-action-button-group{position:absolute!important;top:2px;right:6px}.desktop-window-action .desktop-window-navigation-button-group{left:unset!important;right:0!important}.desktop-window-opacity{opacity:.5}.desktop-window-close-button:hover{background-color:maroon;color:#fff}.desktop-window-active{border:1px solid #6b6b6b!important;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.4);box-shadow:0 5px 10px #0006}.desktop-window-maximized{border-radius:0;-webkit-box-shadow:0 0 0 rgba(0,0,0,0);box-shadow:0 0 #0000;border-top-color:#f8f8f8!important;border-bottom-color:#f8f8f8!important}.desktop-window-is-dirty{display:block;float:left;height:15px;width:15px;font-size:15px;color:orange;margin-left:3px}.desktop-window-is-invalid{display:block;float:left;height:15px;width:15px;font-size:15px;color:red;margin-left:3px}.desktop-window-resizable-nw{position:absolute!important;overflow:hidden;width:10px;height:10px;left:-5px;top:-5px;z-index:103;cursor:nw-resize;opacity:0}.desktop-window-resizable-ne{position:absolute!important;overflow:hidden;width:10px;height:10px;right:-5px;top:-5px;z-index:103;cursor:ne-resize;opacity:0}.desktop-window-resizable-sw{position:absolute!important;overflow:hidden;width:10px;height:10px;left:-5px;bottom:-5px;z-index:103;cursor:sw-resize;opacity:0}.desktop-window-resizable-se{position:absolute!important;overflow:hidden;width:10px;height:10px;right:-5px;bottom:-5px;z-index:103;cursor:se-resize;opacity:0}.desktop-window-resizable-n{position:absolute!important;top:0;left:10px;right:10px;overflow:hidden;height:5px;z-index:102;cursor:s-resize;opacity:0;margin-top:-5px}.desktop-window-resizable-s{position:absolute!important;left:10px;right:10px;bottom:0;overflow:hidden;height:5px;z-index:102;cursor:s-resize;opacity:0;margin-bottom:-5px}.desktop-window-resizable-w{position:absolute!important;top:10px;left:0;bottom:10px;overflow:hidden;width:5px;z-index:102;cursor:w-resize;opacity:0;margin-left:-5px}.desktop-window-resizable-e{position:absolute!important;top:10px;right:0;bottom:10px;overflow:hidden;width:5px;z-index:102;cursor:e-resize;opacity:0;margin-right:-5px}div.desktop-window-resizable-handle{display:none!important;visibility:hidden!important}.desktop-window-save-icon,.desktop-window-revert-icon{opacity:.5}.desktop-window-save-icon-has-changes,.desktop-window-revert-icon-has-changes{opacity:1}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i6.TruDesktopResizable, selector: "[tru-desktop-resizable]", inputs: ["window", "maximized", "direction"] }, { kind: "component", type: i7.TruDesktopView, selector: "tru-desktop-view", inputs: ["view", "active"] }, { kind: "component", type: i8.TruToolbar, selector: "tru-toolbar", inputs: ["config"] }, { kind: "component", type: i9.TruToolbarButton, selector: "tru-toolbar-button", inputs: ["config", "icon", "text", "disabled", "tooltip", "type"], outputs: ["onClick", "onKeydown"] }, { kind: "component", type: i10.TruToolbarSeparator, selector: "tru-toolbar-separator" }] });
452
453
  }
453
454
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDesktopWindow, decorators: [{
454
455
  type: Component,
455
- args: [{ selector: 'tru-desktop-window', providers: [TruDataContext, TruEntityAccessor, TruWindowEventHandler], template: "<div class=\"desktop-window-container\"\r\n [ngClass]=\"{'desktop-window-active': window.active, 'desktop-window-maximized': window.maximized}\"\r\n [ngStyle]=\"{'z-index': window.zIndex, 'top': window.top, 'left': window.left, 'right': window.right, 'bottom': window.bottom, 'height': window.height, 'width': window.width, 'min-height': window.minHeight, 'minWidth': window.minWidth}\"\r\n [style.offsetLeft.px]=\"x\"\r\n [style.offsetTop.px]=\"y\"\r\n (mousedown)=\"activate()\"\r\n [hidden]=\"window.minimized\">\r\n <div class=\"desktop-window-header\" [ngClass]=\"{'desktop-window-maximized': window.maximized, 'desktop-window-opacity': !window.active}\">\r\n <div class=\"toolbar-window-navigation\">\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-previous-icon'\" [tooltip]=\"'Go Back One View - [Alt + Left]'\" (click)=\"previousView()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-next-icon'\" [tooltip]=\"'Go Forward One View - [Alt + Right]'\" (click)=\"nextView()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-save-icon'\" class=\"desktop-window-save-icon\" [ngClass]=\"{'desktop-window-save-icon-has-changes': hasChanges()}\" [tooltip]=\"'Save - [Ctrl + S]'\" (click)=\"save()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-revert-icon'\" class=\"desktop-window-revert-icon\" [ngClass]=\"{'desktop-window-revert-icon-has-changes': hasChanges()}\" [tooltip]=\"'Revert - [Ctrl + Shift + R]'\" (click)=\"revert()\"></tru-toolbar-button>\r\n <tru-toolbar-separator></tru-toolbar-separator>\r\n </tru-toolbar>\r\n </div>\r\n <div class=\"desktop-window-title\" (dblclick)=\"maximize()\" (mousedown)=\"windowTitleMouseDown($event)\">\r\n <div class=\"desktop-click-through\">\r\n <div class=\"desktop-text\">{{window.title}}</div>\r\n </div>\r\n </div>\r\n <div class=\"desktop-window-action\">\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-minimize-icon'\" [tooltip]=\"'Minimize - [Alt + N]'\" (click)=\"minimize()\"></tru-toolbar-button>\r\n <tru-toolbar-button *ngIf=\"!window.maximized\" [icon]=\"'tru-toolbar-maximize-icon'\" [tooltip]=\"'Maximize Window - [Alt + M]'\" (click)=\"maximize()\" class=\"maximize\"></tru-toolbar-button>\r\n <tru-toolbar-button *ngIf=\"window.maximized\" [icon]=\"'tru-toolbar-restore-icon'\" [tooltip]=\"'Restore Window - [Alt + M]'\" (click)=\"maximize()\" class=\"maximize\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-close-icon'\" [tooltip]=\"'Close Window - [Alt + SHIFT + X]'\" (click)=\"close()\"></tru-toolbar-button>\r\n </tru-toolbar>\r\n </div>\r\n </div>\r\n <fieldset ng-disabled=\"!window.active\" class=\"desktop-window-fieldset\" [ngClass]=\"{'desktop-window-opacity': !window.active}\">\r\n <div class=\"desktop-window-content\">\r\n <div *ngFor=\"let view of window.views\">\r\n <tru-desktop-view [view]=\"view\" [active]=\"view.active\" [hidden]=\"!view.active\"><ng-template></ng-template></tru-desktop-view>\r\n </div>\r\n </div>\r\n </fieldset>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-nw\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'nw'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-ne\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'ne'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-sw\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'sw'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-se\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'se'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-n\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'n'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-s\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'s'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-w\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'w'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-e\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'e'\"></span>\r\n</div>\r\n", styles: ["body{-webkit-user-select:none;-moz-user-select:-moz-none;-ms-user-select:none;user-select:none}input,textarea{-moz-user-select:text}.desktop-text{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);font-size:14px;line-height:1;color:#333}.desktop-wrapper{position:absolute!important;inset:0;background:#fff;overflow:hidden}.desktop-relative{position:relative}.desktop-display-none{display:none}.desktop-click-through{pointer-events:none}.desktop-menubar-container{position:absolute!important;top:0;left:0;right:0;height:26px;background:#f8f8f8;border-bottom:1px solid #e7e7e7;padding-left:5px}\n", ".desktop-window-container{position:absolute!important;background-color:#fff;background-clip:padding-box;border-radius:0;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px #0003;border:1px solid #e7e7e7}.desktop-window-header{position:absolute!important;top:0;left:0;right:0;height:27px;background:#fff;border-top-left-radius:0;border-top-right-radius:0;border-bottom:1px solid #e7e7e7}.desktop-window-content{position:absolute!important;inset:27px 0 0;background:#fff;overflow:hidden}.desktop-window-busy-overlay{position:absolute!important;inset:27px 0 0;background:#fff;overflow:hidden;z-index:1000;background-repeat:no-repeat;background-position:center center}.desktop-window-fieldset{padding:0;margin:0;border:0}.desktop-window-statusbar{position:absolute!important;left:0;right:0;bottom:0;height:23px;background:#fff;border-bottom-left-radius:0;border-bottom-right-radius:0;border-top:1px solid #e7e7e7}.desktop-window-statusbar-container{position:absolute;top:1px;left:2px;right:0}.desktop-window-navigation{position:absolute!important;top:0;left:0;bottom:0;width:105px;background:transparent}.desktop-window-navigation-button-group{position:absolute!important;left:0;padding:0;margin:0}.desktop-window-navigation-button-group button{margin-left:0!important}.desktop-window-navigation-button-group-split{position:absolute!important;top:2px;right:6px}.desktop-window-title{position:absolute!important;inset:0 80px 0 110px;height:27px;background:transparent;cursor:inherit;outline:0;margin-top:2px}.desktop-window-title-hidden-nav{left:5px!important}.desktop-window-title-hidden-nav-with-buttons{left:55px!important}.desktop-window-title>div{position:absolute!important;top:5px;left:3px;cursor:default}.desktop-window-title>div>div{font-size:14px;font-weight:700}.desktop-window-action{position:absolute!important;top:0;right:0;bottom:0;width:80px;background:transparent}.desktop-window-action-button-group{position:absolute!important;top:2px;right:6px}.desktop-window-action .desktop-window-navigation-button-group{left:unset!important;right:0!important}.desktop-window-opacity{opacity:.5}.desktop-window-close-button:hover{background-color:maroon;color:#fff}.desktop-window-active{border:1px solid #6b6b6b!important;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.4);box-shadow:0 5px 10px #0006}.desktop-window-maximized{border-radius:0;-webkit-box-shadow:0 0 0 rgba(0,0,0,0);box-shadow:0 0 #0000;border-top-color:#f8f8f8!important;border-bottom-color:#f8f8f8!important}.desktop-window-is-dirty{display:block;float:left;height:15px;width:15px;font-size:15px;color:orange;margin-left:3px}.desktop-window-is-invalid{display:block;float:left;height:15px;width:15px;font-size:15px;color:red;margin-left:3px}.desktop-window-resizable-nw{position:absolute!important;overflow:hidden;width:10px;height:10px;left:-5px;top:-5px;z-index:103;cursor:nw-resize;opacity:0}.desktop-window-resizable-ne{position:absolute!important;overflow:hidden;width:10px;height:10px;right:-5px;top:-5px;z-index:103;cursor:ne-resize;opacity:0}.desktop-window-resizable-sw{position:absolute!important;overflow:hidden;width:10px;height:10px;left:-5px;bottom:-5px;z-index:103;cursor:sw-resize;opacity:0}.desktop-window-resizable-se{position:absolute!important;overflow:hidden;width:10px;height:10px;right:-5px;bottom:-5px;z-index:103;cursor:se-resize;opacity:0}.desktop-window-resizable-n{position:absolute!important;top:0;left:10px;right:10px;overflow:hidden;height:5px;z-index:102;cursor:s-resize;opacity:0;margin-top:-5px}.desktop-window-resizable-s{position:absolute!important;left:10px;right:10px;bottom:0;overflow:hidden;height:5px;z-index:102;cursor:s-resize;opacity:0;margin-bottom:-5px}.desktop-window-resizable-w{position:absolute!important;top:10px;left:0;bottom:10px;overflow:hidden;width:5px;z-index:102;cursor:w-resize;opacity:0;margin-left:-5px}.desktop-window-resizable-e{position:absolute!important;top:10px;right:0;bottom:10px;overflow:hidden;width:5px;z-index:102;cursor:e-resize;opacity:0;margin-right:-5px}div.desktop-window-resizable-handle{display:none!important;visibility:hidden!important}.desktop-window-save-icon,.desktop-window-revert-icon{opacity:.5}.desktop-window-save-icon-has-changes,.desktop-window-revert-icon-has-changes{opacity:1}\n"] }]
456
+ args: [{ selector: 'tru-desktop-window', providers: [TruDataContext, TruEntityAccessor, TruWindowEventHandler, TruActionInvoke], template: "<div class=\"desktop-window-container\"\r\n [ngClass]=\"{'desktop-window-active': window.active, 'desktop-window-maximized': window.maximized}\"\r\n [ngStyle]=\"{'z-index': window.zIndex, 'top': window.top, 'left': window.left, 'right': window.right, 'bottom': window.bottom, 'height': window.height, 'width': window.width, 'min-height': window.minHeight, 'minWidth': window.minWidth}\"\r\n [style.offsetLeft.px]=\"x\"\r\n [style.offsetTop.px]=\"y\"\r\n (mousedown)=\"activate()\"\r\n [hidden]=\"window.minimized\">\r\n <div class=\"desktop-window-header\" [ngClass]=\"{'desktop-window-maximized': window.maximized, 'desktop-window-opacity': !window.active}\">\r\n <div class=\"toolbar-window-navigation\">\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-previous-icon'\" [tooltip]=\"'Go Back One View - [Alt + Left]'\" (click)=\"previousView()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-next-icon'\" [tooltip]=\"'Go Forward One View - [Alt + Right]'\" (click)=\"nextView()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-save-icon'\" class=\"desktop-window-save-icon\" [ngClass]=\"{'desktop-window-save-icon-has-changes': hasChanges()}\" [tooltip]=\"'Save - [Ctrl + S]'\" (click)=\"save()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-revert-icon'\" class=\"desktop-window-revert-icon\" [ngClass]=\"{'desktop-window-revert-icon-has-changes': hasChanges()}\" [tooltip]=\"'Revert - [Ctrl + Shift + R]'\" (click)=\"revert()\"></tru-toolbar-button>\r\n <tru-toolbar-separator></tru-toolbar-separator>\r\n </tru-toolbar>\r\n </div>\r\n <div class=\"desktop-window-title\" (dblclick)=\"maximize()\" (mousedown)=\"windowTitleMouseDown($event)\">\r\n <div class=\"desktop-click-through\">\r\n <div class=\"desktop-text\">{{window.title}}</div>\r\n </div>\r\n </div>\r\n <div class=\"desktop-window-action\">\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-minimize-icon'\" [tooltip]=\"'Minimize - [Alt + N]'\" (click)=\"minimize()\"></tru-toolbar-button>\r\n <tru-toolbar-button *ngIf=\"!window.maximized\" [icon]=\"'tru-toolbar-maximize-icon'\" [tooltip]=\"'Maximize Window - [Alt + M]'\" (click)=\"maximize()\" class=\"maximize\"></tru-toolbar-button>\r\n <tru-toolbar-button *ngIf=\"window.maximized\" [icon]=\"'tru-toolbar-restore-icon'\" [tooltip]=\"'Restore Window - [Alt + M]'\" (click)=\"maximize()\" class=\"maximize\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-close-icon'\" [tooltip]=\"'Close Window - [Alt + SHIFT + X]'\" (click)=\"close()\"></tru-toolbar-button>\r\n </tru-toolbar>\r\n </div>\r\n </div>\r\n <fieldset ng-disabled=\"!window.active\" class=\"desktop-window-fieldset\" [ngClass]=\"{'desktop-window-opacity': !window.active}\">\r\n <div class=\"desktop-window-content\">\r\n <div *ngFor=\"let view of window.views\">\r\n <tru-desktop-view [view]=\"view\" [active]=\"view.active\" [hidden]=\"!view.active\"><ng-template></ng-template></tru-desktop-view>\r\n </div>\r\n </div>\r\n </fieldset>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-nw\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'nw'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-ne\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'ne'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-sw\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'sw'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-se\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'se'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-n\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'n'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-s\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'s'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-w\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'w'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-e\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'e'\"></span>\r\n</div>\r\n", styles: ["body{-webkit-user-select:none;-moz-user-select:-moz-none;-ms-user-select:none;user-select:none}input,textarea{-moz-user-select:text}.desktop-text{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);font-size:14px;line-height:1;color:#333}.desktop-wrapper{position:absolute!important;inset:0;background:#fff;overflow:hidden}.desktop-relative{position:relative}.desktop-display-none{display:none}.desktop-click-through{pointer-events:none}.desktop-menubar-container{position:absolute!important;top:0;left:0;right:0;height:26px;background:#f8f8f8;border-bottom:1px solid #e7e7e7;padding-left:5px}\n", ".desktop-window-container{position:absolute!important;background-color:#fff;background-clip:padding-box;border-radius:0;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px #0003;border:1px solid #e7e7e7}.desktop-window-header{position:absolute!important;top:0;left:0;right:0;height:27px;background:#fff;border-top-left-radius:0;border-top-right-radius:0;border-bottom:1px solid #e7e7e7}.desktop-window-content{position:absolute!important;inset:27px 0 0;background:#fff;overflow:hidden}.desktop-window-busy-overlay{position:absolute!important;inset:27px 0 0;background:#fff;overflow:hidden;z-index:1000;background-repeat:no-repeat;background-position:center center}.desktop-window-fieldset{padding:0;margin:0;border:0}.desktop-window-statusbar{position:absolute!important;left:0;right:0;bottom:0;height:23px;background:#fff;border-bottom-left-radius:0;border-bottom-right-radius:0;border-top:1px solid #e7e7e7}.desktop-window-statusbar-container{position:absolute;top:1px;left:2px;right:0}.desktop-window-navigation{position:absolute!important;top:0;left:0;bottom:0;width:105px;background:transparent}.desktop-window-navigation-button-group{position:absolute!important;left:0;padding:0;margin:0}.desktop-window-navigation-button-group button{margin-left:0!important}.desktop-window-navigation-button-group-split{position:absolute!important;top:2px;right:6px}.desktop-window-title{position:absolute!important;inset:0 80px 0 110px;height:27px;background:transparent;cursor:inherit;outline:0;margin-top:2px}.desktop-window-title-hidden-nav{left:5px!important}.desktop-window-title-hidden-nav-with-buttons{left:55px!important}.desktop-window-title>div{position:absolute!important;top:5px;left:3px;cursor:default}.desktop-window-title>div>div{font-size:14px;font-weight:700}.desktop-window-action{position:absolute!important;top:0;right:0;bottom:0;width:80px;background:transparent}.desktop-window-action-button-group{position:absolute!important;top:2px;right:6px}.desktop-window-action .desktop-window-navigation-button-group{left:unset!important;right:0!important}.desktop-window-opacity{opacity:.5}.desktop-window-close-button:hover{background-color:maroon;color:#fff}.desktop-window-active{border:1px solid #6b6b6b!important;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.4);box-shadow:0 5px 10px #0006}.desktop-window-maximized{border-radius:0;-webkit-box-shadow:0 0 0 rgba(0,0,0,0);box-shadow:0 0 #0000;border-top-color:#f8f8f8!important;border-bottom-color:#f8f8f8!important}.desktop-window-is-dirty{display:block;float:left;height:15px;width:15px;font-size:15px;color:orange;margin-left:3px}.desktop-window-is-invalid{display:block;float:left;height:15px;width:15px;font-size:15px;color:red;margin-left:3px}.desktop-window-resizable-nw{position:absolute!important;overflow:hidden;width:10px;height:10px;left:-5px;top:-5px;z-index:103;cursor:nw-resize;opacity:0}.desktop-window-resizable-ne{position:absolute!important;overflow:hidden;width:10px;height:10px;right:-5px;top:-5px;z-index:103;cursor:ne-resize;opacity:0}.desktop-window-resizable-sw{position:absolute!important;overflow:hidden;width:10px;height:10px;left:-5px;bottom:-5px;z-index:103;cursor:sw-resize;opacity:0}.desktop-window-resizable-se{position:absolute!important;overflow:hidden;width:10px;height:10px;right:-5px;bottom:-5px;z-index:103;cursor:se-resize;opacity:0}.desktop-window-resizable-n{position:absolute!important;top:0;left:10px;right:10px;overflow:hidden;height:5px;z-index:102;cursor:s-resize;opacity:0;margin-top:-5px}.desktop-window-resizable-s{position:absolute!important;left:10px;right:10px;bottom:0;overflow:hidden;height:5px;z-index:102;cursor:s-resize;opacity:0;margin-bottom:-5px}.desktop-window-resizable-w{position:absolute!important;top:10px;left:0;bottom:10px;overflow:hidden;width:5px;z-index:102;cursor:w-resize;opacity:0;margin-left:-5px}.desktop-window-resizable-e{position:absolute!important;top:10px;right:0;bottom:10px;overflow:hidden;width:5px;z-index:102;cursor:e-resize;opacity:0;margin-right:-5px}div.desktop-window-resizable-handle{display:none!important;visibility:hidden!important}.desktop-window-save-icon,.desktop-window-revert-icon{opacity:.5}.desktop-window-save-icon-has-changes,.desktop-window-revert-icon-has-changes{opacity:1}\n"] }]
456
457
  }], ctorParameters: () => [{ type: i1.TruDataContext }, { type: i2.TruUiNotification }, { type: i3.TruTextManager }, { type: i4.TruWindowEventHandler }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { window: [{
457
458
  type: Input
458
459
  }], viewportCtrl: [{
@@ -460,4 +461,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
460
461
  }], desktopCtrl: [{
461
462
  type: Input
462
463
  }] } });
463
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRlc2t0b3Atd2luZG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Rlc2t0b3Avd2luZG93L3RydS1kZXNrdG9wLXdpbmRvdy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kZXNrdG9wL3dpbmRvdy90cnUtZGVza3RvcC13aW5kb3cuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF5QixLQUFLLEVBQWlDLE1BQU0sZUFBZSxDQUFDO0FBRXZHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUkxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7Ozs7Ozs7O0FBUTdFLE1BQU0sT0FBTyxnQkFBZ0I7SUFNakI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBVkQsTUFBTSxDQUFNO0lBQ1osWUFBWSxDQUFNO0lBQ2xCLFdBQVcsQ0FBTTtJQUUxQixZQUNVLFdBQTJCLEVBQzNCLGNBQWlDLEVBQ2pDLFdBQTJCLEVBQzNCLHFCQUE0QyxFQUM1QyxVQUFzQixFQUN0QixFQUFxQjtRQUxyQixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7SUFDL0IsQ0FBQztJQUVELENBQUMsR0FBRyxDQUFDLENBQUM7SUFDTixDQUFDLEdBQUcsQ0FB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LG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDNUQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUU5RCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7dUdBM2NVLGdCQUFnQjsyRkFBaEIsZ0JBQWdCLHFJQUZoQixDQUFDLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsQ0FBQywwQkNidkUsZ2pKQStDQTs7MkZEaENhLGdCQUFnQjtrQkFONUIsU0FBUzsrQkFDRSxvQkFBb0IsYUFHbkIsQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLENBQUM7Nk9BRzVELE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgSW5wdXQsIEVsZW1lbnRSZWYsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUcnVEYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RydS1kYXRhLWNvbnRleHQnO1xuaW1wb3J0IHsgVHJ1RW50aXR5QWNjZXNzb3IgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cnUtZW50aXR5LWFjY2Vzc29yJztcclxuaW1wb3J0IHsgVHJ1VGV4dE1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cnUtdGV4dC1tYW5hZ2VyJztcclxuaW1wb3J0IHsgVHJ1VWlOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cnUtdWktbm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgVHJ1RGVza3RvcFZpZXdDb25maWcgfSBmcm9tICcuLi9jbGFzc2VzL3RydS1kZXNrdG9wLXZpZXctY29uZmlnJztcclxuaW1wb3J0IHsgVHJ1V2luZG93RXZlbnRIYW5kbGVyIH0gZnJvbSAnLi4vc2VydmljZXMvdHJ1LXdpbmRvdy1ldmVudC1oYW5kbGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndHJ1LWRlc2t0b3Atd2luZG93JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS1kZXNrdG9wLXdpbmRvdy5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4uL3RydS1kZXNrdG9wLmNzcycsICcuL3RydS1kZXNrdG9wLXdpbmRvdy5jc3MnXSxcbiAgcHJvdmlkZXJzOiBbVHJ1RGF0YUNvbnRleHQsIFRydUVudGl0eUFjY2Vzc29yLCBUcnVXaW5kb3dFdmVudEhhbmRsZXJdXG59KVxuZXhwb3J0IGNsYXNzIFRydURlc2t0b3BXaW5kb3cgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSB3aW5kb3c6IGFueTtcbiAgQElucHV0KCkgdmlld3BvcnRDdHJsOiBhbnk7XG4gIEBJbnB1dCgpIGRlc2t0b3BDdHJsOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXRhQ29udGV4dDogVHJ1RGF0YUNvbnRleHQsXG4gICAgcHJpdmF0ZSB1aU5vdGlmaWNhdGlvbjogVHJ1VWlOb3RpZmljYXRpb24sXG4gICAgcHJpdmF0ZSB0ZXh0TWFuYWdlcjogVHJ1VGV4dE1hbmFnZXIsXG4gICAgcHJpdmF0ZSB0cnVXaW5kb3dFdmVudEhhbmRsZXI6IFRydVdpbmRvd0V2ZW50SGFuZGxlcixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgfVxuXG4gIHggPSAwO1xuICB5ID0gMDtcbiAgbGFzdFggPSAwO1xuICBsYXN0WSA9IDA7XG4gIHN0YXJ0WCA9IDA7XG4gIHN0YXJ0WSA9IDA7XG4gIHRpdGxlQmFyOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBjYW5DbG9zZUZuID0gdW5kZWZpbmVkO1xuICBjYW5OYXZpZ2F0ZUZuITogKCkgPT4gYm9vbGVhbjtcbiAgY2FuY2VsRWRpdGluZ09uTmF2aWdhdGlvbiA9IGZhbHNlO1xuICB2aWV3cG9ydERpbWVuc2lvbnM6IGFueSA9IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIHN1YnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcblxuICBwcml2YXRlIHRhcmdldElzQ29udHJvbCA9ICh0YXJnZXQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKHRhcmdldCA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xuICAgIHZhciBub2RlTmFtZSA9IHRhcmdldC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBub2RlTmFtZSA9PT0gJ2lucHV0JyB8fCBub2RlTmFtZSA9PT0gJ3RleHRhcmVhJyB8fCBub2RlTmFtZSA9PT0gJ3NlbGVjdCcgfHwgbm9kZU5hbWUgPT09ICcjdGV4dCc7XHJcbiAgfVxuXG4gIGhhc0NoYW5nZXMgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YUNvbnRleHQuaGFzQ2hhbmdlcygpLmxlbmd0aDtcclxuICB9XG5cbiAgbW91c2VNb3ZlID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG5cbiAgICB0aGlzLnZpZXdwb3J0RGltZW5zaW9ucyA9IHRoaXMudmlld3BvcnRDdHJsLmdldFZpZXdwb3J0RGltZW5zaW9ucygpO1xuICAgIGlmIChldmVudC5wYWdlWCA8PSAwIHx8XG4gICAgICBldmVudC5wYWdlWCA+PSB0aGlzLnZpZXdwb3J0RGltZW5zaW9ucy53aWR0aCB8fFxuICAgICAgdGhpcy53aW5kb3cubWF4aW1pemVkKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy50aXRsZUJhciA9PSBudWxsKSByZXR1cm47XG5cbiAgICAvL3RoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnb3BhY2l0eTogMC41OycpO1xuICAgIHRoaXMueCA9IGV2ZW50LnNjcmVlblggLSB0aGlzLnN0YXJ0WDtcbiAgICB0aGlzLnkgPSBldmVudC5zY3JlZW5ZIC0gdGhpcy5zdGFydFk7XG5cbiAgICAvL1RvcCBDb250YWlubWVudFxuICAgIHRoaXMueSA9IHRoaXMueSA+PSAwID8gdGhpcy55IDogMDtcbiAgICAvL0JvdHRvbSBDb250YWlubWVudFxuICAgIHRoaXMueSA9IHRoaXMueSA8PSB0aGlzLnZpZXdwb3J0RGltZW5zaW9ucy5oZWlnaHQgLSB0aGlzLnRpdGxlQmFyLm9mZnNldEhlaWdodCA/IHRoaXMueSA6IHRoaXMudmlld3BvcnREaW1lbnNpb25zLmhlaWdodCAtIHRoaXMudGl0bGVCYXIub2Zmc2V0SGVpZ2h0O1xuXG4gICAgLy9MZWZ0IENvbnRhaW5tZW50XG4gICAgdGhpcy54ID0gdGhpcy54ID49IC0odGhpcy50aXRsZUJhci5vZmZzZXRXaWR0aCArIHRoaXMudGl0bGVCYXIub2Zmc2V0TGVmdCkgPyB0aGlzLnggOiAtKHRoaXMudGl0bGVCYXIub2Zmc2V0V2lkdGggKyB0aGlzLnRpdGxlQmFyLm9mZnNldExlZnQpO1xuICAgIC8vUmlnaHQgQ29udGFpbm1lbnRcbiAgICB0aGlzLnggPSB0aGlzLnggPD0gdGhpcy52aWV3cG9ydERpbWVuc2lvbnMud2lkdGggLSB0aGlzLnRpdGxlQmFyLm9mZnNldExlZnQgPyB0aGlzLnggOiB0aGlzLnZpZXdwb3J0RGltZW5zaW9ucy53aWR0aCAtIHRoaXMudGl0bGVCYXIub2Zmc2V0TGVmdDtcblxuICAgIHRoaXMud2luZG93LnRvcCA9IHRoaXMueSArICdweCc7XG4gICAgdGhpcy53aW5kb3cubGVmdCA9IHRoaXMueCArICdweCc7XG4gIH07XG5cbiAgbW91c2VVcCA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgIGlmIChldmVudC5wYWdlWSA8PSB0aGlzLmRlc2t0b3BDdHJsLm9wdGlvbnMudmlld3BvcnRUb3ApIHtcbiAgICAgIHRoaXMuZGVza3RvcEN0cmwubWF4aW1pemUodGhpcy53aW5kb3cpO1xuICAgIH1cbiAgICBpZiAoZXZlbnQucGFnZVggPD0gMCkge1xuICAgICAgdGhpcy5kZXNrdG9wQ3RybC5tYXhpbWl6ZUxlZnQodGhpcy53aW5kb3cpO1xuICAgIH1cbiAgICB0aGlzLnZpZXdwb3J0RGltZW5zaW9ucyA9IHRoaXMudmlld3BvcnRDdHJsLmdldFZpZXdwb3J0RGltZW5zaW9ucygpO1xuICAgIGlmIChldmVudC5wYWdlWCA+PSB0aGlzLnZpZXdwb3J0RGltZW5zaW9ucy53aWR0aCAtIDEpIHtcbiAgICAgIHRoaXMuZGVza3RvcEN0cmwubWF4aW1pemVSaWdodCh0aGlzLndpbmRvdyk7XG4gICAgfVxuXG4gICAgLy90aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ29wYWNpdHk6IDEuMDsnKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLm1vdXNlTW92ZSk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMubW91c2VVcCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BXaW5kb3dDb21wb25lbnQudXBkYXRlTmF2aWdhdGlvblN0YXRlXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3Aud2luZG93XG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBVcGRhdGVzIHdpbmRvdyBuYXZpZ2F0aW9uIGJ1dHRvbnMgYmFzZWQgbG9jYXRpb24gb2YgdGhlIGFjdGl2ZSB2aWV3IGluIHRoZSB2aWV3cyBhcnJheS5cbiAgICpcbiAgICovXG4gIHVwZGF0ZU5hdmlnYXRpb25TdGF0ZSA9ICgpID0+IHtcbiAgICBpZiAodGhpcy53aW5kb3cudmlld3MgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgIHZhciBsZW5ndGggPSB0aGlzLndpbmRvdy52aWV3cy5sZW5ndGg7XG4gICAgdGhpcy5kaXNhYmxlUHJldmlvdXMgPSAhISh0aGlzLndpbmRvdy52aWV3c1swXS5hY3RpdmUgfHwgbGVuZ3RoID09PSAxKTtcbiAgICB0aGlzLmRpc2FibGVOZXh0ID0gISEodGhpcy53aW5kb3cudmlld3NbbGVuZ3RoIC0gMV0uYWN0aXZlIHx8IGxlbmd0aCA9PT0gMSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BXaW5kb3dDb21wb25lbnQuaXNXaW5kb3dJblZpZXdwb3J0XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3Aud2luZG93XG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEZXRlcm1pbmVzIGlmIHRoZSB3aW5kb3cgaXMgd2l0aGluIHRoZSB2aWV3cG9ydCBib3VuZGFyaWVzLlxuICAgKlxuICAgKi9cbiAgaXNXaW5kb3dJblZpZXdwb3J0ID0gKCkgPT4ge1xuICAgIHZhciB3aW5kb3dUb3AgPSAwO1xuICAgIHZhciB3aW5kb3dMZWZ0ID0gMDtcbiAgICBpZiAoIXRoaXMud2luZG93Lm1pbmltaXplZCkge1xuICAgICAgd2luZG93VG9wID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgd2luZG93TGVmdCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldExlZnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvd1RvcCA9IHBhcnNlSW50KHRoaXMud2luZG93LnNhdmVkUG9zaXRpb24udG9wLCAxMCk7XG4gICAgICB3aW5kb3dMZWZ0ID0gcGFyc2VJbnQodGhpcy53aW5kb3cuc2F2ZWRQb3NpdGlvbi5sZWZ0LCAxMCk7XG4gICAgfVxuICAgIGlmICgod2luZG93VG9wICsgMTApID49IHRoaXMudmlld3BvcnRDdHJsLmdldFZpZXdwb3J0RGltZW5zaW9ucygpLmhlaWdodCB8fFxuICAgICAgKHdpbmRvd0xlZnQgKyA2MCkgPj0gdGhpcy52aWV3cG9ydEN0cmwuZ2V0Vmlld3BvcnREaW1lbnNpb25zKCkud2lkdGgpIHtcbiAgICAgIHRoaXMud2luZG93Lm91dE9mQm91bmRzID0gdHJ1ZTtcbiAgICAgIHRoaXMud2luZG93LmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5kZXNrdG9wQ3RybC5hY3RpdmF0ZUZvcmVtb3N0V2luZG93KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2luZG93Lm91dE9mQm91bmRzID0gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wV2luZG93Q29tcG9uZW50LmdldFdpbmRvd1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wLndpbmRvd1xuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogR2V0cyB0aGUgd2luZG93IG9iamVjdC5cbiAgICpcbiAgICogQHJldHVybnMge29iamVjdH0gd2luZG93IG9iamVjdC5cbiAgICovXG4gIGdldFdpbmRvdyA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy53aW5kb3c7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BXaW5kb3dDb21wb25lbnQuc2V0V2luZG93VGl0bGVcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcC53aW5kb3dcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNldHMgdGhlIHdpbmRvdyB0aXRsZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlIHRvIGRpc3BsYXkgaW4gdGhlIHdpbmRvdyB0aXRsZSBiYXIuXG4gICAqL1xuICBzZXRXaW5kb3dUaXRsZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgdGhpcy53aW5kb3cudGl0bGUgPSB2YWx1ZTtcbiAgfTtcblxuICBnZXRXaW5kb3dUaXRsZSA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy53aW5kb3cudGl0bGU7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BXaW5kb3dDb21wb25lbnQuZ29Ub1ByZXZpb3VzVmlld1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wLndpbmRvd1xuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUHVibGljIG1ldGhvZCBmb3IgbmF2aWdhdGluZyB0byB0aGUgcHJldmlvdXMgdmlldy5cbiAgICpcbiAgICovXG4gIGdvVG9QcmV2aW91c1ZpZXcgPSAoKSA9PiB7XG4gICAgdGhpcy5wcmV2aW91c1ZpZXcoKTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcFdpbmRvd0NvbXBvbmVudC52aWV3SXNFZGl0aW5nXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3Aud2luZG93XG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBDaGVja3Mgd2hldGhlciB2aWV3IGlzIGVkaXRpbmcuXG4gICAqXG4gICAqIEByZXR1cm5zIHtib29sZWFufS5cbiAgICovXG4gIHZpZXdJc0VkaXRpbmcgPSAoKSA9PiB7XG4gICAgdmFyIGlzRWRpdGluZyA9IGZhbHNlO1xuICAgIHRoaXMud2luZG93LnZpZXdzLmZvckVhY2goKHZpZXc6IGFueSkgPT4ge1xuICAgICAgaWYgKHZpZXcuaXNFZGl0aW5nID09PSB0cnVlKSB7XG4gICAgICAgIGlzRWRpdGluZyA9IHRydWU7XG4gICAgICB9XG4gICAgfSwgbnVsbCk7XG4gICAgcmV0dXJuIGlzRWRpdGluZztcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcFdpbmRvd0NvbXBvbmVudC5jYW5OYXZpZ2F0ZVxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wLndpbmRvd1xuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQ2hlY2tzIHdoZXRoZXIgbmF2aWdhdGlvbiBjYW4gb2NjdXIuLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0uXG4gICAqL1xuICBjYW5OYXZpZ2F0ZSA9ICgpID0+IHtcbiAgICB2YXIgY2FuTmF2aWdhdGUgPSB0cnVlO1xuICAgIGlmICh0aGlzLmNhbk5hdmlnYXRlRm4gIT09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLnZpZXdJc0VkaXRpbmcoKSkge1xuICAgICAgICBjYW5OYXZpZ2F0ZSA9IHRoaXMhLmNhbk5hdmlnYXRlRm4oKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNhbk5hdmlnYXRlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wV2luZG93Q29tcG9uZW50LnJlbW92ZUZvcndhcmRWaWV3c1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wLndpbmRvd1xuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmVtb3ZlcyBhbGwgdmlldyhzKSBmb3J3YXJkIG9mIHRoZSBhY3RpdmUgdmlldy5cbiAgICpcbiAgICovXG4gIHJlbW92ZUZvcndhcmRWaWV3cyA9ICgpID0+IHtcbiAgICB2YXIgYWN0aXZlVmlldyA9IHRoaXMuZGVza3RvcEN0cmwuZ2V0QWN0aXZlVmlldyh0aGlzLndpbmRvdyk7XG4gICAgdmFyIGFjdGl2ZVZpZXdJbmRleCA9IHRoaXMud2luZG93LnZpZXdzLmluZGV4T2YoYWN0aXZlVmlldyk7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMud2luZG93LnZpZXdzLmxlbmd0aDsgaSA+IGFjdGl2ZVZpZXdJbmRleDsgaS0tKSB7XG4gICAgICB0aGlzLndpbmRvdy52aWV3cy5zcGxpY2UoaSwgMSk7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlTmF2aWdhdGlvblN0YXRlKCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BXaW5kb3dDb21wb25lbnQuYWRkVmlld1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wLndpbmRvd1xuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmVtb3ZlcyBhbGwgaW5hY3RpdmUgdmlldyhzKSBmb2xsb3dpbmcgdGhlIGFjdGl2ZSB2aWV3IGFuZCBpbnNlcnRzIGEgbmV3IHZpZXcuXG4gICAqXG4gICAqL1xuICBhZGRWaWV3ID0gKHZpZXdDb25maWc6IGFueSkgPT4ge1xuICAgIHRoaXMucmVtb3ZlRm9yd2FyZFZpZXdzKCk7XG4gICAgdmFyIGFjdGl2ZVZpZXcgPSB0aGlzLmRlc2t0b3BDdHJsLmdldEFjdGl2ZVZpZXcodGhpcy53aW5kb3cpO1xuICAgIGFjdGl2ZVZpZXcuYWN0aXZlID0gZmFsc2U7XG4gICAgdmlld0NvbmZpZy53aW5kb3cgPSB0aGlzO1xuICAgIHRoaXMud2luZG93LnZpZXdzLnB1c2godmlld0NvbmZpZyk7XG4gICAgdGhpcy51cGRhdGVOYXZpZ2F0aW9uU3RhdGUoKTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcFdpbmRvd0NvbXBvbmVudC5nZXRHbG9iYWxzXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3Aud2luZG93XG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiByZXR1cm5zIHRoZSBnbG9iYWwgdmFsdWVzLlxuICAgKlxuICAgKi9cbiAgZ2V0R2xvYmFscyA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy53aW5kb3cuZ2xvYmFscztcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcFdpbmRvd0NvbXBvbmVudC5maXJzdFZpZXdcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcC53aW5kb3dcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqL1xuICBmaXJzdFZpZXcgPSAoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmNhbk5hdmlnYXRlKCkgfHwgdGhpcy5kaXNhYmxlUHJldmlvdXMpIHJldHVybjtcbiAgICBpZiAodGhpcy5jYW5jZWxFZGl0aW5nT25OYXZpZ2F0aW9uKSB0aGlzLmRlc2t0b3BDdHJsLmdldEFjdGl2ZVZpZXcodGhpcy53aW5kb3cpLmlzRWRpdGluZyA9IGZhbHNlO1xuICAgIGxldCBhY3RpdmVWaWV3ID0gdGhpcy5kZXNrdG9wQ3RybC5nZXRBY3RpdmVWaWV3KHRoaXMud2luZG93KTtcbiAgICBhY3RpdmVWaWV3LmFjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMud2luZG93LnZpZXdzWzBdLmFjdGl2ZSA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVOYXZpZ2F0aW9uU3RhdGUoKTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcFdpbmRvd0NvbXBvbmVudC5maXJzdFZpZXdcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcC53aW5kb3dcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqL1xuICBsYXN0VmlldyA9ICgpID0+IHtcbiAgICBpZiAoIXRoaXMuY2FuTmF2aWdhdGUoKSB8fCB0aGlzLmRpc2FibGVOZXh0KSByZXR1cm47XG4gICAgaWYgKHRoaXMuY2FuY2VsRWRpdGluZ09uTmF2aWdhdGlvbikgdGhpcy5kZXNrdG9wQ3RybC5nZXRBY3RpdmVWaWV3KHRoaXMud2luZG93KS5pc0VkaXRpbmcgPSBmYWxzZTtcbiAgICBsZXQgYWN0aXZlVmlldyA9IHRoaXMuZGVza3RvcEN0cmwuZ2V0QWN0aXZlVmlldyh0aGlzLndpbmRvdyk7XG4gICAgYWN0aXZlVmlldy5hY3RpdmUgPSBmYWxzZTtcbiAgICB0aGlzLndpbmRvdy52aWV3c1t0aGlzLndpbmRvdy52aWV3cy5sZW5ndGggLSAxXS5hY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlTmF2aWdhdGlvblN0YXRlKCk7XG4gIH07O1xuXG4gIHJlc2l6ZUV2ZW50SGFuZGxlciA9ICgpID0+IHtcbiAgICB0aGlzLmlzV2luZG93SW5WaWV3cG9ydCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGV2ZW50XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3Aud2luZG93XG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKi9cbiAgb25XaW5kb3dLZXlkb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgaWYgKCF0aGlzLndpbmRvdy5hY3RpdmUpIHJldHVybjtcbiAgICB2YXIga2V5U2VxdWVuY2UgPSB0aGlzLmRlc2t0b3BDdHJsLmdldEtleVNlcXVlbmNlKGV2ZW50KTtcbiAgICBpZiAoa2V5U2VxdWVuY2UgPT09ICdjdHJsK3MnIHx8IGtleVNlcXVlbmNlID09PSAnbWV0YStzJykgeyAvL1NhdmVcbiAgICAgIHRoaXMuc2F2ZSgpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKGtleVNlcXVlbmNlID09PSAnY3RybCtzaGlmdCtyJyB8fCBrZXlTZXF1ZW5jZSA9PT0gJ21ldGErc2hpZnQrcicpIHsgLy9SZXN0b3JlXG4gICAgICB0aGlzLnJldmVydCgpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKGtleVNlcXVlbmNlID09PSAnYWx0K2xlZnQnKSB7IC8vUHJldmlvdXMgVmlld1xuICAgICAgdGhpcy5wcmV2aW91c1ZpZXcoKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChrZXlTZXF1ZW5jZSA9PT0gJ2FsdCtyaWdodCcpIHsgLy9OZXh0IFZpZXdcbiAgICAgIHRoaXMubmV4dFZpZXcoKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChrZXlTZXF1ZW5jZSA9PT0gJ2FsdCt1cCcpIHsgLy9GaXJzdCBWaWV3XG4gICAgICB0aGlzLmZpcnN0VmlldygpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKGtleVNlcXVlbmNlID09PSAnYWx0K2Rvd24nKSB7IC8vTGFzdCBWaWV3XG4gICAgICB0aGlzLmxhc3RWaWV3KCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICB2YXIgdGFyZ2V0SXNDb250cm9sID0gdGhpcy50YXJnZXRJc0NvbnRyb2woZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KTtcbiAgICBpZiAoIXRhcmdldElzQ29udHJvbCAmJiBldmVudC5jdHJsS2V5IHx8IGV2ZW50LmFsdEtleSlcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIHdhdGNoXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3Aud2luZG93XG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBNb25pdG9ycyB0aGUgd2luZG93J3MgbWluaW1pemVkIHN0YXRlXG4gICAqXG4gICAqL1xuICAvLyRzY29wZS4kd2F0Y2goJ3dpbmRvdy5taW5pbWl6ZWQnLFxuICAvLyAgICAgICAgICAgICAgZnVuY3Rpb24odmFsdWUpIHtcbiAgLy8gIGlmICh2YWx1ZSAmJiAhJHNjb3BlLndpbmRvdy5tYXhpbWl6ZWQpIHtcbiAgLy8gICAgJHNjb3BlLmRlc2t0b3BDdHJsLnNhdmVQb3NpdGlvbigkc2NvcGUud2luZG93KTtcbiAgLy8gIH1cbiAgLy99XG4gIC8vICAgICAgICAgICk7XG5cbiAgZGlzYWJsZVByZXZpb3VzID0gdHJ1ZTtcbiAgZGlzYWJsZU5leHQgPSB0cnVlO1xuXG4gIGFjdGl2YXRlID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLndpbmRvdy5vdXRPZkJvdW5kcykgcmV0dXJuO1xuICAgIHRoaXMuZGVza3RvcEN0cmwuY2xlYXJBY3RpdmUoKTtcbiAgICB0aGlzLndpbmRvdy5hY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMud2luZG93LnpJbmRleCA9IHRoaXMuZGVza3RvcEN0cmwuZ2V0TmV4dE1heFpJbmRleCgpO1xuICB9O1xuXG4gIG1pbmltaXplID0gKCkgPT4ge1xuICAgIHRoaXMuZGVza3RvcEN0cmwubWluaW1pemUodGhpcy53aW5kb3cpO1xuICB9O1xuXG4gIG1heGltaXplID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLndpbmRvdy5tYXhpbWl6ZWQpIHtcbiAgICAgIHRoaXMuZGVza3RvcEN0cmwucmVzdG9yZVNhdmVkUG9zaXRpb24odGhpcy53aW5kb3cpO1xuICAgICAgdGhpcy53aW5kb3cubWF4aW1pemVkID0gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRlc2t0b3BDdHJsLnNhdmVQb3NpdGlvbih0aGlzLndpbmRvdyk7XG4gICAgICB0aGlzLmRlc2t0b3BDdHJsLm1heGltaXplKHRoaXMud2luZG93KTtcbiAgICB9XG4gIH07XG5cbiAgY2xvc2UgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMuaGFzQ2hhbmdlcygpKVxuICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5jb25maXJtKCdDb25maXJtIEFjdGlvbicsIHRoaXMudGV4dE1hbmFnZXIubXNnRGlydHlQcmV2ZW50c0Nsb3NlLCBmYWxzZSwgdHJ1ZSwgJycsICdPaycpLnRoZW4oKGNvbmZpcm06IGJvb2xlYW4pID0+IHt9KTtcbiAgICBlbHNlXG4gICAgICB0aGlzLmRlc2t0b3BDdHJsLmNsb3NlV2luZG93KHRoaXMud2luZG93KTtcbiAgfTtcblxuICB3aW5kb3dUaXRsZU1vdXNlRG93biA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgIGlmICh0aGlzLndpbmRvdy5tYXhpbWl6ZWQpIHJldHVybjtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMudGl0bGVCYXIgPSBldmVudC5zcmNFbGVtZW50IGFzIEhUTUxFbGVtZW50IHx8IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICB0aGlzLnggPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5vZmZzZXRMZWZ0O1xuICAgIHRoaXMueSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdLm9mZnNldFRvcDtcbiAgICB0aGlzLnN0YXJ0WCA9IGV2ZW50LnNjcmVlblggLSB0aGlzLng7XG4gICAgdGhpcy5zdGFydFkgPSBldmVudC5zY3JlZW5ZIC0gdGhpcy55O1xuXG4gICAgdGhpcy5kZXNrdG9wQ3RybC5zYXZlUG9zaXRpb24odGhpcy53aW5kb3cpO1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5tb3VzZU1vdmUpO1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm1vdXNlVXApO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVzaXplRXZlbnRIYW5kbGVyKTtcbiAgfTtcblxuICBwcmV2aW91c1ZpZXcgPSAoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmNhbk5hdmlnYXRlKCkgfHwgdGhpcy5kaXNhYmxlUHJldmlvdXMpIHJldHVybjtcbiAgICB2YXIgYWN0aXZlVmlldyA9IHRoaXMuZGVza3RvcEN0cmwuZ2V0QWN0aXZlVmlldyh0aGlzLndpbmRvdyk7XG4gICAgdmFyIGFjdGl2ZVZpZXdJbmRleCA9IHRoaXMud2luZG93LnZpZXdzLmluZGV4T2YoYWN0aXZlVmlldyk7XG4gICAgaWYgKHRoaXMuY2FuY2VsRWRpdGluZ09uTmF2aWdhdGlvbikgYWN0aXZlVmlldy5pc0VkaXRpbmcgPSBmYWxzZTtcbiAgICBhY3RpdmVWaWV3LmFjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMud2luZG93LnZpZXdzW2FjdGl2ZVZpZXdJbmRleCAtIDFdLmFjdGl2ZSA9IHRydWU7XG4gICAgdGhpcy51cGRhdGVOYXZpZ2F0aW9uU3RhdGUoKTtcbiAgfTtcblxuICBuZXh0VmlldyA9ICgpID0+IHtcbiAgICBpZiAoIXRoaXMuY2FuTmF2aWdhdGUoKSB8fCB0aGlzLmRpc2FibGVOZXh0KSByZXR1cm47XG4gICAgdmFyIGFjdGl2ZVZpZXcgPSB0aGlzLmRlc2t0b3BDdHJsLmdldEFjdGl2ZVZpZXcodGhpcy53aW5kb3cpO1xuICAgIHZhciBhY3RpdmVWaWV3SW5kZXggPSB0aGlzLndpbmRvdy52aWV3cy5pbmRleE9mKGFjdGl2ZVZpZXcpO1xuICAgIGlmICh0aGlzLmNhbmNlbEVkaXRpbmdPbk5hdmlnYXRpb24pIGFjdGl2ZVZpZXcuaXNFZGl0aW5nID0gZmFsc2U7XG4gICAgYWN0aXZlVmlldy5hY3RpdmUgPSBmYWxzZTtcbiAgICB0aGlzLndpbmRvdy52aWV3c1thY3RpdmVWaWV3SW5kZXggKyAxXS5hY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlTmF2aWdhdGlvblN0YXRlKCk7XG4gIH07XG5cbiAgc2F2ZSA9ICgpID0+IHtcbiAgICB0aGlzLmRhdGFDb250ZXh0LnNhdmUoKTtcbiAgfTtcblxuICByZXZlcnQgPSAoKSA9PiB7XG4gICAgdGhpcy5kYXRhQ29udGV4dC5yZXZlcnQoKTtcbiAgfTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhbkNsb3NlRm4gPSB0aGlzLmRlc2t0b3BDdHJsLmdldE9wdGlvbnMoKS5jYW5DbG9zZUZuO1xuICAgIHRoaXMuY2FuTmF2aWdhdGVGbiA9IHRoaXMuZGVza3RvcEN0cmwuZ2V0T3B0aW9ucygpLmNhbk5hdmlnYXRlRm47XG4gICAgdGhpcy5jYW5jZWxFZGl0aW5nT25OYXZpZ2F0aW9uID0gdGhpcy5kZXNrdG9wQ3RybC5nZXRPcHRpb25zKCkuY2FuY2VsRWRpdGluZ09uTmF2aWdhdGlvbjtcbiAgICB0aGlzLnVwZGF0ZU5hdmlnYXRpb25TdGF0ZSgpO1xuXG4gICAgdGhpcy5zdWJzLnB1c2godGhpcy50cnVXaW5kb3dFdmVudEhhbmRsZXIub25BZGRWaWV3KCkuc3Vic2NyaWJlKCh3aW5kaW93QWRkVmlld0V2ZW50OiBUcnVEZXNrdG9wVmlld0NvbmZpZykgPT4ge1xyXG4gICAgICB0aGlzLmFkZFZpZXcod2luZGlvd0FkZFZpZXdFdmVudCk7XHJcbiAgICB9KSk7XG5cbiAgICB0aGlzLnN1YnMucHVzaCh0aGlzLnRydVdpbmRvd0V2ZW50SGFuZGxlci5vblNldFdpbmRvd1RpdGxlKCkuc3Vic2NyaWJlKCh3aW5kb3dUaXRsZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0V2luZG93VGl0bGUod2luZG93VGl0bGUpO1xyXG4gICAgfSkpO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLm9uV2luZG93S2V5ZG93bik7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5tb3VzZU1vdmUpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm1vdXNlVXApO1xuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLm9uV2luZG93S2V5ZG93bik7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVzaXplRXZlbnRIYW5kbGVyKTtcblxuICAgIHRoaXMuc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRlc2t0b3Atd2luZG93LWNvbnRhaW5lclwiXHJcbiAgICAgW25nQ2xhc3NdPVwieydkZXNrdG9wLXdpbmRvdy1hY3RpdmUnOiB3aW5kb3cuYWN0aXZlLCAnZGVza3RvcC13aW5kb3ctbWF4aW1pemVkJzogd2luZG93Lm1heGltaXplZH1cIlxyXG4gICAgIFtuZ1N0eWxlXT1cInsnei1pbmRleCc6IHdpbmRvdy56SW5kZXgsICd0b3AnOiB3aW5kb3cudG9wLCAnbGVmdCc6IHdpbmRvdy5sZWZ0LCAncmlnaHQnOiB3aW5kb3cucmlnaHQsICdib3R0b20nOiB3aW5kb3cuYm90dG9tLCAnaGVpZ2h0Jzogd2luZG93LmhlaWdodCwgJ3dpZHRoJzogd2luZG93LndpZHRoLCAnbWluLWhlaWdodCc6IHdpbmRvdy5taW5IZWlnaHQsICdtaW5XaWR0aCc6IHdpbmRvdy5taW5XaWR0aH1cIlxyXG4gICAgIFtzdHlsZS5vZmZzZXRMZWZ0LnB4XT1cInhcIlxyXG4gICAgIFtzdHlsZS5vZmZzZXRUb3AucHhdPVwieVwiXHJcbiAgICAgKG1vdXNlZG93bik9XCJhY3RpdmF0ZSgpXCJcclxuICAgICBbaGlkZGVuXT1cIndpbmRvdy5taW5pbWl6ZWRcIj5cclxuICA8ZGl2IGNsYXNzPVwiZGVza3RvcC13aW5kb3ctaGVhZGVyXCIgW25nQ2xhc3NdPVwieydkZXNrdG9wLXdpbmRvdy1tYXhpbWl6ZWQnOiB3aW5kb3cubWF4aW1pemVkLCAnZGVza3RvcC13aW5kb3ctb3BhY2l0eSc6ICF3aW5kb3cuYWN0aXZlfVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInRvb2xiYXItd2luZG93LW5hdmlnYXRpb25cIj5cclxuICAgICAgPHRydS10b29sYmFyPlxyXG4gICAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLXByZXZpb3VzLWljb24nXCIgW3Rvb2x0aXBdPVwiJ0dvIEJhY2sgT25lIFZpZXcgLSBbQWx0ICsgTGVmdF0nXCIgKGNsaWNrKT1cInByZXZpb3VzVmlldygpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgICAgPHRydS10b29sYmFyLWJ1dHRvbiBbaWNvbl09XCIndHJ1LXRvb2xiYXItbmV4dC1pY29uJ1wiIFt0b29sdGlwXT1cIidHbyBGb3J3YXJkIE9uZSBWaWV3IC0gW0FsdCArIFJpZ2h0XSdcIiAoY2xpY2spPVwibmV4dFZpZXcoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLXNhdmUtaWNvbidcIiBjbGFzcz1cImRlc2t0b3Atd2luZG93LXNhdmUtaWNvblwiIFtuZ0NsYXNzXT1cInsnZGVza3RvcC13aW5kb3ctc2F2ZS1pY29uLWhhcy1jaGFuZ2VzJzogaGFzQ2hhbmdlcygpfVwiIFt0b29sdGlwXT1cIidTYXZlIC0gW0N0cmwgKyBTXSdcIiAoY2xpY2spPVwic2F2ZSgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgICAgPHRydS10b29sYmFyLWJ1dHRvbiBbaWNvbl09XCIndHJ1LXRvb2xiYXItcmV2ZXJ0LWljb24nXCIgY2xhc3M9XCJkZXNrdG9wLXdpbmRvdy1yZXZlcnQtaWNvblwiIFtuZ0NsYXNzXT1cInsnZGVza3RvcC13aW5kb3ctcmV2ZXJ0LWljb24taGFzLWNoYW5nZXMnOiBoYXNDaGFuZ2VzKCl9XCIgW3Rvb2x0aXBdPVwiJ1JldmVydCAtIFtDdHJsICsgU2hpZnQgKyBSXSdcIiAoY2xpY2spPVwicmV2ZXJ0KClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgICAgICA8dHJ1LXRvb2xiYXItc2VwYXJhdG9yPjwvdHJ1LXRvb2xiYXItc2VwYXJhdG9yPlxyXG4gICAgICA8L3RydS10b29sYmFyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGVza3RvcC13aW5kb3ctdGl0bGVcIiAoZGJsY2xpY2spPVwibWF4aW1pemUoKVwiIChtb3VzZWRvd24pPVwid2luZG93VGl0bGVNb3VzZURvd24oJGV2ZW50KVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZGVza3RvcC1jbGljay10aHJvdWdoXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRlc2t0b3AtdGV4dFwiPnt7d2luZG93LnRpdGxlfX08L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkZXNrdG9wLXdpbmRvdy1hY3Rpb25cIj5cclxuICAgICAgPHRydS10b29sYmFyPlxyXG4gICAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLW1pbmltaXplLWljb24nXCIgW3Rvb2x0aXBdPVwiJ01pbmltaXplIC0gW0FsdCArIE5dJ1wiIChjbGljayk9XCJtaW5pbWl6ZSgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgICAgPHRydS10b29sYmFyLWJ1dHRvbiAqbmdJZj1cIiF3aW5kb3cubWF4aW1pemVkXCIgW2ljb25dPVwiJ3RydS10b29sYmFyLW1heGltaXplLWljb24nXCIgW3Rvb2x0aXBdPVwiJ01heGltaXplIFdpbmRvdyAtIFtBbHQgKyBNXSdcIiAoY2xpY2spPVwibWF4aW1pemUoKVwiIGNsYXNzPVwibWF4aW1pemVcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uICpuZ0lmPVwid2luZG93Lm1heGltaXplZFwiIFtpY29uXT1cIid0cnUtdG9vbGJhci1yZXN0b3JlLWljb24nXCIgW3Rvb2x0aXBdPVwiJ1Jlc3RvcmUgV2luZG93IC0gW0FsdCArIE1dJ1wiIChjbGljayk9XCJtYXhpbWl6ZSgpXCIgY2xhc3M9XCJtYXhpbWl6ZVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLWNsb3NlLWljb24nXCIgW3Rvb2x0aXBdPVwiJ0Nsb3NlIFdpbmRvdyAtIFtBbHQgKyBTSElGVCArIFhdJ1wiIChjbGljayk9XCJjbG9zZSgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgIDwvdHJ1LXRvb2xiYXI+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZmllbGRzZXQgbmctZGlzYWJsZWQ9XCIhd2luZG93LmFjdGl2ZVwiIGNsYXNzPVwiZGVza3RvcC13aW5kb3ctZmllbGRzZXRcIiBbbmdDbGFzc109XCJ7J2Rlc2t0b3Atd2luZG93LW9wYWNpdHknOiAhd2luZG93LmFjdGl2ZX1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJkZXNrdG9wLXdpbmRvdy1jb250ZW50XCI+XHJcbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHZpZXcgb2Ygd2luZG93LnZpZXdzXCI+XHJcbiAgICAgICAgPHRydS1kZXNrdG9wLXZpZXcgW3ZpZXddPVwidmlld1wiIFthY3RpdmVdPVwidmlldy5hY3RpdmVcIiBbaGlkZGVuXT1cIiF2aWV3LmFjdGl2ZVwiPjxuZy10ZW1wbGF0ZT48L25nLXRlbXBsYXRlPjwvdHJ1LWRlc2t0b3Atdmlldz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2ZpZWxkc2V0PlxyXG4gIDxzcGFuIGNsYXNzPVwiZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLWhhbmRsZSBkZXNrdG9wLXdpbmRvdy1yZXNpemFibGUtbndcIiB0cnUtZGVza3RvcC1yZXNpemFibGUgW3dpbmRvd109XCJ3aW5kb3dcIiAqbmdJZj1cIiF3aW5kb3cubWF4aW1pemVkXCIgW2RpcmVjdGlvbl09XCInbncnXCI+PC9zcGFuPlxyXG4gIDxzcGFuIGNsYXNzPVwiZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLWhhbmRsZSBkZXNrdG9wLXdpbmRvdy1yZXNpemFibGUtbmVcIiB0cnUtZGVza3RvcC1yZXNpemFibGUgW3dpbmRvd109XCJ3aW5kb3dcIiAqbmdJZj1cIiF3aW5kb3cubWF4aW1pemVkXCIgW2RpcmVjdGlvbl09XCInbmUnXCI+PC9zcGFuPlxyXG4gIDxzcGFuIGNsYXNzPVwiZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLWhhbmRsZSBkZXNrdG9wLXdpbmRvdy1yZXNpemFibGUtc3dcIiB0cnUtZGVza3RvcC1yZXNpemFibGUgW3dpbmRvd109XCJ3aW5kb3dcIiAqbmdJZj1cIiF3aW5kb3cubWF4aW1pemVkXCIgW2RpcmVjdGlvbl09XCInc3cnXCI+PC9zcGFuPlxyXG4gIDxzcGFuIGNsYXNzPVwiZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLWhhbmRsZSBkZXNrdG9wLXdpbmRvdy1yZXNpemFibGUtc2VcIiB0cnUtZGVza3RvcC1yZXNpemFibGUgW3dpbmRvd109XCJ3aW5kb3dcIiAqbmdJZj1cIiF3aW5kb3cubWF4aW1pemVkXCIgW2RpcmVjdGlvbl09XCInc2UnXCI+PC9zcGFuPlxyXG4gIDxzcGFuIGNsYXNzPVwiZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLWhhbmRsZSBkZXNrdG9wLXdpbmRvdy1yZXNpemFibGUtblwiIHRydS1kZXNrdG9wLXJlc2l6YWJsZSBbd2luZG93XT1cIndpbmRvd1wiICpuZ0lmPVwiIXdpbmRvdy5tYXhpbWl6ZWRcIiBbZGlyZWN0aW9uXT1cIiduJ1wiPjwvc3Bhbj5cclxuICA8c3BhbiBjbGFzcz1cImRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS1oYW5kbGUgZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLXNcIiB0cnUtZGVza3RvcC1yZXNpemFibGUgW3dpbmRvd109XCJ3aW5kb3dcIiAqbmdJZj1cIiF3aW5kb3cubWF4aW1pemVkXCIgW2RpcmVjdGlvbl09XCIncydcIj48L3NwYW4+XHJcbiAgPHNwYW4gY2xhc3M9XCJkZXNrdG9wLXdpbmRvdy1yZXNpemFibGUtaGFuZGxlIGRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS13XCIgdHJ1LWRlc2t0b3AtcmVzaXphYmxlIFt3aW5kb3ddPVwid2luZG93XCIgKm5nSWY9XCIhd2luZG93Lm1heGltaXplZFwiIFtkaXJlY3Rpb25dPVwiJ3cnXCI+PC9zcGFuPlxyXG4gIDxzcGFuIGNsYXNzPVwiZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLWhhbmRsZSBkZXNrdG9wLXdpbmRvdy1yZXNpemFibGUtZVwiIHRydS1kZXNrdG9wLXJlc2l6YWJsZSBbd2luZG93XT1cIndpbmRvd1wiICpuZ0lmPVwiIXdpbmRvdy5tYXhpbWl6ZWRcIiBbZGlyZWN0aW9uXT1cIidlJ1wiPjwvc3Bhbj5cclxuPC9kaXY+XHJcbiJdfQ==
464
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRlc2t0b3Atd2luZG93LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Rlc2t0b3Avd2luZG93L3RydS1kZXNrdG9wLXdpbmRvdy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kZXNrdG9wL3dpbmRvdy90cnUtZGVza3RvcC13aW5kb3cuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF5QixLQUFLLEVBQWlDLE1BQU0sZUFBZSxDQUFDO0FBRXZHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUkxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7Ozs7OztBQVF0RSxNQUFNLE9BQU8sZ0JBQWdCO0lBTWpCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQVZELE1BQU0sQ0FBTTtJQUNaLFlBQVksQ0FBTTtJQUNsQixXQUFXLENBQU07SUFFMUIsWUFDVSxXQUEyQixFQUMzQixjQUFpQyxFQUNqQyxXQUEyQixFQUMzQixxQkFBNEMsRUFDNUMsVUFBc0IsRUFDdEIsRUFBcUI7UUFMckIsZ0JBQVcsR0FBWCxXQUFXLENBQWdCO1FBQzNCLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLE9BQUUsR0FBRixFQUFFLENBQW1CO0lBQy9CLENBQUM7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QUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzFELFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXRELE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVELE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFFOUQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO3VHQTNjVSxnQkFBZ0I7MkZBQWhCLGdCQUFnQixxSUFGaEIsQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxDQUFDLDBCQ2R4RixnakpBK0NBOzsyRkQvQmEsZ0JBQWdCO2tCQU41QixTQUFTOytCQUNFLG9CQUFvQixhQUduQixDQUFDLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSxlQUFlLENBQUM7Nk9BRzdFLE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgSW5wdXQsIEVsZW1lbnRSZWYsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUcnVEYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RydS1kYXRhLWNvbnRleHQnO1xuaW1wb3J0IHsgVHJ1RW50aXR5QWNjZXNzb3IgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cnUtZW50aXR5LWFjY2Vzc29yJztcclxuaW1wb3J0IHsgVHJ1VGV4dE1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cnUtdGV4dC1tYW5hZ2VyJztcclxuaW1wb3J0IHsgVHJ1VWlOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cnUtdWktbm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgVHJ1RGVza3RvcFZpZXdDb25maWcgfSBmcm9tICcuLi9jbGFzc2VzL3RydS1kZXNrdG9wLXZpZXctY29uZmlnJztcclxuaW1wb3J0IHsgVHJ1V2luZG93RXZlbnRIYW5kbGVyIH0gZnJvbSAnLi4vc2VydmljZXMvdHJ1LXdpbmRvdy1ldmVudC1oYW5kbGVyJztcbmltcG9ydCB7IFRydUFjdGlvbkludm9rZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RydS1hY3Rpb24taW52b2tlJztcclxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0cnUtZGVza3RvcC13aW5kb3cnLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJ1LWRlc2t0b3Atd2luZG93Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi4vdHJ1LWRlc2t0b3AuY3NzJywgJy4vdHJ1LWRlc2t0b3Atd2luZG93LmNzcyddLFxuICBwcm92aWRlcnM6IFtUcnVEYXRhQ29udGV4dCwgVHJ1RW50aXR5QWNjZXNzb3IsIFRydVdpbmRvd0V2ZW50SGFuZGxlciwgVHJ1QWN0aW9uSW52b2tlXVxufSlcbmV4cG9ydCBjbGFzcyBUcnVEZXNrdG9wV2luZG93IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgd2luZG93OiBhbnk7XG4gIEBJbnB1dCgpIHZpZXdwb3J0Q3RybDogYW55O1xuICBASW5wdXQoKSBkZXNrdG9wQ3RybDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0LFxuICAgIHByaXZhdGUgdWlOb3RpZmljYXRpb246IFRydVVpTm90aWZpY2F0aW9uLFxuICAgIHByaXZhdGUgdGV4dE1hbmFnZXI6IFRydVRleHRNYW5hZ2VyLFxuICAgIHByaXZhdGUgdHJ1V2luZG93RXZlbnRIYW5kbGVyOiBUcnVXaW5kb3dFdmVudEhhbmRsZXIsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gIH1cblxuICB4ID0gMDtcbiAgeSA9IDA7XG4gIGxhc3RYID0gMDtcbiAgbGFzdFkgPSAwO1xuICBzdGFydFggPSAwO1xuICBzdGFydFkgPSAwO1xuICB0aXRsZUJhcjogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgY2FuQ2xvc2VGbiA9IHVuZGVmaW5lZDtcbiAgY2FuTmF2aWdhdGVGbiE6ICgpID0+IGJvb2xlYW47XG4gIGNhbmNlbEVkaXRpbmdPbk5hdmlnYXRpb24gPSBmYWxzZTtcbiAgdmlld3BvcnREaW1lbnNpb25zOiBhbnkgPSB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBzdWJzOiBBcnJheTxTdWJzY3JpcHRpb24+ID0gW107XG5cbiAgcHJpdmF0ZSB0YXJnZXRJc0NvbnRyb2wgPSAodGFyZ2V0OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4gPT4ge1xuICAgIGlmICh0YXJnZXQgPT09IG51bGwpIHJldHVybiBmYWxzZTtcbiAgICB2YXIgbm9kZU5hbWUgPSB0YXJnZXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gbm9kZU5hbWUgPT09ICdpbnB1dCcgfHwgbm9kZU5hbWUgPT09ICd0ZXh0YXJlYScgfHwgbm9kZU5hbWUgPT09ICdzZWxlY3QnIHx8IG5vZGVOYW1lID09PSAnI3RleHQnO1xyXG4gIH1cblxuICBoYXNDaGFuZ2VzID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmRhdGFDb250ZXh0Lmhhc0NoYW5nZXMoKS5sZW5ndGg7XHJcbiAgfVxuXG4gIG1vdXNlTW92ZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuXG4gICAgdGhpcy52aWV3cG9ydERpbWVuc2lvbnMgPSB0aGlzLnZpZXdwb3J0Q3RybC5nZXRWaWV3cG9ydERpbWVuc2lvbnMoKTtcbiAgICBpZiAoZXZlbnQucGFnZVggPD0gMCB8fFxuICAgICAgZXZlbnQucGFnZVggPj0gdGhpcy52aWV3cG9ydERpbWVuc2lvbnMud2lkdGggfHxcbiAgICAgIHRoaXMud2luZG93Lm1heGltaXplZCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMudGl0bGVCYXIgPT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgLy90aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ29wYWNpdHk6IDAuNTsnKTtcbiAgICB0aGlzLnggPSBldmVudC5zY3JlZW5YIC0gdGhpcy5zdGFydFg7XG4gICAgdGhpcy55ID0gZXZlbnQuc2NyZWVuWSAtIHRoaXMuc3RhcnRZO1xuXG4gICAgLy9Ub3AgQ29udGFpbm1lbnRcbiAgICB0aGlzLnkgPSB0aGlzLnkgPj0gMCA/IHRoaXMueSA6IDA7XG4gICAgLy9Cb3R0b20gQ29udGFpbm1lbnRcbiAgICB0aGlzLnkgPSB0aGlzLnkgPD0gdGhpcy52aWV3cG9ydERpbWVuc2lvbnMuaGVpZ2h0IC0gdGhpcy50aXRsZUJhci5vZmZzZXRIZWlnaHQgPyB0aGlzLnkgOiB0aGlzLnZpZXdwb3J0RGltZW5zaW9ucy5oZWlnaHQgLSB0aGlzLnRpdGxlQmFyLm9mZnNldEhlaWdodDtcblxuICAgIC8vTGVmdCBDb250YWlubWVudFxuICAgIHRoaXMueCA9IHRoaXMueCA+PSAtKHRoaXMudGl0bGVCYXIub2Zmc2V0V2lkdGggKyB0aGlzLnRpdGxlQmFyLm9mZnNldExlZnQpID8gdGhpcy54IDogLSh0aGlzLnRpdGxlQmFyLm9mZnNldFdpZHRoICsgdGhpcy50aXRsZUJhci5vZmZzZXRMZWZ0KTtcbiAgICAvL1JpZ2h0IENvbnRhaW5tZW50XG4gICAgdGhpcy54ID0gdGhpcy54IDw9IHRoaXMudmlld3BvcnREaW1lbnNpb25zLndpZHRoIC0gdGhpcy50aXRsZUJhci5vZmZzZXRMZWZ0ID8gdGhpcy54IDogdGhpcy52aWV3cG9ydERpbWVuc2lvbnMud2lkdGggLSB0aGlzLnRpdGxlQmFyLm9mZnNldExlZnQ7XG5cbiAgICB0aGlzLndpbmRvdy50b3AgPSB0aGlzLnkgKyAncHgnO1xuICAgIHRoaXMud2luZG93LmxlZnQgPSB0aGlzLnggKyAncHgnO1xuICB9O1xuXG4gIG1vdXNlVXAgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQucGFnZVkgPD0gdGhpcy5kZXNrdG9wQ3RybC5vcHRpb25zLnZpZXdwb3J0VG9wKSB7XG4gICAgICB0aGlzLmRlc2t0b3BDdHJsLm1heGltaXplKHRoaXMud2luZG93KTtcbiAgICB9XG4gICAgaWYgKGV2ZW50LnBhZ2VYIDw9IDApIHtcbiAgICAgIHRoaXMuZGVza3RvcEN0cmwubWF4aW1pemVMZWZ0KHRoaXMud2luZG93KTtcbiAgICB9XG4gICAgdGhpcy52aWV3cG9ydERpbWVuc2lvbnMgPSB0aGlzLnZpZXdwb3J0Q3RybC5nZXRWaWV3cG9ydERpbWVuc2lvbnMoKTtcbiAgICBpZiAoZXZlbnQucGFnZVggPj0gdGhpcy52aWV3cG9ydERpbWVuc2lvbnMud2lkdGggLSAxKSB7XG4gICAgICB0aGlzLmRlc2t0b3BDdHJsLm1heGltaXplUmlnaHQodGhpcy53aW5kb3cpO1xuICAgIH1cblxuICAgIC8vdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKCdzdHlsZScsICdvcGFjaXR5OiAxLjA7Jyk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5tb3VzZU1vdmUpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLm1vdXNlVXApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wV2luZG93Q29tcG9uZW50LnVwZGF0ZU5hdmlnYXRpb25TdGF0ZVxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wLndpbmRvd1xuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVXBkYXRlcyB3aW5kb3cgbmF2aWdhdGlvbiBidXR0b25zIGJhc2VkIGxvY2F0aW9uIG9mIHRoZSBhY3RpdmUgdmlldyBpbiB0aGUgdmlld3MgYXJyYXkuXG4gICAqXG4gICAqL1xuICB1cGRhdGVOYXZpZ2F0aW9uU3RhdGUgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMud2luZG93LnZpZXdzID09PSB1bmRlZmluZWQpIHJldHVybjtcbiAgICB2YXIgbGVuZ3RoID0gdGhpcy53aW5kb3cudmlld3MubGVuZ3RoO1xuICAgIHRoaXMuZGlzYWJsZVByZXZpb3VzID0gISEodGhpcy53aW5kb3cudmlld3NbMF0uYWN0aXZlIHx8IGxlbmd0aCA9PT0gMSk7XG4gICAgdGhpcy5kaXNhYmxlTmV4dCA9ICEhKHRoaXMud2luZG93LnZpZXdzW2xlbmd0aCAtIDFdLmFjdGl2ZSB8fCBsZW5ndGggPT09IDEpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wV2luZG93Q29tcG9uZW50LmlzV2luZG93SW5WaWV3cG9ydFxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wLndpbmRvd1xuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgd2luZG93IGlzIHdpdGhpbiB0aGUgdmlld3BvcnQgYm91bmRhcmllcy5cbiAgICpcbiAgICovXG4gIGlzV2luZG93SW5WaWV3cG9ydCA9ICgpID0+IHtcbiAgICB2YXIgd2luZG93VG9wID0gMDtcbiAgICB2YXIgd2luZG93TGVmdCA9IDA7XG4gICAgaWYgKCF0aGlzLndpbmRvdy5taW5pbWl6ZWQpIHtcbiAgICAgIHdpbmRvd1RvcCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFRvcDtcbiAgICAgIHdpbmRvd0xlZnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5vZmZzZXRMZWZ0O1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3dUb3AgPSBwYXJzZUludCh0aGlzLndpbmRvdy5zYXZlZFBvc2l0aW9uLnRvcCwgMTApO1xuICAgICAgd2luZG93TGVmdCA9IHBhcnNlSW50KHRoaXMud2luZG93LnNhdmVkUG9zaXRpb24ubGVmdCwgMTApO1xuICAgIH1cbiAgICBpZiAoKHdpbmRvd1RvcCArIDEwKSA+PSB0aGlzLnZpZXdwb3J0Q3RybC5nZXRWaWV3cG9ydERpbWVuc2lvbnMoKS5oZWlnaHQgfHxcbiAgICAgICh3aW5kb3dMZWZ0ICsgNjApID49IHRoaXMudmlld3BvcnRDdHJsLmdldFZpZXdwb3J0RGltZW5zaW9ucygpLndpZHRoKSB7XG4gICAgICB0aGlzLndpbmRvdy5vdXRPZkJvdW5kcyA9IHRydWU7XG4gICAgICB0aGlzLndpbmRvdy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuZGVza3RvcEN0cmwuYWN0aXZhdGVGb3JlbW9zdFdpbmRvdygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndpbmRvdy5vdXRPZkJvdW5kcyA9IGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcFdpbmRvd0NvbXBvbmVudC5nZXRXaW5kb3dcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcC53aW5kb3dcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEdldHMgdGhlIHdpbmRvdyBvYmplY3QuXG4gICAqXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IHdpbmRvdyBvYmplY3QuXG4gICAqL1xuICBnZXRXaW5kb3cgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMud2luZG93O1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wV2luZG93Q29tcG9uZW50LnNldFdpbmRvd1RpdGxlXG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3Aud2luZG93XG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBTZXRzIHRoZSB3aW5kb3cgdGl0bGUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSB0byBkaXNwbGF5IGluIHRoZSB3aW5kb3cgdGl0bGUgYmFyLlxuICAgKi9cbiAgc2V0V2luZG93VGl0bGUgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgIHRoaXMud2luZG93LnRpdGxlID0gdmFsdWU7XG4gIH07XG5cbiAgZ2V0V2luZG93VGl0bGUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMud2luZG93LnRpdGxlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wV2luZG93Q29tcG9uZW50LmdvVG9QcmV2aW91c1ZpZXdcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcC53aW5kb3dcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFB1YmxpYyBtZXRob2QgZm9yIG5hdmlnYXRpbmcgdG8gdGhlIHByZXZpb3VzIHZpZXcuXG4gICAqXG4gICAqL1xuICBnb1RvUHJldmlvdXNWaWV3ID0gKCkgPT4ge1xuICAgIHRoaXMucHJldmlvdXNWaWV3KCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BXaW5kb3dDb21wb25lbnQudmlld0lzRWRpdGluZ1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wLndpbmRvd1xuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQ2hlY2tzIHdoZXRoZXIgdmlldyBpcyBlZGl0aW5nLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0uXG4gICAqL1xuICB2aWV3SXNFZGl0aW5nID0gKCkgPT4ge1xuICAgIHZhciBpc0VkaXRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLndpbmRvdy52aWV3cy5mb3JFYWNoKCh2aWV3OiBhbnkpID0+IHtcbiAgICAgIGlmICh2aWV3LmlzRWRpdGluZyA9PT0gdHJ1ZSkge1xuICAgICAgICBpc0VkaXRpbmcgPSB0cnVlO1xuICAgICAgfVxuICAgIH0sIG51bGwpO1xuICAgIHJldHVybiBpc0VkaXRpbmc7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BXaW5kb3dDb21wb25lbnQuY2FuTmF2aWdhdGVcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcC53aW5kb3dcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIENoZWNrcyB3aGV0aGVyIG5hdmlnYXRpb24gY2FuIG9jY3VyLi5cbiAgICpcbiAgICogQHJldHVybnMge2Jvb2xlYW59LlxuICAgKi9cbiAgY2FuTmF2aWdhdGUgPSAoKSA9PiB7XG4gICAgdmFyIGNhbk5hdmlnYXRlID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5jYW5OYXZpZ2F0ZUZuICE9PSBudWxsKSB7XG4gICAgICBpZiAodGhpcy52aWV3SXNFZGl0aW5nKCkpIHtcbiAgICAgICAgY2FuTmF2aWdhdGUgPSB0aGlzIS5jYW5OYXZpZ2F0ZUZuKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjYW5OYXZpZ2F0ZTtcbiAgfTtcblxuICAvKipcbiAgICogQHRydS5kb2MgZnVuY3Rpb25cbiAgICogQG5hbWUgdHJ1RGVza3RvcFdpbmRvd0NvbXBvbmVudC5yZW1vdmVGb3J3YXJkVmlld3NcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcC53aW5kb3dcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFJlbW92ZXMgYWxsIHZpZXcocykgZm9yd2FyZCBvZiB0aGUgYWN0aXZlIHZpZXcuXG4gICAqXG4gICAqL1xuICByZW1vdmVGb3J3YXJkVmlld3MgPSAoKSA9PiB7XG4gICAgdmFyIGFjdGl2ZVZpZXcgPSB0aGlzLmRlc2t0b3BDdHJsLmdldEFjdGl2ZVZpZXcodGhpcy53aW5kb3cpO1xuICAgIHZhciBhY3RpdmVWaWV3SW5kZXggPSB0aGlzLndpbmRvdy52aWV3cy5pbmRleE9mKGFjdGl2ZVZpZXcpO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLndpbmRvdy52aWV3cy5sZW5ndGg7IGkgPiBhY3RpdmVWaWV3SW5kZXg7IGktLSkge1xuICAgICAgdGhpcy53aW5kb3cudmlld3Muc3BsaWNlKGksIDEpO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZU5hdmlnYXRpb25TdGF0ZSgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBmdW5jdGlvblxuICAgKiBAbmFtZSB0cnVEZXNrdG9wV2luZG93Q29tcG9uZW50LmFkZFZpZXdcbiAgICogQG1vZHVsZSB0cnUuZGVza3RvcC53aW5kb3dcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFJlbW92ZXMgYWxsIGluYWN0aXZlIHZpZXcocykgZm9sbG93aW5nIHRoZSBhY3RpdmUgdmlldyBhbmQgaW5zZXJ0cyBhIG5ldyB2aWV3LlxuICAgKlxuICAgKi9cbiAgYWRkVmlldyA9ICh2aWV3Q29uZmlnOiBhbnkpID0+IHtcbiAgICB0aGlzLnJlbW92ZUZvcndhcmRWaWV3cygpO1xuICAgIHZhciBhY3RpdmVWaWV3ID0gdGhpcy5kZXNrdG9wQ3RybC5nZXRBY3RpdmVWaWV3KHRoaXMud2luZG93KTtcbiAgICBhY3RpdmVWaWV3LmFjdGl2ZSA9IGZhbHNlO1xuICAgIHZpZXdDb25maWcud2luZG93ID0gdGhpcztcbiAgICB0aGlzLndpbmRvdy52aWV3cy5wdXNoKHZpZXdDb25maWcpO1xuICAgIHRoaXMudXBkYXRlTmF2aWdhdGlvblN0YXRlKCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BXaW5kb3dDb21wb25lbnQuZ2V0R2xvYmFsc1xuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wLndpbmRvd1xuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogcmV0dXJucyB0aGUgZ2xvYmFsIHZhbHVlcy5cbiAgICpcbiAgICovXG4gIGdldEdsb2JhbHMgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMud2luZG93Lmdsb2JhbHM7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BXaW5kb3dDb21wb25lbnQuZmlyc3RWaWV3XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3Aud2luZG93XG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKi9cbiAgZmlyc3RWaWV3ID0gKCkgPT4ge1xuICAgIGlmICghdGhpcy5jYW5OYXZpZ2F0ZSgpIHx8IHRoaXMuZGlzYWJsZVByZXZpb3VzKSByZXR1cm47XG4gICAgaWYgKHRoaXMuY2FuY2VsRWRpdGluZ09uTmF2aWdhdGlvbikgdGhpcy5kZXNrdG9wQ3RybC5nZXRBY3RpdmVWaWV3KHRoaXMud2luZG93KS5pc0VkaXRpbmcgPSBmYWxzZTtcbiAgICBsZXQgYWN0aXZlVmlldyA9IHRoaXMuZGVza3RvcEN0cmwuZ2V0QWN0aXZlVmlldyh0aGlzLndpbmRvdyk7XG4gICAgYWN0aXZlVmlldy5hY3RpdmUgPSBmYWxzZTtcbiAgICB0aGlzLndpbmRvdy52aWV3c1swXS5hY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlTmF2aWdhdGlvblN0YXRlKCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEB0cnUuZG9jIGZ1bmN0aW9uXG4gICAqIEBuYW1lIHRydURlc2t0b3BXaW5kb3dDb21wb25lbnQuZmlyc3RWaWV3XG4gICAqIEBtb2R1bGUgdHJ1LmRlc2t0b3Aud2luZG93XG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKi9cbiAgbGFzdFZpZXcgPSAoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmNhbk5hdmlnYXRlKCkgfHwgdGhpcy5kaXNhYmxlTmV4dCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLmNhbmNlbEVkaXRpbmdPbk5hdmlnYXRpb24pIHRoaXMuZGVza3RvcEN0cmwuZ2V0QWN0aXZlVmlldyh0aGlzLndpbmRvdykuaXNFZGl0aW5nID0gZmFsc2U7XG4gICAgbGV0IGFjdGl2ZVZpZXcgPSB0aGlzLmRlc2t0b3BDdHJsLmdldEFjdGl2ZVZpZXcodGhpcy53aW5kb3cpO1xuICAgIGFjdGl2ZVZpZXcuYWN0aXZlID0gZmFsc2U7XG4gICAgdGhpcy53aW5kb3cudmlld3NbdGhpcy53aW5kb3cudmlld3MubGVuZ3RoIC0gMV0uYWN0aXZlID0gdHJ1ZTtcbiAgICB0aGlzLnVwZGF0ZU5hdmlnYXRpb25TdGF0ZSgpO1xuICB9OztcblxuICByZXNpemVFdmVudEhhbmRsZXIgPSAoKSA9PiB7XG4gICAgdGhpcy5pc1dpbmRvd0luVmlld3BvcnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyBldmVudFxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wLndpbmRvd1xuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICovXG4gIG9uV2luZG93S2V5ZG93biA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgIGlmICghdGhpcy53aW5kb3cuYWN0aXZlKSByZXR1cm47XG4gICAgdmFyIGtleVNlcXVlbmNlID0gdGhpcy5kZXNrdG9wQ3RybC5nZXRLZXlTZXF1ZW5jZShldmVudCk7XG4gICAgaWYgKGtleVNlcXVlbmNlID09PSAnY3RybCtzJyB8fCBrZXlTZXF1ZW5jZSA9PT0gJ21ldGErcycpIHsgLy9TYXZlXG4gICAgICB0aGlzLnNhdmUoKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChrZXlTZXF1ZW5jZSA9PT0gJ2N0cmwrc2hpZnQrcicgfHwga2V5U2VxdWVuY2UgPT09ICdtZXRhK3NoaWZ0K3InKSB7IC8vUmVzdG9yZVxuICAgICAgdGhpcy5yZXZlcnQoKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChrZXlTZXF1ZW5jZSA9PT0gJ2FsdCtsZWZ0JykgeyAvL1ByZXZpb3VzIFZpZXdcbiAgICAgIHRoaXMucHJldmlvdXNWaWV3KCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBpZiAoa2V5U2VxdWVuY2UgPT09ICdhbHQrcmlnaHQnKSB7IC8vTmV4dCBWaWV3XG4gICAgICB0aGlzLm5leHRWaWV3KCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBpZiAoa2V5U2VxdWVuY2UgPT09ICdhbHQrdXAnKSB7IC8vRmlyc3QgVmlld1xuICAgICAgdGhpcy5maXJzdFZpZXcoKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICAgIGlmIChrZXlTZXF1ZW5jZSA9PT0gJ2FsdCtkb3duJykgeyAvL0xhc3QgVmlld1xuICAgICAgdGhpcy5sYXN0VmlldygpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgdmFyIHRhcmdldElzQ29udHJvbCA9IHRoaXMudGFyZ2V0SXNDb250cm9sKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCk7XG4gICAgaWYgKCF0YXJnZXRJc0NvbnRyb2wgJiYgZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkpXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAdHJ1LmRvYyB3YXRjaFxuICAgKiBAbW9kdWxlIHRydS5kZXNrdG9wLndpbmRvd1xuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogTW9uaXRvcnMgdGhlIHdpbmRvdydzIG1pbmltaXplZCBzdGF0ZVxuICAgKlxuICAgKi9cbiAgLy8kc2NvcGUuJHdhdGNoKCd3aW5kb3cubWluaW1pemVkJyxcbiAgLy8gICAgICAgICAgICAgIGZ1bmN0aW9uKHZhbHVlKSB7XG4gIC8vICBpZiAodmFsdWUgJiYgISRzY29wZS53aW5kb3cubWF4aW1pemVkKSB7XG4gIC8vICAgICRzY29wZS5kZXNrdG9wQ3RybC5zYXZlUG9zaXRpb24oJHNjb3BlLndpbmRvdyk7XG4gIC8vICB9XG4gIC8vfVxuICAvLyAgICAgICAgICApO1xuXG4gIGRpc2FibGVQcmV2aW91cyA9IHRydWU7XG4gIGRpc2FibGVOZXh0ID0gdHJ1ZTtcblxuICBhY3RpdmF0ZSA9ICgpID0+IHtcbiAgICBpZiAodGhpcy53aW5kb3cub3V0T2ZCb3VuZHMpIHJldHVybjtcbiAgICB0aGlzLmRlc2t0b3BDdHJsLmNsZWFyQWN0aXZlKCk7XG4gICAgdGhpcy53aW5kb3cuYWN0aXZlID0gdHJ1ZTtcbiAgICB0aGlzLndpbmRvdy56SW5kZXggPSB0aGlzLmRlc2t0b3BDdHJsLmdldE5leHRNYXhaSW5kZXgoKTtcbiAgfTtcblxuICBtaW5pbWl6ZSA9ICgpID0+IHtcbiAgICB0aGlzLmRlc2t0b3BDdHJsLm1pbmltaXplKHRoaXMud2luZG93KTtcbiAgfTtcblxuICBtYXhpbWl6ZSA9ICgpID0+IHtcbiAgICBpZiAodGhpcy53aW5kb3cubWF4aW1pemVkKSB7XG4gICAgICB0aGlzLmRlc2t0b3BDdHJsLnJlc3RvcmVTYXZlZFBvc2l0aW9uKHRoaXMud2luZG93KTtcbiAgICAgIHRoaXMud2luZG93Lm1heGltaXplZCA9IHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZXNrdG9wQ3RybC5zYXZlUG9zaXRpb24odGhpcy53aW5kb3cpO1xuICAgICAgdGhpcy5kZXNrdG9wQ3RybC5tYXhpbWl6ZSh0aGlzLndpbmRvdyk7XG4gICAgfVxuICB9O1xuXG4gIGNsb3NlID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLmhhc0NoYW5nZXMoKSlcbiAgICAgIHRoaXMudWlOb3RpZmljYXRpb24uY29uZmlybSgnQ29uZmlybSBBY3Rpb24nLCB0aGlzLnRleHRNYW5hZ2VyLm1zZ0RpcnR5UHJldmVudHNDbG9zZSwgZmFsc2UsIHRydWUsICcnLCAnT2snKS50aGVuKChjb25maXJtOiBib29sZWFuKSA9PiB7fSk7XG4gICAgZWxzZVxuICAgICAgdGhpcy5kZXNrdG9wQ3RybC5jbG9zZVdpbmRvdyh0aGlzLndpbmRvdyk7XG4gIH07XG5cbiAgd2luZG93VGl0bGVNb3VzZURvd24gPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAodGhpcy53aW5kb3cubWF4aW1pemVkKSByZXR1cm47XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnRpdGxlQmFyID0gZXZlbnQuc3JjRWxlbWVudCBhcyBIVE1MRWxlbWVudCB8fCBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgdGhpcy54ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0ub2Zmc2V0TGVmdDtcbiAgICB0aGlzLnkgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5vZmZzZXRUb3A7XG4gICAgdGhpcy5zdGFydFggPSBldmVudC5zY3JlZW5YIC0gdGhpcy54O1xuICAgIHRoaXMuc3RhcnRZID0gZXZlbnQuc2NyZWVuWSAtIHRoaXMueTtcblxuICAgIHRoaXMuZGVza3RvcEN0cmwuc2F2ZVBvc2l0aW9uKHRoaXMud2luZG93KTtcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMubW91c2VNb3ZlKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5tb3VzZVVwKTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUV2ZW50SGFuZGxlcik7XG4gIH07XG5cbiAgcHJldmlvdXNWaWV3ID0gKCkgPT4ge1xuICAgIGlmICghdGhpcy5jYW5OYXZpZ2F0ZSgpIHx8IHRoaXMuZGlzYWJsZVByZXZpb3VzKSByZXR1cm47XG4gICAgdmFyIGFjdGl2ZVZpZXcgPSB0aGlzLmRlc2t0b3BDdHJsLmdldEFjdGl2ZVZpZXcodGhpcy53aW5kb3cpO1xuICAgIHZhciBhY3RpdmVWaWV3SW5kZXggPSB0aGlzLndpbmRvdy52aWV3cy5pbmRleE9mKGFjdGl2ZVZpZXcpO1xuICAgIGlmICh0aGlzLmNhbmNlbEVkaXRpbmdPbk5hdmlnYXRpb24pIGFjdGl2ZVZpZXcuaXNFZGl0aW5nID0gZmFsc2U7XG4gICAgYWN0aXZlVmlldy5hY3RpdmUgPSBmYWxzZTtcbiAgICB0aGlzLndpbmRvdy52aWV3c1thY3RpdmVWaWV3SW5kZXggLSAxXS5hY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlTmF2aWdhdGlvblN0YXRlKCk7XG4gIH07XG5cbiAgbmV4dFZpZXcgPSAoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmNhbk5hdmlnYXRlKCkgfHwgdGhpcy5kaXNhYmxlTmV4dCkgcmV0dXJuO1xuICAgIHZhciBhY3RpdmVWaWV3ID0gdGhpcy5kZXNrdG9wQ3RybC5nZXRBY3RpdmVWaWV3KHRoaXMud2luZG93KTtcbiAgICB2YXIgYWN0aXZlVmlld0luZGV4ID0gdGhpcy53aW5kb3cudmlld3MuaW5kZXhPZihhY3RpdmVWaWV3KTtcbiAgICBpZiAodGhpcy5jYW5jZWxFZGl0aW5nT25OYXZpZ2F0aW9uKSBhY3RpdmVWaWV3LmlzRWRpdGluZyA9IGZhbHNlO1xuICAgIGFjdGl2ZVZpZXcuYWN0aXZlID0gZmFsc2U7XG4gICAgdGhpcy53aW5kb3cudmlld3NbYWN0aXZlVmlld0luZGV4ICsgMV0uYWN0aXZlID0gdHJ1ZTtcbiAgICB0aGlzLnVwZGF0ZU5hdmlnYXRpb25TdGF0ZSgpO1xuICB9O1xuXG4gIHNhdmUgPSAoKSA9PiB7XG4gICAgdGhpcy5kYXRhQ29udGV4dC5zYXZlKCk7XG4gIH07XG5cbiAgcmV2ZXJ0ID0gKCkgPT4ge1xuICAgIHRoaXMuZGF0YUNvbnRleHQucmV2ZXJ0KCk7XG4gIH07XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5DbG9zZUZuID0gdGhpcy5kZXNrdG9wQ3RybC5nZXRPcHRpb25zKCkuY2FuQ2xvc2VGbjtcbiAgICB0aGlzLmNhbk5hdmlnYXRlRm4gPSB0aGlzLmRlc2t0b3BDdHJsLmdldE9wdGlvbnMoKS5jYW5OYXZpZ2F0ZUZuO1xuICAgIHRoaXMuY2FuY2VsRWRpdGluZ09uTmF2aWdhdGlvbiA9IHRoaXMuZGVza3RvcEN0cmwuZ2V0T3B0aW9ucygpLmNhbmNlbEVkaXRpbmdPbk5hdmlnYXRpb247XG4gICAgdGhpcy51cGRhdGVOYXZpZ2F0aW9uU3RhdGUoKTtcblxuICAgIHRoaXMuc3Vicy5wdXNoKHRoaXMudHJ1V2luZG93RXZlbnRIYW5kbGVyLm9uQWRkVmlldygpLnN1YnNjcmliZSgod2luZGlvd0FkZFZpZXdFdmVudDogVHJ1RGVza3RvcFZpZXdDb25maWcpID0+IHtcclxuICAgICAgdGhpcy5hZGRWaWV3KHdpbmRpb3dBZGRWaWV3RXZlbnQpO1xyXG4gICAgfSkpO1xuXG4gICAgdGhpcy5zdWJzLnB1c2godGhpcy50cnVXaW5kb3dFdmVudEhhbmRsZXIub25TZXRXaW5kb3dUaXRsZSgpLnN1YnNjcmliZSgod2luZG93VGl0bGU6IHN0cmluZykgPT4ge1xyXG4gICAgICB0aGlzLnNldFdpbmRvd1RpdGxlKHdpbmRvd1RpdGxlKTtcclxuICAgIH0pKTtcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5vbldpbmRvd0tleWRvd24pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMubW91c2VNb3ZlKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5tb3VzZVVwKTtcblxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5vbldpbmRvd0tleWRvd24pO1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLnJlc2l6ZUV2ZW50SGFuZGxlcik7XG5cbiAgICB0aGlzLnN1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJkZXNrdG9wLXdpbmRvdy1jb250YWluZXJcIlxyXG4gICAgIFtuZ0NsYXNzXT1cInsnZGVza3RvcC13aW5kb3ctYWN0aXZlJzogd2luZG93LmFjdGl2ZSwgJ2Rlc2t0b3Atd2luZG93LW1heGltaXplZCc6IHdpbmRvdy5tYXhpbWl6ZWR9XCJcclxuICAgICBbbmdTdHlsZV09XCJ7J3otaW5kZXgnOiB3aW5kb3cuekluZGV4LCAndG9wJzogd2luZG93LnRvcCwgJ2xlZnQnOiB3aW5kb3cubGVmdCwgJ3JpZ2h0Jzogd2luZG93LnJpZ2h0LCAnYm90dG9tJzogd2luZG93LmJvdHRvbSwgJ2hlaWdodCc6IHdpbmRvdy5oZWlnaHQsICd3aWR0aCc6IHdpbmRvdy53aWR0aCwgJ21pbi1oZWlnaHQnOiB3aW5kb3cubWluSGVpZ2h0LCAnbWluV2lkdGgnOiB3aW5kb3cubWluV2lkdGh9XCJcclxuICAgICBbc3R5bGUub2Zmc2V0TGVmdC5weF09XCJ4XCJcclxuICAgICBbc3R5bGUub2Zmc2V0VG9wLnB4XT1cInlcIlxyXG4gICAgIChtb3VzZWRvd24pPVwiYWN0aXZhdGUoKVwiXHJcbiAgICAgW2hpZGRlbl09XCJ3aW5kb3cubWluaW1pemVkXCI+XHJcbiAgPGRpdiBjbGFzcz1cImRlc2t0b3Atd2luZG93LWhlYWRlclwiIFtuZ0NsYXNzXT1cInsnZGVza3RvcC13aW5kb3ctbWF4aW1pemVkJzogd2luZG93Lm1heGltaXplZCwgJ2Rlc2t0b3Atd2luZG93LW9wYWNpdHknOiAhd2luZG93LmFjdGl2ZX1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0b29sYmFyLXdpbmRvdy1uYXZpZ2F0aW9uXCI+XHJcbiAgICAgIDx0cnUtdG9vbGJhcj5cclxuICAgICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1wcmV2aW91cy1pY29uJ1wiIFt0b29sdGlwXT1cIidHbyBCYWNrIE9uZSBWaWV3IC0gW0FsdCArIExlZnRdJ1wiIChjbGljayk9XCJwcmV2aW91c1ZpZXcoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLW5leHQtaWNvbidcIiBbdG9vbHRpcF09XCInR28gRm9yd2FyZCBPbmUgVmlldyAtIFtBbHQgKyBSaWdodF0nXCIgKGNsaWNrKT1cIm5leHRWaWV3KClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1zYXZlLWljb24nXCIgY2xhc3M9XCJkZXNrdG9wLXdpbmRvdy1zYXZlLWljb25cIiBbbmdDbGFzc109XCJ7J2Rlc2t0b3Atd2luZG93LXNhdmUtaWNvbi1oYXMtY2hhbmdlcyc6IGhhc0NoYW5nZXMoKX1cIiBbdG9vbHRpcF09XCInU2F2ZSAtIFtDdHJsICsgU10nXCIgKGNsaWNrKT1cInNhdmUoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLXJldmVydC1pY29uJ1wiIGNsYXNzPVwiZGVza3RvcC13aW5kb3ctcmV2ZXJ0LWljb25cIiBbbmdDbGFzc109XCJ7J2Rlc2t0b3Atd2luZG93LXJldmVydC1pY29uLWhhcy1jaGFuZ2VzJzogaGFzQ2hhbmdlcygpfVwiIFt0b29sdGlwXT1cIidSZXZlcnQgLSBbQ3RybCArIFNoaWZ0ICsgUl0nXCIgKGNsaWNrKT1cInJldmVydCgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgICAgPHRydS10b29sYmFyLXNlcGFyYXRvcj48L3RydS10b29sYmFyLXNlcGFyYXRvcj5cclxuICAgICAgPC90cnUtdG9vbGJhcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImRlc2t0b3Atd2luZG93LXRpdGxlXCIgKGRibGNsaWNrKT1cIm1heGltaXplKClcIiAobW91c2Vkb3duKT1cIndpbmRvd1RpdGxlTW91c2VEb3duKCRldmVudClcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRlc2t0b3AtY2xpY2stdGhyb3VnaFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZXNrdG9wLXRleHRcIj57e3dpbmRvdy50aXRsZX19PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGVza3RvcC13aW5kb3ctYWN0aW9uXCI+XHJcbiAgICAgIDx0cnUtdG9vbGJhcj5cclxuICAgICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1taW5pbWl6ZS1pY29uJ1wiIFt0b29sdGlwXT1cIidNaW5pbWl6ZSAtIFtBbHQgKyBOXSdcIiAoY2xpY2spPVwibWluaW1pemUoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gKm5nSWY9XCIhd2luZG93Lm1heGltaXplZFwiIFtpY29uXT1cIid0cnUtdG9vbGJhci1tYXhpbWl6ZS1pY29uJ1wiIFt0b29sdGlwXT1cIidNYXhpbWl6ZSBXaW5kb3cgLSBbQWx0ICsgTV0nXCIgKGNsaWNrKT1cIm1heGltaXplKClcIiBjbGFzcz1cIm1heGltaXplXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgICAgPHRydS10b29sYmFyLWJ1dHRvbiAqbmdJZj1cIndpbmRvdy5tYXhpbWl6ZWRcIiBbaWNvbl09XCIndHJ1LXRvb2xiYXItcmVzdG9yZS1pY29uJ1wiIFt0b29sdGlwXT1cIidSZXN0b3JlIFdpbmRvdyAtIFtBbHQgKyBNXSdcIiAoY2xpY2spPVwibWF4aW1pemUoKVwiIGNsYXNzPVwibWF4aW1pemVcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1jbG9zZS1pY29uJ1wiIFt0b29sdGlwXT1cIidDbG9zZSBXaW5kb3cgLSBbQWx0ICsgU0hJRlQgKyBYXSdcIiAoY2xpY2spPVwiY2xvc2UoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgICA8L3RydS10b29sYmFyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGZpZWxkc2V0IG5nLWRpc2FibGVkPVwiIXdpbmRvdy5hY3RpdmVcIiBjbGFzcz1cImRlc2t0b3Atd2luZG93LWZpZWxkc2V0XCIgW25nQ2xhc3NdPVwieydkZXNrdG9wLXdpbmRvdy1vcGFjaXR5JzogIXdpbmRvdy5hY3RpdmV9XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGVza3RvcC13aW5kb3ctY29udGVudFwiPlxyXG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB2aWV3IG9mIHdpbmRvdy52aWV3c1wiPlxyXG4gICAgICAgIDx0cnUtZGVza3RvcC12aWV3IFt2aWV3XT1cInZpZXdcIiBbYWN0aXZlXT1cInZpZXcuYWN0aXZlXCIgW2hpZGRlbl09XCIhdmlldy5hY3RpdmVcIj48bmctdGVtcGxhdGU+PC9uZy10ZW1wbGF0ZT48L3RydS1kZXNrdG9wLXZpZXc+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9maWVsZHNldD5cclxuICA8c3BhbiBjbGFzcz1cImRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS1oYW5kbGUgZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLW53XCIgdHJ1LWRlc2t0b3AtcmVzaXphYmxlIFt3aW5kb3ddPVwid2luZG93XCIgKm5nSWY9XCIhd2luZG93Lm1heGltaXplZFwiIFtkaXJlY3Rpb25dPVwiJ253J1wiPjwvc3Bhbj5cclxuICA8c3BhbiBjbGFzcz1cImRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS1oYW5kbGUgZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLW5lXCIgdHJ1LWRlc2t0b3AtcmVzaXphYmxlIFt3aW5kb3ddPVwid2luZG93XCIgKm5nSWY9XCIhd2luZG93Lm1heGltaXplZFwiIFtkaXJlY3Rpb25dPVwiJ25lJ1wiPjwvc3Bhbj5cclxuICA8c3BhbiBjbGFzcz1cImRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS1oYW5kbGUgZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLXN3XCIgdHJ1LWRlc2t0b3AtcmVzaXphYmxlIFt3aW5kb3ddPVwid2luZG93XCIgKm5nSWY9XCIhd2luZG93Lm1heGltaXplZFwiIFtkaXJlY3Rpb25dPVwiJ3N3J1wiPjwvc3Bhbj5cclxuICA8c3BhbiBjbGFzcz1cImRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS1oYW5kbGUgZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLXNlXCIgdHJ1LWRlc2t0b3AtcmVzaXphYmxlIFt3aW5kb3ddPVwid2luZG93XCIgKm5nSWY9XCIhd2luZG93Lm1heGltaXplZFwiIFtkaXJlY3Rpb25dPVwiJ3NlJ1wiPjwvc3Bhbj5cclxuICA8c3BhbiBjbGFzcz1cImRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS1oYW5kbGUgZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLW5cIiB0cnUtZGVza3RvcC1yZXNpemFibGUgW3dpbmRvd109XCJ3aW5kb3dcIiAqbmdJZj1cIiF3aW5kb3cubWF4aW1pemVkXCIgW2RpcmVjdGlvbl09XCInbidcIj48L3NwYW4+XHJcbiAgPHNwYW4gY2xhc3M9XCJkZXNrdG9wLXdpbmRvdy1yZXNpemFibGUtaGFuZGxlIGRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS1zXCIgdHJ1LWRlc2t0b3AtcmVzaXphYmxlIFt3aW5kb3ddPVwid2luZG93XCIgKm5nSWY9XCIhd2luZG93Lm1heGltaXplZFwiIFtkaXJlY3Rpb25dPVwiJ3MnXCI+PC9zcGFuPlxyXG4gIDxzcGFuIGNsYXNzPVwiZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLWhhbmRsZSBkZXNrdG9wLXdpbmRvdy1yZXNpemFibGUtd1wiIHRydS1kZXNrdG9wLXJlc2l6YWJsZSBbd2luZG93XT1cIndpbmRvd1wiICpuZ0lmPVwiIXdpbmRvdy5tYXhpbWl6ZWRcIiBbZGlyZWN0aW9uXT1cIid3J1wiPjwvc3Bhbj5cclxuICA8c3BhbiBjbGFzcz1cImRlc2t0b3Atd2luZG93LXJlc2l6YWJsZS1oYW5kbGUgZGVza3RvcC13aW5kb3ctcmVzaXphYmxlLWVcIiB0cnUtZGVza3RvcC1yZXNpemFibGUgW3dpbmRvd109XCJ3aW5kb3dcIiAqbmdJZj1cIiF3aW5kb3cubWF4aW1pemVkXCIgW2RpcmVjdGlvbl09XCInZSdcIj48L3NwYW4+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -128,12 +128,9 @@ export class TruActionInvoke {
128
128
  });
129
129
  };
130
130
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruActionInvoke, deps: [{ token: i1.TruDataContext }, { token: i2.TruTextManager }, { token: i3.TruDesktopManager }, { token: i4.TruWindowEventHandler }, { token: i5.TruUiNotification }, { token: i6.TruModelTypeLookup }, { token: i7.TruGlobalDataContext }, { token: i8.TruUser }], target: i0.ɵɵFactoryTarget.Injectable });
131
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruActionInvoke, providedIn: 'root' });
131
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruActionInvoke });
132
132
  }
133
133
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruActionInvoke, decorators: [{
134
- type: Injectable,
135
- args: [{
136
- providedIn: 'root',
137
- }]
134
+ type: Injectable
138
135
  }], ctorParameters: () => [{ type: i1.TruDataContext }, { type: i2.TruTextManager }, { type: i3.TruDesktopManager }, { type: i4.TruWindowEventHandler }, { type: i5.TruUiNotification }, { type: i6.TruModelTypeLookup }, { type: i7.TruGlobalDataContext }, { type: i8.TruUser }] });
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWFjdGlvbi1pbnZva2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL3NlcnZpY2VzL3RydS1hY3Rpb24taW52b2tlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNM0MsT0FBTyxDQUFDLE1BQU0sWUFBWSxDQUFDO0FBSTNCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDOzs7Ozs7Ozs7O0FBTTdGLE1BQU0sT0FBTyxlQUFlO0lBRWhCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFSVixZQUNVLFdBQTJCLEVBQzNCLFdBQTJCLEVBQzNCLGNBQWlDLEVBQ2pDLGtCQUF5QyxFQUN6QyxjQUFpQyxFQUNqQyxlQUFtQyxFQUNuQyxpQkFBdUMsRUFDdkMsSUFBYTtRQVBiLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBdUI7UUFDekMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLG9CQUFlLEdBQWYsZUFBZSxDQUFvQjtRQUNuQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBQ3ZDLFNBQUksR0FBSixJQUFJLENBQVM7SUFBSSxDQUFDO0lBRTVCOzs7O01BSUU7SUFDRixpQkFBaUIsR0FBRyxDQUFDLGVBQW9CLEVBQUUsRUFBRTtRQUMzQyxJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQztZQUMzRCxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFD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QUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzNDLENBQUM7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUE7UUFDRCwrRUFBK0U7SUFDakYsQ0FBQyxDQUFBO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsd0JBQXdCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsVUFBa0IsRUFBRSxXQUFtQixFQUFFLFVBQWtCLEVBQUUsRUFBRTtRQUN0RyxJQUFJLHNCQUFzQixHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQztRQUN4RCxzQkFBc0IsQ0FBQyxhQUFhLEdBQUcsZUFBZSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUMxRCxDQUFDLENBQUE7SUFFRCxtQkFBbUIsR0FBRyxDQUFDLFNBQWlCLEVBQUUsVUFBa0IsRUFBRSxPQUFlLEVBQUUsRUFBRTtRQUMvRSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDLHVCQUF1QixFQUFFO1lBQzNFLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLElBQUksRUFBRSxVQUFVO1lBQ2hCLE9BQU87U0FDUixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUE7dUdBbkhVLGVBQWU7MkdBQWYsZUFBZSxjQUZkLE1BQU07OzJGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFbnRpdHlUeXBlLCBicmVlemUgfSBmcm9tICdicmVlemUtY2xpZW50JztcclxuaW1wb3J0IHsgVHJ1R2xvYmFsRGF0YUNvbnRleHQgfSBmcm9tICcuL3RydS1nbG9iYWwtZGF0YS1jb250ZXh0JztcclxuaW1wb3J0IHsgVHJ1VXNlciB9IGZyb20gJy4vdHJ1LXVzZXInO1xyXG5pbXBvcnQgeyBUcnVEYXRhQ29udGV4dCB9IGZyb20gJy4vdHJ1LWRhdGEtY29udGV4dCc7XHJcbmltcG9ydCB7IFRydU1vZGVsVHlwZUxvb2t1cCB9IGZyb20gJy4vdHJ1LW1vZGVsLXR5cGUtbG9va3VwJztcclxuaW1wb3J0IF8gZnJvbSAndW5kZXJzY29yZSc7XHJcbmltcG9ydCB7IFRydVRleHRNYW5hZ2VyIH0gZnJvbSAnLi90cnUtdGV4dC1tYW5hZ2VyJztcclxuaW1wb3J0IHsgVHJ1RGVza3RvcE1hbmFnZXIgfSBmcm9tICcuLi9jb21wb25lbnRzL2Rlc2t0b3Avc2VydmljZXMvdHJ1LWRlc2t0b3AtbWFuYWdlcic7XHJcbmltcG9ydCB7IFRydVVpTm90aWZpY2F0aW9uIH0gZnJvbSAnLi90cnUtdWktbm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgVHJ1RGVza3RvcFZpZXdDb25maWcgfSBmcm9tICcuLi9jb21wb25lbnRzL2Rlc2t0b3AvY2xhc3Nlcy90cnUtZGVza3RvcC12aWV3LWNvbmZpZyc7XHJcbmltcG9ydCB7IFRydVdpbmRvd0V2ZW50SGFuZGxlciB9IGZyb20gJy4uL2NvbXBvbmVudHMvZGVza3RvcC9zZXJ2aWNlcy90cnUtd2luZG93LWV2ZW50LWhhbmRsZXInO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRydUFjdGlvbkludm9rZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRhdGFDb250ZXh0OiBUcnVEYXRhQ29udGV4dCxcclxuICAgIHByaXZhdGUgdGV4dE1hbmFnZXI6IFRydVRleHRNYW5hZ2VyLFxyXG4gICAgcHJpdmF0ZSBkZXNrdG9wTWFuYWdlcjogVHJ1RGVza3RvcE1hbmFnZXIsXHJcbiAgICBwcml2YXRlIHdpbmRvd0V2ZW50SGFuZGxlcjogVHJ1V2luZG93RXZlbnRIYW5kbGVyLFxyXG4gICAgcHJpdmF0ZSB1aU5vdGlmaWNhdGlvbjogVHJ1VWlOb3RpZmljYXRpb24sXHJcbiAgICBwcml2YXRlIG1vZGVsVHlwZUxvb2t1cDogVHJ1TW9kZWxUeXBlTG9va3VwLFxyXG4gICAgcHJpdmF0ZSBnbG9iYWxEYXRhQ29udGV4dDogVHJ1R2xvYmFsRGF0YUNvbnRleHQsXHJcbiAgICBwcml2YXRlIHVzZXI6IFRydVVzZXIpIHsgfVxyXG5cclxuICAvKipcclxuICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgbWVudSBpdGVtIGNvbmZpZyBvYmplY3RzLlxyXG4gICogQHBhcmFtIHtvYmplY3RbXX0gbWVudUl0ZW1Db25maWdzIC0gTWVudSBpdGVtIGNvbmZpZyBjb25maWdzKCEpXHJcbiAgKiBAcmV0dXJucyB7b2JqZWN0W119IC0gQ29uZmlncy5cclxuICAqL1xyXG4gIGNyZWF0ZU1lbnVDb25maWdzID0gKG1lbnVJdGVtQ29uZmlnczogYW55KSA9PiB7XHJcbiAgICB2YXIgZXhlY3V0YWJsZUNvbmZpZ3MgPSBfLmZpbHRlcihtZW51SXRlbUNvbmZpZ3MsIGZ1bmN0aW9uIChjKSB7XHJcbiAgICAgIHZhciBoYXNBY2Nlc3MgPSB0eXBlb2YgYy5pdGVtLmhhc0FjY2VzcyAhPSAnZnVuY3Rpb24nID8gdHJ1ZSA6IGMuaXRlbS5oYXNBY2Nlc3MoKTtcclxuICAgICAgcmV0dXJuIGMuY2FuRXhlY3V0ZSAmJiBoYXNBY2Nlc3M7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBfLnBsdWNrKGV4ZWN1dGFibGVDb25maWdzLCAnaXRlbScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUG9zdCB0byBhIFVSTCB0aGF0IHJlc3VsdHMgaW4gYSBmaWxlIGRvd25sb2FkLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGVudGl0eVJlZnMgLSBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiByZWNvcmQgcmVmcy5cclxuICAgKi9cclxuICBleGVjdXRlSHR0cFBvc3RBY3Rpb25Gb3JEb3dubG9hZCA9ICh1cmw6IGFueSwgZW50aXR5UmVmczogYW55KSA9PiB7XHJcbiAgICB2YXIgZGF0YSA9IHRoaXMudGV4dE1hbmFnZXIuZm9ybWF0QXNVcmxQYXJhbWV0ZXJzKHsgcmVmczogZW50aXR5UmVmcyB9KTtcclxuICAgIHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuZG93bmxvYWRGcm9tVXJsKHVybCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlIGFuIGFjdGlvbiB0aGF0IGRvd25sb2FkcyBhIGZpbGUuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbk5hbWUgXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGVudGl0eVJlZnMgLSBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiByZWNvcmQgcmVmcy5cclxuICAgKi9cclxuICBleGVjdXRlQWN0aW9uRm9yRG93bmxvYWQgPSAoYWN0aW9uTmFtZTogYW55LCBlbnRpdHlSZWZzOiBhbnkpID0+IHtcclxuICAgIHZhciBkYXRhID0gdGhpcy50ZXh0TWFuYWdlci5mb3JtYXRBc1VybFBhcmFtZXRlcnMoeyByZWZzOiBlbnRpdHlSZWZzIH0pO1xyXG4gICAgdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5kb3dubG9hZEZyb21TZXJ2aWNlKCdSZXF1ZXN0QWN0aW9uJyArIGFjdGlvbk5hbWUsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZSBhbiBhY3Rpb24gYW5kIHNob3cgdGhlIHJlc3VsdGluZyBtZXNzYWdlLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhY3Rpb25OYW1lIC0gTmFtZSBvZiBhbiBhY3Rpb24uXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGVudGl0eVJlZnMgLSBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiByZWNvcmQgcmVmcy5cclxuICAgKi9cclxuICBleGVjdXRlQWN0aW9uRm9yTWVzc2FnZSA9IChhY3Rpb25OYW1lOiBhbnksIGVudGl0eVJlZnM6IHN0cmluZykgPT4ge1xyXG4gICAgdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5yZXF1ZXN0QWN0aW9uKGFjdGlvbk5hbWUsIGVudGl0eVJlZnMpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXN1bHRzKSA9PiB7XHJcbiAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5pbmZvKHJlc3VsdHNbMF0uTWVzc2FnZSk7XHJcbiAgICAgIH0sIGVycm9yOiBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5lcnJvcihlcnJvci5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBRdWV1ZSB0aGUgZXhlY3V0aW9uIG9mIGFuIGFjdGlvbi5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uTmFtZSAtIE5hbWUgb2YgYW4gYWN0aW9uLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbnRpdHlSZWZzIC0gQ29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgcmVjb3JkIHJlZnMuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbkxhYmVsIC0gRGlzcGxheSBuYW1lIG9mIHRoZSBhY3Rpb24uXHJcbiAgICovXHJcbiAgcXVldWVBY3Rpb24gPSAoYWN0aW9uTmFtZTogc3RyaW5nLCBlbnRpdHlSZWZzOiBzdHJpbmcsIGFjdGlvbkxhYmVsOiBzdHJpbmcpID0+IHtcclxuICAgIHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkucmVxdWVzdEFjdGlvbihhY3Rpb25OYW1lLCBlbnRpdHlSZWZzKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzdWx0cykgPT4ge1xyXG4gICAgICAgIHRoaXMudWlOb3RpZmljYXRpb24uaW5mbyhhY3Rpb25MYWJlbCArICcgcXVldWVkJyk7XHJcbiAgICAgIH0sIGVycm9yOiBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5lcnJvcihlcnJvci5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVuIGEgbmV3IHdpbmRvdyB3aXRoIGEgcXVlcnkgZnVuY3Rpb24gdG8gYW4gYWN0aW9uIHRoYXQgYWNjZXB0cyBhIGxpc3Qgb2ZcclxuICAgKiByZWNvcmQgcmVmcy5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uTmFtZSAtIE5hbWUgb2YgYW4gYWN0aW9uLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbnRpdHlSZWZzIC0gQ29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgcmVjb3JkIHJlZnMuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbXBvbmVudE5hbWUgLSBOYW1lIG9mIHRoZSBkaXJlY3RpdmUgZm9yIHRoZSB3aW5kb3cgdmlldy5cclxuICAgKiBAcGFyYW0ge29iamVjdH0gZGF0YSAtIFBhc3NlZCB0byB2aWV3LlxyXG4gICAqL1xyXG4gIG9wZW5XaW5kb3dGb3JRdWVyeVJlc3VsdEZyb21BY3Rpb24gPSAoYWN0aW9uTmFtZTogc3RyaW5nLCBlbnRpdHlSZWZzOiBzdHJpbmcsIGNvbXBvbmVudE5hbWU6IHN0cmluZywgZGF0YTogYW55KSA9PiB7XHJcbiAgICBsZXQgaXRlbXNRdWVyeSA9IChkYXRhQ29udGV4dDogVHJ1RGF0YUNvbnRleHQpID0+IHtcclxuICAgICAgdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5yZXF1ZXN0QWN0aW9uKGFjdGlvbk5hbWUsIGVudGl0eVJlZnMpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3VsdHMpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXN1bHRzO1xyXG4gICAgICAgIH0sIGVycm9yOiBlcnJvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLnVpTm90aWZpY2F0aW9uLmVycm9yKGVycm9yLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvL3RoaXMuZGVza3RvcE1hbmFnZXIuYWRkV2luZG93Rm9yUXVlcnlSZXN1bHQoY29tcG9uZW50TmFtZSwgaXRlbXNRdWVyeSwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVuIGEgbmV3IHZpZXcgd2l0aCBhIFVSTCBhbmQgYSBsaXN0IG9mIHJlY29yZCByZWZzLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGVudGl0eVJlZnMgLSBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiByZWNvcmQgcmVmcy5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uTGFiZWwgLSBBY3Rpb24gbGFiZWwuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHdpbmRvd0N0cmwgLSB3aW5kb3cgbWFuYWdlci5cclxuICAgKi9cclxuICBvcGVuVmlld0ZvclJlcG9ydEZyb21VcmwgPSAodXJsOiBzdHJpbmcsIGVudGl0eVJlZnM6IHN0cmluZywgYWN0aW9uTGFiZWw6IHN0cmluZywgd2luZG93Q3RybDogc3RyaW5nKSA9PiB7XHJcbiAgICBsZXQgd2luZG93QWRkVmlld0V2ZW50QXJncyA9IG5ldyBUcnVEZXNrdG9wVmlld0NvbmZpZygpO1xyXG4gICAgd2luZG93QWRkVmlld0V2ZW50QXJncy5jb21wb25lbnROYW1lID0gJ1RydVJlcG9ydFZpZXcnO1xyXG4gICAgdGhpcy53aW5kb3dFdmVudEhhbmRsZXIuYWRkVmlldyh3aW5kb3dBZGRWaWV3RXZlbnRBcmdzKTtcclxuICB9XHJcblxyXG4gIHByb2Nlc3NDdXN0b21SZXBvcnQgPSAocmVwb3J0UmVmOiBzdHJpbmcsIGVudGl0eVJlZnM6IHN0cmluZywgbWltZVJlZjogc3RyaW5nKSA9PiB7XHJcbiAgICB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmRvd25sb2FkRnJvbVNlcnZpY2UoJ1Byb2Nlc3NSZXBvcnRUZW1wbGF0ZScsIHtcclxuICAgICAgcmVwb3J0UmVmOiByZXBvcnRSZWYsXHJcbiAgICAgIHJlZnM6IGVudGl0eVJlZnMsXHJcbiAgICAgIG1pbWVSZWZcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWFjdGlvbi1pbnZva2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL3NlcnZpY2VzL3RydS1hY3Rpb24taW52b2tlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNM0MsT0FBTyxDQUFDLE1BQU0sWUFBWSxDQUFDO0FBSTNCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDOzs7Ozs7Ozs7O0FBSTdGLE1BQU0sT0FBTyxlQUFlO0lBRWhCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFSVixZQUNVLFdBQTJCLEVBQzNCLFdBQTJCLEVBQzNCLGNBQWlDLEVBQ2pDLGtCQUF5QyxFQUN6QyxjQUFpQyxFQUNqQyxlQUFtQyxFQUNuQyxpQkFBdUMsRUFDdkMsSUFBYTtRQVBiLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBdUI7UUFDekMsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLG9CQUFlLEdBQWYsZUFBZSxDQUFvQjtRQUNuQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXNCO1FBQ3ZDLFNBQUksR0FBSixJQUFJLENBQVM7SUFBSSxDQUFDO0lBRTVCOzs7O01BSUU7SUFDRixpQkFBaUIsR0FBRyxDQUFDLGVBQW9CLEVBQUUsRUFBRTtRQUMzQyxJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLFVBQVUsQ0FBQztZQUMzRCxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFD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QUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzNDLENBQUM7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUE7UUFDRCwrRUFBK0U7SUFDakYsQ0FBQyxDQUFBO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsd0JBQXdCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsVUFBa0IsRUFBRSxXQUFtQixFQUFFLFVBQWtCLEVBQUUsRUFBRTtRQUN0RyxJQUFJLHNCQUFzQixHQUFHLElBQUksb0JBQW9CLEVBQUUsQ0FBQztRQUN4RCxzQkFBc0IsQ0FBQyxhQUFhLEdBQUcsZUFBZSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUMxRCxDQUFDLENBQUE7SUFFRCxtQkFBbUIsR0FBRyxDQUFDLFNBQWlCLEVBQUUsVUFBa0IsRUFBRSxPQUFlLEVBQUUsRUFBRTtRQUMvRSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDLHVCQUF1QixFQUFFO1lBQzNFLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLElBQUksRUFBRSxVQUFVO1lBQ2hCLE9BQU87U0FDUixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUE7dUdBbkhVLGVBQWU7MkdBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRW50aXR5VHlwZSwgYnJlZXplIH0gZnJvbSAnYnJlZXplLWNsaWVudCc7XHJcbmltcG9ydCB7IFRydUdsb2JhbERhdGFDb250ZXh0IH0gZnJvbSAnLi90cnUtZ2xvYmFsLWRhdGEtY29udGV4dCc7XHJcbmltcG9ydCB7IFRydVVzZXIgfSBmcm9tICcuL3RydS11c2VyJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tICcuL3RydS1kYXRhLWNvbnRleHQnO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFR5cGVMb29rdXAgfSBmcm9tICcuL3RydS1tb2RlbC10eXBlLWxvb2t1cCc7XHJcbmltcG9ydCBfIGZyb20gJ3VuZGVyc2NvcmUnO1xyXG5pbXBvcnQgeyBUcnVUZXh0TWFuYWdlciB9IGZyb20gJy4vdHJ1LXRleHQtbWFuYWdlcic7XHJcbmltcG9ydCB7IFRydURlc2t0b3BNYW5hZ2VyIH0gZnJvbSAnLi4vY29tcG9uZW50cy9kZXNrdG9wL3NlcnZpY2VzL3RydS1kZXNrdG9wLW1hbmFnZXInO1xyXG5pbXBvcnQgeyBUcnVVaU5vdGlmaWNhdGlvbiB9IGZyb20gJy4vdHJ1LXVpLW5vdGlmaWNhdGlvbic7XHJcbmltcG9ydCB7IFRydURlc2t0b3BWaWV3Q29uZmlnIH0gZnJvbSAnLi4vY29tcG9uZW50cy9kZXNrdG9wL2NsYXNzZXMvdHJ1LWRlc2t0b3Atdmlldy1jb25maWcnO1xyXG5pbXBvcnQgeyBUcnVXaW5kb3dFdmVudEhhbmRsZXIgfSBmcm9tICcuLi9jb21wb25lbnRzL2Rlc2t0b3Avc2VydmljZXMvdHJ1LXdpbmRvdy1ldmVudC1oYW5kbGVyJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFRydUFjdGlvbkludm9rZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRhdGFDb250ZXh0OiBUcnVEYXRhQ29udGV4dCxcclxuICAgIHByaXZhdGUgdGV4dE1hbmFnZXI6IFRydVRleHRNYW5hZ2VyLFxyXG4gICAgcHJpdmF0ZSBkZXNrdG9wTWFuYWdlcjogVHJ1RGVza3RvcE1hbmFnZXIsXHJcbiAgICBwcml2YXRlIHdpbmRvd0V2ZW50SGFuZGxlcjogVHJ1V2luZG93RXZlbnRIYW5kbGVyLFxyXG4gICAgcHJpdmF0ZSB1aU5vdGlmaWNhdGlvbjogVHJ1VWlOb3RpZmljYXRpb24sXHJcbiAgICBwcml2YXRlIG1vZGVsVHlwZUxvb2t1cDogVHJ1TW9kZWxUeXBlTG9va3VwLFxyXG4gICAgcHJpdmF0ZSBnbG9iYWxEYXRhQ29udGV4dDogVHJ1R2xvYmFsRGF0YUNvbnRleHQsXHJcbiAgICBwcml2YXRlIHVzZXI6IFRydVVzZXIpIHsgfVxyXG5cclxuICAvKipcclxuICAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgbWVudSBpdGVtIGNvbmZpZyBvYmplY3RzLlxyXG4gICogQHBhcmFtIHtvYmplY3RbXX0gbWVudUl0ZW1Db25maWdzIC0gTWVudSBpdGVtIGNvbmZpZyBjb25maWdzKCEpXHJcbiAgKiBAcmV0dXJucyB7b2JqZWN0W119IC0gQ29uZmlncy5cclxuICAqL1xyXG4gIGNyZWF0ZU1lbnVDb25maWdzID0gKG1lbnVJdGVtQ29uZmlnczogYW55KSA9PiB7XHJcbiAgICB2YXIgZXhlY3V0YWJsZUNvbmZpZ3MgPSBfLmZpbHRlcihtZW51SXRlbUNvbmZpZ3MsIGZ1bmN0aW9uIChjKSB7XHJcbiAgICAgIHZhciBoYXNBY2Nlc3MgPSB0eXBlb2YgYy5pdGVtLmhhc0FjY2VzcyAhPSAnZnVuY3Rpb24nID8gdHJ1ZSA6IGMuaXRlbS5oYXNBY2Nlc3MoKTtcclxuICAgICAgcmV0dXJuIGMuY2FuRXhlY3V0ZSAmJiBoYXNBY2Nlc3M7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBfLnBsdWNrKGV4ZWN1dGFibGVDb25maWdzLCAnaXRlbScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUG9zdCB0byBhIFVSTCB0aGF0IHJlc3VsdHMgaW4gYSBmaWxlIGRvd25sb2FkLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGVudGl0eVJlZnMgLSBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiByZWNvcmQgcmVmcy5cclxuICAgKi9cclxuICBleGVjdXRlSHR0cFBvc3RBY3Rpb25Gb3JEb3dubG9hZCA9ICh1cmw6IGFueSwgZW50aXR5UmVmczogYW55KSA9PiB7XHJcbiAgICB2YXIgZGF0YSA9IHRoaXMudGV4dE1hbmFnZXIuZm9ybWF0QXNVcmxQYXJhbWV0ZXJzKHsgcmVmczogZW50aXR5UmVmcyB9KTtcclxuICAgIHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuZG93bmxvYWRGcm9tVXJsKHVybCwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlIGFuIGFjdGlvbiB0aGF0IGRvd25sb2FkcyBhIGZpbGUuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbk5hbWUgXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGVudGl0eVJlZnMgLSBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiByZWNvcmQgcmVmcy5cclxuICAgKi9cclxuICBleGVjdXRlQWN0aW9uRm9yRG93bmxvYWQgPSAoYWN0aW9uTmFtZTogYW55LCBlbnRpdHlSZWZzOiBhbnkpID0+IHtcclxuICAgIHZhciBkYXRhID0gdGhpcy50ZXh0TWFuYWdlci5mb3JtYXRBc1VybFBhcmFtZXRlcnMoeyByZWZzOiBlbnRpdHlSZWZzIH0pO1xyXG4gICAgdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5kb3dubG9hZEZyb21TZXJ2aWNlKCdSZXF1ZXN0QWN0aW9uJyArIGFjdGlvbk5hbWUsIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZSBhbiBhY3Rpb24gYW5kIHNob3cgdGhlIHJlc3VsdGluZyBtZXNzYWdlLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhY3Rpb25OYW1lIC0gTmFtZSBvZiBhbiBhY3Rpb24uXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGVudGl0eVJlZnMgLSBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiByZWNvcmQgcmVmcy5cclxuICAgKi9cclxuICBleGVjdXRlQWN0aW9uRm9yTWVzc2FnZSA9IChhY3Rpb25OYW1lOiBhbnksIGVudGl0eVJlZnM6IHN0cmluZykgPT4ge1xyXG4gICAgdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5yZXF1ZXN0QWN0aW9uKGFjdGlvbk5hbWUsIGVudGl0eVJlZnMpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXN1bHRzKSA9PiB7XHJcbiAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5pbmZvKHJlc3VsdHNbMF0uTWVzc2FnZSk7XHJcbiAgICAgIH0sIGVycm9yOiBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5lcnJvcihlcnJvci5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBRdWV1ZSB0aGUgZXhlY3V0aW9uIG9mIGFuIGFjdGlvbi5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uTmFtZSAtIE5hbWUgb2YgYW4gYWN0aW9uLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbnRpdHlSZWZzIC0gQ29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgcmVjb3JkIHJlZnMuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbkxhYmVsIC0gRGlzcGxheSBuYW1lIG9mIHRoZSBhY3Rpb24uXHJcbiAgICovXHJcbiAgcXVldWVBY3Rpb24gPSAoYWN0aW9uTmFtZTogc3RyaW5nLCBlbnRpdHlSZWZzOiBzdHJpbmcsIGFjdGlvbkxhYmVsOiBzdHJpbmcpID0+IHtcclxuICAgIHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkucmVxdWVzdEFjdGlvbihhY3Rpb25OYW1lLCBlbnRpdHlSZWZzKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzdWx0cykgPT4ge1xyXG4gICAgICAgIHRoaXMudWlOb3RpZmljYXRpb24uaW5mbyhhY3Rpb25MYWJlbCArICcgcXVldWVkJyk7XHJcbiAgICAgIH0sIGVycm9yOiBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy51aU5vdGlmaWNhdGlvbi5lcnJvcihlcnJvci5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVuIGEgbmV3IHdpbmRvdyB3aXRoIGEgcXVlcnkgZnVuY3Rpb24gdG8gYW4gYWN0aW9uIHRoYXQgYWNjZXB0cyBhIGxpc3Qgb2ZcclxuICAgKiByZWNvcmQgcmVmcy5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uTmFtZSAtIE5hbWUgb2YgYW4gYWN0aW9uLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbnRpdHlSZWZzIC0gQ29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgcmVjb3JkIHJlZnMuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbXBvbmVudE5hbWUgLSBOYW1lIG9mIHRoZSBkaXJlY3RpdmUgZm9yIHRoZSB3aW5kb3cgdmlldy5cclxuICAgKiBAcGFyYW0ge29iamVjdH0gZGF0YSAtIFBhc3NlZCB0byB2aWV3LlxyXG4gICAqL1xyXG4gIG9wZW5XaW5kb3dGb3JRdWVyeVJlc3VsdEZyb21BY3Rpb24gPSAoYWN0aW9uTmFtZTogc3RyaW5nLCBlbnRpdHlSZWZzOiBzdHJpbmcsIGNvbXBvbmVudE5hbWU6IHN0cmluZywgZGF0YTogYW55KSA9PiB7XHJcbiAgICBsZXQgaXRlbXNRdWVyeSA9IChkYXRhQ29udGV4dDogVHJ1RGF0YUNvbnRleHQpID0+IHtcclxuICAgICAgdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5yZXF1ZXN0QWN0aW9uKGFjdGlvbk5hbWUsIGVudGl0eVJlZnMpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3VsdHMpID0+IHtcclxuICAgICAgICAgIHJldHVybiByZXN1bHRzO1xyXG4gICAgICAgIH0sIGVycm9yOiBlcnJvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLnVpTm90aWZpY2F0aW9uLmVycm9yKGVycm9yLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvL3RoaXMuZGVza3RvcE1hbmFnZXIuYWRkV2luZG93Rm9yUXVlcnlSZXN1bHQoY29tcG9uZW50TmFtZSwgaXRlbXNRdWVyeSwgZGF0YSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVuIGEgbmV3IHZpZXcgd2l0aCBhIFVSTCBhbmQgYSBsaXN0IG9mIHJlY29yZCByZWZzLlxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwgXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGVudGl0eVJlZnMgLSBDb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiByZWNvcmQgcmVmcy5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uTGFiZWwgLSBBY3Rpb24gbGFiZWwuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHdpbmRvd0N0cmwgLSB3aW5kb3cgbWFuYWdlci5cclxuICAgKi9cclxuICBvcGVuVmlld0ZvclJlcG9ydEZyb21VcmwgPSAodXJsOiBzdHJpbmcsIGVudGl0eVJlZnM6IHN0cmluZywgYWN0aW9uTGFiZWw6IHN0cmluZywgd2luZG93Q3RybDogc3RyaW5nKSA9PiB7XHJcbiAgICBsZXQgd2luZG93QWRkVmlld0V2ZW50QXJncyA9IG5ldyBUcnVEZXNrdG9wVmlld0NvbmZpZygpO1xyXG4gICAgd2luZG93QWRkVmlld0V2ZW50QXJncy5jb21wb25lbnROYW1lID0gJ1RydVJlcG9ydFZpZXcnO1xyXG4gICAgdGhpcy53aW5kb3dFdmVudEhhbmRsZXIuYWRkVmlldyh3aW5kb3dBZGRWaWV3RXZlbnRBcmdzKTtcclxuICB9XHJcblxyXG4gIHByb2Nlc3NDdXN0b21SZXBvcnQgPSAocmVwb3J0UmVmOiBzdHJpbmcsIGVudGl0eVJlZnM6IHN0cmluZywgbWltZVJlZjogc3RyaW5nKSA9PiB7XHJcbiAgICB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmRvd25sb2FkRnJvbVNlcnZpY2UoJ1Byb2Nlc3NSZXBvcnRUZW1wbGF0ZScsIHtcclxuICAgICAgcmVwb3J0UmVmOiByZXBvcnRSZWYsXHJcbiAgICAgIHJlZnM6IGVudGl0eVJlZnMsXHJcbiAgICAgIG1pbWVSZWZcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=