@c8y/ngx-components 1021.75.8 → 1021.77.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/branding/shared/supports-branding.service.d.ts.map +1 -1
- package/core/common/ApplicationOptions.d.ts +2 -2
- package/core/dashboard/widgets-dashboard.component.d.ts +4 -2
- package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
- package/core/login/login.component.d.ts.map +1 -1
- package/core/login/login.service.d.ts +1 -0
- package/core/login/login.service.d.ts.map +1 -1
- package/core/navigator/navigator-bottom/navigator-bottom.service.d.ts +3 -1
- package/core/navigator/navigator-bottom/navigator-bottom.service.d.ts.map +1 -1
- package/datapoint-explorer/view/datapoint-explorer.component.d.ts.map +1 -1
- package/echart/charts.component.d.ts.map +1 -1
- package/echart/models/datapoints-graph-widget.model.d.ts +10 -0
- package/echart/models/datapoints-graph-widget.model.d.ts.map +1 -1
- package/echart/services/chart-realtime.service.d.ts +2 -5
- package/echart/services/chart-realtime.service.d.ts.map +1 -1
- package/echart/services/echarts-options.service.d.ts +4 -13
- package/echart/services/echarts-options.service.d.ts.map +1 -1
- package/echart/services/y-axis.service.d.ts +1 -1
- package/echart/services/y-axis.service.d.ts.map +1 -1
- package/esm2022/branding/shared/supports-branding.service.mjs +6 -3
- package/esm2022/core/beta-feature/beta-preview-button.component.mjs +3 -3
- package/esm2022/core/beta-feature/beta-preview.component.mjs +3 -3
- package/esm2022/core/common/ApplicationOptions.mjs +1 -1
- package/esm2022/core/dashboard/widgets-dashboard.component.mjs +9 -5
- package/esm2022/core/login/login.component.mjs +2 -1
- package/esm2022/core/login/login.service.mjs +5 -1
- package/esm2022/core/navigator/navigator-bottom/navigator-bottom.service.mjs +13 -6
- package/esm2022/datapoint-explorer/view/datapoint-explorer.component.mjs +4 -3
- package/esm2022/device-map/device-map.component.mjs +2 -2
- package/esm2022/echart/charts.component.mjs +8 -2
- package/esm2022/echart/models/datapoints-graph-widget.model.mjs +1 -1
- package/esm2022/echart/services/chart-realtime.service.mjs +1 -1
- package/esm2022/echart/services/echarts-options.service.mjs +23 -15
- package/esm2022/echart/services/y-axis.service.mjs +32 -1
- package/esm2022/map/cluster-map.component.mjs +6 -3
- package/esm2022/map/map-status.component.mjs +23 -5
- package/esm2022/map/map.model.mjs +5 -2
- package/esm2022/map/map.service.mjs +17 -1
- package/esm2022/widgets/implementations/datapoints-graph/datapoints-graph-config/datapoints-graph-widget-config.component.mjs +4 -3
- package/esm2022/widgets/implementations/map/map-widget-config.component.mjs +25 -6
- package/esm2022/widgets/implementations/map/map-widget.component.mjs +40 -11
- package/fesm2022/c8y-ngx-components-branding-shared.mjs +5 -2
- package/fesm2022/c8y-ngx-components-branding-shared.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +3 -2
- package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-device-map.mjs +1 -1
- package/fesm2022/c8y-ngx-components-device-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-echart-models.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-echart.mjs +60 -15
- package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-map.mjs +47 -7
- package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +3 -2
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +67 -19
- package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +26 -12
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/locales/locales.pot +19 -7
- package/map/cluster-map.component.d.ts +2 -1
- package/map/cluster-map.component.d.ts.map +1 -1
- package/map/map-status.component.d.ts +7 -2
- package/map/map-status.component.d.ts.map +1 -1
- package/map/map.model.d.ts +1 -0
- package/map/map.model.d.ts.map +1 -1
- package/map/map.service.d.ts +1 -0
- package/map/map.service.d.ts.map +1 -1
- package/package.json +1 -1
- package/widgets/implementations/datapoints-graph/datapoints-graph-config/datapoints-graph-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/map/map-widget-config.component.d.ts +1 -0
- package/widgets/implementations/map/map-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/map/map-widget.component.d.ts +10 -4
- package/widgets/implementations/map/map-widget.component.d.ts.map +1 -1
|
@@ -343,7 +343,11 @@ export class ChartsComponent {
|
|
|
343
343
|
if (activeDatapoints && this.config.realtime && this.echartsInstance) {
|
|
344
344
|
this.chartRealtimeService.startRealtime(this.echartsInstance, activeDatapoints, this.getTimeRange(), dp => this.datapointOutOfSync.emit(dp), timeRange => this.timeRangeChangeOnRealtime.emit(timeRange), this.config.alarmsEventsConfigs, {
|
|
345
345
|
displayMarkedLine: this.config.displayMarkedLine || false,
|
|
346
|
-
displayMarkedPoint: this.config.displayMarkedPoint || false
|
|
346
|
+
displayMarkedPoint: this.config.displayMarkedPoint || false,
|
|
347
|
+
mergeMatchingDatapoints: this.config.mergeMatchingDatapoints || false,
|
|
348
|
+
forceMergeDatapoints: this.config.forceMergeDatapoints || false,
|
|
349
|
+
showLabelAndUnit: this.config.showLabelAndUnit || false,
|
|
350
|
+
showSlider: this.config.showSlider || false
|
|
347
351
|
});
|
|
348
352
|
}
|
|
349
353
|
}
|
|
@@ -384,6 +388,7 @@ export class ChartsComponent {
|
|
|
384
388
|
displayMarkedLine: this.config.displayMarkedLine || false,
|
|
385
389
|
displayMarkedPoint: this.config.displayMarkedPoint || false,
|
|
386
390
|
mergeMatchingDatapoints: this.config.mergeMatchingDatapoints || false,
|
|
391
|
+
forceMergeDatapoints: this.config.forceMergeDatapoints || false,
|
|
387
392
|
showLabelAndUnit: this.config.showLabelAndUnit || false,
|
|
388
393
|
showSlider: this.config.showSlider || false
|
|
389
394
|
}, undefined, aggregatedDatapoints);
|
|
@@ -404,6 +409,7 @@ export class ChartsComponent {
|
|
|
404
409
|
displayMarkedLine: this.config.displayMarkedLine || false,
|
|
405
410
|
displayMarkedPoint: this.config.displayMarkedPoint || false,
|
|
406
411
|
mergeMatchingDatapoints: this.config.mergeMatchingDatapoints || false,
|
|
412
|
+
forceMergeDatapoints: this.config.forceMergeDatapoints || false,
|
|
407
413
|
showLabelAndUnit: this.config.showLabelAndUnit || false,
|
|
408
414
|
showSlider: this.config.showSlider || false
|
|
409
415
|
}, timeRange, aggregatedDatapoints, true);
|
|
@@ -542,4 +548,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
542
548
|
type: ViewChild,
|
|
543
549
|
args: ['chart']
|
|
544
550
|
}] } });
|
|
545
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2VjaGFydC9jaGFydHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZWNoYXJ0L2NoYXJ0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQVl2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2xGLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsVUFBVSxFQUNWLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsK0JBQStCLEVBQy9CLG9CQUFvQixFQUNwQixPQUFPLEVBQ1AsMEJBQTBCLEVBQzFCLGlDQUFpQyxFQUNsQyxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBTXpFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxh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QUFpQjt3QkFDakIscUJBQXFCO3dCQUNyQix3QkFBd0I7d0JBQ3hCLFlBQVk7d0JBQ1osdUJBQXVCO3dCQUN2Qix3QkFBd0I7cUJBQ3pCLGNBQ1csSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osVUFBVTt3QkFDVixnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixvQkFBb0I7d0JBQ3BCLFlBQVk7cUJBQ2I7d0RBU1EsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDSSxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBS0cseUJBQXlCO3NCQUFsQyxNQUFNO2dCQUdHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNhLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgRUNoYXJ0cywgRUNoYXJ0c09wdGlvbiwgU2VyaWVzT3B0aW9uIH0gZnJvbSAnZWNoYXJ0cyc7XG5pbXBvcnQge1xuICBBbGFybURldGFpbHNFeHRlbmRlZCxcbiAgQWxhcm1PckV2ZW50RXh0ZW5kZWQsXG4gIERhdGFwb2ludHNHcmFwaEtQSURldGFpbHMsXG4gIERhdGFwb2ludHNHcmFwaFdpZGdldENvbmZpZyxcbiAgRHBXaXRoVmFsdWVzLFxuICBFdmVudERldGFpbHNFeHRlbmRlZCxcbiAgTWFya0xpbmVEYXRhLFxuICBTZXJpZXNEYXRhcG9pbnRJbmZvXG59IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZm9ya0pvaW4sIGxhc3RWYWx1ZUZyb20sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ3VzdG9tTWVhc3VyZW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jdXN0b20tbWVhc3VyZW1lbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQWxhcm1SZWFsdGltZVNlcnZpY2UsXG4gIENvcmVNb2R1bGUsXG4gIERpc21pc3NBbGVydFN0cmF0ZWd5LFxuICBEeW5hbWljQ29tcG9uZW50QWxlcnQsXG4gIER5bmFtaWNDb21wb25lbnRBbGVydEFnZ3JlZ2F0b3IsXG4gIEV2ZW50UmVhbHRpbWVTZXJ2aWNlLFxuICBnZXR0ZXh0LFxuICBNZWFzdXJlbWVudFJlYWx0aW1lU2VydmljZSxcbiAgV2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgRWNoYXJ0c09wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9lY2hhcnRzLW9wdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBDaGFydFJlYWx0aW1lU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY2hhcnQtcmVhbHRpbWUuc2VydmljZSc7XG5pbXBvcnQgdHlwZSB7XG4gIENhbGxiYWNrRGF0YVBhcmFtcyxcbiAgRUNBY3Rpb25FdmVudCxcbiAgVG9vbHRpcEZvcm1hdHRlckNhbGxiYWNrXG59IGZyb20gJ2VjaGFydHMvdHlwZXMvc3JjL3V0aWwvdHlwZXMnO1xuaW1wb3J0IHsgQ2hhcnRUeXBlc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NoYXJ0LXR5cGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5HWF9FQ0hBUlRTX0NPTkZJRywgTmd4RWNoYXJ0c01vZHVsZSB9IGZyb20gJ25neC1lY2hhcnRzJztcbmltcG9ydCB7IFRvb2x0aXBNb2R1bGUgfSBmcm9tICduZ3gtYm9vdHN0cmFwL3Rvb2x0aXAnO1xuaW1wb3J0IHsgUG9wb3Zlck1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvcG9wb3Zlcic7XG5pbXBvcnQgeyBZQXhpc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3ktYXhpcy5zZXJ2aWNlJztcbmltcG9ydCB7IENoYXJ0QWxlcnRzQ29tcG9uZW50IH0gZnJvbSAnLi9jaGFydC1hbGVydHMvY2hhcnQtYWxlcnRzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBhZ2dyZWdhdGlvblR5cGUsIEFsYXJtU3RhdHVzLCBJQWxhcm0sIElFdmVudCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IENoYXJ0RXZlbnRzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY2hhcnQtZXZlbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhcnRBbGFybXNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jaGFydC1hbGFybXMuc2VydmljZSc7XG5pbXBvcnQgeyBFY2hhcnRzQ3VzdG9tT3B0aW9ucyB9IGZyb20gJy4vbW9kZWxzL2NoYXJ0Lm1vZGVsJztcbmltcG9ydCB7IFRvcExldmVsRm9ybWF0dGVyUGFyYW1zIH0gZnJvbSAnZWNoYXJ0cy90eXBlcy9zcmMvY29tcG9uZW50L3Rvb2x0aXAvVG9vbHRpcE1vZGVsJztcbmltcG9ydCB7XG4gIEFsYXJtU2V2ZXJpdHlUb0ljb25QaXBlLFxuICBBbGFybVNldmVyaXR5VG9MYWJlbFBpcGUsXG4gIEFsYXJtc01vZHVsZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2FsYXJtcyc7XG5pbXBvcnQgeyBJbnRlcnZhbCwgSU5URVJWQUxTIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pbnRlcnZhbC1waWNrZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktY2hhcnRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0cy5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogTkdYX0VDSEFSVFNfQ09ORklHLCB1c2VGYWN0b3J5OiAoKSA9PiAoeyBlY2hhcnRzOiAoKSA9PiBpbXBvcnQoJ2VjaGFydHMnKSB9KSB9LFxuICAgIENoYXJ0UmVhbHRpbWVTZXJ2aWNlLFxuICAgIE1lYXN1cmVtZW50UmVhbHRpbWVTZXJ2aWNlLFxuICAgIEFsYXJtUmVhbHRpbWVTZXJ2aWNlLFxuICAgIEV2ZW50UmVhbHRpbWVTZXJ2aWNlLFxuICAgIENoYXJ0VHlwZXNTZXJ2aWNlLFxuICAgIEVjaGFydHNPcHRpb25zU2VydmljZSxcbiAgICBDdXN0b21NZWFzdXJlbWVudFNlcnZpY2UsXG4gICAgWUF4aXNTZXJ2aWNlLFxuICAgIEFsYXJtU2V2ZXJpdHlUb0ljb25QaXBlLFxuICAgIEFsYXJtU2V2ZXJpdHlUb0xhYmVsUGlwZVxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENvcmVNb2R1bGUsXG4gICAgTmd4RWNoYXJ0c01vZHVsZSxcbiAgICBUb29sdGlwTW9kdWxlLFxuICAgIFBvcG92ZXJNb2R1bGUsXG4gICAgQ2hhcnRBbGVydHNDb21wb25lbnQsXG4gICAgQWxhcm1zTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ2hhcnRzQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGNoYXJ0T3B0aW9uJDogT2JzZXJ2YWJsZTxFQ2hhcnRzT3B0aW9uPjtcbiAgZWNoYXJ0c0luc3RhbmNlITogRUNoYXJ0cztcbiAgc2hvd0xvYWRNb3JlID0gZmFsc2U7XG4gIGFsYXJtczogSUFsYXJtW10gPSBbXTtcbiAgZXZlbnRzOiBJRXZlbnRbXSA9IFtdO1xuICBzbGlkZXJab29tVXNlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBjb25maWchOiBEYXRhcG9pbnRzR3JhcGhXaWRnZXRDb25maWc7XG4gIEBJbnB1dCgpIGFsZXJ0cyE6IER5bmFtaWNDb21wb25lbnRBbGVydEFnZ3JlZ2F0b3I7XG4gIEBPdXRwdXQoKSBjb25maWdDaGFuZ2VPblpvb21PdXQgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBkYXRlRnJvbTogRGF0ZTtcbiAgICBkYXRlVG86IERhdGU7XG4gICAgaW50ZXJ2YWw/OiBJbnRlcnZhbFsnaWQnXTtcbiAgfT4oKTtcbiAgQE91dHB1dCgpIHRpbWVSYW5nZUNoYW5nZU9uUmVhbHRpbWUgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIFBpY2s8RGF0YXBvaW50c0dyYXBoV2lkZ2V0Q29uZmlnLCAnZGF0ZUZyb20nIHwgJ2RhdGVUbyc+XG4gID4oKTtcbiAgQE91dHB1dCgpIGRhdGFwb2ludE91dE9mU3luYyA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YXBvaW50c0dyYXBoS1BJRGV0YWlscz4oKTtcbiAgQE91dHB1dCgpIHVwZGF0ZUFsYXJtc0FuZEV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXI8QWxhcm1PckV2ZW50RXh0ZW5kZWRbXT4oKTtcbiAgQE91dHB1dCgpIGlzTWFya2VkQXJlYUVuYWJsZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBWaWV3Q2hpbGQoJ2NoYXJ0JykgY2hhcnQ6IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgY29uZmlnQ2hhbmdlZFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHZvaWQgfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG1lYXN1cmVtZW50U2VydmljZSA9IGluamVjdChDdXN0b21NZWFzdXJlbWVudFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGVjaGFydHNPcHRpb25zU2VydmljZSA9IGluamVjdChFY2hhcnRzT3B0aW9uc1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNoYXJ0UmVhbHRpbWVTZXJ2aWNlID0gaW5qZWN0KENoYXJ0UmVhbHRpbWVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjaGFydEV2ZW50c1NlcnZpY2UgPSBpbmplY3QoQ2hhcnRFdmVudHNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjaGFydEFsYXJtc1NlcnZpY2UgPSBpbmplY3QoQ2hhcnRBbGFybXNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB3aWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2UgPSBpbmplY3QoV2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBsb2FkZWRUaW1lUmFuZ2U6IHsgZGF0ZUZyb206IHN0cmluZzsgZGF0ZVRvOiBzdHJpbmcgfSB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY2hhcnRPcHRpb24kID0gdGhpcy5jb25maWdDaGFuZ2VkU3ViamVjdC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMubG9hZEFsYXJtc0FuZEV2ZW50cygpKSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmZldGNoU2VyaWVzRm9yRGF0YXBvaW50cyQoKSksXG4gICAgICBzd2l0Y2hNYXAoKGRhdGFwb2ludHNXaXRoVmFsdWVzOiBEcFdpdGhWYWx1ZXNbXSkgPT4ge1xuICAgICAgICBpZiAoZGF0YXBvaW50c1dpdGhWYWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5lY2hhcnRzSW5zdGFuY2U/LmNsZWFyKCk7XG4gICAgICAgICAgdGhpcy5zaG93TG9hZE1vcmUgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gb2YodGhpcy5nZXREZWZhdWx0Q2hhcnRPcHRpb25zKCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9hZGVkVGltZVJhbmdlID0geyAuLi50aGlzLmdldFRpbWVSYW5nZSgpIH07XG4gICAgICAgIHJldHVybiB0aGlzLmdldENoYXJ0T3B0aW9ucyhkYXRhcG9pbnRzV2l0aFZhbHVlcyk7XG4gICAgICB9KSxcbiAgICAgIHRhcCh2ID0+IHtcbiAgICAgICAgaWYgKHZbJ2VtcHR5J10pIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGFydFJlYWx0aW1lU2VydmljZS5zdG9wUmVhbHRpbWUoKTtcbiAgICAgICAgdGhpcy5zdGFydFJlYWx0aW1lSWZQb3NzaWJsZSgpO1xuXG4gICAgICAgIGlmICh0aGlzLmVjaGFydHNJbnN0YW5jZSkge1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqICogU2V0IHRoZSBjaGFydCBvcHRpb25zXG4gICAgICAgICAgICogRmlyc3QgcGFyYW1ldGVyIGlzIHRoZSBvcHRpb25zIHRvIHNldFxuICAgICAgICAgICAqIFNlY29uZCBwYXJhbWV0ZXIgaXMgYSBib29sZWFuIHRvIGluZGljYXRlIHRoYXQgdGhlIGNoYXJ0IHNob3VsZCBiZSByZS1yZW5kZXJlZCBhcyB3ZSBkbyBub3Qgd2FudCB0byBtZXJnZS5cbiAgICAgICAgICAgKiBUaGlyZCBwYXJhbWV0ZXIgaXMgYSBib29sZWFuIHRvIGluZGljYXRlIHRoYXQgd2Ugd2FudCB0byBsYXp5IGxvYWQgdGhlIGNoYXJ0LlxuICAgICAgICAgICAqL1xuICAgICAgICAgIHRoaXMuZWNoYXJ0c0luc3RhbmNlLnNldE9wdGlvbih2LCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5lY2hhcnRzSW5zdGFuY2UuZ2V0T3B0aW9uKCk7XG4gICAgICAgICAgY29uc3QgZGF0YVpvb20gPSBvcHRpb25zWydkYXRhWm9vbSddWzBdO1xuICAgICAgICAgIGlmIChkYXRhWm9vbS5zdGFydCAhPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zaG93TG9hZE1vcmUgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zbGlkZXJab29tVXNlZCA9IGZhbHNlO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRUaW1lUmFuZ2UgPSB0aGlzLmdldFRpbWVSYW5nZSgpO1xuICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IHRpbWUgcmFuZ2UgaXMgd2l0aGluIHRoZSBsb2FkZWQgdGltZSByYW5nZSB0byBhdm9pZCB1bm5lY2Vzc2FyeSB1cGRhdGVzXG4gICAgaWYgKFxuICAgICAgdGhpcy5sb2FkZWRUaW1lUmFuZ2UgJiZcbiAgICAgIG5ldyBEYXRlKGN1cnJlbnRUaW1lUmFuZ2UuZGF0ZUZyb20pID49IG5ldyBEYXRlKHRoaXMubG9hZGVkVGltZVJhbmdlLmRhdGVGcm9tKSAmJlxuICAgICAgbmV3IERhdGUoY3VycmVudFRpbWVSYW5nZS5kYXRlVG8pIDw9IG5ldyBEYXRlKHRoaXMubG9hZGVkVGltZVJhbmdlLmRhdGVUbykgJiZcbiAgICAgIGNoYW5nZXMuY29uZmlnLnByZXZpb3VzVmFsdWU/LmRhdGVGcm9tICE9PSBjaGFuZ2VzLmNvbmZpZy5jdXJyZW50VmFsdWUuZGF0ZUZyb20gJiZcbiAgICAgIGNoYW5nZXMuY29uZmlnLnByZXZpb3VzVmFsdWU/LmRhdGVUbyAhPT0gY2hhbmdlcy5jb25maWcuY3VycmVudFZhbHVlLmRhdGVUb1xuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpZ0NoYW5nZWRTdWJqZWN0Lm5leHQoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmFsZXJ0cykge1xuICAgICAgdGhpcy5hbGVydHMuc2V0QWxlcnRHcm91cERpc21pc3NTdHJhdGVneShcbiAgICAgICAgJ3dhcm5pbmcnLFxuICAgICAgICBEaXNtaXNzQWxlcnRTdHJhdGVneS5URU1QT1JBUllfT1JfUEVSTUFORU5UXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuY2hhcnRSZWFsdGltZVNlcnZpY2Uuc3RvcFJlYWx0aW1lKCk7XG4gIH1cblxuICBvbkNoYXJ0SW5pdChlYzogRUNoYXJ0cykge1xuICAgIHRoaXMuZWNoYXJ0c0luc3RhbmNlID0gZWM7XG4gICAgdGhpcy5lY2hhcnRzT3B0aW9uc1NlcnZpY2UuZWNoYXJ0c0luc3RhbmNlID0gdGhpcy5lY2hhcnRzSW5zdGFuY2U7XG4gICAgdGhpcy5zdGFydFJlYWx0aW1lSWZQb3NzaWJsZSgpO1xuXG4gICAgY29uc3QgZGF0YVpvb21IYW5kbGVyID0gKGV2dDogRUNBY3Rpb25FdmVudCkgPT4ge1xuICAgICAgaWYgKGV2dC5iYXRjaD8uWzBdPy5zdGFydCA9PT0gMCB8fCBldnRbJ3N0YXJ0J10gPT09IDApIHtcbiAgICAgICAgdGhpcy5zaG93TG9hZE1vcmUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5lY2hhcnRzSW5zdGFuY2UuZ2V0T3B0aW9uKCk7XG4gICAgICBjb25zdCBkYXRhWm9vbSA9IG9wdGlvbnNbJ2RhdGFab29tJ11bMF07XG4gICAgICB0aGlzLnNsaWRlclpvb21Vc2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuY29uZmlnQ2hhbmdlT25ab29tT3V0LmVtaXQoe1xuICAgICAgICBkYXRlRnJvbTogbmV3IERhdGUoZGF0YVpvb21bJ3N0YXJ0VmFsdWUnXSksXG4gICAgICAgIGRhdGVUbzogbmV3IERhdGUoZGF0YVpvb21bJ2VuZFZhbHVlJ10pLFxuICAgICAgICBpbnRlcnZhbDogJ2N1c3RvbSdcbiAgICAgIH0pO1xuICAgICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uuc2V0T3B0aW9uKG9wdGlvbnMpO1xuICAgICAgdGhpcy5jaGFydFJlYWx0aW1lU2VydmljZS5zdG9wUmVhbHRpbWUoKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZGVib3VuY2VkRGF0YVpvb21IYW5kbGVyID0gdGhpcy5jb25maWcucmVhbHRpbWVcbiAgICAgID8gZGF0YVpvb21IYW5kbGVyXG4gICAgICA6IHRoaXMuZGVib3VuY2UoZGF0YVpvb21IYW5kbGVyLCAxMDAwKTtcblxuICAgIHRoaXMuZWNoYXJ0c0luc3RhbmNlLm9uKCdkYXRhWm9vbScsIGRlYm91bmNlZERhdGFab29tSGFuZGxlcik7XG4gICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uub24oJ2NsaWNrJywgdGhpcy5vbkNoYXJ0Q2xpY2suYmluZCh0aGlzKSk7XG5cbiAgICBsZXQgb3JpZ2luYWxGb3JtYXR0ZXI6XG4gICAgICB8IFRvb2x0aXBGb3JtYXR0ZXJDYWxsYmFjazxUb3BMZXZlbEZvcm1hdHRlclBhcmFtcz5cbiAgICAgIHwgc3RyaW5nXG4gICAgICB8IG51bGxcbiAgICAgIHwgdW5kZWZpbmVkID0gbnVsbDtcblxuICAgIHRoaXMuZWNoYXJ0c0luc3RhbmNlLm9uKCdtb3VzZW92ZXInLCAocGFyYW1zOiBhbnkpID0+IHtcbiAgICAgIGlmIChwYXJhbXM/LmNvbXBvbmVudFR5cGUgIT09ICdtYXJrTGluZScgJiYgcGFyYW1zPy5jb21wb25lbnRUeXBlICE9PSAnbWFya1BvaW50Jykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmVjaGFydHNJbnN0YW5jZS5nZXRPcHRpb24oKSBhcyBFQ2hhcnRzT3B0aW9uO1xuICAgICAgaWYgKCFvcHRpb25zLnRvb2x0aXAgfHwgIUFycmF5LmlzQXJyYXkob3B0aW9ucy50b29sdGlwKSB8fCAhb3B0aW9ucy50b29sdGlwWzBdKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIG9yaWdpbmFsRm9ybWF0dGVyID0gb3JpZ2luYWxGb3JtYXR0ZXIgPz8gb3B0aW9uc1sndG9vbHRpcCddWzBdLmZvcm1hdHRlcjtcblxuICAgICAgY29uc3QgdXBkYXRlZE9wdGlvbnM6IFBhcnRpYWw8U2VyaWVzT3B0aW9uPiA9IHsgdG9vbHRpcDogb3B0aW9uc1sndG9vbHRpcCddWzBdIH07XG5cbiAgICAgIGlmICghdXBkYXRlZE9wdGlvbnMudG9vbHRpcCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB1cGRhdGVkT3B0aW9ucy50b29sdGlwLmZvcm1hdHRlciA9ICh0b29sdGlwUGFyYW1zOiBDYWxsYmFja0RhdGFQYXJhbXMpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWNoYXJ0c09wdGlvbnNTZXJ2aWNlLmdldFRvb2x0aXBGb3JtYXR0ZXJGb3JBbGFybUFuZEV2ZW50cyhcbiAgICAgICAgICB0b29sdGlwUGFyYW1zLFxuICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICB0aGlzLmV2ZW50cyxcbiAgICAgICAgICB0aGlzLmFsYXJtc1xuICAgICAgICApO1xuICAgICAgfTtcblxuICAgICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uuc2V0T3B0aW9uKHVwZGF0ZWRPcHRpb25zKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZWNoYXJ0c0luc3RhbmNlLm9uKCdtb3VzZW91dCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmVjaGFydHNJbnN0YW5jZS5nZXRPcHRpb24oKSBhcyBFY2hhcnRzQ3VzdG9tT3B0aW9ucztcbiAgICAgIGlmIChvcmlnaW5hbEZvcm1hdHRlcikge1xuICAgICAgICBvcHRpb25zWyd0b29sdGlwJ11bMF0uZm9ybWF0dGVyID0gb3JpZ2luYWxGb3JtYXR0ZXI7XG4gICAgICAgIHRoaXMuZWNoYXJ0c0luc3RhbmNlLnNldE9wdGlvbihvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG9uQ2hhcnRDbGljayhwYXJhbXM6IHsgZGF0YTogeyBpdGVtVHlwZTogc3RyaW5nIH0gfSk6IHZvaWQge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmVjaGFydHNJbnN0YW5jZS5nZXRPcHRpb24oKTtcbiAgICBpZiAoIXRoaXMuaXNBbGFybUNsaWNrKHBhcmFtcykpIHtcbiAgICAgIHRoaXMuZWNoYXJ0c0luc3RhbmNlLnNldE9wdGlvbih7XG4gICAgICAgIHRvb2x0aXA6IHsgdHJpZ2dlck9uOiAnbW91c2Vtb3ZlJyB9LFxuICAgICAgICBzZXJpZXM6IFt7IG1hcmtBcmVhOiB7IGRhdGE6IFtdIH0sIG1hcmtMaW5lOiB7IGRhdGE6IFtdIH0gfV1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNsaWNrZWRBbGFybXMgPSB0aGlzLmFsYXJtcy5maWx0ZXIoYWxhcm0gPT4gYWxhcm0udHlwZSA9PT0gcGFyYW1zLmRhdGEuaXRlbVR5cGUpO1xuXG4gICAgdGhpcy5pc01hcmtlZEFyZWFFbmFibGVkLmVtaXQodGhpcy5oYXNNYXJrQXJlYShvcHRpb25zKSk7XG4gICAgY29uc3QgdXBkYXRlZE9wdGlvbnMgPSAhdGhpcy5oYXNNYXJrQXJlYShvcHRpb25zKVxuICAgICAgPyB7XG4gICAgICAgICAgdG9vbHRpcDogeyBlbnRlcmFibGU6IHRydWUsIHRyaWdnZXJPbjogJ2NsaWNrJyB9LFxuICAgICAgICAgIHNlcmllczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBtYXJrQXJlYTogeyBsYWJlbDogeyBzaG93OiBmYWxzZSB9LCBkYXRhOiB0aGlzLmdldE1hcmtlZEFyZWFEYXRhKGNsaWNrZWRBbGFybXMpIH0sXG4gICAgICAgICAgICAgIG1hcmtMaW5lOiB7XG4gICAgICAgICAgICAgICAgc2hvd1N5bWJvbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzeW1ib2w6IFsnbm9uZScsICdub25lJ10sXG4gICAgICAgICAgICAgICAgZGF0YTogdGhpcy5nZXRNYXJrZWRMaW5lRGF0YShjbGlja2VkQWxhcm1zKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICA6IC8vIGlmIG1hcmtBcmVhIGFscmVhZHkgZXhpc3RzLCByZW1vdmUgaXQgYW5kIHJlbW92ZSBsYXN0VXBkYXRlZCBmcm9tIG1hcmtMaW5lXG4gICAgICAgIHtcbiAgICAgICAgICB0b29sdGlwOiB7IHRyaWdnZXJPbjogJ21vdXNlbW92ZScgfSxcbiAgICAgICAgICBzZXJpZXM6IFt7IG1hcmtBcmVhOiB7IGRhdGE6IFtdIH0sIG1hcmtMaW5lOiB7IGRhdGE6IFtdIH0gfV1cbiAgICAgICAgfTtcblxuICAgIHRoaXMuZWNoYXJ0c0luc3RhbmNlLnNldE9wdGlvbih1cGRhdGVkT3B0aW9ucyk7XG4gIH1cblxuICBpc0FsYXJtQ2xpY2socGFyYW1zOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hbGFybXMuc29tZShhbGFybSA9PiBhbGFybS50eXBlID09PSBwYXJhbXMuZGF0YS5pdGVtVHlwZSk7XG4gIH1cblxuICBoYXNNYXJrQXJlYShvcHRpb25zOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gb3B0aW9ucz8uc2VyaWVzPy5bMF0/Lm1hcmtBcmVhPy5kYXRhPy5sZW5ndGggPiAwO1xuICB9XG5cbiAgc2F2ZUFzSW1hZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uuc2V0T3B0aW9uKHsgbGVnZW5kOiB7IHNob3c6IHRydWUgfSB9KTtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmVjaGFydHNJbnN0YW5jZS5nZXREYXRhVVJMKHtcbiAgICAgIHBpeGVsUmF0aW86IDIsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJyxcbiAgICAgIHR5cGU6ICdwbmcnXG4gICAgfSk7XG4gICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgbGluay5kb3dubG9hZCA9ICdkYXRhcG9pbnRzLWdyYXBoLXNjcmVlbnNob3QnO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgbGluay5jbGljaygpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG4gICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uuc2V0T3B0aW9uKHsgbGVnZW5kOiB7IHNob3c6IGZhbHNlIH0gfSk7XG4gIH1cblxuICBsb2FkTW9yZURhdGEoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFRpbWVSYW5nZUluTXMgPSB0aGlzLmVjaGFydHNPcHRpb25zU2VydmljZS5jYWxjdWxhdGVFeHRlbmRlZEludGVydmFsSW5NcyhcbiAgICAgIHRoaXMuY29uZmlnLmludGVydmFsIHx8ICdjdXN0b20nLFxuICAgICAge1xuICAgICAgICBkYXRlVG86IHRoaXMud2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlLmluaXRpYWxUaW1lUmFuZ2UoKS5kYXRlVG8sXG4gICAgICAgIGRhdGVGcm9tOiB0aGlzLndpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZS5pbml0aWFsVGltZVJhbmdlKCkuZGF0ZUZyb21cbiAgICAgIH1cbiAgICApO1xuICAgIHRoaXMud2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlLnVwZGF0ZUluaXRpYWxUaW1lUmFuZ2Uoe1xuICAgICAgZGF0ZUZyb206IG5ldyBEYXRlKFxuICAgICAgICBuZXcgRGF0ZSh0aGlzLndpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZS5pbml0aWFsVGltZVJhbmdlKCkuZGF0ZUZyb20pLnZhbHVlT2YoKSAtXG4gICAgICAgICAgY3VycmVudFRpbWVSYW5nZUluTXMgLyA0XG4gICAgICApLnRvSVNPU3RyaW5nKCksXG4gICAgICBkYXRlVG86IHRoaXMud2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlLmluaXRpYWxUaW1lUmFuZ2UoKS5kYXRlVG8sXG4gICAgICBpbnRlcnZhbDogJ2N1c3RvbSdcbiAgICB9KTtcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5lY2hhcnRzSW5zdGFuY2UuZ2V0T3B0aW9uKCk7XG4gICAgY29uc3QgZGF0YVpvb20gPSBvcHRpb25zWydkYXRhWm9vbSddWzBdO1xuICAgIHRoaXMuY29uZmlnQ2hhbmdlT25ab29tT3V0LmVtaXQoe1xuICAgICAgZGF0ZUZyb206IG5ldyBEYXRlKGRhdGFab29tWydzdGFydFZhbHVlJ10pLFxuICAgICAgZGF0ZVRvOiBuZXcgRGF0ZShkYXRhWm9vbVsnZW5kVmFsdWUnXSksXG4gICAgICBpbnRlcnZhbDogJ2N1c3RvbSdcbiAgICB9KTtcbiAgICB0aGlzLnNob3dMb2FkTW9yZSA9IGZhbHNlO1xuICB9XG5cbiAgZGVib3VuY2U8VCBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZD4oXG4gICAgZnVuYzogVCxcbiAgICB3YWl0OiBudW1iZXJcbiAgKTogKC4uLmFyZ3M6IFBhcmFtZXRlcnM8VD4pID0+IHZvaWQge1xuICAgIGxldCB0aW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcbiAgICByZXR1cm4gKC4uLmFyZ3M6IFBhcmFtZXRlcnM8VD4pID0+IHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGZ1bmMoLi4uYXJncyksIHdhaXQpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgdmlzaWJpbGl0eSBvZiBhIHNlcmllcyBpbiB0aGUgY2hhcnQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGRhdGFwb2ludC5cbiAgICogQHBhcmFtIGRhdGFwb2ludCAtIFRoZSBkYXRhcG9pbnQgdG8gdG9nZ2xlIHZpc2liaWxpdHkgZm9yLlxuICAgKi9cbiAgdG9nZ2xlRGF0YXBvaW50U2VyaWVzVmlzaWJpbGl0eShkYXRhcG9pbnQ6IERhdGFwb2ludHNHcmFwaEtQSURldGFpbHMpOiB2b2lkIHtcbiAgICBjb25zdCBzZXJpZXMgPSB0aGlzLmVjaGFydHNJbnN0YW5jZS5nZXRPcHRpb24oKS5zZXJpZXMgYXMgKFNlcmllc09wdGlvbiAmXG4gICAgICBTZXJpZXNEYXRhcG9pbnRJbmZvKVtdO1xuICAgIGNvbnN0IHNlcmllc1RvVXBkYXRlID0gc2VyaWVzLmZpbmQocyA9PiBzLmRhdGFwb2ludExhYmVsID09PSBkYXRhcG9pbnQubGFiZWwpO1xuICAgIGlmIChzZXJpZXNUb1VwZGF0ZSkge1xuICAgICAgdGhpcy5lY2hhcnRzSW5zdGFuY2UuZGlzcGF0Y2hBY3Rpb24oe1xuICAgICAgICB0eXBlOiAnbGVnZW5kVG9nZ2xlU2VsZWN0JyxcbiAgICAgICAgbmFtZTogc2VyaWVzVG9VcGRhdGUubmFtZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRvZ2dsZXMgdGhlIHZpc2liaWxpdHkgb2YgYSBzZXJpZXMgaW4gdGhlIGNoYXJ0IGJhc2VkIG9uIHRoZSBwcm92aWRlZCBhbGFybSBvciBldmVudC5cbiAgICogQHBhcmFtIGFsYXJtT3JFdmVudCAtIFRoZSBhbGFybSBvciBldmVudCB0byB0b2dnbGUgdmlzaWJpbGl0eSBmb3IuXG4gICAqL1xuICB0b2dnbGVBbGFybUV2ZW50U2VyaWVzVmlzaWJpbGl0eShcbiAgICBhbGFybU9yRXZlbnQ6IEFsYXJtRGV0YWlsc0V4dGVuZGVkIHwgRXZlbnREZXRhaWxzRXh0ZW5kZWRcbiAgKTogdm9pZCB7XG4gICAgY29uc3Qgc2VyaWVzID0gdGhpcy5lY2hhcnRzSW5zdGFuY2UuZ2V0T3B0aW9uKCkuc2VyaWVzIGFzIChTZXJpZXNPcHRpb24gJlxuICAgICAgU2VyaWVzRGF0YXBvaW50SW5mbylbXTtcbiAgICBjb25zdCBzZXJpZXNUb1VwZGF0ZSA9IHNlcmllcy5maWx0ZXIoXG4gICAgICBzID0+XG4gICAgICAgIHMubmFtZSA9PT0gYCR7YWxhcm1PckV2ZW50LmxhYmVsfS1tYXJrUG9pbnRgIHx8IHMubmFtZSA9PT0gYCR7YWxhcm1PckV2ZW50LmxhYmVsfS1tYXJrTGluZWBcbiAgICApO1xuICAgIGlmIChzZXJpZXNUb1VwZGF0ZSkge1xuICAgICAgc2VyaWVzVG9VcGRhdGUuZm9yRWFjaChzID0+IHtcbiAgICAgICAgdGhpcy5lY2hhcnRzSW5zdGFuY2UuZGlzcGF0Y2hBY3Rpb24oe1xuICAgICAgICAgIHR5cGU6ICdsZWdlbmRUb2dnbGVTZWxlY3QnLFxuICAgICAgICAgIG5hbWU6IHMubmFtZVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdENoYXJ0T3B0aW9ucygpOiBFQ2hhcnRzT3B0aW9uIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6IHtcbiAgICAgICAgdGV4dDogZ2V0dGV4dCgnTm8gZGF0YSBhdmFpbGFibGUuJyksXG4gICAgICAgIGxlZnQ6ICdjZW50ZXInLFxuICAgICAgICB0b3A6ICdjZW50ZXInLFxuICAgICAgICB0ZXh0U3R5bGU6IHsgZm9udFNpemU6IDMwIH1cbiAgICAgIH0sXG4gICAgICBlbXB0eTogdHJ1ZSxcbiAgICAgIHhBeGlzOiB7IHR5cGU6ICdjYXRlZ29yeScsIGRhdGE6IFtdIH0sXG4gICAgICB5QXhpczogeyB0eXBlOiAndmFsdWUnIH0sXG4gICAgICBzZXJpZXM6IFtdXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWFya2VkQXJlYURhdGEoY2xpY2tlZEFsYXJtczogSUFsYXJtW10pIHtcbiAgICBjb25zdCB0aW1lUmFuZ2UgPSB0aGlzLmdldFRpbWVSYW5nZSgpO1xuICAgIGNvbnN0IGNsZWFyZWRBbGFybUNvbG9yID0gJ3JnYmEoMjIxLDI1NSwyMjEsMS4wMCknO1xuICAgIGNvbnN0IGFjdGl2ZUFsYXJtQ29sb3IgPSAncmdiYSgyNTUsIDE3MywgMTc3LCAwLjQpJztcblxuICAgIHJldHVybiBjbGlja2VkQWxhcm1zLm1hcChjbGlja2VkQWxhcm0gPT4ge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IGNsaWNrZWRBbGFybS50eXBlLFxuICAgICAgICAgIHhBeGlzOiBjbGlja2VkQWxhcm0uY3JlYXRpb25UaW1lLFxuICAgICAgICAgIGl0ZW1TdHlsZToge1xuICAgICAgICAgICAgY29sb3I6XG4gICAgICAgICAgICAgIGNsaWNrZWRBbGFybS5zdGF0dXMgPT09IEFsYXJtU3RhdHVzLkNMRUFSRUQgPyBjbGVhcmVkQWxhcm1Db2xvciA6IGFjdGl2ZUFsYXJtQ29sb3JcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB4QXhpczpcbiAgICAgICAgICAgIGNsaWNrZWRBbGFybVsnbGFzdFVwZGF0ZWQnXSA9PT0gY2xpY2tlZEFsYXJtLmNyZWF0aW9uVGltZSB8fFxuICAgICAgICAgICAgY2xpY2tlZEFsYXJtLnN0YXR1cyAhPT0gQWxhcm1TdGF0dXMuQ0xFQVJFRFxuICAgICAgICAgICAgICA/IHRpbWVSYW5nZS5kYXRlVG9cbiAgICAgICAgICAgICAgOiBjbGlja2VkQWxhcm1bJ2xhc3RVcGRhdGVkJ11cbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TWFya2VkTGluZURhdGEoY2xpY2tlZEFsYXJtczogSUFsYXJtW10pIHtcbiAgICByZXR1cm4gY2xpY2tlZEFsYXJtcy5yZWR1Y2U8TWFya0xpbmVEYXRhW10+KChhY2MsIGFsYXJtKSA9PiB7XG4gICAgICBjb25zdCBpc0NsaWNrZWRBbGFybUNsZWFyZWQgPSBhbGFybS5zdGF0dXMgPT09IEFsYXJtU3RhdHVzLkNMRUFSRUQ7XG4gICAgICBpZiAoaXNDbGlja2VkQWxhcm1DbGVhcmVkKSB7XG4gICAgICAgIHJldHVybiBhY2MuY29uY2F0KFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB4QXhpczogYWxhcm0uY3JlYXRpb25UaW1lLFxuICAgICAgICAgICAgaXRlbVR5cGU6IGFsYXJtLnR5cGUsXG4gICAgICAgICAgICBsYWJlbDogeyBzaG93OiBmYWxzZSwgZm9ybWF0dGVyOiAoKSA9PiBhbGFybS50eXBlIH0sXG4gICAgICAgICAgICBpdGVtU3R5bGU6IHsgY29sb3I6IGFsYXJtWydjb2xvciddIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHhBeGlzOiBhbGFybVsnbGFzdFVwZGF0ZWQnXSxcbiAgICAgICAgICAgIGl0ZW1UeXBlOiBhbGFybS50eXBlLFxuICAgICAgICAgICAgbGFiZWw6IHsgc2hvdzogZmFsc2UsIGZvcm1hdHRlcjogKCkgPT4gYWxhcm0udHlwZSB9LFxuICAgICAgICAgICAgaXRlbVN0eWxlOiB7IGNvbG9yOiBhbGFybVsnY29sb3InXSB9XG4gICAgICAgICAgfVxuICAgICAgICBdKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2MuY29uY2F0KFtcbiAgICAgICAge1xuICAgICAgICAgIHhBeGlzOiBhbGFybS5jcmVhdGlvblRpbWUsXG4gICAgICAgICAgaXRlbVR5cGU6IGFsYXJtLnR5cGUsXG4gICAgICAgICAgbGFiZWw6IHsgc2hvdzogZmFsc2UsIGZvcm1hdHRlcjogKCkgPT4gYWxhcm0udHlwZSB9LFxuICAgICAgICAgIGl0ZW1TdHlsZTogeyBjb2xvcjogYWxhcm1bJ2NvbG9yJ10gfVxuICAgICAgICB9XG4gICAgICBdKTtcbiAgICB9LCBbXSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRBbGFybXNBbmRFdmVudHMoY3VzdG9tVGltZVJhbmdlPzogYW55KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdGltZVJhbmdlID0gdGhpcy5nZXRUaW1lUmFuZ2UoKTtcbiAgICBjb25zdCB1cGRhdGVkVGltZVJhbmdlID0ge1xuICAgICAgbGFzdFVwZGF0ZWRGcm9tOiBjdXN0b21UaW1lUmFuZ2UgPyBjdXN0b21UaW1lUmFuZ2UuZGF0ZUZyb20gOiB0aW1lUmFuZ2UuZGF0ZUZyb20sXG4gICAgICBjcmVhdGVkVG86IGN1c3RvbVRpbWVSYW5nZSA/IGN1c3RvbVRpbWVSYW5nZS5kYXRlVG8gOiB0aW1lUmFuZ2UuZGF0ZVRvXG4gICAgfTtcbiAgICBpZiAoIXRoaXMuY29uZmlnLmFsYXJtc0V2ZW50c0NvbmZpZ3MpIHJldHVybjtcbiAgICBjb25zdCB2aXNpYmxlQWxhcm1zT3JFdmVudHMgPSB0aGlzLmNvbmZpZy5hbGFybXNFdmVudHNDb25maWdzPy5maWx0ZXIoXG4gICAgICBhbGFybU9yRXZlbnQgPT4gIWFsYXJtT3JFdmVudC5fX2hpZGRlbiAmJiBhbGFybU9yRXZlbnQuX19hY3RpdmVcbiAgICApO1xuICAgIGNvbnN0IGFsYXJtcyA9IHZpc2libGVBbGFybXNPckV2ZW50cz8uZmlsdGVyKFxuICAgICAgYWxhcm1PckV2ZW50ID0+IGFsYXJtT3JFdmVudC50aW1lbGluZVR5cGUgPT09ICdBTEFSTSdcbiAgICApIGFzIEFsYXJtRGV0YWlsc0V4dGVuZGVkW107XG4gICAgY29uc3QgZXZlbnRzID0gdmlzaWJsZUFsYXJtc09yRXZlbnRzPy5maWx0ZXIoXG4gICAgICBhbGFybU9yRXZlbnQgPT4gYWxhcm1PckV2ZW50LnRpbWVsaW5lVHlwZSA9PT0gJ0VWRU5UJ1xuICAgICkgYXMgRXZlbnREZXRhaWxzRXh0ZW5kZWRbXTtcblxuICAgIGNvbnN0IFtsaXN0ZWRFdmVudHMsIGxpc3RlZEFsYXJtc10gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICB0aGlzLmNoYXJ0RXZlbnRzU2VydmljZS5saXN0RXZlbnRzKHVwZGF0ZWRUaW1lUmFuZ2UsIGV2ZW50cyksXG4gICAgICB0aGlzLmNoYXJ0QWxhcm1zU2VydmljZS5saXN0QWxhcm1zKHVwZGF0ZWRUaW1lUmFuZ2UsIGFsYXJtcylcbiAgICBdKTtcblxuICAgIHRoaXMuZXZlbnRzID0gbGlzdGVkRXZlbnRzO1xuICAgIHRoaXMuYWxhcm1zID0gbGlzdGVkQWxhcm1zO1xuICAgIGF3YWl0IHRoaXMuYWRkQWN0aXZlQWxhcm1zKGFsYXJtcyk7XG5cbiAgICB0aGlzLnVwZGF0ZUFsYXJtc0FuZEV2ZW50cy5lbWl0KHRoaXMuY29uZmlnLmFsYXJtc0V2ZW50c0NvbmZpZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydFJlYWx0aW1lSWZQb3NzaWJsZSgpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVEYXRhcG9pbnRzID0gdGhpcy5jb25maWc/LmRhdGFwb2ludHM/LmZpbHRlcihkcCA9PiBkcC5fX2FjdGl2ZSk7XG4gICAgaWYgKGFjdGl2ZURhdGFwb2ludHMgJiYgdGhpcy5jb25maWcucmVhbHRpbWUgJiYgdGhpcy5lY2hhcnRzSW5zdGFuY2UpIHtcbiAgICAgIHRoaXMuY2hhcnRSZWFsdGltZVNlcnZpY2Uuc3RhcnRSZWFsdGltZShcbiAgICAgICAgdGhpcy5lY2hhcnRzSW5zdGFuY2UsXG4gICAgICAgIGFjdGl2ZURhdGFwb2ludHMsXG4gICAgICAgIHRoaXMuZ2V0VGltZVJhbmdlKCksXG4gICAgICAgIGRwID0+IHRoaXMuZGF0YXBvaW50T3V0T2ZTeW5jLmVtaXQoZHApLFxuICAgICAgICB0aW1lUmFuZ2UgPT4gdGhpcy50aW1lUmFuZ2VDaGFuZ2VPblJlYWx0aW1lLmVtaXQodGltZVJhbmdlKSxcbiAgICAgICAgdGhpcy5jb25maWcuYWxhcm1zRXZlbnRzQ29uZmlncyxcbiAgICAgICAge1xuICAgICAgICAgIGRpc3BsYXlNYXJrZWRMaW5lOiB0aGlzLmNvbmZpZy5kaXNwbGF5TWFya2VkTGluZSB8fCBmYWxzZSxcbiAgICAgICAgICBkaXNwbGF5TWFya2VkUG9pbnQ6IHRoaXMuY29uZmlnLmRpc3BsYXlNYXJrZWRQb2ludCB8fCBmYWxzZVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qXG4gIFRoaXMgbWV0aG9kIHNob3VsZCBjaGVjayBhbmQgYWRkIGFjdGl2ZSBhbGFybXMgZnJvbSB0aGUgYmVnaW5pbmcgb2YgdGltZSB0byB0aGUgYWxhcm0gYXJyYXlcbiAgKi9cbiAgcHJpdmF0ZSBhc3luYyBhZGRBY3RpdmVBbGFybXMoYWxhcm1zOiBBbGFybURldGFpbHNFeHRlbmRlZFtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgdGltZVJhbmdlID0gdGhpcy5nZXRUaW1lUmFuZ2UoKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBkYXRlRnJvbTogJzE5NzAtMDEtMDFUMDE6MDA6MDArMDE6MDAnLFxuICAgICAgZGF0ZVRvOiB0aW1lUmFuZ2UuZGF0ZVRvLFxuICAgICAgc3RhdHVzOiBBbGFybVN0YXR1cy5BQ1RJVkVcbiAgICB9O1xuXG4gICAgY29uc3QgYWN0aXZlQWxhcm1zID0gYXdhaXQgdGhpcy5jaGFydEFsYXJtc1NlcnZpY2UubGlzdEFsYXJtcyhwYXJhbXMsIGFsYXJtcyk7XG4gICAgdGhpcy5jb25maWcuYWN0aXZlQWxhcm1UeXBlc091dE9mUmFuZ2UgPSBbXTtcbiAgICAvLyBpdGVyYXRlIHRocm91Z2ggdGhlIGFjdGl2ZUFsYXJtcyBhbmQgY2hlY2sgaWYgdGhlIGFsYXJtIGlzIGluIHRoZSBhbGFybXMgYXJyYXksIGlmIG5vdCB1cGRhdGUgdGhlIGNvbmZpZy5hY3RpdmVBbGFybVR5cGVzT3V0T2ZSYW5nZSBwcm9wXG4gICAgYWN0aXZlQWxhcm1zLmZvckVhY2goYWN0aXZlQWxhcm0gPT4ge1xuICAgICAgY29uc3QgYWxhcm1UeXBlID0gYWN0aXZlQWxhcm0udHlwZTtcbiAgICAgIGNvbnN0IGFsYXJtID0gdGhpcy5hbGFybXMuZmluZChhbGFybSA9PiBhbGFybS50eXBlID09PSBhbGFybVR5cGUpO1xuICAgICAgaWYgKCFhbGFybSAmJiB0aGlzLmNvbmZpZy5hY3RpdmVBbGFybVR5cGVzT3V0T2ZSYW5nZSkge1xuICAgICAgICB0aGlzLmNvbmZpZy5hY3RpdmVBbGFybVR5cGVzT3V0T2ZSYW5nZS5wdXNoKGFsYXJtVHlwZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldENoYXJ0T3B0aW9ucyhkYXRhcG9pbnRzV2l0aFZhbHVlczogRHBXaXRoVmFsdWVzW10pOiBQcm9taXNlPEVDaGFydHNPcHRpb24+IHtcbiAgICBjb25zdCB0aW1lUmFuZ2UgPSB7IC4uLnRoaXMuZ2V0VGltZVJhbmdlKCksIGludGVydmFsOiB0aGlzLmNvbmZpZy5pbnRlcnZhbCB9O1xuICAgIGlmICghdGhpcy53aWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2UuaW5pdGlhbFRpbWVSYW5nZSgpKSB7XG4gICAgICB0aGlzLndpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZS51cGRhdGVJbml0aWFsVGltZVJhbmdlKHRpbWVSYW5nZSk7XG4gICAgICBjb25zdCBhZ2dyZWdhdGVkRGF0YXBvaW50cyA9IGF3YWl0IGxhc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuZmV0Y2hTZXJpZXNGb3JEYXRhcG9pbnRzJCh7XG4gICAgICAgICAgZGF0ZUZyb206IG5ldyBEYXRlKFxuICAgICAgICAgICAgbmV3IERhdGUodGltZVJhbmdlLmRhdGVGcm9tKS52YWx1ZU9mKCkgLVxuICAgICAgICAgICAgICB0aGlzLmVjaGFydHNPcHRpb25zU2VydmljZS5jYWxjdWxhdGVFeHRlbmRlZEludGVydmFsSW5NcyhcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5pbnRlcnZhbCB8fCAnY3VzdG9tJyxcbiAgICAgICAgICAgICAgICB7IGRhdGVGcm9tOiB0aW1lUmFuZ2UuZGF0ZUZyb20sIGRhdGVUbzogdGltZVJhbmdlLmRhdGVUbyB9XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICApLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgZGF0ZVRvOiB0aW1lUmFuZ2UuZGF0ZVRvXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgcmV0dXJuIHRoaXMuZWNoYXJ0c09wdGlvbnNTZXJ2aWNlLmdldENoYXJ0T3B0aW9ucyhcbiAgICAgICAgZGF0YXBvaW50c1dpdGhWYWx1ZXMsXG4gICAgICAgIHRpbWVSYW5nZSxcbiAgICAgICAge1xuICAgICAgICAgIFlBeGlzOiB0aGlzLmNvbmZpZy55QXhpc1NwbGl0TGluZXMgfHwgZmFsc2UsXG4gICAgICAgICAgWEF4aXM6IHRoaXMuY29uZmlnLnhBeGlzU3BsaXRMaW5lcyB8fCBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICB0aGlzLmV2ZW50cyxcbiAgICAgICAgdGhpcy5hbGFybXMsXG4gICAgICAgIHtcbiAgICAgICAgICBkaXNwbGF5TWFya2VkTGluZTogdGhpcy5jb25maWcuZGlzcGxheU1hcmtlZExpbmUgfHwgZmFsc2UsXG4gICAgICAgICAgZGlzcGxheU1hcmtlZFBvaW50OiB0aGlzLmNvbmZpZy5kaXNwbGF5TWFya2VkUG9pbnQgfHwgZmFsc2UsXG4gICAgICAgICAgbWVyZ2VNYXRjaGluZ0RhdGFwb2ludHM6IHRoaXMuY29uZmlnLm1lcmdlTWF0Y2hpbmdEYXRhcG9pbnRzIHx8IGZhbHNlLFxuICAgICAgICAgIHNob3dMYWJlbEFuZFVuaXQ6IHRoaXMuY29uZmlnLnNob3dMYWJlbEFuZFVuaXQgfHwgZmFsc2UsXG4gICAgICAgICAgc2hvd1NsaWRlcjogdGhpcy5jb25maWcuc2hvd1NsaWRlciB8fCBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIGFnZ3JlZ2F0ZWREYXRhcG9pbnRzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhZ2dyZWdhdGVkRGF0YXBvaW50cyA9IGF3YWl0IGxhc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuZmV0Y2hTZXJpZXNGb3JEYXRhcG9pbnRzJCh7XG4gICAgICAgICAgZGF0ZUZyb206IG5ldyBEYXRlKFxuICAgICAgICAgICAgbmV3IERhdGUodGhpcy53aWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2UuaW5pdGlhbFRpbWVSYW5nZSgpLmRhdGVGcm9tKS52YWx1ZU9mKCkgLVxuICAgICAgICAgICAgICB0aGlzLmVjaGFydHNPcHRpb25zU2VydmljZS5jYWxjdWxhdGVFeHRlbmRlZEludGVydmFsSW5NcyhcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5pbnRlcnZhbCB8fCAnY3VzdG9tJyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkYXRlRnJvbTogdGhpcy53aWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2UuaW5pdGlhbFRpbWVSYW5nZSgpLmRhdGVGcm9tLFxuICAgICAgICAgICAgICAgICAgZGF0ZVRvOiB0aGlzLndpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZS5pbml0aWFsVGltZVJhbmdlKCkuZGF0ZVRvXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIGRhdGVUbzogbmV3IERhdGUoXG4gICAgICAgICAgICB0aGlzLndpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZS5pbml0aWFsVGltZVJhbmdlKCkuZGF0ZVRvXG4gICAgICAgICAgKS50b0lTT1N0cmluZygpXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgcmV0dXJuIHRoaXMuZWNoYXJ0c09wdGlvbnNTZXJ2aWNlLmdldENoYXJ0T3B0aW9ucyhcbiAgICAgICAgZGF0YXBvaW50c1dpdGhWYWx1ZXMsXG4gICAgICAgIHRoaXMud2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlLmluaXRpYWxUaW1lUmFuZ2UoKSxcbiAgICAgICAge1xuICAgICAgICAgIFlBeGlzOiB0aGlzLmNvbmZpZy55QXhpc1NwbGl0TGluZXMgfHwgZmFsc2UsXG4gICAgICAgICAgWEF4aXM6IHRoaXMuY29uZmlnLnhBeGlzU3BsaXRMaW5lcyB8fCBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICB0aGlzLmV2ZW50cyxcbiAgICAgICAgdGhpcy5hbGFybXMsXG4gICAgICAgIHtcbiAgICAgICAgICBkaXNwbGF5TWFya2VkTGluZTogdGhpcy5jb25maWcuZGlzcGxheU1hcmtlZExpbmUgfHwgZmFsc2UsXG4gICAgICAgICAgZGlzcGxheU1hcmtlZFBvaW50OiB0aGlzLmNvbmZpZy5kaXNwbGF5TWFya2VkUG9pbnQgfHwgZmFsc2UsXG4gICAgICAgICAgbWVyZ2VNYXRjaGluZ0RhdGFwb2ludHM6IHRoaXMuY29uZmlnLm1lcmdlTWF0Y2hpbmdEYXRhcG9pbnRzIHx8IGZhbHNlLFxuICAgICAgICAgIHNob3dMYWJlbEFuZFVuaXQ6IHRoaXMuY29uZmlnLnNob3dMYWJlbEFuZFVuaXQgfHwgZmFsc2UsXG4gICAgICAgICAgc2hvd1NsaWRlcjogdGhpcy5jb25maWcuc2hvd1NsaWRlciB8fCBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICB0aW1lUmFuZ2UsXG4gICAgICAgIGFnZ3JlZ2F0ZWREYXRhcG9pbnRzLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hTZXJpZXNGb3JEYXRhcG9pbnRzJChjdXN0b21UaW1lUmFuZ2U/OiBhbnkpOiBPYnNlcnZhYmxlPERwV2l0aFZhbHVlc1tdPiB7XG4gICAgY29uc3QgYWN0aXZlRGF0YXBvaW50cyA9IHRoaXMuY29uZmlnPy5kYXRhcG9pbnRzPy5maWx0ZXIoZHAgPT4gZHAuX19hY3RpdmUpO1xuICAgIGlmICghYWN0aXZlRGF0YXBvaW50cyB8fCBhY3RpdmVEYXRhcG9pbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9XG4gICAgY29uc3QgZGF0YXBvaW50c1dpdGhWYWx1ZXNSZXF1ZXN0czogT2JzZXJ2YWJsZTxEcFdpdGhWYWx1ZXM+W10gPSBbXTtcbiAgICBjb25zdCB0aW1lUmFuZ2UgPSB0aGlzLmdldFRpbWVSYW5nZSg2MF8wMDApO1xuICAgIGZvciAoY29uc3QgZHAgb2YgYWN0aXZlRGF0YXBvaW50cykge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHRoaXMubWVhc3VyZW1lbnRTZXJ2aWNlXG4gICAgICAgIC5saXN0U2VyaWVzJCh7XG4gICAgICAgICAgLi4uKGN1c3RvbVRpbWVSYW5nZSA/IGN1c3RvbVRpbWVSYW5nZSA6IHRpbWVSYW5nZSksXG4gICAgICAgICAgc291cmNlOiBkcC5fX3RhcmdldD8uaWQgfHwgJycsXG4gICAgICAgICAgc2VyaWVzOiBbYCR7ZHAuZnJhZ21lbnR9LiR7ZHAuc2VyaWVzfWBdLFxuICAgICAgICAgIC4uLih0aGlzLmNvbmZpZy5hZ2dyZWdhdGlvbiB8fCBjdXN0b21UaW1lUmFuZ2VcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIGFnZ3JlZ2F0aW9uVHlwZTogY3VzdG9tVGltZVJhbmdlID8gYWdncmVnYXRpb25UeXBlLkhPVVJMWSA6IHRoaXMuY29uZmlnLmFnZ3JlZ2F0aW9uXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDoge30pXG4gICAgICAgIH0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcChyZXMgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gcmVzLmRhdGEudmFsdWVzO1xuICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnRydW5jYXRlZCAmJiB0aGlzLmNvbmZpZy5kYXRlRnJvbSkge1xuICAgICAgICAgICAgICB2YWx1ZXNbbmV3IERhdGUodGhpcy5jb25maWcuZGF0ZUZyb20pLnRvSVNPU3RyaW5nKCldID0gW3sgbWluOiBudWxsLCBtYXg6IG51bGwgfV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpZiAodGhpcy5hbGVydHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFsZXJ0cy5jbGVhcigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geyAuLi5kcCwgdmFsdWVzLCB0cnVuY2F0ZWQ6IHJlcy5kYXRhLnRydW5jYXRlZCB9O1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgIGRhdGFwb2ludHNXaXRoVmFsdWVzUmVxdWVzdHMucHVzaChyZXF1ZXN0KTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcmtKb2luKGRhdGFwb2ludHNXaXRoVmFsdWVzUmVxdWVzdHMpLnBpcGUoXG4gICAgICB0YXAoKGRwc1dpdGhWYWx1ZXM6IERwV2l0aFZhbHVlc1tdKSA9PiB7XG4gICAgICAgIGlmIChkcHNXaXRoVmFsdWVzLnNvbWUoZHAgPT4gZHBbJ3RydW5jYXRlZCddKSkge1xuICAgICAgICAgIHRoaXMuYWRkVHJ1bmNhdGVkRGF0YUFsZXJ0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkVHJ1bmNhdGVkRGF0YUFsZXJ0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFsZXJ0cz8uYWxlcnRHcm91cHMuZmluZChhID0+IGEudHlwZSA9PT0gJ3dhcm5pbmcnKT8udmFsdWU/LmFsZXJ0cz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGFsZXJ0ID0gbmV3IER5bmFtaWNDb21wb25lbnRBbGVydCh7XG4gICAgICB0eXBlOiAnd2FybmluZycsXG4gICAgICB0ZXh0OiBnZXR0ZXh0KCdUcnVuY2F0ZWQgZGF0YS4gQ2hhbmdlIGFnZ3JlZ2F0aW9uIG9yIHNlbGVjdCBzaG9ydGVyIGRhdGUgcmFuZ2UuJylcbiAgICB9KTtcblxuICAgIHRoaXMuYWxlcnRzPy5hZGRBbGVydHMoYWxlcnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUaW1lUmFuZ2UoYWRkaXRpb25hbFBhZGRpbmc/OiBudW1iZXIpOiB7IGRhdGVGcm9tOiBzdHJpbmc7IGRhdGVUbzogc3RyaW5nIH0ge1xuICAgIGxldCB0aW1lUmFuZ2U6IHsgZGF0ZUZyb206IERhdGU7IGRhdGVUbzogRGF0ZSB9O1xuICAgIGlmIChcbiAgICAgIHRoaXMuY29uZmlnLndpZGdldEluc3RhbmNlR2xvYmFsVGltZUNvbnRleHQgfHxcbiAgICAgICh0aGlzLmNvbmZpZy5pbnRlcnZhbCA9PT0gJ2N1c3RvbScgJiYgIXRoaXMuY29uZmlnLnJlYWx0aW1lKVxuICAgICkge1xuICAgICAgdGltZVJhbmdlID0ge1xuICAgICAgICBkYXRlRnJvbTogbmV3IERhdGUodGhpcy5jb25maWcuZGF0ZUZyb20gYXMgRGF0ZSksXG4gICAgICAgIGRhdGVUbzogbmV3IERhdGUodGhpcy5jb25maWcuZGF0ZVRvIGFzIERhdGUpXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgdGltZVJhbmdlSW5NcyA9IDA7XG4gICAgICBpZiAodGhpcy5jb25maWcuaW50ZXJ2YWwgJiYgdGhpcy5jb25maWcuaW50ZXJ2YWwgIT09ICdjdXN0b20nKSB7XG4gICAgICAgIHRpbWVSYW5nZUluTXMgPSBJTlRFUlZBTFMuZmluZChpID0+IGkuaWQgPT09IHRoaXMuY29uZmlnLmludGVydmFsKT8udGltZXNwYW5Jbk1zIHx8IDA7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLnJlYWx0aW1lKSB7XG4gICAgICAgIHRpbWVSYW5nZUluTXMgPVxuICAgICAgICAgIG5ldyBEYXRlKHRoaXMuY29uZmlnLmRhdGVUbyBhcyBEYXRlKS52YWx1ZU9mKCkgLVxuICAgICAgICAgIG5ldyBEYXRlKHRoaXMuY29uZmlnLmRhdGVGcm9tIGFzIERhdGUpLnZhbHVlT2YoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgICB0aW1lUmFuZ2UgPSB7IGRhdGVGcm9tOiBuZXcgRGF0ZShub3cudmFsdWVPZigpIC0gdGltZVJhbmdlSW5NcyksIGRhdGVUbzogbm93IH07XG4gICAgfVxuICAgIGlmIChhZGRpdGlvbmFsUGFkZGluZykge1xuICAgICAgdGltZVJhbmdlLmRhdGVGcm9tID0gbmV3IERhdGUodGltZVJhbmdlLmRhdGVGcm9tLnZhbHVlT2YoKSAtIGFkZGl0aW9uYWxQYWRkaW5nKTtcbiAgICAgIHRpbWVSYW5nZS5kYXRlVG8gPSBuZXcgRGF0ZSh0aW1lUmFuZ2UuZGF0ZVRvLnZhbHVlT2YoKSArIGFkZGl0aW9uYWxQYWRkaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgZGF0ZUZyb206IHRpbWVSYW5nZS5kYXRlRnJvbS50b0lTT1N0cmluZygpLCBkYXRlVG86IHRpbWVSYW5nZS5kYXRlVG8udG9JU09TdHJpbmcoKSB9O1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwicC1yZWxhdGl2ZSBmaXQtaCBjaGFydC1jb250YWluZXJcIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJmaXQtdyBmaXQtaFwiXG4gICAgI2NoYXJ0XG4gICAgZWNoYXJ0c1xuICAgIFtvcHRpb25zXT1cImNoYXJ0T3B0aW9uJCB8IGFzeW5jXCJcbiAgICAoY2hhcnRJbml0KT1cIm9uQ2hhcnRJbml0KCRldmVudClcIlxuICA+PC9kaXY+XG5cbiAgPGM4eS1jaGFydC1hbGVydHMgW2FsZXJ0c109XCJhbGVydHNcIj48L2M4eS1jaGFydC1hbGVydHM+XG5cbiAgPGRpdiAqbmdJZj1cInNob3dMb2FkTW9yZVwiIGNsYXNzPVwiY2hhcnQtbG9hZC1tb3JlXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIGJ0bi1ibG9ja1wiXG4gICAgICAoY2xpY2spPVwibG9hZE1vcmVEYXRhKClcIlxuICAgID5cbiAgICAgIDxpIGM4eUljb249XCJyZXN0b3JlXCI+PC9pPlxuICAgICAge3sgJ0xvYWQgbW9yZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
551
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2VjaGFydC9jaGFydHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZWNoYXJ0L2NoYXJ0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQVl2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2xGLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsVUFBVSxFQUNWLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsK0JBQStCLEVBQy9CLG9CQUFvQixFQUNwQixPQUFPLEVBQ1AsMEJBQTBCLEVBQzFCLGlDQUFpQyxFQUNsQyxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBTXpFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxh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Q2hGSCw2aEJBdUJBLDJDRDRESSxZQUFZLHVMQUNaLFVBQVUseUxBQ1YsZ0JBQWdCLGtqQ0FDaEIsYUFBYSw4QkFDYixhQUFhLCtCQUNiLG9CQUFvQixnRkFDcEIsWUFBWTs7NEZBR0gsZUFBZTtrQkEzQjNCLFNBQVM7K0JBQ0UsWUFBWSxhQUVYO3dCQUNULEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUU7d0JBQ3pGLG9CQUFvQjt3QkFDcEIsMEJBQTBCO3dCQUMxQixvQkFBb0I7d0JBQ3BCLG9CQUFvQjt3QkFDcEIsaUJBQWlCO3dCQUNqQixxQkFBcUI7d0JBQ3JCLHdCQUF3Qjt3QkFDeEIsWUFBWTt3QkFDWix1QkFBdUI7d0JBQ3ZCLHdCQUF3QjtxQkFDekIsY0FDVyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixVQUFVO3dCQUNWLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixhQUFhO3dCQUNiLG9CQUFvQjt3QkFDcEIsWUFBWTtxQkFDYjt3REFTUSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNJLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFLRyx5QkFBeUI7c0JBQWxDLE1BQU07Z0JBR0csa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ2EsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBFQ2hhcnRzLCBFQ2hhcnRzT3B0aW9uLCBTZXJpZXNPcHRpb24gfSBmcm9tICdlY2hhcnRzJztcbmltcG9ydCB7XG4gIEFsYXJtRGV0YWlsc0V4dGVuZGVkLFxuICBBbGFybU9yRXZlbnRFeHRlbmRlZCxcbiAgRGF0YXBvaW50c0dyYXBoS1BJRGV0YWlscyxcbiAgRGF0YXBvaW50c0dyYXBoV2lkZ2V0Q29uZmlnLFxuICBEcFdpdGhWYWx1ZXMsXG4gIEV2ZW50RGV0YWlsc0V4dGVuZGVkLFxuICBNYXJrTGluZURhdGEsXG4gIFNlcmllc0RhdGFwb2ludEluZm9cbn0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmb3JrSm9pbiwgbGFzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDdXN0b21NZWFzdXJlbWVudFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2N1c3RvbS1tZWFzdXJlbWVudHMuc2VydmljZSc7XG5pbXBvcnQge1xuICBBbGFybVJlYWx0aW1lU2VydmljZSxcbiAgQ29yZU1vZHVsZSxcbiAgRGlzbWlzc0FsZXJ0U3RyYXRlZ3ksXG4gIER5bmFtaWNDb21wb25lbnRBbGVydCxcbiAgRHluYW1pY0NvbXBvbmVudEFsZXJ0QWdncmVnYXRvcixcbiAgRXZlbnRSZWFsdGltZVNlcnZpY2UsXG4gIGdldHRleHQsXG4gIE1lYXN1cmVtZW50UmVhbHRpbWVTZXJ2aWNlLFxuICBXaWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBFY2hhcnRzT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2VjaGFydHMtb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IENoYXJ0UmVhbHRpbWVTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jaGFydC1yZWFsdGltZS5zZXJ2aWNlJztcbmltcG9ydCB0eXBlIHtcbiAgQ2FsbGJhY2tEYXRhUGFyYW1zLFxuICBFQ0FjdGlvbkV2ZW50LFxuICBUb29sdGlwRm9ybWF0dGVyQ2FsbGJhY2tcbn0gZnJvbSAnZWNoYXJ0cy90eXBlcy9zcmMvdXRpbC90eXBlcyc7XG5pbXBvcnQgeyBDaGFydFR5cGVzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY2hhcnQtdHlwZXMuc2VydmljZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTkdYX0VDSEFSVFNfQ09ORklHLCBOZ3hFY2hhcnRzTW9kdWxlIH0gZnJvbSAnbmd4LWVjaGFydHMnO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ25neC1ib290c3RyYXAvdG9vbHRpcCc7XG5pbXBvcnQgeyBQb3BvdmVyTW9kdWxlIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9wb3BvdmVyJztcbmltcG9ydCB7IFlBeGlzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMveS1heGlzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhcnRBbGVydHNDb21wb25lbnQgfSBmcm9tICcuL2NoYXJ0LWFsZXJ0cy9jaGFydC1hbGVydHMuY29tcG9uZW50JztcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uVHlwZSwgQWxhcm1TdGF0dXMsIElBbGFybSwgSUV2ZW50IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQ2hhcnRFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jaGFydC1ldmVudHMuc2VydmljZSc7XG5pbXBvcnQgeyBDaGFydEFsYXJtc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NoYXJ0LWFsYXJtcy5zZXJ2aWNlJztcbmltcG9ydCB7IEVjaGFydHNDdXN0b21PcHRpb25zIH0gZnJvbSAnLi9tb2RlbHMvY2hhcnQubW9kZWwnO1xuaW1wb3J0IHsgVG9wTGV2ZWxGb3JtYXR0ZXJQYXJhbXMgfSBmcm9tICdlY2hhcnRzL3R5cGVzL3NyYy9jb21wb25lbnQvdG9vbHRpcC9Ub29sdGlwTW9kZWwnO1xuaW1wb3J0IHtcbiAgQWxhcm1TZXZlcml0eVRvSWNvblBpcGUsXG4gIEFsYXJtU2V2ZXJpdHlUb0xhYmVsUGlwZSxcbiAgQWxhcm1zTW9kdWxlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvYWxhcm1zJztcbmltcG9ydCB7IEludGVydmFsLCBJTlRFUlZBTFMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2ludGVydmFsLXBpY2tlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1jaGFydHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhcnRzLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBOR1hfRUNIQVJUU19DT05GSUcsIHVzZUZhY3Rvcnk6ICgpID0+ICh7IGVjaGFydHM6ICgpID0+IGltcG9ydCgnZWNoYXJ0cycpIH0pIH0sXG4gICAgQ2hhcnRSZWFsdGltZVNlcnZpY2UsXG4gICAgTWVhc3VyZW1lbnRSZWFsdGltZVNlcnZpY2UsXG4gICAgQWxhcm1SZWFsdGltZVNlcnZpY2UsXG4gICAgRXZlbnRSZWFsdGltZVNlcnZpY2UsXG4gICAgQ2hhcnRUeXBlc1NlcnZpY2UsXG4gICAgRWNoYXJ0c09wdGlvbnNTZXJ2aWNlLFxuICAgIEN1c3RvbU1lYXN1cmVtZW50U2VydmljZSxcbiAgICBZQXhpc1NlcnZpY2UsXG4gICAgQWxhcm1TZXZlcml0eVRvSWNvblBpcGUsXG4gICAgQWxhcm1TZXZlcml0eVRvTGFiZWxQaXBlXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQ29yZU1vZHVsZSxcbiAgICBOZ3hFY2hhcnRzTW9kdWxlLFxuICAgIFRvb2x0aXBNb2R1bGUsXG4gICAgUG9wb3Zlck1vZHVsZSxcbiAgICBDaGFydEFsZXJ0c0NvbXBvbmVudCxcbiAgICBBbGFybXNNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBDaGFydHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgY2hhcnRPcHRpb24kOiBPYnNlcnZhYmxlPEVDaGFydHNPcHRpb24+O1xuICBlY2hhcnRzSW5zdGFuY2UhOiBFQ2hhcnRzO1xuICBzaG93TG9hZE1vcmUgPSBmYWxzZTtcbiAgYWxhcm1zOiBJQWxhcm1bXSA9IFtdO1xuICBldmVudHM6IElFdmVudFtdID0gW107XG4gIHNsaWRlclpvb21Vc2VkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNvbmZpZyE6IERhdGFwb2ludHNHcmFwaFdpZGdldENvbmZpZztcbiAgQElucHV0KCkgYWxlcnRzITogRHluYW1pY0NvbXBvbmVudEFsZXJ0QWdncmVnYXRvcjtcbiAgQE91dHB1dCgpIGNvbmZpZ0NoYW5nZU9uWm9vbU91dCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIGRhdGVGcm9tOiBEYXRlO1xuICAgIGRhdGVUbzogRGF0ZTtcbiAgICBpbnRlcnZhbD86IEludGVydmFsWydpZCddO1xuICB9PigpO1xuICBAT3V0cHV0KCkgdGltZVJhbmdlQ2hhbmdlT25SZWFsdGltZSA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgUGljazxEYXRhcG9pbnRzR3JhcGhXaWRnZXRDb25maWcsICdkYXRlRnJvbScgfCAnZGF0ZVRvJz5cbiAgPigpO1xuICBAT3V0cHV0KCkgZGF0YXBvaW50T3V0T2ZTeW5jID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRhcG9pbnRzR3JhcGhLUElEZXRhaWxzPigpO1xuICBAT3V0cHV0KCkgdXBkYXRlQWxhcm1zQW5kRXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcjxBbGFybU9yRXZlbnRFeHRlbmRlZFtdPigpO1xuICBAT3V0cHV0KCkgaXNNYXJrZWRBcmVhRW5hYmxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQFZpZXdDaGlsZCgnY2hhcnQnKSBjaGFydDogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBjb25maWdDaGFuZ2VkU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8dm9pZCB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbWVhc3VyZW1lbnRTZXJ2aWNlID0gaW5qZWN0KEN1c3RvbU1lYXN1cmVtZW50U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZWNoYXJ0c09wdGlvbnNTZXJ2aWNlID0gaW5qZWN0KEVjaGFydHNPcHRpb25zU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hhcnRSZWFsdGltZVNlcnZpY2UgPSBpbmplY3QoQ2hhcnRSZWFsdGltZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNoYXJ0RXZlbnRzU2VydmljZSA9IGluamVjdChDaGFydEV2ZW50c1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGNoYXJ0QWxhcm1zU2VydmljZSA9IGluamVjdChDaGFydEFsYXJtc1NlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHdpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZSA9IGluamVjdChXaWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2UpO1xuICBwcml2YXRlIGxvYWRlZFRpbWVSYW5nZTogeyBkYXRlRnJvbTogc3RyaW5nOyBkYXRlVG86IHN0cmluZyB9IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jaGFydE9wdGlvbiQgPSB0aGlzLmNvbmZpZ0NoYW5nZWRTdWJqZWN0LnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5sb2FkQWxhcm1zQW5kRXZlbnRzKCkpLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZmV0Y2hTZXJpZXNGb3JEYXRhcG9pbnRzJCgpKSxcbiAgICAgIHN3aXRjaE1hcCgoZGF0YXBvaW50c1dpdGhWYWx1ZXM6IERwV2l0aFZhbHVlc1tdKSA9PiB7XG4gICAgICAgIGlmIChkYXRhcG9pbnRzV2l0aFZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLmVjaGFydHNJbnN0YW5jZT8uY2xlYXIoKTtcbiAgICAgICAgICB0aGlzLnNob3dMb2FkTW9yZSA9IGZhbHNlO1xuICAgICAgICAgIHJldHVybiBvZih0aGlzLmdldERlZmF1bHRDaGFydE9wdGlvbnMoKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2FkZWRUaW1lUmFuZ2UgPSB7IC4uLnRoaXMuZ2V0VGltZVJhbmdlKCkgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2hhcnRPcHRpb25zKGRhdGFwb2ludHNXaXRoVmFsdWVzKTtcbiAgICAgIH0pLFxuICAgICAgdGFwKHYgPT4ge1xuICAgICAgICBpZiAodlsnZW1wdHknXSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoYXJ0UmVhbHRpbWVTZXJ2aWNlLnN0b3BSZWFsdGltZSgpO1xuICAgICAgICB0aGlzLnN0YXJ0UmVhbHRpbWVJZlBvc3NpYmxlKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZWNoYXJ0c0luc3RhbmNlKSB7XG4gICAgICAgICAgLyoqXG4gICAgICAgICAgICogKiBTZXQgdGhlIGNoYXJ0IG9wdGlvbnNcbiAgICAgICAgICAgKiBGaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIG9wdGlvbnMgdG8gc2V0XG4gICAgICAgICAgICogU2Vjb25kIHBhcmFtZXRlciBpcyBhIGJvb2xlYW4gdG8gaW5kaWNhdGUgdGhhdCB0aGUgY2hhcnQgc2hvdWxkIGJlIHJlLXJlbmRlcmVkIGFzIHdlIGRvIG5vdCB3YW50IHRvIG1lcmdlLlxuICAgICAgICAgICAqIFRoaXJkIHBhcmFtZXRlciBpcyBhIGJvb2xlYW4gdG8gaW5kaWNhdGUgdGhhdCB3ZSB3YW50IHRvIGxhenkgbG9hZCB0aGUgY2hhcnQuXG4gICAgICAgICAgICovXG4gICAgICAgICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uuc2V0T3B0aW9uKHYsIHRydWUsIHRydWUpO1xuICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmVjaGFydHNJbnN0YW5jZS5nZXRPcHRpb24oKTtcbiAgICAgICAgICBjb25zdCBkYXRhWm9vbSA9IG9wdGlvbnNbJ2RhdGFab29tJ11bMF07XG4gICAgICAgICAgaWYgKGRhdGFab29tLnN0YXJ0ICE9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dMb2FkTW9yZSA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNsaWRlclpvb21Vc2VkID0gZmFsc2U7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudFRpbWVSYW5nZSA9IHRoaXMuZ2V0VGltZVJhbmdlKCk7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgdGltZSByYW5nZSBpcyB3aXRoaW4gdGhlIGxvYWRlZCB0aW1lIHJhbmdlIHRvIGF2b2lkIHVubmVjZXNzYXJ5IHVwZGF0ZXNcbiAgICBpZiAoXG4gICAgICB0aGlzLmxvYWRlZFRpbWVSYW5nZSAmJlxuICAgICAgbmV3IERhdGUoY3VycmVudFRpbWVSYW5nZS5kYXRlRnJvbSkgPj0gbmV3IERhdGUodGhpcy5sb2FkZWRUaW1lUmFuZ2UuZGF0ZUZyb20pICYmXG4gICAgICBuZXcgRGF0ZShjdXJyZW50VGltZVJhbmdlLmRhdGVUbykgPD0gbmV3IERhdGUodGhpcy5sb2FkZWRUaW1lUmFuZ2UuZGF0ZVRvKSAmJlxuICAgICAgY2hhbmdlcy5jb25maWcucHJldmlvdXNWYWx1ZT8uZGF0ZUZyb20gIT09IGNoYW5nZXMuY29uZmlnLmN1cnJlbnRWYWx1ZS5kYXRlRnJvbSAmJlxuICAgICAgY2hhbmdlcy5jb25maWcucHJldmlvdXNWYWx1ZT8uZGF0ZVRvICE9PSBjaGFuZ2VzLmNvbmZpZy5jdXJyZW50VmFsdWUuZGF0ZVRvXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY29uZmlnQ2hhbmdlZFN1YmplY3QubmV4dCgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuYWxlcnRzKSB7XG4gICAgICB0aGlzLmFsZXJ0cy5zZXRBbGVydEdyb3VwRGlzbWlzc1N0cmF0ZWd5KFxuICAgICAgICAnd2FybmluZycsXG4gICAgICAgIERpc21pc3NBbGVydFN0cmF0ZWd5LlRFTVBPUkFSWV9PUl9QRVJNQU5FTlRcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5jaGFydFJlYWx0aW1lU2VydmljZS5zdG9wUmVhbHRpbWUoKTtcbiAgfVxuXG4gIG9uQ2hhcnRJbml0KGVjOiBFQ2hhcnRzKSB7XG4gICAgdGhpcy5lY2hhcnRzSW5zdGFuY2UgPSBlYztcbiAgICB0aGlzLmVjaGFydHNPcHRpb25zU2VydmljZS5lY2hhcnRzSW5zdGFuY2UgPSB0aGlzLmVjaGFydHNJbnN0YW5jZTtcbiAgICB0aGlzLnN0YXJ0UmVhbHRpbWVJZlBvc3NpYmxlKCk7XG5cbiAgICBjb25zdCBkYXRhWm9vbUhhbmRsZXIgPSAoZXZ0OiBFQ0FjdGlvbkV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZ0LmJhdGNoPy5bMF0/LnN0YXJ0ID09PSAwIHx8IGV2dFsnc3RhcnQnXSA9PT0gMCkge1xuICAgICAgICB0aGlzLnNob3dMb2FkTW9yZSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmVjaGFydHNJbnN0YW5jZS5nZXRPcHRpb24oKTtcbiAgICAgIGNvbnN0IGRhdGFab29tID0gb3B0aW9uc1snZGF0YVpvb20nXVswXTtcbiAgICAgIHRoaXMuc2xpZGVyWm9vbVVzZWQgPSB0cnVlO1xuICAgICAgdGhpcy5jb25maWdDaGFuZ2VPblpvb21PdXQuZW1pdCh7XG4gICAgICAgIGRhdGVGcm9tOiBuZXcgRGF0ZShkYXRhWm9vbVsnc3RhcnRWYWx1ZSddKSxcbiAgICAgICAgZGF0ZVRvOiBuZXcgRGF0ZShkYXRhWm9vbVsnZW5kVmFsdWUnXSksXG4gICAgICAgIGludGVydmFsOiAnY3VzdG9tJ1xuICAgICAgfSk7XG4gICAgICB0aGlzLmVjaGFydHNJbnN0YW5jZS5zZXRPcHRpb24ob3B0aW9ucyk7XG4gICAgICB0aGlzLmNoYXJ0UmVhbHRpbWVTZXJ2aWNlLnN0b3BSZWFsdGltZSgpO1xuICAgIH07XG5cbiAgICBjb25zdCBkZWJvdW5jZWREYXRhWm9vbUhhbmRsZXIgPSB0aGlzLmNvbmZpZy5yZWFsdGltZVxuICAgICAgPyBkYXRhWm9vbUhhbmRsZXJcbiAgICAgIDogdGhpcy5kZWJvdW5jZShkYXRhWm9vbUhhbmRsZXIsIDEwMDApO1xuXG4gICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uub24oJ2RhdGFab29tJywgZGVib3VuY2VkRGF0YVpvb21IYW5kbGVyKTtcbiAgICB0aGlzLmVjaGFydHNJbnN0YW5jZS5vbignY2xpY2snLCB0aGlzLm9uQ2hhcnRDbGljay5iaW5kKHRoaXMpKTtcblxuICAgIGxldCBvcmlnaW5hbEZvcm1hdHRlcjpcbiAgICAgIHwgVG9vbHRpcEZvcm1hdHRlckNhbGxiYWNrPFRvcExldmVsRm9ybWF0dGVyUGFyYW1zPlxuICAgICAgfCBzdHJpbmdcbiAgICAgIHwgbnVsbFxuICAgICAgfCB1bmRlZmluZWQgPSBudWxsO1xuXG4gICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uub24oJ21vdXNlb3ZlcicsIChwYXJhbXM6IGFueSkgPT4ge1xuICAgICAgaWYgKHBhcmFtcz8uY29tcG9uZW50VHlwZSAhPT0gJ21hcmtMaW5lJyAmJiBwYXJhbXM/LmNvbXBvbmVudFR5cGUgIT09ICdtYXJrUG9pbnQnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZWNoYXJ0c0luc3RhbmNlLmdldE9wdGlvbigpIGFzIEVDaGFydHNPcHRpb247XG4gICAgICBpZiAoIW9wdGlvbnMudG9vbHRpcCB8fCAhQXJyYXkuaXNBcnJheShvcHRpb25zLnRvb2x0aXApIHx8ICFvcHRpb25zLnRvb2x0aXBbMF0pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgb3JpZ2luYWxGb3JtYXR0ZXIgPSBvcmlnaW5hbEZvcm1hdHRlciA/PyBvcHRpb25zWyd0b29sdGlwJ11bMF0uZm9ybWF0dGVyO1xuXG4gICAgICBjb25zdCB1cGRhdGVkT3B0aW9uczogUGFydGlhbDxTZXJpZXNPcHRpb24+ID0geyB0b29sdGlwOiBvcHRpb25zWyd0b29sdGlwJ11bMF0gfTtcblxuICAgICAgaWYgKCF1cGRhdGVkT3B0aW9ucy50b29sdGlwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHVwZGF0ZWRPcHRpb25zLnRvb2x0aXAuZm9ybWF0dGVyID0gKHRvb2x0aXBQYXJhbXM6IENhbGxiYWNrRGF0YVBhcmFtcykgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5lY2hhcnRzT3B0aW9uc1NlcnZpY2UuZ2V0VG9vbHRpcEZvcm1hdHRlckZvckFsYXJtQW5kRXZlbnRzKFxuICAgICAgICAgIHRvb2x0aXBQYXJhbXMsXG4gICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgIHRoaXMuZXZlbnRzLFxuICAgICAgICAgIHRoaXMuYWxhcm1zXG4gICAgICAgICk7XG4gICAgICB9O1xuXG4gICAgICB0aGlzLmVjaGFydHNJbnN0YW5jZS5zZXRPcHRpb24odXBkYXRlZE9wdGlvbnMpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uub24oJ21vdXNlb3V0JywgKCkgPT4ge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZWNoYXJ0c0luc3RhbmNlLmdldE9wdGlvbigpIGFzIEVjaGFydHNDdXN0b21PcHRpb25zO1xuICAgICAgaWYgKG9yaWdpbmFsRm9ybWF0dGVyKSB7XG4gICAgICAgIG9wdGlvbnNbJ3Rvb2x0aXAnXVswXS5mb3JtYXR0ZXIgPSBvcmlnaW5hbEZvcm1hdHRlcjtcbiAgICAgICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uuc2V0T3B0aW9uKG9wdGlvbnMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25DaGFydENsaWNrKHBhcmFtczogeyBkYXRhOiB7IGl0ZW1UeXBlOiBzdHJpbmcgfSB9KTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuZWNoYXJ0c0luc3RhbmNlLmdldE9wdGlvbigpO1xuICAgIGlmICghdGhpcy5pc0FsYXJtQ2xpY2socGFyYW1zKSkge1xuICAgICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uuc2V0T3B0aW9uKHtcbiAgICAgICAgdG9vbHRpcDogeyB0cmlnZ2VyT246ICdtb3VzZW1vdmUnIH0sXG4gICAgICAgIHNlcmllczogW3sgbWFya0FyZWE6IHsgZGF0YTogW10gfSwgbWFya0xpbmU6IHsgZGF0YTogW10gfSB9XVxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY2xpY2tlZEFsYXJtcyA9IHRoaXMuYWxhcm1zLmZpbHRlcihhbGFybSA9PiBhbGFybS50eXBlID09PSBwYXJhbXMuZGF0YS5pdGVtVHlwZSk7XG5cbiAgICB0aGlzLmlzTWFya2VkQXJlYUVuYWJsZWQuZW1pdCh0aGlzLmhhc01hcmtBcmVhKG9wdGlvbnMpKTtcbiAgICBjb25zdCB1cGRhdGVkT3B0aW9ucyA9ICF0aGlzLmhhc01hcmtBcmVhKG9wdGlvbnMpXG4gICAgICA/IHtcbiAgICAgICAgICB0b29sdGlwOiB7IGVudGVyYWJsZTogdHJ1ZSwgdHJpZ2dlck9uOiAnY2xpY2snIH0sXG4gICAgICAgICAgc2VyaWVzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG1hcmtBcmVhOiB7IGxhYmVsOiB7IHNob3c6IGZhbHNlIH0sIGRhdGE6IHRoaXMuZ2V0TWFya2VkQXJlYURhdGEoY2xpY2tlZEFsYXJtcykgfSxcbiAgICAgICAgICAgICAgbWFya0xpbmU6IHtcbiAgICAgICAgICAgICAgICBzaG93U3ltYm9sOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN5bWJvbDogWydub25lJywgJ25vbmUnXSxcbiAgICAgICAgICAgICAgICBkYXRhOiB0aGlzLmdldE1hcmtlZExpbmVEYXRhKGNsaWNrZWRBbGFybXMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdXG4gICAgICAgIH1cbiAgICAgIDogLy8gaWYgbWFya0FyZWEgYWxyZWFkeSBleGlzdHMsIHJlbW92ZSBpdCBhbmQgcmVtb3ZlIGxhc3RVcGRhdGVkIGZyb20gbWFya0xpbmVcbiAgICAgICAge1xuICAgICAgICAgIHRvb2x0aXA6IHsgdHJpZ2dlck9uOiAnbW91c2Vtb3ZlJyB9LFxuICAgICAgICAgIHNlcmllczogW3sgbWFya0FyZWE6IHsgZGF0YTogW10gfSwgbWFya0xpbmU6IHsgZGF0YTogW10gfSB9XVxuICAgICAgICB9O1xuXG4gICAgdGhpcy5lY2hhcnRzSW5zdGFuY2Uuc2V0T3B0aW9uKHVwZGF0ZWRPcHRpb25zKTtcbiAgfVxuXG4gIGlzQWxhcm1DbGljayhwYXJhbXM6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFsYXJtcy5zb21lKGFsYXJtID0+IGFsYXJtLnR5cGUgPT09IHBhcmFtcy5kYXRhLml0ZW1UeXBlKTtcbiAgfVxuXG4gIGhhc01hcmtBcmVhKG9wdGlvbnM6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBvcHRpb25zPy5zZXJpZXM/LlswXT8ubWFya0FyZWE/LmRhdGE/Lmxlbmd0aCA+IDA7XG4gIH1cblxuICBzYXZlQXNJbWFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLmVjaGFydHNJbnN0YW5jZS5zZXRPcHRpb24oeyBsZWdlbmQ6IHsgc2hvdzogdHJ1ZSB9IH0pO1xuICAgIGNvbnN0IHVybCA9IHRoaXMuZWNoYXJ0c0luc3RhbmNlLmdldERhdGFVUkwoe1xuICAgICAgcGl4ZWxSYXRpbzogMixcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJyNmZmYnLFxuICAgICAgdHlwZTogJ3BuZydcbiAgICB9KTtcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGxpbmsuaHJlZiA9IHVybDtcbiAgICBsaW5rLmRvd25sb2FkID0gJ2RhdGFwb2ludHMtZ3JhcGgtc2NyZWVuc2hvdCc7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICBsaW5rLmNsaWNrKCk7XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcbiAgICB0aGlzLmVjaGFydHNJbnN0YW5jZS5zZXRPcHRpb24oeyBsZWdlbmQ6IHsgc2hvdzogZmFsc2UgfSB9KTtcbiAgfVxuXG4gIGxvYWRNb3JlRGF0YSgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50VGltZVJhbmdlSW5NcyA9IHRoaXMuZWNoYXJ0c09wdGlvbnNTZXJ2aWNlLmNhbGN1bGF0ZUV4dGVuZGVkSW50ZXJ2YWxJbk1zKFxuICAgICAgdGhpcy5jb25maWcuaW50ZXJ2YWwgfHwgJ2N1c3RvbScsXG4gICAgICB7XG4gICAgICAgIGRhdGVUbzogdGhpcy53aWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2UuaW5pdGlhbFRpbWVSYW5nZSgpLmRhdGVUbyxcbiAgICAgICAgZGF0ZUZyb206IHRoaXMud2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlLmluaXRpYWxUaW1lUmFuZ2UoKS5kYXRlRnJvbVxuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy53aWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2UudXBkYXRlSW5pdGlhbFRpbWVSYW5nZSh7XG4gICAgICBkYXRlRnJvbTogbmV3IERhdGUoXG4gICAgICAgIG5ldyBEYXRlKHRoaXMud2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlLmluaXRpYWxUaW1lUmFuZ2UoKS5kYXRlRnJvbSkudmFsdWVPZigpIC1cbiAgICAgICAgICBjdXJyZW50VGltZVJhbmdlSW5NcyAvIDRcbiAgICAgICkudG9JU09TdHJpbmcoKSxcbiAgICAgIGRhdGVUbzogdGhpcy53aWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2UuaW5pdGlhbFRpbWVSYW5nZSgpLmRhdGVUbyxcbiAgICAgIGludGVydmFsOiAnY3VzdG9tJ1xuICAgIH0pO1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmVjaGFydHNJbnN0YW5jZS5nZXRPcHRpb24oKTtcbiAgICBjb25zdCBkYXRhWm9vbSA9IG9wdGlvbnNbJ2RhdGFab29tJ11bMF07XG4gICAgdGhpcy5jb25maWdDaGFuZ2VPblpvb21PdXQuZW1pdCh7XG4gICAgICBkYXRlRnJvbTogbmV3IERhdGUoZGF0YVpvb21bJ3N0YXJ0VmFsdWUnXSksXG4gICAgICBkYXRlVG86IG5ldyBEYXRlKGRhdGFab29tWydlbmRWYWx1ZSddKSxcbiAgICAgIGludGVydmFsOiAnY3VzdG9tJ1xuICAgIH0pO1xuICAgIHRoaXMuc2hvd0xvYWRNb3JlID0gZmFsc2U7XG4gIH1cblxuICBkZWJvdW5jZTxUIGV4dGVuZHMgKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkPihcbiAgICBmdW5jOiBULFxuICAgIHdhaXQ6IG51bWJlclxuICApOiAoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4gdm9pZCB7XG4gICAgbGV0IHRpbWVvdXQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xuICAgIHJldHVybiAoLi4uYXJnczogUGFyYW1ldGVyczxUPikgPT4ge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gZnVuYyguLi5hcmdzKSwgd2FpdCk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5IG9mIGEgc2VyaWVzIGluIHRoZSBjaGFydCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgZGF0YXBvaW50LlxuICAgKiBAcGFyYW0gZGF0YXBvaW50IC0gVGhlIGRhdGFwb2ludCB0byB0b2dnbGUgdmlzaWJpbGl0eSBmb3IuXG4gICAqL1xuICB0b2dnbGVEYXRhcG9pbnRTZXJpZXNWaXNpYmlsaXR5KGRhdGFwb2ludDogRGF0YXBvaW50c0dyYXBoS1BJRGV0YWlscyk6IHZvaWQge1xuICAgIGNvbnN0IHNlcmllcyA9IHRoaXMuZWNoYXJ0c0luc3RhbmNlLmdldE9wdGlvbigpLnNlcmllcyBhcyAoU2VyaWVzT3B0aW9uICZcbiAgICAgIFNlcmllc0RhdGFwb2ludEluZm8pW107XG4gICAgY29uc3Qgc2VyaWVzVG9VcGRhdGUgPSBzZXJpZXMuZmluZChzID0+IHMuZGF0YXBvaW50TGFiZWwgPT09IGRhdGFwb2ludC5sYWJlbCk7XG4gICAgaWYgKHNlcmllc1RvVXBkYXRlKSB7XG4gICAgICB0aGlzLmVjaGFydHNJbnN0YW5jZS5kaXNwYXRjaEFjdGlvbih7XG4gICAgICAgIHR5cGU6ICdsZWdlbmRUb2dnbGVTZWxlY3QnLFxuICAgICAgICBuYW1lOiBzZXJpZXNUb1VwZGF0ZS5uYW1lXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgdmlzaWJpbGl0eSBvZiBhIHNlcmllcyBpbiB0aGUgY2hhcnQgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGFsYXJtIG9yIGV2ZW50LlxuICAgKiBAcGFyYW0gYWxhcm1PckV2ZW50IC0gVGhlIGFsYXJtIG9yIGV2ZW50IHRvIHRvZ2dsZSB2aXNpYmlsaXR5IGZvci5cbiAgICovXG4gIHRvZ2dsZUFsYXJtRXZlbnRTZXJpZXNWaXNpYmlsaXR5KFxuICAgIGFsYXJtT3JFdmVudDogQWxhcm1EZXRhaWxzRXh0ZW5kZWQgfCBFdmVudERldGFpbHNFeHRlbmRlZFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBzZXJpZXMgPSB0aGlzLmVjaGFydHNJbnN0YW5jZS5nZXRPcHRpb24oKS5zZXJpZXMgYXMgKFNlcmllc09wdGlvbiAmXG4gICAgICBTZXJpZXNEYXRhcG9pbnRJbmZvKVtdO1xuICAgIGNvbnN0IHNlcmllc1RvVXBkYXRlID0gc2VyaWVzLmZpbHRlcihcbiAgICAgIHMgPT5cbiAgICAgICAgcy5uYW1lID09PSBgJHthbGFybU9yRXZlbnQubGFiZWx9LW1hcmtQb2ludGAgfHwgcy5uYW1lID09PSBgJHthbGFybU9yRXZlbnQubGFiZWx9LW1hcmtMaW5lYFxuICAgICk7XG4gICAgaWYgKHNlcmllc1RvVXBkYXRlKSB7XG4gICAgICBzZXJpZXNUb1VwZGF0ZS5mb3JFYWNoKHMgPT4ge1xuICAgICAgICB0aGlzLmVjaGFydHNJbnN0YW5jZS5kaXNwYXRjaEFjdGlvbih7XG4gICAgICAgICAgdHlwZTogJ2xlZ2VuZFRvZ2dsZVNlbGVjdCcsXG4gICAgICAgICAgbmFtZTogcy5uYW1lXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0Q2hhcnRPcHRpb25zKCk6IEVDaGFydHNPcHRpb24ge1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZToge1xuICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdObyBkYXRhIGF2YWlsYWJsZS4nKSxcbiAgICAgICAgbGVmdDogJ2NlbnRlcicsXG4gICAgICAgIHRvcDogJ2NlbnRlcicsXG4gICAgICAgIHRleHRTdHlsZTogeyBmb250U2l6ZTogMzAgfVxuICAgICAgfSxcbiAgICAgIGVtcHR5OiB0cnVlLFxuICAgICAgeEF4aXM6IHsgdHlwZTogJ2NhdGVnb3J5JywgZGF0YTogW10gfSxcbiAgICAgIHlBeGlzOiB7IHR5cGU6ICd2YWx1ZScgfSxcbiAgICAgIHNlcmllczogW11cbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNYXJrZWRBcmVhRGF0YShjbGlja2VkQWxhcm1zOiBJQWxhcm1bXSkge1xuICAgIGNvbnN0IHRpbWVSYW5nZSA9IHRoaXMuZ2V0VGltZVJhbmdlKCk7XG4gICAgY29uc3QgY2xlYXJlZEFsYXJtQ29sb3IgPSAncmdiYSgyMjEsMjU1LDIyMSwxLjAwKSc7XG4gICAgY29uc3QgYWN0aXZlQWxhcm1Db2xvciA9ICdyZ2JhKDI1NSwgMTczLCAxNzcsIDAuNCknO1xuXG4gICAgcmV0dXJuIGNsaWNrZWRBbGFybXMubWFwKGNsaWNrZWRBbGFybSA9PiB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogY2xpY2tlZEFsYXJtLnR5cGUsXG4gICAgICAgICAgeEF4aXM6IGNsaWNrZWRBbGFybS5jcmVhdGlvblRpbWUsXG4gICAgICAgICAgaXRlbVN0eWxlOiB7XG4gICAgICAgICAgICBjb2xvcjpcbiAgICAgICAgICAgICAgY2xpY2tlZEFsYXJtLnN0YXR1cyA9PT0gQWxhcm1TdGF0dXMuQ0xFQVJFRCA/IGNsZWFyZWRBbGFybUNvbG9yIDogYWN0aXZlQWxhcm1Db2xvclxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHhBeGlzOlxuICAgICAgICAgICAgY2xpY2tlZEFsYXJtWydsYXN0VXBkYXRlZCddID09PSBjbGlja2VkQWxhcm0uY3JlYXRpb25UaW1lIHx8XG4gICAgICAgICAgICBjbGlja2VkQWxhcm0uc3RhdHVzICE9PSBBbGFybVN0YXR1cy5DTEVBUkVEXG4gICAgICAgICAgICAgID8gdGltZVJhbmdlLmRhdGVUb1xuICAgICAgICAgICAgICA6IGNsaWNrZWRBbGFybVsnbGFzdFVwZGF0ZWQnXVxuICAgICAgICB9XG4gICAgICBdO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNYXJrZWRMaW5lRGF0YShjbGlja2VkQWxhcm1zOiBJQWxhcm1bXSkge1xuICAgIHJldHVybiBjbGlja2VkQWxhcm1zLnJlZHVjZTxNYXJrTGluZURhdGFbXT4oKGFjYywgYWxhcm0pID0+IHtcbiAgICAgIGNvbnN0IGlzQ2xpY2tlZEFsYXJtQ2xlYXJlZCA9IGFsYXJtLnN0YXR1cyA9PT0gQWxhcm1TdGF0dXMuQ0xFQVJFRDtcbiAgICAgIGlmIChpc0NsaWNrZWRBbGFybUNsZWFyZWQpIHtcbiAgICAgICAgcmV0dXJuIGFjYy5jb25jYXQoW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHhBeGlzOiBhbGFybS5jcmVhdGlvblRpbWUsXG4gICAgICAgICAgICBpdGVtVHlwZTogYWxhcm0udHlwZSxcbiAgICAgICAgICAgIGxhYmVsOiB7IHNob3c6IGZhbHNlLCBmb3JtYXR0ZXI6ICgpID0+IGFsYXJtLnR5cGUgfSxcbiAgICAgICAgICAgIGl0ZW1TdHlsZTogeyBjb2xvcjogYWxhcm1bJ2NvbG9yJ10gfVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgeEF4aXM6IGFsYXJtWydsYXN0VXBkYXRlZCddLFxuICAgICAgICAgICAgaXRlbVR5cGU6IGFsYXJtLnR5cGUsXG4gICAgICAgICAgICBsYWJlbDogeyBzaG93OiBmYWxzZSwgZm9ybWF0dGVyOiAoKSA9PiBhbGFybS50eXBlIH0sXG4gICAgICAgICAgICBpdGVtU3R5bGU6IHsgY29sb3I6IGFsYXJtWydjb2xvciddIH1cbiAgICAgICAgICB9XG4gICAgICAgIF0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYy5jb25jYXQoW1xuICAgICAgICB7XG4gICAgICAgICAgeEF4aXM6IGFsYXJtLmNyZWF0aW9uVGltZSxcbiAgICAgICAgICBpdGVtVHlwZTogYWxhcm0udHlwZSxcbiAgICAgICAgICBsYWJlbDogeyBzaG93OiBmYWxzZSwgZm9ybWF0dGVyOiAoKSA9PiBhbGFybS50eXBlIH0sXG4gICAgICAgICAgaXRlbVN0eWxlOiB7IGNvbG9yOiBhbGFybVsnY29sb3InXSB9XG4gICAgICAgIH1cbiAgICAgIF0pO1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbG9hZEFsYXJtc0FuZEV2ZW50cyhjdXN0b21UaW1lUmFuZ2U/OiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0aW1lUmFuZ2UgPSB0aGlzLmdldFRpbWVSYW5nZSgpO1xuICAgIGNvbnN0IHVwZGF0ZWRUaW1lUmFuZ2UgPSB7XG4gICAgICBsYXN0VXBkYXRlZEZyb206IGN1c3RvbVRpbWVSYW5nZSA/IGN1c3RvbVRpbWVSYW5nZS5kYXRlRnJvbSA6IHRpbWVSYW5nZS5kYXRlRnJvbSxcbiAgICAgIGNyZWF0ZWRUbzogY3VzdG9tVGltZVJhbmdlID8gY3VzdG9tVGltZVJhbmdlLmRhdGVUbyA6IHRpbWVSYW5nZS5kYXRlVG9cbiAgICB9O1xuICAgIGlmICghdGhpcy5jb25maWcuYWxhcm1zRXZlbnRzQ29uZmlncykgcmV0dXJuO1xuICAgIGNvbnN0IHZpc2libGVBbGFybXNPckV2ZW50cyA9IHRoaXMuY29uZmlnLmFsYXJtc0V2ZW50c0NvbmZpZ3M/LmZpbHRlcihcbiAgICAgIGFsYXJtT3JFdmVudCA9PiAhYWxhcm1PckV2ZW50Ll9faGlkZGVuICYmIGFsYXJtT3JFdmVudC5fX2FjdGl2ZVxuICAgICk7XG4gICAgY29uc3QgYWxhcm1zID0gdmlzaWJsZUFsYXJtc09yRXZlbnRzPy5maWx0ZXIoXG4gICAgICBhbGFybU9yRXZlbnQgPT4gYWxhcm1PckV2ZW50LnRpbWVsaW5lVHlwZSA9PT0gJ0FMQVJNJ1xuICAgICkgYXMgQWxhcm1EZXRhaWxzRXh0ZW5kZWRbXTtcbiAgICBjb25zdCBldmVudHMgPSB2aXNpYmxlQWxhcm1zT3JFdmVudHM/LmZpbHRlcihcbiAgICAgIGFsYXJtT3JFdmVudCA9PiBhbGFybU9yRXZlbnQudGltZWxpbmVUeXBlID09PSAnRVZFTlQnXG4gICAgKSBhcyBFdmVudERldGFpbHNFeHRlbmRlZFtdO1xuXG4gICAgY29uc3QgW2xpc3RlZEV2ZW50cywgbGlzdGVkQWxhcm1zXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMuY2hhcnRFdmVudHNTZXJ2aWNlLmxpc3RFdmVudHModXBkYXRlZFRpbWVSYW5nZSwgZXZlbnRzKSxcbiAgICAgIHRoaXMuY2hhcnRBbGFybXNTZXJ2aWNlLmxpc3RBbGFybXModXBkYXRlZFRpbWVSYW5nZSwgYWxhcm1zKVxuICAgIF0pO1xuXG4gICAgdGhpcy5ldmVudHMgPSBsaXN0ZWRFdmVudHM7XG4gICAgdGhpcy5hbGFybXMgPSBsaXN0ZWRBbGFybXM7XG4gICAgYXdhaXQgdGhpcy5hZGRBY3RpdmVBbGFybXMoYWxhcm1zKTtcblxuICAgIHRoaXMudXBkYXRlQWxhcm1zQW5kRXZlbnRzLmVtaXQodGhpcy5jb25maWcuYWxhcm1zRXZlbnRzQ29uZmlncyk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0UmVhbHRpbWVJZlBvc3NpYmxlKCk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZURhdGFwb2ludHMgPSB0aGlzLmNvbmZpZz8uZGF0YXBvaW50cz8uZmlsdGVyKGRwID0+IGRwLl9fYWN0aXZlKTtcbiAgICBpZiAoYWN0aXZlRGF0YXBvaW50cyAmJiB0aGlzLmNvbmZpZy5yZWFsdGltZSAmJiB0aGlzLmVjaGFydHNJbnN0YW5jZSkge1xuICAgICAgdGhpcy5jaGFydFJlYWx0aW1lU2VydmljZS5zdGFydFJlYWx0aW1lKFxuICAgICAgICB0aGlzLmVjaGFydHNJbnN0YW5jZSxcbiAgICAgICAgYWN0aXZlRGF0YXBvaW50cyxcbiAgICAgICAgdGhpcy5nZXRUaW1lUmFuZ2UoKSxcbiAgICAgICAgZHAgPT4gdGhpcy5kYXRhcG9pbnRPdXRPZlN5bmMuZW1pdChkcCksXG4gICAgICAgIHRpbWVSYW5nZSA9PiB0aGlzLnRpbWVSYW5nZUNoYW5nZU9uUmVhbHRpbWUuZW1pdCh0aW1lUmFuZ2UpLFxuICAgICAgICB0aGlzLmNvbmZpZy5hbGFybXNFdmVudHNDb25maWdzLFxuICAgICAgICB7XG4gICAgICAgICAgZGlzcGxheU1hcmtlZExpbmU6IHRoaXMuY29uZmlnLmRpc3BsYXlNYXJrZWRMaW5lIHx8IGZhbHNlLFxuICAgICAgICAgIGRpc3BsYXlNYXJrZWRQb2ludDogdGhpcy5jb25maWcuZGlzcGxheU1hcmtlZFBvaW50IHx8IGZhbHNlLFxuICAgICAgICAgIG1lcmdlTWF0Y2hpbmdEYXRhcG9pbnRzOiB0aGlzLmNvbmZpZy5tZXJnZU1hdGNoaW5nRGF0YXBvaW50cyB8fCBmYWxzZSxcbiAgICAgICAgICBmb3JjZU1lcmdlRGF0YXBvaW50czogdGhpcy5jb25maWcuZm9yY2VNZXJnZURhdGFwb2ludHMgfHwgZmFsc2UsXG4gICAgICAgICAgc2hvd0xhYmVsQW5kVW5pdDogdGhpcy5jb25maWcuc2hvd0xhYmVsQW5kVW5pdCB8fCBmYWxzZSxcbiAgICAgICAgICBzaG93U2xpZGVyOiB0aGlzLmNvbmZpZy5zaG93U2xpZGVyIHx8IGZhbHNlXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLypcbiAgVGhpcyBtZXRob2Qgc2hvdWxkIGNoZWNrIGFuZCBhZGQgYWN0aXZlIGFsYXJtcyBmcm9tIHRoZSBiZWdpbmluZyBvZiB0aW1lIHRvIHRoZSBhbGFybSBhcnJheVxuICAqL1xuICBwcml2YXRlIGFzeW5jIGFkZEFjdGl2ZUFsYXJtcyhhbGFybXM6IEFsYXJtRGV0YWlsc0V4dGVuZGVkW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB0aW1lUmFuZ2UgPSB0aGlzLmdldFRpbWVSYW5nZSgpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGRhdGVGcm9tOiAnMTk3MC0wMS0wMVQwMTowMDowMCswMTowMCcsXG4gICAgICBkYXRlVG86IHRpbWVSYW5nZS5kYXRlVG8sXG4gICAgICBzdGF0dXM6IEFsYXJtU3RhdHVzLkFDVElWRVxuICAgIH07XG5cbiAgICBjb25zdCBhY3RpdmVBbGFybXMgPSBhd2FpdCB0aGlzLmNoYXJ0QWxhcm1zU2VydmljZS5saXN0QWxhcm1zKHBhcmFtcywgYWxhcm1zKTtcbiAgICB0aGlzLmNvbmZpZy5hY3RpdmVBbGFybVR5cGVzT3V0T2ZSYW5nZSA9IFtdO1xuICAgIC8vIGl0ZXJhdGUgdGhyb3VnaCB0aGUgYWN0aXZlQWxhcm1zIGFuZCBjaGVjayBpZiB0aGUgYWxhcm0gaXMgaW4gdGhlIGFsYXJtcyBhcnJheSwgaWYgbm90IHVwZGF0ZSB0aGUgY29uZmlnLmFjdGl2ZUFsYXJtVHlwZXNPdXRPZlJhbmdlIHByb3BcbiAgICBhY3RpdmVBbGFybXMuZm9yRWFjaChhY3RpdmVBbGFybSA9PiB7XG4gICAgICBjb25zdCBhbGFybVR5cGUgPSBhY3RpdmVBbGFybS50eXBlO1xuICAgICAgY29uc3QgYWxhcm0gPSB0aGlzLmFsYXJtcy5maW5kKGFsYXJtID0+IGFsYXJtLnR5cGUgPT09IGFsYXJtVHlwZSk7XG4gICAgICBpZiAoIWFsYXJtICYmIHRoaXMuY29uZmlnLmFjdGl2ZUFsYXJtVHlwZXNPdXRPZlJhbmdlKSB7XG4gICAgICAgIHRoaXMuY29uZmlnLmFjdGl2ZUFsYXJtVHlwZXNPdXRPZlJhbmdlLnB1c2goYWxhcm1UeXBlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0Q2hhcnRPcHRpb25zKGRhdGFwb2ludHNXaXRoVmFsdWVzOiBEcFdpdGhWYWx1ZXNbXSk6IFByb21pc2U8RUNoYXJ0c09wdGlvbj4ge1xuICAgIGNvbnN0IHRpbWVSYW5nZSA9IHsgLi4udGhpcy5nZXRUaW1lUmFuZ2UoKSwgaW50ZXJ2YWw6IHRoaXMuY29uZmlnLmludGVydmFsIH07XG4gICAgaWYgKCF0aGlzLndpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZS5pbml0aWFsVGltZVJhbmdlKCkpIHtcbiAgICAgIHRoaXMud2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlLnVwZGF0ZUluaXRpYWxUaW1lUmFuZ2UodGltZVJhbmdlKTtcbiAgICAgIGNvbnN0IGFnZ3JlZ2F0ZWREYXRhcG9pbnRzID0gYXdhaXQgbGFzdFZhbHVlRnJvbShcbiAgICAgICAgdGhpcy5mZXRjaFNlcmllc0ZvckRhdGFwb2ludHMkKHtcbiAgICAgICAgICBkYXRlRnJvbTogbmV3IERhdGUoXG4gICAgICAgICAgICBuZXcgRGF0ZSh0aW1lUmFuZ2UuZGF0ZUZyb20pLnZhbHVlT2YoKSAtXG4gICAgICAgICAgICAgIHRoaXMuZWNoYXJ0c09wdGlvbnNTZXJ2aWNlLmNhbGN1bGF0ZUV4dGVuZGVkSW50ZXJ2YWxJbk1zKFxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmludGVydmFsIHx8ICdjdXN0b20nLFxuICAgICAgICAgICAgICAgIHsgZGF0ZUZyb206IHRpbWVSYW5nZS5kYXRlRnJvbSwgZGF0ZVRvOiB0aW1lUmFuZ2UuZGF0ZVRvIH1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgICBkYXRlVG86IHRpbWVSYW5nZS5kYXRlVG9cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICByZXR1cm4gdGhpcy5lY2hhcnRzT3B0aW9uc1NlcnZpY2UuZ2V0Q2hhcnRPcHRpb25zKFxuICAgICAgICBkYXRhcG9pbnRzV2l0aFZhbHVlcyxcbiAgICAgICAgdGltZVJhbmdlLFxuICAgICAgICB7XG4gICAgICAgICAgWUF4aXM6IHRoaXMuY29uZmlnLnlBeGlzU3BsaXRMaW5lcyB8fCBmYWxzZSxcbiAgICAgICAgICBYQXhpczogdGhpcy5jb25maWcueEF4aXNTcGxpdExpbmVzIHx8IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHRoaXMuZXZlbnRzLFxuICAgICAgICB0aGlzLmFsYXJtcyxcbiAgICAgICAge1xuICAgICAgICAgIGRpc3BsYXlNYXJrZWRMaW5lOiB0aGlzLmNvbmZpZy5kaXNwbGF5TWFya2VkTGluZSB8fCBmYWxzZSxcbiAgICAgICAgICBkaXNwbGF5TWFya2VkUG9pbnQ6IHRoaXMuY29uZmlnLmRpc3BsYXlNYXJrZWRQb2ludCB8fCBmYWxzZSxcbiAgICAgICAgICBtZXJnZU1hdGNoaW5nRGF0YXBvaW50czogdGhpcy5jb25maWcubWVyZ2VNYXRjaGluZ0RhdGFwb2ludHMgfHwgZmFsc2UsXG4gICAgICAgICAgZm9yY2VNZXJnZURhdGFwb2ludHM6IHRoaXMuY29uZmlnLmZvcmNlTWVyZ2VEYXRhcG9pbnRzIHx8IGZhbHNlLFxuICAgICAgICAgIHNob3dMYWJlbEFuZFVuaXQ6IHRoaXMuY29uZmlnLnNob3dMYWJlbEFuZFVuaXQgfHwgZmFsc2UsXG4gICAgICAgICAgc2hvd1NsaWRlcjogdGhpcy5jb25maWcuc2hvd1NsaWRlciB8fCBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIGFnZ3JlZ2F0ZWREYXRhcG9pbnRzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhZ2dyZWdhdGVkRGF0YXBvaW50cyA9IGF3YWl0IGxhc3RWYWx1ZUZyb20oXG4gICAgICAgIHRoaXMuZmV0Y2hTZXJpZXNGb3JEYXRhcG9pbnRzJCh7XG4gICAgICAgICAgZGF0ZUZyb206IG5ldyBEYXRlKFxuICAgICAgICAgICAgbmV3IERhdGUodGhpcy53aWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2UuaW5pdGlhbFRpbWVSYW5nZSgpLmRhdGVGcm9tKS52YWx1ZU9mKCkgLVxuICAgICAgICAgICAgICB0aGlzLmVjaGFydHNPcHRpb25zU2VydmljZS5jYWxjdWxhdGVFeHRlbmRlZEludGVydmFsSW5NcyhcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5pbnRlcnZhbCB8fCAnY3VzdG9tJyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkYXRlRnJvbTogdGhpcy53aWRnZXRUaW1lQ29udGV4dERhdGVSYW5nZVNlcnZpY2UuaW5pdGlhbFRpbWVSYW5nZSgpLmRhdGVGcm9tLFxuICAgICAgICAgICAgICAgICAgZGF0ZVRvOiB0aGlzLndpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZS5pbml0aWFsVGltZVJhbmdlKCkuZGF0ZVRvXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKS50b0lTT1N0cmluZygpLFxuICAgICAgICAgIGRhdGVUbzogbmV3IERhdGUoXG4gICAgICAgICAgICB0aGlzLndpZGdldFRpbWVDb250ZXh0RGF0ZVJhbmdlU2VydmljZS5pbml0aWFsVGltZVJhbmdlKCkuZGF0ZVRvXG4gICAgICAgICAgKS50b0lTT1N0cmluZygpXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgcmV0dXJuIHRoaXMuZWNoYXJ0c09wdGlvbnNTZXJ2aWNlLmdldENoYXJ0T3B0aW9ucyhcbiAgICAgICAgZGF0YXBvaW50c1dpdGhWYWx1ZXMsXG4gICAgICAgIHRoaXMud2lkZ2V0VGltZUNvbnRleHREYXRlUmFuZ2VTZXJ2aWNlLmluaXRpYWxUaW1lUmFuZ2UoKSxcbiAgICAgICAge1xuICAgICAgICAgIFlBeGlzOiB0aGlzLmNvbmZpZy55QXhpc1NwbGl0TGluZXMgfHwgZmFsc2UsXG4gICAgICAgICAgWEF4aXM6IHRoaXMuY29uZmlnLnhBeGlzU3BsaXRMaW5lcyB8fCBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICB0aGlzLmV2ZW50cyxcbiAgICAgICAgdGhpcy5hbGFybXMsXG4gICAgICAgIHtcbiAgICAgICAgICBkaXNwbGF5TWFya2VkTGluZTogdGhpcy5jb25maWcuZGlzcGxheU1hcmtlZExpbmUgfHwgZmFsc2UsXG4gICAgICAgICAgZGlzcGxheU1hcmtlZFBvaW50OiB0aGlzLmNvbmZpZy5kaXNwbGF5TWFya2VkUG9pbnQgfHwgZmFsc2UsXG4gICAgICAgICAgbWVyZ2VNYXRjaGluZ0RhdGFwb2ludHM6IHRoaXMuY29uZmlnLm1lcmdlTWF0Y2hpbmdEYXRhcG9pbnRzIHx8IGZhbHNlLFxuICAgICAgICAgIGZvcmNlTWVyZ2VEYXRhcG9pbnRzOiB0aGlzLmNvbmZpZy5mb3JjZU1lcmdlRGF0YXBvaW50cyB8fCBmYWxzZSxcbiAgICAgICAgICBzaG93TGFiZWxBbmRVbml0OiB0aGlzLmNvbmZpZy5zaG93TGFiZWxBbmRVbml0IHx8IGZhbHNlLFxuICAgICAgICAgIHNob3dTbGlkZXI6IHRoaXMuY29uZmlnLnNob3dTbGlkZXIgfHwgZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgdGltZVJhbmdlLFxuICAgICAgICBhZ2dyZWdhdGVkRGF0YXBvaW50cyxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZldGNoU2VyaWVzRm9yRGF0YXBvaW50cyQoY3VzdG9tVGltZVJhbmdlPzogYW55KTogT2JzZXJ2YWJsZTxEcFdpdGhWYWx1ZXNbXT4ge1xuICAgIGNvbnN0IGFjdGl2ZURhdGFwb2ludHMgPSB0aGlzLmNvbmZpZz8uZGF0YXBvaW50cz8uZmlsdGVyKGRwID0+IGRwLl9fYWN0aXZlKTtcbiAgICBpZiAoIWFjdGl2ZURhdGFwb2ludHMgfHwgYWN0aXZlRGF0YXBvaW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBvZihbXSk7XG4gICAgfVxuICAgIGNvbnN0IGRhdGFwb2ludHNXaXRoVmFsdWVzUmVxdWVzdHM6IE9ic2VydmFibGU8RHBXaXRoVmFsdWVzPltdID0gW107XG4gICAgY29uc3QgdGltZVJhbmdlID0gdGhpcy5nZXRUaW1lUmFuZ2UoNjBfMDAwKTtcbiAgICBmb3IgKGNvbnN0IGRwIG9mIGFjdGl2ZURhdGFwb2ludHMpIHtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLm1lYXN1cmVtZW50U2VydmljZVxuICAgICAgICAubGlzdFNlcmllcyQoe1xuICAgICAgICAgIC4uLihjdXN0b21UaW1lUmFuZ2UgPyBjdXN0b21UaW1lUmFuZ2UgOiB0aW1lUmFuZ2UpLFxuICAgICAgICAgIHNvdXJjZTogZHAuX190YXJnZXQ/LmlkIHx8ICcnLFxuICAgICAgICAgIHNlcmllczogW2Ake2RwLmZyYWdtZW50fS4ke2RwLnNlcmllc31gXSxcbiAgICAgICAgICAuLi4odGhpcy5jb25maWcuYWdncmVnYXRpb24gfHwgY3VzdG9tVGltZVJhbmdlXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBhZ2dyZWdhdGlvblR5cGU6IGN1c3RvbVRpbWVSYW5nZSA/IGFnZ3JlZ2F0aW9uVHlwZS5IT1VSTFkgOiB0aGlzLmNvbmZpZy5hZ2dyZWdhdGlvblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHt9KVxuICAgICAgICB9KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAocmVzID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IHJlcy5kYXRhLnZhbHVlcztcbiAgICAgICAgICAgIGlmIChyZXMuZGF0YS50cnVuY2F0ZWQgJiYgdGhpcy5jb25maWcuZGF0ZUZyb20pIHtcbiAgICAgICAgICAgICAgdmFsdWVzW25ldyBEYXRlKHRoaXMuY29uZmlnLmRhdGVGcm9tKS50b0lTT1N0cmluZygpXSA9IFt7IG1pbjogbnVsbCwgbWF4OiBudWxsIH1dO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuYWxlcnRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hbGVydHMuY2xlYXIoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgLi4uZHAsIHZhbHVlcywgdHJ1bmNhdGVkOiByZXMuZGF0YS50cnVuY2F0ZWQgfTtcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICBkYXRhcG9pbnRzV2l0aFZhbHVlc1JlcXVlc3RzLnB1c2gocmVxdWVzdCk7XG4gICAgfVxuICAgIHJldHVybiBmb3JrSm9pbihkYXRhcG9pbnRzV2l0aFZhbHVlc1JlcXVlc3RzKS5waXBlKFxuICAgICAgdGFwKChkcHNXaXRoVmFsdWVzOiBEcFdpdGhWYWx1ZXNbXSkgPT4ge1xuICAgICAgICBpZiAoZHBzV2l0aFZhbHVlcy5zb21lKGRwID0+IGRwWyd0cnVuY2F0ZWQnXSkpIHtcbiAgICAgICAgICB0aGlzLmFkZFRydW5jYXRlZERhdGFBbGVydCgpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFkZFRydW5jYXRlZERhdGFBbGVydCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbGVydHM/LmFsZXJ0R3JvdXBzLmZpbmQoYSA9PiBhLnR5cGUgPT09ICd3YXJuaW5nJyk/LnZhbHVlPy5hbGVydHM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBhbGVydCA9IG5ldyBEeW5hbWljQ29tcG9uZW50QWxlcnQoe1xuICAgICAgdHlwZTogJ3dhcm5pbmcnLFxuICAgICAgdGV4dDogZ2V0dGV4dCgnVHJ1bmNhdGVkIGRhdGEuIENoYW5nZSBhZ2dyZWdhdGlvbiBvciBzZWxlY3Qgc2hvcnRlciBkYXRlIHJhbmdlLicpXG4gICAgfSk7XG5cbiAgICB0aGlzLmFsZXJ0cz8uYWRkQWxlcnRzKGFsZXJ0KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VGltZVJhbmdlKGFkZGl0aW9uYWxQYWRkaW5nPzogbnVtYmVyKTogeyBkYXRlRnJvbTogc3RyaW5nOyBkYXRlVG86IHN0cmluZyB9IHtcbiAgICBsZXQgdGltZVJhbmdlOiB7IGRhdGVGcm9tOiBEYXRlOyBkYXRlVG86IERhdGUgfTtcbiAgICBpZiAoXG4gICAgICB0aGlzLmNvbmZpZy53aWRnZXRJbnN0YW5jZUdsb2JhbFRpbWVDb250ZXh0IHx8XG4gICAgICAodGhpcy5jb25maWcuaW50ZXJ2YWwgPT09ICdjdXN0b20nICYmICF0aGlzLmNvbmZpZy5yZWFsdGltZSlcbiAgICApIHtcbiAgICAgIHRpbWVSYW5nZSA9IHtcbiAgICAgICAgZGF0ZUZyb206IG5ldyBEYXRlKHRoaXMuY29uZmlnLmRhdGVGcm9tIGFzIERhdGUpLFxuICAgICAgICBkYXRlVG86IG5ldyBEYXRlKHRoaXMuY29uZmlnLmRhdGVUbyBhcyBEYXRlKVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHRpbWVSYW5nZUluTXMgPSAwO1xuICAgICAgaWYgKHRoaXMuY29uZmlnLmludGVydmFsICYmIHRoaXMuY29uZmlnLmludGVydmFsICE9PSAnY3VzdG9tJykge1xuICAgICAgICB0aW1lUmFuZ2VJbk1zID0gSU5URVJWQUxTLmZpbmQoaSA9PiBpLmlkID09PSB0aGlzLmNvbmZpZy5pbnRlcnZhbCk/LnRpbWVzcGFuSW5NcyB8fCAwO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5yZWFsdGltZSkge1xuICAgICAgICB0aW1lUmFuZ2VJbk1zID1cbiAgICAgICAgICBuZXcgRGF0ZSh0aGlzLmNvbmZpZy5kYXRlVG8gYXMgRGF0ZSkudmFsdWVPZigpIC1cbiAgICAgICAgICBuZXcgRGF0ZSh0aGlzLmNvbmZpZy5kYXRlRnJvbSBhcyBEYXRlKS52YWx1ZU9mKCk7XG4gICAgICB9XG4gICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgICAgdGltZVJhbmdlID0geyBkYXRlRnJvbTogbmV3IERhdGUobm93LnZhbHVlT2YoKSAtIHRpbWVSYW5nZUluTXMpLCBkYXRlVG86IG5vdyB9O1xuICAgIH1cbiAgICBpZiAoYWRkaXRpb25hbFBhZGRpbmcpIHtcbiAgICAgIHRpbWVSYW5nZS5kYXRlRnJvbSA9IG5ldyBEYXRlKHRpbWVSYW5nZS5kYXRlRnJvbS52YWx1ZU9mKCkgLSBhZGRpdGlvbmFsUGFkZGluZyk7XG4gICAgICB0aW1lUmFuZ2UuZGF0ZVRvID0gbmV3IERhdGUodGltZVJhbmdlLmRhdGVUby52YWx1ZU9mKCkgKyBhZGRpdGlvbmFsUGFkZGluZyk7XG4gICAgfVxuICAgIHJldHVybiB7IGRhdGVGcm9tOiB0aW1lUmFuZ2UuZGF0ZUZyb20udG9JU09TdHJpbmcoKSwgZGF0ZVRvOiB0aW1lUmFuZ2UuZGF0ZVRvLnRvSVNPU3RyaW5nKCkgfTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInAtcmVsYXRpdmUgZml0LWggY2hhcnQtY29udGFpbmVyXCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZml0LXcgZml0LWhcIlxuICAgICNjaGFydFxuICAgIGVjaGFydHNcbiAgICBbb3B0aW9uc109XCJjaGFydE9wdGlvbiQgfCBhc3luY1wiXG4gICAgKGNoYXJ0SW5pdCk9XCJvbkNoYXJ0SW5pdCgkZXZlbnQpXCJcbiAgPjwvZGl2PlxuXG4gIDxjOHktY2hhcnQtYWxlcnRzIFthbGVydHNdPVwiYWxlcnRzXCI+PC9jOHktY2hhcnQtYWxlcnRzPlxuXG4gIDxkaXYgKm5nSWY9XCJzaG93TG9hZE1vcmVcIiBjbGFzcz1cImNoYXJ0LWxvYWQtbW9yZVwiPlxuICAgIDxidXR0b25cbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBidG4tYmxvY2tcIlxuICAgICAgKGNsaWNrKT1cImxvYWRNb3JlRGF0YSgpXCJcbiAgICA+XG4gICAgICA8aSBjOHlJY29uPVwicmVzdG9yZVwiPjwvaT5cbiAgICAgIHt7ICdMb2FkIG1vcmUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -14,4 +14,4 @@ export const SEVERITY_LABELS = {
|
|
|
14
14
|
MINOR: gettext('Minor`alarm`'),
|
|
15
15
|
WARNING: gettext('Warning`alarm`')
|
|
16
16
|
};
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXBvaW50cy1ncmFwaC13aWRnZXQubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9lY2hhcnQvbW9kZWxzL2RhdGFwb2ludHMtZ3JhcGgtd2lkZ2V0Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE9BQU8sRUFBbUIsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFpRS9ELE1BQU0sQ0FBTixJQUFZLHVCQUdYO0FBSEQsV0FBWSx1QkFBdUI7SUFDakMsNENBQWlCLENBQUE7SUFDakIsa0VBQXVDLENBQUE7QUFDekMsQ0FBQyxFQUhXLHVCQUF1QixLQUF2Qix1QkFBdUIsUUFHbEM7QUFvREQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzVCLE1BQU0sRUFBRSxPQUFPLENBQUMsaUJBQWlCLENBQUM7SUFDbEMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztDQUM5QixDQUFDO0FBdUJYLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM3QixRQUFRLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFlO0lBQ2xELEtBQUssRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFZO0lBQ3pDLEtBQUssRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFZO0lBQ3pDLE9BQU8sRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQWM7Q0FDdkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFYSVNfVFlQRVMsXG4gIENIQVJUX0xJTkVfVFlQRVMsXG4gIENIQVJUX1JFTkRFUl9UWVBFUyxcbiAgS1BJRGV0YWlsc1xufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2RhdGFwb2ludC1zZWxlY3Rvcic7XG5pbXBvcnQgeyBEYXRlVGltZUNvbnRleHQsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IGFnZ3JlZ2F0aW9uVHlwZSwgQWxhcm1TdGF0dXNUeXBlLCBJTWVhc3VyZW1lbnQsIElTZXJpZXMsIFNldmVyaXR5IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHR5cGUgeyBCYXJTZXJpZXNPcHRpb24sIExpbmVTZXJpZXNPcHRpb24sIFNjYXR0ZXJTZXJpZXNPcHRpb24gfSBmcm9tICdlY2hhcnRzJztcbmltcG9ydCB7IEFsYXJtRGV0YWlscywgRXZlbnREZXRhaWxzIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9hbGFybS1ldmVudC1zZWxlY3Rvcic7XG5pbXBvcnQgeyBUb29sdGlwRm9ybWF0dGVyQ2FsbGJhY2sgfSBmcm9tICdlY2hhcnRzL3R5cGVzL3NyYy91dGlsL3R5cGVzJztcbmltcG9ydCB7IFRvcExldmVsRm9ybWF0dGVyUGFyYW1zIH0gZnJvbSAnZWNoYXJ0cy90eXBlcy9zcmMvY29tcG9uZW50L3Rvb2x0aXAvVG9vbHRpcE1vZGVsJztcbmltcG9ydCB7IEludGVydmFsIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9pbnRlcnZhbC1waWNrZXInO1xuXG5leHBvcnQgdHlwZSBEYXRhcG9pbnRzR3JhcGhLUElEZXRhaWxzID0gS1BJRGV0YWlscyAmIHtcbiAgbGluZVR5cGU/OiBEYXRhcG9pbnRMaW5lVHlwZTtcbiAgcmVuZGVyVHlwZT86IERhdGFwb2ludENoYXJ0UmVuZGVyVHlwZTtcbn07XG5cbmV4cG9ydCB0eXBlIERhdGFwb2ludHNHcmFwaFdpZGdldENvbmZpZyA9IHtcbiAgYWN0aXZlQWxhcm1UeXBlc091dE9mUmFuZ2U/OiBzdHJpbmdbXTtcbiAgYWdncmVnYXRpb24/OiBhZ2dyZWdhdGlvblR5cGUgfCBudWxsO1xuICBhbGFybXNFdmVudHNDb25maWdzPzogQWxhcm1PckV2ZW50RXh0ZW5kZWRbXTtcbiAgZGF0YXBvaW50cz86IERhdGFwb2ludHNHcmFwaEtQSURldGFpbHNbXSB8IG51bGw7XG4gIGRhdGU/OiBEYXRlVGltZUNvbnRleHQ7XG4gIGRhdGVGcm9tPzogRGF0ZSB8IG51bGw7XG4gIGRhdGVUbz86IERhdGUgfCBudWxsO1xuICBkaXNwbGF5QWdncmVnYXRpb25TZWxlY3Rpb24/OiBib29sZWFuIHwgbnVsbDtcbiAgZGlzcGxheURhdGVTZWxlY3Rpb24/OiBib29sZWFuIHwgbnVsbDtcbiAgZGlzcGxheU1hcmtlZExpbmU/OiBib29sZWFuO1xuICBkaXNwbGF5TWFya2VkUG9pbnQ/OiBib29sZWFuO1xuICBpbnRlcnZhbD86IEludGVydmFsWydpZCddIHwgbnVsbDtcbiAgbWVyZ2VNYXRjaGluZ0RhdGFwb2ludHM/OiBib29sZWFuO1xuICBmb3JjZU1lcmdlRGF0YXBvaW50cz86IGJvb2xlYW47XG4gIHJlYWx0aW1lPzogYm9vbGVhbiB8IG51bGw7XG4gIHNob3dMYWJlbEFuZFVuaXQ/OiBib29sZWFuO1xuICBzaG93U2xpZGVyPzogYm9vbGVhbiB8IG51bGw7XG4gIHNsaWRlckNoYW5nZT86IGJvb2xlYW4gfCBudWxsO1xuICB3aWRnZXRJbnN0YW5jZUdsb2JhbFRpbWVDb250ZXh0PzogYm9vbGVhbiB8IG51bGw7XG4gIHhBeGlzU3BsaXRMaW5lcz86IGJvb2xlYW4gfCBudWxsO1xuICB5QXhpc1NwbGl0TGluZXM/OiBib29sZWFuIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIEdyYXBoRGlzcGxheU9wdGlvbnMgPSB7XG4gIGRpc3BsYXlNYXJrZWRMaW5lOiBib29sZWFuO1xuICBkaXNwbGF5TWFya2VkUG9pbnQ6IGJvb2xlYW47XG4gIG1lcmdlTWF0Y2hpbmdEYXRhcG9pbnRzOiBib29sZWFuO1xuICBmb3JjZU1lcmdlRGF0YXBvaW50czogYm9vbGVhbjtcbiAgc2hvd0xhYmVsQW5kVW5pdDogYm9vbGVhbjtcbiAgc2hvd1NsaWRlcjogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEFsYXJtRGV0YWlsc0V4dGVuZGVkID0gQWxhcm1EZXRhaWxzICYge1xuICBfX2hpZGRlbj86IGJvb2xlYW47XG4gIF9fc2V2ZXJpdHk/OiBTZXZlcml0eVR5cGVbXTtcbiAgX19zdGF0dXM/OiBBbGFybVN0YXR1c1R5cGVbXTtcbn07XG5cbmV4cG9ydCB0eXBlIEV2ZW50RGV0YWlsc0V4dGVuZGVkID0gRXZlbnREZXRhaWxzICYge1xuICBfX2hpZGRlbj86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbjogRXh0ZW5kZWQgQWxhcm1PckV2ZW50IHR5cGUgd2hpY2ggaW5jbHVkZXMgcHJvcGVydGllcyBmcm9tIHRoZSBpbmNvbWluZyBhbGFybXMvZXZlbnRzLiBUaGlzIGludGVyZmFjZSBjYW4gYmUgdXNlZCB3aGVuIHRoZSBleHBlY3RlZCBkYXRhIGNhbiBiZSBlaXRoZXIgZXZlbnRzIG9yIGFsYXJtcy5cbiAqL1xuZXhwb3J0IHR5cGUgQWxhcm1PckV2ZW50RXh0ZW5kZWQgPSBBbGFybURldGFpbHNFeHRlbmRlZCB8IEV2ZW50RGV0YWlsc0V4dGVuZGVkO1xuXG5leHBvcnQgdHlwZSBEYXRhcG9pbnRzR3JhcGhXaWRnZXRUaW1lUHJvcHMgPSBQYXJ0aWFsPFxuICBQaWNrPERhdGFwb2ludHNHcmFwaFdpZGdldENvbmZpZywgJ2ludGVydmFsJyB8ICdkYXRlRnJvbScgfCAnZGF0ZVRvJyB8ICdhZ2dyZWdhdGlvbicgfCAncmVhbHRpbWUnPlxuPjtcblxuZXhwb3J0IGVudW0gREFURV9TRUxFQ1RJT05fRVhURU5ERUQge1xuICBDT05GSUcgPSAnY29uZmlnJyxcbiAgREFTSEJPQVJEX0NPTlRFWFQgPSAnZGFzaGJvYXJkX2NvbnRleHQnXG59XG5cbnR5cGUgRGF0YXBvaW50QXBpVmFsdWVzID0gSVNlcmllc1sndmFsdWVzJ107XG5leHBvcnQgaW50ZXJmYWNlIERwV2l0aFZhbHVlcyBleHRlbmRzIERhdGFwb2ludHNHcmFwaEtQSURldGFpbHMge1xuICB2YWx1ZXM6IERhdGFwb2ludEFwaVZhbHVlcztcbn1cblxudHlwZSBEYXRhUG9pbnRWYWx1ZXMgPSB7XG4gIG1pbjogbnVtYmVyO1xuICBtYXg6IG51bWJlcjtcbn07XG5leHBvcnQgdHlwZSBEcFZhbHVlc0l0ZW0gPSB7XG4gIHRpbWU6IG51bWJlcjtcbiAgdmFsdWVzOiBEYXRhUG9pbnRWYWx1ZXNbXTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFya1BvaW50RGF0YSB7XG4gIGNvb3JkOiBbc3RyaW5nLCBudW1iZXIgfCBEYXRhUG9pbnRWYWx1ZXMgfCBudWxsXTtcbiAgbmFtZTogc3RyaW5nO1xuICBpdGVtVHlwZTogc3RyaW5nO1xuICBpdGVtU3R5bGU6IHsgY29sb3I6IHN0cmluZyB9O1xuICBzeW1ib2w/OiBzdHJpbmc7IC8vIFN5bWJvbCB0byBkaXNwbGF5IGZvciB0aGUgbWFyayBwb2ludCAocmVmZXJlbmNlIHRvIElDT05TX01BUClcbiAgc3ltYm9sU2l6ZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXJrTGluZURhdGEge1xuICB4QXhpczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpdGVtVHlwZTogc3RyaW5nO1xuICBsYWJlbDoge1xuICAgIHNob3c6IGJvb2xlYW47XG4gICAgZm9ybWF0dGVyOiBUb29sdGlwRm9ybWF0dGVyQ2FsbGJhY2s8VG9wTGV2ZWxGb3JtYXR0ZXJQYXJhbXM+IHwgc3RyaW5nO1xuICB9O1xuICBpdGVtU3R5bGU6IHsgY29sb3I6IHN0cmluZyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRpbWVDb250ZXh0UHJvcHMge1xuICB0ZW1wb3JhcnlVc2VyU2VsZWN0ZWRGcm9tRGF0ZT86IHN0cmluZztcbiAgdGVtcG9yYXJ5VXNlclNlbGVjdGVkVG9EYXRlPzogc3RyaW5nO1xuICBjdXJyZW50RGF0ZUNvbnRleHRGcm9tRGF0ZT86IHN0cmluZztcbiAgY3VycmVudERhdGVDb250ZXh0VG9EYXRlPzogc3RyaW5nO1xuICByZWFsdGltZT86IGJvb2xlYW47XG4gIGN1cnJlbnREYXRlQ29udGV4dEludGVydmFsPzogJ21pbnV0ZXMnIHwgJ2hvdXJzJyB8ICdkYXlzJyB8ICd3ZWVrcycgfCAnbW9udGhzJyB8ICdjdXN0b20nO1xuICBhZ2dyZWdhdGlvbj86IGFnZ3JlZ2F0aW9uVHlwZSB8IG51bGw7XG59XG5cbmV4cG9ydCB0eXBlIERhdGFwb2ludExpbmVUeXBlID0gKHR5cGVvZiBDSEFSVF9MSU5FX1RZUEVTKVtudW1iZXJdWyd2YWwnXTtcbmV4cG9ydCB0eXBlIEVjaGFydHNTZXJpZXNPcHRpb25zID0gTGluZVNlcmllc09wdGlvbiB8IFNjYXR0ZXJTZXJpZXNPcHRpb24gfCBCYXJTZXJpZXNPcHRpb247XG5cbmV4cG9ydCB0eXBlIERhdGFwb2ludEF4aXNUeXBlID0gKHR5cGVvZiBBWElTX1RZUEVTKVtudW1iZXJdWyd2YWwnXTtcblxuZXhwb3J0IHR5cGUgRGF0YXBvaW50Q2hhcnRSZW5kZXJUeXBlID0gKHR5cGVvZiBDSEFSVF9SRU5ERVJfVFlQRVMpW251bWJlcl1bJ3ZhbCddO1xuXG5leHBvcnQgY29uc3QgUkVBTFRJTUVfVEVYVFMgPSB7XG4gIEFDVElWRTogZ2V0dGV4dCgnUmVhbHRpbWUgYWN0aXZlJyksXG4gIElOQUNUSVZFOiBnZXR0ZXh0KCdSZWFsdGltZSBpbmFjdGl2ZScpXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBEYXRlU3RyaW5nID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgU2VyaWVzVmFsdWUgPSBbRGF0ZVN0cmluZywgbnVtYmVyXTtcblxuZXhwb3J0IHR5cGUgRGF0YXBvaW50UmVhbHRpbWVNZWFzdXJlbWVudHMgPSB7XG4gIG1lYXN1cmVtZW50OiBJTWVhc3VyZW1lbnQ7XG4gIGRhdGFwb2ludDogRGF0YXBvaW50c0dyYXBoS1BJRGV0YWlscztcbn07XG5cbmV4cG9ydCB0eXBlIFlBeGlzT3B0aW9ucyA9IHtcbiAgc2hvd1NwbGl0TGluZXM6IGJvb2xlYW47XG4gIG1lcmdlTWF0Y2hpbmdEYXRhcG9pbnRzOiBib29sZWFuO1xuICBmb3JjZU1lcmdlRGF0YXBvaW50czogYm9vbGVhbjtcbiAgc2hvd0xhYmVsQW5kVW5pdDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VyaWVzRGF0YXBvaW50SW5mbyB7XG4gIGRhdGFwb2ludElkPzogc3RyaW5nO1xuICBkYXRhcG9pbnRMYWJlbD86IHN0cmluZztcbiAgZGF0YXBvaW50VW5pdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IFNFVkVSSVRZX0xBQkVMUyA9IHtcbiAgQ1JJVElDQUw6IGdldHRleHQoJ0NyaXRpY2FsYGFsYXJtYCcpIGFzICdDUklUSUNBTCcsXG4gIE1BSk9SOiBnZXR0ZXh0KCdNYWpvcmBhbGFybWAnKSBhcyAnTUFKT1InLFxuICBNSU5PUjogZ2V0dGV4dCgnTWlub3JgYWxhcm1gJykgYXMgJ01JTk9SJyxcbiAgV0FSTklORzogZ2V0dGV4dCgnV2FybmluZ2BhbGFybWAnKSBhcyAnV0FSTklORydcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFNldmVyaXR5VHlwZSA9IGtleW9mIHR5cGVvZiBTZXZlcml0eTtcbiJdfQ==
|
|
@@ -190,4 +190,4 @@ export class ChartRealtimeService {
|
|
|
190
190
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChartRealtimeService, decorators: [{
|
|
191
191
|
type: Injectable
|
|
192
192
|
}], ctorParameters: () => [{ type: i1.MeasurementRealtimeService }, { type: i1.AlarmRealtimeService }, { type: i1.EventRealtimeService }, { type: i2.EchartsOptionsService }] });
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtcmVhbHRpbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2VjaGFydC9zZXJ2aWNlcy9jaGFydC1yZWFsdGltZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUV2RSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBVTFFLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLDBCQUEwQixFQUUzQixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7O0FBTWxFLE1BQU0sT0FBTyxvQkFBb0I7SUFVL0IsWUFDVSxtQkFBK0MsRUFDL0Msb0JBQTBDLEVBQzFDLG9CQUEwQyxFQUMxQyxxQkFBNEM7UUFINUMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUE0QjtRQUMvQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQWI5QyxhQUFRLEdBQWlCLElBQUksQ0FBQztRQUM5Qix5QkFBb0IsR0FBaUIsR0FBRyxDQUFDO1FBQ3pDLHlCQUFvQixHQUFpQixLQUFLLENBQUM7UUFLM0MscUJBQWdCLEdBQStDLElBQUksR0FBRyxFQUFFLENBQUM7SUFPOUUsQ0FBQztJQUVKLGFBQWEsQ0FDWCxlQUF3QixFQUN4QixVQUF1QyxFQUN2QyxTQUErQyxFQUMvQywwQkFBbUUsRUFDbkUsd0JBRVMsRUFDVCxxQkFBNkMsRUFBRSxFQUMvQyxjQUEy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QUFNLENBQWtCLEVBQ2hELFNBQVMsRUFDVCwwQkFBMEIsQ0FDM0IsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUM7WUFDOUIsUUFBUSxFQUFFO2dCQUNSO29CQUNFLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRTtvQkFDckQsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFO2lCQUNsRDthQUNGO1lBQ0QsS0FBSyxFQUFFO2dCQUNMLEdBQUcsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsTUFBTTthQUNuQztZQUNELE1BQU0sRUFBRSxhQUFhO1NBQ3RCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyw0QkFBNEIsQ0FDbEMsSUFBbUIsRUFDbkIsU0FBb0MsRUFDcEMsMEJBQW1FO1FBRW5FLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFjLEVBQUUsRUFBRTtZQUNyRSxPQUFPLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksbUJBQW1CLEVBQUUsQ0FBQztZQUN4QiwwQkFBMEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQzsrR0EvU1Usb0JBQW9CO21IQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tLCBpbnRlcnZhbCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSUFsYXJtLCBJRXZlbnQsIElNZWFzdXJlbWVudCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGJ1ZmZlciwgbWFwLCBtZXJnZU1hcCwgdGFwLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBBbGFybU9yRXZlbnRFeHRlbmRlZCxcbiAgRGF0YXBvaW50Q2hhcnRSZW5kZXJUeXBlLFxuICBEYXRhcG9pbnRSZWFsdGltZU1lYXN1cmVtZW50cyxcbiAgRGF0YXBvaW50c0dyYXBoS1BJRGV0YWlscyxcbiAgRGF0YXBvaW50c0dyYXBoV2lkZ2V0Q29uZmlnLFxuICBEcFdpdGhWYWx1ZXMsXG4gIFNlcmllc1ZhbHVlXG59IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQge1xuICBBbGFybVJlYWx0aW1lU2VydmljZSxcbiAgRXZlbnRSZWFsdGltZVNlcnZpY2UsXG4gIE1lYXN1cmVtZW50UmVhbHRpbWVTZXJ2aWNlLFxuICBSZWFsdGltZU1lc3NhZ2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IEVDaGFydHMsIFNlcmllc09wdGlvbiB9IGZyb20gJ2VjaGFydHMnO1xuaW1wb3J0IHsgRWNoYXJ0c09wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9lY2hhcnRzLW9wdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBDdXN0b21TZXJpZXNPcHRpb25zIH0gZnJvbSAnLi4vbW9kZWxzL2NoYXJ0Lm1vZGVsJztcblxudHlwZSBNaWxsaXNlY29uZHMgPSBudW1iZXI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDaGFydFJlYWx0aW1lU2VydmljZSB7XG4gIHByaXZhdGUgSU5URVJWQUw6IE1pbGxpc2Vjb25kcyA9IDEwMDA7XG4gIHByaXZhdGUgTUlOX1JFQUxUSU1FX1RJTUVPVVQ6IE1pbGxpc2Vjb25kcyA9IDI1MDtcbiAgcHJpdmF0ZSBNQVhfUkVBTFRJTUVfVElNRU9VVDogTWlsbGlzZWNvbmRzID0gNV8wMDA7XG4gIHByaXZhdGUgcmVhbHRpbWVTdWJzY3JpcHRpb25NZWFzdXJlbWVudHMhOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgcmVhbHRpbWVTdWJzY3JpcHRpb25BbGFybXNFdmVudHMhOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgZWNoYXJ0c0luc3RhbmNlOiBFQ2hhcnRzIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGN1cnJlbnRUaW1lUmFuZ2U6IHsgZGF0ZUZyb206IERhdGU7IGRhdGVUbzogRGF0ZSB9IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGxhc3RNZWFzdXJlbWVudHM6IE1hcDxzdHJpbmcsIERhdGFwb2ludFJlYWx0aW1lTWVhc3VyZW1lbnRzPiA9IG5ldyBNYXAoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1lYXN1cmVtZW50UmVhbHRpbWU6IE1lYXN1cmVtZW50UmVhbHRpbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxhcm1SZWFsdGltZVNlcnZpY2U6IEFsYXJtUmVhbHRpbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXZlbnRSZWFsdGltZVNlcnZpY2U6IEV2ZW50UmVhbHRpbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWNoYXJ0c09wdGlvbnNTZXJ2aWNlOiBFY2hhcnRzT3B0aW9uc1NlcnZpY2VcbiAgKSB7fVxuXG4gIHN0YXJ0UmVhbHRpbWUoXG4gICAgZWNoYXJ0c0luc3RhbmNlOiBFQ2hhcnRzLFxuICAgIGRhdGFwb2ludHM6IERhdGFwb2ludHNHcmFwaEtQSURldGFpbHNbXSxcbiAgICB0aW1lUmFuZ2U6IHsgZGF0ZUZyb206IHN0cmluZzsgZGF0ZVRvOiBzdHJpbmcgfSxcbiAgICBkYXRhcG9pbnRPdXRPZlN5bmNDYWxsYmFjazogKGRwOiBEYXRhcG9pbnRzR3JhcGhLUElEZXRhaWxzKSA9PiB2b2lkLFxuICAgIHRpbWVSYW5nZUNoYW5nZWRDYWxsYmFjazogKFxuICAgICAgdGltZVJhbmdlOiBQaWNrPERhdGFwb2ludHNHcmFwaFdpZGdldENvbmZpZywgJ2RhdGVGcm9tJyB8ICdkYXRlVG8nPlxuICAgICkgPT4gdm9pZCxcbiAgICBhbGFybU9yRXZlbnRDb25maWc6IEFsYXJtT3JFdmVudEV4dGVuZGVkW10gPSBbXSxcbiAgICBkaXNwbGF5T3B0aW9uczogeyBkaXNwbGF5TWFya2VkTGluZTogYm9vbGVhbjsgZGlzcGxheU1hcmtlZFBvaW50OiBib29sZWFuIH1cbiAgKSB7XG4gICAgdGhpcy5lY2hhcnRzSW5zdGFuY2UgPSBlY2hhcnRzSW5zdGFuY2U7XG4gICAgdGhpcy5jdXJyZW50VGltZVJhbmdlID0ge1xuICAgICAgZGF0ZUZyb206IG5ldyBEYXRlKHRpbWVSYW5nZS5kYXRlRnJvbSksXG4gICAgICBkYXRlVG86IG5ldyBEYXRlKHRpbWVSYW5nZS5kYXRlVG8pXG4gICAgfTtcblxuICAgIGNvbnN0IGFjdGl2ZUFsYXJtc09yRXZlbnRzID0gYWxhcm1PckV2ZW50Q29uZmlnLmZpbHRlcihcbiAgICAgIGFsYXJtT3JFdmVudCA9PiBhbGFybU9yRXZlbnQuX19hY3RpdmUgJiYgIWFsYXJtT3JFdmVudC5fX2hpZGRlblxuICAgICk7XG4gICAgY29uc3QgdW5pcXVlQWxhcm1PckV2ZW50VGFyZ2V0cyA9IEFycmF5LmZyb20oXG4gICAgICBuZXcgU2V0KGFjdGl2ZUFsYXJtc09yRXZlbnRzLm1hcChhT3JFID0+IGFPckUuX190YXJnZXQuaWQpKVxuICAgICk7XG5cbiAgICBjb25zdCBhbGxBbGFybXNBbmRFdmVudHMkOiBPYnNlcnZhYmxlPElBbGFybSB8IElFdmVudD4gPSBmcm9tKHVuaXF1ZUFsYXJtT3JFdmVudFRhcmdldHMpLnBpcGUoXG4gICAgICBtZXJnZU1hcCh0YXJnZXRJZCA9PiB7XG4gICAgICAgIGNvbnN0IGFsYXJtc1JlYWx0aW1lJDogT2JzZXJ2YWJsZTxSZWFsdGltZU1lc3NhZ2U8SUFsYXJtPj4gPVxuICAgICAgICAgIHRoaXMuYWxhcm1SZWFsdGltZVNlcnZpY2Uub25BbGwkKHRhcmdldElkKTtcbiAgICAgICAgY29uc3QgZXZlbnRzUmVhbHRpbWUkOiBPYnNlcnZhYmxlPFJlYWx0aW1lTWVzc2FnZTxJRXZlbnQ+PiA9XG4gICAgICAgICAgdGhpcy5ldmVudFJlYWx0aW1lU2VydmljZS5vbkFsbCQodGFyZ2V0SWQpO1xuICAgICAgICByZXR1cm4gbWVyZ2UoYWxhcm1zUmVhbHRpbWUkLCBldmVudHNSZWFsdGltZSQpLnBpcGUoXG4gICAgICAgICAgbWFwKHJlYWx0aW1lTWVzc2FnZSA9PiByZWFsdGltZU1lc3NhZ2UuZGF0YSBhcyBJQWxhcm0gfCBJRXZlbnQpXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zdCBtZWFzdXJlbWVudHNGb3JEYXRhcG9pbnRzOiBPYnNlcnZhYmxlPERhdGFwb2ludFJlYWx0aW1lTWVhc3VyZW1lbnRzPltdID0gZGF0YXBvaW50cy5tYXAoXG4gICAgICBkcCA9PiB7XG4gICAgICAgIGNvbnN0IHNvdXJjZSQ6IE9ic2VydmFibGU8SU1lYXN1cmVtZW50PiA9XG4gICAgICAgICAgdGhpcy5tZWFzdXJlbWVudFJlYWx0aW1lLm9uQ3JlYXRlT2ZTcGVjaWZpY01lYXN1cmVtZW50JChcbiAgICAgICAgICAgIGRwLmZyYWdtZW50LFxuICAgICAgICAgICAgZHAuc2VyaWVzLFxuICAgICAgICAgICAgZHAuX190YXJnZXQ/LmlkXG4gICAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHNvdXJjZSQucGlwZShtYXAoKG1lYXN1cmVtZW50OiBJTWVhc3VyZW1lbnQpID0+ICh7IGRhdGFwb2ludDogZHAsIG1lYXN1cmVtZW50IH0pKSk7XG4gICAgICB9XG4gICAgKTtcbiAgICBjb25zdCB1cGRhdGVUaHJvdHRsZVRpbWU6IE1pbGxpc2Vjb25kcyA9IHRoaXMuZ2V0UmVhbHRpbWVVcGRhdGVUaHJvdHRsZVRpbWUodGltZVJhbmdlKTtcbiAgICBjb25zdCBtZWFzdXJlbWVudCQgPSBtZXJnZSguLi5tZWFzdXJlbWVudHNGb3JEYXRhcG9pbnRzKTtcbiAgICBjb25zdCBidWZmZXJSZXNldCQgPSBtZXJnZShcbiAgICAgIG1lYXN1cmVtZW50JC5waXBlKHRocm90dGxlVGltZSh1cGRhdGVUaHJvdHRsZVRpbWUpKSxcbiAgICAgIGludGVydmFsKHRoaXMuSU5URVJWQUwpLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50VGltZVJhbmdlID0ge1xuICAgICAgICAgICAgZGF0ZUZyb206IG5ldyBEYXRlKCh0aGlzLmN1cnJlbnRUaW1lUmFuZ2U/LmRhdGVGcm9tPy52YWx1ZU9mKCkgfHwgMCkgKyB0aGlzLklOVEVSVkFMKSxcbiAgICAgICAgICAgIGRhdGVUbzogbmV3IERhdGUoKHRoaXMuY3VycmVudFRpbWVSYW5nZT8uZGF0ZVRvPy52YWx1ZU9mKCkgfHwgMCkgKyB0aGlzLklOVEVSVkFMKVxuICAgICAgICAgIH07XG4gICAgICAgICAgdGltZVJhbmdlQ2hhbmdlZENhbGxiYWNrKHRoaXMuY3VycmVudFRpbWVSYW5nZSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0aHJvdHRsZVRpbWUodXBkYXRlVGhyb3R0bGVUaW1lKVxuICAgICAgKVxuICAgICkucGlwZSh0aHJvdHRsZVRpbWUodGhpcy5NSU5fUkVBTFRJTUVfVElNRU9VVCkpO1xuXG4gICAgdGhpcy5yZWFsdGltZVN1YnNjcmlwdGlvbk1lYXN1cmVtZW50cyA9IG1lYXN1cmVtZW50JFxuICAgICAgLnBpcGUoYnVmZmVyKGJ1ZmZlclJlc2V0JCkpXG4gICAgICAuc3Vic2NyaWJlKG1lYXN1cmVtZW50cyA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlQ2hhcnRJbnN0YW5jZShtZWFzdXJlbWVudHMsIG51bGwsIGRpc3BsYXlPcHRpb25zLCBkYXRhcG9pbnRPdXRPZlN5bmNDYWxsYmFjayk7XG5cbiAgICAgICAgLy8gU3RvcmUgdGhlIGxhc3QgbWVhc3VyZW1lbnRzXG4gICAgICAgIG1lYXN1cmVtZW50cy5mb3JFYWNoKG1lYXN1cmVtZW50ID0+IHtcbiAgICAgICAgICB0aGlzLmxhc3RNZWFzdXJlbWVudHMuc2V0KG1lYXN1cmVtZW50LmRhdGFwb2ludC5mcmFnbWVudCwgbWVhc3VyZW1lbnQpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5yZWFsdGltZVN1YnNjcmlwdGlvbkFsYXJtc0V2ZW50cyA9IGFsbEFsYXJtc0FuZEV2ZW50cyRcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoYWxhcm1PckV2ZW50ID0+IHtcbiAgICAgICAgICBjb25zdCBmb3VuZEFsYXJtT3JFdmVudCA9IGFjdGl2ZUFsYXJtc09yRXZlbnRzLmZpbmQoYU9yRSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYU9yRS5maWx0ZXJzLnR5cGUgPT09IGFsYXJtT3JFdmVudC50eXBlO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChmb3VuZEFsYXJtT3JFdmVudCkge1xuICAgICAgICAgICAgYWxhcm1PckV2ZW50Wydjb2xvciddID0gZm91bmRBbGFybU9yRXZlbnQuY29sb3I7XG4gICAgICAgICAgICBhbGFybU9yRXZlbnRbJ3NlbGVjdGVkRGF0YXBvaW50J10gPSBmb3VuZEFsYXJtT3JFdmVudC5zZWxlY3RlZERhdGFwb2ludDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZm91bmRBbGFybU9yRXZlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGZyYWdtZW50ID0gYWxhcm1PckV2ZW50WydzZWxlY3RlZERhdGFwb2ludCddLmZyYWdtZW50O1xuICAgICAgICAgICAgaWYgKHRoaXMubGFzdE1lYXN1cmVtZW50cy5oYXMoZnJhZ21lbnQpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGxhc3RNZWFzdXJlbWVudCA9IHRoaXMubGFzdE1lYXN1cmVtZW50cy5nZXQoZnJhZ21lbnQpO1xuXG4gICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhcnRJbnN0YW5jZShcbiAgICAgICAgICAgICAgICBbbGFzdE1lYXN1cmVtZW50XSxcbiAgICAgICAgICAgICAgICBhbGFybU9yRXZlbnQsXG4gICAgICAgICAgICAgICAgZGlzcGxheU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgZGF0YXBvaW50T3V0T2ZTeW5jQ2FsbGJhY2tcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZm91bmRBbGFybU9yRXZlbnQgPyBhbGFybU9yRXZlbnQgOiBudWxsO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgc3RvcFJlYWx0aW1lKCkge1xuICAgIHRoaXMucmVhbHRpbWVTdWJzY3JpcHRpb25NZWFzdXJlbWVudHM/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5yZWFsdGltZVN1YnNjcmlwdGlvbkFsYXJtc0V2ZW50cz8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlVmFsdWVzQmVmb3JlVGltZVJhbmdlKHNlcmllczogU2VyaWVzT3B0aW9uKTogU2VyaWVzVmFsdWVbXSB7XG4gICAgY29uc3QgZmlyc3RWYWxpZFZhbHVlQnlEYXRlSW5kZXggPSAoc2VyaWVzLmRhdGEgYXMgU2VyaWVzVmFsdWVbXSkuZmluZEluZGV4KFxuICAgICAgKFtkYXRlU3RyaW5nLCBfXSkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUoZGF0ZVN0cmluZykgPj0gKHRoaXMuY3VycmVudFRpbWVSYW5nZT8uZGF0ZUZyb20gfHwgbmV3IERhdGUoKSk7XG4gICAgICB9XG4gICAgKTtcbiAgICBpZiAoZmlyc3RWYWxpZFZhbHVlQnlEYXRlSW5kZXggPiAxKSB7XG4gICAgICAvLyB3ZSBuZWVkIG9uZSB2YWx1ZSBiZWZvcmUgZGF0ZUZyb20gZm9yIGNoYXJ0IGxpbmVzIHRvIGJlIGV4dGVuZGVkIHRvIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhlIGdyYXBoXG4gICAgICBzZXJpZXMuZGF0YSA9IChzZXJpZXMuZGF0YSBhcyBTZXJpZXNWYWx1ZVtdKS5zbGljZShmaXJzdFZhbGlkVmFsdWVCeURhdGVJbmRleCAtIDEpO1xuICAgIH1cbiAgICByZXR1cm4gc2VyaWVzLmRhdGEgYXMgU2VyaWVzVmFsdWVbXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmVhbHRpbWVVcGRhdGVUaHJvdHRsZVRpbWUodGltZVJhbmdlOiB7XG4gICAgZGF0ZUZyb206IHN0cmluZztcbiAgICBkYXRlVG86IHN0cmluZztcbiAgfSk6IE1pbGxpc2Vjb25kcyB7XG4gICAgY29uc3QgdGltZVJhbmdlSW5NcyA9XG4gICAgICBuZXcgRGF0ZSh0aW1lUmFuZ2UuZGF0ZVRvKS52YWx1ZU9mKCkgLSBuZXcgRGF0ZSh0aW1lUmFuZ2UuZGF0ZUZyb20pLnZhbHVlT2YoKTtcbiAgICBjb25zdCBjYWxjdWxhdGVkVGhyb3R0bGVUaW1lID0gTWF0aC5yb3VuZCh0aW1lUmFuZ2VJbk1zIC8gMTAwMCk7XG4gICAgaWYgKGNhbGN1bGF0ZWRUaHJvdHRsZVRpbWUgPCB0aGlzLk1JTl9SRUFMVElNRV9USU1FT1VUKSB7XG4gICAgICByZXR1cm4gdGhpcy5NSU5fUkVBTFRJTUVfVElNRU9VVDtcbiAgICB9IGVsc2UgaWYgKGNhbGN1bGF0ZWRUaHJvdHRsZVRpbWUgPiB0aGlzLk1BWF9SRUFMVElNRV9USU1FT1VUKSB7XG4gICAgICByZXR1cm4gdGhpcy5NQVhfUkVBTFRJTUVfVElNRU9VVDtcbiAgICB9XG4gICAgcmV0dXJuIGNhbGN1bGF0ZWRUaHJvdHRsZVRpbWU7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNoYXJ0SW5zdGFuY2UoXG4gICAgcmVjZWl2ZWRNZWFzdXJlbWVudHM6IERhdGFwb2ludFJlYWx0aW1lTWVhc3VyZW1lbnRzW10sXG4gICAgYWxhcm1PckV2ZW50OiBJQWxhcm0gfCBJRXZlbnQgfCBudWxsLFxuICAgIGRpc3BsYXlPcHRpb25zOiB7IGRpc3BsYXlNYXJrZWRMaW5lOiBib29sZWFuOyBkaXNwbGF5TWFya2VkUG9pbnQ6IGJvb2xlYW4gfSxcbiAgICBkYXRhcG9pbnRPdXRPZlN5bmNDYWxsYmFjazogKGRwOiBEYXRhcG9pbnRzR3JhcGhLUElEZXRhaWxzKSA9PiB2b2lkXG4gICkge1xuICAgIGNvbnN0IGlzRXZlbnQgPSAoaXRlbTogSUFsYXJtIHwgSUV2ZW50KTogaXRlbSBpcyBJRXZlbnQgPT4gISgnc2V2ZXJpdHknIGluIGl0ZW0pO1xuICAgIGNvbnN0IGlzQWxhcm0gPSAoaXRlbTogSUFsYXJtIHwgSUV2ZW50KTogaXRlbSBpcyBJQWxhcm0gPT4gJ3NldmVyaXR5JyBpbiBpdGVtO1xuXG4gICAgY29uc3Qgc2VyaWVzRGF0YVRvVXBkYXRlID0gbmV3IE1hcDxEYXRhcG9pbnRzR3JhcGhLUElEZXRhaWxzLCBJTWVhc3VyZW1lbnRbXT4oKTtcblxuICAgIHJlY2VpdmVkTWVhc3VyZW1lbnRzLmZvckVhY2goKHsgZGF0YXBvaW50LCBtZWFzdXJlbWVudCB9KSA9PiB7XG4gICAgICBpZiAoIXNlcmllc0RhdGFUb1VwZGF0ZS5oYXMoZGF0YXBvaW50KSkge1xuICAgICAgICBzZXJpZXNEYXRhVG9VcGRhdGUuc2V0KGRhdGFwb2ludCwgW10pO1xuICAgICAgfVxuICAgICAgc2VyaWVzRGF0YVRvVXBkYXRlLmdldChkYXRhcG9pbnQpPy5wdXNoKG1lYXN1cmVtZW50KTtcbiAgICB9KTtcblxuICAgIGxldCBhbGxEYXRhU2VyaWVzID0gdGhpcy5lY2hhcnRzSW5zdGFuY2U/LmdldE9wdGlvbigpWydzZXJpZXMnXSBhcyBDdXN0b21TZXJpZXNPcHRpb25zW107XG5cbiAgICBzZXJpZXNEYXRhVG9VcGRhdGUuZm9yRWFjaCgobWVhc3VyZW1lbnRzLCBkYXRhcG9pbnQpID0+IHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlczogU2VyaWVzVmFsdWVbXSA9IG1lYXN1cmVtZW50cy5tYXAobSA9PiBbXG4gICAgICAgIG0udGltZSBhcyBzdHJpbmcsXG4gICAgICAgIG1bZGF0YXBvaW50LmZyYWdtZW50XVtkYXRhcG9pbnQuc2VyaWVzXS52YWx1ZVxuICAgICAgXSk7XG4gICAgICBjb25zdCBkYXRhcG9pbnRJZCA9IGRhdGFwb2ludC5fX3RhcmdldD8uaWQgKyBkYXRhcG9pbnQuZnJhZ21lbnQgKyBkYXRhcG9pbnQuc2VyaWVzO1xuICAgICAgY29uc3Qgc2VyaWVzTWF0Y2hpbmdEYXRhcG9pbnQgPSBhbGxEYXRhU2VyaWVzLmZpbmQocyA9PiBzWydkYXRhcG9pbnRJZCddID09PSBkYXRhcG9pbnRJZCk7XG4gICAgICBpZiAoIXNlcmllc01hdGNoaW5nRGF0YXBvaW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHNlcmllc0RhdGFUb1VwZGF0ZSA9IHNlcmllc01hdGNoaW5nRGF0YXBvaW50WydkYXRhJ10gYXMgU2VyaWVzVmFsdWVbXTtcbiAgICAgIHNlcmllc0RhdGFUb1VwZGF0ZS5wdXNoKC4uLm5ld1ZhbHVlcyk7XG5cbiAgICAgIHNlcmllc01hdGNoaW5nRGF0YXBvaW50WydkYXRhJ10gPSB0aGlzLnJlbW92ZVZhbHVlc0JlZm9yZVRpbWVSYW5nZShzZXJpZXNNYXRjaGluZ0RhdGFwb2ludCk7XG5cbiAgICAgIGlmIChhbGFybU9yRXZlbnQpIHtcbiAgICAgICAgY29uc3QgcmVuZGVyVHlwZTogRGF0YXBvaW50Q2hhcnRSZW5kZXJUeXBlID0gZGF0YXBvaW50LnJlbmRlclR5cGUgfHwgJ21pbic7XG4gICAgICAgIGNvbnN0IGRwOiBEcFdpdGhWYWx1ZXMgPSB7XG4gICAgICAgICAgLi4uZGF0YXBvaW50LFxuICAgICAgICAgIHZhbHVlczogc2VyaWVzTWF0Y2hpbmdEYXRhcG9pbnRbJ2RhdGEnXSBhcyB7XG4gICAgICAgICAgICBbZGF0ZTogc3RyaW5nXTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfVtdO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoaXNFdmVudChhbGFybU9yRXZlbnQpKSB7XG4gICAgICAgICAgLy8gaWYgZXZlbnQgc2VyaWVzIHdpdGggdGhlIHNhbWUgaWQgYWxyZWFkeSBleGlzdHMsIHJldHVyblxuICAgICAgICAgIGNvbnN0IGV2ZW50RXhpc3RzID0gYWxsRGF0YVNlcmllcy5zb21lKHNlcmllcyA9PlxuICAgICAgICAgICAgKHNlcmllc1snZGF0YSddIGFzIHN0cmluZ1tdW10pLnNvbWUoXG4gICAgICAgICAgICAgIGRhdGEgPT4gZGF0YVswXSA9PT0gKGFsYXJtT3JFdmVudCBhcyBJRXZlbnQpLmNyZWF0aW9uVGltZVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGV2ZW50RXhpc3RzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IG5ld0V2ZW50U2VyaWVzID0gdGhpcy5lY2hhcnRzT3B0aW9uc1NlcnZpY2UuZ2V0QWxhcm1PckV2ZW50U2VyaWVzKFxuICAgICAgICAgICAgZHAsXG4gICAgICAgICAgICByZW5kZXJUeXBlLFxuICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICBbYWxhcm1PckV2ZW50XSxcbiAgICAgICAgICAgICdldmVudCcsXG4gICAgICAgICAgICBkaXNwbGF5T3B0aW9ucyxcbiAgICAgICAgICAgIGFsYXJtT3JFdmVudC5jcmVhdGlvblRpbWUsXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICk7XG4gICAgICAgICAgYWxsRGF0YVNlcmllcy5wdXNoKC4uLm5ld0V2ZW50U2VyaWVzKTtcbiAgICAgICAgfSBlbHNlIGlmIChpc0FsYXJtKGFsYXJtT3JFdmVudCkpIHtcbiAgICAgICAgICBjb25zdCBhbGFybUV4aXN0cyA9IGFsbERhdGFTZXJpZXMuc29tZSgoc2VyaWVzOiBDdXN0b21TZXJpZXNPcHRpb25zKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXJpZXNEYXRhID0gc2VyaWVzWydkYXRhJ10gYXMgU2VyaWVzVmFsdWVbXTtcbiAgICAgICAgICAgIHJldHVybiBzZXJpZXNEYXRhLnNvbWUoXG4gICAgICAgICAgICAgIChkYXRhOiBTZXJpZXNWYWx1ZSkgPT4gZGF0YVswXSA9PT0gKGFsYXJtT3JFdmVudCBhcyBJRXZlbnQpLmNyZWF0aW9uVGltZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoYWxhcm1FeGlzdHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGFsYXJtU2VyaWVzID0gYWxsRGF0YVNlcmllcy5maWx0ZXIoKHNlcmllczogQ3VzdG9tU2VyaWVzT3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBzZXJpZXNEYXRhID0gc2VyaWVzWydkYXRhJ10gYXMgU2VyaWVzVmFsdWVbXTtcbiAgICAgICAgICAgICAgcmV0dXJuIHNlcmllc0RhdGEuc29tZShcbiAgICAgICAgICAgICAgICAoZGF0YTogU2VyaWVzVmFsdWUpID0+IGRhdGFbMF0gPT09IChhbGFybU9yRXZlbnQgYXMgSUFsYXJtKS5jcmVhdGlvblRpbWVcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gcmVtb3ZlIGFsbCBtYXRjaGluZyBhbGFybSBzZXJpZXMgd2hpY2ggYXJlIGluIHRoZSBhcnJheVxuICAgICAgICAgICAgYWxhcm1TZXJpZXMuZm9yRWFjaChzZXJpZXMgPT4ge1xuICAgICAgICAgICAgICBhbGxEYXRhU2VyaWVzID0gYWxsRGF0YVNlcmllcy5maWx0ZXIocyA9PiBzWydpZCddICE9PSBzZXJpZXNbJ2lkJ10pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IG5ld0FsYXJtU2VyaWVzID0gdGhpcy5lY2hhcnRzT3B0aW9uc1NlcnZpY2UuZ2V0QWxhcm1PckV2ZW50U2VyaWVzKFxuICAgICAgICAgICAgICBkcCxcbiAgICAgICAgICAgICAgcmVuZGVyVHlwZSxcbiAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgIFthbGFybU9yRXZlbnRdLFxuICAgICAgICAgICAgICAnYWxhcm0nLFxuICAgICAgICAgICAgICBkaXNwbGF5T3B0aW9ucyxcbiAgICAgICAgICAgICAgKGFsYXJtT3JFdmVudCBhcyBJQWxhcm0pLmNyZWF0aW9uVGltZSxcbiAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGFsbERhdGFTZXJpZXMucHVzaCguLi5uZXdBbGFybVNlcmllcyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0FsYXJtU2VyaWVzID0gdGhpcy5lY2hhcnRzT3B0aW9uc1NlcnZpY2UuZ2V0QWxhcm1PckV2ZW50U2VyaWVzKFxuICAgICAgICAgICAgICBkcCxcbiAgICAgICAgICAgICAgcmVuZGVyVHlwZSxcbiAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgIFthbGFybU9yRXZlbnRdLFxuICAgICAgICAgICAgICAnYWxhcm0nLFxuICAgICAgICAgICAgICBkaXNwbGF5T3B0aW9ucyxcbiAgICAgICAgICAgICAgKGFsYXJtT3JFdmVudCBhcyBJRXZlbnQpLmlkLFxuICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYWxsRGF0YVNlcmllcy5wdXNoKC4uLm5ld0FsYXJtU2VyaWVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5jaGVja0ZvclZhbHVlc0FmdGVyVGltZVJhbmdlKFxuICAgICAgICBzZXJpZXNNYXRjaGluZ0RhdGFwb2ludFsnZGF0YSddIGFzIFNlcmllc1ZhbHVlW10sXG4gICAgICAgIGRhdGFwb2ludCxcbiAgICAgICAgZGF0YXBvaW50T3V0T2ZTeW5jQ2FsbGJhY2tcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmVjaGFydHNJbnN0YW5jZT8uc2V0T3B0aW9uKHtcbiAgICAgIGRhdGFab29tOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnaW5zaWRlJyxcbiAgICAgICAgICBzdGFydFZhbHVlOiB0aGlzLmN1cnJlbnRUaW1lUmFuZ2U/LmRhdGVGcm9tLnZhbHVlT2YoKSxcbiAgICAgICAgICBlbmRWYWx1ZTogdGhpcy5jdXJyZW50VGltZVJhbmdlPy5kYXRlVG8udmFsdWVPZigpXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICB4QXhpczoge1xuICAgICAgICBtYXg6IHRoaXMuY3VycmVudFRpbWVSYW5nZT8uZGF0ZVRvXG4gICAgICB9LFxuICAgICAgc2VyaWVzOiBhbGxEYXRhU2VyaWVzXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRm9yVmFsdWVzQWZ0ZXJUaW1lUmFuZ2UoXG4gICAgZGF0YTogU2VyaWVzVmFsdWVbXSxcbiAgICBkYXRhcG9pbnQ6IERhdGFwb2ludHNHcmFwaEtQSURldGFpbHMsXG4gICAgZGF0YXBvaW50T3V0T2ZTeW5jQ2FsbGJhY2s6IChkcDogRGF0YXBvaW50c0dyYXBoS1BJRGV0YWlscykgPT4gdm9pZFxuICApIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGNvbnN0IHZhbHVlQWZ0ZXJOb3dFeGlzdHMgPSBkYXRhLnNvbWUoKFtkYXRlU3RyaW5nLCBfXTogU2VyaWVzVmFsdWUpID0+IHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlU3RyaW5nKS52YWx1ZU9mKCkgPiBub3cudmFsdWVPZigpO1xuICAgIH0pO1xuICAgIGlmICh2YWx1ZUFmdGVyTm93RXhpc3RzKSB7XG4gICAgICBkYXRhcG9pbnRPdXRPZlN5bmNDYWxsYmFjayhkYXRhcG9pbnQpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQtcmVhbHRpbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2VjaGFydC9zZXJ2aWNlcy9jaGFydC1yZWFsdGltZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUV2RSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBVzFFLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLDBCQUEwQixFQUUzQixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7O0FBTWxFLE1BQU0sT0FBTyxvQkFBb0I7SUFVL0IsWUFDVSxtQkFBK0MsRUFDL0Msb0JBQTBDLEVBQzFDLG9CQUEwQyxFQUMxQyxxQkFBNEM7UUFINUMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUE0QjtRQUMvQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQWI5QyxhQUFRLEdBQWlCLElBQUksQ0FBQztRQUM5Qix5QkFBb0IsR0FBaUIsR0FBRyxDQUFDO1FBQ3pDLHlCQUFvQixHQUFpQixLQUFLLENBQUM7UUFLM0MscUJBQWdCLEdBQStDLElBQUksR0FBRyxFQUFFLENBQUM7SUFPOUUsQ0FBQztJQUVKLGFBQWEsQ0FDWCxlQUF3QixFQUN4QixVQUF1QyxFQUN2QyxTQUErQyxFQUMvQywwQkFBbUUsRUFDbkUsd0JBRVMsRUFDVCxxQkFBNkMsRUFBRSxFQUMvQyxjQUFt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QUFNLENBQWtCLEVBQ2hELFNBQVMsRUFDVCwwQkFBMEIsQ0FDM0IsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsRUFBRSxTQUFTLENBQUM7WUFDOUIsUUFBUSxFQUFFO2dCQUNSO29CQUNFLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLE9BQU8sRUFBRTtvQkFDckQsUUFBUSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFO2lCQUNsRDthQUNGO1lBQ0QsS0FBSyxFQUFFO2dCQUNMLEdBQUcsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsTUFBTTthQUNuQztZQUNELE1BQU0sRUFBRSxhQUFhO1NBQ3RCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyw0QkFBNEIsQ0FDbEMsSUFBbUIsRUFDbkIsU0FBb0MsRUFDcEMsMEJBQW1FO1FBRW5FLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFjLEVBQUUsRUFBRTtZQUNyRSxPQUFPLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksbUJBQW1CLEVBQUUsQ0FBQztZQUN4QiwwQkFBMEIsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQzsrR0EvU1Usb0JBQW9CO21IQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tLCBpbnRlcnZhbCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgSUFsYXJtLCBJRXZlbnQsIElNZWFzdXJlbWVudCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGJ1ZmZlciwgbWFwLCBtZXJnZU1hcCwgdGFwLCB0aHJvdHRsZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBBbGFybU9yRXZlbnRFeHRlbmRlZCxcbiAgRGF0YXBvaW50Q2hhcnRSZW5kZXJUeXBlLFxuICBEYXRhcG9pbnRSZWFsdGltZU1lYXN1cmVtZW50cyxcbiAgRGF0YXBvaW50c0dyYXBoS1BJRGV0YWlscyxcbiAgRGF0YXBvaW50c0dyYXBoV2lkZ2V0Q29uZmlnLFxuICBHcmFwaERpc3BsYXlPcHRpb25zLFxuICBEcFdpdGhWYWx1ZXMsXG4gIFNlcmllc1ZhbHVlXG59IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQge1xuICBBbGFybVJlYWx0aW1lU2VydmljZSxcbiAgRXZlbnRSZWFsdGltZVNlcnZpY2UsXG4gIE1lYXN1cmVtZW50UmVhbHRpbWVTZXJ2aWNlLFxuICBSZWFsdGltZU1lc3NhZ2Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgdHlwZSB7IEVDaGFydHMsIFNlcmllc09wdGlvbiB9IGZyb20gJ2VjaGFydHMnO1xuaW1wb3J0IHsgRWNoYXJ0c09wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9lY2hhcnRzLW9wdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBDdXN0b21TZXJpZXNPcHRpb25zIH0gZnJvbSAnLi4vbW9kZWxzL2NoYXJ0Lm1vZGVsJztcblxudHlwZSBNaWxsaXNlY29uZHMgPSBudW1iZXI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDaGFydFJlYWx0aW1lU2VydmljZSB7XG4gIHByaXZhdGUgSU5URVJWQUw6IE1pbGxpc2Vjb25kcyA9IDEwMDA7XG4gIHByaXZhdGUgTUlOX1JFQUxUSU1FX1RJTUVPVVQ6IE1pbGxpc2Vjb25kcyA9IDI1MDtcbiAgcHJpdmF0ZSBNQVhfUkVBTFRJTUVfVElNRU9VVDogTWlsbGlzZWNvbmRzID0gNV8wMDA7XG4gIHByaXZhdGUgcmVhbHRpbWVTdWJzY3JpcHRpb25NZWFzdXJlbWVudHMhOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgcmVhbHRpbWVTdWJzY3JpcHRpb25BbGFybXNFdmVudHMhOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgZWNoYXJ0c0luc3RhbmNlOiBFQ2hhcnRzIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGN1cnJlbnRUaW1lUmFuZ2U6IHsgZGF0ZUZyb206IERhdGU7IGRhdGVUbzogRGF0ZSB9IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGxhc3RNZWFzdXJlbWVudHM6IE1hcDxzdHJpbmcsIERhdGFwb2ludFJlYWx0aW1lTWVhc3VyZW1lbnRzPiA9IG5ldyBNYXAoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG1lYXN1cmVtZW50UmVhbHRpbWU6IE1lYXN1cmVtZW50UmVhbHRpbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWxhcm1SZWFsdGltZVNlcnZpY2U6IEFsYXJtUmVhbHRpbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZXZlbnRSZWFsdGltZVNlcnZpY2U6IEV2ZW50UmVhbHRpbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWNoYXJ0c09wdGlvbnNTZXJ2aWNlOiBFY2hhcnRzT3B0aW9uc1NlcnZpY2VcbiAgKSB7fVxuXG4gIHN0YXJ0UmVhbHRpbWUoXG4gICAgZWNoYXJ0c0luc3RhbmNlOiBFQ2hhcnRzLFxuICAgIGRhdGFwb2ludHM6IERhdGFwb2ludHNHcmFwaEtQSURldGFpbHNbXSxcbiAgICB0aW1lUmFuZ2U6IHsgZGF0ZUZyb206IHN0cmluZzsgZGF0ZVRvOiBzdHJpbmcgfSxcbiAgICBkYXRhcG9pbnRPdXRPZlN5bmNDYWxsYmFjazogKGRwOiBEYXRhcG9pbnRzR3JhcGhLUElEZXRhaWxzKSA9PiB2b2lkLFxuICAgIHRpbWVSYW5nZUNoYW5nZWRDYWxsYmFjazogKFxuICAgICAgdGltZVJhbmdlOiBQaWNrPERhdGFwb2ludHNHcmFwaFdpZGdldENvbmZpZywgJ2RhdGVGcm9tJyB8ICdkYXRlVG8nPlxuICAgICkgPT4gdm9pZCxcbiAgICBhbGFybU9yRXZlbnRDb25maWc6IEFsYXJtT3JFdmVudEV4dGVuZGVkW10gPSBbXSxcbiAgICBkaXNwbGF5T3B0aW9uczogR3JhcGhEaXNwbGF5T3B0aW9uc1xuICApIHtcbiAgICB0aGlzLmVjaGFydHNJbnN0YW5jZSA9IGVjaGFydHNJbnN0YW5jZTtcbiAgICB0aGlzLmN1cnJlbnRUaW1lUmFuZ2UgPSB7XG4gICAgICBkYXRlRnJvbTogbmV3IERhdGUodGltZVJhbmdlLmRhdGVGcm9tKSxcbiAgICAgIGRhdGVUbzogbmV3IERhdGUodGltZVJhbmdlLmRhdGVUbylcbiAgICB9O1xuXG4gICAgY29uc3QgYWN0aXZlQWxhcm1zT3JFdmVudHMgPSBhbGFybU9yRXZlbnRDb25maWcuZmlsdGVyKFxuICAgICAgYWxhcm1PckV2ZW50ID0+IGFsYXJtT3JFdmVudC5fX2FjdGl2ZSAmJiAhYWxhcm1PckV2ZW50Ll9faGlkZGVuXG4gICAgKTtcbiAgICBjb25zdCB1bmlxdWVBbGFybU9yRXZlbnRUYXJnZXRzID0gQXJyYXkuZnJvbShcbiAgICAgIG5ldyBTZXQoYWN0aXZlQWxhcm1zT3JFdmVudHMubWFwKGFPckUgPT4gYU9yRS5fX3RhcmdldC5pZCkpXG4gICAgKTtcblxuICAgIGNvbnN0IGFsbEFsYXJtc0FuZEV2ZW50cyQ6IE9ic2VydmFibGU8SUFsYXJtIHwgSUV2ZW50PiA9IGZyb20odW5pcXVlQWxhcm1PckV2ZW50VGFyZ2V0cykucGlwZShcbiAgICAgIG1lcmdlTWFwKHRhcmdldElkID0+IHtcbiAgICAgICAgY29uc3QgYWxhcm1zUmVhbHRpbWUkOiBPYnNlcnZhYmxlPFJlYWx0aW1lTWVzc2FnZTxJQWxhcm0+PiA9XG4gICAgICAgICAgdGhpcy5hbGFybVJlYWx0aW1lU2VydmljZS5vbkFsbCQodGFyZ2V0SWQpO1xuICAgICAgICBjb25zdCBldmVudHNSZWFsdGltZSQ6IE9ic2VydmFibGU8UmVhbHRpbWVNZXNzYWdlPElFdmVudD4+ID1cbiAgICAgICAgICB0aGlzLmV2ZW50UmVhbHRpbWVTZXJ2aWNlLm9uQWxsJCh0YXJnZXRJZCk7XG4gICAgICAgIHJldHVybiBtZXJnZShhbGFybXNSZWFsdGltZSQsIGV2ZW50c1JlYWx0aW1lJCkucGlwZShcbiAgICAgICAgICBtYXAocmVhbHRpbWVNZXNzYWdlID0+IHJlYWx0aW1lTWVzc2FnZS5kYXRhIGFzIElBbGFybSB8IElFdmVudClcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IG1lYXN1cmVtZW50c0ZvckRhdGFwb2ludHM6IE9ic2VydmFibGU8RGF0YXBvaW50UmVhbHRpbWVNZWFzdXJlbWVudHM+W10gPSBkYXRhcG9pbnRzLm1hcChcbiAgICAgIGRwID0+IHtcbiAgICAgICAgY29uc3Qgc291cmNlJDogT2JzZXJ2YWJsZTxJTWVhc3VyZW1lbnQ+ID1cbiAgICAgICAgICB0aGlzLm1lYXN1cmVtZW50UmVhbHRpbWUub25DcmVhdGVPZlNwZWNpZmljTWVhc3VyZW1lbnQkKFxuICAgICAgICAgICAgZHAuZnJhZ21lbnQsXG4gICAgICAgICAgICBkcC5zZXJpZXMsXG4gICAgICAgICAgICBkcC5fX3RhcmdldD8uaWRcbiAgICAgICAgICApO1xuICAgICAgICByZXR1cm4gc291cmNlJC5waXBlKG1hcCgobWVhc3VyZW1lbnQ6IElNZWFzdXJlbWVudCkgPT4gKHsgZGF0YXBvaW50OiBkcCwgbWVhc3VyZW1lbnQgfSkpKTtcbiAgICAgIH1cbiAgICApO1xuICAgIGNvbnN0IHVwZGF0ZVRocm90dGxlVGltZTogTWlsbGlzZWNvbmRzID0gdGhpcy5nZXRSZWFsdGltZVVwZGF0ZVRocm90dGxlVGltZSh0aW1lUmFuZ2UpO1xuICAgIGNvbnN0IG1lYXN1cmVtZW50JCA9IG1lcmdlKC4uLm1lYXN1cmVtZW50c0ZvckRhdGFwb2ludHMpO1xuICAgIGNvbnN0IGJ1ZmZlclJlc2V0JCA9IG1lcmdlKFxuICAgICAgbWVhc3VyZW1lbnQkLnBpcGUodGhyb3R0bGVUaW1lKHVwZGF0ZVRocm90dGxlVGltZSkpLFxuICAgICAgaW50ZXJ2YWwodGhpcy5JTlRFUlZBTCkucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRUaW1lUmFuZ2UgPSB7XG4gICAgICAgICAgICBkYXRlRnJvbTogbmV3IERhdGUoKHRoaXMuY3VycmVudFRpbWVSYW5nZT8uZGF0ZUZyb20/LnZhbHVlT2YoKSB8fCAwKSArIHRoaXMuSU5URVJWQUwpLFxuICAgICAgICAgICAgZGF0ZVRvOiBuZXcgRGF0ZSgodGhpcy5jdXJyZW50VGltZVJhbmdlPy5kYXRlVG8/LnZhbHVlT2YoKSB8fCAwKSArIHRoaXMuSU5URVJWQUwpXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aW1lUmFuZ2VDaGFuZ2VkQ2FsbGJhY2sodGhpcy5jdXJyZW50VGltZVJhbmdlKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRocm90dGxlVGltZSh1cGRhdGVUaHJvdHRsZVRpbWUpXG4gICAgICApXG4gICAgKS5waXBlKHRocm90dGxlVGltZSh0aGlzLk1JTl9SRUFMVElNRV9USU1FT1VUKSk7XG5cbiAgICB0aGlzLnJlYWx0aW1lU3Vic2NyaXB0aW9uTWVhc3VyZW1lbnRzID0gbWVhc3VyZW1lbnQkXG4gICAgICAucGlwZShidWZmZXIoYnVmZmVyUmVzZXQkKSlcbiAgICAgIC5zdWJzY3JpYmUobWVhc3VyZW1lbnRzID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVDaGFydEluc3RhbmNlKG1lYXN1cmVtZW50cywgbnVsbCwgZGlzcGxheU9wdGlvbnMsIGRhdGFwb2ludE91dE9mU3luY0NhbGxiYWNrKTtcblxuICAgICAgICAvLyBTdG9yZSB0aGUgbGFzdCBtZWFzdXJlbWVudHNcbiAgICAgICAgbWVhc3VyZW1lbnRzLmZvckVhY2gobWVhc3VyZW1lbnQgPT4ge1xuICAgICAgICAgIHRoaXMubGFzdE1lYXN1cmVtZW50cy5zZXQobWVhc3VyZW1lbnQuZGF0YXBvaW50LmZyYWdtZW50LCBtZWFzdXJlbWVudCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnJlYWx0aW1lU3Vic2NyaXB0aW9uQWxhcm1zRXZlbnRzID0gYWxsQWxhcm1zQW5kRXZlbnRzJFxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChhbGFybU9yRXZlbnQgPT4ge1xuICAgICAgICAgIGNvbnN0IGZvdW5kQWxhcm1PckV2ZW50ID0gYWN0aXZlQWxhcm1zT3JFdmVudHMuZmluZChhT3JFID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhT3JFLmZpbHRlcnMudHlwZSA9PT0gYWxhcm1PckV2ZW50LnR5cGU7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGZvdW5kQWxhcm1PckV2ZW50KSB7XG4gICAgICAgICAgICBhbGFybU9yRXZlbnRbJ2NvbG9yJ10gPSBmb3VuZEFsYXJtT3JFdmVudC5jb2xvcjtcbiAgICAgICAgICAgIGFsYXJtT3JFdmVudFsnc2VsZWN0ZWREYXRhcG9pbnQnXSA9IGZvdW5kQWxhcm1PckV2ZW50LnNlbGVjdGVkRGF0YXBvaW50O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChmb3VuZEFsYXJtT3JFdmVudCkge1xuICAgICAgICAgICAgY29uc3QgZnJhZ21lbnQgPSBhbGFybU9yRXZlbnRbJ3NlbGVjdGVkRGF0YXBvaW50J10uZnJhZ21lbnQ7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXN0TWVhc3VyZW1lbnRzLmhhcyhmcmFnbWVudCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgbGFzdE1lYXN1cmVtZW50ID0gdGhpcy5sYXN0TWVhc3VyZW1lbnRzLmdldChmcmFnbWVudCk7XG5cbiAgICAgICAgICAgICAgdGhpcy51cGRhdGVDaGFydEluc3RhbmNlKFxuICAgICAgICAgICAgICAgIFtsYXN0TWVhc3VyZW1lbnRdLFxuICAgICAgICAgICAgICAgIGFsYXJtT3JFdmVudCxcbiAgICAgICAgICAgICAgICBkaXNwbGF5T3B0aW9ucyxcbiAgICAgICAgICAgICAgICBkYXRhcG9pbnRPdXRPZlN5bmNDYWxsYmFja1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmb3VuZEFsYXJtT3JFdmVudCA/IGFsYXJtT3JFdmVudCA6IG51bGw7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBzdG9wUmVhbHRpbWUoKSB7XG4gICAgdGhpcy5yZWFsdGltZVN1YnNjcmlwdGlvbk1lYXN1cmVtZW50cz8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnJlYWx0aW1lU3Vic2NyaXB0aW9uQWxhcm1zRXZlbnRzPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVWYWx1ZXNCZWZvcmVUaW1lUmFuZ2Uoc2VyaWVzOiBTZXJpZXNPcHRpb24pOiBTZXJpZXNWYWx1ZVtdIHtcbiAgICBjb25zdCBmaXJzdFZhbGlkVmFsdWVCeURhdGVJbmRleCA9IChzZXJpZXMuZGF0YSBhcyBTZXJpZXNWYWx1ZVtdKS5maW5kSW5kZXgoXG4gICAgICAoW2RhdGVTdHJpbmcsIF9dKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlU3RyaW5nKSA+PSAodGhpcy5jdXJyZW50VGltZVJhbmdlPy5kYXRlRnJvbSB8fCBuZXcgRGF0ZSgpKTtcbiAgICAgIH1cbiAgICApO1xuICAgIGlmIChmaXJzdFZhbGlkVmFsdWVCeURhdGVJbmRleCA+IDEpIHtcbiAgICAgIC8vIHdlIG5lZWQgb25lIHZhbHVlIGJlZm9yZSBkYXRlRnJvbSBmb3IgY2hhcnQgbGluZXMgdG8gYmUgZXh0ZW5kZWQgdG8gdGhlIGxlZnQgZWRnZSBvZiB0aGUgZ3JhcGhcbiAgICAgIHNlcmllcy5kYXRhID0gKHNlcmllcy5kYXRhIGFzIFNlcmllc1ZhbHVlW10pLnNsaWNlKGZpcnN0VmFsaWRWYWx1ZUJ5RGF0ZUluZGV4IC0gMSk7XG4gICAgfVxuICAgIHJldHVybiBzZXJpZXMuZGF0YSBhcyBTZXJpZXNWYWx1ZVtdO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZWFsdGltZVVwZGF0ZVRocm90dGxlVGltZSh0aW1lUmFuZ2U6IHtcbiAgICBkYXRlRnJvbTogc3RyaW5nO1xuICAgIGRhdGVUbzogc3RyaW5nO1xuICB9KTogTWlsbGlzZWNvbmRzIHtcbiAgICBjb25zdCB0aW1lUmFuZ2VJbk1zID1cbiAgICAgIG5ldyBEYXRlKHRpbWVSYW5nZS5kYXRlVG8pLnZhbHVlT2YoKSAtIG5ldyBEYXRlKHRpbWVSYW5nZS5kYXRlRnJvbSkudmFsdWVPZigpO1xuICAgIGNvbnN0IGNhbGN1bGF0ZWRUaHJvdHRsZVRpbWUgPSBNYXRoLnJvdW5kKHRpbWVSYW5nZUluTXMgLyAxMDAwKTtcbiAgICBpZiAoY2FsY3VsYXRlZFRocm90dGxlVGltZSA8IHRoaXMuTUlOX1JFQUxUSU1FX1RJTUVPVVQpIHtcbiAgICAgIHJldHVybiB0aGlzLk1JTl9SRUFMVElNRV9USU1FT1VUO1xuICAgIH0gZWxzZSBpZiAoY2FsY3VsYXRlZFRocm90dGxlVGltZSA+IHRoaXMuTUFYX1JFQUxUSU1FX1RJTUVPVVQpIHtcbiAgICAgIHJldHVybiB0aGlzLk1BWF9SRUFMVElNRV9USU1FT1VUO1xuICAgIH1cbiAgICByZXR1cm4gY2FsY3VsYXRlZFRocm90dGxlVGltZTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ2hhcnRJbnN0YW5jZShcbiAgICByZWNlaXZlZE1lYXN1cmVtZW50czogRGF0YXBvaW50UmVhbHRpbWVNZWFzdXJlbWVudHNbXSxcbiAgICBhbGFybU9yRXZlbnQ6IElBbGFybSB8IElFdmVudCB8IG51bGwsXG4gICAgZGlzcGxheU9wdGlvbnM6IEdyYXBoRGlzcGxheU9wdGlvbnMsXG4gICAgZGF0YXBvaW50T3V0T2ZTeW5jQ2FsbGJhY2s6IChkcDogRGF0YXBvaW50c0dyYXBoS1BJRGV0YWlscykgPT4gdm9pZFxuICApIHtcbiAgICBjb25zdCBpc0V2ZW50ID0gKGl0ZW06IElBbGFybSB8IElFdmVudCk6IGl0ZW0gaXMgSUV2ZW50ID0+ICEoJ3NldmVyaXR5JyBpbiBpdGVtKTtcbiAgICBjb25zdCBpc0FsYXJtID0gKGl0ZW06IElBbGFybSB8IElFdmVudCk6IGl0ZW0gaXMgSUFsYXJtID0+ICdzZXZlcml0eScgaW4gaXRlbTtcblxuICAgIGNvbnN0IHNlcmllc0RhdGFUb1VwZGF0ZSA9IG5ldyBNYXA8RGF0YXBvaW50c0dyYXBoS1BJRGV0YWlscywgSU1lYXN1cmVtZW50W10+KCk7XG5cbiAgICByZWNlaXZlZE1lYXN1cmVtZW50cy5mb3JFYWNoKCh7IGRhdGFwb2ludCwgbWVhc3VyZW1lbnQgfSkgPT4ge1xuICAgICAgaWYgKCFzZXJpZXNEYXRhVG9VcGRhdGUuaGFzKGRhdGFwb2ludCkpIHtcbiAgICAgICAgc2VyaWVzRGF0YVRvVXBkYXRlLnNldChkYXRhcG9pbnQsIFtdKTtcbiAgICAgIH1cbiAgICAgIHNlcmllc0RhdGFUb1VwZGF0ZS5nZXQoZGF0YXBvaW50KT8ucHVzaChtZWFzdXJlbWVudCk7XG4gICAgfSk7XG5cbiAgICBsZXQgYWxsRGF0YVNlcmllcyA9IHRoaXMuZWNoYXJ0c0luc3RhbmNlPy5nZXRPcHRpb24oKVsnc2VyaWVzJ10gYXMgQ3VzdG9tU2VyaWVzT3B0aW9uc1tdO1xuXG4gICAgc2VyaWVzRGF0YVRvVXBkYXRlLmZvckVhY2goKG1lYXN1cmVtZW50cywgZGF0YXBvaW50KSA9PiB7XG4gICAgICBjb25zdCBuZXdWYWx1ZXM6IFNlcmllc1ZhbHVlW10gPSBtZWFzdXJlbWVudHMubWFwKG0gPT4gW1xuICAgICAgICBtLnRpbWUgYXMgc3RyaW5nLFxuICAgICAgICBtW2RhdGFwb2ludC5mcmFnbWVudF1bZGF0YXBvaW50LnNlcmllc10udmFsdWVcbiAgICAgIF0pO1xuICAgICAgY29uc3QgZGF0YXBvaW50SWQgPSBkYXRhcG9pbnQuX190YXJnZXQ/LmlkICsgZGF0YXBvaW50LmZyYWdtZW50ICsgZGF0YXBvaW50LnNlcmllcztcbiAgICAgIGNvbnN0IHNlcmllc01hdGNoaW5nRGF0YXBvaW50ID0gYWxsRGF0YVNlcmllcy5maW5kKHMgPT4gc1snZGF0YXBvaW50SWQnXSA9PT0gZGF0YXBvaW50SWQpO1xuICAgICAgaWYgKCFzZXJpZXNNYXRjaGluZ0RhdGFwb2ludCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBzZXJpZXNEYXRhVG9VcGRhdGUgPSBzZXJpZXNNYXRjaGluZ0RhdGFwb2ludFsnZGF0YSddIGFzIFNlcmllc1ZhbHVlW107XG4gICAgICBzZXJpZXNEYXRhVG9VcGRhdGUucHVzaCguLi5uZXdWYWx1ZXMpO1xuXG4gICAgICBzZXJpZXNNYXRjaGluZ0RhdGFwb2ludFsnZGF0YSddID0gdGhpcy5yZW1vdmVWYWx1ZXNCZWZvcmVUaW1lUmFuZ2Uoc2VyaWVzTWF0Y2hpbmdEYXRhcG9pbnQpO1xuXG4gICAgICBpZiAoYWxhcm1PckV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHJlbmRlclR5cGU6IERhdGFwb2ludENoYXJ0UmVuZGVyVHlwZSA9IGRhdGFwb2ludC5yZW5kZXJUeXBlIHx8ICdtaW4nO1xuICAgICAgICBjb25zdCBkcDogRHBXaXRoVmFsdWVzID0ge1xuICAgICAgICAgIC4uLmRhdGFwb2ludCxcbiAgICAgICAgICB2YWx1ZXM6IHNlcmllc01hdGNoaW5nRGF0YXBvaW50WydkYXRhJ10gYXMge1xuICAgICAgICAgICAgW2RhdGU6IHN0cmluZ106IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH1bXTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGlzRXZlbnQoYWxhcm1PckV2ZW50KSkge1xuICAgICAgICAgIC8vIGlmIGV2ZW50IHNlcmllcyB3aXRoIHRoZSBzYW1lIGlkIGFscmVhZHkgZXhpc3RzLCByZXR1cm5cbiAgICAgICAgICBjb25zdCBldmVudEV4aXN0cyA9IGFsbERhdGFTZXJpZXMuc29tZShzZXJpZXMgPT5cbiAgICAgICAgICAgIChzZXJpZXNbJ2RhdGEnXSBhcyBzdHJpbmdbXVtdKS5zb21lKFxuICAgICAgICAgICAgICBkYXRhID0+IGRhdGFbMF0gPT09IChhbGFybU9yRXZlbnQgYXMgSUV2ZW50KS5jcmVhdGlvblRpbWVcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChldmVudEV4aXN0cykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBuZXdFdmVudFNlcmllcyA9IHRoaXMuZWNoYXJ0c09wdGlvbnNTZXJ2aWNlLmdldEFsYXJtT3JFdmVudFNlcmllcyhcbiAgICAgICAgICAgIGRwLFxuICAgICAgICAgICAgcmVuZGVyVHlwZSxcbiAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgW2FsYXJtT3JFdmVudF0sXG4gICAgICAgICAgICAnZXZlbnQnLFxuICAgICAgICAgICAgZGlzcGxheU9wdGlvbnMsXG4gICAgICAgICAgICBhbGFybU9yRXZlbnQuY3JlYXRpb25UaW1lLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICApO1xuICAgICAgICAgIGFsbERhdGFTZXJpZXMucHVzaCguLi5uZXdFdmVudFNlcmllcyk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBbGFybShhbGFybU9yRXZlbnQpKSB7XG4gICAgICAgICAgY29uc3QgYWxhcm1FeGlzdHMgPSBhbGxEYXRhU2VyaWVzLnNvbWUoKHNlcmllczogQ3VzdG9tU2VyaWVzT3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VyaWVzRGF0YSA9IHNlcmllc1snZGF0YSddIGFzIFNlcmllc1ZhbHVlW107XG4gICAgICAgICAgICByZXR1cm4gc2VyaWVzRGF0YS5zb21lKFxuICAgICAgICAgICAgICAoZGF0YTogU2VyaWVzVmFsdWUpID0+IGRhdGFbMF0gPT09IChhbGFybU9yRXZlbnQgYXMgSUV2ZW50KS5jcmVhdGlvblRpbWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGFsYXJtRXhpc3RzKSB7XG4gICAgICAgICAgICBjb25zdCBhbGFybVNlcmllcyA9IGFsbERhdGFTZXJpZXMuZmlsdGVyKChzZXJpZXM6IEN1c3RvbVNlcmllc09wdGlvbnMpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc2VyaWVzRGF0YSA9IHNlcmllc1snZGF0YSddIGFzIFNlcmllc1ZhbHVlW107XG4gICAgICAgICAgICAgIHJldHVybiBzZXJpZXNEYXRhLnNvbWUoXG4gICAgICAgICAgICAgICAgKGRhdGE6IFNlcmllc1ZhbHVlKSA9PiBkYXRhWzBdID09PSAoYWxhcm1PckV2ZW50IGFzIElBbGFybSkuY3JlYXRpb25UaW1lXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIHJlbW92ZSBhbGwgbWF0Y2hpbmcgYWxhcm0gc2VyaWVzIHdoaWNoIGFyZSBpbiB0aGUgYXJyYXlcbiAgICAgICAgICAgIGFsYXJtU2VyaWVzLmZvckVhY2goc2VyaWVzID0+IHtcbiAgICAgICAgICAgICAgYWxsRGF0YVNlcmllcyA9IGFsbERhdGFTZXJpZXMuZmlsdGVyKHMgPT4gc1snaWQnXSAhPT0gc2VyaWVzWydpZCddKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBuZXdBbGFybVNlcmllcyA9IHRoaXMuZWNoYXJ0c09wdGlvbnNTZXJ2aWNlLmdldEFsYXJtT3JFdmVudFNlcmllcyhcbiAgICAgICAgICAgICAgZHAsXG4gICAgICAgICAgICAgIHJlbmRlclR5cGUsXG4gICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICBbYWxhcm1PckV2ZW50XSxcbiAgICAgICAgICAgICAgJ2FsYXJtJyxcbiAgICAgICAgICAgICAgZGlzcGxheU9wdGlvbnMsXG4gICAgICAgICAgICAgIChhbGFybU9yRXZlbnQgYXMgSUFsYXJtKS5jcmVhdGlvblRpbWUsXG4gICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhbGxEYXRhU2VyaWVzLnB1c2goLi4ubmV3QWxhcm1TZXJpZXMpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBuZXdBbGFybVNlcmllcyA9IHRoaXMuZWNoYXJ0c09wdGlvbnNTZXJ2aWNlLmdldEFsYXJtT3JFdmVudFNlcmllcyhcbiAgICAgICAgICAgICAgZHAsXG4gICAgICAgICAgICAgIHJlbmRlclR5cGUsXG4gICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICBbYWxhcm1PckV2ZW50XSxcbiAgICAgICAgICAgICAgJ2FsYXJtJyxcbiAgICAgICAgICAgICAgZGlzcGxheU9wdGlvbnMsXG4gICAgICAgICAgICAgIChhbGFybU9yRXZlbnQgYXMgSUV2ZW50KS5pZCxcbiAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGFsbERhdGFTZXJpZXMucHVzaCguLi5uZXdBbGFybVNlcmllcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2hlY2tGb3JWYWx1ZXNBZnRlclRpbWVSYW5nZShcbiAgICAgICAgc2VyaWVzTWF0Y2hpbmdEYXRhcG9pbnRbJ2RhdGEnXSBhcyBTZXJpZXNWYWx1ZVtdLFxuICAgICAgICBkYXRhcG9pbnQsXG4gICAgICAgIGRhdGFwb2ludE91dE9mU3luY0NhbGxiYWNrXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgdGhpcy5lY2hhcnRzSW5zdGFuY2U/LnNldE9wdGlvbih7XG4gICAgICBkYXRhWm9vbTogW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2luc2lkZScsXG4gICAgICAgICAgc3RhcnRWYWx1ZTogdGhpcy5jdXJyZW50VGltZVJhbmdlPy5kYXRlRnJvbS52YWx1ZU9mKCksXG4gICAgICAgICAgZW5kVmFsdWU6IHRoaXMuY3VycmVudFRpbWVSYW5nZT8uZGF0ZVRvLnZhbHVlT2YoKVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgeEF4aXM6IHtcbiAgICAgICAgbWF4OiB0aGlzLmN1cnJlbnRUaW1lUmFuZ2U/LmRhdGVUb1xuICAgICAgfSxcbiAgICAgIHNlcmllczogYWxsRGF0YVNlcmllc1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0ZvclZhbHVlc0FmdGVyVGltZVJhbmdlKFxuICAgIGRhdGE6IFNlcmllc1ZhbHVlW10sXG4gICAgZGF0YXBvaW50OiBEYXRhcG9pbnRzR3JhcGhLUElEZXRhaWxzLFxuICAgIGRhdGFwb2ludE91dE9mU3luY0NhbGxiYWNrOiAoZHA6IERhdGFwb2ludHNHcmFwaEtQSURldGFpbHMpID0+IHZvaWRcbiAgKSB7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCB2YWx1ZUFmdGVyTm93RXhpc3RzID0gZGF0YS5zb21lKChbZGF0ZVN0cmluZywgX106IFNlcmllc1ZhbHVlKSA9PiB7XG4gICAgICByZXR1cm4gbmV3IERhdGUoZGF0ZVN0cmluZykudmFsdWVPZigpID4gbm93LnZhbHVlT2YoKTtcbiAgICB9KTtcbiAgICBpZiAodmFsdWVBZnRlck5vd0V4aXN0cykge1xuICAgICAgZGF0YXBvaW50T3V0T2ZTeW5jQ2FsbGJhY2soZGF0YXBvaW50KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|