@kirbydesign/designsystem 8.2.0-rc.2 → 8.3.0
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/README.md +7 -0
- package/action-group/action-group.component.d.ts +10 -6
- package/button/button.component.d.ts +2 -1
- package/button/public_api.d.ts +1 -1
- package/dropdown/keyboard-handler.service.d.ts +1 -1
- package/esm2020/action-group/action-group.component.mjs +25 -29
- package/esm2020/button/button.component.mjs +3 -3
- package/esm2020/button/public_api.mjs +2 -2
- package/esm2020/card/card.component.mjs +2 -2
- package/esm2020/dropdown/dropdown.component.mjs +4 -4
- package/esm2020/dropdown/dropdown.module.mjs +1 -1
- package/esm2020/dropdown/keyboard-handler.service.mjs +12 -7
- package/esm2020/header/header.component.mjs +12 -26
- package/esm2020/header/public_api.mjs +2 -2
- package/esm2020/item/item.component.mjs +2 -2
- package/esm2020/lib/index.mjs +3 -1
- package/esm2020/lib/kirby.module.mjs +22 -5
- package/esm2020/list/list-item/list-item.component.mjs +2 -2
- package/esm2020/list/list.component.mjs +2 -2
- package/esm2020/menu/kirbydesign-designsystem-menu.mjs +5 -0
- package/esm2020/menu/menu.component.mjs +69 -0
- package/esm2020/menu/public_api.mjs +2 -0
- package/esm2020/modal/modal/footer/modal-footer.component.mjs +3 -3
- package/esm2020/modal/v2/footer/footer.component.mjs +2 -2
- package/esm2020/modal/v2/modal-routing/modal-routing.component.mjs +3 -3
- package/esm2020/page/page-footer/page-footer.component.mjs +2 -2
- package/esm2020/page/page.component.mjs +37 -30
- package/esm2020/page/public_api.mjs +2 -12
- package/esm2020/shared/floating/floating.directive.mjs +91 -24
- package/esm2020/shared/floating/public_api.mjs +2 -2
- package/esm2020/tab-navigation/kirbydesign-designsystem-tab-navigation.mjs +5 -0
- package/esm2020/tab-navigation/public_api.mjs +4 -0
- package/esm2020/tab-navigation/tab-navigation/tab-navigation.component.mjs +121 -0
- package/esm2020/tab-navigation/tab-navigation-item/tab-navigation-item.component.mjs +17 -0
- package/esm2020/tab-navigation/tab-navigation.module.mjs +19 -0
- package/fesm2015/kirbydesign-designsystem-accordion.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-action-group.mjs +25 -30
- package/fesm2015/kirbydesign-designsystem-action-group.mjs.map +1 -1
- package/fesm2015/kirbydesign-designsystem-alert-experimental.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-avatar.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-button.mjs +2 -3
- package/fesm2015/kirbydesign-designsystem-button.mjs.map +1 -1
- package/fesm2015/kirbydesign-designsystem-calendar.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-card.mjs +2 -3
- package/fesm2015/kirbydesign-designsystem-card.mjs.map +1 -1
- package/fesm2015/kirbydesign-designsystem-chart.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-checkbox.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-data-table.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-divider.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-dropdown.mjs +15 -11
- package/fesm2015/kirbydesign-designsystem-dropdown.mjs.map +1 -1
- package/fesm2015/kirbydesign-designsystem-empty-state.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-fab-sheet.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-flag.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-form-field.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-grid.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-header.mjs +12 -29
- package/fesm2015/kirbydesign-designsystem-header.mjs.map +1 -1
- package/fesm2015/kirbydesign-designsystem-helpers-scss.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-helpers.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-icon.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-item-group.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-item-sliding.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-item.mjs +2 -3
- package/fesm2015/kirbydesign-designsystem-item.mjs.map +1 -1
- package/fesm2015/kirbydesign-designsystem-kirby-app.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-kirby-ionic-module.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-list.mjs +4 -5
- package/fesm2015/kirbydesign-designsystem-list.mjs.map +1 -1
- package/fesm2015/kirbydesign-designsystem-loading-overlay.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-menu.mjs +76 -0
- package/fesm2015/kirbydesign-designsystem-menu.mjs.map +1 -0
- package/fesm2015/kirbydesign-designsystem-modal-v2.mjs +4 -5
- package/fesm2015/kirbydesign-designsystem-modal-v2.mjs.map +1 -1
- package/fesm2015/kirbydesign-designsystem-modal.mjs +2 -3
- package/fesm2015/kirbydesign-designsystem-modal.mjs.map +1 -1
- package/fesm2015/kirbydesign-designsystem-page.mjs +38 -32
- package/fesm2015/kirbydesign-designsystem-page.mjs.map +1 -1
- package/fesm2015/kirbydesign-designsystem-popover.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-progress-circle.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-radio.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-range.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-reorder-list.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-router-outlet.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-section-header.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-shared-floating.mjs +92 -25
- package/fesm2015/kirbydesign-designsystem-shared-floating.mjs.map +1 -1
- package/fesm2015/kirbydesign-designsystem-shared-portal.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-shared.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-slide-button.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-slide.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-spinner.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-tab-navigation.mjs +156 -0
- package/fesm2015/kirbydesign-designsystem-tab-navigation.mjs.map +1 -0
- package/fesm2015/kirbydesign-designsystem-tabs.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-testing-base.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-testing-jasmine.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-testing-jest.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-testing.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-toast.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-toggle-button.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-toggle.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem-types.mjs +0 -1
- package/fesm2015/kirbydesign-designsystem.mjs +23 -5
- package/fesm2015/kirbydesign-designsystem.mjs.map +1 -1
- package/fesm2020/kirbydesign-designsystem-accordion.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-action-group.mjs +25 -30
- package/fesm2020/kirbydesign-designsystem-action-group.mjs.map +1 -1
- package/fesm2020/kirbydesign-designsystem-alert-experimental.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-avatar.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-button.mjs +2 -3
- package/fesm2020/kirbydesign-designsystem-button.mjs.map +1 -1
- package/fesm2020/kirbydesign-designsystem-calendar.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-card.mjs +2 -3
- package/fesm2020/kirbydesign-designsystem-card.mjs.map +1 -1
- package/fesm2020/kirbydesign-designsystem-chart.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-checkbox.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-data-table.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-divider.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-dropdown.mjs +15 -11
- package/fesm2020/kirbydesign-designsystem-dropdown.mjs.map +1 -1
- package/fesm2020/kirbydesign-designsystem-empty-state.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-fab-sheet.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-flag.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-form-field.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-grid.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-header.mjs +12 -27
- package/fesm2020/kirbydesign-designsystem-header.mjs.map +1 -1
- package/fesm2020/kirbydesign-designsystem-helpers-scss.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-helpers.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-icon.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-item-group.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-item-sliding.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-item.mjs +2 -3
- package/fesm2020/kirbydesign-designsystem-item.mjs.map +1 -1
- package/fesm2020/kirbydesign-designsystem-kirby-app.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-kirby-ionic-module.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-list.mjs +4 -5
- package/fesm2020/kirbydesign-designsystem-list.mjs.map +1 -1
- package/fesm2020/kirbydesign-designsystem-loading-overlay.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-menu.mjs +76 -0
- package/fesm2020/kirbydesign-designsystem-menu.mjs.map +1 -0
- package/fesm2020/kirbydesign-designsystem-modal-v2.mjs +4 -5
- package/fesm2020/kirbydesign-designsystem-modal-v2.mjs.map +1 -1
- package/fesm2020/kirbydesign-designsystem-modal.mjs +2 -3
- package/fesm2020/kirbydesign-designsystem-modal.mjs.map +1 -1
- package/fesm2020/kirbydesign-designsystem-page.mjs +38 -32
- package/fesm2020/kirbydesign-designsystem-page.mjs.map +1 -1
- package/fesm2020/kirbydesign-designsystem-popover.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-progress-circle.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-radio.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-range.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-reorder-list.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-router-outlet.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-section-header.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-shared-floating.mjs +91 -25
- package/fesm2020/kirbydesign-designsystem-shared-floating.mjs.map +1 -1
- package/fesm2020/kirbydesign-designsystem-shared-portal.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-shared.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-slide-button.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-slide.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-spinner.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-tab-navigation.mjs +155 -0
- package/fesm2020/kirbydesign-designsystem-tab-navigation.mjs.map +1 -0
- package/fesm2020/kirbydesign-designsystem-tabs.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-testing-base.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-testing-jasmine.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-testing-jest.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-testing.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-toast.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-toggle-button.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-toggle.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem-types.mjs +0 -1
- package/fesm2020/kirbydesign-designsystem.mjs +23 -5
- package/fesm2020/kirbydesign-designsystem.mjs.map +1 -1
- package/header/header.component.d.ts +5 -11
- package/header/public_api.d.ts +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/kirby.module.d.ts +42 -39
- package/menu/index.d.ts +5 -0
- package/menu/menu.component.d.ts +31 -0
- package/menu/public_api.d.ts +1 -0
- package/package.json +18 -2
- package/page/page.component.d.ts +12 -5
- package/page/public_api.d.ts +1 -12
- package/shared/floating/floating.directive.d.ts +30 -4
- package/shared/floating/public_api.d.ts +1 -1
- package/tab-navigation/index.d.ts +5 -0
- package/tab-navigation/public_api.d.ts +3 -0
- package/tab-navigation/tab-navigation/tab-navigation.component.d.ts +30 -0
- package/tab-navigation/tab-navigation-item/tab-navigation-item.component.d.ts +7 -0
- package/tab-navigation/tab-navigation.module.d.ts +9 -0
- package/icon/src/README.md +0 -16
|
@@ -1,27 +1,28 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, Directive, ElementRef, EventEmitter, HostBinding, HostListener, Inject, Injector, Input, NgZone, Optional, Output, QueryList, Renderer2, SkipSelf, TemplateRef, ViewChild, } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, Directive, ElementRef, EventEmitter, HostBinding, HostListener, Inject, InjectionToken, Injector, Input, NgZone, Optional, Output, QueryList, Renderer2, SkipSelf, TemplateRef, ViewChild, } from '@angular/core';
|
|
2
2
|
import { NavigationEnd, NavigationStart, Router } from '@angular/router';
|
|
3
|
-
import { IonBackButtonDelegate, IonContent, IonFooter, IonHeader } from '@ionic/angular';
|
|
3
|
+
import { IonBackButtonDelegate, IonContent, IonFooter, IonHeader, IonRouterOutlet, NavController, } from '@ionic/angular';
|
|
4
4
|
import { selectedTabClickEvent, TabsComponent } from '@kirbydesign/designsystem/tabs';
|
|
5
5
|
import { Subject } from 'rxjs';
|
|
6
6
|
import { debounceTime, filter, map, takeUntil } from 'rxjs/operators';
|
|
7
7
|
import { KirbyAnimation } from '@kirbydesign/designsystem/helpers';
|
|
8
8
|
import { ModalElementComponent, ModalElementsAdvertiser, ModalElementType, ModalNavigationService, ModalWrapperComponent, } from '@kirbydesign/designsystem/modal';
|
|
9
9
|
import { ResizeObserverService } from '@kirbydesign/designsystem/shared';
|
|
10
|
-
import {
|
|
10
|
+
import { HeaderComponent } from '@kirbydesign/designsystem/header';
|
|
11
11
|
import { ACTIONGROUP_CONFIG } from '@kirbydesign/designsystem/action-group';
|
|
12
12
|
import * as i0 from "@angular/core";
|
|
13
13
|
import * as i1 from "@kirbydesign/designsystem/modal";
|
|
14
14
|
import * as i2 from "@angular/router";
|
|
15
15
|
import * as i3 from "@kirbydesign/designsystem/shared";
|
|
16
16
|
import * as i4 from "@kirbydesign/designsystem/tabs";
|
|
17
|
-
import * as i5 from "@angular
|
|
18
|
-
import * as i6 from "@
|
|
17
|
+
import * as i5 from "@ionic/angular";
|
|
18
|
+
import * as i6 from "@angular/common";
|
|
19
19
|
import * as i7 from "@kirbydesign/designsystem/spinner";
|
|
20
20
|
/**
|
|
21
21
|
* Specify scroll event debounce time in ms and scrolled offset from top in pixels
|
|
22
22
|
*/
|
|
23
23
|
const contentScrollDebounceTimeInMS = 10;
|
|
24
24
|
const contentScrolledOffsetInPixels = 4;
|
|
25
|
+
export const PAGE_BACK_BUTTON_OVERRIDE = new InjectionToken('page-back-button-override');
|
|
25
26
|
export class PageTitleDirective {
|
|
26
27
|
}
|
|
27
28
|
/** @nocollapse */ PageTitleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PageTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -189,7 +190,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
189
190
|
}]
|
|
190
191
|
}] });
|
|
191
192
|
export class PageComponent {
|
|
192
|
-
constructor(elementRef, injector, renderer, router, changeDetectorRef, zone, modalNavigationService, resizeObserverService,
|
|
193
|
+
constructor(elementRef, injector, renderer, router, changeDetectorRef, zone, modalNavigationService, resizeObserverService, tabsComponent, backButtonOverride, routerOutlet, navCtrl) {
|
|
193
194
|
this.elementRef = elementRef;
|
|
194
195
|
this.injector = injector;
|
|
195
196
|
this.renderer = renderer;
|
|
@@ -198,14 +199,17 @@ export class PageComponent {
|
|
|
198
199
|
this.zone = zone;
|
|
199
200
|
this.modalNavigationService = modalNavigationService;
|
|
200
201
|
this.resizeObserverService = resizeObserverService;
|
|
201
|
-
this.headerConfig = headerConfig;
|
|
202
202
|
this.tabsComponent = tabsComponent;
|
|
203
|
+
this.backButtonOverride = backButtonOverride;
|
|
204
|
+
this.routerOutlet = routerOutlet;
|
|
205
|
+
this.navCtrl = navCtrl;
|
|
203
206
|
this.titleAlignment = 'left';
|
|
204
207
|
this.maxWidth = 'default';
|
|
205
208
|
this.enter = new EventEmitter();
|
|
206
209
|
this.leave = new EventEmitter();
|
|
207
210
|
this.refresh = new EventEmitter();
|
|
208
211
|
this.backButtonClick = new EventEmitter();
|
|
212
|
+
this.isStickyContentPinned = false;
|
|
209
213
|
this.isObservingTitle = false;
|
|
210
214
|
this.isObservingActions = false;
|
|
211
215
|
this.ngOnDestroy$ = new Subject();
|
|
@@ -249,7 +253,6 @@ export class PageComponent {
|
|
|
249
253
|
}
|
|
250
254
|
ngOnChanges(changes) {
|
|
251
255
|
if (changes.titleMaxLines) {
|
|
252
|
-
this.headerConfig.titleMaxLines = changes.titleMaxLines.currentValue;
|
|
253
256
|
this.fitHeadingConfig = {
|
|
254
257
|
maxLines: changes.titleMaxLines.currentValue,
|
|
255
258
|
};
|
|
@@ -343,6 +346,12 @@ export class PageComponent {
|
|
|
343
346
|
}
|
|
344
347
|
}
|
|
345
348
|
interceptBackButtonClicksSetup() {
|
|
349
|
+
if (this.backButtonOverride) {
|
|
350
|
+
this.backButtonDelegate.onClick = (event) => {
|
|
351
|
+
event.preventDefault();
|
|
352
|
+
this.backButtonOverride.navigateBack(this.routerOutlet, this.navCtrl, this.defaultBackHref);
|
|
353
|
+
};
|
|
354
|
+
}
|
|
346
355
|
// Intercept back-button click events, defaulting to the built-in click-handler.
|
|
347
356
|
if (this.backButtonClick.observers.length === 0) {
|
|
348
357
|
this.backButtonClick
|
|
@@ -405,7 +414,7 @@ export class PageComponent {
|
|
|
405
414
|
}, { root: this.ionContentElement.nativeElement });
|
|
406
415
|
}
|
|
407
416
|
// Run outside Angular to prevent unnecessary triggering change detection
|
|
408
|
-
// and - under certain conditions - an
|
|
417
|
+
// and - under certain conditions - an infinite loop when called within ngAfterContentChecked:
|
|
409
418
|
this.zone.runOutsideAngular(() => {
|
|
410
419
|
this.whenContentReady().then(() => {
|
|
411
420
|
const titleElementRef = this.pageTitle || this.header?.titleElement;
|
|
@@ -456,7 +465,7 @@ export class PageComponent {
|
|
|
456
465
|
}, { root: this.ionContentElement.nativeElement });
|
|
457
466
|
}
|
|
458
467
|
// Run outside Angular to prevent unnecessary triggering change detection
|
|
459
|
-
// and - under certain conditions - an
|
|
468
|
+
// and - under certain conditions - an infinite loop when called within ngAfterContentChecked:
|
|
460
469
|
this.zone.runOutsideAngular(() => {
|
|
461
470
|
this.whenContentReady().then(() => {
|
|
462
471
|
if (this.header?.actionsElement?.nativeElement) {
|
|
@@ -491,8 +500,10 @@ export class PageComponent {
|
|
|
491
500
|
threshold: 1,
|
|
492
501
|
};
|
|
493
502
|
const callback = (entries) => {
|
|
494
|
-
|
|
495
|
-
|
|
503
|
+
if (this.isStickyContentPinned !== !entries[0].isIntersecting) {
|
|
504
|
+
this.isStickyContentPinned = !this.isStickyContentPinned;
|
|
505
|
+
this.changeDetectorRef.detectChanges();
|
|
506
|
+
}
|
|
496
507
|
};
|
|
497
508
|
return new IntersectionObserver(callback, options);
|
|
498
509
|
}
|
|
@@ -513,28 +524,24 @@ export class PageComponent {
|
|
|
513
524
|
}
|
|
514
525
|
}
|
|
515
526
|
}
|
|
516
|
-
/** @nocollapse */ PageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PageComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i2.Router }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.ModalNavigationService }, { token: i3.ResizeObserverService }, { token:
|
|
517
|
-
/** @nocollapse */ PageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: PageComponent, selector: "kirby-page", inputs: { title: "title", subtitle: "subtitle", toolbarTitle: "toolbarTitle", titleAlignment: "titleAlignment", defaultBackHref: "defaultBackHref", hideBackButton: "hideBackButton", titleMaxLines: "titleMaxLines", maxWidth: "maxWidth", tabBarBottomHidden: "tabBarBottomHidden" }, outputs: { enter: "enter", leave: "leave", refresh: "refresh", backButtonClick: "backButtonClick" }, host: { listeners: { "window:keyboardWillShow": "_onKeyboardWillShow($event)", "window:keyboardWillHide": "_onKeyboardWillHide()", "window:kirbySelectedTabClick": "_onSelectedTabClick()" } }, providers: [
|
|
518
|
-
{
|
|
519
|
-
provide: HEADER_CONFIG,
|
|
520
|
-
useFactory: (() => ({})),
|
|
521
|
-
},
|
|
522
|
-
], queries: [{ propertyName: "customToolbarTitleTemplate", first: true, predicate: PageToolbarTitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customTitleTemplate", first: true, predicate: PageTitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customSubtitleTemplate", first: true, predicate: PageSubtitleDirective, descendants: true, read: TemplateRef }, { propertyName: "stickyContentRef", first: true, predicate: PageStickyContentDirective, descendants: true, read: TemplateRef }, { propertyName: "header", first: true, predicate: HeaderComponent, descendants: true }, { propertyName: "customActions", predicate: PageActionsDirective }, { propertyName: "customContent", predicate: PageContentDirective }], viewQueries: [{ propertyName: "content", first: true, predicate: IonContent, descendants: true, static: true }, { propertyName: "ionContentElement", first: true, predicate: IonContent, descendants: true, read: ElementRef, static: true }, { propertyName: "ionHeaderElement", first: true, predicate: IonHeader, descendants: true, read: ElementRef, static: true }, { propertyName: "ionFooterElement", first: true, predicate: IonFooter, descendants: true, read: ElementRef, static: true }, { propertyName: "backButtonDelegate", first: true, predicate: IonBackButtonDelegate, descendants: true }, { propertyName: "pageTitle", first: true, predicate: ["pageTitle"], descendants: true, read: ElementRef }, { propertyName: "stickyContentContainer", first: true, predicate: ["stickyContentContainer"], descendants: true, read: ElementRef }, { propertyName: "simpleTitleTemplate", first: true, predicate: ["simpleTitleTemplate"], descendants: true, read: TemplateRef, static: true }, { propertyName: "simpleToolbarTitleTemplate", first: true, predicate: ["simpleToolbarTitleTemplate"], descendants: true, read: TemplateRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<ion-header>\n <ion-toolbar [class.content-scrolled]=\"!stickyContentTemplate && isContentScrolled\">\n <ion-buttons slot=\"start\">\n <ion-back-button\n text=\"\"\n [defaultHref]=\"defaultBackHref\"\n icon=\"assets/kirby/icons/svg/arrow-back.svg\"\n [style.visibility]=\"hideBackButton ? 'hidden' : null\"\n ></ion-back-button>\n </ion-buttons>\n <ion-title [class.slide-and-fade-in]=\"toolbarTitleVisible\">\n <div class=\"toolbar-title\">\n <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n </div>\n </ion-title>\n <ion-buttons\n *ngIf=\"!!header?.actionsTemplate\"\n class=\"hide\"\n slot=\"primary\"\n [class.fade-in]=\"toolbarActionsVisible\"\n >\n <ng-container\n *ngTemplateOutlet=\"header?.actionsTemplate; injector: toolbarActionGroupInjector\"\n ></ng-container>\n </ion-buttons>\n <ion-buttons *ngIf=\"!!stickyActionsTemplate\" class=\"legacy-actions\" slot=\"primary\">\n <ng-container *ngTemplateOutlet=\"stickyActionsTemplate\"></ng-container>\n </ion-buttons>\n <ion-buttons *ngIf=\"!!fixedActionsTemplate\" class=\"legacy-actions\" slot=\"secondary\">\n <ng-container *ngTemplateOutlet=\"fixedActionsTemplate\"></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content scrollEvents=\"true\" forceOverscroll=\"false\" [class]=\"getMaxWidthClasses()\">\n <ion-refresher\n *ngIf=\"refresh.observers.length > 0\"\n (ionRefresh)=\"delegateRefreshEvent($event)\"\n slot=\"fixed\"\n >\n <kirby-spinner></kirby-spinner>\n </ion-refresher>\n\n <!-- Page header -->\n <div class=\"page-header-container\" *ngIf=\"hasPageTitle && !header\">\n <div\n class=\"page-header\"\n [ngClass]=\"{\n 'text-center': titleAlignment === 'center',\n 'text-right': titleAlignment === 'right'\n }\"\n >\n <div #pageTitle class=\"page-title\" [class.has-actions]=\"!!pageActionsTemplate\">\n <ng-container\n *ngTemplateOutlet=\"customTitleTemplate || defaultPageTitleTemplate\"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"pageActionsTemplate || defaultPageActionsTemplate\"\n ></ng-container>\n </div>\n <div *ngIf=\"hasPageSubtitle\" class=\"page-subtitle\">\n <ng-container\n *ngTemplateOutlet=\"customSubtitleTemplate || defaultPageSubtitleTemplate\"\n ></ng-container>\n </div>\n </div>\n </div>\n\n <!-- Header -->\n <div class=\"page-header-container\" *ngIf=\"header\">\n <ng-content select=\"kirby-header\"></ng-content>\n </div>\n\n <!-- Sticky content -->\n <ng-container *ngIf=\"stickyContentTemplate\">\n <div\n #stickyContentContainer\n class=\"sticky-content-container\"\n [class.content-pinned]=\"isStickyContentPinned\"\n >\n <div>\n <ng-container *ngTemplateOutlet=\"stickyContentTemplate\"></ng-container>\n </div>\n </div>\n </ng-container>\n\n <!-- Content -->\n <div class=\"content-inner\">\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate || defaultContentTemplate\"\n ></ng-container>\n </div>\n\n <div slot=\"fixed\" class=\"fixed-content\" *ngIf=\"fixedContentTemplate\">\n <div class=\"content-inner\">\n <ng-container *ngTemplateOutlet=\"fixedContentTemplate\"></ng-container>\n </div>\n </div>\n</ion-content>\n\n<ion-footer>\n <ng-content select=\"kirby-page-footer\"></ng-content>\n</ion-footer>\n\n<ng-template #defaultPageTitleTemplate>\n <h1 [kirbyFitHeading]=\"fitHeadingConfig\">\n <ng-container *ngTemplateOutlet=\"simpleTitleTemplate\"></ng-container>\n </h1>\n</ng-template>\n<ng-template #defaultPageSubtitleTemplate>\n <ng-container *ngTemplateOutlet=\"simpleSubtitleTemplate\"></ng-container>\n</ng-template>\n<ng-template #defaultPageActionsTemplate>\n <ng-content select=\"kirby-page-actions\"></ng-content>\n</ng-template>\n\n<ng-template #defaultContentTemplate>\n <ng-content select=\"kirby-page-content\"></ng-content>\n</ng-template>\n\n<ng-template #simpleTitleTemplate>{{ title }}</ng-template>\n<ng-template #simpleSubtitleTemplate>{{ subtitle }}</ng-template>\n<ng-template #simpleToolbarTitleTemplate>{{ toolbarTitle }}</ng-template>\n", styles: ["ion-header,ion-toolbar{--background: var(--kirby-background-color);margin:0 auto}ion-toolbar{--border-width: 0 !important;--padding-start: 4px;--padding-end: 4px;--padding-top: 0;--padding-bottom: 0;--ion-toolbar-color: var(--kirby-black);--notch-present: clamp( 0px, var(--kirby-safe-area-top, 0px) - 32px, 1px );--min-height: clamp( 48px, (1px - var(--notch-present)) * 56, 56px );box-sizing:border-box;padding-inline:4px}@media (min-width: 721px){ion-toolbar{--min-height: 64px}}ion-toolbar.content-scrolled:before{content:\"\";position:absolute;left:0;right:0;bottom:0;height:1px;z-index:1;background-color:var(--kirby-medium)}ion-toolbar ion-buttons[slot=secondary]{order:6}ion-toolbar ion-title{visibility:hidden;opacity:0;transform:translateY(10px);transition-property:opacity,transform;transition-duration:.15s;transition-timing-function:ease}ion-toolbar ion-title.slide-and-fade-in{visibility:visible;opacity:1;transform:translateY(0)}ion-toolbar ion-title .toolbar-title{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden;font-weight:700}ion-toolbar ion-title .toolbar-title ::ng-deep>*{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}.hide{visibility:hidden;opacity:0;transition:opacity .1s linear}.hide.fade-in{visibility:inherit;opacity:1}ion-title{box-sizing:border-box;font-size:16px;font-weight:400}ion-back-button{--color: var(--kirby-black);--background: var(--kirby-white);--icon-font-size: 24px;height:40px;width:40px;opacity:1}@media (hover: hover){ion-back-button:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);--background-hover: var(--state-layer-background-color);--background-hover-opacity: var(--state-layer-opacity)}}ion-back-button:active,ion-back-button.ion-activated{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black);--background-activated: var(--state-layer-background-color);--background-activated-opacity: var(--state-layer-opacity)}ion-back-button::part(icon){margin-inline:0}ion-back-button::part(native){opacity:1;border-radius:999px;overflow:hidden}ion-back-button::part(native):after{transition:all 80ms linear 0ms}.page-header-container{max-width:var(--page-content-max-width, 720px);margin:0 auto}.page-header{margin-left:16px;margin-top:8px;margin-bottom:var(--kirby-page-title-margin-bottom, 40px)}.page-header .page-title.has-actions{display:flex;justify-content:space-between;align-items:flex-start}.page-header .page-title h1,.page-header .page-title h2,.page-header .page-title h3,.page-header .page-title h4,.page-header .page-title h5,.page-header .page-title h6{margin:0}.page-header .page-subtitle{margin-top:8px}.page-header.text-center{text-align:center;margin-left:0}.page-header.text-right{text-align:right}ion-content{--padding-top: 12px;--padding-start: var(--page-content-padding-start, 16px);--padding-end: var(--page-content-padding-end, 16px);--background: var(--kirby-background-color);--color: var(--kirby-black)}@media (min-width: 632px){ion-content{--padding-start: var(--page-content-padding-start, 48px);--padding-end: var(--page-content-padding-end, 48px)}}ion-content.max-width-standard{--page-content-max-width: 792px}ion-content.max-width-optimized{--page-content-max-width: 1092px}ion-content.max-width-full{--page-content-max-width: 100%}ion-content .content-inner{max-width:var(--page-content-max-width, 720px);margin:0 auto;padding-bottom:40px}ion-content .fixed-content{width:100%;position:absolute;bottom:0}ion-content .fixed-content .content-inner{position:relative}.sticky-content-container{position:sticky;top:-13px;left:0;right:0;margin-block-end:24px;z-index:2}.sticky-content-container div{max-width:var(--page-content-max-width, 720px);margin:0 auto}.sticky-content-container.content-pinned:before{content:\"\";position:absolute;left:calc(-1 * var(--padding-start));right:calc(-1 * var(--padding-end));bottom:0;top:0;z-index:0;background-color:var(--kirby-background-color)}.sticky-content-container.content-pinned:after{content:\"\";position:absolute;left:calc(-1 * var(--padding-start));right:calc(-1 * var(--padding-end));bottom:0;height:1px;z-index:1;background-color:var(--kirby-medium)}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.IonBackButton, selector: "ion-back-button", inputs: ["color", "defaultHref", "disabled", "icon", "mode", "routerAnimation", "text", "type"] }, { kind: "component", type: i6.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i6.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i6.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i6.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i6.IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { kind: "component", type: i6.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i6.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "directive", type: i6.IonBackButtonDelegate, selector: "ion-back-button", inputs: ["defaultHref", "routerAnimation"] }, { kind: "directive", type: i3.FitHeadingDirective, selector: "h1[kirbyFitHeading],h2[kirbyFitHeading],h3[kirbyFitHeading]", inputs: ["kirbyFitHeading"] }, { kind: "component", type: i7.SpinnerComponent, selector: "kirby-spinner" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
527
|
+
/** @nocollapse */ PageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PageComponent, deps: [{ token: i0.ElementRef }, { token: i0.Injector }, { token: i0.Renderer2 }, { token: i2.Router }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.ModalNavigationService }, { token: i3.ResizeObserverService }, { token: i4.TabsComponent, optional: true, skipSelf: true }, { token: PAGE_BACK_BUTTON_OVERRIDE, optional: true }, { token: i5.IonRouterOutlet, optional: true }, { token: i5.NavController, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
528
|
+
/** @nocollapse */ PageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: PageComponent, selector: "kirby-page", inputs: { title: "title", subtitle: "subtitle", toolbarTitle: "toolbarTitle", titleAlignment: "titleAlignment", defaultBackHref: "defaultBackHref", hideBackButton: "hideBackButton", titleMaxLines: "titleMaxLines", maxWidth: "maxWidth", tabBarBottomHidden: "tabBarBottomHidden" }, outputs: { enter: "enter", leave: "leave", refresh: "refresh", backButtonClick: "backButtonClick" }, host: { listeners: { "window:keyboardWillShow": "_onKeyboardWillShow($event)", "window:keyboardWillHide": "_onKeyboardWillHide()", "window:kirbySelectedTabClick": "_onSelectedTabClick()" } }, queries: [{ propertyName: "customToolbarTitleTemplate", first: true, predicate: PageToolbarTitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customTitleTemplate", first: true, predicate: PageTitleDirective, descendants: true, read: TemplateRef }, { propertyName: "customSubtitleTemplate", first: true, predicate: PageSubtitleDirective, descendants: true, read: TemplateRef }, { propertyName: "stickyContentRef", first: true, predicate: PageStickyContentDirective, descendants: true, read: TemplateRef }, { propertyName: "header", first: true, predicate: HeaderComponent, descendants: true }, { propertyName: "customActions", predicate: PageActionsDirective }, { propertyName: "customContent", predicate: PageContentDirective }], viewQueries: [{ propertyName: "content", first: true, predicate: IonContent, descendants: true, static: true }, { propertyName: "ionContentElement", first: true, predicate: IonContent, descendants: true, read: ElementRef, static: true }, { propertyName: "ionHeaderElement", first: true, predicate: IonHeader, descendants: true, read: ElementRef, static: true }, { propertyName: "ionFooterElement", first: true, predicate: IonFooter, descendants: true, read: ElementRef, static: true }, { propertyName: "backButtonDelegate", first: true, predicate: IonBackButtonDelegate, descendants: true }, { propertyName: "pageTitle", first: true, predicate: ["pageTitle"], descendants: true, read: ElementRef }, { propertyName: "stickyContentContainer", first: true, predicate: ["stickyContentContainer"], descendants: true, read: ElementRef }, { propertyName: "simpleTitleTemplate", first: true, predicate: ["simpleTitleTemplate"], descendants: true, read: TemplateRef, static: true }, { propertyName: "simpleToolbarTitleTemplate", first: true, predicate: ["simpleToolbarTitleTemplate"], descendants: true, read: TemplateRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<ion-header>\n <ion-toolbar [class.content-scrolled]=\"!stickyContentTemplate && isContentScrolled\">\n <ion-buttons slot=\"start\">\n <ion-back-button\n text=\"\"\n [defaultHref]=\"defaultBackHref\"\n icon=\"assets/kirby/icons/svg/arrow-back.svg\"\n [style.visibility]=\"hideBackButton ? 'hidden' : null\"\n ></ion-back-button>\n </ion-buttons>\n <ion-title [class.slide-and-fade-in]=\"toolbarTitleVisible\">\n <div class=\"toolbar-title\">\n <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n </div>\n </ion-title>\n <ion-buttons\n *ngIf=\"!!header?.actionsTemplate\"\n class=\"hide\"\n slot=\"primary\"\n [class.fade-in]=\"toolbarActionsVisible\"\n >\n <ng-container\n *ngTemplateOutlet=\"header?.actionsTemplate; injector: toolbarActionGroupInjector\"\n ></ng-container>\n </ion-buttons>\n <ion-buttons *ngIf=\"!!stickyActionsTemplate\" class=\"legacy-actions\" slot=\"primary\">\n <ng-container *ngTemplateOutlet=\"stickyActionsTemplate\"></ng-container>\n </ion-buttons>\n <ion-buttons *ngIf=\"!!fixedActionsTemplate\" class=\"legacy-actions\" slot=\"secondary\">\n <ng-container *ngTemplateOutlet=\"fixedActionsTemplate\"></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content scrollEvents=\"true\" forceOverscroll=\"false\" [class]=\"getMaxWidthClasses()\">\n <ion-refresher\n *ngIf=\"refresh.observers.length > 0\"\n (ionRefresh)=\"delegateRefreshEvent($event)\"\n slot=\"fixed\"\n >\n <kirby-spinner></kirby-spinner>\n </ion-refresher>\n\n <!-- Page header -->\n <div class=\"page-header-container\" *ngIf=\"hasPageTitle && !header\">\n <div\n class=\"page-header\"\n [ngClass]=\"{\n 'text-center': titleAlignment === 'center',\n 'text-right': titleAlignment === 'right'\n }\"\n >\n <div #pageTitle class=\"page-title\" [class.has-actions]=\"!!pageActionsTemplate\">\n <ng-container\n *ngTemplateOutlet=\"customTitleTemplate || defaultPageTitleTemplate\"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"pageActionsTemplate || defaultPageActionsTemplate\"\n ></ng-container>\n </div>\n <div *ngIf=\"hasPageSubtitle\" class=\"page-subtitle\">\n <ng-container\n *ngTemplateOutlet=\"customSubtitleTemplate || defaultPageSubtitleTemplate\"\n ></ng-container>\n </div>\n </div>\n </div>\n\n <!-- Header -->\n <div class=\"page-header-container\" *ngIf=\"header\">\n <ng-content select=\"kirby-header\"></ng-content>\n </div>\n\n <!-- Sticky content -->\n <ng-container *ngIf=\"stickyContentTemplate\">\n <div\n #stickyContentContainer\n class=\"sticky-content-container\"\n [class.content-pinned]=\"isStickyContentPinned\"\n >\n <div>\n <ng-container *ngTemplateOutlet=\"stickyContentTemplate\"></ng-container>\n </div>\n </div>\n </ng-container>\n\n <!-- Content -->\n <div class=\"content-inner\">\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate || defaultContentTemplate\"\n ></ng-container>\n </div>\n\n <div slot=\"fixed\" class=\"fixed-content\" *ngIf=\"fixedContentTemplate\">\n <div class=\"content-inner\">\n <ng-container *ngTemplateOutlet=\"fixedContentTemplate\"></ng-container>\n </div>\n </div>\n</ion-content>\n\n<ion-footer>\n <ng-content select=\"kirby-page-footer\"></ng-content>\n</ion-footer>\n\n<ng-template #defaultPageTitleTemplate>\n <h1 [kirbyFitHeading]=\"fitHeadingConfig\">\n <ng-container *ngTemplateOutlet=\"simpleTitleTemplate\"></ng-container>\n </h1>\n</ng-template>\n<ng-template #defaultPageSubtitleTemplate>\n <ng-container *ngTemplateOutlet=\"simpleSubtitleTemplate\"></ng-container>\n</ng-template>\n<ng-template #defaultPageActionsTemplate>\n <ng-content select=\"kirby-page-actions\"></ng-content>\n</ng-template>\n\n<ng-template #defaultContentTemplate>\n <ng-content select=\"kirby-page-content\"></ng-content>\n</ng-template>\n\n<ng-template #simpleTitleTemplate>{{ title }}</ng-template>\n<ng-template #simpleSubtitleTemplate>{{ subtitle }}</ng-template>\n<ng-template #simpleToolbarTitleTemplate>{{ toolbarTitle }}</ng-template>\n", styles: ["ion-header,ion-toolbar{--background: var(--kirby-background-color);margin:0 auto}ion-toolbar{--border-width: 0 !important;--padding-start: 4px;--padding-end: 4px;--padding-top: 0;--padding-bottom: 0;--ion-toolbar-color: var(--kirby-black);--notch-present: clamp( 0px, var(--kirby-safe-area-top, 0px) - 32px, 1px );--min-height: clamp( 48px, (1px - var(--notch-present)) * 56, 56px );box-sizing:border-box;padding-inline:4px}@media (min-width: 721px){ion-toolbar{--min-height: 64px}}ion-toolbar.content-scrolled:before{content:\"\";position:absolute;left:0;right:0;bottom:0;height:1px;z-index:1;background-color:var(--kirby-medium)}ion-toolbar ion-buttons[slot=secondary]{order:6}ion-toolbar ion-title{visibility:hidden;opacity:0;transform:translateY(10px);transition-property:opacity,transform;transition-duration:.15s;transition-timing-function:ease}ion-toolbar ion-title.slide-and-fade-in{visibility:visible;opacity:1;transform:translateY(0)}ion-toolbar ion-title .toolbar-title{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden;font-weight:700}ion-toolbar ion-title .toolbar-title ::ng-deep>*{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}.hide{visibility:hidden;opacity:0;transition:opacity .1s linear}.hide.fade-in{visibility:inherit;opacity:1}ion-title{box-sizing:border-box;font-size:16px;font-weight:400}ion-back-button{--color: var(--kirby-black);--background: var(--kirby-white);--icon-font-size: 24px;height:40px;width:40px;opacity:1}@media (hover: hover){ion-back-button:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);--background-hover: var(--state-layer-background-color);--background-hover-opacity: var(--state-layer-opacity)}}ion-back-button:active,ion-back-button.ion-activated{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black);--background-activated: var(--state-layer-background-color);--background-activated-opacity: var(--state-layer-opacity)}ion-back-button::part(icon){margin-inline:0}ion-back-button::part(native){opacity:1;border-radius:999px;overflow:hidden}ion-back-button::part(native):after{transition:all 80ms linear 0ms}.page-header-container{max-width:var(--page-content-max-width, 720px);margin:0 auto}.page-header{margin-left:16px;margin-top:8px;margin-bottom:var(--kirby-page-title-margin-bottom, 40px)}.page-header .page-title.has-actions{display:flex;justify-content:space-between;align-items:flex-start}.page-header .page-title h1,.page-header .page-title h2,.page-header .page-title h3,.page-header .page-title h4,.page-header .page-title h5,.page-header .page-title h6{margin:0}.page-header .page-subtitle{margin-top:8px}.page-header.text-center{text-align:center;margin-left:0}.page-header.text-right{text-align:right}ion-content{--padding-top: 12px;--padding-start: var(--page-content-padding-start, 16px);--padding-end: var(--page-content-padding-end, 16px);--background: var(--kirby-background-color);--color: var(--kirby-black)}@media (min-width: 632px){ion-content{--padding-start: var(--page-content-padding-start, 48px);--padding-end: var(--page-content-padding-end, 48px)}}ion-content.max-width-standard{--page-content-max-width: 792px}ion-content.max-width-optimized{--page-content-max-width: 1092px}ion-content.max-width-full{--page-content-max-width: 100%}ion-content .content-inner{max-width:var(--page-content-max-width, 720px);margin:0 auto;padding-bottom:40px}ion-content .fixed-content{width:100%;position:absolute;bottom:0}ion-content .fixed-content .content-inner{position:relative}.sticky-content-container{position:sticky;top:-13px;left:0;right:0;padding-top:1px;margin-block-end:24px;z-index:2}.sticky-content-container div{max-width:var(--page-content-max-width, 720px);margin:0 auto}.sticky-content-container.content-pinned:before{content:\"\";position:absolute;left:calc(-1 * var(--padding-start));right:calc(-1 * var(--padding-end));bottom:0;top:0;z-index:0;background-color:var(--kirby-background-color)}.sticky-content-container.content-pinned:after{content:\"\";position:absolute;left:calc(-1 * var(--padding-start));right:calc(-1 * var(--padding-end));bottom:0;height:1px;z-index:1;background-color:var(--kirby-medium)}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.IonBackButton, selector: "ion-back-button", inputs: ["color", "defaultHref", "disabled", "icon", "mode", "routerAnimation", "text", "type"] }, { kind: "component", type: i5.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i5.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i5.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i5.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i5.IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { kind: "component", type: i5.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i5.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "directive", type: i5.IonBackButtonDelegate, selector: "ion-back-button", inputs: ["defaultHref", "routerAnimation"] }, { kind: "directive", type: i3.FitHeadingDirective, selector: "h1[kirbyFitHeading],h2[kirbyFitHeading],h3[kirbyFitHeading]", inputs: ["kirbyFitHeading"] }, { kind: "component", type: i7.SpinnerComponent, selector: "kirby-spinner" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
523
529
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PageComponent, decorators: [{
|
|
524
530
|
type: Component,
|
|
525
|
-
args: [{ selector: 'kirby-page', changeDetection: ChangeDetectionStrategy.OnPush,
|
|
526
|
-
|
|
527
|
-
provide: HEADER_CONFIG,
|
|
528
|
-
useFactory: (() => ({})),
|
|
529
|
-
},
|
|
530
|
-
], template: "<ion-header>\n <ion-toolbar [class.content-scrolled]=\"!stickyContentTemplate && isContentScrolled\">\n <ion-buttons slot=\"start\">\n <ion-back-button\n text=\"\"\n [defaultHref]=\"defaultBackHref\"\n icon=\"assets/kirby/icons/svg/arrow-back.svg\"\n [style.visibility]=\"hideBackButton ? 'hidden' : null\"\n ></ion-back-button>\n </ion-buttons>\n <ion-title [class.slide-and-fade-in]=\"toolbarTitleVisible\">\n <div class=\"toolbar-title\">\n <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n </div>\n </ion-title>\n <ion-buttons\n *ngIf=\"!!header?.actionsTemplate\"\n class=\"hide\"\n slot=\"primary\"\n [class.fade-in]=\"toolbarActionsVisible\"\n >\n <ng-container\n *ngTemplateOutlet=\"header?.actionsTemplate; injector: toolbarActionGroupInjector\"\n ></ng-container>\n </ion-buttons>\n <ion-buttons *ngIf=\"!!stickyActionsTemplate\" class=\"legacy-actions\" slot=\"primary\">\n <ng-container *ngTemplateOutlet=\"stickyActionsTemplate\"></ng-container>\n </ion-buttons>\n <ion-buttons *ngIf=\"!!fixedActionsTemplate\" class=\"legacy-actions\" slot=\"secondary\">\n <ng-container *ngTemplateOutlet=\"fixedActionsTemplate\"></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content scrollEvents=\"true\" forceOverscroll=\"false\" [class]=\"getMaxWidthClasses()\">\n <ion-refresher\n *ngIf=\"refresh.observers.length > 0\"\n (ionRefresh)=\"delegateRefreshEvent($event)\"\n slot=\"fixed\"\n >\n <kirby-spinner></kirby-spinner>\n </ion-refresher>\n\n <!-- Page header -->\n <div class=\"page-header-container\" *ngIf=\"hasPageTitle && !header\">\n <div\n class=\"page-header\"\n [ngClass]=\"{\n 'text-center': titleAlignment === 'center',\n 'text-right': titleAlignment === 'right'\n }\"\n >\n <div #pageTitle class=\"page-title\" [class.has-actions]=\"!!pageActionsTemplate\">\n <ng-container\n *ngTemplateOutlet=\"customTitleTemplate || defaultPageTitleTemplate\"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"pageActionsTemplate || defaultPageActionsTemplate\"\n ></ng-container>\n </div>\n <div *ngIf=\"hasPageSubtitle\" class=\"page-subtitle\">\n <ng-container\n *ngTemplateOutlet=\"customSubtitleTemplate || defaultPageSubtitleTemplate\"\n ></ng-container>\n </div>\n </div>\n </div>\n\n <!-- Header -->\n <div class=\"page-header-container\" *ngIf=\"header\">\n <ng-content select=\"kirby-header\"></ng-content>\n </div>\n\n <!-- Sticky content -->\n <ng-container *ngIf=\"stickyContentTemplate\">\n <div\n #stickyContentContainer\n class=\"sticky-content-container\"\n [class.content-pinned]=\"isStickyContentPinned\"\n >\n <div>\n <ng-container *ngTemplateOutlet=\"stickyContentTemplate\"></ng-container>\n </div>\n </div>\n </ng-container>\n\n <!-- Content -->\n <div class=\"content-inner\">\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate || defaultContentTemplate\"\n ></ng-container>\n </div>\n\n <div slot=\"fixed\" class=\"fixed-content\" *ngIf=\"fixedContentTemplate\">\n <div class=\"content-inner\">\n <ng-container *ngTemplateOutlet=\"fixedContentTemplate\"></ng-container>\n </div>\n </div>\n</ion-content>\n\n<ion-footer>\n <ng-content select=\"kirby-page-footer\"></ng-content>\n</ion-footer>\n\n<ng-template #defaultPageTitleTemplate>\n <h1 [kirbyFitHeading]=\"fitHeadingConfig\">\n <ng-container *ngTemplateOutlet=\"simpleTitleTemplate\"></ng-container>\n </h1>\n</ng-template>\n<ng-template #defaultPageSubtitleTemplate>\n <ng-container *ngTemplateOutlet=\"simpleSubtitleTemplate\"></ng-container>\n</ng-template>\n<ng-template #defaultPageActionsTemplate>\n <ng-content select=\"kirby-page-actions\"></ng-content>\n</ng-template>\n\n<ng-template #defaultContentTemplate>\n <ng-content select=\"kirby-page-content\"></ng-content>\n</ng-template>\n\n<ng-template #simpleTitleTemplate>{{ title }}</ng-template>\n<ng-template #simpleSubtitleTemplate>{{ subtitle }}</ng-template>\n<ng-template #simpleToolbarTitleTemplate>{{ toolbarTitle }}</ng-template>\n", styles: ["ion-header,ion-toolbar{--background: var(--kirby-background-color);margin:0 auto}ion-toolbar{--border-width: 0 !important;--padding-start: 4px;--padding-end: 4px;--padding-top: 0;--padding-bottom: 0;--ion-toolbar-color: var(--kirby-black);--notch-present: clamp( 0px, var(--kirby-safe-area-top, 0px) - 32px, 1px );--min-height: clamp( 48px, (1px - var(--notch-present)) * 56, 56px );box-sizing:border-box;padding-inline:4px}@media (min-width: 721px){ion-toolbar{--min-height: 64px}}ion-toolbar.content-scrolled:before{content:\"\";position:absolute;left:0;right:0;bottom:0;height:1px;z-index:1;background-color:var(--kirby-medium)}ion-toolbar ion-buttons[slot=secondary]{order:6}ion-toolbar ion-title{visibility:hidden;opacity:0;transform:translateY(10px);transition-property:opacity,transform;transition-duration:.15s;transition-timing-function:ease}ion-toolbar ion-title.slide-and-fade-in{visibility:visible;opacity:1;transform:translateY(0)}ion-toolbar ion-title .toolbar-title{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden;font-weight:700}ion-toolbar ion-title .toolbar-title ::ng-deep>*{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}.hide{visibility:hidden;opacity:0;transition:opacity .1s linear}.hide.fade-in{visibility:inherit;opacity:1}ion-title{box-sizing:border-box;font-size:16px;font-weight:400}ion-back-button{--color: var(--kirby-black);--background: var(--kirby-white);--icon-font-size: 24px;height:40px;width:40px;opacity:1}@media (hover: hover){ion-back-button:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);--background-hover: var(--state-layer-background-color);--background-hover-opacity: var(--state-layer-opacity)}}ion-back-button:active,ion-back-button.ion-activated{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black);--background-activated: var(--state-layer-background-color);--background-activated-opacity: var(--state-layer-opacity)}ion-back-button::part(icon){margin-inline:0}ion-back-button::part(native){opacity:1;border-radius:999px;overflow:hidden}ion-back-button::part(native):after{transition:all 80ms linear 0ms}.page-header-container{max-width:var(--page-content-max-width, 720px);margin:0 auto}.page-header{margin-left:16px;margin-top:8px;margin-bottom:var(--kirby-page-title-margin-bottom, 40px)}.page-header .page-title.has-actions{display:flex;justify-content:space-between;align-items:flex-start}.page-header .page-title h1,.page-header .page-title h2,.page-header .page-title h3,.page-header .page-title h4,.page-header .page-title h5,.page-header .page-title h6{margin:0}.page-header .page-subtitle{margin-top:8px}.page-header.text-center{text-align:center;margin-left:0}.page-header.text-right{text-align:right}ion-content{--padding-top: 12px;--padding-start: var(--page-content-padding-start, 16px);--padding-end: var(--page-content-padding-end, 16px);--background: var(--kirby-background-color);--color: var(--kirby-black)}@media (min-width: 632px){ion-content{--padding-start: var(--page-content-padding-start, 48px);--padding-end: var(--page-content-padding-end, 48px)}}ion-content.max-width-standard{--page-content-max-width: 792px}ion-content.max-width-optimized{--page-content-max-width: 1092px}ion-content.max-width-full{--page-content-max-width: 100%}ion-content .content-inner{max-width:var(--page-content-max-width, 720px);margin:0 auto;padding-bottom:40px}ion-content .fixed-content{width:100%;position:absolute;bottom:0}ion-content .fixed-content .content-inner{position:relative}.sticky-content-container{position:sticky;top:-13px;left:0;right:0;margin-block-end:24px;z-index:2}.sticky-content-container div{max-width:var(--page-content-max-width, 720px);margin:0 auto}.sticky-content-container.content-pinned:before{content:\"\";position:absolute;left:calc(-1 * var(--padding-start));right:calc(-1 * var(--padding-end));bottom:0;top:0;z-index:0;background-color:var(--kirby-background-color)}.sticky-content-container.content-pinned:after{content:\"\";position:absolute;left:calc(-1 * var(--padding-start));right:calc(-1 * var(--padding-end));bottom:0;height:1px;z-index:1;background-color:var(--kirby-medium)}\n"] }]
|
|
531
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Injector }, { type: i0.Renderer2 }, { type: i2.Router }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.ModalNavigationService }, { type: i3.ResizeObserverService }, { type: undefined, decorators: [{
|
|
532
|
-
type: Inject,
|
|
533
|
-
args: [HEADER_CONFIG]
|
|
534
|
-
}] }, { type: i4.TabsComponent, decorators: [{
|
|
531
|
+
args: [{ selector: 'kirby-page', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-header>\n <ion-toolbar [class.content-scrolled]=\"!stickyContentTemplate && isContentScrolled\">\n <ion-buttons slot=\"start\">\n <ion-back-button\n text=\"\"\n [defaultHref]=\"defaultBackHref\"\n icon=\"assets/kirby/icons/svg/arrow-back.svg\"\n [style.visibility]=\"hideBackButton ? 'hidden' : null\"\n ></ion-back-button>\n </ion-buttons>\n <ion-title [class.slide-and-fade-in]=\"toolbarTitleVisible\">\n <div class=\"toolbar-title\">\n <ng-container *ngTemplateOutlet=\"toolbarTitleTemplate\"></ng-container>\n </div>\n </ion-title>\n <ion-buttons\n *ngIf=\"!!header?.actionsTemplate\"\n class=\"hide\"\n slot=\"primary\"\n [class.fade-in]=\"toolbarActionsVisible\"\n >\n <ng-container\n *ngTemplateOutlet=\"header?.actionsTemplate; injector: toolbarActionGroupInjector\"\n ></ng-container>\n </ion-buttons>\n <ion-buttons *ngIf=\"!!stickyActionsTemplate\" class=\"legacy-actions\" slot=\"primary\">\n <ng-container *ngTemplateOutlet=\"stickyActionsTemplate\"></ng-container>\n </ion-buttons>\n <ion-buttons *ngIf=\"!!fixedActionsTemplate\" class=\"legacy-actions\" slot=\"secondary\">\n <ng-container *ngTemplateOutlet=\"fixedActionsTemplate\"></ng-container>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content scrollEvents=\"true\" forceOverscroll=\"false\" [class]=\"getMaxWidthClasses()\">\n <ion-refresher\n *ngIf=\"refresh.observers.length > 0\"\n (ionRefresh)=\"delegateRefreshEvent($event)\"\n slot=\"fixed\"\n >\n <kirby-spinner></kirby-spinner>\n </ion-refresher>\n\n <!-- Page header -->\n <div class=\"page-header-container\" *ngIf=\"hasPageTitle && !header\">\n <div\n class=\"page-header\"\n [ngClass]=\"{\n 'text-center': titleAlignment === 'center',\n 'text-right': titleAlignment === 'right'\n }\"\n >\n <div #pageTitle class=\"page-title\" [class.has-actions]=\"!!pageActionsTemplate\">\n <ng-container\n *ngTemplateOutlet=\"customTitleTemplate || defaultPageTitleTemplate\"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"pageActionsTemplate || defaultPageActionsTemplate\"\n ></ng-container>\n </div>\n <div *ngIf=\"hasPageSubtitle\" class=\"page-subtitle\">\n <ng-container\n *ngTemplateOutlet=\"customSubtitleTemplate || defaultPageSubtitleTemplate\"\n ></ng-container>\n </div>\n </div>\n </div>\n\n <!-- Header -->\n <div class=\"page-header-container\" *ngIf=\"header\">\n <ng-content select=\"kirby-header\"></ng-content>\n </div>\n\n <!-- Sticky content -->\n <ng-container *ngIf=\"stickyContentTemplate\">\n <div\n #stickyContentContainer\n class=\"sticky-content-container\"\n [class.content-pinned]=\"isStickyContentPinned\"\n >\n <div>\n <ng-container *ngTemplateOutlet=\"stickyContentTemplate\"></ng-container>\n </div>\n </div>\n </ng-container>\n\n <!-- Content -->\n <div class=\"content-inner\">\n <ng-container\n *ngTemplateOutlet=\"customContentTemplate || defaultContentTemplate\"\n ></ng-container>\n </div>\n\n <div slot=\"fixed\" class=\"fixed-content\" *ngIf=\"fixedContentTemplate\">\n <div class=\"content-inner\">\n <ng-container *ngTemplateOutlet=\"fixedContentTemplate\"></ng-container>\n </div>\n </div>\n</ion-content>\n\n<ion-footer>\n <ng-content select=\"kirby-page-footer\"></ng-content>\n</ion-footer>\n\n<ng-template #defaultPageTitleTemplate>\n <h1 [kirbyFitHeading]=\"fitHeadingConfig\">\n <ng-container *ngTemplateOutlet=\"simpleTitleTemplate\"></ng-container>\n </h1>\n</ng-template>\n<ng-template #defaultPageSubtitleTemplate>\n <ng-container *ngTemplateOutlet=\"simpleSubtitleTemplate\"></ng-container>\n</ng-template>\n<ng-template #defaultPageActionsTemplate>\n <ng-content select=\"kirby-page-actions\"></ng-content>\n</ng-template>\n\n<ng-template #defaultContentTemplate>\n <ng-content select=\"kirby-page-content\"></ng-content>\n</ng-template>\n\n<ng-template #simpleTitleTemplate>{{ title }}</ng-template>\n<ng-template #simpleSubtitleTemplate>{{ subtitle }}</ng-template>\n<ng-template #simpleToolbarTitleTemplate>{{ toolbarTitle }}</ng-template>\n", styles: ["ion-header,ion-toolbar{--background: var(--kirby-background-color);margin:0 auto}ion-toolbar{--border-width: 0 !important;--padding-start: 4px;--padding-end: 4px;--padding-top: 0;--padding-bottom: 0;--ion-toolbar-color: var(--kirby-black);--notch-present: clamp( 0px, var(--kirby-safe-area-top, 0px) - 32px, 1px );--min-height: clamp( 48px, (1px - var(--notch-present)) * 56, 56px );box-sizing:border-box;padding-inline:4px}@media (min-width: 721px){ion-toolbar{--min-height: 64px}}ion-toolbar.content-scrolled:before{content:\"\";position:absolute;left:0;right:0;bottom:0;height:1px;z-index:1;background-color:var(--kirby-medium)}ion-toolbar ion-buttons[slot=secondary]{order:6}ion-toolbar ion-title{visibility:hidden;opacity:0;transform:translateY(10px);transition-property:opacity,transform;transition-duration:.15s;transition-timing-function:ease}ion-toolbar ion-title.slide-and-fade-in{visibility:visible;opacity:1;transform:translateY(0)}ion-toolbar ion-title .toolbar-title{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden;font-weight:700}ion-toolbar ion-title .toolbar-title ::ng-deep>*{text-overflow:ellipsis;white-space:nowrap;pointer-events:auto;overflow:hidden}.hide{visibility:hidden;opacity:0;transition:opacity .1s linear}.hide.fade-in{visibility:inherit;opacity:1}ion-title{box-sizing:border-box;font-size:16px;font-weight:400}ion-back-button{--color: var(--kirby-black);--background: var(--kirby-white);--icon-font-size: 24px;height:40px;width:40px;opacity:1}@media (hover: hover){ion-back-button:hover{--state-layer-opacity: .08;--state-layer-background-color: var(--kirby-black);--background-hover: var(--state-layer-background-color);--background-hover-opacity: var(--state-layer-opacity)}}ion-back-button:active,ion-back-button.ion-activated{--state-layer-opacity: .16;--state-layer-background-color: var(--kirby-black);--background-activated: var(--state-layer-background-color);--background-activated-opacity: var(--state-layer-opacity)}ion-back-button::part(icon){margin-inline:0}ion-back-button::part(native){opacity:1;border-radius:999px;overflow:hidden}ion-back-button::part(native):after{transition:all 80ms linear 0ms}.page-header-container{max-width:var(--page-content-max-width, 720px);margin:0 auto}.page-header{margin-left:16px;margin-top:8px;margin-bottom:var(--kirby-page-title-margin-bottom, 40px)}.page-header .page-title.has-actions{display:flex;justify-content:space-between;align-items:flex-start}.page-header .page-title h1,.page-header .page-title h2,.page-header .page-title h3,.page-header .page-title h4,.page-header .page-title h5,.page-header .page-title h6{margin:0}.page-header .page-subtitle{margin-top:8px}.page-header.text-center{text-align:center;margin-left:0}.page-header.text-right{text-align:right}ion-content{--padding-top: 12px;--padding-start: var(--page-content-padding-start, 16px);--padding-end: var(--page-content-padding-end, 16px);--background: var(--kirby-background-color);--color: var(--kirby-black)}@media (min-width: 632px){ion-content{--padding-start: var(--page-content-padding-start, 48px);--padding-end: var(--page-content-padding-end, 48px)}}ion-content.max-width-standard{--page-content-max-width: 792px}ion-content.max-width-optimized{--page-content-max-width: 1092px}ion-content.max-width-full{--page-content-max-width: 100%}ion-content .content-inner{max-width:var(--page-content-max-width, 720px);margin:0 auto;padding-bottom:40px}ion-content .fixed-content{width:100%;position:absolute;bottom:0}ion-content .fixed-content .content-inner{position:relative}.sticky-content-container{position:sticky;top:-13px;left:0;right:0;padding-top:1px;margin-block-end:24px;z-index:2}.sticky-content-container div{max-width:var(--page-content-max-width, 720px);margin:0 auto}.sticky-content-container.content-pinned:before{content:\"\";position:absolute;left:calc(-1 * var(--padding-start));right:calc(-1 * var(--padding-end));bottom:0;top:0;z-index:0;background-color:var(--kirby-background-color)}.sticky-content-container.content-pinned:after{content:\"\";position:absolute;left:calc(-1 * var(--padding-start));right:calc(-1 * var(--padding-end));bottom:0;height:1px;z-index:1;background-color:var(--kirby-medium)}\n"] }]
|
|
532
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Injector }, { type: i0.Renderer2 }, { type: i2.Router }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.ModalNavigationService }, { type: i3.ResizeObserverService }, { type: i4.TabsComponent, decorators: [{
|
|
535
533
|
type: Optional
|
|
536
534
|
}, {
|
|
537
535
|
type: SkipSelf
|
|
536
|
+
}] }, { type: undefined, decorators: [{
|
|
537
|
+
type: Optional
|
|
538
|
+
}, {
|
|
539
|
+
type: Inject,
|
|
540
|
+
args: [PAGE_BACK_BUTTON_OVERRIDE]
|
|
541
|
+
}] }, { type: i5.IonRouterOutlet, decorators: [{
|
|
542
|
+
type: Optional
|
|
543
|
+
}] }, { type: i5.NavController, decorators: [{
|
|
544
|
+
type: Optional
|
|
538
545
|
}] }]; }, propDecorators: { title: [{
|
|
539
546
|
type: Input
|
|
540
547
|
}], subtitle: [{
|
|
@@ -619,4 +626,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
619
626
|
type: HostListener,
|
|
620
627
|
args: [`window:${selectedTabClickEvent}`]
|
|
621
628
|
}] } });
|
|
622
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbnN5c3RlbS9wYWdlL3NyYy9wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3BhZ2Uvc3JjL3BhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLEtBQUssRUFDTCxNQUFNLEVBSU4sUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUVULFFBQVEsRUFDUixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBZSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbkUsT0FBTyxFQUNMLHFCQUFxQixFQUNyQix1QkFBdUIsRUFDdkIsZ0JBQWdCLEVBQ2hCLHNCQUFzQixFQUN0QixxQkFBcUIsR0FDdEIsTUFBTSxp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bUI7c0JBRGxCLFlBQVk7dUJBQUMseUJBQXlCO2dCQU12QyxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsVUFBVSxxQkFBcUIsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBTa2lwU2VsZixcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciwgUm91dGVyRXZlbnQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSW9uQmFja0J1dHRvbkRlbGVnYXRlLCBJb25Db250ZW50LCBJb25Gb290ZXIsIElvbkhlYWRlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IFNjcm9sbERldGFpbCB9IGZyb20gJ0Bpb25pYy9jb3JlJztcbmltcG9ydCB7IHNlbGVjdGVkVGFiQ2xpY2tFdmVudCwgVGFic0NvbXBvbmVudCB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vdGFicyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEtpcmJ5QW5pbWF0aW9uIH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9oZWxwZXJzJztcbmltcG9ydCB7XG4gIE1vZGFsRWxlbWVudENvbXBvbmVudCxcbiAgTW9kYWxFbGVtZW50c0FkdmVydGlzZXIsXG4gIE1vZGFsRWxlbWVudFR5cGUsXG4gIE1vZGFsTmF2aWdhdGlvblNlcnZpY2UsXG4gIE1vZGFsV3JhcHBlckNvbXBvbmVudCxcbn0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS9tb2RhbCc7XG5pbXBvcnQgeyBGaXRIZWFkaW5nQ29uZmlnLCBSZXNpemVPYnNlcnZlclNlcnZpY2UgfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL3NoYXJlZCc7XG5pbXBvcnQgeyBIRUFERVJfQ09ORklHLCBIZWFkZXJDb21wb25lbnQsIEhlYWRlckNvbmZpZyB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaGVhZGVyJztcbmltcG9ydCB7IEFDVElPTkdST1VQX0NPTkZJRyB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vYWN0aW9uLWdyb3VwJztcblxuLyoqXG4gKiBTcGVjaWZ5IHNjcm9sbCBldmVudCBkZWJvdW5jZSB0aW1lIGluIG1zIGFuZCBzY3JvbGxlZCBvZmZzZXQgZnJvbSB0b3AgaW4gcGl4ZWxzXG4gKi9cbmNvbnN0IGNvbnRlbnRTY3JvbGxEZWJvdW5jZVRpbWVJbk1TID0gMTA7XG5jb25zdCBjb250ZW50U2Nyb2xsZWRPZmZzZXRJblBpeGVscyA9IDQ7XG5cbnR5cGUgc3RpY2t5Q29uZmlnID0geyBzdGlja3k6IGJvb2xlYW4gfTtcbnR5cGUgZml4ZWRDb25maWcgPSB7IGZpeGVkOiBib29sZWFuIH07XG5cbi8qKlxuICogRXZlbnQgZW1pdHRlZCB3aGVuIFwicHVsbC10by1yZWZyZXNoXCIgYmVnaW5zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFB1bGxUb1JlZnJlc2hFdmVudCB7XG4gIC8qKlxuICAgKiBJbnZva2UgdGhpcyBjYWxsYmFjay1tZXRob2Qgd2hlbiBhY3Rpb24gdG8gcGVyZm9ybSB1cG9uIFwicHVsbC10by1yZWZyZXNoXCIgY29tcGxldGVzLlxuICAgKi9cbiAgY29tcGxldGUoKTtcbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZVRpdGxlXScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VUaXRsZURpcmVjdGl2ZSB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdba2lyYnlQYWdlU3VidGl0bGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZVN1YnRpdGxlRGlyZWN0aXZlIHt9XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VUb29sYmFyVGl0bGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZVRvb2xiYXJUaXRsZURpcmVjdGl2ZSB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdba2lyYnlQYWdlQWN0aW9uc10nLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQWN0aW9uc0RpcmVjdGl2ZSB7XG4gIEBJbnB1dCgna2lyYnlQYWdlQWN0aW9ucycpIGNvbmZpZzogc3RpY2t5Q29uZmlnIHwgZml4ZWRDb25maWc7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RpY2t5RGVmYXVsdCA9IHRydWU7XG4gIHByaXZhdGUgcmVhZG9ubHkgZml4ZWREZWZhdWx0ID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxuXG4gIGdldCBpc1N0aWNreSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcgPyAodGhpcy5jb25maWcgYXMgc3RpY2t5Q29uZmlnKS5zdGlja3kgOiB0aGlzLnN0aWNreURlZmF1bHQ7XG4gIH1cblxuICBnZXQgaXNGaXhlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcgPyAodGhpcy5jb25maWcgYXMgZml4ZWRDb25maWcpLmZpeGVkIDogdGhpcy5maXhlZERlZmF1bHQ7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZUNvbnRlbnRdJyxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUNvbnRlbnREaXJlY3RpdmUge1xuICBASW5wdXQoJ2tpcmJ5UGFnZUNvbnRlbnQnKSBjb25maWc6IGZpeGVkQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge31cblxuICBnZXQgaXNGaXhlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcgJiYgdGhpcy5jb25maWcuZml4ZWQ7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZVN0aWNreUNvbnRlbnRdJyxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZVN0aWNreUNvbnRlbnREaXJlY3RpdmUge31cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcGFnZS1wcm9ncmVzcycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICBgLFxuICBzdHlsZXM6IFsnOmhvc3Qge2Rpc3BsYXk6IGZsZXh9J10sXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VQcm9ncmVzc0NvbXBvbmVudCBleHRlbmRzIE1vZGFsRWxlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vIFRPRE86IEZpbmQgYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsaWducyB3aXRoIGZ1dHVyZSBwYWdlIGNvbmZpZ3VyYXRpb24gLyBjb25zdW1wdGlvblxuICAvLyBUaGlzIGltcGxlbWVudGF0aW9uIHdhcyBjaG9zZW4gb3ZlciBleHBhbmRpbmcgYG1vdmVDaGlsZGAgbWV0aG9kIGluIGNvbXBvbmVudCB3cmFwcGVyIHdpdGggeWV0IGFub3RoZXIgc2NlbmFyaW9cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnNsb3QnKSBzbG90ID0gJ3N0YXJ0JztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwcml2YXRlIG1vZGFsV3JhcHBlcjogTW9kYWxXcmFwcGVyQ29tcG9uZW50LFxuICAgIEBPcHRpb25hbCgpIG1vZGFsRWxlbWVudHNBZHZlcnRpc2VyOiBNb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlcixcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICApIHtcbiAgICBzdXBlcihNb2RhbEVsZW1lbnRUeXBlLlBBR0VfUFJPR1JFU1MsIGVsZW1lbnRSZWYsIG1vZGFsRWxlbWVudHNBZHZlcnRpc2VyKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGFsV3JhcHBlciAmJiB0aGlzLm1vZGFsV3JhcHBlci5jb25maWcuZmxhdm9yID09PSAnZHJhd2VyJykge1xuICAgICAgdGhpcy5zbG90ID0gJ2VuZCc7XG4gICAgfVxuICB9XG59XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wYWdlLXRpdGxlJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VUaXRsZUNvbXBvbmVudCBleHRlbmRzIE1vZGFsRWxlbWVudENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIEBPcHRpb25hbCgpIG1vZGFsRWxlbWVudHNBZHZlcnRpc2VyOiBNb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlclxuICApIHtcbiAgICBzdXBlcihNb2RhbEVsZW1lbnRUeXBlLlRJVExFLCBlbGVtZW50UmVmLCBtb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlcik7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcGFnZS1jb250ZW50JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VDb250ZW50Q29tcG9uZW50IHt9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UtYWN0aW9ucycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYnV0dG9uW2tpcmJ5LWJ1dHRvbl1cIj48L25nLWNvbnRlbnQ+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VBY3Rpb25zQ29tcG9uZW50IHt9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BhZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEhFQURFUl9DT05GSUcsXG4gICAgICB1c2VGYWN0b3J5OiAoKTogSGVhZGVyQ29uZmlnID0+ICh7fSksXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRDaGVja2VkLCBPbkNoYW5nZXNcbntcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgc3VidGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgdG9vbGJhclRpdGxlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRpdGxlQWxpZ25tZW50OiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcgPSAnbGVmdCc7XG4gIEBJbnB1dCgpIGRlZmF1bHRCYWNrSHJlZjogc3RyaW5nO1xuICBASW5wdXQoKSBoaWRlQmFja0J1dHRvbjogYm9vbGVhbjtcbiAgQElucHV0KCkgdGl0bGVNYXhMaW5lczogbnVtYmVyO1xuICBASW5wdXQoKSBtYXhXaWR0aDogJ2RlZmF1bHQnIHwgJ3N0YW5kYXJkJyB8ICdvcHRpbWl6ZWQnIHwgJ2Z1bGwnID0gJ2RlZmF1bHQnO1xuXG4gIHByaXZhdGUgX3RhYkJhckJvdHRvbUhpZGRlbjogYm9vbGVhbjtcbiAgcHVibGljIGdldCB0YWJCYXJCb3R0b21IaWRkZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYkJhckJvdHRvbUhpZGRlbjtcbiAgfVxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHRhYkJhckJvdHRvbUhpZGRlbih2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLnRhYnNDb21wb25lbnQpIHtcbiAgICAgIC8vIGFzIHdlIGFyZSBzZXR0aW5nIGEgY2xhc3Mgb24gdGFicywgd2UgbmVlZCB0aGlzIHRvIGhhcHBlbiBpbiBhIHNlcGFyYXRlIGNkIGN5Y2xlXG4gICAgICBzZXRUaW1lb3V0KCgpID0+ICh0aGlzLnRhYnNDb21wb25lbnQudGFiQmFyQm90dG9tSGlkZGVuID0gdmFsdWUpKTtcbiAgICB9XG4gICAgdGhpcy5fdGFiQmFyQm90dG9tSGlkZGVuID0gdmFsdWU7XG4gIH1cblxuICBAT3V0cHV0KCkgZW50ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBsZWF2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIHJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyPFB1bGxUb1JlZnJlc2hFdmVudD4oKTtcbiAgQE91dHB1dCgpIGJhY2tCdXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8RXZlbnQ+KCk7XG5cbiAgQFZpZXdDaGlsZChJb25Db250ZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIGNvbnRlbnQ/OiBJb25Db250ZW50O1xuICBAVmlld0NoaWxkKElvbkNvbnRlbnQsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgaW9uQ29udGVudEVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElvbkNvbnRlbnRFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChJb25IZWFkZXIsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIGlvbkhlYWRlckVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElvbkhlYWRlckVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKElvbkZvb3RlciwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBpb25Gb290ZXJFbGVtZW50OiBFbGVtZW50UmVmPEhUTUxJb25Gb290ZXJFbGVtZW50PjtcblxuICBAVmlld0NoaWxkKElvbkJhY2tCdXR0b25EZWxlZ2F0ZSwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHByaXZhdGUgYmFja0J1dHRvbkRlbGVnYXRlOiBJb25CYWNrQnV0dG9uRGVsZWdhdGU7XG4gIEBWaWV3Q2hpbGQoJ3BhZ2VUaXRsZScsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIHBhZ2VUaXRsZTogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc3RpY2t5Q29udGVudENvbnRhaW5lcicsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIHN0aWNreUNvbnRlbnRDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnc2ltcGxlVGl0bGVUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwcml2YXRlIHNpbXBsZVRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ3NpbXBsZVRvb2xiYXJUaXRsZVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHByaXZhdGUgc2ltcGxlVG9vbGJhclRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGQoUGFnZVRvb2xiYXJUaXRsZURpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwcml2YXRlIGN1c3RvbVRvb2xiYXJUaXRsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAQ29udGVudENoaWxkKFBhZ2VUaXRsZURpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBjdXN0b21UaXRsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAQ29udGVudENoaWxkKFBhZ2VTdWJ0aXRsZURpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBjdXN0b21TdWJ0aXRsZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAQ29udGVudENoaWxkcmVuKFBhZ2VBY3Rpb25zRGlyZWN0aXZlKVxuICBjdXN0b21BY3Rpb25zOiBRdWVyeUxpc3Q8UGFnZUFjdGlvbnNEaXJlY3RpdmU+O1xuICBAQ29udGVudENoaWxkcmVuKFBhZ2VDb250ZW50RGlyZWN0aXZlKVxuICBwcml2YXRlIGN1c3RvbUNvbnRlbnQ6IFF1ZXJ5TGlzdDxQYWdlQ29udGVudERpcmVjdGl2ZT47XG4gIEBDb250ZW50Q2hpbGQoUGFnZVN0aWNreUNvbnRlbnREaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHJpdmF0ZSBzdGlja3lDb250ZW50UmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAQ29udGVudENoaWxkKEhlYWRlckNvbXBvbmVudClcbiAgaGVhZGVyPzogSGVhZGVyQ29tcG9uZW50O1xuXG4gIGhhc1BhZ2VUaXRsZTogYm9vbGVhbjtcbiAgaGFzUGFnZVN1YnRpdGxlOiBib29sZWFuO1xuICB0b29sYmFyVGl0bGVWaXNpYmxlOiBib29sZWFuO1xuICB0b29sYmFyQWN0aW9uc1Zpc2libGU6IGJvb2xlYW47XG4gIGlzQ29udGVudFNjcm9sbGVkOiBib29sZWFuO1xuICBpc1N0aWNreUNvbnRlbnRQaW5uZWQ6IGJvb2xlYW47XG5cbiAgZml0SGVhZGluZ0NvbmZpZzogRml0SGVhZGluZ0NvbmZpZztcblxuICB0b29sYmFyVGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgY3VzdG9tQ29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBwYWdlQWN0aW9uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBmaXhlZENvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgc3RpY2t5QWN0aW9uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBmaXhlZEFjdGlvbnNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgc3RpY2t5Q29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxQYWdlU3RpY2t5Q29udGVudERpcmVjdGl2ZT47XG5cbiAgcHJpdmF0ZSB0aXRsZUludGVyc2VjdGlvbk9ic2VydmVyPzogSW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG4gIHByaXZhdGUgc3RpY2t5QWN0aW9uc0ludGVyc2VjdGlvbk9ic2VydmVyPzogSW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG4gIHByaXZhdGUgc3RpY2t5Q29udGVudEludGVyc2VjdGlvbk9ic2VydmVyPzogSW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG4gIHByaXZhdGUgaXNPYnNlcnZpbmdUaXRsZSA9IGZhbHNlO1xuICBwcml2YXRlIGlzT2JzZXJ2aW5nQWN0aW9ucyA9IGZhbHNlO1xuXG4gIHByaXZhdGUgdXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgaXNBY3RpdmU6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBuZ09uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIGNvbnRlbnRTY3JvbGxlZCQ6IE9ic2VydmFibGU8U2Nyb2xsRGV0YWlsPjtcblxuICBwcml2YXRlIG5hdmlnYXRpb25TdGFydCQ6IE9ic2VydmFibGU8Um91dGVyRXZlbnQ+ID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgZmlsdGVyKChldmVudDogUm91dGVyRXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSxcbiAgICB0YWtlVW50aWwodGhpcy5uZ09uRGVzdHJveSQpXG4gICk7XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uRW5kJDogT2JzZXJ2YWJsZTxSb3V0ZXJFdmVudD4gPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICBmaWx0ZXIoKGV2ZW50OiBSb3V0ZXJFdmVudCkgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICB0YWtlVW50aWwodGhpcy5uZ09uRGVzdHJveSQpXG4gICk7XG5cbiAgdG9vbGJhckFjdGlvbkdyb3VwSW5qZWN0b3I6IEluamVjdG9yO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIG1vZGFsTmF2aWdhdGlvblNlcnZpY2U6IE1vZGFsTmF2aWdhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXNpemVPYnNlcnZlclNlcnZpY2U6IFJlc2l6ZU9ic2VydmVyU2VydmljZSxcbiAgICBASW5qZWN0KEhFQURFUl9DT05GSUcpIHByaXZhdGUgaGVhZGVyQ29uZmlnOiBIZWFkZXJDb25maWcsXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHJpdmF0ZSB0YWJzQ29tcG9uZW50OiBUYWJzQ29tcG9uZW50XG4gICkge31cblxuICBwcml2YXRlIGNvbnRlbnRSZWFkeVByb21pc2U6IFByb21pc2U8dm9pZD47XG4gIHByaXZhdGUgd2hlbkNvbnRlbnRSZWFkeSgpIHtcbiAgICBpZiAoIXRoaXMuY29udGVudFJlYWR5UHJvbWlzZSkge1xuICAgICAgdGhpcy5jb250ZW50UmVhZHlQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2Uub2JzZXJ2ZSh0aGlzLmlvbkNvbnRlbnRFbGVtZW50LCAoZW50cnkpID0+IHtcbiAgICAgICAgICBpZiAoZW50cnkuY29udGVudFJlY3QuaGVpZ2h0ID4gMCkge1xuICAgICAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlclNlcnZpY2UudW5vYnNlcnZlKHRoaXMuaW9uQ29udGVudEVsZW1lbnQpO1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29udGVudFJlYWR5UHJvbWlzZTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucmVtb3ZlV3JhcHBlcigpO1xuXG4gICAgdGhpcy50b29sYmFyQWN0aW9uR3JvdXBJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEFDVElPTkdST1VQX0NPTkZJRyxcbiAgICAgICAgICB1c2VWYWx1ZTogeyBpc1Jlc2l6YWJsZTogZmFsc2UsIGlzQ29uZGVuc2VkOiB0cnVlLCB2aXNpYmxlQWN0aW9uczogMSB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHBhcmVudDogdGhpcy5pbmplY3RvcixcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy50aXRsZU1heExpbmVzKSB7XG4gICAgICB0aGlzLmhlYWRlckNvbmZpZy50aXRsZU1heExpbmVzID0gY2hhbmdlcy50aXRsZU1heExpbmVzLmN1cnJlbnRWYWx1ZTtcblxuICAgICAgdGhpcy5maXRIZWFkaW5nQ29uZmlnID0ge1xuICAgICAgICBtYXhMaW5lczogY2hhbmdlcy50aXRsZU1heExpbmVzLmN1cnJlbnRWYWx1ZSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLnN1YnRpdGxlICYmICFjaGFuZ2VzLnN1YnRpdGxlLmlzRmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuc3VidGl0bGUgPSBjaGFuZ2VzLnRpdGxlLmN1cnJlbnRWYWx1ZTtcbiAgICAgIHRoaXMuaGFzUGFnZVN1YnRpdGxlID0gdGhpcy5zdWJ0aXRsZSAhPT0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5jb250ZW50U2Nyb2xsZWQkID0gdGhpcy5jb250ZW50LmlvblNjcm9sbC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoY29udGVudFNjcm9sbERlYm91bmNlVGltZUluTVMpLFxuICAgICAgICBtYXAoKGV2ZW50KSA9PiBldmVudC5kZXRhaWwpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ09uRGVzdHJveSQpXG4gICAgICApO1xuXG4gICAgICB0aGlzLmNvbnRlbnRTY3JvbGxlZCQuc3Vic2NyaWJlKChzY3JvbGxJbmZvOiBTY3JvbGxEZXRhaWwpID0+IHtcbiAgICAgICAgaWYgKHNjcm9sbEluZm8uc2Nyb2xsVG9wID4gY29udGVudFNjcm9sbGVkT2Zmc2V0SW5QaXhlbHMgIT09IHRoaXMuaXNDb250ZW50U2Nyb2xsZWQpIHtcbiAgICAgICAgICB0aGlzLmlzQ29udGVudFNjcm9sbGVkID0gIXRoaXMuaXNDb250ZW50U2Nyb2xsZWQ7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gVGhpcyBpbnN0YW5jZSBoYXMgb2JzZXJ2ZWQgYSBwYWdlIGVudGVyIHNvIHJlZ2lzdGVyIHRoZSBjb3JyZWN0IHVybCBmb3IgdGhpcyBpbnN0YW5jZVxuICAgIHRoaXMudXJsID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgIHRoaXMub25FbnRlcigpO1xuXG4gICAgLy8gV2F0Y2ggbmF2aWdhdGlvbiBldmVudHMgZm9yIHBhZ2UgZW50ZXIgYW5kIGxlYXZlXG4gICAgdGhpcy5uYXZpZ2F0aW9uU3RhcnQkLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25TdGFydCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmdldFBhdGhuYW1lKGV2ZW50LnVybCkgIT09IHRoaXMuZ2V0UGF0aG5hbWUodGhpcy51cmwpICYmXG4gICAgICAgICF0aGlzLm1vZGFsTmF2aWdhdGlvblNlcnZpY2UuaXNNb2RhbFJvdXRlKHRoaXMudXJsKSAmJlxuICAgICAgICAhdGhpcy5tb2RhbE5hdmlnYXRpb25TZXJ2aWNlLmlzTW9kYWxSb3V0ZShldmVudC51cmwpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5vbkxlYXZlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm5hdmlnYXRpb25FbmQkLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25FbmQpID0+IHtcbiAgICAgIGlmICh0aGlzLmdldFBhdGhuYW1lKGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzKSA9PT0gdGhpcy5nZXRQYXRobmFtZSh0aGlzLnVybCkpIHtcbiAgICAgICAgdGhpcy5vbkVudGVyKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmludGVyY2VwdEJhY2tCdXR0b25DbGlja3NTZXR1cCgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVN0aWNreUludGVyc2VjdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplVGl0bGUoKTtcbiAgICB0aGlzLmluaXRpYWxpemVBY3Rpb25zKCk7XG4gICAgdGhpcy5pbml0aWFsaXplQ29udGVudCgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVN0aWNreUNvbnRlbnQoKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdPbkRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLm5nT25EZXN0cm95JC5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy50aXRsZUludGVyc2VjdGlvbk9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5zdGlja3lBY3Rpb25zSW50ZXJzZWN0aW9uT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLnN0aWNreUNvbnRlbnRJbnRlcnNlY3Rpb25PYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgZGVsZWdhdGVSZWZyZXNoRXZlbnQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaC5lbWl0KHtcbiAgICAgIGNvbXBsZXRlOiBldmVudC50YXJnZXQuY29tcGxldGUuYmluZChldmVudC50YXJnZXQpLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0TWF4V2lkdGhDbGFzc2VzKCkge1xuICAgIGlmICghdGhpcy5tYXhXaWR0aCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAodGhpcy5tYXhXaWR0aCA9PT0gJ2RlZmF1bHQnKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBgbWF4LXdpZHRoLSR7dGhpcy5tYXhXaWR0aH1gO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVXcmFwcGVyKCkge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChwYXJlbnQsIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHBhcmVudCwgdGhpcy5pb25IZWFkZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50LCB0aGlzLmlvbkNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50LCB0aGlzLmlvbkZvb3RlckVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIG9uRW50ZXIoKSB7XG4gICAgaWYgKHRoaXMuaXNBY3RpdmUpIHJldHVybjtcbiAgICB0aGlzLmlzQWN0aXZlID0gdHJ1ZTtcblxuICAgIHRoaXMuZW50ZXIuZW1pdCgpO1xuXG4gICAgdGhpcy5vYnNlcnZlVGl0bGUoKTtcbiAgICB0aGlzLm9ic2VydmVBY3Rpb25zKCk7XG4gIH1cblxuICBwcml2YXRlIG9uTGVhdmUoKSB7XG4gICAgaWYgKCF0aGlzLmlzQWN0aXZlKSByZXR1cm47XG4gICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgdGhpcy5sZWF2ZS5lbWl0KCk7XG5cbiAgICB0aGlzLnVub2JzZXJ2ZVRpdGxlKCk7XG4gICAgdGhpcy51bm9ic2VydmVBY3Rpb25zKCk7XG5cbiAgICBpZiAodGhpcy50YWJCYXJCb3R0b21IaWRkZW4gJiYgdGhpcy50YWJzQ29tcG9uZW50KSB7XG4gICAgICB0aGlzLnRhYnNDb21wb25lbnQudGFiQmFyQm90dG9tSGlkZGVuID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcmNlcHRCYWNrQnV0dG9uQ2xpY2tzU2V0dXAoKSB7XG4gICAgLy8gSW50ZXJjZXB0IGJhY2stYnV0dG9uIGNsaWNrIGV2ZW50cywgZGVmYXVsdGluZyB0byB0aGUgYnVpbHQtaW4gY2xpY2staGFuZGxlci5cbiAgICBpZiAodGhpcy5iYWNrQnV0dG9uQ2xpY2sub2JzZXJ2ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5iYWNrQnV0dG9uQ2xpY2tcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdPbkRlc3Ryb3kkKSlcbiAgICAgICAgLnN1YnNjcmliZSh0aGlzLmJhY2tCdXR0b25EZWxlZ2F0ZS5vbkNsaWNrLmJpbmQodGhpcy5iYWNrQnV0dG9uRGVsZWdhdGUpKTtcbiAgICB9XG4gICAgdGhpcy5iYWNrQnV0dG9uRGVsZWdhdGUub25DbGljayA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIHRoaXMuYmFja0J1dHRvbkNsaWNrLmVtaXQoZXZlbnQpO1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVTdGlja3lJbnRlcnNlY3Rpb25PYnNlcnZlcigpIHtcbiAgICBpZiAodGhpcy5zdGlja3lDb250ZW50VGVtcGxhdGUpIHtcbiAgICAgIC8vIFN0aWNreSBjb250ZW50IHByZXNlbnQgLSBzdGFydCBvYnNlcnZpbmcgZm9yIHN0aWNraW5lc3NcbiAgICAgIGlmICghdGhpcy5zdGlja3lDb250ZW50SW50ZXJzZWN0aW9uT2JzZXJ2ZXIpIHtcbiAgICAgICAgdGhpcy5zdGlja3lDb250ZW50SW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSB0aGlzLmNyZWF0ZVN0aWNreUNvbnRlbnRJbnRlcnNlY3Rpb25PYnNlcnZlcigpO1xuICAgICAgfVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3RpY2t5Q29udGVudEludGVyc2VjdGlvbk9ic2VydmVyLm9ic2VydmUodGhpcy5zdGlja3lDb250ZW50Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplVGl0bGUoKSB7XG4gICAgLy8gRW5zdXJlcyBpbml0aWFsaXplVGl0bGUoKSB3b24ndCBydW4sIGlmIGFscmVhZHkgaW5pdGlhbGl6ZWRcbiAgICBpZiAodGhpcy5oYXNQYWdlVGl0bGUpIHJldHVybjtcblxuICAgIHRoaXMuaGFzUGFnZVRpdGxlID1cbiAgICAgIHRoaXMudGl0bGUgIT09IHVuZGVmaW5lZCB8fCAhIXRoaXMuY3VzdG9tVGl0bGVUZW1wbGF0ZSB8fCAhIXRoaXMuaGVhZGVyPy50aXRsZTtcbiAgICB0aGlzLnRvb2xiYXJUaXRsZVZpc2libGUgPSAhdGhpcy5oYXNQYWdlVGl0bGU7XG4gICAgdGhpcy5oYXNQYWdlU3VidGl0bGUgPSB0aGlzLnN1YnRpdGxlICE9PSB1bmRlZmluZWQgfHwgISF0aGlzLmN1c3RvbVN1YnRpdGxlVGVtcGxhdGU7XG4gICAgaWYgKHRoaXMuaGVhZGVyPy50aXRsZSAmJiAhdGhpcy50b29sYmFyVGl0bGUpIHtcbiAgICAgIHRoaXMudG9vbGJhclRpdGxlID0gdGhpcy5oZWFkZXIudGl0bGU7XG4gICAgfVxuXG4gICAgdGhpcy5vYnNlcnZlVGl0bGUoKTtcblxuICAgIGNvbnN0IGRlZmF1bHRUaXRsZVRlbXBsYXRlID0gdGhpcy5jdXN0b21UaXRsZVRlbXBsYXRlIHx8IHRoaXMuc2ltcGxlVGl0bGVUZW1wbGF0ZTtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAgIC8vIHByZXR0aWVyLWlnbm9yZVxuICAgIHRoaXMudG9vbGJhclRpdGxlVGVtcGxhdGUgPSB0aGlzLmN1c3RvbVRvb2xiYXJUaXRsZVRlbXBsYXRlXG4gICAgICA/IHRoaXMuY3VzdG9tVG9vbGJhclRpdGxlVGVtcGxhdGVcbiAgICAgIDogdHlwZW9mIHRoaXMudG9vbGJhclRpdGxlID09PSAnc3RyaW5nJ1xuICAgICAgICA/IHRoaXMuc2ltcGxlVG9vbGJhclRpdGxlVGVtcGxhdGVcbiAgICAgICAgOiBkZWZhdWx0VGl0bGVUZW1wbGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZVRpdGxlKCkge1xuICAgIGlmICghdGhpcy5oYXNQYWdlVGl0bGUpIHtcbiAgICAgIC8vIE5vdGhpbmcgdG8gb2JzZXJ2ZVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc09ic2VydmluZ1RpdGxlKSB7XG4gICAgICAvLyBBbHJlYWR5IG9ic2VydmluZ1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFdlIGFyZSBub3QgYWN0dWFsbHkgb2JzZXJ2aW5nIHRoZSB0aXRsZSB1bnRpbCBhZnRlciB0aGUgYHdoZW5Db250ZW50UmVhZHlgIHByb21pc2UgaGFzIHJlc29sdmVkLFxuICAgIC8vIGJ1dCBzaW5jZSB3ZSd2ZSBhbHJlYWR5IGNoZWNrZWQgdGhhdCB0aGUgcGFnZSBoYXMgYSB0aXRsZSBpbiB0aGUgZ3VhcmQgYWJvdmUsXG4gICAgLy8gd2UnbGwgLSBlYWdlcmx5IC0gc2V0IHRoaXMgZmxhZyBub3cgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSByZS1ydW5zIG9mIHRoZSByZXN0IG9mIHRoaXMgbWV0aG9kOlxuICAgIHRoaXMuaXNPYnNlcnZpbmdUaXRsZSA9IHRydWU7XG5cbiAgICBpZiAoIXRoaXMudGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlcikge1xuICAgICAgdGhpcy50aXRsZUludGVyc2VjdGlvbk9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFxuICAgICAgICAoZW50cmllcykgPT4ge1xuICAgICAgICAgIHRoaXMudG9vbGJhclRpdGxlVmlzaWJsZSA9ICFlbnRyaWVzWzBdLmlzSW50ZXJzZWN0aW5nO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9LFxuICAgICAgICB7IHJvb3Q6IHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudCB9XG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFJ1biBvdXRzaWRlIEFuZ3VsYXIgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSB0cmlnZ2VyaW5nIGNoYW5nZSBkZXRlY3Rpb25cbiAgICAvLyBhbmQgLSB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMgLSBhbiBpbmZpbmV0ZSBsb29wIHdoZW4gY2FsbGVkIHdpdGhpbiBuZ0FmdGVyQ29udGVudENoZWNrZWQ6XG4gICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMud2hlbkNvbnRlbnRSZWFkeSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICBjb25zdCB0aXRsZUVsZW1lbnRSZWYgPSB0aGlzLnBhZ2VUaXRsZSB8fCB0aGlzLmhlYWRlcj8udGl0bGVFbGVtZW50O1xuICAgICAgICBpZiAodGl0bGVFbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgdGhpcy50aXRsZUludGVyc2VjdGlvbk9ic2VydmVyLm9ic2VydmUodGl0bGVFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdW5vYnNlcnZlVGl0bGUoKSB7XG4gICAgY29uc3QgdGl0bGVFbGVtZW50UmVmID0gdGhpcy5wYWdlVGl0bGUgfHwgdGhpcy5oZWFkZXI/LnRpdGxlRWxlbWVudDtcbiAgICBpZiAodGl0bGVFbGVtZW50UmVmKSB7XG4gICAgICB0aGlzLnRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXI/LnVub2JzZXJ2ZSh0aXRsZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICAgIHRoaXMuaXNPYnNlcnZpbmdUaXRsZSA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQWN0aW9ucygpIHtcbiAgICB0aGlzLm9ic2VydmVBY3Rpb25zKCk7XG5cbiAgICB0aGlzLmN1c3RvbUFjdGlvbnMuZm9yRWFjaCgocGFnZUFjdGlvbikgPT4ge1xuICAgICAgaWYgKHBhZ2VBY3Rpb24uaXNGaXhlZCkge1xuICAgICAgICB0aGlzLmZpeGVkQWN0aW9uc1RlbXBsYXRlID0gcGFnZUFjdGlvbi50ZW1wbGF0ZTtcbiAgICAgIH0gZWxzZSBpZiAocGFnZUFjdGlvbi5pc1N0aWNreSkge1xuICAgICAgICB0aGlzLnN0aWNreUFjdGlvbnNUZW1wbGF0ZSA9IHBhZ2VBY3Rpb24udGVtcGxhdGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBhZ2VBY3Rpb25zVGVtcGxhdGUgPSBwYWdlQWN0aW9uLnRlbXBsYXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlQWN0aW9ucygpIHtcbiAgICBpZiAoIXRoaXMuaGVhZGVyPy5hY3Rpb25zRWxlbWVudCkge1xuICAgICAgLy8gTm90aGluZyB0byBvYnNlcnZlXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNPYnNlcnZpbmdBY3Rpb25zKSB7XG4gICAgICAvLyBBbHJlYWR5IG9ic2VydmluZ1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFdlIGFyZSBub3QgYWN0dWFsbHkgb2JzZXJ2aW5nIGFjdGlvbnMgdW50aWwgYWZ0ZXIgdGhlIGB3aGVuQ29udGVudFJlYWR5YCBwcm9taXNlIGhhcyByZXNvbHZlZCxcbiAgICAvLyBidXQgc2luY2Ugd2UndmUgYWxyZWFkeSBjaGVja2VkIHRoYXQgdGhlcmUncyBhbiBhY3Rpb25zIGVsZW1lbnQgcHJlc2VudCBpbiB0aGUgZ3VhcmQgYWJvdmUsXG4gICAgLy8gd2UnbGwgLSBlYWdlcmx5IC0gc2V0IHRoaXMgZmxhZyBub3cgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSByZS1ydW5zIG9mIHRoZSByZXN0IG9mIHRoaXMgbWV0aG9kOlxuICAgIHRoaXMuaXNPYnNlcnZpbmdBY3Rpb25zID0gdHJ1ZTtcblxuICAgIGlmICghdGhpcy5zdGlja3lBY3Rpb25zSW50ZXJzZWN0aW9uT2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMuc3RpY2t5QWN0aW9uc0ludGVyc2VjdGlvbk9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFxuICAgICAgICAoZW50cmllcykgPT4ge1xuICAgICAgICAgIHRoaXMudG9vbGJhckFjdGlvbnNWaXNpYmxlID0gIWVudHJpZXNbMF0uaXNJbnRlcnNlY3Rpbmc7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0sXG4gICAgICAgIHsgcm9vdDogdGhpcy5pb25Db250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50IH1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gUnVuIG91dHNpZGUgQW5ndWxhciB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHRyaWdnZXJpbmcgY2hhbmdlIGRldGVjdGlvblxuICAgIC8vIGFuZCAtIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucyAtIGFuIGluZmluZXRlIGxvb3Agd2hlbiBjYWxsZWQgd2l0aGluIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZDpcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy53aGVuQ29udGVudFJlYWR5KCkudGhlbigoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmhlYWRlcj8uYWN0aW9uc0VsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICB0aGlzLnN0aWNreUFjdGlvbnNJbnRlcnNlY3Rpb25PYnNlcnZlci5vYnNlcnZlKHRoaXMuaGVhZGVyLmFjdGlvbnNFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdW5vYnNlcnZlQWN0aW9ucygpIHtcbiAgICBpZiAodGhpcy5oZWFkZXI/LmFjdGlvbnNFbGVtZW50KSB7XG4gICAgICB0aGlzLnN0aWNreUFjdGlvbnNJbnRlcnNlY3Rpb25PYnNlcnZlcj8udW5vYnNlcnZlKHRoaXMuaGVhZGVyLmFjdGlvbnNFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgICB0aGlzLmlzT2JzZXJ2aW5nQWN0aW9ucyA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplQ29udGVudCgpIHtcbiAgICB0aGlzLmN1c3RvbUNvbnRlbnQuZm9yRWFjaCgoY29udGVudCkgPT4ge1xuICAgICAgaWYgKGNvbnRlbnQuaXNGaXhlZCkge1xuICAgICAgICB0aGlzLmZpeGVkQ29udGVudFRlbXBsYXRlID0gY29udGVudC50ZW1wbGF0ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY3VzdG9tQ29udGVudFRlbXBsYXRlID0gY29udGVudC50ZW1wbGF0ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVN0aWNreUNvbnRlbnQoKSB7XG4gICAgdGhpcy5zdGlja3lDb250ZW50VGVtcGxhdGUgPSB0aGlzLnN0aWNreUNvbnRlbnRSZWY7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVN0aWNreUNvbnRlbnRJbnRlcnNlY3Rpb25PYnNlcnZlcigpIHtcbiAgICBjb25zdCBvcHRpb25zOiBJbnRlcnNlY3Rpb25PYnNlcnZlckluaXQgPSB7XG4gICAgICAvLyBUT0RPOiBTaG91bGQgc3RpY2t5IGNvbnRlbnQgYWxzbyB1c2UgaW9uLWNvbnRlbnQgYXMgcm9vdD9cbiAgICAgIC8vIHJvb3Q6IHRoaXMuaW9uQ29udGVudEVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgIHRocmVzaG9sZDogMSxcbiAgICB9O1xuXG4gICAgY29uc3QgY2FsbGJhY2s6IEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2sgPSAoZW50cmllcykgPT4ge1xuICAgICAgLy8gVGhlIHN0aWNreSBjb250ZW50IGlzIHBpbm5lZCB3aGVuIGl0IGRvZXNuJ3QgZnVsbHkgaW50ZXJzZWN0IHRoZSB2aWV3cG9ydFxuICAgICAgdGhpcy5pc1N0aWNreUNvbnRlbnRQaW5uZWQgPSAhZW50cmllc1swXS5pc0ludGVyc2VjdGluZztcbiAgICB9O1xuICAgIHJldHVybiBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoY2FsbGJhY2ssIG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXRobmFtZSh1cmw6IHN0cmluZykge1xuICAgIHJldHVybiB1cmwuc3BsaXQoJz8nKVswXTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlib2FyZFdpbGxTaG93JywgWyckZXZlbnQnXSlcbiAgX29uS2V5Ym9hcmRXaWxsU2hvdyhpbmZvPzogeyBrZXlib2FyZEhlaWdodDogbnVtYmVyIH0pIHtcbiAgICBpZiAoaW5mbyAmJiBpbmZvLmtleWJvYXJkSGVpZ2h0KSB7XG4gICAgICB0aGlzLmlvbkNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgICctLWtleWJvYXJkLW9mZnNldCcsXG4gICAgICAgIGAke2luZm8ua2V5Ym9hcmRIZWlnaHR9cHhgXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlib2FyZFdpbGxIaWRlJylcbiAgX29uS2V5Ym9hcmRXaWxsSGlkZSgpIHtcbiAgICB0aGlzLmlvbkNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0ta2V5Ym9hcmQtb2Zmc2V0JywgJzBweCcpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihgd2luZG93OiR7c2VsZWN0ZWRUYWJDbGlja0V2ZW50fWApXG4gIF9vblNlbGVjdGVkVGFiQ2xpY2soKSB7XG4gICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgdGhpcy5jb250ZW50LnNjcm9sbFRvVG9wKEtpcmJ5QW5pbWF0aW9uLkR1cmF0aW9uLkxPTkcpO1xuICAgIH1cbiAgfVxufVxuIiwiPGlvbi1oZWFkZXI+XG4gIDxpb24tdG9vbGJhciBbY2xhc3MuY29udGVudC1zY3JvbGxlZF09XCIhc3RpY2t5Q29udGVudFRlbXBsYXRlICYmIGlzQ29udGVudFNjcm9sbGVkXCI+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgPGlvbi1iYWNrLWJ1dHRvblxuICAgICAgICB0ZXh0PVwiXCJcbiAgICAgICAgW2RlZmF1bHRIcmVmXT1cImRlZmF1bHRCYWNrSHJlZlwiXG4gICAgICAgIGljb249XCJhc3NldHMva2lyYnkvaWNvbnMvc3ZnL2Fycm93LWJhY2suc3ZnXCJcbiAgICAgICAgW3N0eWxlLnZpc2liaWxpdHldPVwiaGlkZUJhY2tCdXR0b24gPyAnaGlkZGVuJyA6IG51bGxcIlxuICAgICAgPjwvaW9uLWJhY2stYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgPGlvbi10aXRsZSBbY2xhc3Muc2xpZGUtYW5kLWZhZGUtaW5dPVwidG9vbGJhclRpdGxlVmlzaWJsZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRvb2xiYXItdGl0bGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRvb2xiYXJUaXRsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2lvbi10aXRsZT5cbiAgICA8aW9uLWJ1dHRvbnNcbiAgICAgICpuZ0lmPVwiISFoZWFkZXI/LmFjdGlvbnNUZW1wbGF0ZVwiXG4gICAgICBjbGFzcz1cImhpZGVcIlxuICAgICAgc2xvdD1cInByaW1hcnlcIlxuICAgICAgW2NsYXNzLmZhZGUtaW5dPVwidG9vbGJhckFjdGlvbnNWaXNpYmxlXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyPy5hY3Rpb25zVGVtcGxhdGU7IGluamVjdG9yOiB0b29sYmFyQWN0aW9uR3JvdXBJbmplY3RvclwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgICA8aW9uLWJ1dHRvbnMgKm5nSWY9XCIhIXN0aWNreUFjdGlvbnNUZW1wbGF0ZVwiIGNsYXNzPVwibGVnYWN5LWFjdGlvbnNcIiBzbG90PVwicHJpbWFyeVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0aWNreUFjdGlvbnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgPGlvbi1idXR0b25zICpuZ0lmPVwiISFmaXhlZEFjdGlvbnNUZW1wbGF0ZVwiIGNsYXNzPVwibGVnYWN5LWFjdGlvbnNcIiBzbG90PVwic2Vjb25kYXJ5XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZml4ZWRBY3Rpb25zVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2lvbi1idXR0b25zPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuXG48aW9uLWNvbnRlbnQgc2Nyb2xsRXZlbnRzPVwidHJ1ZVwiIGZvcmNlT3ZlcnNjcm9sbD1cImZhbHNlXCIgW2NsYXNzXT1cImdldE1heFdpZHRoQ2xhc3NlcygpXCI+XG4gIDxpb24tcmVmcmVzaGVyXG4gICAgKm5nSWY9XCJyZWZyZXNoLm9ic2VydmVycy5sZW5ndGggPiAwXCJcbiAgICAoaW9uUmVmcmVzaCk9XCJkZWxlZ2F0ZVJlZnJlc2hFdmVudCgkZXZlbnQpXCJcbiAgICBzbG90PVwiZml4ZWRcIlxuICA+XG4gICAgPGtpcmJ5LXNwaW5uZXI+PC9raXJieS1zcGlubmVyPlxuICA8L2lvbi1yZWZyZXNoZXI+XG5cbiAgPCEtLSBQYWdlIGhlYWRlciAtLT5cbiAgPGRpdiBjbGFzcz1cInBhZ2UtaGVhZGVyLWNvbnRhaW5lclwiICpuZ0lmPVwiaGFzUGFnZVRpdGxlICYmICFoZWFkZXJcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInBhZ2UtaGVhZGVyXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3RleHQtY2VudGVyJzogdGl0bGVBbGlnbm1lbnQgPT09ICdjZW50ZXInLFxuICAgICAgICAndGV4dC1yaWdodCc6IHRpdGxlQWxpZ25tZW50ID09PSAncmlnaHQnXG4gICAgICB9XCJcbiAgICA+XG4gICAgICA8ZGl2ICNwYWdlVGl0bGUgY2xhc3M9XCJwYWdlLXRpdGxlXCIgW2NsYXNzLmhhcy1hY3Rpb25zXT1cIiEhcGFnZUFjdGlvbnNUZW1wbGF0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21UaXRsZVRlbXBsYXRlIHx8IGRlZmF1bHRQYWdlVGl0bGVUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFnZUFjdGlvbnNUZW1wbGF0ZSB8fCBkZWZhdWx0UGFnZUFjdGlvbnNUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImhhc1BhZ2VTdWJ0aXRsZVwiIGNsYXNzPVwicGFnZS1zdWJ0aXRsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21TdWJ0aXRsZVRlbXBsYXRlIHx8IGRlZmF1bHRQYWdlU3VidGl0bGVUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIEhlYWRlciAtLT5cbiAgPGRpdiBjbGFzcz1cInBhZ2UtaGVhZGVyLWNvbnRhaW5lclwiICpuZ0lmPVwiaGVhZGVyXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwia2lyYnktaGVhZGVyXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cblxuICA8IS0tICBTdGlja3kgY29udGVudCAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0aWNreUNvbnRlbnRUZW1wbGF0ZVwiPlxuICAgIDxkaXZcbiAgICAgICNzdGlja3lDb250ZW50Q29udGFpbmVyXG4gICAgICBjbGFzcz1cInN0aWNreS1jb250ZW50LWNvbnRhaW5lclwiXG4gICAgICBbY2xhc3MuY29udGVudC1waW5uZWRdPVwiaXNTdGlja3lDb250ZW50UGlubmVkXCJcbiAgICA+XG4gICAgICA8ZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RpY2t5Q29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBDb250ZW50IC0tPlxuICA8ZGl2IGNsYXNzPVwiY29udGVudC1pbm5lclwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tQ29udGVudFRlbXBsYXRlIHx8IGRlZmF1bHRDb250ZW50VGVtcGxhdGVcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBzbG90PVwiZml4ZWRcIiBjbGFzcz1cImZpeGVkLWNvbnRlbnRcIiAqbmdJZj1cImZpeGVkQ29udGVudFRlbXBsYXRlXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtaW5uZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaXhlZENvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvaW9uLWNvbnRlbnQ+XG5cbjxpb24tZm9vdGVyPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJraXJieS1wYWdlLWZvb3RlclwiPjwvbmctY29udGVudD5cbjwvaW9uLWZvb3Rlcj5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0UGFnZVRpdGxlVGVtcGxhdGU+XG4gIDxoMSBba2lyYnlGaXRIZWFkaW5nXT1cImZpdEhlYWRpbmdDb25maWdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2ltcGxlVGl0bGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2gxPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFBhZ2VTdWJ0aXRsZVRlbXBsYXRlPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2ltcGxlU3VidGl0bGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFBhZ2VBY3Rpb25zVGVtcGxhdGU+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImtpcmJ5LXBhZ2UtYWN0aW9uc1wiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdENvbnRlbnRUZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwia2lyYnktcGFnZS1jb250ZW50XCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzaW1wbGVUaXRsZVRlbXBsYXRlPnt7IHRpdGxlIH19PC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjc2ltcGxlU3VidGl0bGVUZW1wbGF0ZT57eyBzdWJ0aXRsZSB9fTwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3NpbXBsZVRvb2xiYXJUaXRsZVRlbXBsYXRlPnt7IHRvb2xiYXJUaXRsZSB9fTwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
629
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2Rlc2lnbnN5c3RlbS9wYWdlL3NyYy9wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3BhZ2Uvc3JjL3BhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sY0FBYyxFQUNkLFFBQVEsRUFDUixLQUFLLEVBQ0wsTUFBTSxFQUlOLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFFVCxRQUFRLEVBQ1IsV0FBVyxFQUNYLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQWUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLFVBQVUsRUFDVixTQUFTLEVBQ1QsU0FBUyxFQUNULGVBQWUsRUFDZixhQUFhLEdBQ2QsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEYsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsdUJBQXVCLEVBQ3ZCLGdCQUFnQixFQUNoQixz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QUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBR3pFLGFBQWE7c0JBRFosZUFBZTt1QkFBQyxvQkFBb0I7Z0JBRzdCLGFBQWE7c0JBRHBCLGVBQWU7dUJBQUMsb0JBQW9CO2dCQUc3QixnQkFBZ0I7c0JBRHZCLFlBQVk7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRzlFLE1BQU07c0JBREwsWUFBWTt1QkFBQyxlQUFlO2dCQW1aN0IsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLHlCQUF5QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVduRCxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMseUJBQXlCO2dCQU12QyxtQkFBbUI7c0JBRGxCLFlBQVk7dUJBQUMsVUFBVSxxQkFBcUIsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgU2tpcFNlbGYsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIsIFJvdXRlckV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIElvbkJhY2tCdXR0b25EZWxlZ2F0ZSxcbiAgSW9uQ29udGVudCxcbiAgSW9uRm9vdGVyLFxuICBJb25IZWFkZXIsXG4gIElvblJvdXRlck91dGxldCxcbiAgTmF2Q29udHJvbGxlcixcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgU2Nyb2xsRGV0YWlsIH0gZnJvbSAnQGlvbmljL2NvcmUnO1xuaW1wb3J0IHsgc2VsZWN0ZWRUYWJDbGlja0V2ZW50LCBUYWJzQ29tcG9uZW50IH0gZnJvbSAnQGtpcmJ5ZGVzaWduL2Rlc2lnbnN5c3RlbS90YWJzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgS2lyYnlBbmltYXRpb24gfSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL2hlbHBlcnMnO1xuaW1wb3J0IHtcbiAgTW9kYWxFbGVtZW50Q29tcG9uZW50LFxuICBNb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlcixcbiAgTW9kYWxFbGVtZW50VHlwZSxcbiAgTW9kYWxOYXZpZ2F0aW9uU2VydmljZSxcbiAgTW9kYWxXcmFwcGVyQ29tcG9uZW50LFxufSBmcm9tICdAa2lyYnlkZXNpZ24vZGVzaWduc3lzdGVtL21vZGFsJztcbmltcG9ydCB7IEZpdEhlYWRpbmdDb25maWcsIFJlc2l6ZU9ic2VydmVyU2VydmljZSB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vc2hhcmVkJztcbmltcG9ydCB7IEhlYWRlckNvbXBvbmVudCB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vaGVhZGVyJztcbmltcG9ydCB7IEFDVElPTkdST1VQX0NPTkZJRyB9IGZyb20gJ0BraXJieWRlc2lnbi9kZXNpZ25zeXN0ZW0vYWN0aW9uLWdyb3VwJztcblxuLyoqXG4gKiBTcGVjaWZ5IHNjcm9sbCBldmVudCBkZWJvdW5jZSB0aW1lIGluIG1zIGFuZCBzY3JvbGxlZCBvZmZzZXQgZnJvbSB0b3AgaW4gcGl4ZWxzXG4gKi9cbmNvbnN0IGNvbnRlbnRTY3JvbGxEZWJvdW5jZVRpbWVJbk1TID0gMTA7XG5jb25zdCBjb250ZW50U2Nyb2xsZWRPZmZzZXRJblBpeGVscyA9IDQ7XG5cbnR5cGUgc3RpY2t5Q29uZmlnID0geyBzdGlja3k6IGJvb2xlYW4gfTtcbnR5cGUgZml4ZWRDb25maWcgPSB7IGZpeGVkOiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBQQUdFX0JBQ0tfQlVUVE9OX09WRVJSSURFID0gbmV3IEluamVjdGlvblRva2VuPFBhZ2VCYWNrQnV0dG9uT3ZlcnJpZGU+KFxuICAncGFnZS1iYWNrLWJ1dHRvbi1vdmVycmlkZSdcbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZUJhY2tCdXR0b25PdmVycmlkZSB7XG4gIG5hdmlnYXRlQmFjazogKFxuICAgIHJvdXRlck91dGxldDogSW9uUm91dGVyT3V0bGV0LFxuICAgIG5hdkN0cmw6IE5hdkNvbnRyb2xsZXIsXG4gICAgZGVmYXVsdEJhY2tIcmVmOiBzdHJpbmdcbiAgKSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBcInB1bGwtdG8tcmVmcmVzaFwiIGJlZ2lucy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWxsVG9SZWZyZXNoRXZlbnQge1xuICAvKipcbiAgICogSW52b2tlIHRoaXMgY2FsbGJhY2stbWV0aG9kIHdoZW4gYWN0aW9uIHRvIHBlcmZvcm0gdXBvbiBcInB1bGwtdG8tcmVmcmVzaFwiIGNvbXBsZXRlcy5cbiAgICovXG4gIGNvbXBsZXRlKCk7XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VUaXRsZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlVGl0bGVEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZVN1YnRpdGxlXScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VTdWJ0aXRsZURpcmVjdGl2ZSB7fVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdba2lyYnlQYWdlVG9vbGJhclRpdGxlXScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VUb29sYmFyVGl0bGVEaXJlY3RpdmUge31cblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2tpcmJ5UGFnZUFjdGlvbnNdJyxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUFjdGlvbnNEaXJlY3RpdmUge1xuICBASW5wdXQoJ2tpcmJ5UGFnZUFjdGlvbnMnKSBjb25maWc6IHN0aWNreUNvbmZpZyB8IGZpeGVkQ29uZmlnO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0aWNreURlZmF1bHQgPSB0cnVlO1xuICBwcml2YXRlIHJlYWRvbmx5IGZpeGVkRGVmYXVsdCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pikge31cblxuICBnZXQgaXNTdGlja3koKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnID8gKHRoaXMuY29uZmlnIGFzIHN0aWNreUNvbmZpZykuc3RpY2t5IDogdGhpcy5zdGlja3lEZWZhdWx0O1xuICB9XG5cbiAgZ2V0IGlzRml4ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnID8gKHRoaXMuY29uZmlnIGFzIGZpeGVkQ29uZmlnKS5maXhlZCA6IHRoaXMuZml4ZWREZWZhdWx0O1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VDb250ZW50XScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VDb250ZW50RGlyZWN0aXZlIHtcbiAgQElucHV0KCdraXJieVBhZ2VDb250ZW50JykgY29uZmlnOiBmaXhlZENvbmZpZztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHt9XG5cbiAgZ2V0IGlzRml4ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnICYmIHRoaXMuY29uZmlnLmZpeGVkO1xuICB9XG59XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1traXJieVBhZ2VTdGlja3lDb250ZW50XScsXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VTdGlja3lDb250ZW50RGlyZWN0aXZlIHt9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UtcHJvZ3Jlc3MnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgYCxcbiAgc3R5bGVzOiBbJzpob3N0IHtkaXNwbGF5OiBmbGV4fSddLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlUHJvZ3Jlc3NDb21wb25lbnQgZXh0ZW5kcyBNb2RhbEVsZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyBUT0RPOiBGaW5kIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uLCB3aGljaCBhbGlnbnMgd2l0aCBmdXR1cmUgcGFnZSBjb25maWd1cmF0aW9uIC8gY29uc3VtcHRpb25cbiAgLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiB3YXMgY2hvc2VuIG92ZXIgZXhwYW5kaW5nIGBtb3ZlQ2hpbGRgIG1ldGhvZCBpbiBjb21wb25lbnQgd3JhcHBlciB3aXRoIHlldCBhbm90aGVyIHNjZW5hcmlvXG4gIEBIb3N0QmluZGluZygnYXR0ci5zbG90Jykgc2xvdCA9ICdzdGFydCc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHJpdmF0ZSBtb2RhbFdyYXBwZXI6IE1vZGFsV3JhcHBlckNvbXBvbmVudCxcbiAgICBAT3B0aW9uYWwoKSBtb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlcjogTW9kYWxFbGVtZW50c0FkdmVydGlzZXIsXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgKSB7XG4gICAgc3VwZXIoTW9kYWxFbGVtZW50VHlwZS5QQUdFX1BST0dSRVNTLCBlbGVtZW50UmVmLCBtb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlcik7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb2RhbFdyYXBwZXIgJiYgdGhpcy5tb2RhbFdyYXBwZXIuY29uZmlnLmZsYXZvciA9PT0gJ2RyYXdlcicpIHtcbiAgICAgIHRoaXMuc2xvdCA9ICdlbmQnO1xuICAgIH1cbiAgfVxufVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAna2lyYnktcGFnZS10aXRsZScsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlVGl0bGVDb21wb25lbnQgZXh0ZW5kcyBNb2RhbEVsZW1lbnRDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBAT3B0aW9uYWwoKSBtb2RhbEVsZW1lbnRzQWR2ZXJ0aXNlcjogTW9kYWxFbGVtZW50c0FkdmVydGlzZXJcbiAgKSB7XG4gICAgc3VwZXIoTW9kYWxFbGVtZW50VHlwZS5USVRMRSwgZWxlbWVudFJlZiwgbW9kYWxFbGVtZW50c0FkdmVydGlzZXIpO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2tpcmJ5LXBhZ2UtY29udGVudCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQ29udGVudENvbXBvbmVudCB7fVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wYWdlLWFjdGlvbnMnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImJ1dHRvbltraXJieS1idXR0b25dXCI+PC9uZy1jb250ZW50PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQWN0aW9uc0NvbXBvbmVudCB7fVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdraXJieS1wYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudENoZWNrZWQsIE9uQ2hhbmdlc1xue1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSBzdWJ0aXRsZTogc3RyaW5nO1xuICBASW5wdXQoKSB0b29sYmFyVGl0bGU6IHN0cmluZztcbiAgQElucHV0KCkgdGl0bGVBbGlnbm1lbnQ6ICdsZWZ0JyB8ICdjZW50ZXInIHwgJ3JpZ2h0JyA9ICdsZWZ0JztcbiAgQElucHV0KCkgZGVmYXVsdEJhY2tIcmVmOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGhpZGVCYWNrQnV0dG9uOiBib29sZWFuO1xuICBASW5wdXQoKSB0aXRsZU1heExpbmVzOiBudW1iZXI7XG4gIEBJbnB1dCgpIG1heFdpZHRoOiAnZGVmYXVsdCcgfCAnc3RhbmRhcmQnIHwgJ29wdGltaXplZCcgfCAnZnVsbCcgPSAnZGVmYXVsdCc7XG5cbiAgcHJpdmF0ZSBfdGFiQmFyQm90dG9tSGlkZGVuOiBib29sZWFuO1xuICBwdWJsaWMgZ2V0IHRhYkJhckJvdHRvbUhpZGRlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdGFiQmFyQm90dG9tSGlkZGVuO1xuICB9XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdGFiQmFyQm90dG9tSGlkZGVuKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMudGFic0NvbXBvbmVudCkge1xuICAgICAgLy8gYXMgd2UgYXJlIHNldHRpbmcgYSBjbGFzcyBvbiB0YWJzLCB3ZSBuZWVkIHRoaXMgdG8gaGFwcGVuIGluIGEgc2VwYXJhdGUgY2QgY3ljbGVcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gKHRoaXMudGFic0NvbXBvbmVudC50YWJCYXJCb3R0b21IaWRkZW4gPSB2YWx1ZSkpO1xuICAgIH1cbiAgICB0aGlzLl90YWJCYXJCb3R0b21IaWRkZW4gPSB2YWx1ZTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBlbnRlciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGxlYXZlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXI8UHVsbFRvUmVmcmVzaEV2ZW50PigpO1xuICBAT3V0cHV0KCkgYmFja0J1dHRvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICBAVmlld0NoaWxkKElvbkNvbnRlbnQsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgY29udGVudD86IElvbkNvbnRlbnQ7XG4gIEBWaWV3Q2hpbGQoSW9uQ29udGVudCwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJpdmF0ZSBpb25Db250ZW50RWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uQ29udGVudEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKElvbkhlYWRlciwgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgaW9uSGVhZGVyRWxlbWVudDogRWxlbWVudFJlZjxIVE1MSW9uSGVhZGVyRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoSW9uRm9vdGVyLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogRWxlbWVudFJlZiB9KVxuICBwcml2YXRlIGlvbkZvb3RlckVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTElvbkZvb3RlckVsZW1lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoSW9uQmFja0J1dHRvbkRlbGVnYXRlLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHJpdmF0ZSBiYWNrQnV0dG9uRGVsZWdhdGU6IElvbkJhY2tCdXR0b25EZWxlZ2F0ZTtcbiAgQFZpZXdDaGlsZCgncGFnZVRpdGxlJywgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgcGFnZVRpdGxlOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdzdGlja3lDb250ZW50Q29udGFpbmVyJywgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBFbGVtZW50UmVmIH0pXG4gIHByaXZhdGUgc3RpY2t5Q29udGVudENvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdzaW1wbGVUaXRsZVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHByaXZhdGUgc2ltcGxlVGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnc2ltcGxlVG9vbGJhclRpdGxlVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSwgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcHJpdmF0ZSBzaW1wbGVUb29sYmFyVGl0bGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZChQYWdlVG9vbGJhclRpdGxlRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHByaXZhdGUgY3VzdG9tVG9vbGJhclRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGQoUGFnZVRpdGxlRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGN1c3RvbVRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGQoUGFnZVN1YnRpdGxlRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIGN1c3RvbVN1YnRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGRyZW4oUGFnZUFjdGlvbnNEaXJlY3RpdmUpXG4gIGN1c3RvbUFjdGlvbnM6IFF1ZXJ5TGlzdDxQYWdlQWN0aW9uc0RpcmVjdGl2ZT47XG4gIEBDb250ZW50Q2hpbGRyZW4oUGFnZUNvbnRlbnREaXJlY3RpdmUpXG4gIHByaXZhdGUgY3VzdG9tQ29udGVudDogUXVlcnlMaXN0PFBhZ2VDb250ZW50RGlyZWN0aXZlPjtcbiAgQENvbnRlbnRDaGlsZChQYWdlU3RpY2t5Q29udGVudERpcmVjdGl2ZSwgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICBwcml2YXRlIHN0aWNreUNvbnRlbnRSZWY6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBDb250ZW50Q2hpbGQoSGVhZGVyQ29tcG9uZW50KVxuICBoZWFkZXI/OiBIZWFkZXJDb21wb25lbnQ7XG5cbiAgaGFzUGFnZVRpdGxlOiBib29sZWFuO1xuICBoYXNQYWdlU3VidGl0bGU6IGJvb2xlYW47XG4gIHRvb2xiYXJUaXRsZVZpc2libGU6IGJvb2xlYW47XG4gIHRvb2xiYXJBY3Rpb25zVmlzaWJsZTogYm9vbGVhbjtcbiAgaXNDb250ZW50U2Nyb2xsZWQ6IGJvb2xlYW47XG4gIGlzU3RpY2t5Q29udGVudFBpbm5lZCA9IGZhbHNlO1xuXG4gIGZpdEhlYWRpbmdDb25maWc6IEZpdEhlYWRpbmdDb25maWc7XG5cbiAgdG9vbGJhclRpdGxlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIGN1c3RvbUNvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgcGFnZUFjdGlvbnNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgZml4ZWRDb250ZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIHN0aWNreUFjdGlvbnNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgZml4ZWRBY3Rpb25zVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIHN0aWNreUNvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8UGFnZVN0aWNreUNvbnRlbnREaXJlY3RpdmU+O1xuXG4gIHByaXZhdGUgdGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlcj86IEludGVyc2VjdGlvbk9ic2VydmVyO1xuICBwcml2YXRlIHN0aWNreUFjdGlvbnNJbnRlcnNlY3Rpb25PYnNlcnZlcj86IEludGVyc2VjdGlvbk9ic2VydmVyO1xuICBwcml2YXRlIHN0aWNreUNvbnRlbnRJbnRlcnNlY3Rpb25PYnNlcnZlcj86IEludGVyc2VjdGlvbk9ic2VydmVyO1xuICBwcml2YXRlIGlzT2JzZXJ2aW5nVGl0bGUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc09ic2VydmluZ0FjdGlvbnMgPSBmYWxzZTtcblxuICBwcml2YXRlIHVybDogc3RyaW5nO1xuICBwcml2YXRlIGlzQWN0aXZlOiBib29sZWFuO1xuXG4gIHByaXZhdGUgbmdPbkRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBjb250ZW50U2Nyb2xsZWQkOiBPYnNlcnZhYmxlPFNjcm9sbERldGFpbD47XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0aW9uU3RhcnQkOiBPYnNlcnZhYmxlPFJvdXRlckV2ZW50PiA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgIGZpbHRlcigoZXZlbnQ6IFJvdXRlckV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCksXG4gICAgdGFrZVVudGlsKHRoaXMubmdPbkRlc3Ryb3kkKVxuICApO1xuXG4gIHByaXZhdGUgbmF2aWdhdGlvbkVuZCQ6IE9ic2VydmFibGU8Um91dGVyRXZlbnQ+ID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgZmlsdGVyKChldmVudDogUm91dGVyRXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgdGFrZVVudGlsKHRoaXMubmdPbkRlc3Ryb3kkKVxuICApO1xuXG4gIHRvb2xiYXJBY3Rpb25Hcm91cEluamVjdG9yOiBJbmplY3RvcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBtb2RhbE5hdmlnYXRpb25TZXJ2aWNlOiBNb2RhbE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlOiBSZXNpemVPYnNlcnZlclNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHJpdmF0ZSB0YWJzQ29tcG9uZW50OiBUYWJzQ29tcG9uZW50LFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChQQUdFX0JBQ0tfQlVUVE9OX09WRVJSSURFKVxuICAgIHByaXZhdGUgYmFja0J1dHRvbk92ZXJyaWRlOiBQYWdlQmFja0J1dHRvbk92ZXJyaWRlLFxuICAgIEBPcHRpb25hbCgpXG4gICAgcHJpdmF0ZSByb3V0ZXJPdXRsZXQ6IElvblJvdXRlck91dGxldCxcbiAgICBAT3B0aW9uYWwoKVxuICAgIHByaXZhdGUgbmF2Q3RybDogTmF2Q29udHJvbGxlclxuICApIHt9XG5cbiAgcHJpdmF0ZSBjb250ZW50UmVhZHlQcm9taXNlOiBQcm9taXNlPHZvaWQ+O1xuICBwcml2YXRlIHdoZW5Db250ZW50UmVhZHkoKSB7XG4gICAgaWYgKCF0aGlzLmNvbnRlbnRSZWFkeVByb21pc2UpIHtcbiAgICAgIHRoaXMuY29udGVudFJlYWR5UHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLm9ic2VydmUodGhpcy5pb25Db250ZW50RWxlbWVudCwgKGVudHJ5KSA9PiB7XG4gICAgICAgICAgaWYgKGVudHJ5LmNvbnRlbnRSZWN0LmhlaWdodCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLnVub2JzZXJ2ZSh0aGlzLmlvbkNvbnRlbnRFbGVtZW50KTtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbnRlbnRSZWFkeVByb21pc2U7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZVdyYXBwZXIoKTtcblxuICAgIHRoaXMudG9vbGJhckFjdGlvbkdyb3VwSW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBBQ1RJT05HUk9VUF9DT05GSUcsXG4gICAgICAgICAgdXNlVmFsdWU6IHsgaXNSZXNpemFibGU6IGZhbHNlLCBpc0NvbmRlbnNlZDogdHJ1ZSwgdmlzaWJsZUFjdGlvbnM6IDEgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBwYXJlbnQ6IHRoaXMuaW5qZWN0b3IsXG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMudGl0bGVNYXhMaW5lcykge1xuICAgICAgdGhpcy5maXRIZWFkaW5nQ29uZmlnID0ge1xuICAgICAgICBtYXhMaW5lczogY2hhbmdlcy50aXRsZU1heExpbmVzLmN1cnJlbnRWYWx1ZSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLnN1YnRpdGxlICYmICFjaGFuZ2VzLnN1YnRpdGxlLmlzRmlyc3RDaGFuZ2UpIHtcbiAgICAgIHRoaXMuc3VidGl0bGUgPSBjaGFuZ2VzLnRpdGxlLmN1cnJlbnRWYWx1ZTtcbiAgICAgIHRoaXMuaGFzUGFnZVN1YnRpdGxlID0gdGhpcy5zdWJ0aXRsZSAhPT0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5jb250ZW50U2Nyb2xsZWQkID0gdGhpcy5jb250ZW50LmlvblNjcm9sbC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoY29udGVudFNjcm9sbERlYm91bmNlVGltZUluTVMpLFxuICAgICAgICBtYXAoKGV2ZW50KSA9PiBldmVudC5kZXRhaWwpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5uZ09uRGVzdHJveSQpXG4gICAgICApO1xuXG4gICAgICB0aGlzLmNvbnRlbnRTY3JvbGxlZCQuc3Vic2NyaWJlKChzY3JvbGxJbmZvOiBTY3JvbGxEZXRhaWwpID0+IHtcbiAgICAgICAgaWYgKHNjcm9sbEluZm8uc2Nyb2xsVG9wID4gY29udGVudFNjcm9sbGVkT2Zmc2V0SW5QaXhlbHMgIT09IHRoaXMuaXNDb250ZW50U2Nyb2xsZWQpIHtcbiAgICAgICAgICB0aGlzLmlzQ29udGVudFNjcm9sbGVkID0gIXRoaXMuaXNDb250ZW50U2Nyb2xsZWQ7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gVGhpcyBpbnN0YW5jZSBoYXMgb2JzZXJ2ZWQgYSBwYWdlIGVudGVyIHNvIHJlZ2lzdGVyIHRoZSBjb3JyZWN0IHVybCBmb3IgdGhpcyBpbnN0YW5jZVxuICAgIHRoaXMudXJsID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgIHRoaXMub25FbnRlcigpO1xuXG4gICAgLy8gV2F0Y2ggbmF2aWdhdGlvbiBldmVudHMgZm9yIHBhZ2UgZW50ZXIgYW5kIGxlYXZlXG4gICAgdGhpcy5uYXZpZ2F0aW9uU3RhcnQkLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25TdGFydCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmdldFBhdGhuYW1lKGV2ZW50LnVybCkgIT09IHRoaXMuZ2V0UGF0aG5hbWUodGhpcy51cmwpICYmXG4gICAgICAgICF0aGlzLm1vZGFsTmF2aWdhdGlvblNlcnZpY2UuaXNNb2RhbFJvdXRlKHRoaXMudXJsKSAmJlxuICAgICAgICAhdGhpcy5tb2RhbE5hdmlnYXRpb25TZXJ2aWNlLmlzTW9kYWxSb3V0ZShldmVudC51cmwpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5vbkxlYXZlKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLm5hdmlnYXRpb25FbmQkLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25FbmQpID0+IHtcbiAgICAgIGlmICh0aGlzLmdldFBhdGhuYW1lKGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzKSA9PT0gdGhpcy5nZXRQYXRobmFtZSh0aGlzLnVybCkpIHtcbiAgICAgICAgdGhpcy5vbkVudGVyKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmludGVyY2VwdEJhY2tCdXR0b25DbGlja3NTZXR1cCgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVN0aWNreUludGVyc2VjdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0aWFsaXplVGl0bGUoKTtcbiAgICB0aGlzLmluaXRpYWxpemVBY3Rpb25zKCk7XG4gICAgdGhpcy5pbml0aWFsaXplQ29udGVudCgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZVN0aWNreUNvbnRlbnQoKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmdPbkRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLm5nT25EZXN0cm95JC5jb21wbGV0ZSgpO1xuXG4gICAgdGhpcy50aXRsZUludGVyc2VjdGlvbk9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5zdGlja3lBY3Rpb25zSW50ZXJzZWN0aW9uT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLnN0aWNreUNvbnRlbnRJbnRlcnNlY3Rpb25PYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgZGVsZWdhdGVSZWZyZXNoRXZlbnQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaC5lbWl0KHtcbiAgICAgIGNvbXBsZXRlOiBldmVudC50YXJnZXQuY29tcGxldGUuYmluZChldmVudC50YXJnZXQpLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0TWF4V2lkdGhDbGFzc2VzKCkge1xuICAgIGlmICghdGhpcy5tYXhXaWR0aCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAodGhpcy5tYXhXaWR0aCA9PT0gJ2RlZmF1bHQnKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBgbWF4LXdpZHRoLSR7dGhpcy5tYXhXaWR0aH1gO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVXcmFwcGVyKCkge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7XG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChwYXJlbnQsIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHBhcmVudCwgdGhpcy5pb25IZWFkZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50LCB0aGlzLmlvbkNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQocGFyZW50LCB0aGlzLmlvbkZvb3RlckVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIG9uRW50ZXIoKSB7XG4gICAgaWYgKHRoaXMuaXNBY3RpdmUpIHJldHVybjtcbiAgICB0aGlzLmlzQWN0aXZlID0gdHJ1ZTtcblxuICAgIHRoaXMuZW50ZXIuZW1pdCgpO1xuXG4gICAgdGhpcy5vYnNlcnZlVGl0bGUoKTtcbiAgICB0aGlzLm9ic2VydmVBY3Rpb25zKCk7XG4gIH1cblxuICBwcml2YXRlIG9uTGVhdmUoKSB7XG4gICAgaWYgKCF0aGlzLmlzQWN0aXZlKSByZXR1cm47XG4gICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xuXG4gICAgdGhpcy5sZWF2ZS5lbWl0KCk7XG5cbiAgICB0aGlzLnVub2JzZXJ2ZVRpdGxlKCk7XG4gICAgdGhpcy51bm9ic2VydmVBY3Rpb25zKCk7XG5cbiAgICBpZiAodGhpcy50YWJCYXJCb3R0b21IaWRkZW4gJiYgdGhpcy50YWJzQ29tcG9uZW50KSB7XG4gICAgICB0aGlzLnRhYnNDb21wb25lbnQudGFiQmFyQm90dG9tSGlkZGVuID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcmNlcHRCYWNrQnV0dG9uQ2xpY2tzU2V0dXAoKSB7XG4gICAgaWYgKHRoaXMuYmFja0J1dHRvbk92ZXJyaWRlKSB7XG4gICAgICB0aGlzLmJhY2tCdXR0b25EZWxlZ2F0ZS5vbkNsaWNrID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmJhY2tCdXR0b25PdmVycmlkZS5uYXZpZ2F0ZUJhY2sodGhpcy5yb3V0ZXJPdXRsZXQsIHRoaXMubmF2Q3RybCwgdGhpcy5kZWZhdWx0QmFja0hyZWYpO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBJbnRlcmNlcHQgYmFjay1idXR0b24gY2xpY2sgZXZlbnRzLCBkZWZhdWx0aW5nIHRvIHRoZSBidWlsdC1pbiBjbGljay1oYW5kbGVyLlxuICAgIGlmICh0aGlzLmJhY2tCdXR0b25DbGljay5vYnNlcnZlcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmJhY2tCdXR0b25DbGlja1xuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ09uRGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKHRoaXMuYmFja0J1dHRvbkRlbGVnYXRlLm9uQ2xpY2suYmluZCh0aGlzLmJhY2tCdXR0b25EZWxlZ2F0ZSkpO1xuICAgIH1cbiAgICB0aGlzLmJhY2tCdXR0b25EZWxlZ2F0ZS5vbkNsaWNrID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgdGhpcy5iYWNrQnV0dG9uQ2xpY2suZW1pdChldmVudCk7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVN0aWNreUludGVyc2VjdGlvbk9ic2VydmVyKCkge1xuICAgIGlmICh0aGlzLnN0aWNreUNvbnRlbnRUZW1wbGF0ZSkge1xuICAgICAgLy8gU3RpY2t5IGNvbnRlbnQgcHJlc2VudCAtIHN0YXJ0IG9ic2VydmluZyBmb3Igc3RpY2tpbmVzc1xuICAgICAgaWYgKCF0aGlzLnN0aWNreUNvbnRlbnRJbnRlcnNlY3Rpb25PYnNlcnZlcikge1xuICAgICAgICB0aGlzLnN0aWNreUNvbnRlbnRJbnRlcnNlY3Rpb25PYnNlcnZlciA9IHRoaXMuY3JlYXRlU3RpY2t5Q29udGVudEludGVyc2VjdGlvbk9ic2VydmVyKCk7XG4gICAgICB9XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zdGlja3lDb250ZW50SW50ZXJzZWN0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnN0aWNreUNvbnRlbnRDb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVUaXRsZSgpIHtcbiAgICAvLyBFbnN1cmVzIGluaXRpYWxpemVUaXRsZSgpIHdvbid0IHJ1biwgaWYgYWxyZWFkeSBpbml0aWFsaXplZFxuICAgIGlmICh0aGlzLmhhc1BhZ2VUaXRsZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5oYXNQYWdlVGl0bGUgPVxuICAgICAgdGhpcy50aXRsZSAhPT0gdW5kZWZpbmVkIHx8ICEhdGhpcy5jdXN0b21UaXRsZVRlbXBsYXRlIHx8ICEhdGhpcy5oZWFkZXI/LnRpdGxlO1xuICAgIHRoaXMudG9vbGJhclRpdGxlVmlzaWJsZSA9ICF0aGlzLmhhc1BhZ2VUaXRsZTtcbiAgICB0aGlzLmhhc1BhZ2VTdWJ0aXRsZSA9IHRoaXMuc3VidGl0bGUgIT09IHVuZGVmaW5lZCB8fCAhIXRoaXMuY3VzdG9tU3VidGl0bGVUZW1wbGF0ZTtcbiAgICBpZiAodGhpcy5oZWFkZXI/LnRpdGxlICYmICF0aGlzLnRvb2xiYXJUaXRsZSkge1xuICAgICAgdGhpcy50b29sYmFyVGl0bGUgPSB0aGlzLmhlYWRlci50aXRsZTtcbiAgICB9XG5cbiAgICB0aGlzLm9ic2VydmVUaXRsZSgpO1xuXG4gICAgY29uc3QgZGVmYXVsdFRpdGxlVGVtcGxhdGUgPSB0aGlzLmN1c3RvbVRpdGxlVGVtcGxhdGUgfHwgdGhpcy5zaW1wbGVUaXRsZVRlbXBsYXRlO1xuICAgIC8qIGVzbGludC1kaXNhYmxlICovXG4gICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgdGhpcy50b29sYmFyVGl0bGVUZW1wbGF0ZSA9IHRoaXMuY3VzdG9tVG9vbGJhclRpdGxlVGVtcGxhdGVcbiAgICAgID8gdGhpcy5jdXN0b21Ub29sYmFyVGl0bGVUZW1wbGF0ZVxuICAgICAgOiB0eXBlb2YgdGhpcy50b29sYmFyVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgID8gdGhpcy5zaW1wbGVUb29sYmFyVGl0bGVUZW1wbGF0ZVxuICAgICAgICA6IGRlZmF1bHRUaXRsZVRlbXBsYXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBvYnNlcnZlVGl0bGUoKSB7XG4gICAgaWYgKCF0aGlzLmhhc1BhZ2VUaXRsZSkge1xuICAgICAgLy8gTm90aGluZyB0byBvYnNlcnZlXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmlzT2JzZXJ2aW5nVGl0bGUpIHtcbiAgICAgIC8vIEFscmVhZHkgb2JzZXJ2aW5nXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gV2UgYXJlIG5vdCBhY3R1YWxseSBvYnNlcnZpbmcgdGhlIHRpdGxlIHVudGlsIGFmdGVyIHRoZSBgd2hlbkNvbnRlbnRSZWFkeWAgcHJvbWlzZSBoYXMgcmVzb2x2ZWQsXG4gICAgLy8gYnV0IHNpbmNlIHdlJ3ZlIGFscmVhZHkgY2hlY2tlZCB0aGF0IHRoZSBwYWdlIGhhcyBhIHRpdGxlIGluIHRoZSBndWFyZCBhYm92ZSxcbiAgICAvLyB3ZSdsbCAtIGVhZ2VybHkgLSBzZXQgdGhpcyBmbGFnIG5vdyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJ1bnMgb2YgdGhlIHJlc3Qgb2YgdGhpcyBtZXRob2Q6XG4gICAgdGhpcy5pc09ic2VydmluZ1RpdGxlID0gdHJ1ZTtcblxuICAgIGlmICghdGhpcy50aXRsZUludGVyc2VjdGlvbk9ic2VydmVyKSB7XG4gICAgICB0aGlzLnRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAgIChlbnRyaWVzKSA9PiB7XG4gICAgICAgICAgdGhpcy50b29sYmFyVGl0bGVWaXNpYmxlID0gIWVudHJpZXNbMF0uaXNJbnRlcnNlY3Rpbmc7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0sXG4gICAgICAgIHsgcm9vdDogdGhpcy5pb25Db250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50IH1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gUnVuIG91dHNpZGUgQW5ndWxhciB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHRyaWdnZXJpbmcgY2hhbmdlIGRldGVjdGlvblxuICAgIC8vIGFuZCAtIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucyAtIGFuIGluZmluaXRlIGxvb3Agd2hlbiBjYWxsZWQgd2l0aGluIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZDpcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy53aGVuQ29udGVudFJlYWR5KCkudGhlbigoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRpdGxlRWxlbWVudFJlZiA9IHRoaXMucGFnZVRpdGxlIHx8IHRoaXMuaGVhZGVyPy50aXRsZUVsZW1lbnQ7XG4gICAgICAgIGlmICh0aXRsZUVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICB0aGlzLnRpdGxlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0aXRsZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1bm9ic2VydmVUaXRsZSgpIHtcbiAgICBjb25zdCB0aXRsZUVsZW1lbnRSZWYgPSB0aGlzLnBhZ2VUaXRsZSB8fCB0aGlzLmhlYWRlcj8udGl0bGVFbGVtZW50O1xuICAgIGlmICh0aXRsZUVsZW1lbnRSZWYpIHtcbiAgICAgIHRoaXMudGl0bGVJbnRlcnNlY3Rpb25PYnNlcnZlcj8udW5vYnNlcnZlKHRpdGxlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG4gICAgdGhpcy5pc09ic2VydmluZ1RpdGxlID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVBY3Rpb25zKCkge1xuICAgIHRoaXMub2JzZXJ2ZUFjdGlvbnMoKTtcblxuICAgIHRoaXMuY3VzdG9tQWN0aW9ucy5mb3JFYWNoKChwYWdlQWN0aW9uKSA9PiB7XG4gICAgICBpZiAocGFnZUFjdGlvbi5pc0ZpeGVkKSB7XG4gICAgICAgIHRoaXMuZml4ZWRBY3Rpb25zVGVtcGxhdGUgPSBwYWdlQWN0aW9uLnRlbXBsYXRlO1xuICAgICAgfSBlbHNlIGlmIChwYWdlQWN0aW9uLmlzU3RpY2t5KSB7XG4gICAgICAgIHRoaXMuc3RpY2t5QWN0aW9uc1RlbXBsYXRlID0gcGFnZUFjdGlvbi50ZW1wbGF0ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucGFnZUFjdGlvbnNUZW1wbGF0ZSA9IHBhZ2VBY3Rpb24udGVtcGxhdGU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVBY3Rpb25zKCkge1xuICAgIGlmICghdGhpcy5oZWFkZXI/LmFjdGlvbnNFbGVtZW50KSB7XG4gICAgICAvLyBOb3RoaW5nIHRvIG9ic2VydmVcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc09ic2VydmluZ0FjdGlvbnMpIHtcbiAgICAgIC8vIEFscmVhZHkgb2JzZXJ2aW5nXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gV2UgYXJlIG5vdCBhY3R1YWxseSBvYnNlcnZpbmcgYWN0aW9ucyB1bnRpbCBhZnRlciB0aGUgYHdoZW5Db250ZW50UmVhZHlgIHByb21pc2UgaGFzIHJlc29sdmVkLFxuICAgIC8vIGJ1dCBzaW5jZSB3ZSd2ZSBhbHJlYWR5IGNoZWNrZWQgdGhhdCB0aGVyZSdzIGFuIGFjdGlvbnMgZWxlbWVudCBwcmVzZW50IGluIHRoZSBndWFyZCBhYm92ZSxcbiAgICAvLyB3ZSdsbCAtIGVhZ2VybHkgLSBzZXQgdGhpcyBmbGFnIG5vdyB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHJlLXJ1bnMgb2YgdGhlIHJlc3Qgb2YgdGhpcyBtZXRob2Q6XG4gICAgdGhpcy5pc09ic2VydmluZ0FjdGlvbnMgPSB0cnVlO1xuXG4gICAgaWYgKCF0aGlzLnN0aWNreUFjdGlvbnNJbnRlcnNlY3Rpb25PYnNlcnZlcikge1xuICAgICAgdGhpcy5zdGlja3lBY3Rpb25zSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAgIChlbnRyaWVzKSA9PiB7XG4gICAgICAgICAgdGhpcy50b29sYmFyQWN0aW9uc1Zpc2libGUgPSAhZW50cmllc1swXS5pc0ludGVyc2VjdGluZztcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgeyByb290OiB0aGlzLmlvbkNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQgfVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBSdW4gb3V0c2lkZSBBbmd1bGFyIHRvIHByZXZlbnQgdW5uZWNlc3NhcnkgdHJpZ2dlcmluZyBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgLy8gYW5kIC0gdW5kZXIgY2VydGFpbiBjb25kaXRpb25zIC0gYW4gaW5maW5pdGUgbG9vcCB3aGVuIGNhbGxlZCB3aXRoaW4gbmdBZnRlckNvbnRlbnRDaGVja2VkOlxuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLndoZW5Db250ZW50UmVhZHkoKS50aGVuKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaGVhZGVyPy5hY3Rpb25zRWxlbWVudD8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgIHRoaXMuc3RpY2t5QWN0aW9uc0ludGVyc2VjdGlvbk9ic2VydmVyLm9ic2VydmUodGhpcy5oZWFkZXIuYWN0aW9uc0VsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1bm9ic2VydmVBY3Rpb25zKCkge1xuICAgIGlmICh0aGlzLmhlYWRlcj8uYWN0aW9uc0VsZW1lbnQpIHtcbiAgICAgIHRoaXMuc3RpY2t5QWN0aW9uc0ludGVyc2VjdGlvbk9ic2VydmVyPy51bm9ic2VydmUodGhpcy5oZWFkZXIuYWN0aW9uc0VsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICAgIHRoaXMuaXNPYnNlcnZpbmdBY3Rpb25zID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVDb250ZW50KCkge1xuICAgIHRoaXMuY3VzdG9tQ29udGVudC5mb3JFYWNoKChjb250ZW50KSA9PiB7XG4gICAgICBpZiAoY29udGVudC5pc0ZpeGVkKSB7XG4gICAgICAgIHRoaXMuZml4ZWRDb250ZW50VGVtcGxhdGUgPSBjb250ZW50LnRlbXBsYXRlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jdXN0b21Db250ZW50VGVtcGxhdGUgPSBjb250ZW50LnRlbXBsYXRlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplU3RpY2t5Q29udGVudCgpIHtcbiAgICB0aGlzLnN0aWNreUNvbnRlbnRUZW1wbGF0ZSA9IHRoaXMuc3RpY2t5Q29udGVudFJlZjtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU3RpY2t5Q29udGVudEludGVyc2VjdGlvbk9ic2VydmVyKCkge1xuICAgIGNvbnN0IG9wdGlvbnM6IEludGVyc2VjdGlvbk9ic2VydmVySW5pdCA9IHtcbiAgICAgIC8vIFRPRE86IFNob3VsZCBzdGlja3kgY29udGVudCBhbHNvIHVzZSBpb24tY29udGVudCBhcyByb290P1xuICAgICAgLy8gcm9vdDogdGhpcy5pb25Db250ZW50RWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgdGhyZXNob2xkOiAxLFxuICAgIH07XG5cbiAgICBjb25zdCBjYWxsYmFjazogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjayA9IChlbnRyaWVzKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc1N0aWNreUNvbnRlbnRQaW5uZWQgIT09ICFlbnRyaWVzWzBdLmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgIHRoaXMuaXNTdGlja3lDb250ZW50UGlubmVkID0gIXRoaXMuaXNTdGlja3lDb250ZW50UGlubmVkO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoY2FsbGJhY2ssIG9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXRobmFtZSh1cmw6IHN0cmluZykge1xuICAgIHJldHVybiB1cmwuc3BsaXQoJz8nKVswXTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlib2FyZFdpbGxTaG93JywgWyckZXZlbnQnXSlcbiAgX29uS2V5Ym9hcmRXaWxsU2hvdyhpbmZvPzogeyBrZXlib2FyZEhlaWdodDogbnVtYmVyIH0pIHtcbiAgICBpZiAoaW5mbyAmJiBpbmZvLmtleWJvYXJkSGVpZ2h0KSB7XG4gICAgICB0aGlzLmlvbkNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgICctLWtleWJvYXJkLW9mZnNldCcsXG4gICAgICAgIGAke2luZm8ua2V5Ym9hcmRIZWlnaHR9cHhgXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzprZXlib2FyZFdpbGxIaWRlJylcbiAgX29uS2V5Ym9hcmRXaWxsSGlkZSgpIHtcbiAgICB0aGlzLmlvbkNvbnRlbnRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0ta2V5Ym9hcmQtb2Zmc2V0JywgJzBweCcpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcihgd2luZG93OiR7c2VsZWN0ZWRUYWJDbGlja0V2ZW50fWApXG4gIF9vblNlbGVjdGVkVGFiQ2xpY2soKSB7XG4gICAgaWYgKHRoaXMuY29udGVudCkge1xuICAgICAgdGhpcy5jb250ZW50LnNjcm9sbFRvVG9wKEtpcmJ5QW5pbWF0aW9uLkR1cmF0aW9uLkxPTkcpO1xuICAgIH1cbiAgfVxufVxuIiwiPGlvbi1oZWFkZXI+XG4gIDxpb24tdG9vbGJhciBbY2xhc3MuY29udGVudC1zY3JvbGxlZF09XCIhc3RpY2t5Q29udGVudFRlbXBsYXRlICYmIGlzQ29udGVudFNjcm9sbGVkXCI+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgPGlvbi1iYWNrLWJ1dHRvblxuICAgICAgICB0ZXh0PVwiXCJcbiAgICAgICAgW2RlZmF1bHRIcmVmXT1cImRlZmF1bHRCYWNrSHJlZlwiXG4gICAgICAgIGljb249XCJhc3NldHMva2lyYnkvaWNvbnMvc3ZnL2Fycm93LWJhY2suc3ZnXCJcbiAgICAgICAgW3N0eWxlLnZpc2liaWxpdHldPVwiaGlkZUJhY2tCdXR0b24gPyAnaGlkZGVuJyA6IG51bGxcIlxuICAgICAgPjwvaW9uLWJhY2stYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgPGlvbi10aXRsZSBbY2xhc3Muc2xpZGUtYW5kLWZhZGUtaW5dPVwidG9vbGJhclRpdGxlVmlzaWJsZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInRvb2xiYXItdGl0bGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRvb2xiYXJUaXRsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2lvbi10aXRsZT5cbiAgICA8aW9uLWJ1dHRvbnNcbiAgICAgICpuZ0lmPVwiISFoZWFkZXI/LmFjdGlvbnNUZW1wbGF0ZVwiXG4gICAgICBjbGFzcz1cImhpZGVcIlxuICAgICAgc2xvdD1cInByaW1hcnlcIlxuICAgICAgW2NsYXNzLmZhZGUtaW5dPVwidG9vbGJhckFjdGlvbnNWaXNpYmxlXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyPy5hY3Rpb25zVGVtcGxhdGU7IGluamVjdG9yOiB0b29sYmFyQWN0aW9uR3JvdXBJbmplY3RvclwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgICA8aW9uLWJ1dHRvbnMgKm5nSWY9XCIhIXN0aWNreUFjdGlvbnNUZW1wbGF0ZVwiIGNsYXNzPVwibGVnYWN5LWFjdGlvbnNcIiBzbG90PVwicHJpbWFyeVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN0aWNreUFjdGlvbnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgPGlvbi1idXR0b25zICpuZ0lmPVwiISFmaXhlZEFjdGlvbnNUZW1wbGF0ZVwiIGNsYXNzPVwibGVnYWN5LWFjdGlvbnNcIiBzbG90PVwic2Vjb25kYXJ5XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZml4ZWRBY3Rpb25zVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2lvbi1idXR0b25zPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuXG48aW9uLWNvbnRlbnQgc2Nyb2xsRXZlbnRzPVwidHJ1ZVwiIGZvcmNlT3ZlcnNjcm9sbD1cImZhbHNlXCIgW2NsYXNzXT1cImdldE1heFdpZHRoQ2xhc3NlcygpXCI+XG4gIDxpb24tcmVmcmVzaGVyXG4gICAgKm5nSWY9XCJyZWZyZXNoLm9ic2VydmVycy5sZW5ndGggPiAwXCJcbiAgICAoaW9uUmVmcmVzaCk9XCJkZWxlZ2F0ZVJlZnJlc2hFdmVudCgkZXZlbnQpXCJcbiAgICBzbG90PVwiZml4ZWRcIlxuICA+XG4gICAgPGtpcmJ5LXNwaW5uZXI+PC9raXJieS1zcGlubmVyPlxuICA8L2lvbi1yZWZyZXNoZXI+XG5cbiAgPCEtLSBQYWdlIGhlYWRlciAtLT5cbiAgPGRpdiBjbGFzcz1cInBhZ2UtaGVhZGVyLWNvbnRhaW5lclwiICpuZ0lmPVwiaGFzUGFnZVRpdGxlICYmICFoZWFkZXJcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInBhZ2UtaGVhZGVyXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3RleHQtY2VudGVyJzogdGl0bGVBbGlnbm1lbnQgPT09ICdjZW50ZXInLFxuICAgICAgICAndGV4dC1yaWdodCc6IHRpdGxlQWxpZ25tZW50ID09PSAncmlnaHQnXG4gICAgICB9XCJcbiAgICA+XG4gICAgICA8ZGl2ICNwYWdlVGl0bGUgY2xhc3M9XCJwYWdlLXRpdGxlXCIgW2NsYXNzLmhhcy1hY3Rpb25zXT1cIiEhcGFnZUFjdGlvbnNUZW1wbGF0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21UaXRsZVRlbXBsYXRlIHx8IGRlZmF1bHRQYWdlVGl0bGVUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFnZUFjdGlvbnNUZW1wbGF0ZSB8fCBkZWZhdWx0UGFnZUFjdGlvbnNUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAqbmdJZj1cImhhc1BhZ2VTdWJ0aXRsZVwiIGNsYXNzPVwicGFnZS1zdWJ0aXRsZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21TdWJ0aXRsZVRlbXBsYXRlIHx8IGRlZmF1bHRQYWdlU3VidGl0bGVUZW1wbGF0ZVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIEhlYWRlciAtLT5cbiAgPGRpdiBjbGFzcz1cInBhZ2UtaGVhZGVyLWNvbnRhaW5lclwiICpuZ0lmPVwiaGVhZGVyXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwia2lyYnktaGVhZGVyXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cblxuICA8IS0tICBTdGlja3kgY29udGVudCAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0aWNreUNvbnRlbnRUZW1wbGF0ZVwiPlxuICAgIDxkaXZcbiAgICAgICNzdGlja3lDb250ZW50Q29udGFpbmVyXG4gICAgICBjbGFzcz1cInN0aWNreS1jb250ZW50LWNvbnRhaW5lclwiXG4gICAgICBbY2xhc3MuY29udGVudC1waW5uZWRdPVwiaXNTdGlja3lDb250ZW50UGlubmVkXCJcbiAgICA+XG4gICAgICA8ZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3RpY2t5Q29udGVudFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBDb250ZW50IC0tPlxuICA8ZGl2IGNsYXNzPVwiY29udGVudC1pbm5lclwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY3VzdG9tQ29udGVudFRlbXBsYXRlIHx8IGRlZmF1bHRDb250ZW50VGVtcGxhdGVcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBzbG90PVwiZml4ZWRcIiBjbGFzcz1cImZpeGVkLWNvbnRlbnRcIiAqbmdJZj1cImZpeGVkQ29udGVudFRlbXBsYXRlXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtaW5uZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaXhlZENvbnRlbnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvaW9uLWNvbnRlbnQ+XG5cbjxpb24tZm9vdGVyPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJraXJieS1wYWdlLWZvb3RlclwiPjwvbmctY29udGVudD5cbjwvaW9uLWZvb3Rlcj5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0UGFnZVRpdGxlVGVtcGxhdGU+XG4gIDxoMSBba2lyYnlGaXRIZWFkaW5nXT1cImZpdEhlYWRpbmdDb25maWdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2ltcGxlVGl0bGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2gxPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFBhZ2VTdWJ0aXRsZVRlbXBsYXRlPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2ltcGxlU3VidGl0bGVUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFBhZ2VBY3Rpb25zVGVtcGxhdGU+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImtpcmJ5LXBhZ2UtYWN0aW9uc1wiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdENvbnRlbnRUZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwia2lyYnktcGFnZS1jb250ZW50XCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzaW1wbGVUaXRsZVRlbXBsYXRlPnt7IHRpdGxlIH19PC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjc2ltcGxlU3VidGl0bGVUZW1wbGF0ZT57eyBzdWJ0aXRsZSB9fTwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3NpbXBsZVRvb2xiYXJUaXRsZVRlbXBsYXRlPnt7IHRvb2xiYXJUaXRsZSB9fTwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
export { PageComponent } from './page.component';
|
|
2
|
-
export { PageProgressComponent } from './page.component';
|
|
3
|
-
export { PageTitleComponent } from './page.component';
|
|
4
|
-
export { PageTitleDirective } from './page.component';
|
|
5
|
-
export { PageSubtitleDirective } from './page.component';
|
|
6
|
-
export { PageToolbarTitleDirective } from './page.component';
|
|
7
|
-
export { PageActionsDirective } from './page.component';
|
|
8
|
-
export { PageContentDirective } from './page.component';
|
|
9
|
-
export { PageContentComponent } from './page.component';
|
|
10
|
-
export { PageActionsComponent } from './page.component';
|
|
1
|
+
export { PageComponent, PageProgressComponent, PageTitleComponent, PageTitleDirective, PageSubtitleDirective, PageToolbarTitleDirective, PageActionsDirective, PageContentDirective, PageContentComponent, PageActionsComponent, PageStickyContentDirective, PAGE_BACK_BUTTON_OVERRIDE, } from './page.component';
|
|
11
2
|
export { PageFooterComponent } from './page-footer/page-footer.component';
|
|
12
3
|
export { PageModule } from './page.module';
|
|
13
|
-
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3BhZ2Uvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi9wYWdlLmNvbXBvbmVudCc7XG5leHBvcnQgeyBQYWdlUHJvZ3Jlc3NDb21wb25lbnQgfSBmcm9tICcuL3BhZ2UuY29tcG9uZW50JztcbmV4cG9ydCB7IFBhZ2VUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4vcGFnZS5jb21wb25lbnQnO1xuZXhwb3J0IHsgUGFnZVRpdGxlRGlyZWN0aXZlIH0gZnJvbSAnLi9wYWdlLmNvbXBvbmVudCc7XG5leHBvcnQgeyBQYWdlU3VidGl0bGVEaXJlY3RpdmUgfSBmcm9tICcuL3BhZ2UuY29tcG9uZW50JztcbmV4cG9ydCB7IFBhZ2VUb29sYmFyVGl0bGVEaXJlY3RpdmUgfSBmcm9tICcuL3BhZ2UuY29tcG9uZW50JztcbmV4cG9ydCB7IFBhZ2VBY3Rpb25zRGlyZWN0aXZlIH0gZnJvbSAnLi9wYWdlLmNvbXBvbmVudCc7XG5leHBvcnQgeyBQYWdlQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4vcGFnZS5jb21wb25lbnQnO1xuZXhwb3J0IHsgUGFnZUNvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL3BhZ2UuY29tcG9uZW50JztcbmV4cG9ydCB7IFBhZ2VBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi9wYWdlLmNvbXBvbmVudCc7XG5leHBvcnQgeyBQYWdlRm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9wYWdlLWZvb3Rlci9wYWdlLWZvb3Rlci5jb21wb25lbnQnO1xuZXhwb3J0IHsgUGFnZU1vZHVsZSB9IGZyb20gJy4vcGFnZS5tb2R1bGUnO1xuZXhwb3J0IHsgUHVsbFRvUmVmcmVzaEV2ZW50IH0gZnJvbSAnLi9wYWdlLmNvbXBvbmVudCc7XG5leHBvcnQgeyBQYWdlU3RpY2t5Q29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4vcGFnZS5jb21wb25lbnQnO1xuIl19
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvZGVzaWduc3lzdGVtL3BhZ2Uvc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGFBQWEsRUFDYixxQkFBcUIsRUFDckIsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLG9CQUFvQixFQUNwQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUVwQiwwQkFBMEIsRUFDMUIseUJBQXlCLEdBRTFCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIFBhZ2VDb21wb25lbnQsXG4gIFBhZ2VQcm9ncmVzc0NvbXBvbmVudCxcbiAgUGFnZVRpdGxlQ29tcG9uZW50LFxuICBQYWdlVGl0bGVEaXJlY3RpdmUsXG4gIFBhZ2VTdWJ0aXRsZURpcmVjdGl2ZSxcbiAgUGFnZVRvb2xiYXJUaXRsZURpcmVjdGl2ZSxcbiAgUGFnZUFjdGlvbnNEaXJlY3RpdmUsXG4gIFBhZ2VDb250ZW50RGlyZWN0aXZlLFxuICBQYWdlQ29udGVudENvbXBvbmVudCxcbiAgUGFnZUFjdGlvbnNDb21wb25lbnQsXG4gIFB1bGxUb1JlZnJlc2hFdmVudCxcbiAgUGFnZVN0aWNreUNvbnRlbnREaXJlY3RpdmUsXG4gIFBBR0VfQkFDS19CVVRUT05fT1ZFUlJJREUsXG4gIFBhZ2VCYWNrQnV0dG9uT3ZlcnJpZGUsXG59IGZyb20gJy4vcGFnZS5jb21wb25lbnQnO1xuZXhwb3J0IHsgUGFnZUZvb3RlckNvbXBvbmVudCB9IGZyb20gJy4vcGFnZS1mb290ZXIvcGFnZS1mb290ZXIuY29tcG9uZW50JztcbmV4cG9ydCB7IFBhZ2VNb2R1bGUgfSBmcm9tICcuL3BhZ2UubW9kdWxlJztcbiJdfQ==
|