@fundamental-ngx/core 0.46.0-rc.0 → 0.46.0-rc.2
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/calendar/calendar-directives.d.ts +1 -1
- package/calendar/calendar-header/calendar-header.component.d.ts +2 -6
- package/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.d.ts +1 -1
- package/calendar/calendar-views/calendar-day-view/calendar-day-view.component.d.ts +27 -32
- package/calendar/calendar-views/calendar-month-view/calendar-month-view.component.d.ts +1 -1
- package/calendar/calendar-views/calendar-year-view/calendar-year-view.component.d.ts +1 -1
- package/calendar/calendar.component.d.ts +7 -8
- package/calendar/calendar.module.d.ts +2 -5
- package/combobox/combobox-mobile/combobox-mobile.component.d.ts +2 -1
- package/date-picker/date-picker-mobile/date-picker-mobile.component.d.ts +31 -0
- package/date-picker/date-picker.component.d.ts +46 -16
- package/date-picker/date-picker.model.d.ts +11 -0
- package/date-picker/date-picker.module.d.ts +2 -12
- package/date-picker/index.d.ts +2 -0
- package/date-picker/tokens.d.ts +5 -0
- package/datetime-picker/datetime-picker-mobile/datetime-picker-mobile.component.d.ts +29 -0
- package/datetime-picker/datetime-picker.component.d.ts +34 -12
- package/datetime-picker/datetime-picker.model.d.ts +9 -0
- package/datetime-picker/datetime-picker.module.d.ts +2 -14
- package/datetime-picker/index.d.ts +2 -0
- package/datetime-picker/tokens.d.ts +5 -0
- package/esm2022/calendar/calendar-directives.mjs +4 -3
- package/esm2022/calendar/calendar-header/calendar-header.component.mjs +7 -15
- package/esm2022/calendar/calendar-views/calendar-aggregated-year-view/calendar-aggregated-year-view.component.mjs +6 -5
- package/esm2022/calendar/calendar-views/calendar-day-view/calendar-day-view.component.mjs +21 -30
- package/esm2022/calendar/calendar-views/calendar-month-view/calendar-month-view.component.mjs +6 -5
- package/esm2022/calendar/calendar-views/calendar-year-view/calendar-year-view.component.mjs +6 -5
- package/esm2022/calendar/calendar.component.mjs +17 -13
- package/esm2022/calendar/calendar.module.mjs +9 -9
- package/esm2022/combobox/combobox-mobile/combobox-mobile.component.mjs +3 -2
- package/esm2022/date-picker/date-picker-mobile/date-picker-mobile.component.mjs +96 -0
- package/esm2022/date-picker/date-picker.component.mjs +142 -40
- package/esm2022/date-picker/date-picker.model.mjs +2 -0
- package/esm2022/date-picker/date-picker.module.mjs +6 -49
- package/esm2022/date-picker/index.mjs +3 -1
- package/esm2022/date-picker/tokens.mjs +4 -0
- package/esm2022/datetime-picker/datetime-picker-mobile/datetime-picker-mobile.component.mjs +96 -0
- package/esm2022/datetime-picker/datetime-picker.component.mjs +120 -36
- package/esm2022/datetime-picker/datetime-picker.model.mjs +2 -0
- package/esm2022/datetime-picker/datetime-picker.module.mjs +6 -57
- package/esm2022/datetime-picker/index.mjs +3 -1
- package/esm2022/datetime-picker/tokens.mjs +4 -0
- package/esm2022/mobile-mode/mobile-mode.class.mjs +3 -1
- package/esm2022/shared/interfaces/special-day-rule.mjs +1 -1
- package/fesm2022/fundamental-ngx-core-calendar.mjs +91 -95
- package/fesm2022/fundamental-ngx-core-calendar.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-combobox.mjs +2 -1
- package/fesm2022/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-date-picker.mjs +235 -86
- package/fesm2022/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs +211 -88
- package/fesm2022/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2022/fundamental-ngx-core-mobile-mode.mjs +2 -0
- package/fesm2022/fundamental-ngx-core-mobile-mode.mjs.map +1 -1
- package/fundamental-ngx-core-v0.46.0-rc.2.tgz +0 -0
- package/mobile-mode/mobile-mode.class.d.ts +3 -1
- package/package.json +3 -3
- package/schematics/add-dependencies/index.js +4 -4
- package/shared/interfaces/special-day-rule.d.ts +1 -1
- package/fundamental-ngx-core-v0.46.0-rc.0.tgz +0 -0
|
@@ -6,6 +6,8 @@ import { CalendarComponent, CalendarYearGrid, DaysOfWeek, FdCalendarView } from
|
|
|
6
6
|
import { FormItemControl, PopoverFormMessageService } from '@fundamental-ngx/core/form';
|
|
7
7
|
import { Nullable } from '@fundamental-ngx/cdk/utils';
|
|
8
8
|
import { FormStates } from '@fundamental-ngx/cdk/forms';
|
|
9
|
+
import { DateTimePicker } from './datetime-picker.model';
|
|
10
|
+
import { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';
|
|
9
11
|
import * as i0 from "@angular/core";
|
|
10
12
|
/**
|
|
11
13
|
* The datetime picker component is an opinionated composition of the fd-popover,
|
|
@@ -15,7 +17,7 @@ import * as i0 from "@angular/core";
|
|
|
15
17
|
* <fd-date-time-picker [(ngModel)]="dateTime"></fd-date-time-picker>
|
|
16
18
|
* ```
|
|
17
19
|
*/
|
|
18
|
-
export declare class DatetimePickerComponent<D> implements OnInit, OnDestroy, OnChanges, AfterViewInit, ControlValueAccessor, Validator, FormItemControl {
|
|
20
|
+
export declare class DatetimePickerComponent<D> implements DateTimePicker<D>, OnInit, OnDestroy, OnChanges, AfterViewInit, ControlValueAccessor, Validator, FormItemControl {
|
|
19
21
|
private _elRef;
|
|
20
22
|
private _changeDetRef;
|
|
21
23
|
private _dateTimeAdapter;
|
|
@@ -50,13 +52,9 @@ export declare class DatetimePickerComponent<D> implements OnInit, OnDestroy, On
|
|
|
50
52
|
ariaLabelledBy: Nullable<string>;
|
|
51
53
|
/** Text displayed in message */
|
|
52
54
|
set message(message: string);
|
|
53
|
-
/** @hidden */
|
|
54
|
-
_message: string | null;
|
|
55
55
|
/** The trigger events that will open/close the message box.
|
|
56
56
|
* Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp). */
|
|
57
57
|
set messageTriggers(triggers: string[]);
|
|
58
|
-
/** @hidden */
|
|
59
|
-
_messageTriggers: string[];
|
|
60
58
|
/**
|
|
61
59
|
* Whether the time component shows minutes.
|
|
62
60
|
* Default value is based on the current locale format option
|
|
@@ -100,7 +98,7 @@ export declare class DatetimePickerComponent<D> implements OnInit, OnDestroy, On
|
|
|
100
98
|
buttonFocusable: boolean;
|
|
101
99
|
/**
|
|
102
100
|
* Special days mark, it can be used by passing array of object with
|
|
103
|
-
* Special day number, list 1-20 [class:`fd-
|
|
101
|
+
* Special day number, list 1-20 [class:`fd-calendar__item--legend-{{number}}`] is available there:
|
|
104
102
|
* https://sap.github.io/fundamental-styles/components/calendar.html calendar special days section
|
|
105
103
|
* Rule accepts method with FdDate object as a parameter. ex:
|
|
106
104
|
* `rule: (fdDate: FdDate) => fdDate.getDay() === 1`, which will mark all sundays as special day.
|
|
@@ -139,6 +137,14 @@ export declare class DatetimePickerComponent<D> implements OnInit, OnDestroy, On
|
|
|
139
137
|
* Whether to prevent page scrolling when focusing date picker input field after calendar has been closed.
|
|
140
138
|
*/
|
|
141
139
|
preventScrollOnFocus: boolean;
|
|
140
|
+
/** Whether to render datetime picker in mobile mode. */
|
|
141
|
+
mobile: boolean;
|
|
142
|
+
/** Mobile mode configuration. */
|
|
143
|
+
mobileConfig: MobileModeConfig;
|
|
144
|
+
/** Whether calendar is used inside mobile in landscape mode, it also adds close button on right side */
|
|
145
|
+
mobileLandscape: boolean;
|
|
146
|
+
/** Whether calendar is used inside mobile in portrait mode */
|
|
147
|
+
mobilePortrait: boolean;
|
|
142
148
|
/** Event emitted when the state of the isOpen property changes. */
|
|
143
149
|
isOpenChange: EventEmitter<boolean>;
|
|
144
150
|
/** Event thrown every time calendar active view is changed */
|
|
@@ -164,6 +170,12 @@ export declare class DatetimePickerComponent<D> implements OnInit, OnDestroy, On
|
|
|
164
170
|
/** @hidden */
|
|
165
171
|
_inputElement: ElementRef<HTMLInputElement>;
|
|
166
172
|
/** @hidden */
|
|
173
|
+
private readonly _pickerTemplate;
|
|
174
|
+
/** @hidden */
|
|
175
|
+
_message: string | null;
|
|
176
|
+
/** @hidden */
|
|
177
|
+
_messageTriggers: string[];
|
|
178
|
+
/** @hidden */
|
|
167
179
|
_processInputOnBlur: boolean;
|
|
168
180
|
/**
|
|
169
181
|
* @hidden
|
|
@@ -194,22 +206,26 @@ export declare class DatetimePickerComponent<D> implements OnInit, OnDestroy, On
|
|
|
194
206
|
/** @hidden */
|
|
195
207
|
private _calendarPendingDate;
|
|
196
208
|
/** @hidden */
|
|
197
|
-
private readonly
|
|
209
|
+
private readonly _injector;
|
|
210
|
+
/** @hidden */
|
|
211
|
+
private readonly _dynamicComponentService;
|
|
212
|
+
/** @hidden */
|
|
213
|
+
private _mobileComponentRef;
|
|
198
214
|
/** @hidden */
|
|
199
215
|
private _subscriptions;
|
|
200
216
|
/** @hidden */
|
|
201
217
|
private _touched;
|
|
202
218
|
/** @hidden */
|
|
203
|
-
|
|
204
|
-
/** @hidden */
|
|
205
|
-
onTouched: () => void;
|
|
219
|
+
constructor(_elRef: ElementRef, _changeDetRef: ChangeDetectorRef, _dateTimeAdapter: DatetimeAdapter<D>, _dateTimeFormats: DateTimeFormats, _popoverFormMessage: PopoverFormMessageService);
|
|
206
220
|
/**
|
|
207
221
|
* Function used to disable certain dates in the calendar.
|
|
208
222
|
* @param fdDate FdDate
|
|
209
223
|
*/
|
|
210
224
|
disableFunction: (value: D) => boolean;
|
|
211
225
|
/** @hidden */
|
|
212
|
-
|
|
226
|
+
onChange: (value: D | null) => void;
|
|
227
|
+
/** @hidden */
|
|
228
|
+
onTouched: () => void;
|
|
213
229
|
/** @hidden */
|
|
214
230
|
ngOnChanges(changes: any): void;
|
|
215
231
|
/** @hidden */
|
|
@@ -285,6 +301,10 @@ export declare class DatetimePickerComponent<D> implements OnInit, OnDestroy, On
|
|
|
285
301
|
*/
|
|
286
302
|
handleInputChange(inputStr: string, isTypeEvent: boolean): void;
|
|
287
303
|
/** @hidden */
|
|
304
|
+
dialogApprove(): void;
|
|
305
|
+
/** Method used to restore original value for mobile mode. */
|
|
306
|
+
dialogDismiss(value: D): void;
|
|
307
|
+
/** @hidden */
|
|
288
308
|
_changeMessageVisibility(): void;
|
|
289
309
|
/** @hidden */
|
|
290
310
|
_onOpenStateChanged(isOpen: boolean): void;
|
|
@@ -309,6 +329,8 @@ export declare class DatetimePickerComponent<D> implements OnInit, OnDestroy, On
|
|
|
309
329
|
private _setTempDateTime;
|
|
310
330
|
/** @hidden */
|
|
311
331
|
private _calculateTimeOptions;
|
|
332
|
+
/** @hidden */
|
|
333
|
+
private _setUpMobileMode;
|
|
312
334
|
static ɵfac: i0.ɵɵFactoryDeclaration<DatetimePickerComponent<any>, [null, null, { optional: true; }, { optional: true; }, null]>;
|
|
313
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DatetimePickerComponent<any>, "fd-datetime-picker", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "appendTo": { "alias": "appendTo"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "required": { "alias": "required"; "required": false; }; "meridian": { "alias": "meridian"; "required": false; }; "displaySeconds": { "alias": "displaySeconds"; "required": false; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; }; "message": { "alias": "message"; "required": false; }; "messageTriggers": { "alias": "messageTriggers"; "required": false; }; "displayMinutes": { "alias": "displayMinutes"; "required": false; }; "displayHours": { "alias": "displayHours"; "required": false; }; "useValidation": { "alias": "useValidation"; "required": false; }; "date": { "alias": "date"; "required": false; }; "isOpen": { "alias": "isOpen"; "required": false; }; "startingDayOfWeek": { "alias": "startingDayOfWeek"; "required": false; }; "activeView": { "alias": "activeView"; "required": false; }; "allowNull": { "alias": "allowNull"; "required": false; }; "keepTwoDigitsTime": { "alias": "keepTwoDigitsTime"; "required": false; }; "state": { "alias": "state"; "required": false; }; "buttonFocusable": { "alias": "buttonFocusable"; "required": false; }; "specialDaysRules": { "alias": "specialDaysRules"; "required": false; }; "yearGrid": { "alias": "yearGrid"; "required": false; }; "aggregatedYearGrid": { "alias": "aggregatedYearGrid"; "required": false; }; "markWeekends": { "alias": "markWeekends"; "required": false; }; "spinnerButtons": { "alias": "spinnerButtons"; "required": false; }; "showWeekNumbers": { "alias": "showWeekNumbers"; "required": false; }; "showFooter": { "alias": "showFooter"; "required": false; }; "processInputOnBlur": { "alias": "processInputOnBlur"; "required": false; }; "preventScrollOnFocus": { "alias": "preventScrollOnFocus"; "required": false; }; "disableFunction": { "alias": "disableFunction"; "required": false; }; }, { "isOpenChange": "isOpenChange"; "activeViewChange": "activeViewChange"; "dateChange": "dateChange"; "calendarChange": "calendarChange"; "timeChange": "timeChange"; "onClose": "onClose"; "touched": "touched"; }, never, ["*"],
|
|
335
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DatetimePickerComponent<any>, "fd-datetime-picker", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "appendTo": { "alias": "appendTo"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "required": { "alias": "required"; "required": false; }; "meridian": { "alias": "meridian"; "required": false; }; "displaySeconds": { "alias": "displaySeconds"; "required": false; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; }; "message": { "alias": "message"; "required": false; }; "messageTriggers": { "alias": "messageTriggers"; "required": false; }; "displayMinutes": { "alias": "displayMinutes"; "required": false; }; "displayHours": { "alias": "displayHours"; "required": false; }; "useValidation": { "alias": "useValidation"; "required": false; }; "date": { "alias": "date"; "required": false; }; "isOpen": { "alias": "isOpen"; "required": false; }; "startingDayOfWeek": { "alias": "startingDayOfWeek"; "required": false; }; "activeView": { "alias": "activeView"; "required": false; }; "allowNull": { "alias": "allowNull"; "required": false; }; "keepTwoDigitsTime": { "alias": "keepTwoDigitsTime"; "required": false; }; "state": { "alias": "state"; "required": false; }; "buttonFocusable": { "alias": "buttonFocusable"; "required": false; }; "specialDaysRules": { "alias": "specialDaysRules"; "required": false; }; "yearGrid": { "alias": "yearGrid"; "required": false; }; "aggregatedYearGrid": { "alias": "aggregatedYearGrid"; "required": false; }; "markWeekends": { "alias": "markWeekends"; "required": false; }; "spinnerButtons": { "alias": "spinnerButtons"; "required": false; }; "showWeekNumbers": { "alias": "showWeekNumbers"; "required": false; }; "showFooter": { "alias": "showFooter"; "required": false; }; "processInputOnBlur": { "alias": "processInputOnBlur"; "required": false; }; "preventScrollOnFocus": { "alias": "preventScrollOnFocus"; "required": false; }; "mobile": { "alias": "mobile"; "required": false; }; "mobileConfig": { "alias": "mobileConfig"; "required": false; }; "mobileLandscape": { "alias": "mobileLandscape"; "required": false; }; "mobilePortrait": { "alias": "mobilePortrait"; "required": false; }; "disableFunction": { "alias": "disableFunction"; "required": false; }; }, { "isOpenChange": "isOpenChange"; "activeViewChange": "activeViewChange"; "dateChange": "dateChange"; "calendarChange": "calendarChange"; "timeChange": "timeChange"; "onClose": "onClose"; "touched": "touched"; }, never, ["*"], true, never, false>;
|
|
314
336
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { Nullable } from '@fundamental-ngx/cdk/utils';
|
|
3
|
+
import { MobileMode } from '@fundamental-ngx/core/mobile-mode';
|
|
4
|
+
export interface DateTimePicker<D> extends MobileMode {
|
|
5
|
+
date: Nullable<D>;
|
|
6
|
+
isOpenChange: EventEmitter<boolean>;
|
|
7
|
+
dialogApprove(): void;
|
|
8
|
+
dialogDismiss(value: Nullable<D>): void;
|
|
9
|
+
}
|
|
@@ -1,20 +1,8 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
2
|
import * as i1 from "./datetime-picker.component";
|
|
3
|
-
import * as i2 from "
|
|
4
|
-
import * as i3 from "@fundamental-ngx/core/icon";
|
|
5
|
-
import * as i4 from "@fundamental-ngx/core/popover";
|
|
6
|
-
import * as i5 from "@fundamental-ngx/core/calendar";
|
|
7
|
-
import * as i6 from "@angular/forms";
|
|
8
|
-
import * as i7 from "@fundamental-ngx/core/time";
|
|
9
|
-
import * as i8 from "@fundamental-ngx/core/input-group";
|
|
10
|
-
import * as i9 from "@fundamental-ngx/core/button";
|
|
11
|
-
import * as i10 from "@fundamental-ngx/i18n";
|
|
12
|
-
import * as i11 from "@fundamental-ngx/core/bar";
|
|
13
|
-
import * as i12 from "@fundamental-ngx/core/segmented-button";
|
|
14
|
-
import * as i13 from "@fundamental-ngx/core/form";
|
|
15
|
-
import * as i14 from "@fundamental-ngx/core/content-density";
|
|
3
|
+
import * as i2 from "./datetime-picker-mobile/datetime-picker-mobile.component";
|
|
16
4
|
export declare class DatetimePickerModule {
|
|
17
5
|
static ɵfac: i0.ɵɵFactoryDeclaration<DatetimePickerModule, never>;
|
|
18
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<DatetimePickerModule, [typeof i1.DatetimePickerComponent
|
|
6
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<DatetimePickerModule, never, [typeof i1.DatetimePickerComponent, typeof i2.DatetimePickerMobileComponent], [typeof i1.DatetimePickerComponent, typeof i2.DatetimePickerMobileComponent]>;
|
|
19
7
|
static ɵinj: i0.ɵɵInjectorDeclaration<DatetimePickerModule>;
|
|
20
8
|
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import { DateTimePicker } from './datetime-picker.model';
|
|
3
|
+
import { MobileModeConfig } from '@fundamental-ngx/core/mobile-mode';
|
|
4
|
+
export declare const FD_DATETIME_PICKER_COMPONENT: InjectionToken<DateTimePicker<any>>;
|
|
5
|
+
export declare const FD_DATETIME_PICKER_MOBILE_CONFIG: InjectionToken<MobileModeConfig>;
|
|
@@ -18,7 +18,7 @@ export class CalendarCloseButtonDirective {
|
|
|
18
18
|
this._calendarI18nLabels = _calendarI18nLabels;
|
|
19
19
|
}
|
|
20
20
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: CalendarCloseButtonDirective, deps: [{ token: 'aria-label', attribute: true }, { token: 'title', attribute: true }, { token: i1.CalendarI18nLabels }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
21
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.0", type: CalendarCloseButtonDirective, selector: "[fd-calendar-close-button]", host: { properties: { "attr.aria-label": "_ariaLabel", "attr.title": "_title" }, classAttribute: "fd-calendar__close-button" }, ngImport: i0 }); }
|
|
21
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.0", type: CalendarCloseButtonDirective, isStandalone: true, selector: "[fd-calendar-close-button]", host: { properties: { "attr.aria-label": "_ariaLabel", "attr.title": "_title" }, classAttribute: "fd-calendar__close-button" }, ngImport: i0 }); }
|
|
22
22
|
}
|
|
23
23
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: CalendarCloseButtonDirective, decorators: [{
|
|
24
24
|
type: Directive,
|
|
@@ -29,7 +29,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
29
29
|
class: 'fd-calendar__close-button',
|
|
30
30
|
'[attr.aria-label]': '_ariaLabel',
|
|
31
31
|
'[attr.title]': '_title'
|
|
32
|
-
}
|
|
32
|
+
},
|
|
33
|
+
standalone: true
|
|
33
34
|
}]
|
|
34
35
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
35
36
|
type: Attribute,
|
|
@@ -38,4 +39,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
38
39
|
type: Attribute,
|
|
39
40
|
args: ['title']
|
|
40
41
|
}] }, { type: i1.CalendarI18nLabels }]; } });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItZGlyZWN0aXZlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLWRpcmVjdGl2ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQVlqRSxNQUFNLE9BQU8sNEJBQTRCO0lBQ3JDLGNBQWM7SUFDZCxJQUFJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLENBQUM7SUFDbEYsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGtCQUFrQixDQUFDO0lBQzlFLENBQUM7SUFFRCxjQUFjO0lBQ2QsWUFDcUMsa0JBQTBCLEVBQy9CLGNBQXNCLEVBQzFDLG1CQUF1QztRQUZkLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBUTtRQUMvQixtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUMxQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO0lBQ2hELENBQUM7OEdBaEJLLDRCQUE0QixrQkFhdEIsWUFBWSw4QkFDWixPQUFPO2tHQWRiLDRCQUE0Qjs7MkZBQTVCLDRCQUE0QjtrQkFWeEMsU0FBUzttQkFBQztvQkFDUCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLElBQUksRUFBRTt3QkFDRixLQUFLLEVBQUUsMkJBQTJCO3dCQUNsQyxtQkFBbUIsRUFBRSxZQUFZO3dCQUNqQyxjQUFjLEVBQUUsUUFBUTtxQkFDM0I7b0JBQ0QsVUFBVSxFQUFFLElBQUk7aUJBQ25COzswQkFjUSxTQUFTOzJCQUFDLFlBQVk7OzBCQUN0QixTQUFTOzJCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDYWxlbmRhckkxOG5MYWJlbHMgfSBmcm9tICcuL2kxOG4vY2FsZW5kYXItaTE4bi1sYWJlbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnW2ZkLWNhbGVuZGFyLWNsb3NlLWJ1dHRvbl0nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdmZC1jYWxlbmRhcl9fY2xvc2UtYnV0dG9uJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtbGFiZWxdJzogJ19hcmlhTGFiZWwnLFxuICAgICAgICAnW2F0dHIudGl0bGVdJzogJ190aXRsZSdcbiAgICB9LFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJDbG9zZUJ1dHRvbkRpcmVjdGl2ZSB7XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2FyaWFMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fb3JpZ2luYWxBcmlhTGFiZWwgfHwgdGhpcy5fY2FsZW5kYXJJMThuTGFiZWxzLmNsb3NlQ2FsZW5kYXJMYWJlbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfdGl0bGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29yaWdpbmFsVGl0bGUgfHwgdGhpcy5fY2FsZW5kYXJJMThuTGFiZWxzLmNsb3NlQ2FsZW5kYXJMYWJlbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAQXR0cmlidXRlKCdhcmlhLWxhYmVsJykgcHJpdmF0ZSBfb3JpZ2luYWxBcmlhTGFiZWw6IHN0cmluZyxcbiAgICAgICAgQEF0dHJpYnV0ZSgndGl0bGUnKSBwcml2YXRlIF9vcmlnaW5hbFRpdGxlOiBzdHJpbmcsXG4gICAgICAgIHByaXZhdGUgX2NhbGVuZGFySTE4bkxhYmVsczogQ2FsZW5kYXJJMThuTGFiZWxzXG4gICAgKSB7fVxufVxuIl19
|
|
@@ -4,13 +4,13 @@ import { Subject } from 'rxjs';
|
|
|
4
4
|
import { DatetimeAdapter } from '@fundamental-ngx/core/datetime';
|
|
5
5
|
import { CalendarI18nLabels } from '../i18n/calendar-i18n-labels';
|
|
6
6
|
import { CalendarService } from '../calendar.service';
|
|
7
|
+
import { NgIf } from '@angular/common';
|
|
8
|
+
import { ButtonModule } from '@fundamental-ngx/core/button';
|
|
7
9
|
import * as i0 from "@angular/core";
|
|
8
10
|
import * as i1 from "../i18n/calendar-i18n-labels";
|
|
9
11
|
import * as i2 from "../calendar.service";
|
|
10
12
|
import * as i3 from "@fundamental-ngx/core/datetime";
|
|
11
|
-
import * as i4 from "@
|
|
12
|
-
import * as i5 from "@fundamental-ngx/core/button";
|
|
13
|
-
import * as i6 from "../calendar-directives";
|
|
13
|
+
import * as i4 from "@fundamental-ngx/core/button";
|
|
14
14
|
/**
|
|
15
15
|
* Internal use only.
|
|
16
16
|
* Header of the calendar component.
|
|
@@ -107,7 +107,7 @@ export class CalendarHeaderComponent {
|
|
|
107
107
|
this._changeDetRef = _changeDetRef;
|
|
108
108
|
this._calendarService = _calendarService;
|
|
109
109
|
this._dateTimeAdapter = _dateTimeAdapter;
|
|
110
|
-
/** Whether
|
|
110
|
+
/** Whether calendar should be rendered in mobile landscape mode. */
|
|
111
111
|
this.mobileLandscape = false;
|
|
112
112
|
/** Event emitted when the active view should change. */
|
|
113
113
|
this.activeViewChange = new EventEmitter();
|
|
@@ -115,8 +115,6 @@ export class CalendarHeaderComponent {
|
|
|
115
115
|
this.previousClicked = new EventEmitter();
|
|
116
116
|
/** Event emitted when the next button is clicked. */
|
|
117
117
|
this.nextClicked = new EventEmitter();
|
|
118
|
-
/** Event thrown, when the close button is clicked */
|
|
119
|
-
this.closeClicked = new EventEmitter();
|
|
120
118
|
/** An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing) */
|
|
121
119
|
this._onDestroy$ = new Subject();
|
|
122
120
|
/** Month names */
|
|
@@ -161,10 +159,6 @@ export class CalendarHeaderComponent {
|
|
|
161
159
|
this.activeViewChange.emit(this.activeView);
|
|
162
160
|
}
|
|
163
161
|
/** @hidden */
|
|
164
|
-
_emitClose() {
|
|
165
|
-
this.closeClicked.emit();
|
|
166
|
-
}
|
|
167
|
-
/** @hidden */
|
|
168
162
|
_listenToLocaleChanges() {
|
|
169
163
|
this._dateTimeAdapter.localeChanges.pipe(takeUntil(this._onDestroy$)).subscribe(() => {
|
|
170
164
|
this._calculateMonthNames();
|
|
@@ -242,13 +236,13 @@ export class CalendarHeaderComponent {
|
|
|
242
236
|
return this._dateTimeAdapter.getYearName(this._dateTimeAdapter.createDate(year, 1, 1));
|
|
243
237
|
}
|
|
244
238
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: CalendarHeaderComponent, deps: [{ token: i1.CalendarI18nLabels }, { token: i0.ChangeDetectorRef }, { token: i2.CalendarService }, { token: i3.DatetimeAdapter }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
245
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: CalendarHeaderComponent, selector: "fd-calendar-header", inputs: { activeView: "activeView", currentlyDisplayed: "currentlyDisplayed", previousButtonDisabled: "previousButtonDisabled", nextButtonDisabled: "nextButtonDisabled", calendarYearGrid: "calendarYearGrid", id: "id", mobileLandscape: "mobileLandscape" }, outputs: { activeViewChange: "activeViewChange", previousClicked: "previousClicked", nextClicked: "nextClicked"
|
|
239
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: CalendarHeaderComponent, isStandalone: true, selector: "fd-calendar-header", inputs: { activeView: "activeView", currentlyDisplayed: "currentlyDisplayed", previousButtonDisabled: "previousButtonDisabled", nextButtonDisabled: "nextButtonDisabled", calendarYearGrid: "calendarYearGrid", id: "id", mobileLandscape: "mobileLandscape" }, outputs: { activeViewChange: "activeViewChange", previousClicked: "previousClicked", nextClicked: "nextClicked" }, host: { properties: { "attr.id": "viewId" } }, viewQueries: [{ propertyName: "_prevButtonComponent", first: true, predicate: ["prevButton"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<header class=\"fd-calendar__navigation\" [class.fd-calendar__navigation--main]=\"mobileLandscape\">\n <div class=\"fd-calendar__action fd-calendar__action--arrow-left\">\n <button\n #prevButton\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-left\"\n [attr.id]=\"_prevButtonId\"\n [disabled]=\"previousButtonDisabled\"\n [attr.title]=\"previousAriaLabel\"\n [ariaLabel]=\"previousAriaLabel\"\n type=\"button\"\n (click)=\"previousClicked.emit()\"\n ></button>\n </div>\n <ng-container *ngIf=\"isOnDayView || isOnMonthView\">\n <div class=\"fd-calendar__action\">\n <!-- Select month button -->\n <button\n fd-button\n type=\"button\"\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_monthButtonLabelId + ' ' + _selectMonthButtonAriaLabelId\"\n [attr.data-fd-calendar-month]=\"currentlyDisplayed.month\"\n (click)=\"_processViewChange('month', $event)\"\n >\n <span [attr.id]=\"_monthButtonLabelId\">{{ selectMonthLabel }}</span>\n </button>\n </div>\n <div class=\"fd-calendar__action\">\n <!-- Select year button -->\n <button\n fd-button\n type=\"button\"\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_yearButtonLabelId + ' ' + _selectYearButtonAriaLabelId\"\n [attr.data-fd-calendar-year]=\"currentlyDisplayed.year\"\n (click)=\"_processViewChange('year', $event)\"\n >\n <span [attr.id]=\"_yearButtonLabelId\">{{ selectYearLabel }}</span>\n </button>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isOnAggregatedYearsView || isOnYearView\">\n <div class=\"fd-calendar__action\" aria-live=\"polite\">\n <button\n fd-button\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_yearsRangeButtonLabelId + ' ' + _selectYearsRangeButtonAriaLabelId\"\n (click)=\"_processViewChange('aggregatedYear', $event)\"\n type=\"button\"\n >\n <span [attr.id]=\"_yearsRangeButtonLabelId\">{{ selectAggregatedYearLabel }}</span>\n </button>\n </div>\n </ng-container>\n <div class=\"fd-calendar__action fd-calendar__action--arrow-right\">\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-right\"\n [attr.id]=\"_nextButtonId\"\n [disabled]=\"nextButtonDisabled\"\n [attr.title]=\"nextAriaLabel\"\n [ariaLabel]=\"nextAriaLabel\"\n (click)=\"nextClicked.emit()\"\n type=\"button\"\n ></button>\n </div>\n</header>\n\n<!-- Hidden elements for aria purposes -->\n<div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_selectMonthButtonAriaLabelId\">{{ selectMonthAriaLabel }}</div>\n <div [attr.id]=\"_selectYearButtonAriaLabelId\">{{ selectYearAriaLabel }}</div>\n <div [attr.id]=\"_selectYearsRangeButtonAriaLabelId\">{{ selectAggregatedYearAriaLabel }}</div>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i4.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
246
240
|
}
|
|
247
241
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: CalendarHeaderComponent, decorators: [{
|
|
248
242
|
type: Component,
|
|
249
243
|
args: [{ selector: 'fd-calendar-header', encapsulation: ViewEncapsulation.None, host: {
|
|
250
244
|
'[attr.id]': 'viewId'
|
|
251
|
-
}, changeDetection: ChangeDetectionStrategy.OnPush, template: "<header class=\"fd-
|
|
245
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ButtonModule, NgIf], template: "<header class=\"fd-calendar__navigation\" [class.fd-calendar__navigation--main]=\"mobileLandscape\">\n <div class=\"fd-calendar__action fd-calendar__action--arrow-left\">\n <button\n #prevButton\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-left\"\n [attr.id]=\"_prevButtonId\"\n [disabled]=\"previousButtonDisabled\"\n [attr.title]=\"previousAriaLabel\"\n [ariaLabel]=\"previousAriaLabel\"\n type=\"button\"\n (click)=\"previousClicked.emit()\"\n ></button>\n </div>\n <ng-container *ngIf=\"isOnDayView || isOnMonthView\">\n <div class=\"fd-calendar__action\">\n <!-- Select month button -->\n <button\n fd-button\n type=\"button\"\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_monthButtonLabelId + ' ' + _selectMonthButtonAriaLabelId\"\n [attr.data-fd-calendar-month]=\"currentlyDisplayed.month\"\n (click)=\"_processViewChange('month', $event)\"\n >\n <span [attr.id]=\"_monthButtonLabelId\">{{ selectMonthLabel }}</span>\n </button>\n </div>\n <div class=\"fd-calendar__action\">\n <!-- Select year button -->\n <button\n fd-button\n type=\"button\"\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_yearButtonLabelId + ' ' + _selectYearButtonAriaLabelId\"\n [attr.data-fd-calendar-year]=\"currentlyDisplayed.year\"\n (click)=\"_processViewChange('year', $event)\"\n >\n <span [attr.id]=\"_yearButtonLabelId\">{{ selectYearLabel }}</span>\n </button>\n </div>\n </ng-container>\n <ng-container *ngIf=\"isOnAggregatedYearsView || isOnYearView\">\n <div class=\"fd-calendar__action\" aria-live=\"polite\">\n <button\n fd-button\n fdType=\"transparent\"\n [attr.aria-labelledby]=\"_yearsRangeButtonLabelId + ' ' + _selectYearsRangeButtonAriaLabelId\"\n (click)=\"_processViewChange('aggregatedYear', $event)\"\n type=\"button\"\n >\n <span [attr.id]=\"_yearsRangeButtonLabelId\">{{ selectAggregatedYearLabel }}</span>\n </button>\n </div>\n </ng-container>\n <div class=\"fd-calendar__action fd-calendar__action--arrow-right\">\n <button\n fd-button\n fdType=\"transparent\"\n glyph=\"slim-arrow-right\"\n [attr.id]=\"_nextButtonId\"\n [disabled]=\"nextButtonDisabled\"\n [attr.title]=\"nextAriaLabel\"\n [ariaLabel]=\"nextAriaLabel\"\n (click)=\"nextClicked.emit()\"\n type=\"button\"\n ></button>\n </div>\n</header>\n\n<!-- Hidden elements for aria purposes -->\n<div hidden aria-hidden=\"true\">\n <div [attr.id]=\"_selectMonthButtonAriaLabelId\">{{ selectMonthAriaLabel }}</div>\n <div [attr.id]=\"_selectYearButtonAriaLabelId\">{{ selectYearAriaLabel }}</div>\n <div [attr.id]=\"_selectYearsRangeButtonAriaLabelId\">{{ selectAggregatedYearAriaLabel }}</div>\n</div>\n" }]
|
|
252
246
|
}], ctorParameters: function () { return [{ type: i1.CalendarI18nLabels }, { type: i0.ChangeDetectorRef }, { type: i2.CalendarService }, { type: i3.DatetimeAdapter }]; }, propDecorators: { activeView: [{
|
|
253
247
|
type: Input
|
|
254
248
|
}], currentlyDisplayed: [{
|
|
@@ -269,10 +263,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
|
|
|
269
263
|
type: Output
|
|
270
264
|
}], nextClicked: [{
|
|
271
265
|
type: Output
|
|
272
|
-
}], closeClicked: [{
|
|
273
|
-
type: Output
|
|
274
266
|
}], _prevButtonComponent: [{
|
|
275
267
|
type: ViewChild,
|
|
276
268
|
args: ['prevButton', { read: ElementRef }]
|
|
277
269
|
}] } });
|
|
278
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLWhlYWRlci9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXItaGVhZGVyL2NhbGVuZGFyLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWpFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBSWxFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7QUFFdEQ7OztHQUdHO0FBV0gsTUFBTSxPQUFPLHVCQUF1QjtJQWlCaEM7O09BRUc7SUFDSCxJQUNJLGdCQUFnQixDQUFDLFFBQTBCO1FBQzNDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxtQ0FBbUMsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFrREQsOERBQThEO0lBQzlELElBQUksdUJBQXVCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFVBQVUsS0FBSyxn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O3VCQUFDLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IERhdGV0aW1lQWRhcHRlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kYXRldGltZSc7XG5cbmltcG9ydCB7IENhbGVuZGFySTE4bkxhYmVscyB9IGZyb20gJy4uL2kxOG4vY2FsZW5kYXItaTE4bi1sYWJlbHMnO1xuaW1wb3J0IHsgRmRDYWxlbmRhclZpZXcgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBDYWxlbmRhckN1cnJlbnQgfSBmcm9tICcuLi9tb2RlbHMvY2FsZW5kYXItY3VycmVudCc7XG5pbXBvcnQgeyBDYWxlbmRhclllYXJHcmlkIH0gZnJvbSAnLi4vbW9kZWxzL2NhbGVuZGFyLXllYXItZ3JpZCc7XG5pbXBvcnQgeyBDYWxlbmRhclNlcnZpY2UgfSBmcm9tICcuLi9jYWxlbmRhci5zZXJ2aWNlJztcblxuLyoqXG4gKiBJbnRlcm5hbCB1c2Ugb25seS5cbiAqIEhlYWRlciBvZiB0aGUgY2FsZW5kYXIgY29tcG9uZW50LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLWNhbGVuZGFyLWhlYWRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbYXR0ci5pZF0nOiAndmlld0lkJ1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJIZWFkZXJDb21wb25lbnQ8RD4gaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICAvKiogQ3VycmVudGx5IGFjdGl2ZSB2aWV3LiBOZWVkZWQgZm9yIGExMXkgbGFiZWxzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWN0aXZlVmlldzogRmRDYWxlbmRhclZpZXc7XG5cbiAgICAvKiogQ3VycmVudGx5IGRpc3BsYXllZCBkYXRlIG9uIHRoZSBjYWxlbmRhci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGN1cnJlbnRseURpc3BsYXllZDogQ2FsZW5kYXJDdXJyZW50O1xuXG4gICAgLyoqIHdoZXRoZXIgcHJldmlvdXMgbmF2aWdhdGlvbiBidXR0b24gc2hvdWxkIGJlIGRpc2FibGVkIGluIHRoZSBoZWFkZXIuICovXG4gICAgQElucHV0KClcbiAgICBwcmV2aW91c0J1dHRvbkRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgLyoqIHdoZXRoZXIgbmV4dCBuYXZpZ2F0aW9uIGJ1dHRvbiBzaG91bGQgYmUgZGlzYWJsZWQgaW4gdGhlIGhlYWRlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIG5leHRCdXR0b25EaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIE9iamVjdCB0byBjdXN0b21pemUgeWVhciBncmlkXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY2FsZW5kYXJZZWFyR3JpZCh5ZWFyR3JpZDogQ2FsZW5kYXJZZWFyR3JpZCkge1xuICAgICAgICB0aGlzLl9hbW91bnRPZlllYXJzUGVyUGVyaW9kID0geWVhckdyaWQuY29scyAqIHllYXJHcmlkLnJvd3MgLSAxO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVTZWxlY3RBZ2dyZWdhdGVkWWVhckxhYmVsKCk7XG4gICAgfVxuXG4gICAgLyoqIENhbGVuZGFyIElEICovXG4gICAgQElucHV0KClcbiAgICBpZDogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgY2xvc2UgYnV0dG9uIHNob3VsZCBiZSBzaG93biAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9iaWxlTGFuZHNjYXBlID0gZmFsc2U7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBhY3RpdmUgdmlldyBzaG91bGQgY2hhbmdlLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGFjdGl2ZVZpZXdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxGZENhbGVuZGFyVmlldz4gPSBuZXcgRXZlbnRFbWl0dGVyPEZkQ2FsZW5kYXJWaWV3PigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgcHJldmlvdXMgYnV0dG9uIGlzIGNsaWNrZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgcHJldmlvdXNDbGlja2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBuZXh0IGJ1dHRvbiBpcyBjbGlja2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IG5leHRDbGlja2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgICAvKiogRXZlbnQgdGhyb3duLCB3aGVuIHRoZSBjbG9zZSBidXR0b24gaXMgY2xpY2tlZCAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IGNsb3NlQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSBwcmV2aW91cyBidXR0b24uIERlcGVuZHMgb24gdGhlIGFjdGl2ZSB2aWV3LiAqL1xuICAgIHByZXZpb3VzQXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlIG5leHQgYnV0dG9uLiBEZXBlbmRzIG9uIHRoZSBhY3RpdmUgdmlldy4gKi9cbiAgICBuZXh0QXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQnV0dG9uIGFyaWEgbGFiZWwgdG8gb3BlbiBtb250aCBzZWxlY3Rpb24gdmlldy4gKi9cbiAgICBzZWxlY3RNb250aEFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEJ1dHRvbiBhcmlhIGxhYmVsIHRvIG9wZW4geWVhciBzZWxlY3Rpb24gdmlldy4gKi9cbiAgICBzZWxlY3RZZWFyQXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQnV0dG9uIGFyaWEgbGFiZWwgdG8gb3BlbiBhZ2dyZWdhdGVkIHllYXJzIHNlbGVjdGlvbiB2aWV3LiAqL1xuICAgIHNlbGVjdEFnZ3JlZ2F0ZWRZZWFyQXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQnV0dG9uIGxhYmVsIHRvIG9wZW4gbW9udGggc2VsZWN0aW9uIHZpZXcuICovXG4gICAgc2VsZWN0TW9udGhMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEJ1dHRvbiBsYWJlbCB0byBvcGVuIHllYXIgc2VsZWN0aW9uIHZpZXcuICovXG4gICAgc2VsZWN0WWVhckxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQnV0dG9uIGxhYmVsIHRvIG9wZW4gYWdncmVnYXRlZCB5ZWFycyBzZWxlY3Rpb24gdmlldy4gKi9cbiAgICBzZWxlY3RBZ2dyZWdhdGVkWWVhckxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogR2V0IGluZm9ybWF0aW9uIGlzIGNhbGVuZGFyIGlzIG9uIGFnZ3JlZ2F0ZWQgeWVhcnMgdmlldyAqL1xuICAgIGdldCBpc09uQWdncmVnYXRlZFllYXJzVmlldygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVmlldyA9PT0gJ2FnZ3JlZ2F0ZWRZZWFyJztcbiAgICB9XG5cbiAgICAvKiogR2V0IGluZm9ybWF0aW9uIGlzIGNhbGVuZGFyIGlzIG9uIHllYXIgdmlldyAqL1xuICAgIGdldCBpc09uWWVhclZpZXcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZVZpZXcgPT09ICd5ZWFyJztcbiAgICB9XG5cbiAgICAvKiogR2V0IGluZm9ybWF0aW9uIGlzIGNhbGVuZGFyIGlzIG9uIG1vbnRoIHZpZXcgKi9cbiAgICBnZXQgaXNPbk1vbnRoVmlldygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVmlldyA9PT0gJ21vbnRoJztcbiAgICB9XG5cbiAgICAvKiogR2V0IGluZm9ybWF0aW9uIGlzIGNhbGVuZGFyIGlzIG9uIGRheSB2aWV3ICovXG4gICAgZ2V0IGlzT25EYXlWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVWaWV3ID09PSAnZGF5JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wb25lbnQgaWRcbiAgICAgKi9cbiAgICBnZXQgdmlld0lkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlkICsgJy1oZWFkZXInO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBQcmV2aW91cyBidXR0b24gaWRcbiAgICAgKi9cbiAgICBnZXQgX3ByZXZCdXR0b25JZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLWxlZnQtYXJyb3cnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBOZXh0IGJ1dHRvbiBpZFxuICAgICAqL1xuICAgIGdldCBfbmV4dEJ1dHRvbklkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJZCArICctcmlnaHQtYXJyb3cnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNb250aCBsYWJlbCBpZFxuICAgICAqL1xuICAgIGdldCBfbW9udGhCdXR0b25MYWJlbElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJZCArICctbW9udGgtbGFiZWwnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBTZWxlY3QgbW9udGggYXJpYSBsYWJlbCBpZFxuICAgICAqL1xuICAgIGdldCBfc2VsZWN0TW9udGhCdXR0b25BcmlhTGFiZWxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLXNlbGVjdC1tb250aC1hcmlhLWxhYmVsJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogWWVhciBsYWJlbCBpZFxuICAgICAqL1xuICAgIGdldCBfeWVhckJ1dHRvbkxhYmVsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy15ZWFyLWxhYmVsJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogU2VsZWN0IHllYXIgYXJpYSBsYWJlbCBpZFxuICAgICAqL1xuICAgIGdldCBfc2VsZWN0WWVhckJ1dHRvbkFyaWFMYWJlbElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJZCArICctc2VsZWN0LXllYXItYXJpYS1sYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFllYXJzIHJhbmdlIGxhYmVsIGlkXG4gICAgICovXG4gICAgZ2V0IF95ZWFyc1JhbmdlQnV0dG9uTGFiZWxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLXllYXJzLXJhbmdlLWxhYmVsJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogU2VsZWN0IHllYXJzIHJhbmdlIGFyaWEgbGFiZWwgaWRcbiAgICAgKi9cbiAgICBnZXQgX3NlbGVjdFllYXJzUmFuZ2VCdXR0b25BcmlhTGFiZWxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLXNlbGVjdC15ZWFycy1yYW5nZS1hcmlhLWxhYmVsJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3ByZXZCdXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBfcHJldkJ1dHRvbkNvbXBvbmVudDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGRhdGEgc3RyZWFtIHVwb24gY29tcG9uZW504oCZcyBkZXN0cnVjdGlvbiAoZm9yIHVuc3Vic2NyaWJpbmcpICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIE1vbnRoIG5hbWVzICovXG4gICAgcHJpdmF0ZSBfbW9udGhOYW1lczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgYW1vdW50IG9mIHllYXJzIGRpc3BsYXllZCBhdCBvbmNlIG9uIHllYXIgdmlldyAgKi9cbiAgICBwcml2YXRlIF9hbW91bnRPZlllYXJzUGVyUGVyaW9kID0gMTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2NhbGVuZGFySTE4bkxhYmVsczogQ2FsZW5kYXJJMThuTGFiZWxzLFxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9jYWxlbmRhclNlcnZpY2U6IENhbGVuZGFyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfZGF0ZVRpbWVBZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD5cbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAoY2hhbmdlcy5jdXJyZW50bHlEaXNwbGF5ZWQgJiYgIWNoYW5nZXMuY3VycmVudGx5RGlzcGxheWVkLmZpcnN0Q2hhbmdlKSB8fFxuICAgICAgICAgICAgKGNoYW5nZXMuYWN0aXZlVmlldyAmJiAhY2hhbmdlcy5hY3RpdmVWaWV3LmZpcnN0Q2hhbmdlKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUxhYmVscygpO1xuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlQXJpYUxhYmVscygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLmxlZnRBcnJvd0lkID0gdGhpcy5fcHJldkJ1dHRvbklkO1xuXG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZU1vbnRoTmFtZXMoKTtcblxuICAgICAgICB0aGlzLl9jYWxjdWxhdGVMYWJlbHMoKTtcblxuICAgICAgICB0aGlzLl9jYWxjdWxhdGVBcmlhTGFiZWxzKCk7XG5cbiAgICAgICAgdGhpcy5fbGlzdGVuVG9Mb2NhbGVDaGFuZ2VzKCk7XG5cbiAgICAgICAgdGhpcy5fbGlzdGVuVG9DYWxlbmRhckxhYmVsc0NoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb2N1cyBvbiBmb2N1c2FibGUgY29udHJvbCB3aXRoaW4gdGhlIGhlYWRlclxuICAgICAqL1xuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wcmV2QnV0dG9uQ29tcG9uZW50Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcHJvY2Vzc1ZpZXdDaGFuZ2UodHlwZTogRmRDYWxlbmRhclZpZXcsIGV2ZW50PzogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gdHlwZSA9PT0gdGhpcy5hY3RpdmVWaWV3ID8gJ2RheScgOiB0eXBlO1xuXG4gICAgICAgIHRoaXMuYWN0aXZlVmlld0NoYW5nZS5lbWl0KHRoaXMuYWN0aXZlVmlldyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZW1pdENsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsb3NlQ2xpY2tlZC5lbWl0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Ub0xvY2FsZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5sb2NhbGVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlTW9udGhOYW1lcygpO1xuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlTGFiZWxzKCk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9DYWxlbmRhckxhYmVsc0NoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGVuZGFySTE4bkxhYmVscy5sYWJlbHNDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVBcmlhTGFiZWxzKCk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlQXJpYUxhYmVscygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlUHJldmlvdXNBcmlhTGFiZWwoKTtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlTmV4dEFyaWFMYWJlbCgpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVTZWxlY3RNb250aEFyaWFMYWJlbCgpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVTZWxlY3RZZWFyQXJpYUxhYmVsKCk7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVNlbGVjdEFnZ3JlZ2F0ZWRZZWFyQXJpYUxhYmVsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVMYWJlbHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVNlbGVjdE1vbnRoTGFiZWwoKTtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlU2VsZWN0WWVhckxhYmVsKCk7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVNlbGVjdEFnZ3JlZ2F0ZWRZZWFyTGFiZWwoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVByZXZpb3VzQXJpYUxhYmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByZXZpb3VzQXJpYUxhYmVsID0gdGhpcy5pc09uRGF5Vmlld1xuICAgICAgICAgICAgPyB0aGlzLl9jYWxlbmRhckkxOG5MYWJlbHMucHJldmlvdXNNb250aExhYmVsXG4gICAgICAgICAgICA6IHRoaXMuX2NhbGVuZGFySTE4bkxhYmVscy5wcmV2aW91c1llYXJMYWJlbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZU5leHRBcmlhTGFiZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmV4dEFyaWFMYWJlbCA9IHRoaXMuaXNPbkRheVZpZXdcbiAgICAgICAgICAgID8gdGhpcy5fY2FsZW5kYXJJMThuTGFiZWxzLm5leHRNb250aExhYmVsXG4gICAgICAgICAgICA6IHRoaXMuX2NhbGVuZGFySTE4bkxhYmVscy5uZXh0WWVhckxhYmVsO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVNlbGVjdE1vbnRoQXJpYUxhYmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdE1vbnRoQXJpYUxhYmVsID0gdGhpcy5pc09uTW9udGhWaWV3XG4gICAgICAgICAgICA/IHRoaXMuX2NhbGVuZGFySTE4bkxhYmVscy5kYXRlU2VsZWN0aW9uTGFiZWxcbiAgICAgICAgICAgIDogdGhpcy5fY2FsZW5kYXJJMThuTGFiZWxzLm1vbnRoU2VsZWN0aW9uTGFiZWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVTZWxlY3RZZWFyQXJpYUxhYmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdFllYXJBcmlhTGFiZWwgPSB0aGlzLl9jYWxlbmRhckkxOG5MYWJlbHMueWVhclNlbGVjdGlvbkxhYmVsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlU2VsZWN0QWdncmVnYXRlZFllYXJBcmlhTGFiZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0QWdncmVnYXRlZFllYXJBcmlhTGFiZWwgPSB0aGlzLmlzT25BZ2dyZWdhdGVkWWVhcnNWaWV3XG4gICAgICAgICAgICA/IHRoaXMuX2NhbGVuZGFySTE4bkxhYmVscy5kYXRlU2VsZWN0aW9uTGFiZWxcbiAgICAgICAgICAgIDogdGhpcy5fY2FsZW5kYXJJMThuTGFiZWxzLnllYXJzUmFuZ2VTZWxlY3Rpb25MYWJlbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVNlbGVjdE1vbnRoTGFiZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0TW9udGhMYWJlbCA9IHRoaXMuX21vbnRoTmFtZXNbdGhpcy5jdXJyZW50bHlEaXNwbGF5ZWQubW9udGggLSAxXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVNlbGVjdFllYXJMYWJlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RZZWFyTGFiZWwgPSB0aGlzLl9nZXRZZWFyTmFtZSh0aGlzLmN1cnJlbnRseURpc3BsYXllZC55ZWFyKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVNlbGVjdEFnZ3JlZ2F0ZWRZZWFyTGFiZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0QWdncmVnYXRlZFllYXJMYWJlbCA9IGAke3RoaXMuX2dldFllYXJOYW1lKHRoaXMuY3VycmVudGx5RGlzcGxheWVkLnllYXIpfS0ke3RoaXMuX2dldFllYXJOYW1lKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50bHlEaXNwbGF5ZWQueWVhciArIHRoaXMuX2Ftb3VudE9mWWVhcnNQZXJQZXJpb2RcbiAgICAgICAgKX1gO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlTW9udGhOYW1lcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbW9udGhOYW1lcyA9IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRNb250aE5hbWVzKCdsb25nJyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRZZWFyTmFtZSh5ZWFyOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldFllYXJOYW1lKHRoaXMuX2RhdGVUaW1lQWRhcHRlci5jcmVhdGVEYXRlKHllYXIsIDEsIDEpKTtcbiAgICB9XG59XG4iLCI8aGVhZGVyIGNsYXNzPVwiZmQtY2FsZW5kYXJfX2hlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJmZC1jYWxlbmRhcl9fbmF2aWdhdGlvblwiIFtjbGFzcy5mZC1jYWxlbmRhcl9fbmF2aWdhdGlvbi0tbWFpbl09XCJtb2JpbGVMYW5kc2NhcGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLWNhbGVuZGFyX19hY3Rpb24gZmQtY2FsZW5kYXJfX2FjdGlvbi0tYXJyb3ctbGVmdFwiPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICNwcmV2QnV0dG9uXG4gICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgIGdseXBoPVwic2xpbS1hcnJvdy1sZWZ0XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJfcHJldkJ1dHRvbklkXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJldmlvdXNCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwicHJldmlvdXNBcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgIFthcmlhTGFiZWxdPVwicHJldmlvdXNBcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJwcmV2aW91c0NsaWNrZWQuZW1pdCgpXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc09uRGF5VmlldyB8fCBpc09uTW9udGhWaWV3XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtY2FsZW5kYXJfX2FjdGlvblwiPlxuICAgICAgICAgICAgICAgIDwhLS0gU2VsZWN0IG1vbnRoIGJ1dHRvbiAtLT5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiX21vbnRoQnV0dG9uTGFiZWxJZCArICcgJyArIF9zZWxlY3RNb250aEJ1dHRvbkFyaWFMYWJlbElkXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1mZC1jYWxlbmRhci1tb250aF09XCJjdXJyZW50bHlEaXNwbGF5ZWQubW9udGhcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3Byb2Nlc3NWaWV3Q2hhbmdlKCdtb250aCcsICRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2F0dHIuaWRdPVwiX21vbnRoQnV0dG9uTGFiZWxJZFwiPnt7IHNlbGVjdE1vbnRoTGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC1jYWxlbmRhcl9fYWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBTZWxlY3QgeWVhciBidXR0b24gLS0+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIl95ZWFyQnV0dG9uTGFiZWxJZCArICcgJyArIF9zZWxlY3RZZWFyQnV0dG9uQXJpYUxhYmVsSWRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWZkLWNhbGVuZGFyLXllYXJdPVwiY3VycmVudGx5RGlzcGxheWVkLnllYXJcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3Byb2Nlc3NWaWV3Q2hhbmdlKCd5ZWFyJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbYXR0ci5pZF09XCJfeWVhckJ1dHRvbkxhYmVsSWRcIj57eyBzZWxlY3RZZWFyTGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc09uQWdncmVnYXRlZFllYXJzVmlldyB8fCBpc09uWWVhclZpZXdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmZC1jYWxlbmRhcl9fYWN0aW9uXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiX3llYXJzUmFuZ2VCdXR0b25MYWJlbElkICsgJyAnICsgX3NlbGVjdFllYXJzUmFuZ2VCdXR0b25BcmlhTGFiZWxJZFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfcHJvY2Vzc1ZpZXdDaGFuZ2UoJ2FnZ3JlZ2F0ZWRZZWFyJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2F0dHIuaWRdPVwiX3llYXJzUmFuZ2VCdXR0b25MYWJlbElkXCI+e3sgc2VsZWN0QWdncmVnYXRlZFllYXJMYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLWNhbGVuZGFyX19hY3Rpb24gZmQtY2FsZW5kYXJfX2FjdGlvbi0tYXJyb3ctcmlnaHRcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgZ2x5cGg9XCJzbGltLWFycm93LXJpZ2h0XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJfbmV4dEJ1dHRvbklkXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibmV4dEJ1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJuZXh0QXJpYUxhYmVsXCJcbiAgICAgICAgICAgICAgICBbYXJpYUxhYmVsXT1cIm5leHRBcmlhTGFiZWxcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJuZXh0Q2xpY2tlZC5lbWl0KClcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJtb2JpbGVMYW5kc2NhcGVcIlxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBmZC1jYWxlbmRhci1jbG9zZS1idXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiZmQtY2FsZW5kYXJfX2Nsb3NlLWJ1dHRvbi0tbmF2aWdhdGlvblwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGdseXBoPVwiZGVjbGluZVwiXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiX2VtaXRDbG9zZSgpXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBIaWRkZW4gZWxlbWVudHMgZm9yIGFyaWEgcHVycG9zZXMgLS0+XG4gICAgPGRpdiBoaWRkZW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgIDxkaXYgW2F0dHIuaWRdPVwiX3NlbGVjdE1vbnRoQnV0dG9uQXJpYUxhYmVsSWRcIj57eyBzZWxlY3RNb250aEFyaWFMYWJlbCB9fTwvZGl2PlxuICAgICAgICA8ZGl2IFthdHRyLmlkXT1cIl9zZWxlY3RZZWFyQnV0dG9uQXJpYUxhYmVsSWRcIj57eyBzZWxlY3RZZWFyQXJpYUxhYmVsIH19PC9kaXY+XG4gICAgICAgIDxkaXYgW2F0dHIuaWRdPVwiX3NlbGVjdFllYXJzUmFuZ2VCdXR0b25BcmlhTGFiZWxJZFwiPnt7IHNlbGVjdEFnZ3JlZ2F0ZWRZZWFyQXJpYUxhYmVsIH19PC9kaXY+XG4gICAgPC9kaXY+XG48L2hlYWRlcj5cbiJdfQ==
|
|
270
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2NhbGVuZGFyL2NhbGVuZGFyLWhlYWRlci9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvY2FsZW5kYXIvY2FsZW5kYXItaGVhZGVyL2NhbGVuZGFyLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWpFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBSWxFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7QUFFNUQ7OztHQUdHO0FBYUgsTUFBTSxPQUFPLHVCQUF1QjtJQWlCaEM7O09BRUc7SUFDSCxJQUNJLGdCQUFnQixDQUFDLFFBQTBCO1FBQzNDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxtQ0FBbUMs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QUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IERhdGV0aW1lQWRhcHRlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kYXRldGltZSc7XG5cbmltcG9ydCB7IENhbGVuZGFySTE4bkxhYmVscyB9IGZyb20gJy4uL2kxOG4vY2FsZW5kYXItaTE4bi1sYWJlbHMnO1xuaW1wb3J0IHsgRmRDYWxlbmRhclZpZXcgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBDYWxlbmRhckN1cnJlbnQgfSBmcm9tICcuLi9tb2RlbHMvY2FsZW5kYXItY3VycmVudCc7XG5pbXBvcnQgeyBDYWxlbmRhclllYXJHcmlkIH0gZnJvbSAnLi4vbW9kZWxzL2NhbGVuZGFyLXllYXItZ3JpZCc7XG5pbXBvcnQgeyBDYWxlbmRhclNlcnZpY2UgfSBmcm9tICcuLi9jYWxlbmRhci5zZXJ2aWNlJztcbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1dHRvbic7XG5cbi8qKlxuICogSW50ZXJuYWwgdXNlIG9ubHkuXG4gKiBIZWFkZXIgb2YgdGhlIGNhbGVuZGFyIGNvbXBvbmVudC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1jYWxlbmRhci1oZWFkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYWxlbmRhci1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLWhlYWRlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIuaWRdJzogJ3ZpZXdJZCdcbiAgICB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0J1dHRvbk1vZHVsZSwgTmdJZl1cbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJIZWFkZXJDb21wb25lbnQ8RD4gaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICAvKiogQ3VycmVudGx5IGFjdGl2ZSB2aWV3LiBOZWVkZWQgZm9yIGExMXkgbGFiZWxzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYWN0aXZlVmlldzogRmRDYWxlbmRhclZpZXc7XG5cbiAgICAvKiogQ3VycmVudGx5IGRpc3BsYXllZCBkYXRlIG9uIHRoZSBjYWxlbmRhci4gKi9cbiAgICBASW5wdXQoKVxuICAgIGN1cnJlbnRseURpc3BsYXllZDogQ2FsZW5kYXJDdXJyZW50O1xuXG4gICAgLyoqIHdoZXRoZXIgcHJldmlvdXMgbmF2aWdhdGlvbiBidXR0b24gc2hvdWxkIGJlIGRpc2FibGVkIGluIHRoZSBoZWFkZXIuICovXG4gICAgQElucHV0KClcbiAgICBwcmV2aW91c0J1dHRvbkRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgLyoqIHdoZXRoZXIgbmV4dCBuYXZpZ2F0aW9uIGJ1dHRvbiBzaG91bGQgYmUgZGlzYWJsZWQgaW4gdGhlIGhlYWRlci4gKi9cbiAgICBASW5wdXQoKVxuICAgIG5leHRCdXR0b25EaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIE9iamVjdCB0byBjdXN0b21pemUgeWVhciBncmlkXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgY2FsZW5kYXJZZWFyR3JpZCh5ZWFyR3JpZDogQ2FsZW5kYXJZZWFyR3JpZCkge1xuICAgICAgICB0aGlzLl9hbW91bnRPZlllYXJzUGVyUGVyaW9kID0geWVhckdyaWQuY29scyAqIHllYXJHcmlkLnJvd3MgLSAxO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVTZWxlY3RBZ2dyZWdhdGVkWWVhckxhYmVsKCk7XG4gICAgfVxuXG4gICAgLyoqIENhbGVuZGFyIElEICovXG4gICAgQElucHV0KClcbiAgICBpZDogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgY2FsZW5kYXIgc2hvdWxkIGJlIHJlbmRlcmVkIGluIG1vYmlsZSBsYW5kc2NhcGUgbW9kZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZUxhbmRzY2FwZSA9IGZhbHNlO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgYWN0aXZlIHZpZXcgc2hvdWxkIGNoYW5nZS4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBhY3RpdmVWaWV3Q2hhbmdlOiBFdmVudEVtaXR0ZXI8RmRDYWxlbmRhclZpZXc+ID0gbmV3IEV2ZW50RW1pdHRlcjxGZENhbGVuZGFyVmlldz4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHByZXZpb3VzIGJ1dHRvbiBpcyBjbGlja2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHJlYWRvbmx5IHByZXZpb3VzQ2xpY2tlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgbmV4dCBidXR0b24gaXMgY2xpY2tlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBuZXh0Q2xpY2tlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSBwcmV2aW91cyBidXR0b24uIERlcGVuZHMgb24gdGhlIGFjdGl2ZSB2aWV3LiAqL1xuICAgIHByZXZpb3VzQXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlIG5leHQgYnV0dG9uLiBEZXBlbmRzIG9uIHRoZSBhY3RpdmUgdmlldy4gKi9cbiAgICBuZXh0QXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQnV0dG9uIGFyaWEgbGFiZWwgdG8gb3BlbiBtb250aCBzZWxlY3Rpb24gdmlldy4gKi9cbiAgICBzZWxlY3RNb250aEFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEJ1dHRvbiBhcmlhIGxhYmVsIHRvIG9wZW4geWVhciBzZWxlY3Rpb24gdmlldy4gKi9cbiAgICBzZWxlY3RZZWFyQXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQnV0dG9uIGFyaWEgbGFiZWwgdG8gb3BlbiBhZ2dyZWdhdGVkIHllYXJzIHNlbGVjdGlvbiB2aWV3LiAqL1xuICAgIHNlbGVjdEFnZ3JlZ2F0ZWRZZWFyQXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQnV0dG9uIGxhYmVsIHRvIG9wZW4gbW9udGggc2VsZWN0aW9uIHZpZXcuICovXG4gICAgc2VsZWN0TW9udGhMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEJ1dHRvbiBsYWJlbCB0byBvcGVuIHllYXIgc2VsZWN0aW9uIHZpZXcuICovXG4gICAgc2VsZWN0WWVhckxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogQnV0dG9uIGxhYmVsIHRvIG9wZW4gYWdncmVnYXRlZCB5ZWFycyBzZWxlY3Rpb24gdmlldy4gKi9cbiAgICBzZWxlY3RBZ2dyZWdhdGVkWWVhckxhYmVsOiBzdHJpbmc7XG5cbiAgICAvKiogR2V0IGluZm9ybWF0aW9uIGlzIGNhbGVuZGFyIGlzIG9uIGFnZ3JlZ2F0ZWQgeWVhcnMgdmlldyAqL1xuICAgIGdldCBpc09uQWdncmVnYXRlZFllYXJzVmlldygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVmlldyA9PT0gJ2FnZ3JlZ2F0ZWRZZWFyJztcbiAgICB9XG5cbiAgICAvKiogR2V0IGluZm9ybWF0aW9uIGlzIGNhbGVuZGFyIGlzIG9uIHllYXIgdmlldyAqL1xuICAgIGdldCBpc09uWWVhclZpZXcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFjdGl2ZVZpZXcgPT09ICd5ZWFyJztcbiAgICB9XG5cbiAgICAvKiogR2V0IGluZm9ybWF0aW9uIGlzIGNhbGVuZGFyIGlzIG9uIG1vbnRoIHZpZXcgKi9cbiAgICBnZXQgaXNPbk1vbnRoVmlldygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlVmlldyA9PT0gJ21vbnRoJztcbiAgICB9XG5cbiAgICAvKiogR2V0IGluZm9ybWF0aW9uIGlzIGNhbGVuZGFyIGlzIG9uIGRheSB2aWV3ICovXG4gICAgZ2V0IGlzT25EYXlWaWV3KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmVWaWV3ID09PSAnZGF5JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb21wb25lbnQgaWRcbiAgICAgKi9cbiAgICBnZXQgdmlld0lkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmlkICsgJy1oZWFkZXInO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBQcmV2aW91cyBidXR0b24gaWRcbiAgICAgKi9cbiAgICBnZXQgX3ByZXZCdXR0b25JZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLWxlZnQtYXJyb3cnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBOZXh0IGJ1dHRvbiBpZFxuICAgICAqL1xuICAgIGdldCBfbmV4dEJ1dHRvbklkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJZCArICctcmlnaHQtYXJyb3cnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBNb250aCBsYWJlbCBpZFxuICAgICAqL1xuICAgIGdldCBfbW9udGhCdXR0b25MYWJlbElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJZCArICctbW9udGgtbGFiZWwnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBTZWxlY3QgbW9udGggYXJpYSBsYWJlbCBpZFxuICAgICAqL1xuICAgIGdldCBfc2VsZWN0TW9udGhCdXR0b25BcmlhTGFiZWxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLXNlbGVjdC1tb250aC1hcmlhLWxhYmVsJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogWWVhciBsYWJlbCBpZFxuICAgICAqL1xuICAgIGdldCBfeWVhckJ1dHRvbkxhYmVsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0lkICsgJy15ZWFyLWxhYmVsJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogU2VsZWN0IHllYXIgYXJpYSBsYWJlbCBpZFxuICAgICAqL1xuICAgIGdldCBfc2VsZWN0WWVhckJ1dHRvbkFyaWFMYWJlbElkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdJZCArICctc2VsZWN0LXllYXItYXJpYS1sYWJlbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFllYXJzIHJhbmdlIGxhYmVsIGlkXG4gICAgICovXG4gICAgZ2V0IF95ZWFyc1JhbmdlQnV0dG9uTGFiZWxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLXllYXJzLXJhbmdlLWxhYmVsJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogU2VsZWN0IHllYXJzIHJhbmdlIGFyaWEgbGFiZWwgaWRcbiAgICAgKi9cbiAgICBnZXQgX3NlbGVjdFllYXJzUmFuZ2VCdXR0b25BcmlhTGFiZWxJZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52aWV3SWQgKyAnLXNlbGVjdC15ZWFycy1yYW5nZS1hcmlhLWxhYmVsJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3ByZXZCdXR0b24nLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBfcHJldkJ1dHRvbkNvbXBvbmVudDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGRhdGEgc3RyZWFtIHVwb24gY29tcG9uZW504oCZcyBkZXN0cnVjdGlvbiAoZm9yIHVuc3Vic2NyaWJpbmcpICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIE1vbnRoIG5hbWVzICovXG4gICAgcHJpdmF0ZSBfbW9udGhOYW1lczogc3RyaW5nW10gPSBbXTtcblxuICAgIC8qKiBHZXQgaW5mb3JtYXRpb24gYWJvdXQgYW1vdW50IG9mIHllYXJzIGRpc3BsYXllZCBhdCBvbmNlIG9uIHllYXIgdmlldyAgKi9cbiAgICBwcml2YXRlIF9hbW91bnRPZlllYXJzUGVyUGVyaW9kID0gMTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2NhbGVuZGFySTE4bkxhYmVsczogQ2FsZW5kYXJJMThuTGFiZWxzLFxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIF9jYWxlbmRhclNlcnZpY2U6IENhbGVuZGFyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfZGF0ZVRpbWVBZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD5cbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAoY2hhbmdlcy5jdXJyZW50bHlEaXNwbGF5ZWQgJiYgIWNoYW5nZXMuY3VycmVudGx5RGlzcGxheWVkLmZpcnN0Q2hhbmdlKSB8fFxuICAgICAgICAgICAgKGNoYW5nZXMuYWN0aXZlVmlldyAmJiAhY2hhbmdlcy5hY3RpdmVWaWV3LmZpcnN0Q2hhbmdlKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZUxhYmVscygpO1xuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlQXJpYUxhYmVscygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FsZW5kYXJTZXJ2aWNlLmxlZnRBcnJvd0lkID0gdGhpcy5fcHJldkJ1dHRvbklkO1xuXG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZU1vbnRoTmFtZXMoKTtcblxuICAgICAgICB0aGlzLl9jYWxjdWxhdGVMYWJlbHMoKTtcblxuICAgICAgICB0aGlzLl9jYWxjdWxhdGVBcmlhTGFiZWxzKCk7XG5cbiAgICAgICAgdGhpcy5fbGlzdGVuVG9Mb2NhbGVDaGFuZ2VzKCk7XG5cbiAgICAgICAgdGhpcy5fbGlzdGVuVG9DYWxlbmRhckxhYmVsc0NoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb2N1cyBvbiBmb2N1c2FibGUgY29udHJvbCB3aXRoaW4gdGhlIGhlYWRlclxuICAgICAqL1xuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wcmV2QnV0dG9uQ29tcG9uZW50Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcHJvY2Vzc1ZpZXdDaGFuZ2UodHlwZTogRmRDYWxlbmRhclZpZXcsIGV2ZW50PzogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hY3RpdmVWaWV3ID0gdHlwZSA9PT0gdGhpcy5hY3RpdmVWaWV3ID8gJ2RheScgOiB0eXBlO1xuXG4gICAgICAgIHRoaXMuYWN0aXZlVmlld0NoYW5nZS5lbWl0KHRoaXMuYWN0aXZlVmlldyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9saXN0ZW5Ub0xvY2FsZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5sb2NhbGVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlTW9udGhOYW1lcygpO1xuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlTGFiZWxzKCk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuVG9DYWxlbmRhckxhYmVsc0NoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGVuZGFySTE4bkxhYmVscy5sYWJlbHNDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVBcmlhTGFiZWxzKCk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlQXJpYUxhYmVscygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlUHJldmlvdXNBcmlhTGFiZWwoKTtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlTmV4dEFyaWFMYWJlbCgpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVTZWxlY3RNb250aEFyaWFMYWJlbCgpO1xuICAgICAgICB0aGlzLl9jYWxjdWxhdGVTZWxlY3RZZWFyQXJpYUxhYmVsKCk7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVNlbGVjdEFnZ3JlZ2F0ZWRZZWFyQXJpYUxhYmVsKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVMYWJlbHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVNlbGVjdE1vbnRoTGFiZWwoKTtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlU2VsZWN0WWVhckxhYmVsKCk7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVNlbGVjdEFnZ3JlZ2F0ZWRZZWFyTGFiZWwoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVByZXZpb3VzQXJpYUxhYmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByZXZpb3VzQXJpYUxhYmVsID0gdGhpcy5pc09uRGF5Vmlld1xuICAgICAgICAgICAgPyB0aGlzLl9jYWxlbmRhckkxOG5MYWJlbHMucHJldmlvdXNNb250aExhYmVsXG4gICAgICAgICAgICA6IHRoaXMuX2NhbGVuZGFySTE4bkxhYmVscy5wcmV2aW91c1llYXJMYWJlbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZU5leHRBcmlhTGFiZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubmV4dEFyaWFMYWJlbCA9IHRoaXMuaXNPbkRheVZpZXdcbiAgICAgICAgICAgID8gdGhpcy5fY2FsZW5kYXJJMThuTGFiZWxzLm5leHRNb250aExhYmVsXG4gICAgICAgICAgICA6IHRoaXMuX2NhbGVuZGFySTE4bkxhYmVscy5uZXh0WWVhckxhYmVsO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVNlbGVjdE1vbnRoQXJpYUxhYmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdE1vbnRoQXJpYUxhYmVsID0gdGhpcy5pc09uTW9udGhWaWV3XG4gICAgICAgICAgICA/IHRoaXMuX2NhbGVuZGFySTE4bkxhYmVscy5kYXRlU2VsZWN0aW9uTGFiZWxcbiAgICAgICAgICAgIDogdGhpcy5fY2FsZW5kYXJJMThuTGFiZWxzLm1vbnRoU2VsZWN0aW9uTGFiZWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVTZWxlY3RZZWFyQXJpYUxhYmVsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdFllYXJBcmlhTGFiZWwgPSB0aGlzLl9jYWxlbmRhckkxOG5MYWJlbHMueWVhclNlbGVjdGlvbkxhYmVsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlU2VsZWN0QWdncmVnYXRlZFllYXJBcmlhTGFiZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0QWdncmVnYXRlZFllYXJBcmlhTGFiZWwgPSB0aGlzLmlzT25BZ2dyZWdhdGVkWWVhcnNWaWV3XG4gICAgICAgICAgICA/IHRoaXMuX2NhbGVuZGFySTE4bkxhYmVscy5kYXRlU2VsZWN0aW9uTGFiZWxcbiAgICAgICAgICAgIDogdGhpcy5fY2FsZW5kYXJJMThuTGFiZWxzLnllYXJzUmFuZ2VTZWxlY3Rpb25MYWJlbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVNlbGVjdE1vbnRoTGFiZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0TW9udGhMYWJlbCA9IHRoaXMuX21vbnRoTmFtZXNbdGhpcy5jdXJyZW50bHlEaXNwbGF5ZWQubW9udGggLSAxXTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVNlbGVjdFllYXJMYWJlbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RZZWFyTGFiZWwgPSB0aGlzLl9nZXRZZWFyTmFtZSh0aGlzLmN1cnJlbnRseURpc3BsYXllZC55ZWFyKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVNlbGVjdEFnZ3JlZ2F0ZWRZZWFyTGFiZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0QWdncmVnYXRlZFllYXJMYWJlbCA9IGAke3RoaXMuX2dldFllYXJOYW1lKHRoaXMuY3VycmVudGx5RGlzcGxheWVkLnllYXIpfS0ke3RoaXMuX2dldFllYXJOYW1lKFxuICAgICAgICAgICAgdGhpcy5jdXJyZW50bHlEaXNwbGF5ZWQueWVhciArIHRoaXMuX2Ftb3VudE9mWWVhcnNQZXJQZXJpb2RcbiAgICAgICAgKX1gO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlTW9udGhOYW1lcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbW9udGhOYW1lcyA9IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5nZXRNb250aE5hbWVzKCdsb25nJyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRZZWFyTmFtZSh5ZWFyOiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmdldFllYXJOYW1lKHRoaXMuX2RhdGVUaW1lQWRhcHRlci5jcmVhdGVEYXRlKHllYXIsIDEsIDEpKTtcbiAgICB9XG59XG4iLCI8aGVhZGVyIGNsYXNzPVwiZmQtY2FsZW5kYXJfX25hdmlnYXRpb25cIiBbY2xhc3MuZmQtY2FsZW5kYXJfX25hdmlnYXRpb24tLW1haW5dPVwibW9iaWxlTGFuZHNjYXBlXCI+XG4gICAgPGRpdiBjbGFzcz1cImZkLWNhbGVuZGFyX19hY3Rpb24gZmQtY2FsZW5kYXJfX2FjdGlvbi0tYXJyb3ctbGVmdFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAjcHJldkJ1dHRvblxuICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICBnbHlwaD1cInNsaW0tYXJyb3ctbGVmdFwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJfcHJldkJ1dHRvbklkXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcmV2aW91c0J1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgICAgIFthdHRyLnRpdGxlXT1cInByZXZpb3VzQXJpYUxhYmVsXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwicHJldmlvdXNBcmlhTGFiZWxcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwicHJldmlvdXNDbGlja2VkLmVtaXQoKVwiXG4gICAgICAgID48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNPbkRheVZpZXcgfHwgaXNPbk1vbnRoVmlld1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmQtY2FsZW5kYXJfX2FjdGlvblwiPlxuICAgICAgICAgICAgPCEtLSBTZWxlY3QgbW9udGggYnV0dG9uIC0tPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiX21vbnRoQnV0dG9uTGFiZWxJZCArICcgJyArIF9zZWxlY3RNb250aEJ1dHRvbkFyaWFMYWJlbElkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWZkLWNhbGVuZGFyLW1vbnRoXT1cImN1cnJlbnRseURpc3BsYXllZC5tb250aFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9wcm9jZXNzVmlld0NoYW5nZSgnbW9udGgnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiBbYXR0ci5pZF09XCJfbW9udGhCdXR0b25MYWJlbElkXCI+e3sgc2VsZWN0TW9udGhMYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLWNhbGVuZGFyX19hY3Rpb25cIj5cbiAgICAgICAgICAgIDwhLS0gU2VsZWN0IHllYXIgYnV0dG9uIC0tPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiX3llYXJCdXR0b25MYWJlbElkICsgJyAnICsgX3NlbGVjdFllYXJCdXR0b25BcmlhTGFiZWxJZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1mZC1jYWxlbmRhci15ZWFyXT1cImN1cnJlbnRseURpc3BsYXllZC55ZWFyXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3Byb2Nlc3NWaWV3Q2hhbmdlKCd5ZWFyJywgJGV2ZW50KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW2F0dHIuaWRdPVwiX3llYXJCdXR0b25MYWJlbElkXCI+e3sgc2VsZWN0WWVhckxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc09uQWdncmVnYXRlZFllYXJzVmlldyB8fCBpc09uWWVhclZpZXdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZkLWNhbGVuZGFyX19hY3Rpb25cIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIl95ZWFyc1JhbmdlQnV0dG9uTGFiZWxJZCArICcgJyArIF9zZWxlY3RZZWFyc1JhbmdlQnV0dG9uQXJpYUxhYmVsSWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfcHJvY2Vzc1ZpZXdDaGFuZ2UoJ2FnZ3JlZ2F0ZWRZZWFyJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gW2F0dHIuaWRdPVwiX3llYXJzUmFuZ2VCdXR0b25MYWJlbElkXCI+e3sgc2VsZWN0QWdncmVnYXRlZFllYXJMYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2IGNsYXNzPVwiZmQtY2FsZW5kYXJfX2FjdGlvbiBmZC1jYWxlbmRhcl9fYWN0aW9uLS1hcnJvdy1yaWdodFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgIGdseXBoPVwic2xpbS1hcnJvdy1yaWdodFwiXG4gICAgICAgICAgICBbYXR0ci5pZF09XCJfbmV4dEJ1dHRvbklkXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJuZXh0QnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwibmV4dEFyaWFMYWJlbFwiXG4gICAgICAgICAgICBbYXJpYUxhYmVsXT1cIm5leHRBcmlhTGFiZWxcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm5leHRDbGlja2VkLmVtaXQoKVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9oZWFkZXI+XG5cbjwhLS0gSGlkZGVuIGVsZW1lbnRzIGZvciBhcmlhIHB1cnBvc2VzIC0tPlxuPGRpdiBoaWRkZW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgPGRpdiBbYXR0ci5pZF09XCJfc2VsZWN0TW9udGhCdXR0b25BcmlhTGFiZWxJZFwiPnt7IHNlbGVjdE1vbnRoQXJpYUxhYmVsIH19PC9kaXY+XG4gICAgPGRpdiBbYXR0ci5pZF09XCJfc2VsZWN0WWVhckJ1dHRvbkFyaWFMYWJlbElkXCI+e3sgc2VsZWN0WWVhckFyaWFMYWJlbCB9fTwvZGl2PlxuICAgIDxkaXYgW2F0dHIuaWRdPVwiX3NlbGVjdFllYXJzUmFuZ2VCdXR0b25BcmlhTGFiZWxJZFwiPnt7IHNlbGVjdEFnZ3JlZ2F0ZWRZZWFyQXJpYUxhYmVsIH19PC9kaXY+XG48L2Rpdj5cbiJdfQ==
|