@fundamental-ngx/core 0.34.3-rc.14 → 0.34.3-rc.15
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/action-bar/package.json +1 -1
- package/action-sheet/package.json +1 -1
- package/alert/package.json +1 -1
- package/avatar/package.json +1 -1
- package/avatar-group/package.json +1 -1
- package/bar/package.json +1 -1
- package/breadcrumb/package.json +1 -1
- package/busy-indicator/package.json +1 -1
- package/button/package.json +1 -1
- package/calendar/package.json +1 -1
- package/card/package.json +1 -1
- package/carousel/package.json +1 -1
- package/checkbox/package.json +1 -1
- package/combobox/package.json +1 -1
- package/date-picker/package.json +1 -1
- package/datetime/package.json +1 -1
- package/datetime-picker/package.json +1 -1
- package/dialog/package.json +1 -1
- package/dynamic-page/package.json +1 -1
- package/dynamic-side-content/package.json +1 -1
- package/esm2020/time-picker/time-picker.component.mjs +4 -1
- package/facets/package.json +1 -1
- package/feed-input/package.json +1 -1
- package/feed-list-item/package.json +1 -1
- package/fesm2015/fundamental-ngx-core-time-picker.mjs +3 -0
- package/fesm2015/fundamental-ngx-core-time-picker.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-time-picker.mjs +3 -0
- package/fesm2020/fundamental-ngx-core-time-picker.mjs.map +1 -1
- package/file-uploader/package.json +1 -1
- package/fixed-card-layout/package.json +1 -1
- package/flexible-column-layout/package.json +1 -1
- package/form/package.json +1 -1
- package/formatted-text/package.json +1 -1
- package/grid-list/package.json +1 -1
- package/icon/package.json +1 -1
- package/illustrated-message/package.json +1 -1
- package/infinite-scroll/package.json +1 -1
- package/info-label/package.json +1 -1
- package/inline-help/package.json +1 -1
- package/input-group/package.json +1 -1
- package/layout-grid/package.json +1 -1
- package/layout-panel/package.json +1 -1
- package/link/package.json +1 -1
- package/list/package.json +1 -1
- package/menu/package.json +1 -1
- package/message-box/package.json +1 -1
- package/message-strip/package.json +1 -1
- package/message-toast/package.json +1 -1
- package/micro-process-flow/package.json +1 -1
- package/mobile-mode/package.json +1 -1
- package/multi-input/package.json +1 -1
- package/nested-list/package.json +1 -1
- package/notification/package.json +1 -1
- package/object-identifier/package.json +1 -1
- package/object-marker/package.json +1 -1
- package/object-number/package.json +1 -1
- package/object-status/package.json +1 -1
- package/package.json +1 -1
- package/pagination/package.json +1 -1
- package/panel/package.json +1 -1
- package/popover/package.json +1 -1
- package/product-switch/package.json +1 -1
- package/progress-indicator/package.json +1 -1
- package/quick-view/package.json +1 -1
- package/radio/package.json +1 -1
- package/rating-indicator/package.json +1 -1
- package/resizable-card-layout/package.json +1 -1
- package/scroll-spy/package.json +1 -1
- package/scrollbar/package.json +1 -1
- package/segmented-button/package.json +1 -1
- package/select/package.json +1 -1
- package/shared/package.json +1 -1
- package/shellbar/package.json +1 -1
- package/side-navigation/package.json +1 -1
- package/slider/package.json +1 -1
- package/split-button/package.json +1 -1
- package/splitter/package.json +1 -1
- package/status-indicator/package.json +1 -1
- package/step-input/package.json +1 -1
- package/switch/package.json +1 -1
- package/table/package.json +1 -1
- package/tabs/package.json +1 -1
- package/text/package.json +1 -1
- package/tile/package.json +1 -1
- package/time/package.json +1 -1
- package/time-picker/esm2020/time-picker.component.mjs +4 -1
- package/time-picker/fesm2015/fundamental-ngx-core-time-picker.mjs +3 -0
- package/time-picker/fesm2015/fundamental-ngx-core-time-picker.mjs.map +1 -1
- package/time-picker/fesm2020/fundamental-ngx-core-time-picker.mjs +3 -0
- package/time-picker/fesm2020/fundamental-ngx-core-time-picker.mjs.map +1 -1
- package/time-picker/package.json +1 -1
- package/timeline/package.json +1 -1
- package/title/package.json +1 -1
- package/token/package.json +1 -1
- package/toolbar/package.json +1 -1
- package/tree/package.json +1 -1
- package/upload-collection/package.json +1 -1
- package/utils/package.json +1 -1
- package/vertical-navigation/package.json +1 -1
- package/wizard/package.json +1 -1
package/action-bar/package.json
CHANGED
package/alert/package.json
CHANGED
package/avatar/package.json
CHANGED
package/bar/package.json
CHANGED
package/breadcrumb/package.json
CHANGED
package/button/package.json
CHANGED
package/calendar/package.json
CHANGED
package/card/package.json
CHANGED
package/carousel/package.json
CHANGED
package/checkbox/package.json
CHANGED
package/combobox/package.json
CHANGED
package/date-picker/package.json
CHANGED
package/datetime/package.json
CHANGED
package/dialog/package.json
CHANGED
|
@@ -219,6 +219,9 @@ export class TimePickerComponent {
|
|
|
219
219
|
_getFormattedTime(time = this.time) {
|
|
220
220
|
let formattedTime = '';
|
|
221
221
|
try {
|
|
222
|
+
if (this.allowNull && time === null) {
|
|
223
|
+
return '';
|
|
224
|
+
}
|
|
222
225
|
formattedTime = this._dateTimeAdapter.format(time, this.getDisplayFormat());
|
|
223
226
|
}
|
|
224
227
|
catch (e) { }
|
|
@@ -495,4 +498,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
|
|
|
495
498
|
type: ViewChild,
|
|
496
499
|
args: [InputGroupInputDirective, { read: ElementRef }]
|
|
497
500
|
}] } });
|
|
498
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGltZS1waWNrZXIvdGltZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGltZS1waWNrZXIvdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsYUFBYSxFQUFFLGlCQUFpQixFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkcsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBeUIsNEJBQTRCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRyxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFtQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFN0UsT0FBTyxFQUFFLG9DQUFvQyxF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U04saUJBQWlCO3NCQURoQixLQUFLO2dCQVFOLGFBQWE7c0JBRFosS0FBSztnQkFRTixXQUFXO3NCQURWLEtBQUs7Z0JBT04sd0JBQXdCO3NCQUR2QixLQUFLO2dCQU9OLDRCQUE0QjtzQkFEM0IsS0FBSztnQkFPTix3QkFBd0I7c0JBRHZCLEtBQUs7Z0JBT04sc0JBQXNCO3NCQURyQixLQUFLO2dCQUtOLFlBQVk7c0JBRFgsTUFBTTtnQkFLUCxLQUFLO3NCQURKLFNBQVM7dUJBQUMsYUFBYTtnQkFLeEIsa0JBQWtCO3NCQURqQixTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLdEQsYUFBYTtzQkFEWixTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUGxhY2VtZW50LCBGb3JtU3RhdGVzLCBWYWx1ZVN0YXRlQXJpYU1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5pbXBvcnQgeyBEYXRldGltZUFkYXB0ZXIsIERBVEVfVElNRV9GT1JNQVRTLCBEYXRlVGltZUZvcm1hdHMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGF0ZXRpbWUnO1xuaW1wb3J0IHsgVGltZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aW1lJztcbmltcG9ydCB7IFBvcG92ZXJGb3JtTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZm9ybSc7XG5pbXBvcnQgeyBQb3BvdmVyU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9wb3BvdmVyJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5U2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBJbnB1dEdyb3VwSW5wdXREaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaW5wdXQtZ3JvdXAnO1xuXG5pbXBvcnQgeyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxlbWVudGF0aW9uRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5cbmxldCB0aW1lUGlja2VyQ291bnRlciA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtdGltZS1waWNrZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gICAgaG9zdDoge1xuICAgICAgICAnKGJsdXIpJzogJ29uVG91Y2hlZCgpJyxcbiAgICAgICAgY2xhc3M6ICdmZC10aW1lLXBpY2tlciBmZC10aW1lcGlja2VyLWN1c3RvbSdcbiAgICB9LFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRpbWVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRpbWVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgUG9wb3ZlckZvcm1NZXNzYWdlU2VydmljZSxcbiAgICAgICAgUG9wb3ZlclNlcnZpY2VcbiAgICBdLFxuICAgIHN0eWxlVXJsczogWycuL3RpbWUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUaW1lUGlja2VyQ29tcG9uZW50PEQ+XG4gICAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgVmFsaWRhdG9yXG57XG4gICAgLyoqXG4gICAgICogRGF0ZSB0aW1lIG9iamVjdCByZXByZXNlbnRhdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGltZTogRDtcblxuICAgIC8qKiBJZCBhdHRyaWJ1dGUgZm9yIGlucHV0IGVsZW1lbnQgaW5zaWRlIFRpbWVQaWNrZXIgY29tcG9uZW50ICovXG4gICAgQElucHV0KClcbiAgICBpbnB1dElkOiBzdHJpbmc7XG5cbiAgICAvKiogVXNlcyBjb21wYWN0IHRpbWUgcGlja2VyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29tcGFjdD86IGJvb2xlYW47XG5cbiAgICAvKiogRGlzYWJsZXMgdGhlIGNvbXBvbmVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgLyoqIElmIGl0IGlzIG1hbmRhdG9yeSBmaWVsZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVxdWlyZWQgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRvIHNob3cgc3Bpbm5lciBidXR0b25zICovXG4gICAgQElucHV0KClcbiAgICBzcGlubmVyQnV0dG9ucyA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIHNldCB0byBmYWxzZSwgdXNlcyB0aGUgMjQgaG91ciBjbG9jayAoaG91cnMgcmFuZ2luZyBmcm9tIDAgdG8gMjMpLlxuICAgICAqIERlZmF1bHQgdmFsdWUgYmFzZWQgb24gdGhlIGN1cnJlbnQgbG9jYWxlIGZvcm1hdCBvcHRpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG1lcmlkaWFuOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogV2hlbiBzZXQgdG8gZmFsc2UsIGhpZGVzIHRoZSBpbnB1dCBmb3Igc2Vjb25kcy5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGxvY2FsZSBmb3JtYXQgb3B0aW9uXG4gICAgICogKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlTZWNvbmRzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogV2hlbiBzZXQgdG8gZmFsc2UsIGhpZGVzIHRoZSBpbnB1dCBmb3IgbWludXRlcy5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGxvY2FsZSBmb3JtYXQgb3B0aW9uXG4gICAgICogKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlNaW51dGVzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogV2hlbiBzZXQgdG8gZmFsc2UsIGhpZGVzIHRoZSBpbnB1dCBmb3IgaG91cnMuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBiYXNlZCBvbiB0aGUgY3VycmVudCBsb2NhbGUgZm9ybWF0IG9wdGlvblxuICAgICAqICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5SG91cnM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBEZWZhdWx0IHRpbWUgcGlja2VyIHBsYWNlaG9sZGVyIHdoaWNoIGlzIHNldCBkZXBlbmRhbnQgb24gdGhlIGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzLlxuICAgICAqIE90aGVyd2lzZSBJdCBjYW4gYmUgc2V0IHRvIGEgZGVmYXVsdCB2YWx1ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAgIC8qKiBBcmlhIGxhYmVsIGZvciB0aGUgdGltZSBwaWNrZXIgaW5wdXQuICovXG4gICAgQElucHV0KClcbiAgICB0aW1lUGlja2VySW5wdXRMYWJlbCA9ICdUaW1lIHBpY2tlciBpbnB1dCc7XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlIHRpbWUgcGlja2VyIHRvZ2dsZSBidXR0b24uICovXG4gICAgQElucHV0KClcbiAgICB0aW1lUGlja2VyQnV0dG9uTGFiZWwgPSAnT3BlbiBwaWNrZXInO1xuXG4gICAgLyoqIFdoZXRoZXIgYSBudWxsIGlucHV0IGlzIGNvbnNpZGVyZWQgdmFsaWQoc3VjY2VzcykuICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd051bGwgPSB0cnVlO1xuXG4gICAgLyoqIERlZmluZXMgaWYgdGltZSBjb21wb25lbnQgc2hvdWxkIGJlIHVzZWQgd2l0aCB0YWJsZXQgbW9kZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFibGV0ID0gZmFsc2U7XG5cbiAgICAvKiogVGV4dCBkaXNwbGF5ZWQgaW4gbWVzc2FnZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX21lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICB0aGlzLl9wb3BvdmVyRm9ybU1lc3NhZ2UubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21lc3NhZ2U6IHN0cmluZyA9IG51bGw7XG5cbiAgICAvKiogVHlwZSBvZiB0aGUgbWVzc2FnZS4gQ2FuIGJlICdzdWNjZXNzJyB8ICdlcnJvcicgfCAnd2FybmluZycgfCAnaW5mb3JtYXRpb24nICovXG4gICAgQElucHV0KClcbiAgICBzZXQgbWVzc2FnZVR5cGUobWVzc2FnZVR5cGU6IEZvcm1TdGF0ZXMpIHtcbiAgICAgICAgdGhpcy5fbWVzc2FnZVR5cGUgPSBtZXNzYWdlVHlwZTtcbiAgICAgICAgdGhpcy5fcG9wb3ZlckZvcm1NZXNzYWdlLm1lc3NhZ2VUeXBlID0gbWVzc2FnZVR5cGU7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21lc3NhZ2VUeXBlOiBGb3JtU3RhdGVzID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFRoZSB0cmlnZ2VyIGV2ZW50cyB0aGF0IHdpbGwgb3Blbi9jbG9zZSB0aGUgbWVzc2FnZSBib3guXG4gICAgICogQWNjZXB0cyBhbnkgW0hUTUwgRE9NIEV2ZW50c10oaHR0cHM6Ly93d3cudzNzY2hvb2xzLmNvbS9qc3JlZi9kb21fb2JqX2V2ZW50LmFzcCkuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgbWVzc2FnZVRyaWdnZXJzKHRyaWdnZXJzOiBzdHJpbmdbXSkge1xuICAgICAgICB0aGlzLl9tZXNzYWdlVHJpZ2dlcnMgPSB0cmlnZ2VycztcbiAgICAgICAgdGhpcy5fcG9wb3ZlckZvcm1NZXNzYWdlLnRyaWdnZXJzID0gdHJpZ2dlcnM7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21lc3NhZ2VUcmlnZ2Vyczogc3RyaW5nW10gPSBbJ2ZvY3VzaW4nLCAnZm9jdXNvdXQnXTtcblxuICAgIC8qKlxuICAgICAqICBUaGUgcGxhY2VtZW50IG9mIHRoZSBwb3BvdmVyLiBJdCBjYW4gYmUgb25lIG9mOiB0b3AsIHRvcC1zdGFydCwgdG9wLWVuZCwgYm90dG9tLFxuICAgICAqICBib3R0b20tc3RhcnQsIGJvdHRvbS1lbmQsIHJpZ2h0LCByaWdodC1zdGFydCwgcmlnaHQtZW5kLCBsZWZ0LCBsZWZ0LXN0YXJ0LCBsZWZ0LWVuZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHBsYWNlbWVudDogUGxhY2VtZW50ID0gJ2JvdHRvbS1zdGFydCc7XG5cbiAgICAvKiogV2hldGhlciB0byB2YWxpZGF0ZSB0aGUgdGltZSBwaWNrZXIgaW5wdXQuICovXG4gICAgQElucHV0KClcbiAgICB1c2VWYWxpZGF0aW9uID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqICBUaGUgc3RhdGUgb2YgdGhlIGZvcm0gY29udHJvbCAtIGFwcGxpZXMgY3NzIGNsYXNzZXMuXG4gICAgICogIEFsc28gdGhpcyBpcyBhcHBsaWVkIHRvIG1lc3NhZ2UuXG4gICAgICogIENhbiBiZSBgc3VjY2Vzc2AsIGBlcnJvcmAsIGB3YXJuaW5nYCwgYGluZm9ybWF0aW9uYCBvciBibGFuayBmb3IgZGVmYXVsdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdGF0ZShzdGF0ZTogRm9ybVN0YXRlcykge1xuICAgICAgICB0aGlzLl9zdGF0ZSA9IHN0YXRlO1xuICAgICAgICB0aGlzLl9wb3BvdmVyRm9ybU1lc3NhZ2UubWVzc2FnZVR5cGUgPSBzdGF0ZTtcbiAgICB9XG5cbiAgICBnZXQgc3RhdGUoKTogRm9ybVN0YXRlcyB7XG4gICAgICAgIGlmICh0aGlzLl9zdGF0ZSA9PSBudWxsICYmIHRoaXMudXNlVmFsaWRhdGlvbiAmJiB0aGlzLl9pc0ludmFsaWRUaW1lSW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAnZXJyb3InO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfc3RhdGU6IEZvcm1TdGF0ZXMgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBBZGRPbiBCdXR0b24gc2hvdWxkIGJlIGZvY3VzYWJsZVxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGJ1dHRvbkZvY3VzYWJsZSA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIHNldCB0byB0cnVlLCB0aW1lIGlucHV0cyB3b24ndCBhbGxvdyB0byBoYXZlIDEgZGlnaXRcbiAgICAgKiBmb3IgZXhhbXBsZSA5IHdpbGwgYmVjb21lIDA5XG4gICAgICogYnV0IDEyIHdpbGwgYmUga2VwdCBhcyAxMi5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGtlZXBUd29EaWdpdHNUaW1lID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBEaXNwbGF5IGZvcm1hdCBvcHRpb24gdG8gY3VzdG9taXplIHRpbWUgZm9ybWF0IGluIGlucHV0IGNvbnRyb2wuXG4gICAgICogTXVzdCBiZSBhIGZvcm1hdCBvcHRpb24gdGhhdCBpcyB1bmRlcnN0YW5kYWJsZSBieSBEYXRldGltZUFkYXB0ZXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5Rm9ybWF0OiB1bmtub3duO1xuXG4gICAgLyoqXG4gICAgICogUGFyc2UgZm9ybWF0IG9wdGlvbiB0byBjdXN0b21pemUgdGltZSBmb3JtYXQgaW4gaW5wdXQgY29udHJvbC5cbiAgICAgKiBNdXN0IGJlIGEgZm9ybWF0IG9wdGlvbiB0aGF0IGlzIHVuZGVyc3RhbmRhYmxlIGJ5IERhdGV0aW1lQWRhcHRlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHBhcnNlRm9ybWF0OiB1bmtub3duO1xuXG4gICAgLyoqXG4gICAgICogVmFsdWUgc3RhdGUgXCJzdWNjZXNzXCIgYXJpYSBtZXNzYWdlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdmFsdWVTdGF0ZVN1Y2Nlc3NNZXNzYWdlOiBzdHJpbmcgPSB0aGlzLl92YWx1ZVN0YXRlQXJpYU1lc3NhZ2VzU2VydmljZS5zdWNjZXNzO1xuXG4gICAgLyoqXG4gICAgICogVmFsdWUgc3RhdGUgXCJpbmZvcm1hdGlvblwiIGFyaWEgbWVzc2FnZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHZhbHVlU3RhdGVJbmZvcm1hdGlvbk1lc3NhZ2U6IHN0cmluZyA9IHRoaXMuX3ZhbHVlU3RhdGVBcmlhTWVzc2FnZXNTZXJ2aWNlLmluZm9ybWF0aW9uO1xuXG4gICAgLyoqXG4gICAgICogVmFsdWUgc3RhdGUgXCJ3YXJuaW5nXCIgYXJpYSBtZXNzYWdlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdmFsdWVTdGF0ZVdhcm5pbmdNZXNzYWdlOiBzdHJpbmcgPSB0aGlzLl92YWx1ZVN0YXRlQXJpYU1lc3NhZ2VzU2VydmljZS53YXJuaW5nO1xuXG4gICAgLyoqXG4gICAgICogVmFsdWUgc3RhdGUgXCJlcnJvclwiIGFyaWEgbWVzc2FnZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHZhbHVlU3RhdGVFcnJvck1lc3NhZ2U6IHN0cmluZyA9IHRoaXMuX3ZhbHVlU3RhdGVBcmlhTWVzc2FnZXNTZXJ2aWNlLmVycm9yO1xuXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc3RhdGUgb2YgdGhlIGlzT3BlbiBwcm9wZXJ0eSBjaGFuZ2VzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGlzT3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChUaW1lQ29tcG9uZW50KVxuICAgIGNoaWxkOiBUaW1lQ29tcG9uZW50PEQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdpbnB1dEdyb3VwQ29tcG9uZW50JywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgX2lucHV0R3JvdXBFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKElucHV0R3JvdXBJbnB1dERpcmVjdGl2ZSwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgX2lucHV0RWxlbWVudDogRWxlbWVudFJlZjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBXaGV0aGVyIHRoZSBpbnB1dCB0aW1lIGlzIHZhbGlkKHN1Y2Nlc3MpLiBJbnRlcm5hbCB1c2UuXG4gICAgICovXG4gICAgX2lzSW52YWxpZFRpbWVJbnB1dCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEluZGljYXRlcyB3aGVuIHBvcG92ZXIgaXMgb3BlbmVkXG4gICAgICovXG4gICAgaXNPcGVuOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbWVyaWRpYW46IGJvb2xlYW47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNwbGF5U2Vjb25kczogYm9vbGVhbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rpc3BsYXlNaW51dGVzOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzcGxheUhvdXJzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIElucHV0IGZpZWxkIHZhbHVlXG4gICAgICovXG4gICAgX2lucHV0VGltZVZhbHVlID0gJyc7XG5cbiAgICBfZm9ybVZhbHVlU3RhdGVNZXNzYWdlSWQgPSBgZmQtdGltZS1waWNrZXItZm9ybS1tZXNzYWdlLSR7dGltZVBpY2tlckNvdW50ZXIrK31gO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9vbkRlc3Ryb3kkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgb25DaGFuZ2U6IChfOiBEKSA9PiB2b2lkID0gKCkgPT4ge307XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9wbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5wbGFjZWhvbGRlciB8fCB0aGlzLl9nZXRQbGFjZWhvbGRlcigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgLy8gVXNlIEBPcHRpb25hbCB0byBhdm9pZCBhbmd1bGFyIGluamVjdGlvbiBlcnJvciBtZXNzYWdlIGFuZCB0aHJvdyBvdXIgb3duIHdoaWNoIGlzIG1vcmUgcHJlY2lzZSBvbmVcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZGF0ZVRpbWVBZGFwdGVyOiBEYXRldGltZUFkYXB0ZXI8RD4sXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoREFURV9USU1FX0ZPUk1BVFMpIHByaXZhdGUgX2RhdGVUaW1lRm9ybWF0czogRGF0ZVRpbWVGb3JtYXRzLFxuICAgICAgICBwcml2YXRlIF9wb3BvdmVyRm9ybU1lc3NhZ2U6IFBvcG92ZXJGb3JtTWVzc2FnZVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2NvbnRlbnREZW5zaXR5U2VydmljZTogQ29udGVudERlbnNpdHlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF92YWx1ZVN0YXRlQXJpYU1lc3NhZ2VzU2VydmljZTogVmFsdWVTdGF0ZUFyaWFNZXNzYWdlU2VydmljZVxuICAgICkge1xuICAgICAgICBpZiAoIXRoaXMuX2RhdGVUaW1lQWRhcHRlcikge1xuICAgICAgICAgICAgdGhyb3cgY3JlYXRlTWlzc2luZ0RhdGVJbXBsZW1lbnRhdGlvbkVycm9yKCdEYXRlVGltZUFkYXB0ZXInKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX2RhdGVUaW1lRm9ybWF0cykge1xuICAgICAgICAgICAgdGhyb3cgY3JlYXRlTWlzc2luZ0RhdGVJbXBsZW1lbnRhdGlvbkVycm9yKCdEQVRFX1RJTUVfRk9STUFUUycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NhbGN1bGF0ZVRpbWVPcHRpb25zKCk7XG4gICAgICAgIHRoaXMuX2Zvcm1hdFRpbWVJbnB1dEZpZWxkKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuY29tcGFjdCA9PT0gdW5kZWZpbmVkICYmIHRoaXMuX2NvbnRlbnREZW5zaXR5U2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgdGhpcy5fY29udGVudERlbnNpdHlTZXJ2aWNlLl9pc0NvbXBhY3REZW5zaXR5LnN1YnNjcmliZSgoaXNDb21wYWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcGFjdCA9IGlzQ29tcGFjdDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kYXRlVGltZUFkYXB0ZXIubG9jYWxlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZVRpbWVPcHRpb25zKCk7XG4gICAgICAgICAgICB0aGlzLl9mb3JtYXRUaW1lSW5wdXRGaWVsZCgpO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIFsnZGlzcGxheUhvdXJzJywgJ2Rpc3BsYXlNaW51dGVzJywgJ2Rpc3BsYXlTZWNvbmRzJywgJ21lcmlkaWFuJywgJ2Rpc3BsYXlGb3JtYXQnXS5zb21lKFxuICAgICAgICAgICAgICAgIChjaGFuZ2UpID0+IGNoYW5nZSBpbiBjaGFuZ2VzXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlVGltZU9wdGlvbnMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlcy5kaXNwbGF5Rm9ybWF0KSB7XG4gICAgICAgICAgICB0aGlzLl9mb3JtYXRUaW1lSW5wdXRGaWVsZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmluaXRpYWxpc2VWYXJpYWJsZXNJbk1lc3NhZ2VTZXJ2aWNlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50cyBWYWxpZGF0b3IgSW50ZXJmYWNlLCBhZGRzIHZhbGlkYXRpb24gc3VwcG9ydCBmb3IgZm9ybXNcbiAgICAgKi9cbiAgICB2YWxpZGF0ZSgpOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICB9IHtcbiAgICAgICAgaWYgKHRoaXMuX2lzSW52YWxpZFRpbWVJbnB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0aW1lVmFsaWRhdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgdGltZSBpbnB1dC5cbiAgICAgKi9cbiAgICBnZXRUaW1lKCk6IEQge1xuICAgICAgICByZXR1cm4gdGhpcy50aW1lO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZm9ybWF0IG9wdGlvbnMgdG8gYmUgdXNlZCBkdXJpbmcgdGltZSBmb3JtYXR0aW5nLlxuICAgICAqL1xuICAgIGdldERpc3BsYXlGb3JtYXQoKTogdW5rbm93biB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlGb3JtYXQgfHwgdGhpcy5fZGF0ZVRpbWVGb3JtYXRzLmRpc3BsYXkudGltZUlucHV0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZm9ybWF0IG9wdGlvbnMgdG8gYmUgdXNlZCBkdXJpbmcgdGltZSBwYXJzaW5nLlxuICAgICAqL1xuICAgIGdldFBhcnNlRm9ybWF0KCk6IHVua25vd24ge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUZvcm1hdCB8fCB0aGlzLl9kYXRlVGltZUZvcm1hdHMucGFyc2UudGltZUlucHV0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2dldEZvcm1hdHRlZFRpbWUodGltZSA9IHRoaXMudGltZSk6IHN0cmluZyB7XG4gICAgICAgIGxldCBmb3JtYXR0ZWRUaW1lID0gJyc7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvcm1hdHRlZFRpbWUgPSB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuZm9ybWF0KHRpbWUsIHRoaXMuZ2V0RGlzcGxheUZvcm1hdCgpKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cblxuICAgICAgICByZXR1cm4gZm9ybWF0dGVkVGltZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQGhpZGRlblxuICAgICAqICBXaGVuIHRoZSBvcGVuIHN0YXRlIGlzIGNoYW5nZWQsIHRoZXJlIHNob3VsZCBiZSBhdCBsZWFzdCBvbmUgYWN0aXZlIGl0ZW0sIHdoaWNoIGJ5IGRlZmF1bHQgaXMgaG91ci5cbiAgICAgKi9cbiAgICBfc2V0SXNPcGVuKGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmlzT3BlbiA9IGlzT3BlbjtcbiAgICAgICAgdGhpcy5fb25PcGVuU3RhdGVDaGFuZ2VkKGlzT3Blbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFRpbWUgaW5wdXQgZmllbGQgY2hhbmdlcyBoYW5kbGVyXG4gICAgICovXG4gICAgX3RpbWVJbnB1dENoYW5nZWQoaW5wdXRWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlucHV0VmFsdWUgPSBpbnB1dFZhbHVlLnRyaW0oKTtcblxuICAgICAgICAvLyBjaGVjayBpZiB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkXG4gICAgICAgIGlmICh0aGlzLl9pbnB1dFRpbWVWYWx1ZSA9PT0gaW5wdXRWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faW5wdXRUaW1lVmFsdWUgPSBpbnB1dFZhbHVlO1xuXG4gICAgICAgIGlmIChpbnB1dFZhbHVlID09PSAnJykge1xuICAgICAgICAgICAgdGhpcy50aW1lID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX2lzSW52YWxpZFRpbWVJbnB1dCA9ICF0aGlzLmFsbG93TnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbnB1dFZhbHVlICE9PSAnJykge1xuICAgICAgICAgICAgdGhpcy50aW1lID0gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLnBhcnNlKGlucHV0VmFsdWUsIHRoaXMuZ2V0UGFyc2VGb3JtYXQoKSk7XG4gICAgICAgICAgICB0aGlzLl9pc0ludmFsaWRUaW1lSW5wdXQgPSAhdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmlzVmFsaWQodGhpcy50aW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy50aW1lKTtcblxuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfaW5wdXRHcm91cENsaWNrZWQoJGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc09wZW4gJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuX3NldElzT3Blbih0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FkZE9uQnV0dG9uQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9zZXRJc09wZW4oIXRoaXMuaXNPcGVuKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3BvcG92ZXJDbG9zZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NldElzT3BlbihmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZ2V0UGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJldFZhbCA9ICcnO1xuXG4gICAgICAgIGlmICh0aGlzLl9kaXNwbGF5SG91cnMpIHtcbiAgICAgICAgICAgIHJldFZhbCA9IHJldFZhbCArICdoaCc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlNaW51dGVzKSB7XG4gICAgICAgICAgICByZXRWYWwgPSByZXRWYWwgKyAnOm1tJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fZGlzcGxheVNlY29uZHMpIHtcbiAgICAgICAgICAgIHJldFZhbCA9IHJldFZhbCArICc6c3MnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9tZXJpZGlhbikge1xuICAgICAgICAgICAgcmV0VmFsID0gcmV0VmFsICsgJyBhbS9wbSc7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RpbWVDb21wb25lbnRWYWx1ZUNoYW5nZWQodGltZTogRCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmRhdGVUaW1lc0VxdWFsKHRpbWUsIHRoaXMudGltZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pbnB1dFRpbWVWYWx1ZSA9IHRoaXMuX2dldEZvcm1hdHRlZFRpbWUodGltZSk7XG4gICAgICAgIHRoaXMudGltZSA9IHRpbWU7XG4gICAgICAgIHRoaXMuX2lzSW52YWxpZFRpbWVJbnB1dCA9ICF0aGlzLl9kYXRlVGltZUFkYXB0ZXIuaXNWYWxpZCh0aW1lKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aW1lKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8vICNyZWdpb24gQ29udHJvbFZhbHVlQWNjZXNzb3JcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHRpbWU6IEQpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB3cml0ZVZhbHVlKHRpbWU6IEQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aW1lKSB7XG4gICAgICAgICAgICB0aGlzLnRpbWUgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5faW5wdXRUaW1lVmFsdWUgPSAnJztcbiAgICAgICAgICAgIHRoaXMuX2lzSW52YWxpZFRpbWVJbnB1dCA9ICF0aGlzLmFsbG93TnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudGltZSA9IHRpbWU7XG4gICAgICAgICAgICB0aGlzLl9pbnB1dFRpbWVWYWx1ZSA9IHRoaXMuX2dldEZvcm1hdHRlZFRpbWUodGltZSk7XG4gICAgICAgICAgICB0aGlzLl9pc0ludmFsaWRUaW1lSW5wdXQgPSAhdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmlzVmFsaWQodGltZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBDb250cm9sVmFsdWVBY2Nlc3NvclxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZm9ybWF0VGltZUlucHV0RmllbGQodGltZSA9IHRoaXMudGltZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAodGhpcy5faW5wdXRUaW1lVmFsdWUgPSB0aGlzLl9nZXRGb3JtYXR0ZWRUaW1lKHRpbWUpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jaGFuZ2VNZXNzYWdlVmlzaWJpbGl0eSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLl9wb3BvdmVyRm9ybU1lc3NhZ2UuaGlkZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcG9wb3ZlckZvcm1NZXNzYWdlLnNob3coKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uT3BlblN0YXRlQ2hhbmdlZChpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdChpc09wZW4pO1xuICAgICAgICB0aGlzLl9jaGFuZ2VNZXNzYWdlVmlzaWJpbGl0eSgpO1xuICAgICAgICBpZiAoaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLmNoaWxkLmZvY3VzQWN0aXZlQ29sdW1uKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZm9jdXMgaW5wdXQgY29udHJvbCBldmVyeSB0aW1lIHBvcHVwIGlzIGNsb3NlZFxuICAgICAgICBpZiAoIWlzT3BlbiAmJiB0aGlzLl9pbnB1dEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NhbGN1bGF0ZVRpbWVPcHRpb25zKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBmb3JtYXQgPSB0aGlzLmdldERpc3BsYXlGb3JtYXQoKTtcblxuICAgICAgICAvLyBkZWZhdWx0IG1lcmlkaWFuIG9wdGlvbiBiYXNlZCBvbiBmb3JtYXQgb3B0aW9uXG4gICAgICAgIHRoaXMuX21lcmlkaWFuID1cbiAgICAgICAgICAgIHRoaXMubWVyaWRpYW4gIT0gbnVsbCA/IHRoaXMubWVyaWRpYW4gOiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuaXNUaW1lRm9ybWF0SW5jbHVkZXNEYXlQZXJpb2QoZm9ybWF0KTtcblxuICAgICAgICAvLyBkZWZhdWx0IHNlY29uZHMgb3B0aW9uIGJhc2VkIG9uIGZvcm1hdCBvcHRpb25cbiAgICAgICAgdGhpcy5fZGlzcGxheVNlY29uZHMgPVxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5U2Vjb25kcyAhPSBudWxsXG4gICAgICAgICAgICAgICAgPyB0aGlzLmRpc3BsYXlTZWNvbmRzXG4gICAgICAgICAgICAgICAgOiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuaXNUaW1lRm9ybWF0SW5jbHVkZXNTZWNvbmRzKGZvcm1hdCk7XG5cbiAgICAgICAgLy8gZGVmYXVsdCBtaW51dGVzIG9wdGlvbiBiYXNlZCBvbiBmb3JtYXQgb3B0aW9uXG4gICAgICAgIHRoaXMuX2Rpc3BsYXlNaW51dGVzID1cbiAgICAgICAgICAgIHRoaXMuZGlzcGxheU1pbnV0ZXMgIT0gbnVsbFxuICAgICAgICAgICAgICAgID8gdGhpcy5kaXNwbGF5TWludXRlc1xuICAgICAgICAgICAgICAgIDogdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmlzVGltZUZvcm1hdEluY2x1ZGVzTWludXRlcyhmb3JtYXQpO1xuXG4gICAgICAgIC8vIGRlZmF1bHQgaG91cnMgb3B0aW9uIGJhc2VkIG9uIGZvcm1hdCBvcHRpb25cbiAgICAgICAgdGhpcy5fZGlzcGxheUhvdXJzID1cbiAgICAgICAgICAgIHRoaXMuZGlzcGxheUhvdXJzICE9IG51bGwgPyB0aGlzLmRpc3BsYXlIb3VycyA6IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5pc1RpbWVGb3JtYXRJbmNsdWRlc0hvdXJzKGZvcm1hdCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIGluaXRpYWxpc2VWYXJpYWJsZXNJbk1lc3NhZ2VTZXJ2aWNlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9wb3BvdmVyRm9ybU1lc3NhZ2UuaW5pdCh0aGlzLl9pbnB1dEdyb3VwRWxlbWVudCk7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJGb3JtTWVzc2FnZS5tZXNzYWdlID0gdGhpcy5fbWVzc2FnZTtcbiAgICAgICAgdGhpcy5fcG9wb3ZlckZvcm1NZXNzYWdlLnRyaWdnZXJzID0gdGhpcy5fbWVzc2FnZVRyaWdnZXJzO1xuICAgICAgICB0aGlzLl9wb3BvdmVyRm9ybU1lc3NhZ2UubWVzc2FnZVR5cGUgPSB0aGlzLl9zdGF0ZTtcbiAgICB9XG59XG4iLCI8ZmQtcG9wb3ZlclxuICAgIFsoaXNPcGVuKV09XCJpc09wZW5cIlxuICAgIChpc09wZW5DaGFuZ2UpPVwiX29uT3BlblN0YXRlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICBbdHJpZ2dlcnNdPVwiW11cIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW3BsYWNlbWVudF09XCJwbGFjZW1lbnRcIlxuICAgIFtjbG9zZU9uRXNjYXBlS2V5XT1cInRydWVcIlxuICAgIFtmb2N1c0F1dG9DYXB0dXJlXT1cImZhbHNlXCJcbiAgICBbZm9jdXNUcmFwcGVkXT1cInRydWVcIlxuPlxuICAgIDxmZC1wb3BvdmVyLWNvbnRyb2w+XG4gICAgICAgIDxmZC1pbnB1dC1ncm91cFxuICAgICAgICAgICAgI2lucHV0R3JvdXBDb21wb25lbnRcbiAgICAgICAgICAgIFtjb21wYWN0XT1cImNvbXBhY3RcIlxuICAgICAgICAgICAgKGFkZE9uQnV0dG9uQ2xpY2tlZCk9XCJfYWRkT25CdXR0b25DbGlja2VkKClcIlxuICAgICAgICAgICAgW2J1dHRvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtzdGF0ZV09XCJzdGF0ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2J1dHRvbkZvY3VzYWJsZV09XCJidXR0b25Gb2N1c2FibGVcIlxuICAgICAgICAgICAgW2lzQ29udHJvbF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtpc0V4cGFuZGVkXT1cImlzT3BlblwiXG4gICAgICAgICAgICBbZ2x5cGhBcmlhTGFiZWxdPVwidGltZVBpY2tlckJ1dHRvbkxhYmVsXCJcbiAgICAgICAgICAgIGdseXBoPVwiZm9iLXdhdGNoXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtaW5wdXRcIlxuICAgICAgICAgICAgICAgIGZkLWlucHV0LWdyb3VwLWlucHV0XG4gICAgICAgICAgICAgICAgW2NvbXBhY3RdPVwiY29tcGFjdFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIl9pbnB1dFRpbWVWYWx1ZVwiXG4gICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cIl90aW1lSW5wdXRDaGFuZ2VkKCRldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIl90aW1lSW5wdXRDaGFuZ2VkKCRldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlKVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5pZF09XCJpbnB1dElkXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiX3BsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInRpbWVQaWNrZXJJbnB1dExhYmVsXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIl9mb3JtVmFsdWVTdGF0ZU1lc3NhZ2VJZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2ZkLWlucHV0LWdyb3VwPlxuICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuICAgIDxmZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgIDxmZC1mb3JtLW1lc3NhZ2UgW2VtYmVkZGVkXT1cInRydWVcIiAqbmdJZj1cIl9tZXNzYWdlXCIgW3R5cGVdPVwic3RhdGVcIj5cbiAgICAgICAgICAgIHt7IF9tZXNzYWdlIH19XG4gICAgICAgIDwvZmQtZm9ybS1tZXNzYWdlPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDxmZC10aW1lXG4gICAgICAgICAgICAqbmdJZj1cImlzT3BlblwiXG4gICAgICAgICAgICBbdGFibGV0XT1cInRhYmxldFwiXG4gICAgICAgICAgICBbY29tcGFjdF09XCJjb21wYWN0XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBba2VlcFR3b0RpZ2l0c109XCJrZWVwVHdvRGlnaXRzVGltZVwiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJ0aW1lXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIl90aW1lQ29tcG9uZW50VmFsdWVDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgW21lcmlkaWFuXT1cIl9tZXJpZGlhblwiXG4gICAgICAgICAgICBbZGlzcGxheUhvdXJzXT1cIl9kaXNwbGF5SG91cnNcIlxuICAgICAgICAgICAgW2Rpc3BsYXlNaW51dGVzXT1cIl9kaXNwbGF5TWludXRlc1wiXG4gICAgICAgICAgICBbZGlzcGxheVNlY29uZHNdPVwiX2Rpc3BsYXlTZWNvbmRzXCJcbiAgICAgICAgICAgIFtzcGlubmVyQnV0dG9uc109XCJzcGlubmVyQnV0dG9uc1wiXG4gICAgICAgID48L2ZkLXRpbWU+XG4gICAgPC9mZC1wb3BvdmVyLWJvZHk+XG48L2ZkLXBvcG92ZXI+XG5cbjxkaXYgc3R5bGU9XCJkaXNwbGF5OiBub25lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgPGRpdiBbYXR0ci5pZF09XCJfZm9ybVZhbHVlU3RhdGVNZXNzYWdlSWRcIiBhcmlhLWF0b21pYz1cInRydWVcIiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwic3RhdGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzdWNjZXNzJ1wiPnt7IHZhbHVlU3RhdGVTdWNjZXNzTWVzc2FnZSB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2luZm9ybWF0aW9uJ1wiPnt7IHZhbHVlU3RhdGVJbmZvcm1hdGlvbk1lc3NhZ2UgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid3YXJuaW5nJ1wiPnt7IHZhbHVlU3RhdGVXYXJuaW5nTWVzc2FnZSB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Vycm9yJ1wiPnt7IHZhbHVlU3RhdGVFcnJvck1lc3NhZ2UgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIHt7IF9tZXNzYWdlIH19XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
501
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGltZS1waWNrZXIvdGltZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdGltZS1waWNrZXIvdGltZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsYUFBYSxFQUFFLGlCQUFpQixFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkcsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBeUIsNEJBQTRCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRyxPQUFPLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFtQixNQUFNLGdDQUFnQyxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFN0UsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7Ozs7Ozs7OztBQUVoRSxJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQTJCMUIsTUFBTSxPQUFPLG1CQUFtQjtJQXFRNUIsY0FBYztJQUNkLFlBQ1ksa0JBQXFDO0lBQzdDLHFHQUFxRztJQUNqRixnQkFBb0MsRUFDVCxnQkFBaUMsRUFDeEUsbUJBQThDLEVBQ2xDLHNCQUE2QyxFQUN6RCw4QkFBNEQ7UUFONUQsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUV6QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBQ1QscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUN4RSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTJCO1FBQ2xDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBdUI7UUFDekQsbUNBQThCLEdBQTlCLDhCQUE4QixDQUE4QjtRQXhQeEUsK0JBQStCO1FBRS9CLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsc0NBQXNDO1FBRXRDLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBcUN0Qiw0Q0FBNEM7UUFFNUMseUJBQW9CLEdBQUcsbUJBQW1CLENBQUM7UUFFM0Msb0RBQW9EO1FBRXBELDBCQUFxQixHQUFHLGFBQWEsQ0FBQztRQUV0Qyx5REFBeUQ7UUFFekQsY0FBUyxHQUFHLElBQUksQ0FBQztRQUVqQixnRUFBZ0U7UUFFaEUsV0FBTSxHQUFHLEtBQUssQ0FBQztRQVNmLGNBQWM7UUFDZCxhQUFRLEdBQVcsSUFBSSxDQUFDO1FBU3hCLGNBQWM7UUFDZCxpQkFBWSxHQUFlLElBQUksQ0FBQztRQVloQyxjQUFjO1FBQ2QscUJBQWdCLEdBQWEsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFckQ7OztXQUdHO1FBRUgsY0FBUyxHQUFjLGNBQWMsQ0FBQztRQUV0QyxpREFBaUQ7UUFFakQsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFvQmIsV0FBTSxHQUFlLElBQUksQ0FBQztRQUVsQzs7O1dBR0c7UUFFSCxvQkFBZSxHQUFHLElBQUksQ0FBQztRQUV2Qjs7OztXQUlHO1FBRUgsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBZ0IxQjs7V0FFRztRQUVILDZCQUF3QixHQUFXLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLENBQUM7UUFFL0U7O1dBRUc7UUFFSCxpQ0FBNEIsR0FBVyxJQUFJLENBQUMsOEJBQThCLENBQUMsV0FBVyxDQUFDO1FBRXZGOztXQUVHO1FBRUgsNkJBQXdCLEdBQVcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLE9BQU8sQ0FBQztRQUUvRTs7V0FFRztRQUVILDJCQUFzQixHQUFXLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLENBQUM7UUFFM0UsbUVBQW1FO1FBRW5FLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQWMzQzs7O1dBR0c7UUFDSCx3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFvQjVCOzs7V0FHRztRQUNILG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBRXJCLDZCQUF3QixHQUFHLCtCQUErQixpQkFBaUIsRUFBRSxFQUFFLENBQUM7UUFFaEYsY0FBYztRQUNHLGdCQUFXLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFFbEUsY0FBYztRQUNOLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU1QyxjQUFjO1FBQ2QsYUFBUSxHQUFtQixHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDcEMsY0FBYztRQUNkLGNBQVMsR0FBZSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFpQjdCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDeEIsTUFBTSxvQ0FBb0MsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ2pFO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN4QixNQUFNLG9DQUFvQyxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDbkU7SUFDTCxDQUFDO0lBck1ELGdDQUFnQztJQUNoQyxJQUNJLE9BQU8sQ0FBQyxPQUFlO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQy9DLENBQUM7SUFLRCxrRkFBa0Y7SUFDbEYsSUFDSSxXQUFXLENBQUMsV0FBdUI7UUFDbkMsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDaEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDdkQsQ0FBQztJQUtEOzs7T0FHRztJQUNILElBQ0ksZUFBZSxDQUFDLFFBQWtCO1FBQ2xDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUM7UUFDakMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDakQsQ0FBQztJQWdCRDs7OztPQUlHO0lBQ0gsSUFDSSxLQUFLLENBQUMsS0FBaUI7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksS0FBSztRQUNMLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDdkUsT0FBTyxPQUFPLENBQUM7U0FDbEI7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQW9IRCxjQUFjO0lBQ2QsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBb0JELFFBQVE7UUFDSixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUU3QixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUMzRCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FDbkIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUNsRSxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztnQkFDekIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzNDLENBQUMsQ0FBQyxDQUNMLENBQUM7U0FDTDtRQUVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2pGLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDOUIsSUFDSSxDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUNsRixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FDaEMsRUFDSDtZQUNFLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1NBQ2hDO1FBQ0QsSUFBSSxPQUFPLENBQUMsYUFBYSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1NBQ2hDO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxXQUFXO1FBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELGNBQWM7SUFDZCxlQUFlO1FBQ1gsSUFBSSxDQUFDLG1DQUFtQyxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVE7UUFHSixJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUMxQixPQUFPO2dCQUNILGNBQWMsRUFBRTtvQkFDWixLQUFLLEVBQUUsS0FBSztpQkFDZjthQUNKLENBQUM7U0FDTDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU87UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCO1FBQ1osT0FBTyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7T0FFRztJQUNILGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDckUsQ0FBQztJQUVELGNBQWM7SUFDZCxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUk7UUFDOUIsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBRXZCLElBQUk7WUFDQSxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDakMsT0FBTyxFQUFFLENBQUM7YUFDYjtZQUNELGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1NBQy9FO1FBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRTtRQUVkLE9BQU8sYUFBYSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVLENBQUMsTUFBZTtRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7T0FHRztJQUNILGlCQUFpQixDQUFDLFVBQWtCO1FBQ2hDLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFL0Isa0NBQWtDO1FBQ2xDLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxVQUFVLEVBQUU7WUFDckMsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxVQUFVLENBQUM7UUFFbEMsSUFBSSxVQUFVLEtBQUssRUFBRSxFQUFFO1lBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDOUM7UUFFRCxJQUFJLFVBQVUsS0FBSyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztZQUMzRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4RTtRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXpCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsY0FBYztJQUNkLGtCQUFrQixDQUFDLE1BQWtCO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ2QsbUJBQW1CO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNqQztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ2QsY0FBYztRQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELGNBQWM7SUFDZCxlQUFlO1FBQ1gsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWhCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNwQixNQUFNLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQztTQUMxQjtRQUNELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN0QixNQUFNLEdBQUcsTUFBTSxHQUFHLEtBQUssQ0FBQztTQUMzQjtRQUNELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN0QixNQUFNLEdBQUcsTUFBTSxHQUFHLEtBQUssQ0FBQztTQUMzQjtRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixNQUFNLEdBQUcsTUFBTSxHQUFHLFFBQVEsQ0FBQztTQUM5QjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxjQUFjO0lBQ2QsMEJBQTBCLENBQUMsSUFBTztRQUM5QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN2RCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCwrQkFBK0I7SUFFL0IsY0FBYztJQUNkLGdCQUFnQixDQUFDLEVBQXFCO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxjQUFjO0lBQ2QsaUJBQWlCLENBQUMsRUFBTztRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsY0FBYztJQUNkLGdCQUFnQixDQUFDLFVBQW1CO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO1FBQzNCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsY0FBYztJQUNkLFVBQVUsQ0FBQyxJQUFPO1FBQ2QsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNQLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDOUM7YUFBTTtZQUNILElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkU7UUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELGtDQUFrQztJQUVsQyxjQUFjO0lBQ2QscUJBQXFCLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJO1FBQ2xDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxjQUFjO0lBQ2Qsd0JBQXdCO1FBQ3BCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNiLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNuQzthQUFNO1lBQ0gsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO1NBQ25DO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxtQkFBbUIsQ0FBQyxNQUFlO1FBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksTUFBTSxFQUFFO1lBQ1IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUNsQztRQUNELGlEQUFpRDtRQUNqRCxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDL0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDNUM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNOLHFCQUFxQjtRQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUV2QyxpREFBaUQ7UUFDakQsSUFBSSxDQUFDLFNBQVM7WUFDVixJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLDZCQUE2QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXhHLGdEQUFnRDtRQUNoRCxJQUFJLENBQUMsZUFBZTtZQUNoQixJQUFJLENBQUMsY0FBYyxJQUFJLElBQUk7Z0JBQ3ZCLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYztnQkFDckIsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwRSxnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDLGVBQWU7WUFDaEIsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJO2dCQUN2QixDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWM7Z0JBQ3JCLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsMkJBQTJCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFcEUsOENBQThDO1FBQzlDLElBQUksQ0FBQyxhQUFhO1lBQ2QsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoSCxDQUFDO0lBRUQsY0FBYztJQUNOLG1DQUFtQztRQUN2QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNqRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUMxRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkQsQ0FBQzs7Z0hBaGpCUSxtQkFBbUIsa0dBMFFKLGlCQUFpQjtvR0ExUWhDLG1CQUFtQix1bUNBbEJqQjtRQUNQO1lBQ0ksT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO1lBQ2xELEtBQUssRUFBRSxJQUFJO1NBQ2Q7UUFDRDtZQUNJLE9BQU8sRUFBRSxhQUFhO1lBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7WUFDbEQsS0FBSyxFQUFFLElBQUk7U0FDZDtRQUNELHlCQUF5QjtRQUN6QixjQUFjO0tBQ2pCLGlFQStNVSxhQUFhLHVJQUlrQixVQUFVLDZEQUl6Qyx3QkFBd0IsMkJBQVUsVUFBVSxrREM5UTNELDY2RkEwRUE7MkZEZGEsbUJBQW1CO2tCQXpCL0IsU0FBUzsrQkFDSSxnQkFBZ0IsUUFFcEI7d0JBQ0YsUUFBUSxFQUFFLGFBQWE7d0JBQ3ZCLEtBQUssRUFBRSxxQ0FBcUM7cUJBQy9DLGFBQ1U7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUM7NEJBQ2xELEtBQUssRUFBRSxJQUFJO3lCQUNkO3dCQUNEOzRCQUNJLE9BQU8sRUFBRSxhQUFhOzRCQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7d0JBQ0QseUJBQXlCO3dCQUN6QixjQUFjO3FCQUNqQixpQkFFYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNOzswQkEyUTFDLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsaUJBQWlCOzswQkFFcEMsUUFBUTt1RkFyUWIsSUFBSTtzQkFESCxLQUFLO2dCQUtOLE9BQU87c0JBRE4sS0FBSztnQkFLTixPQUFPO3NCQUROLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixjQUFjO3NCQURiLEtBQUs7Z0JBUU4sUUFBUTtzQkFEUCxLQUFLO2dCQVFOLGNBQWM7c0JBRGIsS0FBSztnQkFRTixjQUFjO3NCQURiLEtBQUs7Z0JBUU4sWUFBWTtzQkFEWCxLQUFLO2dCQVFOLFdBQVc7c0JBRFYsS0FBSztnQkFLTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBS04scUJBQXFCO3NCQURwQixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixNQUFNO3NCQURMLEtBQUs7Z0JBS0YsT0FBTztzQkFEVixLQUFLO2dCQVdGLFdBQVc7c0JBRGQsS0FBSztnQkFjRixlQUFlO3NCQURsQixLQUFLO2dCQWNOLFNBQVM7c0JBRFIsS0FBSztnQkFLTixhQUFhO3NCQURaLEtBQUs7Z0JBU0YsS0FBSztzQkFEUixLQUFLO2dCQW9CTixlQUFlO3NCQURkLEtBQUs7Z0JBU04saUJBQWlCO3NCQURoQixLQUFLO2dCQVFOLGFBQWE7c0JBRFosS0FBSztnQkFRTixXQUFXO3NCQURWLEtBQUs7Z0JBT04sd0JBQXdCO3NCQUR2QixLQUFLO2dCQU9OLDRCQUE0QjtzQkFEM0IsS0FBSztnQkFPTix3QkFBd0I7c0JBRHZCLEtBQUs7Z0JBT04sc0JBQXNCO3NCQURyQixLQUFLO2dCQUtOLFlBQVk7c0JBRFgsTUFBTTtnQkFLUCxLQUFLO3NCQURKLFNBQVM7dUJBQUMsYUFBYTtnQkFLeEIsa0JBQWtCO3NCQURqQixTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFLdEQsYUFBYTtzQkFEWixTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgUGxhY2VtZW50LCBGb3JtU3RhdGVzLCBWYWx1ZVN0YXRlQXJpYU1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NoYXJlZCc7XG5pbXBvcnQgeyBEYXRldGltZUFkYXB0ZXIsIERBVEVfVElNRV9GT1JNQVRTLCBEYXRlVGltZUZvcm1hdHMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGF0ZXRpbWUnO1xuaW1wb3J0IHsgVGltZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aW1lJztcbmltcG9ydCB7IFBvcG92ZXJGb3JtTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZm9ybSc7XG5pbXBvcnQgeyBQb3BvdmVyU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9wb3BvdmVyJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5U2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBJbnB1dEdyb3VwSW5wdXREaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvaW5wdXQtZ3JvdXAnO1xuXG5pbXBvcnQgeyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxlbWVudGF0aW9uRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5cbmxldCB0aW1lUGlja2VyQ291bnRlciA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZmQtdGltZS1waWNrZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gICAgaG9zdDoge1xuICAgICAgICAnKGJsdXIpJzogJ29uVG91Y2hlZCgpJyxcbiAgICAgICAgY2xhc3M6ICdmZC10aW1lLXBpY2tlciBmZC10aW1lcGlja2VyLWN1c3RvbSdcbiAgICB9LFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRpbWVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMSURBVE9SUyxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFRpbWVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgUG9wb3ZlckZvcm1NZXNzYWdlU2VydmljZSxcbiAgICAgICAgUG9wb3ZlclNlcnZpY2VcbiAgICBdLFxuICAgIHN0eWxlVXJsczogWycuL3RpbWUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUaW1lUGlja2VyQ29tcG9uZW50PEQ+XG4gICAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgVmFsaWRhdG9yXG57XG4gICAgLyoqXG4gICAgICogRGF0ZSB0aW1lIG9iamVjdCByZXByZXNlbnRhdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGltZTogRDtcblxuICAgIC8qKiBJZCBhdHRyaWJ1dGUgZm9yIGlucHV0IGVsZW1lbnQgaW5zaWRlIFRpbWVQaWNrZXIgY29tcG9uZW50ICovXG4gICAgQElucHV0KClcbiAgICBpbnB1dElkOiBzdHJpbmc7XG5cbiAgICAvKiogVXNlcyBjb21wYWN0IHRpbWUgcGlja2VyLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29tcGFjdD86IGJvb2xlYW47XG5cbiAgICAvKiogRGlzYWJsZXMgdGhlIGNvbXBvbmVudC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc2FibGVkOiBib29sZWFuO1xuXG4gICAgLyoqIElmIGl0IGlzIG1hbmRhdG9yeSBmaWVsZCAqL1xuICAgIEBJbnB1dCgpXG4gICAgcmVxdWlyZWQgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRvIHNob3cgc3Bpbm5lciBidXR0b25zICovXG4gICAgQElucHV0KClcbiAgICBzcGlubmVyQnV0dG9ucyA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIHNldCB0byBmYWxzZSwgdXNlcyB0aGUgMjQgaG91ciBjbG9jayAoaG91cnMgcmFuZ2luZyBmcm9tIDAgdG8gMjMpLlxuICAgICAqIERlZmF1bHQgdmFsdWUgYmFzZWQgb24gdGhlIGN1cnJlbnQgbG9jYWxlIGZvcm1hdCBvcHRpb25cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIG1lcmlkaWFuOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogV2hlbiBzZXQgdG8gZmFsc2UsIGhpZGVzIHRoZSBpbnB1dCBmb3Igc2Vjb25kcy5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGxvY2FsZSBmb3JtYXQgb3B0aW9uXG4gICAgICogKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlTZWNvbmRzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogV2hlbiBzZXQgdG8gZmFsc2UsIGhpZGVzIHRoZSBpbnB1dCBmb3IgbWludXRlcy5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGJhc2VkIG9uIHRoZSBjdXJyZW50IGxvY2FsZSBmb3JtYXQgb3B0aW9uXG4gICAgICogKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlNaW51dGVzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogV2hlbiBzZXQgdG8gZmFsc2UsIGhpZGVzIHRoZSBpbnB1dCBmb3IgaG91cnMuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBiYXNlZCBvbiB0aGUgY3VycmVudCBsb2NhbGUgZm9ybWF0IG9wdGlvblxuICAgICAqICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5SG91cnM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBEZWZhdWx0IHRpbWUgcGlja2VyIHBsYWNlaG9sZGVyIHdoaWNoIGlzIHNldCBkZXBlbmRhbnQgb24gdGhlIGhvdXJzLCBtaW51dGVzIGFuZCBzZWNvbmRzLlxuICAgICAqIE90aGVyd2lzZSBJdCBjYW4gYmUgc2V0IHRvIGEgZGVmYXVsdCB2YWx1ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAgIC8qKiBBcmlhIGxhYmVsIGZvciB0aGUgdGltZSBwaWNrZXIgaW5wdXQuICovXG4gICAgQElucHV0KClcbiAgICB0aW1lUGlja2VySW5wdXRMYWJlbCA9ICdUaW1lIHBpY2tlciBpbnB1dCc7XG5cbiAgICAvKiogQXJpYSBsYWJlbCBmb3IgdGhlIHRpbWUgcGlja2VyIHRvZ2dsZSBidXR0b24uICovXG4gICAgQElucHV0KClcbiAgICB0aW1lUGlja2VyQnV0dG9uTGFiZWwgPSAnT3BlbiBwaWNrZXInO1xuXG4gICAgLyoqIFdoZXRoZXIgYSBudWxsIGlucHV0IGlzIGNvbnNpZGVyZWQgdmFsaWQoc3VjY2VzcykuICovXG4gICAgQElucHV0KClcbiAgICBhbGxvd051bGwgPSB0cnVlO1xuXG4gICAgLyoqIERlZmluZXMgaWYgdGltZSBjb21wb25lbnQgc2hvdWxkIGJlIHVzZWQgd2l0aCB0YWJsZXQgbW9kZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGFibGV0ID0gZmFsc2U7XG5cbiAgICAvKiogVGV4dCBkaXNwbGF5ZWQgaW4gbWVzc2FnZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1lc3NhZ2UobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX21lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICB0aGlzLl9wb3BvdmVyRm9ybU1lc3NhZ2UubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbWVzc2FnZTogc3RyaW5nID0gbnVsbDtcblxuICAgIC8qKiBUeXBlIG9mIHRoZSBtZXNzYWdlLiBDYW4gYmUgJ3N1Y2Nlc3MnIHwgJ2Vycm9yJyB8ICd3YXJuaW5nJyB8ICdpbmZvcm1hdGlvbicgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBtZXNzYWdlVHlwZShtZXNzYWdlVHlwZTogRm9ybVN0YXRlcykge1xuICAgICAgICB0aGlzLl9tZXNzYWdlVHlwZSA9IG1lc3NhZ2VUeXBlO1xuICAgICAgICB0aGlzLl9wb3BvdmVyRm9ybU1lc3NhZ2UubWVzc2FnZVR5cGUgPSBtZXNzYWdlVHlwZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9tZXNzYWdlVHlwZTogRm9ybVN0YXRlcyA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdHJpZ2dlciBldmVudHMgdGhhdCB3aWxsIG9wZW4vY2xvc2UgdGhlIG1lc3NhZ2UgYm94LlxuICAgICAqIEFjY2VwdHMgYW55IFtIVE1MIERPTSBFdmVudHNdKGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vanNyZWYvZG9tX29ial9ldmVudC5hc3ApLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1lc3NhZ2VUcmlnZ2Vycyh0cmlnZ2Vyczogc3RyaW5nW10pIHtcbiAgICAgICAgdGhpcy5fbWVzc2FnZVRyaWdnZXJzID0gdHJpZ2dlcnM7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJGb3JtTWVzc2FnZS50cmlnZ2VycyA9IHRyaWdnZXJzO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX21lc3NhZ2VUcmlnZ2Vyczogc3RyaW5nW10gPSBbJ2ZvY3VzaW4nLCAnZm9jdXNvdXQnXTtcblxuICAgIC8qKlxuICAgICAqICBUaGUgcGxhY2VtZW50IG9mIHRoZSBwb3BvdmVyLiBJdCBjYW4gYmUgb25lIG9mOiB0b3AsIHRvcC1zdGFydCwgdG9wLWVuZCwgYm90dG9tLFxuICAgICAqICBib3R0b20tc3RhcnQsIGJvdHRvbS1lbmQsIHJpZ2h0LCByaWdodC1zdGFydCwgcmlnaHQtZW5kLCBsZWZ0LCBsZWZ0LXN0YXJ0LCBsZWZ0LWVuZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHBsYWNlbWVudDogUGxhY2VtZW50ID0gJ2JvdHRvbS1zdGFydCc7XG5cbiAgICAvKiogV2hldGhlciB0byB2YWxpZGF0ZSB0aGUgdGltZSBwaWNrZXIgaW5wdXQuICovXG4gICAgQElucHV0KClcbiAgICB1c2VWYWxpZGF0aW9uID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqICBUaGUgc3RhdGUgb2YgdGhlIGZvcm0gY29udHJvbCAtIGFwcGxpZXMgY3NzIGNsYXNzZXMuXG4gICAgICogIEFsc28gdGhpcyBpcyBhcHBsaWVkIHRvIG1lc3NhZ2UuXG4gICAgICogIENhbiBiZSBgc3VjY2Vzc2AsIGBlcnJvcmAsIGB3YXJuaW5nYCwgYGluZm9ybWF0aW9uYCBvciBibGFuayBmb3IgZGVmYXVsdC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzdGF0ZShzdGF0ZTogRm9ybVN0YXRlcykge1xuICAgICAgICB0aGlzLl9zdGF0ZSA9IHN0YXRlO1xuICAgICAgICB0aGlzLl9wb3BvdmVyRm9ybU1lc3NhZ2UubWVzc2FnZVR5cGUgPSBzdGF0ZTtcbiAgICB9XG5cbiAgICBnZXQgc3RhdGUoKTogRm9ybVN0YXRlcyB7XG4gICAgICAgIGlmICh0aGlzLl9zdGF0ZSA9PSBudWxsICYmIHRoaXMudXNlVmFsaWRhdGlvbiAmJiB0aGlzLl9pc0ludmFsaWRUaW1lSW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiAnZXJyb3InO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9zdGF0ZTogRm9ybVN0YXRlcyA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIEFkZE9uIEJ1dHRvbiBzaG91bGQgYmUgZm9jdXNhYmxlXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYnV0dG9uRm9jdXNhYmxlID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIFdoZW4gc2V0IHRvIHRydWUsIHRpbWUgaW5wdXRzIHdvbid0IGFsbG93IHRvIGhhdmUgMSBkaWdpdFxuICAgICAqIGZvciBleGFtcGxlIDkgd2lsbCBiZWNvbWUgMDlcbiAgICAgKiBidXQgMTIgd2lsbCBiZSBrZXB0IGFzIDEyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAga2VlcFR3b0RpZ2l0c1RpbWUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIERpc3BsYXkgZm9ybWF0IG9wdGlvbiB0byBjdXN0b21pemUgdGltZSBmb3JtYXQgaW4gaW5wdXQgY29udHJvbC5cbiAgICAgKiBNdXN0IGJlIGEgZm9ybWF0IG9wdGlvbiB0aGF0IGlzIHVuZGVyc3RhbmRhYmxlIGJ5IERhdGV0aW1lQWRhcHRlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlGb3JtYXQ6IHVua25vd247XG5cbiAgICAvKipcbiAgICAgKiBQYXJzZSBmb3JtYXQgb3B0aW9uIHRvIGN1c3RvbWl6ZSB0aW1lIGZvcm1hdCBpbiBpbnB1dCBjb250cm9sLlxuICAgICAqIE11c3QgYmUgYSBmb3JtYXQgb3B0aW9uIHRoYXQgaXMgdW5kZXJzdGFuZGFibGUgYnkgRGF0ZXRpbWVBZGFwdGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcGFyc2VGb3JtYXQ6IHVua25vd247XG5cbiAgICAvKipcbiAgICAgKiBWYWx1ZSBzdGF0ZSBcInN1Y2Nlc3NcIiBhcmlhIG1lc3NhZ2UuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB2YWx1ZVN0YXRlU3VjY2Vzc01lc3NhZ2U6IHN0cmluZyA9IHRoaXMuX3ZhbHVlU3RhdGVBcmlhTWVzc2FnZXNTZXJ2aWNlLnN1Y2Nlc3M7XG5cbiAgICAvKipcbiAgICAgKiBWYWx1ZSBzdGF0ZSBcImluZm9ybWF0aW9uXCIgYXJpYSBtZXNzYWdlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdmFsdWVTdGF0ZUluZm9ybWF0aW9uTWVzc2FnZTogc3RyaW5nID0gdGhpcy5fdmFsdWVTdGF0ZUFyaWFNZXNzYWdlc1NlcnZpY2UuaW5mb3JtYXRpb247XG5cbiAgICAvKipcbiAgICAgKiBWYWx1ZSBzdGF0ZSBcIndhcm5pbmdcIiBhcmlhIG1lc3NhZ2UuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICB2YWx1ZVN0YXRlV2FybmluZ01lc3NhZ2U6IHN0cmluZyA9IHRoaXMuX3ZhbHVlU3RhdGVBcmlhTWVzc2FnZXNTZXJ2aWNlLndhcm5pbmc7XG5cbiAgICAvKipcbiAgICAgKiBWYWx1ZSBzdGF0ZSBcImVycm9yXCIgYXJpYSBtZXNzYWdlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdmFsdWVTdGF0ZUVycm9yTWVzc2FnZTogc3RyaW5nID0gdGhpcy5fdmFsdWVTdGF0ZUFyaWFNZXNzYWdlc1NlcnZpY2UuZXJyb3I7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzdGF0ZSBvZiB0aGUgaXNPcGVuIHByb3BlcnR5IGNoYW5nZXMuICovXG4gICAgQE91dHB1dCgpXG4gICAgaXNPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKFRpbWVDb21wb25lbnQpXG4gICAgY2hpbGQ6IFRpbWVDb21wb25lbnQ8RD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2lucHV0R3JvdXBDb21wb25lbnQnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBfaW5wdXRHcm91cEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoSW5wdXRHcm91cElucHV0RGlyZWN0aXZlLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBfaW5wdXRFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIFdoZXRoZXIgdGhlIGlucHV0IHRpbWUgaXMgdmFsaWQoc3VjY2VzcykuIEludGVybmFsIHVzZS5cbiAgICAgKi9cbiAgICBfaXNJbnZhbGlkVGltZUlucHV0ID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogSW5kaWNhdGVzIHdoZW4gcG9wb3ZlciBpcyBvcGVuZWRcbiAgICAgKi9cbiAgICBpc09wZW46IGJvb2xlYW47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9tZXJpZGlhbjogYm9vbGVhbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rpc3BsYXlTZWNvbmRzOiBib29sZWFuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzcGxheU1pbnV0ZXM6IGJvb2xlYW47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNwbGF5SG91cnM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogSW5wdXQgZmllbGQgdmFsdWVcbiAgICAgKi9cbiAgICBfaW5wdXRUaW1lVmFsdWUgPSAnJztcblxuICAgIF9mb3JtVmFsdWVTdGF0ZU1lc3NhZ2VJZCA9IGBmZC10aW1lLXBpY2tlci1mb3JtLW1lc3NhZ2UtJHt0aW1lUGlja2VyQ291bnRlcisrfWA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBvbkNoYW5nZTogKF86IEQpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uVG91Y2hlZDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX3BsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyIHx8IHRoaXMuX2dldFBsYWNlaG9sZGVyKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICAvLyBVc2UgQE9wdGlvbmFsIHRvIGF2b2lkIGFuZ3VsYXIgaW5qZWN0aW9uIGVycm9yIG1lc3NhZ2UgYW5kIHRocm93IG91ciBvd24gd2hpY2ggaXMgbW9yZSBwcmVjaXNlIG9uZVxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9kYXRlVGltZUFkYXB0ZXI6IERhdGV0aW1lQWRhcHRlcjxEPixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChEQVRFX1RJTUVfRk9STUFUUykgcHJpdmF0ZSBfZGF0ZVRpbWVGb3JtYXRzOiBEYXRlVGltZUZvcm1hdHMsXG4gICAgICAgIHByaXZhdGUgX3BvcG92ZXJGb3JtTWVzc2FnZTogUG9wb3ZlckZvcm1NZXNzYWdlU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfY29udGVudERlbnNpdHlTZXJ2aWNlOiBDb250ZW50RGVuc2l0eVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX3ZhbHVlU3RhdGVBcmlhTWVzc2FnZXNTZXJ2aWNlOiBWYWx1ZVN0YXRlQXJpYU1lc3NhZ2VTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIGlmICghdGhpcy5fZGF0ZVRpbWVBZGFwdGVyKSB7XG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxlbWVudGF0aW9uRXJyb3IoJ0RhdGVUaW1lQWRhcHRlcicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5fZGF0ZVRpbWVGb3JtYXRzKSB7XG4gICAgICAgICAgICB0aHJvdyBjcmVhdGVNaXNzaW5nRGF0ZUltcGxlbWVudGF0aW9uRXJyb3IoJ0RBVEVfVElNRV9GT1JNQVRTJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY2FsY3VsYXRlVGltZU9wdGlvbnMoKTtcbiAgICAgICAgdGhpcy5fZm9ybWF0VGltZUlucHV0RmllbGQoKTtcblxuICAgICAgICBpZiAodGhpcy5jb21wYWN0ID09PSB1bmRlZmluZWQgJiYgdGhpcy5fY29udGVudERlbnNpdHlTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICB0aGlzLl9jb250ZW50RGVuc2l0eVNlcnZpY2UuX2lzQ29tcGFjdERlbnNpdHkuc3Vic2NyaWJlKChpc0NvbXBhY3QpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wYWN0ID0gaXNDb21wYWN0O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2RhdGVUaW1lQWRhcHRlci5sb2NhbGVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2FsY3VsYXRlVGltZU9wdGlvbnMoKTtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1hdFRpbWVJbnB1dEZpZWxkKCk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgWydkaXNwbGF5SG91cnMnLCAnZGlzcGxheU1pbnV0ZXMnLCAnZGlzcGxheVNlY29uZHMnLCAnbWVyaWRpYW4nLCAnZGlzcGxheUZvcm1hdCddLnNvbWUoXG4gICAgICAgICAgICAgICAgKGNoYW5nZSkgPT4gY2hhbmdlIGluIGNoYW5nZXNcbiAgICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVUaW1lT3B0aW9ucygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFuZ2VzLmRpc3BsYXlGb3JtYXQpIHtcbiAgICAgICAgICAgIHRoaXMuX2Zvcm1hdFRpbWVJbnB1dEZpZWxkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX29uRGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGlzZVZhcmlhYmxlc0luTWVzc2FnZVNlcnZpY2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogRnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIFZhbGlkYXRvciBJbnRlcmZhY2UsIGFkZHMgdmFsaWRhdGlvbiBzdXBwb3J0IGZvciBmb3Jtc1xuICAgICAqL1xuICAgIHZhbGlkYXRlKCk6IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgIH0ge1xuICAgICAgICBpZiAodGhpcy5faXNJbnZhbGlkVGltZUlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRpbWVWYWxpZGF0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSB0aW1lIGlucHV0LlxuICAgICAqL1xuICAgIGdldFRpbWUoKTogRCB7XG4gICAgICAgIHJldHVybiB0aGlzLnRpbWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBmb3JtYXQgb3B0aW9ucyB0byBiZSB1c2VkIGR1cmluZyB0aW1lIGZvcm1hdHRpbmcuXG4gICAgICovXG4gICAgZ2V0RGlzcGxheUZvcm1hdCgpOiB1bmtub3duIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGxheUZvcm1hdCB8fCB0aGlzLl9kYXRlVGltZUZvcm1hdHMuZGlzcGxheS50aW1lSW5wdXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBmb3JtYXQgb3B0aW9ucyB0byBiZSB1c2VkIGR1cmluZyB0aW1lIHBhcnNpbmcuXG4gICAgICovXG4gICAgZ2V0UGFyc2VGb3JtYXQoKTogdW5rbm93biB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlRm9ybWF0IHx8IHRoaXMuX2RhdGVUaW1lRm9ybWF0cy5wYXJzZS50aW1lSW5wdXQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZ2V0Rm9ybWF0dGVkVGltZSh0aW1lID0gdGhpcy50aW1lKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGZvcm1hdHRlZFRpbWUgPSAnJztcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHRoaXMuYWxsb3dOdWxsICYmIHRpbWUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3JtYXR0ZWRUaW1lID0gdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmZvcm1hdCh0aW1lLCB0aGlzLmdldERpc3BsYXlGb3JtYXQoKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlZFRpbWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIEBoaWRkZW5cbiAgICAgKiAgV2hlbiB0aGUgb3BlbiBzdGF0ZSBpcyBjaGFuZ2VkLCB0aGVyZSBzaG91bGQgYmUgYXQgbGVhc3Qgb25lIGFjdGl2ZSBpdGVtLCB3aGljaCBieSBkZWZhdWx0IGlzIGhvdXIuXG4gICAgICovXG4gICAgX3NldElzT3Blbihpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc09wZW4gPSBpc09wZW47XG4gICAgICAgIHRoaXMuX29uT3BlblN0YXRlQ2hhbmdlZChpc09wZW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBUaW1lIGlucHV0IGZpZWxkIGNoYW5nZXMgaGFuZGxlclxuICAgICAqL1xuICAgIF90aW1lSW5wdXRDaGFuZ2VkKGlucHV0VmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpbnB1dFZhbHVlID0gaW5wdXRWYWx1ZS50cmltKCk7XG5cbiAgICAgICAgLy8gY2hlY2sgaWYgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZFxuICAgICAgICBpZiAodGhpcy5faW5wdXRUaW1lVmFsdWUgPT09IGlucHV0VmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2lucHV0VGltZVZhbHVlID0gaW5wdXRWYWx1ZTtcblxuICAgICAgICBpZiAoaW5wdXRWYWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgIHRoaXMudGltZSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl9pc0ludmFsaWRUaW1lSW5wdXQgPSAhdGhpcy5hbGxvd051bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gJycpIHtcbiAgICAgICAgICAgIHRoaXMudGltZSA9IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5wYXJzZShpbnB1dFZhbHVlLCB0aGlzLmdldFBhcnNlRm9ybWF0KCkpO1xuICAgICAgICAgICAgdGhpcy5faXNJbnZhbGlkVGltZUlucHV0ID0gIXRoaXMuX2RhdGVUaW1lQWRhcHRlci5pc1ZhbGlkKHRoaXMudGltZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudGltZSk7XG5cbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2lucHV0R3JvdXBDbGlja2VkKCRldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNPcGVuICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLl9zZXRJc09wZW4odHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hZGRPbkJ1dHRvbkNsaWNrZWQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5fc2V0SXNPcGVuKCF0aGlzLmlzT3Blbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9wb3BvdmVyQ2xvc2VkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zZXRJc09wZW4oZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2dldFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXRWYWwgPSAnJztcblxuICAgICAgICBpZiAodGhpcy5fZGlzcGxheUhvdXJzKSB7XG4gICAgICAgICAgICByZXRWYWwgPSByZXRWYWwgKyAnaGgnO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9kaXNwbGF5TWludXRlcykge1xuICAgICAgICAgICAgcmV0VmFsID0gcmV0VmFsICsgJzptbSc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXlTZWNvbmRzKSB7XG4gICAgICAgICAgICByZXRWYWwgPSByZXRWYWwgKyAnOnNzJztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fbWVyaWRpYW4pIHtcbiAgICAgICAgICAgIHJldFZhbCA9IHJldFZhbCArICcgYW0vcG0nO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90aW1lQ29tcG9uZW50VmFsdWVDaGFuZ2VkKHRpbWU6IEQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2RhdGVUaW1lQWRhcHRlci5kYXRlVGltZXNFcXVhbCh0aW1lLCB0aGlzLnRpbWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faW5wdXRUaW1lVmFsdWUgPSB0aGlzLl9nZXRGb3JtYXR0ZWRUaW1lKHRpbWUpO1xuICAgICAgICB0aGlzLnRpbWUgPSB0aW1lO1xuICAgICAgICB0aGlzLl9pc0ludmFsaWRUaW1lSW5wdXQgPSAhdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmlzVmFsaWQodGltZSk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGltZSk7XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvLyAjcmVnaW9uIENvbnRyb2xWYWx1ZUFjY2Vzc29yXG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh0aW1lOiBEKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgd3JpdGVWYWx1ZSh0aW1lOiBEKTogdm9pZCB7XG4gICAgICAgIGlmICghdGltZSkge1xuICAgICAgICAgICAgdGhpcy50aW1lID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX2lucHV0VGltZVZhbHVlID0gJyc7XG4gICAgICAgICAgICB0aGlzLl9pc0ludmFsaWRUaW1lSW5wdXQgPSAhdGhpcy5hbGxvd051bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRpbWUgPSB0aW1lO1xuICAgICAgICAgICAgdGhpcy5faW5wdXRUaW1lVmFsdWUgPSB0aGlzLl9nZXRGb3JtYXR0ZWRUaW1lKHRpbWUpO1xuICAgICAgICAgICAgdGhpcy5faXNJbnZhbGlkVGltZUlucHV0ID0gIXRoaXMuX2RhdGVUaW1lQWRhcHRlci5pc1ZhbGlkKHRpbWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gQ29udHJvbFZhbHVlQWNjZXNzb3JcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Zvcm1hdFRpbWVJbnB1dEZpZWxkKHRpbWUgPSB0aGlzLnRpbWUpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKHRoaXMuX2lucHV0VGltZVZhbHVlID0gdGhpcy5fZ2V0Rm9ybWF0dGVkVGltZSh0aW1lKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2hhbmdlTWVzc2FnZVZpc2liaWxpdHkoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5fcG9wb3ZlckZvcm1NZXNzYWdlLmhpZGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJGb3JtTWVzc2FnZS5zaG93KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbk9wZW5TdGF0ZUNoYW5nZWQoaXNPcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQoaXNPcGVuKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlTWVzc2FnZVZpc2liaWxpdHkoKTtcbiAgICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5jaGlsZC5mb2N1c0FjdGl2ZUNvbHVtbigpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGZvY3VzIGlucHV0IGNvbnRyb2wgZXZlcnkgdGltZSBwb3B1cCBpcyBjbG9zZWRcbiAgICAgICAgaWYgKCFpc09wZW4gJiYgdGhpcy5faW5wdXRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jYWxjdWxhdGVUaW1lT3B0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gdGhpcy5nZXREaXNwbGF5Rm9ybWF0KCk7XG5cbiAgICAgICAgLy8gZGVmYXVsdCBtZXJpZGlhbiBvcHRpb24gYmFzZWQgb24gZm9ybWF0IG9wdGlvblxuICAgICAgICB0aGlzLl9tZXJpZGlhbiA9XG4gICAgICAgICAgICB0aGlzLm1lcmlkaWFuICE9IG51bGwgPyB0aGlzLm1lcmlkaWFuIDogdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmlzVGltZUZvcm1hdEluY2x1ZGVzRGF5UGVyaW9kKGZvcm1hdCk7XG5cbiAgICAgICAgLy8gZGVmYXVsdCBzZWNvbmRzIG9wdGlvbiBiYXNlZCBvbiBmb3JtYXQgb3B0aW9uXG4gICAgICAgIHRoaXMuX2Rpc3BsYXlTZWNvbmRzID1cbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVNlY29uZHMgIT0gbnVsbFxuICAgICAgICAgICAgICAgID8gdGhpcy5kaXNwbGF5U2Vjb25kc1xuICAgICAgICAgICAgICAgIDogdGhpcy5fZGF0ZVRpbWVBZGFwdGVyLmlzVGltZUZvcm1hdEluY2x1ZGVzU2Vjb25kcyhmb3JtYXQpO1xuXG4gICAgICAgIC8vIGRlZmF1bHQgbWludXRlcyBvcHRpb24gYmFzZWQgb24gZm9ybWF0IG9wdGlvblxuICAgICAgICB0aGlzLl9kaXNwbGF5TWludXRlcyA9XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlNaW51dGVzICE9IG51bGxcbiAgICAgICAgICAgICAgICA/IHRoaXMuZGlzcGxheU1pbnV0ZXNcbiAgICAgICAgICAgICAgICA6IHRoaXMuX2RhdGVUaW1lQWRhcHRlci5pc1RpbWVGb3JtYXRJbmNsdWRlc01pbnV0ZXMoZm9ybWF0KTtcblxuICAgICAgICAvLyBkZWZhdWx0IGhvdXJzIG9wdGlvbiBiYXNlZCBvbiBmb3JtYXQgb3B0aW9uXG4gICAgICAgIHRoaXMuX2Rpc3BsYXlIb3VycyA9XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlIb3VycyAhPSBudWxsID8gdGhpcy5kaXNwbGF5SG91cnMgOiB0aGlzLl9kYXRlVGltZUFkYXB0ZXIuaXNUaW1lRm9ybWF0SW5jbHVkZXNIb3Vycyhmb3JtYXQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBpbml0aWFsaXNlVmFyaWFibGVzSW5NZXNzYWdlU2VydmljZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcG9wb3ZlckZvcm1NZXNzYWdlLmluaXQodGhpcy5faW5wdXRHcm91cEVsZW1lbnQpO1xuICAgICAgICB0aGlzLl9wb3BvdmVyRm9ybU1lc3NhZ2UubWVzc2FnZSA9IHRoaXMuX21lc3NhZ2U7XG4gICAgICAgIHRoaXMuX3BvcG92ZXJGb3JtTWVzc2FnZS50cmlnZ2VycyA9IHRoaXMuX21lc3NhZ2VUcmlnZ2VycztcbiAgICAgICAgdGhpcy5fcG9wb3ZlckZvcm1NZXNzYWdlLm1lc3NhZ2VUeXBlID0gdGhpcy5fc3RhdGU7XG4gICAgfVxufVxuIiwiPGZkLXBvcG92ZXJcbiAgICBbKGlzT3BlbildPVwiaXNPcGVuXCJcbiAgICAoaXNPcGVuQ2hhbmdlKT1cIl9vbk9wZW5TdGF0ZUNoYW5nZWQoJGV2ZW50KVwiXG4gICAgW3RyaWdnZXJzXT1cIltdXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtwbGFjZW1lbnRdPVwicGxhY2VtZW50XCJcbiAgICBbY2xvc2VPbkVzY2FwZUtleV09XCJ0cnVlXCJcbiAgICBbZm9jdXNBdXRvQ2FwdHVyZV09XCJmYWxzZVwiXG4gICAgW2ZvY3VzVHJhcHBlZF09XCJ0cnVlXCJcbj5cbiAgICA8ZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICA8ZmQtaW5wdXQtZ3JvdXBcbiAgICAgICAgICAgICNpbnB1dEdyb3VwQ29tcG9uZW50XG4gICAgICAgICAgICBbY29tcGFjdF09XCJjb21wYWN0XCJcbiAgICAgICAgICAgIChhZGRPbkJ1dHRvbkNsaWNrZWQpPVwiX2FkZE9uQnV0dG9uQ2xpY2tlZCgpXCJcbiAgICAgICAgICAgIFtidXR0b25dPVwidHJ1ZVwiXG4gICAgICAgICAgICBbc3RhdGVdPVwic3RhdGVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtidXR0b25Gb2N1c2FibGVdPVwiYnV0dG9uRm9jdXNhYmxlXCJcbiAgICAgICAgICAgIFtpc0NvbnRyb2xdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbaXNFeHBhbmRlZF09XCJpc09wZW5cIlxuICAgICAgICAgICAgW2dseXBoQXJpYUxhYmVsXT1cInRpbWVQaWNrZXJCdXR0b25MYWJlbFwiXG4gICAgICAgICAgICBnbHlwaD1cImZvYi13YXRjaFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWlucHV0XCJcbiAgICAgICAgICAgICAgICBmZC1pbnB1dC1ncm91cC1pbnB1dFxuICAgICAgICAgICAgICAgIFtjb21wYWN0XT1cImNvbXBhY3RcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJfaW5wdXRUaW1lVmFsdWVcIlxuICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJfdGltZUlucHV0Q2hhbmdlZCgkZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJfdGltZUlucHV0Q2hhbmdlZCgkZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZSlcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiaW5wdXRJZFwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIl9wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0aW1lUGlja2VySW5wdXRMYWJlbFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJfZm9ybVZhbHVlU3RhdGVNZXNzYWdlSWRcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9mZC1pbnB1dC1ncm91cD5cbiAgICA8L2ZkLXBvcG92ZXItY29udHJvbD5cbiAgICA8ZmQtcG9wb3Zlci1ib2R5PlxuICAgICAgICA8ZmQtZm9ybS1tZXNzYWdlIFtlbWJlZGRlZF09XCJ0cnVlXCIgKm5nSWY9XCJfbWVzc2FnZVwiIFt0eXBlXT1cInN0YXRlXCI+XG4gICAgICAgICAgICB7eyBfbWVzc2FnZSB9fVxuICAgICAgICA8L2ZkLWZvcm0tbWVzc2FnZT5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8ZmQtdGltZVxuICAgICAgICAgICAgKm5nSWY9XCJpc09wZW5cIlxuICAgICAgICAgICAgW3RhYmxldF09XCJ0YWJsZXRcIlxuICAgICAgICAgICAgW2NvbXBhY3RdPVwiY29tcGFjdFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2tlZXBUd29EaWdpdHNdPVwia2VlcFR3b0RpZ2l0c1RpbWVcIlxuICAgICAgICAgICAgW25nTW9kZWxdPVwidGltZVwiXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJfdGltZUNvbXBvbmVudFZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIFttZXJpZGlhbl09XCJfbWVyaWRpYW5cIlxuICAgICAgICAgICAgW2Rpc3BsYXlIb3Vyc109XCJfZGlzcGxheUhvdXJzXCJcbiAgICAgICAgICAgIFtkaXNwbGF5TWludXRlc109XCJfZGlzcGxheU1pbnV0ZXNcIlxuICAgICAgICAgICAgW2Rpc3BsYXlTZWNvbmRzXT1cIl9kaXNwbGF5U2Vjb25kc1wiXG4gICAgICAgICAgICBbc3Bpbm5lckJ1dHRvbnNdPVwic3Bpbm5lckJ1dHRvbnNcIlxuICAgICAgICA+PC9mZC10aW1lPlxuICAgIDwvZmQtcG9wb3Zlci1ib2R5PlxuPC9mZC1wb3BvdmVyPlxuXG48ZGl2IHN0eWxlPVwiZGlzcGxheTogbm9uZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgIDxkaXYgW2F0dHIuaWRdPVwiX2Zvcm1WYWx1ZVN0YXRlTWVzc2FnZUlkXCIgYXJpYS1hdG9taWM9XCJ0cnVlXCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInN0YXRlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc3VjY2VzcydcIj57eyB2YWx1ZVN0YXRlU3VjY2Vzc01lc3NhZ2UgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpbmZvcm1hdGlvbidcIj57eyB2YWx1ZVN0YXRlSW5mb3JtYXRpb25NZXNzYWdlIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInd2FybmluZydcIj57eyB2YWx1ZVN0YXRlV2FybmluZ01lc3NhZ2UgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidlcnJvcidcIj57eyB2YWx1ZVN0YXRlRXJyb3JNZXNzYWdlIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICB7eyBfbWVzc2FnZSB9fVxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
package/facets/package.json
CHANGED
package/feed-input/package.json
CHANGED
|
@@ -224,6 +224,9 @@ class TimePickerComponent {
|
|
|
224
224
|
_getFormattedTime(time = this.time) {
|
|
225
225
|
let formattedTime = '';
|
|
226
226
|
try {
|
|
227
|
+
if (this.allowNull && time === null) {
|
|
228
|
+
return '';
|
|
229
|
+
}
|
|
227
230
|
formattedTime = this._dateTimeAdapter.format(time, this.getDisplayFormat());
|
|
228
231
|
}
|
|
229
232
|
catch (e) { }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-time-picker.mjs","sources":["../../../../libs/core/src/lib/time-picker/errors.ts","../../../../libs/core/src/lib/time-picker/time-picker.component.ts","../../../../libs/core/src/lib/time-picker/time-picker.component.html","../../../../libs/core/src/lib/time-picker/time-picker.module.ts","../../../../libs/core/src/lib/time-picker/fundamental-ngx-core-time-picker.ts"],"sourcesContent":["export function createMissingDateImplementationError(provider: string): Error {\n return Error(\n `FdTime: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: FdDatetimeModule, or provide a ` +\n `custom implementation.`\n );\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { Placement, FormStates, ValueStateAriaMessageService } from '@fundamental-ngx/core/shared';\nimport { DatetimeAdapter, DATE_TIME_FORMATS, DateTimeFormats } from '@fundamental-ngx/core/datetime';\nimport { TimeComponent } from '@fundamental-ngx/core/time';\nimport { PopoverFormMessageService } from '@fundamental-ngx/core/form';\nimport { PopoverService } from '@fundamental-ngx/core/popover';\nimport { ContentDensityService } from '@fundamental-ngx/core/utils';\nimport { InputGroupInputDirective } from '@fundamental-ngx/core/input-group';\n\nimport { createMissingDateImplementationError } from './errors';\n\nlet timePickerCounter = 0;\n\n@Component({\n selector: 'fd-time-picker',\n templateUrl: './time-picker.component.html',\n host: {\n '(blur)': 'onTouched()',\n class: 'fd-time-picker fd-timepicker-custom'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimePickerComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => TimePickerComponent),\n multi: true\n },\n PopoverFormMessageService,\n PopoverService\n ],\n styleUrls: ['./time-picker.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TimePickerComponent<D>\n implements ControlValueAccessor, OnInit, AfterViewInit, OnChanges, OnDestroy, Validator\n{\n /**\n * Date time object representation\n */\n @Input()\n time: D;\n\n /** Id attribute for input element inside TimePicker component */\n @Input()\n inputId: string;\n\n /** Uses compact time picker. */\n @Input()\n compact?: boolean;\n\n /** Disables the component. */\n @Input()\n disabled: boolean;\n\n /** If it is mandatory field */\n @Input()\n required = false;\n\n /** Whether to show spinner buttons */\n @Input()\n spinnerButtons = true;\n\n /**\n * When set to false, uses the 24 hour clock (hours ranging from 0 to 23).\n * Default value based on the current locale format option\n */\n @Input()\n meridian: boolean;\n\n /**\n * When set to false, hides the input for seconds.\n * Default value based on the current locale format option\n * */\n @Input()\n displaySeconds: boolean;\n\n /**\n * When set to false, hides the input for minutes.\n * Default value based on the current locale format option\n * */\n @Input()\n displayMinutes: boolean;\n\n /**\n * When set to false, hides the input for hours.\n * Default value based on the current locale format option\n * */\n @Input()\n displayHours: boolean;\n\n /**\n * Default time picker placeholder which is set dependant on the hours, minutes and seconds.\n * Otherwise It can be set to a default value\n */\n @Input()\n placeholder: string;\n\n /** Aria label for the time picker input. */\n @Input()\n timePickerInputLabel = 'Time picker input';\n\n /** Aria label for the time picker toggle button. */\n @Input()\n timePickerButtonLabel = 'Open picker';\n\n /** Whether a null input is considered valid(success). */\n @Input()\n allowNull = true;\n\n /** Defines if time component should be used with tablet mode */\n @Input()\n tablet = false;\n\n /** Text displayed in message */\n @Input()\n set message(message: string) {\n this._message = message;\n this._popoverFormMessage.message = message;\n }\n /** @hidden */\n _message: string = null;\n\n /** Type of the message. Can be 'success' | 'error' | 'warning' | 'information' */\n @Input()\n set messageType(messageType: FormStates) {\n this._messageType = messageType;\n this._popoverFormMessage.messageType = messageType;\n }\n /** @hidden */\n _messageType: FormStates = null;\n\n /**\n * The trigger events that will open/close the message box.\n * Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp).\n */\n @Input()\n set messageTriggers(triggers: string[]) {\n this._messageTriggers = triggers;\n this._popoverFormMessage.triggers = triggers;\n }\n /** @hidden */\n _messageTriggers: string[] = ['focusin', 'focusout'];\n\n /**\n * The placement of the popover. It can be one of: top, top-start, top-end, bottom,\n * bottom-start, bottom-end, right, right-start, right-end, left, left-start, left-end.\n */\n @Input()\n placement: Placement = 'bottom-start';\n\n /** Whether to validate the time picker input. */\n @Input()\n useValidation = true;\n\n /**\n * The state of the form control - applies css classes.\n * Also this is applied to message.\n * Can be `success`, `error`, `warning`, `information` or blank for default.\n */\n @Input()\n set state(state: FormStates) {\n this._state = state;\n this._popoverFormMessage.messageType = state;\n }\n\n get state(): FormStates {\n if (this._state == null && this.useValidation && this._isInvalidTimeInput) {\n return 'error';\n }\n return this._state;\n }\n private _state: FormStates = null;\n\n /**\n * Whether AddOn Button should be focusable\n * @default true\n */\n @Input()\n buttonFocusable = true;\n\n /**\n * When set to true, time inputs won't allow to have 1 digit\n * for example 9 will become 09\n * but 12 will be kept as 12.\n */\n @Input()\n keepTwoDigitsTime = false;\n\n /**\n * Display format option to customize time format in input control.\n * Must be a format option that is understandable by DatetimeAdapter.\n */\n @Input()\n displayFormat: unknown;\n\n /**\n * Parse format option to customize time format in input control.\n * Must be a format option that is understandable by DatetimeAdapter.\n */\n @Input()\n parseFormat: unknown;\n\n /**\n * Value state \"success\" aria message.\n */\n @Input()\n valueStateSuccessMessage: string = this._valueStateAriaMessagesService.success;\n\n /**\n * Value state \"information\" aria message.\n */\n @Input()\n valueStateInformationMessage: string = this._valueStateAriaMessagesService.information;\n\n /**\n * Value state \"warning\" aria message.\n */\n @Input()\n valueStateWarningMessage: string = this._valueStateAriaMessagesService.warning;\n\n /**\n * Value state \"error\" aria message.\n */\n @Input()\n valueStateErrorMessage: string = this._valueStateAriaMessagesService.error;\n\n /** Event emitted when the state of the isOpen property changes. */\n @Output()\n isOpenChange = new EventEmitter<boolean>();\n\n /** @hidden */\n @ViewChild(TimeComponent)\n child: TimeComponent<D>;\n\n /** @hidden */\n @ViewChild('inputGroupComponent', { read: ElementRef })\n _inputGroupElement: ElementRef;\n\n /** @hidden */\n @ViewChild(InputGroupInputDirective, { read: ElementRef })\n _inputElement: ElementRef;\n\n /**\n * @hidden\n * Whether the input time is valid(success). Internal use.\n */\n _isInvalidTimeInput = false;\n\n /**\n * @hidden\n * Indicates when popover is opened\n */\n isOpen: boolean;\n\n /** @hidden */\n _meridian: boolean;\n\n /** @hidden */\n _displaySeconds: boolean;\n\n /** @hidden */\n _displayMinutes: boolean;\n\n /** @hidden */\n _displayHours: boolean;\n\n /**\n * @hidden\n * Input field value\n */\n _inputTimeValue = '';\n\n _formValueStateMessageId = `fd-time-picker-form-message-${timePickerCounter++}`;\n\n /** @hidden */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n onChange: (_: D) => void = () => {};\n /** @hidden */\n onTouched: () => void = () => {};\n\n /** @hidden */\n get _placeholder(): string {\n return this.placeholder || this._getPlaceholder();\n }\n\n /** @hidden */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n // Use @Optional to avoid angular injection error message and throw our own which is more precise one\n @Optional() private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats,\n private _popoverFormMessage: PopoverFormMessageService,\n @Optional() private _contentDensityService: ContentDensityService,\n private _valueStateAriaMessagesService: ValueStateAriaMessageService\n ) {\n if (!this._dateTimeAdapter) {\n throw createMissingDateImplementationError('DateTimeAdapter');\n }\n if (!this._dateTimeFormats) {\n throw createMissingDateImplementationError('DATE_TIME_FORMATS');\n }\n }\n\n ngOnInit(): void {\n this._calculateTimeOptions();\n this._formatTimeInputField();\n\n if (this.compact === undefined && this._contentDensityService) {\n this._subscriptions.add(\n this._contentDensityService._isCompactDensity.subscribe((isCompact) => {\n this.compact = isCompact;\n this._changeDetectorRef.markForCheck();\n })\n );\n }\n\n this._dateTimeAdapter.localeChanges.pipe(takeUntil(this._onDestroy$)).subscribe(() => {\n this._calculateTimeOptions();\n this._formatTimeInputField();\n this._changeDetectorRef.detectChanges();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n ['displayHours', 'displayMinutes', 'displaySeconds', 'meridian', 'displayFormat'].some(\n (change) => change in changes\n )\n ) {\n this._calculateTimeOptions();\n }\n if (changes.displayFormat) {\n this._formatTimeInputField();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.initialiseVariablesInMessageService();\n }\n\n /**\n * @hidden\n * Function that implements Validator Interface, adds validation support for forms\n */\n validate(): {\n [key: string]: any;\n } {\n if (this._isInvalidTimeInput) {\n return {\n timeValidation: {\n valid: false\n }\n };\n }\n\n return null;\n }\n\n /**\n * Returns the current value of the time input.\n */\n getTime(): D {\n return this.time;\n }\n\n /**\n * Returns format options to be used during time formatting.\n */\n getDisplayFormat(): unknown {\n return this.displayFormat || this._dateTimeFormats.display.timeInput;\n }\n\n /**\n * Returns format options to be used during time parsing.\n */\n getParseFormat(): unknown {\n return this.parseFormat || this._dateTimeFormats.parse.timeInput;\n }\n\n /** @hidden */\n _getFormattedTime(time = this.time): string {\n let formattedTime = '';\n\n try {\n formattedTime = this._dateTimeAdapter.format(time, this.getDisplayFormat());\n } catch (e) {}\n\n return formattedTime;\n }\n\n /**\n * @hidden\n * When the open state is changed, there should be at least one active item, which by default is hour.\n */\n _setIsOpen(isOpen: boolean): void {\n this.isOpen = isOpen;\n this._onOpenStateChanged(isOpen);\n }\n\n /**\n * @hidden\n * Time input field changes handler\n */\n _timeInputChanged(inputValue: string): void {\n inputValue = inputValue.trim();\n\n // check if value has been changed\n if (this._inputTimeValue === inputValue) {\n return;\n }\n\n this._inputTimeValue = inputValue;\n\n if (inputValue === '') {\n this.time = null;\n this._isInvalidTimeInput = !this.allowNull;\n }\n\n if (inputValue !== '') {\n this.time = this._dateTimeAdapter.parse(inputValue, this.getParseFormat());\n this._isInvalidTimeInput = !this._dateTimeAdapter.isValid(this.time);\n }\n\n this.onChange(this.time);\n\n this._changeDetectorRef.detectChanges();\n }\n\n /** @hidden */\n _inputGroupClicked($event: MouseEvent): void {\n if (!this.isOpen && !this.disabled) {\n $event.stopPropagation();\n this._setIsOpen(true);\n }\n }\n\n /** @hidden */\n _addOnButtonClicked(): void {\n if (!this.disabled) {\n this._setIsOpen(!this.isOpen);\n }\n }\n\n /** @hidden */\n _popoverClosed(): void {\n this._setIsOpen(false);\n }\n\n /** @hidden */\n _getPlaceholder(): string {\n let retVal = '';\n\n if (this._displayHours) {\n retVal = retVal + 'hh';\n }\n if (this._displayMinutes) {\n retVal = retVal + ':mm';\n }\n if (this._displaySeconds) {\n retVal = retVal + ':ss';\n }\n if (this._meridian) {\n retVal = retVal + ' am/pm';\n }\n\n return retVal;\n }\n\n /** @hidden */\n _timeComponentValueChanged(time: D): void {\n if (this._dateTimeAdapter.dateTimesEqual(time, this.time)) {\n return;\n }\n this._inputTimeValue = this._getFormattedTime(time);\n this.time = time;\n this._isInvalidTimeInput = !this._dateTimeAdapter.isValid(time);\n this.onChange(time);\n this._changeDetectorRef.detectChanges();\n }\n\n // #region ControlValueAccessor\n\n /** @hidden */\n registerOnChange(fn: (time: D) => void): void {\n this.onChange = fn;\n }\n\n /** @hidden */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /** @hidden */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.detectChanges();\n }\n\n /** @hidden */\n writeValue(time: D): void {\n if (!time) {\n this.time = null;\n this._inputTimeValue = '';\n this._isInvalidTimeInput = !this.allowNull;\n } else {\n this.time = time;\n this._inputTimeValue = this._getFormattedTime(time);\n this._isInvalidTimeInput = !this._dateTimeAdapter.isValid(time);\n }\n this._changeDetectorRef.markForCheck();\n }\n\n // #endregion ControlValueAccessor\n\n /** @hidden */\n _formatTimeInputField(time = this.time): string {\n return (this._inputTimeValue = this._getFormattedTime(time));\n }\n\n /** @hidden */\n _changeMessageVisibility(): void {\n if (this.isOpen) {\n this._popoverFormMessage.hide();\n } else {\n this._popoverFormMessage.show();\n }\n }\n\n /** @hidden */\n _onOpenStateChanged(isOpen: boolean): void {\n this.isOpenChange.emit(isOpen);\n this._changeMessageVisibility();\n if (isOpen) {\n this._changeDetectorRef.detectChanges();\n this.child.focusActiveColumn();\n }\n // focus input control every time popup is closed\n if (!isOpen && this._inputElement) {\n this._inputElement.nativeElement.focus();\n }\n }\n\n /** @hidden */\n private _calculateTimeOptions(): void {\n const format = this.getDisplayFormat();\n\n // default meridian option based on format option\n this._meridian =\n this.meridian != null ? this.meridian : this._dateTimeAdapter.isTimeFormatIncludesDayPeriod(format);\n\n // default seconds option based on format option\n this._displaySeconds =\n this.displaySeconds != null\n ? this.displaySeconds\n : this._dateTimeAdapter.isTimeFormatIncludesSeconds(format);\n\n // default minutes option based on format option\n this._displayMinutes =\n this.displayMinutes != null\n ? this.displayMinutes\n : this._dateTimeAdapter.isTimeFormatIncludesMinutes(format);\n\n // default hours option based on format option\n this._displayHours =\n this.displayHours != null ? this.displayHours : this._dateTimeAdapter.isTimeFormatIncludesHours(format);\n }\n\n /** @hidden */\n private initialiseVariablesInMessageService(): void {\n this._popoverFormMessage.init(this._inputGroupElement);\n this._popoverFormMessage.message = this._message;\n this._popoverFormMessage.triggers = this._messageTriggers;\n this._popoverFormMessage.messageType = this._state;\n }\n}\n","<fd-popover\n [(isOpen)]=\"isOpen\"\n (isOpenChange)=\"_onOpenStateChanged($event)\"\n [triggers]=\"[]\"\n [disabled]=\"disabled\"\n [placement]=\"placement\"\n [closeOnEscapeKey]=\"true\"\n [focusAutoCapture]=\"false\"\n [focusTrapped]=\"true\"\n>\n <fd-popover-control>\n <fd-input-group\n #inputGroupComponent\n [compact]=\"compact\"\n (addOnButtonClicked)=\"_addOnButtonClicked()\"\n [button]=\"true\"\n [state]=\"state\"\n [disabled]=\"disabled\"\n [buttonFocusable]=\"buttonFocusable\"\n [isControl]=\"true\"\n [isExpanded]=\"isOpen\"\n [glyphAriaLabel]=\"timePickerButtonLabel\"\n glyph=\"fob-watch\"\n >\n <input\n type=\"text\"\n class=\"fd-input\"\n fd-input-group-input\n [compact]=\"compact\"\n [value]=\"_inputTimeValue\"\n (focusout)=\"_timeInputChanged($event.currentTarget.value)\"\n (keyup.enter)=\"_timeInputChanged($event.currentTarget.value)\"\n [disabled]=\"disabled\"\n [attr.id]=\"inputId\"\n [placeholder]=\"_placeholder\"\n [attr.aria-label]=\"timePickerInputLabel\"\n [attr.aria-describedby]=\"_formValueStateMessageId\"\n [attr.aria-required]=\"required\"\n />\n </fd-input-group>\n </fd-popover-control>\n <fd-popover-body>\n <fd-form-message [embedded]=\"true\" *ngIf=\"_message\" [type]=\"state\">\n {{ _message }}\n </fd-form-message>\n <ng-content></ng-content>\n <fd-time\n *ngIf=\"isOpen\"\n [tablet]=\"tablet\"\n [compact]=\"compact\"\n [disabled]=\"disabled\"\n [keepTwoDigits]=\"keepTwoDigitsTime\"\n [ngModel]=\"time\"\n (ngModelChange)=\"_timeComponentValueChanged($event)\"\n [meridian]=\"_meridian\"\n [displayHours]=\"_displayHours\"\n [displayMinutes]=\"_displayMinutes\"\n [displaySeconds]=\"_displaySeconds\"\n [spinnerButtons]=\"spinnerButtons\"\n ></fd-time>\n </fd-popover-body>\n</fd-popover>\n\n<div style=\"display: none\" aria-hidden=\"true\">\n <div [attr.id]=\"_formValueStateMessageId\" aria-atomic=\"true\" aria-live=\"assertive\">\n <ng-container [ngSwitch]=\"state\">\n <ng-container *ngSwitchCase=\"'success'\">{{ valueStateSuccessMessage }}</ng-container>\n <ng-container *ngSwitchCase=\"'information'\">{{ valueStateInformationMessage }}</ng-container>\n <ng-container *ngSwitchCase=\"'warning'\">{{ valueStateWarningMessage }}</ng-container>\n <ng-container *ngSwitchCase=\"'error'\">{{ valueStateErrorMessage }}</ng-container>\n </ng-container>\n {{ _message }}\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { InputGroupModule } from '@fundamental-ngx/core/input-group';\nimport { TimeModule } from '@fundamental-ngx/core/time';\n\nimport { TimePickerComponent } from './time-picker.component';\nimport { FormMessageModule } from '@fundamental-ngx/core/form';\n\n@NgModule({\n declarations: [TimePickerComponent],\n imports: [CommonModule, FormsModule, PopoverModule, InputGroupModule, TimeModule, FormMessageModule],\n exports: [TimePickerComponent, PopoverModule, InputGroupModule, TimeModule]\n})\nexport class TimePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-time-picker.mjs","sources":["../../../../libs/core/src/lib/time-picker/errors.ts","../../../../libs/core/src/lib/time-picker/time-picker.component.ts","../../../../libs/core/src/lib/time-picker/time-picker.component.html","../../../../libs/core/src/lib/time-picker/time-picker.module.ts","../../../../libs/core/src/lib/time-picker/fundamental-ngx-core-time-picker.ts"],"sourcesContent":["export function createMissingDateImplementationError(provider: string): Error {\n return Error(\n `FdTime: No provider found for ${provider}. You must import one of the following ` +\n `modules at your application root: FdDatetimeModule, or provide a ` +\n `custom implementation.`\n );\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\nimport { Subject, Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { Placement, FormStates, ValueStateAriaMessageService } from '@fundamental-ngx/core/shared';\nimport { DatetimeAdapter, DATE_TIME_FORMATS, DateTimeFormats } from '@fundamental-ngx/core/datetime';\nimport { TimeComponent } from '@fundamental-ngx/core/time';\nimport { PopoverFormMessageService } from '@fundamental-ngx/core/form';\nimport { PopoverService } from '@fundamental-ngx/core/popover';\nimport { ContentDensityService } from '@fundamental-ngx/core/utils';\nimport { InputGroupInputDirective } from '@fundamental-ngx/core/input-group';\n\nimport { createMissingDateImplementationError } from './errors';\n\nlet timePickerCounter = 0;\n\n@Component({\n selector: 'fd-time-picker',\n templateUrl: './time-picker.component.html',\n host: {\n '(blur)': 'onTouched()',\n class: 'fd-time-picker fd-timepicker-custom'\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimePickerComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => TimePickerComponent),\n multi: true\n },\n PopoverFormMessageService,\n PopoverService\n ],\n styleUrls: ['./time-picker.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TimePickerComponent<D>\n implements ControlValueAccessor, OnInit, AfterViewInit, OnChanges, OnDestroy, Validator\n{\n /**\n * Date time object representation\n */\n @Input()\n time: D;\n\n /** Id attribute for input element inside TimePicker component */\n @Input()\n inputId: string;\n\n /** Uses compact time picker. */\n @Input()\n compact?: boolean;\n\n /** Disables the component. */\n @Input()\n disabled: boolean;\n\n /** If it is mandatory field */\n @Input()\n required = false;\n\n /** Whether to show spinner buttons */\n @Input()\n spinnerButtons = true;\n\n /**\n * When set to false, uses the 24 hour clock (hours ranging from 0 to 23).\n * Default value based on the current locale format option\n */\n @Input()\n meridian: boolean;\n\n /**\n * When set to false, hides the input for seconds.\n * Default value based on the current locale format option\n * */\n @Input()\n displaySeconds: boolean;\n\n /**\n * When set to false, hides the input for minutes.\n * Default value based on the current locale format option\n * */\n @Input()\n displayMinutes: boolean;\n\n /**\n * When set to false, hides the input for hours.\n * Default value based on the current locale format option\n * */\n @Input()\n displayHours: boolean;\n\n /**\n * Default time picker placeholder which is set dependant on the hours, minutes and seconds.\n * Otherwise It can be set to a default value\n */\n @Input()\n placeholder: string;\n\n /** Aria label for the time picker input. */\n @Input()\n timePickerInputLabel = 'Time picker input';\n\n /** Aria label for the time picker toggle button. */\n @Input()\n timePickerButtonLabel = 'Open picker';\n\n /** Whether a null input is considered valid(success). */\n @Input()\n allowNull = true;\n\n /** Defines if time component should be used with tablet mode */\n @Input()\n tablet = false;\n\n /** Text displayed in message */\n @Input()\n set message(message: string) {\n this._message = message;\n this._popoverFormMessage.message = message;\n }\n\n /** @hidden */\n _message: string = null;\n\n /** Type of the message. Can be 'success' | 'error' | 'warning' | 'information' */\n @Input()\n set messageType(messageType: FormStates) {\n this._messageType = messageType;\n this._popoverFormMessage.messageType = messageType;\n }\n\n /** @hidden */\n _messageType: FormStates = null;\n\n /**\n * The trigger events that will open/close the message box.\n * Accepts any [HTML DOM Events](https://www.w3schools.com/jsref/dom_obj_event.asp).\n */\n @Input()\n set messageTriggers(triggers: string[]) {\n this._messageTriggers = triggers;\n this._popoverFormMessage.triggers = triggers;\n }\n\n /** @hidden */\n _messageTriggers: string[] = ['focusin', 'focusout'];\n\n /**\n * The placement of the popover. It can be one of: top, top-start, top-end, bottom,\n * bottom-start, bottom-end, right, right-start, right-end, left, left-start, left-end.\n */\n @Input()\n placement: Placement = 'bottom-start';\n\n /** Whether to validate the time picker input. */\n @Input()\n useValidation = true;\n\n /**\n * The state of the form control - applies css classes.\n * Also this is applied to message.\n * Can be `success`, `error`, `warning`, `information` or blank for default.\n */\n @Input()\n set state(state: FormStates) {\n this._state = state;\n this._popoverFormMessage.messageType = state;\n }\n\n get state(): FormStates {\n if (this._state == null && this.useValidation && this._isInvalidTimeInput) {\n return 'error';\n }\n return this._state;\n }\n\n private _state: FormStates = null;\n\n /**\n * Whether AddOn Button should be focusable\n * @default true\n */\n @Input()\n buttonFocusable = true;\n\n /**\n * When set to true, time inputs won't allow to have 1 digit\n * for example 9 will become 09\n * but 12 will be kept as 12.\n */\n @Input()\n keepTwoDigitsTime = false;\n\n /**\n * Display format option to customize time format in input control.\n * Must be a format option that is understandable by DatetimeAdapter.\n */\n @Input()\n displayFormat: unknown;\n\n /**\n * Parse format option to customize time format in input control.\n * Must be a format option that is understandable by DatetimeAdapter.\n */\n @Input()\n parseFormat: unknown;\n\n /**\n * Value state \"success\" aria message.\n */\n @Input()\n valueStateSuccessMessage: string = this._valueStateAriaMessagesService.success;\n\n /**\n * Value state \"information\" aria message.\n */\n @Input()\n valueStateInformationMessage: string = this._valueStateAriaMessagesService.information;\n\n /**\n * Value state \"warning\" aria message.\n */\n @Input()\n valueStateWarningMessage: string = this._valueStateAriaMessagesService.warning;\n\n /**\n * Value state \"error\" aria message.\n */\n @Input()\n valueStateErrorMessage: string = this._valueStateAriaMessagesService.error;\n\n /** Event emitted when the state of the isOpen property changes. */\n @Output()\n isOpenChange = new EventEmitter<boolean>();\n\n /** @hidden */\n @ViewChild(TimeComponent)\n child: TimeComponent<D>;\n\n /** @hidden */\n @ViewChild('inputGroupComponent', { read: ElementRef })\n _inputGroupElement: ElementRef;\n\n /** @hidden */\n @ViewChild(InputGroupInputDirective, { read: ElementRef })\n _inputElement: ElementRef;\n\n /**\n * @hidden\n * Whether the input time is valid(success). Internal use.\n */\n _isInvalidTimeInput = false;\n\n /**\n * @hidden\n * Indicates when popover is opened\n */\n isOpen: boolean;\n\n /** @hidden */\n _meridian: boolean;\n\n /** @hidden */\n _displaySeconds: boolean;\n\n /** @hidden */\n _displayMinutes: boolean;\n\n /** @hidden */\n _displayHours: boolean;\n\n /**\n * @hidden\n * Input field value\n */\n _inputTimeValue = '';\n\n _formValueStateMessageId = `fd-time-picker-form-message-${timePickerCounter++}`;\n\n /** @hidden */\n private readonly _onDestroy$: Subject<void> = new Subject<void>();\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n onChange: (_: D) => void = () => {};\n /** @hidden */\n onTouched: () => void = () => {};\n\n /** @hidden */\n get _placeholder(): string {\n return this.placeholder || this._getPlaceholder();\n }\n\n /** @hidden */\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n // Use @Optional to avoid angular injection error message and throw our own which is more precise one\n @Optional() private _dateTimeAdapter: DatetimeAdapter<D>,\n @Optional() @Inject(DATE_TIME_FORMATS) private _dateTimeFormats: DateTimeFormats,\n private _popoverFormMessage: PopoverFormMessageService,\n @Optional() private _contentDensityService: ContentDensityService,\n private _valueStateAriaMessagesService: ValueStateAriaMessageService\n ) {\n if (!this._dateTimeAdapter) {\n throw createMissingDateImplementationError('DateTimeAdapter');\n }\n if (!this._dateTimeFormats) {\n throw createMissingDateImplementationError('DATE_TIME_FORMATS');\n }\n }\n\n ngOnInit(): void {\n this._calculateTimeOptions();\n this._formatTimeInputField();\n\n if (this.compact === undefined && this._contentDensityService) {\n this._subscriptions.add(\n this._contentDensityService._isCompactDensity.subscribe((isCompact) => {\n this.compact = isCompact;\n this._changeDetectorRef.markForCheck();\n })\n );\n }\n\n this._dateTimeAdapter.localeChanges.pipe(takeUntil(this._onDestroy$)).subscribe(() => {\n this._calculateTimeOptions();\n this._formatTimeInputField();\n this._changeDetectorRef.detectChanges();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (\n ['displayHours', 'displayMinutes', 'displaySeconds', 'meridian', 'displayFormat'].some(\n (change) => change in changes\n )\n ) {\n this._calculateTimeOptions();\n }\n if (changes.displayFormat) {\n this._formatTimeInputField();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n this._onDestroy$.next();\n this._onDestroy$.complete();\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this.initialiseVariablesInMessageService();\n }\n\n /**\n * @hidden\n * Function that implements Validator Interface, adds validation support for forms\n */\n validate(): {\n [key: string]: any;\n } {\n if (this._isInvalidTimeInput) {\n return {\n timeValidation: {\n valid: false\n }\n };\n }\n\n return null;\n }\n\n /**\n * Returns the current value of the time input.\n */\n getTime(): D {\n return this.time;\n }\n\n /**\n * Returns format options to be used during time formatting.\n */\n getDisplayFormat(): unknown {\n return this.displayFormat || this._dateTimeFormats.display.timeInput;\n }\n\n /**\n * Returns format options to be used during time parsing.\n */\n getParseFormat(): unknown {\n return this.parseFormat || this._dateTimeFormats.parse.timeInput;\n }\n\n /** @hidden */\n _getFormattedTime(time = this.time): string {\n let formattedTime = '';\n\n try {\n if (this.allowNull && time === null) {\n return '';\n }\n formattedTime = this._dateTimeAdapter.format(time, this.getDisplayFormat());\n } catch (e) {}\n\n return formattedTime;\n }\n\n /**\n * @hidden\n * When the open state is changed, there should be at least one active item, which by default is hour.\n */\n _setIsOpen(isOpen: boolean): void {\n this.isOpen = isOpen;\n this._onOpenStateChanged(isOpen);\n }\n\n /**\n * @hidden\n * Time input field changes handler\n */\n _timeInputChanged(inputValue: string): void {\n inputValue = inputValue.trim();\n\n // check if value has been changed\n if (this._inputTimeValue === inputValue) {\n return;\n }\n\n this._inputTimeValue = inputValue;\n\n if (inputValue === '') {\n this.time = null;\n this._isInvalidTimeInput = !this.allowNull;\n }\n\n if (inputValue !== '') {\n this.time = this._dateTimeAdapter.parse(inputValue, this.getParseFormat());\n this._isInvalidTimeInput = !this._dateTimeAdapter.isValid(this.time);\n }\n\n this.onChange(this.time);\n\n this._changeDetectorRef.detectChanges();\n }\n\n /** @hidden */\n _inputGroupClicked($event: MouseEvent): void {\n if (!this.isOpen && !this.disabled) {\n $event.stopPropagation();\n this._setIsOpen(true);\n }\n }\n\n /** @hidden */\n _addOnButtonClicked(): void {\n if (!this.disabled) {\n this._setIsOpen(!this.isOpen);\n }\n }\n\n /** @hidden */\n _popoverClosed(): void {\n this._setIsOpen(false);\n }\n\n /** @hidden */\n _getPlaceholder(): string {\n let retVal = '';\n\n if (this._displayHours) {\n retVal = retVal + 'hh';\n }\n if (this._displayMinutes) {\n retVal = retVal + ':mm';\n }\n if (this._displaySeconds) {\n retVal = retVal + ':ss';\n }\n if (this._meridian) {\n retVal = retVal + ' am/pm';\n }\n\n return retVal;\n }\n\n /** @hidden */\n _timeComponentValueChanged(time: D): void {\n if (this._dateTimeAdapter.dateTimesEqual(time, this.time)) {\n return;\n }\n this._inputTimeValue = this._getFormattedTime(time);\n this.time = time;\n this._isInvalidTimeInput = !this._dateTimeAdapter.isValid(time);\n this.onChange(time);\n this._changeDetectorRef.detectChanges();\n }\n\n // #region ControlValueAccessor\n\n /** @hidden */\n registerOnChange(fn: (time: D) => void): void {\n this.onChange = fn;\n }\n\n /** @hidden */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /** @hidden */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this._changeDetectorRef.detectChanges();\n }\n\n /** @hidden */\n writeValue(time: D): void {\n if (!time) {\n this.time = null;\n this._inputTimeValue = '';\n this._isInvalidTimeInput = !this.allowNull;\n } else {\n this.time = time;\n this._inputTimeValue = this._getFormattedTime(time);\n this._isInvalidTimeInput = !this._dateTimeAdapter.isValid(time);\n }\n this._changeDetectorRef.markForCheck();\n }\n\n // #endregion ControlValueAccessor\n\n /** @hidden */\n _formatTimeInputField(time = this.time): string {\n return (this._inputTimeValue = this._getFormattedTime(time));\n }\n\n /** @hidden */\n _changeMessageVisibility(): void {\n if (this.isOpen) {\n this._popoverFormMessage.hide();\n } else {\n this._popoverFormMessage.show();\n }\n }\n\n /** @hidden */\n _onOpenStateChanged(isOpen: boolean): void {\n this.isOpenChange.emit(isOpen);\n this._changeMessageVisibility();\n if (isOpen) {\n this._changeDetectorRef.detectChanges();\n this.child.focusActiveColumn();\n }\n // focus input control every time popup is closed\n if (!isOpen && this._inputElement) {\n this._inputElement.nativeElement.focus();\n }\n }\n\n /** @hidden */\n private _calculateTimeOptions(): void {\n const format = this.getDisplayFormat();\n\n // default meridian option based on format option\n this._meridian =\n this.meridian != null ? this.meridian : this._dateTimeAdapter.isTimeFormatIncludesDayPeriod(format);\n\n // default seconds option based on format option\n this._displaySeconds =\n this.displaySeconds != null\n ? this.displaySeconds\n : this._dateTimeAdapter.isTimeFormatIncludesSeconds(format);\n\n // default minutes option based on format option\n this._displayMinutes =\n this.displayMinutes != null\n ? this.displayMinutes\n : this._dateTimeAdapter.isTimeFormatIncludesMinutes(format);\n\n // default hours option based on format option\n this._displayHours =\n this.displayHours != null ? this.displayHours : this._dateTimeAdapter.isTimeFormatIncludesHours(format);\n }\n\n /** @hidden */\n private initialiseVariablesInMessageService(): void {\n this._popoverFormMessage.init(this._inputGroupElement);\n this._popoverFormMessage.message = this._message;\n this._popoverFormMessage.triggers = this._messageTriggers;\n this._popoverFormMessage.messageType = this._state;\n }\n}\n","<fd-popover\n [(isOpen)]=\"isOpen\"\n (isOpenChange)=\"_onOpenStateChanged($event)\"\n [triggers]=\"[]\"\n [disabled]=\"disabled\"\n [placement]=\"placement\"\n [closeOnEscapeKey]=\"true\"\n [focusAutoCapture]=\"false\"\n [focusTrapped]=\"true\"\n>\n <fd-popover-control>\n <fd-input-group\n #inputGroupComponent\n [compact]=\"compact\"\n (addOnButtonClicked)=\"_addOnButtonClicked()\"\n [button]=\"true\"\n [state]=\"state\"\n [disabled]=\"disabled\"\n [buttonFocusable]=\"buttonFocusable\"\n [isControl]=\"true\"\n [isExpanded]=\"isOpen\"\n [glyphAriaLabel]=\"timePickerButtonLabel\"\n glyph=\"fob-watch\"\n >\n <input\n type=\"text\"\n class=\"fd-input\"\n fd-input-group-input\n [compact]=\"compact\"\n [value]=\"_inputTimeValue\"\n (focusout)=\"_timeInputChanged($event.currentTarget.value)\"\n (keyup.enter)=\"_timeInputChanged($event.currentTarget.value)\"\n [disabled]=\"disabled\"\n [attr.id]=\"inputId\"\n [placeholder]=\"_placeholder\"\n [attr.aria-label]=\"timePickerInputLabel\"\n [attr.aria-describedby]=\"_formValueStateMessageId\"\n [attr.aria-required]=\"required\"\n />\n </fd-input-group>\n </fd-popover-control>\n <fd-popover-body>\n <fd-form-message [embedded]=\"true\" *ngIf=\"_message\" [type]=\"state\">\n {{ _message }}\n </fd-form-message>\n <ng-content></ng-content>\n <fd-time\n *ngIf=\"isOpen\"\n [tablet]=\"tablet\"\n [compact]=\"compact\"\n [disabled]=\"disabled\"\n [keepTwoDigits]=\"keepTwoDigitsTime\"\n [ngModel]=\"time\"\n (ngModelChange)=\"_timeComponentValueChanged($event)\"\n [meridian]=\"_meridian\"\n [displayHours]=\"_displayHours\"\n [displayMinutes]=\"_displayMinutes\"\n [displaySeconds]=\"_displaySeconds\"\n [spinnerButtons]=\"spinnerButtons\"\n ></fd-time>\n </fd-popover-body>\n</fd-popover>\n\n<div style=\"display: none\" aria-hidden=\"true\">\n <div [attr.id]=\"_formValueStateMessageId\" aria-atomic=\"true\" aria-live=\"assertive\">\n <ng-container [ngSwitch]=\"state\">\n <ng-container *ngSwitchCase=\"'success'\">{{ valueStateSuccessMessage }}</ng-container>\n <ng-container *ngSwitchCase=\"'information'\">{{ valueStateInformationMessage }}</ng-container>\n <ng-container *ngSwitchCase=\"'warning'\">{{ valueStateWarningMessage }}</ng-container>\n <ng-container *ngSwitchCase=\"'error'\">{{ valueStateErrorMessage }}</ng-container>\n </ng-container>\n {{ _message }}\n </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { InputGroupModule } from '@fundamental-ngx/core/input-group';\nimport { TimeModule } from '@fundamental-ngx/core/time';\n\nimport { TimePickerComponent } from './time-picker.component';\nimport { FormMessageModule } from '@fundamental-ngx/core/form';\n\n@NgModule({\n declarations: [TimePickerComponent],\n imports: [CommonModule, FormsModule, PopoverModule, InputGroupModule, TimeModule, FormMessageModule],\n exports: [TimePickerComponent, PopoverModule, InputGroupModule, TimeModule]\n})\nexport class TimePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|