@netwin/angular-datetime-picker 19.0.0-rc.4 → 19.0.0-rc.6

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.
Files changed (67) hide show
  1. package/README.md +27 -1
  2. package/assets/style/picker.min.css +1 -1
  3. package/fesm2022/netwin-angular-datetime-picker.mjs +4178 -1486
  4. package/fesm2022/netwin-angular-datetime-picker.mjs.map +1 -1
  5. package/lib/date-time/adapter/date-time-adapter.class.d.ts +19 -9
  6. package/lib/date-time/adapter/date-time-format.class.d.ts +12 -8
  7. package/lib/date-time/adapter/native-date-time-adapter.class.d.ts +16 -5
  8. package/lib/date-time/adapter/native-date-time-format.class.d.ts +3 -0
  9. package/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-adapter.class.d.ts +15 -4
  10. package/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-format.class.d.ts +3 -0
  11. package/lib/date-time/calendar-body.component.d.ts +18 -13
  12. package/lib/date-time/calendar-month-view.component.d.ts +17 -12
  13. package/lib/date-time/calendar-multi-year-view.component.d.ts +12 -12
  14. package/lib/date-time/calendar-year-view.component.d.ts +7 -6
  15. package/lib/date-time/calendar.component.d.ts +37 -17
  16. package/lib/date-time/date-time-inline.component.d.ts +79 -156
  17. package/lib/date-time/date-time-picker-container.component.d.ts +131 -0
  18. package/lib/date-time/date-time-picker-input.directive.d.ts +172 -0
  19. package/lib/date-time/date-time-picker-intl.service.d.ts +6 -0
  20. package/lib/date-time/date-time-picker-trigger.directive.d.ts +23 -0
  21. package/lib/date-time/date-time-picker.animations.d.ts +8 -0
  22. package/lib/date-time/date-time-picker.component.d.ts +171 -0
  23. package/lib/date-time/date-time.class.d.ts +103 -0
  24. package/lib/date-time/date-time.module.d.ts +17 -11
  25. package/lib/date-time/numberedFixLen.pipe.d.ts +10 -0
  26. package/lib/date-time/timer-box.component.d.ts +4 -3
  27. package/lib/date-time/timer.component.d.ts +19 -16
  28. package/lib/dialog/dialog-config.class.d.ts +169 -0
  29. package/lib/dialog/dialog-container.component.d.ts +69 -0
  30. package/lib/dialog/dialog-ref.class.d.ts +51 -0
  31. package/lib/dialog/dialog.module.d.ts +11 -0
  32. package/lib/dialog/dialog.service.d.ts +76 -0
  33. package/lib/utils/index.d.ts +4 -0
  34. package/lib/utils/object.utils.d.ts +8 -0
  35. package/package.json +5 -7
  36. package/public_api.d.ts +16 -12
  37. package/esm2022/lib/date-time/adapter/date-time-adapter.class.mjs +0 -114
  38. package/esm2022/lib/date-time/adapter/date-time-format.class.mjs +0 -4
  39. package/esm2022/lib/date-time/adapter/native-date-time-adapter.class.mjs +0 -238
  40. package/esm2022/lib/date-time/adapter/native-date-time-format.class.mjs +0 -15
  41. package/esm2022/lib/date-time/adapter/native-date-time.module.mjs +0 -42
  42. package/esm2022/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-adapter.class.mjs +0 -215
  43. package/esm2022/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-format.class.mjs +0 -15
  44. package/esm2022/lib/date-time/calendar-body.component.mjs +0 -137
  45. package/esm2022/lib/date-time/calendar-month-view.component.mjs +0 -420
  46. package/esm2022/lib/date-time/calendar-multi-year-view.component.mjs +0 -360
  47. package/esm2022/lib/date-time/calendar-year-view.component.mjs +0 -354
  48. package/esm2022/lib/date-time/calendar.component.mjs +0 -357
  49. package/esm2022/lib/date-time/date-time-inline.component.mjs +0 -463
  50. package/esm2022/lib/date-time/date-time-picker-intl.service.mjs +0 -55
  51. package/esm2022/lib/date-time/date-time.module.mjs +0 -59
  52. package/esm2022/lib/date-time/options-provider.mjs +0 -34
  53. package/esm2022/lib/date-time/timer-box.component.mjs +0 -130
  54. package/esm2022/lib/date-time/timer.component.mjs +0 -280
  55. package/esm2022/lib/types/date-view.mjs +0 -19
  56. package/esm2022/lib/types/index.mjs +0 -4
  57. package/esm2022/lib/types/picker-type.mjs +0 -2
  58. package/esm2022/lib/types/select-mode.mjs +0 -2
  59. package/esm2022/lib/utils/array.utils.mjs +0 -5
  60. package/esm2022/lib/utils/constants.mjs +0 -31
  61. package/esm2022/lib/utils/date.utils.mjs +0 -46
  62. package/esm2022/netwin-angular-datetime-picker.mjs +0 -5
  63. package/esm2022/public_api.mjs +0 -23
  64. package/lib/types/date-view.d.ts +0 -17
  65. package/lib/types/index.d.ts +0 -3
  66. package/lib/types/picker-type.d.ts +0 -7
  67. package/lib/types/select-mode.d.ts +0 -8
@@ -0,0 +1,51 @@
1
+ import { OverlayRef } from '@angular/cdk/overlay';
2
+ import { Location } from '@angular/common';
3
+ import { Observable } from 'rxjs';
4
+ import { DialogPosition } from './dialog-config.class';
5
+ import { OwlDialogContainerComponent } from './dialog-container.component';
6
+ export declare class OwlDialogRef<T> {
7
+ private overlayRef;
8
+ private container;
9
+ readonly id: string;
10
+ private result;
11
+ private _beforeClose$;
12
+ private _beforeOpen$;
13
+ private _afterOpen$;
14
+ private _afterClosed$;
15
+ /** Subscription to changes in the user's location. */
16
+ private locationChanged;
17
+ /**
18
+ * The instance of component opened into modal
19
+ */
20
+ componentInstance: T;
21
+ /** Whether the user is allowed to close the dialog. */
22
+ disableClose: boolean;
23
+ constructor(overlayRef: OverlayRef, container: OwlDialogContainerComponent, id: string, location?: Location);
24
+ close(dialogResult?: any): void;
25
+ /**
26
+ * Gets an observable that emits when the overlay's backdrop has been clicked.
27
+ */
28
+ backdropClick(): Observable<any>;
29
+ /**
30
+ * Gets an observable that emits when keydown events are targeted on the overlay.
31
+ */
32
+ keydownEvents(): Observable<KeyboardEvent>;
33
+ /**
34
+ * Updates the dialog's position.
35
+ * @param position New dialog position.
36
+ */
37
+ updatePosition(position?: DialogPosition): this;
38
+ /**
39
+ * Updates the dialog's width and height.
40
+ * @param width New width of the dialog.
41
+ * @param height New height of the dialog.
42
+ */
43
+ updateSize(width?: string, height?: string): this;
44
+ isAnimating(): boolean;
45
+ beforeOpen(): Observable<any>;
46
+ afterOpen(): Observable<any>;
47
+ beforeClose(): Observable<any>;
48
+ afterClosed(): Observable<any>;
49
+ /** Fetches the position strategy object from the overlay ref. */
50
+ private getPositionStrategy;
51
+ }
@@ -0,0 +1,11 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./dialog-container.component";
3
+ import * as i2 from "@angular/common";
4
+ import * as i3 from "@angular/cdk/a11y";
5
+ import * as i4 from "@angular/cdk/overlay";
6
+ import * as i5 from "@angular/cdk/portal";
7
+ export declare class OwlDialogModule {
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<OwlDialogModule, never>;
9
+ static ɵmod: i0.ɵɵNgModuleDeclaration<OwlDialogModule, [typeof i1.OwlDialogContainerComponent], [typeof i2.CommonModule, typeof i3.A11yModule, typeof i4.OverlayModule, typeof i5.PortalModule], never>;
10
+ static ɵinj: i0.ɵɵInjectorDeclaration<OwlDialogModule>;
11
+ }
@@ -0,0 +1,76 @@
1
+ /**
2
+ * dialog.service
3
+ */
4
+ import { Overlay, OverlayContainer, ScrollStrategy } from '@angular/cdk/overlay';
5
+ import { ComponentType } from '@angular/cdk/portal';
6
+ import { Location } from '@angular/common';
7
+ import { InjectionToken, Injector, TemplateRef } from '@angular/core';
8
+ import { Observable, Subject } from 'rxjs';
9
+ import { OwlDialogConfig, OwlDialogConfigInterface } from './dialog-config.class';
10
+ import { OwlDialogRef } from './dialog-ref.class';
11
+ import * as i0 from "@angular/core";
12
+ export declare const OWL_DIALOG_DATA: InjectionToken<any>;
13
+ /**
14
+ * Injection token that determines the scroll handling while the dialog is open.
15
+ */
16
+ export declare const OWL_DIALOG_SCROLL_STRATEGY: InjectionToken<() => ScrollStrategy>;
17
+ export declare function OWL_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay: Overlay): () => ScrollStrategy;
18
+ /** @docs-private */
19
+ export declare const OWL_DIALOG_SCROLL_STRATEGY_PROVIDER: {
20
+ provide: InjectionToken<() => ScrollStrategy>;
21
+ deps: (typeof Overlay)[];
22
+ useFactory: typeof OWL_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY;
23
+ };
24
+ /**
25
+ * Injection token that can be used to specify default dialog options.
26
+ */
27
+ export declare const OWL_DIALOG_DEFAULT_OPTIONS: InjectionToken<OwlDialogConfig>;
28
+ export declare class OwlDialogService {
29
+ #private;
30
+ private overlay;
31
+ private injector;
32
+ private location;
33
+ private defaultOptions;
34
+ private parentDialog;
35
+ private overlayContainer;
36
+ private ariaHiddenElements;
37
+ private _openDialogsAtThisLevel;
38
+ private _beforeOpenAtThisLevel;
39
+ private _afterOpenAtThisLevel;
40
+ private _afterAllClosedAtThisLevel;
41
+ /** Keeps track of the currently-open dialogs. */
42
+ get openDialogs(): Array<OwlDialogRef<any>>;
43
+ /** Stream that emits when a dialog has been opened. */
44
+ get beforeOpen(): Subject<OwlDialogRef<any>>;
45
+ /** Stream that emits when a dialog has been opened. */
46
+ get afterOpen(): Subject<OwlDialogRef<any>>;
47
+ /**
48
+ * Stream that emits when all open dialog have finished closing.
49
+ * Will emit on subscribe if there are no open dialogs to begin with.
50
+ */
51
+ afterAllClosed: Observable<void>;
52
+ private readonly scrollStrategy;
53
+ constructor(overlay: Overlay, injector: Injector, location: Location, scrollStrategy: any, defaultOptions: OwlDialogConfigInterface, parentDialog: OwlDialogService, overlayContainer: OverlayContainer);
54
+ open<T>(componentOrTemplateRef: ComponentType<T> | TemplateRef<T>, config?: OwlDialogConfigInterface): OwlDialogRef<any>;
55
+ /**
56
+ * Closes all of the currently-open dialogs.
57
+ */
58
+ closeAll(): void;
59
+ /**
60
+ * Finds an open dialog by its id.
61
+ * @param id ID to use when looking up the dialog.
62
+ */
63
+ getDialogById(id: string): OwlDialogRef<any> | undefined;
64
+ private attachDialogContent;
65
+ private createInjector;
66
+ private createOverlay;
67
+ private attachDialogContainer;
68
+ private getOverlayConfig;
69
+ private removeOpenDialog;
70
+ /**
71
+ * Hides all of the content that isn't an overlay from assistive technology.
72
+ */
73
+ private hideNonDialogContentFromAssistiveTechnology;
74
+ static ɵfac: i0.ɵɵFactoryDeclaration<OwlDialogService, [null, null, { optional: true; }, null, { optional: true; }, { optional: true; skipSelf: true; }, null]>;
75
+ static ɵprov: i0.ɵɵInjectableDeclaration<OwlDialogService>;
76
+ }
@@ -0,0 +1,4 @@
1
+ export * from './array.utils';
2
+ export * from './constants';
3
+ export * from './date.utils';
4
+ export * from './object.utils';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Extends an object with the *enumerable* and *own* properties of one or more source objects,
3
+ * similar to Object.assign.
4
+ *
5
+ * @param dest The object which will have properties copied to it.
6
+ * @param sources The source objects from which properties will be copied.
7
+ */
8
+ export declare function extendObject<T extends object>(dest: T, ...sources: Array<object>): T;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@netwin/angular-datetime-picker",
3
- "version": "19.0.0-rc.4",
3
+ "version": "19.0.0-rc.6",
4
4
  "description": "Angular Date Time Picker",
5
5
  "keywords": [
6
6
  "Angular",
@@ -24,12 +24,12 @@
24
24
  "access": "public"
25
25
  },
26
26
  "peerDependencies": {
27
- "@angular/common": "^18.0.0",
28
- "@angular/core": "^18.0.0",
29
- "@angular/cdk": "^18.0.0"
27
+ "@angular/common": "^19.0.0",
28
+ "@angular/core": "^19.0.0",
29
+ "@angular/cdk": "^19.0.0"
30
30
  },
31
31
  "dependencies": {
32
- "tslib": "^2.6.3"
32
+ "tslib": "^2.8.1"
33
33
  },
34
34
  "exports": {
35
35
  "./assets/style/picker.min.css": {
@@ -40,8 +40,6 @@
40
40
  },
41
41
  ".": {
42
42
  "types": "./index.d.ts",
43
- "esm2022": "./esm2022/netwin-angular-datetime-picker.mjs",
44
- "esm": "./esm2022/netwin-angular-datetime-picker.mjs",
45
43
  "default": "./fesm2022/netwin-angular-datetime-picker.mjs"
46
44
  }
47
45
  },
package/public_api.d.ts CHANGED
@@ -1,17 +1,21 @@
1
- export * from './lib/date-time/adapter/date-time-adapter.class';
2
- export * from './lib/date-time/adapter/date-time-format.class';
3
- export * from './lib/date-time/adapter/native-date-time-adapter.class';
4
- export * from './lib/date-time/adapter/native-date-time.module';
5
- export * from './lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-adapter.class';
6
- export * from './lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-format.class';
7
- export * from './lib/date-time/date-time-picker-intl.service';
8
- export * from './lib/date-time/options-provider';
1
+ export { OwlDateTimeModule } from './lib/date-time/date-time.module';
2
+ export { OwlDateTimeIntl } from './lib/date-time/date-time-picker-intl.service';
3
+ export { OwlNativeDateTimeModule } from './lib/date-time/adapter/native-date-time.module';
4
+ export { DateTimeAdapter, OWL_DATE_TIME_LOCALE, OWL_DATE_TIME_LOCALE_PROVIDER } from './lib/date-time/adapter/date-time-adapter.class';
5
+ export { OWL_DATE_TIME_FORMATS, type OwlDateTimeFormats } from './lib/date-time/adapter/date-time-format.class';
6
+ export { UnixTimestampDateTimeAdapter } from './lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-adapter.class';
7
+ export { OWL_UNIX_TIMESTAMP_DATE_TIME_FORMATS } from './lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-format.class';
8
+ export { OwlDateTimeInlineComponent } from './lib/date-time/date-time-inline.component';
9
+ export { OwlDateTimeComponent } from './lib/date-time/date-time-picker.component';
9
10
  export * from './lib/date-time/calendar-body.component';
10
- export * from './lib/date-time/calendar-month-view.component';
11
+ export * from './lib/date-time/timer.component';
12
+ export * from './lib/date-time/date-time-picker-trigger.directive';
13
+ export * from './lib/date-time/date-time-picker-input.directive';
11
14
  export * from './lib/date-time/calendar-multi-year-view.component';
12
15
  export * from './lib/date-time/calendar-year-view.component';
16
+ export * from './lib/date-time/calendar-month-view.component';
13
17
  export * from './lib/date-time/calendar.component';
14
18
  export * from './lib/date-time/timer.component';
15
- export * from './lib/date-time/date-time-inline.component';
16
- export * from './lib/date-time/date-time.module';
17
- export * from './lib/types';
19
+ export { NativeDateTimeAdapter } from './lib/date-time/adapter/native-date-time-adapter.class';
20
+ export * from './lib/date-time/options-provider';
21
+ export { DateView, type DateViewType, type PickerMode, type PickerType, type SelectMode } from './lib/date-time/date-time.class';
@@ -1,114 +0,0 @@
1
- import { InjectionToken, LOCALE_ID, inject } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
- /** InjectionToken for date time picker that can be used to override default locale code. */
4
- export const OWL_DATE_TIME_LOCALE = new InjectionToken('OWL_DATE_TIME_LOCALE', {
5
- providedIn: 'root',
6
- factory: OWL_DATE_TIME_LOCALE_FACTORY
7
- });
8
- function OWL_DATE_TIME_LOCALE_FACTORY() {
9
- return inject(LOCALE_ID);
10
- }
11
- /** Provider for OWL_DATE_TIME_LOCALE injection token. */
12
- export const OWL_DATE_TIME_LOCALE_PROVIDER = {
13
- provide: OWL_DATE_TIME_LOCALE,
14
- useExisting: LOCALE_ID
15
- };
16
- export class DateTimeAdapter {
17
- constructor() {
18
- /** A stream that emits when the locale changes. */
19
- this._localeChanges = new Subject();
20
- this.localeChanges = this._localeChanges.asObservable();
21
- /** total milliseconds in a day. */
22
- this.millisecondsInDay = 86400000;
23
- /** total milliseconds in a minute. */
24
- this.milliseondsInMinute = 60000;
25
- }
26
- /**
27
- * Compare two given dates
28
- * 1 if the first date is after the second,
29
- * -1 if the first date is before the second
30
- * 0 if dates are equal.
31
- */
32
- compare(first, second) {
33
- if (!this.isValid(first) || !this.isValid(second)) {
34
- throw Error('JSNativeDate: Cannot compare invalid dates.');
35
- }
36
- const dateFirst = this.clone(first);
37
- const dateSecond = this.clone(second);
38
- const diff = this.getTime(dateFirst) - this.getTime(dateSecond);
39
- if (diff < 0) {
40
- return -1;
41
- }
42
- else if (diff > 0) {
43
- return 1;
44
- }
45
- else {
46
- // Return 0 if diff is 0; return NaN if diff is NaN
47
- return diff;
48
- }
49
- }
50
- /**
51
- * Check if two given dates are in the same year
52
- * 1 if the first date's year is after the second,
53
- * -1 if the first date's year is before the second
54
- * 0 if two given dates are in the same year
55
- */
56
- compareYear(first, second) {
57
- if (!this.isValid(first) || !this.isValid(second)) {
58
- throw Error('JSNativeDate: Cannot compare invalid dates.');
59
- }
60
- const yearLeft = this.getYear(first);
61
- const yearRight = this.getYear(second);
62
- const diff = yearLeft - yearRight;
63
- if (diff < 0) {
64
- return -1;
65
- }
66
- else if (diff > 0) {
67
- return 1;
68
- }
69
- else {
70
- return 0;
71
- }
72
- }
73
- /**
74
- * Attempts to deserialize a value to a valid date object. This is different from parsing in that
75
- * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601
76
- * string). The default implementation does not allow any deserialization, it simply checks that
77
- * the given value is already a valid date object or null. The `<mat-datepicker>` will call this
78
- * method on all of it's `@Input()` properties that accept dates. It is therefore possible to
79
- * support passing values from your backend directly to these properties by overriding this method
80
- * to also deserialize the format used by your backend.
81
- */
82
- deserialize(value) {
83
- if (value === null || (this.isDateInstance(value) && this.isValid(value))) {
84
- return value;
85
- }
86
- return this.invalid();
87
- }
88
- /**
89
- * Sets the locale used for all dates.
90
- */
91
- setLocale(locale) {
92
- this.locale = locale;
93
- this._localeChanges.next(locale);
94
- }
95
- /**
96
- * Get the locale used for all dates.
97
- */
98
- getLocale() {
99
- return this.locale;
100
- }
101
- /**
102
- * Clamp the given date between min and max dates.
103
- */
104
- clampDate(date, min, max) {
105
- if (min && this.compare(date, min) < 0) {
106
- return min;
107
- }
108
- if (max && this.compare(date, max) > 0) {
109
- return max;
110
- }
111
- return date;
112
- }
113
- }
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLWFkYXB0ZXIuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9waWNrZXIvc3JjL2xpYi9kYXRlLXRpbWUvYWRhcHRlci9kYXRlLXRpbWUtYWRhcHRlci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQiw0RkFBNEY7QUFDNUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQVMsc0JBQXNCLEVBQUU7SUFDckYsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLDRCQUE0QjtDQUN0QyxDQUFDLENBQUM7QUFFSCxTQUFTLDRCQUE0QjtJQUNuQyxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQseURBQXlEO0FBQ3pELE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHO0lBQzNDLE9BQU8sRUFBRSxvQkFBb0I7SUFDN0IsV0FBVyxFQUFFLFNBQVM7Q0FDdkIsQ0FBQztBQUVGLE1BQU0sT0FBZ0IsZUFBZTtJQUFyQztRQUlFLG1EQUFtRDtRQUN6QyxtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDMUMsa0JBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTFELG1DQUFtQztRQUNoQixzQkFBaUIsR0FBRyxRQUFRLENBQUM7UUFFaEQsc0NBQXNDO1FBQ25CLHdCQUFtQixHQUFHLEtBQUssQ0FBQztJQW9RakQsQ0FBQztJQTlGQzs7Ozs7T0FLRztJQUNJLE9BQU8sQ0FBQyxLQUFRLEVBQUUsTUFBUztRQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMs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b2tlbiwgTE9DQUxFX0lELCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuLyoqIEluamVjdGlvblRva2VuIGZvciBkYXRlIHRpbWUgcGlja2VyIHRoYXQgY2FuIGJlIHVzZWQgdG8gb3ZlcnJpZGUgZGVmYXVsdCBsb2NhbGUgY29kZS4gKi9cbmV4cG9ydCBjb25zdCBPV0xfREFURV9USU1FX0xPQ0FMRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCdPV0xfREFURV9USU1FX0xPQ0FMRScsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiBPV0xfREFURV9USU1FX0xPQ0FMRV9GQUNUT1JZXG59KTtcblxuZnVuY3Rpb24gT1dMX0RBVEVfVElNRV9MT0NBTEVfRkFDVE9SWSgpOiBzdHJpbmcge1xuICByZXR1cm4gaW5qZWN0KExPQ0FMRV9JRCk7XG59XG5cbi8qKiBQcm92aWRlciBmb3IgT1dMX0RBVEVfVElNRV9MT0NBTEUgaW5qZWN0aW9uIHRva2VuLiAqL1xuZXhwb3J0IGNvbnN0IE9XTF9EQVRFX1RJTUVfTE9DQUxFX1BST1ZJREVSID0ge1xuICBwcm92aWRlOiBPV0xfREFURV9USU1FX0xPQ0FMRSxcbiAgdXNlRXhpc3Rpbmc6IExPQ0FMRV9JRFxufTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERhdGVUaW1lQWRhcHRlcjxUPiB7XG4gIC8qKiBUaGUgbG9jYWxlIHRvIHVzZSBmb3IgYWxsIGRhdGVzLiAqL1xuICBwcm90ZWN0ZWQgbG9jYWxlOiBzdHJpbmc7XG5cbiAgLyoqIEEgc3RyZWFtIHRoYXQgZW1pdHMgd2hlbiB0aGUgbG9jYWxlIGNoYW5nZXMuICovXG4gIHByb3RlY3RlZCBfbG9jYWxlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHVibGljIGxvY2FsZUNoYW5nZXMgPSB0aGlzLl9sb2NhbGVDaGFuZ2VzLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIC8qKiB0b3RhbCBtaWxsaXNlY29uZHMgaW4gYSBkYXkuICovXG4gIHByb3RlY3RlZCByZWFkb25seSBtaWxsaXNlY29uZHNJbkRheSA9IDg2NDAwMDAwO1xuXG4gIC8qKiB0b3RhbCBtaWxsaXNlY29uZHMgaW4gYSBtaW51dGUuICovXG4gIHByb3RlY3RlZCByZWFkb25seSBtaWxsaXNlb25kc0luTWludXRlID0gNjAwMDA7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldFllYXIoZGF0ZTogVCk6IG51bWJlcjtcblxuICAvKipcbiAgICogR2V0IHRoZSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZVxuICAgKiAwIC0tIEphbnVhcnlcbiAgICogMTEgLS0gRGVjZW1iZXJcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRNb250aChkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRheSBvZiB0aGUgd2VlayBvZiB0aGUgZ2l2ZW4gZGF0ZVxuICAgKiAwIC0tIFN1bmRheVxuICAgKiA2IC0tIFNhdHVyZGF5XG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0RGF5KGRhdGU6IFQpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGF5IG51bSBvZiB0aGUgZ2l2ZW4gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldERhdGUoZGF0ZTogVCk6IG51bWJlcjtcblxuICAvKipcbiAgICogR2V0IHRoZSBob3VycyBvZiB0aGUgZ2l2ZW4gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldEhvdXJzKGRhdGU6IFQpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbWludXRlcyBvZiB0aGUgZ2l2ZW4gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldE1pbnV0ZXMoZGF0ZTogVCk6IG51bWJlcjtcblxuICAvKipcbiAgICogR2V0IHRoZSBzZWNvbmRzIG9mIHRoZSBnaXZlbiBkYXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0U2Vjb25kcyhkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG1pbGxpc2Vjb25kcyB0aW1lc3RhbXAgb2YgdGhlIGdpdmVuIGRhdGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRUaW1lKGRhdGU6IFQpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoZSBtb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXROdW1EYXlzSW5Nb250aChkYXRlOiBUKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG51bWJlciBvZiBjYWxlbmRhciBkYXlzIGJldHdlZW4gdGhlIGdpdmVuIGRhdGVzLlxuICAgKiBJZiBkYXRlTGVmdCBpcyBiZWZvcmUgZGF0ZVJpZ2h0LCBpdCB3b3VsZCByZXR1cm4gcG9zaXRpdmUgdmFsdWVcbiAgICogSWYgZGF0ZUxlZnQgaXMgYWZ0ZXIgZGF0ZVJpZ2h0LCBpdCB3b3VsZCByZXR1cm4gbmVnYXRpdmUgdmFsdWVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMoZGF0ZUxlZnQ6IFQsIGRhdGVSaWdodDogVCk6IG51bWJlcjtcblxuICAvKipcbiAgICogR2V0cyB0aGUgbmFtZSBmb3IgdGhlIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0WWVhck5hbWUoZGF0ZTogVCk6IHN0cmluZztcblxuICAvKipcbiAgICogR2V0IGEgbGlzdCBvZiBtb250aCBuYW1lc1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldE1vbnRoTmFtZXMoc3R5bGU6ICdsb25nJyB8ICdzaG9ydCcgfCAnbmFycm93Jyk6IEFycmF5PHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2Ygd2VlayBuYW1lc1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldERheU9mV2Vla05hbWVzKHN0eWxlOiAnbG9uZycgfCAnc2hvcnQnIHwgJ25hcnJvdycpOiBBcnJheTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgbGlzdCBvZiBuYW1lcyBmb3IgdGhlIGRhdGVzIG9mIHRoZSBtb250aC5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXREYXRlTmFtZXMoKTogQXJyYXk8c3RyaW5nPjtcblxuICAvKipcbiAgICogUmV0dXJuIGEgRGF0ZSBvYmplY3QgYXMgYSBzdHJpbmcsIHVzaW5nIHRoZSBJU08gc3RhbmRhcmRcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCB0b0lzbzg2MDEoZGF0ZTogVCk6IHN0cmluZztcblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIGdpdmUgZGF0ZXMgYXJlIGVxdWFsXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaXNFcXVhbChkYXRlTGVmdDogVCwgZGF0ZVJpZ2h0OiBUKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2hlY2sgaWYgdGhlIGdpdmUgZGF0ZXMgYXJlIHRoZSBzYW1lIGRheVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGlzU2FtZURheShkYXRlTGVmdDogVCwgZGF0ZVJpZ2h0OiBUKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIGRhdGUgaXMgdmFsaWQuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaXNWYWxpZChkYXRlOiBUKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogR2V0cyBkYXRlIGluc3RhbmNlIHRoYXQgaXMgbm90IHZhbGlkLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGludmFsaWQoKTogVDtcblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGdpdmVuIG9iamVjdCBpcyBjb25zaWRlcmVkIGEgZGF0ZSBpbnN0YW5jZSBieSB0aGlzIERhdGVUaW1lQWRhcHRlci5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBpc0RhdGVJbnN0YW5jZShvYmo6IHVua25vd24pOiBvYmogaXMgVDtcblxuICAvKipcbiAgICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHllYXJzIHRvIHRoZSBnaXZlbiBkYXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYWRkQ2FsZW5kYXJZZWFycyhkYXRlOiBULCBhbW91bnQ6IG51bWJlcik6IFQ7XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBtb250aHMgdG8gdGhlIGdpdmVuIGRhdGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBhZGRDYWxlbmRhck1vbnRocyhkYXRlOiBULCBhbW91bnQ6IG51bWJlcik6IFQ7XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIHRvIHRoZSBnaXZlbiBkYXRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYWRkQ2FsZW5kYXJEYXlzKGRhdGU6IFQsIGFtb3VudDogbnVtYmVyKTogVDtcblxuICAvKipcbiAgICogU2V0IHRoZSBob3VycyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBzZXRIb3VycyhkYXRlOiBULCBhbW91bnQ6IG51bWJlcik6IFQ7XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbWludXRlcyB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBzZXRNaW51dGVzKGRhdGU6IFQsIGFtb3VudDogbnVtYmVyKTogVDtcblxuICAvKipcbiAgICogU2V0IHRoZSBzZWNvbmRzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHNldFNlY29uZHMoZGF0ZTogVCwgYW1vdW50OiBudW1iZXIpOiBUO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZGF0ZSB3aXRoIHRoZSBnaXZlbiB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUgYW5kIHNlY29uZC5cbiAgICogRG9lcyBub3QgYWxsb3cgb3Zlci91bmRlci1mbG93IG9mIHRoZSBtb250aCBhbmQgZGF0ZS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBjcmVhdGVEYXRlKFxuICAgIHllYXI6IG51bWJlcixcbiAgICBtb250aDogbnVtYmVyLFxuICAgIGRheTogbnVtYmVyLFxuICAgIGhvdXJzPzogbnVtYmVyLFxuICAgIG1pbnV0ZXM/OiBudW1iZXIsXG4gICAgc2Vjb25kcz86IG51bWJlclxuICApOiBUO1xuXG4gIC8qKlxuICAgKiBDbG9uZSB0aGUgZ2l2ZW4gZGF0ZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGNsb25lKGRhdGU6IFQpOiBUO1xuXG4gIC8qKlxuICAgKiBHZXQgYSBuZXcgbW9tZW50XG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgbm93KCk6IFQ7XG5cbiAgLyoqXG4gICAqIEZvcm1hdHMgYSBkYXRlIGFzIGEgc3RyaW5nIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gZm9ybWF0LlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGZvcm1hdChkYXRlOiBULCBkaXNwbGF5Rm9ybWF0OiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyk6IHN0cmluZztcblxuICAvKipcbiAgICogQ29tcGFyZSB0d28gZ2l2ZW4gZGF0ZXNcbiAgICogMSBpZiB0aGUgZmlyc3QgZGF0ZSBpcyBhZnRlciB0aGUgc2Vjb25kLFxuICAgKiAtMSBpZiB0aGUgZmlyc3QgZGF0ZSBpcyBiZWZvcmUgdGhlIHNlY29uZFxuICAgKiAwIGlmIGRhdGVzIGFyZSBlcXVhbC5cbiAgICovXG4gIHB1YmxpYyBjb21wYXJlKGZpcnN0OiBULCBzZWNvbmQ6IFQpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5pc1ZhbGlkKGZpcnN0KSB8fCAhdGhpcy5pc1ZhbGlkKHNlY29uZCkpIHtcbiAgICAgIHRocm93IEVycm9yKCdKU05hdGl2ZURhdGU6IENhbm5vdCBjb21wYXJlIGludmFsaWQgZGF0ZXMuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZUZpcnN0ID0gdGhpcy5jbG9uZShmaXJzdCk7XG4gICAgY29uc3QgZGF0ZVNlY29uZCA9IHRoaXMuY2xvbmUoc2Vjb25kKTtcblxuICAgIGNvbnN0IGRpZmYgPSB0aGlzLmdldFRpbWUoZGF0ZUZpcnN0KSAtIHRoaXMuZ2V0VGltZShkYXRlU2Vjb25kKTtcblxuICAgIGlmIChkaWZmIDwgMCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH0gZWxzZSBpZiAoZGlmZiA+IDApIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXR1cm4gMCBpZiBkaWZmIGlzIDA7IHJldHVybiBOYU4gaWYgZGlmZiBpcyBOYU5cbiAgICAgIHJldHVybiBkaWZmO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0d28gZ2l2ZW4gZGF0ZXMgYXJlIGluIHRoZSBzYW1lIHllYXJcbiAgICogMSBpZiB0aGUgZmlyc3QgZGF0ZSdzIHllYXIgaXMgYWZ0ZXIgdGhlIHNlY29uZCxcbiAgICogLTEgaWYgdGhlIGZpcnN0IGRhdGUncyB5ZWFyIGlzIGJlZm9yZSB0aGUgc2Vjb25kXG4gICAqIDAgaWYgdHdvIGdpdmVuIGRhdGVzIGFyZSBpbiB0aGUgc2FtZSB5ZWFyXG4gICAqL1xuICBwdWJsaWMgY29tcGFyZVllYXIoZmlyc3Q6IFQsIHNlY29uZDogVCk6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLmlzVmFsaWQoZmlyc3QpIHx8ICF0aGlzLmlzVmFsaWQoc2Vjb25kKSkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0pTTmF0aXZlRGF0ZTogQ2Fubm90IGNvbXBhcmUgaW52YWxpZCBkYXRlcy4nKTtcbiAgICB9XG5cbiAgICBjb25zdCB5ZWFyTGVmdCA9IHRoaXMuZ2V0WWVhcihmaXJzdCk7XG4gICAgY29uc3QgeWVhclJpZ2h0ID0gdGhpcy5nZXRZZWFyKHNlY29uZCk7XG5cbiAgICBjb25zdCBkaWZmID0geWVhckxlZnQgLSB5ZWFyUmlnaHQ7XG5cbiAgICBpZiAoZGlmZiA8IDApIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9IGVsc2UgaWYgKGRpZmYgPiAwKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEF0dGVtcHRzIHRvIGRlc2VyaWFsaXplIGEgdmFsdWUgdG8gYSB2YWxpZCBkYXRlIG9iamVjdC4gVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBwYXJzaW5nIGluIHRoYXRcbiAgICogZGVzZXJpYWxpemUgc2hvdWxkIG9ubHkgYWNjZXB0IG5vbi1hbWJpZ3VvdXMsIGxvY2FsZS1pbmRlcGVuZGVudCBmb3JtYXRzIChlLmcuIGEgSVNPIDg2MDFcbiAgICogc3RyaW5nKS4gVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgYWxsb3cgYW55IGRlc2VyaWFsaXphdGlvbiwgaXQgc2ltcGx5IGNoZWNrcyB0aGF0XG4gICAqIHRoZSBnaXZlbiB2YWx1ZSBpcyBhbHJlYWR5IGEgdmFsaWQgZGF0ZSBvYmplY3Qgb3IgbnVsbC4gVGhlIGA8bWF0LWRhdGVwaWNrZXI+YCB3aWxsIGNhbGwgdGhpc1xuICAgKiBtZXRob2Qgb24gYWxsIG9mIGl0J3MgYEBJbnB1dCgpYCBwcm9wZXJ0aWVzIHRoYXQgYWNjZXB0IGRhdGVzLiBJdCBpcyB0aGVyZWZvcmUgcG9zc2libGUgdG9cbiAgICogc3VwcG9ydCBwYXNzaW5nIHZhbHVlcyBmcm9tIHlvdXIgYmFja2VuZCBkaXJlY3RseSB0byB0aGVzZSBwcm9wZXJ0aWVzIGJ5IG92ZXJyaWRpbmcgdGhpcyBtZXRob2RcbiAgICogdG8gYWxzbyBkZXNlcmlhbGl6ZSB0aGUgZm9ybWF0IHVzZWQgYnkgeW91ciBiYWNrZW5kLlxuICAgKi9cbiAgcHVibGljIGRlc2VyaWFsaXplKHZhbHVlOiB1bmtub3duIHwgbnVsbCk6IFQgfCBudWxsIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgKHRoaXMuaXNEYXRlSW5zdGFuY2UodmFsdWUpICYmIHRoaXMuaXNWYWxpZCh2YWx1ZSkpKSB7XG4gICAgICByZXR1cm4gdmFsdWUgYXMgVDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaW52YWxpZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGxvY2FsZSB1c2VkIGZvciBhbGwgZGF0ZXMuXG4gICAqL1xuICBwdWJsaWMgc2V0TG9jYWxlKGxvY2FsZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5sb2NhbGUgPSBsb2NhbGU7XG4gICAgdGhpcy5fbG9jYWxlQ2hhbmdlcy5uZXh0KGxvY2FsZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsb2NhbGUgdXNlZCBmb3IgYWxsIGRhdGVzLlxuICAgKi9cbiAgcHVibGljIGdldExvY2FsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmxvY2FsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGFtcCB0aGUgZ2l2ZW4gZGF0ZSBiZXR3ZWVuIG1pbiBhbmQgbWF4IGRhdGVzLlxuICAgKi9cbiAgcHVibGljIGNsYW1wRGF0ZShkYXRlOiBULCBtaW4/OiBUIHwgbnVsbCwgbWF4PzogVCB8IG51bGwpOiBUIHtcbiAgICBpZiAobWluICYmIHRoaXMuY29tcGFyZShkYXRlLCBtaW4pIDwgMCkge1xuICAgICAgcmV0dXJuIG1pbjtcbiAgICB9XG4gICAgaWYgKG1heCAmJiB0aGlzLmNvbXBhcmUoZGF0ZSwgbWF4KSA+IDApIHtcbiAgICAgIHJldHVybiBtYXg7XG4gICAgfVxuICAgIHJldHVybiBkYXRlO1xuICB9XG59XG4iXX0=
@@ -1,4 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- /** InjectionToken for date time picker that can be used to override default format. */
3
- export const OWL_DATE_TIME_FORMATS = new InjectionToken('OWL_DATE_TIME_FORMATS');
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS10aW1lLWZvcm1hdC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3BpY2tlci9zcmMvbGliL2RhdGUtdGltZS9hZGFwdGVyL2RhdGUtdGltZS1mb3JtYXQuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVcvQyx1RkFBdUY7QUFDdkYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQXFCLHVCQUF1QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBPd2xEYXRlVGltZUZvcm1hdHMgPSB7XG4gIGZ1bGxQaWNrZXJJbnB1dDogUGljazxJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucywgJ3llYXInIHwgJ21vbnRoJyB8ICdkYXknIHwgJ2hvdXInIHwgJ21pbnV0ZSc+O1xuICBkYXRlUGlja2VySW5wdXQ6IFBpY2s8SW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnMsICd5ZWFyJyB8ICdtb250aCcgfCAnZGF5Jz47XG4gIHRpbWVQaWNrZXJJbnB1dDogUGljazxJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucywgJ2hvdXInIHwgJ21pbnV0ZSc+O1xuICBtb250aFllYXJMYWJlbDogUGljazxJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucywgJ3llYXInIHwgJ21vbnRoJz47XG4gIGRhdGVBMTF5TGFiZWw6IFBpY2s8SW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnMsICd5ZWFyJyB8ICdtb250aCcgfCAnZGF5Jz47XG4gIG1vbnRoWWVhckExMXlMYWJlbDogUGljazxJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucywgJ3llYXInIHwgJ21vbnRoJz47XG59O1xuXG4vKiogSW5qZWN0aW9uVG9rZW4gZm9yIGRhdGUgdGltZSBwaWNrZXIgdGhhdCBjYW4gYmUgdXNlZCB0byBvdmVycmlkZSBkZWZhdWx0IGZvcm1hdC4gKi9cbmV4cG9ydCBjb25zdCBPV0xfREFURV9USU1FX0ZPUk1BVFMgPSBuZXcgSW5qZWN0aW9uVG9rZW48T3dsRGF0ZVRpbWVGb3JtYXRzPignT1dMX0RBVEVfVElNRV9GT1JNQVRTJyk7XG4iXX0=