@cdklabs/multi-az-observability 0.0.0-alpha.0 → 0.0.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/.jsii +85 -84
  2. package/API.md +54 -64
  3. package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.d.ts +15 -0
  4. package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.js +127 -1
  5. package/lib/alarmsandrules/BaseOperationZonalAlarmsAndRules.d.ts +2 -2
  6. package/lib/alarmsandrules/BaseOperationZonalAlarmsAndRules.js +1 -18
  7. package/lib/alarmsandrules/CanaryOperationZonalAlarmsAndRules.d.ts +8 -0
  8. package/lib/alarmsandrules/CanaryOperationZonalAlarmsAndRules.js +18 -1
  9. package/lib/alarmsandrules/ServerSideOperationZonalAlarmsAndRules.d.ts +8 -0
  10. package/lib/alarmsandrules/ServerSideOperationZonalAlarmsAndRules.js +18 -1
  11. package/lib/alarmsandrules/ServiceAlarmsAndRules.js +3 -3
  12. package/lib/alarmsandrules/props/CanaryOperationZonalAlarmsAndRulesProps.js +1 -1
  13. package/lib/azmapper/AvailabilityZoneMapper.js +1 -1
  14. package/lib/basic_observability/BasicServiceDashboard.js +130 -0
  15. package/lib/{services → basic_observability}/BasicServiceMultiAZObservability.d.ts +9 -7
  16. package/lib/basic_observability/BasicServiceMultiAZObservability.js +429 -0
  17. package/lib/basic_observability/IBasicServiceMultiAZObservability.d.ts +51 -0
  18. package/lib/basic_observability/IBasicServiceMultiAZObservability.js +5 -0
  19. package/lib/{dashboards → basic_observability}/props/BasicServiceDashboardProps.d.ts +3 -0
  20. package/lib/basic_observability/props/BasicServiceDashboardProps.js +3 -0
  21. package/lib/{services → basic_observability}/props/BasicServiceMultiAZObservabilityProps.d.ts +29 -46
  22. package/lib/basic_observability/props/BasicServiceMultiAZObservabilityProps.js +5 -0
  23. package/lib/basic_observability/props/RegionalApplicationLoadBalancerAvailabilityMetricProps.d.ts +8 -0
  24. package/lib/basic_observability/props/RegionalApplicationLoadBalancerAvailabilityMetricProps.js +3 -0
  25. package/lib/basic_observability/props/RegionalApplicationLoadBalancerLatencyMetricProps.d.ts +8 -0
  26. package/lib/basic_observability/props/RegionalApplicationLoadBalancerLatencyMetricProps.js +3 -0
  27. package/lib/basic_observability/props/ZonalApplicationLoadBalancerAvailabilityMetricProps.d.ts +10 -0
  28. package/lib/basic_observability/props/ZonalApplicationLoadBalancerAvailabilityMetricProps.js +3 -0
  29. package/lib/basic_observability/props/ZonalApplicationLoadBalancerLatencyMetricProps.d.ts +10 -0
  30. package/lib/basic_observability/props/ZonalApplicationLoadBalancerLatencyMetricProps.js +3 -0
  31. package/lib/canaries/src/canary.zip +0 -0
  32. package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.js +14 -16
  33. package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.js +16 -7
  34. package/lib/index.d.ts +2 -2
  35. package/lib/index.js +2 -2
  36. package/lib/metrics/ApplicationLoadBalancerMetrics.d.ts +55 -17
  37. package/lib/metrics/ApplicationLoadBalancerMetrics.js +459 -105
  38. package/lib/metrics/AvailabilityAndLatencyMetrics.d.ts +0 -11
  39. package/lib/metrics/AvailabilityAndLatencyMetrics.js +1 -24
  40. package/lib/metrics/RegionalLatencyMetrics.js +7 -6
  41. package/lib/metrics/ZonalAvailabilityMetrics.js +2 -2
  42. package/lib/metrics/ZonalLatencyMetrics.js +4 -3
  43. package/lib/monitoring/src/monitoring-layer.zip +0 -0
  44. package/lib/outlier-detection/OutlierDetectionFunction.js +5 -5
  45. package/lib/outlier-detection/src/outlier-detection.zip +0 -0
  46. package/lib/outlier-detection/src/scipy-layer.zip +0 -0
  47. package/lib/services/CanaryMetrics.js +1 -1
  48. package/lib/services/CanaryTestMetricsOverride.js +1 -1
  49. package/lib/services/ContributorInsightRuleDetails.js +1 -1
  50. package/lib/services/InstrumentedServiceMultiAZObservability.js +1 -1
  51. package/lib/services/Operation.js +1 -1
  52. package/lib/services/OperationMetricDetails.js +1 -1
  53. package/lib/services/Service.js +1 -1
  54. package/lib/services/ServiceMetricDetails.js +1 -1
  55. package/lib/services/props/MetricDimensions.js +1 -1
  56. package/lib/utilities/LatencyMetricType.d.ts +5 -1
  57. package/lib/utilities/LatencyMetricType.js +5 -1
  58. package/lib/utilities/MetricsHelper.d.ts +13 -0
  59. package/lib/utilities/MetricsHelper.js +30 -0
  60. package/package.json +7 -7
  61. package/lib/dashboards/BasicServiceDashboard.js +0 -130
  62. package/lib/dashboards/props/BasicServiceDashboardProps.js +0 -3
  63. package/lib/services/BasicServiceMultiAZObservability.js +0 -504
  64. package/lib/services/props/BasicServiceMultiAZObservabilityProps.js +0 -3
  65. /package/lib/{dashboards → basic_observability}/BasicServiceDashboard.d.ts +0 -0
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BaseOperationZonalAlarmsAndRules = void 0;
4
4
  const constructs_1 = require("constructs");
5
5
  const AvailabilityAndLatencyAlarmsAndRules_1 = require("./AvailabilityAndLatencyAlarmsAndRules");
6
- const OutlierDetectionAlgorithm_1 = require("../utilities/OutlierDetectionAlgorithm");
7
6
  /**
8
7
  * The base operation regional alarms and rules
9
8
  */
@@ -17,23 +16,7 @@ class BaseOperationZonalAlarmsAndRules extends constructs_1.Construct {
17
16
  AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalLatencyAlarm(this, props.latencyMetricDetails, props.availabilityZoneId, props.counter, props.nameSuffix);
18
17
  this.availabilityOrLatencyAlarm =
19
18
  AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalAvailabilityOrLatencyCompositeAlarm(this, props.availabilityMetricDetails.operationName, props.availabilityZoneId, props.counter, this.availabilityAlarm, this.latencyAlarm, props.nameSuffix);
20
- if (props.outlierDetectionAlgorithm == OutlierDetectionAlgorithm_1.OutlierDetectionAlgorithm.STATIC) {
21
- this.availabilityZoneIsOutlierForFaults =
22
- AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalFaultRateStaticOutlierAlarm(this, props.availabilityMetricDetails, props.availabilityZoneId, props.counter, props.outlierThreshold, props.nameSuffix);
23
- this.availabilityZoneIsOutlierForLatency =
24
- AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalHighLatencyStaticOutlierAlarm(this, props.latencyMetricDetails, props.availabilityZoneId, props.counter, props.outlierThreshold, props.nameSuffix);
25
- }
26
- else {
27
- this.availabilityZoneIsOutlierForFaults =
28
- AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalFaultRateOutlierAlarm(this, props.availabilityMetricDetails, props.availabilityZoneId, props.operation.service.availabilityZoneNames.map((az) => {
29
- return props.azMapper.availabilityZoneIdFromAvailabilityZoneLetter(az.substring(az.length - 1));
30
- }), props.outlierThreshold, props.outlierDetectionFunction, props.outlierDetectionAlgorithm, props.counter, props.nameSuffix);
31
- this.availabilityZoneIsOutlierForLatency =
32
- AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalHighLatencyOutlierAlarm(this, props.latencyMetricDetails, props.availabilityZoneId, props.operation.service.availabilityZoneNames.map((az) => {
33
- return props.azMapper.availabilityZoneIdFromAvailabilityZoneLetter(az.substring(az.length - 1));
34
- }), props.outlierThreshold, props.outlierDetectionFunction, props.outlierDetectionAlgorithm, props.counter, props.nameSuffix);
35
- }
36
19
  }
37
20
  }
38
21
  exports.BaseOperationZonalAlarmsAndRules = BaseOperationZonalAlarmsAndRules;
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWxhcm1zYW5kcnVsZXMvQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0EsMkNBQXVDO0FBQ3ZDLGlHQUE4RjtBQUc5RixzRkFBbUY7QUFFbkY7O0dBRUc7QUFDSCxNQUFzQixnQ0FDcEIsU0FBUSxzQkFBUztJQWdDakIsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBNEM7UUFFNUMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDO1FBQ25ELElBQUksQ0FBQyxpQkFBaUI7WUFDcEIsMkVBQW9DLENBQUMsNEJBQTRCLENBQy9ELElBQUksRUFDSixLQUFLLENBQUMseUJBQXlCLEVBQy9CLEtBQUssQ0FBQyxrQkFBa0IsRUFDeEIsS0FBSyxDQUFDLE9BQU8sRUFDYixLQUFLLENBQUMsVUFBVSxDQUNqQixDQUFDO1FBQ0osSUFBSSxDQUFDLFlBQVk7WUFDZiwyRUFBb0MsQ0FBQyx1QkFBdUIsQ0FDMUQsSUFBSSxFQUNKLEtBQUssQ0FBQyxvQkFBb0IsRUFDMUIsS0FBSyxDQUFDLGtCQUFrQixFQUN4QixLQUFLLENBQUMsT0FBTyxFQUNiLEtBQUssQ0FBQyxVQUFVLENBQ2pCLENBQUM7UUFDSixJQUFJLENBQUMsMEJBQTBCO1lBQzdCLDJFQUFvQyxDQUFDLDhDQUE4QyxDQUNqRixJQUFJLEVBQ0osS0FBSyxDQUFDLHlCQUF5QixDQUFDLGFBQWEsRUFDN0MsS0FBSyxDQUFDLGtCQUFrQixFQUN4QixLQUFLLENBQUMsT0FBTyxFQUNiLElBQUksQ0FBQyxpQkFBaUIsRUFDdEIsSUFBSSxDQUFDLFlBQVksRUFDakIsS0FBSyxDQUFDLFVBQVUsQ0FDakIsQ0FBQztRQUVKLElBQUksS0FBSyxDQUFDLHlCQUF5QixJQUFJLHFEQUF5QixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3hFLElBQUksQ0FBQyxrQ0FBa0M7Z0JBQ3JDLDJFQUFvQyxDQUFDLHNDQUFzQyxDQUN6RSxJQUFJLEVBQ0osS0FBSyxDQUFDLHlCQUF5QixFQUMvQixLQUFLLENBQUMsa0JBQWtCLEVBQ3hCLEtBQUssQ0FBQyxPQUFPLEVBQ2IsS0FBSyxDQUFDLGdCQUFnQixFQUN0QixLQUFLLENBQUMsVUFBVSxDQUNqQixDQUFDO1lBQ0osSUFBSSxDQUFDLG1DQUFtQztnQkFDdEMsMkVBQW9DLENBQUMsd0NBQXdDLENBQzNFLElBQUksRUFDSixLQUFLLENBQUMsb0JBQW9CLEVBQzFCLEtBQUssQ0FBQyxrQkFBa0IsRUFDeEIsS0FBSyxDQUFDLE9BQU8sRUFDYixLQUFLLENBQUMsZ0JBQWdCLEVBQ3RCLEtBQUssQ0FBQyxVQUFVLENBQ2pCLENBQUM7UUFDTixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxrQ0FBa0M7Z0JBQ3JDLDJFQUFvQyxDQUFDLGdDQUFnQyxDQUNuRSxJQUFJLEVBQ0osS0FBSyxDQUFDLHlCQUF5QixFQUMvQixLQUFLLENBQUMsa0JBQWtCLEVBQ3hCLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO29CQUN2RCxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsNENBQTRDLENBQ2hFLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FDNUIsQ0FBQztnQkFDSixDQUFDLENBQUMsRUFDRixLQUFLLENBQUMsZ0JBQWdCLEVBQ3RCLEtBQUssQ0FBQyx3QkFBeUIsRUFDL0IsS0FBSyxDQUFDLHlCQUF5QixFQUMvQixLQUFLLENBQUMsT0FBTyxFQUNiLEtBQUssQ0FBQyxVQUFVLENBQ2pCLENBQUM7WUFDSixJQUFJLENBQUMsbUNBQW1DO2dCQUN0QywyRUFBb0MsQ0FBQyxrQ0FBa0MsQ0FDckUsSUFBSSxFQUNKLEtBQUssQ0FBQyxvQkFBb0IsRUFDMUIsS0FBSyxDQUFDLGtCQUFrQixFQUN4QixLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtvQkFDdkQsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLDRDQUE0QyxDQUNoRSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQzVCLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLEVBQ0YsS0FBSyxDQUFDLGdCQUFnQixFQUN0QixLQUFLLENBQUMsd0JBQXlCLEVBQy9CLEtBQUssQ0FBQyx5QkFBeUIsRUFDL0IsS0FBSyxDQUFDLE9BQU8sRUFDYixLQUFLLENBQUMsVUFBVSxDQUNqQixDQUFDO1FBQ04sQ0FBQztJQUNILENBQUM7Q0FDRjtBQXpIRCw0RUF5SEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBJQWxhcm0gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEF2YWlsYWJpbGl0eUFuZExhdGVuY3lBbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IElCYXNlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vSUJhc2VPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IEJhc2VPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzUHJvcHMgfSBmcm9tICcuL3Byb3BzL0Jhc2VPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzUHJvcHMnO1xuaW1wb3J0IHsgT3V0bGllckRldGVjdGlvbkFsZ29yaXRobSB9IGZyb20gJy4uL3V0aWxpdGllcy9PdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtJztcblxuLyoqXG4gKiBUaGUgYmFzZSBvcGVyYXRpb24gcmVnaW9uYWwgYWxhcm1zIGFuZCBydWxlc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNcbiAgZXh0ZW5kcyBDb25zdHJ1Y3RcbiAgaW1wbGVtZW50cyBJQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMge1xuICAvKipcbiAgICogQ29tcG9zaXRlIGFsYXJtIGZvciBlaXRoZXIgYXZhaWxhYmlsdGl5IG9yIGxhdGVuY3kgaW1wYWN0IHRvIHRoaXMgb3BlcmF0aW9uXG4gICAqL1xuICBhdmFpbGFiaWxpdHlPckxhdGVuY3lBbGFybTogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBBdmFpbGFiaWxpdHkgYWxhcm0gZm9yIHRoaXMgb3BlcmF0aW9uXG4gICAqL1xuICBhdmFpbGFiaWxpdHlBbGFybTogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBMYXRlbmN5IGFsYXJtIGZvciB0aGlzIG9wZXJhdGlvblxuICAgKi9cbiAgbGF0ZW5jeUFsYXJtOiBJQWxhcm07XG5cbiAgLyoqXG4gICAqIEFsYXJtIHRoYXQgaW5kaWNhdGVzIHRoYXQgdGhpcyBBWiBpcyBhbiBvdXRsaWVyIGZvciBmYXVsdCByYXRlXG4gICAqL1xuICBhdmFpbGFiaWxpdHlab25lSXNPdXRsaWVyRm9yRmF1bHRzOiBJQWxhcm07XG5cbiAgLyoqXG4gICAqIEFsYXJtIHRoYXQgaW5kaWNhdGVzIHRoaXMgQVogaXMgYW4gb3V0bGllciBmb3IgaGlnaCBsYXRlbmN5XG4gICAqL1xuICBhdmFpbGFiaWxpdHlab25lSXNPdXRsaWVyRm9yTGF0ZW5jeTogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBUaGUgQXZhaWxhYmlsaXR5IFpvbmUgSWQgZm9yIHRoZSBhbGFybXMgYW5kIHJ1bGVzXG4gICAqL1xuICBhdmFpbGFiaWxpdHlab25lSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEJhc2VPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5hdmFpbGFiaWxpdHlab25lSWQgPSBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQ7XG4gICAgdGhpcy5hdmFpbGFiaWxpdHlBbGFybSA9XG4gICAgICBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXMuY3JlYXRlWm9uYWxBdmFpbGFiaWxpdHlBbGFybShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICBwcm9wcy5uYW1lU3VmZml4LFxuICAgICAgKTtcbiAgICB0aGlzLmxhdGVuY3lBbGFybSA9XG4gICAgICBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXMuY3JlYXRlWm9uYWxMYXRlbmN5QWxhcm0oXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHByb3BzLmxhdGVuY3lNZXRyaWNEZXRhaWxzLFxuICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgIHByb3BzLmNvdW50ZXIsXG4gICAgICAgIHByb3BzLm5hbWVTdWZmaXgsXG4gICAgICApO1xuICAgIHRoaXMuYXZhaWxhYmlsaXR5T3JMYXRlbmN5QWxhcm0gPVxuICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVpvbmFsQXZhaWxhYmlsaXR5T3JMYXRlbmN5Q29tcG9zaXRlQWxhcm0oXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMub3BlcmF0aW9uTmFtZSxcbiAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICB0aGlzLmF2YWlsYWJpbGl0eUFsYXJtLFxuICAgICAgICB0aGlzLmxhdGVuY3lBbGFybSxcbiAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICk7XG5cbiAgICBpZiAocHJvcHMub3V0bGllckRldGVjdGlvbkFsZ29yaXRobSA9PSBPdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtLlNUQVRJQykge1xuICAgICAgdGhpcy5hdmFpbGFiaWxpdHlab25lSXNPdXRsaWVyRm9yRmF1bHRzID1cbiAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVpvbmFsRmF1bHRSYXRlU3RhdGljT3V0bGllckFsYXJtKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgcHJvcHMuY291bnRlcixcbiAgICAgICAgICBwcm9wcy5vdXRsaWVyVGhyZXNob2xkLFxuICAgICAgICAgIHByb3BzLm5hbWVTdWZmaXgsXG4gICAgICAgICk7XG4gICAgICB0aGlzLmF2YWlsYWJpbGl0eVpvbmVJc091dGxpZXJGb3JMYXRlbmN5ID1cbiAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVpvbmFsSGlnaExhdGVuY3lTdGF0aWNPdXRsaWVyQWxhcm0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBwcm9wcy5sYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgcHJvcHMuY291bnRlcixcbiAgICAgICAgICBwcm9wcy5vdXRsaWVyVGhyZXNob2xkLFxuICAgICAgICAgIHByb3BzLm5hbWVTdWZmaXgsXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZUlzT3V0bGllckZvckZhdWx0cyA9XG4gICAgICAgIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lBbGFybXNBbmRSdWxlcy5jcmVhdGVab25hbEZhdWx0UmF0ZU91dGxpZXJBbGFybShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIHByb3BzLm9wZXJhdGlvbi5zZXJ2aWNlLmF2YWlsYWJpbGl0eVpvbmVOYW1lcy5tYXAoKGF6KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcHJvcHMuYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoXG4gICAgICAgICAgICAgIGF6LnN1YnN0cmluZyhhei5sZW5ndGggLSAxKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgcHJvcHMub3V0bGllclRocmVzaG9sZCxcbiAgICAgICAgICBwcm9wcy5vdXRsaWVyRGV0ZWN0aW9uRnVuY3Rpb24hLFxuICAgICAgICAgIHByb3BzLm91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0sXG4gICAgICAgICAgcHJvcHMuY291bnRlcixcbiAgICAgICAgICBwcm9wcy5uYW1lU3VmZml4LFxuICAgICAgICApO1xuICAgICAgdGhpcy5hdmFpbGFiaWxpdHlab25lSXNPdXRsaWVyRm9yTGF0ZW5jeSA9XG4gICAgICAgIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lBbGFybXNBbmRSdWxlcy5jcmVhdGVab25hbEhpZ2hMYXRlbmN5T3V0bGllckFsYXJtKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgcHJvcHMubGF0ZW5jeU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIHByb3BzLm9wZXJhdGlvbi5zZXJ2aWNlLmF2YWlsYWJpbGl0eVpvbmVOYW1lcy5tYXAoKGF6KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcHJvcHMuYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoXG4gICAgICAgICAgICAgIGF6LnN1YnN0cmluZyhhei5sZW5ndGggLSAxKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgcHJvcHMub3V0bGllclRocmVzaG9sZCxcbiAgICAgICAgICBwcm9wcy5vdXRsaWVyRGV0ZWN0aW9uRnVuY3Rpb24hLFxuICAgICAgICAgIHByb3BzLm91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0sXG4gICAgICAgICAgcHJvcHMuY291bnRlcixcbiAgICAgICAgICBwcm9wcy5uYW1lU3VmZml4LFxuICAgICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWxhcm1zYW5kcnVsZXMvQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0EsMkNBQXVDO0FBQ3ZDLGlHQUE4RjtBQUk5Rjs7R0FFRztBQUNILE1BQXNCLGdDQUNwQixTQUFRLHNCQUFTO0lBZ0NqQixZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUE0QztRQUU1QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUM7UUFDbkQsSUFBSSxDQUFDLGlCQUFpQjtZQUNwQiwyRUFBb0MsQ0FBQyw0QkFBNEIsQ0FDL0QsSUFBSSxFQUNKLEtBQUssQ0FBQyx5QkFBeUIsRUFDL0IsS0FBSyxDQUFDLGtCQUFrQixFQUN4QixLQUFLLENBQUMsT0FBTyxFQUNiLEtBQUssQ0FBQyxVQUFVLENBQ2pCLENBQUM7UUFDSixJQUFJLENBQUMsWUFBWTtZQUNmLDJFQUFvQyxDQUFDLHVCQUF1QixDQUMxRCxJQUFJLEVBQ0osS0FBSyxDQUFDLG9CQUFvQixFQUMxQixLQUFLLENBQUMsa0JBQWtCLEVBQ3hCLEtBQUssQ0FBQyxPQUFPLEVBQ2IsS0FBSyxDQUFDLFVBQVUsQ0FDakIsQ0FBQztRQUNKLElBQUksQ0FBQywwQkFBMEI7WUFDN0IsMkVBQW9DLENBQUMsOENBQThDLENBQ2pGLElBQUksRUFDSixLQUFLLENBQUMseUJBQXlCLENBQUMsYUFBYSxFQUM3QyxLQUFLLENBQUMsa0JBQWtCLEVBQ3hCLEtBQUssQ0FBQyxPQUFPLEVBQ2IsSUFBSSxDQUFDLGlCQUFpQixFQUN0QixJQUFJLENBQUMsWUFBWSxFQUNqQixLQUFLLENBQUMsVUFBVSxDQUNqQixDQUFDO0lBQ04sQ0FBQztDQUNGO0FBbkVELDRFQW1FQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCB7IElBbGFybSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9BdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgSUJhc2VPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9JQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyB9IGZyb20gJy4vcHJvcHMvQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyc7XG5cbi8qKlxuICogVGhlIGJhc2Ugb3BlcmF0aW9uIHJlZ2lvbmFsIGFsYXJtcyBhbmQgcnVsZXNcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzXG4gIGV4dGVuZHMgQ29uc3RydWN0XG4gIGltcGxlbWVudHMgSUJhc2VPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzIHtcbiAgLyoqXG4gICAqIENvbXBvc2l0ZSBhbGFybSBmb3IgZWl0aGVyIGF2YWlsYWJpbHRpeSBvciBsYXRlbmN5IGltcGFjdCB0byB0aGlzIG9wZXJhdGlvblxuICAgKi9cbiAgYXZhaWxhYmlsaXR5T3JMYXRlbmN5QWxhcm06IElBbGFybTtcblxuICAvKipcbiAgICogQXZhaWxhYmlsaXR5IGFsYXJtIGZvciB0aGlzIG9wZXJhdGlvblxuICAgKi9cbiAgYXZhaWxhYmlsaXR5QWxhcm06IElBbGFybTtcblxuICAvKipcbiAgICogTGF0ZW5jeSBhbGFybSBmb3IgdGhpcyBvcGVyYXRpb25cbiAgICovXG4gIGxhdGVuY3lBbGFybTogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBBbGFybSB0aGF0IGluZGljYXRlcyB0aGF0IHRoaXMgQVogaXMgYW4gb3V0bGllciBmb3IgZmF1bHQgcmF0ZVxuICAgKi9cbiAgYWJzdHJhY3QgYXZhaWxhYmlsaXR5Wm9uZUlzT3V0bGllckZvckZhdWx0czogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBBbGFybSB0aGF0IGluZGljYXRlcyB0aGlzIEFaIGlzIGFuIG91dGxpZXIgZm9yIGhpZ2ggbGF0ZW5jeVxuICAgKi9cbiAgYWJzdHJhY3QgYXZhaWxhYmlsaXR5Wm9uZUlzT3V0bGllckZvckxhdGVuY3k6IElBbGFybTtcblxuICAvKipcbiAgICogVGhlIEF2YWlsYWJpbGl0eSBab25lIElkIGZvciB0aGUgYWxhcm1zIGFuZCBydWxlc1xuICAgKi9cbiAgYXZhaWxhYmlsaXR5Wm9uZUlkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBCYXNlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZUlkID0gcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkO1xuICAgIHRoaXMuYXZhaWxhYmlsaXR5QWxhcm0gPVxuICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVpvbmFsQXZhaWxhYmlsaXR5QWxhcm0oXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMsXG4gICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgcHJvcHMuY291bnRlcixcbiAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICk7XG4gICAgdGhpcy5sYXRlbmN5QWxhcm0gPVxuICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVpvbmFsTGF0ZW5jeUFsYXJtKFxuICAgICAgICB0aGlzLFxuICAgICAgICBwcm9wcy5sYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICBwcm9wcy5uYW1lU3VmZml4LFxuICAgICAgKTtcbiAgICB0aGlzLmF2YWlsYWJpbGl0eU9yTGF0ZW5jeUFsYXJtID1cbiAgICAgIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lBbGFybXNBbmRSdWxlcy5jcmVhdGVab25hbEF2YWlsYWJpbGl0eU9yTGF0ZW5jeUNvbXBvc2l0ZUFsYXJtKFxuICAgICAgICB0aGlzLFxuICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLm9wZXJhdGlvbk5hbWUsXG4gICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgcHJvcHMuY291bnRlcixcbiAgICAgICAgdGhpcy5hdmFpbGFiaWxpdHlBbGFybSxcbiAgICAgICAgdGhpcy5sYXRlbmN5QWxhcm0sXG4gICAgICAgIHByb3BzLm5hbWVTdWZmaXgsXG4gICAgICApO1xuICB9XG59XG4iXX0=
@@ -12,5 +12,13 @@ export declare class CanaryOperationZonalAlarmsAndRules extends BaseOperationZon
12
12
  * threshold in this AZ and the AZ is an outlier for faults or latency
13
13
  */
14
14
  isolatedImpactAlarm: IAlarm;
15
+ /**
16
+ * Alarm that indicates that this AZ is an outlier for fault rate
17
+ */
18
+ availabilityZoneIsOutlierForFaults: IAlarm;
19
+ /**
20
+ * Alarm that indicates this AZ is an outlier for high latency
21
+ */
22
+ availabilityZoneIsOutlierForLatency: IAlarm;
15
23
  constructor(scope: Construct, id: string, props: CanaryOperationZonalAlarmsAndRulesProps);
16
24
  }
@@ -3,15 +3,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CanaryOperationZonalAlarmsAndRules = void 0;
4
4
  const AvailabilityAndLatencyAlarmsAndRules_1 = require("./AvailabilityAndLatencyAlarmsAndRules");
5
5
  const BaseOperationZonalAlarmsAndRules_1 = require("./BaseOperationZonalAlarmsAndRules");
6
+ const OutlierDetectionAlgorithm_1 = require("../utilities/OutlierDetectionAlgorithm");
6
7
  /**
7
8
  * Creates the alarms and rules for a particular operation as measured by the canary
8
9
  */
9
10
  class CanaryOperationZonalAlarmsAndRules extends BaseOperationZonalAlarmsAndRules_1.BaseOperationZonalAlarmsAndRules {
10
11
  constructor(scope, id, props) {
11
12
  super(scope, id, props);
13
+ if (props.outlierDetectionAlgorithm == OutlierDetectionAlgorithm_1.OutlierDetectionAlgorithm.STATIC) {
14
+ this.availabilityZoneIsOutlierForFaults =
15
+ AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalFaultRateStaticOutlierAlarmForCanaries(this, props.availabilityMetricDetails, props.availabilityZoneId, props.operation.service.availabilityZoneNames, props.counter, props.outlierThreshold, props.nameSuffix);
16
+ this.availabilityZoneIsOutlierForLatency =
17
+ AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalHighLatencyStaticOutlierAlarmForCanaries(this, props.latencyMetricDetails, props.availabilityZoneId, props.operation.service.availabilityZoneNames, props.counter, props.outlierThreshold, props.nameSuffix);
18
+ }
19
+ else {
20
+ this.availabilityZoneIsOutlierForFaults =
21
+ AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalFaultRateOutlierAlarm(this, props.availabilityMetricDetails, props.availabilityZoneId, props.operation.service.availabilityZoneNames.map((az) => {
22
+ return props.azMapper.availabilityZoneIdFromAvailabilityZoneLetter(az.substring(az.length - 1));
23
+ }), props.outlierThreshold, props.outlierDetectionFunction, props.outlierDetectionAlgorithm, props.counter, props.nameSuffix);
24
+ this.availabilityZoneIsOutlierForLatency =
25
+ AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalHighLatencyOutlierAlarm(this, props.latencyMetricDetails, props.availabilityZoneId, props.operation.service.availabilityZoneNames.map((az) => {
26
+ return props.azMapper.availabilityZoneIdFromAvailabilityZoneLetter(az.substring(az.length - 1));
27
+ }), props.outlierThreshold, props.outlierDetectionFunction, props.outlierDetectionAlgorithm, props.counter, props.nameSuffix);
28
+ }
12
29
  this.isolatedImpactAlarm =
13
30
  AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createCanaryIsolatedAZImpactAlarm(this, props.availabilityMetricDetails.operationName, props.availabilityZoneId, props.counter, this.availabilityZoneIsOutlierForFaults, this.availabilityAlarm, this.availabilityZoneIsOutlierForLatency, this.latencyAlarm, props.nameSuffix);
14
31
  }
15
32
  }
16
33
  exports.CanaryOperationZonalAlarmsAndRules = CanaryOperationZonalAlarmsAndRules;
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbGFybXNhbmRydWxlcy9DYW5hcnlPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLGlHQUE4RjtBQUM5Rix5RkFBc0Y7QUFJdEY7O0dBRUc7QUFDSCxNQUFhLGtDQUNYLFNBQVEsbUVBQWdDO0lBUXhDLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQThDO1FBRTlDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLElBQUksQ0FBQyxtQkFBbUI7WUFDdEIsMkVBQW9DLENBQUMsaUNBQWlDLENBQ3BFLElBQUksRUFDSixLQUFLLENBQUMseUJBQXlCLENBQUMsYUFBYSxFQUM3QyxLQUFLLENBQUMsa0JBQWtCLEVBQ3hCLEtBQUssQ0FBQyxPQUFPLEVBQ2IsSUFBSSxDQUFDLGtDQUFrQyxFQUN2QyxJQUFJLENBQUMsaUJBQWlCLEVBQ3RCLElBQUksQ0FBQyxtQ0FBbUMsRUFDeEMsSUFBSSxDQUFDLFlBQVksRUFDakIsS0FBSyxDQUFDLFVBQVUsQ0FDakIsQ0FBQztJQUNOLENBQUM7Q0FDRjtBQTdCRCxnRkE2QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBJQWxhcm0gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEF2YWlsYWJpbGl0eUFuZExhdGVuY3lBbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IEJhc2VPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9CYXNlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vSUNhbmFyeU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzIH0gZnJvbSAnLi9wcm9wcy9DYW5hcnlPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzUHJvcHMnO1xuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGFsYXJtcyBhbmQgcnVsZXMgZm9yIGEgcGFydGljdWxhciBvcGVyYXRpb24gYXMgbWVhc3VyZWQgYnkgdGhlIGNhbmFyeVxuICovXG5leHBvcnQgY2xhc3MgQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1xuICBleHRlbmRzIEJhc2VPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzXG4gIGltcGxlbWVudHMgSUNhbmFyeU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMge1xuICAvKipcbiAgICogQWxhcm0gdGhhdCB0cmlnZ2VycyBpZiBlaXRoZXIgbGF0ZW5jeSBvciBhdmFpbGFiaWxpdHkgYnJlYWNoIHRoZSBzcGVjaWZpZWRcbiAgICogdGhyZXNob2xkIGluIHRoaXMgQVogYW5kIHRoZSBBWiBpcyBhbiBvdXRsaWVyIGZvciBmYXVsdHMgb3IgbGF0ZW5jeVxuICAgKi9cbiAgaXNvbGF0ZWRJbXBhY3RBbGFybTogSUFsYXJtO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIHRoaXMuaXNvbGF0ZWRJbXBhY3RBbGFybSA9XG4gICAgICBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXMuY3JlYXRlQ2FuYXJ5SXNvbGF0ZWRBWkltcGFjdEFsYXJtKFxuICAgICAgICB0aGlzLFxuICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLm9wZXJhdGlvbk5hbWUsXG4gICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgcHJvcHMuY291bnRlcixcbiAgICAgICAgdGhpcy5hdmFpbGFiaWxpdHlab25lSXNPdXRsaWVyRm9yRmF1bHRzLFxuICAgICAgICB0aGlzLmF2YWlsYWJpbGl0eUFsYXJtLFxuICAgICAgICB0aGlzLmF2YWlsYWJpbGl0eVpvbmVJc091dGxpZXJGb3JMYXRlbmN5LFxuICAgICAgICB0aGlzLmxhdGVuY3lBbGFybSxcbiAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbGFybXNhbmRydWxlcy9DYW5hcnlPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLGlHQUE4RjtBQUM5Rix5RkFBc0Y7QUFHdEYsc0ZBQW1GO0FBRW5GOztHQUVHO0FBQ0gsTUFBYSxrQ0FDWCxTQUFRLG1FQUFnQztJQWtCeEMsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBOEM7UUFFOUMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxLQUFLLENBQUMseUJBQXlCLElBQUkscURBQXlCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDeEUsSUFBSSxDQUFDLGtDQUFrQztnQkFDckMsMkVBQW9DLENBQUMsaURBQWlELENBQ3BGLElBQUksRUFDSixLQUFLLENBQUMseUJBQXlCLEVBQy9CLEtBQUssQ0FBQyxrQkFBa0IsRUFDeEIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQzdDLEtBQUssQ0FBQyxPQUFPLEVBQ2IsS0FBSyxDQUFDLGdCQUFnQixFQUN0QixLQUFLLENBQUMsVUFBVSxDQUNqQixDQUFDO1lBQ0osSUFBSSxDQUFDLG1DQUFtQztnQkFDdEMsMkVBQW9DLENBQUMsbURBQW1ELENBQ3RGLElBQUksRUFDSixLQUFLLENBQUMsb0JBQW9CLEVBQzFCLEtBQUssQ0FBQyxrQkFBa0IsRUFDeEIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQzdDLEtBQUssQ0FBQyxPQUFPLEVBQ2IsS0FBSyxDQUFDLGdCQUFnQixFQUN0QixLQUFLLENBQUMsVUFBVSxDQUNqQixDQUFDO1FBQ04sQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsa0NBQWtDO2dCQUNyQywyRUFBb0MsQ0FBQyxnQ0FBZ0MsQ0FDbkUsSUFBSSxFQUNKLEtBQUssQ0FBQyx5QkFBeUIsRUFDL0IsS0FBSyxDQUFDLGtCQUFrQixFQUN4QixLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtvQkFDdkQsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLDRDQUE0QyxDQUNoRSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQzVCLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLEVBQ0YsS0FBSyxDQUFDLGdCQUFnQixFQUN0QixLQUFLLENBQUMsd0JBQXlCLEVBQy9CLEtBQUssQ0FBQyx5QkFBeUIsRUFDL0IsS0FBSyxDQUFDLE9BQU8sRUFDYixLQUFLLENBQUMsVUFBVSxDQUNqQixDQUFDO1lBQ0osSUFBSSxDQUFDLG1DQUFtQztnQkFDdEMsMkVBQW9DLENBQUMsa0NBQWtDLENBQ3JFLElBQUksRUFDSixLQUFLLENBQUMsb0JBQW9CLEVBQzFCLEtBQUssQ0FBQyxrQkFBa0IsRUFDeEIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7b0JBQ3ZELE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyw0Q0FBNEMsQ0FDaEUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUM1QixDQUFDO2dCQUNKLENBQUMsQ0FBQyxFQUNGLEtBQUssQ0FBQyxnQkFBZ0IsRUFDdEIsS0FBSyxDQUFDLHdCQUF5QixFQUMvQixLQUFLLENBQUMseUJBQXlCLEVBQy9CLEtBQUssQ0FBQyxPQUFPLEVBQ2IsS0FBSyxDQUFDLFVBQVUsQ0FDakIsQ0FBQztRQUNOLENBQUM7UUFFRCxJQUFJLENBQUMsbUJBQW1CO1lBQ3RCLDJFQUFvQyxDQUFDLGlDQUFpQyxDQUNwRSxJQUFJLEVBQ0osS0FBSyxDQUFDLHlCQUF5QixDQUFDLGFBQWEsRUFDN0MsS0FBSyxDQUFDLGtCQUFrQixFQUN4QixLQUFLLENBQUMsT0FBTyxFQUNiLElBQUksQ0FBQyxrQ0FBa0MsRUFDdkMsSUFBSSxDQUFDLGlCQUFpQixFQUN0QixJQUFJLENBQUMsbUNBQW1DLEVBQ3hDLElBQUksQ0FBQyxZQUFZLEVBQ2pCLEtBQUssQ0FBQyxVQUFVLENBQ2pCLENBQUM7SUFDTixDQUFDO0NBQ0Y7QUEvRkQsZ0ZBK0ZDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgSUFsYXJtIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0F2YWlsYWJpbGl0eUFuZExhdGVuY3lBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBCYXNlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgSUNhbmFyeU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lDYW5hcnlPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IENhbmFyeU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyB9IGZyb20gJy4vcHJvcHMvQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzJztcbmltcG9ydCB7IE91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0gfSBmcm9tICcuLi91dGlsaXRpZXMvT3V0bGllckRldGVjdGlvbkFsZ29yaXRobSc7XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgYWxhcm1zIGFuZCBydWxlcyBmb3IgYSBwYXJ0aWN1bGFyIG9wZXJhdGlvbiBhcyBtZWFzdXJlZCBieSB0aGUgY2FuYXJ5XG4gKi9cbmV4cG9ydCBjbGFzcyBDYW5hcnlPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzXG4gIGV4dGVuZHMgQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNcbiAgaW1wbGVtZW50cyBJQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyB7XG4gIC8qKlxuICAgKiBBbGFybSB0aGF0IHRyaWdnZXJzIGlmIGVpdGhlciBsYXRlbmN5IG9yIGF2YWlsYWJpbGl0eSBicmVhY2ggdGhlIHNwZWNpZmllZFxuICAgKiB0aHJlc2hvbGQgaW4gdGhpcyBBWiBhbmQgdGhlIEFaIGlzIGFuIG91dGxpZXIgZm9yIGZhdWx0cyBvciBsYXRlbmN5XG4gICAqL1xuICBpc29sYXRlZEltcGFjdEFsYXJtOiBJQWxhcm07XG5cbiAgLyoqXG4gICAqIEFsYXJtIHRoYXQgaW5kaWNhdGVzIHRoYXQgdGhpcyBBWiBpcyBhbiBvdXRsaWVyIGZvciBmYXVsdCByYXRlXG4gICAqL1xuICBhdmFpbGFiaWxpdHlab25lSXNPdXRsaWVyRm9yRmF1bHRzOiBJQWxhcm07XG5cbiAgLyoqXG4gICAqIEFsYXJtIHRoYXQgaW5kaWNhdGVzIHRoaXMgQVogaXMgYW4gb3V0bGllciBmb3IgaGlnaCBsYXRlbmN5XG4gICAqL1xuICBhdmFpbGFiaWxpdHlab25lSXNPdXRsaWVyRm9yTGF0ZW5jeTogSUFsYXJtO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIGlmIChwcm9wcy5vdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtID09IE91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0uU1RBVElDKSB7XG4gICAgICB0aGlzLmF2YWlsYWJpbGl0eVpvbmVJc091dGxpZXJGb3JGYXVsdHMgPVxuICAgICAgICBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXMuY3JlYXRlWm9uYWxGYXVsdFJhdGVTdGF0aWNPdXRsaWVyQWxhcm1Gb3JDYW5hcmllcyhcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIHByb3BzLm9wZXJhdGlvbi5zZXJ2aWNlLmF2YWlsYWJpbGl0eVpvbmVOYW1lcyxcbiAgICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICAgIHByb3BzLm91dGxpZXJUaHJlc2hvbGQsXG4gICAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICAgKTtcbiAgICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZUlzT3V0bGllckZvckxhdGVuY3kgPVxuICAgICAgICBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXMuY3JlYXRlWm9uYWxIaWdoTGF0ZW5jeVN0YXRpY091dGxpZXJBbGFybUZvckNhbmFyaWVzKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgcHJvcHMubGF0ZW5jeU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIHByb3BzLm9wZXJhdGlvbi5zZXJ2aWNlLmF2YWlsYWJpbGl0eVpvbmVOYW1lcyxcbiAgICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICAgIHByb3BzLm91dGxpZXJUaHJlc2hvbGQsXG4gICAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hdmFpbGFiaWxpdHlab25lSXNPdXRsaWVyRm9yRmF1bHRzID1cbiAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVpvbmFsRmF1bHRSYXRlT3V0bGllckFsYXJtKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgcHJvcHMub3BlcmF0aW9uLnNlcnZpY2UuYXZhaWxhYmlsaXR5Wm9uZU5hbWVzLm1hcCgoYXopID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcy5hek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihcbiAgICAgICAgICAgICAgYXouc3Vic3RyaW5nKGF6Lmxlbmd0aCAtIDEpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBwcm9wcy5vdXRsaWVyVGhyZXNob2xkLFxuICAgICAgICAgIHByb3BzLm91dGxpZXJEZXRlY3Rpb25GdW5jdGlvbiEsXG4gICAgICAgICAgcHJvcHMub3V0bGllckRldGVjdGlvbkFsZ29yaXRobSxcbiAgICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICAgIHByb3BzLm5hbWVTdWZmaXgsXG4gICAgICAgICk7XG4gICAgICB0aGlzLmF2YWlsYWJpbGl0eVpvbmVJc091dGxpZXJGb3JMYXRlbmN5ID1cbiAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVpvbmFsSGlnaExhdGVuY3lPdXRsaWVyQWxhcm0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBwcm9wcy5sYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgcHJvcHMub3BlcmF0aW9uLnNlcnZpY2UuYXZhaWxhYmlsaXR5Wm9uZU5hbWVzLm1hcCgoYXopID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcy5hek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihcbiAgICAgICAgICAgICAgYXouc3Vic3RyaW5nKGF6Lmxlbmd0aCAtIDEpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBwcm9wcy5vdXRsaWVyVGhyZXNob2xkLFxuICAgICAgICAgIHByb3BzLm91dGxpZXJEZXRlY3Rpb25GdW5jdGlvbiEsXG4gICAgICAgICAgcHJvcHMub3V0bGllckRldGVjdGlvbkFsZ29yaXRobSxcbiAgICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICAgIHByb3BzLm5hbWVTdWZmaXgsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5pc29sYXRlZEltcGFjdEFsYXJtID1cbiAgICAgIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lBbGFybXNBbmRSdWxlcy5jcmVhdGVDYW5hcnlJc29sYXRlZEFaSW1wYWN0QWxhcm0oXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMub3BlcmF0aW9uTmFtZSxcbiAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICB0aGlzLmF2YWlsYWJpbGl0eVpvbmVJc091dGxpZXJGb3JGYXVsdHMsXG4gICAgICAgIHRoaXMuYXZhaWxhYmlsaXR5QWxhcm0sXG4gICAgICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZUlzT3V0bGllckZvckxhdGVuY3ksXG4gICAgICAgIHRoaXMubGF0ZW5jeUFsYXJtLFxuICAgICAgICBwcm9wcy5uYW1lU3VmZml4LFxuICAgICAgKTtcbiAgfVxufVxuIl19
@@ -36,5 +36,13 @@ export declare class ServerSideOperationZonalAlarmsAndRules extends BaseOperatio
36
36
  * the percent of instances contributing to latency or faults
37
37
  */
38
38
  instancesHandlingRequestsInThisAZ?: CfnInsightRule;
39
+ /**
40
+ * Alarm that indicates that this AZ is an outlier for fault rate
41
+ */
42
+ availabilityZoneIsOutlierForFaults: IAlarm;
43
+ /**
44
+ * Alarm that indicates this AZ is an outlier for high latency
45
+ */
46
+ availabilityZoneIsOutlierForLatency: IAlarm;
39
47
  constructor(scope: Construct, id: string, props: ServerSideOperationZonalAlarmsAndRulesProps);
40
48
  }
@@ -6,12 +6,29 @@ exports.ServerSideOperationZonalAlarmsAndRules = void 0;
6
6
  const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
7
7
  const AvailabilityAndLatencyAlarmsAndRules_1 = require("./AvailabilityAndLatencyAlarmsAndRules");
8
8
  const BaseOperationZonalAlarmsAndRules_1 = require("./BaseOperationZonalAlarmsAndRules");
9
+ const OutlierDetectionAlgorithm_1 = require("../utilities/OutlierDetectionAlgorithm");
9
10
  /**
10
11
  * The server side alarms and rules for an operation in an Availability Zone
11
12
  */
12
13
  class ServerSideOperationZonalAlarmsAndRules extends BaseOperationZonalAlarmsAndRules_1.BaseOperationZonalAlarmsAndRules {
13
14
  constructor(scope, id, props) {
14
15
  super(scope, id, props);
16
+ if (props.outlierDetectionAlgorithm == OutlierDetectionAlgorithm_1.OutlierDetectionAlgorithm.STATIC) {
17
+ this.availabilityZoneIsOutlierForFaults =
18
+ AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalFaultRateStaticOutlierAlarm(this, props.availabilityMetricDetails, props.availabilityZoneId, props.counter, props.outlierThreshold, props.nameSuffix);
19
+ this.availabilityZoneIsOutlierForLatency =
20
+ AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalHighLatencyStaticOutlierAlarm(this, props.latencyMetricDetails, props.availabilityZoneId, props.counter, props.outlierThreshold, props.nameSuffix);
21
+ }
22
+ else {
23
+ this.availabilityZoneIsOutlierForFaults =
24
+ AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalFaultRateOutlierAlarm(this, props.availabilityMetricDetails, props.availabilityZoneId, props.operation.service.availabilityZoneNames.map((az) => {
25
+ return props.azMapper.availabilityZoneIdFromAvailabilityZoneLetter(az.substring(az.length - 1));
26
+ }), props.outlierThreshold, props.outlierDetectionFunction, props.outlierDetectionAlgorithm, props.counter, props.nameSuffix);
27
+ this.availabilityZoneIsOutlierForLatency =
28
+ AvailabilityAndLatencyAlarmsAndRules_1.AvailabilityAndLatencyAlarmsAndRules.createZonalHighLatencyOutlierAlarm(this, props.latencyMetricDetails, props.availabilityZoneId, props.operation.service.availabilityZoneNames.map((az) => {
29
+ return props.azMapper.availabilityZoneIdFromAvailabilityZoneLetter(az.substring(az.length - 1));
30
+ }), props.outlierThreshold, props.outlierDetectionFunction, props.outlierDetectionAlgorithm, props.counter, props.nameSuffix);
31
+ }
15
32
  if (props.contributorInsightRuleDetails !== undefined &&
16
33
  props.contributorInsightRuleDetails != null) {
17
34
  this.instancesHandlingRequestsInThisAZ =
@@ -43,4 +60,4 @@ class ServerSideOperationZonalAlarmsAndRules extends BaseOperationZonalAlarmsAnd
43
60
  }
44
61
  }
45
62
  exports.ServerSideOperationZonalAlarmsAndRules = ServerSideOperationZonalAlarmsAndRules;
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWxhcm1zYW5kcnVsZXMvU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUN0QywrREFLb0M7QUFFcEMsaUdBQThGO0FBQzlGLHlGQUFzRjtBQUl0Rjs7R0FFRztBQUNILE1BQWEsc0NBQ1gsU0FBUSxtRUFBZ0M7SUFxQ3hDLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQWtEO1FBRWxELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLElBQ0UsS0FBSyxDQUFDLDZCQUE2QixLQUFLLFNBQVM7WUFDakQsS0FBSyxDQUFDLDZCQUE2QixJQUFJLElBQUksRUFDM0MsQ0FBQztZQUNELElBQUksQ0FBQyxpQ0FBaUM7Z0JBQ3BDLDJFQUFvQyxDQUFDLHFEQUFxRCxDQUN4RixJQUFJLEVBQ0osS0FBSyxDQUFDLHlCQUF5QixDQUFDLGFBQWEsRUFDN0MsS0FBSyxDQUFDLGtCQUFrQixFQUN4QixLQUFLLENBQUMsNkJBQTZCLEVBQ25DLEtBQUssQ0FBQyxPQUFPLEVBQ2IsS0FBSyxDQUFDLFVBQVUsQ0FDakIsQ0FBQztZQUNKLElBQUksQ0FBQyxvQ0FBb0M7Z0JBQ3ZDLDJFQUFvQyxDQUFDLHFEQUFxRCxDQUN4RixJQUFJLEVBQ0osS0FBSyxDQUFDLHlCQUF5QixDQUFDLGFBQWEsRUFDN0MsS0FBSyxDQUFDLGtCQUFrQixFQUN4QixLQUFLLENBQUMsNkJBQTZCLEVBQ25DLEtBQUssQ0FBQyxPQUFPLEVBQ2IsS0FBSyxDQUFDLFVBQVUsQ0FDakIsQ0FBQztZQUNKLElBQUksQ0FBQyxzREFBc0Q7Z0JBQ3pELDJFQUFvQyxDQUFDLDREQUE0RCxDQUMvRixJQUFJLEVBQ0osS0FBSyxDQUFDLHlCQUF5QixFQUMvQixLQUFLLENBQUMsa0JBQWtCLEVBQ3hCLEtBQUssQ0FBQyxPQUFPLEVBQ2IsS0FBSyxDQUFDLGdCQUFnQixFQUN0QixJQUFJLENBQUMsb0NBQW9DLEVBQ3pDLElBQUksQ0FBQyxpQ0FBaUMsRUFDdEMsS0FBSyxDQUFDLFVBQVUsQ0FDakIsQ0FBQztZQUNKLElBQUksQ0FBQyx5Q0FBeUM7Z0JBQzVDLDJFQUFvQyxDQUFDLDJEQUEyRCxDQUM5RixJQUFJLEVBQ0osS0FBSyxDQUFDLG9CQUFvQixFQUMxQixLQUFLLENBQUMsa0JBQWtCLEVBQ3hCLEtBQUssQ0FBQyw2QkFBNkIsRUFDbkMsS0FBSyxDQUFDLE9BQU8sRUFDYixLQUFLLENBQUMsVUFBVSxDQUNqQixDQUFDO1lBQ0osSUFBSSxDQUFDLDZDQUE2QztnQkFDaEQsMkVBQW9DLENBQUMsaUVBQWlFLENBQ3BHLElBQUksRUFDSixLQUFLLENBQUMsb0JBQW9CLEVBQzFCLEtBQUssQ0FBQyxrQkFBa0IsRUFDeEIsS0FBSyxDQUFDLE9BQU8sRUFDYixLQUFLLENBQUMsZ0JBQWdCLEVBQ3RCLElBQUksQ0FBQyx5Q0FBeUMsRUFDOUMsSUFBSSxDQUFDLGlDQUFpQyxFQUN0QyxLQUFLLENBQUMsVUFBVSxDQUNqQixDQUFDO1lBRUosSUFBSSxDQUFDLG1CQUFtQjtnQkFDdEIsMkVBQW9DLENBQUMscUNBQXFDLENBQ3hFLElBQUksRUFDSixLQUFLLENBQUMseUJBQXlCLENBQUMsYUFBYSxFQUM3QyxLQUFLLENBQUMsa0JBQWtCLEVBQ3hCLEtBQUssQ0FBQyxPQUFPLEVBQ2IsSUFBSSxDQUFDLGtDQUFrQyxFQUN2QyxJQUFJLENBQUMsaUJBQWlCLEVBQ3RCLElBQUksQ0FBQyxzREFBc0QsRUFDM0QsSUFBSSxDQUFDLG1DQUFtQyxFQUN4QyxJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsNkNBQTZDLEVBQ2xELEtBQUssQ0FBQyxVQUFVLENBQ2pCLENBQUM7UUFDTixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLCtCQUFjLENBQzNDLEtBQUssRUFDTCxLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWE7Z0JBQzNCLElBQUk7Z0JBQ0osS0FBSyxDQUFDLE9BQU87Z0JBQ2IscUJBQXFCO2dCQUNyQixLQUFLLENBQUMsVUFBVSxFQUNsQjtnQkFDRSxrQkFBa0IsRUFDaEIsS0FBSyxDQUFDLGtCQUFrQjtvQkFDeEIsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsd0JBQXdCO29CQUN2RSxLQUFLLENBQUMsVUFBVTtnQkFDbEIsU0FBUyxFQUFFLDBCQUFTLENBQUMsS0FBSyxDQUN4QiwwQkFBUyxDQUFDLEtBQUssQ0FDYixJQUFJLENBQUMsa0NBQWtDLEVBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsQ0FDdkIsRUFDRCwwQkFBUyxDQUFDLEtBQUssQ0FDYixJQUFJLENBQUMsbUNBQW1DLEVBQ3hDLElBQUksQ0FBQyxZQUFZLENBQ2xCLENBQ0Y7Z0JBQ0QsY0FBYyxFQUFFLEtBQUs7YUFDdEIsQ0FDRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7Q0FDRjtBQTdJRCx3RkE2SUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQge1xuICBJQWxhcm0sXG4gIENmbkluc2lnaHRSdWxlLFxuICBDb21wb3NpdGVBbGFybSxcbiAgQWxhcm1SdWxlLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEF2YWlsYWJpbGl0eUFuZExhdGVuY3lBbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IEJhc2VPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9CYXNlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzIH0gZnJvbSAnLi9wcm9wcy9TZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzJztcblxuLyoqXG4gKiBUaGUgc2VydmVyIHNpZGUgYWxhcm1zIGFuZCBydWxlcyBmb3IgYW4gb3BlcmF0aW9uIGluIGFuIEF2YWlsYWJpbGl0eSBab25lXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1xuICBleHRlbmRzIEJhc2VPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzXG4gIGltcGxlbWVudHMgSVNlcnZlclNpZGVPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzIHtcbiAgLyoqXG4gICAqIEFsYXJtIHRoYXQgdHJpZ2dlcnMgaWYgZWl0aGVyIGxhdGVuY3kgb3IgYXZhaWxhYmlsaXR5IGJyZWFjaCB0aGUgc3BlY2lmaWVkXG4gICAqIHRocmVzaG9sZCBpbiB0aGlzIEFaIGFuZCB0aGUgQVogaXMgYW4gb3V0bGllciBmb3IgZmF1bHRzIG9yIGxhdGVuY3lcbiAgICovXG4gIGlzb2xhdGVkSW1wYWN0QWxhcm06IElBbGFybTtcblxuICAvKipcbiAgICogQWxhcm0gaW5kaWNhdGluZyB0aGF0IHRoZXJlIGFyZSBtdWx0aXBsZSBpbnN0YW5jZXMgcHJvZHVjaW5nIGZhdWx0cyBpblxuICAgKiB0aGlzIEFaIGluZGljYXRpbmcgdGhlIGZhdWx0IHJhdGUgaXMgbm90IGJlaW5nIGNhdXNlZCBieSBhIHNpbmdsZSBpbnN0YW5jZVxuICAgKi9cbiAgbXVsdGlwbGVJbnN0YW5jZXNQcm9kdWNpbmdGYXVsdHNJblRoaXNBdmFpbGFiaWxpdHlab25lPzogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBBbGFybSBpbmRpY2F0aW5nIHRoYXQgdGhlcmUgYXJlIG11bHRpcGxlIGluc3RhbmNlcyBwcm9kdWNpbmcgaGlnaFxuICAgKiBsYXRlbmN5IHJlc3BvbnNlcyBpbiB0aGlzIEFaIGluZGljYXRpbmcgdGhlIGxhdGVuY3kgaXMgbm90IGJlaW5nXG4gICAqIGNhdXNlZCBieSBhIHNpbmdsZSBpbnN0YW5jZVxuICAgKi9cbiAgbXVsdGlwbGVJbnN0YW5jZXNQcm9kdWNpbmdIaWdoTGF0ZW5jeUluVGhpc0FaPzogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBJbnNpZ2h0IHJ1bGUgdGhhdCBtZWFzdXJlcyB0aGUgbnVtYmVyIG9mIGluc3RhbmNlcyBjb250cmlidXRpbmcgdG8gaGlnaCBsYXRlbmN5IGluIHRoaXMgQVpcbiAgICovXG4gIGluc3RhbmNlQ29udHJpYnV0b3JzVG9IaWdoTGF0ZW5jeUluVGhpc0FaPzogQ2ZuSW5zaWdodFJ1bGU7XG5cbiAgLyoqXG4gICAqIEluc2lnaHQgcnVsZSB0aGF0IG1lYXN1cmVzIHRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIGNvbnRyaWJ1dGluZyB0byBmYXVsdHMgaW4gdGhpcyBBWlxuICAgKi9cbiAgaW5zdGFuY2VDb250cmlidXRvcnNUb0ZhdWx0c0luVGhpc0FaPzogQ2ZuSW5zaWdodFJ1bGU7XG5cbiAgLyoqXG4gICAqIEluc2lnaHQgcnVsZSB0aGF0IGlzIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIGluIHRoaXMgcGFydGljdWxhciBBWiB0aGF0IGlzIHVzZWQgd2l0aCBtZXRyaWMgbWF0aCB0byBjYWxjdWxhdGVcbiAgICogdGhlIHBlcmNlbnQgb2YgaW5zdGFuY2VzIGNvbnRyaWJ1dGluZyB0byBsYXRlbmN5IG9yIGZhdWx0c1xuICAgKi9cbiAgaW5zdGFuY2VzSGFuZGxpbmdSZXF1ZXN0c0luVGhpc0FaPzogQ2ZuSW5zaWdodFJ1bGU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIGlmIChcbiAgICAgIHByb3BzLmNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHByb3BzLmNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzICE9IG51bGxcbiAgICApIHtcbiAgICAgIHRoaXMuaW5zdGFuY2VzSGFuZGxpbmdSZXF1ZXN0c0luVGhpc0FaID1cbiAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVNlcnZlclNpZGVJbnN0YW5jZXNIYW5kbGluZ1JlcXVlc3RzSW5UaGlzQVpSdWxlKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscy5vcGVyYXRpb25OYW1lLFxuICAgICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBwcm9wcy5jb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscyxcbiAgICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICAgIHByb3BzLm5hbWVTdWZmaXgsXG4gICAgICAgICk7XG4gICAgICB0aGlzLmluc3RhbmNlQ29udHJpYnV0b3JzVG9GYXVsdHNJblRoaXNBWiA9XG4gICAgICAgIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lBbGFybXNBbmRSdWxlcy5jcmVhdGVTZXJ2ZXJTaWRlSW5zdGFuY2VGYXVsdENvbnRyaWJ1dG9yc0luVGhpc0FaUnVsZShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMub3BlcmF0aW9uTmFtZSxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgcHJvcHMuY29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMsXG4gICAgICAgICAgcHJvcHMuY291bnRlcixcbiAgICAgICAgICBwcm9wcy5uYW1lU3VmZml4LFxuICAgICAgICApO1xuICAgICAgdGhpcy5tdWx0aXBsZUluc3RhbmNlc1Byb2R1Y2luZ0ZhdWx0c0luVGhpc0F2YWlsYWJpbGl0eVpvbmUgPVxuICAgICAgICBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXMuY3JlYXRlU2VydmVyU2lkZVpvbmFsTW9yZVRoYW5PbmVJbnN0YW5jZVByb2R1Y2luZ0ZhdWx0c0FsYXJtKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgcHJvcHMuY291bnRlcixcbiAgICAgICAgICBwcm9wcy5vdXRsaWVyVGhyZXNob2xkLFxuICAgICAgICAgIHRoaXMuaW5zdGFuY2VDb250cmlidXRvcnNUb0ZhdWx0c0luVGhpc0FaLFxuICAgICAgICAgIHRoaXMuaW5zdGFuY2VzSGFuZGxpbmdSZXF1ZXN0c0luVGhpc0FaLFxuICAgICAgICAgIHByb3BzLm5hbWVTdWZmaXgsXG4gICAgICAgICk7XG4gICAgICB0aGlzLmluc3RhbmNlQ29udHJpYnV0b3JzVG9IaWdoTGF0ZW5jeUluVGhpc0FaID1cbiAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVNlcnZlclNpZGVJbnN0YW5jZUhpZ2hMYXRlbmN5Q29udHJpYnV0b3JzSW5UaGlzQVpSdWxlKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgcHJvcHMubGF0ZW5jeU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIHByb3BzLmNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzLFxuICAgICAgICAgIHByb3BzLmNvdW50ZXIsXG4gICAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICAgKTtcbiAgICAgIHRoaXMubXVsdGlwbGVJbnN0YW5jZXNQcm9kdWNpbmdIaWdoTGF0ZW5jeUluVGhpc0FaID1cbiAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVNlcnZlclNpZGVab25hbE1vcmVUaGFuT25lSW5zdGFuY2VQcm9kdWNpbmdIaWdoTGF0ZW5jeUFsYXJtKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgcHJvcHMubGF0ZW5jeU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIHByb3BzLmNvdW50ZXIsXG4gICAgICAgICAgcHJvcHMub3V0bGllclRocmVzaG9sZCxcbiAgICAgICAgICB0aGlzLmluc3RhbmNlQ29udHJpYnV0b3JzVG9IaWdoTGF0ZW5jeUluVGhpc0FaLFxuICAgICAgICAgIHRoaXMuaW5zdGFuY2VzSGFuZGxpbmdSZXF1ZXN0c0luVGhpc0FaLFxuICAgICAgICAgIHByb3BzLm5hbWVTdWZmaXgsXG4gICAgICAgICk7XG5cbiAgICAgIHRoaXMuaXNvbGF0ZWRJbXBhY3RBbGFybSA9XG4gICAgICAgIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lBbGFybXNBbmRSdWxlcy5jcmVhdGVTZXJ2ZXJTaWRlSXNvbGF0ZWRBWkltcGFjdEFsYXJtKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscy5vcGVyYXRpb25OYW1lLFxuICAgICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZUlzT3V0bGllckZvckZhdWx0cyxcbiAgICAgICAgICB0aGlzLmF2YWlsYWJpbGl0eUFsYXJtLFxuICAgICAgICAgIHRoaXMubXVsdGlwbGVJbnN0YW5jZXNQcm9kdWNpbmdGYXVsdHNJblRoaXNBdmFpbGFiaWxpdHlab25lLFxuICAgICAgICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZUlzT3V0bGllckZvckxhdGVuY3ksXG4gICAgICAgICAgdGhpcy5sYXRlbmN5QWxhcm0sXG4gICAgICAgICAgdGhpcy5tdWx0aXBsZUluc3RhbmNlc1Byb2R1Y2luZ0hpZ2hMYXRlbmN5SW5UaGlzQVosXG4gICAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc29sYXRlZEltcGFjdEFsYXJtID0gbmV3IENvbXBvc2l0ZUFsYXJtKFxuICAgICAgICBzY29wZSxcbiAgICAgICAgcHJvcHMub3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgK1xuICAgICAgICAgICdBWicgK1xuICAgICAgICAgIHByb3BzLmNvdW50ZXIgK1xuICAgICAgICAgICdJc29sYXRlZEltcGFjdEFsYXJtJyArXG4gICAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICAge1xuICAgICAgICAgIGNvbXBvc2l0ZUFsYXJtTmFtZTpcbiAgICAgICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCArXG4gICAgICAgICAgICBgLSR7cHJvcHMub3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUudG9Mb3dlckNhc2UoKX0taXNvbGF0ZWQtaW1wYWN0LWFsYXJtYCArXG4gICAgICAgICAgICBwcm9wcy5uYW1lU3VmZml4LFxuICAgICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFueU9mKFxuICAgICAgICAgICAgQWxhcm1SdWxlLmFsbE9mKFxuICAgICAgICAgICAgICB0aGlzLmF2YWlsYWJpbGl0eVpvbmVJc091dGxpZXJGb3JGYXVsdHMsXG4gICAgICAgICAgICAgIHRoaXMuYXZhaWxhYmlsaXR5QWxhcm0sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgQWxhcm1SdWxlLmFsbE9mKFxuICAgICAgICAgICAgICB0aGlzLmF2YWlsYWJpbGl0eVpvbmVJc091dGxpZXJGb3JMYXRlbmN5LFxuICAgICAgICAgICAgICB0aGlzLmxhdGVuY3lBbGFybSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKSxcbiAgICAgICAgICBhY3Rpb25zRW5hYmxlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWxhcm1zYW5kcnVsZXMvU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUN0QywrREFLb0M7QUFFcEMsaUdBQThGO0FBQzlGLHlGQUFzRjtBQUd0RixzRkFBbUY7QUFFbkY7O0dBRUc7QUFDSCxNQUFhLHNDQUNYLFNBQVEsbUVBQWdDO0lBK0N4QyxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFrRDtRQUVsRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLEtBQUssQ0FBQyx5QkFBeUIsSUFBSSxxREFBeUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN4RSxJQUFJLENBQUMsa0NBQWtDO2dCQUNyQywyRUFBb0MsQ0FBQyxzQ0FBc0MsQ0FDekUsSUFBSSxFQUNKLEtBQUssQ0FBQyx5QkFBeUIsRUFDL0IsS0FBSyxDQUFDLGtCQUFrQixFQUN4QixLQUFLLENBQUMsT0FBTyxFQUNiLEtBQUssQ0FBQyxnQkFBZ0IsRUFDdEIsS0FBSyxDQUFDLFVBQVUsQ0FDakIsQ0FBQztZQUNKLElBQUksQ0FBQyxtQ0FBbUM7Z0JBQ3RDLDJFQUFvQyxDQUFDLHdDQUF3QyxDQUMzRSxJQUFJLEVBQ0osS0FBSyxDQUFDLG9CQUFvQixFQUMxQixLQUFLLENBQUMsa0JBQWtCLEVBQ3hCLEtBQUssQ0FBQyxPQUFPLEVBQ2IsS0FBSyxDQUFDLGdCQUFnQixFQUN0QixLQUFLLENBQUMsVUFBVSxDQUNqQixDQUFDO1FBQ04sQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsa0NBQWtDO2dCQUNyQywyRUFBb0MsQ0FBQyxnQ0FBZ0MsQ0FDbkUsSUFBSSxFQUNKLEtB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SUFDSCxDQUFDO0NBQ0Y7QUE3TUQsd0ZBNk1DIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHtcbiAgSUFsYXJtLFxuICBDZm5JbnNpZ2h0UnVsZSxcbiAgQ29tcG9zaXRlQWxhcm0sXG4gIEFsYXJtUnVsZSxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0F2YWlsYWJpbGl0eUFuZExhdGVuY3lBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBCYXNlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgSVNlcnZlclNpZGVPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9JU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyB9IGZyb20gJy4vcHJvcHMvU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyc7XG5pbXBvcnQgeyBPdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtIH0gZnJvbSAnLi4vdXRpbGl0aWVzL091dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0nO1xuXG4vKipcbiAqIFRoZSBzZXJ2ZXIgc2lkZSBhbGFybXMgYW5kIHJ1bGVzIGZvciBhbiBvcGVyYXRpb24gaW4gYW4gQXZhaWxhYmlsaXR5IFpvbmVcbiAqL1xuZXhwb3J0IGNsYXNzIFNlcnZlclNpZGVPcGVyYXRpb25ab25hbEFsYXJtc0FuZFJ1bGVzXG4gIGV4dGVuZHMgQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNcbiAgaW1wbGVtZW50cyBJU2VydmVyU2lkZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXMge1xuICAvKipcbiAgICogQWxhcm0gdGhhdCB0cmlnZ2VycyBpZiBlaXRoZXIgbGF0ZW5jeSBvciBhdmFpbGFiaWxpdHkgYnJlYWNoIHRoZSBzcGVjaWZpZWRcbiAgICogdGhyZXNob2xkIGluIHRoaXMgQVogYW5kIHRoZSBBWiBpcyBhbiBvdXRsaWVyIGZvciBmYXVsdHMgb3IgbGF0ZW5jeVxuICAgKi9cbiAgaXNvbGF0ZWRJbXBhY3RBbGFybTogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBBbGFybSBpbmRpY2F0aW5nIHRoYXQgdGhlcmUgYXJlIG11bHRpcGxlIGluc3RhbmNlcyBwcm9kdWNpbmcgZmF1bHRzIGluXG4gICAqIHRoaXMgQVogaW5kaWNhdGluZyB0aGUgZmF1bHQgcmF0ZSBpcyBub3QgYmVpbmcgY2F1c2VkIGJ5IGEgc2luZ2xlIGluc3RhbmNlXG4gICAqL1xuICBtdWx0aXBsZUluc3RhbmNlc1Byb2R1Y2luZ0ZhdWx0c0luVGhpc0F2YWlsYWJpbGl0eVpvbmU/OiBJQWxhcm07XG5cbiAgLyoqXG4gICAqIEFsYXJtIGluZGljYXRpbmcgdGhhdCB0aGVyZSBhcmUgbXVsdGlwbGUgaW5zdGFuY2VzIHByb2R1Y2luZyBoaWdoXG4gICAqIGxhdGVuY3kgcmVzcG9uc2VzIGluIHRoaXMgQVogaW5kaWNhdGluZyB0aGUgbGF0ZW5jeSBpcyBub3QgYmVpbmdcbiAgICogY2F1c2VkIGJ5IGEgc2luZ2xlIGluc3RhbmNlXG4gICAqL1xuICBtdWx0aXBsZUluc3RhbmNlc1Byb2R1Y2luZ0hpZ2hMYXRlbmN5SW5UaGlzQVo/OiBJQWxhcm07XG5cbiAgLyoqXG4gICAqIEluc2lnaHQgcnVsZSB0aGF0IG1lYXN1cmVzIHRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIGNvbnRyaWJ1dGluZyB0byBoaWdoIGxhdGVuY3kgaW4gdGhpcyBBWlxuICAgKi9cbiAgaW5zdGFuY2VDb250cmlidXRvcnNUb0hpZ2hMYXRlbmN5SW5UaGlzQVo/OiBDZm5JbnNpZ2h0UnVsZTtcblxuICAvKipcbiAgICogSW5zaWdodCBydWxlIHRoYXQgbWVhc3VyZXMgdGhlIG51bWJlciBvZiBpbnN0YW5jZXMgY29udHJpYnV0aW5nIHRvIGZhdWx0cyBpbiB0aGlzIEFaXG4gICAqL1xuICBpbnN0YW5jZUNvbnRyaWJ1dG9yc1RvRmF1bHRzSW5UaGlzQVo/OiBDZm5JbnNpZ2h0UnVsZTtcblxuICAvKipcbiAgICogSW5zaWdodCBydWxlIHRoYXQgaXMgdXNlZCB0byBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBpbnN0YW5jZXMgaW4gdGhpcyBwYXJ0aWN1bGFyIEFaIHRoYXQgaXMgdXNlZCB3aXRoIG1ldHJpYyBtYXRoIHRvIGNhbGN1bGF0ZVxuICAgKiB0aGUgcGVyY2VudCBvZiBpbnN0YW5jZXMgY29udHJpYnV0aW5nIHRvIGxhdGVuY3kgb3IgZmF1bHRzXG4gICAqL1xuICBpbnN0YW5jZXNIYW5kbGluZ1JlcXVlc3RzSW5UaGlzQVo/OiBDZm5JbnNpZ2h0UnVsZTtcblxuICAvKipcbiAgICogQWxhcm0gdGhhdCBpbmRpY2F0ZXMgdGhhdCB0aGlzIEFaIGlzIGFuIG91dGxpZXIgZm9yIGZhdWx0IHJhdGVcbiAgICovXG4gIGF2YWlsYWJpbGl0eVpvbmVJc091dGxpZXJGb3JGYXVsdHM6IElBbGFybTtcblxuICAvKipcbiAgICogQWxhcm0gdGhhdCBpbmRpY2F0ZXMgdGhpcyBBWiBpcyBhbiBvdXRsaWVyIGZvciBoaWdoIGxhdGVuY3lcbiAgICovXG4gIGF2YWlsYWJpbGl0eVpvbmVJc091dGxpZXJGb3JMYXRlbmN5OiBJQWxhcm07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBTZXJ2ZXJTaWRlT3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIGlmIChwcm9wcy5vdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtID09IE91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0uU1RBVElDKSB7XG4gICAgICB0aGlzLmF2YWlsYWJpbGl0eVpvbmVJc091dGxpZXJGb3JGYXVsdHMgPVxuICAgICAgICBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXMuY3JlYXRlWm9uYWxGYXVsdFJhdGVTdGF0aWNPdXRsaWVyQWxhcm0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICAgIHByb3BzLm91dGxpZXJUaHJlc2hvbGQsXG4gICAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICAgKTtcbiAgICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZUlzT3V0bGllckZvckxhdGVuY3kgPVxuICAgICAgICBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXMuY3JlYXRlWm9uYWxIaWdoTGF0ZW5jeVN0YXRpY091dGxpZXJBbGFybShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIHByb3BzLmxhdGVuY3lNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICAgIHByb3BzLm91dGxpZXJUaHJlc2hvbGQsXG4gICAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hdmFpbGFiaWxpdHlab25lSXNPdXRsaWVyRm9yRmF1bHRzID1cbiAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVpvbmFsRmF1bHRSYXRlT3V0bGllckFsYXJtKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgcHJvcHMub3BlcmF0aW9uLnNlcnZpY2UuYXZhaWxhYmlsaXR5Wm9uZU5hbWVzLm1hcCgoYXopID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcy5hek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihcbiAgICAgICAgICAgICAgYXouc3Vic3RyaW5nKGF6Lmxlbmd0aCAtIDEpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBwcm9wcy5vdXRsaWVyVGhyZXNob2xkLFxuICAgICAgICAgIHByb3BzLm91dGxpZXJEZXRlY3Rpb25GdW5jdGlvbiEsXG4gICAgICAgICAgcHJvcHMub3V0bGllckRldGVjdGlvbkFsZ29yaXRobSxcbiAgICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICAgIHByb3BzLm5hbWVTdWZmaXgsXG4gICAgICAgICk7XG4gICAgICB0aGlzLmF2YWlsYWJpbGl0eVpvbmVJc091dGxpZXJGb3JMYXRlbmN5ID1cbiAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVpvbmFsSGlnaExhdGVuY3lPdXRsaWVyQWxhcm0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBwcm9wcy5sYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgcHJvcHMub3BlcmF0aW9uLnNlcnZpY2UuYXZhaWxhYmlsaXR5Wm9uZU5hbWVzLm1hcCgoYXopID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwcm9wcy5hek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihcbiAgICAgICAgICAgICAgYXouc3Vic3RyaW5nKGF6Lmxlbmd0aCAtIDEpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBwcm9wcy5vdXRsaWVyVGhyZXNob2xkLFxuICAgICAgICAgIHByb3BzLm91dGxpZXJEZXRlY3Rpb25GdW5jdGlvbiEsXG4gICAgICAgICAgcHJvcHMub3V0bGllckRldGVjdGlvbkFsZ29yaXRobSxcbiAgICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICAgIHByb3BzLm5hbWVTdWZmaXgsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcHJvcHMuY29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgcHJvcHMuY29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMgIT0gbnVsbFxuICAgICkge1xuICAgICAgdGhpcy5pbnN0YW5jZXNIYW5kbGluZ1JlcXVlc3RzSW5UaGlzQVogPVxuICAgICAgICBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXMuY3JlYXRlU2VydmVyU2lkZUluc3RhbmNlc0hhbmRsaW5nUmVxdWVzdHNJblRoaXNBWlJ1bGUoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLm9wZXJhdGlvbk5hbWUsXG4gICAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIHByb3BzLmNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzLFxuICAgICAgICAgIHByb3BzLmNvdW50ZXIsXG4gICAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICAgKTtcbiAgICAgIHRoaXMuaW5zdGFuY2VDb250cmlidXRvcnNUb0ZhdWx0c0luVGhpc0FaID1cbiAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVNlcnZlclNpZGVJbnN0YW5jZUZhdWx0Q29udHJpYnV0b3JzSW5UaGlzQVpSdWxlKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscy5vcGVyYXRpb25OYW1lLFxuICAgICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBwcm9wcy5jb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscyxcbiAgICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICAgIHByb3BzLm5hbWVTdWZmaXgsXG4gICAgICAgICk7XG4gICAgICB0aGlzLm11bHRpcGxlSW5zdGFuY2VzUHJvZHVjaW5nRmF1bHRzSW5UaGlzQXZhaWxhYmlsaXR5Wm9uZSA9XG4gICAgICAgIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lBbGFybXNBbmRSdWxlcy5jcmVhdGVTZXJ2ZXJTaWRlWm9uYWxNb3JlVGhhbk9uZUluc3RhbmNlUHJvZHVjaW5nRmF1bHRzQWxhcm0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgICBwcm9wcy5jb3VudGVyLFxuICAgICAgICAgIHByb3BzLm91dGxpZXJUaHJlc2hvbGQsXG4gICAgICAgICAgdGhpcy5pbnN0YW5jZUNvbnRyaWJ1dG9yc1RvRmF1bHRzSW5UaGlzQVosXG4gICAgICAgICAgdGhpcy5pbnN0YW5jZXNIYW5kbGluZ1JlcXVlc3RzSW5UaGlzQVosXG4gICAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICAgKTtcbiAgICAgIHRoaXMuaW5zdGFuY2VDb250cmlidXRvcnNUb0hpZ2hMYXRlbmN5SW5UaGlzQVogPVxuICAgICAgICBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXMuY3JlYXRlU2VydmVyU2lkZUluc3RhbmNlSGlnaExhdGVuY3lDb250cmlidXRvcnNJblRoaXNBWlJ1bGUoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBwcm9wcy5sYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgcHJvcHMuY29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMsXG4gICAgICAgICAgcHJvcHMuY291bnRlcixcbiAgICAgICAgICBwcm9wcy5uYW1lU3VmZml4LFxuICAgICAgICApO1xuICAgICAgdGhpcy5tdWx0aXBsZUluc3RhbmNlc1Byb2R1Y2luZ0hpZ2hMYXRlbmN5SW5UaGlzQVogPVxuICAgICAgICBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5QWxhcm1zQW5kUnVsZXMuY3JlYXRlU2VydmVyU2lkZVpvbmFsTW9yZVRoYW5PbmVJbnN0YW5jZVByb2R1Y2luZ0hpZ2hMYXRlbmN5QWxhcm0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBwcm9wcy5sYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgICAgcHJvcHMuY291bnRlcixcbiAgICAgICAgICBwcm9wcy5vdXRsaWVyVGhyZXNob2xkLFxuICAgICAgICAgIHRoaXMuaW5zdGFuY2VDb250cmlidXRvcnNUb0hpZ2hMYXRlbmN5SW5UaGlzQVosXG4gICAgICAgICAgdGhpcy5pbnN0YW5jZXNIYW5kbGluZ1JlcXVlc3RzSW5UaGlzQVosXG4gICAgICAgICAgcHJvcHMubmFtZVN1ZmZpeCxcbiAgICAgICAgKTtcblxuICAgICAgdGhpcy5pc29sYXRlZEltcGFjdEFsYXJtID1cbiAgICAgICAgQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeUFsYXJtc0FuZFJ1bGVzLmNyZWF0ZVNlcnZlclNpZGVJc29sYXRlZEFaSW1wYWN0QWxhcm0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLm9wZXJhdGlvbk5hbWUsXG4gICAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgIHByb3BzLmNvdW50ZXIsXG4gICAgICAgICAgdGhpcy5hdmFpbGFiaWxpdHlab25lSXNPdXRsaWVyRm9yRmF1bHRzLFxuICAgICAgICAgIHRoaXMuYXZhaWxhYmlsaXR5QWxhcm0sXG4gICAgICAgICAgdGhpcy5tdWx0aXBsZUluc3RhbmNlc1Byb2R1Y2luZ0ZhdWx0c0luVGhpc0F2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgICAgdGhpcy5hdmFpbGFiaWxpdHlab25lSXNPdXRsaWVyRm9yTGF0ZW5jeSxcbiAgICAgICAgICB0aGlzLmxhdGVuY3lBbGFybSxcbiAgICAgICAgICB0aGlzLm11bHRpcGxlSW5zdGFuY2VzUHJvZHVjaW5nSGlnaExhdGVuY3lJblRoaXNBWixcbiAgICAgICAgICBwcm9wcy5uYW1lU3VmZml4LFxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzb2xhdGVkSW1wYWN0QWxhcm0gPSBuZXcgQ29tcG9zaXRlQWxhcm0oXG4gICAgICAgIHNjb3BlLFxuICAgICAgICBwcm9wcy5vcGVyYXRpb24ub3BlcmF0aW9uTmFtZSArXG4gICAgICAgICAgJ0FaJyArXG4gICAgICAgICAgcHJvcHMuY291bnRlciArXG4gICAgICAgICAgJ0lzb2xhdGVkSW1wYWN0QWxhcm0nICtcbiAgICAgICAgICBwcm9wcy5uYW1lU3VmZml4LFxuICAgICAgICB7XG4gICAgICAgICAgY29tcG9zaXRlQWxhcm1OYW1lOlxuICAgICAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkICtcbiAgICAgICAgICAgIGAtJHtwcm9wcy5vcGVyYXRpb24ub3BlcmF0aW9uTmFtZS50b0xvd2VyQ2FzZSgpfS1pc29sYXRlZC1pbXBhY3QtYWxhcm1gICtcbiAgICAgICAgICAgIHByb3BzLm5hbWVTdWZmaXgsXG4gICAgICAgICAgYWxhcm1SdWxlOiBBbGFybVJ1bGUuYW55T2YoXG4gICAgICAgICAgICBBbGFybVJ1bGUuYWxsT2YoXG4gICAgICAgICAgICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZUlzT3V0bGllckZvckZhdWx0cyxcbiAgICAgICAgICAgICAgdGhpcy5hdmFpbGFiaWxpdHlBbGFybSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBBbGFybVJ1bGUuYWxsT2YoXG4gICAgICAgICAgICAgIHRoaXMuYXZhaWxhYmlsaXR5Wm9uZUlzT3V0bGllckZvckxhdGVuY3ksXG4gICAgICAgICAgICAgIHRoaXMubGF0ZW5jeUFsYXJtLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApLFxuICAgICAgICAgIGFjdGlvbnNFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -6,9 +6,9 @@ exports.ServiceAlarmsAndRules = void 0;
6
6
  const aws_cdk_lib_1 = require("aws-cdk-lib");
7
7
  const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
8
8
  const constructs_1 = require("constructs");
9
- const AvailabilityAndLatencyMetrics_1 = require("../metrics/AvailabilityAndLatencyMetrics");
10
9
  const RegionalAvailabilityMetrics_1 = require("../metrics/RegionalAvailabilityMetrics");
11
10
  const AvailabilityMetricType_1 = require("../utilities/AvailabilityMetricType");
11
+ const MetricsHelper_1 = require("../utilities/MetricsHelper");
12
12
  /**
13
13
  * Service level alarms and rules using critical operations
14
14
  */
@@ -58,7 +58,7 @@ class ServiceAlarmsAndRules extends constructs_1.Construct {
58
58
  props.service.operations
59
59
  .filter((x) => x.critical == true)
60
60
  .forEach((x) => {
61
- keyPrefix = AvailabilityAndLatencyMetrics_1.AvailabilityAndLatencyMetrics.nextChar(keyPrefix);
61
+ keyPrefix = MetricsHelper_1.MetricsHelper.nextChar(keyPrefix);
62
62
  regionalOperationFaultCountMetrics[keyPrefix] =
63
63
  RegionalAvailabilityMetrics_1.RegionalAvailabilityMetrics.createRegionalAvailabilityMetric({
64
64
  label: x.operationName + ' fault count',
@@ -163,4 +163,4 @@ class ServiceAlarmsAndRules extends constructs_1.Construct {
163
163
  }
164
164
  }
165
165
  exports.ServiceAlarmsAndRules = ServiceAlarmsAndRules;
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmljZUFsYXJtc0FuZFJ1bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FsYXJtc2FuZHJ1bGVzL1NlcnZpY2VBbGFybXNBbmRSdWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBQ3RDLDZDQUFpQztBQUNqQywrREFRb0M7QUFDcEMsMkNBQXVDO0FBS3ZDLDRGQUF5RjtBQUN6Rix3RkFBcUY7QUFFckYsZ0ZBQTZFO0FBRTdFOztHQUVHO0FBQ0gsTUFBYSxxQkFDWCxTQUFRLHNCQUFTO0lBK0NqQixZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWlDO1FBQ3pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBRTdCLElBQUksa0JBQWtCLEdBQWEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVO2FBQ3hELE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUM7YUFDakMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDL0IsSUFBSSxPQUFPLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxrQ0FBa0MsR0FBRyxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLG1DQUFtQyxHQUFHLEVBQUUsQ0FBQztRQUU5QyxJQUFJLG1CQUFtQixHQUFhLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUN6RSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ0osT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLDRDQUE0QyxDQUNoRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQzFCLENB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TSxDQUFDLE1BQU0sQ0FDZCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLE1BQU0sQ0FDckQsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtnQkFDekIsSUFBSSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDekMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDeEIsQ0FBQztnQkFFRCxPQUFPLFFBQVEsQ0FBQztZQUNsQixDQUFDLEVBQ0QsRUFBaUQsQ0FDbEQsQ0FDRjtpQkFDRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBQztpQkFDOUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FDbkM7U0FDRixDQUNGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFsVEQsc0RBa1RDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgRm4gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBBbGFybSxcbiAgQWxhcm1SdWxlLFxuICBDb21wYXJpc29uT3BlcmF0b3IsXG4gIENvbXBvc2l0ZUFsYXJtLFxuICBJQWxhcm0sXG4gIElNZXRyaWMsXG4gIE1hdGhFeHByZXNzaW9uLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElDYW5hcnlPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9JQ2FuYXJ5T3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lPcGVyYXRpb25BbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBJU2VydmljZUFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi9JU2VydmljZUFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IFNlcnZpY2VBbGFybXNBbmRSdWxlc1Byb3BzIH0gZnJvbSAnLi9wcm9wcy9TZXJ2aWNlQWxhcm1zQW5kUnVsZXNQcm9wcyc7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcyB9IGZyb20gJy4uL21ldHJpY3MvQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY3MnO1xuaW1wb3J0IHsgUmVnaW9uYWxBdmFpbGFiaWxpdHlNZXRyaWNzIH0gZnJvbSAnLi4vbWV0cmljcy9SZWdpb25hbEF2YWlsYWJpbGl0eU1ldHJpY3MnO1xuaW1wb3J0IHsgSVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9JU2VydmljZSc7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlIH0gZnJvbSAnLi4vdXRpbGl0aWVzL0F2YWlsYWJpbGl0eU1ldHJpY1R5cGUnO1xuXG4vKipcbiAqIFNlcnZpY2UgbGV2ZWwgYWxhcm1zIGFuZCBydWxlcyB1c2luZyBjcml0aWNhbCBvcGVyYXRpb25zXG4gKi9cbmV4cG9ydCBjbGFzcyBTZXJ2aWNlQWxhcm1zQW5kUnVsZXNcbiAgZXh0ZW5kcyBDb25zdHJ1Y3RcbiAgaW1wbGVtZW50cyBJU2VydmljZUFsYXJtc0FuZFJ1bGVzIHtcbiAgLyoqXG4gICAqIFRoZSBzZXJ2aWNlIHRoZXNlIGFsYXJtcyBhbmQgcnVsZXMgYXJlIGZvclxuICAgKi9cbiAgc2VydmljZTogSVNlcnZpY2U7XG5cbiAgLyoqXG4gICAqIFRoZSB6b25hbCBhZ2dyZWdhdGUgaXNvbGF0ZWQgaW1wYWN0IGFsYXJtcy4gVGhlcmUgaXMgMSBhbGFybSBwZXIgQVogdGhhdFxuICAgKiB0cmlnZ2VycyBmb3IgYXZhaWxhYmlsaXR5IG9yIGxhdGVuY3kgaW1wYWN0IHRvIGFueSBjcml0aWNhbCBvcGVyYXRpb24gaW4gdGhhdCBBWlxuICAgKiB0aGF0IGluZGljYXRlcyBpdCBoYXMgaXNvbGF0ZWQgaW1wYWN0IGFzIG1lYXN1cmVkIGJ5IGNhbmFyaWVzIG9yIHNlcnZlci1zaWRlLlxuICAgKi9cbiAgem9uYWxBZ2dyZWdhdGVJc29sYXRlZEltcGFjdEFsYXJtczogSUFsYXJtW107XG5cbiAgLyoqXG4gICAqIFRoZSB6b25hbCBzZXJ2ZXItc2lkZSBpc29sYXRlZCBpbXBhY3QgYWxhcm1zLiBUaGVyZSBpcyAxIGFsYXJtIHBlciBBWiB0aGF0IHRyaWdnZXJzXG4gICAqIG9uIGF2YWlsYWJpbGl0eSBvciBhdGVuY3kgaW1wYWN0IHRvIGFueSBjcml0aWNhbCBvcGVyYXRpb24gaW4gdGhhdCBBWi4gVGhlc2UgYXJlIHVzZWZ1bFxuICAgKiBmb3IgZGVwbG95bWVudCBtb25pdG9yaW5nIHRvIG5vdCBpbmFkdmVydGVudGx5IGZhaWwgd2hlbiBhIGNhbmFyeSBjYW4ndCBjb250YWN0IGFuIEFaXG4gICAqIGR1cmluZyBhIGRlcGxveW1lbnQuXG4gICAqL1xuICB6b25hbFNlcnZlclNpZGVJc29sYXRlZEltcGFjdEFsYXJtczogSUFsYXJtW107XG5cbiAgLyoqXG4gICAqIEFuIGFsYXJtIGZvciByZWdpb25hbCBhdmFpbGFiaWxpdHkgb3IgbGF0ZW5jeSBpbXBhY3Qgb2YgYW55IGNyaXRpY2FsIG9wZXJhdGlvbiBhcyBtZWFzdXJlZCBieSB0aGUgY2FuYXJ5LlxuICAgKi9cbiAgcmVnaW9uYWxBdmFpbGFiaWxpdHlPckxhdGVuY3lDYW5hcnlBbGFybT86IElBbGFybTtcblxuICAvKipcbiAgICogQW4gYWxhcm0gZm9yIHJlZ2lvbmFsIGF2YWlsYWJpbGl0eSBpbXBhY3Qgb2YgYW55IGNyaXRpY2FsIG9wZXJhdGlvbiBhcyBtZWFzdXJlZCBieSB0aGUgY2FuYXJ5LlxuICAgKi9cbiAgcmVnaW9uYWxBdmFpbGFiaWxpdHlDYW5hcnlBbGFybT86IElBbGFybTtcblxuICAvKipcbiAgICogQW4gYWxhcm0gZm9yIHJlZ2lvbmFsIGF2YWlsYWJpbGl0eSBvciBsYXRlbmN5IGltcGFjdCBvZiBhbnkgY3JpdGljYWwgb3BlcmF0aW9uIGFzIG1lYXN1cmVkIGJ5IHRoZSBzZXJ2ZXItc2lkZS5cbiAgICovXG4gIHJlZ2lvbmFsQXZhaWxhYmlsaXR5T3JMYXRlbmN5U2VydmVyU2lkZUFsYXJtOiBJQWxhcm07XG5cbiAgLyoqXG4gICAqIEFuIGFsYXJtIGZvciByZWdpb25hbCBhdmFpbGFiaWxpdHkgaW1wYWN0IG9mIGFueSBjcml0aWNhbCBvcGVyYXRpb24gYXMgbWVhc3VyZWQgYnkgdGhlIHNlcnZlci1zaWRlLlxuICAgKi9cbiAgcmVnaW9uYWxBdmFpbGFiaWxpdHlTZXJ2ZXJTaWRlQWxhcm06IElBbGFybTtcblxuICAvKipcbiAgICogQW4gYWxhcm0gZm9yIGZhdWx0IGNvdW50IGV4Y2VlZGluZyBhIHJlZ2lvbmFsIHRocmVzaG9sZCBmb3IgYWxsIGNyaXRpY2FsIG9wZXJhdGlvbnMuXG4gICAqL1xuICByZWdpb25hbEZhdWx0Q291bnRTZXJ2ZXJTaWRlQWxhcm06IElBbGFybTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2VydmljZUFsYXJtc0FuZFJ1bGVzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuc2VydmljZSA9IHByb3BzLnNlcnZpY2U7XG5cbiAgICBsZXQgY3JpdGljYWxPcGVyYXRpb25zOiBzdHJpbmdbXSA9IHByb3BzLnNlcnZpY2Uub3BlcmF0aW9uc1xuICAgICAgLmZpbHRlcigoeCkgPT4geC5jcml0aWNhbCA9PSB0cnVlKVxuICAgICAgLm1hcCgoeCkgPT4geC5vcGVyYXRpb25OYW1lKTtcbiAgICBsZXQgY291bnRlcjogbnVtYmVyID0gMTtcbiAgICB0aGlzLnpvbmFsQWdncmVnYXRlSXNvbGF0ZWRJbXBhY3RBbGFybXMgPSBbXTtcbiAgICB0aGlzLnpvbmFsU2VydmVyU2lkZUlzb2xhdGVkSW1wYWN0QWxhcm1zID0gW107XG5cbiAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZUlkczogc3RyaW5nW10gPSBwcm9wcy5zZXJ2aWNlLmF2YWlsYWJpbGl0eVpvbmVOYW1lcy5tYXAoXG4gICAgICAoeCkgPT4ge1xuICAgICAgICByZXR1cm4gcHJvcHMuYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoXG4gICAgICAgICAgeC5zdWJzdHJpbmcoeC5sZW5ndGggLSAxKSxcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXZhaWxhYmlsaXR5Wm9uZUlkcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVkSWQ6IHN0cmluZyA9IGF2YWlsYWJpbGl0eVpvbmVJZHNbaV07XG5cbiAgICAgIHRoaXMuem9uYWxBZ2dyZWdhdGVJc29sYXRlZEltcGFjdEFsYXJtcy5wdXNoKFxuICAgICAgICBuZXcgQ29tcG9zaXRlQWxhcm0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICAnQVonICsgY291bnRlciArICdTZXJ2aWNlQWdncmVnYXRlSXNvbGF0ZWRJbXBhY3RBbGFybScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29tcG9zaXRlQWxhcm1OYW1lOlxuICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlab25lZElkICtcbiAgICAgICAgICAgICAgJy0nICtcbiAgICAgICAgICAgICAgcHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZS50b0xvd2VyQ2FzZSgpICtcbiAgICAgICAgICAgICAgJy1pc29sYXRlZC1pbXBhY3QtYWdncmVnYXRlLWFsYXJtJyxcbiAgICAgICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFueU9mKFxuICAgICAgICAgICAgICAuLi5PYmplY3QudmFsdWVzKFxuICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHByb3BzLnBlck9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzKS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAoZmlsdGVyZWQsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3JpdGljYWxPcGVyYXRpb25zLmluZGV4T2Yoa2V5KSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHt9IGFzIHsgW2tleTogc3RyaW5nXTogSU9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzIH0sXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKS5tYXAoKHgpID0+IHguYWdncmVnYXRlWm9uYWxBbGFybXNbaV0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9LFxuICAgICAgICApLFxuICAgICAgKTtcblxuICAgICAgdGhpcy56b25hbFNlcnZlclNpZGVJc29sYXRlZEltcGFjdEFsYXJtcy5wdXNoKFxuICAgICAgICBuZXcgQ29tcG9zaXRlQWxhcm0oXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICAnQVonICsgY291bnRlciArICdTZXJ2aWNlU2VydmVyU2lkZUlzb2xhdGVkSW1wYWN0QWxhcm0nLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbXBvc2l0ZUFsYXJtTmFtZTpcbiAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZWRJZCArXG4gICAgICAgICAgICAgICctJyArXG4gICAgICAgICAgICAgIHByb3BzLnNlcnZpY2Uuc2VydmljZU5hbWUudG9Mb3dlckNhc2UoKSArXG4gICAgICAgICAgICAgICctaXNvbGF0ZWQtaW1wYWN0LXNlcnZlci1zaWRlLWFsYXJtJyxcbiAgICAgICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFueU9mKFxuICAgICAgICAgICAgICAuLi5PYmplY3QudmFsdWVzKFxuICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHByb3BzLnBlck9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzKS5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAoZmlsdGVyZWQsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3JpdGljYWxPcGVyYXRpb25zLmluZGV4T2Yoa2V5KSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHt9IGFzIHsgW2tleTogc3RyaW5nXTogSU9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzIH0sXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgKS5tYXAoKHgpID0+IHguc2VydmVyU2lkZVpvbmFsQWxhcm1zTWFwW2F2YWlsYWJpbGl0eVpvbmVkSWRdKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICk7XG5cbiAgICAgIGNvdW50ZXIrKztcbiAgICB9XG5cbiAgICBsZXQga2V5UHJlZml4OiBzdHJpbmcgPSAnJztcblxuICAgIGxldCByZWdpb25hbE9wZXJhdGlvbkZhdWx0Q291bnRNZXRyaWNzOiB7IFtrZXk6IHN0cmluZ106IElNZXRyaWMgfSA9IHt9O1xuXG4gICAgcHJvcHMuc2VydmljZS5vcGVyYXRpb25zXG4gICAgICAuZmlsdGVyKCh4KSA9PiB4LmNyaXRpY2FsID09IHRydWUpXG4gICAgICAuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICBrZXlQcmVmaXggPSBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcy5uZXh0Q2hhcihrZXlQcmVmaXgpO1xuXG4gICAgICAgIHJlZ2lvbmFsT3BlcmF0aW9uRmF1bHRDb3VudE1ldHJpY3Nba2V5UHJlZml4XSA9XG4gICAgICAgICAgUmVnaW9uYWxBdmFpbGFiaWxpdHlNZXRyaWNzLmNyZWF0ZVJlZ2lvbmFsQXZhaWxhYmlsaXR5TWV0cmljKHtcbiAgICAgICAgICAgIGxhYmVsOiB4Lm9wZXJhdGlvbk5hbWUgKyAnIGZhdWx0IGNvdW50JyxcbiAgICAgICAgICAgIG1ldHJpY0RldGFpbHM6IHguc2VydmVyU2lkZUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgICBtZXRyaWNUeXBlOiBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLkZBVUxUX0NPVU5ULFxuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBsZXQgcmVnaW9uYWxGYXVsdENvdW50OiBJTWV0cmljID0gbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgIHVzaW5nTWV0cmljczogcmVnaW9uYWxPcGVyYXRpb25GYXVsdENvdW50TWV0cmljcyxcbiAgICAgIGV4cHJlc3Npb246IE9iamVjdC5rZXlzKHJlZ2lvbmFsT3BlcmF0aW9uRmF1bHRDb3VudE1ldHJpY3MpLmpvaW4oJysnKSxcbiAgICAgIGxhYmVsOiBwcm9wcy5zZXJ2aWNlLnNlcnZpY2VOYW1lICsgJyBmYXVsdCBjb3VudCcsXG4gICAgICBwZXJpb2Q6IHByb3BzLnNlcnZpY2UucGVyaW9kLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yZWdpb25hbEZhdWx0Q291bnRTZXJ2ZXJTaWRlQWxhcm0gPSBuZXcgQWxhcm0oXG4gICAgICB0aGlzLFxuICAgICAgJ1JlZ2lvbmFsRmF1bHRDb3VudCcsXG4gICAgICB7XG4gICAgICAgIGFsYXJtTmFtZTpcbiAgICAgICAgICBGbi5yZWYoJ0FXUzo6UmVnaW9uJykgK1xuICAgICAgICAgICctJyArXG4gICAgICAgICAgcHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZS50b0xvd2VyQ2FzZSgpICtcbiAgICAgICAgICAnLWZhdWx0LWNvdW50JyxcbiAgICAgICAgZGF0YXBvaW50c1RvQWxhcm06IDMsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiA1LFxuICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fVEhSRVNIT0xELFxuICAgICAgICB0aHJlc2hvbGQ6IHByb3BzLnNlcnZpY2UuZmF1bHRDb3VudFRocmVzaG9sZCxcbiAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjpcbiAgICAgICAgICAnQ291bnRzIGZhdWx0cyBmcm9tIGFsbCBjcml0aWNhbCBvcGVyYXRpb24gaW4gdGhlIHNlcnZpY2UnLFxuICAgICAgICBtZXRyaWM6IHJlZ2lvbmFsRmF1bHRDb3VudCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGxldCBjYW5hcnlBbGFybXM6IElBbGFybVtdID0gT2JqZWN0LnZhbHVlcyhcbiAgICAgIE9iamVjdC5lbnRyaWVzKHByb3BzLnBlck9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzKS5yZWR1Y2UoXG4gICAgICAgIChmaWx0ZXJlZCwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgaWYgKGNyaXRpY2FsT3BlcmF0aW9ucy5pbmRleE9mKGtleSkgPiAtMSkge1xuICAgICAgICAgICAgZmlsdGVyZWRba2V5XSA9IHZhbHVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICAgICAgfSxcbiAgICAgICAge30gYXMgeyBba2V5OiBzdHJpbmddOiBJT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMgfSxcbiAgICAgICksXG4gICAgKVxuICAgICAgLnJlZHVjZSgoZmlsdGVyZWQsIHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZS5jYW5hcnlSZWdpb25hbEFsYXJtc0FuZFJ1bGVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmaWx0ZXJlZC5wdXNoKHZhbHVlLmNhbmFyeVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICAgIH0sIFtdIGFzIElDYW5hcnlPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzW10pXG4gICAgICAubWFwKCh4KSA9PiB4LmF2YWlsYWJpbGl0eU9yTGF0ZW5jeUFsYXJtKTtcblxuICAgIGlmIChcbiAgICAgIGNhbmFyeUFsYXJtcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBjYW5hcnlBbGFybXMgIT09IG51bGwgJiZcbiAgICAgIGNhbmFyeUFsYXJtcy5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICB0aGlzLnJlZ2lvbmFsQXZhaWxhYmlsaXR5T3JMYXRlbmN5Q2FuYXJ5QWxhcm0gPSBuZXcgQ29tcG9zaXRlQWxhcm0oXG4gICAgICAgIHRoaXMsXG4gICAgICAgICdTZXJ2aWNlQ2FuYXJ5QXZhaWxhYmlsaXR5T3JMYXRlbmN5QWdncmVnYXRlQWxhcm0nLFxuICAgICAgICB7XG4gICAgICAgICAgY29tcG9zaXRlQWxhcm1OYW1lOlxuICAgICAgICAgICAgRm4ucmVmKCdBV1M6OlJlZ2lvbicpICtcbiAgICAgICAgICAgICctJyArXG4gICAgICAgICAgICBwcm9wcy5zZXJ2aWNlLnNlcnZpY2VOYW1lLnRvTG93ZXJDYXNlKCkgK1xuICAgICAgICAgICAgJy1jYW5hcnktYXZhaWxhYmlsaXR5LW9yLWxhdGVuY3ktYWdncmVnYXRlLWFsYXJtJyxcbiAgICAgICAgICBhbGFybVJ1bGU6IEFsYXJtUnVsZS5hbnlPZiguLi5jYW5hcnlBbGFybXMpLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgY2FuYXJ5QXZhaWxhYmlsaXR5QWxhcm1zOiBJQWxhcm1bXSA9IE9iamVjdC52YWx1ZXMoXG4gICAgICBPYmplY3QuZW50cmllcyhwcm9wcy5wZXJPcGVyYXRpb25BbGFybXNBbmRSdWxlcykucmVkdWNlKFxuICAgICAgICAoZmlsdGVyZWQsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIGlmIChjcml0aWNhbE9wZXJhdGlvbnMuaW5kZXhPZihrZXkpID4gLTEpIHtcbiAgICAgICAgICAgIGZpbHRlcmVkW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICAgIH0sXG4gICAgICAgIHt9IGFzIHsgW2tleTogc3RyaW5nXTogSU9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzIH0sXG4gICAgICApLFxuICAgIClcbiAgICAgIC5yZWR1Y2UoKGZpbHRlcmVkLCB2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUuY2FuYXJ5UmVnaW9uYWxBbGFybXNBbmRSdWxlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZmlsdGVyZWQucHVzaCh2YWx1ZS5jYW5hcnlSZWdpb25hbEFsYXJtc0FuZFJ1bGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICB9LCBbXSBhcyBJQ2FuYXJ5T3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlc1tdKVxuICAgICAgLm1hcCgoeCkgPT4geC5hdmFpbGFiaWxpdHlBbGFybSk7XG5cbiAgICBpZiAoXG4gICAgICBjYW5hcnlBdmFpbGFiaWxpdHlBbGFybXMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgY2FuYXJ5QXZhaWxhYmlsaXR5QWxhcm1zICE9PSBudWxsICYmXG4gICAgICBjYW5hcnlBdmFpbGFiaWxpdHlBbGFybXMubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgdGhpcy5yZWdpb25hbEF2YWlsYWJpbGl0eUNhbmFyeUFsYXJtID0gbmV3IENvbXBvc2l0ZUFsYXJtKFxuICAgICAgICB0aGlzLFxuICAgICAgICAnU2VydmljZUNhbmFyeUF2YWlsYWJpbGl0eUFnZ3JlZ2F0ZUFsYXJtJyxcbiAgICAgICAge1xuICAgICAgICAgIGNvbXBvc2l0ZUFsYXJtTmFtZTpcbiAgICAgICAgICAgIEZuLnJlZignQVdTOjpSZWdpb24nKSArXG4gICAgICAgICAgICAnLScgK1xuICAgICAgICAgICAgcHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZS50b0xvd2VyQ2FzZSgpICtcbiAgICAgICAgICAgICctY2FuYXJ5LWF2YWlsYWJpbGl0eS1hZ2dyZWdhdGUtYWxhcm0nLFxuICAgICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFueU9mKC4uLmNhbmFyeUF2YWlsYWJpbGl0eUFsYXJtcyksXG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMucmVnaW9uYWxBdmFpbGFiaWxpdHlPckxhdGVuY3lTZXJ2ZXJTaWRlQWxhcm0gPSBuZXcgQ29tcG9zaXRlQWxhcm0oXG4gICAgICB0aGlzLFxuICAgICAgJ1NlcnZpY2VTZXJ2ZXJTaWRlQWdncmVnYXRlSXNvbGF0ZWRJbXBhY3RBbGFybScsXG4gICAgICB7XG4gICAgICAgIGNvbXBvc2l0ZUFsYXJtTmFtZTpcbiAgICAgICAgICBGbi5yZWYoJ0FXUzo6UmVnaW9uJykgK1xuICAgICAgICAgICctJyArXG4gICAgICAgICAgcHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZS50b0xvd2VyQ2FzZSgpICtcbiAgICAgICAgICAnLXNlcnZlci1zaWRlLWFnZ3JlZ2F0ZS1hbGFybScsXG4gICAgICAgIGFsYXJtUnVsZTogQWxhcm1SdWxlLmFueU9mKFxuICAgICAgICAgIC4uLk9iamVjdC52YWx1ZXMoXG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhwcm9wcy5wZXJPcGVyYXRpb25BbGFybXNBbmRSdWxlcykucmVkdWNlKFxuICAgICAgICAgICAgICAoZmlsdGVyZWQsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjcml0aWNhbE9wZXJhdGlvbnMuaW5kZXhPZihrZXkpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgIGZpbHRlcmVkW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHt9IGFzIHsgW2tleTogc3RyaW5nXTogSU9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzIH0sXG4gICAgICAgICAgICApLFxuICAgICAgICAgIClcbiAgICAgICAgICAgIC5tYXAoKHgpID0+IHguc2VydmVyU2lkZVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMpXG4gICAgICAgICAgICAubWFwKCh4KSA9PiB4LmF2YWlsYWJpbGl0eU9yTGF0ZW5jeUFsYXJtKSxcbiAgICAgICAgKSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHRoaXMucmVnaW9uYWxBdmFpbGFiaWxpdHlTZXJ2ZXJTaWRlQWxhcm0gPSBuZXcgQ29tcG9zaXRlQWxhcm0oXG4gICAgICB0aGlzLFxuICAgICAgJ1NlcnZpY2VTZXJ2ZXJTaWRlQXZhaWxhYmlsaXR5QWxhcm0nLFxuICAgICAge1xuICAgICAgICBjb21wb3NpdGVBbGFybU5hbWU6XG4gICAgICAgICAgRm4ucmVmKCdBV1M6OlJlZ2lvbicpICtcbiAgICAgICAgICAnLScgK1xuICAgICAgICAgIHByb3BzLnNlcnZpY2Uuc2VydmljZU5hbWUudG9Mb3dlckNhc2UoKSArXG4gICAgICAgICAgJy1zZXJ2ZXItc2lkZS1hdmFpbGFiaWxpdHktYWxhcm0nLFxuICAgICAgICBhbGFybVJ1bGU6IEFsYXJtUnVsZS5hbnlPZihcbiAgICAgICAgICAuLi5PYmplY3QudmFsdWVzKFxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocHJvcHMucGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMpLnJlZHVjZShcbiAgICAgICAgICAgICAgKGZpbHRlcmVkLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY3JpdGljYWxPcGVyYXRpb25zLmluZGV4T2Yoa2V5KSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICBmaWx0ZXJlZFtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7fSBhcyB7IFtrZXk6IHN0cmluZ106IElPcGVyYXRpb25BbGFybXNBbmRSdWxlcyB9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgICAgICAubWFwKCh4KSA9PiB4LnNlcnZlclNpZGVSZWdpb25hbEFsYXJtc0FuZFJ1bGVzKVxuICAgICAgICAgICAgLm1hcCgoeCkgPT4geC5hdmFpbGFiaWxpdHlBbGFybSksXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmljZUFsYXJtc0FuZFJ1bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FsYXJtc2FuZHJ1bGVzL1NlcnZpY2VBbGFybXNBbmRSdWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBQ3RDLDZDQUFpQztBQUNqQywrREFRb0M7QUFDcEMsMkNBQXVDO0FBS3ZDLHdGQUFxRjtBQUVyRixnRkFBNkU7QUFDN0UsOERBQTJEO0FBRTNEOztHQUVHO0FBQ0gsTUFBYSxxQkFDWCxTQUFRLHNCQUFTO0lBK0NqQixZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWlDO1FBQ3pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBRTdCLElBQUksa0JBQWtCLEdBQWEsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVO2FBQ3hELE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUM7YUFDakMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDL0IsSUFBSSxPQUFPLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxrQ0FBa0MsR0FBRyxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLG1DQUFtQyxHQUFHLEVBQUUsQ0FBQztRQUU5QyxJQUFJLG1CQUFtQixHQUFhLEtBQUssQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUN6RSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ0osT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLDRDQUE0QyxDQUNoRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQzFCLENB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LENBQUMsTUFBTSxDQUNkLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUMsTUFBTSxDQUNyRCxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO2dCQUN6QixJQUFJLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUN6QyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUN4QixDQUFDO2dCQUVELE9BQU8sUUFBUSxDQUFDO1lBQ2xCLENBQUMsRUFDRCxFQUFpRCxDQUNsRCxDQUNGO2lCQUNFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDO2lCQUM5QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUNuQztTQUNGLENBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWxURCxzREFrVEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBGbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIEFsYXJtLFxuICBBbGFybVJ1bGUsXG4gIENvbXBhcmlzb25PcGVyYXRvcixcbiAgQ29tcG9zaXRlQWxhcm0sXG4gIElBbGFybSxcbiAgSU1ldHJpYyxcbiAgTWF0aEV4cHJlc3Npb24sXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSUNhbmFyeU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lDYW5hcnlPcGVyYXRpb25SZWdpb25hbEFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IElPcGVyYXRpb25BbGFybXNBbmRSdWxlcyB9IGZyb20gJy4vSU9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IElTZXJ2aWNlQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuL0lTZXJ2aWNlQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgU2VydmljZUFsYXJtc0FuZFJ1bGVzUHJvcHMgfSBmcm9tICcuL3Byb3BzL1NlcnZpY2VBbGFybXNBbmRSdWxlc1Byb3BzJztcbmltcG9ydCB7IFJlZ2lvbmFsQXZhaWxhYmlsaXR5TWV0cmljcyB9IGZyb20gJy4uL21ldHJpY3MvUmVnaW9uYWxBdmFpbGFiaWxpdHlNZXRyaWNzJztcbmltcG9ydCB7IElTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvSVNlcnZpY2UnO1xuaW1wb3J0IHsgQXZhaWxhYmlsaXR5TWV0cmljVHlwZSB9IGZyb20gJy4uL3V0aWxpdGllcy9BdmFpbGFiaWxpdHlNZXRyaWNUeXBlJztcbmltcG9ydCB7IE1ldHJpY3NIZWxwZXIgfSBmcm9tICcuLi91dGlsaXRpZXMvTWV0cmljc0hlbHBlcic7XG5cbi8qKlxuICogU2VydmljZSBsZXZlbCBhbGFybXMgYW5kIHJ1bGVzIHVzaW5nIGNyaXRpY2FsIG9wZXJhdGlvbnNcbiAqL1xuZXhwb3J0IGNsYXNzIFNlcnZpY2VBbGFybXNBbmRSdWxlc1xuICBleHRlbmRzIENvbnN0cnVjdFxuICBpbXBsZW1lbnRzIElTZXJ2aWNlQWxhcm1zQW5kUnVsZXMge1xuICAvKipcbiAgICogVGhlIHNlcnZpY2UgdGhlc2UgYWxhcm1zIGFuZCBydWxlcyBhcmUgZm9yXG4gICAqL1xuICBzZXJ2aWNlOiBJU2VydmljZTtcblxuICAvKipcbiAgICogVGhlIHpvbmFsIGFnZ3JlZ2F0ZSBpc29sYXRlZCBpbXBhY3QgYWxhcm1zLiBUaGVyZSBpcyAxIGFsYXJtIHBlciBBWiB0aGF0XG4gICAqIHRyaWdnZXJzIGZvciBhdmFpbGFiaWxpdHkgb3IgbGF0ZW5jeSBpbXBhY3QgdG8gYW55IGNyaXRpY2FsIG9wZXJhdGlvbiBpbiB0aGF0IEFaXG4gICAqIHRoYXQgaW5kaWNhdGVzIGl0IGhhcyBpc29sYXRlZCBpbXBhY3QgYXMgbWVhc3VyZWQgYnkgY2FuYXJpZXMgb3Igc2VydmVyLXNpZGUuXG4gICAqL1xuICB6b25hbEFnZ3JlZ2F0ZUlzb2xhdGVkSW1wYWN0QWxhcm1zOiBJQWxhcm1bXTtcblxuICAvKipcbiAgICogVGhlIHpvbmFsIHNlcnZlci1zaWRlIGlzb2xhdGVkIGltcGFjdCBhbGFybXMuIFRoZXJlIGlzIDEgYWxhcm0gcGVyIEFaIHRoYXQgdHJpZ2dlcnNcbiAgICogb24gYXZhaWxhYmlsaXR5IG9yIGF0ZW5jeSBpbXBhY3QgdG8gYW55IGNyaXRpY2FsIG9wZXJhdGlvbiBpbiB0aGF0IEFaLiBUaGVzZSBhcmUgdXNlZnVsXG4gICAqIGZvciBkZXBsb3ltZW50IG1vbml0b3JpbmcgdG8gbm90IGluYWR2ZXJ0ZW50bHkgZmFpbCB3aGVuIGEgY2FuYXJ5IGNhbid0IGNvbnRhY3QgYW4gQVpcbiAgICogZHVyaW5nIGEgZGVwbG95bWVudC5cbiAgICovXG4gIHpvbmFsU2VydmVyU2lkZUlzb2xhdGVkSW1wYWN0QWxhcm1zOiBJQWxhcm1bXTtcblxuICAvKipcbiAgICogQW4gYWxhcm0gZm9yIHJlZ2lvbmFsIGF2YWlsYWJpbGl0eSBvciBsYXRlbmN5IGltcGFjdCBvZiBhbnkgY3JpdGljYWwgb3BlcmF0aW9uIGFzIG1lYXN1cmVkIGJ5IHRoZSBjYW5hcnkuXG4gICAqL1xuICByZWdpb25hbEF2YWlsYWJpbGl0eU9yTGF0ZW5jeUNhbmFyeUFsYXJtPzogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBBbiBhbGFybSBmb3IgcmVnaW9uYWwgYXZhaWxhYmlsaXR5IGltcGFjdCBvZiBhbnkgY3JpdGljYWwgb3BlcmF0aW9uIGFzIG1lYXN1cmVkIGJ5IHRoZSBjYW5hcnkuXG4gICAqL1xuICByZWdpb25hbEF2YWlsYWJpbGl0eUNhbmFyeUFsYXJtPzogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBBbiBhbGFybSBmb3IgcmVnaW9uYWwgYXZhaWxhYmlsaXR5IG9yIGxhdGVuY3kgaW1wYWN0IG9mIGFueSBjcml0aWNhbCBvcGVyYXRpb24gYXMgbWVhc3VyZWQgYnkgdGhlIHNlcnZlci1zaWRlLlxuICAgKi9cbiAgcmVnaW9uYWxBdmFpbGFiaWxpdHlPckxhdGVuY3lTZXJ2ZXJTaWRlQWxhcm06IElBbGFybTtcblxuICAvKipcbiAgICogQW4gYWxhcm0gZm9yIHJlZ2lvbmFsIGF2YWlsYWJpbGl0eSBpbXBhY3Qgb2YgYW55IGNyaXRpY2FsIG9wZXJhdGlvbiBhcyBtZWFzdXJlZCBieSB0aGUgc2VydmVyLXNpZGUuXG4gICAqL1xuICByZWdpb25hbEF2YWlsYWJpbGl0eVNlcnZlclNpZGVBbGFybTogSUFsYXJtO1xuXG4gIC8qKlxuICAgKiBBbiBhbGFybSBmb3IgZmF1bHQgY291bnQgZXhjZWVkaW5nIGEgcmVnaW9uYWwgdGhyZXNob2xkIGZvciBhbGwgY3JpdGljYWwgb3BlcmF0aW9ucy5cbiAgICovXG4gIHJlZ2lvbmFsRmF1bHRDb3VudFNlcnZlclNpZGVBbGFybTogSUFsYXJtO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTZXJ2aWNlQWxhcm1zQW5kUnVsZXNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5zZXJ2aWNlID0gcHJvcHMuc2VydmljZTtcblxuICAgIGxldCBjcml0aWNhbE9wZXJhdGlvbnM6IHN0cmluZ1tdID0gcHJvcHMuc2VydmljZS5vcGVyYXRpb25zXG4gICAgICAuZmlsdGVyKCh4KSA9PiB4LmNyaXRpY2FsID09IHRydWUpXG4gICAgICAubWFwKCh4KSA9PiB4Lm9wZXJhdGlvbk5hbWUpO1xuICAgIGxldCBjb3VudGVyOiBudW1iZXIgPSAxO1xuICAgIHRoaXMuem9uYWxBZ2dyZWdhdGVJc29sYXRlZEltcGFjdEFsYXJtcyA9IFtdO1xuICAgIHRoaXMuem9uYWxTZXJ2ZXJTaWRlSXNvbGF0ZWRJbXBhY3RBbGFybXMgPSBbXTtcblxuICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWRzOiBzdHJpbmdbXSA9IHByb3BzLnNlcnZpY2UuYXZhaWxhYmlsaXR5Wm9uZU5hbWVzLm1hcChcbiAgICAgICh4KSA9PiB7XG4gICAgICAgIHJldHVybiBwcm9wcy5hek1hcHBlci5hdmFpbGFiaWxpdHlab25lSWRGcm9tQXZhaWxhYmlsaXR5Wm9uZUxldHRlcihcbiAgICAgICAgICB4LnN1YnN0cmluZyh4Lmxlbmd0aCAtIDEpLFxuICAgICAgICApO1xuICAgICAgfSxcbiAgICApO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdmFpbGFiaWxpdHlab25lSWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgYXZhaWxhYmlsaXR5Wm9uZWRJZDogc3RyaW5nID0gYXZhaWxhYmlsaXR5Wm9uZUlkc1tpXTtcblxuICAgICAgdGhpcy56b25hbEFnZ3JlZ2F0ZUlzb2xhdGVkSW1wYWN0QWxhcm1zLnB1c2goXG4gICAgICAgIG5ldyBDb21wb3NpdGVBbGFybShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgICdBWicgKyBjb3VudGVyICsgJ1NlcnZpY2VBZ2dyZWdhdGVJc29sYXRlZEltcGFjdEFsYXJtJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb21wb3NpdGVBbGFybU5hbWU6XG4gICAgICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVkSWQgK1xuICAgICAgICAgICAgICAnLScgK1xuICAgICAgICAgICAgICBwcm9wcy5zZXJ2aWNlLnNlcnZpY2VOYW1lLnRvTG93ZXJDYXNlKCkgK1xuICAgICAgICAgICAgICAnLWlzb2xhdGVkLWltcGFjdC1hZ2dyZWdhdGUtYWxhcm0nLFxuICAgICAgICAgICAgYWxhcm1SdWxlOiBBbGFybVJ1bGUuYW55T2YoXG4gICAgICAgICAgICAgIC4uLk9iamVjdC52YWx1ZXMoXG4gICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocHJvcHMucGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMpLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgIChmaWx0ZXJlZCwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjcml0aWNhbE9wZXJhdGlvbnMuaW5kZXhPZihrZXkpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZFtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge30gYXMgeyBba2V5OiBzdHJpbmddOiBJT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMgfSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLm1hcCgoeCkgPT4geC5hZ2dyZWdhdGVab25hbEFsYXJtc1tpXSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICApO1xuXG4gICAgICB0aGlzLnpvbmFsU2VydmVyU2lkZUlzb2xhdGVkSW1wYWN0QWxhcm1zLnB1c2goXG4gICAgICAgIG5ldyBDb21wb3NpdGVBbGFybShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgICdBWicgKyBjb3VudGVyICsgJ1NlcnZpY2VTZXJ2ZXJTaWRlSXNvbGF0ZWRJbXBhY3RBbGFybScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29tcG9zaXRlQWxhcm1OYW1lOlxuICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlab25lZElkICtcbiAgICAgICAgICAgICAgJy0nICtcbiAgICAgICAgICAgICAgcHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZS50b0xvd2VyQ2FzZSgpICtcbiAgICAgICAgICAgICAgJy1pc29sYXRlZC1pbXBhY3Qtc2VydmVyLXNpZGUtYWxhcm0nLFxuICAgICAgICAgICAgYWxhcm1SdWxlOiBBbGFybVJ1bGUuYW55T2YoXG4gICAgICAgICAgICAgIC4uLk9iamVjdC52YWx1ZXMoXG4gICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocHJvcHMucGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMpLnJlZHVjZShcbiAgICAgICAgICAgICAgICAgIChmaWx0ZXJlZCwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjcml0aWNhbE9wZXJhdGlvbnMuaW5kZXhPZihrZXkpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZFtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge30gYXMgeyBba2V5OiBzdHJpbmddOiBJT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMgfSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLm1hcCgoeCkgPT4geC5zZXJ2ZXJTaWRlWm9uYWxBbGFybXNNYXBbYXZhaWxhYmlsaXR5Wm9uZWRJZF0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9LFxuICAgICAgICApLFxuICAgICAgKTtcblxuICAgICAgY291bnRlcisrO1xuICAgIH1cblxuICAgIGxldCBrZXlQcmVmaXg6IHN0cmluZyA9ICcnO1xuXG4gICAgbGV0IHJlZ2lvbmFsT3BlcmF0aW9uRmF1bHRDb3VudE1ldHJpY3M6IHsgW2tleTogc3RyaW5nXTogSU1ldHJpYyB9ID0ge307XG5cbiAgICBwcm9wcy5zZXJ2aWNlLm9wZXJhdGlvbnNcbiAgICAgIC5maWx0ZXIoKHgpID0+IHguY3JpdGljYWwgPT0gdHJ1ZSlcbiAgICAgIC5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICAgIGtleVByZWZpeCA9IE1ldHJpY3NIZWxwZXIubmV4dENoYXIoa2V5UHJlZml4KTtcblxuICAgICAgICByZWdpb25hbE9wZXJhdGlvbkZhdWx0Q291bnRNZXRyaWNzW2tleVByZWZpeF0gPVxuICAgICAgICAgIFJlZ2lvbmFsQXZhaWxhYmlsaXR5TWV0cmljcy5jcmVhdGVSZWdpb25hbEF2YWlsYWJpbGl0eU1ldHJpYyh7XG4gICAgICAgICAgICBsYWJlbDogeC5vcGVyYXRpb25OYW1lICsgJyBmYXVsdCBjb3VudCcsXG4gICAgICAgICAgICBtZXRyaWNEZXRhaWxzOiB4LnNlcnZlclNpZGVBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgICAgbWV0cmljVHlwZTogQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5GQVVMVF9DT1VOVCxcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgbGV0IHJlZ2lvbmFsRmF1bHRDb3VudDogSU1ldHJpYyA9IG5ldyBNYXRoRXhwcmVzc2lvbih7XG4gICAgICB1c2luZ01ldHJpY3M6IHJlZ2lvbmFsT3BlcmF0aW9uRmF1bHRDb3VudE1ldHJpY3MsXG4gICAgICBleHByZXNzaW9uOiBPYmplY3Qua2V5cyhyZWdpb25hbE9wZXJhdGlvbkZhdWx0Q291bnRNZXRyaWNzKS5qb2luKCcrJyksXG4gICAgICBsYWJlbDogcHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZSArICcgZmF1bHQgY291bnQnLFxuICAgICAgcGVyaW9kOiBwcm9wcy5zZXJ2aWNlLnBlcmlvZCxcbiAgICB9KTtcblxuICAgIHRoaXMucmVnaW9uYWxGYXVsdENvdW50U2VydmVyU2lkZUFsYXJtID0gbmV3IEFsYXJtKFxuICAgICAgdGhpcyxcbiAgICAgICdSZWdpb25hbEZhdWx0Q291bnQnLFxuICAgICAge1xuICAgICAgICBhbGFybU5hbWU6XG4gICAgICAgICAgRm4ucmVmKCdBV1M6OlJlZ2lvbicpICtcbiAgICAgICAgICAnLScgK1xuICAgICAgICAgIHByb3BzLnNlcnZpY2Uuc2VydmljZU5hbWUudG9Mb3dlckNhc2UoKSArXG4gICAgICAgICAgJy1mYXVsdC1jb3VudCcsXG4gICAgICAgIGRhdGFwb2ludHNUb0FsYXJtOiAzLFxuICAgICAgICBldmFsdWF0aW9uUGVyaW9kczogNSxcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yOiBDb21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX1RIUkVTSE9MRCxcbiAgICAgICAgdGhyZXNob2xkOiBwcm9wcy5zZXJ2aWNlLmZhdWx0Q291bnRUaHJlc2hvbGQsXG4gICAgICAgIGFsYXJtRGVzY3JpcHRpb246XG4gICAgICAgICAgJ0NvdW50cyBmYXVsdHMgZnJvbSBhbGwgY3JpdGljYWwgb3BlcmF0aW9uIGluIHRoZSBzZXJ2aWNlJyxcbiAgICAgICAgbWV0cmljOiByZWdpb25hbEZhdWx0Q291bnQsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBsZXQgY2FuYXJ5QWxhcm1zOiBJQWxhcm1bXSA9IE9iamVjdC52YWx1ZXMoXG4gICAgICBPYmplY3QuZW50cmllcyhwcm9wcy5wZXJPcGVyYXRpb25BbGFybXNBbmRSdWxlcykucmVkdWNlKFxuICAgICAgICAoZmlsdGVyZWQsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIGlmIChjcml0aWNhbE9wZXJhdGlvbnMuaW5kZXhPZihrZXkpID4gLTEpIHtcbiAgICAgICAgICAgIGZpbHRlcmVkW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICAgIH0sXG4gICAgICAgIHt9IGFzIHsgW2tleTogc3RyaW5nXTogSU9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzIH0sXG4gICAgICApLFxuICAgIClcbiAgICAgIC5yZWR1Y2UoKGZpbHRlcmVkLCB2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUuY2FuYXJ5UmVnaW9uYWxBbGFybXNBbmRSdWxlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZmlsdGVyZWQucHVzaCh2YWx1ZS5jYW5hcnlSZWdpb25hbEFsYXJtc0FuZFJ1bGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICB9LCBbXSBhcyBJQ2FuYXJ5T3BlcmF0aW9uUmVnaW9uYWxBbGFybXNBbmRSdWxlc1tdKVxuICAgICAgLm1hcCgoeCkgPT4geC5hdmFpbGFiaWxpdHlPckxhdGVuY3lBbGFybSk7XG5cbiAgICBpZiAoXG4gICAgICBjYW5hcnlBbGFybXMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgY2FuYXJ5QWxhcm1zICE9PSBudWxsICYmXG4gICAgICBjYW5hcnlBbGFybXMubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgdGhpcy5yZWdpb25hbEF2YWlsYWJpbGl0eU9yTGF0ZW5jeUNhbmFyeUFsYXJtID0gbmV3IENvbXBvc2l0ZUFsYXJtKFxuICAgICAgICB0aGlzLFxuICAgICAgICAnU2VydmljZUNhbmFyeUF2YWlsYWJpbGl0eU9yTGF0ZW5jeUFnZ3JlZ2F0ZUFsYXJtJyxcbiAgICAgICAge1xuICAgICAgICAgIGNvbXBvc2l0ZUFsYXJtTmFtZTpcbiAgICAgICAgICAgIEZuLnJlZignQVdTOjpSZWdpb24nKSArXG4gICAgICAgICAgICAnLScgK1xuICAgICAgICAgICAgcHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZS50b0xvd2VyQ2FzZSgpICtcbiAgICAgICAgICAgICctY2FuYXJ5LWF2YWlsYWJpbGl0eS1vci1sYXRlbmN5LWFnZ3JlZ2F0ZS1hbGFybScsXG4gICAgICAgICAgYWxhcm1SdWxlOiBBbGFybVJ1bGUuYW55T2YoLi4uY2FuYXJ5QWxhcm1zKSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IGNhbmFyeUF2YWlsYWJpbGl0eUFsYXJtczogSUFsYXJtW10gPSBPYmplY3QudmFsdWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXMocHJvcHMucGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMpLnJlZHVjZShcbiAgICAgICAgKGZpbHRlcmVkLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICBpZiAoY3JpdGljYWxPcGVyYXRpb25zLmluZGV4T2Yoa2V5KSA+IC0xKSB7XG4gICAgICAgICAgICBmaWx0ZXJlZFtrZXldID0gdmFsdWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgICB9LFxuICAgICAgICB7fSBhcyB7IFtrZXk6IHN0cmluZ106IElPcGVyYXRpb25BbGFybXNBbmRSdWxlcyB9LFxuICAgICAgKSxcbiAgICApXG4gICAgICAucmVkdWNlKChmaWx0ZXJlZCwgdmFsdWUpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlLmNhbmFyeVJlZ2lvbmFsQWxhcm1zQW5kUnVsZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGZpbHRlcmVkLnB1c2godmFsdWUuY2FuYXJ5UmVnaW9uYWxBbGFybXNBbmRSdWxlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgfSwgW10gYXMgSUNhbmFyeU9wZXJhdGlvblJlZ2lvbmFsQWxhcm1zQW5kUnVsZXNbXSlcbiAgICAgIC5tYXAoKHgpID0+IHguYXZhaWxhYmlsaXR5QWxhcm0pO1xuXG4gICAgaWYgKFxuICAgICAgY2FuYXJ5QXZhaWxhYmlsaXR5QWxhcm1zICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGNhbmFyeUF2YWlsYWJpbGl0eUFsYXJtcyAhPT0gbnVsbCAmJlxuICAgICAgY2FuYXJ5QXZhaWxhYmlsaXR5QWxhcm1zLmxlbmd0aCA+IDBcbiAgICApIHtcbiAgICAgIHRoaXMucmVnaW9uYWxBdmFpbGFiaWxpdHlDYW5hcnlBbGFybSA9IG5ldyBDb21wb3NpdGVBbGFybShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgJ1NlcnZpY2VDYW5hcnlBdmFpbGFiaWxpdHlBZ2dyZWdhdGVBbGFybScsXG4gICAgICAgIHtcbiAgICAgICAgICBjb21wb3NpdGVBbGFybU5hbWU6XG4gICAgICAgICAgICBGbi5yZWYoJ0FXUzo6UmVnaW9uJykgK1xuICAgICAgICAgICAgJy0nICtcbiAgICAgICAgICAgIHByb3BzLnNlcnZpY2Uuc2VydmljZU5hbWUudG9Mb3dlckNhc2UoKSArXG4gICAgICAgICAgICAnLWNhbmFyeS1hdmFpbGFiaWxpdHktYWdncmVnYXRlLWFsYXJtJyxcbiAgICAgICAgICBhbGFybVJ1bGU6IEFsYXJtUnVsZS5hbnlPZiguLi5jYW5hcnlBdmFpbGFiaWxpdHlBbGFybXMpLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlZ2lvbmFsQXZhaWxhYmlsaXR5T3JMYXRlbmN5U2VydmVyU2lkZUFsYXJtID0gbmV3IENvbXBvc2l0ZUFsYXJtKFxuICAgICAgdGhpcyxcbiAgICAgICdTZXJ2aWNlU2VydmVyU2lkZUFnZ3JlZ2F0ZUlzb2xhdGVkSW1wYWN0QWxhcm0nLFxuICAgICAge1xuICAgICAgICBjb21wb3NpdGVBbGFybU5hbWU6XG4gICAgICAgICAgRm4ucmVmKCdBV1M6OlJlZ2lvbicpICtcbiAgICAgICAgICAnLScgK1xuICAgICAgICAgIHByb3BzLnNlcnZpY2Uuc2VydmljZU5hbWUudG9Mb3dlckNhc2UoKSArXG4gICAgICAgICAgJy1zZXJ2ZXItc2lkZS1hZ2dyZWdhdGUtYWxhcm0nLFxuICAgICAgICBhbGFybVJ1bGU6IEFsYXJtUnVsZS5hbnlPZihcbiAgICAgICAgICAuLi5PYmplY3QudmFsdWVzKFxuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMocHJvcHMucGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMpLnJlZHVjZShcbiAgICAgICAgICAgICAgKGZpbHRlcmVkLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY3JpdGljYWxPcGVyYXRpb25zLmluZGV4T2Yoa2V5KSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICBmaWx0ZXJlZFtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7fSBhcyB7IFtrZXk6IHN0cmluZ106IElPcGVyYXRpb25BbGFybXNBbmRSdWxlcyB9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgICAgICAubWFwKCh4KSA9PiB4LnNlcnZlclNpZGVSZWdpb25hbEFsYXJtc0FuZFJ1bGVzKVxuICAgICAgICAgICAgLm1hcCgoeCkgPT4geC5hdmFpbGFiaWxpdHlPckxhdGVuY3lBbGFybSksXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLnJlZ2lvbmFsQXZhaWxhYmlsaXR5U2VydmVyU2lkZUFsYXJtID0gbmV3IENvbXBvc2l0ZUFsYXJtKFxuICAgICAgdGhpcyxcbiAgICAgICdTZXJ2aWNlU2VydmVyU2lkZUF2YWlsYWJpbGl0eUFsYXJtJyxcbiAgICAgIHtcbiAgICAgICAgY29tcG9zaXRlQWxhcm1OYW1lOlxuICAgICAgICAgIEZuLnJlZignQVdTOjpSZWdpb24nKSArXG4gICAgICAgICAgJy0nICtcbiAgICAgICAgICBwcm9wcy5zZXJ2aWNlLnNlcnZpY2VOYW1lLnRvTG93ZXJDYXNlKCkgK1xuICAgICAgICAgICctc2VydmVyLXNpZGUtYXZhaWxhYmlsaXR5LWFsYXJtJyxcbiAgICAgICAgYWxhcm1SdWxlOiBBbGFybVJ1bGUuYW55T2YoXG4gICAgICAgICAgLi4uT2JqZWN0LnZhbHVlcyhcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKHByb3BzLnBlck9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzKS5yZWR1Y2UoXG4gICAgICAgICAgICAgIChmaWx0ZXJlZCwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNyaXRpY2FsT3BlcmF0aW9ucy5pbmRleE9mKGtleSkgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgZmlsdGVyZWRba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAge30gYXMgeyBba2V5OiBzdHJpbmddOiBJT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMgfSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICAgICAgLm1hcCgoeCkgPT4geC5zZXJ2ZXJTaWRlUmVnaW9uYWxBbGFybXNBbmRSdWxlcylcbiAgICAgICAgICAgIC5tYXAoKHgpID0+IHguYXZhaWxhYmlsaXR5QWxhcm0pLFxuICAgICAgICApLFxuICAgICAgfSxcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FsYXJtc2FuZHJ1bGVzL3Byb3BzL0NhbmFyeU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyB9IGZyb20gJy4vQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyc7XG5cbi8qKlxuICogQ2FuYXJ5IG1ldHJpYyBwcm9wZXJ0aWVzIGZvciBhbiBvcGVyYXRpb24gYXQgdGhlIHpvbmFsIGxldmVsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzXG4gIGV4dGVuZHMgQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyB7fVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FsYXJtc2FuZHJ1bGVzL3Byb3BzL0NhbmFyeU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyB9IGZyb20gJy4vQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyc7XG5cbi8qKlxuICogQ2FuYXJ5IG1ldHJpYyBwcm9wZXJ0aWVzIGZvciBhbiBvcGVyYXRpb24gYXQgdGhlIHpvbmFsIGxldmVsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuYXJ5T3BlcmF0aW9uWm9uYWxBbGFybXNBbmRSdWxlc1Byb3BzXG4gIGV4dGVuZHMgQmFzZU9wZXJhdGlvblpvbmFsQWxhcm1zQW5kUnVsZXNQcm9wcyB7XG4gIH1cbiJdfQ==
@@ -196,5 +196,5 @@ class AvailabilityZoneMapper extends constructs_1.Construct {
196
196
  }
197
197
  exports.AvailabilityZoneMapper = AvailabilityZoneMapper;
198
198
  _a = JSII_RTTI_SYMBOL_1;
199
- AvailabilityZoneMapper[_a] = { fqn: "@cdklabs/multi-az-observability.AvailabilityZoneMapper", version: "0.0.0-alpha.0" };
199
+ AvailabilityZoneMapper[_a] = { fqn: "@cdklabs/multi-az-observability.AvailabilityZoneMapper", version: "0.0.1-alpha.0" };
200
200
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXZhaWxhYmlsaXR5Wm9uZU1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hem1hcHBlci9BdmFpbGFiaWxpdHlab25lTWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUN0Qyx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLDZDQU1xQjtBQUNyQixpREFRNkI7QUFDN0IsdURBT2dDO0FBQ2hDLG1EQUEwRTtBQUMxRSwyQ0FBdUM7QUFJdkM7O0dBRUc7QUFDSCxNQUFhLHNCQUNYLFNBQVEsc0JBQVM7SUFtQmpCLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQW1DO1FBRW5DLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakI7Ozs7Ozs7Ozs7VUFVRTtRQUVGLElBQUksaUJBQWlCLEdBQW1CLElBQUksdUJBQWEsQ0FDdkQsSUFBSSxFQUNKLG1CQUFtQixFQUNuQjtZQUNFLElBQUksRUFBRSxZQUFZO1lBQ2xCLFVBQVUsRUFBRTtnQkFDVixJQUFJLHlCQUFlLENBQUM7b0JBQ2xCLE9BQU8sRUFBRTt3QkFDUCx1QkFBdUI7d0JBQ3ZCLDBCQUEwQjt3QkFDMUIsdUJBQXVCO3dCQUN2Qix5QkFBeUI7d0JBQ3pCLG9DQUFvQztxQkFDckM7b0JBQ0QsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztvQkFDcEIsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO2lCQUNqQixDQUFDO2FBQ0g7U0FDRixDQUNGLENBQUM7UUFFRixJQUFJLGdCQUFnQixHQUFtQixJQUFJLHVCQUFhLENBQ3RELElBQUksRUFDSixrQkFBa0IsRUFDbEI7WUFDRSxJQUFJLEVBQUUsWUFBWTtZQUNsQixVQUFVLEVBQUU7Z0JBQ1YsSUFBSSx5QkFBZSxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztvQkFDMUMsTUFBTSxFQUFFLGdCQUFNLENBQUMs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QUFNLENBQUMsWUFBWSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCw2QkFBNkI7UUFDM0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILDRDQUE0QyxDQUFDLE1BQWM7UUFDekQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCw0Q0FBNEM7UUFDMUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQzlELENBQUM7O0FBOU9ILHdEQStPQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuICBDdXN0b21SZXNvdXJjZSxcbiAgRHVyYXRpb24sXG4gIEZuLFxuICBSZWZlcmVuY2UsXG4gIFJlbW92YWxQb2xpY3ksXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIEVmZmVjdCxcbiAgSU1hbmFnZWRQb2xpY3ksXG4gIElSb2xlLFxuICBNYW5hZ2VkUG9saWN5LFxuICBQb2xpY3lTdGF0ZW1lbnQsXG4gIFJvbGUsXG4gIFNlcnZpY2VQcmluY2lwYWwsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHtcbiAgQXJjaGl0ZWN0dXJlLFxuICBDb2RlLFxuICBGdW5jdGlvbixcbiAgSUZ1bmN0aW9uLFxuICBSdW50aW1lLFxuICBUcmFjaW5nLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IElMb2dHcm91cCwgTG9nR3JvdXAsIFJldGVudGlvbkRheXMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElBdmFpbGFiaWxpdHlab25lTWFwcGVyIH0gZnJvbSAnLi9JQXZhaWxhYmlsaXR5Wm9uZU1hcHBlcic7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlab25lTWFwcGVyUHJvcHMgfSBmcm9tICcuL3Byb3BzL0F2YWlsYWJpbGl0eVpvbmVNYXBwZXJQcm9wcyc7XG5cbi8qKlxuICogQSBjb25zdHJ1Y3QgdGhhdCBhbGxvd3MgeW91IHRvIG1hcCBBWiBuYW1lcyB0byBpZHMgYW5kIGJhY2tcbiAqL1xuZXhwb3J0IGNsYXNzIEF2YWlsYWJpbGl0eVpvbmVNYXBwZXJcbiAgZXh0ZW5kcyBDb25zdHJ1Y3RcbiAgaW1wbGVtZW50cyBJQXZhaWxhYmlsaXR5Wm9uZU1hcHBlciB7XG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gdGhhdCBkb2VzIHRoZSBtYXBwaW5nXG4gICAqL1xuICBmdW5jdGlvbjogSUZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9nIGdyb3VwIGZvciB0aGUgZnVuY3Rpb24ncyBsb2dzXG4gICAqL1xuICBsb2dHcm91cDogSUxvZ0dyb3VwO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VzdG9tIHJlc291cmNlIHRoYXQgY2FuIGJlIHJlZmVyZW5jZWQgdG8gdXNlXG4gICAqIEZuOjpHZXRBdHQgZnVuY3Rpb25zIG9uIHRvIHJldHJpZXZlIGF2YWlsYWJpbGl0eSB6b25lXG4gICAqIG5hbWVzIGFuZCBpZHNcbiAgICovXG4gIG1hcHBlcjogQ3VzdG9tUmVzb3VyY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzPzogQXZhaWxhYmlsaXR5Wm9uZU1hcHBlclByb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLypcbiAgICBsZXQgY3VycmVudE5vZGU6IENvbnN0cnVjdCB8IHVuZGVmaW5lZCA9IHRoaXMubm9kZS5zY29wZTtcblxuICAgIHdoaWxlIChjdXJyZW50Tm9kZSAhPT0gdW5kZWZpbmVkICYmICEoY3VycmVudE5vZGUgaW5zdGFuY2VvZiBTdGFjaykpIHtcbiAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUubm9kZS5zY29wZTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudE5vZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgKGN1cnJlbnROb2RlIGFzIFN0YWNrKS5hZGRUcmFuc2Zvcm0oJ0FXUzo6TGFuZ3VhZ2VFeHRlbnNpb25zJyk7XG4gICAgfVxuICAgICovXG5cbiAgICBsZXQgeHJheU1hbmFnZWRQb2xpY3k6IElNYW5hZ2VkUG9saWN5ID0gbmV3IE1hbmFnZWRQb2xpY3koXG4gICAgICB0aGlzLFxuICAgICAgJ1hyYXlNYW5hZ2VkUG9saWN5JyxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJy9hem1hcHBlci8nLFxuICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICd4cmF5OlB1dFRyYWNlU2VnbWVudHMnLFxuICAgICAgICAgICAgICAneHJheTpQdXRUZWxlbWV0cnlSZWNvcmRzJyxcbiAgICAgICAgICAgICAgJ3hyYXk6R2V0U2FtcGxpbmdSdWxlcycsXG4gICAgICAgICAgICAgICd4cmF5OkdldFNhbXBsaW5nVGFyZ2V0cycsXG4gICAgICAgICAgICAgICd4cmF5OkdldFNhbXBsaW5nU3RhdGlzdGljU3VtbWFyaWVzJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBsZXQgZWMyTWFuYWdlZFBvbGljeTogSU1hbmFnZWRQb2xpY3kgPSBuZXcgTWFuYWdlZFBvbGljeShcbiAgICAgIHRoaXMsXG4gICAgICAnRUMyTWFuYWdlZFBvbGljeScsXG4gICAgICB7XG4gICAgICAgIHBhdGg6ICcvYXptYXBwZXIvJyxcbiAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogWydlYzI6RGVzY3JpYmVBdmFpbGFiaWxpdHlab25lcyddLFxuICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgbGV0IGV4ZWN1dGlvblJvbGU6IElSb2xlID0gbmV3IFJvbGUodGhpcywgJ2V4ZWN1dGlvblJvbGUnLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBTZXJ2aWNlUHJpbmNpcGFsKCdsYW1iZGEuYW1hem9uYXdzLmNvbScpLFxuICAgICAgcGF0aDogJy9hem1hcHBlci8nLFxuICAgICAgbWFuYWdlZFBvbGljaWVzOiBbeHJheU1hbmFnZWRQb2xpY3ksIGVjMk1hbmFnZWRQb2xpY3ldLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZmlsZTogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4vLi4vYXptYXBwZXIvc3JjL2luZGV4LnB5JyksXG4gICAgICAndXRmLTgnLFxuICAgICk7XG5cbiAgICB0aGlzLmZ1bmN0aW9uID0gbmV3IEZ1bmN0aW9uKHRoaXMsICdBdmFpbGFiaWxpdHlab25lTWFwcGVyRnVuY3Rpb24nLCB7XG4gICAgICBydW50aW1lOiBSdW50aW1lLlBZVEhPTl8zXzEyLFxuICAgICAgY29kZTogQ29kZS5mcm9tSW5saW5lKGZpbGUpLFxuICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgcm9sZTogZXhlY3V0aW9uUm9sZSxcbiAgICAgIGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgIHRyYWNpbmc6IFRyYWNpbmcuQUNUSVZFLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcygyMCksXG4gICAgICBtZW1vcnlTaXplOiA1MTIsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBSRUdJT046IEZuLnJlZignQVdTOjpSZWdpb24nKSxcbiAgICAgICAgUEFSVElUSU9OOiBGbi5yZWYoJ0FXUzo6UGFydGl0aW9uJyksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5sb2dHcm91cCA9IG5ldyBMb2dHcm91cCh0aGlzLCAnTG9nR3JvdXAnLCB7XG4gICAgICBsb2dHcm91cE5hbWU6IGAvYXdzL2xhbWJkYS8ke3RoaXMuZnVuY3Rpb24uZnVuY3Rpb25OYW1lfWAsXG4gICAgICByZXRlbnRpb246IFJldGVudGlvbkRheXMuT05FX0RBWSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICB9KTtcblxuICAgIG5ldyBNYW5hZ2VkUG9saWN5KHRoaXMsICdDbG91ZFdhdGNoTWFuYWdlZFBvbGljeScsIHtcbiAgICAgIHBhdGg6ICcvYXptYXBwZXIvJyxcbiAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogWydjbG91ZHdhdGNoOlB1dE1ldHJpY0RhdGEnXSxcbiAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogWydsb2dzOkNyZWF0ZUxvZ1N0cmVhbScsICdsb2dzOlB1dExvZ0V2ZW50cyddLFxuICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgRm4uc3ViKFxuICAgICAgICAgICAgICAnYXJuOiR7QVdTOjpQYXJ0aXRpb259OmxvZ3M6JHtBV1M6OlJlZ2lvbn06JHtBV1M6OkFjY291bnRJZH06bG9nLWdyb3VwOicsXG4gICAgICAgICAgICApICtcbiAgICAgICAgICAgICAgdGhpcy5sb2dHcm91cC5sb2dHcm91cE5hbWUgK1xuICAgICAgICAgICAgICAnOionLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICAgIHJvbGVzOiBbZXhlY3V0aW9uUm9sZV0sXG4gICAgfSk7XG5cbiAgICB0aGlzLm1hcHBlciA9IG5ldyBDdXN0b21SZXNvdXJjZSh0aGlzLCAnQXZhaWxhYmlsaXR5Wm9uZU1hcHBlcicsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogdGhpcy5mdW5jdGlvbi5mdW5jdGlvbkFybixcbiAgICAgIHByb3BlcnRpZXM6XG4gICAgICAgIHByb3BzPy5hdmFpbGFiaWxpdHlab25lTmFtZXMgIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8geyBBdmFpbGFiaWxpdHlab25lczogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZU5hbWVzIH1cbiAgICAgICAgICA6IHt9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIEF2YWlsYWJpbGl0eSBab25lIElkIGZvciB0aGUgZ2l2ZW4gQXZhaWxhYmlsaXR5IFpvbmUgTmFtZSBpbiB0aGlzIGFjY291bnRcbiAgICogQHBhcmFtIGF2YWlsYWJpbGl0eVpvbmVOYW1lXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBhdmFpbGFiaWxpdHlab25lSWQoYXZhaWxhYmlsaXR5Wm9uZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubWFwcGVyLmdldEF0dFN0cmluZyhhdmFpbGFiaWxpdHlab25lTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgQXZhaWxhYmlsaXR5IFpvbmUgTmFtZSBmb3IgdGhlIGdpdmVuIEF2YWlsYWJpbGl0eSBab25lIElkIGluIHRoaXMgYWNjb3VudFxuICAgKiBAcGFyYW0gYXZhaWxhYmlsaXR5Wm9uZUlkXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBhdmFpbGFiaWxpdHlab25lTmFtZShhdmFpbGFiaWxpdHlab25lSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubWFwcGVyLmdldEF0dFN0cmluZyhhdmFpbGFiaWxpdHlab25lSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHByZWZpeCBmb3IgdGhlIHJlZ2lvbiB1c2VkIHdpdGggQXZhaWxhYmlsaXR5IFpvbmUgSWRzLCBmb3IgZXhhbXBsZVxuICAgKiBpbiB1cy1lYXN0LTEsIHRoaXMgcmV0dXJucyBcInVzZTFcIlxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcmVnaW9uUHJlZml4Rm9yQXZhaWxhYmlsaXR5Wm9uZUlkcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1hcHBlci5nZXRBdHRTdHJpbmcoRm4ucmVmKCdBV1M6OlJlZ2lvbicpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGFycmF5IGZvciBBdmFpbGFiaWxpdHkgWm9uZSBJZHMgZm9yIHRoZSBzdXBwbGllZCBBdmFpbGFiaWxpdHkgWm9uZSBuYW1lcyxcbiAgICogdGhleSBhcmUgcmV0dXJuZWQgaW4gdGhlIHNhbWUgb3JkZXIgdGhlIG5hbWVzIHdlcmUgcHJvdmlkZWRcbiAgICogQHBhcmFtIGF2YWlsYWJpbGl0eVpvbmVOYW1lc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYXZhaWxhYmlsaXR5Wm9uZUlkc0FzQXJyYXkoYXZhaWxhYmlsaXR5Wm9uZU5hbWVzOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICBsZXQgaWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdmFpbGFiaWxpdHlab25lTmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlkcy5wdXNoKHRoaXMuYXZhaWxhYmlsaXR5Wm9uZUlkKGF2YWlsYWJpbGl0eVpvbmVOYW1lc1tpXSkpO1xuICAgIH1cblxuICAgIHJldHVybiBpZHM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGNvbW1hIGRlbGltaXRlZCBsaXN0IG9mIEF2YWlsYWJpbGl0eSBab25lIElkcyBmb3IgdGhlIHN1cHBsaWVkXG4gICAqIEF2YWlsYWJpbGl0eSBab25lIG5hbWVzLiBZb3UgY2FuIHVzZSB0aGlzIHN0cmluZyB3aXRoIEZuLlNlbGVjdCh4LCBGbi5TcGxpdChcIixcIiwgYXpzKSkgdG9cbiAgICogZ2V0IGEgc3BlY2lmaWMgQXZhaWxhYmlsaXR5IFpvbmUgSWRcbiAgICogQHBhcmFtIGF2YWlsYWJpbGl0eVpvbmVOYW1lc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYXZhaWxhYmlsaXR5Wm9uZUlkc0FzQ29tbWFEZWxpbWl0ZWRMaXN0KFxuICAgIGF2YWlsYWJpbGl0eVpvbmVOYW1lczogc3RyaW5nW10sXG4gICk6IHN0cmluZyB7XG4gICAgbGV0IGlkczogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXZhaWxhYmlsaXR5Wm9uZU5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZHMucHVzaCh0aGlzLmF2YWlsYWJpbGl0eVpvbmVJZChhdmFpbGFiaWxpdHlab25lTmFtZXNbaV0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaWRzLmpvaW4oJywnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgY29tbWEgZGVsaW1pdGVkIGxpc3Qgb2YgQXZhaWxhYmlsaXR5IFpvbmUgSWRzIGZvciB0aGUgc3VwcGxpZWRcbiAgICogQXZhaWxhYmlsaXR5IFpvbmUgbmFtZXMuIFlvdSBjYW4gdXNlIHRoaXMgc3RyaW5nIHdpdGggRm4uU2VsZWN0KHgsIEZuLlNwbGl0KFwiLFwiLCBhenMpKSB0b1xuICAgKiBnZXQgYSBzcGVjaWZpYyBBdmFpbGFiaWxpdHkgWm9uZSBJZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgYWxsQXZhaWxhYmlsaXR5Wm9uZUlkc0FzQ29tbWFEZWxpbWl0ZWRMaXN0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubWFwcGVyLmdldEF0dFN0cmluZygnQWxsQXZhaWxhYmlsaXR5Wm9uZUlkcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSByZWZlcmVuY2UgdGhhdCBjYW4gYmUgY2FzdCB0byBhIHN0cmluZyBhcnJheSB3aXRoIGFsbCBvZiB0aGVcbiAgICogQXZhaWxhYmlsaXR5IFpvbmUgSWRzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBhbGxBdmFpbGFiaWxpdHlab25lSWRzQXNBcnJheSgpOiBSZWZlcmVuY2Uge1xuICAgIHJldHVybiB0aGlzLm1hcHBlci5nZXRBdHQoJ0FsbEF2YWlsYWJpbGl0eVpvbmVJZHNBcnJheScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGEgbGV0dGVyIGxpa2UgXCJmXCIgb3IgXCJhXCIsIHJldHVybnMgdGhlIEF2YWlsYWJpbGl0eSBab25lIElkIGZvciB0aGF0XG4gICAqIEF2YWlsYWJpbGl0eSBab25lIG5hbWUgaW4gdGhpcyBhY2NvdW50XG4gICAqIEBwYXJhbSBsZXR0ZXJcbiAgICogQHJldHVybnNcbiAgICovXG4gIGF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKGxldHRlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5tYXBwZXIuZ2V0QXR0U3RyaW5nKGxldHRlcik7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhbGwgb2YgdGhlIEF2YWlsYWJpbGl0eSBab25lIG5hbWVzIGluIHRoaXMgUmVnaW9uIGFzIGEgY29tbWEgZGVsaW1pdGVkXG4gICAqIGxpc3QuIFlvdSBjYW4gdXNlIHRoaXMgc3RyaW5nIHdpdGggRm4uU2VsZWN0KHgsIEZuLlNwbGl0KFwiLFwiLCBhenMpKSB0b1xuICAgKiBnZXQgYSBzcGVjaWZpYyBBdmFpbGFiaWxpdHkgWm9uZSBOYW1lXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBhbGxBdmFpbGFiaWxpdHlab25lTmFtZXNBc0NvbW1hRGVsaW1pdGVkTGlzdCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm1hcHBlci5nZXRBdHRTdHJpbmcoJ0FsbEF2YWlsYWJpbGl0eVpvbmVOYW1lcycpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BasicServiceDashboard = void 0;
4
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
5
+ // SPDX-License-Identifier: Apache-2.0
6
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
7
+ const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
8
+ const constructs_1 = require("constructs");
9
+ class BasicServiceDashboard extends constructs_1.Construct {
10
+ static createLoadBalancerWidgets(alarms, metrics, azMapper) {
11
+ let widgets = [];
12
+ widgets.push(new aws_cloudwatch_1.TextWidget({
13
+ markdown: 'Load Balancer Fault Count Metrics',
14
+ height: 2,
15
+ width: 24,
16
+ }));
17
+ let rowTracker = 0;
18
+ Object.keys(alarms).forEach((azLetter, index) => {
19
+ let availabilityZoneId = azMapper.availabilityZoneIdFromAvailabilityZoneLetter(azLetter);
20
+ widgets.push(new aws_cloudwatch_1.GraphWidget({
21
+ height: 6,
22
+ width: 8,
23
+ title: availabilityZoneId + ' Load Balancer Faults',
24
+ region: aws_cdk_lib_1.Fn.sub('${AWS::Region}'),
25
+ left: [metrics[azLetter]],
26
+ statistic: 'Sum',
27
+ leftYAxis: {
28
+ min: 0,
29
+ label: 'Fault Count',
30
+ showUnits: false,
31
+ },
32
+ }));
33
+ //We're on the third one for this set, add 3 alarms
34
+ //or if we're at the end, at the necessary amount
35
+ //of alarms, 1, 2, or 3
36
+ if (index % 3 == 2 || index - 1 == Object.keys(alarms).length) {
37
+ for (let k = rowTracker; k <= index; k++) {
38
+ let azId = Object.keys(alarms).at(k);
39
+ widgets.push(new aws_cloudwatch_1.AlarmStatusWidget({
40
+ height: 2,
41
+ width: 8,
42
+ alarms: [alarms[azId]],
43
+ }));
44
+ }
45
+ rowTracker += index + 1;
46
+ }
47
+ });
48
+ return widgets;
49
+ }
50
+ static createNatGatewayWidgets(alarms, metrics, azMapper) {
51
+ let widgets = [];
52
+ widgets.push(new aws_cloudwatch_1.TextWidget({
53
+ markdown: 'NAT Gateway Dropped Packet Metrics',
54
+ height: 2,
55
+ width: 24,
56
+ }));
57
+ let rowTracker = 0;
58
+ Object.keys(alarms).forEach((azLetter, index) => {
59
+ let availabilityZoneId = azMapper.availabilityZoneIdFromAvailabilityZoneLetter(azLetter);
60
+ widgets.push(new aws_cloudwatch_1.GraphWidget({
61
+ height: 6,
62
+ width: 8,
63
+ title: availabilityZoneId + ' NAT Gateway Dropped Packets',
64
+ region: aws_cdk_lib_1.Fn.sub('${AWS::Region}'),
65
+ left: [metrics[azLetter]],
66
+ statistic: 'Sum',
67
+ leftYAxis: {
68
+ min: 0,
69
+ label: 'Dropped packets',
70
+ showUnits: false,
71
+ },
72
+ }));
73
+ //We're on the third one for this set, add 3 alarms
74
+ //or if we're at the end, at the necessary amount
75
+ //of alarms, 1, 2, or 3
76
+ if (index % 3 == 2 || index - 1 == Object.keys(alarms).length) {
77
+ for (let k = rowTracker; k <= index; k++) {
78
+ let azId = Object.keys(alarms).at(k);
79
+ widgets.push(new aws_cloudwatch_1.AlarmStatusWidget({
80
+ height: 2,
81
+ width: 8,
82
+ alarms: [alarms[azId]],
83
+ }));
84
+ }
85
+ rowTracker += index + 1;
86
+ }
87
+ });
88
+ return widgets;
89
+ }
90
+ static createTopLevelAlarmWidgets(alarms, azMapper) {
91
+ let widgets = [];
92
+ widgets.push(new aws_cloudwatch_1.TextWidget({
93
+ markdown: 'Availability Zone Isolated Impact Alarms',
94
+ height: 2,
95
+ width: 24,
96
+ }));
97
+ Object.keys(alarms).forEach((azLetter) => {
98
+ let availabilityZoneId = azMapper.availabilityZoneIdFromAvailabilityZoneLetter(azLetter);
99
+ widgets.push(new aws_cloudwatch_1.AlarmStatusWidget({
100
+ alarms: [alarms[azLetter]],
101
+ height: 2,
102
+ width: 8,
103
+ title: availabilityZoneId + ' Aggregate Isolated Impact',
104
+ }));
105
+ });
106
+ return widgets;
107
+ }
108
+ constructor(scope, id, props) {
109
+ super(scope, id);
110
+ let widgets = [];
111
+ widgets.push(BasicServiceDashboard.createTopLevelAlarmWidgets(props.zonalAggregateIsolatedImpactAlarms, props.azMapper));
112
+ if (props.zonalLoadBalancerIsolatedImpactAlarms !== undefined &&
113
+ props.zonalLoadBalancerFaultRateMetrics !== undefined) {
114
+ widgets.push(BasicServiceDashboard.createLoadBalancerWidgets(props.zonalLoadBalancerIsolatedImpactAlarms, props.zonalLoadBalancerFaultRateMetrics, props.azMapper));
115
+ }
116
+ if (props.zonalNatGatewayIsolatedImpactAlarms !== undefined &&
117
+ props.zonalNatGatewayPacketDropMetrics !== undefined) {
118
+ widgets.push(BasicServiceDashboard.createNatGatewayWidgets(props.zonalNatGatewayIsolatedImpactAlarms, props.zonalNatGatewayPacketDropMetrics, props.azMapper));
119
+ }
120
+ this.dashboard = new aws_cloudwatch_1.Dashboard(this, 'BasicServiceDashboard', {
121
+ dashboardName: props.serviceName.toLowerCase() +
122
+ aws_cdk_lib_1.Fn.sub('-service-availability-${AWS::Region}'),
123
+ defaultInterval: props.interval,
124
+ periodOverride: aws_cloudwatch_1.PeriodOverride.INHERIT,
125
+ widgets: widgets,
126
+ });
127
+ }
128
+ }
129
+ exports.BasicServiceDashboard = BasicServiceDashboard;
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzaWNTZXJ2aWNlRGFzaGJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jhc2ljX29ic2VydmFiaWxpdHkvQmFzaWNTZXJ2aWNlRGFzaGJvYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUFxRTtBQUNyRSxzQ0FBc0M7QUFDdEMsNkNBQWlDO0FBQ2pDLCtEQVNvQztBQUNwQywyQ0FBdUM7QUFJdkMsTUFBYSxxQkFBc0IsU0FBUSxzQkFBUztJQUUxQyxNQUFNLENBQUMseUJBQXlCLENBQ3RDLE1BQWlDLEVBQ2pDLE9BQW1DLEVBQ25DLFFBQWdDO1FBRWhDLElBQUksT0FBTyxHQUFjLEVBQUUsQ0FBQztRQUU1QixPQUFPLENBQUMsSUFBSSxDQUNWLElBQUksMkJBQVUsQ0FBQztZQUNiLFFBQVEsRUFBRSxtQ0FBbUM7WUFDN0MsTUFBTSxFQUFFLENBQUM7WUFDVCxLQUFLLEVBQUUsRUFBRTtTQUNWLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxVQUFVLEdBQVcsQ0FBQyxDQUFDO1FBRTNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzlDLElBQUksa0JBQWtCLEdBQVcsUUFBUSxDQUFDLDRDQUE0QyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRWpHLE9BQU8sQ0FBQyxJQUFJLENBQ1YsSUFBSSw0QkFBVyxDQUFDO2dCQUNkLE1BQU0sRUFBRSxDQUFDO2dCQUNULEtBQUssRUFBRSxDQUFDO2dCQUNSLEtBQUssRUFBRSxrQkFBa0IsR0FBRyx1QkFBdUI7Z0JBQ25ELE1BQU0sRUFBRSxnQkFBRSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDaEMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN6QixTQUFTLEVBQUUsS0FBSztnQkFDaEIsU0FBUyxFQUFFO29CQUNULEdB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LGtDQUFrQyxFQUN4QyxLQUFLLENBQUMsUUFBUSxDQUNmLENBQ0YsQ0FBQztRQUVGLElBQ0UsS0FBSyxDQUFDLHFDQUFxQyxLQUFLLFNBQVM7WUFDekQsS0FBSyxDQUFDLGlDQUFpQyxLQUFLLFNBQVMsRUFDckQsQ0FBQztZQUNELE9BQU8sQ0FBQyxJQUFJLENBQ1YscUJBQXFCLENBQUMseUJBQXlCLENBQzdDLEtBQUssQ0FBQyxxQ0FBcUMsRUFDM0MsS0FBSyxDQUFDLGlDQUFpQyxFQUN2QyxLQUFLLENBQUMsUUFBUSxDQUNmLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUNFLEtBQUssQ0FBQyxtQ0FBbUMsS0FBSyxTQUFTO1lBQ3ZELEtBQUssQ0FBQyxnQ0FBZ0MsS0FBSyxTQUFTLEVBQ3BELENBQUM7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUNWLHFCQUFxQixDQUFDLHVCQUF1QixDQUMzQyxLQUFLLENBQUMsbUNBQW1DLEVBQ3pDLEtBQUssQ0FBQyxnQ0FBZ0MsRUFDdEMsS0FBSyxDQUFDLFFBQVEsQ0FDZixDQUNGLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLDBCQUFTLENBQUMsSUFBSSxFQUFFLHVCQUF1QixFQUFFO1lBQzVELGFBQWEsRUFDWCxLQUFLLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRTtnQkFDL0IsZ0JBQUUsQ0FBQyxHQUFHLENBQUMsc0NBQXNDLENBQUM7WUFDaEQsZUFBZSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQy9CLGNBQWMsRUFBRSwrQkFBYyxDQUFDLE9BQU87WUFDdEMsT0FBTyxFQUFFLE9BQU87U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBdk1ELHNEQXVNQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCB7IEZuIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHtcbiAgQWxhcm1TdGF0dXNXaWRnZXQsXG4gIERhc2hib2FyZCxcbiAgR3JhcGhXaWRnZXQsXG4gIElBbGFybSxcbiAgSU1ldHJpYyxcbiAgSVdpZGdldCxcbiAgUGVyaW9kT3ZlcnJpZGUsXG4gIFRleHRXaWRnZXQsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQmFzaWNTZXJ2aWNlRGFzaGJvYXJkUHJvcHMgfSBmcm9tICcuL3Byb3BzL0Jhc2ljU2VydmljZURhc2hib2FyZFByb3BzJztcbmltcG9ydCB7IEF2YWlsYWJpbGl0eVpvbmVNYXBwZXIgfSBmcm9tICcuLi9hem1hcHBlci9BdmFpbGFiaWxpdHlab25lTWFwcGVyJztcblxuZXhwb3J0IGNsYXNzIEJhc2ljU2VydmljZURhc2hib2FyZCBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlTG9hZEJhbGFuY2VyV2lkZ2V0cyhcbiAgICBhbGFybXM6IHsgW2tleTogc3RyaW5nXTogSUFsYXJtIH0sXG4gICAgbWV0cmljczogeyBba2V5OiBzdHJpbmddOiBJTWV0cmljIH0sXG4gICAgYXpNYXBwZXI6IEF2YWlsYWJpbGl0eVpvbmVNYXBwZXIsXG4gICk6IElXaWRnZXRbXSB7XG4gICAgbGV0IHdpZGdldHM6IElXaWRnZXRbXSA9IFtdO1xuXG4gICAgd2lkZ2V0cy5wdXNoKFxuICAgICAgbmV3IFRleHRXaWRnZXQoe1xuICAgICAgICBtYXJrZG93bjogJ0xvYWQgQmFsYW5jZXIgRmF1bHQgQ291bnQgTWV0cmljcycsXG4gICAgICAgIGhlaWdodDogMixcbiAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGxldCByb3dUcmFja2VyOiBudW1iZXIgPSAwO1xuXG4gICAgT2JqZWN0LmtleXMoYWxhcm1zKS5mb3JFYWNoKChhekxldHRlciwgaW5kZXgpID0+IHtcbiAgICAgIGxldCBhdmFpbGFiaWxpdHlab25lSWQ6IHN0cmluZyA9IGF6TWFwcGVyLmF2YWlsYWJpbGl0eVpvbmVJZEZyb21BdmFpbGFiaWxpdHlab25lTGV0dGVyKGF6TGV0dGVyKTtcblxuICAgICAgd2lkZ2V0cy5wdXNoKFxuICAgICAgICBuZXcgR3JhcGhXaWRnZXQoe1xuICAgICAgICAgIGhlaWdodDogNixcbiAgICAgICAgICB3aWR0aDogOCxcbiAgICAgICAgICB0aXRsZTogYXZhaWxhYmlsaXR5Wm9uZUlkICsgJyBMb2FkIEJhbGFuY2VyIEZhdWx0cycsXG4gICAgICAgICAgcmVnaW9uOiBGbi5zdWIoJyR7QVdTOjpSZWdpb259JyksXG4gICAgICAgICAgbGVmdDogW21ldHJpY3NbYXpMZXR0ZXJdXSxcbiAgICAgICAgICBzdGF0aXN0aWM6ICdTdW0nLFxuICAgICAgICAgIGxlZnRZQXhpczoge1xuICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgbGFiZWw6ICdGYXVsdCBDb3VudCcsXG4gICAgICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgICAgLy9XZSdyZSBvbiB0aGUgdGhpcmQgb25lIGZvciB0aGlzIHNldCwgYWRkIDMgYWxhcm1zXG4gICAgICAvL29yIGlmIHdlJ3JlIGF0IHRoZSBlbmQsIGF0IHRoZSBuZWNlc3NhcnkgYW1vdW50XG4gICAgICAvL29mIGFsYXJtcywgMSwgMiwgb3IgM1xuICAgICAgaWYgKGluZGV4ICUgMyA9PSAyIHx8IGluZGV4IC0gMSA9PSBPYmplY3Qua2V5cyhhbGFybXMpLmxlbmd0aCkge1xuICAgICAgICBmb3IgKGxldCBrID0gcm93VHJhY2tlcjsgayA8PSBpbmRleDsgaysrKSB7XG4gICAgICAgICAgbGV0IGF6SWQ6IHN0cmluZyA9IE9iamVjdC5rZXlzKGFsYXJtcykuYXQoaykhO1xuICAgICAgICAgIHdpZGdldHMucHVzaChcbiAgICAgICAgICAgIG5ldyBBbGFybVN0YXR1c1dpZGdldCh7XG4gICAgICAgICAgICAgIGhlaWdodDogMixcbiAgICAgICAgICAgICAgd2lkdGg6IDgsXG4gICAgICAgICAgICAgIGFsYXJtczogW2FsYXJtc1theklkXV0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcm93VHJhY2tlciArPSBpbmRleCArIDE7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gd2lkZ2V0cztcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNyZWF0ZU5hdEdhdGV3YXlXaWRnZXRzKFxuICAgIGFsYXJtczogeyBba2V5OiBzdHJpbmddOiBJQWxhcm0gfSxcbiAgICBtZXRyaWNzOiB7IFtrZXk6IHN0cmluZ106IElNZXRyaWMgfSxcbiAgICBhek1hcHBlcjogQXZhaWxhYmlsaXR5Wm9uZU1hcHBlcixcbiAgKTogSVdpZGdldFtdIHtcbiAgICBsZXQgd2lkZ2V0czogSVdpZGdldFtdID0gW107XG5cbiAgICB3aWRnZXRzLnB1c2goXG4gICAgICBuZXcgVGV4dFdpZGdldCh7XG4gICAgICAgIG1hcmtkb3duOiAnTkFUIEdhdGV3YXkgRHJvcHBlZCBQYWNrZXQgTWV0cmljcycsXG4gICAgICAgIGhlaWdodDogMixcbiAgICAgICAgd2lkdGg6IDI0LFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGxldCByb3dUcmFja2VyOiBudW1iZXIgPSAwO1xuXG4gICAgT2JqZWN0LmtleXMoYWxhcm1zKS5mb3JFYWNoKChhekxldHRlciwgaW5kZXgpID0+IHtcblxuICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZDogc3RyaW5nID0gYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoYXpMZXR0ZXIpO1xuXG4gICAgICB3aWRnZXRzLnB1c2goXG4gICAgICAgIG5ldyBHcmFwaFdpZGdldCh7XG4gICAgICAgICAgaGVpZ2h0OiA2LFxuICAgICAgICAgIHdpZHRoOiA4LFxuICAgICAgICAgIHRpdGxlOiBhdmFpbGFiaWxpdHlab25lSWQgKyAnIE5BVCBHYXRld2F5IERyb3BwZWQgUGFja2V0cycsXG4gICAgICAgICAgcmVnaW9uOiBGbi5zdWIoJyR7QVdTOjpSZWdpb259JyksXG4gICAgICAgICAgbGVmdDogW21ldHJpY3NbYXpMZXR0ZXJdXSxcbiAgICAgICAgICBzdGF0aXN0aWM6ICdTdW0nLFxuICAgICAgICAgIGxlZnRZQXhpczoge1xuICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgbGFiZWw6ICdEcm9wcGVkIHBhY2tldHMnLFxuICAgICAgICAgICAgc2hvd1VuaXRzOiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICk7XG5cbiAgICAgIC8vV2UncmUgb24gdGhlIHRoaXJkIG9uZSBmb3IgdGhpcyBzZXQsIGFkZCAzIGFsYXJtc1xuICAgICAgLy9vciBpZiB3ZSdyZSBhdCB0aGUgZW5kLCBhdCB0aGUgbmVjZXNzYXJ5IGFtb3VudFxuICAgICAgLy9vZiBhbGFybXMsIDEsIDIsIG9yIDNcbiAgICAgIGlmIChpbmRleCAlIDMgPT0gMiB8fCBpbmRleCAtIDEgPT0gT2JqZWN0LmtleXMoYWxhcm1zKS5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChsZXQgayA9IHJvd1RyYWNrZXI7IGsgPD0gaW5kZXg7IGsrKykge1xuICAgICAgICAgIGxldCBheklkOiBzdHJpbmcgPSBPYmplY3Qua2V5cyhhbGFybXMpLmF0KGspITtcbiAgICAgICAgICB3aWRnZXRzLnB1c2goXG4gICAgICAgICAgICBuZXcgQWxhcm1TdGF0dXNXaWRnZXQoe1xuICAgICAgICAgICAgICBoZWlnaHQ6IDIsXG4gICAgICAgICAgICAgIHdpZHRoOiA4LFxuICAgICAgICAgICAgICBhbGFybXM6IFthbGFybXNbYXpJZF1dLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJvd1RyYWNrZXIgKz0gaW5kZXggKyAxO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHdpZGdldHM7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjcmVhdGVUb3BMZXZlbEFsYXJtV2lkZ2V0cyhhbGFybXM6IHtcbiAgICBba2V5OiBzdHJpbmddOiBJQWxhcm07XG4gIH0sXG4gIGF6TWFwcGVyOiBBdmFpbGFiaWxpdHlab25lTWFwcGVyLFxuICApOiBJV2lkZ2V0W10ge1xuICAgIGxldCB3aWRnZXRzOiBJV2lkZ2V0W10gPSBbXTtcblxuICAgIHdpZGdldHMucHVzaChcbiAgICAgIG5ldyBUZXh0V2lkZ2V0KHtcbiAgICAgICAgbWFya2Rvd246ICdBdmFpbGFiaWxpdHkgWm9uZSBJc29sYXRlZCBJbXBhY3QgQWxhcm1zJyxcbiAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICB3aWR0aDogMjQsXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgT2JqZWN0LmtleXMoYWxhcm1zKS5mb3JFYWNoKChhekxldHRlcikgPT4ge1xuICAgICAgbGV0IGF2YWlsYWJpbGl0eVpvbmVJZDogc3RyaW5nID0gYXpNYXBwZXIuYXZhaWxhYmlsaXR5Wm9uZUlkRnJvbUF2YWlsYWJpbGl0eVpvbmVMZXR0ZXIoYXpMZXR0ZXIpO1xuXG4gICAgICB3aWRnZXRzLnB1c2goXG4gICAgICAgIG5ldyBBbGFybVN0YXR1c1dpZGdldCh7XG4gICAgICAgICAgYWxhcm1zOiBbYWxhcm1zW2F6TGV0dGVyXV0sXG4gICAgICAgICAgaGVpZ2h0OiAyLFxuICAgICAgICAgIHdpZHRoOiA4LFxuICAgICAgICAgIHRpdGxlOiBhdmFpbGFiaWxpdHlab25lSWQgKyAnIEFnZ3JlZ2F0ZSBJc29sYXRlZCBJbXBhY3QnLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gd2lkZ2V0cztcbiAgfVxuXG4gIGRhc2hib2FyZDogRGFzaGJvYXJkO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBCYXNpY1NlcnZpY2VEYXNoYm9hcmRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBsZXQgd2lkZ2V0czogSVdpZGdldFtdW10gPSBbXTtcblxuICAgIHdpZGdldHMucHVzaChcbiAgICAgIEJhc2ljU2VydmljZURhc2hib2FyZC5jcmVhdGVUb3BMZXZlbEFsYXJtV2lkZ2V0cyhcbiAgICAgICAgcHJvcHMuem9uYWxBZ2dyZWdhdGVJc29sYXRlZEltcGFjdEFsYXJtcyxcbiAgICAgICAgcHJvcHMuYXpNYXBwZXIsXG4gICAgICApLFxuICAgICk7XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy56b25hbExvYWRCYWxhbmNlcklzb2xhdGVkSW1wYWN0QWxhcm1zICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHByb3BzLnpvbmFsTG9hZEJhbGFuY2VyRmF1bHRSYXRlTWV0cmljcyAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICB3aWRnZXRzLnB1c2goXG4gICAgICAgIEJhc2ljU2VydmljZURhc2hib2FyZC5jcmVhdGVMb2FkQmFsYW5jZXJXaWRnZXRzKFxuICAgICAgICAgIHByb3BzLnpvbmFsTG9hZEJhbGFuY2VySXNvbGF0ZWRJbXBhY3RBbGFybXMsXG4gICAgICAgICAgcHJvcHMuem9uYWxMb2FkQmFsYW5jZXJGYXVsdFJhdGVNZXRyaWNzLFxuICAgICAgICAgIHByb3BzLmF6TWFwcGVyLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy56b25hbE5hdEdhdGV3YXlJc29sYXRlZEltcGFjdEFsYXJtcyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBwcm9wcy56b25hbE5hdEdhdGV3YXlQYWNrZXREcm9wTWV0cmljcyAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICB3aWRnZXRzLnB1c2goXG4gICAgICAgIEJhc2ljU2VydmljZURhc2hib2FyZC5jcmVhdGVOYXRHYXRld2F5V2lkZ2V0cyhcbiAgICAgICAgICBwcm9wcy56b25hbE5hdEdhdGV3YXlJc29sYXRlZEltcGFjdEFsYXJtcyxcbiAgICAgICAgICBwcm9wcy56b25hbE5hdEdhdGV3YXlQYWNrZXREcm9wTWV0cmljcyxcbiAgICAgICAgICBwcm9wcy5hek1hcHBlcixcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5kYXNoYm9hcmQgPSBuZXcgRGFzaGJvYXJkKHRoaXMsICdCYXNpY1NlcnZpY2VEYXNoYm9hcmQnLCB7XG4gICAgICBkYXNoYm9hcmROYW1lOlxuICAgICAgICBwcm9wcy5zZXJ2aWNlTmFtZS50b0xvd2VyQ2FzZSgpICtcbiAgICAgICAgRm4uc3ViKCctc2VydmljZS1hdmFpbGFiaWxpdHktJHtBV1M6OlJlZ2lvbn0nKSxcbiAgICAgIGRlZmF1bHRJbnRlcnZhbDogcHJvcHMuaW50ZXJ2YWwsXG4gICAgICBwZXJpb2RPdmVycmlkZTogUGVyaW9kT3ZlcnJpZGUuSU5IRVJJVCxcbiAgICAgIHdpZGdldHM6IHdpZGdldHMsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==