@cdklabs/multi-az-observability 0.0.1-alpha.39 → 0.0.1-alpha.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/.jsii +1830 -604
  2. package/API.md +4724 -1382
  3. package/README.md +14 -14
  4. package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.d.ts +11 -9
  5. package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.js +10 -10
  6. package/lib/alarmsandrules/props/BaseOperationRegionalAlarmsAndRulesProps.d.ts +4 -3
  7. package/lib/alarmsandrules/props/BaseOperationRegionalAlarmsAndRulesProps.js +1 -1
  8. package/lib/azmapper/AvailabilityZoneMapper.js +1 -1
  9. package/lib/basic_observability/BasicServiceMultiAZObservability.js +4 -6
  10. package/lib/basic_observability/props/ApplicationLoadBalancerDetectionProps.d.ts +2 -1
  11. package/lib/basic_observability/props/ApplicationLoadBalancerDetectionProps.js +1 -1
  12. package/lib/canaries/CanaryFunction.js +3 -3
  13. package/lib/canaries/src/canary.zip +0 -0
  14. package/lib/dashboards/ContributorInsightsWidget.d.ts +1 -1
  15. package/lib/dashboards/ContributorInsightsWidget.js +12 -16
  16. package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.js +8 -8
  17. package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.js +4 -4
  18. package/lib/index.d.ts +54 -29
  19. package/lib/index.js +32 -19
  20. package/lib/metrics/ApplicationLoadBalancerMetrics.d.ts +3 -3
  21. package/lib/metrics/ApplicationLoadBalancerMetrics.js +5 -8
  22. package/lib/monitoring/src/monitoring-layer.zip +0 -0
  23. package/lib/outlier-detection/src/outlier-detection.zip +0 -0
  24. package/lib/outlier-detection/src/scipy-layer.zip +0 -0
  25. package/lib/services/CanaryMetrics.d.ts +4 -3
  26. package/lib/services/CanaryMetrics.js +3 -4
  27. package/lib/services/CanaryTestAvailabilityMetricsOverride.d.ts +21 -0
  28. package/lib/services/CanaryTestAvailabilityMetricsOverride.js +23 -0
  29. package/lib/services/CanaryTestLatencyMetricsOverride.d.ts +15 -0
  30. package/lib/services/CanaryTestLatencyMetricsOverride.js +20 -0
  31. package/lib/services/CanaryTestMetricsOverride.d.ts +1 -13
  32. package/lib/services/CanaryTestMetricsOverride.js +2 -4
  33. package/lib/services/ContributorInsightRuleDetails.js +1 -1
  34. package/lib/services/ICanaryMetrics.d.ts +4 -3
  35. package/lib/services/ICanaryMetrics.js +1 -1
  36. package/lib/services/ICanaryTestAvailabilityMetricsOverride.d.ts +23 -0
  37. package/lib/services/ICanaryTestAvailabilityMetricsOverride.js +3 -0
  38. package/lib/services/ICanaryTestLatencyMetricsOverride.d.ts +13 -0
  39. package/lib/services/ICanaryTestLatencyMetricsOverride.js +3 -0
  40. package/lib/services/ICanaryTestMetricsOverride.d.ts +0 -12
  41. package/lib/services/ICanaryTestMetricsOverride.js +1 -1
  42. package/lib/services/IInstrumentedServiceMultiAZObservability.d.ts +13 -3
  43. package/lib/services/IInstrumentedServiceMultiAZObservability.js +1 -1
  44. package/lib/services/IOperation.d.ts +8 -6
  45. package/lib/services/IOperation.js +1 -1
  46. package/lib/services/IOperationAvailabilityMetricDetails.d.ts +18 -0
  47. package/lib/services/IOperationAvailabilityMetricDetails.js +3 -0
  48. package/lib/services/IOperationLatencyMetricDetails.d.ts +12 -0
  49. package/lib/services/IOperationLatencyMetricDetails.js +3 -0
  50. package/lib/services/IOperationMetricDetails.d.ts +0 -12
  51. package/lib/services/IOperationMetricDetails.js +1 -1
  52. package/lib/services/IService.d.ts +4 -3
  53. package/lib/services/IService.js +1 -1
  54. package/lib/services/IServiceAvailabilityMetricDetails.d.ts +18 -0
  55. package/lib/services/IServiceAvailabilityMetricDetails.js +3 -0
  56. package/lib/services/IServiceLatencyMetricDetails.d.ts +12 -0
  57. package/lib/services/IServiceLatencyMetricDetails.js +3 -0
  58. package/lib/services/IServiceMetricDetails.d.ts +0 -12
  59. package/lib/services/IServiceMetricDetails.js +1 -1
  60. package/lib/services/InstrumentedServiceMultiAZObservability.d.ts +5 -3
  61. package/lib/services/InstrumentedServiceMultiAZObservability.js +12 -15
  62. package/lib/services/Operation.d.ts +8 -6
  63. package/lib/services/Operation.js +2 -2
  64. package/lib/services/OperationAvailabilityMetricDetails.d.ts +22 -0
  65. package/lib/services/OperationAvailabilityMetricDetails.js +24 -0
  66. package/lib/services/OperationLatencyMetricDetails.d.ts +16 -0
  67. package/lib/services/OperationLatencyMetricDetails.js +21 -0
  68. package/lib/services/OperationMetricDetails.d.ts +1 -13
  69. package/lib/services/OperationMetricDetails.js +2 -8
  70. package/lib/services/Service.d.ts +4 -3
  71. package/lib/services/Service.js +2 -2
  72. package/lib/services/ServiceAvailabilityMetricDetails.d.ts +21 -0
  73. package/lib/services/ServiceAvailabilityMetricDetails.js +20 -0
  74. package/lib/services/ServiceLatencyMetricDetails.d.ts +15 -0
  75. package/lib/services/ServiceLatencyMetricDetails.js +19 -0
  76. package/lib/services/ServiceMetricDetails.d.ts +1 -13
  77. package/lib/services/ServiceMetricDetails.js +2 -4
  78. package/lib/services/props/CanaryMetricProps.d.ts +4 -3
  79. package/lib/services/props/CanaryMetricProps.js +1 -1
  80. package/lib/services/props/CanaryTestAvailabilityMetricsOverrideProps.d.ts +22 -0
  81. package/lib/services/props/CanaryTestAvailabilityMetricsOverrideProps.js +3 -0
  82. package/lib/services/props/CanaryTestLatencyMetricsOverrideProps.d.ts +14 -0
  83. package/lib/services/props/CanaryTestLatencyMetricsOverrideProps.js +3 -0
  84. package/lib/services/props/CanaryTestMetricsOverrideProps.d.ts +0 -16
  85. package/lib/services/props/CanaryTestMetricsOverrideProps.js +1 -1
  86. package/lib/services/props/MetricDimensions.js +1 -1
  87. package/lib/services/props/OperationAvailabilityMetricDetailsProps.d.ts +22 -0
  88. package/lib/services/props/OperationAvailabilityMetricDetailsProps.js +3 -0
  89. package/lib/services/props/OperationLatencyMetricDetailsProps.d.ts +14 -0
  90. package/lib/services/props/OperationLatencyMetricDetailsProps.js +3 -0
  91. package/lib/services/props/OperationMetricDetailsProps.d.ts +0 -16
  92. package/lib/services/props/OperationMetricDetailsProps.js +1 -1
  93. package/lib/services/props/OperationProps.d.ts +4 -3
  94. package/lib/services/props/OperationProps.js +1 -1
  95. package/lib/services/props/ServiceAvailabilityMetricDetailsProps.d.ts +18 -0
  96. package/lib/services/props/ServiceAvailabilityMetricDetailsProps.js +3 -0
  97. package/lib/services/props/ServiceLatencyMetricDetailsProps.d.ts +12 -0
  98. package/lib/services/props/ServiceLatencyMetricDetailsProps.js +3 -0
  99. package/lib/services/props/ServiceMetricDetailsProps.d.ts +0 -12
  100. package/lib/services/props/ServiceMetricDetailsProps.js +1 -1
  101. package/lib/services/props/ServiceProps.d.ts +4 -3
  102. package/lib/services/props/ServiceProps.js +1 -1
  103. package/lib/utilities/MetricsHelper.d.ts +3 -0
  104. package/lib/utilities/MetricsHelper.js +17 -1
  105. package/package.json +5 -5
  106. package/lib/services/IBasicServiceMultiAZObservability.d.ts +0 -45
  107. package/lib/services/IBasicServiceMultiAZObservability.js +0 -3
@@ -117,7 +117,7 @@ class ServiceAvailabilityAndLatencyDashboard extends constructs_1.Construct {
117
117
  metricDetails: operation.serverSideLatencyMetricDetails,
118
118
  metricType: LatencyMetricType_1.LatencyMetricType.SUCCESS_LATENCY,
119
119
  color: MetricsHelper_1.MetricsHelper.colors[index],
120
- statistic: `TC(${operation.serverSideLatencyMetricDetails.successAlarmThreshold}:)`
120
+ statistic: aws_cloudwatch_1.Stats.trimmedCount(MetricsHelper_1.MetricsHelper.convertDurationByUnit(operation.serverSideLatencyMetricDetails.successAlarmThreshold, operation.serverSideLatencyMetricDetails.unit)),
121
121
  }, operation.serverSideLatencyMetricDetails.metricDimensions.zonalDimensions(availabilityZoneId, aws_cdk_lib_1.Aws.REGION));
122
122
  });
123
123
  return new aws_cloudwatch_1.GraphWidget({
@@ -280,7 +280,7 @@ class ServiceAvailabilityAndLatencyDashboard extends constructs_1.Construct {
280
280
  metricDetails: operation.canaryMetricDetails.canaryLatencyMetricDetails,
281
281
  metricType: LatencyMetricType_1.LatencyMetricType.SUCCESS_LATENCY,
282
282
  color: MetricsHelper_1.MetricsHelper.colors[index],
283
- statistic: `TC(${operation.canaryMetricDetails.canaryLatencyMetricDetails.successAlarmThreshold}:)`
283
+ statistic: aws_cloudwatch_1.Stats.trimmedCount(MetricsHelper_1.MetricsHelper.convertDurationByUnit(operation.canaryMetricDetails.canaryLatencyMetricDetails.successAlarmThreshold, operation.canaryMetricDetails.canaryLatencyMetricDetails.unit))
284
284
  }, operation.canaryMetricDetails.canaryLatencyMetricDetails.metricDimensions.zonalDimensions(availabilityZoneId, aws_cdk_lib_1.Aws.REGION));
285
285
  });
286
286
  return new aws_cloudwatch_1.GraphWidget({
@@ -412,9 +412,9 @@ class ServiceAvailabilityAndLatencyDashboard extends constructs_1.Construct {
412
412
  height: 1,
413
413
  width: 24
414
414
  }));
415
- this.dashboard.addWidgets(...ApplicationLoadBalancerMetrics_1.ApplicationLoadBalancerMetrics.generateLoadBalancerWidgets([props.service.loadBalancer], props.azMapper, props.service.period, props.service.defaultLatencyMetricDetails.alarmStatistic, props.service.defaultLatencyMetricDetails.successAlarmThreshold, props.service.defaultLatencyMetricDetails.faultAlarmThreshold));
415
+ this.dashboard.addWidgets(...ApplicationLoadBalancerMetrics_1.ApplicationLoadBalancerMetrics.generateLoadBalancerWidgets([props.service.loadBalancer], props.azMapper, props.service.period, props.service.defaultLatencyMetricDetails.alarmStatistic, props.service.defaultLatencyMetricDetails.successAlarmThreshold, props.service.defaultAvailabilityMetricDetails.faultAlarmThreshold));
416
416
  }
417
417
  }
418
418
  }
419
419
  exports.ServiceAvailabilityAndLatencyDashboard = ServiceAvailabilityAndLatencyDashboard;
420
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmljZUF2YWlsYWJpbGl0eUFuZExhdGVuY3lEYXNoYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGFzaGJvYXJkcy9TZXJ2aWNlQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeURhc2hib2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBQ3RDLDZDQUFrQztBQUNsQywrREFXb0M7QUFLcEMsMkNBQXVDO0FBR3ZDLDhGQUEyRjtBQUUzRixnRkFBNkU7QUFDN0Usc0VBQW1FO0FBQ25FLDhEQUEyRDtBQUMzRCw0RkFBeUY7QUFFekY7O0dBRUc7QUFDSCxNQUFhLHNDQUNYLFNBQVEsc0JBQVM7SUFHVCxNQUFNLENBQUMsdUJBQXVCLENBQ3BDLFNBQW9CLEVBQ3BCLEtBQWtEO1FBR2xELElBQUksaUJBQWlCLEdBQWEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQztRQUN0RSxJQUFJLGtCQUFrQixHQUFrQixLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUM7UUFFbkcsU0FBUyxDQUFDLFVBQVUsQ0FDbEIsSUFBSSwyQkFBVSxDQUFDO1lBQ2IsUUFBUSxFQUFFLDRCQUE0QjtZQUN0QyxVQUFVLEVBQUUscUNBQW9CLENBQUMsV0FBVztZQUM1QyxNQUFNLEVBQUUsQ0FBQztZQUNULEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQyxDQUNILENBQUM7UUFFRixJQUFJLHdCQUF3QixHQUFjLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLGdCQUF3QixFQUFFLEVBQUU7WUFDM0YsSUFBSSxRQUFRLEdBQVcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMvRSxJQUFJLGtCQUFrQixHQUFXLEtBQUssQ0FBQyxRQUFRLENBQUMsNENBQTRDLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFdkcsSUFBSSw4QkFBOEIsR0FBYyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFxQixFQUFFLEtBQWEsRUFBRSxFQUFFO2dCQUM5RyxPQUFPLDZEQUE2QixDQUFDLDZCQUE2QixDQUFDO29CQUNqRSxrQkFBa0IsRUFBRSxrQkFBa0I7b0JBQ3RDLGdCQUFnQixFQUFFLGdCQUFnQjtvQkFDbEMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxhQUFhLEdBQUcsNkJBQTZCO29CQUM5RCxhQUFhLEVBQUUsU0FBUyxDQUFDLG1DQUFtQztvQkFDNUQsVUFBVSxFQUFFLCtDQUFzQixDQUFDLFlBQVk7b0JBQy9DLEtBQUssRUFBRSw2QkFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7aUJBQ25DLEVBQ0QsU0FBUyxDQUFDLG1DQUFtQyxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FDNUUsa0JBQWtCLEVBQ2xCLGlCQUFHLENBQUMsTUFBTSxDQUNYLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxJQUFJLDRCQUFXLENBQUM7Z0JBQ25CLE1BQU0sRUFBRSxDQUFDO2dCQUNULEtBQUssRUFBRSxDQUFDO2dCQUNSLEtBQUssRUFBRSxrQkFBa0Isa0JBQWtCLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxpQkFBRyxDQUFDLE1BQU07Z0JBQ2xCLElBQUksRUFBRSw4QkFBOEI7Z0JBQ3BDLFNBQVMsRUFBRSxLQUFLO2dCQUNoQixTQUFTLEVBQUU7b0JBQ1QsR0FBRyxFQUFFLEdBQUc7b0JBQ1IsR0FBRyxFQUFFLEVBQUU7b0JBQ1AsS0FBSyxFQUFFLFNBQVM7b0JBQ2hCLFNBQVMsRUFBRSxLQUFLO2lCQUNqQjthQUNGLENBQ0YsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxzQkFBc0IsR0FBYyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxnQkFBd0IsRUFBRSxFQUFFO1lBQ3pGLElBQUksUUFBUSxHQUFXLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDL0UsSUFBSSxrQkFBa0IsR0FBVyxLQUFLLENBQUMsUUFBUSxDQUFDLDRDQUE0QyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXZHLElBQUksOEJBQThCLEdBQWMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBcUIsRUFBRSxLQUFhLEVBQUUsRUFBRTtnQkFDOUcsT0FBTyw2REFBNkIsQ0FBQyw2QkFBNkIsQ0FBQztvQkFDakUsa0JBQWtCLEVBQUUsa0JBQWtCO29CQUN0QyxnQkFBZ0IsRUFBRSxnQkFBZ0I7b0JBQ2xDLEtBQUssRUFBRSxTQUFTLENBQUMsYUFBYSxHQUFHLDZCQUE2QjtvQkFDOUQsYUFBYSxFQUFFLFNBQVMsQ0FBQyxtQ0FBbUM7b0JBQzVELFVBQVUsRUFBRSwrQ0FBc0IsQ0FBQyxXQUFXO29CQUM5QyxLQUFLLEVBQUUsNkJBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2lCQUNuQyxFQUNELFNBQVMsQ0FBQyxtQ0FBbUMsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQzVFLGtCQUFrQixFQUNsQixpQkFBRyxDQUFDLE1BQU0sQ0FDWCxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sSUFBSSw0QkFBVyxDQUFDO2dCQUNuQixNQUFNLEVBQUUsQ0FBQztnQkFDVCxLQUFLLEVBQUUsQ0FBQztnQkFDUixLQUFLLEVBQUUsaUJBQWlCLGtCQUFrQixHQUFHO2dCQUM3QyxNQUFNLEVBQUUsaUJBQUcsQ0FBQyxNQUFNO2dCQUNsQixJQUFJLEVBQUUsOEJBQThCO2dCQUNwQyxTQUFTLEVBQUUsS0FBSztnQkFDaEIsU0FBUyxFQUFFO29CQUNULEdBQUcsRUFBRSxDQUFDO29CQUNOLEtBQUssRUFBRSxPQUFPO29CQUNkLFNBQVMsRUFBRSxLQUFLO2lCQUNqQjthQUNGLENBQ0YsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxrQ0FBa0MsR0FBYyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxnQkFBd0IsRUFBRSxFQUFFO1lBQ3JHLElBQUksUUFBUSxHQUFXLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDL0UsSUFBSSxrQkFBa0IsR0FBVyxLQUFLLENBQUMsUUFBUSxDQUFDLDRDQUE0QyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXZHLElBQUksOEJBQThCLEdBQWMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBcUIsRUFBRSxLQUFhLEVBQUUsRUFBRTtnQkFDOUcsT0FBTyw2REFBNkIsQ0FBQyw2QkFBNkIsQ0FBQztvQkFDakUsa0JBQWtCLEVBQUUsa0JBQWtCO29CQUN0QyxnQkFBZ0IsRUFBRSxnQkFBZ0I7b0JBQ2xDLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxhQUFhLEtBQUssU0FBUyxDQUFDLDhCQUE4QixDQUFDLGNBQWMsR0FBRyxHQUFHLDZCQUE2QjtvQkFDaEksYUFBYSxFQUFFLFNBQVMsQ0FBQyw4QkFBOEI7b0JBQ3ZELFVBQVUsRUFBRSxxQ0FBaUIsQ0FBQyxlQUFlO29CQUM3QyxLQUFLLEVBQUUsNkJBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO29CQUNsQyxTQUFTLEVBQUUsU0FBUyxDQUFDLDhCQUE4QixDQUFDLGNBQWM7aUJBQ25FLEVBQ0QsU0FBUyxDQUFDLDhCQUE4QixDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FDdkUsa0JBQWtCLEVBQ2xCLGlCQUFHLENBQUMsTUFBTSxDQUNYLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxJQUFJLDRCQUFXLENBQUM7Z0JBQ25CLE1BQU0sRUFBRSxDQUFDO2dCQUNULEtBQUssRUFBRSxDQUFDO2dCQUNSLEtBQUssRUFBRSxhQUFhLGtCQUFrQixFQUFFO2dCQUN4QyxNQUFNLEVBQUUsaUJBQUcsQ0FBQyxNQUFNO2dCQUNsQixJQUFJLEVBQUUsOEJBQThCO2dCQUNwQyxTQUFTLEVBQUU7b0JBQ1QsR0FBRyxFQUFFLENBQUM7b0JBQ04sS0FBSyxFQUFFLGNBQWM7b0JBQ3JCLFNBQVMsRUFBRSxLQUFLO2lCQUNqQjthQUNGLENBQ0YsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSwyQ0FBMkMsR0FBYyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxnQkFBd0IsRUFBRSxFQUFFO1lBQzlHLElBQUksUUFBUSxHQUFXLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDL0UsSUFBSSxrQkFBa0IsR0FBVyxLQUFLLENBQUMsUUFBUSxDQUFDLDRDQUE0QyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXZHLElBQUksOEJBQThCLEdBQWMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBcUIsRUFBRSxLQUFhLEVBQUUsRUFBRTtnQkFDOUcsT0FBTyw2REFBNkIsQ0FBQyw2QkFBNkIsQ0FBQztvQkFDakUsa0JBQWtCLEVBQUUsa0JBQWtCO29CQUN0QyxnQkFBZ0IsRUFBRSxnQkFBZ0I7b0JBQ2xDLEtBQUssRUFBRSxTQUFTLENBQUMsYUFBYSxHQUFHLDZCQUE2QjtvQkFDOUQsYUFBYSxFQUFFLFNBQVMsQ0FBQyw4QkFBOEI7b0JBQ3ZELFVBQVUsRUFBRSxxQ0FBaUIsQ0FBQyxlQUFlO29CQUM3QyxLQUFLLEVBQUUsNkJBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO29CQUNsQyxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUMsOEJBQThCLENBQUMscUJBQXFCLElBQUk7aUJBQ3BGLEVBQ0QsU0FBUyxDQUFDLDhCQUE4QixDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FDdkUsa0JBQWtCLEVBQ2xCLGlCQUFHLENBQUMsTUFBTSxDQUNYLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxJQUFJLDRCQUFXLENBQUM7Z0JBQ25CLE1BQU0sRUFBRSxDQUFDO2dCQUNULEtBQUssRUFBRSxDQUFDO2dCQUNSLEtBQUssRUFBRSx3QkFBd0Isa0JBQWtCLEVBQUU7Z0JBQ25ELE1BQU0sRUFBRSxpQkFBRyxDQUFDLE1BQU07Z0JBQ2xCLElBQUksRUFBRSw4QkFBOEI7Z0JBQ3BDLFNBQVMsRUFBRSxLQUFLO2dCQUNoQixTQUFTLEVBQUU7b0JBQ1QsR0FBRyxFQUFFLENBQUM7b0JBQ04sS0FBSyxFQUFFLE9BQU87b0JBQ2QsU0FBUyxFQUFFLEtBQUs7aUJBQ2pCO2FBQ0YsQ0FDRixDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxTQUFTLENBQUMsVUFBVSxDQUVsQixHQUFHLHdCQUF3QjtRQUUzQixpQ0FBaUM7UUFDakMsSUFBSSw0QkFBVyxDQUFDO1lBQ2QsTUFBTSxFQUFFLENBQUM7WUFDVCxLQUFLLEVBQUUsQ0FBQztZQUNSLEtBQUssRUFBRSxhQUFhO1lBQ3BCLE1BQU0sRUFBRSxpQkFBRyxDQUFDLE1BQU07WUFDbEIsSUFBSSxFQUFFLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLGdCQUF3QixFQUFFLEVBQUU7Z0JBQ3ZELElBQUksUUFBUSxHQUFXLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQy9FLElBQUksa0JBQWtCLEdBQVcsS0FBSyxDQUFDLFFBQVEsQ0FBQyw0Q0FBNEMsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFFdkcsSUFBSSxZQUFZLEdBQStCLEVBQUUsQ0FBQztnQkFFbEQsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBcUIsRUFBRSxFQUFFO29CQUVuRCxZQUFZLENBQUMsR0FBRyxRQUFRLElBQUksU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUNwRCw2REFBNkIsQ0FBQyw2QkFBNkIsQ0FBQzs0QkFDMUQsa0JBQWtCLEVBQUUsa0JBQWtCOzRCQUN0QyxhQUFhLEVBQUUsU0FBUyxDQUFDLG1DQUFtQzs0QkFDNUQsS0FBSyxFQUFFLGtCQUFrQjs0QkFDekIsVUFBVSxFQUFFLCtDQUFzQixDQUFDLFdBQVc7NEJBQzlDLGdCQUFnQixFQUFFLGdCQUFnQjt5QkFDbkMsRUFDRCxTQUFTLENBQUMsbUNBQW1DLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUM1RSxrQkFBa0IsRUFDbEIsaUJBQUcsQ0FBQyxNQUFNLENBQ1gsQ0FBQyxDQUFDO2dCQUNQLENBQUMsQ0FBQyxDQUFDO2dCQUVILE9BQU8sSUFBSSwrQkFBYyxDQUFDO29CQUN4QixVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO29CQUMvQyxLQUFLLEVBQUUsa0JBQWtCLEdBQUcsNkJBQTZCO29CQUN6RCxZQUFZLEVBQUUsWUFBWTtvQkFDMUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTTtpQkFDN0IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDO1lBQ0YsU0FBUyxFQUFFLEtBQUs7WUFDaEIsU0FBUyxFQUFFO2dCQUNULEdBQUcsRUFBRSxDQUFDO2dCQUNOLEtBQUssRUFBRSxPQUFPO2dCQUNkLFNBQVMsRUFBRSxLQUFLO2FBQ2pCO1lBQ0QsZUFBZSxFQUFFO2dCQUNmO29CQUNFLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLG1CQUFtQjtvQkFDeEMsT0FBTyxFQUFFLElBQUk7b0JBQ2IsS0FBSyxFQUFFLHNCQUFLLENBQUMsR0FBRztvQkFDaEIsS0FBSyxFQUFFLGVBQWU7aUJBQ3ZCO2FBQ0Y7U0FDRixDQUFDLEVBRUYsR0FBRyxzQkFBc0IsRUFDekIsR0FBRyxrQ0FBa0MsRUFDckMsR0FBRywyQ0FBMkMsQ0FDL0MsQ0FBQztJQUNKLENBQUM7SUFFTyxNQUFNLENBQUMsbUJBQW1CLENBQ2hDLFNBQW9CLEVBQ3BCLEtBQWtEO1FBR2xELElBQUksaUJBQWlCLEdBQWEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQztRQUN0RSxJQUFJLGtCQUFrQixHQUFrQixLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUM7UUFFbkcsU0FBUyxDQUFDLFVBQVUsQ0FDbEIsSUFBSSwyQkFBVSxDQUFDO1lBQ2IsUUFBUSxFQUFFLHVCQUF1QjtZQUNqQyxVQUFVLEVBQUUscUNBQW9CLENBQUMsV0FBVztZQUM1QyxNQUFNLEVBQUUsQ0FBQztZQUNULEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQyxDQUNILENBQUM7UUFFRixJQUFJLHdCQUF3QixHQUFjLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLGdCQUF3QixFQUFFLEVBQUU7WUFDM0YsSUFBSSxRQUFRLEdBQVcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMvRSxJQUFJLGtCQUFrQixHQUFXLEtBQUssQ0FBQyxRQUFRLENBQUMsNENBQTRDLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFdkcsSUFBSSw4QkFBOEIsR0FBYyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFxQixFQUFFLEtBQWEsRUFBRSxFQUFFO2dCQUM5RyxPQUFPLDZEQUE2QixDQUFDLDZCQUE2QixDQUFDO29CQUNqRSxrQkFBa0IsRUFBRSxrQkFBa0I7b0JBQ3RDLGdCQUFnQixFQUFFLGdCQUFnQjtvQkFDbEMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxhQUFhLEdBQUcsNkJBQTZCO29CQUM5RCxhQUFhLEVBQUUsU0FBUyxDQUFDLG1CQUFvQixDQUFDLCtCQUErQjtvQkFDN0UsVUFBVSxFQUFFLCtDQUFzQixDQUFDLFlBQVk7b0JBQy9DLEtBQUssRUFBRSw2QkFBYSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7aUJBQ25DLEVBQ0QsU0FBUyxDQUFDLG1CQUFvQixDQUFDLCtCQUErQixDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FDN0Ysa0JBQWtCLEVBQ2xCLGlCQUFHLENBQUMsTUFBTSxDQUNYLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxJQUFJLDRCQUFXLENBQUM7Z0JBQ25CLE1BQU0sRUFBRSxDQUFDO2dCQUNULEtBQUssRUFBRSxDQUFDO2dCQUNSLEtBQUssRUFBRSxrQkFBa0Isa0JBQWtCLEdBQUc7Z0JBQzlDLE1BQU0sRUFBRSxpQkFBRyxDQUFDLE1BQU07Z0JBQ2xCLElBQUksRUFBRSw4QkFBOEI7Z0JBQ3BDLFNBQVMsRUFBRSxLQUFLO2dCQUNoQixTQUFTLEVBQUU7b0JBQ1QsR0FBRyxFQUFFLEdBQUc7b0JBQ1IsR0FBRyxFQUFFLEVBQUU7b0JBQ1AsS0FBSyxFQUFFLFNBQVM7b0JBQ2hCLFNBQVMsRUFBRSxLQUFLO2lCQUNqQjthQUNGLENBQ0YsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxzQkFBc0IsR0FBYyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxnQkFBd0IsRUFBRSxFQUFFO1lBQ3pGLElBQUksUUFBUSxHQUFXLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDL0UsSUFBSSxrQkFBa0IsR0FBVyxLQUFLLENBQUMsUUFBUSxDQUFDLDRDQUE0QyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXZHLElBQUksOEJBQThCLEdBQWMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBcUIsRUFBRSxLQUFhLEVBQUUsRUFBRTtnQkFDOUcsT0FBTyw2REFBNkIsQ0FBQyw2QkFBNkIsQ0FBQztvQkFDakUsa0JBQWtCLEVBQUUsa0JBQWtCO29CQUN0QyxnQkFBZ0IsRUFBRSxnQkFBZ0I7b0JBQ2xDLEtBQUssRUFBRSxTQUFTLENBQUMsYUFBYSxHQUFHLDZCQUE2QjtvQkFDOUQsYUFBYSxFQUFFLFNBQVMsQ0FBQyxtQkFBb0IsQ0FBQywrQkFBK0I7b0JBQzdFLFVBQVUsRUFBRSwrQ0FBc0IsQ0FBQyxXQUFXO29CQUM5QyxLQUFLLEVBQUUsNkJBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2lCQUNuQyxFQUNELFNBQVMsQ0FBQyxtQkFBb0IsQ0FBQywrQkFBK0IsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQzdGLGtCQUFrQixFQUNsQixpQkFBRyxDQUFDLE1BQU0sQ0FDWCxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUVILE9BQU8sSUFBSSw0QkFBVyxDQUFDO2dCQUNuQixNQUFNLEVBQUUsQ0FBQztnQkFDVCxLQUFLLEVBQUUsQ0FBQztnQkFDUixLQUFLLEVBQUUsaUJBQWlCLGtCQUFrQixFQUFFO2dCQUM1QyxNQUFNLEVBQUUsaUJBQUcsQ0FBQyxNQUFNO2dCQUNsQixJQUFJLEVBQUUsOEJBQThCO2dCQUNwQyxTQUFTLEVBQUUsS0FBSztnQkFDaEIsU0FBUyxFQUFFO29CQUNULEdBQUcsRUFBRSxDQUFDO29CQUNOLEtBQUssRUFBRSxPQUFPO29CQUNkLFNBQVMsRUFBRSxLQUFLO2lCQUNqQjthQUNGLENBQ0YsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxrQ0FBa0MsR0FBYyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxnQkFBd0IsRUFBSSxFQUFFO1lBQ3ZHLElBQUksUUFBUSxHQUFXLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDL0UsSUFBSSxrQkFBa0IsR0FBVyxLQUFLLENBQUMsUUFBUSxDQUFDLDRDQUE0QyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXZHLElBQUksOEJBQThCLEdBQWMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBcUIsRUFBRSxLQUFhLEVBQUUsRUFBRTtnQkFDOUcsT0FBTyw2REFBNkIsQ0FBQyw2QkFBNkIsQ0FBQztvQkFDakUsa0JBQWtCLEVBQUUsa0JBQWtCO29CQUN0QyxnQkFBZ0IsRUFBRSxnQkFBZ0I7b0JBQ2xDLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxhQUFhLEtBQUssU0FBUyxDQUFDLG1CQUFvQixDQUFDLDBCQUEwQixDQUFDLGNBQWMsR0FBRyxHQUFHLDZCQUE2QjtvQkFDakosYUFBYSxFQUFFLFNBQVMsQ0FBQyxtQkFBb0IsQ0FBQywwQkFBMEI7b0JBQ3hFLFVBQVUsRUFBRSxxQ0FBaUIsQ0FBQyxlQUFlO29CQUM3QyxLQUFLLEVBQUUsNkJBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO29CQUNsQyxTQUFTLEVBQUUsU0FBUyxDQUFDLG1CQUFvQixDQUFDLDBCQUEwQixDQUFDLGNBQWM7aUJBQ3BGLEVBQ0QsU0FBUyxDQUFDLG1CQUFvQixDQUFDLDBCQUEwQixDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FDeEYsa0JBQWtCLEVBQ2xCLGlCQUFHLENBQUMsTUFBTSxDQUNYLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxJQUFJLDRCQUFXLENBQUM7Z0JBQ25CLE1BQU0sRUFBRSxDQUFDO2dCQUNULEtBQUssRUFBRSxDQUFDO2dCQUNSLEtBQUssRUFBRSxhQUFhLGtCQUFrQixFQUFFO2dCQUN4QyxNQUFNLEVBQUUsaUJBQUcsQ0FBQyxNQUFNO2dCQUNsQixJQUFJLEVBQUUsOEJBQThCO2dCQUNwQyxTQUFTLEVBQUU7b0JBQ1QsR0FBRyxFQUFFLENBQUM7b0JBQ04sS0FBSyxFQUFFLGNBQWM7b0JBQ3JCLFNBQVMsRUFBRSxLQUFLO2lCQUNqQjthQUNGLENBQ0YsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSwyQ0FBMkMsR0FBYyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxnQkFBd0IsRUFBRSxFQUFFO1lBQzlHLElBQUksUUFBUSxHQUFXLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDL0UsSUFBSSxrQkFBa0IsR0FBVyxLQUFLLENBQUMsUUFBUSxDQUFDLDRDQUE0QyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXZHLElBQUksOEJBQThCLEdBQWMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBcUIsRUFBRSxLQUFhLEVBQUUsRUFBRTtnQkFDOUcsT0FBTyw2REFBNkIsQ0FBQyw2QkFBNkIsQ0FBQztvQkFDakUsa0JBQWtCLEVBQUUsa0JBQWtCO29CQUN0QyxnQkFBZ0IsRUFBRSxnQkFBZ0I7b0JBQ2xDLEtBQUssRUFBRSxTQUFTLENBQUMsYUFBYSxHQUFHLDZCQUE2QjtvQkFDOUQsYUFBYSxFQUFFLFNBQVMsQ0FBQyxtQkFBb0IsQ0FBQywwQkFBMEI7b0JBQ3hFLFVBQVUsRUFBRSxxQ0FBaUIsQ0FBQyxlQUFlO29CQUM3QyxLQUFLLEVBQUUsNkJBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO29CQUNsQyxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUMsbUJBQW9CLENBQUMsMEJBQTBCLENBQUMscUJBQXFCLElBQUk7aUJBQ3JHLEVBQ0QsU0FBUyxDQUFDLG1CQUFvQixDQUFDLDBCQUEwQixDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FDeEYsa0JBQWtCLEVBQ2xCLGlCQUFHLENBQUMsTUFBTSxDQUNYLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBRUgsT0FBTyxJQUFJLDRCQUFXLENBQUM7Z0JBQ25CLE1BQU0sRUFBRSxDQUFDO2dCQUNULEtBQUssRUFBRSxDQUFDO2dCQUNSLEtBQUssRUFBRSx3QkFBd0Isa0JBQWtCLEVBQUU7Z0JBQ25ELE1BQU0sRUFBRSxpQkFBRyxDQUFDLE1BQU07Z0JBQ2xCLElBQUksRUFBRSw4QkFBOEI7Z0JBQ3BDLFNBQVMsRUFBRSxLQUFLO2dCQUNoQixTQUFTLEVBQUU7b0JBQ1QsR0FBRyxFQUFFLENBQUM7b0JBQ04sS0FBSyxFQUFFLE9BQU87b0JBQ2QsU0FBUyxFQUFFLEtBQUs7aUJBQ2pCO2FBQ0YsQ0FDRixDQUFBO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxTQUFTLENBQUMsVUFBVSxDQUVsQixHQUFHLHdCQUF3QjtRQUUzQixpQ0FBaUM7UUFDakMsSUFBSSw0QkFBVyxDQUFDO1lBQ2QsTUFBTSxFQUFFLENBQUM7WUFDVCxLQUFLLEVBQUUsQ0FBQztZQUNSLEtBQUssRUFBRSxhQUFhO1lBQ3BCLE1BQU0sRUFBRSxpQkFBRyxDQUFDLE1BQU07WUFDbEIsSUFBSSxFQUFFLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLGdCQUF3QixFQUFFLEVBQUU7Z0JBQ3ZELElBQUksUUFBUSxHQUFXLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQy9FLElBQUksa0JBQWtCLEdBQVcsS0FBSyxDQUFDLFFBQVEsQ0FBQyw0Q0FBNEMsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFFdkcsSUFBSSxZQUFZLEdBQStCLEVBQUUsQ0FBQztnQkFFbEQsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBcUIsRUFBRSxFQUFFO29CQUVuRCxZQUFZLENBQUMsR0FBRyxRQUFRLElBQUksU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUNwRCw2REFBNkIsQ0FBQyw2QkFBNkIsQ0FBQzs0QkFDMUQsa0JBQWtCLEVBQUUsa0JBQWtCOzRCQUN0QyxhQUFhLEVBQUUsU0FBUyxDQUFDLG1DQUFtQzs0QkFDNUQsS0FBSyxFQUFFLGtCQUFrQjs0QkFDekIsVUFBVSxFQUFFLCtDQUFzQixDQUFDLFdBQVc7NEJBQzlDLGdCQUFnQixFQUFFLGdCQUFnQjt5QkFDbkMsRUFDRCxTQUFTLENBQUMsbUNBQW1DLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUM1RSxrQkFBa0IsRUFDbEIsaUJBQUcsQ0FBQyxNQUFNLENBQ1gsQ0FBQyxDQUFDO2dCQUNQLENBQUMsQ0FBQyxDQUFDO2dCQUVILE9BQU8sSUFBSSwrQkFBYyxDQUFDO29CQUN4QixVQUFVLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO29CQUMvQyxLQUFLLEVBQUUsa0JBQWtCO29CQUN6QixZQUFZLEVBQUUsWUFBWTtvQkFDMUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTTtpQkFDN0IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDO1lBQ0YsU0FBUyxFQUFFLEtBQUs7WUFDaEIsU0FBUyxFQUFFO2dCQUNULEdBQUcsRUFBRSxDQUFDO2dCQUNOLEtBQUssRUFBRSxPQUFPO2dCQUNkLFNBQVMsRUFBRSxLQUFLO2FBQ2pCO1lBQ0QsZUFBZSxFQUFFO2dCQUNmO29CQUNFLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLG1CQUFtQjtvQkFDeEMsT0FBTyxFQUFFLElBQUk7b0JBQ2IsS0FBSyxFQUFFLHNCQUFLLENBQUMsR0FBRztvQkFDaEIsS0FBSyxFQUFFLGVBQWU7aUJBQ3ZCO2FBQ0Y7U0FDRixDQUFDLEVBRUYsR0FBRyxzQkFBc0IsRUFDekIsR0FBRyxrQ0FBa0MsRUFDckMsR0FBRywyQ0FBMkMsQ0FDL0MsQ0FBQztJQUVKLENBQUM7SUFPRCxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFrRDtRQUVsRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSwwQkFBUyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUU7WUFDaEQsYUFBYSxFQUFFLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLDZCQUE2QixpQkFBRyxDQUFDLE1BQU0sRUFBRTtZQUNsRyxlQUFlLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDL0IsY0FBYyxFQUFFLCtCQUFjLENBQUMsSUFBSTtTQUNwQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FDdkIsSUFBSSxrQ0FBaUIsQ0FBQztZQUNwQixNQUFNLEVBQUUsQ0FBQztZQUNULEtBQUssRUFBRSxDQUFDO1lBQ1IsTUFBTSxFQUFFO2dCQUNOLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxrQkFBa0I7YUFDL0M7WUFDRCxLQUFLLEVBQUUsK0dBQStHO1NBQ3ZILENBQUMsRUFDRixJQUFJLGtDQUFpQixDQUFDO1lBQ3BCLE1BQU0sRUFBRSxDQUFDO1lBQ1QsS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLEVBQUU7Z0JBQ04sS0FBSyxDQUFDLHFCQUFxQixDQUFDLG1CQUFtQjthQUNoRDtZQUNELEtBQUssRUFBRSxvSEFBb0g7U0FDNUgsQ0FBQyxFQUNGLElBQUksa0NBQWlCLENBQUM7WUFDcEIsTUFBTSxFQUFFLENBQUM7WUFDVCxLQUFLLEVBQUUsQ0FBQztZQUNSLE1BQU0sRUFBRTtnQkFDTixLQUFLLENBQUMscUJBQXFCLENBQUMsNkJBQTZCO2FBQzFEO1lBQ0QsS0FBSyxFQUFFLHNIQUFzSDtTQUM5SCxDQUFDLEVBQ0YsR0FBRyxLQUFLLENBQUMscUJBQXFCLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxrQ0FBaUIsQ0FBQztnQkFDMUUsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsTUFBTSxFQUFFO29CQUNOLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxtQkFBbUI7aUJBQ2hEO2dCQUNELEtBQUssRUFBRSxnSEFBZ0g7YUFDeEgsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDVCxDQUFDO1FBRUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQ3ZCLElBQUksa0NBQWlCLENBQUM7WUFDcEIsTUFBTSxFQUFFLENBQUM7WUFDVCxLQUFLLEVBQUUsRUFBRTtZQUNULE1BQU0sRUFBRTtnQkFDTixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLGtDQUFrQyxDQUFDO2FBQ2pGO1lBQ0QsS0FBSyxFQUFFLHdKQUF3SjtTQUNoSyxDQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUN2QixJQUFJLGtDQUFpQixDQUFDO1lBQ3BCLE1BQU0sRUFBRSxDQUFDO1lBQ1QsS0FBSyxFQUFFLEVBQUU7WUFDVCxNQUFNLEVBQUU7Z0JBQ04sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxtQ0FBbUMsQ0FBQzthQUNsRjtZQUNELEtBQUssRUFBRSx3UUFBd1E7U0FDaFIsQ0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FDdkIsSUFBSSwyQkFBVSxDQUFDO1lBQ2IsUUFBUSxFQUFFLGdDQUFnQyxHQUFHLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLGFBQWEsaUJBQUcsQ0FBQyxNQUFNLGtEQUFrRCxpQkFBRyxDQUFDLE1BQU0seUJBQXlCLENBQUMsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDL08sVUFBVSxFQUFFLHFDQUFvQixDQUFDLFdBQVc7WUFDNUMsTUFBTSxFQUFFLENBQUM7WUFDVCxLQUFLLEVBQUUsRUFBRTtTQUNWLENBQUMsQ0FDSCxDQUFDO1FBRUYsc0NBQXNDLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV0RixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDbEMsc0NBQXNDLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNwRixDQUFDO1FBRUQsSUFBSSxFQUFFLEdBQW9CLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLElBQUk7YUFDdkQsWUFBK0IsQ0FBQztRQUVuQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUN2QixJQUFJLDJCQUFVLENBQUM7Z0JBQ2IsUUFBUSxFQUFFLDhCQUE4QjtnQkFDeEMsVUFBVSxFQUFFLHFDQUFvQixDQUFDLFdBQVc7Z0JBQzVDLE1BQU0sRUFBRSxDQUFDO2dCQUNULEtBQUssRUFBRSxFQUFFO2FBQ1YsQ0FBQyxDQUNILENBQUM7WUFFRixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FDdkIsR0FBRywrREFBOEIsQ0FBQywyQkFBMkIsQ0FDM0QsQ0FBRSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQXdDLENBQUUsRUFDMUQsS0FBSyxDQUFDLFFBQVEsRUFDZCxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFDcEIsS0FBSyxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxjQUFjLEVBQ3hELEtBQUssQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQUMscUJBQXFCLEVBQy9ELEtBQUssQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQUMsbUJBQW1CLENBQzlELENBQ0YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFoakJELHdGQWdqQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBBd3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBBbGFybVN0YXR1c1dpZGdldCxcbiAgQ29sb3IsXG4gIERhc2hib2FyZCxcbiAgR3JhcGhXaWRnZXQsXG4gIElNZXRyaWMsXG4gIElXaWRnZXQsXG4gIE1hdGhFeHByZXNzaW9uLFxuICBQZXJpb2RPdmVycmlkZSxcbiAgVGV4dFdpZGdldCxcbiAgVGV4dFdpZGdldEJhY2tncm91bmQsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7XG4gIENmbkxvYWRCYWxhbmNlcixcbiAgSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElTZXJ2aWNlQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeURhc2hib2FyZCB9IGZyb20gJy4vSVNlcnZpY2VBdmFpbGFiaWxpdHlBbmRMYXRlbmN5RGFzaGJvYXJkJztcbmltcG9ydCB7IFNlcnZpY2VBdmFpbGFiaWxpdHlBbmRMYXRlbmN5RGFzaGJvYXJkUHJvcHMgfSBmcm9tICcuL3Byb3BzL1NlcnZpY2VBdmFpbGFiaWxpdHlBbmRMYXRlbmN5RGFzaGJvYXJkUHJvcHMnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJNZXRyaWNzIH0gZnJvbSAnLi4vbWV0cmljcy9BcHBsaWNhdGlvbkxvYWRCYWxhbmNlck1ldHJpY3MnO1xuaW1wb3J0IHsgSU9wZXJhdGlvbiB9IGZyb20gJy4uL3NlcnZpY2VzL0lPcGVyYXRpb24nO1xuaW1wb3J0IHsgQXZhaWxhYmlsaXR5TWV0cmljVHlwZSB9IGZyb20gJy4uL3V0aWxpdGllcy9BdmFpbGFiaWxpdHlNZXRyaWNUeXBlJztcbmltcG9ydCB7IExhdGVuY3lNZXRyaWNUeXBlIH0gZnJvbSAnLi4vdXRpbGl0aWVzL0xhdGVuY3lNZXRyaWNUeXBlJztcbmltcG9ydCB7IE1ldHJpY3NIZWxwZXIgfSBmcm9tICcuLi91dGlsaXRpZXMvTWV0cmljc0hlbHBlcic7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcyB9IGZyb20gJy4uL21ldHJpY3MvQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY3MnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzZXJ2aWNlIGxldmVsIGF2YWlsYWJpbGl0eSBhbmQgbGF0ZW5jeSBkYXNoYm9hcmRcbiAqL1xuZXhwb3J0IGNsYXNzIFNlcnZpY2VBdmFpbGFiaWxpdHlBbmRMYXRlbmN5RGFzaGJvYXJkXG4gIGV4dGVuZHMgQ29uc3RydWN0XG4gIGltcGxlbWVudHMgSVNlcnZpY2VBdmFpbGFiaWxpdHlBbmRMYXRlbmN5RGFzaGJvYXJkIHtcbiBcbiAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlU2VydmVyU2lkZVdpZGdldHMoXG4gICAgZGFzaGJvYXJkOiBEYXNoYm9hcmQsXG4gICAgcHJvcHM6IFNlcnZpY2VBdmFpbGFiaWxpdHlBbmRMYXRlbmN5RGFzaGJvYXJkUHJvcHNcbiAgKTogdm9pZCB7XG4gIFxuICAgIGxldCBhdmFpbGFiaWxpdHlab25lczogc3RyaW5nW10gPSBwcm9wcy5zZXJ2aWNlLmF2YWlsYWJpbGl0eVpvbmVOYW1lcztcbiAgICBsZXQgY3JpdGljYWxPcGVyYXRpb25zOiBJT3BlcmF0aW9uW10gPSAgcHJvcHMuc2VydmljZS5vcGVyYXRpb25zLmZpbHRlcigoeCkgPT4geC5jcml0aWNhbCA9PSB0cnVlKTtcbiAgICAgXG4gICAgZGFzaGJvYXJkLmFkZFdpZGdldHMoXG4gICAgICBuZXcgVGV4dFdpZGdldCh7XG4gICAgICAgIG1hcmtkb3duOiBcIiMjICoqU2VydmVyLXNpZGUgTWV0cmljcyoqXCIsXG4gICAgICAgIGJhY2tncm91bmQ6IFRleHRXaWRnZXRCYWNrZ3JvdW5kLlRSQU5TUEFSRU5ULFxuICAgICAgICBoZWlnaHQ6IDEsXG4gICAgICAgIHdpZHRoOiAyNFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgbGV0IHpvbmFsQXZhaWxhYmlsaXR5V2lkZ2V0czogSVdpZGdldFtdID0gYXZhaWxhYmlsaXR5Wm9uZXMubWFwKChhdmFpbGFiaWxpdHlab25lOiBzdHJpbmcpID0+IHtcbiAgICAgIGxldCBhekxldHRlcjogc3RyaW5nID0gYXZhaWxhYmlsaXR5Wm9uZS5zdWJzdHJpbmcoYXZhaWxhYmlsaXR5Wm9uZS5sZW5ndGggLSAxKTtcbiAgICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWQ6IHN0cmluZyA9IHByb3BzLmF6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKGF6TGV0dGVyKTtcblxuICAgICAgbGV0IGNyaXRpY2FsT3BlcmF0aW9uc1pvbmFsTWV0cmljczogSU1ldHJpY1tdID0gY3JpdGljYWxPcGVyYXRpb25zLm1hcCgob3BlcmF0aW9uOiBJT3BlcmF0aW9uLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIHJldHVybiBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcy5jcmVhdGVab25hbEF2YWlsYWJpbGl0eU1ldHJpYyh7XG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZUlkOiBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgICBsYWJlbDogb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgKyBcIiAoYXZnOiAke0FWR30gIG1pbjogJHtNSU59KVwiLFxuICAgICAgICAgIG1ldHJpY0RldGFpbHM6IG9wZXJhdGlvbi5zZXJ2ZXJTaWRlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBtZXRyaWNUeXBlOiBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLlNVQ0NFU1NfUkFURSxcbiAgICAgICAgICBjb2xvcjogTWV0cmljc0hlbHBlci5jb2xvcnNbaW5kZXhdXG4gICAgICAgIH0sXG4gICAgICAgIG9wZXJhdGlvbi5zZXJ2ZXJTaWRlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscy5tZXRyaWNEaW1lbnNpb25zLnpvbmFsRGltZW5zaW9ucyhcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgQXdzLlJFR0lPTlxuICAgICAgICApKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICBoZWlnaHQ6IDgsXG4gICAgICAgICAgd2lkdGg6IDYsXG4gICAgICAgICAgdGl0bGU6IGBBdmFpbGFiaWxpdHkgLSAke2F2YWlsYWJpbGl0eVpvbmVJZH1gLFxuICAgICAgICAgIHJlZ2lvbjogQXdzLlJFR0lPTixcbiAgICAgICAgICBsZWZ0OiBjcml0aWNhbE9wZXJhdGlvbnNab25hbE1ldHJpY3MsXG4gICAgICAgICAgc3RhdGlzdGljOiAnU3VtJyxcbiAgICAgICAgICBsZWZ0WUF4aXM6IHtcbiAgICAgICAgICAgIG1heDogMTAwLFxuICAgICAgICAgICAgbWluOiA5NSxcbiAgICAgICAgICAgIGxhYmVsOiAnUGVyY2VudCcsXG4gICAgICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKVxuICAgIH0pO1xuXG4gICAgbGV0IHpvbmFsRmF1bHRDb3VudFdpZGdldHM6IElXaWRnZXRbXSA9IGF2YWlsYWJpbGl0eVpvbmVzLm1hcCgoYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgYXpMZXR0ZXI6IHN0cmluZyA9IGF2YWlsYWJpbGl0eVpvbmUuc3Vic3RyaW5nKGF2YWlsYWJpbGl0eVpvbmUubGVuZ3RoIC0gMSk7XG4gICAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZUlkOiBzdHJpbmcgPSBwcm9wcy5hek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihhekxldHRlcik7XG5cbiAgICAgIGxldCBjcml0aWNhbE9wZXJhdGlvbnNab25hbE1ldHJpY3M6IElNZXRyaWNbXSA9IGNyaXRpY2FsT3BlcmF0aW9ucy5tYXAoKG9wZXJhdGlvbjogSU9wZXJhdGlvbiwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICByZXR1cm4gQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY3MuY3JlYXRlWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWMoe1xuICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmU6IGF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgbGFiZWw6IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lICsgXCIgKGF2ZzogJHtBVkd9ICBtYXg6ICR7TUFYfSlcIixcbiAgICAgICAgICBtZXRyaWNEZXRhaWxzOiBvcGVyYXRpb24uc2VydmVyU2lkZUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgbWV0cmljVHlwZTogQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5GQVVMVF9DT1VOVCxcbiAgICAgICAgICBjb2xvcjogTWV0cmljc0hlbHBlci5jb2xvcnNbaW5kZXhdXG4gICAgICAgIH0sXG4gICAgICAgIG9wZXJhdGlvbi5zZXJ2ZXJTaWRlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscy5tZXRyaWNEaW1lbnNpb25zLnpvbmFsRGltZW5zaW9ucyhcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgQXdzLlJFR0lPTlxuICAgICAgICApKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgd2lkdGg6IDgsXG4gICAgICAgICAgdGl0bGU6IGBGYXVsdCBDb3VudCAtICR7YXZhaWxhYmlsaXR5Wm9uZUlkfSBgLFxuICAgICAgICAgIHJlZ2lvbjogQXdzLlJFR0lPTixcbiAgICAgICAgICBsZWZ0OiBjcml0aWNhbE9wZXJhdGlvbnNab25hbE1ldHJpY3MsXG4gICAgICAgICAgc3RhdGlzdGljOiAnU3VtJyxcbiAgICAgICAgICBsZWZ0WUF4aXM6IHtcbiAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgIGxhYmVsOiAnQ291bnQnLFxuICAgICAgICAgICAgc2hvd1VuaXRzOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9KTtcblxuICAgIGxldCBwZXJBWldpZGdldFdpdGhQZXJPcGVyYXRpb25MYXRlbmN5OiBJV2lkZ2V0W10gPSBhdmFpbGFiaWxpdHlab25lcy5tYXAoKGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZykgPT4ge1xuICAgICAgbGV0IGF6TGV0dGVyOiBzdHJpbmcgPSBhdmFpbGFiaWxpdHlab25lLnN1YnN0cmluZyhhdmFpbGFiaWxpdHlab25lLmxlbmd0aCAtIDEpO1xuICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZDogc3RyaW5nID0gcHJvcHMuYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoYXpMZXR0ZXIpO1xuXG4gICAgICBsZXQgY3JpdGljYWxPcGVyYXRpb25zWm9uYWxNZXRyaWNzOiBJTWV0cmljW10gPSBjcml0aWNhbE9wZXJhdGlvbnMubWFwKChvcGVyYXRpb246IElPcGVyYXRpb24sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNzLmNyZWF0ZVpvbmFsTGF0ZW5jeUNvdW50TWV0cmljKHtcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQ6IGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lOiBhdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgIGxhYmVsOiBgJHtvcGVyYXRpb24ub3BlcmF0aW9uTmFtZX0gKCR7b3BlcmF0aW9uLnNlcnZlclNpZGVMYXRlbmN5TWV0cmljRGV0YWlscy5hbGFybVN0YXRpc3RpY30pYCArIFwiIChhdmc6ICR7QVZHfSAgbWF4OiAke01BWH0pXCIsXG4gICAgICAgICAgbWV0cmljRGV0YWlsczogb3BlcmF0aW9uLnNlcnZlclNpZGVMYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBtZXRyaWNUeXBlOiBMYXRlbmN5TWV0cmljVHlwZS5TVUNDRVNTX0xBVEVOQ1ksXG4gICAgICAgICAgY29sb3I6IE1ldHJpY3NIZWxwZXIuY29sb3JzW2luZGV4XSxcbiAgICAgICAgICBzdGF0aXN0aWM6IG9wZXJhdGlvbi5zZXJ2ZXJTaWRlTGF0ZW5jeU1ldHJpY0RldGFpbHMuYWxhcm1TdGF0aXN0aWNcbiAgICAgICAgfSxcbiAgICAgICAgb3BlcmF0aW9uLnNlcnZlclNpZGVMYXRlbmN5TWV0cmljRGV0YWlscy5tZXRyaWNEaW1lbnNpb25zLnpvbmFsRGltZW5zaW9ucyhcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgQXdzLlJFR0lPTlxuICAgICAgICApKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgd2lkdGg6IDgsXG4gICAgICAgICAgdGl0bGU6IGBMYXRlbmN5IC0gJHthdmFpbGFiaWxpdHlab25lSWR9YCxcbiAgICAgICAgICByZWdpb246IEF3cy5SRUdJT04sXG4gICAgICAgICAgbGVmdDogY3JpdGljYWxPcGVyYXRpb25zWm9uYWxNZXRyaWNzLFxuICAgICAgICAgIGxlZnRZQXhpczoge1xuICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgbGFiZWw6ICdNaWxsaXNlY29uZHMnLFxuICAgICAgICAgICAgc2hvd1VuaXRzOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9KTtcblxuICAgIGxldCBwZXJBWldpZGdldFdpdGhQZXJPcGVyYXRpb25IaWdoTGF0ZW5jeUNvdW50OiBJV2lkZ2V0W10gPSBhdmFpbGFiaWxpdHlab25lcy5tYXAoKGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZykgPT4ge1xuICAgICAgbGV0IGF6TGV0dGVyOiBzdHJpbmcgPSBhdmFpbGFiaWxpdHlab25lLnN1YnN0cmluZyhhdmFpbGFiaWxpdHlab25lLmxlbmd0aCAtIDEpO1xuICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZDogc3RyaW5nID0gcHJvcHMuYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoYXpMZXR0ZXIpO1xuXG4gICAgICBsZXQgY3JpdGljYWxPcGVyYXRpb25zWm9uYWxNZXRyaWNzOiBJTWV0cmljW10gPSBjcml0aWNhbE9wZXJhdGlvbnMubWFwKChvcGVyYXRpb246IElPcGVyYXRpb24sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNzLmNyZWF0ZVpvbmFsTGF0ZW5jeUNvdW50TWV0cmljKHtcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQ6IGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lOiBhdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgIGxhYmVsOiBvcGVyYXRpb24ub3BlcmF0aW9uTmFtZSArIFwiIChhdmc6ICR7QVZHfSAgbWF4OiAke01BWH0pXCIsXG4gICAgICAgICAgbWV0cmljRGV0YWlsczogb3BlcmF0aW9uLnNlcnZlclNpZGVMYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBtZXRyaWNUeXBlOiBMYXRlbmN5TWV0cmljVHlwZS5TVUNDRVNTX0xBVEVOQ1ksXG4gICAgICAgICAgY29sb3I6IE1ldHJpY3NIZWxwZXIuY29sb3JzW2luZGV4XSxcbiAgICAgICAgICBzdGF0aXN0aWM6IGBUQygke29wZXJhdGlvbi5zZXJ2ZXJTaWRlTGF0ZW5jeU1ldHJpY0RldGFpbHMuc3VjY2Vzc0FsYXJtVGhyZXNob2xkfTopYFxuICAgICAgICB9LFxuICAgICAgICBvcGVyYXRpb24uc2VydmVyU2lkZUxhdGVuY3lNZXRyaWNEZXRhaWxzLm1ldHJpY0RpbWVuc2lvbnMuem9uYWxEaW1lbnNpb25zKFxuICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBBd3MuUkVHSU9OXG4gICAgICAgICkpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICB3aWR0aDogOCxcbiAgICAgICAgICB0aXRsZTogYEhpZ2ggTGF0ZW5jeSBDb3VudCAtICR7YXZhaWxhYmlsaXR5Wm9uZUlkfWAsXG4gICAgICAgICAgcmVnaW9uOiBBd3MuUkVHSU9OLFxuICAgICAgICAgIGxlZnQ6IGNyaXRpY2FsT3BlcmF0aW9uc1pvbmFsTWV0cmljcyxcbiAgICAgICAgICBzdGF0aXN0aWM6ICdTdW0nLFxuICAgICAgICAgIGxlZnRZQXhpczoge1xuICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgbGFiZWw6ICdDb3VudCcsXG4gICAgICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKVxuICAgIH0pO1xuXG4gICAgZGFzaGJvYXJkLmFkZFdpZGdldHMoXG5cbiAgICAgIC4uLnpvbmFsQXZhaWxhYmlsaXR5V2lkZ2V0cyxcblxuICAgICAgLy8gU2VydmVyLXNpZGUgcGVyIEFaIGZhdWx0IGNvdW50XG4gICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDgsXG4gICAgICAgIHdpZHRoOiA2LFxuICAgICAgICB0aXRsZTogJ0ZhdWx0IENvdW50JyxcbiAgICAgICAgcmVnaW9uOiBBd3MuUkVHSU9OLFxuICAgICAgICBsZWZ0OiBhdmFpbGFiaWxpdHlab25lcy5tYXAoKGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGxldCBhekxldHRlcjogc3RyaW5nID0gYXZhaWxhYmlsaXR5Wm9uZS5zdWJzdHJpbmcoYXZhaWxhYmlsaXR5Wm9uZS5sZW5ndGggLSAxKTtcbiAgICAgICAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZUlkOiBzdHJpbmcgPSBwcm9wcy5hek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihhekxldHRlcik7ICAgICAgXG4gICAgXG4gICAgICAgICAgbGV0IHVzaW5nTWV0cmljczogeyBba2V5OiBzdHJpbmddOiBJTWV0cmljIH0gPSB7fTtcbiAgICBcbiAgICAgICAgICBjcml0aWNhbE9wZXJhdGlvbnMuZm9yRWFjaCgob3BlcmF0aW9uOiBJT3BlcmF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2F6TGV0dGVyfV8ke29wZXJhdGlvbi5vcGVyYXRpb25OYW1lfWBdID1cbiAgICAgICAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY3MuY3JlYXRlWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWMoe1xuICAgICAgICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgICAgICAgIG1ldHJpY0RldGFpbHM6IG9wZXJhdGlvbi5zZXJ2ZXJTaWRlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgICAgICAgIG1ldHJpY1R5cGU6IEF2YWlsYWJpbGl0eU1ldHJpY1R5cGUuRkFVTFRfQ09VTlQsXG4gICAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogYXZhaWxhYmlsaXR5Wm9uZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvcGVyYXRpb24uc2VydmVyU2lkZUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMubWV0cmljRGltZW5zaW9ucy56b25hbERpbWVuc2lvbnMoXG4gICAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgICAgICAgIEF3cy5SRUdJT05cbiAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgfSk7XG4gICAgXG4gICAgICAgICAgcmV0dXJuIG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAgICAgICBleHByZXNzaW9uOiBPYmplY3Qua2V5cyh1c2luZ01ldHJpY3MpLmpvaW4oJysnKSxcbiAgICAgICAgICAgIGxhYmVsOiBhdmFpbGFiaWxpdHlab25lSWQgKyBcIiAoYXZnOiAke0FWR30gIG1heDogJHtNQVh9KVwiLFxuICAgICAgICAgICAgdXNpbmdNZXRyaWNzOiB1c2luZ01ldHJpY3MsXG4gICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnNlcnZpY2UucGVyaW9kXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICBzdGF0aXN0aWM6ICdTdW0nLFxuICAgICAgICBsZWZ0WUF4aXM6IHtcbiAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgbGFiZWw6ICdDb3VudCcsXG4gICAgICAgICAgc2hvd1VuaXRzOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGVmdEFubm90YXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6IHByb3BzLnNlcnZpY2UuZmF1bHRDb3VudFRocmVzaG9sZCxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgICAgICBjb2xvcjogQ29sb3IuUkVELFxuICAgICAgICAgICAgbGFiZWw6ICdIaWdoIFNldmVyaXR5JyxcbiAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgICB9KSxcbiAgICAgIFxuICAgICAgLi4uem9uYWxGYXVsdENvdW50V2lkZ2V0cyxcbiAgICAgIC4uLnBlckFaV2lkZ2V0V2l0aFBlck9wZXJhdGlvbkxhdGVuY3ksXG4gICAgICAuLi5wZXJBWldpZGdldFdpdGhQZXJPcGVyYXRpb25IaWdoTGF0ZW5jeUNvdW50XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNyZWF0ZUNhbmFyeVdpZGdldHMoXG4gICAgZGFzaGJvYXJkOiBEYXNoYm9hcmQsXG4gICAgcHJvcHM6IFNlcnZpY2VBdmFpbGFiaWxpdHlBbmRMYXRlbmN5RGFzaGJvYXJkUHJvcHNcbiAgKTogdm9pZCB7XG4gIFxuICAgIGxldCBhdmFpbGFiaWxpdHlab25lczogc3RyaW5nW10gPSBwcm9wcy5zZXJ2aWNlLmF2YWlsYWJpbGl0eVpvbmVOYW1lcztcbiAgICBsZXQgY3JpdGljYWxPcGVyYXRpb25zOiBJT3BlcmF0aW9uW10gPSAgcHJvcHMuc2VydmljZS5vcGVyYXRpb25zLmZpbHRlcigoeCkgPT4geC5jcml0aWNhbCA9PSB0cnVlKTtcbiAgICAgXG4gICAgZGFzaGJvYXJkLmFkZFdpZGdldHMoXG4gICAgICBuZXcgVGV4dFdpZGdldCh7XG4gICAgICAgIG1hcmtkb3duOiBcIiMjICoqQ2FuYXJ5IE1ldHJpY3MqKlwiLFxuICAgICAgICBiYWNrZ3JvdW5kOiBUZXh0V2lkZ2V0QmFja2dyb3VuZC5UUkFOU1BBUkVOVCxcbiAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICB3aWR0aDogMjRcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGxldCB6b25hbEF2YWlsYWJpbGl0eVdpZGdldHM6IElXaWRnZXRbXSA9IGF2YWlsYWJpbGl0eVpvbmVzLm1hcCgoYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgYXpMZXR0ZXI6IHN0cmluZyA9IGF2YWlsYWJpbGl0eVpvbmUuc3Vic3RyaW5nKGF2YWlsYWJpbGl0eVpvbmUubGVuZ3RoIC0gMSk7XG4gICAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZUlkOiBzdHJpbmcgPSBwcm9wcy5hek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihhekxldHRlcik7XG5cbiAgICAgIGxldCBjcml0aWNhbE9wZXJhdGlvbnNab25hbE1ldHJpY3M6IElNZXRyaWNbXSA9IGNyaXRpY2FsT3BlcmF0aW9ucy5tYXAoKG9wZXJhdGlvbjogSU9wZXJhdGlvbiwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICByZXR1cm4gQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY3MuY3JlYXRlWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWMoe1xuICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmU6IGF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgbGFiZWw6IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lICsgXCIgKGF2ZzogJHtBVkd9ICBtaW46ICR7TUlOfSlcIixcbiAgICAgICAgICBtZXRyaWNEZXRhaWxzOiBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscyEuY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBtZXRyaWNUeXBlOiBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLlNVQ0NFU1NfUkFURSxcbiAgICAgICAgICBjb2xvcjogTWV0cmljc0hlbHBlci5jb2xvcnNbaW5kZXhdXG4gICAgICAgIH0sXG4gICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzIS5jYW5hcnlBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLm1ldHJpY0RpbWVuc2lvbnMuem9uYWxEaW1lbnNpb25zKFxuICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBBd3MuUkVHSU9OXG4gICAgICAgICkpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgIGhlaWdodDogOCxcbiAgICAgICAgICB3aWR0aDogNixcbiAgICAgICAgICB0aXRsZTogYEF2YWlsYWJpbGl0eSAtICR7YXZhaWxhYmlsaXR5Wm9uZUlkfSBgLFxuICAgICAgICAgIHJlZ2lvbjogQXdzLlJFR0lPTixcbiAgICAgICAgICBsZWZ0OiBjcml0aWNhbE9wZXJhdGlvbnNab25hbE1ldHJpY3MsXG4gICAgICAgICAgc3RhdGlzdGljOiAnU3VtJyxcbiAgICAgICAgICBsZWZ0WUF4aXM6IHtcbiAgICAgICAgICAgIG1heDogMTAwLFxuICAgICAgICAgICAgbWluOiA5NSxcbiAgICAgICAgICAgIGxhYmVsOiAnUGVyY2VudCcsXG4gICAgICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKVxuICAgIH0pO1xuXG4gICAgbGV0IHpvbmFsRmF1bHRDb3VudFdpZGdldHM6IElXaWRnZXRbXSA9IGF2YWlsYWJpbGl0eVpvbmVzLm1hcCgoYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgYXpMZXR0ZXI6IHN0cmluZyA9IGF2YWlsYWJpbGl0eVpvbmUuc3Vic3RyaW5nKGF2YWlsYWJpbGl0eVpvbmUubGVuZ3RoIC0gMSk7XG4gICAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZUlkOiBzdHJpbmcgPSBwcm9wcy5hek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihhekxldHRlcik7XG5cbiAgICAgIGxldCBjcml0aWNhbE9wZXJhdGlvbnNab25hbE1ldHJpY3M6IElNZXRyaWNbXSA9IGNyaXRpY2FsT3BlcmF0aW9ucy5tYXAoKG9wZXJhdGlvbjogSU9wZXJhdGlvbiwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICByZXR1cm4gQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY3MuY3JlYXRlWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWMoe1xuICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmU6IGF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgbGFiZWw6IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lICsgXCIgKGF2ZzogJHtBVkd9ICBtYXg6ICR7TUFYfSlcIixcbiAgICAgICAgICBtZXRyaWNEZXRhaWxzOiBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscyEuY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBtZXRyaWNUeXBlOiBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLkZBVUxUX0NPVU5ULFxuICAgICAgICAgIGNvbG9yOiBNZXRyaWNzSGVscGVyLmNvbG9yc1tpbmRleF1cbiAgICAgICAgfSxcbiAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMhLmNhbmFyeUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMubWV0cmljRGltZW5zaW9ucy56b25hbERpbWVuc2lvbnMoXG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIEF3cy5SRUdJT05cbiAgICAgICAgKSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgIHdpZHRoOiA4LFxuICAgICAgICAgIHRpdGxlOiBgRmF1bHQgQ291bnQgLSAke2F2YWlsYWJpbGl0eVpvbmVJZH1gLFxuICAgICAgICAgIHJlZ2lvbjogQXdzLlJFR0lPTixcbiAgICAgICAgICBsZWZ0OiBjcml0aWNhbE9wZXJhdGlvbnNab25hbE1ldHJpY3MsXG4gICAgICAgICAgc3RhdGlzdGljOiAnU3VtJyxcbiAgICAgICAgICBsZWZ0WUF4aXM6IHtcbiAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgIGxhYmVsOiAnQ291bnQnLFxuICAgICAgICAgICAgc2hvd1VuaXRzOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9KTtcblxuICAgIGxldCBwZXJBWldpZGdldFdpdGhQZXJPcGVyYXRpb25MYXRlbmN5OiBJV2lkZ2V0W10gPSBhdmFpbGFiaWxpdHlab25lcy5tYXAoKGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZywgKSA9PiB7XG4gICAgICBsZXQgYXpMZXR0ZXI6IHN0cmluZyA9IGF2YWlsYWJpbGl0eVpvbmUuc3Vic3RyaW5nKGF2YWlsYWJpbGl0eVpvbmUubGVuZ3RoIC0gMSk7XG4gICAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZUlkOiBzdHJpbmcgPSBwcm9wcy5hek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihhekxldHRlcik7XG5cbiAgICAgIGxldCBjcml0aWNhbE9wZXJhdGlvbnNab25hbE1ldHJpY3M6IElNZXRyaWNbXSA9IGNyaXRpY2FsT3BlcmF0aW9ucy5tYXAoKG9wZXJhdGlvbjogSU9wZXJhdGlvbiwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICByZXR1cm4gQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY3MuY3JlYXRlWm9uYWxMYXRlbmN5Q291bnRNZXRyaWMoe1xuICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmU6IGF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgbGFiZWw6IGAke29wZXJhdGlvbi5vcGVyYXRpb25OYW1lfSAoJHtvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscyEuY2FuYXJ5TGF0ZW5jeU1ldHJpY0RldGFpbHMuYWxhcm1TdGF0aXN0aWN9KWAgKyBcIiAoYXZnOiAke0FWR30gIG1heDogJHtNQVh9KVwiLFxuICAgICAgICAgIG1ldHJpY0RldGFpbHM6IG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzIS5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBtZXRyaWNUeXBlOiBMYXRlbmN5TWV0cmljVHlwZS5TVUNDRVNTX0xBVEVOQ1ksXG4gICAgICAgICAgY29sb3I6IE1ldHJpY3NIZWxwZXIuY29sb3JzW2luZGV4XSxcbiAgICAgICAgICBzdGF0aXN0aWM6IG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzIS5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlscy5hbGFybVN0YXRpc3RpY1xuICAgICAgICB9LFxuICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscyEuY2FuYXJ5TGF0ZW5jeU1ldHJpY0RldGFpbHMubWV0cmljRGltZW5zaW9ucy56b25hbERpbWVuc2lvbnMoXG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIEF3cy5SRUdJT05cbiAgICAgICAgKSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgIHdpZHRoOiA4LFxuICAgICAgICAgIHRpdGxlOiBgTGF0ZW5jeSAtICR7YXZhaWxhYmlsaXR5Wm9uZUlkfWAsXG4gICAgICAgICAgcmVnaW9uOiBBd3MuUkVHSU9OLFxuICAgICAgICAgIGxlZnQ6IGNyaXRpY2FsT3BlcmF0aW9uc1pvbmFsTWV0cmljcyxcbiAgICAgICAgICBsZWZ0WUF4aXM6IHtcbiAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgIGxhYmVsOiAnTWlsbGlzZWNvbmRzJyxcbiAgICAgICAgICAgIHNob3dVbml0czogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApXG4gICAgfSk7XG5cbiAgICBsZXQgcGVyQVpXaWRnZXRXaXRoUGVyT3BlcmF0aW9uSGlnaExhdGVuY3lDb3VudDogSVdpZGdldFtdID0gYXZhaWxhYmlsaXR5Wm9uZXMubWFwKChhdmFpbGFiaWxpdHlab25lOiBzdHJpbmcpID0+IHtcbiAgICAgIGxldCBhekxldHRlcjogc3RyaW5nID0gYXZhaWxhYmlsaXR5Wm9uZS5zdWJzdHJpbmcoYXZhaWxhYmlsaXR5Wm9uZS5sZW5ndGggLSAxKTtcbiAgICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWQ6IHN0cmluZyA9IHByb3BzLmF6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKGF6TGV0dGVyKTtcblxuICAgICAgbGV0IGNyaXRpY2FsT3BlcmF0aW9uc1pvbmFsTWV0cmljczogSU1ldHJpY1tdID0gY3JpdGljYWxPcGVyYXRpb25zLm1hcCgob3BlcmF0aW9uOiBJT3BlcmF0aW9uLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIHJldHVybiBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcy5jcmVhdGVab25hbExhdGVuY3lDb3VudE1ldHJpYyh7XG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZUlkOiBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgICBsYWJlbDogb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgKyBcIiAoYXZnOiAke0FWR30gIG1heDogJHtNQVh9KVwiLFxuICAgICAgICAgIG1ldHJpY0RldGFpbHM6IG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzIS5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBtZXRyaWNUeXBlOiBMYXRlbmN5TWV0cmljVHlwZS5TVUNDRVNTX0xBVEVOQ1ksXG4gICAgICAgICAgY29sb3I6IE1ldHJpY3NIZWxwZXIuY29sb3JzW2luZGV4XSxcbiAgICAgICAgICBzdGF0aXN0aWM6IGBUQygke29wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzIS5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlscy5zdWNjZXNzQWxhcm1UaHJlc2hvbGR9OilgXG4gICAgICAgIH0sXG4gICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzIS5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlscy5tZXRyaWNEaW1lbnNpb25zLnpvbmFsRGltZW5zaW9ucyhcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgQXdzLlJFR0lPTlxuICAgICAgICApKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgd2lkdGg6IDgsXG4gICAgICAgICAgdGl0bGU6IGBIaWdoIExhdGVuY3kgQ291bnQgLSAke2F2YWlsYWJpbGl0eVpvbmVJZH1gLFxuICAgICAgICAgIHJlZ2lvbjogQXdzLlJFR0lPTixcbiAgICAgICAgICBsZWZ0OiBjcml0aWNhbE9wZXJhdGlvbnNab25hbE1ldHJpY3MsXG4gICAgICAgICAgc3RhdGlzdGljOiAnU3VtJyxcbiAgICAgICAgICBsZWZ0WUF4aXM6IHtcbiAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgIGxhYmVsOiAnQ291bnQnLFxuICAgICAgICAgICAgc2hvd1VuaXRzOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9KTtcblxuICAgIGRhc2hib2FyZC5hZGRXaWRnZXRzKFxuXG4gICAgICAuLi56b25hbEF2YWlsYWJpbGl0eVdpZGdldHMsXG5cbiAgICAgIC8vIFNlcnZlci1zaWRlIHBlciBBWiBmYXVsdCBjb3VudFxuICAgICAgbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiA4LFxuICAgICAgICB3aWR0aDogNixcbiAgICAgICAgdGl0bGU6ICdGYXVsdCBDb3VudCcsXG4gICAgICAgIHJlZ2lvbjogQXdzLlJFR0lPTixcbiAgICAgICAgbGVmdDogYXZhaWxhYmlsaXR5Wm9uZXMubWFwKChhdmFpbGFiaWxpdHlab25lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBsZXQgYXpMZXR0ZXI6IHN0cmluZyA9IGF2YWlsYWJpbGl0eVpvbmUuc3Vic3RyaW5nKGF2YWlsYWJpbGl0eVpvbmUubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZDogc3RyaW5nID0gcHJvcHMuYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoYXpMZXR0ZXIpOyAgICAgIFxuICAgIFxuICAgICAgICAgIGxldCB1c2luZ01ldHJpY3M6IHsgW2tleTogc3RyaW5nXTogSU1ldHJpYyB9ID0ge307XG4gICAgXG4gICAgICAgICAgY3JpdGljYWxPcGVyYXRpb25zLmZvckVhY2goKG9wZXJhdGlvbjogSU9wZXJhdGlvbikgPT4ge1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHthekxldHRlcn1fJHtvcGVyYXRpb24ub3BlcmF0aW9uTmFtZX1gXSA9XG4gICAgICAgICAgICAgIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNzLmNyZWF0ZVpvbmFsQXZhaWxhYmlsaXR5TWV0cmljKHtcbiAgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQ6IGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICAgICAgICBtZXRyaWNEZXRhaWxzOiBvcGVyYXRpb24uc2VydmVyU2lkZUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgICAgICAgbGFiZWw6IGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICAgICAgICBtZXRyaWNUeXBlOiBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLkZBVUxUX0NPVU5ULFxuICAgICAgICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmU6IGF2YWlsYWJpbGl0eVpvbmVcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb3BlcmF0aW9uLnNlcnZlclNpZGVBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLm1ldHJpY0RpbWVuc2lvbnMuem9uYWxEaW1lbnNpb25zKFxuICAgICAgICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICAgICAgICBBd3MuUkVHSU9OXG4gICAgICAgICAgICAgICkpO1xuICAgICAgICAgIH0pO1xuICAgIFxuICAgICAgICAgIHJldHVybiBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICAgICAgZXhwcmVzc2lvbjogT2JqZWN0LmtleXModXNpbmdNZXRyaWNzKS5qb2luKCcrJyksXG4gICAgICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgICAgdXNpbmdNZXRyaWNzOiB1c2luZ01ldHJpY3MsXG4gICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnNlcnZpY2UucGVyaW9kXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICBzdGF0aXN0aWM6ICdTdW0nLFxuICAgICAgICBsZWZ0WUF4aXM6IHtcbiAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgbGFiZWw6ICdDb3VudCcsXG4gICAgICAgICAgc2hvd1VuaXRzOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgbGVmdEFubm90YXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6IHByb3BzLnNlcnZpY2UuZmF1bHRDb3VudFRocmVzaG9sZCxcbiAgICAgICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgICAgICBjb2xvcjogQ29sb3IuUkVELFxuICAgICAgICAgICAgbGFiZWw6ICdIaWdoIFNldmVyaXR5JyxcbiAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgICB9KSxcbiAgICAgIFxuICAgICAgLi4uem9uYWxGYXVsdENvdW50V2lkZ2V0cyxcbiAgICAgIC4uLnBlckFaV2lkZ2V0V2l0aFBlck9wZXJhdGlvbkxhdGVuY3ksXG4gICAgICAuLi5wZXJBWldpZGdldFdpdGhQZXJPcGVyYXRpb25IaWdoTGF0ZW5jeUNvdW50XG4gICAgKTtcbiAgICAgXG4gIH1cblxuICAvKipcbiAgICogVGhlIHNlcnZpY2UgbGV2ZWwgZGFzaGJvYXJkXG4gICAqL1xuICBkYXNoYm9hcmQ6IERhc2hib2FyZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFNlcnZpY2VBdmFpbGFiaWxpdHlBbmRMYXRlbmN5RGFzaGJvYXJkUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmRhc2hib2FyZCA9IG5ldyBEYXNoYm9hcmQodGhpcywgJ0Rhc2hib2FyZCcsIHtcbiAgICAgIGRhc2hib2FyZE5hbWU6IGAke3Byb3BzLnNlcnZpY2Uuc2VydmljZU5hbWUudG9Mb3dlckNhc2UoKX0tYXZhaWxhYmlsaXR5LWFuZC1sYXRlbmN5LSR7QXdzLlJFR0lPTn1gLFxuICAgICAgZGVmYXVsdEludGVydmFsOiBwcm9wcy5pbnRlcnZhbCxcbiAgICAgIHBlcmlvZE92ZXJyaWRlOiBQZXJpb2RPdmVycmlkZS5BVVRPXG4gICAgfSk7XG5cbiAgICB0aGlzLmRhc2hib2FyZC5hZGRXaWRnZXRzKFxuICAgICAgbmV3IEFsYXJtU3RhdHVzV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICB3aWR0aDogNixcbiAgICAgICAgYWxhcm1zOiBbXG4gICAgICAgICAgcHJvcHMuc2VydmljZUFsYXJtc0FuZFJ1bGVzLnNlcnZpY2VJbXBhY3RBbGFybVxuICAgICAgICBdLFxuICAgICAgICB0aXRsZTogXCJTZXJ2aWNlIEFsYXJtIChhbnkgY3JpdGljYWwgb3BlcmF0aW9uIHNlZXMgaW1wYWN0IHpvbmFsbHkgb3IgcmVnaW9uYWxseSwgbWVhc3VyZWQgZnJvbSBzZXJ2ZXItc2lkZSBvciBjYW5hcnkpXCJcbiAgICAgIH0pLFxuICAgICAgbmV3IEFsYXJtU3RhdHVzV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICB3aWR0aDogNixcbiAgICAgICAgYWxhcm1zOiBbXG4gICAgICAgICAgcHJvcHMuc2VydmljZUFsYXJtc0FuZFJ1bGVzLnJlZ2lvbmFsSW1wYWN0QWxhcm1cbiAgICAgICAgXSxcbiAgICAgICAgdGl0bGU6IFwiUmVnaW9uYWwgSW1wYWN0ICh0aGVyZSBpcyByZWdpb25hbGx5IHNjb3BlZCBpbXBhY3QgdG8gYW55IGNyaXRpY2FsIG9wZXJhdGlvbiwgbWVhc3VyZWQgZnJvbSBzZXJ2ZXItc2lkZSBvciBjYW5hcnkpXCJcbiAgICAgIH0pLFxuICAgICAgbmV3IEFsYXJtU3RhdHVzV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICB3aWR0aDogNixcbiAgICAgICAgYWxhcm1zOiBbXG4gICAgICAgICAgcHJvcHMuc2VydmljZUFsYXJtc0FuZFJ1bGVzLnJlZ2lvbmFsU2VydmVyU2lkZUltcGFjdEFsYXJtXG4gICAgICAgIF0sXG4gICAgICAgIHRpdGxlOiBcIlNlcnZlci1zaWRlIFJlZ2lvbmFsIEltcGFjdCAodGhlcmUgaXMgcmVnaW9uYWxseSBzY29wZWQgaW1wYWN0IHRvIGFueSBjcml0aWNhbCBvcGVyYXRpb24sIG1lYXN1cmVkIGZyb20gc2VydmVyLXNpZGUpXCJcbiAgICAgIH0pLFxuICAgICAgLi4ucHJvcHMuc2VydmljZUFsYXJtc0FuZFJ1bGVzLnJlZ2lvbmFsQ2FuYXJ5QWxhcm0gPyBbbmV3IEFsYXJtU3RhdHVzV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICB3aWR0aDogNixcbiAgICAgICAgYWxhcm1zOiBbXG4gICAgICAgICAgcHJvcHMuc2VydmljZUFsYXJtc0FuZFJ1bGVzLnJlZ2lvbmFsQ2FuYXJ5QWxhcm1cbiAgICAgICAgXSxcbiAgICAgICAgdGl0bGU6IFwiQ2FuYXJ5IFJlZ2lvbmFsIEltcGFjdCAodGhlcmUgaXMgcmVnaW9uYWxseSBzY29wZWQgaW1wYWN0IHRvIGFueSBjcml0aWNhbCBvcGVyYXRpb24sIG1lYXN1cmVkIGZyb20gdGhlIGNhbmFyeSlcIlxuICAgICAgfSldIDogW11cbiAgICApO1xuXG4gICAgdGhpcy5kYXNoYm9hcmQuYWRkV2lkZ2V0cyhcbiAgICAgIG5ldyBBbGFybVN0YXR1c1dpZGdldCh7XG4gICAgICAgIGhlaWdodDogMixcbiAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgICBhbGFybXM6IFtcbiAgICAgICAgICAuLi5PYmplY3QudmFsdWVzKHByb3BzLnNlcnZpY2VBbGFybXNBbmRSdWxlcy56b25hbEFnZ3JlZ2F0ZUlzb2xhdGVkSW1wYWN0QWxhcm1zKVxuICAgICAgICBdLFxuICAgICAgICB0aXRsZTogXCJab25hbCBBZ2dyZWdhdGUgQWxhcm1zIChhbGFybXMgdHJpZ2dlciBpZiBhbnkgY3JpdGljYWwgb3BlcmF0aW9uIGluIHRoZSBBWiBzZWVzIGF2YWlsYWJpbGl0eSBvciBsYXRlbmN5IGltcGFjdCBhcyBtZWFzdXJlZCBmcm9tIHNlcnZlci1zaWRlIG9yIGNhbmFyeSlcIlxuICAgICAgfVxuICAgICkpO1xuXG4gICAgdGhpcy5kYXNoYm9hcmQuYWRkV2lkZ2V0cyhcbiAgICAgIG5ldyBBbGFybVN0YXR1c1dpZGdldCh7XG4gICAgICAgIGhlaWdodDogMixcbiAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgICBhbGFybXM6IFtcbiAgICAgICAgICAuLi5PYmplY3QudmFsdWVzKHByb3BzLnNlcnZpY2VBbGFybXNBbmRSdWxlcy56b25hbFNlcnZlclNpZGVJc29sYXRlZEltcGFjdEFsYXJtcylcbiAgICAgICAgXSxcbiAgICAgICAgdGl0bGU6IFwiU2VydmVyLXNpZGUgWm9uYWwgQWxhcm1zIChhbGFybXMgdHJpZ2dlciBpZiBhbnkgY3JpdGljYWwgb3BlcmF0aW9uIGluIHRoZSBBWiBzZWVzIGF2YWlsYWJpbGl0eSBvciBsYXRlbmN5IGltcGFjdCBhcyBtZWFzdXJlZCBmcm9tIHRoZSBzZXJ2ZXItc2lkZSwgdGhlc2UgYXJlIHVzZWZ1bCBmb3IgZGVwbG95bWVudCBtb25pdG9yaW5nLCBpbiBjYXNlIHRoZSBjYW5hcnkgc2VlcyBlcnJvcnMgd2hlbiBhbiBBWiBpcyBpbnRlbnRpb25hbGx5IHVuYXZhaWxhYmxlKVwiXG4gICAgICB9XG4gICAgKSk7XG5cbiAgICB0aGlzLmRhc2hib2FyZC5hZGRXaWRnZXRzKFxuICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICBtYXJrZG93bjogXCIjIyMgUGVyIE9wZXJhdGlvbiBEYXNoYm9hcmRzXFxuXCIgKyBwcm9wcy5vcGVyYXRpb25zRGFzaGJvYXJkLm1hcCh4ID0+IGAtIFske3guZGFzaGJvYXJkTmFtZX1dKGh0dHBzOi8vJHtBd3MuUkVHSU9OfS5jb25zb2xlLmF3cy5hbWF6b24uY29tL2Nsb3Vkd2F0Y2gvaG9tZT9yZWdpb249JHtBd3MuUkVHSU9OfSNkYXNoYm9hcmRzL2Rhc2hib2FyZC8ke3guZGFzaGJvYXJkTmFtZX0pYCkuam9pbihcIlxcblwiKSxcbiAgICAgICAgYmFja2dyb3VuZDogVGV4dFdpZGdldEJhY2tncm91bmQuVFJBTlNQQVJFTlQsXG4gICAgICAgIGhlaWdodDogNCxcbiAgICAgICAgd2lkdGg6IDI0XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBTZXJ2aWNlQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeURhc2hib2FyZC5jcmVhdGVTZXJ2ZXJTaWRlV2lkZ2V0cyh0aGlzLmRhc2hib2FyZCwgcHJvcHMpO1xuXG4gICAgaWYgKHByb3BzLnNlcnZpY2UuY2FuYXJ5VGVzdFByb3BzKSB7XG4gICAgICBTZXJ2aWNlQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeURhc2hib2FyZC5jcmVhdGVDYW5hcnlXaWRnZXRzKHRoaXMuZGFzaGJvYXJkLCBwcm9wcyk7XG4gICAgfVxuXG4gICAgbGV0IGxiOiBDZm5Mb2FkQmFsYW5jZXIgPSBwcm9wcy5zZXJ2aWNlLmxvYWRCYWxhbmNlcj8ubm9kZVxuICAgICAgLmRlZmF1bHRDaGlsZCBhcyBDZm5Mb2FkQmFsYW5jZXI7XG5cbiAgICBpZiAobGIgJiYgbGIudHlwZSA9PSAnYXBwbGljYXRpb24nKSB7XG4gICAgICB0aGlzLmRhc2hib2FyZC5hZGRXaWRnZXRzKFxuICAgICAgICBuZXcgVGV4dFdpZGdldCh7XG4gICAgICAgICAgbWFya2Rvd246IFwiIyMgKipMb2FkIEJhbGFuY2VyIE1ldHJpY3MqKlwiLFxuICAgICAgICAgIGJhY2tncm91bmQ6IFRleHRXaWRnZXRCYWNrZ3JvdW5kLlRSQU5TUEFSRU5ULFxuICAgICAgICAgIGhlaWdodDogMSxcbiAgICAgICAgICB3aWR0aDogMjRcbiAgICAgICAgfSksXG4gICAgICApO1xuXG4gICAgICB0aGlzLmRhc2hib2FyZC5hZGRXaWRnZXRzKFxuICAgICAgICAuLi5BcHBsaWNhdGlvbkxvYWRCYWxhbmNlck1ldHJpY3MuZ2VuZXJhdGVMb2FkQmFsYW5jZXJXaWRnZXRzKFxuICAgICAgICAgIFsgcHJvcHMuc2VydmljZS5sb2FkQmFsYW5jZXIgYXMgSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyIF0sXG4gICAgICAgICAgcHJvcHMuYXpNYXBwZXIsXG4gICAgICAgICAgcHJvcHMuc2VydmljZS5wZXJpb2QsXG4gICAgICAgICAgcHJvcHMuc2VydmljZS5kZWZhdWx0TGF0ZW5jeU1ldHJpY0RldGFpbHMuYWxhcm1TdGF0aXN0aWMsXG4gICAgICAgICAgcHJvcHMuc2VydmljZS5kZWZhdWx0TGF0ZW5jeU1ldHJpY0RldGFpbHMuc3VjY2Vzc0FsYXJtVGhyZXNob2xkLFxuICAgICAgICAgIHByb3BzLnNlcnZpY2UuZGVmYXVsdExhdGVuY3lNZXRyaWNEZXRhaWxzLmZhdWx0QWxhcm1UaHJlc2hvbGRcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
420
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmljZUF2YWlsYWJpbGl0eUFuZExhdGVuY3lEYXNoYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGFzaGJvYXJkcy9TZXJ2aWNlQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeURhc2hib2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBQ3RDLDZDQUFrQztBQUNsQywrREFZb0M7QUFLcEMsMkNBQXVDO0FBR3ZDLDhGQUEyRjtBQUUzRixnRkFBNkU7QUFDN0Usc0VBQW1FO0FBQ25FLDhEQUEyRDtBQUMzRCw0RkFBeUY7QUFFekY7O0dBRUc7QUFDSCxNQUFhLHNDQUNYLFNBQVEsc0JBQVM7SUFHVCxNQUFNLENBQUMsdUJBQXVCLENBQ3BDLFNBQW9CLEVBQ3BCLEtBQWtEO1FBR2xELElBQUksaUJBQWlCLEdBQWEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQztRQUN0RSxJQUFJLGtCQUFrQixHQUFrQixLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUM7UUFFbkcsU0FBUyxDQUFDLFVBQVUsQ0FDbEIsSUFBSSwyQkFBVSxDQUFDO1lBQ2IsUUFBUSxFQUFFLDRCQUE0QjtZQUN0QyxVQUFVLEVBQUUscUNBQW9CLENBQUMsV0FBVztZQUM1QyxNQUFNLEVBQUUsQ0FBQztZQUNULEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQyxDQUNILENBQUM7UUFFRixJQUFJLHdCQUF3QixHQUFjLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLGdCQUF3QixFQUFFLEVBQUU7WUFDM0YsSUFBSSxRQUFRLEdBQVcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMvRSxJQUFJLGtCQUFrQixH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LEVBQUUsOEJBQThCO2dCQUN4QyxVQUFVLEVBQUUscUNBQW9CLENBQUMsV0FBVztnQkFDNUMsTUFBTSxFQUFFLENBQUM7Z0JBQ1QsS0FBSyxFQUFFLEVBQUU7YUFDVixDQUFDLENBQ0gsQ0FBQztZQUVGLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUN2QixHQUFHLCtEQUE4QixDQUFDLDJCQUEyQixDQUMzRCxDQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBd0MsQ0FBRSxFQUMxRCxLQUFLLENBQUMsUUFBUSxFQUNkLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUNwQixLQUFLLENBQUMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLGNBQWMsRUFDeEQsS0FBSyxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxxQkFBcUIsRUFDL0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxtQkFBbUIsQ0FDbkUsQ0FDRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7Q0FDRjtBQXJqQkQsd0ZBcWpCQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCB7IEF3cyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIEFsYXJtU3RhdHVzV2lkZ2V0LFxuICBDb2xvcixcbiAgRGFzaGJvYXJkLFxuICBHcmFwaFdpZGdldCxcbiAgSU1ldHJpYyxcbiAgSVdpZGdldCxcbiAgTWF0aEV4cHJlc3Npb24sXG4gIFBlcmlvZE92ZXJyaWRlLFxuICBTdGF0cyxcbiAgVGV4dFdpZGdldCxcbiAgVGV4dFdpZGdldEJhY2tncm91bmQsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7XG4gIENmbkxvYWRCYWxhbmNlcixcbiAgSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElTZXJ2aWNlQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeURhc2hib2FyZCB9IGZyb20gJy4vSVNlcnZpY2VBdmFpbGFiaWxpdHlBbmRMYXRlbmN5RGFzaGJvYXJkJztcbmltcG9ydCB7IFNlcnZpY2VBdmFpbGFiaWxpdHlBbmRMYXRlbmN5RGFzaGJvYXJkUHJvcHMgfSBmcm9tICcuL3Byb3BzL1NlcnZpY2VBdmFpbGFiaWxpdHlBbmRMYXRlbmN5RGFzaGJvYXJkUHJvcHMnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJNZXRyaWNzIH0gZnJvbSAnLi4vbWV0cmljcy9BcHBsaWNhdGlvbkxvYWRCYWxhbmNlck1ldHJpY3MnO1xuaW1wb3J0IHsgSU9wZXJhdGlvbiB9IGZyb20gJy4uL3NlcnZpY2VzL0lPcGVyYXRpb24nO1xuaW1wb3J0IHsgQXZhaWxhYmlsaXR5TWV0cmljVHlwZSB9IGZyb20gJy4uL3V0aWxpdGllcy9BdmFpbGFiaWxpdHlNZXRyaWNUeXBlJztcbmltcG9ydCB7IExhdGVuY3lNZXRyaWNUeXBlIH0gZnJvbSAnLi4vdXRpbGl0aWVzL0xhdGVuY3lNZXRyaWNUeXBlJztcbmltcG9ydCB7IE1ldHJpY3NIZWxwZXIgfSBmcm9tICcuLi91dGlsaXRpZXMvTWV0cmljc0hlbHBlcic7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcyB9IGZyb20gJy4uL21ldHJpY3MvQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY3MnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzZXJ2aWNlIGxldmVsIGF2YWlsYWJpbGl0eSBhbmQgbGF0ZW5jeSBkYXNoYm9hcmRcbiAqL1xuZXhwb3J0IGNsYXNzIFNlcnZpY2VBdmFpbGFiaWxpdHlBbmRMYXRlbmN5RGFzaGJvYXJkXG4gIGV4dGVuZHMgQ29uc3RydWN0XG4gIGltcGxlbWVudHMgSVNlcnZpY2VBdmFpbGFiaWxpdHlBbmRMYXRlbmN5RGFzaGJvYXJkIHtcbiBcbiAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlU2VydmVyU2lkZVdpZGdldHMoXG4gICAgZGFzaGJvYXJkOiBEYXNoYm9hcmQsXG4gICAgcHJvcHM6IFNlcnZpY2VBdmFpbGFiaWxpdHlBbmRMYXRlbmN5RGFzaGJvYXJkUHJvcHNcbiAgKTogdm9pZCB7XG4gIFxuICAgIGxldCBhdmFpbGFiaWxpdHlab25lczogc3RyaW5nW10gPSBwcm9wcy5zZXJ2aWNlLmF2YWlsYWJpbGl0eVpvbmVOYW1lcztcbiAgICBsZXQgY3JpdGljYWxPcGVyYXRpb25zOiBJT3BlcmF0aW9uW10gPSAgcHJvcHMuc2VydmljZS5vcGVyYXRpb25zLmZpbHRlcigoeCkgPT4geC5jcml0aWNhbCA9PSB0cnVlKTtcbiAgICAgXG4gICAgZGFzaGJvYXJkLmFkZFdpZGdldHMoXG4gICAgICBuZXcgVGV4dFdpZGdldCh7XG4gICAgICAgIG1hcmtkb3duOiBcIiMjICoqU2VydmVyLXNpZGUgTWV0cmljcyoqXCIsXG4gICAgICAgIGJhY2tncm91bmQ6IFRleHRXaWRnZXRCYWNrZ3JvdW5kLlRSQU5TUEFSRU5ULFxuICAgICAgICBoZWlnaHQ6IDEsXG4gICAgICAgIHdpZHRoOiAyNFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgbGV0IHpvbmFsQXZhaWxhYmlsaXR5V2lkZ2V0czogSVdpZGdldFtdID0gYXZhaWxhYmlsaXR5Wm9uZXMubWFwKChhdmFpbGFiaWxpdHlab25lOiBzdHJpbmcpID0+IHtcbiAgICAgIGxldCBhekxldHRlcjogc3RyaW5nID0gYXZhaWxhYmlsaXR5Wm9uZS5zdWJzdHJpbmcoYXZhaWxhYmlsaXR5Wm9uZS5sZW5ndGggLSAxKTtcbiAgICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWQ6IHN0cmluZyA9IHByb3BzLmF6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKGF6TGV0dGVyKTtcblxuICAgICAgbGV0IGNyaXRpY2FsT3BlcmF0aW9uc1pvbmFsTWV0cmljczogSU1ldHJpY1tdID0gY3JpdGljYWxPcGVyYXRpb25zLm1hcCgob3BlcmF0aW9uOiBJT3BlcmF0aW9uLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIHJldHVybiBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcy5jcmVhdGVab25hbEF2YWlsYWJpbGl0eU1ldHJpYyh7XG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZUlkOiBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgICBsYWJlbDogb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgKyBcIiAoYXZnOiAke0FWR30gIG1pbjogJHtNSU59KVwiLFxuICAgICAgICAgIG1ldHJpY0RldGFpbHM6IG9wZXJhdGlvbi5zZXJ2ZXJTaWRlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBtZXRyaWNUeXBlOiBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLlNVQ0NFU1NfUkFURSxcbiAgICAgICAgICBjb2xvcjogTWV0cmljc0hlbHBlci5jb2xvcnNbaW5kZXhdXG4gICAgICAgIH0sXG4gICAgICAgIG9wZXJhdGlvbi5zZXJ2ZXJTaWRlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscy5tZXRyaWNEaW1lbnNpb25zLnpvbmFsRGltZW5zaW9ucyhcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgQXdzLlJFR0lPTlxuICAgICAgICApKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICBoZWlnaHQ6IDgsXG4gICAgICAgICAgd2lkdGg6IDYsXG4gICAgICAgICAgdGl0bGU6IGBBdmFpbGFiaWxpdHkgLSAke2F2YWlsYWJpbGl0eVpvbmVJZH1gLFxuICAgICAgICAgIHJlZ2lvbjogQXdzLlJFR0lPTixcbiAgICAgICAgICBsZWZ0OiBjcml0aWNhbE9wZXJhdGlvbnNab25hbE1ldHJpY3MsXG4gICAgICAgICAgc3RhdGlzdGljOiAnU3VtJyxcbiAgICAgICAgICBsZWZ0WUF4aXM6IHtcbiAgICAgICAgICAgIG1heDogMTAwLFxuICAgICAgICAgICAgbWluOiA5NSxcbiAgICAgICAgICAgIGxhYmVsOiAnUGVyY2VudCcsXG4gICAgICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKVxuICAgIH0pO1xuXG4gICAgbGV0IHpvbmFsRmF1bHRDb3VudFdpZGdldHM6IElXaWRnZXRbXSA9IGF2YWlsYWJpbGl0eVpvbmVzLm1hcCgoYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nKSA9PiB7XG4gICAgICBsZXQgYXpMZXR0ZXI6IHN0cmluZyA9IGF2YWlsYWJpbGl0eVpvbmUuc3Vic3RyaW5nKGF2YWlsYWJpbGl0eVpvbmUubGVuZ3RoIC0gMSk7XG4gICAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZUlkOiBzdHJpbmcgPSBwcm9wcy5hek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihhekxldHRlcik7XG5cbiAgICAgIGxldCBjcml0aWNhbE9wZXJhdGlvbnNab25hbE1ldHJpY3M6IElNZXRyaWNbXSA9IGNyaXRpY2FsT3BlcmF0aW9ucy5tYXAoKG9wZXJhdGlvbjogSU9wZXJhdGlvbiwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICByZXR1cm4gQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY3MuY3JlYXRlWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWMoe1xuICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmU6IGF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgbGFiZWw6IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lICsgXCIgKGF2ZzogJHtBVkd9ICBtYXg6ICR7TUFYfSlcIixcbiAgICAgICAgICBtZXRyaWNEZXRhaWxzOiBvcGVyYXRpb24uc2VydmVyU2lkZUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgbWV0cmljVHlwZTogQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5GQVVMVF9DT1VOVCxcbiAgICAgICAgICBjb2xvcjogTWV0cmljc0hlbHBlci5jb2xvcnNbaW5kZXhdXG4gICAgICAgIH0sXG4gICAgICAgIG9wZXJhdGlvbi5zZXJ2ZXJTaWRlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscy5tZXRyaWNEaW1lbnNpb25zLnpvbmFsRGltZW5zaW9ucyhcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgQXdzLlJFR0lPTlxuICAgICAgICApKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgd2lkdGg6IDgsXG4gICAgICAgICAgdGl0bGU6IGBGYXVsdCBDb3VudCAtICR7YXZhaWxhYmlsaXR5Wm9uZUlkfSBgLFxuICAgICAgICAgIHJlZ2lvbjogQXdzLlJFR0lPTixcbiAgICAgICAgICBsZWZ0OiBjcml0aWNhbE9wZXJhdGlvbnNab25hbE1ldHJpY3MsXG4gICAgICAgICAgc3RhdGlzdGljOiAnU3VtJyxcbiAgICAgICAgICBsZWZ0WUF4aXM6IHtcbiAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgIGxhYmVsOiAnQ291bnQnLFxuICAgICAgICAgICAgc2hvd1VuaXRzOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9KTtcblxuICAgIGxldCBwZXJBWldpZGdldFdpdGhQZXJPcGVyYXRpb25MYXRlbmN5OiBJV2lkZ2V0W10gPSBhdmFpbGFiaWxpdHlab25lcy5tYXAoKGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZykgPT4ge1xuICAgICAgbGV0IGF6TGV0dGVyOiBzdHJpbmcgPSBhdmFpbGFiaWxpdHlab25lLnN1YnN0cmluZyhhdmFpbGFiaWxpdHlab25lLmxlbmd0aCAtIDEpO1xuICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZDogc3RyaW5nID0gcHJvcHMuYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoYXpMZXR0ZXIpO1xuXG4gICAgICBsZXQgY3JpdGljYWxPcGVyYXRpb25zWm9uYWxNZXRyaWNzOiBJTWV0cmljW10gPSBjcml0aWNhbE9wZXJhdGlvbnMubWFwKChvcGVyYXRpb246IElPcGVyYXRpb24sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNzLmNyZWF0ZVpvbmFsTGF0ZW5jeUNvdW50TWV0cmljKHtcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQ6IGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lOiBhdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgIGxhYmVsOiBgJHtvcGVyYXRpb24ub3BlcmF0aW9uTmFtZX0gKCR7b3BlcmF0aW9uLnNlcnZlclNpZGVMYXRlbmN5TWV0cmljRGV0YWlscy5hbGFybVN0YXRpc3RpY30pYCArIFwiIChhdmc6ICR7QVZHfSAgbWF4OiAke01BWH0pXCIsXG4gICAgICAgICAgbWV0cmljRGV0YWlsczogb3BlcmF0aW9uLnNlcnZlclNpZGVMYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBtZXRyaWNUeXBlOiBMYXRlbmN5TWV0cmljVHlwZS5TVUNDRVNTX0xBVEVOQ1ksXG4gICAgICAgICAgY29sb3I6IE1ldHJpY3NIZWxwZXIuY29sb3JzW2luZGV4XSxcbiAgICAgICAgICBzdGF0aXN0aWM6IG9wZXJhdGlvbi5zZXJ2ZXJTaWRlTGF0ZW5jeU1ldHJpY0RldGFpbHMuYWxhcm1TdGF0aXN0aWNcbiAgICAgICAgfSxcbiAgICAgICAgb3BlcmF0aW9uLnNlcnZlclNpZGVMYXRlbmN5TWV0cmljRGV0YWlscy5tZXRyaWNEaW1lbnNpb25zLnpvbmFsRGltZW5zaW9ucyhcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgQXdzLlJFR0lPTlxuICAgICAgICApKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgd2lkdGg6IDgsXG4gICAgICAgICAgdGl0bGU6IGBMYXRlbmN5IC0gJHthdmFpbGFiaWxpdHlab25lSWR9YCxcbiAgICAgICAgICByZWdpb246IEF3cy5SRUdJT04sXG4gICAgICAgICAgbGVmdDogY3JpdGljYWxPcGVyYXRpb25zWm9uYWxNZXRyaWNzLFxuICAgICAgICAgIGxlZnRZQXhpczoge1xuICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgbGFiZWw6ICdNaWxsaXNlY29uZHMnLFxuICAgICAgICAgICAgc2hvd1VuaXRzOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9KTtcblxuICAgIGxldCBwZXJBWldpZGdldFdpdGhQZXJPcGVyYXRpb25IaWdoTGF0ZW5jeUNvdW50OiBJV2lkZ2V0W10gPSBhdmFpbGFiaWxpdHlab25lcy5tYXAoKGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZykgPT4ge1xuICAgICAgbGV0IGF6TGV0dGVyOiBzdHJpbmcgPSBhdmFpbGFiaWxpdHlab25lLnN1YnN0cmluZyhhdmFpbGFiaWxpdHlab25lLmxlbmd0aCAtIDEpO1xuICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZDogc3RyaW5nID0gcHJvcHMuYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoYXpMZXR0ZXIpO1xuXG4gICAgICBsZXQgY3JpdGljYWxPcGVyYXRpb25zWm9uYWxNZXRyaWNzOiBJTWV0cmljW10gPSBjcml0aWNhbE9wZXJhdGlvbnMubWFwKChvcGVyYXRpb246IElPcGVyYXRpb24sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNzLmNyZWF0ZVpvbmFsTGF0ZW5jeUNvdW50TWV0cmljKHtcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQ6IGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lOiBhdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgIGxhYmVsOiBvcGVyYXRpb24ub3BlcmF0aW9uTmFtZSArIFwiIChhdmc6ICR7QVZHfSAgbWF4OiAke01BWH0pXCIsXG4gICAgICAgICAgbWV0cmljRGV0YWlsczogb3BlcmF0aW9uLnNlcnZlclNpZGVMYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBtZXRyaWNUeXBlOiBMYXRlbmN5TWV0cmljVHlwZS5TVUNDRVNTX0xBVEVOQ1ksXG4gICAgICAgICAgY29sb3I6IE1ldHJpY3NIZWxwZXIuY29sb3JzW2luZGV4XSxcbiAgICAgICAgICBzdGF0aXN0aWM6IFN0YXRzLnRyaW1tZWRDb3VudChNZXRyaWNzSGVscGVyLmNvbnZlcnREdXJhdGlvbkJ5VW5pdChvcGVyYXRpb24uc2VydmVyU2lkZUxhdGVuY3lNZXRyaWNEZXRhaWxzLnN1Y2Nlc3NBbGFybVRocmVzaG9sZCwgb3BlcmF0aW9uLnNlcnZlclNpZGVMYXRlbmN5TWV0cmljRGV0YWlscy51bml0KSksXG4gICAgICAgIH0sXG4gICAgICAgIG9wZXJhdGlvbi5zZXJ2ZXJTaWRlTGF0ZW5jeU1ldHJpY0RldGFpbHMubWV0cmljRGltZW5zaW9ucy56b25hbERpbWVuc2lvbnMoXG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIEF3cy5SRUdJT05cbiAgICAgICAgKSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgIHdpZHRoOiA4LFxuICAgICAgICAgIHRpdGxlOiBgSGlnaCBMYXRlbmN5IENvdW50IC0gJHthdmFpbGFiaWxpdHlab25lSWR9YCxcbiAgICAgICAgICByZWdpb246IEF3cy5SRUdJT04sXG4gICAgICAgICAgbGVmdDogY3JpdGljYWxPcGVyYXRpb25zWm9uYWxNZXRyaWNzLFxuICAgICAgICAgIHN0YXRpc3RpYzogJ1N1bScsXG4gICAgICAgICAgbGVmdFlBeGlzOiB7XG4gICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICBsYWJlbDogJ0NvdW50JyxcbiAgICAgICAgICAgIHNob3dVbml0czogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApXG4gICAgfSk7XG5cbiAgICBkYXNoYm9hcmQuYWRkV2lkZ2V0cyhcblxuICAgICAgLi4uem9uYWxBdmFpbGFiaWxpdHlXaWRnZXRzLFxuXG4gICAgICAvLyBTZXJ2ZXItc2lkZSBwZXIgQVogZmF1bHQgY291bnRcbiAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgIGhlaWdodDogOCxcbiAgICAgICAgd2lkdGg6IDYsXG4gICAgICAgIHRpdGxlOiAnRmF1bHQgQ291bnQnLFxuICAgICAgICByZWdpb246IEF3cy5SRUdJT04sXG4gICAgICAgIGxlZnQ6IGF2YWlsYWJpbGl0eVpvbmVzLm1hcCgoYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IGF6TGV0dGVyOiBzdHJpbmcgPSBhdmFpbGFiaWxpdHlab25lLnN1YnN0cmluZyhhdmFpbGFiaWxpdHlab25lLmxlbmd0aCAtIDEpO1xuICAgICAgICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWQ6IHN0cmluZyA9IHByb3BzLmF6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKGF6TGV0dGVyKTsgICAgICBcbiAgICBcbiAgICAgICAgICBsZXQgdXNpbmdNZXRyaWNzOiB7IFtrZXk6IHN0cmluZ106IElNZXRyaWMgfSA9IHt9O1xuICAgIFxuICAgICAgICAgIGNyaXRpY2FsT3BlcmF0aW9ucy5mb3JFYWNoKChvcGVyYXRpb246IElPcGVyYXRpb24pID0+IHtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICB1c2luZ01ldHJpY3NbYCR7YXpMZXR0ZXJ9XyR7b3BlcmF0aW9uLm9wZXJhdGlvbk5hbWV9YF0gPVxuICAgICAgICAgICAgICBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcy5jcmVhdGVab25hbEF2YWlsYWJpbGl0eU1ldHJpYyh7XG4gICAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZUlkOiBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgICAgICAgbWV0cmljRGV0YWlsczogb3BlcmF0aW9uLnNlcnZlclNpZGVBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgICAgICAgbWV0cmljVHlwZTogQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5GQVVMVF9DT1VOVCxcbiAgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlab25lOiBhdmFpbGFiaWxpdHlab25lXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9wZXJhdGlvbi5zZXJ2ZXJTaWRlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscy5tZXRyaWNEaW1lbnNpb25zLnpvbmFsRGltZW5zaW9ucyhcbiAgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgICAgICAgQXdzLlJFR0lPTlxuICAgICAgICAgICAgICApKTtcbiAgICAgICAgICB9KTtcbiAgICBcbiAgICAgICAgICByZXR1cm4gbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgICAgICAgIGV4cHJlc3Npb246IE9iamVjdC5rZXlzKHVzaW5nTWV0cmljcykuam9pbignKycpLFxuICAgICAgICAgICAgbGFiZWw6IGF2YWlsYWJpbGl0eVpvbmVJZCArIFwiIChhdmc6ICR7QVZHfSAgbWF4OiAke01BWH0pXCIsXG4gICAgICAgICAgICB1c2luZ01ldHJpY3M6IHVzaW5nTWV0cmljcyxcbiAgICAgICAgICAgIHBlcmlvZDogcHJvcHMuc2VydmljZS5wZXJpb2RcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSksXG4gICAgICAgIHN0YXRpc3RpYzogJ1N1bScsXG4gICAgICAgIGxlZnRZQXhpczoge1xuICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICBsYWJlbDogJ0NvdW50JyxcbiAgICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBsZWZ0QW5ub3RhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogcHJvcHMuc2VydmljZS5mYXVsdENvdW50VGhyZXNob2xkLFxuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGNvbG9yOiBDb2xvci5SRUQsXG4gICAgICAgICAgICBsYWJlbDogJ0hpZ2ggU2V2ZXJpdHknLFxuICAgICAgICAgIH0sXG4gICAgICAgIF1cbiAgICAgIH0pLFxuICAgICAgXG4gICAgICAuLi56b25hbEZhdWx0Q291bnRXaWRnZXRzLFxuICAgICAgLi4ucGVyQVpXaWRnZXRXaXRoUGVyT3BlcmF0aW9uTGF0ZW5jeSxcbiAgICAgIC4uLnBlckFaV2lkZ2V0V2l0aFBlck9wZXJhdGlvbkhpZ2hMYXRlbmN5Q291bnRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlQ2FuYXJ5V2lkZ2V0cyhcbiAgICBkYXNoYm9hcmQ6IERhc2hib2FyZCxcbiAgICBwcm9wczogU2VydmljZUF2YWlsYWJpbGl0eUFuZExhdGVuY3lEYXNoYm9hcmRQcm9wc1xuICApOiB2b2lkIHtcbiAgXG4gICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVzOiBzdHJpbmdbXSA9IHByb3BzLnNlcnZpY2UuYXZhaWxhYmlsaXR5Wm9uZU5hbWVzO1xuICAgIGxldCBjcml0aWNhbE9wZXJhdGlvbnM6IElPcGVyYXRpb25bXSA9ICBwcm9wcy5zZXJ2aWNlLm9wZXJhdGlvbnMuZmlsdGVyKCh4KSA9PiB4LmNyaXRpY2FsID09IHRydWUpO1xuICAgICBcbiAgICBkYXNoYm9hcmQuYWRkV2lkZ2V0cyhcbiAgICAgIG5ldyBUZXh0V2lkZ2V0KHtcbiAgICAgICAgbWFya2Rvd246IFwiIyMgKipDYW5hcnkgTWV0cmljcyoqXCIsXG4gICAgICAgIGJhY2tncm91bmQ6IFRleHRXaWRnZXRCYWNrZ3JvdW5kLlRSQU5TUEFSRU5ULFxuICAgICAgICBoZWlnaHQ6IDEsXG4gICAgICAgIHdpZHRoOiAyNFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgbGV0IHpvbmFsQXZhaWxhYmlsaXR5V2lkZ2V0czogSVdpZGdldFtdID0gYXZhaWxhYmlsaXR5Wm9uZXMubWFwKChhdmFpbGFiaWxpdHlab25lOiBzdHJpbmcpID0+IHtcbiAgICAgIGxldCBhekxldHRlcjogc3RyaW5nID0gYXZhaWxhYmlsaXR5Wm9uZS5zdWJzdHJpbmcoYXZhaWxhYmlsaXR5Wm9uZS5sZW5ndGggLSAxKTtcbiAgICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWQ6IHN0cmluZyA9IHByb3BzLmF6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKGF6TGV0dGVyKTtcblxuICAgICAgbGV0IGNyaXRpY2FsT3BlcmF0aW9uc1pvbmFsTWV0cmljczogSU1ldHJpY1tdID0gY3JpdGljYWxPcGVyYXRpb25zLm1hcCgob3BlcmF0aW9uOiBJT3BlcmF0aW9uLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIHJldHVybiBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcy5jcmVhdGVab25hbEF2YWlsYWJpbGl0eU1ldHJpYyh7XG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZUlkOiBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgICBsYWJlbDogb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgKyBcIiAoYXZnOiAke0FWR30gIG1pbjogJHtNSU59KVwiLFxuICAgICAgICAgIG1ldHJpY0RldGFpbHM6IG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzIS5jYW5hcnlBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgIG1ldHJpY1R5cGU6IEF2YWlsYWJpbGl0eU1ldHJpY1R5cGUuU1VDQ0VTU19SQVRFLFxuICAgICAgICAgIGNvbG9yOiBNZXRyaWNzSGVscGVyLmNvbG9yc1tpbmRleF1cbiAgICAgICAgfSxcbiAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMhLmNhbmFyeUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMubWV0cmljRGltZW5zaW9ucy56b25hbERpbWVuc2lvbnMoXG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIEF3cy5SRUdJT05cbiAgICAgICAgKSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgaGVpZ2h0OiA4LFxuICAgICAgICAgIHdpZHRoOiA2LFxuICAgICAgICAgIHRpdGxlOiBgQXZhaWxhYmlsaXR5IC0gJHthdmFpbGFiaWxpdHlab25lSWR9IGAsXG4gICAgICAgICAgcmVnaW9uOiBBd3MuUkVHSU9OLFxuICAgICAgICAgIGxlZnQ6IGNyaXRpY2FsT3BlcmF0aW9uc1pvbmFsTWV0cmljcyxcbiAgICAgICAgICBzdGF0aXN0aWM6ICdTdW0nLFxuICAgICAgICAgIGxlZnRZQXhpczoge1xuICAgICAgICAgICAgbWF4OiAxMDAsXG4gICAgICAgICAgICBtaW46IDk1LFxuICAgICAgICAgICAgbGFiZWw6ICdQZXJjZW50JyxcbiAgICAgICAgICAgIHNob3dVbml0czogZmFsc2UsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApXG4gICAgfSk7XG5cbiAgICBsZXQgem9uYWxGYXVsdENvdW50V2lkZ2V0czogSVdpZGdldFtdID0gYXZhaWxhYmlsaXR5Wm9uZXMubWFwKChhdmFpbGFiaWxpdHlab25lOiBzdHJpbmcpID0+IHtcbiAgICAgIGxldCBhekxldHRlcjogc3RyaW5nID0gYXZhaWxhYmlsaXR5Wm9uZS5zdWJzdHJpbmcoYXZhaWxhYmlsaXR5Wm9uZS5sZW5ndGggLSAxKTtcbiAgICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWQ6IHN0cmluZyA9IHByb3BzLmF6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKGF6TGV0dGVyKTtcblxuICAgICAgbGV0IGNyaXRpY2FsT3BlcmF0aW9uc1pvbmFsTWV0cmljczogSU1ldHJpY1tdID0gY3JpdGljYWxPcGVyYXRpb25zLm1hcCgob3BlcmF0aW9uOiBJT3BlcmF0aW9uLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIHJldHVybiBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcy5jcmVhdGVab25hbEF2YWlsYWJpbGl0eU1ldHJpYyh7XG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZUlkOiBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgICBsYWJlbDogb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgKyBcIiAoYXZnOiAke0FWR30gIG1heDogJHtNQVh9KVwiLFxuICAgICAgICAgIG1ldHJpY0RldGFpbHM6IG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzIS5jYW5hcnlBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgIG1ldHJpY1R5cGU6IEF2YWlsYWJpbGl0eU1ldHJpY1R5cGUuRkFVTFRfQ09VTlQsXG4gICAgICAgICAgY29sb3I6IE1ldHJpY3NIZWxwZXIuY29sb3JzW2luZGV4XVxuICAgICAgICB9LFxuICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscyEuY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscy5tZXRyaWNEaW1lbnNpb25zLnpvbmFsRGltZW5zaW9ucyhcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgQXdzLlJFR0lPTlxuICAgICAgICApKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgd2lkdGg6IDgsXG4gICAgICAgICAgdGl0bGU6IGBGYXVsdCBDb3VudCAtICR7YXZhaWxhYmlsaXR5Wm9uZUlkfWAsXG4gICAgICAgICAgcmVnaW9uOiBBd3MuUkVHSU9OLFxuICAgICAgICAgIGxlZnQ6IGNyaXRpY2FsT3BlcmF0aW9uc1pvbmFsTWV0cmljcyxcbiAgICAgICAgICBzdGF0aXN0aWM6ICdTdW0nLFxuICAgICAgICAgIGxlZnRZQXhpczoge1xuICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgbGFiZWw6ICdDb3VudCcsXG4gICAgICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKVxuICAgIH0pO1xuXG4gICAgbGV0IHBlckFaV2lkZ2V0V2l0aFBlck9wZXJhdGlvbkxhdGVuY3k6IElXaWRnZXRbXSA9IGF2YWlsYWJpbGl0eVpvbmVzLm1hcCgoYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nLCApID0+IHtcbiAgICAgIGxldCBhekxldHRlcjogc3RyaW5nID0gYXZhaWxhYmlsaXR5Wm9uZS5zdWJzdHJpbmcoYXZhaWxhYmlsaXR5Wm9uZS5sZW5ndGggLSAxKTtcbiAgICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWQ6IHN0cmluZyA9IHByb3BzLmF6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKGF6TGV0dGVyKTtcblxuICAgICAgbGV0IGNyaXRpY2FsT3BlcmF0aW9uc1pvbmFsTWV0cmljczogSU1ldHJpY1tdID0gY3JpdGljYWxPcGVyYXRpb25zLm1hcCgob3BlcmF0aW9uOiBJT3BlcmF0aW9uLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgIHJldHVybiBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcy5jcmVhdGVab25hbExhdGVuY3lDb3VudE1ldHJpYyh7XG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZUlkOiBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgICAgICBsYWJlbDogYCR7b3BlcmF0aW9uLm9wZXJhdGlvbk5hbWV9ICgke29wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzIS5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlscy5hbGFybVN0YXRpc3RpY30pYCArIFwiIChhdmc6ICR7QVZHfSAgbWF4OiAke01BWH0pXCIsXG4gICAgICAgICAgbWV0cmljRGV0YWlsczogb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMhLmNhbmFyeUxhdGVuY3lNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgIG1ldHJpY1R5cGU6IExhdGVuY3lNZXRyaWNUeXBlLlNVQ0NFU1NfTEFURU5DWSxcbiAgICAgICAgICBjb2xvcjogTWV0cmljc0hlbHBlci5jb2xvcnNbaW5kZXhdLFxuICAgICAgICAgIHN0YXRpc3RpYzogb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMhLmNhbmFyeUxhdGVuY3lNZXRyaWNEZXRhaWxzLmFsYXJtU3RhdGlzdGljXG4gICAgICAgIH0sXG4gICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzIS5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlscy5tZXRyaWNEaW1lbnNpb25zLnpvbmFsRGltZW5zaW9ucyhcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgQXdzLlJFR0lPTlxuICAgICAgICApKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gbmV3IEdyYXBoV2lkZ2V0KHtcbiAgICAgICAgICBoZWlnaHQ6IDYsXG4gICAgICAgICAgd2lkdGg6IDgsXG4gICAgICAgICAgdGl0bGU6IGBMYXRlbmN5IC0gJHthdmFpbGFiaWxpdHlab25lSWR9YCxcbiAgICAgICAgICByZWdpb246IEF3cy5SRUdJT04sXG4gICAgICAgICAgbGVmdDogY3JpdGljYWxPcGVyYXRpb25zWm9uYWxNZXRyaWNzLFxuICAgICAgICAgIGxlZnRZQXhpczoge1xuICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgbGFiZWw6ICdNaWxsaXNlY29uZHMnLFxuICAgICAgICAgICAgc2hvd1VuaXRzOiBmYWxzZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9KTtcblxuICAgIGxldCBwZXJBWldpZGdldFdpdGhQZXJPcGVyYXRpb25IaWdoTGF0ZW5jeUNvdW50OiBJV2lkZ2V0W10gPSBhdmFpbGFiaWxpdHlab25lcy5tYXAoKGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZykgPT4ge1xuICAgICAgbGV0IGF6TGV0dGVyOiBzdHJpbmcgPSBhdmFpbGFiaWxpdHlab25lLnN1YnN0cmluZyhhdmFpbGFiaWxpdHlab25lLmxlbmd0aCAtIDEpO1xuICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZDogc3RyaW5nID0gcHJvcHMuYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoYXpMZXR0ZXIpO1xuXG4gICAgICBsZXQgY3JpdGljYWxPcGVyYXRpb25zWm9uYWxNZXRyaWNzOiBJTWV0cmljW10gPSBjcml0aWNhbE9wZXJhdGlvbnMubWFwKChvcGVyYXRpb246IElPcGVyYXRpb24sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNzLmNyZWF0ZVpvbmFsTGF0ZW5jeUNvdW50TWV0cmljKHtcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lSWQ6IGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lOiBhdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgIGxhYmVsOiBvcGVyYXRpb24ub3BlcmF0aW9uTmFtZSArIFwiIChhdmc6ICR7QVZHfSAgbWF4OiAke01BWH0pXCIsXG4gICAgICAgICAgbWV0cmljRGV0YWlsczogb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMhLmNhbmFyeUxhdGVuY3lNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgIG1ldHJpY1R5cGU6IExhdGVuY3lNZXRyaWNUeXBlLlNVQ0NFU1NfTEFURU5DWSxcbiAgICAgICAgICBjb2xvcjogTWV0cmljc0hlbHBlci5jb2xvcnNbaW5kZXhdLFxuICAgICAgICAgIHN0YXRpc3RpYzogU3RhdHMudHJpbW1lZENvdW50KFxuICAgICAgICAgICAgTWV0cmljc0hlbHBlci5jb252ZXJ0RHVyYXRpb25CeVVuaXQoXG4gICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzIS5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlscy5zdWNjZXNzQWxhcm1UaHJlc2hvbGQsXG4gICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzIS5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlscy51bml0IFxuICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgfSxcbiAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMhLmNhbmFyeUxhdGVuY3lNZXRyaWNEZXRhaWxzLm1ldHJpY0RpbWVuc2lvbnMuem9uYWxEaW1lbnNpb25zKFxuICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBBd3MuUkVHSU9OXG4gICAgICAgICkpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICB3aWR0aDogOCxcbiAgICAgICAgICB0aXRsZTogYEhpZ2ggTGF0ZW5jeSBDb3VudCAtICR7YXZhaWxhYmlsaXR5Wm9uZUlkfWAsXG4gICAgICAgICAgcmVnaW9uOiBBd3MuUkVHSU9OLFxuICAgICAgICAgIGxlZnQ6IGNyaXRpY2FsT3BlcmF0aW9uc1pvbmFsTWV0cmljcyxcbiAgICAgICAgICBzdGF0aXN0aWM6ICdTdW0nLFxuICAgICAgICAgIGxlZnRZQXhpczoge1xuICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgbGFiZWw6ICdDb3VudCcsXG4gICAgICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKVxuICAgIH0pO1xuXG4gICAgZGFzaGJvYXJkLmFkZFdpZGdldHMoXG5cbiAgICAgIC4uLnpvbmFsQXZhaWxhYmlsaXR5V2lkZ2V0cyxcblxuICAgICAgLy8gU2VydmVyLXNpZGUgcGVyIEFaIGZhdWx0IGNvdW50XG4gICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDgsXG4gICAgICAgIHdpZHRoOiA2LFxuICAgICAgICB0aXRsZTogJ0ZhdWx0IENvdW50JyxcbiAgICAgICAgcmVnaW9uOiBBd3MuUkVHSU9OLFxuICAgICAgICBsZWZ0OiBhdmFpbGFiaWxpdHlab25lcy5tYXAoKGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGxldCBhekxldHRlcjogc3RyaW5nID0gYXZhaWxhYmlsaXR5Wm9uZS5zdWJzdHJpbmcoYXZhaWxhYmlsaXR5Wm9uZS5sZW5ndGggLSAxKTtcbiAgICAgICAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZUlkOiBzdHJpbmcgPSBwcm9wcy5hek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihhekxldHRlcik7ICAgICAgXG4gICAgXG4gICAgICAgICAgbGV0IHVzaW5nTWV0cmljczogeyBba2V5OiBzdHJpbmddOiBJTWV0cmljIH0gPSB7fTtcbiAgICBcbiAgICAgICAgICBjcml0aWNhbE9wZXJhdGlvbnMuZm9yRWFjaCgob3BlcmF0aW9uOiBJT3BlcmF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2F6TGV0dGVyfV8ke29wZXJhdGlvbi5vcGVyYXRpb25OYW1lfWBdID1cbiAgICAgICAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY3MuY3JlYXRlWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWMoe1xuICAgICAgICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVJZDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgICAgICAgIG1ldHJpY0RldGFpbHM6IG9wZXJhdGlvbi5zZXJ2ZXJTaWRlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICAgICAgICBsYWJlbDogYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgICAgICAgIG1ldHJpY1R5cGU6IEF2YWlsYWJpbGl0eU1ldHJpY1R5cGUuRkFVTFRfQ09VTlQsXG4gICAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogYXZhaWxhYmlsaXR5Wm9uZVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvcGVyYXRpb24uc2VydmVyU2lkZUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMubWV0cmljRGltZW5zaW9ucy56b25hbERpbWVuc2lvbnMoXG4gICAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgICAgICAgIEF3cy5SRUdJT05cbiAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgfSk7XG4gICAgXG4gICAgICAgICAgcmV0dXJuIG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICAgICAgICBleHByZXNzaW9uOiBPYmplY3Qua2V5cyh1c2luZ01ldHJpY3MpLmpvaW4oJysnKSxcbiAgICAgICAgICAgIGxhYmVsOiBhdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgICB1c2luZ01ldHJpY3M6IHVzaW5nTWV0cmljcyxcbiAgICAgICAgICAgIHBlcmlvZDogcHJvcHMuc2VydmljZS5wZXJpb2RcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSksXG4gICAgICAgIHN0YXRpc3RpYzogJ1N1bScsXG4gICAgICAgIGxlZnRZQXhpczoge1xuICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICBsYWJlbDogJ0NvdW50JyxcbiAgICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICBsZWZ0QW5ub3RhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB2YWx1ZTogcHJvcHMuc2VydmljZS5mYXVsdENvdW50VGhyZXNob2xkLFxuICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGNvbG9yOiBDb2xvci5SRUQsXG4gICAgICAgICAgICBsYWJlbDogJ0hpZ2ggU2V2ZXJpdHknLFxuICAgICAgICAgIH0sXG4gICAgICAgIF1cbiAgICAgIH0pLFxuICAgICAgXG4gICAgICAuLi56b25hbEZhdWx0Q291bnRXaWRnZXRzLFxuICAgICAgLi4ucGVyQVpXaWRnZXRXaXRoUGVyT3BlcmF0aW9uTGF0ZW5jeSxcbiAgICAgIC4uLnBlckFaV2lkZ2V0V2l0aFBlck9wZXJhdGlvbkhpZ2hMYXRlbmN5Q291bnRcbiAgICApO1xuICAgICBcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc2VydmljZSBsZXZlbCBkYXNoYm9hcmRcbiAgICovXG4gIGRhc2hib2FyZDogRGFzaGJvYXJkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogU2VydmljZUF2YWlsYWJpbGl0eUFuZExhdGVuY3lEYXNoYm9hcmRQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuZGFzaGJvYXJkID0gbmV3IERhc2hib2FyZCh0aGlzLCAnRGFzaGJvYXJkJywge1xuICAgICAgZGFzaGJvYXJkTmFtZTogYCR7cHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZS50b0xvd2VyQ2FzZSgpfS1hdmFpbGFiaWxpdHktYW5kLWxhdGVuY3ktJHtBd3MuUkVHSU9OfWAsXG4gICAgICBkZWZhdWx0SW50ZXJ2YWw6IHByb3BzLmludGVydmFsLFxuICAgICAgcGVyaW9kT3ZlcnJpZGU6IFBlcmlvZE92ZXJyaWRlLkFVVE9cbiAgICB9KTtcblxuICAgIHRoaXMuZGFzaGJvYXJkLmFkZFdpZGdldHMoXG4gICAgICBuZXcgQWxhcm1TdGF0dXNXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDIsXG4gICAgICAgIHdpZHRoOiA2LFxuICAgICAgICBhbGFybXM6IFtcbiAgICAgICAgICBwcm9wcy5zZXJ2aWNlQWxhcm1zQW5kUnVsZXMuc2VydmljZUltcGFjdEFsYXJtXG4gICAgICAgIF0sXG4gICAgICAgIHRpdGxlOiBcIlNlcnZpY2UgQWxhcm0gKGFueSBjcml0aWNhbCBvcGVyYXRpb24gc2VlcyBpbXBhY3Qgem9uYWxseSBvciByZWdpb25hbGx5LCBtZWFzdXJlZCBmcm9tIHNlcnZlci1zaWRlIG9yIGNhbmFyeSlcIlxuICAgICAgfSksXG4gICAgICBuZXcgQWxhcm1TdGF0dXNXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDIsXG4gICAgICAgIHdpZHRoOiA2LFxuICAgICAgICBhbGFybXM6IFtcbiAgICAgICAgICBwcm9wcy5zZXJ2aWNlQWxhcm1zQW5kUnVsZXMucmVnaW9uYWxJbXBhY3RBbGFybVxuICAgICAgICBdLFxuICAgICAgICB0aXRsZTogXCJSZWdpb25hbCBJbXBhY3QgKHRoZXJlIGlzIHJlZ2lvbmFsbHkgc2NvcGVkIGltcGFjdCB0byBhbnkgY3JpdGljYWwgb3BlcmF0aW9uLCBtZWFzdXJlZCBmcm9tIHNlcnZlci1zaWRlIG9yIGNhbmFyeSlcIlxuICAgICAgfSksXG4gICAgICBuZXcgQWxhcm1TdGF0dXNXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDIsXG4gICAgICAgIHdpZHRoOiA2LFxuICAgICAgICBhbGFybXM6IFtcbiAgICAgICAgICBwcm9wcy5zZXJ2aWNlQWxhcm1zQW5kUnVsZXMucmVnaW9uYWxTZXJ2ZXJTaWRlSW1wYWN0QWxhcm1cbiAgICAgICAgXSxcbiAgICAgICAgdGl0bGU6IFwiU2VydmVyLXNpZGUgUmVnaW9uYWwgSW1wYWN0ICh0aGVyZSBpcyByZWdpb25hbGx5IHNjb3BlZCBpbXBhY3QgdG8gYW55IGNyaXRpY2FsIG9wZXJhdGlvbiwgbWVhc3VyZWQgZnJvbSBzZXJ2ZXItc2lkZSlcIlxuICAgICAgfSksXG4gICAgICAuLi5wcm9wcy5zZXJ2aWNlQWxhcm1zQW5kUnVsZXMucmVnaW9uYWxDYW5hcnlBbGFybSA/IFtuZXcgQWxhcm1TdGF0dXNXaWRnZXQoe1xuICAgICAgICBoZWlnaHQ6IDIsXG4gICAgICAgIHdpZHRoOiA2LFxuICAgICAgICBhbGFybXM6IFtcbiAgICAgICAgICBwcm9wcy5zZXJ2aWNlQWxhcm1zQW5kUnVsZXMucmVnaW9uYWxDYW5hcnlBbGFybVxuICAgICAgICBdLFxuICAgICAgICB0aXRsZTogXCJDYW5hcnkgUmVnaW9uYWwgSW1wYWN0ICh0aGVyZSBpcyByZWdpb25hbGx5IHNjb3BlZCBpbXBhY3QgdG8gYW55IGNyaXRpY2FsIG9wZXJhdGlvbiwgbWVhc3VyZWQgZnJvbSB0aGUgY2FuYXJ5KVwiXG4gICAgICB9KV0gOiBbXVxuICAgICk7XG5cbiAgICB0aGlzLmRhc2hib2FyZC5hZGRXaWRnZXRzKFxuICAgICAgbmV3IEFsYXJtU3RhdHVzV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICAgIGFsYXJtczogW1xuICAgICAgICAgIC4uLk9iamVjdC52YWx1ZXMocHJvcHMuc2VydmljZUFsYXJtc0FuZFJ1bGVzLnpvbmFsQWdncmVnYXRlSXNvbGF0ZWRJbXBhY3RBbGFybXMpXG4gICAgICAgIF0sXG4gICAgICAgIHRpdGxlOiBcIlpvbmFsIEFnZ3JlZ2F0ZSBBbGFybXMgKGFsYXJtcyB0cmlnZ2VyIGlmIGFueSBjcml0aWNhbCBvcGVyYXRpb24gaW4gdGhlIEFaIHNlZXMgYXZhaWxhYmlsaXR5IG9yIGxhdGVuY3kgaW1wYWN0IGFzIG1lYXN1cmVkIGZyb20gc2VydmVyLXNpZGUgb3IgY2FuYXJ5KVwiXG4gICAgICB9XG4gICAgKSk7XG5cbiAgICB0aGlzLmRhc2hib2FyZC5hZGRXaWRnZXRzKFxuICAgICAgbmV3IEFsYXJtU3RhdHVzV2lkZ2V0KHtcbiAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICAgIGFsYXJtczogW1xuICAgICAgICAgIC4uLk9iamVjdC52YWx1ZXMocHJvcHMuc2VydmljZUFsYXJtc0FuZFJ1bGVzLnpvbmFsU2VydmVyU2lkZUlzb2xhdGVkSW1wYWN0QWxhcm1zKVxuICAgICAgICBdLFxuICAgICAgICB0aXRsZTogXCJTZXJ2ZXItc2lkZSBab25hbCBBbGFybXMgKGFsYXJtcyB0cmlnZ2VyIGlmIGFueSBjcml0aWNhbCBvcGVyYXRpb24gaW4gdGhlIEFaIHNlZXMgYXZhaWxhYmlsaXR5IG9yIGxhdGVuY3kgaW1wYWN0IGFzIG1lYXN1cmVkIGZyb20gdGhlIHNlcnZlci1zaWRlLCB0aGVzZSBhcmUgdXNlZnVsIGZvciBkZXBsb3ltZW50IG1vbml0b3JpbmcsIGluIGNhc2UgdGhlIGNhbmFyeSBzZWVzIGVycm9ycyB3aGVuIGFuIEFaIGlzIGludGVudGlvbmFsbHkgdW5hdmFpbGFibGUpXCJcbiAgICAgIH1cbiAgICApKTtcblxuICAgIHRoaXMuZGFzaGJvYXJkLmFkZFdpZGdldHMoXG4gICAgICBuZXcgVGV4dFdpZGdldCh7XG4gICAgICAgIG1hcmtkb3duOiBcIiMjIyBQZXIgT3BlcmF0aW9uIERhc2hib2FyZHNcXG5cIiArIHByb3BzLm9wZXJhdGlvbnNEYXNoYm9hcmQubWFwKHggPT4gYC0gWyR7eC5kYXNoYm9hcmROYW1lfV0oaHR0cHM6Ly8ke0F3cy5SRUdJT059LmNvbnNvbGUuYXdzLmFtYXpvbi5jb20vY2xvdWR3YXRjaC9ob21lP3JlZ2lvbj0ke0F3cy5SRUdJT059I2Rhc2hib2FyZHMvZGFzaGJvYXJkLyR7eC5kYXNoYm9hcmROYW1lfSlgKS5qb2luKFwiXFxuXCIpLFxuICAgICAgICBiYWNrZ3JvdW5kOiBUZXh0V2lkZ2V0QmFja2dyb3VuZC5UUkFOU1BBUkVOVCxcbiAgICAgICAgaGVpZ2h0OiA0LFxuICAgICAgICB3aWR0aDogMjRcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIFNlcnZpY2VBdmFpbGFiaWxpdHlBbmRMYXRlbmN5RGFzaGJvYXJkLmNyZWF0ZVNlcnZlclNpZGVXaWRnZXRzKHRoaXMuZGFzaGJvYXJkLCBwcm9wcyk7XG5cbiAgICBpZiAocHJvcHMuc2VydmljZS5jYW5hcnlUZXN0UHJvcHMpIHtcbiAgICAgIFNlcnZpY2VBdmFpbGFiaWxpdHlBbmRMYXRlbmN5RGFzaGJvYXJkLmNyZWF0ZUNhbmFyeVdpZGdldHModGhpcy5kYXNoYm9hcmQsIHByb3BzKTtcbiAgICB9XG5cbiAgICBsZXQgbGI6IENmbkxvYWRCYWxhbmNlciA9IHByb3BzLnNlcnZpY2UubG9hZEJhbGFuY2VyPy5ub2RlXG4gICAgICAuZGVmYXVsdENoaWxkIGFzIENmbkxvYWRCYWxhbmNlcjtcblxuICAgIGlmIChsYiAmJiBsYi50eXBlID09ICdhcHBsaWNhdGlvbicpIHtcbiAgICAgIHRoaXMuZGFzaGJvYXJkLmFkZFdpZGdldHMoXG4gICAgICAgIG5ldyBUZXh0V2lkZ2V0KHtcbiAgICAgICAgICBtYXJrZG93bjogXCIjIyAqKkxvYWQgQmFsYW5jZXIgTWV0cmljcyoqXCIsXG4gICAgICAgICAgYmFja2dyb3VuZDogVGV4dFdpZGdldEJhY2tncm91bmQuVFJBTlNQQVJFTlQsXG4gICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICAgIHdpZHRoOiAyNFxuICAgICAgICB9KSxcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuZGFzaGJvYXJkLmFkZFdpZGdldHMoXG4gICAgICAgIC4uLkFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyTWV0cmljcy5nZW5lcmF0ZUxvYWRCYWxhbmNlcldpZGdldHMoXG4gICAgICAgICAgWyBwcm9wcy5zZXJ2aWNlLmxvYWRCYWxhbmNlciBhcyBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIgXSxcbiAgICAgICAgICBwcm9wcy5hek1hcHBlcixcbiAgICAgICAgICBwcm9wcy5zZXJ2aWNlLnBlcmlvZCxcbiAgICAgICAgICBwcm9wcy5zZXJ2aWNlLmRlZmF1bHRMYXRlbmN5TWV0cmljRGV0YWlscy5hbGFybVN0YXRpc3RpYyxcbiAgICAgICAgICBwcm9wcy5zZXJ2aWNlLmRlZmF1bHRMYXRlbmN5TWV0cmljRGV0YWlscy5zdWNjZXNzQWxhcm1UaHJlc2hvbGQsXG4gICAgICAgICAgcHJvcHMuc2VydmljZS5kZWZhdWx0QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscy5mYXVsdEFsYXJtVGhyZXNob2xkXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
package/lib/index.d.ts CHANGED
@@ -1,40 +1,65 @@
1
- export { OutlierDetectionAlgorithm } from './utilities/OutlierDetectionAlgorithm';
2
- export { BasicServiceMultiAZObservabilityProps } from './basic_observability/props/BasicServiceMultiAZObservabilityProps';
3
- export { InstrumentedServiceMultiAZObservabilityProps } from './services/props/InstrumentedServiceMultiAZObservabilityProps';
4
- export { IService } from './services/IService';
5
- export { Service } from './services/Service';
6
- export { IOperation } from './services/IOperation';
7
- export { Operation } from './services/Operation';
8
- export { OperationMetricDetails } from './services/OperationMetricDetails';
9
- export { IOperationMetricDetails } from './services/IOperationMetricDetails';
10
- export { ServiceMetricDetails } from './services/ServiceMetricDetails';
11
- export { IServiceMetricDetails } from './services/IServiceMetricDetails';
12
- export { AddCanaryTestProps } from './canaries/props/AddCanaryTestProps';
13
- export { ICanaryMetrics } from './services/ICanaryMetrics';
14
- export { IContributorInsightRuleDetails } from './services/IContributorInsightRuleDetails';
15
1
  export { IAvailabilityZoneMapper } from './azmapper/IAvailabilityZoneMapper';
16
2
  export { AvailabilityZoneMapper } from './azmapper/AvailabilityZoneMapper';
17
3
  export { AvailabilityZoneMapperProps } from './azmapper/props/AvailabilityZoneMapperProps';
18
- export { ServiceProps } from './services/props/ServiceProps';
19
- export { CanaryMetrics } from './services/CanaryMetrics';
20
- export { CanaryMetricProps } from './services/props/CanaryMetricProps';
21
- export { OperationProps } from './services/props/OperationProps';
22
- export { OperationMetricDetailsProps } from './services/props/OperationMetricDetailsProps';
23
- export { ContributorInsightRuleDetails } from './services/ContributorInsightRuleDetails';
24
- export { ContributorInsightRuleDetailsProps } from './services/props/ContributorInsightRuleDetailsProps';
25
4
  export { MetricDimensions } from './services/props/MetricDimensions';
26
5
  export { NetworkConfigurationProps } from './canaries/props/NetworkConfigurationProps';
27
- export { ServiceMetricDetailsProps } from './services/props/ServiceMetricDetailsProps';
6
+ export { AddCanaryTestProps } from './canaries/props/AddCanaryTestProps';
7
+ export { ContributorInsightRuleDetails } from './services/ContributorInsightRuleDetails';
8
+ export { ContributorInsightRuleDetailsProps } from './services/props/ContributorInsightRuleDetailsProps';
9
+ export { IContributorInsightRuleDetails } from './services/IContributorInsightRuleDetails';
10
+ export { ServiceProps } from './services/props/ServiceProps';
11
+ export { IService } from './services/IService';
12
+ export { Service } from './services/Service';
13
+ export { OperationProps } from './services/props/OperationProps';
14
+ export { IOperation } from './services/IOperation';
15
+ export { Operation } from './services/Operation';
16
+ export { InstrumentedServiceMultiAZObservabilityProps } from './services/props/InstrumentedServiceMultiAZObservabilityProps';
28
17
  export { InstrumentedServiceMultiAZObservability } from './services/InstrumentedServiceMultiAZObservability';
29
- export { BasicServiceMultiAZObservability } from './basic_observability/BasicServiceMultiAZObservability';
30
- export { IBasicServiceMultiAZObservability } from './services/IBasicServiceMultiAZObservability';
31
18
  export { IInstrumentedServiceMultiAZObservability } from './services/IInstrumentedServiceMultiAZObservability';
19
+ export { BasicServiceMultiAZObservabilityProps } from './basic_observability/props/BasicServiceMultiAZObservabilityProps';
20
+ export { BasicServiceMultiAZObservability } from './basic_observability/BasicServiceMultiAZObservability';
21
+ export { IBasicServiceMultiAZObservability } from './basic_observability/IBasicServiceMultiAZObservability';
22
+ export { NatGatewayDetectionProps } from './basic_observability/props/NatGatewayDetectionProps';
23
+ export { ApplicationLoadBalancerDetectionProps } from './basic_observability/props/ApplicationLoadBalancerDetectionProps';
24
+ export { OutlierDetectionAlgorithm } from './utilities/OutlierDetectionAlgorithm';
25
+ export { ApplicationLoadBalancerLatencyOutlierAlgorithm } from './outlier-detection/ApplicationLoadBalancerLatencyOutlierAlgorithm';
26
+ export { ApplicationLoadBalancerAvailabilityOutlierAlgorithm } from './outlier-detection/ApplicationLoadBalancerAvailabilityOutlierAlgorithm';
27
+ export { PacketLossOutlierAlgorithm } from './outlier-detection/PacketLossOutlierAlgorithm';
28
+ export { IOperationAvailabilityMetricDetails } from './services/IOperationAvailabilityMetricDetails';
29
+ export { IOperationLatencyMetricDetails } from './services/IOperationLatencyMetricDetails';
30
+ export { IOperationMetricDetails } from './services/IOperationMetricDetails';
31
+ export { IServiceAvailabilityMetricDetails } from './services/IServiceAvailabilityMetricDetails';
32
+ export { IServiceLatencyMetricDetails } from './services/IServiceLatencyMetricDetails';
33
+ export { IServiceMetricDetails } from './services/IServiceMetricDetails';
34
+ export { OperationAvailabilityMetricDetails } from './services/OperationAvailabilityMetricDetails';
35
+ export { OperationLatencyMetricDetails } from './services/OperationLatencyMetricDetails';
36
+ export { OperationMetricDetails } from './services/OperationMetricDetails';
37
+ export { ServiceAvailabilityMetricDetails } from './services/ServiceAvailabilityMetricDetails';
38
+ export { ServiceLatencyMetricDetails } from './services/ServiceLatencyMetricDetails';
39
+ export { ServiceMetricDetails } from './services/ServiceMetricDetails';
40
+ export { ServiceAvailabilityMetricDetailsProps } from './services/props/ServiceAvailabilityMetricDetailsProps';
41
+ export { ServiceLatencyMetricDetailsProps } from './services/props/ServiceLatencyMetricDetailsProps';
42
+ export { ServiceMetricDetailsProps } from './services/props/ServiceMetricDetailsProps';
43
+ export { OperationAvailabilityMetricDetailsProps } from './services/props/OperationAvailabilityMetricDetailsProps';
44
+ export { OperationLatencyMetricDetailsProps } from './services/props/OperationLatencyMetricDetailsProps';
45
+ export { OperationMetricDetailsProps } from './services/props/OperationMetricDetailsProps';
32
46
  export { IServiceAlarmsAndRules } from './alarmsandrules/IServiceAlarmsAndRules';
47
+ export { IOperationAlarmsAndRules } from './alarmsandrules/IOperationAlarmsAndRules';
48
+ export { IServerSideOperationRegionalAlarmsAndRules } from './alarmsandrules/IServerSideOperationRegionalAlarmsAndRules';
49
+ export { ICanaryOperationRegionalAlarmsAndRules } from './alarmsandrules/ICanaryOperationRegionalAlarmsAndRules';
50
+ export { ICanaryOperationZonalAlarmsAndRules } from './alarmsandrules/ICanaryOperationZonalAlarmsAndRules';
51
+ export { IServerSideOperationZonalAlarmsAndRules } from './alarmsandrules/IServerSideOperationZonalAlarmsAndRules';
52
+ export { IBaseOperationRegionalAlarmsAndRules } from './alarmsandrules/IBaseOperationRegionalAlarmsAndRules';
53
+ export { IBaseOperationZonalAlarmsAndRules } from './alarmsandrules/IBaseOperationZonalAlarmsAndRules';
33
54
  export { ICanaryTestMetricsOverride } from './services/ICanaryTestMetricsOverride';
55
+ export { ICanaryTestAvailabilityMetricsOverride } from './services/ICanaryTestAvailabilityMetricsOverride';
56
+ export { ICanaryTestLatencyMetricsOverride } from './services/ICanaryTestLatencyMetricsOverride';
34
57
  export { CanaryTestMetricsOverride } from './services/CanaryTestMetricsOverride';
58
+ export { CanaryTestAvailabilityMetricsOverride } from './services/CanaryTestAvailabilityMetricsOverride';
59
+ export { CanaryTestLatencyMetricsOverride } from './services/CanaryTestLatencyMetricsOverride';
60
+ export { CanaryTestLatencyMetricsOverrideProps } from './services/props/CanaryTestLatencyMetricsOverrideProps';
61
+ export { CanaryTestAvailabilityMetricsOverrideProps } from './services/props/CanaryTestAvailabilityMetricsOverrideProps';
35
62
  export { CanaryTestMetricsOverrideProps } from './services/props/CanaryTestMetricsOverrideProps';
36
- export { ApplicationLoadBalancerLatencyOutlierAlgorithm } from './outlier-detection/ApplicationLoadBalancerLatencyOutlierAlgorithm';
37
- export { ApplicationLoadBalancerAvailabilityOutlierAlgorithm } from './outlier-detection/ApplicationLoadBalancerAvailabilityOutlierAlgorithm';
38
- export { NatGatewayDetectionProps } from './basic_observability/props/NatGatewayDetectionProps';
39
- export { ApplicationLoadBalancerDetectionProps } from './basic_observability/props/ApplicationLoadBalancerDetectionProps';
40
- export { PacketLossOutlierAlgorithm } from './outlier-detection/PacketLossOutlierAlgorithm';
63
+ export { ICanaryMetrics } from './services/ICanaryMetrics';
64
+ export { CanaryMetrics } from './services/CanaryMetrics';
65
+ export { CanaryMetricProps } from './services/props/CanaryMetricProps';
package/lib/index.js CHANGED
@@ -1,36 +1,49 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PacketLossOutlierAlgorithm = exports.ApplicationLoadBalancerAvailabilityOutlierAlgorithm = exports.ApplicationLoadBalancerLatencyOutlierAlgorithm = exports.CanaryTestMetricsOverride = exports.BasicServiceMultiAZObservability = exports.InstrumentedServiceMultiAZObservability = exports.MetricDimensions = exports.ContributorInsightRuleDetails = exports.CanaryMetrics = exports.AvailabilityZoneMapper = exports.ServiceMetricDetails = exports.OperationMetricDetails = exports.Operation = exports.Service = exports.OutlierDetectionAlgorithm = void 0;
4
2
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
3
  // SPDX-License-Identifier: Apache-2.0
6
- var OutlierDetectionAlgorithm_1 = require("./utilities/OutlierDetectionAlgorithm");
7
- Object.defineProperty(exports, "OutlierDetectionAlgorithm", { enumerable: true, get: function () { return OutlierDetectionAlgorithm_1.OutlierDetectionAlgorithm; } });
8
- var Service_1 = require("./services/Service");
9
- Object.defineProperty(exports, "Service", { enumerable: true, get: function () { return Service_1.Service; } });
10
- var Operation_1 = require("./services/Operation");
11
- Object.defineProperty(exports, "Operation", { enumerable: true, get: function () { return Operation_1.Operation; } });
12
- var OperationMetricDetails_1 = require("./services/OperationMetricDetails");
13
- Object.defineProperty(exports, "OperationMetricDetails", { enumerable: true, get: function () { return OperationMetricDetails_1.OperationMetricDetails; } });
14
- var ServiceMetricDetails_1 = require("./services/ServiceMetricDetails");
15
- Object.defineProperty(exports, "ServiceMetricDetails", { enumerable: true, get: function () { return ServiceMetricDetails_1.ServiceMetricDetails; } });
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.CanaryMetrics = exports.CanaryTestLatencyMetricsOverride = exports.CanaryTestAvailabilityMetricsOverride = exports.CanaryTestMetricsOverride = exports.ServiceMetricDetails = exports.ServiceLatencyMetricDetails = exports.ServiceAvailabilityMetricDetails = exports.OperationMetricDetails = exports.OperationLatencyMetricDetails = exports.OperationAvailabilityMetricDetails = exports.PacketLossOutlierAlgorithm = exports.ApplicationLoadBalancerAvailabilityOutlierAlgorithm = exports.ApplicationLoadBalancerLatencyOutlierAlgorithm = exports.OutlierDetectionAlgorithm = exports.BasicServiceMultiAZObservability = exports.InstrumentedServiceMultiAZObservability = exports.Operation = exports.Service = exports.ContributorInsightRuleDetails = exports.MetricDimensions = exports.AvailabilityZoneMapper = void 0;
16
6
  var AvailabilityZoneMapper_1 = require("./azmapper/AvailabilityZoneMapper");
17
7
  Object.defineProperty(exports, "AvailabilityZoneMapper", { enumerable: true, get: function () { return AvailabilityZoneMapper_1.AvailabilityZoneMapper; } });
18
- var CanaryMetrics_1 = require("./services/CanaryMetrics");
19
- Object.defineProperty(exports, "CanaryMetrics", { enumerable: true, get: function () { return CanaryMetrics_1.CanaryMetrics; } });
20
- var ContributorInsightRuleDetails_1 = require("./services/ContributorInsightRuleDetails");
21
- Object.defineProperty(exports, "ContributorInsightRuleDetails", { enumerable: true, get: function () { return ContributorInsightRuleDetails_1.ContributorInsightRuleDetails; } });
22
8
  var MetricDimensions_1 = require("./services/props/MetricDimensions");
23
9
  Object.defineProperty(exports, "MetricDimensions", { enumerable: true, get: function () { return MetricDimensions_1.MetricDimensions; } });
10
+ var ContributorInsightRuleDetails_1 = require("./services/ContributorInsightRuleDetails");
11
+ Object.defineProperty(exports, "ContributorInsightRuleDetails", { enumerable: true, get: function () { return ContributorInsightRuleDetails_1.ContributorInsightRuleDetails; } });
12
+ var Service_1 = require("./services/Service");
13
+ Object.defineProperty(exports, "Service", { enumerable: true, get: function () { return Service_1.Service; } });
14
+ var Operation_1 = require("./services/Operation");
15
+ Object.defineProperty(exports, "Operation", { enumerable: true, get: function () { return Operation_1.Operation; } });
24
16
  var InstrumentedServiceMultiAZObservability_1 = require("./services/InstrumentedServiceMultiAZObservability");
25
17
  Object.defineProperty(exports, "InstrumentedServiceMultiAZObservability", { enumerable: true, get: function () { return InstrumentedServiceMultiAZObservability_1.InstrumentedServiceMultiAZObservability; } });
26
18
  var BasicServiceMultiAZObservability_1 = require("./basic_observability/BasicServiceMultiAZObservability");
27
19
  Object.defineProperty(exports, "BasicServiceMultiAZObservability", { enumerable: true, get: function () { return BasicServiceMultiAZObservability_1.BasicServiceMultiAZObservability; } });
28
- var CanaryTestMetricsOverride_1 = require("./services/CanaryTestMetricsOverride");
29
- Object.defineProperty(exports, "CanaryTestMetricsOverride", { enumerable: true, get: function () { return CanaryTestMetricsOverride_1.CanaryTestMetricsOverride; } });
20
+ var OutlierDetectionAlgorithm_1 = require("./utilities/OutlierDetectionAlgorithm");
21
+ Object.defineProperty(exports, "OutlierDetectionAlgorithm", { enumerable: true, get: function () { return OutlierDetectionAlgorithm_1.OutlierDetectionAlgorithm; } });
30
22
  var ApplicationLoadBalancerLatencyOutlierAlgorithm_1 = require("./outlier-detection/ApplicationLoadBalancerLatencyOutlierAlgorithm");
31
23
  Object.defineProperty(exports, "ApplicationLoadBalancerLatencyOutlierAlgorithm", { enumerable: true, get: function () { return ApplicationLoadBalancerLatencyOutlierAlgorithm_1.ApplicationLoadBalancerLatencyOutlierAlgorithm; } });
32
24
  var ApplicationLoadBalancerAvailabilityOutlierAlgorithm_1 = require("./outlier-detection/ApplicationLoadBalancerAvailabilityOutlierAlgorithm");
33
25
  Object.defineProperty(exports, "ApplicationLoadBalancerAvailabilityOutlierAlgorithm", { enumerable: true, get: function () { return ApplicationLoadBalancerAvailabilityOutlierAlgorithm_1.ApplicationLoadBalancerAvailabilityOutlierAlgorithm; } });
34
26
  var PacketLossOutlierAlgorithm_1 = require("./outlier-detection/PacketLossOutlierAlgorithm");
35
27
  Object.defineProperty(exports, "PacketLossOutlierAlgorithm", { enumerable: true, get: function () { return PacketLossOutlierAlgorithm_1.PacketLossOutlierAlgorithm; } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUN0QyxtRkFBa0Y7QUFBekUsc0lBQUEseUJBQXlCLE9BQUE7QUFJbEMsOENBQTZDO0FBQXBDLGtHQUFBLE9BQU8sT0FBQTtBQUVoQixrREFBaUQ7QUFBeEMsc0dBQUEsU0FBUyxPQUFBO0FBQ2xCLDRFQUEyRTtBQUFsRSxnSUFBQSxzQkFBc0IsT0FBQTtBQUUvQix3RUFBdUU7QUFBOUQsNEhBQUEsb0JBQW9CLE9BQUE7QUFNN0IsNEVBQTJFO0FBQWxFLGdJQUFBLHNCQUFzQixPQUFBO0FBRy9CLDBEQUF5RDtBQUFoRCw4R0FBQSxhQUFhLE9BQUE7QUFJdEIsMEZBQXlGO0FBQWhGLDhJQUFBLDZCQUE2QixPQUFBO0FBRXRDLHNFQUFxRTtBQUE1RCxvSEFBQSxnQkFBZ0IsT0FBQTtBQUd6Qiw4R0FBNkc7QUFBcEcsa0tBQUEsdUNBQXVDLE9BQUE7QUFDaEQsMkdBQTBHO0FBQWpHLG9KQUFBLGdDQUFnQyxPQUFBO0FBS3pDLGtGQUFpRjtBQUF4RSxzSUFBQSx5QkFBeUIsT0FBQTtBQUVsQyxxSUFBb0k7QUFBM0gsZ0xBQUEsOENBQThDLE9BQUE7QUFDdkQsK0lBQThJO0FBQXJJLDBMQUFBLG1EQUFtRCxPQUFBO0FBRzVELDZGQUE0RjtBQUFuRix3SUFBQSwwQkFBMEIsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmV4cG9ydCB7IE91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0gfSBmcm9tICcuL3V0aWxpdGllcy9PdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtJztcbmV4cG9ydCB7IEJhc2ljU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5UHJvcHMgfSBmcm9tICcuL2Jhc2ljX29ic2VydmFiaWxpdHkvcHJvcHMvQmFzaWNTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHlQcm9wcyc7XG5leHBvcnQgeyBJbnN0cnVtZW50ZWRTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHlQcm9wcyB9IGZyb20gJy4vc2VydmljZXMvcHJvcHMvSW5zdHJ1bWVudGVkU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5UHJvcHMnO1xuZXhwb3J0IHsgSVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL0lTZXJ2aWNlJztcbmV4cG9ydCB7IFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL1NlcnZpY2UnO1xuZXhwb3J0IHsgSU9wZXJhdGlvbiB9IGZyb20gJy4vc2VydmljZXMvSU9wZXJhdGlvbic7XG5leHBvcnQgeyBPcGVyYXRpb24gfSBmcm9tICcuL3NlcnZpY2VzL09wZXJhdGlvbic7XG5leHBvcnQgeyBPcGVyYXRpb25NZXRyaWNEZXRhaWxzIH0gZnJvbSAnLi9zZXJ2aWNlcy9PcGVyYXRpb25NZXRyaWNEZXRhaWxzJztcbmV4cG9ydCB7IElPcGVyYXRpb25NZXRyaWNEZXRhaWxzIH0gZnJvbSAnLi9zZXJ2aWNlcy9JT3BlcmF0aW9uTWV0cmljRGV0YWlscyc7XG5leHBvcnQgeyBTZXJ2aWNlTWV0cmljRGV0YWlscyB9IGZyb20gJy4vc2VydmljZXMvU2VydmljZU1ldHJpY0RldGFpbHMnO1xuZXhwb3J0IHsgSVNlcnZpY2VNZXRyaWNEZXRhaWxzIH0gZnJvbSAnLi9zZXJ2aWNlcy9JU2VydmljZU1ldHJpY0RldGFpbHMnO1xuZXhwb3J0IHsgQWRkQ2FuYXJ5VGVzdFByb3BzIH0gZnJvbSAnLi9jYW5hcmllcy9wcm9wcy9BZGRDYW5hcnlUZXN0UHJvcHMnO1xuZXhwb3J0IHsgSUNhbmFyeU1ldHJpY3MgfSBmcm9tICcuL3NlcnZpY2VzL0lDYW5hcnlNZXRyaWNzJztcbmV4cG9ydCB7IElDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscyB9IGZyb20gJy4vc2VydmljZXMvSUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzJztcbmV4cG9ydCB7IElBdmFpbGFiaWxpdHlab25lTWFwcGVyIH0gZnJvbSAnLi9hem1hcHBlci9JQXZhaWxhYmlsaXR5Wm9uZU1hcHBlcic7XG5leHBvcnQgeyBBdmFpbGFiaWxpdHlab25lTWFwcGVyIH0gZnJvbSAnLi9hem1hcHBlci9BdmFpbGFiaWxpdHlab25lTWFwcGVyJztcbmV4cG9ydCB7IEF2YWlsYWJpbGl0eVpvbmVNYXBwZXJQcm9wcyB9IGZyb20gJy4vYXptYXBwZXIvcHJvcHMvQXZhaWxhYmlsaXR5Wm9uZU1hcHBlclByb3BzJztcbmV4cG9ydCB7IFNlcnZpY2VQcm9wcyB9IGZyb20gJy4vc2VydmljZXMvcHJvcHMvU2VydmljZVByb3BzJztcbmV4cG9ydCB7IENhbmFyeU1ldHJpY3MgfSBmcm9tICcuL3NlcnZpY2VzL0NhbmFyeU1ldHJpY3MnO1xuZXhwb3J0IHsgQ2FuYXJ5TWV0cmljUHJvcHMgfSBmcm9tICcuL3NlcnZpY2VzL3Byb3BzL0NhbmFyeU1ldHJpY1Byb3BzJztcbmV4cG9ydCB7IE9wZXJhdGlvblByb3BzIH0gZnJvbSAnLi9zZXJ2aWNlcy9wcm9wcy9PcGVyYXRpb25Qcm9wcyc7XG5leHBvcnQgeyBPcGVyYXRpb25NZXRyaWNEZXRhaWxzUHJvcHMgfSBmcm9tICcuL3NlcnZpY2VzL3Byb3BzL09wZXJhdGlvbk1ldHJpY0RldGFpbHNQcm9wcyc7XG5leHBvcnQgeyBDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscyB9IGZyb20gJy4vc2VydmljZXMvQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMnO1xuZXhwb3J0IHsgQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHNQcm9wcyB9IGZyb20gJy4vc2VydmljZXMvcHJvcHMvQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHNQcm9wcyc7XG5leHBvcnQgeyBNZXRyaWNEaW1lbnNpb25zIH0gZnJvbSAnLi9zZXJ2aWNlcy9wcm9wcy9NZXRyaWNEaW1lbnNpb25zJztcbmV4cG9ydCB7IE5ldHdvcmtDb25maWd1cmF0aW9uUHJvcHMgfSBmcm9tICcuL2NhbmFyaWVzL3Byb3BzL05ldHdvcmtDb25maWd1cmF0aW9uUHJvcHMnO1xuZXhwb3J0IHsgU2VydmljZU1ldHJpY0RldGFpbHNQcm9wcyB9IGZyb20gJy4vc2VydmljZXMvcHJvcHMvU2VydmljZU1ldHJpY0RldGFpbHNQcm9wcyc7XG5leHBvcnQgeyBJbnN0cnVtZW50ZWRTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHkgfSBmcm9tICcuL3NlcnZpY2VzL0luc3RydW1lbnRlZFNlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eSc7XG5leHBvcnQgeyBCYXNpY1NlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eSB9IGZyb20gJy4vYmFzaWNfb2JzZXJ2YWJpbGl0eS9CYXNpY1NlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eSc7XG5leHBvcnQgeyBJQmFzaWNTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHkgfSBmcm9tICcuL3NlcnZpY2VzL0lCYXNpY1NlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eSc7XG5leHBvcnQgeyBJSW5zdHJ1bWVudGVkU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5IH0gZnJvbSAnLi9zZXJ2aWNlcy9JSW5zdHJ1bWVudGVkU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5JztcbmV4cG9ydCB7IElTZXJ2aWNlQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL2FsYXJtc2FuZHJ1bGVzL0lTZXJ2aWNlQWxhcm1zQW5kUnVsZXMnO1xuZXhwb3J0IHsgSUNhbmFyeVRlc3RNZXRyaWNzT3ZlcnJpZGUgfSBmcm9tICcuL3NlcnZpY2VzL0lDYW5hcnlUZXN0TWV0cmljc092ZXJyaWRlJztcbmV4cG9ydCB7IENhbmFyeVRlc3RNZXRyaWNzT3ZlcnJpZGUgfSBmcm9tICcuL3NlcnZpY2VzL0NhbmFyeVRlc3RNZXRyaWNzT3ZlcnJpZGUnO1xuZXhwb3J0IHsgQ2FuYXJ5VGVzdE1ldHJpY3NPdmVycmlkZVByb3BzIH0gZnJvbSAnLi9zZXJ2aWNlcy9wcm9wcy9DYW5hcnlUZXN0TWV0cmljc092ZXJyaWRlUHJvcHMnO1xuZXhwb3J0IHsgQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJMYXRlbmN5T3V0bGllckFsZ29yaXRobSB9IGZyb20gJy4vb3V0bGllci1kZXRlY3Rpb24vQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJMYXRlbmN5T3V0bGllckFsZ29yaXRobSc7XG5leHBvcnQgeyBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlckF2YWlsYWJpbGl0eU91dGxpZXJBbGdvcml0aG0gfSBmcm9tICcuL291dGxpZXItZGV0ZWN0aW9uL0FwcGxpY2F0aW9uTG9hZEJhbGFuY2VyQXZhaWxhYmlsaXR5T3V0bGllckFsZ29yaXRobSc7XG5leHBvcnQgeyBOYXRHYXRld2F5RGV0ZWN0aW9uUHJvcHMgfSBmcm9tICcuL2Jhc2ljX29ic2VydmFiaWxpdHkvcHJvcHMvTmF0R2F0ZXdheURldGVjdGlvblByb3BzJztcbmV4cG9ydCB7IEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyRGV0ZWN0aW9uUHJvcHMgfSBmcm9tICcuL2Jhc2ljX29ic2VydmFiaWxpdHkvcHJvcHMvQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJEZXRlY3Rpb25Qcm9wcyc7XG5leHBvcnQgeyBQYWNrZXRMb3NzT3V0bGllckFsZ29yaXRobSB9IGZyb20gJy4vb3V0bGllci1kZXRlY3Rpb24vUGFja2V0TG9zc091dGxpZXJBbGdvcml0aG0nOyJdfQ==
28
+ var OperationAvailabilityMetricDetails_1 = require("./services/OperationAvailabilityMetricDetails");
29
+ Object.defineProperty(exports, "OperationAvailabilityMetricDetails", { enumerable: true, get: function () { return OperationAvailabilityMetricDetails_1.OperationAvailabilityMetricDetails; } });
30
+ var OperationLatencyMetricDetails_1 = require("./services/OperationLatencyMetricDetails");
31
+ Object.defineProperty(exports, "OperationLatencyMetricDetails", { enumerable: true, get: function () { return OperationLatencyMetricDetails_1.OperationLatencyMetricDetails; } });
32
+ var OperationMetricDetails_1 = require("./services/OperationMetricDetails");
33
+ Object.defineProperty(exports, "OperationMetricDetails", { enumerable: true, get: function () { return OperationMetricDetails_1.OperationMetricDetails; } });
34
+ var ServiceAvailabilityMetricDetails_1 = require("./services/ServiceAvailabilityMetricDetails");
35
+ Object.defineProperty(exports, "ServiceAvailabilityMetricDetails", { enumerable: true, get: function () { return ServiceAvailabilityMetricDetails_1.ServiceAvailabilityMetricDetails; } });
36
+ var ServiceLatencyMetricDetails_1 = require("./services/ServiceLatencyMetricDetails");
37
+ Object.defineProperty(exports, "ServiceLatencyMetricDetails", { enumerable: true, get: function () { return ServiceLatencyMetricDetails_1.ServiceLatencyMetricDetails; } });
38
+ var ServiceMetricDetails_1 = require("./services/ServiceMetricDetails");
39
+ Object.defineProperty(exports, "ServiceMetricDetails", { enumerable: true, get: function () { return ServiceMetricDetails_1.ServiceMetricDetails; } });
40
+ var CanaryTestMetricsOverride_1 = require("./services/CanaryTestMetricsOverride");
41
+ Object.defineProperty(exports, "CanaryTestMetricsOverride", { enumerable: true, get: function () { return CanaryTestMetricsOverride_1.CanaryTestMetricsOverride; } });
42
+ var CanaryTestAvailabilityMetricsOverride_1 = require("./services/CanaryTestAvailabilityMetricsOverride");
43
+ Object.defineProperty(exports, "CanaryTestAvailabilityMetricsOverride", { enumerable: true, get: function () { return CanaryTestAvailabilityMetricsOverride_1.CanaryTestAvailabilityMetricsOverride; } });
44
+ var CanaryTestLatencyMetricsOverride_1 = require("./services/CanaryTestLatencyMetricsOverride");
45
+ Object.defineProperty(exports, "CanaryTestLatencyMetricsOverride", { enumerable: true, get: function () { return CanaryTestLatencyMetricsOverride_1.CanaryTestLatencyMetricsOverride; } });
46
+ ``;
47
+ var CanaryMetrics_1 = require("./services/CanaryMetrics");
48
+ Object.defineProperty(exports, "CanaryMetrics", { enumerable: true, get: function () { return CanaryMetrics_1.CanaryMetrics; } });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHFFQUFxRTtBQUNyRSxzQ0FBc0M7OztBQUd0Qyw0RUFBMkU7QUFBbEUsZ0lBQUEsc0JBQXNCLE9BQUE7QUFHL0Isc0VBQXFFO0FBQTVELG9IQUFBLGdCQUFnQixPQUFBO0FBS3pCLDBGQUF5RjtBQUFoRiw4SUFBQSw2QkFBNkIsT0FBQTtBQU10Qyw4Q0FBNkM7QUFBcEMsa0dBQUEsT0FBTyxPQUFBO0FBSWhCLGtEQUFpRDtBQUF4QyxzR0FBQSxTQUFTLE9BQUE7QUFHbEIsOEdBQTZHO0FBQXBHLGtLQUFBLHVDQUF1QyxPQUFBO0FBSWhELDJHQUEwRztBQUFqRyxvSkFBQSxnQ0FBZ0MsT0FBQTtBQU16QyxtRkFBa0Y7QUFBekUsc0lBQUEseUJBQXlCLE9BQUE7QUFDbEMscUlBQW9JO0FBQTNILGdMQUFBLDhDQUE4QyxPQUFBO0FBQ3ZELCtJQUE4STtBQUFySSwwTEFBQSxtREFBbUQsT0FBQTtBQUM1RCw2RkFBNEY7QUFBbkYsd0lBQUEsMEJBQTBCLE9BQUE7QUFVbkMsb0dBQW1HO0FBQTFGLHdKQUFBLGtDQUFrQyxPQUFBO0FBQzNDLDBGQUF5RjtBQUFoRiw4SUFBQSw2QkFBNkIsT0FBQTtBQUN0Qyw0RUFBMkU7QUFBbEUsZ0lBQUEsc0JBQXNCLE9BQUE7QUFFL0IsZ0dBQStGO0FBQXRGLG9KQUFBLGdDQUFnQyxPQUFBO0FBQ3pDLHNGQUFxRjtBQUE1RSwwSUFBQSwyQkFBMkIsT0FBQTtBQUNwQyx3RUFBdUU7QUFBOUQsNEhBQUEsb0JBQW9CLE9BQUE7QUF1QjdCLGtGQUFpRjtBQUF4RSxzSUFBQSx5QkFBeUIsT0FBQTtBQUNsQywwR0FBeUc7QUFBaEcsOEpBQUEscUNBQXFDLE9BQUE7QUFDOUMsZ0dBQStGO0FBQXRGLG9KQUFBLGdDQUFnQyxPQUFBO0FBS2tCLEVBQUUsQ0FBQTtBQUM3RCwwREFBeUQ7QUFBaEQsOEdBQUEsYUFBYSxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5leHBvcnQgeyBJQXZhaWxhYmlsaXR5Wm9uZU1hcHBlciB9IGZyb20gJy4vYXptYXBwZXIvSUF2YWlsYWJpbGl0eVpvbmVNYXBwZXInO1xuZXhwb3J0IHsgQXZhaWxhYmlsaXR5Wm9uZU1hcHBlciB9IGZyb20gJy4vYXptYXBwZXIvQXZhaWxhYmlsaXR5Wm9uZU1hcHBlcic7XG5leHBvcnQgeyBBdmFpbGFiaWxpdHlab25lTWFwcGVyUHJvcHMgfSBmcm9tICcuL2F6bWFwcGVyL3Byb3BzL0F2YWlsYWJpbGl0eVpvbmVNYXBwZXJQcm9wcyc7XG5cbmV4cG9ydCB7IE1ldHJpY0RpbWVuc2lvbnMgfSBmcm9tICcuL3NlcnZpY2VzL3Byb3BzL01ldHJpY0RpbWVuc2lvbnMnO1xuXG5leHBvcnQgeyBOZXR3b3JrQ29uZmlndXJhdGlvblByb3BzIH0gZnJvbSAnLi9jYW5hcmllcy9wcm9wcy9OZXR3b3JrQ29uZmlndXJhdGlvblByb3BzJztcbmV4cG9ydCB7IEFkZENhbmFyeVRlc3RQcm9wcyB9IGZyb20gJy4vY2FuYXJpZXMvcHJvcHMvQWRkQ2FuYXJ5VGVzdFByb3BzJztcblxuZXhwb3J0IHsgQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMgfSBmcm9tICcuL3NlcnZpY2VzL0NvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzJztcbmV4cG9ydCB7IENvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzUHJvcHMgfSBmcm9tICcuL3NlcnZpY2VzL3Byb3BzL0NvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzUHJvcHMnO1xuZXhwb3J0IHsgSUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzIH0gZnJvbSAnLi9zZXJ2aWNlcy9JQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMnO1xuXG5leHBvcnQgeyBTZXJ2aWNlUHJvcHMgfSBmcm9tICcuL3NlcnZpY2VzL3Byb3BzL1NlcnZpY2VQcm9wcyc7XG5leHBvcnQgeyBJU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvSVNlcnZpY2UnO1xuZXhwb3J0IHsgU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvU2VydmljZSc7XG5cbmV4cG9ydCB7IE9wZXJhdGlvblByb3BzIH0gZnJvbSAnLi9zZXJ2aWNlcy9wcm9wcy9PcGVyYXRpb25Qcm9wcyc7XG5leHBvcnQgeyBJT3BlcmF0aW9uIH0gZnJvbSAnLi9zZXJ2aWNlcy9JT3BlcmF0aW9uJztcbmV4cG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gJy4vc2VydmljZXMvT3BlcmF0aW9uJztcblxuZXhwb3J0IHsgSW5zdHJ1bWVudGVkU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5UHJvcHMgfSBmcm9tICcuL3NlcnZpY2VzL3Byb3BzL0luc3RydW1lbnRlZFNlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eVByb3BzJztcbmV4cG9ydCB7IEluc3RydW1lbnRlZFNlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eSB9IGZyb20gJy4vc2VydmljZXMvSW5zdHJ1bWVudGVkU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5JztcbmV4cG9ydCB7IElJbnN0cnVtZW50ZWRTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHkgfSBmcm9tICcuL3NlcnZpY2VzL0lJbnN0cnVtZW50ZWRTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHknO1xuXG5leHBvcnQgeyBCYXNpY1NlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eVByb3BzIH0gZnJvbSAnLi9iYXNpY19vYnNlcnZhYmlsaXR5L3Byb3BzL0Jhc2ljU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5UHJvcHMnO1xuZXhwb3J0IHsgQmFzaWNTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHkgfSBmcm9tICcuL2Jhc2ljX29ic2VydmFiaWxpdHkvQmFzaWNTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHknO1xuZXhwb3J0IHsgSUJhc2ljU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5IH0gZnJvbSAnLi9iYXNpY19vYnNlcnZhYmlsaXR5L0lCYXNpY1NlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eSc7XG5cbmV4cG9ydCB7IE5hdEdhdGV3YXlEZXRlY3Rpb25Qcm9wcyB9IGZyb20gJy4vYmFzaWNfb2JzZXJ2YWJpbGl0eS9wcm9wcy9OYXRHYXRld2F5RGV0ZWN0aW9uUHJvcHMnO1xuZXhwb3J0IHsgQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJEZXRlY3Rpb25Qcm9wcyB9IGZyb20gJy4vYmFzaWNfb2JzZXJ2YWJpbGl0eS9wcm9wcy9BcHBsaWNhdGlvbkxvYWRCYWxhbmNlckRldGVjdGlvblByb3BzJztcblxuZXhwb3J0IHsgT3V0bGllckRldGVjdGlvbkFsZ29yaXRobSB9IGZyb20gJy4vdXRpbGl0aWVzL091dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0nO1xuZXhwb3J0IHsgQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJMYXRlbmN5T3V0bGllckFsZ29yaXRobSB9IGZyb20gJy4vb3V0bGllci1kZXRlY3Rpb24vQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJMYXRlbmN5T3V0bGllckFsZ29yaXRobSc7XG5leHBvcnQgeyBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlckF2YWlsYWJpbGl0eU91dGxpZXJBbGdvcml0aG0gfSBmcm9tICcuL291dGxpZXItZGV0ZWN0aW9uL0FwcGxpY2F0aW9uTG9hZEJhbGFuY2VyQXZhaWxhYmlsaXR5T3V0bGllckFsZ29yaXRobSc7XG5leHBvcnQgeyBQYWNrZXRMb3NzT3V0bGllckFsZ29yaXRobSB9IGZyb20gJy4vb3V0bGllci1kZXRlY3Rpb24vUGFja2V0TG9zc091dGxpZXJBbGdvcml0aG0nO1xuXG5leHBvcnQgeyBJT3BlcmF0aW9uQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyB9IGZyb20gJy4vc2VydmljZXMvSU9wZXJhdGlvbkF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMnO1xuZXhwb3J0IHsgSU9wZXJhdGlvbkxhdGVuY3lNZXRyaWNEZXRhaWxzIH0gZnJvbSAnLi9zZXJ2aWNlcy9JT3BlcmF0aW9uTGF0ZW5jeU1ldHJpY0RldGFpbHMnO1xuZXhwb3J0IHsgSU9wZXJhdGlvbk1ldHJpY0RldGFpbHMgfSBmcm9tICcuL3NlcnZpY2VzL0lPcGVyYXRpb25NZXRyaWNEZXRhaWxzJztcblxuZXhwb3J0IHsgSVNlcnZpY2VBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzIH0gZnJvbSAnLi9zZXJ2aWNlcy9JU2VydmljZUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMnO1xuZXhwb3J0IHsgSVNlcnZpY2VMYXRlbmN5TWV0cmljRGV0YWlscyB9IGZyb20gJy4vc2VydmljZXMvSVNlcnZpY2VMYXRlbmN5TWV0cmljRGV0YWlscyc7XG5leHBvcnQgeyBJU2VydmljZU1ldHJpY0RldGFpbHMgfSBmcm9tICcuL3NlcnZpY2VzL0lTZXJ2aWNlTWV0cmljRGV0YWlscyc7XG5cbmV4cG9ydCB7IE9wZXJhdGlvbkF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMgfSBmcm9tICcuL3NlcnZpY2VzL09wZXJhdGlvbkF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMnO1xuZXhwb3J0IHsgT3BlcmF0aW9uTGF0ZW5jeU1ldHJpY0RldGFpbHMgfSBmcm9tICcuL3NlcnZpY2VzL09wZXJhdGlvbkxhdGVuY3lNZXRyaWNEZXRhaWxzJztcbmV4cG9ydCB7IE9wZXJhdGlvbk1ldHJpY0RldGFpbHMgfSBmcm9tICcuL3NlcnZpY2VzL09wZXJhdGlvbk1ldHJpY0RldGFpbHMnO1xuXG5leHBvcnQgeyBTZXJ2aWNlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyB9IGZyb20gJy4vc2VydmljZXMvU2VydmljZUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMnO1xuZXhwb3J0IHsgU2VydmljZUxhdGVuY3lNZXRyaWNEZXRhaWxzIH0gZnJvbSAnLi9zZXJ2aWNlcy9TZXJ2aWNlTGF0ZW5jeU1ldHJpY0RldGFpbHMnO1xuZXhwb3J0IHsgU2VydmljZU1ldHJpY0RldGFpbHMgfSBmcm9tICcuL3NlcnZpY2VzL1NlcnZpY2VNZXRyaWNEZXRhaWxzJztcblxuZXhwb3J0IHsgU2VydmljZUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHNQcm9wcyB9IGZyb20gJy4vc2VydmljZXMvcHJvcHMvU2VydmljZUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHNQcm9wcyc7XG5leHBvcnQgeyBTZXJ2aWNlTGF0ZW5jeU1ldHJpY0RldGFpbHNQcm9wcyB9IGZyb20gJy4vc2VydmljZXMvcHJvcHMvU2VydmljZUxhdGVuY3lNZXRyaWNEZXRhaWxzUHJvcHMnO1xuZXhwb3J0IHsgU2VydmljZU1ldHJpY0RldGFpbHNQcm9wcyB9IGZyb20gJy4vc2VydmljZXMvcHJvcHMvU2VydmljZU1ldHJpY0RldGFpbHNQcm9wcyc7XG5cbmV4cG9ydCB7IE9wZXJhdGlvbkF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHNQcm9wcyB9IGZyb20gJy4vc2VydmljZXMvcHJvcHMvT3BlcmF0aW9uQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsc1Byb3BzJztcbmV4cG9ydCB7IE9wZXJhdGlvbkxhdGVuY3lNZXRyaWNEZXRhaWxzUHJvcHMgfSBmcm9tICcuL3NlcnZpY2VzL3Byb3BzL09wZXJhdGlvbkxhdGVuY3lNZXRyaWNEZXRhaWxzUHJvcHMnO1xuZXhwb3J0IHsgT3BlcmF0aW9uTWV0cmljRGV0YWlsc1Byb3BzIH0gZnJvbSAnLi9zZXJ2aWNlcy9wcm9wcy9PcGVyYXRpb25NZXRyaWNEZXRhaWxzUHJvcHMnO1xuXG5leHBvcnQgeyBJU2VydmljZUFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9hbGFybXNhbmRydWxlcy9JU2VydmljZUFsYXJtc0FuZFJ1bGVzJztcbmV4cG9ydCB7IElPcGVyYXRpb25BbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vYWxhcm1zYW5kcnVsZXMvSU9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzJztcbmV4cG9ydCB7IElTZXJ2ZXJTaWRlT3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vYWxhcm1zYW5kcnVsZXMvSVNlcnZlclNpZGVPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzJztcbmV4cG9ydCB7IElDYW5hcnlPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9hbGFybXNhbmRydWxlcy9JQ2FuYXJ5T3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcyc7XG5leHBvcnQgeyBJQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vYWxhcm1zYW5kcnVsZXMvSUNhbmFyeU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMnO1xuZXhwb3J0IHsgSVNlcnZlclNpZGVPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9hbGFybXNhbmRydWxlcy9JU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMnO1xuZXhwb3J0IHsgSUJhc2VPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9hbGFybXNhbmRydWxlcy9JQmFzZU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMnO1xuZXhwb3J0IHsgSUJhc2VPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9hbGFybXNhbmRydWxlcy9JQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMnO1xuXG5leHBvcnQgeyBJQ2FuYXJ5VGVzdE1ldHJpY3NPdmVycmlkZSB9IGZyb20gJy4vc2VydmljZXMvSUNhbmFyeVRlc3RNZXRyaWNzT3ZlcnJpZGUnO1xuZXhwb3J0IHsgSUNhbmFyeVRlc3RBdmFpbGFiaWxpdHlNZXRyaWNzT3ZlcnJpZGUgfSBmcm9tICcuL3NlcnZpY2VzL0lDYW5hcnlUZXN0QXZhaWxhYmlsaXR5TWV0cmljc092ZXJyaWRlJztcbmV4cG9ydCB7IElDYW5hcnlUZXN0TGF0ZW5jeU1ldHJpY3NPdmVycmlkZSB9IGZyb20gJy4vc2VydmljZXMvSUNhbmFyeVRlc3RMYXRlbmN5TWV0cmljc092ZXJyaWRlJztcblxuZXhwb3J0IHsgQ2FuYXJ5VGVzdE1ldHJpY3NPdmVycmlkZSB9IGZyb20gJy4vc2VydmljZXMvQ2FuYXJ5VGVzdE1ldHJpY3NPdmVycmlkZSc7XG5leHBvcnQgeyBDYW5hcnlUZXN0QXZhaWxhYmlsaXR5TWV0cmljc092ZXJyaWRlIH0gZnJvbSAnLi9zZXJ2aWNlcy9DYW5hcnlUZXN0QXZhaWxhYmlsaXR5TWV0cmljc092ZXJyaWRlJztcbmV4cG9ydCB7IENhbmFyeVRlc3RMYXRlbmN5TWV0cmljc092ZXJyaWRlIH0gZnJvbSAnLi9zZXJ2aWNlcy9DYW5hcnlUZXN0TGF0ZW5jeU1ldHJpY3NPdmVycmlkZSc7XG5leHBvcnQgeyBDYW5hcnlUZXN0TGF0ZW5jeU1ldHJpY3NPdmVycmlkZVByb3BzIH0gZnJvbSAnLi9zZXJ2aWNlcy9wcm9wcy9DYW5hcnlUZXN0TGF0ZW5jeU1ldHJpY3NPdmVycmlkZVByb3BzJztcbmV4cG9ydCB7IENhbmFyeVRlc3RBdmFpbGFiaWxpdHlNZXRyaWNzT3ZlcnJpZGVQcm9wcyB9IGZyb20gJy4vc2VydmljZXMvcHJvcHMvQ2FuYXJ5VGVzdEF2YWlsYWJpbGl0eU1ldHJpY3NPdmVycmlkZVByb3BzJztcbmV4cG9ydCB7IENhbmFyeVRlc3RNZXRyaWNzT3ZlcnJpZGVQcm9wcyB9IGZyb20gJy4vc2VydmljZXMvcHJvcHMvQ2FuYXJ5VGVzdE1ldHJpY3NPdmVycmlkZVByb3BzJztcblxuZXhwb3J0IHsgSUNhbmFyeU1ldHJpY3MgfSBmcm9tICcuL3NlcnZpY2VzL0lDYW5hcnlNZXRyaWNzJztgYFxuZXhwb3J0IHsgQ2FuYXJ5TWV0cmljcyB9IGZyb20gJy4vc2VydmljZXMvQ2FuYXJ5TWV0cmljcyc7XG5leHBvcnQgeyBDYW5hcnlNZXRyaWNQcm9wcyB9IGZyb20gJy4vc2VydmljZXMvcHJvcHMvQ2FuYXJ5TWV0cmljUHJvcHMnOyJdfQ==
@@ -141,8 +141,8 @@ export declare class ApplicationLoadBalancerMetrics {
141
141
  */
142
142
  static getRegionalProcessedBytesMetric(alb: IApplicationLoadBalancer, period: Duration, addLoadBalancerArn?: boolean): IMetric;
143
143
  static createAZAvailabilityImpactAlarm(scope: IConstruct, alb: IApplicationLoadBalancer, availabilityZoneId: string, availabilityZone: string, threshold: number, keyprefix: string, period: Duration, evaluationPeriods: number, datapointsToAlarm: number): IAlarm;
144
- static createAZLatencyImpactAlarm(scope: IConstruct, alb: IApplicationLoadBalancer, availabilityZoneId: string, availabilityZone: string, threshold: number, statistic: string, keyprefix: string, period: Duration, evaluationPeriods: number, datapointsToAlarm: number): IAlarm;
144
+ static createAZLatencyImpactAlarm(scope: IConstruct, alb: IApplicationLoadBalancer, availabilityZoneId: string, availabilityZone: string, threshold: Duration, statistic: string, keyprefix: string, period: Duration, evaluationPeriods: number, datapointsToAlarm: number): IAlarm;
145
145
  static createAZAvailabilityOutlierAlarm(scope: IConstruct, alb: IApplicationLoadBalancer, algorithm: ApplicationLoadBalancerAvailabilityOutlierAlgorithm, availabilityZoneId: string, availabilityZone: string, threshold: number, keyprefix: string, period: Duration, evaluationPeriods: number, datapointsToAlarm: number): IAlarm;
146
- static createAZLatencyOutlierAlarm(scope: IConstruct, alb: IApplicationLoadBalancer, algorithm: ApplicationLoadBalancerLatencyOutlierAlgorithm, availabilityZone: string, statistic: string, latencyThresold: number, outlierThreshold: number, period: Duration, evaluationPeriods: number, datapointsToAlarm: number, azMapper: IAvailabilityZoneMapper): IAlarm;
147
- static generateLoadBalancerWidgets(albs: IApplicationLoadBalancer[], azMapper: AvailabilityZoneMapper, period: Duration, latencyStatistic: string, latencyThreshold: number, faultRateThreshold: number): IWidget[];
146
+ static createAZLatencyOutlierAlarm(scope: IConstruct, alb: IApplicationLoadBalancer, algorithm: ApplicationLoadBalancerLatencyOutlierAlgorithm, availabilityZone: string, statistic: string, latencyThresold: Duration, outlierThreshold: number, period: Duration, evaluationPeriods: number, datapointsToAlarm: number, azMapper: IAvailabilityZoneMapper): IAlarm;
147
+ static generateLoadBalancerWidgets(albs: IApplicationLoadBalancer[], azMapper: AvailabilityZoneMapper, period: Duration, latencyStatistic: string, latencyThreshold: Duration, faultRateThreshold: number): IWidget[];
148
148
  }