UNPKG

ontimize-web-ngx

Version:
144 lines 25.5 kB
import { __decorate, __metadata } from "tslib"; import { Component, ContentChild, EventEmitter, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core'; import { OUserInfoConfigurationDirective } from '../../components/user-info/user-info-configuration/o-user-info-configuration.directive'; import { BooleanInputConverter } from '../../decorators/input-converter'; import { Codes } from '../../util/codes'; import { Util } from '../../util/util'; import { OAppSidenavBase } from '../../components/app-sidenav/o-app-sidenav-base.class'; import { OAppHeaderBase } from '../../components/app-header/o-app-header-base.class'; import { OAppLayoutBase } from './o-app-layout-base.class'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "@angular/material/icon"; import * as i3 from "../../components/app-sidenav/o-app-sidenav.component"; import * as i4 from "../../components/app-header/o-app-header.component"; export const DEFAULT_INPUTS_O_APP_LAYOUT = [ 'mode', 'sidenavMode: sidenav-mode', 'sidenavOpened: sidenav-opened', '_showHeader: show-header', 'showUserInfo: show-user-info', 'showLanguageSelector: show-language-selector', 'useFlagIcons: use-flag-icons', 'openedSidenavImg: opened-sidenav-image', 'closedSidenavImg: closed-sidenav-image', 'headerColor: header-color', 'headerHeight: header-height', 'showTitle: show-title', 'staticTitle: static-title', 'showStaticTitle: show-static-title' ]; export const DEFAULT_OUTPUTS_O_APP_LAYOUT = [ 'beforeOpenSidenav', 'afterOpenSidenav', 'beforeCloseSidenav', 'afterCloseSidenav' ]; export class OAppLayoutComponent { constructor() { this.sidenavOpened = true; this.showUserInfo = true; this.showLanguageSelector = true; this.useFlagIcons = false; this._showHeader = true; this.showTitle = false; this.showStaticTitle = false; this.headerHeight = Codes.DEFAULT_ROW_HEIGHT; this.beforeOpenSidenav = new EventEmitter(); this.afterOpenSidenav = new EventEmitter(); this.beforeCloseSidenav = new EventEmitter(); this.afterCloseSidenav = new EventEmitter(); } get showHeader() { return this._showHeader; } set showHeader(val) { this._showHeader = val; } get mode() { return this._mode; } set mode(val) { const m = Codes.OAppLayoutModes.find(e => e === val); if (Util.isDefined(m)) { this._mode = m; if (this._mode === 'mobile' && !Util.isDefined(this.showHeader)) { this.showHeader = true; } } else { console.error('Invalid `o-app-layout` mode (' + val + ')'); } } get sidenavMode() { return this._sidenavMode; } set sidenavMode(val) { const m = Codes.OSidenavModes.find(e => e === val); if (Util.isDefined(m)) { this._sidenavMode = m; } else { console.error('Invalid `o-app-layout` sidenav-mode (' + val + ')'); } } sidenavToggle(opened) { opened ? this.beforeOpenSidenav.emit() : this.beforeCloseSidenav.emit(); } afterToggle(opened) { opened ? this.afterOpenSidenav.emit() : this.afterCloseSidenav.emit(); } ngAfterViewInit() { if (this.appHeader && this.appHeader.userInfo) { this.appHeader.userInfo.registerUserInfoConfiguration(this.userInfoConfiguration); } } } OAppLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OAppLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); OAppLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OAppLayoutComponent, selector: "o-app-layout", inputs: { mode: "mode", sidenavMode: ["sidenav-mode", "sidenavMode"], sidenavOpened: ["sidenav-opened", "sidenavOpened"], _showHeader: ["show-header", "_showHeader"], showUserInfo: ["show-user-info", "showUserInfo"], showLanguageSelector: ["show-language-selector", "showLanguageSelector"], useFlagIcons: ["use-flag-icons", "useFlagIcons"], openedSidenavImg: ["opened-sidenav-image", "openedSidenavImg"], closedSidenavImg: ["closed-sidenav-image", "closedSidenavImg"], headerColor: ["header-color", "headerColor"], headerHeight: ["header-height", "headerHeight"], showTitle: ["show-title", "showTitle"], staticTitle: ["static-title", "staticTitle"], showStaticTitle: ["show-static-title", "showStaticTitle"] }, outputs: { beforeOpenSidenav: "beforeOpenSidenav", afterOpenSidenav: "afterOpenSidenav", beforeCloseSidenav: "beforeCloseSidenav", afterCloseSidenav: "afterCloseSidenav" }, providers: [ { provide: OAppLayoutBase, useExisting: forwardRef(() => OAppLayoutComponent) } ], queries: [{ propertyName: "userInfoConfiguration", first: true, predicate: OUserInfoConfigurationDirective, descendants: true }], viewQueries: [{ propertyName: "appSidenav", first: true, predicate: ["appSidenav"], descendants: true }, { propertyName: "appHeader", first: true, predicate: ["appHeader"], descendants: true }], ngImport: i0, template: "<o-app-sidenav #appSidenav [sidenav-mode]=\"sidenavMode\" [opened]=\"sidenavOpened\" [show-user-info]=\"showUserInfo\" [show-toggle-button]=\"!showHeader\"\n [opened-sidenav-image]=\"openedSidenavImg\" [closed-sidenav-image]=\"closedSidenavImg\" [layout-mode]=\"mode\" [class.header-layout]=\"showHeader\"\n (onSidenavToggle)=\"sidenavToggle($event)\" (afterSidenavToggle)=\"afterToggle($event)\">\n\n <ng-content select=\"o-app-layout-sidenav[position=start]\" ngProjectAs=\"o-app-layout-sidenav-projection-start\">\n </ng-content>\n <ng-content select=\"o-app-layout-sidenav[position=end]\" ngProjectAs=\"o-app-layout-sidenav-projection-end\">\n </ng-content>\n <ng-content select=\"o-app-layout-sidenav\" ngProjectAs=\"o-app-layout-sidenav-projection-end\"></ng-content>\n\n <o-app-header #appHeader *ngIf=\"showHeader\" [show-title]=\"showTitle\" [show-static-title]=\"showStaticTitle\" [static-title]=\"staticTitle\"\n [show-user-info]=\"showUserInfo\" [show-language-selector]=\"showLanguageSelector\" [use-flag-icons]=\"useFlagIcons\"\n (onSidenavToggle)=\"appSidenav.toggleSidenav()\" [color]=\"headerColor\" [header-height]=\"headerHeight\">\n <mat-icon class=\"sidenav-toggle\" svgIcon=\"ontimize:menu\" (click)=\"appSidenav.toggleSidenav()\" *ngIf=\"appSidenav.isMobileMode()\"></mat-icon>\n <ng-content select=\"o-app-layout-header[position=start]\" ngProjectAs=\"o-app-layout-header-projection-start\">\n </ng-content>\n <ng-content select=\"o-app-layout-header[position=end]\" ngProjectAs=\"o-app-layout-header-projection-end\">\n </ng-content>\n <ng-content select=\"o-app-layout-header\" ngProjectAs=\"o-app-layout-header-projection-start\"></ng-content>\n </o-app-header>\n\n <div class=\"application-layout-content-wrapper\" [class.header-layout]=\"showHeader\">\n <ng-content></ng-content>\n </div>\n</o-app-sidenav>\n", styles: [".application-layout-content-wrapper{z-index:1;position:absolute;top:0;bottom:0;left:0;right:0;overflow:auto;padding:16px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.OAppSidenavComponent, selector: "o-app-sidenav", inputs: ["opened", "show-user-info", "show-toggle-button", "opened-sidenav-image", "closed-sidenav-image", "layout-mode", "sidenav-mode", "store-state"], outputs: ["onSidenavOpenedChange", "onSidenavOpenedStart", "onSidenavClosedStart", "onSidenavToggle", "afterSidenavToggle"] }, { kind: "component", type: i4.OAppHeaderComponent, selector: "o-app-header", inputs: ["show-user-info", "show-language-selector", "use-flag-icons", "color", "header-height", "show-title", "static-title", "show-static-title"], outputs: ["onSidenavToggle"] }], encapsulation: i0.ViewEncapsulation.None }); __decorate([ BooleanInputConverter(), __metadata("design:type", Boolean) ], OAppLayoutComponent.prototype, "sidenavOpened", void 0); __decorate([ BooleanInputConverter(), __metadata("design:type", Boolean) ], OAppLayoutComponent.prototype, "showUserInfo", void 0); __decorate([ BooleanInputConverter(), __metadata("design:type", Boolean) ], OAppLayoutComponent.prototype, "showLanguageSelector", void 0); __decorate([ BooleanInputConverter(), __metadata("design:type", Boolean) ], OAppLayoutComponent.prototype, "useFlagIcons", void 0); __decorate([ BooleanInputConverter(), __metadata("design:type", Boolean) ], OAppLayoutComponent.prototype, "_showHeader", void 0); __decorate([ BooleanInputConverter(), __metadata("design:type", Boolean) ], OAppLayoutComponent.prototype, "showTitle", void 0); __decorate([ BooleanInputConverter(), __metadata("design:type", Boolean) ], OAppLayoutComponent.prototype, "showStaticTitle", void 0); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OAppLayoutComponent, decorators: [{ type: Component, args: [{ selector: 'o-app-layout', inputs: DEFAULT_INPUTS_O_APP_LAYOUT, outputs: DEFAULT_OUTPUTS_O_APP_LAYOUT, encapsulation: ViewEncapsulation.None, providers: [ { provide: OAppLayoutBase, useExisting: forwardRef(() => OAppLayoutComponent) } ], template: "<o-app-sidenav #appSidenav [sidenav-mode]=\"sidenavMode\" [opened]=\"sidenavOpened\" [show-user-info]=\"showUserInfo\" [show-toggle-button]=\"!showHeader\"\n [opened-sidenav-image]=\"openedSidenavImg\" [closed-sidenav-image]=\"closedSidenavImg\" [layout-mode]=\"mode\" [class.header-layout]=\"showHeader\"\n (onSidenavToggle)=\"sidenavToggle($event)\" (afterSidenavToggle)=\"afterToggle($event)\">\n\n <ng-content select=\"o-app-layout-sidenav[position=start]\" ngProjectAs=\"o-app-layout-sidenav-projection-start\">\n </ng-content>\n <ng-content select=\"o-app-layout-sidenav[position=end]\" ngProjectAs=\"o-app-layout-sidenav-projection-end\">\n </ng-content>\n <ng-content select=\"o-app-layout-sidenav\" ngProjectAs=\"o-app-layout-sidenav-projection-end\"></ng-content>\n\n <o-app-header #appHeader *ngIf=\"showHeader\" [show-title]=\"showTitle\" [show-static-title]=\"showStaticTitle\" [static-title]=\"staticTitle\"\n [show-user-info]=\"showUserInfo\" [show-language-selector]=\"showLanguageSelector\" [use-flag-icons]=\"useFlagIcons\"\n (onSidenavToggle)=\"appSidenav.toggleSidenav()\" [color]=\"headerColor\" [header-height]=\"headerHeight\">\n <mat-icon class=\"sidenav-toggle\" svgIcon=\"ontimize:menu\" (click)=\"appSidenav.toggleSidenav()\" *ngIf=\"appSidenav.isMobileMode()\"></mat-icon>\n <ng-content select=\"o-app-layout-header[position=start]\" ngProjectAs=\"o-app-layout-header-projection-start\">\n </ng-content>\n <ng-content select=\"o-app-layout-header[position=end]\" ngProjectAs=\"o-app-layout-header-projection-end\">\n </ng-content>\n <ng-content select=\"o-app-layout-header\" ngProjectAs=\"o-app-layout-header-projection-start\"></ng-content>\n </o-app-header>\n\n <div class=\"application-layout-content-wrapper\" [class.header-layout]=\"showHeader\">\n <ng-content></ng-content>\n </div>\n</o-app-sidenav>\n", styles: [".application-layout-content-wrapper{z-index:1;position:absolute;top:0;bottom:0;left:0;right:0;overflow:auto;padding:16px}\n"] }] }], propDecorators: { sidenavOpened: [], showUserInfo: [], showLanguageSelector: [], useFlagIcons: [], _showHeader: [], showTitle: [], showStaticTitle: [], appSidenav: [{ type: ViewChild, args: ['appSidenav'] }], appHeader: [{ type: ViewChild, args: ['appHeader'] }], userInfoConfiguration: [{ type: ContentChild, args: [OUserInfoConfigurationDirective] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1hcHAtbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2FwcC1sYXlvdXQvby1hcHAtbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9sYXlvdXRzL2FwcC1sYXlvdXQvby1hcHAtbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0gsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sd0ZBQXdGLENBQUM7QUFDekksT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDekUsT0FBTyxFQUFFLEtBQUssRUFBZ0MsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUNyRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7OztBQUUzRCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRztJQUN6QyxNQUFNO0lBQ04sMkJBQTJCO0lBQzNCLCtCQUErQjtJQUMvQiwwQkFBMEI7SUFDMUIsOEJBQThCO0lBQzlCLDhDQUE4QztJQUM5Qyw4QkFBOEI7SUFDOUIsd0NBQXdDO0lBQ3hDLHdDQUF3QztJQUN4QywyQkFBMkI7SUFDM0IsNkJBQTZCO0lBQzdCLHVCQUF1QjtJQUN2QiwyQkFBMkI7SUFD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bml0LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcblxuaW1wb3J0IHsgT1VzZXJJbmZvQ29uZmlndXJhdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvdXNlci1pbmZvL3VzZXItaW5mby1jb25maWd1cmF0aW9uL28tdXNlci1pbmZvLWNvbmZpZ3VyYXRpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciB9IGZyb20gJy4uLy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IENvZGVzLCBPQXBwTGF5b3V0TW9kZSwgT1NpZGVuYXZNb2RlIH0gZnJvbSAnLi4vLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9BcHBTaWRlbmF2QmFzZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvYXBwLXNpZGVuYXYvby1hcHAtc2lkZW5hdi1iYXNlLmNsYXNzJztcbmltcG9ydCB7IE9BcHBIZWFkZXJCYXNlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9hcHAtaGVhZGVyL28tYXBwLWhlYWRlci1iYXNlLmNsYXNzJztcbmltcG9ydCB7IE9BcHBMYXlvdXRCYXNlIH0gZnJvbSAnLi9vLWFwcC1sYXlvdXQtYmFzZS5jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX0FQUF9MQVlPVVQgPSBbXG4gICdtb2RlJyxcbiAgJ3NpZGVuYXZNb2RlOiBzaWRlbmF2LW1vZGUnLFxuICAnc2lkZW5hdk9wZW5lZDogc2lkZW5hdi1vcGVuZWQnLFxuICAnX3Nob3dIZWFkZXI6IHNob3ctaGVhZGVyJyxcbiAgJ3Nob3dVc2VySW5mbzogc2hvdy11c2VyLWluZm8nLFxuICAnc2hvd0xhbmd1YWdlU2VsZWN0b3I6IHNob3ctbGFuZ3VhZ2Utc2VsZWN0b3InLFxuICAndXNlRmxhZ0ljb25zOiB1c2UtZmxhZy1pY29ucycsXG4gICdvcGVuZWRTaWRlbmF2SW1nOiBvcGVuZWQtc2lkZW5hdi1pbWFnZScsXG4gICdjbG9zZWRTaWRlbmF2SW1nOiBjbG9zZWQtc2lkZW5hdi1pbWFnZScsXG4gICdoZWFkZXJDb2xvcjogaGVhZGVyLWNvbG9yJyxcbiAgJ2hlYWRlckhlaWdodDogaGVhZGVyLWhlaWdodCcsXG4gICdzaG93VGl0bGU6IHNob3ctdGl0bGUnLFxuICAnc3RhdGljVGl0bGU6IHN0YXRpYy10aXRsZScsXG4gICdzaG93U3RhdGljVGl0bGU6IHNob3ctc3RhdGljLXRpdGxlJ1xuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1VUUFVUU19PX0FQUF9MQVlPVVQ6IGFueVtdID0gW1xuICAnYmVmb3JlT3BlblNpZGVuYXYnLFxuICAnYWZ0ZXJPcGVuU2lkZW5hdicsXG4gICdiZWZvcmVDbG9zZVNpZGVuYXYnLFxuICAnYWZ0ZXJDbG9zZVNpZGVuYXYnXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvLWFwcC1sYXlvdXQnLFxuICBpbnB1dHM6IERFRkFVTFRfSU5QVVRTX09fQVBQX0xBWU9VVCxcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fQVBQX0xBWU9VVCxcbiAgdGVtcGxhdGVVcmw6ICcuL28tYXBwLWxheW91dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL28tYXBwLWxheW91dC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE9BcHBMYXlvdXRCYXNlLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPQXBwTGF5b3V0Q29tcG9uZW50KSB9XG4gIF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBPQXBwTGF5b3V0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNpZGVuYXZPcGVuZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2hvd1VzZXJJbmZvOiBib29sZWFuID0gdHJ1ZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNob3dMYW5ndWFnZVNlbGVjdG9yOiBib29sZWFuID0gdHJ1ZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHVzZUZsYWdJY29uczogYm9vbGVhbiA9IGZhbHNlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHJvdGVjdGVkIF9zaG93SGVhZGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyBzaG93VGl0bGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHN0YXRpY1RpdGxlOiBzdHJpbmc7XG4gIEBCb29sZWFuSW5wdXRDb252ZXJ0ZXIoKVxuICBwdWJsaWMgc2hvd1N0YXRpY1RpdGxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIGhlYWRlckNvbG9yOiBUaGVtZVBhbGV0dGU7XG4gIHB1YmxpYyBoZWFkZXJIZWlnaHQgPSBDb2Rlcy5ERUZBVUxUX1JPV19IRUlHSFQ7XG5cbiAgQFZpZXdDaGlsZCgnYXBwU2lkZW5hdicpXG4gIHB1YmxpYyBhcHBTaWRlbmF2OiBPQXBwU2lkZW5hdkJhc2U7XG5cbiAgQFZpZXdDaGlsZCgnYXBwSGVhZGVyJylcbiAgcHVibGljIGFwcEhlYWRlcjogT0FwcEhlYWRlckJhc2U7XG5cbiAgQENvbnRlbnRDaGlsZChPVXNlckluZm9Db25maWd1cmF0aW9uRGlyZWN0aXZlKVxuICBwdWJsaWMgdXNlckluZm9Db25maWd1cmF0aW9uOiBPVXNlckluZm9Db25maWd1cmF0aW9uRGlyZWN0aXZlO1xuXG4gIHByb3RlY3RlZCBfbW9kZTogT0FwcExheW91dE1vZGU7XG4gIHByb3RlY3RlZCBfc2lkZW5hdk1vZGU6IE9TaWRlbmF2TW9kZTtcblxuICBvcGVuZWRTaWRlbmF2SW1nOiBzdHJpbmc7XG4gIGNsb3NlZFNpZGVuYXZJbWc6IHN0cmluZztcblxuICBiZWZvcmVPcGVuU2lkZW5hdjogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBhZnRlck9wZW5TaWRlbmF2OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIGJlZm9yZUNsb3NlU2lkZW5hdjogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBhZnRlckNsb3NlU2lkZW5hdjogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGdldCBzaG93SGVhZGVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zaG93SGVhZGVyO1xuICB9XG5cbiAgc2V0IHNob3dIZWFkZXIodmFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd0hlYWRlciA9IHZhbDtcbiAgfVxuXG4gIGdldCBtb2RlKCk6IE9BcHBMYXlvdXRNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5fbW9kZTtcbiAgfVxuXG4gIHNldCBtb2RlKHZhbDogT0FwcExheW91dE1vZGUpIHtcbiAgICBjb25zdCBtID0gQ29kZXMuT0FwcExheW91dE1vZGVzLmZpbmQoZSA9PiBlID09PSB2YWwpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChtKSkge1xuICAgICAgdGhpcy5fbW9kZSA9IG07XG4gICAgICBpZiAodGhpcy5fbW9kZSA9PT0gJ21vYmlsZScgJiYgIVV0aWwuaXNEZWZpbmVkKHRoaXMuc2hvd0hlYWRlcikpIHtcbiAgICAgICAgdGhpcy5zaG93SGVhZGVyID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignSW52YWxpZCBgby1hcHAtbGF5b3V0YCBtb2RlICgnICsgdmFsICsgJyknKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2lkZW5hdk1vZGUoKTogT1NpZGVuYXZNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5fc2lkZW5hdk1vZGU7XG4gIH1cblxuICBzZXQgc2lkZW5hdk1vZGUodmFsOiBPU2lkZW5hdk1vZGUpIHtcbiAgICBjb25zdCBtID0gQ29kZXMuT1NpZGVuYXZNb2Rlcy5maW5kKGUgPT4gZSA9PT0gdmFsKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQobSkpIHtcbiAgICAgIHRoaXMuX3NpZGVuYXZNb2RlID0gbTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignSW52YWxpZCBgby1hcHAtbGF5b3V0YCBzaWRlbmF2LW1vZGUgKCcgKyB2YWwgKyAnKScpO1xuICAgIH1cbiAgfVxuXG4gIHNpZGVuYXZUb2dnbGUob3BlbmVkOiBib29sZWFuKSB7XG4gICAgb3BlbmVkID8gdGhpcy5iZWZvcmVPcGVuU2lkZW5hdi5lbWl0KCkgOiB0aGlzLmJlZm9yZUNsb3NlU2lkZW5hdi5lbWl0KCk7XG4gIH1cblxuICBhZnRlclRvZ2dsZShvcGVuZWQ6IGJvb2xlYW4pIHtcbiAgICBvcGVuZWQgPyB0aGlzLmFmdGVyT3BlblNpZGVuYXYuZW1pdCgpIDogdGhpcy5hZnRlckNsb3NlU2lkZW5hdi5lbWl0KCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXBwSGVhZGVyICYmIHRoaXMuYXBwSGVhZGVyLnVzZXJJbmZvKSB7XG4gICAgICB0aGlzLmFwcEhlYWRlci51c2VySW5mby5yZWdpc3RlclVzZXJJbmZvQ29uZmlndXJhdGlvbih0aGlzLnVzZXJJbmZvQ29uZmlndXJhdGlvbik7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxvLWFwcC1zaWRlbmF2ICNhcHBTaWRlbmF2IFtzaWRlbmF2LW1vZGVdPVwic2lkZW5hdk1vZGVcIiBbb3BlbmVkXT1cInNpZGVuYXZPcGVuZWRcIiBbc2hvdy11c2VyLWluZm9dPVwic2hvd1VzZXJJbmZvXCIgW3Nob3ctdG9nZ2xlLWJ1dHRvbl09XCIhc2hvd0hlYWRlclwiXG4gIFtvcGVuZWQtc2lkZW5hdi1pbWFnZV09XCJvcGVuZWRTaWRlbmF2SW1nXCIgW2Nsb3NlZC1zaWRlbmF2LWltYWdlXT1cImNsb3NlZFNpZGVuYXZJbWdcIiBbbGF5b3V0LW1vZGVdPVwibW9kZVwiIFtjbGFzcy5oZWFkZXItbGF5b3V0XT1cInNob3dIZWFkZXJcIlxuICAob25TaWRlbmF2VG9nZ2xlKT1cInNpZGVuYXZUb2dnbGUoJGV2ZW50KVwiIChhZnRlclNpZGVuYXZUb2dnbGUpPVwiYWZ0ZXJUb2dnbGUoJGV2ZW50KVwiPlxuXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIm8tYXBwLWxheW91dC1zaWRlbmF2W3Bvc2l0aW9uPXN0YXJ0XVwiIG5nUHJvamVjdEFzPVwiby1hcHAtbGF5b3V0LXNpZGVuYXYtcHJvamVjdGlvbi1zdGFydFwiPlxuICA8L25nLWNvbnRlbnQ+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIm8tYXBwLWxheW91dC1zaWRlbmF2W3Bvc2l0aW9uPWVuZF1cIiBuZ1Byb2plY3RBcz1cIm8tYXBwLWxheW91dC1zaWRlbmF2LXByb2plY3Rpb24tZW5kXCI+XG4gIDwvbmctY29udGVudD5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiby1hcHAtbGF5b3V0LXNpZGVuYXZcIiBuZ1Byb2plY3RBcz1cIm8tYXBwLWxheW91dC1zaWRlbmF2LXByb2plY3Rpb24tZW5kXCI+PC9uZy1jb250ZW50PlxuXG4gIDxvLWFwcC1oZWFkZXIgI2FwcEhlYWRlciAqbmdJZj1cInNob3dIZWFkZXJcIiBbc2hvdy10aXRsZV09XCJzaG93VGl0bGVcIiBbc2hvdy1zdGF0aWMtdGl0bGVdPVwic2hvd1N0YXRpY1RpdGxlXCIgW3N0YXRpYy10aXRsZV09XCJzdGF0aWNUaXRsZVwiXG4gICAgW3Nob3ctdXNlci1pbmZvXT1cInNob3dVc2VySW5mb1wiIFtzaG93LWxhbmd1YWdlLXNlbGVjdG9yXT1cInNob3dMYW5ndWFnZVNlbGVjdG9yXCIgW3VzZS1mbGFnLWljb25zXT1cInVzZUZsYWdJY29uc1wiXG4gICAgKG9uU2lkZW5hdlRvZ2dsZSk9XCJhcHBTaWRlbmF2LnRvZ2dsZVNpZGVuYXYoKVwiIFtjb2xvcl09XCJoZWFkZXJDb2xvclwiIFtoZWFkZXItaGVpZ2h0XT1cImhlYWRlckhlaWdodFwiPlxuICAgIDxtYXQtaWNvbiBjbGFzcz1cInNpZGVuYXYtdG9nZ2xlXCIgc3ZnSWNvbj1cIm9udGltaXplOm1lbnVcIiAoY2xpY2spPVwiYXBwU2lkZW5hdi50b2dnbGVTaWRlbmF2KClcIiAqbmdJZj1cImFwcFNpZGVuYXYuaXNNb2JpbGVNb2RlKClcIj48L21hdC1pY29uPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm8tYXBwLWxheW91dC1oZWFkZXJbcG9zaXRpb249c3RhcnRdXCIgbmdQcm9qZWN0QXM9XCJvLWFwcC1sYXlvdXQtaGVhZGVyLXByb2plY3Rpb24tc3RhcnRcIj5cbiAgICA8L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiby1hcHAtbGF5b3V0LWhlYWRlcltwb3NpdGlvbj1lbmRdXCIgbmdQcm9qZWN0QXM9XCJvLWFwcC1sYXlvdXQtaGVhZGVyLXByb2plY3Rpb24tZW5kXCI+XG4gICAgPC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm8tYXBwLWxheW91dC1oZWFkZXJcIiBuZ1Byb2plY3RBcz1cIm8tYXBwLWxheW91dC1oZWFkZXItcHJvamVjdGlvbi1zdGFydFwiPjwvbmctY29udGVudD5cbiAgPC9vLWFwcC1oZWFkZXI+XG5cbiAgPGRpdiBjbGFzcz1cImFwcGxpY2F0aW9uLWxheW91dC1jb250ZW50LXdyYXBwZXJcIiBbY2xhc3MuaGVhZGVyLWxheW91dF09XCJzaG93SGVhZGVyXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvby1hcHAtc2lkZW5hdj5cbiJdfQ==