ontimize-web-ngx 18.0.0-next.6 → 18.0.0-next.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/app-sidenav/o-app-sidenav.component.mjs +3 -3
- package/esm2022/lib/components/button/o-button.component.mjs +71 -17
- package/esm2022/lib/components/dual-list-selector/o-dual-list-selector.component.mjs +3 -3
- package/esm2022/lib/components/form/o-form.component.mjs +62 -20
- package/esm2022/lib/components/form/toolbar/o-form-toolbar.component.mjs +53 -6
- package/esm2022/lib/components/grid/o-grid.component.mjs +8 -5
- package/esm2022/lib/components/input/combo/combo-search/o-combo-search.component.mjs +3 -3
- package/esm2022/lib/components/input/listpicker/o-list-picker-dialog.component.mjs +3 -3
- package/esm2022/lib/components/list/o-list.component.mjs +8 -5
- package/esm2022/lib/components/o-form-data-component.class.mjs +5 -3
- package/esm2022/lib/components/o-service-component.class.mjs +48 -3
- package/esm2022/lib/components/table/extensions/dialog/apply-configuration/o-table-apply-configuration-dialog.component.mjs +3 -3
- package/esm2022/lib/components/table/extensions/dialog/export/o-table-export-dialog.component.mjs +3 -3
- package/esm2022/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.mjs +3 -3
- package/esm2022/lib/components/table/extensions/dialog/group-by-columns/o-table-group-by-columns-dialog.component.mjs +3 -3
- package/esm2022/lib/components/table/extensions/dialog/store-configuration/o-table-store-configuration-dialog.component.mjs +3 -3
- package/esm2022/lib/components/table/extensions/dialog/visible-columns/o-table-visible-columns-dialog.component.mjs +3 -3
- package/esm2022/lib/components/table/extensions/header/table-button/o-table-button.component.mjs +14 -4
- package/esm2022/lib/components/table/extensions/header/table-buttons/o-table-buttons.component.mjs +3 -3
- package/esm2022/lib/components/table/extensions/header/table-menu/o-table-menu.component.mjs +2 -1
- package/esm2022/lib/components/table/o-table-base.class.mjs +1 -1
- package/esm2022/lib/components/table/o-table.component.mjs +6 -3
- package/esm2022/lib/components/tree/o-tree.component.mjs +6 -3
- package/esm2022/lib/shared/components/dialog/o-dialog-internal.component.mjs +3 -3
- package/esm2022/lib/shared/components/dialog/o-dialog.component.mjs +3 -3
- package/esm2022/lib/shared/components/filter/load-filter/o-load-filter-dialog.component.mjs +3 -3
- package/esm2022/lib/shared/components/filter/store-filter/o-store-filter-dialog.component.mjs +6 -4
- package/esm2022/lib/types/index.mjs +2 -1
- package/esm2022/lib/types/o-action-style.type.mjs +5 -0
- package/esm2022/lib/types/o-inputs-options.type.mjs +1 -1
- package/esm2022/lib/util/action-style.util.mjs +19 -0
- package/esm2022/lib/util/index.mjs +2 -1
- package/fesm2022/ontimize-web-ngx.mjs +327 -104
- package/fesm2022/ontimize-web-ngx.mjs.map +1 -1
- package/lib/components/button/o-button.component.d.ts +12 -2
- package/lib/components/form/o-form.component.d.ts +9 -1
- package/lib/components/form/toolbar/o-form-toolbar.component.d.ts +12 -1
- package/lib/components/o-service-component.class.d.ts +11 -2
- package/lib/components/table/extensions/header/table-button/o-table-button.component.d.ts +4 -0
- package/lib/components/table/o-table-base.class.d.ts +4 -0
- package/lib/types/index.d.ts +1 -0
- package/lib/types/o-action-style.type.d.ts +19 -0
- package/lib/types/o-inputs-options.type.d.ts +2 -0
- package/lib/util/action-style.util.d.ts +5 -0
- package/lib/util/index.d.ts +1 -0
- package/package.json +1 -1
- package/src/lib/components/app-sidenav/o-app-sidenav-theme.scss +26 -45
- package/src/lib/components/app-sidenav/o-app-sidenav.component.scss +1 -0
- package/src/lib/components/button/o-button-theme.scss +91 -1
- package/src/lib/components/input/combo/combo-search/o-combo-search.component.scss +4 -13
- package/src/lib/components/table/extensions/dialog/filter-by-column/o-table-filter-by-column-data-dialog.component.scss +22 -0
- package/src/lib/components/table/o-table.component.scss +3 -0
- package/src/lib/theming/ontimize-base-style.scss +13 -0
- package/src/lib/theming/ontimize-tokens.scss +14 -0
- package/theme.scss +120 -47
- package/theming/ontimize-base-style.scss +13 -0
- package/theming/ontimize-tokens.scss +14 -0
|
@@ -243,7 +243,7 @@ export class OAppSidenavComponent extends OAppSidenavComponentStateService {
|
|
|
243
243
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OAppSidenavComponent, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i2.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
244
244
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: OAppSidenavComponent, isStandalone: true, selector: "o-app-sidenav", inputs: { opened: "opened", showUserInfo: ["show-user-info", "showUserInfo"], showToggleButton: ["show-toggle-button", "showToggleButton"], openedSidenavImg: ["opened-sidenav-image", "openedSidenavImg"], closedSidenavImg: ["closed-sidenav-image", "closedSidenavImg"], layoutMode: ["layout-mode", "layoutMode"], sidenavMode: ["sidenav-mode", "sidenavMode"], storeState: ["store-state", "storeState"], showEllipsisMenu: ["show-ellipsis-menu", "showEllipsisMenu"] }, outputs: { onSidenavOpenedChange: "onSidenavOpenedChange", onSidenavOpenedStart: "onSidenavOpenedStart", onSidenavClosedStart: "onSidenavClosedStart", onSidenavToggle: "onSidenavToggle", afterSidenavToggle: "afterSidenavToggle" }, host: { listeners: { "window:beforeunload": "beforeunloadHandler()", "window:resize": "onResize()" }, properties: { "class.o-app-sidenav": "true" } }, providers: [
|
|
245
245
|
{ provide: OAppSidenavBase, useExisting: forwardRef(() => OAppSidenavComponent) }
|
|
246
|
-
], viewQueries: [{ propertyName: "sidenav", first: true, predicate: MatSidenav, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-sidenav-container class=\"o-app-sidenav-container\" [class.opened]=\"sidenav.opened\"\n [class.o-app-sidenav-mode-desktop]=\"(layoutMode || 'desktop') === 'desktop'\"\n [class.o-app-sidenav-mode-mobile]=\"(layoutMode || 'desktop') !== 'desktop'\">\n\n <mat-sidenav #sidenav class=\"o-app-sidenav-sidenav o-scroll\" [opened]=\"isSidenavOpened()\"\n [mode]=\"(sidenavMode || ((layoutMode || 'desktop') === 'desktop' ? 'side' : 'over'))\" [class.mat-drawer-opened]=\"sidenav.opened\"\n [class.mat-drawer-closed]=\"!sidenav.opened\" [class.ellipsis-menu-items]=\"showEllipsisMenu\" (openedChange)=\"sidenavOpenedChange()\"\n (closedStart)=\"sidenavClosedStart()\" (openedStart)=\"sidenavOpenedStart()\">\n <div class=\"sidenav-wrapper o-flex-column\">\n @if (isDesktopMode()) {\n <div class=\"sidenav-toggle-container o-flex-row o-layout-align-end-center\">\n <mat-icon id=\"sidenav-menu\" class=\"sidenav-toggle\" (click)=\"toggleSidenav()\">menu</mat-icon>\n </div>\n }\n\n <o-app-sidenav-image [opened-src]=\"openedSidenavImg\" [closed-src]=\"closedSidenavImg\"> </o-app-sidenav-image>\n <ng-content select=\"o-app-layout-sidenav-projection-start\"></ng-content>\n <div class=\"navMenu\">\n @for (menuRootItem of menuRootArray; track menuRootItem) {\n <nav>\n @if (appMenuService.getMenuItemType(menuRootItem) !== 'group' && appMenuService.isVisible(menuRootItem)) {\n <ul>\n <o-app-sidenav-menu-item [menu-item]=\"menuRootItem\" [menu-item-type]=\"appMenuService.getMenuItemType(menuRootItem)\"\n [sidenav-opened]=\"sidenav.opened\" (onClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-item>\n </ul>\n }\n @if (appMenuService.getMenuItemType(menuRootItem) === 'group' && appMenuService.isVisible(menuRootItem)) {\n <o-app-sidenav-menu-group [menu-group]=\"menuRootItem\" [sidenav-opened]=\"sidenav.opened\" level=\"1\"\n (onItemClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-group>\n }\n </nav>\n }\n </div>\n <div class=\"layout-sidenav-projection-end\">\n <ng-content select=\"o-app-layout-sidenav-projection-end\"></ng-content>\n </div>\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"o-app-sidenav-content\">\n <ng-content></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>\n", styles: [".o-app-sidenav{font-weight:400}.o-app-sidenav .navMenu{flex:1;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden}@-moz-document url-prefix(){.o-app-sidenav .navMenu{height:100%}}.o-app-sidenav .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-menu-item a{margin-left:8px}.o-app-sidenav .o-app-sidenav-menu-group a .mat-icon svg,.o-app-sidenav .o-app-sidenav-menu-item a .mat-icon svg{display:flex}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-mdc-button-persistent-ripple,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-mdc-button-persistent-ripple{display:none}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .o-app-sidenav-item,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .o-app-sidenav-item{opacity:.5}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] a,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] a{cursor:initial}.o-app-sidenav .o-app-sidenav-menugroup{transition:background-color .5s}.o-app-sidenav .o-app-sidenav-menugroup-items-container{overflow:hidden}.o-app-sidenav .o-app-sidenav-container{width:100%;height:100%}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-sidenav.mat-drawer-closed{visibility:visible!important;transform:translate3d(-183px,0,0)}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-content.mat-drawer-content{margin-right:56px!important;transform:translate3d(56px,0,0)!important}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content{position:absolute;right:0;left:0;min-height:100%;display:flex;flex-direction:column}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content router-outlet+*{flex-grow:1}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav{width:240px;bottom:0;overflow:hidden;height:100%;display:flex}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container{display:flex;margin:0 8px;width:calc(100% - 16px)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .sidenav-wrapper{flex:1}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items .mat-drawer-inner-container{display:block}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items .sidenav-wrapper{height:100%;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .o-app-sidenav-content-container{padding-bottom:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .sidenav-toggle-container{height:48px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .sidenav-toggle{padding:4px 12px 8px;cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav ul{list-style-type:none;margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav ul li{margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav{width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav a{border-radius:8px;box-sizing:border-box;display:block;line-height:40px;height:40px;font-size:14px;max-width:100%;margin-bottom:2px;font-weight:400}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav a>.mat-icon{vertical-align:middle;height:24px;width:24px;font-size:24px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup{transition:padding .5s 0s}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup .o-app-sidenav-menugroup-arrow{transition:.5s transform cubic-bezier(.25,.8,.25,1)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup .o-app-sidenav-menugroup-arrow.opened{transform:rotate(90deg)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup mat-icon:not(.o-app-sidenav-menugroup-arrow),.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menuitem mat-icon:not(.o-app-sidenav-menugroup-arrow){margin-right:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a{padding:0 16px;margin:0;display:flex;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label{display:flex;min-width:0;flex:1;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div{display:flex;align-items:center;min-width:0;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div .o-app-sidenav-menuitem-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div .o-app-sidenav-menugroup-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div .o-app-sidenav-menuitem-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div .o-app-sidenav-menugroup-title{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1 a{font-size:14px;line-height:40px;height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container{padding-left:16px;box-sizing:border-box;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:12px;line-height:36px;height:36px;max-width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container a .mdc-button__label{padding-left:6px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a{font-size:12px;line-height:36px;height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a .mat-mdc-button-touch-target{height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container{padding-left:32px;box-sizing:border-box;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:11px;line-height:32px;height:32px;max-width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:32px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-icon,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-icon{font-size:20px;height:20px;width:20px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed{text-align:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .mat-drawer-inner-container{margin:0;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .mat-drawer-inner-container .sidenav-toggle{padding:8px 16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item:not(.o-user-info){cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:focus,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:hover{color:inherit}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menugroup,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menuitem{display:inline-block;text-align:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav{width:56px;min-width:56px;margin-left:auto}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a{line-height:40px;height:40px;width:40px;min-width:40px;padding:0;margin:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .mat-icon{margin:auto}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .mdc-button__label{width:100%;display:flex;align-items:center;justify-content:center;height:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .o-layout-align-start-center{justify-content:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container{padding:0;text-align:end;max-height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container .o-app-sidenav-image{max-height:36px;margin-right:8px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closing{transform:translate3d(-183px,0,0)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .o-app-sidenav-menugroup-arrow{display:flex}\n"], dependencies: [{ kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i3.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i3.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i3.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: OAppSidenavImageComponent, selector: "o-app-sidenav-image", inputs: ["opened-src", "closed-src"] }, { kind: "component", type: OAppSidenavMenuItemComponent, selector: "o-app-sidenav-menu-item", inputs: ["menu-item", "menu-item-type", "sidenav-opened", "disabled"], outputs: ["onClick"] }, { kind: "component", type: OAppSidenavMenuGroupComponent, selector: "o-app-sidenav-menu-group", inputs: ["menu-group", "sidenav-opened", "level"], outputs: ["onItemClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
246
|
+
], viewQueries: [{ propertyName: "sidenav", first: true, predicate: MatSidenav, descendants: true }], usesInheritance: true, ngImport: i0, template: "<mat-sidenav-container class=\"o-app-sidenav-container\" [class.opened]=\"sidenav.opened\"\n [class.o-app-sidenav-mode-desktop]=\"(layoutMode || 'desktop') === 'desktop'\"\n [class.o-app-sidenav-mode-mobile]=\"(layoutMode || 'desktop') !== 'desktop'\">\n\n <mat-sidenav #sidenav class=\"o-app-sidenav-sidenav o-scroll\" [opened]=\"isSidenavOpened()\"\n [mode]=\"(sidenavMode || ((layoutMode || 'desktop') === 'desktop' ? 'side' : 'over'))\" [class.mat-drawer-opened]=\"sidenav.opened\"\n [class.mat-drawer-closed]=\"!sidenav.opened\" [class.ellipsis-menu-items]=\"showEllipsisMenu\" (openedChange)=\"sidenavOpenedChange()\"\n (closedStart)=\"sidenavClosedStart()\" (openedStart)=\"sidenavOpenedStart()\">\n <div class=\"sidenav-wrapper o-flex-column\">\n @if (isDesktopMode()) {\n <div class=\"sidenav-toggle-container o-flex-row o-layout-align-end-center\">\n <mat-icon id=\"sidenav-menu\" class=\"sidenav-toggle\" (click)=\"toggleSidenav()\">menu</mat-icon>\n </div>\n }\n\n <o-app-sidenav-image [opened-src]=\"openedSidenavImg\" [closed-src]=\"closedSidenavImg\"> </o-app-sidenav-image>\n <ng-content select=\"o-app-layout-sidenav-projection-start\"></ng-content>\n <div class=\"navMenu\">\n @for (menuRootItem of menuRootArray; track menuRootItem) {\n <nav>\n @if (appMenuService.getMenuItemType(menuRootItem) !== 'group' && appMenuService.isVisible(menuRootItem)) {\n <ul>\n <o-app-sidenav-menu-item [menu-item]=\"menuRootItem\" [menu-item-type]=\"appMenuService.getMenuItemType(menuRootItem)\"\n [sidenav-opened]=\"sidenav.opened\" (onClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-item>\n </ul>\n }\n @if (appMenuService.getMenuItemType(menuRootItem) === 'group' && appMenuService.isVisible(menuRootItem)) {\n <o-app-sidenav-menu-group [menu-group]=\"menuRootItem\" [sidenav-opened]=\"sidenav.opened\" level=\"1\"\n (onItemClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-group>\n }\n </nav>\n }\n </div>\n <div class=\"layout-sidenav-projection-end\">\n <ng-content select=\"o-app-layout-sidenav-projection-end\"></ng-content>\n </div>\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"o-app-sidenav-content\">\n <ng-content></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>\n", styles: [".o-app-sidenav{font-weight:400}.o-app-sidenav .navMenu{flex:1;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden}@-moz-document url-prefix(){.o-app-sidenav .navMenu{height:100%}}.o-app-sidenav .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-menu-item a{margin-left:8px}.o-app-sidenav .o-app-sidenav-menu-group a .mat-icon svg,.o-app-sidenav .o-app-sidenav-menu-item a .mat-icon svg{display:flex}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-mdc-button-persistent-ripple,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-mdc-button-persistent-ripple{display:none}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .o-app-sidenav-item,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .o-app-sidenav-item{opacity:.5}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] a,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] a{cursor:initial}.o-app-sidenav .o-app-sidenav-menugroup{transition:background-color .5s}.o-app-sidenav .o-app-sidenav-menugroup-items-container{overflow:hidden}.o-app-sidenav .o-app-sidenav-container{width:100%;height:100%}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-sidenav.mat-drawer-closed{visibility:visible!important;transform:translate3d(-183px,0,0)}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-content.mat-drawer-content{margin-right:56px!important;transform:translate3d(56px,0,0)!important}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content{position:absolute;right:0;left:0;min-height:100%;display:flex;flex-direction:column}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content router-outlet+*{flex-grow:1}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav{width:240px;bottom:0;overflow:hidden;height:100%;display:flex;border-radius:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container{display:flex;margin:0 8px;width:calc(100% - 16px)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .sidenav-wrapper{flex:1}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items .mat-drawer-inner-container{display:block}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items .sidenav-wrapper{height:100%;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .o-app-sidenav-content-container{padding-bottom:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .sidenav-toggle-container{height:48px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .sidenav-toggle{padding:4px 12px 8px;cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav ul{list-style-type:none;margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav ul li{margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav{width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav a{border-radius:8px;box-sizing:border-box;display:block;line-height:40px;height:40px;font-size:14px;max-width:100%;margin-bottom:2px;font-weight:400}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav a>.mat-icon{vertical-align:middle;height:24px;width:24px;font-size:24px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup{transition:padding .5s 0s}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup .o-app-sidenav-menugroup-arrow{transition:.5s transform cubic-bezier(.25,.8,.25,1)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup .o-app-sidenav-menugroup-arrow.opened{transform:rotate(90deg)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup mat-icon:not(.o-app-sidenav-menugroup-arrow),.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menuitem mat-icon:not(.o-app-sidenav-menugroup-arrow){margin-right:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a{padding:0 16px;margin:0;display:flex;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label{display:flex;min-width:0;flex:1;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div{display:flex;align-items:center;min-width:0;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div .o-app-sidenav-menuitem-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div .o-app-sidenav-menugroup-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div .o-app-sidenav-menuitem-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div .o-app-sidenav-menugroup-title{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1 a{font-size:14px;line-height:40px;height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container{padding-left:16px;box-sizing:border-box;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:12px;line-height:36px;height:36px;max-width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container a .mdc-button__label{padding-left:6px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a{font-size:12px;line-height:36px;height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a .mat-mdc-button-touch-target{height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container{padding-left:32px;box-sizing:border-box;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:11px;line-height:32px;height:32px;max-width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:32px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-icon,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-icon{font-size:20px;height:20px;width:20px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed{text-align:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .mat-drawer-inner-container{margin:0;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .mat-drawer-inner-container .sidenav-toggle{padding:8px 16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item:not(.o-user-info){cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:focus,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:hover{color:inherit}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menugroup,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menuitem{display:inline-block;text-align:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav{width:56px;min-width:56px;margin-left:auto}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a{line-height:40px;height:40px;width:40px;min-width:40px;padding:0;margin:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .mat-icon{margin:auto}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .mdc-button__label{width:100%;display:flex;align-items:center;justify-content:center;height:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .o-layout-align-start-center{justify-content:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container{padding:0;text-align:end;max-height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container .o-app-sidenav-image{max-height:36px;margin-right:8px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closing{transform:translate3d(-183px,0,0)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .o-app-sidenav-menugroup-arrow{display:flex}\n"], dependencies: [{ kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i3.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i3.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i3.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: OAppSidenavImageComponent, selector: "o-app-sidenav-image", inputs: ["opened-src", "closed-src"] }, { kind: "component", type: OAppSidenavMenuItemComponent, selector: "o-app-sidenav-menu-item", inputs: ["menu-item", "menu-item-type", "sidenav-opened", "disabled"], outputs: ["onClick"] }, { kind: "component", type: OAppSidenavMenuGroupComponent, selector: "o-app-sidenav-menu-group", inputs: ["menu-group", "sidenav-opened", "level"], outputs: ["onItemClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
247
247
|
}
|
|
248
248
|
__decorate([
|
|
249
249
|
BooleanInputConverter(),
|
|
@@ -255,7 +255,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
255
255
|
'[class.o-app-sidenav]': 'true'
|
|
256
256
|
}, providers: [
|
|
257
257
|
{ provide: OAppSidenavBase, useExisting: forwardRef(() => OAppSidenavComponent) }
|
|
258
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-sidenav-container class=\"o-app-sidenav-container\" [class.opened]=\"sidenav.opened\"\n [class.o-app-sidenav-mode-desktop]=\"(layoutMode || 'desktop') === 'desktop'\"\n [class.o-app-sidenav-mode-mobile]=\"(layoutMode || 'desktop') !== 'desktop'\">\n\n <mat-sidenav #sidenav class=\"o-app-sidenav-sidenav o-scroll\" [opened]=\"isSidenavOpened()\"\n [mode]=\"(sidenavMode || ((layoutMode || 'desktop') === 'desktop' ? 'side' : 'over'))\" [class.mat-drawer-opened]=\"sidenav.opened\"\n [class.mat-drawer-closed]=\"!sidenav.opened\" [class.ellipsis-menu-items]=\"showEllipsisMenu\" (openedChange)=\"sidenavOpenedChange()\"\n (closedStart)=\"sidenavClosedStart()\" (openedStart)=\"sidenavOpenedStart()\">\n <div class=\"sidenav-wrapper o-flex-column\">\n @if (isDesktopMode()) {\n <div class=\"sidenav-toggle-container o-flex-row o-layout-align-end-center\">\n <mat-icon id=\"sidenav-menu\" class=\"sidenav-toggle\" (click)=\"toggleSidenav()\">menu</mat-icon>\n </div>\n }\n\n <o-app-sidenav-image [opened-src]=\"openedSidenavImg\" [closed-src]=\"closedSidenavImg\"> </o-app-sidenav-image>\n <ng-content select=\"o-app-layout-sidenav-projection-start\"></ng-content>\n <div class=\"navMenu\">\n @for (menuRootItem of menuRootArray; track menuRootItem) {\n <nav>\n @if (appMenuService.getMenuItemType(menuRootItem) !== 'group' && appMenuService.isVisible(menuRootItem)) {\n <ul>\n <o-app-sidenav-menu-item [menu-item]=\"menuRootItem\" [menu-item-type]=\"appMenuService.getMenuItemType(menuRootItem)\"\n [sidenav-opened]=\"sidenav.opened\" (onClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-item>\n </ul>\n }\n @if (appMenuService.getMenuItemType(menuRootItem) === 'group' && appMenuService.isVisible(menuRootItem)) {\n <o-app-sidenav-menu-group [menu-group]=\"menuRootItem\" [sidenav-opened]=\"sidenav.opened\" level=\"1\"\n (onItemClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-group>\n }\n </nav>\n }\n </div>\n <div class=\"layout-sidenav-projection-end\">\n <ng-content select=\"o-app-layout-sidenav-projection-end\"></ng-content>\n </div>\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"o-app-sidenav-content\">\n <ng-content></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>\n", styles: [".o-app-sidenav{font-weight:400}.o-app-sidenav .navMenu{flex:1;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden}@-moz-document url-prefix(){.o-app-sidenav .navMenu{height:100%}}.o-app-sidenav .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-menu-item a{margin-left:8px}.o-app-sidenav .o-app-sidenav-menu-group a .mat-icon svg,.o-app-sidenav .o-app-sidenav-menu-item a .mat-icon svg{display:flex}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-mdc-button-persistent-ripple,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-mdc-button-persistent-ripple{display:none}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .o-app-sidenav-item,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .o-app-sidenav-item{opacity:.5}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] a,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] a{cursor:initial}.o-app-sidenav .o-app-sidenav-menugroup{transition:background-color .5s}.o-app-sidenav .o-app-sidenav-menugroup-items-container{overflow:hidden}.o-app-sidenav .o-app-sidenav-container{width:100%;height:100%}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-sidenav.mat-drawer-closed{visibility:visible!important;transform:translate3d(-183px,0,0)}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-content.mat-drawer-content{margin-right:56px!important;transform:translate3d(56px,0,0)!important}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content{position:absolute;right:0;left:0;min-height:100%;display:flex;flex-direction:column}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content router-outlet+*{flex-grow:1}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav{width:240px;bottom:0;overflow:hidden;height:100%;display:flex}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container{display:flex;margin:0 8px;width:calc(100% - 16px)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .sidenav-wrapper{flex:1}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items .mat-drawer-inner-container{display:block}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items .sidenav-wrapper{height:100%;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .o-app-sidenav-content-container{padding-bottom:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .sidenav-toggle-container{height:48px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .sidenav-toggle{padding:4px 12px 8px;cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav ul{list-style-type:none;margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav ul li{margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav{width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav a{border-radius:8px;box-sizing:border-box;display:block;line-height:40px;height:40px;font-size:14px;max-width:100%;margin-bottom:2px;font-weight:400}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav a>.mat-icon{vertical-align:middle;height:24px;width:24px;font-size:24px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup{transition:padding .5s 0s}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup .o-app-sidenav-menugroup-arrow{transition:.5s transform cubic-bezier(.25,.8,.25,1)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup .o-app-sidenav-menugroup-arrow.opened{transform:rotate(90deg)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup mat-icon:not(.o-app-sidenav-menugroup-arrow),.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menuitem mat-icon:not(.o-app-sidenav-menugroup-arrow){margin-right:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a{padding:0 16px;margin:0;display:flex;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label{display:flex;min-width:0;flex:1;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div{display:flex;align-items:center;min-width:0;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div .o-app-sidenav-menuitem-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div .o-app-sidenav-menugroup-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div .o-app-sidenav-menuitem-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div .o-app-sidenav-menugroup-title{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1 a{font-size:14px;line-height:40px;height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container{padding-left:16px;box-sizing:border-box;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:12px;line-height:36px;height:36px;max-width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container a .mdc-button__label{padding-left:6px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a{font-size:12px;line-height:36px;height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a .mat-mdc-button-touch-target{height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container{padding-left:32px;box-sizing:border-box;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:11px;line-height:32px;height:32px;max-width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:32px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-icon,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-icon{font-size:20px;height:20px;width:20px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed{text-align:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .mat-drawer-inner-container{margin:0;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .mat-drawer-inner-container .sidenav-toggle{padding:8px 16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item:not(.o-user-info){cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:focus,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:hover{color:inherit}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menugroup,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menuitem{display:inline-block;text-align:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav{width:56px;min-width:56px;margin-left:auto}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a{line-height:40px;height:40px;width:40px;min-width:40px;padding:0;margin:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .mat-icon{margin:auto}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .mdc-button__label{width:100%;display:flex;align-items:center;justify-content:center;height:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .o-layout-align-start-center{justify-content:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container{padding:0;text-align:end;max-height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container .o-app-sidenav-image{max-height:36px;margin-right:8px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closing{transform:translate3d(-183px,0,0)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .o-app-sidenav-menugroup-arrow{display:flex}\n"] }]
|
|
258
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-sidenav-container class=\"o-app-sidenav-container\" [class.opened]=\"sidenav.opened\"\n [class.o-app-sidenav-mode-desktop]=\"(layoutMode || 'desktop') === 'desktop'\"\n [class.o-app-sidenav-mode-mobile]=\"(layoutMode || 'desktop') !== 'desktop'\">\n\n <mat-sidenav #sidenav class=\"o-app-sidenav-sidenav o-scroll\" [opened]=\"isSidenavOpened()\"\n [mode]=\"(sidenavMode || ((layoutMode || 'desktop') === 'desktop' ? 'side' : 'over'))\" [class.mat-drawer-opened]=\"sidenav.opened\"\n [class.mat-drawer-closed]=\"!sidenav.opened\" [class.ellipsis-menu-items]=\"showEllipsisMenu\" (openedChange)=\"sidenavOpenedChange()\"\n (closedStart)=\"sidenavClosedStart()\" (openedStart)=\"sidenavOpenedStart()\">\n <div class=\"sidenav-wrapper o-flex-column\">\n @if (isDesktopMode()) {\n <div class=\"sidenav-toggle-container o-flex-row o-layout-align-end-center\">\n <mat-icon id=\"sidenav-menu\" class=\"sidenav-toggle\" (click)=\"toggleSidenav()\">menu</mat-icon>\n </div>\n }\n\n <o-app-sidenav-image [opened-src]=\"openedSidenavImg\" [closed-src]=\"closedSidenavImg\"> </o-app-sidenav-image>\n <ng-content select=\"o-app-layout-sidenav-projection-start\"></ng-content>\n <div class=\"navMenu\">\n @for (menuRootItem of menuRootArray; track menuRootItem) {\n <nav>\n @if (appMenuService.getMenuItemType(menuRootItem) !== 'group' && appMenuService.isVisible(menuRootItem)) {\n <ul>\n <o-app-sidenav-menu-item [menu-item]=\"menuRootItem\" [menu-item-type]=\"appMenuService.getMenuItemType(menuRootItem)\"\n [sidenav-opened]=\"sidenav.opened\" (onClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-item>\n </ul>\n }\n @if (appMenuService.getMenuItemType(menuRootItem) === 'group' && appMenuService.isVisible(menuRootItem)) {\n <o-app-sidenav-menu-group [menu-group]=\"menuRootItem\" [sidenav-opened]=\"sidenav.opened\" level=\"1\"\n (onItemClick)=\"onMenuItemClick()\">\n </o-app-sidenav-menu-group>\n }\n </nav>\n }\n </div>\n <div class=\"layout-sidenav-projection-end\">\n <ng-content select=\"o-app-layout-sidenav-projection-end\"></ng-content>\n </div>\n </div>\n </mat-sidenav>\n\n <mat-sidenav-content class=\"o-app-sidenav-content\">\n <ng-content></ng-content>\n </mat-sidenav-content>\n</mat-sidenav-container>\n", styles: [".o-app-sidenav{font-weight:400}.o-app-sidenav .navMenu{flex:1;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden}@-moz-document url-prefix(){.o-app-sidenav .navMenu{height:100%}}.o-app-sidenav .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-menu-item a{margin-left:8px}.o-app-sidenav .o-app-sidenav-menu-group a .mat-icon svg,.o-app-sidenav .o-app-sidenav-menu-item a .mat-icon svg{display:flex}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .mat-mdc-button-persistent-ripple,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-button-focus-overlay,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .mat-mdc-button-persistent-ripple{display:none}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] .o-app-sidenav-item,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] .o-app-sidenav-item{opacity:.5}.o-app-sidenav .o-app-sidenav-menu-group[disabled=true] a,.o-app-sidenav .o-app-sidenav-menu-item[disabled=true] a{cursor:initial}.o-app-sidenav .o-app-sidenav-menugroup{transition:background-color .5s}.o-app-sidenav .o-app-sidenav-menugroup-items-container{overflow:hidden}.o-app-sidenav .o-app-sidenav-container{width:100%;height:100%}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-sidenav.mat-drawer-closed{visibility:visible!important;transform:translate3d(-183px,0,0)}.o-app-sidenav .o-app-sidenav-container.o-app-sidenav-mode-desktop:not(.opened) .o-app-sidenav-content.mat-drawer-content{margin-right:56px!important;transform:translate3d(56px,0,0)!important}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content{position:absolute;right:0;left:0;min-height:100%;display:flex;flex-direction:column}.o-app-sidenav .o-app-sidenav-container .o-app-sidenav-content router-outlet+*{flex-grow:1}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav{width:240px;bottom:0;overflow:hidden;height:100%;display:flex;border-radius:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container{display:flex;margin:0 8px;width:calc(100% - 16px)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .mat-drawer-inner-container .sidenav-wrapper{flex:1}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items .mat-drawer-inner-container{display:block}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.ellipsis-menu-items .sidenav-wrapper{height:100%;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .o-app-sidenav-content-container{padding-bottom:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .sidenav-toggle-container{height:48px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .sidenav-toggle{padding:4px 12px 8px;cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav ul{list-style-type:none;margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav ul li{margin:0;padding:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav{width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav a{border-radius:8px;box-sizing:border-box;display:block;line-height:40px;height:40px;font-size:14px;max-width:100%;margin-bottom:2px;font-weight:400}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav nav a>.mat-icon{vertical-align:middle;height:24px;width:24px;font-size:24px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup{transition:padding .5s 0s}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup .o-app-sidenav-menugroup-arrow{transition:.5s transform cubic-bezier(.25,.8,.25,1)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup .o-app-sidenav-menugroup-arrow.opened{transform:rotate(90deg)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menugroup mat-icon:not(.o-app-sidenav-menugroup-arrow),.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menuitem mat-icon:not(.o-app-sidenav-menugroup-arrow){margin-right:16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a{padding:0 16px;margin:0;display:flex;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label{display:flex;min-width:0;flex:1;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div{display:flex;align-items:center;min-width:0;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div .o-app-sidenav-menuitem-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-group a .mdc-button__label>div .o-app-sidenav-menugroup-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div .o-app-sidenav-menuitem-title,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) o-app-sidenav-menu-item a .mdc-button__label>div .o-app-sidenav-menugroup-title{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1 a{font-size:14px;line-height:40px;height:40px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container{padding-left:16px;box-sizing:border-box;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:12px;line-height:36px;height:36px;max-width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-1>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container a .mdc-button__label{padding-left:6px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a{font-size:12px;line-height:36px;height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2 a .mat-mdc-button-touch-target{height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container{padding-left:32px;box-sizing:border-box;width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a{font-size:11px;line-height:32px;height:32px;max-width:100%;overflow:hidden}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-mdc-button-touch-target,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-mdc-button-touch-target{height:32px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-group a .mat-icon,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav:not(.mat-drawer-closed) .o-app-sidenav-menu-group-level-2>.o-app-sidenav-menugroup.opened+.o-app-sidenav-menugroup-items-container .o-app-sidenav-menu-item a .mat-icon{font-size:20px;height:20px;width:20px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed{text-align:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .mat-drawer-inner-container{margin:0;width:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .mat-drawer-inner-container .sidenav-toggle{padding:8px 16px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item:not(.o-user-info){cursor:pointer}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:focus,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-item.o-user-info:hover{color:inherit}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menugroup,.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-menuitem{display:inline-block;text-align:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav{width:56px;min-width:56px;margin-left:auto}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a{line-height:40px;height:40px;width:40px;min-width:40px;padding:0;margin:0}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .mat-icon{margin:auto}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .mdc-button__label{width:100%;display:flex;align-items:center;justify-content:center;height:100%}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed nav a .o-layout-align-start-center{justify-content:center}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container{padding:0;text-align:end;max-height:36px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closed .o-app-sidenav-image .o-app-sidenav-image-container .o-app-sidenav-image{max-height:36px;margin-right:8px}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav.mat-drawer-closing{transform:translate3d(-183px,0,0)}.o-app-sidenav .o-app-sidenav-container .mat-drawer.o-app-sidenav-sidenav .o-app-sidenav-menugroup-arrow{display:flex}\n"] }]
|
|
259
259
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.Router }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i2.BreakpointObserver }], propDecorators: { sidenav: [{
|
|
260
260
|
type: ViewChild,
|
|
261
261
|
args: [MatSidenav]
|
|
@@ -266,4 +266,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
266
266
|
type: HostListener,
|
|
267
267
|
args: ['window:resize', []]
|
|
268
268
|
}] } });
|
|
269
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1hcHAtc2lkZW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9hcHAtc2lkZW5hdi9vLWFwcC1zaWRlbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1zaWRlbmF2L28tYXBwLXNpZGVuYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osUUFBUSxFQUdSLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDaEcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDN0YsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQVksTUFBTSxvQ0FB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LG1FQUtVLFVBQVUsdUVDMUV2Qix3OEVBNkNBLGdwWkRZWSxnQkFBZ0IsMFlBQUUsYUFBYSxvTEFBRSx5QkFBeUIsc0dBQUUsNEJBQTRCLGlLQUFFLDZCQUE2Qjs7QUEwQnZIO0lBRFQscUJBQXFCLEVBQUU7O29EQUNTOzRGQVh0QixvQkFBb0I7a0JBakJoQyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLGFBQWEsRUFBRSx5QkFBeUIsRUFBRSw0QkFBNEIsRUFBRSw2QkFBNkIsQ0FBQyxZQUN4SCxlQUFlLFVBQ2pCLDRCQUE0QixXQUMzQiw2QkFBNkIsaUJBR3ZCLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osdUJBQXVCLEVBQUUsTUFBTTtxQkFDaEMsYUFDVTt3QkFDVCxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUMsRUFBRTtxQkFDbEYsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07NExBSy9DLE9BQU87c0JBRE4sU0FBUzt1QkFBQyxVQUFVO2dCQVNYLE1BQU0sTUE0RmhCLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFO2dCQThCdkMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3RvcixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRTaWRlbmF2TW9kdWxlLCBNYXRTaWRlbmF2IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5cbmltcG9ydCB7IE9BcHBTaWRlbmF2SW1hZ2VDb21wb25lbnQgfSBmcm9tICcuL2ltYWdlL28tYXBwLXNpZGVuYXYtaW1hZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IE9BcHBTaWRlbmF2TWVudUdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9tZW51LWdyb3VwL28tYXBwLXNpZGVuYXYtbWVudS1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0FwcFNpZGVuYXZNZW51SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vbWVudS1pdGVtL28tYXBwLXNpZGVuYXYtbWVudS1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciB9IGZyb20gJy4uLy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IE1lbnVHcm91cCwgTWVudUl0ZW1Vc2VySW5mbyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYXBwLW1lbnUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFwcE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwLW1lbnUuc2VydmljZSc7XG5pbXBvcnQgeyBPVXNlckluZm9TZXJ2aWNlLCBVc2VySW5mbyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL28tdXNlci1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgT0FwcFNpZGVuYXZDb21wb25lbnRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdGF0ZS9vLWFwcC1tZW51LWNvbXBvbmVudC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1lbnVSb290SXRlbSB9IGZyb20gJy4uLy4uL3R5cGVzL21lbnUtcm9vdC1pdGVtLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMsIE9BcHBMYXlvdXRNb2RlLCBPU2lkZW5hdk1vZGUgfSBmcm9tICcuLi8uLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0FwcFNpZGVuYXZCYXNlIH0gZnJvbSAnLi9vLWFwcC1zaWRlbmF2LWJhc2UuY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19BUFBfU0lERU5BViA9IFtcbiAgJ29wZW5lZCcsXG4gICdzaG93VXNlckluZm86IHNob3ctdXNlci1pbmZvJyxcbiAgJ3Nob3dUb2dnbGVCdXR0b246IHNob3ctdG9nZ2xlLWJ1dHRvbicsXG4gICdvcGVuZWRTaWRlbmF2SW1nOiBvcGVuZWQtc2lkZW5hdi1pbWFnZScsXG4gICdjbG9zZWRTaWRlbmF2SW1nOiBjbG9zZWQtc2lkZW5hdi1pbWFnZScsXG4gICdsYXlvdXRNb2RlOiBsYXlvdXQtbW9kZScsXG4gICdzaWRlbmF2TW9kZTogc2lkZW5hdi1tb2RlJyxcbiAgJ3N0b3JlU3RhdGU6IHN0b3JlLXN0YXRlJyxcbiAgJ3Nob3dFbGxpcHNpc01lbnU6IHNob3ctZWxsaXBzaXMtbWVudSdcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19BUFBfU0lERU5BViA9IFtcbiAgJ29uU2lkZW5hdk9wZW5lZENoYW5nZScsXG4gICdvblNpZGVuYXZPcGVuZWRTdGFydCcsXG4gICdvblNpZGVuYXZDbG9zZWRTdGFydCcsXG4gICdvblNpZGVuYXZUb2dnbGUnLFxuICAnYWZ0ZXJTaWRlbmF2VG9nZ2xlJ1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtNYXRTaWRlbmF2TW9kdWxlLCBNYXRJY29uTW9kdWxlLCBPQXBwU2lkZW5hdkltYWdlQ29tcG9uZW50LCBPQXBwU2lkZW5hdk1lbnVJdGVtQ29tcG9uZW50LCBPQXBwU2lkZW5hdk1lbnVHcm91cENvbXBvbmVudF0sXG4gIHNlbGVjdG9yOiAnby1hcHAtc2lkZW5hdicsXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19BUFBfU0lERU5BVixcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fQVBQX1NJREVOQVYsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLWFwcC1zaWRlbmF2LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1hcHAtc2lkZW5hdi5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLWFwcC1zaWRlbmF2XSc6ICd0cnVlJ1xuICB9LFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE9BcHBTaWRlbmF2QmFzZSwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gT0FwcFNpZGVuYXZDb21wb25lbnQpIH1cbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgT0FwcFNpZGVuYXZDb21wb25lbnQgZXh0ZW5kcyBPQXBwU2lkZW5hdkNvbXBvbmVudFN0YXRlU2VydmljZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcblxuICBAVmlld0NoaWxkKE1hdFNpZGVuYXYpXG4gIHNpZGVuYXY6IE1hdFNpZGVuYXY7XG5cbiAgcHJvdGVjdGVkIHJvdXRlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBhcHBNZW51U2VydmljZTogQXBwTWVudVNlcnZpY2U7XG4gIG1lbnVSb290QXJyYXk6IE1lbnVSb290SXRlbVtdID0gW107XG4gIHByb3RlY3RlZCBfbGF5b3V0TW9kZTogT0FwcExheW91dE1vZGUgPSBDb2Rlcy5BUFBfTEFZT1VUX01PREVfREVTS1RPUDtcbiAgcHJvdGVjdGVkIF9zaWRlbmF2TW9kZTogT1NpZGVuYXZNb2RlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHJvdGVjdGVkIG9wZW5lZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgc2hvd0VsbGlwc2lzTWVudTogYm9vbGVhbiA9IGZhbHNlO1xuICBfc2hvd1VzZXJJbmZvOiBib29sZWFuID0gdHJ1ZTtcbiAgX3Nob3dUb2dnbGVCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuICBvcGVuZWRTaWRlbmF2SW1nOiBzdHJpbmc7XG4gIGNsb3NlZFNpZGVuYXZJbWc6IHN0cmluZztcblxuICBvblNpZGVuYXZPcGVuZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgb25TaWRlbmF2T3BlbmVkU3RhcnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgb25TaWRlbmF2Q2xvc2VkU3RhcnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgb25TaWRlbmF2VG9nZ2xlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIGFmdGVyU2lkZW5hdlRvZ2dsZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBwcm90ZWN0ZWQgb1VzZXJJbmZvU2VydmljZTogT1VzZXJJbmZvU2VydmljZTtcbiAgcHJvdGVjdGVkIHVzZXJJbmZvU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBwZXJtaXNzaW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCB1c2VySW5mbzogVXNlckluZm87XG5cbiAgcHJvdGVjdGVkIG1lZGlhV2F0Y2g6IFN1YnNjcmlwdGlvbjtcbiAgcHJvdGVjdGVkIG1hbnVhbGx5Q2xvc2VkOiBib29sZWFuID0gZmFsc2U7XG4gIG9uUm91dGVDaGFuZ2VTdG9yYWdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHN0b3JlU3RhdGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgIHByb3RlY3RlZCBlbFJlZjogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByb3RlY3RlZCBtZWRpYTogQnJlYWtwb2ludE9ic2VydmVyXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB0aGlzLmFwcE1lbnVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQXBwTWVudVNlcnZpY2UpO1xuICAgIHRoaXMubWVudVJvb3RBcnJheSA9IHRoaXMuYXBwTWVudVNlcnZpY2UuZ2V0TWVudVJvb3RzKCk7XG4gICAgdGhpcy5wZXJtaXNzaW9uU3Vic2NyaXB0aW9uID0gdGhpcy5hcHBNZW51U2VydmljZS5vblBlcm1pc3Npb25NZW51Q2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZWZyZXNoTWVudVJvb3RzKCkpO1xuICAgIHRoaXMub1VzZXJJbmZvU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9Vc2VySW5mb1NlcnZpY2UpO1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHRoaXMubWVkaWFXYXRjaCA9IHRoaXMubWVkaWEub2JzZXJ2ZShbQnJlYWtwb2ludHMuWFNtYWxsXSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmIChzZWxmLmlzU2NyZWVuU21hbGwoKSAmJiBzZWxmLnNpZGVuYXYpIHtcbiAgICAgICAgc2VsZi5zaWRlbmF2LmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5yZWdpc3RlckxvY2FsU3RvcmFnZVNlcnZpY2VSb3V0ZUNoYW5nZSgpO1xuICB9XG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc1NjcmVlblNtYWxsKCkpIHtcbiAgICAgICAgdGhpcy5zaWRlbmF2LmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmluaXRpYWxpemUodGhpcyk7XG4gICAgdGhpcy5yZXN0b3JlTWVudUdyb3VwU3RhdGUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5zaG93VXNlckluZm8gJiYgdGhpcy5zaG93VG9nZ2xlQnV0dG9uKSB7XG4gICAgICB0aGlzLnVzZXJJbmZvID0gdGhpcy5vVXNlckluZm9TZXJ2aWNlLmdldFVzZXJJbmZvKCk7XG4gICAgICB0aGlzLnVzZXJJbmZvU3Vic2NyaXB0aW9uID0gdGhpcy5vVXNlckluZm9TZXJ2aWNlLmdldFVzZXJJbmZvT2JzZXJ2YWJsZSgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLnVzZXJJbmZvID0gcmVzO1xuICAgICAgICB0aGlzLnJlZnJlc2hNZW51SXRlbVVzZXJJbmZvKCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5yZWZyZXNoTWVudUl0ZW1Vc2VySW5mbygpO1xuICB9XG5cbiAgZ2V0RGF0YVRvU3RvcmUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZTtcblxuICB9XG5cbiAgcmVzdG9yZU1lbnVHcm91cFN0YXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UgJiYgdGhpcy5zdG9yZVN0YXRlKSB7XG4gICAgICBsZXQgbWVudVN0YXRlOiB7IGlkOiBzdHJpbmcsIG9wZW5lZDogYm9vbGVhbiB9W10gPSB0aGlzLnN0YXRlLm1lbnUgPz8gW107XG5cbiAgICAgIHRoaXMubWVudVJvb3RBcnJheS5mb3JFYWNoKChncm91cDogTWVudUdyb3VwKSA9PiB7XG4gICAgICAgIGNvbnN0IHNhdmVkU3RhdGUgPSBtZW51U3RhdGUuZmluZChtZW51T3B0aW9uID0+IG1lbnVPcHRpb24uaWQgPT09IGdyb3VwLmlkKTtcbiAgICAgICAgaWYgKHNhdmVkU3RhdGUpIHtcbiAgICAgICAgICBncm91cC5vcGVuZWQgPSBzYXZlZFN0YXRlLm9wZW5lZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q29tcG9uZW50S2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdPQXBwU2lkZW5hdkNvbXBvbmVudCc7XG4gIH1cblxuICBnZXRSb3V0ZUtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6YmVmb3JldW5sb2FkJywgW10pXG4gIGJlZm9yZXVubG9hZEhhbmRsZXIoKSB7XG4gICAgdGhpcy51cGRhdGVTdGF0ZVN0b3JhZ2UoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWdpc3RlckxvY2FsU3RvcmFnZVNlcnZpY2VSb3V0ZUNoYW5nZSgpIHtcbiAgICBpZiAodGhpcy5zdG9yZVN0YXRlKSB7XG4gICAgICB0aGlzLm9uUm91dGVDaGFuZ2VTdG9yYWdlU3Vic2NyaXB0aW9uID0gdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLm9uUm91dGVDaGFuZ2Uuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlU3RhdGVTdG9yYWdlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGVyc2lzdHMgdGhlIGN1cnJlbnQgY29tcG9uZW50IHN0YXRlIGluIGxvY2FsIHN0b3JhZ2Ugd2hlbiBlbmFibGVkLlxuICAgKlxuICAgKiBTdG9yZXMgbWVudS1yZWxhdGVkIHN0YXRlIG9ubHkgaWYgdGhlIHN0YXRlIHBlcnNpc3RlbmNlIGlzIGVuYWJsZWQuXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlU3RhdGVTdG9yYWdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UgJiYgdGhpcy5zdG9yZVN0YXRlKSB7XG4gICAgICB0aGlzLnN0b3JlTWVudSgpO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2hNZW51Um9vdHMoKTogdm9pZCB7XG4gICAgdGhpcy5tZW51Um9vdEFycmF5ID0gWy4uLnRoaXMuYXBwTWVudVNlcnZpY2UuZ2V0TWVudVJvb3RzKCldO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFtdKVxuICBvblJlc2l6ZSgpIHtcbiAgICBpZiAoIXRoaXMubWFudWFsbHlDbG9zZWQgJiYgIXRoaXMuaXNTY3JlZW5TbWFsbCgpICYmICF0aGlzLmlzTW9iaWxlTW9kZSgpKSB7XG4gICAgICB0aGlzLnNpZGVuYXYub3BlbigpO1xuICAgIH1cbiAgfVxuXG5cbiAgZ2V0IGxheW91dE1vZGUoKTogT0FwcExheW91dE1vZGUge1xuICAgIHJldHVybiB0aGlzLl9sYXlvdXRNb2RlO1xuICB9XG5cbiAgc2V0IGxheW91dE1vZGUodmFsOiBPQXBwTGF5b3V0TW9kZSkge1xuICAgIGNvbnN0IG0gPSBDb2Rlcy5PQXBwTGF5b3V0TW9kZXMuZmluZChlID0+IGUgPT09IHZhbCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKG0pKSB7XG4gICAgICB0aGlzLl9sYXlvdXRNb2RlID0gbTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2lkZW5hdk1vZGUoKTogT1NpZGVuYXZNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5fc2lkZW5hdk1vZGU7XG4gIH1cblxuICBzZXQgc2lkZW5hdk1vZGUodmFsOiBPU2lkZW5hdk1vZGUpIHtcbiAgICBjb25zdCBtID0gQ29kZXMuT1NpZGVuYXZNb2Rlcy5maW5kKGUgPT4gZSA9PT0gdmFsKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQobSkpIHtcbiAgICAgIHRoaXMuX3NpZGVuYXZNb2RlID0gbTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVmcmVzaE1lbnVJdGVtVXNlckluZm8oKSB7XG4gICAgaWYgKHRoaXMuc2hvd1VzZXJJbmZvICYmIHRoaXMudXNlckluZm8gJiYgdGhpcy5fc2hvd1RvZ2dsZUJ1dHRvbikge1xuICAgICAgY29uc3QgZmlyc3RSb290ID0gdGhpcy5tZW51Um9vdEFycmF5WzBdO1xuICAgICAgY29uc3QgYWxyZWFkeUV4aXN0c1VzZXJJbmZvID0gZmlyc3RSb290ID8gZmlyc3RSb290LmlkID09PSAndXNlci1pbmZvJyA6IGZhbHNlO1xuICAgICAgaWYgKGFscmVhZHlFeGlzdHNVc2VySW5mbykge1xuICAgICAgICBjb25zdCB1c2VySW5mb0l0ZW06IE1lbnVJdGVtVXNlckluZm8gPSAodGhpcy5tZW51Um9vdEFycmF5WzBdIGFzIE1lbnVHcm91cCkuaXRlbXNbMF0gYXMgTWVudUl0ZW1Vc2VySW5mbztcbiAgICAgICAgdXNlckluZm9JdGVtLmlkID0gdGhpcy51c2VySW5mby51c2VybmFtZTtcbiAgICAgICAgdXNlckluZm9JdGVtLm5hbWUgPSB0aGlzLnVzZXJJbmZvLnVzZXJuYW1lO1xuICAgICAgICB1c2VySW5mb0l0ZW0udXNlciA9IHRoaXMudXNlckluZm8udXNlcm5hbWU7XG4gICAgICAgIHVzZXJJbmZvSXRlbS5hdmF0YXIgPSB0aGlzLnVzZXJJbmZvLmF2YXRhcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHVzZXJJbmZvSXRlbTogTWVudUl0ZW1Vc2VySW5mbyA9IHtcbiAgICAgICAgICBpZDogdGhpcy51c2VySW5mby51c2VybmFtZSxcbiAgICAgICAgICBuYW1lOiB0aGlzLnVzZXJJbmZvLnVzZXJuYW1lLFxuICAgICAgICAgIHVzZXI6IHRoaXMudXNlckluZm8udXNlcm5hbWUsXG4gICAgICAgICAgYXZhdGFyOiB0aGlzLnVzZXJJbmZvLmF2YXRhclxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBtZW51R3JvdXBVc2VySW5mbzogTWVudUdyb3VwID0ge1xuICAgICAgICAgIGlkOiAndXNlci1pbmZvJyxcbiAgICAgICAgICBuYW1lOiAnQVBQX0xBWU9VVC5VU0VSX1BST0ZJTEUnLFxuICAgICAgICAgIGl0ZW1zOiBbdXNlckluZm9JdGVtXSxcbiAgICAgICAgICBvcGVuZWQ6IHRydWUsXG4gICAgICAgICAgaWNvbjogJ3BlcnNvbl9waW4nXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubWVudVJvb3RBcnJheS51bnNoaWZ0KG1lbnVHcm91cFVzZXJJbmZvKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudXNlckluZm9TdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMudXNlckluZm9TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wZXJtaXNzaW9uU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnBlcm1pc3Npb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBpc1NjcmVlblNtYWxsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5tYW51YWxseUNsb3NlZCAmJiB0aGlzLm1lZGlhLmlzTWF0Y2hlZChCcmVha3BvaW50cy5YU21hbGwpO1xuICB9XG5cbiAgaXNNb2JpbGVNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9sYXlvdXRNb2RlID09PSBDb2Rlcy5BUFBfTEFZT1VUX01PREVfTU9CSUxFO1xuICB9XG5cbiAgaXNEZXNrdG9wTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbGF5b3V0TW9kZSA9PT0gQ29kZXMuQVBQX0xBWU9VVF9NT0RFX0RFU0tUT1A7XG4gIH1cblxuICBpc1NpZGVuYXZPcGVuZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub3BlbmVkICYmICF0aGlzLmlzTW9iaWxlTW9kZSgpICYmICF0aGlzLmlzU2NyZWVuU21hbGwoKTtcbiAgfVxuXG4gIHRvZ2dsZVNpZGVuYXYoKSB7XG4gICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuc2lkZW5hdi5vcGVuZWQgPyB0aGlzLnNpZGVuYXYuY2xvc2UoKSA6IHRoaXMuc2lkZW5hdi5vcGVuKCk7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgcHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgIHNlbGYuYWZ0ZXJTaWRlbmF2VG9nZ2xlLmVtaXQoc2VsZi5zaWRlbmF2Lm9wZW5lZCk7XG4gICAgfSk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5vcGVuZWQgPSB0aGlzLnNpZGVuYXYub3BlbmVkO1xuICAgIHRoaXMubWFudWFsbHlDbG9zZWQgPSAhdGhpcy5vcGVuZWQ7XG4gICAgdGhpcy5vblNpZGVuYXZUb2dnbGUuZW1pdCh0aGlzLnNpZGVuYXYub3BlbmVkKTtcbiAgfVxuXG4gIGdldCBzaG93VXNlckluZm8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dVc2VySW5mbztcbiAgfVxuXG4gIHNldCBzaG93VXNlckluZm8oYXJnOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd1VzZXJJbmZvID0gYXJnO1xuICB9XG5cbiAgZ2V0IHNob3dUb2dnbGVCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dUb2dnbGVCdXR0b247XG4gIH1cblxuICBzZXQgc2hvd1RvZ2dsZUJ1dHRvbihhcmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zaG93VG9nZ2xlQnV0dG9uID0gYXJnO1xuICB9XG5cbiAgb25NZW51SXRlbUNsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzTW9iaWxlTW9kZSgpKSB7XG4gICAgICB0aGlzLnNpZGVuYXYuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBzaWRlbmF2Q2xvc2VkU3RhcnQoKSB7XG4gICAgdGhpcy5vblNpZGVuYXZDbG9zZWRTdGFydC5lbWl0KCk7XG4gIH1cblxuICBzaWRlbmF2T3BlbmVkU3RhcnQoKSB7XG4gICAgdGhpcy5vblNpZGVuYXZPcGVuZWRTdGFydC5lbWl0KCk7XG4gIH1cblxuICBzaWRlbmF2T3BlbmVkQ2hhbmdlKCkge1xuICAgIHRoaXMub25TaWRlbmF2T3BlbmVkQ2hhbmdlLmVtaXQoKTtcbiAgfVxufVxuXG4iLCI8bWF0LXNpZGVuYXYtY29udGFpbmVyIGNsYXNzPVwiby1hcHAtc2lkZW5hdi1jb250YWluZXJcIiBbY2xhc3Mub3BlbmVkXT1cInNpZGVuYXYub3BlbmVkXCJcbiAgW2NsYXNzLm8tYXBwLXNpZGVuYXYtbW9kZS1kZXNrdG9wXT1cIihsYXlvdXRNb2RlIHx8ICdkZXNrdG9wJykgPT09ICdkZXNrdG9wJ1wiXG4gIFtjbGFzcy5vLWFwcC1zaWRlbmF2LW1vZGUtbW9iaWxlXT1cIihsYXlvdXRNb2RlIHx8ICdkZXNrdG9wJykgIT09ICdkZXNrdG9wJ1wiPlxuXG4gIDxtYXQtc2lkZW5hdiAjc2lkZW5hdiBjbGFzcz1cIm8tYXBwLXNpZGVuYXYtc2lkZW5hdiBvLXNjcm9sbFwiIFtvcGVuZWRdPVwiaXNTaWRlbmF2T3BlbmVkKClcIlxuICAgIFttb2RlXT1cIihzaWRlbmF2TW9kZSB8fCAoKGxheW91dE1vZGUgfHwgJ2Rlc2t0b3AnKSA9PT0gJ2Rlc2t0b3AnID8gJ3NpZGUnIDogJ292ZXInKSlcIiBbY2xhc3MubWF0LWRyYXdlci1vcGVuZWRdPVwic2lkZW5hdi5vcGVuZWRcIlxuICAgIFtjbGFzcy5tYXQtZHJhd2VyLWNsb3NlZF09XCIhc2lkZW5hdi5vcGVuZWRcIiBbY2xhc3MuZWxsaXBzaXMtbWVudS1pdGVtc109XCJzaG93RWxsaXBzaXNNZW51XCIgKG9wZW5lZENoYW5nZSk9XCJzaWRlbmF2T3BlbmVkQ2hhbmdlKClcIlxuICAgIChjbG9zZWRTdGFydCk9XCJzaWRlbmF2Q2xvc2VkU3RhcnQoKVwiIChvcGVuZWRTdGFydCk9XCJzaWRlbmF2T3BlbmVkU3RhcnQoKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJzaWRlbmF2LXdyYXBwZXIgby1mbGV4LWNvbHVtblwiPlxuICAgICAgQGlmIChpc0Rlc2t0b3BNb2RlKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInNpZGVuYXYtdG9nZ2xlLWNvbnRhaW5lciBvLWZsZXgtcm93IG8tbGF5b3V0LWFsaWduLWVuZC1jZW50ZXJcIj5cbiAgICAgICAgICA8bWF0LWljb24gaWQ9XCJzaWRlbmF2LW1lbnVcIiBjbGFzcz1cInNpZGVuYXYtdG9nZ2xlXCIgKGNsaWNrKT1cInRvZ2dsZVNpZGVuYXYoKVwiPm1lbnU8L21hdC1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgPG8tYXBwLXNpZGVuYXYtaW1hZ2UgW29wZW5lZC1zcmNdPVwib3BlbmVkU2lkZW5hdkltZ1wiIFtjbG9zZWQtc3JjXT1cImNsb3NlZFNpZGVuYXZJbWdcIj4gPC9vLWFwcC1zaWRlbmF2LWltYWdlPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiby1hcHAtbGF5b3V0LXNpZGVuYXYtcHJvamVjdGlvbi1zdGFydFwiPjwvbmctY29udGVudD5cbiAgICAgIDxkaXYgY2xhc3M9XCJuYXZNZW51XCI+XG4gICAgICAgIEBmb3IgKG1lbnVSb290SXRlbSBvZiBtZW51Um9vdEFycmF5OyB0cmFjayBtZW51Um9vdEl0ZW0pIHtcbiAgICAgICAgICA8bmF2PlxuICAgICAgICAgICAgQGlmIChhcHBNZW51U2VydmljZS5nZXRNZW51SXRlbVR5cGUobWVudVJvb3RJdGVtKSAhPT0gJ2dyb3VwJyAmJiBhcHBNZW51U2VydmljZS5pc1Zpc2libGUobWVudVJvb3RJdGVtKSkge1xuICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgPG8tYXBwLXNpZGVuYXYtbWVudS1pdGVtIFttZW51LWl0ZW1dPVwibWVudVJvb3RJdGVtXCIgW21lbnUtaXRlbS10eXBlXT1cImFwcE1lbnVTZXJ2aWNlLmdldE1lbnVJdGVtVHlwZShtZW51Um9vdEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgIFtzaWRlbmF2LW9wZW5lZF09XCJzaWRlbmF2Lm9wZW5lZFwiIChvbkNsaWNrKT1cIm9uTWVudUl0ZW1DbGljaygpXCI+XG4gICAgICAgICAgICAgICAgPC9vLWFwcC1zaWRlbmF2LW1lbnUtaXRlbT5cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoYXBwTWVudVNlcnZpY2UuZ2V0TWVudUl0ZW1UeXBlKG1lbnVSb290SXRlbSkgPT09ICdncm91cCcgJiYgYXBwTWVudVNlcnZpY2UuaXNWaXNpYmxlKG1lbnVSb290SXRlbSkpIHtcbiAgICAgICAgICAgICAgPG8tYXBwLXNpZGVuYXYtbWVudS1ncm91cCBbbWVudS1ncm91cF09XCJtZW51Um9vdEl0ZW1cIiBbc2lkZW5hdi1vcGVuZWRdPVwic2lkZW5hdi5vcGVuZWRcIiBsZXZlbD1cIjFcIlxuICAgICAgICAgICAgICAgIChvbkl0ZW1DbGljayk9XCJvbk1lbnVJdGVtQ2xpY2soKVwiPlxuICAgICAgICAgICAgICA8L28tYXBwLXNpZGVuYXYtbWVudS1ncm91cD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L25hdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXNpZGVuYXYtcHJvamVjdGlvbi1lbmRcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiby1hcHAtbGF5b3V0LXNpZGVuYXYtcHJvamVjdGlvbi1lbmRcIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtc2lkZW5hdj5cblxuICA8bWF0LXNpZGVuYXYtY29udGVudCBjbGFzcz1cIm8tYXBwLXNpZGVuYXYtY29udGVudFwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9tYXQtc2lkZW5hdi1jb250ZW50PlxuPC9tYXQtc2lkZW5hdi1jb250YWluZXI+XG4iXX0=
|
|
269
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1hcHAtc2lkZW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnRpbWl6ZS13ZWItbmd4L3NyYy9saWIvY29tcG9uZW50cy9hcHAtc2lkZW5hdi9vLWFwcC1zaWRlbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1zaWRlbmF2L28tYXBwLXNpZGVuYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osUUFBUSxFQUdSLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDaEcsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDN0YsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBR3pDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQVksTUFBTSxvQ0FB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LG1FQUtVLFVBQVUsdUVDMUV2Qix3OEVBNkNBLGdxWkRZWSxnQkFBZ0IsMFlBQUUsYUFBYSxvTEFBRSx5QkFBeUIsc0dBQUUsNEJBQTRCLGlLQUFFLDZCQUE2Qjs7QUEwQnZIO0lBRFQscUJBQXFCLEVBQUU7O29EQUNTOzRGQVh0QixvQkFBb0I7a0JBakJoQyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLGdCQUFnQixFQUFFLGFBQWEsRUFBRSx5QkFBeUIsRUFBRSw0QkFBNEIsRUFBRSw2QkFBNkIsQ0FBQyxZQUN4SCxlQUFlLFVBQ2pCLDRCQUE0QixXQUMzQiw2QkFBNkIsaUJBR3ZCLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osdUJBQXVCLEVBQUUsTUFBTTtxQkFDaEMsYUFDVTt3QkFDVCxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUMsRUFBRTtxQkFDbEYsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07NExBSy9DLE9BQU87c0JBRE4sU0FBUzt1QkFBQyxVQUFVO2dCQVNYLE1BQU0sTUE0RmhCLG1CQUFtQjtzQkFEbEIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFO2dCQThCdkMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUsRUFBRSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbmplY3RvcixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRTaWRlbmF2TW9kdWxlLCBNYXRTaWRlbmF2IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5cbmltcG9ydCB7IE9BcHBTaWRlbmF2SW1hZ2VDb21wb25lbnQgfSBmcm9tICcuL2ltYWdlL28tYXBwLXNpZGVuYXYtaW1hZ2UuY29tcG9uZW50JztcbmltcG9ydCB7IE9BcHBTaWRlbmF2TWVudUdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9tZW51LWdyb3VwL28tYXBwLXNpZGVuYXYtbWVudS1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT0FwcFNpZGVuYXZNZW51SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vbWVudS1pdGVtL28tYXBwLXNpZGVuYXYtbWVudS1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciB9IGZyb20gJy4uLy4uL2RlY29yYXRvcnMvaW5wdXQtY29udmVydGVyJztcbmltcG9ydCB7IE1lbnVHcm91cCwgTWVudUl0ZW1Vc2VySW5mbyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYXBwLW1lbnUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFwcE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwLW1lbnUuc2VydmljZSc7XG5pbXBvcnQgeyBPVXNlckluZm9TZXJ2aWNlLCBVc2VySW5mbyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL28tdXNlci1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgT0FwcFNpZGVuYXZDb21wb25lbnRTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdGF0ZS9vLWFwcC1tZW51LWNvbXBvbmVudC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IE1lbnVSb290SXRlbSB9IGZyb20gJy4uLy4uL3R5cGVzL21lbnUtcm9vdC1pdGVtLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMsIE9BcHBMYXlvdXRNb2RlLCBPU2lkZW5hdk1vZGUgfSBmcm9tICcuLi8uLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuLi8uLi91dGlsL3V0aWwnO1xuaW1wb3J0IHsgT0FwcFNpZGVuYXZCYXNlIH0gZnJvbSAnLi9vLWFwcC1zaWRlbmF2LWJhc2UuY2xhc3MnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9JTlBVVFNfT19BUFBfU0lERU5BViA9IFtcbiAgJ29wZW5lZCcsXG4gICdzaG93VXNlckluZm86IHNob3ctdXNlci1pbmZvJyxcbiAgJ3Nob3dUb2dnbGVCdXR0b246IHNob3ctdG9nZ2xlLWJ1dHRvbicsXG4gICdvcGVuZWRTaWRlbmF2SW1nOiBvcGVuZWQtc2lkZW5hdi1pbWFnZScsXG4gICdjbG9zZWRTaWRlbmF2SW1nOiBjbG9zZWQtc2lkZW5hdi1pbWFnZScsXG4gICdsYXlvdXRNb2RlOiBsYXlvdXQtbW9kZScsXG4gICdzaWRlbmF2TW9kZTogc2lkZW5hdi1tb2RlJyxcbiAgJ3N0b3JlU3RhdGU6IHN0b3JlLXN0YXRlJyxcbiAgJ3Nob3dFbGxpcHNpc01lbnU6IHNob3ctZWxsaXBzaXMtbWVudSdcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19BUFBfU0lERU5BViA9IFtcbiAgJ29uU2lkZW5hdk9wZW5lZENoYW5nZScsXG4gICdvblNpZGVuYXZPcGVuZWRTdGFydCcsXG4gICdvblNpZGVuYXZDbG9zZWRTdGFydCcsXG4gICdvblNpZGVuYXZUb2dnbGUnLFxuICAnYWZ0ZXJTaWRlbmF2VG9nZ2xlJ1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtNYXRTaWRlbmF2TW9kdWxlLCBNYXRJY29uTW9kdWxlLCBPQXBwU2lkZW5hdkltYWdlQ29tcG9uZW50LCBPQXBwU2lkZW5hdk1lbnVJdGVtQ29tcG9uZW50LCBPQXBwU2lkZW5hdk1lbnVHcm91cENvbXBvbmVudF0sXG4gIHNlbGVjdG9yOiAnby1hcHAtc2lkZW5hdicsXG4gIGlucHV0czogREVGQVVMVF9JTlBVVFNfT19BUFBfU0lERU5BVixcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fQVBQX1NJREVOQVYsXG4gIHRlbXBsYXRlVXJsOiAnLi9vLWFwcC1zaWRlbmF2LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vby1hcHAtc2lkZW5hdi5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLWFwcC1zaWRlbmF2XSc6ICd0cnVlJ1xuICB9LFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IE9BcHBTaWRlbmF2QmFzZSwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gT0FwcFNpZGVuYXZDb21wb25lbnQpIH1cbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgT0FwcFNpZGVuYXZDb21wb25lbnQgZXh0ZW5kcyBPQXBwU2lkZW5hdkNvbXBvbmVudFN0YXRlU2VydmljZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcblxuICBAVmlld0NoaWxkKE1hdFNpZGVuYXYpXG4gIHNpZGVuYXY6IE1hdFNpZGVuYXY7XG5cbiAgcHJvdGVjdGVkIHJvdXRlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBhcHBNZW51U2VydmljZTogQXBwTWVudVNlcnZpY2U7XG4gIG1lbnVSb290QXJyYXk6IE1lbnVSb290SXRlbVtdID0gW107XG4gIHByb3RlY3RlZCBfbGF5b3V0TW9kZTogT0FwcExheW91dE1vZGUgPSBDb2Rlcy5BUFBfTEFZT1VUX01PREVfREVTS1RPUDtcbiAgcHJvdGVjdGVkIF9zaWRlbmF2TW9kZTogT1NpZGVuYXZNb2RlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHJvdGVjdGVkIG9wZW5lZDogYm9vbGVhbiA9IHRydWU7XG5cbiAgc2hvd0VsbGlwc2lzTWVudTogYm9vbGVhbiA9IGZhbHNlO1xuICBfc2hvd1VzZXJJbmZvOiBib29sZWFuID0gdHJ1ZTtcbiAgX3Nob3dUb2dnbGVCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xuICBvcGVuZWRTaWRlbmF2SW1nOiBzdHJpbmc7XG4gIGNsb3NlZFNpZGVuYXZJbWc6IHN0cmluZztcblxuICBvblNpZGVuYXZPcGVuZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgb25TaWRlbmF2T3BlbmVkU3RhcnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgb25TaWRlbmF2Q2xvc2VkU3RhcnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgb25TaWRlbmF2VG9nZ2xlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIGFmdGVyU2lkZW5hdlRvZ2dsZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBwcm90ZWN0ZWQgb1VzZXJJbmZvU2VydmljZTogT1VzZXJJbmZvU2VydmljZTtcbiAgcHJvdGVjdGVkIHVzZXJJbmZvU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCBwZXJtaXNzaW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHByb3RlY3RlZCB1c2VySW5mbzogVXNlckluZm87XG5cbiAgcHJvdGVjdGVkIG1lZGlhV2F0Y2g6IFN1YnNjcmlwdGlvbjtcbiAgcHJvdGVjdGVkIG1hbnVhbGx5Q2xvc2VkOiBib29sZWFuID0gZmFsc2U7XG4gIG9uUm91dGVDaGFuZ2VTdG9yYWdlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHN0b3JlU3RhdGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgIHByb3RlY3RlZCBlbFJlZjogRWxlbWVudFJlZixcbiAgICBwcm90ZWN0ZWQgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByb3RlY3RlZCBtZWRpYTogQnJlYWtwb2ludE9ic2VydmVyXG4gICkge1xuICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB0aGlzLmFwcE1lbnVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQXBwTWVudVNlcnZpY2UpO1xuICAgIHRoaXMubWVudVJvb3RBcnJheSA9IHRoaXMuYXBwTWVudVNlcnZpY2UuZ2V0TWVudVJvb3RzKCk7XG4gICAgdGhpcy5wZXJtaXNzaW9uU3Vic2NyaXB0aW9uID0gdGhpcy5hcHBNZW51U2VydmljZS5vblBlcm1pc3Npb25NZW51Q2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZWZyZXNoTWVudVJvb3RzKCkpO1xuICAgIHRoaXMub1VzZXJJbmZvU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9Vc2VySW5mb1NlcnZpY2UpO1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHRoaXMubWVkaWFXYXRjaCA9IHRoaXMubWVkaWEub2JzZXJ2ZShbQnJlYWtwb2ludHMuWFNtYWxsXSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmIChzZWxmLmlzU2NyZWVuU21hbGwoKSAmJiBzZWxmLnNpZGVuYXYpIHtcbiAgICAgICAgc2VsZi5zaWRlbmF2LmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5yZWdpc3RlckxvY2FsU3RvcmFnZVNlcnZpY2VSb3V0ZUNoYW5nZSgpO1xuICB9XG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc1NjcmVlblNtYWxsKCkpIHtcbiAgICAgICAgdGhpcy5zaWRlbmF2LmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmluaXRpYWxpemUodGhpcyk7XG4gICAgdGhpcy5yZXN0b3JlTWVudUdyb3VwU3RhdGUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5zaG93VXNlckluZm8gJiYgdGhpcy5zaG93VG9nZ2xlQnV0dG9uKSB7XG4gICAgICB0aGlzLnVzZXJJbmZvID0gdGhpcy5vVXNlckluZm9TZXJ2aWNlLmdldFVzZXJJbmZvKCk7XG4gICAgICB0aGlzLnVzZXJJbmZvU3Vic2NyaXB0aW9uID0gdGhpcy5vVXNlckluZm9TZXJ2aWNlLmdldFVzZXJJbmZvT2JzZXJ2YWJsZSgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLnVzZXJJbmZvID0gcmVzO1xuICAgICAgICB0aGlzLnJlZnJlc2hNZW51SXRlbVVzZXJJbmZvKCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5yZWZyZXNoTWVudUl0ZW1Vc2VySW5mbygpO1xuICB9XG5cbiAgZ2V0RGF0YVRvU3RvcmUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZTtcblxuICB9XG5cbiAgcmVzdG9yZU1lbnVHcm91cFN0YXRlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UgJiYgdGhpcy5zdG9yZVN0YXRlKSB7XG4gICAgICBsZXQgbWVudVN0YXRlOiB7IGlkOiBzdHJpbmcsIG9wZW5lZDogYm9vbGVhbiB9W10gPSB0aGlzLnN0YXRlLm1lbnUgPz8gW107XG5cbiAgICAgIHRoaXMubWVudVJvb3RBcnJheS5mb3JFYWNoKChncm91cDogTWVudUdyb3VwKSA9PiB7XG4gICAgICAgIGNvbnN0IHNhdmVkU3RhdGUgPSBtZW51U3RhdGUuZmluZChtZW51T3B0aW9uID0+IG1lbnVPcHRpb24uaWQgPT09IGdyb3VwLmlkKTtcbiAgICAgICAgaWYgKHNhdmVkU3RhdGUpIHtcbiAgICAgICAgICBncm91cC5vcGVuZWQgPSBzYXZlZFN0YXRlLm9wZW5lZDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q29tcG9uZW50S2V5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdPQXBwU2lkZW5hdkNvbXBvbmVudCc7XG4gIH1cblxuICBnZXRSb3V0ZUtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6YmVmb3JldW5sb2FkJywgW10pXG4gIGJlZm9yZXVubG9hZEhhbmRsZXIoKSB7XG4gICAgdGhpcy51cGRhdGVTdGF0ZVN0b3JhZ2UoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWdpc3RlckxvY2FsU3RvcmFnZVNlcnZpY2VSb3V0ZUNoYW5nZSgpIHtcbiAgICBpZiAodGhpcy5zdG9yZVN0YXRlKSB7XG4gICAgICB0aGlzLm9uUm91dGVDaGFuZ2VTdG9yYWdlU3Vic2NyaXB0aW9uID0gdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLm9uUm91dGVDaGFuZ2Uuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlU3RhdGVTdG9yYWdlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGVyc2lzdHMgdGhlIGN1cnJlbnQgY29tcG9uZW50IHN0YXRlIGluIGxvY2FsIHN0b3JhZ2Ugd2hlbiBlbmFibGVkLlxuICAgKlxuICAgKiBTdG9yZXMgbWVudS1yZWxhdGVkIHN0YXRlIG9ubHkgaWYgdGhlIHN0YXRlIHBlcnNpc3RlbmNlIGlzIGVuYWJsZWQuXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlU3RhdGVTdG9yYWdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UgJiYgdGhpcy5zdG9yZVN0YXRlKSB7XG4gICAgICB0aGlzLnN0b3JlTWVudSgpO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2hNZW51Um9vdHMoKTogdm9pZCB7XG4gICAgdGhpcy5tZW51Um9vdEFycmF5ID0gWy4uLnRoaXMuYXBwTWVudVNlcnZpY2UuZ2V0TWVudVJvb3RzKCldO1xuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFtdKVxuICBvblJlc2l6ZSgpIHtcbiAgICBpZiAoIXRoaXMubWFudWFsbHlDbG9zZWQgJiYgIXRoaXMuaXNTY3JlZW5TbWFsbCgpICYmICF0aGlzLmlzTW9iaWxlTW9kZSgpKSB7XG4gICAgICB0aGlzLnNpZGVuYXYub3BlbigpO1xuICAgIH1cbiAgfVxuXG5cbiAgZ2V0IGxheW91dE1vZGUoKTogT0FwcExheW91dE1vZGUge1xuICAgIHJldHVybiB0aGlzLl9sYXlvdXRNb2RlO1xuICB9XG5cbiAgc2V0IGxheW91dE1vZGUodmFsOiBPQXBwTGF5b3V0TW9kZSkge1xuICAgIGNvbnN0IG0gPSBDb2Rlcy5PQXBwTGF5b3V0TW9kZXMuZmluZChlID0+IGUgPT09IHZhbCk7XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKG0pKSB7XG4gICAgICB0aGlzLl9sYXlvdXRNb2RlID0gbTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2lkZW5hdk1vZGUoKTogT1NpZGVuYXZNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5fc2lkZW5hdk1vZGU7XG4gIH1cblxuICBzZXQgc2lkZW5hdk1vZGUodmFsOiBPU2lkZW5hdk1vZGUpIHtcbiAgICBjb25zdCBtID0gQ29kZXMuT1NpZGVuYXZNb2Rlcy5maW5kKGUgPT4gZSA9PT0gdmFsKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQobSkpIHtcbiAgICAgIHRoaXMuX3NpZGVuYXZNb2RlID0gbTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmVmcmVzaE1lbnVJdGVtVXNlckluZm8oKSB7XG4gICAgaWYgKHRoaXMuc2hvd1VzZXJJbmZvICYmIHRoaXMudXNlckluZm8gJiYgdGhpcy5fc2hvd1RvZ2dsZUJ1dHRvbikge1xuICAgICAgY29uc3QgZmlyc3RSb290ID0gdGhpcy5tZW51Um9vdEFycmF5WzBdO1xuICAgICAgY29uc3QgYWxyZWFkeUV4aXN0c1VzZXJJbmZvID0gZmlyc3RSb290ID8gZmlyc3RSb290LmlkID09PSAndXNlci1pbmZvJyA6IGZhbHNlO1xuICAgICAgaWYgKGFscmVhZHlFeGlzdHNVc2VySW5mbykge1xuICAgICAgICBjb25zdCB1c2VySW5mb0l0ZW06IE1lbnVJdGVtVXNlckluZm8gPSAodGhpcy5tZW51Um9vdEFycmF5WzBdIGFzIE1lbnVHcm91cCkuaXRlbXNbMF0gYXMgTWVudUl0ZW1Vc2VySW5mbztcbiAgICAgICAgdXNlckluZm9JdGVtLmlkID0gdGhpcy51c2VySW5mby51c2VybmFtZTtcbiAgICAgICAgdXNlckluZm9JdGVtLm5hbWUgPSB0aGlzLnVzZXJJbmZvLnVzZXJuYW1lO1xuICAgICAgICB1c2VySW5mb0l0ZW0udXNlciA9IHRoaXMudXNlckluZm8udXNlcm5hbWU7XG4gICAgICAgIHVzZXJJbmZvSXRlbS5hdmF0YXIgPSB0aGlzLnVzZXJJbmZvLmF2YXRhcjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHVzZXJJbmZvSXRlbTogTWVudUl0ZW1Vc2VySW5mbyA9IHtcbiAgICAgICAgICBpZDogdGhpcy51c2VySW5mby51c2VybmFtZSxcbiAgICAgICAgICBuYW1lOiB0aGlzLnVzZXJJbmZvLnVzZXJuYW1lLFxuICAgICAgICAgIHVzZXI6IHRoaXMudXNlckluZm8udXNlcm5hbWUsXG4gICAgICAgICAgYXZhdGFyOiB0aGlzLnVzZXJJbmZvLmF2YXRhclxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBtZW51R3JvdXBVc2VySW5mbzogTWVudUdyb3VwID0ge1xuICAgICAgICAgIGlkOiAndXNlci1pbmZvJyxcbiAgICAgICAgICBuYW1lOiAnQVBQX0xBWU9VVC5VU0VSX1BST0ZJTEUnLFxuICAgICAgICAgIGl0ZW1zOiBbdXNlckluZm9JdGVtXSxcbiAgICAgICAgICBvcGVuZWQ6IHRydWUsXG4gICAgICAgICAgaWNvbjogJ3BlcnNvbl9waW4nXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubWVudVJvb3RBcnJheS51bnNoaWZ0KG1lbnVHcm91cFVzZXJJbmZvKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudXNlckluZm9TdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMudXNlckluZm9TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wZXJtaXNzaW9uU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnBlcm1pc3Npb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBpc1NjcmVlblNtYWxsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5tYW51YWxseUNsb3NlZCAmJiB0aGlzLm1lZGlhLmlzTWF0Y2hlZChCcmVha3BvaW50cy5YU21hbGwpO1xuICB9XG5cbiAgaXNNb2JpbGVNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9sYXlvdXRNb2RlID09PSBDb2Rlcy5BUFBfTEFZT1VUX01PREVfTU9CSUxFO1xuICB9XG5cbiAgaXNEZXNrdG9wTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbGF5b3V0TW9kZSA9PT0gQ29kZXMuQVBQX0xBWU9VVF9NT0RFX0RFU0tUT1A7XG4gIH1cblxuICBpc1NpZGVuYXZPcGVuZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub3BlbmVkICYmICF0aGlzLmlzTW9iaWxlTW9kZSgpICYmICF0aGlzLmlzU2NyZWVuU21hbGwoKTtcbiAgfVxuXG4gIHRvZ2dsZVNpZGVuYXYoKSB7XG4gICAgY29uc3QgcHJvbWlzZSA9IHRoaXMuc2lkZW5hdi5vcGVuZWQgPyB0aGlzLnNpZGVuYXYuY2xvc2UoKSA6IHRoaXMuc2lkZW5hdi5vcGVuKCk7XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgcHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgIHNlbGYuYWZ0ZXJTaWRlbmF2VG9nZ2xlLmVtaXQoc2VsZi5zaWRlbmF2Lm9wZW5lZCk7XG4gICAgfSk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5vcGVuZWQgPSB0aGlzLnNpZGVuYXYub3BlbmVkO1xuICAgIHRoaXMubWFudWFsbHlDbG9zZWQgPSAhdGhpcy5vcGVuZWQ7XG4gICAgdGhpcy5vblNpZGVuYXZUb2dnbGUuZW1pdCh0aGlzLnNpZGVuYXYub3BlbmVkKTtcbiAgfVxuXG4gIGdldCBzaG93VXNlckluZm8oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dVc2VySW5mbztcbiAgfVxuXG4gIHNldCBzaG93VXNlckluZm8oYXJnOiBib29sZWFuKSB7XG4gICAgdGhpcy5fc2hvd1VzZXJJbmZvID0gYXJnO1xuICB9XG5cbiAgZ2V0IHNob3dUb2dnbGVCdXR0b24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dUb2dnbGVCdXR0b247XG4gIH1cblxuICBzZXQgc2hvd1RvZ2dsZUJ1dHRvbihhcmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zaG93VG9nZ2xlQnV0dG9uID0gYXJnO1xuICB9XG5cbiAgb25NZW51SXRlbUNsaWNrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzTW9iaWxlTW9kZSgpKSB7XG4gICAgICB0aGlzLnNpZGVuYXYuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBzaWRlbmF2Q2xvc2VkU3RhcnQoKSB7XG4gICAgdGhpcy5vblNpZGVuYXZDbG9zZWRTdGFydC5lbWl0KCk7XG4gIH1cblxuICBzaWRlbmF2T3BlbmVkU3RhcnQoKSB7XG4gICAgdGhpcy5vblNpZGVuYXZPcGVuZWRTdGFydC5lbWl0KCk7XG4gIH1cblxuICBzaWRlbmF2T3BlbmVkQ2hhbmdlKCkge1xuICAgIHRoaXMub25TaWRlbmF2T3BlbmVkQ2hhbmdlLmVtaXQoKTtcbiAgfVxufVxuXG4iLCI8bWF0LXNpZGVuYXYtY29udGFpbmVyIGNsYXNzPVwiby1hcHAtc2lkZW5hdi1jb250YWluZXJcIiBbY2xhc3Mub3BlbmVkXT1cInNpZGVuYXYub3BlbmVkXCJcbiAgW2NsYXNzLm8tYXBwLXNpZGVuYXYtbW9kZS1kZXNrdG9wXT1cIihsYXlvdXRNb2RlIHx8ICdkZXNrdG9wJykgPT09ICdkZXNrdG9wJ1wiXG4gIFtjbGFzcy5vLWFwcC1zaWRlbmF2LW1vZGUtbW9iaWxlXT1cIihsYXlvdXRNb2RlIHx8ICdkZXNrdG9wJykgIT09ICdkZXNrdG9wJ1wiPlxuXG4gIDxtYXQtc2lkZW5hdiAjc2lkZW5hdiBjbGFzcz1cIm8tYXBwLXNpZGVuYXYtc2lkZW5hdiBvLXNjcm9sbFwiIFtvcGVuZWRdPVwiaXNTaWRlbmF2T3BlbmVkKClcIlxuICAgIFttb2RlXT1cIihzaWRlbmF2TW9kZSB8fCAoKGxheW91dE1vZGUgfHwgJ2Rlc2t0b3AnKSA9PT0gJ2Rlc2t0b3AnID8gJ3NpZGUnIDogJ292ZXInKSlcIiBbY2xhc3MubWF0LWRyYXdlci1vcGVuZWRdPVwic2lkZW5hdi5vcGVuZWRcIlxuICAgIFtjbGFzcy5tYXQtZHJhd2VyLWNsb3NlZF09XCIhc2lkZW5hdi5vcGVuZWRcIiBbY2xhc3MuZWxsaXBzaXMtbWVudS1pdGVtc109XCJzaG93RWxsaXBzaXNNZW51XCIgKG9wZW5lZENoYW5nZSk9XCJzaWRlbmF2T3BlbmVkQ2hhbmdlKClcIlxuICAgIChjbG9zZWRTdGFydCk9XCJzaWRlbmF2Q2xvc2VkU3RhcnQoKVwiIChvcGVuZWRTdGFydCk9XCJzaWRlbmF2T3BlbmVkU3RhcnQoKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJzaWRlbmF2LXdyYXBwZXIgby1mbGV4LWNvbHVtblwiPlxuICAgICAgQGlmIChpc0Rlc2t0b3BNb2RlKCkpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInNpZGVuYXYtdG9nZ2xlLWNvbnRhaW5lciBvLWZsZXgtcm93IG8tbGF5b3V0LWFsaWduLWVuZC1jZW50ZXJcIj5cbiAgICAgICAgICA8bWF0LWljb24gaWQ9XCJzaWRlbmF2LW1lbnVcIiBjbGFzcz1cInNpZGVuYXYtdG9nZ2xlXCIgKGNsaWNrKT1cInRvZ2dsZVNpZGVuYXYoKVwiPm1lbnU8L21hdC1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgPG8tYXBwLXNpZGVuYXYtaW1hZ2UgW29wZW5lZC1zcmNdPVwib3BlbmVkU2lkZW5hdkltZ1wiIFtjbG9zZWQtc3JjXT1cImNsb3NlZFNpZGVuYXZJbWdcIj4gPC9vLWFwcC1zaWRlbmF2LWltYWdlPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiby1hcHAtbGF5b3V0LXNpZGVuYXYtcHJvamVjdGlvbi1zdGFydFwiPjwvbmctY29udGVudD5cbiAgICAgIDxkaXYgY2xhc3M9XCJuYXZNZW51XCI+XG4gICAgICAgIEBmb3IgKG1lbnVSb290SXRlbSBvZiBtZW51Um9vdEFycmF5OyB0cmFjayBtZW51Um9vdEl0ZW0pIHtcbiAgICAgICAgICA8bmF2PlxuICAgICAgICAgICAgQGlmIChhcHBNZW51U2VydmljZS5nZXRNZW51SXRlbVR5cGUobWVudVJvb3RJdGVtKSAhPT0gJ2dyb3VwJyAmJiBhcHBNZW51U2VydmljZS5pc1Zpc2libGUobWVudVJvb3RJdGVtKSkge1xuICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgPG8tYXBwLXNpZGVuYXYtbWVudS1pdGVtIFttZW51LWl0ZW1dPVwibWVudVJvb3RJdGVtXCIgW21lbnUtaXRlbS10eXBlXT1cImFwcE1lbnVTZXJ2aWNlLmdldE1lbnVJdGVtVHlwZShtZW51Um9vdEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgIFtzaWRlbmF2LW9wZW5lZF09XCJzaWRlbmF2Lm9wZW5lZFwiIChvbkNsaWNrKT1cIm9uTWVudUl0ZW1DbGljaygpXCI+XG4gICAgICAgICAgICAgICAgPC9vLWFwcC1zaWRlbmF2LW1lbnUtaXRlbT5cbiAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoYXBwTWVudVNlcnZpY2UuZ2V0TWVudUl0ZW1UeXBlKG1lbnVSb290SXRlbSkgPT09ICdncm91cCcgJiYgYXBwTWVudVNlcnZpY2UuaXNWaXNpYmxlKG1lbnVSb290SXRlbSkpIHtcbiAgICAgICAgICAgICAgPG8tYXBwLXNpZGVuYXYtbWVudS1ncm91cCBbbWVudS1ncm91cF09XCJtZW51Um9vdEl0ZW1cIiBbc2lkZW5hdi1vcGVuZWRdPVwic2lkZW5hdi5vcGVuZWRcIiBsZXZlbD1cIjFcIlxuICAgICAgICAgICAgICAgIChvbkl0ZW1DbGljayk9XCJvbk1lbnVJdGVtQ2xpY2soKVwiPlxuICAgICAgICAgICAgICA8L28tYXBwLXNpZGVuYXYtbWVudS1ncm91cD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L25hdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXNpZGVuYXYtcHJvamVjdGlvbi1lbmRcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiby1hcHAtbGF5b3V0LXNpZGVuYXYtcHJvamVjdGlvbi1lbmRcIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtc2lkZW5hdj5cblxuICA8bWF0LXNpZGVuYXYtY29udGVudCBjbGFzcz1cIm8tYXBwLXNpZGVuYXYtY29udGVudFwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9tYXQtc2lkZW5hdi1jb250ZW50PlxuPC9tYXQtc2lkZW5hdi1jb250YWluZXI+XG4iXX0=
|
|
@@ -6,8 +6,9 @@ import { MatIconModule } from '@angular/material/icon';
|
|
|
6
6
|
import { ActivatedRoute } from '@angular/router';
|
|
7
7
|
import { BooleanInputConverter } from '../../decorators/input-converter';
|
|
8
8
|
import { PermissionsService } from '../../services';
|
|
9
|
+
import { O_ACTION_STYLES_CONFIG, OActionStyleProvider } from '../../types';
|
|
9
10
|
import { Codes } from '../../util/codes';
|
|
10
|
-
import { Util } from '../../util';
|
|
11
|
+
import { resolveActionStyle, Util } from '../../util';
|
|
11
12
|
import { OTranslatePipe } from '../../pipes/o-translate.pipe';
|
|
12
13
|
import * as i0 from "@angular/core";
|
|
13
14
|
import * as i1 from "@angular/router";
|
|
@@ -23,7 +24,9 @@ export const DEFAULT_INPUTS_O_BUTTON = [
|
|
|
23
24
|
'iconPosition: icon-position',
|
|
24
25
|
'image',
|
|
25
26
|
'enabled',
|
|
26
|
-
'color'
|
|
27
|
+
'color',
|
|
28
|
+
'variant',
|
|
29
|
+
'importance'
|
|
27
30
|
];
|
|
28
31
|
export const DEFAULT_OUTPUTS_O_BUTTON = [
|
|
29
32
|
'onClick',
|
|
@@ -31,6 +34,15 @@ export const DEFAULT_OUTPUTS_O_BUTTON = [
|
|
|
31
34
|
];
|
|
32
35
|
export class OButtonComponent {
|
|
33
36
|
static { this.DEFAULT_TYPE = 'STROKED'; }
|
|
37
|
+
static { this.VARIANT_TO_TYPE = {
|
|
38
|
+
outline: 'STROKED',
|
|
39
|
+
flat: 'FLAT',
|
|
40
|
+
basic: 'BASIC',
|
|
41
|
+
raised: 'RAISED',
|
|
42
|
+
icon: 'ICON',
|
|
43
|
+
fab: 'FAB',
|
|
44
|
+
'mini-fab': 'FAB-MINI'
|
|
45
|
+
}; }
|
|
34
46
|
constructor(actRoute) {
|
|
35
47
|
this.actRoute = actRoute;
|
|
36
48
|
this.iconPosition = Codes.ICON_POSITION_LEFT;
|
|
@@ -39,18 +51,56 @@ export class OButtonComponent {
|
|
|
39
51
|
this.onClick = new EventEmitter();
|
|
40
52
|
this.click = new EventEmitter();
|
|
41
53
|
this.permissionsService = inject(PermissionsService);
|
|
42
|
-
this.
|
|
54
|
+
this.actionStyleProvider = inject(OActionStyleProvider, { optional: true });
|
|
55
|
+
this.globalActionStylesConfig = inject(O_ACTION_STYLES_CONFIG, { optional: true });
|
|
43
56
|
}
|
|
44
57
|
ngOnInit() {
|
|
45
|
-
if (this.otype) {
|
|
46
|
-
this.otype = this.otype.toUpperCase();
|
|
47
|
-
}
|
|
48
58
|
this.permissions = this.permissionsService.getOButtonPermissions(this.oattr, this.actRoute);
|
|
49
59
|
if (Util.isDefined(this.permissions)) {
|
|
50
60
|
this.enabled = this.permissions.enabled;
|
|
51
61
|
this.visible = this.permissions.visible;
|
|
52
62
|
}
|
|
53
63
|
}
|
|
64
|
+
get hostOrGlobalActionStyle() {
|
|
65
|
+
return this.actionStyleProvider
|
|
66
|
+
? this.actionStyleProvider.getResolvedActionStyle(this.oattr)
|
|
67
|
+
: resolveActionStyle(this.oattr, undefined, undefined, this.globalActionStylesConfig ?? undefined);
|
|
68
|
+
}
|
|
69
|
+
get effectiveType() {
|
|
70
|
+
if (Util.isDefined(this.variant)) {
|
|
71
|
+
return OButtonComponent.VARIANT_TO_TYPE[this.variant] ?? OButtonComponent.DEFAULT_TYPE;
|
|
72
|
+
}
|
|
73
|
+
if (Util.isDefined(this.otype)) {
|
|
74
|
+
return this.otype.toUpperCase();
|
|
75
|
+
}
|
|
76
|
+
const variant = this.hostOrGlobalActionStyle.variant;
|
|
77
|
+
return OButtonComponent.VARIANT_TO_TYPE[variant] ?? OButtonComponent.DEFAULT_TYPE;
|
|
78
|
+
}
|
|
79
|
+
get resolvedImportance() {
|
|
80
|
+
if (Util.isDefined(this.importance)) {
|
|
81
|
+
return this.importance;
|
|
82
|
+
}
|
|
83
|
+
if (this.color === 'primary' || this.color === 'warn') {
|
|
84
|
+
return this.color;
|
|
85
|
+
}
|
|
86
|
+
if (Util.isDefined(this.color)) {
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
return this.hostOrGlobalActionStyle.importance;
|
|
90
|
+
}
|
|
91
|
+
get appliesImportanceColor() {
|
|
92
|
+
const type = this.effectiveType;
|
|
93
|
+
return type === 'STROKED' || type === 'BASIC' || type === 'ICON' || type === 'RAISED';
|
|
94
|
+
}
|
|
95
|
+
get resolvedColor() {
|
|
96
|
+
if (!this.appliesImportanceColor) {
|
|
97
|
+
const importance = this.resolvedImportance;
|
|
98
|
+
if (importance === 'primary' || importance === 'warn') {
|
|
99
|
+
return importance;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return this.color;
|
|
103
|
+
}
|
|
54
104
|
onButtonClick(event) {
|
|
55
105
|
event.stopPropagation();
|
|
56
106
|
if (this.enabled) {
|
|
@@ -62,31 +112,31 @@ export class OButtonComponent {
|
|
|
62
112
|
return (this.icon !== undefined || this.svgIcon !== undefined) && (this.olabel === undefined || this.olabel === '');
|
|
63
113
|
}
|
|
64
114
|
isFab() {
|
|
65
|
-
return this.
|
|
115
|
+
return this.effectiveType === 'FAB';
|
|
66
116
|
}
|
|
67
117
|
isRaised() {
|
|
68
|
-
return this.
|
|
118
|
+
return this.effectiveType === 'RAISED';
|
|
69
119
|
}
|
|
70
120
|
isFlat() {
|
|
71
|
-
return this.
|
|
121
|
+
return this.effectiveType === 'FLAT';
|
|
72
122
|
}
|
|
73
123
|
isStroked() {
|
|
74
|
-
return
|
|
124
|
+
return this.effectiveType === 'STROKED';
|
|
75
125
|
}
|
|
76
126
|
isBasic() {
|
|
77
|
-
return this.
|
|
127
|
+
return this.effectiveType === 'BASIC';
|
|
78
128
|
}
|
|
79
129
|
isMiniFab() {
|
|
80
|
-
return this.
|
|
130
|
+
return this.effectiveType === 'FAB-MINI';
|
|
81
131
|
}
|
|
82
132
|
isIconButton() {
|
|
83
|
-
return this.
|
|
133
|
+
return this.effectiveType === 'ICON';
|
|
84
134
|
}
|
|
85
135
|
isVisible() {
|
|
86
136
|
return this.visible;
|
|
87
137
|
}
|
|
88
138
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OButtonComponent, deps: [{ token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
89
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: OButtonComponent, isStandalone: true, selector: "o-button", inputs: { oattr: ["attr", "oattr"], olabel: ["label", "olabel"], otype: ["type", "otype"], icon: "icon", svgIcon: ["svg-icon", "svgIcon"], iconPosition: ["icon-position", "iconPosition"], image: "image", enabled: "enabled", color: "color" }, outputs: { onClick: "onClick", click: "click" }, host: { properties: { "class.o-button": "true", "class.o-button-icon-position-top": "iconPosition===\"top\"", "class.o-button-icon-position-bottom": "iconPosition===\"bottom\"" } }, ngImport: i0, template: "@if (isBasic() && isVisible()) {\n <button type=\"button\" (click)=\"onButtonClick($event)\" mat-button [class.mat-icon-button]=\"needsIconButtonClass\"\n [disabled]=\"!enabled\" [color]=\"
|
|
139
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: OButtonComponent, isStandalone: true, selector: "o-button", inputs: { oattr: ["attr", "oattr"], olabel: ["label", "olabel"], otype: ["type", "otype"], icon: "icon", svgIcon: ["svg-icon", "svgIcon"], iconPosition: ["icon-position", "iconPosition"], image: "image", enabled: "enabled", color: "color", variant: "variant", importance: "importance" }, outputs: { onClick: "onClick", click: "click" }, host: { properties: { "class.o-button": "true", "class.o-button-icon-position-top": "iconPosition===\"top\"", "class.o-button-icon-position-bottom": "iconPosition===\"bottom\"", "class.o-action--importance-primary": "appliesImportanceColor && resolvedImportance === 'primary'", "class.o-action--importance-warn": "appliesImportanceColor && resolvedImportance === 'warn'", "class.o-action--importance-default": "appliesImportanceColor && resolvedImportance === 'default'", "class.o-action--filled-default": "isFlat() && resolvedImportance === 'default'" } }, ngImport: i0, template: "@if (isBasic() && isVisible()) {\n <button type=\"button\" (click)=\"onButtonClick($event)\" mat-button [class.mat-icon-button]=\"needsIconButtonClass\"\n [disabled]=\"!enabled\" [color]=\"resolvedColor\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n </button>\n}\n\n@if (isRaised() && isVisible()) {\n <button type=\"button\" (click)=\"onButtonClick($event)\" mat-raised-button class=\"mat-raised-button\"\n [class.mat-icon-button]=\"needsIconButtonClass\" [disabled]=\"!enabled\" [color]=\"resolvedColor\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n </button>\n}\n\n@if (isStroked() && isVisible()) {\n <button type=\"button\" (click)=\"onButtonClick($event)\" mat-stroked-button\n [class.mat-icon-button]=\"needsIconButtonClass\" [disabled]=\"!enabled\" [color]=\"resolvedColor\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n </button>\n}\n\n@if (isFlat() && isVisible()) {\n <button type=\"button\" (click)=\"onButtonClick($event)\" mat-flat-button [class.mat-icon-button]=\"needsIconButtonClass\"\n [disabled]=\"!enabled\" [color]=\"resolvedColor\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n </button>\n}\n\n@if (isIconButton() && isVisible()) {\n <button type=\"button\" (click)=\"onButtonClick($event)\" mat-icon-button\n [class.mat-icon-button]=\"needsIconButtonClass\" [disabled]=\"!enabled\" [color]=\"resolvedColor\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n </button>\n}\n\n@if (isFab() && isVisible()) {\n <button type=\"button\" (click)=\"onButtonClick($event)\" mat-fab [disabled]=\"!enabled\" [color]=\"resolvedColor\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n </button>\n}\n\n@if (isMiniFab() && isVisible()) {\n <button type=\"button\" (click)=\"onButtonClick($event)\" mat-mini-fab [disabled]=\"!enabled\" [color]=\"resolvedColor\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n </button>\n}\n\n\n<ng-template #iconTemplate>\n @if (image!==undefined) {\n <img src=\"{{ image }}\" class=\"o-button-image\" alt=\"button image\" />\n }\n @if (icon!==undefined) {\n <mat-icon class=\"o-button-icon\">{{ icon }}\n </mat-icon>\n }\n @if (svgIcon!==undefined) {\n <mat-icon class=\"o-button-icon\" [svgIcon]=\"svgIcon\"></mat-icon>\n }\n</ng-template>\n\n<ng-template #buttonTemplate>\n\n @if (iconPosition==='left' || iconPosition==='top' ) {\n <ng-container *ngTemplateOutlet=\"iconTemplate\"></ng-container>\n }\n\n @if (iconPosition==='top') {\n <br />\n }\n\n {{ olabel | oTranslate }}\n\n @if (iconPosition==='bottom') {\n <br />\n }\n\n @if (iconPosition==='right' || iconPosition==='bottom') {\n <ng-container *ngTemplateOutlet=\"iconTemplate\"></ng-container>\n }\n</ng-template>\n", styles: [".o-button{display:inline-block;pointer-events:none}.o-button.o-button-icon-position-bottom .mat-mdc-button,.o-button.o-button-icon-position-bottom .mat-mdc-unelevated-button,.o-button.o-button-icon-position-bottom .mat-mdc-raised-button,.o-button.o-button-icon-position-bottom .mat-mdc-outlined-button,.o-button.o-button-icon-position-top .mat-mdc-button,.o-button.o-button-icon-position-top .mat-mdc-unelevated-button,.o-button.o-button-icon-position-top .mat-mdc-raised-button,.o-button.o-button-icon-position-top .mat-mdc-outlined-button{height:auto;line-height:normal}.o-button button{pointer-events:auto}.o-button button.mat-mdc-button,.o-button button.mat-mdc-unelevated-button,.o-button button.mat-mdc-raised-button,.o-button button.mat-mdc-outlined-button{width:100%}.o-button button *{pointer-events:none}.o-button button .o-button-image{max-height:24px;vertical-align:middle}.o-button button .mdc-button__label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:flex;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: OTranslatePipe, name: "oTranslate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
90
140
|
}
|
|
91
141
|
__decorate([
|
|
92
142
|
BooleanInputConverter(),
|
|
@@ -97,7 +147,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
97
147
|
args: [{ standalone: true, imports: [CommonModule, MatButtonModule, MatIconModule, OTranslatePipe], selector: 'o-button', inputs: DEFAULT_INPUTS_O_BUTTON, outputs: DEFAULT_OUTPUTS_O_BUTTON, encapsulation: ViewEncapsulation.None, host: {
|
|
98
148
|
'[class.o-button]': 'true',
|
|
99
149
|
'[class.o-button-icon-position-top]': 'iconPosition==="top"',
|
|
100
|
-
'[class.o-button-icon-position-bottom]': 'iconPosition==="bottom"'
|
|
101
|
-
|
|
150
|
+
'[class.o-button-icon-position-bottom]': 'iconPosition==="bottom"',
|
|
151
|
+
'[class.o-action--importance-primary]': "appliesImportanceColor && resolvedImportance === 'primary'",
|
|
152
|
+
'[class.o-action--importance-warn]': "appliesImportanceColor && resolvedImportance === 'warn'",
|
|
153
|
+
'[class.o-action--importance-default]': "appliesImportanceColor && resolvedImportance === 'default'",
|
|
154
|
+
'[class.o-action--filled-default]': "isFlat() && resolvedImportance === 'default'"
|
|
155
|
+
}, template: "@if (isBasic() && isVisible()) {\n <button type=\"button\" (click)=\"onButtonClick($event)\" mat-button [class.mat-icon-button]=\"needsIconButtonClass\"\n [disabled]=\"!enabled\" [color]=\"resolvedColor\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n </button>\n}\n\n@if (isRaised() && isVisible()) {\n <button type=\"button\" (click)=\"onButtonClick($event)\" mat-raised-button class=\"mat-raised-button\"\n [class.mat-icon-button]=\"needsIconButtonClass\" [disabled]=\"!enabled\" [color]=\"resolvedColor\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n </button>\n}\n\n@if (isStroked() && isVisible()) {\n <button type=\"button\" (click)=\"onButtonClick($event)\" mat-stroked-button\n [class.mat-icon-button]=\"needsIconButtonClass\" [disabled]=\"!enabled\" [color]=\"resolvedColor\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n </button>\n}\n\n@if (isFlat() && isVisible()) {\n <button type=\"button\" (click)=\"onButtonClick($event)\" mat-flat-button [class.mat-icon-button]=\"needsIconButtonClass\"\n [disabled]=\"!enabled\" [color]=\"resolvedColor\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n </button>\n}\n\n@if (isIconButton() && isVisible()) {\n <button type=\"button\" (click)=\"onButtonClick($event)\" mat-icon-button\n [class.mat-icon-button]=\"needsIconButtonClass\" [disabled]=\"!enabled\" [color]=\"resolvedColor\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n </button>\n}\n\n@if (isFab() && isVisible()) {\n <button type=\"button\" (click)=\"onButtonClick($event)\" mat-fab [disabled]=\"!enabled\" [color]=\"resolvedColor\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n </button>\n}\n\n@if (isMiniFab() && isVisible()) {\n <button type=\"button\" (click)=\"onButtonClick($event)\" mat-mini-fab [disabled]=\"!enabled\" [color]=\"resolvedColor\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate\"></ng-container>\n </button>\n}\n\n\n<ng-template #iconTemplate>\n @if (image!==undefined) {\n <img src=\"{{ image }}\" class=\"o-button-image\" alt=\"button image\" />\n }\n @if (icon!==undefined) {\n <mat-icon class=\"o-button-icon\">{{ icon }}\n </mat-icon>\n }\n @if (svgIcon!==undefined) {\n <mat-icon class=\"o-button-icon\" [svgIcon]=\"svgIcon\"></mat-icon>\n }\n</ng-template>\n\n<ng-template #buttonTemplate>\n\n @if (iconPosition==='left' || iconPosition==='top' ) {\n <ng-container *ngTemplateOutlet=\"iconTemplate\"></ng-container>\n }\n\n @if (iconPosition==='top') {\n <br />\n }\n\n {{ olabel | oTranslate }}\n\n @if (iconPosition==='bottom') {\n <br />\n }\n\n @if (iconPosition==='right' || iconPosition==='bottom') {\n <ng-container *ngTemplateOutlet=\"iconTemplate\"></ng-container>\n }\n</ng-template>\n", styles: [".o-button{display:inline-block;pointer-events:none}.o-button.o-button-icon-position-bottom .mat-mdc-button,.o-button.o-button-icon-position-bottom .mat-mdc-unelevated-button,.o-button.o-button-icon-position-bottom .mat-mdc-raised-button,.o-button.o-button-icon-position-bottom .mat-mdc-outlined-button,.o-button.o-button-icon-position-top .mat-mdc-button,.o-button.o-button-icon-position-top .mat-mdc-unelevated-button,.o-button.o-button-icon-position-top .mat-mdc-raised-button,.o-button.o-button-icon-position-top .mat-mdc-outlined-button{height:auto;line-height:normal}.o-button button{pointer-events:auto}.o-button button.mat-mdc-button,.o-button button.mat-mdc-unelevated-button,.o-button button.mat-mdc-raised-button,.o-button button.mat-mdc-outlined-button{width:100%}.o-button button *{pointer-events:none}.o-button button .o-button-image{max-height:24px;vertical-align:middle}.o-button button .mdc-button__label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:flex;align-items:center}\n"] }]
|
|
102
156
|
}], ctorParameters: () => [{ type: i1.ActivatedRoute }], propDecorators: { enabled: [] } });
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9uL28tYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2J1dHRvbi9vLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNsQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7OztBQUU5RCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUNyQyxhQUFhO0lBQ2IsZUFBZTtJQUVmLGFBQWE7SUFFYixNQUFNO0lBQ04sb0JBQW9CO0lBQ3BCLDZCQUE2QjtJQUM3QixPQUFPO0lBRVAsU0FBUztJQUVULE9BQU87Q0FDUixDQUFDO0FBQ0YsTUFBTSxDQUFD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QUFlLCtpQkFBRSxhQUFhLCtLQUFFLGNBQWM7O0FBeUI3QztJQUF4QixxQkFBcUIsRUFBRTs7aURBQXlCOzRGQVh0QyxnQkFBZ0I7a0JBaEI1QixTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGNBQWMsQ0FBQyxZQUM3RCxVQUFVLFVBQ1osdUJBQXVCLFdBQ3RCLHdCQUF3QixpQkFHbEIsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDSixrQkFBa0IsRUFBRSxNQUFNO3dCQUMxQixvQ0FBb0MsRUFBRSxzQkFBc0I7d0JBQzVELHVDQUF1QyxFQUFFLHlCQUF5QjtxQkFFbkU7bUZBYXdCLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBQZXJtaXNzaW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBPUGVybWlzc2lvbnMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uL3V0aWwnO1xuaW1wb3J0IHsgT1RyYW5zbGF0ZVBpcGUgfSBmcm9tICcuLi8uLi9waXBlcy9vLXRyYW5zbGF0ZS5waXBlJztcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5QVVRTX09fQlVUVE9OID0gW1xuICAnb2F0dHI6IGF0dHInLFxuICAnb2xhYmVsOiBsYWJlbCcsXG4gIC8vIHR5cGUgW0JBU0lDfFJBSVNFRHxTVFJPS0VEfEZMQVR8SUNPTnxGQUJ8TUlOSS1GQUJdOiBUaGUgdHlwZSBvZiBidXR0b24uIERlZmF1bHQ6IFNUUk9LRUQuXG4gICdvdHlwZTogdHlwZScsXG4gIC8vIGljb24gW3N0cmluZ106IE5hbWUgb2YgZ29vZ2xlIGljb24gKHNlZSBodHRwczovL2Rlc2lnbi5nb29nbGUuY29tL2ljb25zLylcbiAgJ2ljb24nLFxuICAnc3ZnSWNvbiA6IHN2Zy1pY29uJyxcbiAgJ2ljb25Qb3NpdGlvbjogaWNvbi1wb3NpdGlvbicsXG4gICdpbWFnZScsXG4gIC8vIGVuYWJsZWQgW3llc3xub3x0cnVlfGZhbHNlXTogV2hldGhlciB0aGUgYnV0dG9uIGlzIGVuYWJsZWQuIERlZmF1bHQ6IHllc1xuICAnZW5hYmxlZCcsXG4gIC8vIGNvbG9yOiBUaGVtZSBjb2xvciBwYWxldHRlIGZvciB0aGUgY29tcG9uZW50LlxuICAnY29sb3InXG5dO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1VUUFVUU19PX0JVVFRPTiA9IFtcbiAgJ29uQ2xpY2snLFxuICAnY2xpY2snXG5dO1xuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgT1RyYW5zbGF0ZVBpcGVdLFxuICBzZWxlY3RvcjogJ28tYnV0dG9uJyxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX0JVVFRPTixcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fQlVUVE9OLFxuICB0ZW1wbGF0ZVVybDogJy4vby1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLWJ1dHRvbl0nOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5vLWJ1dHRvbi1pY29uLXBvc2l0aW9uLXRvcF0nOiAnaWNvblBvc2l0aW9uPT09XCJ0b3BcIicsXG4gICAgJ1tjbGFzcy5vLWJ1dHRvbi1pY29uLXBvc2l0aW9uLWJvdHRvbV0nOiAnaWNvblBvc2l0aW9uPT09XCJib3R0b21cIidcblxuICB9XG59KVxuZXhwb3J0IGNsYXNzIE9CdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHByb3RlY3RlZCBzdGF0aWMgREVGQVVMVF9UWVBFID0gJ1NUUk9LRUQnO1xuXG4gIHByb3RlY3RlZCBvYXR0cjogc3RyaW5nO1xuICBwdWJsaWMgb2xhYmVsOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBvdHlwZTogc3RyaW5nO1xuICBwdWJsaWMgaWNvbjogc3RyaW5nO1xuICBwdWJsaWMgc3ZnSWNvbjogc3RyaW5nO1xuICBwdWJsaWMgaWNvblBvc2l0aW9uOiBzdHJpbmcgPSBDb2Rlcy5JQ09OX1BPU0lUSU9OX0xFRlQ7IC8vIGxlZnQgKGRlZmF1bHQpXG4gIHB1YmxpYyBpbWFnZTogc3RyaW5nO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKCkgZW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyBjb2xvcjogVGhlbWVQYWxldHRlO1xuICBwdWJsaWMgdmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyogT3V0cHV0cyAqL1xuICBwdWJsaWMgb25DbGljazogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIHB1YmxpYyBjbGljazogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG4gIHByb3RlY3RlZCBwZXJtaXNzaW9uc1NlcnZpY2UgPSBpbmplY3QoUGVybWlzc2lvbnNTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIHBlcm1pc3Npb25zOiBPUGVybWlzc2lvbnM7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGFjdFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge1xuICAgIHRoaXMub3R5cGUgPSBPQnV0dG9uQ29tcG9uZW50LkRFRkFVTFRfVFlQRTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm90eXBlKSB7XG4gICAgICB0aGlzLm90eXBlID0gdGhpcy5vdHlwZS50b1VwcGVyQ2FzZSgpO1xuICAgIH1cbiAgICB0aGlzLnBlcm1pc3Npb25zID0gdGhpcy5wZXJtaXNzaW9uc1NlcnZpY2UuZ2V0T0J1dHRvblBlcm1pc3Npb25zKHRoaXMub2F0dHIsIHRoaXMuYWN0Um91dGUpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLnBlcm1pc3Npb25zKSkge1xuICAgICAgdGhpcy5lbmFibGVkID0gdGhpcy5wZXJtaXNzaW9ucy5lbmFibGVkO1xuICAgICAgdGhpcy52aXNpYmxlID0gdGhpcy5wZXJtaXNzaW9ucy52aXNpYmxlO1xuICAgIH1cbiAgfVxuXG4gIG9uQnV0dG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5lbmFibGVkKSB7XG4gICAgICB0aGlzLmNsaWNrLmVtaXQoZXZlbnQpO1xuICAgICAgdGhpcy5vbkNsaWNrLmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBuZWVkc0ljb25CdXR0b25DbGFzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuaWNvbiAhPT0gdW5kZWZpbmVkIHx8IHRoaXMuc3ZnSWNvbiAhPT0gdW5kZWZpbmVkKSAmJiAodGhpcy5vbGFiZWwgPT09IHVuZGVmaW5lZCB8fCB0aGlzLm9sYWJlbCA9PT0gJycpO1xuICB9XG5cbiAgaXNGYWIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub3R5cGUgPT09ICdGQUInO1xuICB9XG5cbiAgaXNSYWlzZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub3R5cGUgPT09ICdSQUlTRUQnO1xuICB9XG5cbiAgaXNGbGF0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm90eXBlID09PSAnRkxBVCc7XG4gIH1cblxuICBpc1N0cm9rZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLm90eXBlID09PSAnU1RST0tFRCcgfHwgIXRoaXMub3R5cGUpO1xuICB9XG5cbiAgaXNCYXNpYygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vdHlwZSA9PT0gJ0JBU0lDJztcbiAgfVxuXG4gIGlzTWluaUZhYigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vdHlwZSA9PT0gJ0ZBQi1NSU5JJztcbiAgfVxuXG4gIGlzSWNvbkJ1dHRvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vdHlwZSA9PT0gJ0lDT04nO1xuICB9XG4gIGlzVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlO1xuICB9XG59XG4iLCJAaWYgKGlzQmFzaWMoKSAmJiBpc1Zpc2libGUoKSkge1xuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25CdXR0b25DbGljaygkZXZlbnQpXCIgbWF0LWJ1dHRvbiBbY2xhc3MubWF0LWljb24tYnV0dG9uXT1cIm5lZWRzSWNvbkJ1dHRvbkNsYXNzXCJcbiAgICBbZGlzYWJsZWRdPVwiIWVuYWJsZWRcIiBbY29sb3JdPVwiY29sb3JcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9idXR0b24+XG59XG5cbkBpZiAoaXNSYWlzZWQoKSAmJiBpc1Zpc2libGUoKSkge1xuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25CdXR0b25DbGljaygkZXZlbnQpXCIgbWF0LXJhaXNlZC1idXR0b24gY2xhc3M9XCJtYXQtcmFpc2VkLWJ1dHRvblwiXG4gICAgW2NsYXNzLm1hdC1pY29uLWJ1dHRvbl09XCJuZWVkc0ljb25CdXR0b25DbGFzc1wiIFtkaXNhYmxlZF09XCIhZW5hYmxlZFwiIFtjb2xvcl09XCJjb2xvclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2J1dHRvbj5cbn1cblxuQGlmIChpc1N0cm9rZWQoKSAmJiBpc1Zpc2libGUoKSkge1xuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25CdXR0b25DbGljaygkZXZlbnQpXCIgbWF0LXN0cm9rZWQtYnV0dG9uXG4gICAgW2NsYXNzLm1hdC1pY29uLWJ1dHRvbl09XCJuZWVkc0ljb25CdXR0b25DbGFzc1wiIFtkaXNhYmxlZF09XCIhZW5hYmxlZFwiIFtjb2xvcl09XCJjb2xvclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2J1dHRvbj5cbn1cblxuQGlmIChpc0ZsYXQoKSAmJiBpc1Zpc2libGUoKSkge1xuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25CdXR0b25DbGljaygkZXZlbnQpXCIgbWF0LWZsYXQtYnV0dG9uIFtjbGFzcy5tYXQtaWNvbi1idXR0b25dPVwibmVlZHNJY29uQnV0dG9uQ2xhc3NcIlxuICAgIFtkaXNhYmxlZF09XCIhZW5hYmxlZFwiIFtjb2xvcl09XCJjb2xvclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2J1dHRvbj5cbn1cblxuQGlmIChpc0ljb25CdXR0b24oKSAmJiBpc1Zpc2libGUoKSkge1xuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25CdXR0b25DbGljaygkZXZlbnQpXCIgbWF0LWljb24tYnV0dG9uXG4gICAgW2NsYXNzLm1hdC1pY29uLWJ1dHRvbl09XCJuZWVkc0ljb25CdXR0b25DbGFzc1wiIFtkaXNhYmxlZF09XCIhZW5hYmxlZFwiIFtjb2xvcl09XCJjb2xvclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2J1dHRvbj5cbn1cblxuQGlmIChpc0ZhYigpICYmIGlzVmlzaWJsZSgpKSB7XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkJ1dHRvbkNsaWNrKCRldmVudClcIiBtYXQtZmFiIFtkaXNhYmxlZF09XCIhZW5hYmxlZFwiIFtjb2xvcl09XCJjb2xvclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2J1dHRvbj5cbn1cblxuQGlmIChpc01pbmlGYWIoKSAmJiBpc1Zpc2libGUoKSkge1xuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25CdXR0b25DbGljaygkZXZlbnQpXCIgbWF0LW1pbmktZmFiIFtkaXNhYmxlZF09XCIhZW5hYmxlZFwiIFtjb2xvcl09XCJjb2xvclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2J1dHRvbj5cbn1cblxuXG48bmctdGVtcGxhdGUgI2ljb25UZW1wbGF0ZT5cbiAgQGlmIChpbWFnZSE9PXVuZGVmaW5lZCkge1xuICAgIDxpbWcgc3JjPVwie3sgaW1hZ2UgfX1cIiBjbGFzcz1cIm8tYnV0dG9uLWltYWdlXCIgYWx0PVwiYnV0dG9uIGltYWdlXCIgLz5cbiAgfVxuICBAaWYgKGljb24hPT11bmRlZmluZWQpIHtcbiAgICA8bWF0LWljb24gY2xhc3M9XCJvLWJ1dHRvbi1pY29uXCI+e3sgaWNvbiB9fVxuICAgIDwvbWF0LWljb24+XG4gIH1cbiAgQGlmIChzdmdJY29uIT09dW5kZWZpbmVkKSB7XG4gICAgPG1hdC1pY29uIGNsYXNzPVwiby1idXR0b24taWNvblwiIFtzdmdJY29uXT1cInN2Z0ljb25cIj48L21hdC1pY29uPlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2J1dHRvblRlbXBsYXRlPlxuXG4gIEBpZiAoaWNvblBvc2l0aW9uPT09J2xlZnQnIHx8IGljb25Qb3NpdGlvbj09PSd0b3AnICkge1xuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpY29uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgfVxuXG4gIEBpZiAoaWNvblBvc2l0aW9uPT09J3RvcCcpIHtcbiAgICA8YnIgLz5cbiAgfVxuXG4gIHt7IG9sYWJlbCB8IG9UcmFuc2xhdGUgfX1cblxuICBAaWYgKGljb25Qb3NpdGlvbj09PSdib3R0b20nKSB7XG4gICAgPGJyIC8+XG4gIH1cblxuICBAaWYgKGljb25Qb3NpdGlvbj09PSdyaWdodCcgfHwgaWNvblBvc2l0aW9uPT09J2JvdHRvbScpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9uL28tYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL2J1dHRvbi9vLWJ1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsc0JBQXNCLEVBQXFCLG9CQUFvQixFQUEyRSxNQUFNLGFBQWEsQ0FBQztBQUN2SyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7OztBQUU5RCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUNyQyxhQUFhO0lBQ2IsZUFBZTtJQUdmLGFBQWE7SUFFYixNQUFNO0lBQ04sb0JBQW9C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QUFjLENBQUMsWUFDN0QsVUFBVSxVQUNaLHVCQUF1QixXQUN0Qix3QkFBd0IsaUJBR2xCLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osa0JBQWtCLEVBQUUsTUFBTTt3QkFDMUIsb0NBQW9DLEVBQUUsc0JBQXNCO3dCQUM1RCx1Q0FBdUMsRUFBRSx5QkFBeUI7d0JBQ2xFLHNDQUFzQyxFQUFFLDREQUE0RDt3QkFDcEcsbUNBQW1DLEVBQUUseURBQXlEO3dCQUM5RixzQ0FBc0MsRUFBRSw0REFBNEQ7d0JBR3BHLGtDQUFrQyxFQUFFLDhDQUE4QztxQkFDbkY7bUZBd0J3QixPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0Q29udmVydGVyIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9ycy9pbnB1dC1jb252ZXJ0ZXInO1xuaW1wb3J0IHsgUGVybWlzc2lvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgT19BQ1RJT05fU1RZTEVTX0NPTkZJRywgT0FjdGlvbkltcG9ydGFuY2UsIE9BY3Rpb25TdHlsZVByb3ZpZGVyLCBPQWN0aW9uU3R5bGVzQ29uZmlnLCBPQWN0aW9uVmFyaWFudCwgT1Blcm1pc3Npb25zLCBPUmVzb2x2ZWRBY3Rpb25TdHlsZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IENvZGVzIH0gZnJvbSAnLi4vLi4vdXRpbC9jb2Rlcyc7XG5pbXBvcnQgeyByZXNvbHZlQWN0aW9uU3R5bGUsIFV0aWwgfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB7IE9UcmFuc2xhdGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvby10cmFuc2xhdGUucGlwZSc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX0JVVFRPTiA9IFtcbiAgJ29hdHRyOiBhdHRyJyxcbiAgJ29sYWJlbDogbGFiZWwnLFxuICAvLyB0eXBlIFtCQVNJQ3xSQUlTRUR8U1RST0tFRHxGTEFUfElDT058RkFCfE1JTkktRkFCXTogVGhlIHR5cGUgb2YgYnV0dG9uLiBEZWZhdWx0OiBTVFJPS0VELlxuICAvLyBAZGVwcmVjYXRlZCB1c2UgYHZhcmlhbnRgIGluc3RlYWQgKGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5KS5cbiAgJ290eXBlOiB0eXBlJyxcbiAgLy8gaWNvbiBbc3RyaW5nXTogTmFtZSBvZiBnb29nbGUgaWNvbiAoc2VlIGh0dHBzOi8vZGVzaWduLmdvb2dsZS5jb20vaWNvbnMvKVxuICAnaWNvbicsXG4gICdzdmdJY29uIDogc3ZnLWljb24nLFxuICAnaWNvblBvc2l0aW9uOiBpY29uLXBvc2l0aW9uJyxcbiAgJ2ltYWdlJyxcbiAgLy8gZW5hYmxlZCBbeWVzfG5vfHRydWV8ZmFsc2VdOiBXaGV0aGVyIHRoZSBidXR0b24gaXMgZW5hYmxlZC4gRGVmYXVsdDogeWVzXG4gICdlbmFibGVkJyxcbiAgLy8gY29sb3I6IFRoZW1lIGNvbG9yIHBhbGV0dGUgZm9yIHRoZSBjb21wb25lbnQuXG4gIC8vIEBkZXByZWNhdGVkIHVzZSBgaW1wb3J0YW5jZWAgaW5zdGVhZCAoa2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkpLlxuICAnY29sb3InLFxuICAvLyB2YXJpYW50IFtvdXRsaW5lfGZsYXR8YmFzaWN8cmFpc2VkfGljb258ZmFifG1pbmktZmFiXTogdmlzdWFsIHZhcmlhbnQgLyBzaGFwZSBvZiB0aGUgYnV0dG9uLiBEZWZhdWx0OiBvdXRsaW5lLlxuICAndmFyaWFudCcsXG4gIC8vIGltcG9ydGFuY2UgW3ByaW1hcnl8d2FybnxkZWZhdWx0XTogc2VtYW50aWMgcmVsZXZhbmNlIChjb2xvdXJzIHRleHQgKyBpY29uKS5cbiAgJ2ltcG9ydGFuY2UnXG5dO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfT1VUUFVUU19PX0JVVFRPTiA9IFtcbiAgJ29uQ2xpY2snLFxuICAnY2xpY2snXG5dO1xuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgT1RyYW5zbGF0ZVBpcGVdLFxuICBzZWxlY3RvcjogJ28tYnV0dG9uJyxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX0JVVFRPTixcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fQlVUVE9OLFxuICB0ZW1wbGF0ZVVybDogJy4vby1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5vLWJ1dHRvbl0nOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5vLWJ1dHRvbi1pY29uLXBvc2l0aW9uLXRvcF0nOiAnaWNvblBvc2l0aW9uPT09XCJ0b3BcIicsXG4gICAgJ1tjbGFzcy5vLWJ1dHRvbi1pY29uLXBvc2l0aW9uLWJvdHRvbV0nOiAnaWNvblBvc2l0aW9uPT09XCJib3R0b21cIicsXG4gICAgJ1tjbGFzcy5vLWFjdGlvbi0taW1wb3J0YW5jZS1wcmltYXJ5XSc6IFwiYXBwbGllc0ltcG9ydGFuY2VDb2xvciAmJiByZXNvbHZlZEltcG9ydGFuY2UgPT09ICdwcmltYXJ5J1wiLFxuICAgICdbY2xhc3Muby1hY3Rpb24tLWltcG9ydGFuY2Utd2Fybl0nOiBcImFwcGxpZXNJbXBvcnRhbmNlQ29sb3IgJiYgcmVzb2x2ZWRJbXBvcnRhbmNlID09PSAnd2FybidcIixcbiAgICAnW2NsYXNzLm8tYWN0aW9uLS1pbXBvcnRhbmNlLWRlZmF1bHRdJzogXCJhcHBsaWVzSW1wb3J0YW5jZUNvbG9yICYmIHJlc29sdmVkSW1wb3J0YW5jZSA9PT0gJ2RlZmF1bHQnXCIsXG4gICAgLy8gZmxhdCArIGRlZmF1bHQ6IG5ldXRyYWwgc29saWQgYnV0dG9uIGluc3RlYWQgb2YgTWF0ZXJpYWwncyBwcmltYXJ5IGZpbGwuXG4gICAgLy8gKGZhYi9taW5pLWZhYiBrZWVwIE1hdGVyaWFsJ3MgZGVmYXVsdCBjb250YWluZXIuKVxuICAgICdbY2xhc3Muby1hY3Rpb24tLWZpbGxlZC1kZWZhdWx0XSc6IFwiaXNGbGF0KCkgJiYgcmVzb2x2ZWRJbXBvcnRhbmNlID09PSAnZGVmYXVsdCdcIlxuICB9XG59KVxuZXhwb3J0IGNsYXNzIE9CdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHByb3RlY3RlZCBzdGF0aWMgREVGQVVMVF9UWVBFID0gJ1NUUk9LRUQnO1xuXG4gIHByb3RlY3RlZCBzdGF0aWMgVkFSSUFOVF9UT19UWVBFOiBSZWNvcmQ8T0FjdGlvblZhcmlhbnQsIHN0cmluZz4gPSB7XG4gICAgb3V0bGluZTogJ1NUUk9LRUQnLFxuICAgIGZsYXQ6ICdGTEFUJyxcbiAgICBiYXNpYzogJ0JBU0lDJyxcbiAgICByYWlzZWQ6ICdSQUlTRUQnLFxuICAgIGljb246ICdJQ09OJyxcbiAgICBmYWI6ICdGQUInLFxuICAgICdtaW5pLWZhYic6ICdGQUItTUlOSSdcbiAgfTtcblxuICBwcm90ZWN0ZWQgb2F0dHI6IHN0cmluZztcbiAgcHVibGljIG9sYWJlbDogc3RyaW5nO1xuICAvKiogQGRlcHJlY2F0ZWQgdXNlIGB2YXJpYW50YCBpbnN0ZWFkLiAqL1xuICBwcm90ZWN0ZWQgb3R5cGU6IHN0cmluZztcbiAgcHVibGljIGljb246IHN0cmluZztcbiAgcHVibGljIHN2Z0ljb246IHN0cmluZztcbiAgcHVibGljIGljb25Qb3NpdGlvbjogc3RyaW5nID0gQ29kZXMuSUNPTl9QT1NJVElPTl9MRUZUOyAvLyBsZWZ0IChkZWZhdWx0KVxuICBwdWJsaWMgaW1hZ2U6IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpIGVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICAvKiogQGRlcHJlY2F0ZWQgdXNlIGBpbXBvcnRhbmNlYCBpbnN0ZWFkLiAqL1xuICBwdWJsaWMgY29sb3I6IFRoZW1lUGFsZXR0ZTtcbiAgcHVibGljIHZhcmlhbnQ6IE9BY3Rpb25WYXJpYW50O1xuICBwdWJsaWMgaW1wb3J0YW5jZTogT0FjdGlvbkltcG9ydGFuY2U7XG4gIHB1YmxpYyB2aXNpYmxlOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKiBPdXRwdXRzICovXG4gIHB1YmxpYyBvbkNsaWNrOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgcHVibGljIGNsaWNrOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcbiAgcHJvdGVjdGVkIHBlcm1pc3Npb25zU2VydmljZSA9IGluamVjdChQZXJtaXNzaW9uc1NlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcGVybWlzc2lvbnM6IE9QZXJtaXNzaW9ucztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGhvc3QgYWN0aW9uLXN0eWxlIHByb3ZpZGVyICh0aGUgc3Vycm91bmRpbmcgYG8tdGFibGVgLCBgby1ncmlkYCxcbiAgICogYG8tbGlzdGAsIGBvLXRyZWVgIG9yIGBvLWZvcm1gKS4gV2hlbiBwcmVzZW50LCBhIGJ1dHRvbiB3aXRoIG5vIGV4cGxpY2l0XG4gICAqIGB2YXJpYW50YC9gdHlwZWAgb3IgYGltcG9ydGFuY2VgL2Bjb2xvcmAgcmVzb2x2ZXMgdGhvc2UgZnJvbSB0aGUgaG9zdCdzXG4gICAqIGBhY3Rpb24tc3R5bGVzYCBieSBpdHMgYGF0dHJgLCBzbyBhIHByb2plY3RlZCBjdXN0b20gYnV0dG9uIGRlZmF1bHRzIHRvXG4gICAqIGBvdXRsaW5lYCArIGBkZWZhdWx0YCBhbmQgaG9ub3VycyB0aGUgaG9zdCBjb25maWd1cmF0aW9uIGF1dG9tYXRpY2FsbHkuXG4gICAqL1xuICBwcm90ZWN0ZWQgYWN0aW9uU3R5bGVQcm92aWRlciA9IGluamVjdChPQWN0aW9uU3R5bGVQcm92aWRlciwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAvKipcbiAgICogQXBwLXdpZGUgYWN0aW9uLXN0eWxlIGRlZmF1bHRzIChmcm9tIGBPX0FDVElPTl9TVFlMRVNfQ09ORklHYCkuIFVzZWQgdG9cbiAgICogcmVzb2x2ZSBgdmFyaWFudGAgLyBgaW1wb3J0YW5jZWAgd2hlbiB0aGlzIGJ1dHRvbiBpcyBOT1QgcHJvamVjdGVkIGluc2lkZSBhXG4gICAqIGhvc3QgcHJvdmlkZXI7IHdoZW4gaXQgaXMsIHRoZSBob3N0IGFscmVhZHkgZm9sZHMgdGhpcyBjb25maWcgaW4uXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2xvYmFsQWN0aW9uU3R5bGVzQ29uZmlnID0gaW5qZWN0KE9fQUNUSU9OX1NUWUxFU19DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGFjdFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wZXJtaXNzaW9ucyA9IHRoaXMucGVybWlzc2lvbnNTZXJ2aWNlLmdldE9CdXR0b25QZXJtaXNzaW9ucyh0aGlzLm9hdHRyLCB0aGlzLmFjdFJvdXRlKTtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5wZXJtaXNzaW9ucykpIHtcbiAgICAgIHRoaXMuZW5hYmxlZCA9IHRoaXMucGVybWlzc2lvbnMuZW5hYmxlZDtcbiAgICAgIHRoaXMudmlzaWJsZSA9IHRoaXMucGVybWlzc2lvbnMudmlzaWJsZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRWZmZWN0aXZlIGxlZ2FjeSBidXR0b24gdHlwZSBkcml2aW5nIHRoZSB0ZW1wbGF0ZSBicmFuY2hlcywgcmVzb2x2ZWQgYXM6XG4gICAqIGV4cGxpY2l0IGB2YXJpYW50YCA+IGxlZ2FjeSBgdHlwZWAgPiBob3N0IGBhY3Rpb24tc3R5bGVzYCB2YXJpYW50IChieSBgYXR0cmApXG4gICAqID4gYFNUUk9LRURgICg9IG91dGxpbmUpLiBLZWVwcyB0aGUgZXhpc3RpbmcgdGVtcGxhdGUgd29ya2luZyB1bmNoYW5nZWQuXG4gICAqL1xuICAvKipcbiAgICogQWN0aW9uIHN0eWxlIHJlc29sdmVkIGZyb20gdGhlIGhvc3QgcHJvdmlkZXIgd2hlbiB0aGlzIGJ1dHRvbiBpcyBwcm9qZWN0ZWRcbiAgICogaW5zaWRlIG9uZSAodGhlIGhvc3QgYWxyZWFkeSBmb2xkcyBpbiBgYWN0aW9uLXN0eWxlc2AgYW5kIHRoZSBhcHAtd2lkZVxuICAgKiBjb25maWcpLCBvciBkaXJlY3RseSBmcm9tIGBPX0FDVElPTl9TVFlMRVNfQ09ORklHYCB3aGVuIHVzZWQgc3RhbmRhbG9uZS5cbiAgICogQWx3YXlzIGZ1bGx5IHJlc29sdmVkIChkZWZhdWx0cyB0byBgb3V0bGluZWAgKyBgZGVmYXVsdGApLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBob3N0T3JHbG9iYWxBY3Rpb25TdHlsZSgpOiBPUmVzb2x2ZWRBY3Rpb25TdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aW9uU3R5bGVQcm92aWRlclxuICAgICAgPyB0aGlzLmFjdGlvblN0eWxlUHJvdmlkZXIuZ2V0UmVzb2x2ZWRBY3Rpb25TdHlsZSh0aGlzLm9hdHRyKVxuICAgICAgOiByZXNvbHZlQWN0aW9uU3R5bGUodGhpcy5vYXR0ciwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMuZ2xvYmFsQWN0aW9uU3R5bGVzQ29uZmlnID8/IHVuZGVmaW5lZCk7XG4gIH1cblxuICBnZXQgZWZmZWN0aXZlVHlwZSgpOiBzdHJpbmcge1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZCh0aGlzLnZhcmlhbnQpKSB7XG4gICAgICByZXR1cm4gT0J1dHRvbkNvbXBvbmVudC5WQVJJQU5UX1RPX1RZUEVbdGhpcy52YXJpYW50XSA/PyBPQnV0dG9uQ29tcG9uZW50LkRFRkFVTFRfVFlQRTtcbiAgICB9XG4gICAgaWYgKFV0aWwuaXNEZWZpbmVkKHRoaXMub3R5cGUpKSB7XG4gICAgICByZXR1cm4gdGhpcy5vdHlwZS50b1VwcGVyQ2FzZSgpO1xuICAgIH1cbiAgICBjb25zdCB2YXJpYW50ID0gdGhpcy5ob3N0T3JHbG9iYWxBY3Rpb25TdHlsZS52YXJpYW50O1xuICAgIHJldHVybiBPQnV0dG9uQ29tcG9uZW50LlZBUklBTlRfVE9fVFlQRVt2YXJpYW50XSA/PyBPQnV0dG9uQ29tcG9uZW50LkRFRkFVTFRfVFlQRTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlZCBpbXBvcnRhbmNlIHVzZWQgdG8gdG9nZ2xlIHRoZSBzaGFyZWQgYC5vLWFjdGlvbi0taW1wb3J0YW5jZS0qYFxuICAgKiBjbGFzcy4gUHJlY2VkZW5jZTogZXhwbGljaXQgYGltcG9ydGFuY2VgID4gbGVnYWN5IGBjb2xvcmAgKHByaW1hcnkvd2FybikgPlxuICAgKiBob3N0IGBhY3Rpb24tc3R5bGVzYCBpbXBvcnRhbmNlIChieSBgYXR0cmApID4gYGRlZmF1bHRgLiBBIGxlZ2FjeSBgY29sb3JgXG4gICAqIHdpdGggbm8gaW1wb3J0YW5jZSBlcXVpdmFsZW50IChlLmcuIGBhY2NlbnRgKSByZXR1cm5zIGB1bmRlZmluZWRgIHNvIHRoZVxuICAgKiBidXR0b24ga2VlcHMgTWF0ZXJpYWwncyByZW5kZXJpbmcuXG4gICAqL1xuICBnZXQgcmVzb2x2ZWRJbXBvcnRhbmNlKCk6IE9BY3Rpb25JbXBvcnRhbmNlIHtcbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5pbXBvcnRhbmNlKSkge1xuICAgICAgcmV0dXJuIHRoaXMuaW1wb3J0YW5jZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuY29sb3IgPT09ICdwcmltYXJ5JyB8fCB0aGlzLmNvbG9yID09PSAnd2FybicpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbG9yO1xuICAgIH1cbiAgICBpZiAoVXRpbC5pc0RlZmluZWQodGhpcy5jb2xvcikpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmhvc3RPckdsb2JhbEFjdGlvblN0eWxlLmltcG9ydGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaW1wb3J0YW5jZSBjb2xvdXIgYXBwbGllcyB0byB0aGUgbGFiZWwvaWNvbi4gU2hhcGVzIHdpdGggYSBsaWdodFxuICAgKiBvciB0cmFuc3BhcmVudCBjb250YWluZXIgKG91dGxpbmUsIGJhc2ljLCBpY29uIGFuZCB0aGUgZWxldmF0ZWQgYHJhaXNlZGApXG4gICAqIGNvbG91ciB0aGUgdGV4dC9pY29uIGRpcmVjdGx5IHZpYSB0aGUgc2hhcmVkIGAuby1hY3Rpb24tLWltcG9ydGFuY2UtKmAgY2xhc3MuXG4gICAqIFRoZSB0cnVseSBmaWxsZWQgc2hhcGVzIChmbGF0LCBmYWIsIG1pbmktZmFiKSBpbnN0ZWFkIHJvdXRlIHRoZSBpbXBvcnRhbmNlIHRvXG4gICAqIHRoZSBjb250YWluZXIgY29sb3VyIChzZWUgYHJlc29sdmVkQ29sb3JgKSwga2VlcGluZyB0aGUgbGFiZWwgb24gaXRzIGxlZ2libGVcbiAgICogb24tY29udGFpbmVyIGNvbG91ci5cbiAgICovXG4gIGdldCBhcHBsaWVzSW1wb3J0YW5jZUNvbG9yKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmVmZmVjdGl2ZVR5cGU7XG4gICAgcmV0dXJuIHR5cGUgPT09ICdTVFJPS0VEJyB8fCB0eXBlID09PSAnQkFTSUMnIHx8IHR5cGUgPT09ICdJQ09OJyB8fCB0eXBlID09PSAnUkFJU0VEJztcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRlcmlhbCBjb2xvdXIgcGFsZXR0ZSBib3VuZCB0byB0aGUgYnV0dG9uLiBPbiB0aGUgZmlsbGVkIHNoYXBlcyAoZmxhdCwgZmFiLFxuICAgKiBtaW5pLWZhYikgdGhlIGltcG9ydGFuY2UgKHByaW1hcnkvd2FybikgZHJpdmVzIHRoZSBjb250YWluZXIgY29sb3VyLCBzbyBlLmcuIGFcbiAgICogYGZsYXRgICsgYHdhcm5gIGJ1dHRvbiBnZXRzIHRoZSB3YXJuIGJhY2tncm91bmQgd2l0aCBhIGxlZ2libGUgbGFiZWwuIE9uIHRoZVxuICAgKiB0ZXh0LWNvbG91cmVkIHNoYXBlcyAoYW5kIGZvciBgZGVmYXVsdGAgaW1wb3J0YW5jZSkgaXQgZmFsbHMgYmFjayB0byB0aGVcbiAgICogbGVnYWN5IGBjb2xvcmAgaW5wdXQuXG4gICAqL1xuICBnZXQgcmVzb2x2ZWRDb2xvcigpOiBUaGVtZVBhbGV0dGUge1xuICAgIGlmICghdGhpcy5hcHBsaWVzSW1wb3J0YW5jZUNvbG9yKSB7XG4gICAgICBjb25zdCBpbXBvcnRhbmNlID0gdGhpcy5yZXNvbHZlZEltcG9ydGFuY2U7XG4gICAgICBpZiAoaW1wb3J0YW5jZSA9PT0gJ3ByaW1hcnknIHx8IGltcG9ydGFuY2UgPT09ICd3YXJuJykge1xuICAgICAgICByZXR1cm4gaW1wb3J0YW5jZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29sb3I7XG4gIH1cblxuICBvbkJ1dHRvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMuZW5hYmxlZCkge1xuICAgICAgdGhpcy5jbGljay5lbWl0KGV2ZW50KTtcbiAgICAgIHRoaXMub25DbGljay5lbWl0KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBnZXQgbmVlZHNJY29uQnV0dG9uQ2xhc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmljb24gIT09IHVuZGVmaW5lZCB8fCB0aGlzLnN2Z0ljb24gIT09IHVuZGVmaW5lZCkgJiYgKHRoaXMub2xhYmVsID09PSB1bmRlZmluZWQgfHwgdGhpcy5vbGFiZWwgPT09ICcnKTtcbiAgfVxuXG4gIGlzRmFiKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVmZmVjdGl2ZVR5cGUgPT09ICdGQUInO1xuICB9XG5cbiAgaXNSYWlzZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZWZmZWN0aXZlVHlwZSA9PT0gJ1JBSVNFRCc7XG4gIH1cblxuICBpc0ZsYXQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZWZmZWN0aXZlVHlwZSA9PT0gJ0ZMQVQnO1xuICB9XG5cbiAgaXNTdHJva2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVmZmVjdGl2ZVR5cGUgPT09ICdTVFJPS0VEJztcbiAgfVxuXG4gIGlzQmFzaWMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZWZmZWN0aXZlVHlwZSA9PT0gJ0JBU0lDJztcbiAgfVxuXG4gIGlzTWluaUZhYigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lZmZlY3RpdmVUeXBlID09PSAnRkFCLU1JTkknO1xuICB9XG5cbiAgaXNJY29uQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVmZmVjdGl2ZVR5cGUgPT09ICdJQ09OJztcbiAgfVxuICBpc1Zpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZTtcbiAgfVxufVxuIiwiQGlmIChpc0Jhc2ljKCkgJiYgaXNWaXNpYmxlKCkpIHtcbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uQnV0dG9uQ2xpY2soJGV2ZW50KVwiIG1hdC1idXR0b24gW2NsYXNzLm1hdC1pY29uLWJ1dHRvbl09XCJuZWVkc0ljb25CdXR0b25DbGFzc1wiXG4gICAgW2Rpc2FibGVkXT1cIiFlbmFibGVkXCIgW2NvbG9yXT1cInJlc29sdmVkQ29sb3JcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9idXR0b24+XG59XG5cbkBpZiAoaXNSYWlzZWQoKSAmJiBpc1Zpc2libGUoKSkge1xuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25CdXR0b25DbGljaygkZXZlbnQpXCIgbWF0LXJhaXNlZC1idXR0b24gY2xhc3M9XCJtYXQtcmFpc2VkLWJ1dHRvblwiXG4gICAgW2NsYXNzLm1hdC1pY29uLWJ1dHRvbl09XCJuZWVkc0ljb25CdXR0b25DbGFzc1wiIFtkaXNhYmxlZF09XCIhZW5hYmxlZFwiIFtjb2xvcl09XCJyZXNvbHZlZENvbG9yXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gIDwvYnV0dG9uPlxufVxuXG5AaWYgKGlzU3Ryb2tlZCgpICYmIGlzVmlzaWJsZSgpKSB7XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkJ1dHRvbkNsaWNrKCRldmVudClcIiBtYXQtc3Ryb2tlZC1idXR0b25cbiAgICBbY2xhc3MubWF0LWljb24tYnV0dG9uXT1cIm5lZWRzSWNvbkJ1dHRvbkNsYXNzXCIgW2Rpc2FibGVkXT1cIiFlbmFibGVkXCIgW2NvbG9yXT1cInJlc29sdmVkQ29sb3JcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9idXR0b24+XG59XG5cbkBpZiAoaXNGbGF0KCkgJiYgaXNWaXNpYmxlKCkpIHtcbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uQnV0dG9uQ2xpY2soJGV2ZW50KVwiIG1hdC1mbGF0LWJ1dHRvbiBbY2xhc3MubWF0LWljb24tYnV0dG9uXT1cIm5lZWRzSWNvbkJ1dHRvbkNsYXNzXCJcbiAgICBbZGlzYWJsZWRdPVwiIWVuYWJsZWRcIiBbY29sb3JdPVwicmVzb2x2ZWRDb2xvclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2J1dHRvbj5cbn1cblxuQGlmIChpc0ljb25CdXR0b24oKSAmJiBpc1Zpc2libGUoKSkge1xuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25CdXR0b25DbGljaygkZXZlbnQpXCIgbWF0LWljb24tYnV0dG9uXG4gICAgW2NsYXNzLm1hdC1pY29uLWJ1dHRvbl09XCJuZWVkc0ljb25CdXR0b25DbGFzc1wiIFtkaXNhYmxlZF09XCIhZW5hYmxlZFwiIFtjb2xvcl09XCJyZXNvbHZlZENvbG9yXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gIDwvYnV0dG9uPlxufVxuXG5AaWYgKGlzRmFiKCkgJiYgaXNWaXNpYmxlKCkpIHtcbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uQnV0dG9uQ2xpY2soJGV2ZW50KVwiIG1hdC1mYWIgW2Rpc2FibGVkXT1cIiFlbmFibGVkXCIgW2NvbG9yXT1cInJlc29sdmVkQ29sb3JcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9idXR0b24+XG59XG5cbkBpZiAoaXNNaW5pRmFiKCkgJiYgaXNWaXNpYmxlKCkpIHtcbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uQnV0dG9uQ2xpY2soJGV2ZW50KVwiIG1hdC1taW5pLWZhYiBbZGlzYWJsZWRdPVwiIWVuYWJsZWRcIiBbY29sb3JdPVwicmVzb2x2ZWRDb2xvclwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2J1dHRvbj5cbn1cblxuXG48bmctdGVtcGxhdGUgI2ljb25UZW1wbGF0ZT5cbiAgQGlmIChpbWFnZSE9PXVuZGVmaW5lZCkge1xuICAgIDxpbWcgc3JjPVwie3sgaW1hZ2UgfX1cIiBjbGFzcz1cIm8tYnV0dG9uLWltYWdlXCIgYWx0PVwiYnV0dG9uIGltYWdlXCIgLz5cbiAgfVxuICBAaWYgKGljb24hPT11bmRlZmluZWQpIHtcbiAgICA8bWF0LWljb24gY2xhc3M9XCJvLWJ1dHRvbi1pY29uXCI+e3sgaWNvbiB9fVxuICAgIDwvbWF0LWljb24+XG4gIH1cbiAgQGlmIChzdmdJY29uIT09dW5kZWZpbmVkKSB7XG4gICAgPG1hdC1pY29uIGNsYXNzPVwiby1idXR0b24taWNvblwiIFtzdmdJY29uXT1cInN2Z0ljb25cIj48L21hdC1pY29uPlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2J1dHRvblRlbXBsYXRlPlxuXG4gIEBpZiAoaWNvblBvc2l0aW9uPT09J2xlZnQnIHx8IGljb25Qb3NpdGlvbj09PSd0b3AnICkge1xuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpY29uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgfVxuXG4gIEBpZiAoaWNvblBvc2l0aW9uPT09J3RvcCcpIHtcbiAgICA8YnIgLz5cbiAgfVxuXG4gIHt7IG9sYWJlbCB8IG9UcmFuc2xhdGUgfX1cblxuICBAaWYgKGljb25Qb3NpdGlvbj09PSdib3R0b20nKSB7XG4gICAgPGJyIC8+XG4gIH1cblxuICBAaWYgKGljb25Qb3NpdGlvbj09PSdyaWdodCcgfHwgaWNvblBvc2l0aW9uPT09J2JvdHRvbScpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaWNvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|