igniteui-angular 17.2.22 → 17.2.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/calendar/calendar.component.mjs +3 -10
- package/esm2022/lib/calendar/days-view/days-view.component.mjs +3 -3
- package/esm2022/lib/combo/combo.common.mjs +17 -7
- package/esm2022/lib/combo/combo.component.mjs +3 -3
- package/esm2022/lib/date-common/picker-base.directive.mjs +12 -1
- package/esm2022/lib/date-picker/date-picker.component.mjs +10 -7
- package/esm2022/lib/date-range-picker/date-range-picker.component.mjs +9 -2
- package/esm2022/lib/grids/filtering/base/grid-filtering-row.component.mjs +7 -7
- package/esm2022/lib/slider/slider.component.mjs +4 -38
- package/esm2022/lib/slider/thumb/thumb-slider.component.mjs +55 -2
- package/esm2022/lib/time-picker/time-picker.component.mjs +4 -1
- package/fesm2022/igniteui-angular.mjs +116 -70
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/lib/combo/combo.common.d.ts +3 -0
- package/lib/core/styles/components/input/_input-group-theme.scss +1 -0
- package/lib/date-common/picker-base.directive.d.ts +6 -0
- package/lib/date-picker/date-picker.component.d.ts +2 -0
- package/lib/date-range-picker/date-range-picker.component.d.ts +2 -0
- package/lib/grids/filtering/base/grid-filtering-row.component.d.ts +1 -1
- package/lib/slider/slider.component.d.ts +0 -16
- package/lib/slider/thumb/thumb-slider.component.d.ts +12 -1
- package/lib/time-picker/time-picker.component.d.ts +1 -0
- package/package.json +1 -1
- package/styles/igniteui-angular-dark.css +1 -1
- package/styles/igniteui-angular.css +1 -1
- package/styles/igniteui-bootstrap-dark.css +1 -1
- package/styles/igniteui-bootstrap-light.css +1 -1
- package/styles/igniteui-dark-green.css +1 -1
- package/styles/igniteui-fluent-dark-excel.css +1 -1
- package/styles/igniteui-fluent-dark-word.css +1 -1
- package/styles/igniteui-fluent-dark.css +1 -1
- package/styles/igniteui-fluent-light-excel.css +1 -1
- package/styles/igniteui-fluent-light-word.css +1 -1
- package/styles/igniteui-fluent-light.css +1 -1
- package/styles/igniteui-indigo-dark.css +1 -1
- package/styles/igniteui-indigo-light.css +1 -1
- package/styles/maps/igniteui-angular-dark.css.map +1 -1
- package/styles/maps/igniteui-angular.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
- package/styles/maps/igniteui-dark-green.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-light.css.map +1 -1
- package/styles/maps/igniteui-indigo-dark.css.map +1 -1
- package/styles/maps/igniteui-indigo-light.css.map +1 -1
|
@@ -150,6 +150,9 @@ export class IgxTimePickerComponent extends PickerBaseDirective {
|
|
|
150
150
|
}
|
|
151
151
|
return this._dateMaxValue;
|
|
152
152
|
}
|
|
153
|
+
get toggleContainer() {
|
|
154
|
+
return this.toggleRef?.element;
|
|
155
|
+
}
|
|
153
156
|
get required() {
|
|
154
157
|
if (this._ngControl && this._ngControl.control && this._ngControl.control.validator) {
|
|
155
158
|
// Run the validation with empty object to check if required is enabled.
|
|
@@ -1115,4 +1118,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
1115
1118
|
type: HostListener,
|
|
1116
1119
|
args: ['keydown', ['$event']]
|
|
1117
1120
|
}] } });
|
|
1118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi90aW1lLXBpY2tlci90aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RSxPQUFPLEVBQ0gsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFLTixTQUFTLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBYSxZQUFZLEVBQUUsZ0JBQWdCLEVBQ2xGLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsU0FBUyxFQUlULGFBQWEsRUFDaEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkYsT0FBTyxFQUFxQixvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxtQkFBbUIsRUFBMEIsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RSxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUN2QixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBZ0IsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQXFC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QkFEM0IsS0FBSztnQkF3QkssVUFBVTtzQkFEcEIsS0FBSztnQkF1QkMsU0FBUztzQkFEZixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSWYsIE5nQ2xhc3MsIE5nRm9yLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgSW5qZWN0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgSW5qZWN0b3IsXG4gICAgUGlwZVRyYW5zZm9ybSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBMT0NBTEVfSUQsIE9wdGlvbmFsLCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgSG9zdExpc3RlbmVyLCBib29sZWFuQXR0cmlidXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICBOZ0NvbnRyb2wsXG4gICAgQWJzdHJhY3RDb250cm9sLFxuICAgIFZhbGlkYXRpb25FcnJvcnMsXG4gICAgVmFsaWRhdG9yLFxuICAgIE5HX1ZBTElEQVRPUlNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQtZ3JvdXAvaW5wdXQtZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IElneElucHV0RGlyZWN0aXZlLCBJZ3hJbnB1dFN0YXRlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9pbnB1dC9pbnB1dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4SW5wdXRHcm91cFR5cGUsIElHWF9JTlBVVF9HUk9VUF9UWVBFIH0gZnJvbSAnLi4vaW5wdXQtZ3JvdXAvcHVibGljX2FwaSc7XG5pbXBvcnQgeyBEaXNwbGF5RGVuc2l0eVRva2VuLCBJRGlzcGxheURlbnNpdHlPcHRpb25zIH0gZnJvbSAnLi4vY29yZS9kZW5zaXR5JztcbmltcG9ydCB7XG4gICAgSWd4SXRlbUxpc3REaXJlY3RpdmUsXG4gICAgSWd4VGltZUl0ZW1EaXJlY3RpdmVcbn0gZnJvbSAnLi90aW1lLXBpY2tlci5kaXJlY3RpdmVzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgbm9vcCwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJZ3hUaW1lUGlja2VyQmFzZSwgSUdYX1RJTUVfUElDS0VSX0NPTVBPTkVOVCB9IGZyb20gJy4vdGltZS1waWNrZXIuY29tbW9uJztcbmltcG9ydCB7IEFic29sdXRlU2Nyb2xsU3RyYXRlZ3kgfSBmcm9tICcuLi9zZXJ2aWNlcy9vdmVybGF5L3Njcm9sbCc7XG5pbXBvcnQgeyBBdXRvUG9zaXRpb25TdHJhdGVneSB9IGZyb20gJy4uL3NlcnZpY2VzL292ZXJsYXkvcG9zaXRpb24nO1xuaW1wb3J0IHsgT3ZlcmxheVNldHRpbmdzIH0gZnJvbSAnLi4vc2VydmljZXMvb3ZlcmxheS91dGlsaXRpZXMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSWd4QnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9idXR0b24vYnV0dG9uLmRpcmVjdGl2ZSc7XG5cbmltcG9ydCB7IElneERhdGVUaW1lRWRpdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9kYXRlLXRpbWUtZWRpdG9yL2RhdGUtdGltZS1lZGl0b3IuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneFRvZ2dsZURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvdG9nZ2xlL3RvZ2dsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSVRpbWVQaWNrZXJSZXNvdXJjZVN0cmluZ3MsIFRpbWVQaWNrZXJSZXNvdXJjZVN0cmluZ3NFTiB9IGZyb20gJy4uL2NvcmUvaTE4bi90aW1lLXBpY2tlci1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgSUJhc2VFdmVudEFyZ3MsIGlzRXF1YWwsIGlzRGF0ZSwgUGxhdGZvcm1VdGlsLCBJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBQaWNrZXJJbnRlcmFjdGlvbk1vZGUgfSBmcm9tICcuLi9kYXRlLWNvbW1vbi90eXBlcyc7XG5pbXBvcnQgeyBJZ3hUZXh0U2VsZWN0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy90ZXh0LXNlbGVjdGlvbi90ZXh0LXNlbGVjdGlvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4TGFiZWxEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2xhYmVsL2xhYmVsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQaWNrZXJCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGF0ZS1jb21tb24vcGlja2VyLWJhc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IERhdGVUaW1lVXRpbCB9IGZyb20gJy4uL2RhdGUtY29tbW9uL3V0aWwvZGF0ZS10aW1lLnV0aWwnO1xuaW1wb3J0IHsgRGF0ZVBhcnQsIERhdGVQYXJ0RGVsdGFzIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9kYXRlLXRpbWUtZWRpdG9yL3B1YmxpY19hcGknO1xuaW1wb3J0IHsgUGlja2VySGVhZGVyT3JpZW50YXRpb24gfSBmcm9tICcuLi9kYXRlLWNvbW1vbi90eXBlcyc7XG5pbXBvcnQgeyBJZ3hQaWNrZXJBY3Rpb25zRGlyZWN0aXZlLCBJZ3hQaWNrZXJDbGVhckNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGUtY29tbW9uL3BpY2tlci1pY29ucy5jb21tb24nO1xuaW1wb3J0IHsgVGltZUZvcm1hdFBpcGUsIFRpbWVJdGVtUGlwZSB9IGZyb20gJy4vdGltZS1waWNrZXIucGlwZXMnO1xuaW1wb3J0IHsgSWd4U3VmZml4RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9zdWZmaXgvc3VmZml4LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hQcmVmaXhEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3ByZWZpeC9wcmVmaXguZGlyZWN0aXZlJztcbmltcG9ydCB7IGdldEN1cnJlbnRSZXNvdXJjZVN0cmluZ3MgfSBmcm9tICcuLi9jb3JlL2kxOG4vcmVzb3VyY2VzJztcbmltcG9ydCB7IElneERpdmlkZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2RpdmlkZXIvZGl2aWRlci5kaXJlY3RpdmUnO1xuXG5sZXQgTkVYVF9JRCA9IDA7XG5leHBvcnQgaW50ZXJmYWNlIElneFRpbWVQaWNrZXJWYWxpZGF0aW9uRmFpbGVkRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIHByZXZpb3VzVmFsdWU6IERhdGUgfCBzdHJpbmc7XG4gICAgY3VycmVudFZhbHVlOiBEYXRlIHwgc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogSWd4VGltZVBpY2tlckNvbXBvbmVudCxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IElHWF9USU1FX1BJQ0tFUl9DT01QT05FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogSWd4VGltZVBpY2tlckNvbXBvbmVudFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IElneFRpbWVQaWNrZXJDb21wb25lbnQsXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBzZWxlY3RvcjogJ2lneC10aW1lLXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICd0aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVzOiBbXG4gICAgICAgIGA6aG9zdCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfWBcbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0lneElucHV0R3JvdXBDb21wb25lbnQsIElneElucHV0RGlyZWN0aXZlLCBJZ3hEYXRlVGltZUVkaXRvckRpcmVjdGl2ZSwgSWd4VGV4dFNlbGVjdGlvbkRpcmVjdGl2ZSwgTmdJZiwgSWd4UHJlZml4RGlyZWN0aXZlLCBJZ3hJY29uQ29tcG9uZW50LCBJZ3hTdWZmaXhEaXJlY3RpdmUsIElneEJ1dHRvbkRpcmVjdGl2ZSwgSWd4VG9nZ2xlRGlyZWN0aXZlLCBOZ0NsYXNzLCBJZ3hJdGVtTGlzdERpcmVjdGl2ZSwgTmdGb3IsIElneFRpbWVJdGVtRGlyZWN0aXZlLCBOZ1RlbXBsYXRlT3V0bGV0LCBUaW1lRm9ybWF0UGlwZSwgVGltZUl0ZW1QaXBlLCBJZ3hEaXZpZGVyRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hUaW1lUGlja2VyQ29tcG9uZW50IGV4dGVuZHMgUGlja2VyQmFzZURpcmVjdGl2ZVxuICAgIGltcGxlbWVudHNcbiAgICBJZ3hUaW1lUGlja2VyQmFzZSxcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBPbkluaXQsXG4gICAgT25EZXN0cm95LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgVmFsaWRhdG9yIHtcbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgYGlkYCBhdHRyaWJ1dGUuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtdGltZS1waWNrZXIgW2lkXT1cIidpZ3gtdGltZS1waWNrZXItNSdcIiBbZGlzcGxheUZvcm1hdF09XCJoOm1tIHR0XCIgPjwvaWd4LXRpbWUtcGlja2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWQgPSBgaWd4LXRpbWUtcGlja2VyLSR7TkVYVF9JRCsrfWA7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZm9ybWF0IHVzZWQgd2hlbiBlZGl0YWJsZSBpbnB1dCBpcyBub3QgZm9jdXNlZC4gRGVmYXVsdHMgdG8gdGhlIGBpbnB1dEZvcm1hdGAgaWYgbm90IHNldC5cbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogVXNlcyBBbmd1bGFyJ3MgYERhdGVQaXBlYC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtdGltZS1waWNrZXIgZGlzcGxheUZvcm1hdD1cIm1tOnNzXCI+PC9pZ3gtdGltZS1waWNrZXI+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvdmVycmlkZSBkaXNwbGF5Rm9ybWF0OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZXhwZWN0ZWQgdXNlciBpbnB1dCBmb3JtYXQgYW5kIHBsYWNlaG9sZGVyLlxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBEZWZhdWx0IGlzIGBoaDptbSB0dGBcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtdGltZS1waWNrZXIgaW5wdXRGb3JtYXQ9XCJISDptbVwiPjwvaWd4LXRpbWUtcGlja2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG92ZXJyaWRlIGlucHV0Rm9ybWF0OiBzdHJpbmcgPSBEYXRlVGltZVV0aWwuREVGQVVMVF9USU1FX0lOUFVUX0ZPUk1BVDtcblxuICAgIC8qKlxuICAgICAqIEdldHMvU2V0cyB0aGUgaW50ZXJhY3Rpb24gbW9kZSAtIGRpYWxvZyBvciBkcm9wIGRvd24uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXRpbWUtcGlja2VyIG1vZGU9XCJkaWFsb2dcIj48L2lneC10aW1lLXBpY2tlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvdmVycmlkZSBtb2RlOiBQaWNrZXJJbnRlcmFjdGlvbk1vZGUgPSBQaWNrZXJJbnRlcmFjdGlvbk1vZGUuRHJvcERvd247XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbWluaW11bSB2YWx1ZSB0aGUgcGlja2VyIHdpbGwgYWNjZXB0LlxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBJZiBhIGBzdHJpbmdgIHZhbHVlIGlzIHBhc3NlZCBpbiwgaXQgbXVzdCBiZSBpbiBJU08gZm9ybWF0LlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC10aW1lLXBpY2tlciBbbWluVmFsdWVdPVwiMTg6MDA6MDBcIj48L2lneC10aW1lLXBpY2tlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgbWluVmFsdWUodmFsdWU6IERhdGUgfCBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fbWluVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMucGFyc2VUb0RhdGUodmFsdWUpO1xuICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0ZU1pblZhbHVlID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGVNaW5WYWx1ZS5zZXRIb3VycyhkYXRlLmdldEhvdXJzKCksIGRhdGUuZ2V0TWludXRlcygpLCBkYXRlLmdldFNlY29uZHMoKSwgZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSk7XG4gICAgICAgICAgICB0aGlzLm1pbkRyb3Bkb3duVmFsdWUgPSB0aGlzLnNldE1pbk1heERyb3Bkb3duVmFsdWUoJ21pbicsIHRoaXMuX2RhdGVNaW5WYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlKHRoaXMuX3NlbGVjdGVkRGF0ZSk7XG4gICAgICAgIHRoaXMuX29uVmFsaWRhdG9yQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtaW5WYWx1ZSgpOiBEYXRlIHwgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21pblZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgaWYgdGhlIGRyb3Bkb3duL2RpYWxvZyBpcyBjb2xsYXBzZWRcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgaXNDb2xsYXBzZWQgPSB0aGlzLnRpbWVQaWNrZXIuY29sbGFwc2VkO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgY29sbGFwc2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50b2dnbGVSZWY/LmNvbGxhcHNlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbWF4aW11bSB2YWx1ZSB0aGUgcGlja2VyIHdpbGwgYWNjZXB0LlxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBJZiBhIGBzdHJpbmdgIHZhbHVlIGlzIHBhc3NlZCBpbiwgaXQgbXVzdCBiZSBpbiBJU08gZm9ybWF0LlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC10aW1lLXBpY2tlciBbbWF4VmFsdWVdPVwiMjA6MzA6MDBcIj48L2lneC10aW1lLXBpY2tlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgbWF4VmFsdWUodmFsdWU6IERhdGUgfCBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fbWF4VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMucGFyc2VUb0RhdGUodmFsdWUpO1xuICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0ZU1heFZhbHVlID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGVNYXhWYWx1ZS5zZXRIb3VycyhkYXRlLmdldEhvdXJzKCksIGRhdGUuZ2V0TWludXRlcygpLCBkYXRlLmdldFNlY29uZHMoKSwgZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSk7XG4gICAgICAgICAgICB0aGlzLm1heERyb3Bkb3duVmFsdWUgPSB0aGlzLnNldE1pbk1heERyb3Bkb3duVmFsdWUoJ21heCcsIHRoaXMuX2RhdGVNYXhWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlKHRoaXMuX3NlbGVjdGVkRGF0ZSk7XG4gICAgICAgIHRoaXMuX29uVmFsaWRhdG9yQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtYXhWYWx1ZSgpOiBEYXRlIHwgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heFZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgd2hldGhlciB0aGUgc2Vjb25kcywgbWludXRlcyBhbmQgaG91ciBzcGlubmluZyB3aWxsIGxvb3AgYmFjayBhcm91bmQgd2hlbiBlbmQgdmFsdWUgaXMgcmVhY2hlZC5cbiAgICAgKiBCeSBkZWZhdWx0IGl0J3Mgc2V0IHRvIHRydWUuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtdGltZS1waWNrZXIgW3NwaW5Mb29wXT1cImZhbHNlXCI+PC9pZ3gtdGltZS1waWNrZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIHNwaW5Mb29wID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEdldHMvU2V0cyBhIGN1c3RvbSBmb3JtYXR0ZXIgZnVuY3Rpb24gb24gdGhlIHNlbGVjdGVkIG9yIHBhc3NlZCBkYXRlLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC10aW1lLXBpY2tlciBbdmFsdWVdPVwiZGF0ZVwiIFtmb3JtYXR0ZXJdPVwiZm9ybWF0dGVyXCI+PC9pZ3gtdGltZS1waWNrZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZm9ybWF0dGVyOiAodmFsOiBEYXRlKSA9PiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBvcmllbnRhdGlvbiBvZiB0aGUgcGlja2VyJ3MgaGVhZGVyLlxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBBdmFpbGFibGUgaW4gZGlhbG9nIG1vZGUgb25seS4gRGVmYXVsdCB2YWx1ZSBpcyBgaG9yaXpvbnRhbGAuXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC10aW1lLXBpY2tlciBbaGVhZGVyT3JpZW50YXRpb25dPVwiJ3ZlcnRpY2FsJ1wiPjwvaWd4LXRpbWUtcGlja2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhlYWRlck9yaWVudGF0aW9uOiBQaWNrZXJIZWFkZXJPcmllbnRhdGlvbiA9IFBpY2tlckhlYWRlck9yaWVudGF0aW9uLkhvcml6b250YWw7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgcmVhZE9ubHkgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgYWZ0ZXIgYSBzZWxlY3Rpb24gaGFzIGJlZW4gZG9uZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtdGltZS1waWNrZXIgKHNlbGVjdGVkKT1cIm9uU2VsZWN0aW9uKCRldmVudClcIj48L2lneC10aW1lLXBpY2tlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIHBpY2tlcidzIHZhbHVlIGNoYW5nZXMuXG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIFVzZWQgZm9yIGB0d28td2F5YCBiaW5kaW5ncy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtdGltZS1waWNrZXIgWyh2YWx1ZSldPVwiZGF0ZVwiPjwvaWd4LXRpbWUtcGlja2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IHN0cmluZz4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciB0eXBlcy9zcGlucyBpbnZhbGlkIHRpbWUgaW4gdGhlIHRpbWUtcGlja2VyIGVkaXRvci5cbiAgICAgKlxuICAgICAqICBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXRpbWUtcGlja2VyICh2YWxpZGF0aW9uRmFpbGVkKT1cIm9uVmFsaWRhdGlvbkZhaWxlZCgkZXZlbnQpXCI+PC9pZ3gtdGltZS1waWNrZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZhbGlkYXRpb25GYWlsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElneFRpbWVQaWNrZXJWYWxpZGF0aW9uRmFpbGVkRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdob3VyTGlzdCcpXG4gICAgcHVibGljIGhvdXJMaXN0OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdtaW51dGVMaXN0JylcbiAgICBwdWJsaWMgbWludXRlTGlzdDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnc2Vjb25kc0xpc3QnKVxuICAgIHB1YmxpYyBzZWNvbmRzTGlzdDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnYW1wbUxpc3QnKVxuICAgIHB1YmxpYyBhbXBtTGlzdDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oSWd4UGlja2VyQ2xlYXJDb21wb25lbnQpXG4gICAgcHVibGljIGNsZWFyQ29tcG9uZW50czogUXVlcnlMaXN0PElneFBpY2tlckNsZWFyQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBDb250ZW50Q2hpbGQoSWd4TGFiZWxEaXJlY3RpdmUpXG4gICAgcHVibGljIGxhYmVsOiBJZ3hMYWJlbERpcmVjdGl2ZTtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBDb250ZW50Q2hpbGQoSWd4UGlja2VyQWN0aW9uc0RpcmVjdGl2ZSlcbiAgICBwdWJsaWMgdGltZVBpY2tlckFjdGlvbnNEaXJlY3RpdmU6IElneFBpY2tlckFjdGlvbnNEaXJlY3RpdmU7XG5cbiAgICBAVmlld0NoaWxkKElneElucHV0RGlyZWN0aXZlLCB7IHJlYWQ6IElneElucHV0RGlyZWN0aXZlIH0pXG4gICAgcHJpdmF0ZSBpbnB1dERpcmVjdGl2ZTogSWd4SW5wdXREaXJlY3RpdmU7XG5cbiAgICBAVmlld0NoaWxkKElneElucHV0R3JvdXBDb21wb25lbnQpXG4gICAgcHJpdmF0ZSBfaW5wdXRHcm91cDogSWd4SW5wdXRHcm91cENvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoSWd4RGF0ZVRpbWVFZGl0b3JEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJpdmF0ZSBkYXRlVGltZUVkaXRvcjogSWd4RGF0ZVRpbWVFZGl0b3JEaXJlY3RpdmU7XG5cbiAgICBAVmlld0NoaWxkKElneFRvZ2dsZURpcmVjdGl2ZSlcbiAgICBwcml2YXRlIHRvZ2dsZVJlZjogSWd4VG9nZ2xlRGlyZWN0aXZlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgY2xlYXJlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgaXNOb3RFbXB0eSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgY3VycmVudEhvdXI6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIGN1cnJlbnRNaW51dGVzOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyBnZXQgc2hvd0NsZWFyQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5jbGVhckNvbXBvbmVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKERhdGVUaW1lVXRpbC5pc1ZhbGlkRGF0ZSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgLy8gVE9ETzogVXBkYXRlIHcvIGNsZWFyIGJlaGF2aW9yXG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5nZXRIb3VycygpICE9PSAwIHx8IHRoaXMudmFsdWUuZ2V0TWludXRlcygpICE9PSAwIHx8IHRoaXMudmFsdWUuZ2V0U2Vjb25kcygpICE9PSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhIXRoaXMuZGF0ZVRpbWVFZGl0b3IudmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgZ2V0IHNob3dIb3Vyc0xpc3QoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0Rm9ybWF0LmluZGV4T2YoJ2gnKSAhPT0gLSAxIHx8IHRoaXMuaW5wdXRGb3JtYXQuaW5kZXhPZignSCcpICE9PSAtIDE7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgZ2V0IHNob3dNaW51dGVzTGlzdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRGb3JtYXQuaW5kZXhPZignbScpICE9PSAtIDE7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgZ2V0IHNob3dTZWNvbmRzTGlzdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRGb3JtYXQuaW5kZXhPZigncycpICE9PSAtIDE7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgZ2V0IHNob3dBbVBtTGlzdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRGb3JtYXQuaW5kZXhPZigndCcpICE9PSAtIDEgfHwgdGhpcy5pbnB1dEZvcm1hdC5pbmRleE9mKCdhJykgIT09IC0gMTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyBnZXQgaXNUd2VsdmVIb3VyRm9ybWF0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dEZvcm1hdC5pbmRleE9mKCdoJykgIT09IC0gMTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IGlzVmVydGljYWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhlYWRlck9yaWVudGF0aW9uID09PSBQaWNrZXJIZWFkZXJPcmllbnRhdGlvbi5WZXJ0aWNhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IHNlbGVjdGVkRGF0ZSgpOiBEYXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkRGF0ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IG1pbkRhdGVWYWx1ZSgpOiBEYXRlIHtcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRlTWluVmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1pbkRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgbWluRGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgICAgICAgIHJldHVybiBtaW5EYXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVNaW5WYWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IG1heERhdGVWYWx1ZSgpOiBEYXRlIHtcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRlTWF4VmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1heERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgbWF4RGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICAgICAgICAgICAgcmV0dXJuIG1heERhdGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZU1heFZhbHVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5fbmdDb250cm9sICYmIHRoaXMuX25nQ29udHJvbC5jb250cm9sICYmIHRoaXMuX25nQ29udHJvbC5jb250cm9sLnZhbGlkYXRvcikge1xuICAgICAgICAgICAgLy8gUnVuIHRoZSB2YWxpZGF0aW9uIHdpdGggZW1wdHkgb2JqZWN0IHRvIGNoZWNrIGlmIHJlcXVpcmVkIGlzIGVuYWJsZWQuXG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IHRoaXMuX25nQ29udHJvbC5jb250cm9sLnZhbGlkYXRvcih7fSBhcyBBYnN0cmFjdENvbnRyb2wpO1xuICAgICAgICAgICAgcmV0dXJuICEhKGVycm9yICYmIGVycm9yLnJlcXVpcmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBkaWFsb2dPdmVybGF5U2V0dGluZ3MoKTogT3ZlcmxheVNldHRpbmdzIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX2RlZmF1bHREaWFsb2dPdmVybGF5U2V0dGluZ3MsIHRoaXMub3ZlcmxheVNldHRpbmdzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBkcm9wRG93bk92ZXJsYXlTZXR0aW5ncygpOiBPdmVybGF5U2V0dGluZ3Mge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fZGVmYXVsdERyb3BEb3duT3ZlcmxheVNldHRpbmdzLCB0aGlzLm92ZXJsYXlTZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGRpc3BsYXlWYWx1ZTogUGlwZVRyYW5zZm9ybSA9IHsgdHJhbnNmb3JtOiAoZGF0ZTogRGF0ZSkgPT4gdGhpcy5mb3JtYXR0ZXIoZGF0ZSkgfTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgbWluRHJvcGRvd25WYWx1ZTogRGF0ZTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgbWF4RHJvcGRvd25WYWx1ZTogRGF0ZTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaG91ckl0ZW1zID0gW107XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG1pbnV0ZUl0ZW1zID0gW107XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIHNlY29uZHNJdGVtcyA9IFtdO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBhbXBtSXRlbXMgPSBbXTtcblxuICAgIHByaXZhdGUgX3ZhbHVlOiBEYXRlIHwgc3RyaW5nO1xuICAgIHByaXZhdGUgX2RhdGVWYWx1ZTogRGF0ZTtcbiAgICBwcml2YXRlIF9kYXRlTWluVmFsdWU6IERhdGU7XG4gICAgcHJpdmF0ZSBfZGF0ZU1heFZhbHVlOiBEYXRlO1xuICAgIHByaXZhdGUgX3NlbGVjdGVkRGF0ZTogRGF0ZTtcbiAgICBwcml2YXRlIF9yZXNvdXJjZVN0cmluZ3MgPSBnZXRDdXJyZW50UmVzb3VyY2VTdHJpbmdzKFRpbWVQaWNrZXJSZXNvdXJjZVN0cmluZ3NFTik7XG4gICAgcHJpdmF0ZSBfb2tCdXR0b25MYWJlbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBfY2FuY2VsQnV0dG9uTGFiZWwgPSBudWxsO1xuICAgIHByaXZhdGUgX2l0ZW1zRGVsdGE6IFBpY2s8RGF0ZVBhcnREZWx0YXMsICdob3VycycgfCAnbWludXRlcycgfCAnc2Vjb25kcyc+ID0geyBob3VyczogMSwgbWludXRlczogMSwgc2Vjb25kczogMSB9O1xuXG4gICAgcHJpdmF0ZSBfc3RhdHVzQ2hhbmdlcyQ6IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIF9uZ0NvbnRyb2w6IE5nQ29udHJvbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBfb25DaGFuZ2VDYWxsYmFjazogKF86IERhdGUgfCBzdHJpbmcpID0+IHZvaWQgPSBub29wO1xuICAgIHByaXZhdGUgX29uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgICBwcml2YXRlIF9vblZhbGlkYXRvckNoYW5nZTogKCkgPT4gdm9pZCA9IG5vb3A7XG5cbiAgICBwcml2YXRlIF9kZWZhdWx0RGlhbG9nT3ZlcmxheVNldHRpbmdzOiBPdmVybGF5U2V0dGluZ3MgPSB7XG4gICAgICAgIGNsb3NlT25PdXRzaWRlQ2xpY2s6IHRydWUsXG4gICAgICAgIG1vZGFsOiB0cnVlLFxuICAgICAgICBjbG9zZU9uRXNjYXBlOiB0cnVlLFxuICAgICAgICBvdXRsZXQ6IHRoaXMub3V0bGV0XG4gICAgfTtcbiAgICBwcml2YXRlIF9kZWZhdWx0RHJvcERvd25PdmVybGF5U2V0dGluZ3M6IE92ZXJsYXlTZXR0aW5ncyA9IHtcbiAgICAgICAgdGFyZ2V0OiB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgbW9kYWw6IGZhbHNlLFxuICAgICAgICBjbG9zZU9uT3V0c2lkZUNsaWNrOiB0cnVlLFxuICAgICAgICBzY3JvbGxTdHJhdGVneTogbmV3IEFic29sdXRlU2Nyb2xsU3RyYXRlZ3koKSxcbiAgICAgICAgcG9zaXRpb25TdHJhdGVneTogbmV3IEF1dG9Qb3NpdGlvblN0cmF0ZWd5KCksXG4gICAgICAgIG91dGxldDogdGhpcy5vdXRsZXRcbiAgICB9O1xuXG5cbiAgICAvKipcbiAgICAgKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIHZhbHVlIC8gdGltZSBmcm9tIHRoZSBkcm9wLWRvd24vZGlhbG9nXG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIFRoZSBjdXJyZW50IHZhbHVlIGlzIG9mIHR5cGUgYERhdGVgXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBuZXdWYWx1ZTogRGF0ZSA9IG5ldyBEYXRlKDIwMDAsIDIsIDIsIDEwLCAxNSwgMTUpO1xuICAgICAqIHRoaXMudGltZVBpY2tlci52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdmFsdWUoKTogRGF0ZSB8IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbiBhY2Nlc3NvciB0aGF0IGFsbG93cyB5b3UgdG8gc2V0IGEgdGltZSB1c2luZyB0aGUgYHZhbHVlYCBpbnB1dC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogcHVibGljIGRhdGU6IERhdGUgPSBuZXcgRGF0ZShEYXRlLm5vdygpKTtcbiAgICAgKiAgLy8uLi5cbiAgICAgKiA8aWd4LXRpbWUtcGlja2VyIFt2YWx1ZV09XCJkYXRlXCIgZm9ybWF0PVwiaDptbSB0dFwiPjwvaWd4LXRpbWUtcGlja2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogRGF0ZSB8IHN0cmluZykge1xuICAgICAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMuX3ZhbHVlO1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgICBjb25zdCBkYXRlID0gdGhpcy5wYXJzZVRvRGF0ZSh2YWx1ZSk7XG4gICAgICAgIGlmIChkYXRlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRlVmFsdWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5fZGF0ZVZhbHVlLnNldEhvdXJzKGRhdGUuZ2V0SG91cnMoKSwgZGF0ZS5nZXRNaW51dGVzKCksIGRhdGUuZ2V0U2Vjb25kcygpLCBkYXRlLmdldE1pbGxpc2Vjb25kcygpKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZSh0aGlzLl9kYXRlVmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZGF0ZVZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kYXRlVGltZUVkaXRvcikge1xuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUVkaXRvci52YWx1ZSA9IGRhdGU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbWl0VmFsdWVDaGFuZ2Uob2xkVmFsdWUsIHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayh0aGlzLl92YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW4gYWNjZXNzb3IgdGhhdCBzZXRzIHRoZSByZXNvdXJjZSBzdHJpbmdzLlxuICAgICAqIEJ5IGRlZmF1bHQgaXQgdXNlcyBFTiByZXNvdXJjZXMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHJlc291cmNlU3RyaW5ncyh2YWx1ZTogSVRpbWVQaWNrZXJSZXNvdXJjZVN0cmluZ3MpIHtcbiAgICAgICAgdGhpcy5fcmVzb3VyY2VTdHJpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fcmVzb3VyY2VTdHJpbmdzLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW4gYWNjZXNzb3IgdGhhdCByZXR1cm5zIHRoZSByZXNvdXJjZSBzdHJpbmdzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcmVzb3VyY2VTdHJpbmdzKCk6IElUaW1lUGlja2VyUmVzb3VyY2VTdHJpbmdzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlU3RyaW5ncztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPdmVycmlkZXMgdGhlIGRlZmF1bHQgdGV4dCBvZiB0aGUgKipPSyoqIGJ1dHRvbi5cbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogRGVmYXVsdHMgdG8gdGhlIHZhbHVlIGZyb20gcmVzb3VyY2Ugc3RyaW5ncywgYFwiT0tcImAgZm9yIHRoZSBidWlsdC1pbiBFTi5cbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXRpbWUtcGlja2VyIG9rQnV0dG9uTGFiZWw9XCJTRVRcIiBbdmFsdWVdPVwiZGF0ZVwiIGZvcm1hdD1cImg6bW0gdHRcIj48L2lneC10aW1lLXBpY2tlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgb2tCdXR0b25MYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX29rQnV0dG9uTGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbiBhY2Nlc3NvciB0aGF0IHJldHVybnMgdGhlIGxhYmVsIG9mIG9rIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG9rQnV0dG9uTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuX29rQnV0dG9uTGFiZWwgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc291cmNlU3RyaW5ncy5pZ3hfdGltZV9waWNrZXJfb2s7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX29rQnV0dG9uTGFiZWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGVzIHRoZSBkZWZhdWx0IHRleHQgb2YgdGhlICoqQ2FuY2VsKiogYnV0dG9uLlxuICAgICAqIEByZW1hcmtzXG4gICAgICogRGVmYXVsdHMgdG8gdGhlIHZhbHVlIGZyb20gcmVzb3VyY2Ugc3RyaW5ncywgYFwiQ2FuY2VsXCJgIGZvciB0aGUgYnVpbHQtaW4gRU4uXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtdGltZS1waWNrZXIgY2FuY2VsQnV0dG9uTGFiZWw9XCJFeGl0XCIgW3ZhbHVlXT1cImRhdGVcIiBmb3JtYXQ9XCJoOm1tIHR0XCI+PC9pZ3gtdGltZS1waWNrZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGNhbmNlbEJ1dHRvbkxhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fY2FuY2VsQnV0dG9uTGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbiBhY2Nlc3NvciB0aGF0IHJldHVybnMgdGhlIGxhYmVsIG9mIGNhbmNlbCBidXR0b24uXG4gICAgICovXG4gICAgcHVibGljIGdldCBjYW5jZWxCdXR0b25MYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5fY2FuY2VsQnV0dG9uTGFiZWwgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc291cmNlU3RyaW5ncy5pZ3hfdGltZV9waWNrZXJfY2FuY2VsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9jYW5jZWxCdXR0b25MYWJlbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWx0YSB2YWx1ZXMgdXNlZCB0byBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IGVhY2ggZWRpdG9yIGRhdGUgcGFydCBvbiBzcGluIGFjdGlvbnMgYW5kXG4gICAgICogdG8gZGlzcGxheSB0aW1lIHBvcnRpb25zIGluIHRoZSBkcm9wZG93bi9kaWFsb2cuXG4gICAgICogQnkgZGVmYXVsdCBgaXRlbXNEZWx0YWAgaXMgc2V0IHRvIGB7aG91cjogMSwgbWludXRlOiAxLCBzZWNvbmQ6IDF9YFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXRpbWUtcGlja2VyIFtpdGVtc0RlbHRhXT1cIntob3VyOjMsIG1pbnV0ZTo1LCBzZWNvbmQ6MTB9XCIgaWQ9XCJ0aW1lLXBpY2tlclwiPjwvaWd4LXRpbWUtcGlja2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBpdGVtc0RlbHRhKHZhbHVlOiBQaWNrPERhdGVQYXJ0RGVsdGFzLCAnaG91cnMnIHwgJ21pbnV0ZXMnIHwgJ3NlY29uZHMnPikge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuX2l0ZW1zRGVsdGEsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGl0ZW1zRGVsdGEoKTogUGljazxEYXRlUGFydERlbHRhcywgJ2hvdXJzJyB8ICdtaW51dGVzJyB8ICdzZWNvbmRzJz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNEZWx0YTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgZWxlbWVudDogRWxlbWVudFJlZixcbiAgICAgICAgQEluamVjdChMT0NBTEVfSUQpIF9sb2NhbGVJZDogc3RyaW5nLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERpc3BsYXlEZW5zaXR5VG9rZW4pIF9kaXNwbGF5RGVuc2l0eU9wdGlvbnM6IElEaXNwbGF5RGVuc2l0eU9wdGlvbnMsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoSUdYX0lOUFVUX0dST1VQX1RZUEUpIF9pbnB1dEdyb3VwVHlwZTogSWd4SW5wdXRHcm91cFR5cGUsXG4gICAgICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm1VdGlsLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudCwgX2xvY2FsZUlkLCBfZGlzcGxheURlbnNpdHlPcHRpb25zLCBfaW5wdXRHcm91cFR5cGUpO1xuICAgICAgICB0aGlzLmxvY2FsZSA9IHRoaXMubG9jYWxlIHx8IHRoaXMuX2xvY2FsZUlkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgdGhpcy5wbGF0Zm9ybS5LRVlNQVAuQVJST1dfVVA6XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmFsdEtleSAmJiB0aGlzLmlzRHJvcGRvd24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgdGhpcy5wbGF0Zm9ybS5LRVlNQVAuQVJST1dfRE9XTjpcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuYWx0S2V5ICYmIHRoaXMuaXNEcm9wZG93bikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHRoaXMucGxhdGZvcm0uS0VZTUFQLkVTQ0FQRTpcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbEJ1dHRvbkNsaWNrKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHRoaXMucGxhdGZvcm0uS0VZTUFQLlNQQUNFOlxuICAgICAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0UGFydFZhbHVlKHZhbHVlOiBEYXRlLCB0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBpbnB1dERhdGVQYXJ0cyA9IERhdGVUaW1lVXRpbC5wYXJzZURhdGVUaW1lRm9ybWF0KHRoaXMuaW5wdXRGb3JtYXQpO1xuICAgICAgICBjb25zdCBwYXJ0ID0gaW5wdXREYXRlUGFydHMuZmluZChlbGVtZW50ID0+IGVsZW1lbnQudHlwZSA9PT0gdHlwZSk7XG4gICAgICAgIHJldHVybiBEYXRlVGltZVV0aWwuZ2V0UGFydFZhbHVlKHZhbHVlLCBwYXJ0LCBwYXJ0LmZvcm1hdC5sZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyB0b0lTT1N0cmluZyh2YWx1ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZS50b0xvY2FsZVRpbWVTdHJpbmcoJ2VuLUdCJywge1xuICAgICAgICAgICAgaG91cjogJzItZGlnaXQnLFxuICAgICAgICAgICAgbWludXRlOiAnMi1kaWdpdCcsXG4gICAgICAgICAgICBzZWNvbmQ6ICcyLWRpZ2l0JyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gI3JlZ2lvbiBDb250cm9sVmFsdWVBY2Nlc3NvclxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IERhdGUgfCBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMucGFyc2VUb0RhdGUodmFsdWUpO1xuICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0ZVZhbHVlID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGVWYWx1ZS5zZXRIb3VycyhkYXRlLmdldEhvdXJzKCksIGRhdGUuZ2V0TWludXRlcygpLCBkYXRlLmdldFNlY29uZHMoKSk7XG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWUodGhpcy5fZGF0ZVZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kYXRlVGltZUVkaXRvcikge1xuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUVkaXRvci52YWx1ZSA9IGRhdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IERhdGUgfCBzdHJpbmcpID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCkge1xuICAgICAgICB0aGlzLl9vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fb25WYWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgICAgICBpZiAoIWNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIC8vIEludmFsaWREYXRlIGhhbmRsaW5nXG4gICAgICAgIGlmIChpc0RhdGUoY29udHJvbC52YWx1ZSkgJiYgIURhdGVUaW1lVXRpbC5pc1ZhbGlkRGF0ZShjb250cm9sLnZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHRydWUgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVycm9ycyA9IHt9O1xuICAgICAgICBjb25zdCB2YWx1ZSA9IERhdGVUaW1lVXRpbC5pc1ZhbGlkRGF0ZShjb250cm9sLnZhbHVlKSA/IGNvbnRyb2wudmFsdWUgOiBEYXRlVGltZVV0aWwucGFyc2VJc29EYXRlKGNvbnRyb2wudmFsdWUpO1xuICAgICAgICBPYmplY3QuYXNzaWduKGVycm9ycywgRGF0ZVRpbWVVdGlsLnZhbGlkYXRlTWluTWF4KHZhbHVlLCB0aGlzLm1pblZhbHVlLCB0aGlzLm1heFZhbHVlLCB0cnVlLCBmYWxzZSkpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZXJyb3JzKS5sZW5ndGggPiAwID8gZXJyb3JzIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9uZ0NvbnRyb2wgPSB0aGlzLl9pbmplY3Rvci5nZXQ8TmdDb250cm9sPihOZ0NvbnRyb2wsIG51bGwpO1xuICAgICAgICB0aGlzLm1pbkRyb3Bkb3duVmFsdWUgPSB0aGlzLnNldE1pbk1heERyb3Bkb3duVmFsdWUoJ21pbicsIHRoaXMubWluRGF0ZVZhbHVlKTtcbiAgICAgICAgdGhpcy5tYXhEcm9wZG93blZhbHVlID0gdGhpcy5zZXRNaW5NYXhEcm9wZG93blZhbHVlKCdtYXgnLCB0aGlzLm1heERhdGVWYWx1ZSk7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZSh0aGlzLl9kYXRlVmFsdWUpO1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9EYXRlRWRpdG9yRXZlbnRzKCk7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9Ub2dnbGVEaXJlY3RpdmVFdmVudHMoKTtcblxuICAgICAgICB0aGlzLl9kZWZhdWx0RHJvcERvd25PdmVybGF5U2V0dGluZ3MuZXhjbHVkZUZyb21PdXRzaWRlQ2xpY2sgPSBbdGhpcy5faW5wdXRHcm91cC5lbGVtZW50Lm5hdGl2ZUVsZW1lbnRdO1xuXG4gICAgICAgIGZyb21FdmVudCh0aGlzLmlucHV0RGlyZWN0aXZlLm5hdGl2ZUVsZW1lbnQsICdibHVyJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWxpZGl0eU9uQmx1cigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc3ViVG9JY29uc0NsaWNrZWQodGhpcy5jbGVhckNvbXBvbmVudHMsICgpID0+IHRoaXMuY2xlYXIoKSk7XG4gICAgICAgIHRoaXMuY2xlYXJDb21wb25lbnRzLmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnN1YlRvSWNvbnNDbGlja2VkKHRoaXMuY2xlYXJDb21wb25lbnRzLCAoKSA9PiB0aGlzLmNsZWFyKCkpKTtcblxuICAgICAgICBpZiAodGhpcy5fbmdDb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0dXNDaGFuZ2VzJCA9IHRoaXMuX25nQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSh0aGlzLm9uU3RhdHVzQ2hhbmdlZC5iaW5kKHRoaXMpKTtcbiAgICAgICAgICAgIHRoaXMuX2lucHV0R3JvdXAuaXNSZXF1aXJlZCA9IHRoaXMucmVxdWlyZWQ7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgaWYgKHRoaXMuX3N0YXR1c0NoYW5nZXMkKSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0dXNDaGFuZ2VzJC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgZ2V0RWRpdEVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVUaW1lRWRpdG9yLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgdGhlIHBpY2tlcidzIGRpYWxvZyBVSS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzZXR0aW5ncyBPdmVybGF5U2V0dGluZ3MgLSB0aGUgb3ZlcmxheSBzZXR0aW5ncyB0byB1c2UgZm9yIHBvc2l0aW9uaW5nIHRoZSBkcm9wIGRvd24gb3IgZGlhbG9nIGNvbnRhaW5lciBhY2NvcmRpbmcgdG9cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC10aW1lLXBpY2tlciAjcGlja2VyIFt2YWx1ZV09XCJkYXRlXCI+PC9pZ3gtdGltZS1waWNrZXI+XG4gICAgICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIChjbGljayk9XCJwaWNrZXIub3BlbigpXCI+T3BlbiBEaWFsb2c8L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgb3BlbihzZXR0aW5ncz86IE92ZXJsYXlTZXR0aW5ncyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCAhdGhpcy50b2dnbGVSZWYuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWUodGhpcy5fZGF0ZVZhbHVlKTtcbiAgICAgICAgY29uc3Qgb3ZlcmxheVNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5pc0Ryb3Bkb3duXG4gICAgICAgICAgICA/IHRoaXMuZHJvcERvd25PdmVybGF5U2V0dGluZ3NcbiAgICAgICAgICAgIDogdGhpcy5kaWFsb2dPdmVybGF5U2V0dGluZ3NcbiAgICAgICAgICAgICwgc2V0dGluZ3MpO1xuXG4gICAgICAgIHRoaXMudG9nZ2xlUmVmLm9wZW4ob3ZlcmxheVNldHRpbmdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZXMgdGhlIGRyb3Bkb3duL2RpYWxvZy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC10aW1lLXBpY2tlciAjdGltZVBpY2tlcj48L2lneC10aW1lLXBpY2tlcj5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogQFZpZXdDaGlsZCgndGltZVBpY2tlcicsIHsgcmVhZDogSWd4VGltZVBpY2tlckNvbXBvbmVudCB9KSBwaWNrZXI6IElneFRpbWVQaWNrZXJDb21wb25lbnQ7XG4gICAgICogcGlja2VyLmNsb3NlKCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRvZ2dsZVJlZi5jbG9zZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGUoc2V0dGluZ3M/OiBPdmVybGF5U2V0dGluZ3MpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudG9nZ2xlUmVmLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgdGhpcy5vcGVuKHNldHRpbmdzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFycyB0aGUgdGltZSBwaWNrZXIgdmFsdWUgaWYgaXQgaXMgYSBgc3RyaW5nYCBvciByZXNldHMgdGhlIHRpbWUgdG8gYDAwOjAwOjAwYCBpZiB0aGUgdmFsdWUgaXMgYSBEYXRlIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMudGltZVBpY2tlci5jbGVhcigpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy50b2dnbGVSZWYuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoRGF0ZVRpbWVVdGlsLmlzVmFsaWREYXRlKHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICBjb25zdCBvbGRWYWx1ZSA9IG5ldyBEYXRlKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZS5zZXRIb3VycygwLCAwLCAwKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlLmdldFRpbWUoKSAhPT0gb2xkVmFsdWUuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0VmFsdWVDaGFuZ2Uob2xkVmFsdWUsIHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGVWYWx1ZS5zZXRIb3VycygwLCAwLCAwKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVUaW1lRWRpdG9yLnZhbHVlID0gbmV3IERhdGUodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlKHRoaXMuX2RhdGVWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgdGltZSBmcm9tIHRoZSBpZ3hUaW1lUGlja2VyLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy50aW1lUGlja2VyLnNlbGVjdChkYXRlKTtcbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRlIERhdGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHRpbWUgdG8gYmUgc2VsZWN0ZWQuXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdChkYXRlOiBEYXRlIHwgc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBkYXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluY3JlbWVudCBhIHNwZWNpZmllZCBgRGF0ZVBhcnRgLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGVQYXJ0IFRoZSBvcHRpb25hbCBEYXRlUGFydCB0byBpbmNyZW1lbnQuIERlZmF1bHRzIHRvIEhvdXIuXG4gICAgICogQHBhcmFtIGRlbHRhIFRoZSBvcHRpb25hbCBkZWx0YSB0byBpbmNyZW1lbnQgYnkuIE92ZXJyaWRlcyBgaXRlbXNEZWx0YWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy50aW1lUGlja2VyLmluY3JlbWVudChEYXRlUGFydC5Ib3Vycyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGluY3JlbWVudChkYXRlUGFydD86IERhdGVQYXJ0LCBkZWx0YT86IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGVUaW1lRWRpdG9yLmluY3JlbWVudChkYXRlUGFydCwgZGVsdGEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlY3JlbWVudCBhIHNwZWNpZmllZCBgRGF0ZVBhcnRgXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0ZVBhcnQgVGhlIG9wdGlvbmFsIERhdGVQYXJ0IHRvIGRlY3JlbWVudC4gRGVmYXVsdHMgdG8gSG91ci5cbiAgICAgKiBAcGFyYW0gZGVsdGEgVGhlIG9wdGlvbmFsIGRlbHRhIHRvIGRlY3JlbWVudCBieS4gT3ZlcnJpZGVzIGBpdGVtc0RlbHRhYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLnRpbWVQaWNrZXIuZGVjcmVtZW50KERhdGVQYXJ0LlNlY29uZHMpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBkZWNyZW1lbnQoZGF0ZVBhcnQ/OiBEYXRlUGFydCwgZGVsdGE/OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRlVGltZUVkaXRvci5kZWNyZW1lbnQoZGF0ZVBhcnQsIGRlbHRhKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgY2FuY2VsQnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZSh0aGlzLl9kYXRlVmFsdWUpO1xuICAgICAgICB0aGlzLmRhdGVUaW1lRWRpdG9yLnZhbHVlID0gdGhpcy5wYXJzZVRvRGF0ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBva0J1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMuX3NlbGVjdGVkRGF0ZSk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgb25JdGVtQ2xpY2soaXRlbTogc3RyaW5nLCBkYXRlVHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUodGhpcy5fc2VsZWN0ZWREYXRlKTtcbiAgICAgICAgc3dpdGNoIChkYXRlVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnaG91ckxpc3QnOiB7XG4gICAgICAgICAgICAgICAgbGV0IGFtcG06IHN0cmluZztcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEhvdXIgPSBwYXJzZUludChpdGVtLCAxMCk7XG4gICAgICAgICAgICAgICAgbGV0IGhvdXJzID0gc2VsZWN0ZWRIb3VyO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hvd0FtUG1MaXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGFtcG0gPSB0aGlzLmdldFBhcnRWYWx1ZShkYXRlLCAnYW1wbScpO1xuICAgICAgICAgICAgICAgICAgICBob3VycyA9IHRoaXMudG9Ud2VudHlGb3VySG91ckZvcm1hdChob3VycywgYW1wbSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pbkhvdXJzID0gdGhpcy5taW5Ecm9wZG93blZhbHVlPy5nZXRIb3VycygpIHx8IDA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heEhvdXJzID0gdGhpcy5tYXhEcm9wZG93blZhbHVlPy5nZXRIb3VycygpIHx8IDI0O1xuICAgICAgICAgICAgICAgICAgICBpZiAoaG91cnMgPCBtaW5Ib3VycyB8fCBob3VycyA+IG1heEhvdXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBob3VycyA9IGhvdXJzIDwgMTIgPyBob3VycyArIDEyIDogaG91cnMgLSAxMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGRhdGUuc2V0SG91cnMoaG91cnMpO1xuICAgICAgICAgICAgICAgIGRhdGUgPSB0aGlzLnZhbGlkYXRlRHJvcGRvd25WYWx1ZShkYXRlKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlSW5SYW5nZShkYXRlLCB0aGlzLm1pbkRyb3Bkb3duVmFsdWUsIHRoaXMubWF4RHJvcGRvd25WYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlKGRhdGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ21pbnV0ZUxpc3QnOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWludXRlcyA9IHBhcnNlSW50KGl0ZW0sIDEwKTtcbiAgICAgICAgICAgICAgICBkYXRlLnNldE1pbnV0ZXMobWludXRlcyk7XG4gICAgICAgICAgICAgICAgZGF0ZSA9IHRoaXMudmFsaWRhdGVEcm9wZG93blZhbHVlKGRhdGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZShkYXRlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ3NlY29uZHNMaXN0Jzoge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlY29uZHMgPSBwYXJzZUludChpdGVtLCAxMCk7XG4gICAgICAgICAgICAgICAgZGF0ZS5zZXRTZWNvbmRzKHNlY29uZHMpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlSW5SYW5nZShkYXRlLCB0aGlzLm1pbkRyb3Bkb3duVmFsdWUsIHRoaXMubWF4RHJvcGRvd25WYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlKGRhdGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2FtcG1MaXN0Jzoge1xuICAgICAgICAgICAgICAgIGxldCBob3VyID0gdGhpcy5fc2VsZWN0ZWREYXRlLmdldEhvdXJzKCk7XG4gICAgICAgICAgICAgICAgaG91ciA9IGl0ZW0gPT09ICdBTScgPyBob3VyIC0gMTIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICAgICAgZGF0ZS5zZXRIb3Vycyhob3VyKTtcbiAgICAgICAgICAgICAgICBkYXRlID0gdGhpcy52YWxpZGF0ZURyb3Bkb3duVmFsdWUoZGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlKGRhdGUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlRWRpdG9yVmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgbmV4dEhvdXIoZGVsdGE6IG51bWJlcikge1xuICAgICAgICBkZWx0YSA9IGRlbHRhID4gMCA/IDEgOiAtMTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNEYXRlID0gbmV3IERhdGUodGhpcy5fc2VsZWN0ZWREYXRlKTtcbiAgICAgICAgY29uc3QgbWluSG91cnMgPSB0aGlzLm1pbkRyb3Bkb3duVmFsdWU/LmdldEhvdXJzKCk7XG4gICAgICAgIGNvbnN0IG1heEhvdXJzID0gdGhpcy5tYXhEcm9wZG93blZhbHVlPy5nZXRIb3VycygpO1xuICAgICAgICBjb25zdCBwcmV2aW91c0hvdXJzID0gcHJldmlvdXNEYXRlLmdldEhvdXJzKCk7XG4gICAgICAgIGxldCBob3VycyA9IHByZXZpb3VzSG91cnMgKyBkZWx0YSAqIHRoaXMuaXRlbXNEZWx0YS5ob3VycztcbiAgICAgICAgaWYgKChwcmV2aW91c0hvdXJzID09PSBtYXhIb3VycyAmJiBkZWx0YSA+IDApIHx8IChwcmV2aW91c0hvdXJzID09PSBtaW5Ib3VycyAmJiBkZWx0YSA8IDApKSB7XG4gICAgICAgICAgICBob3VycyA9ICF0aGlzLnNwaW5Mb29wID8gcHJldmlvdXNIb3VycyA6IGRlbHRhID4gMCA/IG1pbkhvdXJzIDogbWF4SG91cnM7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUuc2V0SG91cnMoaG91cnMpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSB0aGlzLnZhbGlkYXRlRHJvcGRvd25WYWx1ZSh0aGlzLl9zZWxlY3RlZERhdGUpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLl9zZWxlY3RlZERhdGUpO1xuICAgICAgICB0aGlzLnVwZGF0ZUVkaXRvclZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG5leHRNaW51dGUoZGVsdGE6IG51bWJlcikge1xuICAgICAgICBkZWx0YSA9IGRlbHRhID4gMCA/IDEgOiAtMTtcbiAgICAgICAgY29uc3QgbWluSG91cnMgPSB0aGlzLm1pbkRyb3Bkb3duVmFsdWUuZ2V0SG91cnMoKTtcbiAgICAgICAgY29uc3QgbWF4SG91cnMgPSB0aGlzLm1heERyb3Bkb3duVmFsdWUuZ2V0SG91cnMoKTtcbiAgICAgICAgY29uc3QgaG91cnMgPSB0aGlzLl9zZWxlY3RlZERhdGUuZ2V0SG91cnMoKTtcbiAgICAgICAgbGV0IG1pbnV0ZXMgPSB0aGlzLl9zZWxlY3RlZERhdGUuZ2V0TWludXRlcygpO1xuICAgICAgICBjb25zdCBtaW5NaW51dGVzID0gaG91cnMgPT09IG1pbkhvdXJzID8gdGhpcy5taW5Ecm9wZG93blZhbHVlLmdldE1pbnV0ZXMoKSA6IDA7XG4gICAgICAgIGNvbnN0IG1heE1pbnV0ZXMgPSBob3VycyA9PT0gbWF4SG91cnMgPyB0aGlzLm1heERyb3Bkb3duVmFsdWUuZ2V0TWludXRlcygpIDpcbiAgICAgICAgICAgIDYwICUgdGhpcy5pdGVtc0RlbHRhLm1pbnV0ZXMgPiAwID8gNjAgLSAoNjAgJSB0aGlzLml0ZW1zRGVsdGEubWludXRlcykgOlxuICAgICAgICAgICAgICAgIDYwIC0gdGhpcy5pdGVtc0RlbHRhLm1pbnV0ZXM7XG5cbiAgICAgICAgaWYgKChkZWx0YSA8IDAgJiYgbWludXRlcyA9PT0gbWluTWludXRlcykgfHwgKGRlbHRhID4gMCAmJiBtaW51dGVzID09PSBtYXhNaW51dGVzKSkge1xuICAgICAgICAgICAgbWludXRlcyA9IHRoaXMuc3Bpbkxvb3AgJiYgbWludXRlcyA9PT0gbWluTWludXRlcyA/IG1heE1pbnV0ZXMgOiB0aGlzLnNwaW5Mb29wICYmIG1pbnV0ZXMgPT09IG1heE1pbnV0ZXMgPyBtaW5NaW51dGVzIDogbWludXRlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1pbnV0ZXMgPSBtaW51dGVzICsgZGVsdGEgKiB0aGlzLml0ZW1zRGVsdGEubWludXRlcztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZS5zZXRNaW51dGVzKG1pbnV0ZXMpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSB0aGlzLnZhbGlkYXRlRHJvcGRvd25WYWx1ZSh0aGlzLl9zZWxlY3RlZERhdGUpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLl9zZWxlY3RlZERhdGUpO1xuICAgICAgICB0aGlzLnVwZGF0ZUVkaXRvclZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG5leHRTZWNvbmRzKGRlbHRhOiBudW1iZXIpIHtcbiAgICAgICAgZGVsdGEgPSBkZWx0YSA+IDAgPyAxIDogLTE7XG4gICAgICAgIGNvbnN0IG1pbkhvdXJzID0gdGhpcy5taW5Ecm9wZG93blZhbHVlLmdldEhvdXJzKCk7XG4gICAgICAgIGNvbnN0IG1heEhvdXJzID0gdGhpcy5tYXhEcm9wZG93blZhbHVlLmdldEhvdXJzKCk7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gdGhpcy5fc2VsZWN0ZWREYXRlLmdldEhvdXJzKCk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSB0aGlzLl9zZWxlY3RlZERhdGUuZ2V0TWludXRlcygpO1xuICAgICAgICBjb25zdCBtaW5NaW51dGVzID0gdGhpcy5taW5Ecm9wZG93blZhbHVlLmdldE1pbnV0ZXMoKTtcbiAgICAgICAgY29uc3QgbWF4TWludXRlcyA9IHRoaXMubWF4RHJvcGRvd25WYWx1ZS5nZXRNaW51dGVzKCk7XG4gICAgICAgIGxldCBzZWNvbmRzID0gdGhpcy5fc2VsZWN0ZWREYXRlLmdldFNlY29uZHMoKTtcbiAgICAgICAgY29uc3QgbWluU2Vjb25kcyA9IChob3VycyA9PT0gbWluSG91cnMgJiYgbWludXRlcyA9PT0gbWluTWludXRlcykgPyB0aGlzLm1pbkRyb3Bkb3duVmFsdWUuZ2V0U2Vjb25kcygpIDogMDtcbiAgICAgICAgY29uc3QgbWF4U2Vjb25kcyA9IChob3VycyA9PT0gbWF4SG91cnMgJiYgbWludXRlcyA9PT0gbWF4TWludXRlcykgPyB0aGlzLm1heERyb3Bkb3duVmFsdWUuZ2V0U2Vjb25kcygpIDpcbiAgICAgICAgICAgIDYwICUgdGhpcy5pdGVtc0RlbHRhLnNlY29uZHMgPiAwID8gNjAgLSAoNjAgJSB0aGlzLml0ZW1zRGVsdGEuc2Vjb25kcykgOlxuICAgICAgICAgICAgICAgIDYwIC0gdGhpcy5pdGVtc0RlbHRhLnNlY29uZHM7XG5cbiAgICAgICAgaWYgKChkZWx0YSA8IDAgJiYgc2Vjb25kcyA9PT0gbWluU2Vjb25kcykgfHwgKGRlbHRhID4gMCAmJiBzZWNvbmRzID09PSBtYXhTZWNvbmRzKSkge1xuICAgICAgICAgICAgc2Vjb25kcyA9IHRoaXMuc3Bpbkxvb3AgJiYgc2Vjb25kcyA9PT0gbWluU2Vjb25kcyA/IG1heFNlY29uZHMgOiB0aGlzLnNwaW5Mb29wICYmIHNlY29uZHMgPT09IG1heFNlY29uZHMgPyBtaW5TZWNvbmRzIDogc2Vjb25kcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlY29uZHMgPSBzZWNvbmRzICsgZGVsdGEgKiB0aGlzLml0ZW1zRGVsdGEuc2Vjb25kcztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZS5zZXRTZWNvbmRzKHNlY29uZHMpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSB0aGlzLnZhbGlkYXRlRHJvcGRvd25WYWx1ZSh0aGlzLl9zZWxlY3RlZERhdGUpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLl9zZWxlY3RlZERhdGUpO1xuICAgICAgICB0aGlzLnVwZGF0ZUVkaXRvclZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG5leHRBbVBtKGRlbHRhPzogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGFtcG0gPSB0aGlzLmdldFBhcnRWYWx1ZSh0aGlzLl9zZWxlY3RlZERhdGUsICdhbXBtJyk7XG4gICAgICAgIGlmICghZGVsdGEgfHwgKGFtcG0gPT09ICdBTScgJiYgZGVsdGEgPiAwKSB8fCAoYW1wbSA9PT0gJ1BNJyAmJiBkZWx0YSA8IDApKSB7XG4gICAgICAgICAgICBsZXQgaG91cnMgPSB0aGlzLl9zZWxlY3RlZERhdGUuZ2V0SG91cnMoKTtcbiAgICAgICAgICAgIGNvbnN0IHNpZ24gPSBob3VycyA8IDEyID8gMSA6IC0xO1xuICAgICAgICAgICAgaG91cnMgPSBob3VycyArIHNpZ24gKiAxMjtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZS5zZXRIb3Vycyhob3Vycyk7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSB0aGlzLnZhbGlkYXRlRHJvcGRvd25WYWx1ZSh0aGlzLl9zZWxlY3RlZERhdGUsIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy5fc2VsZWN0ZWREYXRlKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRWRpdG9yVmFsdWUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBzZXRTZWxlY3RlZFZhbHVlKHZhbHVlOiBEYXRlKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZSA9IHZhbHVlID8gbmV3IERhdGUodmFsdWUpIDogbnVsbDtcbiAgICAgICAgaWYgKCFEYXRlVGltZVV0aWwuaXNWYWxpZERhdGUodGhpcy5fc2VsZWN0ZWREYXRlKSkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy5taW5Ecm9wZG93blZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5taW5WYWx1ZSAmJiBEYXRlVGltZVV0aWwubGVzc1RoYW5NaW5WYWx1ZSh0aGlzLl9zZWxlY3RlZERhdGUsIHRoaXMubWluRHJvcGRvd25WYWx1ZSwgdHJ1ZSwgZmFsc2UpKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLm1pbkRyb3Bkb3duVmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1heFZhbHVlICYmIERhdGVUaW1lVXRpbC5ncmVhdGVyVGhhbk1heFZhbHVlKHRoaXMuX3NlbGVjdGVkRGF0ZSwgdGhpcy5tYXhEcm9wZG93blZhbHVlLCB0cnVlLCBmYWxzZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHRoaXMubWF4RHJvcGRvd25WYWx1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWREYXRlLmdldEhvdXJzKCkgJSB0aGlzLml0ZW1zRGVsdGEuaG91cnMgPiAwKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUuc2V0SG91cnMoXG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWREYXRlLmdldEhvdXJzKCkgKyB0aGlzLml0ZW1zRGVsdGEuaG91cnMgLSB0aGlzLl9zZWxlY3RlZERhdGUuZ2V0SG91cnMoKSAlIHRoaXMuaXRlbXNEZWx0YS5ob3VycyxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWREYXRlLmdldE1pbnV0ZXMoKSAlIHRoaXMuaXRlbXNEZWx0YS5taW51dGVzID4gMCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWREYXRlLnNldEhvdXJzKFxuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZS5nZXRIb3VycygpLFxuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZS5nZXRNaW51dGVzKCkgKyB0aGlzLml0ZW1zRGVsdGEubWludXRlcyAtIHRoaXMuX3NlbGVjdGVkRGF0ZS5nZXRNaW51dGVzKCkgJSB0aGlzLml0ZW1zRGVsdGEubWludXRlcyxcbiAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkRGF0ZS5nZXRTZWNvbmRzKCkgJSB0aGlzLml0ZW1zRGVsdGEuc2Vjb25kcyA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZS5zZXRTZWNvbmRzKFxuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZS5nZXRTZWNvbmRzKCkgKyB0aGlzLml0ZW1zRGVsdGEuc2Vjb25kcyAtIHRoaXMuX3NlbGVjdGVkRGF0ZS5nZXRTZWNvbmRzKCkgJSB0aGlzLml0ZW1zRGVsdGEuc2Vjb25kc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblN0YXR1c0NoYW5nZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLl9uZ0NvbnRyb2wgJiYgIXRoaXMuX25nQ29udHJvbC5kaXNhYmxlZCAmJiB0aGlzLmlzVG91Y2hlZE9yRGlydHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmhhc1ZhbGlkYXRvcnMgJiYgdGhpcy5faW5wdXRHcm91cC5pc0ZvY3VzZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnZhbGlkID0gdGhpcy5fbmdDb250cm9sLnZhbGlkID8gSWd4SW5wdXRTdGF0ZS5WQUxJRCA6IElneElucHV0U3RhdGUuSU5WQUxJRDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dERpcmVjdGl2ZS52YWxpZCA9IHRoaXMuX25nQ29udHJvbC52YWxpZCA/IElneElucHV0U3RhdGUuSU5JVElBTCA6IElneElucHV0U3RhdGUuSU5WQUxJRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEIuUC4gMTggTWF5IDIwMjE6IElneERhdGVQaWNrZXIgZG9lcyBub3QgcmVzZXQgaXRzIHN0YXRlIHVwb24gcmVzZXRGb3JtICM5NTI2XG4gICAgICAgICAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnZhbGlkID0gSWd4SW5wdXRTdGF0ZS5JTklUSUFMO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2lucHV0R3JvdXAgJiYgdGhpcy5faW5wdXRHcm91cC5pc1JlcXVpcmVkICE9PSB0aGlzLnJlcXVpcmVkKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnB1dEdyb3VwLmlzUmVxdWlyZWQgPSB0aGlzLnJlcXVpcmVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXNUb3VjaGVkT3JEaXJ0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLl9uZ0NvbnRyb2wuY29udHJvbC50b3VjaGVkIHx8IHRoaXMuX25nQ29udHJvbC5jb250cm9sLmRpcnR5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBoYXNWYWxpZGF0b3JzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKCEhdGhpcy5fbmdDb250cm9sLmNvbnRyb2wudmFsaWRhdG9yIHx8ICEhdGhpcy5fbmdDb250cm9sLmNvbnRyb2wuYXN5bmNWYWxpZGF0b3IpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TWluTWF4RHJvcGRvd25WYWx1ZSh0eXBlOiBzdHJpbmcsIHRpbWU6IERhdGUpOiBEYXRlIHtcbiAgICAgICAgbGV0IGRlbHRhOiBudW1iZXI7XG5cbiAgICAgICAgY29uc3Qgc2lnbiA9IHR5cGUgPT09ICdtaW4nID8gMSA6IC0xO1xuXG4gICAgICAgIGNvbnN0IGhvdXJzID0gdGltZS5nZXRIb3VycygpO1xuICAgICAgICBsZXQgbWludXRlcyA9IHRpbWUuZ2V0TWludXRlcygpO1xuICAgICAgICBsZXQgc2Vjb25kcyA9IHRpbWUuZ2V0U2Vjb25kcygpO1xuXG4gICAgICAgIGlmICh0aGlzLnNob3dIb3Vyc0xpc3QgJiYgaG91cnMgJSB0aGlzLml0ZW1zRGVsdGEuaG91cnMgPiAwKSB7XG4gICAgICAgICAgICBkZWx0YSA9IHR5cGUgPT09ICdtaW4nID8gdGhpcy5pdGVtc0RlbHRhLmhvdXJzIC0gaG91cnMgJSB0aGlzLml0ZW1zRGVsdGEuaG91cnNcbiAgICAgICAgICAgICAgICA6IGhvdXJzICUgdGhpcy5pdGVtc0RlbHRhLmhvdXJzO1xuICAgICAgICAgICAgbWludXRlcyA9IHR5cGUgPT09ICdtaW4nID8gMFxuICAgICAgICAgICAgICAgIDogNjAgJSB0aGlzLml0ZW1zRGVsdGEubWludXRlcyA+IDAgPyA2MCAtIDYwICUgdGhpcy5pdGVtc0RlbHRhLm1pbnV0ZXNcbiAgICAgICAgICAgICAgICAgICAgOiA2MCAtIHRoaXMuaXRlbXNEZWx0YS5taW51dGVzO1xuICAgICAgICAgICAgc2Vjb25kcyA9IHR5cGUgPT09ICdtaW4nID8gMFxuICAgICAgICAgICAgICAgIDogNjAgJSB0aGlzLml0ZW1zRGVsdGEuc2Vjb25kcyA+IDAgPyA2MCAtIDYwICUgdGhpcy5pdGVtc0RlbHRhLnNlY29uZHNcbiAgICAgICAgICAgICAgICAgICAgOiA2MCAtIHRoaXMuaXRlbXNEZWx0YS5zZWNvbmRzO1xuICAgICAgICAgICAgdGltZS5zZXRIb3Vycyhob3VycyArIHNpZ24gKiBkZWx0YSwgbWludXRlcywgc2Vjb25kcyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zaG93TWludXRlc0xpc3QgJiYgbWludXRlcyAlIHRoaXMuaXRlbXNEZWx0YS5taW51dGVzID4gMCkge1xuICAgICAgICAgICAgZGVsdGEgPSB0eXBlID09PSAnbWluJyA/IHRoaXMuaXRlbXNEZWx0YS5taW51dGVzIC0gbWludXRlcyAlIHRoaXMuaXRlbXNEZWx0YS5taW51dGVzXG4gICAgICAgICAgICAgICAgOiBtaW51dGVzICUgdGhpcy5pdGVtc0RlbHRhLm1pbnV0ZXM7XG4gICAgICAgICAgICBzZWNvbmRzID0gdHlwZSA9PT0gJ21pbicgPyAwXG4gICAgICAgICAgICAgICAgOiA2MCAlIHRoaXMuaXRlbXNEZWx0YS5zZWNvbmRzID4gMCA/IDYwIC0gNjAgJSB0aGlzLml0ZW1zRGVsdGEuc2Vjb25kc1xuICAgICAgICAgICAgICAgICAgICA6IDYwIC0gdGhpcy5pdGVtc0RlbHRhLnNlY29uZHM7XG4gICAgICAgICAgICB0aW1lLnNldEhvdXJzKGhvdXJzLCBtaW51dGVzICsgc2lnbiAqIGRlbHRhLCBzZWNvbmRzKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3dTZWNvbmRzTGlzdCAmJiBzZWNvbmRzICUgdGhpcy5pdGVtc0RlbHRhLnNlY29uZHMgPiAwKSB7XG4gICAgICAgICAgICBkZWx0YSA9IHR5cGUgPT09ICdtaW4nID8gdGhpcy5pdGVtc0RlbHRhLnNlY29uZHMgLSBzZWNvbmRzICUgdGhpcy5pdGVtc0RlbHRhLnNlY29uZHNcbiAgICAgICAgICAgICAgICA6IHNlY29uZHMgJSB0aGlzLml0ZW1zRGVsdGEuc2Vjb25kcztcbiAgICAgICAgICAgIHRpbWUuc2V0SG91cnMoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMgKyBzaWduICogZGVsdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRpbWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplQ29udGFpbmVyKCkge1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaG91ckxpc3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhvdXJMaXN0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5taW51dGVMaXN0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5taW51dGVMaXN0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWNvbmRzTGlzdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2Vjb25kc0xpc3QubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlRHJvcGRvd25WYWx1ZShkYXRlOiBEYXRlLCBpc0FtUG0gPSBmYWxzZSk6IERhdGUge1xuICAgICAgICBpZiAoZGF0ZSA+IHRoaXMubWF4RHJvcGRvd25WYWx1ZSkge1xuICAgICAgICAgICAgaWYgKGlzQW1QbSAmJiBkYXRlLmdldEhvdXJzKCkgIT09IHRoaXMubWF4RHJvcGRvd25WYWx1ZS5nZXRIb3VycygpKSB7XG4gICAgICAgICAgICAgICAgZGF0ZS5zZXRIb3VycygxMik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZSh0aGlzLm1heERyb3Bkb3duVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRhdGUgPCB0aGlzLm1pbkRyb3Bkb3duVmFsdWUpIHtcbiAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZSh0aGlzLm1pbkRyb3Bkb3duVmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbWl0VmFsdWVDaGFuZ2Uob2xkVmFsdWU6IERhdGUgfCBzdHJpbmcsIG5ld1ZhbHVlOiBEYXRlIHwgc3RyaW5nKSB7XG4gICAgICAgIGlmICghaXNFcXVhbChvbGRWYWx1ZSwgbmV3VmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbWl0VmFsaWRhdGlvbkZhaWxlZEV2ZW50KHByZXZpb3VzVmFsdWU6IERhdGUgfCBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgYXJnczogSWd4VGltZVBpY2tlclZhbGlkYXRpb25GYWlsZWRFdmVudEFyZ3MgPSB7XG4gICAgICAgICAgICBvd25lcjogdGhpcyxcbiAgICAgICAgICAgIHByZXZpb3VzVmFsdWUsXG4gICAgICAgICAgICBjdXJyZW50VmFsdWU6IHRoaXMudmFsdWVcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkLmVtaXQoYXJncyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVWYWxpZGl0eU9uQmx1cigpIHtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2soKTtcbiAgICAgICAgaWYgKHRoaXMuX25nQ29udHJvbCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9uZ0NvbnRyb2wudmFsaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnZhbGlkID0gSWd4SW5wdXRTdGF0ZS5JTlZBTElEO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnZhbGlkID0gSWd4SW5wdXRTdGF0ZS5JTklUSUFMO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWx1ZUluUmFuZ2UodmFsdWU6IERhdGUsIG1pblZhbHVlOiBEYXRlLCBtYXhWYWx1ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAobWluVmFsdWUgJiYgRGF0ZVRpbWVVdGlsLmxlc3NUaGFuTWluVmFsdWUodmFsdWUsIG1pblZhbHVlLCB0cnVlLCBmYWxzZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWF4VmFsdWUgJiYgRGF0ZVRpbWVVdGlsLmdyZWF0ZXJUaGFuTWF4VmFsdWUodmFsdWUsIG1heFZhbHVlLCB0cnVlLCBmYWxzZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFyc2VUb0RhdGUodmFsdWU6IERhdGUgfCBzdHJpbmcpOiBEYXRlIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiBEYXRlVGltZVV0aWwuaXNWYWxpZERhdGUodmFsdWUpID8gdmFsdWUgOiBEYXRlVGltZVV0aWwucGFyc2VJc29EYXRlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvVHdlbnR5Rm91ckhvdXJGb3JtYXQoaG91cjogbnVtYmVyLCBhbXBtOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBpZiAoYW1wbSA9PT0gJ1BNJyAmJiBob3VyIDwgMTIpIHtcbiAgICAgICAgICAgIGhvdXIgKz0gMTI7XG4gICAgICAgIH0gZWxzZSBpZiAoYW1wbSA9PT0gJ0FNJyAmJiBob3VyID09PSAxMikge1xuICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaG91cjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVZhbHVlKG5ld1ZhbHVlOiBEYXRlIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBuZXdWYWx1ZSA/IG5ldyBEYXRlKG5ld1ZhbHVlKSA6IG5ld1ZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRGF0ZSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgZGF0ZS5zZXRIb3VycyhuZXdWYWx1ZT8uZ2V0SG91cnMoKSB8fCAwLCBuZXdWYWx1ZT8uZ2V0TWludXRlcygpIHx8IDAsIG5ld1ZhbHVlPy5nZXRTZWNvbmRzKCkgfHwgMCk7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gZGF0ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBuZXdWYWx1ZSA/IHRoaXMudG9JU09TdHJpbmcobmV3VmFsdWUpIDogbmV3VmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUVkaXRvclZhbHVlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkYXRlID0gdGhpcy5kYXRlVGltZUVkaXRvci52YWx1ZSA/IG5ldyBEYXRlKHRoaXMuZGF0ZVRpbWVFZGl0b3IudmFsdWUpIDogbmV3IERhdGUoKTtcbiAgICAgICAgZGF0ZS5zZXRIb3Vycyh0aGlzLl9zZWxlY3RlZERhdGUuZ2V0SG91cnMoKSwgdGhpcy5fc2VsZWN0ZWREYXRlLmdldE1pbnV0ZXMoKSwgdGhpcy5fc2VsZWN0ZWREYXRlLmdldFNlY29uZHMoKSk7XG4gICAgICAgIHRoaXMuZGF0ZVRpbWVFZGl0b3IudmFsdWUgPSBkYXRlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3Vic2NyaWJlVG9EYXRlRWRpdG9yRXZlbnRzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGVUaW1lRWRpdG9yLnZhbHVlQ2hhbmdlLnBpcGUoXG4gICAgICAgICAgICAvLyBpbnRlcm5hbCBkYXRlIGVkaXRvciBkaXJlY3RpdmUgaXMgb25seSB1c2VkIHcvIERhdGUgb2JqZWN0IHZhbHVlczpcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoZGF0ZTogRGF0ZSB8IG51bGwpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGRhdGUpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5kYXRlVGltZUVkaXRvci52YWxpZGF0aW9uRmFpbGVkLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0VmFsaWRhdGlvbkZhaWxlZEV2ZW50KGV2ZW50Lm9sZFZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3Vic2NyaWJlVG9Ub2dnbGVEaXJlY3RpdmVFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvZ2dsZVJlZikge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lucHV0R3JvdXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVJlZi5lbGVtZW50LnN0eWxlLndpZHRoID0gdGhpcy5faW5wdXRHcm91cC5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggKyAncHgnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVJlZi5vcGVuaW5nLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXJnczogSUJhc2VDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncyA9IHsgb3duZXI6IHRoaXMsIGV2ZW50OiBlLmV2ZW50LCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuaW5nLmVtaXQoYXJncyk7XG4gICAgICAgICAgICAgICAgZS5jYW5jZWwgPSBhcmdzLmNhbmNlbDtcbiAgICAgICAgICAgICAgICBpZiAoYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVDb250YWluZXIoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVJlZi5vcGVuZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlbmVkLmVtaXQoeyBvd25lcjogdGhpcyB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVJlZi5jbG9zZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoeyBvd25lcjogdGhpcyB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVJlZi5jbG9zaW5nLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXJnczogSUJhc2VDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncyA9IHsgb3duZXI6IHRoaXMsIGV2ZW50OiBlLmV2ZW50LCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zaW5nLmVtaXQoYXJncyk7XG4gICAgICAgICAgICAgICAgZS5jYW5jZWwgPSBhcmdzLmNhbmNlbDtcbiAgICAgICAgICAgICAgICBpZiAoYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucGFyc2VUb0RhdGUodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKCh0aGlzLmRhdGVUaW1lRWRpdG9yLnZhbHVlIGFzIERhdGUpPy5nZXRUaW1lKCkgIT09IHZhbHVlPy5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLl9zZWxlY3RlZERhdGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBEbyBub3QgZm9jdXMgdGhlIGlucHV0IGlmIGNsaWNraW5nIG91dHNpZGUgaW4gZHJvcGRvd24gbW9kZVxuICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5nZXRFZGl0RWxlbWVudCgpO1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dCAmJiAhKGUuZXZlbnQgJiYgdGhpcy5pc0Ryb3Bkb3duKSkge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsaWRpdHlPbkJsdXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxpZ3gtaW5wdXQtZ3JvdXAgW2Rpc3BsYXlEZW5zaXR5XT1cImRpc3BsYXlEZW5zaXR5XCIgW3R5cGVdPVwidHlwZVwiPlxuICAgIDxpbnB1dCBbZGlzcGxheVZhbHVlUGlwZV09XCJmb3JtYXR0ZXIgPyBkaXNwbGF5VmFsdWUgOiBudWxsXCIgaWd4SW5wdXQgW2lneERhdGVUaW1lRWRpdG9yXT1cImlucHV0Rm9ybWF0XCJcbiAgICAgICAgdHlwZT1cInRleHRcIiBbcmVhZG9ubHldPVwiIWlzRHJvcGRvd24gfHwgcmVhZE9ubHlcIiBbbWluVmFsdWVdPVwibWluVmFsdWVcIiBbbWF4VmFsdWVdPVwibWF4VmFsdWVcIlxuICAgICAgICBbbG9jYWxlXT1cImxvY2FsZVwiIFtzcGluRGVsdGFdPVwiaXRlbXNEZWx0YVwiIFtzcGluTG9vcF09XCJzcGluTG9vcFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtkaXNwbGF5Rm9ybWF0XT1cImRpc3BsYXlGb3JtYXRcIlxuICAgICAgICBbaWd4VGV4dFNlbGVjdGlvbl09XCJpc0Ryb3Bkb3duICYmICFyZWFkT25seVwiIHJvbGU9XCJjb21ib2JveFwiIGFyaWEtaGFzcG9wdXA9XCJkaWFsb2dcIlxuICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIiF0b2dnbGVEaXJlY3RpdmUuY29sbGFwc2VkXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImxhYmVsPy5pZFwiXG4gICAgICAgIChjbGljayk9XCIhaXNEcm9wZG93biAmJiB0b2dnbGUoKVwiLz5cblxuICAgIDxpZ3gtcHJlZml4ICpuZ0lmPVwiIXRvZ2dsZUNvbXBvbmVudHMubGVuZ3RoXCIgKGNsaWNrKT1cInRvZ2dsZSgpXCI+XG4gICAgICAgIDxpZ3gtaWNvbiBbdGl0bGVdPVwidmFsdWUgPyByZXNvdXJjZVN0cmluZ3MuaWd4X3RpbWVfcGlja2VyX2NoYW5nZV90aW1lIDogcmVzb3VyY2VTdHJpbmdzLmlneF90aW1lX3BpY2tlcl9jaG9vc2VfdGltZVwiPmFjY2Vzc190aW1lPC9pZ3gtaWNvbj5cbiAgICA8L2lneC1wcmVmaXg+XG5cbiAgICA8bmctY29udGFpbmVyIG5nUHJvamVjdEFzPVwiW2lneExhYmVsXVwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaWd4TGFiZWxdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJpZ3gtcHJlZml4XCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlneC1wcmVmaXgsW2lneFByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8aWd4LXN1ZmZpeCAqbmdJZj1cInNob3dDbGVhckJ1dHRvblwiIChjbGljayk9XCJjbGVhcigpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgPGlneC1pY29uPmNsZWFyPC9pZ3gtaWNvbj5cbiAgICA8L2lneC1zdWZmaXg+XG5cbiAgICA8bmctY29udGFpbmVyIG5nUHJvamVjdEFzPVwiaWd4LXN1ZmZpeFwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJpZ3gtc3VmZml4LFtpZ3hTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJpZ3gtaGludFwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJpZ3gtaGludCxbaWd4SGludF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2lneC1pbnB1dC1ncm91cD5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0VGltZVBpY2tlckFjdGlvbnM+XG4gICAgPGRpdiAqbmdJZj1cImNhbmNlbEJ1dHRvbkxhYmVsIHx8IG9rQnV0dG9uTGFiZWxcIiBjbGFzcz1cImlneC10aW1lLXBpY2tlcl9fYnV0dG9uc1wiPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY2FuY2VsQnV0dG9uTGFiZWxcIiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uPVwiZmxhdFwiIChjbGljayk9XCJjYW5jZWxCdXR0b25DbGljaygpXCI+XG4gICAgICAgICAgICB7e2NhbmNlbEJ1dHRvbkxhYmVsfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJva0J1dHRvbkxhYmVsXCIgdHlwZT1cImJ1dHRvblwiIGlneEJ1dHRvbj1cImZsYXRcIiAoY2xpY2spPVwib2tCdXR0b25DbGljaygpXCI+XG4gICAgICAgICAgICB7e29rQnV0dG9uTGFiZWx9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxkaXYgI3RvZ2dsZURpcmVjdGl2ZT1cInRvZ2dsZVwiIGlneFRvZ2dsZSByb2xlPVwiZGlhbG9nXCIgY2xhc3M9XCJpZ3gtdGltZS1waWNrZXJcIlxuICAgIFtuZ0NsYXNzXT1cInsnaWd4LXRpbWUtcGlja2VyLS1kcm9wZG93bic6IGlzRHJvcGRvd24sICdpZ3gtdGltZS1waWNrZXItLXZlcnRpY2FsJzogaXNWZXJ0aWNhbCAmJiAhaXNEcm9wZG93bn1cIj5cbiAgICA8ZGl2IGNsYXNzPVwiaWd4LXRpbWUtcGlja2VyX19tYWluXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhaXNEcm9wZG93blwiIGNsYXNzPVwiaWd4LXRpbWUtcGlja2VyX19oZWFkZXJcIj5cbiAgICAgICAgICAgIDxoMiBjbGFzcz1cImlneC10aW1lLXBpY2tlcl9faGVhZGVyLWhvdXJcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBzZWxlY3RlZERhdGUgfCB0aW1lRm9ybWF0UGlwZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LXRpbWUtcGlja2VyX19ib2R5XCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0hvdXJzTGlzdFwiICNob3VyTGlzdCBbaWd4SXRlbUxpc3RdPVwiJ2hvdXJMaXN0J1wiPlxuICAgICAgICAgICAgPHNwYW4gW2lneFRpbWVJdGVtXT1cImhvdXJcIiAjdGltZUl0ZW09XCJ0aW1lSXRlbVwiIGFyaWEtbGFiZWw9XCJob3VyXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLnJvbGVdPVwidGltZUl0ZW0uaXNTZWxlY3RlZFRpbWUgPyAnc3BpbmJ1dHRvbicgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtdmFsdWVub3ddPVwidGltZUl0ZW0uaXNTZWxlY3RlZFRpbWUgPyB0aW1lSXRlbS5ob3VyVmFsdWUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtdmFsdWVtaW5dPVwidGltZUl0ZW0uaXNTZWxlY3RlZFRpbWUgPyB0aW1lSXRlbS5taW5WYWx1ZSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCJ0aW1lSXRlbS5pc1NlbGVjdGVkVGltZSA/IHRpbWVJdGVtLm1heFZhbHVlIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaG91ciBvZiBob3VySXRlbXMgfCB0aW1lSXRlbVBpcGU6J2hvdXInOnNlbGVjdGVkRGF0ZTptaW5Ecm9wZG93blZhbHVlOm1heERyb3Bkb3duVmFsdWVcIj57eyBob3VyIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd01pbnV0ZXNMaXN0XCIgI21pbnV0ZUxpc3QgW2lneEl0ZW1MaXN0XT1cIidtaW51dGVMaXN0J1wiPlxuICAgICAgICAgICAgPHNwYW4gW2lneFRpbWVJdGVtXT1cIm1pbnV0ZVwiICN0aW1lSXRlbT1cInRpbWVJdGVtXCIgYXJpYS1sYWJlbD1cIm1pbnV0ZXNcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIucm9sZV09XCJ0aW1lSXRlbS5pc1NlbGVjdGVkVGltZSA/ICdzcGluYnV0dG9uJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJ0aW1lSXRlbS5pc1NlbGVjdGVkVGltZSA/IG1pbnV0ZSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJ0aW1lSXRlbS5pc1NlbGVjdGVkVGltZSA/IHRpbWVJdGVtLm1pblZhbHVlIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cInRpbWVJdGVtLmlzU2VsZWN0ZWRUaW1lID8gdGltZUl0ZW0ubWF4VmFsdWUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBtaW51dGUgb2YgbWludXRlSXRlbXMgfCB0aW1lSXRlbVBpcGU6J21pbnV0ZXMnOnNlbGVjdGVkRGF0ZTptaW5Ecm9wZG93blZhbHVlOm1heERyb3Bkb3duVmFsdWVcIj57eyBtaW51dGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93U2Vjb25kc0xpc3RcIiAjc2Vjb25kc0xpc3QgW2lneEl0ZW1MaXN0XT1cIidzZWNvbmRzTGlzdCdcIj5cbiAgICAgICAgICAgIDxzcGFuIFtpZ3hUaW1lSXRlbV09XCJzZWNvbmRzXCIgI3RpbWVJdGVtPVwidGltZUl0ZW1cIiBhcmlhLWxhYmVsPVwic2Vjb25kc1wiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cInRpbWVJdGVtLmlzU2VsZWN0ZWRUaW1lID8gJ3NwaW5idXR0b24nIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cInRpbWVJdGVtLmlzU2VsZWN0ZWRUaW1lID8gc2Vjb25kcyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJ0aW1lSXRlbS5pc1NlbGVjdGVkVGltZSA/IHRpbWVJdGVtLm1pblZhbHVlIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cInRpbWVJdGVtLmlzU2VsZWN0ZWRUaW1lID8gdGltZUl0ZW0ubWF4VmFsdWUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzZWNvbmRzIG9mIHNlY29uZHNJdGVtcyB8IHRpbWVJdGVtUGlwZTonc2Vjb25kcyc6c2VsZWN0ZWREYXRlOm1pbkRyb3Bkb3duVmFsdWU6bWF4RHJvcGRvd25WYWx1ZVwiPnt7IHNlY29uZHMgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93QW1QbUxpc3RcIiAjYW1wbUxpc3QgW2lneEl0ZW1MaXN0XT1cIidhbXBtTGlzdCdcIj5cbiAgICAgICAgICAgIDxzcGFuIFtpZ3hUaW1lSXRlbV09XCJhbXBtXCIgI3RpbWVJdGVtPVwidGltZUl0ZW1cIiBhcmlhLWxhYmVsPVwiYW1wbVwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cInRpbWVJdGVtLmlzU2VsZWN0ZWRUaW1lID8gJ3NwaW5idXR0b24nIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cInRpbWVJdGVtLmlzU2VsZWN0ZWRUaW1lID8gYW1wbSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJ0aW1lSXRlbS5pc1NlbGVjdGVkVGltZSA/IHRpbWVJdGVtLm1pblZhbHVlIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cInRpbWVJdGVtLmlzU2VsZWN0ZWRUaW1lID8gdGltZUl0ZW0ubWF4VmFsdWUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhbXBtIG9mIGFtcG1JdGVtcyB8IHRpbWVJdGVtUGlwZTonYW1wbSc6c2VsZWN0ZWREYXRlOm1pbkRyb3Bkb3duVmFsdWU6bWF4RHJvcGRvd25WYWx1ZVwiPnt7IGFtcG0gfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGlneC1kaXZpZGVyPjwvaWd4LWRpdmlkZXI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aW1lUGlja2VyQWN0aW9uc0RpcmVjdGl2ZSA/IHRpbWVQaWNrZXJBY3Rpb25zRGlyZWN0aXZlLnRlbXBsYXRlIDogZGVmYXVsdFRpbWVQaWNrZXJBY3Rpb25zXCI+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|
|
1121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL3RpbWUtcGlja2VyL3RpbWUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi90aW1lLXBpY2tlci90aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RSxPQUFPLEVBQ0gsU0FBUyxFQUVULFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFLTixTQUFTLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBYSxZQUFZLEVBQUUsZ0JBQWdCLEVBQ2xGLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsU0FBUyxFQUlULGFBQWEsRUFDaEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdkYsT0FBTyxFQUFxQixvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxtQkFBbUIsRUFBMEIsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RSxPQUFPLEVBQ0gsb0JBQW9CLEVBQ3BCLG9CQUFvQixFQUN2QixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBZ0IsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQXFC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LEtBQUs7Z0JBeUJLLGVBQWU7c0JBRHpCLEtBQUs7Z0JBdUJLLGFBQWE7c0JBRHZCLEtBQUs7Z0JBd0JLLGlCQUFpQjtzQkFEM0IsS0FBSztnQkF3QkssVUFBVTtzQkFEcEIsS0FBSztnQkF1QkMsU0FBUztzQkFEZixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nSWYsIE5nQ2xhc3MsIE5nRm9yLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFZpZXdDaGlsZCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgSW5qZWN0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgSW5qZWN0b3IsXG4gICAgUGlwZVRyYW5zZm9ybSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBMT0NBTEVfSUQsIE9wdGlvbmFsLCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgSG9zdExpc3RlbmVyLCBib29sZWFuQXR0cmlidXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICBOZ0NvbnRyb2wsXG4gICAgQWJzdHJhY3RDb250cm9sLFxuICAgIFZhbGlkYXRpb25FcnJvcnMsXG4gICAgVmFsaWRhdG9yLFxuICAgIE5HX1ZBTElEQVRPUlNcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi4vaW5wdXQtZ3JvdXAvaW5wdXQtZ3JvdXAuY29tcG9uZW50JztcbmltcG9ydCB7IElneElucHV0RGlyZWN0aXZlLCBJZ3hJbnB1dFN0YXRlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9pbnB1dC9pbnB1dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4SW5wdXRHcm91cFR5cGUsIElHWF9JTlBVVF9HUk9VUF9UWVBFIH0gZnJvbSAnLi4vaW5wdXQtZ3JvdXAvcHVibGljX2FwaSc7XG5pbXBvcnQgeyBEaXNwbGF5RGVuc2l0eVRva2VuLCBJRGlzcGxheURlbnNpdHlPcHRpb25zIH0gZnJvbSAnLi4vY29yZS9kZW5zaXR5JztcbmltcG9ydCB7XG4gICAgSWd4SXRlbUxpc3REaXJlY3RpdmUsXG4gICAgSWd4VGltZUl0ZW1EaXJlY3RpdmVcbn0gZnJvbSAnLi90aW1lLXBpY2tlci5kaXJlY3RpdmVzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgbm9vcCwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJZ3hUaW1lUGlja2VyQmFzZSwgSUdYX1RJTUVfUElDS0VSX0NPTVBPTkVOVCB9IGZyb20gJy4vdGltZS1waWNrZXIuY29tbW9uJztcbmltcG9ydCB7IEFic29sdXRlU2Nyb2xsU3RyYXRlZ3kgfSBmcm9tICcuLi9zZXJ2aWNlcy9vdmVybGF5L3Njcm9sbCc7XG5pbXBvcnQgeyBBdXRvUG9zaXRpb25TdHJhdGVneSB9IGZyb20gJy4uL3NlcnZpY2VzL292ZXJsYXkvcG9zaXRpb24nO1xuaW1wb3J0IHsgT3ZlcmxheVNldHRpbmdzIH0gZnJvbSAnLi4vc2VydmljZXMvb3ZlcmxheS91dGlsaXRpZXMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSWd4QnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9idXR0b24vYnV0dG9uLmRpcmVjdGl2ZSc7XG5cbmltcG9ydCB7IElneERhdGVUaW1lRWRpdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9kYXRlLXRpbWUtZWRpdG9yL2RhdGUtdGltZS1lZGl0b3IuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneFRvZ2dsZURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvdG9nZ2xlL3RvZ2dsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSVRpbWVQaWNrZXJSZXNvdXJjZVN0cmluZ3MsIFRpbWVQaWNrZXJSZXNvdXJjZVN0cmluZ3NFTiB9IGZyb20gJy4uL2NvcmUvaTE4bi90aW1lLXBpY2tlci1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgSUJhc2VFdmVudEFyZ3MsIGlzRXF1YWwsIGlzRGF0ZSwgUGxhdGZvcm1VdGlsLCBJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBQaWNrZXJJbnRlcmFjdGlvbk1vZGUgfSBmcm9tICcuLi9kYXRlLWNvbW1vbi90eXBlcyc7XG5pbXBvcnQgeyBJZ3hUZXh0U2VsZWN0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy90ZXh0LXNlbGVjdGlvbi90ZXh0LXNlbGVjdGlvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4TGFiZWxEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2xhYmVsL2xhYmVsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQaWNrZXJCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGF0ZS1jb21tb24vcGlja2VyLWJhc2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IERhdGVUaW1lVXRpbCB9IGZyb20gJy4uL2RhdGUtY29tbW9uL3V0aWwvZGF0ZS10aW1lLnV0aWwnO1xuaW1wb3J0IHsgRGF0ZVBhcnQsIERhdGVQYXJ0RGVsdGFzIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9kYXRlLXRpbWUtZWRpdG9yL3B1YmxpY19hcGknO1xuaW1wb3J0IHsgUGlja2VySGVhZGVyT3JpZW50YXRpb24gfSBmcm9tICcuLi9kYXRlLWNvbW1vbi90eXBlcyc7XG5pbXBvcnQgeyBJZ3hQaWNrZXJBY3Rpb25zRGlyZWN0aXZlLCBJZ3hQaWNrZXJDbGVhckNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGUtY29tbW9uL3BpY2tlci1pY29ucy5jb21tb24nO1xuaW1wb3J0IHsgVGltZUZvcm1hdFBpcGUsIFRpbWVJdGVtUGlwZSB9IGZyb20gJy4vdGltZS1waWNrZXIucGlwZXMnO1xuaW1wb3J0IHsgSWd4U3VmZml4RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9zdWZmaXgvc3VmZml4LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hQcmVmaXhEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3ByZWZpeC9wcmVmaXguZGlyZWN0aXZlJztcbmltcG9ydCB7IGdldEN1cnJlbnRSZXNvdXJjZVN0cmluZ3MgfSBmcm9tICcuLi9jb3JlL2kxOG4vcmVzb3VyY2VzJztcbmltcG9ydCB7IElneERpdmlkZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2RpdmlkZXIvZGl2aWRlci5kaXJlY3RpdmUnO1xuXG5sZXQgTkVYVF9JRCA9IDA7XG5leHBvcnQgaW50ZXJmYWNlIElneFRpbWVQaWNrZXJWYWxpZGF0aW9uRmFpbGVkRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIHByZXZpb3VzVmFsdWU6IERhdGUgfCBzdHJpbmc7XG4gICAgY3VycmVudFZhbHVlOiBEYXRlIHwgc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogSWd4VGltZVBpY2tlckNvbXBvbmVudCxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IElHWF9USU1FX1BJQ0tFUl9DT01QT05FTlQsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogSWd4VGltZVBpY2tlckNvbXBvbmVudFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IElneFRpbWVQaWNrZXJDb21wb25lbnQsXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBzZWxlY3RvcjogJ2lneC10aW1lLXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICd0aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVzOiBbXG4gICAgICAgIGA6aG9zdCB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfWBcbiAgICBdLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0lneElucHV0R3JvdXBDb21wb25lbnQsIElneElucHV0RGlyZWN0aXZlLCBJZ3hEYXRlVGltZUVkaXRvckRpcmVjdGl2ZSwgSWd4VGV4dFNlbGVjdGlvbkRpcmVjdGl2ZSwgTmdJZiwgSWd4UHJlZml4RGlyZWN0aXZlLCBJZ3hJY29uQ29tcG9uZW50LCBJZ3hTdWZmaXhEaXJlY3RpdmUsIElneEJ1dHRvbkRpcmVjdGl2ZSwgSWd4VG9nZ2xlRGlyZWN0aXZlLCBOZ0NsYXNzLCBJZ3hJdGVtTGlzdERpcmVjdGl2ZSwgTmdGb3IsIElneFRpbWVJdGVtRGlyZWN0aXZlLCBOZ1RlbXBsYXRlT3V0bGV0LCBUaW1lRm9ybWF0UGlwZSwgVGltZUl0ZW1QaXBlLCBJZ3hEaXZpZGVyRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hUaW1lUGlja2VyQ29tcG9uZW50IGV4dGVuZHMgUGlja2VyQmFzZURpcmVjdGl2ZVxuICAgIGltcGxlbWVudHNcbiAgICBJZ3hUaW1lUGlja2VyQmFzZSxcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBPbkluaXQsXG4gICAgT25EZXN0cm95LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgVmFsaWRhdG9yIHtcbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgYGlkYCBhdHRyaWJ1dGUuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtdGltZS1waWNrZXIgW2lkXT1cIidpZ3gtdGltZS1waWNrZXItNSdcIiBbZGlzcGxheUZvcm1hdF09XCJoOm1tIHR0XCIgPjwvaWd4LXRpbWUtcGlja2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWQgPSBgaWd4LXRpbWUtcGlja2VyLSR7TkVYVF9JRCsrfWA7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZm9ybWF0IHVzZWQgd2hlbiBlZGl0YWJsZSBpbnB1dCBpcyBub3QgZm9jdXNlZC4gRGVmYXVsdHMgdG8gdGhlIGBpbnB1dEZvcm1hdGAgaWYgbm90IHNldC5cbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogVXNlcyBBbmd1bGFyJ3MgYERhdGVQaXBlYC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtdGltZS1waWNrZXIgZGlzcGxheUZvcm1hdD1cIm1tOnNzXCI+PC9pZ3gtdGltZS1waWNrZXI+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvdmVycmlkZSBkaXNwbGF5Rm9ybWF0OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZXhwZWN0ZWQgdXNlciBpbnB1dCBmb3JtYXQgYW5kIHBsYWNlaG9sZGVyLlxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBEZWZhdWx0IGlzIGBoaDptbSB0dGBcbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtdGltZS1waWNrZXIgaW5wdXRGb3JtYXQ9XCJISDptbVwiPjwvaWd4LXRpbWUtcGlja2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG92ZXJyaWRlIGlucHV0Rm9ybWF0OiBzdHJpbmcgPSBEYXRlVGltZVV0aWwuREVGQVVMVF9USU1FX0lOUFVUX0ZPUk1BVDtcblxuICAgIC8qKlxuICAgICAqIEdldHMvU2V0cyB0aGUgaW50ZXJhY3Rpb24gbW9kZSAtIGRpYWxvZyBvciBkcm9wIGRvd24uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXRpbWUtcGlja2VyIG1vZGU9XCJkaWFsb2dcIj48L2lneC10aW1lLXBpY2tlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvdmVycmlkZSBtb2RlOiBQaWNrZXJJbnRlcmFjdGlvbk1vZGUgPSBQaWNrZXJJbnRlcmFjdGlvbk1vZGUuRHJvcERvd247XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbWluaW11bSB2YWx1ZSB0aGUgcGlja2VyIHdpbGwgYWNjZXB0LlxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBJZiBhIGBzdHJpbmdgIHZhbHVlIGlzIHBhc3NlZCBpbiwgaXQgbXVzdCBiZSBpbiBJU08gZm9ybWF0LlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC10aW1lLXBpY2tlciBbbWluVmFsdWVdPVwiMTg6MDA6MDBcIj48L2lneC10aW1lLXBpY2tlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgbWluVmFsdWUodmFsdWU6IERhdGUgfCBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fbWluVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMucGFyc2VUb0RhdGUodmFsdWUpO1xuICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0ZU1pblZhbHVlID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGVNaW5WYWx1ZS5zZXRIb3VycyhkYXRlLmdldEhvdXJzKCksIGRhdGUuZ2V0TWludXRlcygpLCBkYXRlLmdldFNlY29uZHMoKSwgZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSk7XG4gICAgICAgICAgICB0aGlzLm1pbkRyb3Bkb3duVmFsdWUgPSB0aGlzLnNldE1pbk1heERyb3Bkb3duVmFsdWUoJ21pbicsIHRoaXMuX2RhdGVNaW5WYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlKHRoaXMuX3NlbGVjdGVkRGF0ZSk7XG4gICAgICAgIHRoaXMuX29uVmFsaWRhdG9yQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtaW5WYWx1ZSgpOiBEYXRlIHwgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21pblZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgaWYgdGhlIGRyb3Bkb3duL2RpYWxvZyBpcyBjb2xsYXBzZWRcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgaXNDb2xsYXBzZWQgPSB0aGlzLnRpbWVQaWNrZXIuY29sbGFwc2VkO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgY29sbGFwc2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50b2dnbGVSZWY/LmNvbGxhcHNlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgbWF4aW11bSB2YWx1ZSB0aGUgcGlja2VyIHdpbGwgYWNjZXB0LlxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBJZiBhIGBzdHJpbmdgIHZhbHVlIGlzIHBhc3NlZCBpbiwgaXQgbXVzdCBiZSBpbiBJU08gZm9ybWF0LlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC10aW1lLXBpY2tlciBbbWF4VmFsdWVdPVwiMjA6MzA6MDBcIj48L2lneC10aW1lLXBpY2tlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgbWF4VmFsdWUodmFsdWU6IERhdGUgfCBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fbWF4VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMucGFyc2VUb0RhdGUodmFsdWUpO1xuICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0ZU1heFZhbHVlID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGVNYXhWYWx1ZS5zZXRIb3VycyhkYXRlLmdldEhvdXJzKCksIGRhdGUuZ2V0TWludXRlcygpLCBkYXRlLmdldFNlY29uZHMoKSwgZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSk7XG4gICAgICAgICAgICB0aGlzLm1heERyb3Bkb3duVmFsdWUgPSB0aGlzLnNldE1pbk1heERyb3Bkb3duVmFsdWUoJ21heCcsIHRoaXMuX2RhdGVNYXhWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlKHRoaXMuX3NlbGVjdGVkRGF0ZSk7XG4gICAgICAgIHRoaXMuX29uVmFsaWRhdG9yQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtYXhWYWx1ZSgpOiBEYXRlIHwgc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heFZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgd2hldGhlciB0aGUgc2Vjb25kcywgbWludXRlcyBhbmQgaG91ciBzcGlubmluZyB3aWxsIGxvb3AgYmFjayBhcm91bmQgd2hlbiBlbmQgdmFsdWUgaXMgcmVhY2hlZC5cbiAgICAgKiBCeSBkZWZhdWx0IGl0J3Mgc2V0IHRvIHRydWUuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtdGltZS1waWNrZXIgW3NwaW5Mb29wXT1cImZhbHNlXCI+PC9pZ3gtdGltZS1waWNrZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIHNwaW5Mb29wID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEdldHMvU2V0cyBhIGN1c3RvbSBmb3JtYXR0ZXIgZnVuY3Rpb24gb24gdGhlIHNlbGVjdGVkIG9yIHBhc3NlZCBkYXRlLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC10aW1lLXBpY2tlciBbdmFsdWVdPVwiZGF0ZVwiIFtmb3JtYXR0ZXJdPVwiZm9ybWF0dGVyXCI+PC9pZ3gtdGltZS1waWNrZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZm9ybWF0dGVyOiAodmFsOiBEYXRlKSA9PiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBvcmllbnRhdGlvbiBvZiB0aGUgcGlja2VyJ3MgaGVhZGVyLlxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBBdmFpbGFibGUgaW4gZGlhbG9nIG1vZGUgb25seS4gRGVmYXVsdCB2YWx1ZSBpcyBgaG9yaXpvbnRhbGAuXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC10aW1lLXBpY2tlciBbaGVhZGVyT3JpZW50YXRpb25dPVwiJ3ZlcnRpY2FsJ1wiPjwvaWd4LXRpbWUtcGlja2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhlYWRlck9yaWVudGF0aW9uOiBQaWNrZXJIZWFkZXJPcmllbnRhdGlvbiA9IFBpY2tlckhlYWRlck9yaWVudGF0aW9uLkhvcml6b250YWw7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgcmVhZE9ubHkgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgYWZ0ZXIgYSBzZWxlY3Rpb24gaGFzIGJlZW4gZG9uZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtdGltZS1waWNrZXIgKHNlbGVjdGVkKT1cIm9uU2VsZWN0aW9uKCRldmVudClcIj48L2lneC10aW1lLXBpY2tlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIHBpY2tlcidzIHZhbHVlIGNoYW5nZXMuXG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIFVzZWQgZm9yIGB0d28td2F5YCBiaW5kaW5ncy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtdGltZS1waWNrZXIgWyh2YWx1ZSldPVwiZGF0ZVwiPjwvaWd4LXRpbWUtcGlja2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZSB8IHN0cmluZz4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciB0eXBlcy9zcGlucyBpbnZhbGlkIHRpbWUgaW4gdGhlIHRpbWUtcGlja2VyIGVkaXRvci5cbiAgICAgKlxuICAgICAqICBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXRpbWUtcGlja2VyICh2YWxpZGF0aW9uRmFpbGVkKT1cIm9uVmFsaWRhdGlvbkZhaWxlZCgkZXZlbnQpXCI+PC9pZ3gtdGltZS1waWNrZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZhbGlkYXRpb25GYWlsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElneFRpbWVQaWNrZXJWYWxpZGF0aW9uRmFpbGVkRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdob3VyTGlzdCcpXG4gICAgcHVibGljIGhvdXJMaXN0OiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdtaW51dGVMaXN0JylcbiAgICBwdWJsaWMgbWludXRlTGlzdDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnc2Vjb25kc0xpc3QnKVxuICAgIHB1YmxpYyBzZWNvbmRzTGlzdDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnYW1wbUxpc3QnKVxuICAgIHB1YmxpYyBhbXBtTGlzdDogRWxlbWVudFJlZjtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oSWd4UGlja2VyQ2xlYXJDb21wb25lbnQpXG4gICAgcHVibGljIGNsZWFyQ29tcG9uZW50czogUXVlcnlMaXN0PElneFBpY2tlckNsZWFyQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBDb250ZW50Q2hpbGQoSWd4TGFiZWxEaXJlY3RpdmUpXG4gICAgcHVibGljIGxhYmVsOiBJZ3hMYWJlbERpcmVjdGl2ZTtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBDb250ZW50Q2hpbGQoSWd4UGlja2VyQWN0aW9uc0RpcmVjdGl2ZSlcbiAgICBwdWJsaWMgdGltZVBpY2tlckFjdGlvbnNEaXJlY3RpdmU6IElneFBpY2tlckFjdGlvbnNEaXJlY3RpdmU7XG5cbiAgICBAVmlld0NoaWxkKElneElucHV0RGlyZWN0aXZlLCB7IHJlYWQ6IElneElucHV0RGlyZWN0aXZlIH0pXG4gICAgcHJpdmF0ZSBpbnB1dERpcmVjdGl2ZTogSWd4SW5wdXREaXJlY3RpdmU7XG5cbiAgICBAVmlld0NoaWxkKElneElucHV0R3JvdXBDb21wb25lbnQpXG4gICAgcHJpdmF0ZSBfaW5wdXRHcm91cDogSWd4SW5wdXRHcm91cENvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoSWd4RGF0ZVRpbWVFZGl0b3JEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJpdmF0ZSBkYXRlVGltZUVkaXRvcjogSWd4RGF0ZVRpbWVFZGl0b3JEaXJlY3RpdmU7XG5cbiAgICBAVmlld0NoaWxkKElneFRvZ2dsZURpcmVjdGl2ZSlcbiAgICBwcml2YXRlIHRvZ2dsZVJlZjogSWd4VG9nZ2xlRGlyZWN0aXZlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgY2xlYXJlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgaXNOb3RFbXB0eSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgY3VycmVudEhvdXI6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIGN1cnJlbnRNaW51dGVzOiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyBnZXQgc2hvd0NsZWFyQnV0dG9uKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5jbGVhckNvbXBvbmVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKERhdGVUaW1lVXRpbC5pc1ZhbGlkRGF0ZSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgLy8gVE9ETzogVXBkYXRlIHcvIGNsZWFyIGJlaGF2aW9yXG4gICAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZS5nZXRIb3VycygpICE9PSAwIHx8IHRoaXMudmFsdWUuZ2V0TWludXRlcygpICE9PSAwIHx8IHRoaXMudmFsdWUuZ2V0U2Vjb25kcygpICE9PSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhIXRoaXMuZGF0ZVRpbWVFZGl0b3IudmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgZ2V0IHNob3dIb3Vyc0xpc3QoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0Rm9ybWF0LmluZGV4T2YoJ2gnKSAhPT0gLSAxIHx8IHRoaXMuaW5wdXRGb3JtYXQuaW5kZXhPZignSCcpICE9PSAtIDE7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgZ2V0IHNob3dNaW51dGVzTGlzdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRGb3JtYXQuaW5kZXhPZignbScpICE9PSAtIDE7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgZ2V0IHNob3dTZWNvbmRzTGlzdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRGb3JtYXQuaW5kZXhPZigncycpICE9PSAtIDE7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgZ2V0IHNob3dBbVBtTGlzdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXRGb3JtYXQuaW5kZXhPZigndCcpICE9PSAtIDEgfHwgdGhpcy5pbnB1dEZvcm1hdC5pbmRleE9mKCdhJykgIT09IC0gMTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyBnZXQgaXNUd2VsdmVIb3VyRm9ybWF0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dEZvcm1hdC5pbmRleE9mKCdoJykgIT09IC0gMTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IGlzVmVydGljYWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhlYWRlck9yaWVudGF0aW9uID09PSBQaWNrZXJIZWFkZXJPcmllbnRhdGlvbi5WZXJ0aWNhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IHNlbGVjdGVkRGF0ZSgpOiBEYXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkRGF0ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IG1pbkRhdGVWYWx1ZSgpOiBEYXRlIHtcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRlTWluVmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1pbkRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgbWluRGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgICAgICAgIHJldHVybiBtaW5EYXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGVNaW5WYWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IG1heERhdGVWYWx1ZSgpOiBEYXRlIHtcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRlTWF4VmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IG1heERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgbWF4RGF0ZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICAgICAgICAgICAgcmV0dXJuIG1heERhdGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZU1heFZhbHVlO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBnZXQgdG9nZ2xlQ29udGFpbmVyKCk6IEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9nZ2xlUmVmPy5lbGVtZW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5fbmdDb250cm9sICYmIHRoaXMuX25nQ29udHJvbC5jb250cm9sICYmIHRoaXMuX25nQ29udHJvbC5jb250cm9sLnZhbGlkYXRvcikge1xuICAgICAgICAgICAgLy8gUnVuIHRoZSB2YWxpZGF0aW9uIHdpdGggZW1wdHkgb2JqZWN0IHRvIGNoZWNrIGlmIHJlcXVpcmVkIGlzIGVuYWJsZWQuXG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IHRoaXMuX25nQ29udHJvbC5jb250cm9sLnZhbGlkYXRvcih7fSBhcyBBYnN0cmFjdENvbnRyb2wpO1xuICAgICAgICAgICAgcmV0dXJuICEhKGVycm9yICYmIGVycm9yLnJlcXVpcmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBkaWFsb2dPdmVybGF5U2V0dGluZ3MoKTogT3ZlcmxheVNldHRpbmdzIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX2RlZmF1bHREaWFsb2dPdmVybGF5U2V0dGluZ3MsIHRoaXMub3ZlcmxheVNldHRpbmdzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBkcm9wRG93bk92ZXJsYXlTZXR0aW5ncygpOiBPdmVybGF5U2V0dGluZ3Mge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fZGVmYXVsdERyb3BEb3duT3ZlcmxheVNldHRpbmdzLCB0aGlzLm92ZXJsYXlTZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGRpc3BsYXlWYWx1ZTogUGlwZVRyYW5zZm9ybSA9IHsgdHJhbnNmb3JtOiAoZGF0ZTogRGF0ZSkgPT4gdGhpcy5mb3JtYXR0ZXIoZGF0ZSkgfTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgbWluRHJvcGRvd25WYWx1ZTogRGF0ZTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgbWF4RHJvcGRvd25WYWx1ZTogRGF0ZTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaG91ckl0ZW1zID0gW107XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG1pbnV0ZUl0ZW1zID0gW107XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIHNlY29uZHNJdGVtcyA9IFtdO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBhbXBtSXRlbXMgPSBbXTtcblxuICAgIHByaXZhdGUgX3ZhbHVlOiBEYXRlIHwgc3RyaW5nO1xuICAgIHByaXZhdGUgX2RhdGVWYWx1ZTogRGF0ZTtcbiAgICBwcml2YXRlIF9kYXRlTWluVmFsdWU6IERhdGU7XG4gICAgcHJpdmF0ZSBfZGF0ZU1heFZhbHVlOiBEYXRlO1xuICAgIHByaXZhdGUgX3NlbGVjdGVkRGF0ZTogRGF0ZTtcbiAgICBwcml2YXRlIF9yZXNvdXJjZVN0cmluZ3MgPSBnZXRDdXJyZW50UmVzb3VyY2VTdHJpbmdzKFRpbWVQaWNrZXJSZXNvdXJjZVN0cmluZ3NFTik7XG4gICAgcHJpdmF0ZSBfb2tCdXR0b25MYWJlbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBfY2FuY2VsQnV0dG9uTGFiZWwgPSBudWxsO1xuICAgIHByaXZhdGUgX2l0ZW1zRGVsdGE6IFBpY2s8RGF0ZVBhcnREZWx0YXMsICdob3VycycgfCAnbWludXRlcycgfCAnc2Vjb25kcyc+ID0geyBob3VyczogMSwgbWludXRlczogMSwgc2Vjb25kczogMSB9O1xuXG4gICAgcHJpdmF0ZSBfc3RhdHVzQ2hhbmdlcyQ6IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIF9uZ0NvbnRyb2w6IE5nQ29udHJvbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBfb25DaGFuZ2VDYWxsYmFjazogKF86IERhdGUgfCBzdHJpbmcpID0+IHZvaWQgPSBub29wO1xuICAgIHByaXZhdGUgX29uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgICBwcml2YXRlIF9vblZhbGlkYXRvckNoYW5nZTogKCkgPT4gdm9pZCA9IG5vb3A7XG5cbiAgICBwcml2YXRlIF9kZWZhdWx0RGlhbG9nT3ZlcmxheVNldHRpbmdzOiBPdmVybGF5U2V0dGluZ3MgPSB7XG4gICAgICAgIGNsb3NlT25PdXRzaWRlQ2xpY2s6IHRydWUsXG4gICAgICAgIG1vZGFsOiB0cnVlLFxuICAgICAgICBjbG9zZU9uRXNjYXBlOiB0cnVlLFxuICAgICAgICBvdXRsZXQ6IHRoaXMub3V0bGV0XG4gICAgfTtcbiAgICBwcml2YXRlIF9kZWZhdWx0RHJvcERvd25PdmVybGF5U2V0dGluZ3M6IE92ZXJsYXlTZXR0aW5ncyA9IHtcbiAgICAgICAgdGFyZ2V0OiB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgbW9kYWw6IGZhbHNlLFxuICAgICAgICBjbG9zZU9uT3V0c2lkZUNsaWNrOiB0cnVlLFxuICAgICAgICBzY3JvbGxTdHJhdGVneTogbmV3IEFic29sdXRlU2Nyb2xsU3RyYXRlZ3koKSxcbiAgICAgICAgcG9zaXRpb25TdHJhdGVneTogbmV3IEF1dG9Qb3NpdGlvblN0cmF0ZWd5KCksXG4gICAgICAgIG91dGxldDogdGhpcy5vdXRsZXRcbiAgICB9O1xuXG5cbiAgICAvKipcbiAgICAgKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIHZhbHVlIC8gdGltZSBmcm9tIHRoZSBkcm9wLWRvd24vZGlhbG9nXG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIFRoZSBjdXJyZW50IHZhbHVlIGlzIG9mIHR5cGUgYERhdGVgXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBuZXdWYWx1ZTogRGF0ZSA9IG5ldyBEYXRlKDIwMDAsIDIsIDIsIDEwLCAxNSwgMTUpO1xuICAgICAqIHRoaXMudGltZVBpY2tlci52YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdmFsdWUoKTogRGF0ZSB8IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbiBhY2Nlc3NvciB0aGF0IGFsbG93cyB5b3UgdG8gc2V0IGEgdGltZSB1c2luZyB0aGUgYHZhbHVlYCBpbnB1dC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogcHVibGljIGRhdGU6IERhdGUgPSBuZXcgRGF0ZShEYXRlLm5vdygpKTtcbiAgICAgKiAgLy8uLi5cbiAgICAgKiA8aWd4LXRpbWUtcGlja2VyIFt2YWx1ZV09XCJkYXRlXCIgZm9ybWF0PVwiaDptbSB0dFwiPjwvaWd4LXRpbWUtcGlja2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCB2YWx1ZSh2YWx1ZTogRGF0ZSB8IHN0cmluZykge1xuICAgICAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMuX3ZhbHVlO1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgICBjb25zdCBkYXRlID0gdGhpcy5wYXJzZVRvRGF0ZSh2YWx1ZSk7XG4gICAgICAgIGlmIChkYXRlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRlVmFsdWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5fZGF0ZVZhbHVlLnNldEhvdXJzKGRhdGUuZ2V0SG91cnMoKSwgZGF0ZS5nZXRNaW51dGVzKCksIGRhdGUuZ2V0U2Vjb25kcygpLCBkYXRlLmdldE1pbGxpc2Vjb25kcygpKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZSh0aGlzLl9kYXRlVmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZGF0ZVZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kYXRlVGltZUVkaXRvcikge1xuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUVkaXRvci52YWx1ZSA9IGRhdGU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbWl0VmFsdWVDaGFuZ2Uob2xkVmFsdWUsIHRoaXMuX3ZhbHVlKTtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayh0aGlzLl92YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW4gYWNjZXNzb3IgdGhhdCBzZXRzIHRoZSByZXNvdXJjZSBzdHJpbmdzLlxuICAgICAqIEJ5IGRlZmF1bHQgaXQgdXNlcyBFTiByZXNvdXJjZXMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHJlc291cmNlU3RyaW5ncyh2YWx1ZTogSVRpbWVQaWNrZXJSZXNvdXJjZVN0cmluZ3MpIHtcbiAgICAgICAgdGhpcy5fcmVzb3VyY2VTdHJpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fcmVzb3VyY2VTdHJpbmdzLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW4gYWNjZXNzb3IgdGhhdCByZXR1cm5zIHRoZSByZXNvdXJjZSBzdHJpbmdzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcmVzb3VyY2VTdHJpbmdzKCk6IElUaW1lUGlja2VyUmVzb3VyY2VTdHJpbmdzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlU3RyaW5ncztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPdmVycmlkZXMgdGhlIGRlZmF1bHQgdGV4dCBvZiB0aGUgKipPSyoqIGJ1dHRvbi5cbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogRGVmYXVsdHMgdG8gdGhlIHZhbHVlIGZyb20gcmVzb3VyY2Ugc3RyaW5ncywgYFwiT0tcImAgZm9yIHRoZSBidWlsdC1pbiBFTi5cbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXRpbWUtcGlja2VyIG9rQnV0dG9uTGFiZWw9XCJTRVRcIiBbdmFsdWVdPVwiZGF0ZVwiIGZvcm1hdD1cImg6bW0gdHRcIj48L2lneC10aW1lLXBpY2tlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgb2tCdXR0b25MYWJlbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX29rQnV0dG9uTGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbiBhY2Nlc3NvciB0aGF0IHJldHVybnMgdGhlIGxhYmVsIG9mIG9rIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG9rQnV0dG9uTGFiZWwoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuX29rQnV0dG9uTGFiZWwgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc291cmNlU3RyaW5ncy5pZ3hfdGltZV9waWNrZXJfb2s7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX29rQnV0dG9uTGFiZWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGVzIHRoZSBkZWZhdWx0IHRleHQgb2YgdGhlICoqQ2FuY2VsKiogYnV0dG9uLlxuICAgICAqIEByZW1hcmtzXG4gICAgICogRGVmYXVsdHMgdG8gdGhlIHZhbHVlIGZyb20gcmVzb3VyY2Ugc3RyaW5ncywgYFwiQ2FuY2VsXCJgIGZvciB0aGUgYnVpbHQtaW4gRU4uXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtdGltZS1waWNrZXIgY2FuY2VsQnV0dG9uTGFiZWw9XCJFeGl0XCIgW3ZhbHVlXT1cImRhdGVcIiBmb3JtYXQ9XCJoOm1tIHR0XCI+PC9pZ3gtdGltZS1waWNrZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGNhbmNlbEJ1dHRvbkxhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fY2FuY2VsQnV0dG9uTGFiZWwgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbiBhY2Nlc3NvciB0aGF0IHJldHVybnMgdGhlIGxhYmVsIG9mIGNhbmNlbCBidXR0b24uXG4gICAgICovXG4gICAgcHVibGljIGdldCBjYW5jZWxCdXR0b25MYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5fY2FuY2VsQnV0dG9uTGFiZWwgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc291cmNlU3RyaW5ncy5pZ3hfdGltZV9waWNrZXJfY2FuY2VsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9jYW5jZWxCdXR0b25MYWJlbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWx0YSB2YWx1ZXMgdXNlZCB0byBpbmNyZW1lbnQgb3IgZGVjcmVtZW50IGVhY2ggZWRpdG9yIGRhdGUgcGFydCBvbiBzcGluIGFjdGlvbnMgYW5kXG4gICAgICogdG8gZGlzcGxheSB0aW1lIHBvcnRpb25zIGluIHRoZSBkcm9wZG93bi9kaWFsb2cuXG4gICAgICogQnkgZGVmYXVsdCBgaXRlbXNEZWx0YWAgaXMgc2V0IHRvIGB7aG91cjogMSwgbWludXRlOiAxLCBzZWNvbmQ6IDF9YFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXRpbWUtcGlja2VyIFtpdGVtc0RlbHRhXT1cIntob3VyOjMsIG1pbnV0ZTo1LCBzZWNvbmQ6MTB9XCIgaWQ9XCJ0aW1lLXBpY2tlclwiPjwvaWd4LXRpbWUtcGlja2VyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBpdGVtc0RlbHRhKHZhbHVlOiBQaWNrPERhdGVQYXJ0RGVsdGFzLCAnaG91cnMnIHwgJ21pbnV0ZXMnIHwgJ3NlY29uZHMnPikge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuX2l0ZW1zRGVsdGEsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGl0ZW1zRGVsdGEoKTogUGljazxEYXRlUGFydERlbHRhcywgJ2hvdXJzJyB8ICdtaW51dGVzJyB8ICdzZWNvbmRzJz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNEZWx0YTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgZWxlbWVudDogRWxlbWVudFJlZixcbiAgICAgICAgQEluamVjdChMT0NBTEVfSUQpIF9sb2NhbGVJZDogc3RyaW5nLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERpc3BsYXlEZW5zaXR5VG9rZW4pIF9kaXNwbGF5RGVuc2l0eU9wdGlvbnM6IElEaXNwbGF5RGVuc2l0eU9wdGlvbnMsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoSUdYX0lOUFVUX0dST1VQX1RZUEUpIF9pbnB1dEdyb3VwVHlwZTogSWd4SW5wdXRHcm91cFR5cGUsXG4gICAgICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm1VdGlsLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudCwgX2xvY2FsZUlkLCBfZGlzcGxheURlbnNpdHlPcHRpb25zLCBfaW5wdXRHcm91cFR5cGUpO1xuICAgICAgICB0aGlzLmxvY2FsZSA9IHRoaXMubG9jYWxlIHx8IHRoaXMuX2xvY2FsZUlkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgdGhpcy5wbGF0Zm9ybS5LRVlNQVAuQVJST1dfVVA6XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmFsdEtleSAmJiB0aGlzLmlzRHJvcGRvd24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgdGhpcy5wbGF0Zm9ybS5LRVlNQVAuQVJST1dfRE9XTjpcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuYWx0S2V5ICYmIHRoaXMuaXNEcm9wZG93bikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHRoaXMucGxhdGZvcm0uS0VZTUFQLkVTQ0FQRTpcbiAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbEJ1dHRvbkNsaWNrKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIHRoaXMucGxhdGZvcm0uS0VZTUFQLlNQQUNFOlxuICAgICAgICAgICAgICAgIHRoaXMub3BlbigpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0UGFydFZhbHVlKHZhbHVlOiBEYXRlLCB0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBpbnB1dERhdGVQYXJ0cyA9IERhdGVUaW1lVXRpbC5wYXJzZURhdGVUaW1lRm9ybWF0KHRoaXMuaW5wdXRGb3JtYXQpO1xuICAgICAgICBjb25zdCBwYXJ0ID0gaW5wdXREYXRlUGFydHMuZmluZChlbGVtZW50ID0+IGVsZW1lbnQudHlwZSA9PT0gdHlwZSk7XG4gICAgICAgIHJldHVybiBEYXRlVGltZVV0aWwuZ2V0UGFydFZhbHVlKHZhbHVlLCBwYXJ0LCBwYXJ0LmZvcm1hdC5sZW5ndGgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyB0b0lTT1N0cmluZyh2YWx1ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZS50b0xvY2FsZVRpbWVTdHJpbmcoJ2VuLUdCJywge1xuICAgICAgICAgICAgaG91cjogJzItZGlnaXQnLFxuICAgICAgICAgICAgbWludXRlOiAnMi1kaWdpdCcsXG4gICAgICAgICAgICBzZWNvbmQ6ICcyLWRpZ2l0JyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gI3JlZ2lvbiBDb250cm9sVmFsdWVBY2Nlc3NvclxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IERhdGUgfCBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgY29uc3QgZGF0ZSA9IHRoaXMucGFyc2VUb0RhdGUodmFsdWUpO1xuICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0ZVZhbHVlID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGVWYWx1ZS5zZXRIb3VycyhkYXRlLmdldEhvdXJzKCksIGRhdGUuZ2V0TWludXRlcygpLCBkYXRlLmdldFNlY29uZHMoKSk7XG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWUodGhpcy5fZGF0ZVZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kYXRlVGltZUVkaXRvcikge1xuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUVkaXRvci52YWx1ZSA9IGRhdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IERhdGUgfCBzdHJpbmcpID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCkge1xuICAgICAgICB0aGlzLl9vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyByZWdpc3Rlck9uVmFsaWRhdG9yQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5fb25WYWxpZGF0b3JDaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgICAgICBpZiAoIWNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIC8vIEludmFsaWREYXRlIGhhbmRsaW5nXG4gICAgICAgIGlmIChpc0RhdGUoY29udHJvbC52YWx1ZSkgJiYgIURhdGVUaW1lVXRpbC5pc1ZhbGlkRGF0ZShjb250cm9sLnZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IHRydWUgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVycm9ycyA9IHt9O1xuICAgICAgICBjb25zdCB2YWx1ZSA9IERhdGVUaW1lVXRpbC5pc1ZhbGlkRGF0ZShjb250cm9sLnZhbHVlKSA/IGNvbnRyb2wudmFsdWUgOiBEYXRlVGltZVV0aWwucGFyc2VJc29EYXRlKGNvbnRyb2wudmFsdWUpO1xuICAgICAgICBPYmplY3QuYXNzaWduKGVycm9ycywgRGF0ZVRpbWVVdGlsLnZhbGlkYXRlTWluTWF4KHZhbHVlLCB0aGlzLm1pblZhbHVlLCB0aGlzLm1heFZhbHVlLCB0cnVlLCBmYWxzZSkpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoZXJyb3JzKS5sZW5ndGggPiAwID8gZXJyb3JzIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cbiAgICAvLyNlbmRyZWdpb25cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9uZ0NvbnRyb2wgPSB0aGlzLl9pbmplY3Rvci5nZXQ8TmdDb250cm9sPihOZ0NvbnRyb2wsIG51bGwpO1xuICAgICAgICB0aGlzLm1pbkRyb3Bkb3duVmFsdWUgPSB0aGlzLnNldE1pbk1heERyb3Bkb3duVmFsdWUoJ21pbicsIHRoaXMubWluRGF0ZVZhbHVlKTtcbiAgICAgICAgdGhpcy5tYXhEcm9wZG93blZhbHVlID0gdGhpcy5zZXRNaW5NYXhEcm9wZG93blZhbHVlKCdtYXgnLCB0aGlzLm1heERhdGVWYWx1ZSk7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZSh0aGlzLl9kYXRlVmFsdWUpO1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9EYXRlRWRpdG9yRXZlbnRzKCk7XG4gICAgICAgIHRoaXMuc3Vic2NyaWJlVG9Ub2dnbGVEaXJlY3RpdmVFdmVudHMoKTtcblxuICAgICAgICB0aGlzLl9kZWZhdWx0RHJvcERvd25PdmVybGF5U2V0dGluZ3MuZXhjbHVkZUZyb21PdXRzaWRlQ2xpY2sgPSBbdGhpcy5faW5wdXRHcm91cC5lbGVtZW50Lm5hdGl2ZUVsZW1lbnRdO1xuXG4gICAgICAgIGZyb21FdmVudCh0aGlzLmlucHV0RGlyZWN0aXZlLm5hdGl2ZUVsZW1lbnQsICdibHVyJylcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWxpZGl0eU9uQmx1cigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc3ViVG9JY29uc0NsaWNrZWQodGhpcy5jbGVhckNvbXBvbmVudHMsICgpID0+IHRoaXMuY2xlYXIoKSk7XG4gICAgICAgIHRoaXMuY2xlYXJDb21wb25lbnRzLmNoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnN1YlRvSWNvbnNDbGlja2VkKHRoaXMuY2xlYXJDb21wb25lbnRzLCAoKSA9PiB0aGlzLmNsZWFyKCkpKTtcblxuICAgICAgICBpZiAodGhpcy5fbmdDb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0dXNDaGFuZ2VzJCA9IHRoaXMuX25nQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnN1YnNjcmliZSh0aGlzLm9uU3RhdHVzQ2hhbmdlZC5iaW5kKHRoaXMpKTtcbiAgICAgICAgICAgIHRoaXMuX2lucHV0R3JvdXAuaXNSZXF1aXJlZCA9IHRoaXMucmVxdWlyZWQ7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICAgICAgaWYgKHRoaXMuX3N0YXR1c0NoYW5nZXMkKSB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0dXNDaGFuZ2VzJC51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgZ2V0RWRpdEVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGVUaW1lRWRpdG9yLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3BlbnMgdGhlIHBpY2tlcidzIGRpYWxvZyBVSS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzZXR0aW5ncyBPdmVybGF5U2V0dGluZ3MgLSB0aGUgb3ZlcmxheSBzZXR0aW5ncyB0byB1c2UgZm9yIHBvc2l0aW9uaW5nIHRoZSBkcm9wIGRvd24gb3IgZGlhbG9nIGNvbnRhaW5lciBhY2NvcmRpbmcgdG9cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC10aW1lLXBpY2tlciAjcGlja2VyIFt2YWx1ZV09XCJkYXRlXCI+PC9pZ3gtdGltZS1waWNrZXI+XG4gICAgICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uIChjbGljayk9XCJwaWNrZXIub3BlbigpXCI+T3BlbiBEaWFsb2c8L2J1dHRvbj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgb3BlbihzZXR0aW5ncz86IE92ZXJsYXlTZXR0aW5ncyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCAhdGhpcy50b2dnbGVSZWYuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkVmFsdWUodGhpcy5fZGF0ZVZhbHVlKTtcbiAgICAgICAgY29uc3Qgb3ZlcmxheVNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5pc0Ryb3Bkb3duXG4gICAgICAgICAgICA/IHRoaXMuZHJvcERvd25PdmVybGF5U2V0dGluZ3NcbiAgICAgICAgICAgIDogdGhpcy5kaWFsb2dPdmVybGF5U2V0dGluZ3NcbiAgICAgICAgICAgICwgc2V0dGluZ3MpO1xuXG4gICAgICAgIHRoaXMudG9nZ2xlUmVmLm9wZW4ob3ZlcmxheVNldHRpbmdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZXMgdGhlIGRyb3Bkb3duL2RpYWxvZy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC10aW1lLXBpY2tlciAjdGltZVBpY2tlcj48L2lneC10aW1lLXBpY2tlcj5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogQFZpZXdDaGlsZCgndGltZVBpY2tlcicsIHsgcmVhZDogSWd4VGltZVBpY2tlckNvbXBvbmVudCB9KSBwaWNrZXI6IElneFRpbWVQaWNrZXJDb21wb25lbnQ7XG4gICAgICogcGlja2VyLmNsb3NlKCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRvZ2dsZVJlZi5jbG9zZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGUoc2V0dGluZ3M/OiBPdmVybGF5U2V0dGluZ3MpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudG9nZ2xlUmVmLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgdGhpcy5vcGVuKHNldHRpbmdzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFycyB0aGUgdGltZSBwaWNrZXIgdmFsdWUgaWYgaXQgaXMgYSBgc3RyaW5nYCBvciByZXNldHMgdGhlIHRpbWUgdG8gYDAwOjAwOjAwYCBpZiB0aGUgdmFsdWUgaXMgYSBEYXRlIG9iamVjdC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMudGltZVBpY2tlci5jbGVhcigpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy50b2dnbGVSZWYuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoRGF0ZVRpbWVVdGlsLmlzVmFsaWREYXRlKHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICBjb25zdCBvbGRWYWx1ZSA9IG5ldyBEYXRlKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgdGhpcy52YWx1ZS5zZXRIb3VycygwLCAwLCAwKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlLmdldFRpbWUoKSAhPT0gb2xkVmFsdWUuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0VmFsdWVDaGFuZ2Uob2xkVmFsdWUsIHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGVWYWx1ZS5zZXRIb3VycygwLCAwLCAwKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVUaW1lRWRpdG9yLnZhbHVlID0gbmV3IERhdGUodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlKHRoaXMuX2RhdGVWYWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgdGltZSBmcm9tIHRoZSBpZ3hUaW1lUGlja2VyLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy50aW1lUGlja2VyLnNlbGVjdChkYXRlKTtcbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRlIERhdGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHRpbWUgdG8gYmUgc2VsZWN0ZWQuXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdChkYXRlOiBEYXRlIHwgc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBkYXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluY3JlbWVudCBhIHNwZWNpZmllZCBgRGF0ZVBhcnRgLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRhdGVQYXJ0IFRoZSBvcHRpb25hbCBEYXRlUGFydCB0byBpbmNyZW1lbnQuIERlZmF1bHRzIHRvIEhvdXIuXG4gICAgICogQHBhcmFtIGRlbHRhIFRoZSBvcHRpb25hbCBkZWx0YSB0byBpbmNyZW1lbnQgYnkuIE92ZXJyaWRlcyBgaXRlbXNEZWx0YWAuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy50aW1lUGlja2VyLmluY3JlbWVudChEYXRlUGFydC5Ib3Vycyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGluY3JlbWVudChkYXRlUGFydD86IERhdGVQYXJ0LCBkZWx0YT86IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGVUaW1lRWRpdG9yLmluY3JlbWVudChkYXRlUGFydCwgZGVsdGEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlY3JlbWVudCBhIHNwZWNpZmllZCBgRGF0ZVBhcnRgXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0ZVBhcnQgVGhlIG9wdGlvbmFsIERhdGVQYXJ0IHRvIGRlY3JlbWVudC4gRGVmYXVsdHMgdG8gSG91ci5cbiAgICAgKiBAcGFyYW0gZGVsdGEgVGhlIG9wdGlvbmFsIGRlbHRhIHRvIGRlY3JlbWVudCBieS4gT3ZlcnJpZGVzIGBpdGVtc0RlbHRhYC5cbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLnRpbWVQaWNrZXIuZGVjcmVtZW50KERhdGVQYXJ0LlNlY29uZHMpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBkZWNyZW1lbnQoZGF0ZVBhcnQ/OiBEYXRlUGFydCwgZGVsdGE/OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRlVGltZUVkaXRvci5kZWNyZW1lbnQoZGF0ZVBhcnQsIGRlbHRhKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgY2FuY2VsQnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZSh0aGlzLl9kYXRlVmFsdWUpO1xuICAgICAgICB0aGlzLmRhdGVUaW1lRWRpdG9yLnZhbHVlID0gdGhpcy5wYXJzZVRvRGF0ZSh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBva0J1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMuX3NlbGVjdGVkRGF0ZSk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgb25JdGVtQ2xpY2soaXRlbTogc3RyaW5nLCBkYXRlVHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGxldCBkYXRlID0gbmV3IERhdGUodGhpcy5fc2VsZWN0ZWREYXRlKTtcbiAgICAgICAgc3dpdGNoIChkYXRlVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnaG91ckxpc3QnOiB7XG4gICAgICAgICAgICAgICAgbGV0IGFtcG06IHN0cmluZztcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEhvdXIgPSBwYXJzZUludChpdGVtLCAxMCk7XG4gICAgICAgICAgICAgICAgbGV0IGhvdXJzID0gc2VsZWN0ZWRIb3VyO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hvd0FtUG1MaXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGFtcG0gPSB0aGlzLmdldFBhcnRWYWx1ZShkYXRlLCAnYW1wbScpO1xuICAgICAgICAgICAgICAgICAgICBob3VycyA9IHRoaXMudG9Ud2VudHlGb3VySG91ckZvcm1hdChob3VycywgYW1wbSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pbkhvdXJzID0gdGhpcy5taW5Ecm9wZG93blZhbHVlPy5nZXRIb3VycygpIHx8IDA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1heEhvdXJzID0gdGhpcy5tYXhEcm9wZG93blZhbHVlPy5nZXRIb3VycygpIHx8IDI0O1xuICAgICAgICAgICAgICAgICAgICBpZiAoaG91cnMgPCBtaW5Ib3VycyB8fCBob3VycyA+IG1heEhvdXJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBob3VycyA9IGhvdXJzIDwgMTIgPyBob3VycyArIDEyIDogaG91cnMgLSAxMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGRhdGUuc2V0SG91cnMoaG91cnMpO1xuICAgICAgICAgICAgICAgIGRhdGUgPSB0aGlzLnZhbGlkYXRlRHJvcGRvd25WYWx1ZShkYXRlKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlSW5SYW5nZShkYXRlLCB0aGlzLm1pbkRyb3Bkb3duVmFsdWUsIHRoaXMubWF4RHJvcGRvd25WYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlKGRhdGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ21pbnV0ZUxpc3QnOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWludXRlcyA9IHBhcnNlSW50KGl0ZW0sIDEwKTtcbiAgICAgICAgICAgICAgICBkYXRlLnNldE1pbnV0ZXMobWludXRlcyk7XG4gICAgICAgICAgICAgICAgZGF0ZSA9IHRoaXMudmFsaWRhdGVEcm9wZG93blZhbHVlKGRhdGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRWYWx1ZShkYXRlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ3NlY29uZHNMaXN0Jzoge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlY29uZHMgPSBwYXJzZUludChpdGVtLCAxMCk7XG4gICAgICAgICAgICAgICAgZGF0ZS5zZXRTZWNvbmRzKHNlY29uZHMpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlSW5SYW5nZShkYXRlLCB0aGlzLm1pbkRyb3Bkb3duVmFsdWUsIHRoaXMubWF4RHJvcGRvd25WYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlKGRhdGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJ2FtcG1MaXN0Jzoge1xuICAgICAgICAgICAgICAgIGxldCBob3VyID0gdGhpcy5fc2VsZWN0ZWREYXRlLmdldEhvdXJzKCk7XG4gICAgICAgICAgICAgICAgaG91ciA9IGl0ZW0gPT09ICdBTScgPyBob3VyIC0gMTIgOiBob3VyICsgMTI7XG4gICAgICAgICAgICAgICAgZGF0ZS5zZXRIb3Vycyhob3VyKTtcbiAgICAgICAgICAgICAgICBkYXRlID0gdGhpcy52YWxpZGF0ZURyb3Bkb3duVmFsdWUoZGF0ZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZFZhbHVlKGRhdGUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlRWRpdG9yVmFsdWUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgbmV4dEhvdXIoZGVsdGE6IG51bWJlcikge1xuICAgICAgICBkZWx0YSA9IGRlbHRhID4gMCA/IDEgOiAtMTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNEYXRlID0gbmV3IERhdGUodGhpcy5fc2VsZWN0ZWREYXRlKTtcbiAgICAgICAgY29uc3QgbWluSG91cnMgPSB0aGlzLm1pbkRyb3Bkb3duVmFsdWU/LmdldEhvdXJzKCk7XG4gICAgICAgIGNvbnN0IG1heEhvdXJzID0gdGhpcy5tYXhEcm9wZG93blZhbHVlPy5nZXRIb3VycygpO1xuICAgICAgICBjb25zdCBwcmV2aW91c0hvdXJzID0gcHJldmlvdXNEYXRlLmdldEhvdXJzKCk7XG4gICAgICAgIGxldCBob3VycyA9IHByZXZpb3VzSG91cnMgKyBkZWx0YSAqIHRoaXMuaXRlbXNEZWx0YS5ob3VycztcbiAgICAgICAgaWYgKChwcmV2aW91c0hvdXJzID09PSBtYXhIb3VycyAmJiBkZWx0YSA+IDApIHx8IChwcmV2aW91c0hvdXJzID09PSBtaW5Ib3VycyAmJiBkZWx0YSA8IDApKSB7XG4gICAgICAgICAgICBob3VycyA9ICF0aGlzLnNwaW5Mb29wID8gcHJldmlvdXNIb3VycyA6IGRlbHRhID4gMCA/IG1pbkhvdXJzIDogbWF4SG91cnM7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUuc2V0SG91cnMoaG91cnMpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSB0aGlzLnZhbGlkYXRlRHJvcGRvd25WYWx1ZSh0aGlzLl9zZWxlY3RlZERhdGUpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLl9zZWxlY3RlZERhdGUpO1xuICAgICAgICB0aGlzLnVwZGF0ZUVkaXRvclZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG5leHRNaW51dGUoZGVsdGE6IG51bWJlcikge1xuICAgICAgICBkZWx0YSA9IGRlbHRhID4gMCA/IDEgOiAtMTtcbiAgICAgICAgY29uc3QgbWluSG91cnMgPSB0aGlzLm1pbkRyb3Bkb3duVmFsdWUuZ2V0SG91cnMoKTtcbiAgICAgICAgY29uc3QgbWF4SG91cnMgPSB0aGlzLm1heERyb3Bkb3duVmFsdWUuZ2V0SG91cnMoKTtcbiAgICAgICAgY29uc3QgaG91cnMgPSB0aGlzLl9zZWxlY3RlZERhdGUuZ2V0SG91cnMoKTtcbiAgICAgICAgbGV0IG1pbnV0ZXMgPSB0aGlzLl9zZWxlY3RlZERhdGUuZ2V0TWludXRlcygpO1xuICAgICAgICBjb25zdCBtaW5NaW51dGVzID0gaG91cnMgPT09IG1pbkhvdXJzID8gdGhpcy5taW5Ecm9wZG93blZhbHVlLmdldE1pbnV0ZXMoKSA6IDA7XG4gICAgICAgIGNvbnN0IG1heE1pbnV0ZXMgPSBob3VycyA9PT0gbWF4SG91cnMgPyB0aGlzLm1heERyb3Bkb3duVmFsdWUuZ2V0TWludXRlcygpIDpcbiAgICAgICAgICAgIDYwICUgdGhpcy5pdGVtc0RlbHRhLm1pbnV0ZXMgPiAwID8gNjAgLSAoNjAgJSB0aGlzLml0ZW1zRGVsdGEubWludXRlcykgOlxuICAgICAgICAgICAgICAgIDYwIC0gdGhpcy5pdGVtc0RlbHRhLm1pbnV0ZXM7XG5cbiAgICAgICAgaWYgKChkZWx0YSA8IDAgJiYgbWludXRlcyA9PT0gbWluTWludXRlcykgfHwgKGRlbHRhID4gMCAmJiBtaW51dGVzID09PSBtYXhNaW51dGVzKSkge1xuICAgICAgICAgICAgbWludXRlcyA9IHRoaXMuc3Bpbkxvb3AgJiYgbWludXRlcyA9PT0gbWluTWludXRlcyA/IG1heE1pbnV0ZXMgOiB0aGlzLnNwaW5Mb29wICYmIG1pbnV0ZXMgPT09IG1heE1pbnV0ZXMgPyBtaW5NaW51dGVzIDogbWludXRlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1pbnV0ZXMgPSBtaW51dGVzICsgZGVsdGEgKiB0aGlzLml0ZW1zRGVsdGEubWludXRlcztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZS5zZXRNaW51dGVzKG1pbnV0ZXMpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSB0aGlzLnZhbGlkYXRlRHJvcGRvd25WYWx1ZSh0aGlzLl9zZWxlY3RlZERhdGUpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLl9zZWxlY3RlZERhdGUpO1xuICAgICAgICB0aGlzLnVwZGF0ZUVkaXRvclZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG5leHRTZWNvbmRzKGRlbHRhOiBudW1iZXIpIHtcbiAgICAgICAgZGVsdGEgPSBkZWx0YSA+IDAgPyAxIDogLTE7XG4gICAgICAgIGNvbnN0IG1pbkhvdXJzID0gdGhpcy5taW5Ecm9wZG93blZhbHVlLmdldEhvdXJzKCk7XG4gICAgICAgIGNvbnN0IG1heEhvdXJzID0gdGhpcy5tYXhEcm9wZG93blZhbHVlLmdldEhvdXJzKCk7XG4gICAgICAgIGNvbnN0IGhvdXJzID0gdGhpcy5fc2VsZWN0ZWREYXRlLmdldEhvdXJzKCk7XG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSB0aGlzLl9zZWxlY3RlZERhdGUuZ2V0TWludXRlcygpO1xuICAgICAgICBjb25zdCBtaW5NaW51dGVzID0gdGhpcy5taW5Ecm9wZG93blZhbHVlLmdldE1pbnV0ZXMoKTtcbiAgICAgICAgY29uc3QgbWF4TWludXRlcyA9IHRoaXMubWF4RHJvcGRvd25WYWx1ZS5nZXRNaW51dGVzKCk7XG4gICAgICAgIGxldCBzZWNvbmRzID0gdGhpcy5fc2VsZWN0ZWREYXRlLmdldFNlY29uZHMoKTtcbiAgICAgICAgY29uc3QgbWluU2Vjb25kcyA9IChob3VycyA9PT0gbWluSG91cnMgJiYgbWludXRlcyA9PT0gbWluTWludXRlcykgPyB0aGlzLm1pbkRyb3Bkb3duVmFsdWUuZ2V0U2Vjb25kcygpIDogMDtcbiAgICAgICAgY29uc3QgbWF4U2Vjb25kcyA9IChob3VycyA9PT0gbWF4SG91cnMgJiYgbWludXRlcyA9PT0gbWF4TWludXRlcykgPyB0aGlzLm1heERyb3Bkb3duVmFsdWUuZ2V0U2Vjb25kcygpIDpcbiAgICAgICAgICAgIDYwICUgdGhpcy5pdGVtc0RlbHRhLnNlY29uZHMgPiAwID8gNjAgLSAoNjAgJSB0aGlzLml0ZW1zRGVsdGEuc2Vjb25kcykgOlxuICAgICAgICAgICAgICAgIDYwIC0gdGhpcy5pdGVtc0RlbHRhLnNlY29uZHM7XG5cbiAgICAgICAgaWYgKChkZWx0YSA8IDAgJiYgc2Vjb25kcyA9PT0gbWluU2Vjb25kcykgfHwgKGRlbHRhID4gMCAmJiBzZWNvbmRzID09PSBtYXhTZWNvbmRzKSkge1xuICAgICAgICAgICAgc2Vjb25kcyA9IHRoaXMuc3Bpbkxvb3AgJiYgc2Vjb25kcyA9PT0gbWluU2Vjb25kcyA/IG1heFNlY29uZHMgOiB0aGlzLnNwaW5Mb29wICYmIHNlY29uZHMgPT09IG1heFNlY29uZHMgPyBtaW5TZWNvbmRzIDogc2Vjb25kcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlY29uZHMgPSBzZWNvbmRzICsgZGVsdGEgKiB0aGlzLml0ZW1zRGVsdGEuc2Vjb25kcztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZS5zZXRTZWNvbmRzKHNlY29uZHMpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSB0aGlzLnZhbGlkYXRlRHJvcGRvd25WYWx1ZSh0aGlzLl9zZWxlY3RlZERhdGUpO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLl9zZWxlY3RlZERhdGUpO1xuICAgICAgICB0aGlzLnVwZGF0ZUVkaXRvclZhbHVlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG5leHRBbVBtKGRlbHRhPzogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGFtcG0gPSB0aGlzLmdldFBhcnRWYWx1ZSh0aGlzLl9zZWxlY3RlZERhdGUsICdhbXBtJyk7XG4gICAgICAgIGlmICghZGVsdGEgfHwgKGFtcG0gPT09ICdBTScgJiYgZGVsdGEgPiAwKSB8fCAoYW1wbSA9PT0gJ1BNJyAmJiBkZWx0YSA8IDApKSB7XG4gICAgICAgICAgICBsZXQgaG91cnMgPSB0aGlzLl9zZWxlY3RlZERhdGUuZ2V0SG91cnMoKTtcbiAgICAgICAgICAgIGNvbnN0IHNpZ24gPSBob3VycyA8IDEyID8gMSA6IC0xO1xuICAgICAgICAgICAgaG91cnMgPSBob3VycyArIHNpZ24gKiAxMjtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZS5zZXRIb3Vycyhob3Vycyk7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSB0aGlzLnZhbGlkYXRlRHJvcGRvd25WYWx1ZSh0aGlzLl9zZWxlY3RlZERhdGUsIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy5fc2VsZWN0ZWREYXRlKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRWRpdG9yVmFsdWUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBzZXRTZWxlY3RlZFZhbHVlKHZhbHVlOiBEYXRlKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZSA9IHZhbHVlID8gbmV3IERhdGUodmFsdWUpIDogbnVsbDtcbiAgICAgICAgaWYgKCFEYXRlVGltZVV0aWwuaXNWYWxpZERhdGUodGhpcy5fc2VsZWN0ZWREYXRlKSkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy5taW5Ecm9wZG93blZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5taW5WYWx1ZSAmJiBEYXRlVGltZVV0aWwubGVzc1RoYW5NaW5WYWx1ZSh0aGlzLl9zZWxlY3RlZERhdGUsIHRoaXMubWluRHJvcGRvd25WYWx1ZSwgdHJ1ZSwgZmFsc2UpKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLm1pbkRyb3Bkb3duVmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1heFZhbHVlICYmIERhdGVUaW1lVXRpbC5ncmVhdGVyVGhhbk1heFZhbHVlKHRoaXMuX3NlbGVjdGVkRGF0ZSwgdGhpcy5tYXhEcm9wZG93blZhbHVlLCB0cnVlLCBmYWxzZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHRoaXMubWF4RHJvcGRvd25WYWx1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWREYXRlLmdldEhvdXJzKCkgJSB0aGlzLml0ZW1zRGVsdGEuaG91cnMgPiAwKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZERhdGUuc2V0SG91cnMoXG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWREYXRlLmdldEhvdXJzKCkgKyB0aGlzLml0ZW1zRGVsdGEuaG91cnMgLSB0aGlzLl9zZWxlY3RlZERhdGUuZ2V0SG91cnMoKSAlIHRoaXMuaXRlbXNEZWx0YS5ob3VycyxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWREYXRlLmdldE1pbnV0ZXMoKSAlIHRoaXMuaXRlbXNEZWx0YS5taW51dGVzID4gMCkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWREYXRlLnNldEhvdXJzKFxuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZS5nZXRIb3VycygpLFxuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZS5nZXRNaW51dGVzKCkgKyB0aGlzLml0ZW1zRGVsdGEubWludXRlcyAtIHRoaXMuX3NlbGVjdGVkRGF0ZS5nZXRNaW51dGVzKCkgJSB0aGlzLml0ZW1zRGVsdGEubWludXRlcyxcbiAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkRGF0ZS5nZXRTZWNvbmRzKCkgJSB0aGlzLml0ZW1zRGVsdGEuc2Vjb25kcyA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZS5zZXRTZWNvbmRzKFxuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRGF0ZS5nZXRTZWNvbmRzKCkgKyB0aGlzLml0ZW1zRGVsdGEuc2Vjb25kcyAtIHRoaXMuX3NlbGVjdGVkRGF0ZS5nZXRTZWNvbmRzKCkgJSB0aGlzLml0ZW1zRGVsdGEuc2Vjb25kc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblN0YXR1c0NoYW5nZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLl9uZ0NvbnRyb2wgJiYgIXRoaXMuX25nQ29udHJvbC5kaXNhYmxlZCAmJiB0aGlzLmlzVG91Y2hlZE9yRGlydHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmhhc1ZhbGlkYXRvcnMgJiYgdGhpcy5faW5wdXRHcm91cC5pc0ZvY3VzZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnZhbGlkID0gdGhpcy5fbmdDb250cm9sLnZhbGlkID8gSWd4SW5wdXRTdGF0ZS5WQUxJRCA6IElneElucHV0U3RhdGUuSU5WQUxJRDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dERpcmVjdGl2ZS52YWxpZCA9IHRoaXMuX25nQ29udHJvbC52YWxpZCA/IElneElucHV0U3RhdGUuSU5JVElBTCA6IElneElucHV0U3RhdGUuSU5WQUxJRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEIuUC4gMTggTWF5IDIwMjE6IElneERhdGVQaWNrZXIgZG9lcyBub3QgcmVzZXQgaXRzIHN0YXRlIHVwb24gcmVzZXRGb3JtICM5NTI2XG4gICAgICAgICAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnZhbGlkID0gSWd4SW5wdXRTdGF0ZS5JTklUSUFMO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2lucHV0R3JvdXAgJiYgdGhpcy5faW5wdXRHcm91cC5pc1JlcXVpcmVkICE9PSB0aGlzLnJlcXVpcmVkKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnB1dEdyb3VwLmlzUmVxdWlyZWQgPSB0aGlzLnJlcXVpcmVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXNUb3VjaGVkT3JEaXJ0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLl9uZ0NvbnRyb2wuY29udHJvbC50b3VjaGVkIHx8IHRoaXMuX25nQ29udHJvbC5jb250cm9sLmRpcnR5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBoYXNWYWxpZGF0b3JzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKCEhdGhpcy5fbmdDb250cm9sLmNvbnRyb2wudmFsaWRhdG9yIHx8ICEhdGhpcy5fbmdDb250cm9sLmNvbnRyb2wuYXN5bmNWYWxpZGF0b3IpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TWluTWF4RHJvcGRvd25WYWx1ZSh0eXBlOiBzdHJpbmcsIHRpbWU6IERhdGUpOiBEYXRlIHtcbiAgICAgICAgbGV0IGRlbHRhOiBudW1iZXI7XG5cbiAgICAgICAgY29uc3Qgc2lnbiA9IHR5cGUgPT09ICdtaW4nID8gMSA6IC0xO1xuXG4gICAgICAgIGNvbnN0IGhvdXJzID0gdGltZS5nZXRIb3VycygpO1xuICAgICAgICBsZXQgbWludXRlcyA9IHRpbWUuZ2V0TWludXRlcygpO1xuICAgICAgICBsZXQgc2Vjb25kcyA9IHRpbWUuZ2V0U2Vjb25kcygpO1xuXG4gICAgICAgIGlmICh0aGlzLnNob3dIb3Vyc0xpc3QgJiYgaG91cnMgJSB0aGlzLml0ZW1zRGVsdGEuaG91cnMgPiAwKSB7XG4gICAgICAgICAgICBkZWx0YSA9IHR5cGUgPT09ICdtaW4nID8gdGhpcy5pdGVtc0RlbHRhLmhvdXJzIC0gaG91cnMgJSB0aGlzLml0ZW1zRGVsdGEuaG91cnNcbiAgICAgICAgICAgICAgICA6IGhvdXJzICUgdGhpcy5pdGVtc0RlbHRhLmhvdXJzO1xuICAgICAgICAgICAgbWludXRlcyA9IHR5cGUgPT09ICdtaW4nID8gMFxuICAgICAgICAgICAgICAgIDogNjAgJSB0aGlzLml0ZW1zRGVsdGEubWludXRlcyA+IDAgPyA2MCAtIDYwICUgdGhpcy5pdGVtc0RlbHRhLm1pbnV0ZXNcbiAgICAgICAgICAgICAgICAgICAgOiA2MCAtIHRoaXMuaXRlbXNEZWx0YS5taW51dGVzO1xuICAgICAgICAgICAgc2Vjb25kcyA9IHR5cGUgPT09ICdtaW4nID8gMFxuICAgICAgICAgICAgICAgIDogNjAgJSB0aGlzLml0ZW1zRGVsdGEuc2Vjb25kcyA+IDAgPyA2MCAtIDYwICUgdGhpcy5pdGVtc0RlbHRhLnNlY29uZHNcbiAgICAgICAgICAgICAgICAgICAgOiA2MCAtIHRoaXMuaXRlbXNEZWx0YS5zZWNvbmRzO1xuICAgICAgICAgICAgdGltZS5zZXRIb3Vycyhob3VycyArIHNpZ24gKiBkZWx0YSwgbWludXRlcywgc2Vjb25kcyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zaG93TWludXRlc0xpc3QgJiYgbWludXRlcyAlIHRoaXMuaXRlbXNEZWx0YS5taW51dGVzID4gMCkge1xuICAgICAgICAgICAgZGVsdGEgPSB0eXBlID09PSAnbWluJyA/IHRoaXMuaXRlbXNEZWx0YS5taW51dGVzIC0gbWludXRlcyAlIHRoaXMuaXRlbXNEZWx0YS5taW51dGVzXG4gICAgICAgICAgICAgICAgOiBtaW51dGVzICUgdGhpcy5pdGVtc0RlbHRhLm1pbnV0ZXM7XG4gICAgICAgICAgICBzZWNvbmRzID0gdHlwZSA9PT0gJ21pbicgPyAwXG4gICAgICAgICAgICAgICAgOiA2MCAlIHRoaXMuaXRlbXNEZWx0YS5zZWNvbmRzID4gMCA/IDYwIC0gNjAgJSB0aGlzLml0ZW1zRGVsdGEuc2Vjb25kc1xuICAgICAgICAgICAgICAgICAgICA6IDYwIC0gdGhpcy5pdGVtc0RlbHRhLnNlY29uZHM7XG4gICAgICAgICAgICB0aW1lLnNldEhvdXJzKGhvdXJzLCBtaW51dGVzICsgc2lnbiAqIGRlbHRhLCBzZWNvbmRzKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3dTZWNvbmRzTGlzdCAmJiBzZWNvbmRzICUgdGhpcy5pdGVtc0RlbHRhLnNlY29uZHMgPiAwKSB7XG4gICAgICAgICAgICBkZWx0YSA9IHR5cGUgPT09ICdtaW4nID8gdGhpcy5pdGVtc0RlbHRhLnNlY29uZHMgLSBzZWNvbmRzICUgdGhpcy5pdGVtc0RlbHRhLnNlY29uZHNcbiAgICAgICAgICAgICAgICA6IHNlY29uZHMgJSB0aGlzLml0ZW1zRGVsdGEuc2Vjb25kcztcbiAgICAgICAgICAgIHRpbWUuc2V0SG91cnMoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMgKyBzaWduICogZGVsdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRpbWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplQ29udGFpbmVyKCkge1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaG91ckxpc3QpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhvdXJMaXN0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5taW51dGVMaXN0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5taW51dGVMaXN0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWNvbmRzTGlzdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2Vjb25kc0xpc3QubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHZhbGlkYXRlRHJvcGRvd25WYWx1ZShkYXRlOiBEYXRlLCBpc0FtUG0gPSBmYWxzZSk6IERhdGUge1xuICAgICAgICBpZiAoZGF0ZSA+IHRoaXMubWF4RHJvcGRvd25WYWx1ZSkge1xuICAgICAgICAgICAgaWYgKGlzQW1QbSAmJiBkYXRlLmdldEhvdXJzKCkgIT09IHRoaXMubWF4RHJvcGRvd25WYWx1ZS5nZXRIb3VycygpKSB7XG4gICAgICAgICAgICAgICAgZGF0ZS5zZXRIb3VycygxMik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZSh0aGlzLm1heERyb3Bkb3duVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRhdGUgPCB0aGlzLm1pbkRyb3Bkb3duVmFsdWUpIHtcbiAgICAgICAgICAgIGRhdGUgPSBuZXcgRGF0ZSh0aGlzLm1pbkRyb3Bkb3duVmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbWl0VmFsdWVDaGFuZ2Uob2xkVmFsdWU6IERhdGUgfCBzdHJpbmcsIG5ld1ZhbHVlOiBEYXRlIHwgc3RyaW5nKSB7XG4gICAgICAgIGlmICghaXNFcXVhbChvbGRWYWx1ZSwgbmV3VmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbWl0VmFsaWRhdGlvbkZhaWxlZEV2ZW50KHByZXZpb3VzVmFsdWU6IERhdGUgfCBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgYXJnczogSWd4VGltZVBpY2tlclZhbGlkYXRpb25GYWlsZWRFdmVudEFyZ3MgPSB7XG4gICAgICAgICAgICBvd25lcjogdGhpcyxcbiAgICAgICAgICAgIHByZXZpb3VzVmFsdWUsXG4gICAgICAgICAgICBjdXJyZW50VmFsdWU6IHRoaXMudmFsdWVcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uRmFpbGVkLmVtaXQoYXJncyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVWYWxpZGl0eU9uQmx1cigpIHtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2soKTtcbiAgICAgICAgaWYgKHRoaXMuX25nQ29udHJvbCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9uZ0NvbnRyb2wudmFsaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnZhbGlkID0gSWd4SW5wdXRTdGF0ZS5JTlZBTElEO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnZhbGlkID0gSWd4SW5wdXRTdGF0ZS5JTklUSUFMO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWx1ZUluUmFuZ2UodmFsdWU6IERhdGUsIG1pblZhbHVlOiBEYXRlLCBtYXhWYWx1ZTogRGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAobWluVmFsdWUgJiYgRGF0ZVRpbWVVdGlsLmxlc3NUaGFuTWluVmFsdWUodmFsdWUsIG1pblZhbHVlLCB0cnVlLCBmYWxzZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWF4VmFsdWUgJiYgRGF0ZVRpbWVVdGlsLmdyZWF0ZXJUaGFuTWF4VmFsdWUodmFsdWUsIG1heFZhbHVlLCB0cnVlLCBmYWxzZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFyc2VUb0RhdGUodmFsdWU6IERhdGUgfCBzdHJpbmcpOiBEYXRlIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiBEYXRlVGltZVV0aWwuaXNWYWxpZERhdGUodmFsdWUpID8gdmFsdWUgOiBEYXRlVGltZVV0aWwucGFyc2VJc29EYXRlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRvVHdlbnR5Rm91ckhvdXJGb3JtYXQoaG91cjogbnVtYmVyLCBhbXBtOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBpZiAoYW1wbSA9PT0gJ1BNJyAmJiBob3VyIDwgMTIpIHtcbiAgICAgICAgICAgIGhvdXIgKz0gMTI7XG4gICAgICAgIH0gZWxzZSBpZiAoYW1wbSA9PT0gJ0FNJyAmJiBob3VyID09PSAxMikge1xuICAgICAgICAgICAgaG91ciA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaG91cjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVZhbHVlKG5ld1ZhbHVlOiBEYXRlIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBuZXdWYWx1ZSA/IG5ldyBEYXRlKG5ld1ZhbHVlKSA6IG5ld1ZhbHVlO1xuICAgICAgICB9IGVsc2UgaWYgKGlzRGF0ZSh0aGlzLnZhbHVlKSkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgZGF0ZS5zZXRIb3VycyhuZXdWYWx1ZT8uZ2V0SG91cnMoKSB8fCAwLCBuZXdWYWx1ZT8uZ2V0TWludXRlcygpIHx8IDAsIG5ld1ZhbHVlPy5nZXRTZWNvbmRzKCkgfHwgMCk7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gZGF0ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBuZXdWYWx1ZSA/IHRoaXMudG9JU09TdHJpbmcobmV3VmFsdWUpIDogbmV3VmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUVkaXRvclZhbHVlKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkYXRlID0gdGhpcy5kYXRlVGltZUVkaXRvci52YWx1ZSA/IG5ldyBEYXRlKHRoaXMuZGF0ZVRpbWVFZGl0b3IudmFsdWUpIDogbmV3IERhdGUoKTtcbiAgICAgICAgZGF0ZS5zZXRIb3Vycyh0aGlzLl9zZWxlY3RlZERhdGUuZ2V0SG91cnMoKSwgdGhpcy5fc2VsZWN0ZWREYXRlLmdldE1pbnV0ZXMoKSwgdGhpcy5fc2VsZWN0ZWREYXRlLmdldFNlY29uZHMoKSk7XG4gICAgICAgIHRoaXMuZGF0ZVRpbWVFZGl0b3IudmFsdWUgPSBkYXRlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3Vic2NyaWJlVG9EYXRlRWRpdG9yRXZlbnRzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGVUaW1lRWRpdG9yLnZhbHVlQ2hhbmdlLnBpcGUoXG4gICAgICAgICAgICAvLyBpbnRlcm5hbCBkYXRlIGVkaXRvciBkaXJlY3RpdmUgaXMgb25seSB1c2VkIHcvIERhdGUgb2JqZWN0IHZhbHVlczpcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoZGF0ZTogRGF0ZSB8IG51bGwpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKGRhdGUpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5kYXRlVGltZUVkaXRvci52YWxpZGF0aW9uRmFpbGVkLnBpcGUoXG4gICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0VmFsaWRhdGlvbkZhaWxlZEV2ZW50KGV2ZW50Lm9sZFZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3Vic2NyaWJlVG9Ub2dnbGVEaXJlY3RpdmVFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRvZ2dsZVJlZikge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lucHV0R3JvdXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVJlZi5lbGVtZW50LnN0eWxlLndpZHRoID0gdGhpcy5faW5wdXRHcm91cC5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggKyAncHgnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVJlZi5vcGVuaW5nLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXJnczogSUJhc2VDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncyA9IHsgb3duZXI6IHRoaXMsIGV2ZW50OiBlLmV2ZW50LCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuaW5nLmVtaXQoYXJncyk7XG4gICAgICAgICAgICAgICAgZS5jYW5jZWwgPSBhcmdzLmNhbmNlbDtcbiAgICAgICAgICAgICAgICBpZiAoYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVDb250YWluZXIoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVJlZi5vcGVuZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlbmVkLmVtaXQoeyBvd25lcjogdGhpcyB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVJlZi5jbG9zZWQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoeyBvd25lcjogdGhpcyB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVJlZi5jbG9zaW5nLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXJnczogSUJhc2VDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncyA9IHsgb3duZXI6IHRoaXMsIGV2ZW50OiBlLmV2ZW50LCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zaW5nLmVtaXQoYXJncyk7XG4gICAgICAgICAgICAgICAgZS5jYW5jZWwgPSBhcmdzLmNhbmNlbDtcbiAgICAgICAgICAgICAgICBpZiAoYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucGFyc2VUb0RhdGUodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKCh0aGlzLmRhdGVUaW1lRWRpdG9yLnZhbHVlIGFzIERhdGUpPy5nZXRUaW1lKCkgIT09IHZhbHVlPy5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLl9zZWxlY3RlZERhdGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBEbyBub3QgZm9jdXMgdGhlIGlucHV0IGlmIGNsaWNraW5nIG91dHNpZGUgaW4gZHJvcGRvd24gbW9kZVxuICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5nZXRFZGl0RWxlbWVudCgpO1xuICAgICAgICAgICAgICAgIGlmIChpbnB1dCAmJiAhKGUuZXZlbnQgJiYgdGhpcy5pc0Ryb3Bkb3duKSkge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsaWRpdHlPbkJsdXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxpZ3gtaW5wdXQtZ3JvdXAgW2Rpc3BsYXlEZW5zaXR5XT1cImRpc3BsYXlEZW5zaXR5XCIgW3R5cGVdPVwidHlwZVwiPlxuICAgIDxpbnB1dCBbZGlzcGxheVZhbHVlUGlwZV09XCJmb3JtYXR0ZXIgPyBkaXNwbGF5VmFsdWUgOiBudWxsXCIgaWd4SW5wdXQgW2lneERhdGVUaW1lRWRpdG9yXT1cImlucHV0Rm9ybWF0XCJcbiAgICAgICAgdHlwZT1cInRleHRcIiBbcmVhZG9ubHldPVwiIWlzRHJvcGRvd24gfHwgcmVhZE9ubHlcIiBbbWluVmFsdWVdPVwibWluVmFsdWVcIiBbbWF4VmFsdWVdPVwibWF4VmFsdWVcIlxuICAgICAgICBbbG9jYWxlXT1cImxvY2FsZVwiIFtzcGluRGVsdGFdPVwiaXRlbXNEZWx0YVwiIFtzcGluTG9vcF09XCJzcGluTG9vcFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtkaXNwbGF5Rm9ybWF0XT1cImRpc3BsYXlGb3JtYXRcIlxuICAgICAgICBbaWd4VGV4dFNlbGVjdGlvbl09XCJpc0Ryb3Bkb3duICYmICFyZWFkT25seVwiIHJvbGU9XCJjb21ib2JveFwiIGFyaWEtaGFzcG9wdXA9XCJkaWFsb2dcIlxuICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIiF0b2dnbGVEaXJlY3RpdmUuY29sbGFwc2VkXCIgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImxhYmVsPy5pZFwiXG4gICAgICAgIChjbGljayk9XCIhaXNEcm9wZG93biAmJiB0b2dnbGUoKVwiLz5cblxuICAgIDxpZ3gtcHJlZml4ICpuZ0lmPVwiIXRvZ2dsZUNvbXBvbmVudHMubGVuZ3RoXCIgKGNsaWNrKT1cInRvZ2dsZSgpXCI+XG4gICAgICAgIDxpZ3gtaWNvbiBbdGl0bGVdPVwidmFsdWUgPyByZXNvdXJjZVN0cmluZ3MuaWd4X3RpbWVfcGlja2VyX2NoYW5nZV90aW1lIDogcmVzb3VyY2VTdHJpbmdzLmlneF90aW1lX3BpY2tlcl9jaG9vc2VfdGltZVwiPmFjY2Vzc190aW1lPC9pZ3gtaWNvbj5cbiAgICA8L2lneC1wcmVmaXg+XG5cbiAgICA8bmctY29udGFpbmVyIG5nUHJvamVjdEFzPVwiW2lneExhYmVsXVwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaWd4TGFiZWxdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJpZ3gtcHJlZml4XCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlneC1wcmVmaXgsW2lneFByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8aWd4LXN1ZmZpeCAqbmdJZj1cInNob3dDbGVhckJ1dHRvblwiIChjbGljayk9XCJjbGVhcigpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgPGlneC1pY29uPmNsZWFyPC9pZ3gtaWNvbj5cbiAgICA8L2lneC1zdWZmaXg+XG5cbiAgICA8bmctY29udGFpbmVyIG5nUHJvamVjdEFzPVwiaWd4LXN1ZmZpeFwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJpZ3gtc3VmZml4LFtpZ3hTdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJpZ3gtaGludFwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJpZ3gtaGludCxbaWd4SGludF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2lneC1pbnB1dC1ncm91cD5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0VGltZVBpY2tlckFjdGlvbnM+XG4gICAgPGRpdiAqbmdJZj1cImNhbmNlbEJ1dHRvbkxhYmVsIHx8IG9rQnV0dG9uTGFiZWxcIiBjbGFzcz1cImlneC10aW1lLXBpY2tlcl9fYnV0dG9uc1wiPlxuICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY2FuY2VsQnV0dG9uTGFiZWxcIiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uPVwiZmxhdFwiIChjbGljayk9XCJjYW5jZWxCdXR0b25DbGljaygpXCI+XG4gICAgICAgICAgICB7e2NhbmNlbEJ1dHRvbkxhYmVsfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJva0J1dHRvbkxhYmVsXCIgdHlwZT1cImJ1dHRvblwiIGlneEJ1dHRvbj1cImZsYXRcIiAoY2xpY2spPVwib2tCdXR0b25DbGljaygpXCI+XG4gICAgICAgICAgICB7e29rQnV0dG9uTGFiZWx9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxkaXYgI3RvZ2dsZURpcmVjdGl2ZT1cInRvZ2dsZVwiIGlneFRvZ2dsZSByb2xlPVwiZGlhbG9nXCIgY2xhc3M9XCJpZ3gtdGltZS1waWNrZXJcIlxuICAgIFtuZ0NsYXNzXT1cInsnaWd4LXRpbWUtcGlja2VyLS1kcm9wZG93bic6IGlzRHJvcGRvd24sICdpZ3gtdGltZS1waWNrZXItLXZlcnRpY2FsJzogaXNWZXJ0aWNhbCAmJiAhaXNEcm9wZG93bn1cIj5cbiAgICA8ZGl2IGNsYXNzPVwiaWd4LXRpbWUtcGlja2VyX19tYWluXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhaXNEcm9wZG93blwiIGNsYXNzPVwiaWd4LXRpbWUtcGlja2VyX19oZWFkZXJcIj5cbiAgICAgICAgICAgIDxoMiBjbGFzcz1cImlneC10aW1lLXBpY2tlcl9faGVhZGVyLWhvdXJcIj5cbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBzZWxlY3RlZERhdGUgfCB0aW1lRm9ybWF0UGlwZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LXRpbWUtcGlja2VyX19ib2R5XCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0hvdXJzTGlzdFwiICNob3VyTGlzdCBbaWd4SXRlbUxpc3RdPVwiJ2hvdXJMaXN0J1wiPlxuICAgICAgICAgICAgPHNwYW4gW2lneFRpbWVJdGVtXT1cImhvdXJcIiAjdGltZUl0ZW09XCJ0aW1lSXRlbVwiIGFyaWEtbGFiZWw9XCJob3VyXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLnJvbGVdPVwidGltZUl0ZW0uaXNTZWxlY3RlZFRpbWUgPyAnc3BpbmJ1dHRvbicgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtdmFsdWVub3ddPVwidGltZUl0ZW0uaXNTZWxlY3RlZFRpbWUgPyB0aW1lSXRlbS5ob3VyVmFsdWUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtdmFsdWVtaW5dPVwidGltZUl0ZW0uaXNTZWxlY3RlZFRpbWUgPyB0aW1lSXRlbS5taW5WYWx1ZSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1heF09XCJ0aW1lSXRlbS5pc1NlbGVjdGVkVGltZSA/IHRpbWVJdGVtLm1heFZhbHVlIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaG91ciBvZiBob3VySXRlbXMgfCB0aW1lSXRlbVBpcGU6J2hvdXInOnNlbGVjdGVkRGF0ZTptaW5Ecm9wZG93blZhbHVlOm1heERyb3Bkb3duVmFsdWVcIj57eyBob3VyIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd01pbnV0ZXNMaXN0XCIgI21pbnV0ZUxpc3QgW2lneEl0ZW1MaXN0XT1cIidtaW51dGVMaXN0J1wiPlxuICAgICAgICAgICAgPHNwYW4gW2lneFRpbWVJdGVtXT1cIm1pbnV0ZVwiICN0aW1lSXRlbT1cInRpbWVJdGVtXCIgYXJpYS1sYWJlbD1cIm1pbnV0ZXNcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIucm9sZV09XCJ0aW1lSXRlbS5pc1NlbGVjdGVkVGltZSA/ICdzcGluYnV0dG9uJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW5vd109XCJ0aW1lSXRlbS5pc1NlbGVjdGVkVGltZSA/IG1pbnV0ZSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJ0aW1lSXRlbS5pc1NlbGVjdGVkVGltZSA/IHRpbWVJdGVtLm1pblZhbHVlIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cInRpbWVJdGVtLmlzU2VsZWN0ZWRUaW1lID8gdGltZUl0ZW0ubWF4VmFsdWUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBtaW51dGUgb2YgbWludXRlSXRlbXMgfCB0aW1lSXRlbVBpcGU6J21pbnV0ZXMnOnNlbGVjdGVkRGF0ZTptaW5Ecm9wZG93blZhbHVlOm1heERyb3Bkb3duVmFsdWVcIj57eyBtaW51dGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93U2Vjb25kc0xpc3RcIiAjc2Vjb25kc0xpc3QgW2lneEl0ZW1MaXN0XT1cIidzZWNvbmRzTGlzdCdcIj5cbiAgICAgICAgICAgIDxzcGFuIFtpZ3hUaW1lSXRlbV09XCJzZWNvbmRzXCIgI3RpbWVJdGVtPVwidGltZUl0ZW1cIiBhcmlhLWxhYmVsPVwic2Vjb25kc1wiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cInRpbWVJdGVtLmlzU2VsZWN0ZWRUaW1lID8gJ3NwaW5idXR0b24nIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cInRpbWVJdGVtLmlzU2VsZWN0ZWRUaW1lID8gc2Vjb25kcyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJ0aW1lSXRlbS5pc1NlbGVjdGVkVGltZSA/IHRpbWVJdGVtLm1pblZhbHVlIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cInRpbWVJdGVtLmlzU2VsZWN0ZWRUaW1lID8gdGltZUl0ZW0ubWF4VmFsdWUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzZWNvbmRzIG9mIHNlY29uZHNJdGVtcyB8IHRpbWVJdGVtUGlwZTonc2Vjb25kcyc6c2VsZWN0ZWREYXRlOm1pbkRyb3Bkb3duVmFsdWU6bWF4RHJvcGRvd25WYWx1ZVwiPnt7IHNlY29uZHMgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93QW1QbUxpc3RcIiAjYW1wbUxpc3QgW2lneEl0ZW1MaXN0XT1cIidhbXBtTGlzdCdcIj5cbiAgICAgICAgICAgIDxzcGFuIFtpZ3hUaW1lSXRlbV09XCJhbXBtXCIgI3RpbWVJdGVtPVwidGltZUl0ZW1cIiBhcmlhLWxhYmVsPVwiYW1wbVwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5yb2xlXT1cInRpbWVJdGVtLmlzU2VsZWN0ZWRUaW1lID8gJ3NwaW5idXR0b24nIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbm93XT1cInRpbWVJdGVtLmlzU2VsZWN0ZWRUaW1lID8gYW1wbSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS12YWx1ZW1pbl09XCJ0aW1lSXRlbS5pc1NlbGVjdGVkVGltZSA/IHRpbWVJdGVtLm1pblZhbHVlIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXZhbHVlbWF4XT1cInRpbWVJdGVtLmlzU2VsZWN0ZWRUaW1lID8gdGltZUl0ZW0ubWF4VmFsdWUgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhbXBtIG9mIGFtcG1JdGVtcyB8IHRpbWVJdGVtUGlwZTonYW1wbSc6c2VsZWN0ZWREYXRlOm1pbkRyb3Bkb3duVmFsdWU6bWF4RHJvcGRvd25WYWx1ZVwiPnt7IGFtcG0gfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGlneC1kaXZpZGVyPjwvaWd4LWRpdmlkZXI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aW1lUGlja2VyQWN0aW9uc0RpcmVjdGl2ZSA/IHRpbWVQaWNrZXJBY3Rpb25zRGlyZWN0aXZlLnRlbXBsYXRlIDogZGVmYXVsdFRpbWVQaWNrZXJBY3Rpb25zXCI+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|