cdk-monitoring-constructs
Version:
[](https://badge.fury.io/js/cdk-monitoring-constructs) [](https://m
54 lines • 13 kB
JavaScript
"use strict";
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OpenSearchIngestionPipelineMetricFactory = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const common_1 = require("../../common");
const OpenSearchIngestionNamespace = "AWS/OSIS";
/**
* @experimental This is subject to change if an L2 construct becomes available.
*
* @see https://docs.aws.amazon.com/opensearch-service/latest/developerguide/monitoring-pipeline-metrics.html
*/
class OpenSearchIngestionPipelineMetricFactory extends common_1.BaseMetricFactory {
constructor(metricFactory, props) {
super(metricFactory, props);
this.subPipelineName = props.subPipelineName;
this.source = props.source;
this.sink = props.sink;
this.dimensionsMap = {
PipelineName: props.pipelineName,
};
}
metricSourceBytesReceivedSum() {
return this.metricFactory.createMetric(`${this.subPipelineName}.${this.source}.bytesReceived.sum`, common_1.MetricStatistic.SUM, `${this.source}.bytesReceived.sum`, this.dimensionsMap, undefined, OpenSearchIngestionNamespace, undefined, this.region, this.account);
}
metricSinkBulkRequestLatencyMax() {
return this.metricFactory.createMetric(`${this.subPipelineName}.${this.sink}.bulkRequestLatency.max`, common_1.MetricStatistic.MAX, `${this.sink}.bulkRequestLatency.max`, this.dimensionsMap, undefined, OpenSearchIngestionNamespace, undefined, this.region, this.account);
}
metricSinkBulkPipelineLatencyMax() {
return this.metricFactory.createMetric(`${this.subPipelineName}.${this.sink}.PipelineLatency.max`, common_1.MetricStatistic.MAX, `${this.sink}.PipelineLatency.max`, this.dimensionsMap, undefined, OpenSearchIngestionNamespace, undefined, this.region, this.account);
}
metricRecordsProcessedCount() {
return this.metricFactory.createMetric(`${this.subPipelineName}.recordsProcessed.count`, common_1.MetricStatistic.SUM, "recordsProcessed.count", this.dimensionsMap, undefined, OpenSearchIngestionNamespace, undefined, this.region, this.account);
}
metricSinkRecordsInCount() {
return this.metricFactory.createMetric(`${this.subPipelineName}.${this.sink}.recordsIn.count`, common_1.MetricStatistic.SUM, `${this.sink}.recordsIn.count`, this.dimensionsMap, undefined, OpenSearchIngestionNamespace, undefined, this.region, this.account);
}
metricDlqS3RecordsCount() {
return this.metricFactory.createMetricMath("successCount + failedCount", {
successCount: this.metricDlqS3RecordsSuccessCount(),
failedCount: this.metricDlqS3RecordsFailedCount(),
}, "DLQ records count");
}
metricDlqS3RecordsSuccessCount() {
return this.metricFactory.createMetric(`${this.subPipelineName}.${this.sink}.s3.dlqS3RecordsSuccess.count`, common_1.MetricStatistic.SUM, "s3.dlqS3RecordsSuccess.count", this.dimensionsMap, undefined, OpenSearchIngestionNamespace, undefined, this.region, this.account);
}
metricDlqS3RecordsFailedCount() {
return this.metricFactory.createMetric(`${this.subPipelineName}.${this.sink}.s3.dlqS3RecordsFailed.count`, common_1.MetricStatistic.SUM, "s3.dlqS3RecordsFailed.count", this.dimensionsMap, undefined, OpenSearchIngestionNamespace, undefined, this.region, this.account);
}
}
exports.OpenSearchIngestionPipelineMetricFactory = OpenSearchIngestionPipelineMetricFactory;
_a = JSII_RTTI_SYMBOL_1;
OpenSearchIngestionPipelineMetricFactory[_a] = { fqn: "cdk-monitoring-constructs.OpenSearchIngestionPipelineMetricFactory", version: "10.2.0" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlblNlYXJjaEluZ2VzdGlvblBpcGVsaW5lTWV0cmljRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIk9wZW5TZWFyY2hJbmdlc3Rpb25QaXBlbGluZU1ldHJpY0ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSx5Q0FNc0I7QUFFdEIsTUFBTSw0QkFBNEIsR0FBRyxVQUFVLENBQUM7QUFVaEQ7Ozs7R0FJRztBQUNILE1BQWEsd0NBQXlDLFNBQVEsMEJBQWlCO0lBTzdFLFlBQ0UsYUFBNEIsRUFDNUIsS0FBb0Q7UUFFcEQsS0FBSyxDQUFDLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUU1QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLENBQUM7UUFDN0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUV2QixJQUFJLENBQUMsYUFBYSxHQUFHO1lBQ25CLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtTQUNqQyxDQUFDO0lBQ0osQ0FBQztJQUVELDRCQUE0QjtRQUMxQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUNwQyxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLE1BQU0sb0JBQW9CLEVBQzFELHdCQUFlLENBQUMsR0FBRyxFQUNuQixHQUFHLElBQUksQ0FBQyxNQUFNLG9CQUFvQixFQUNsQyxJQUFJLENBQUMsYUFBYSxFQUNsQixTQUFTLEVBQ1QsNEJBQTRCLEVBQzVCLFNBQVMsRUFDVCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFFRCwrQkFBK0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FDcEMsR0FBRyxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxJQUFJLHlCQUF5QixFQUM3RCx3QkFBZSxDQUFDLEdBQUcsRUFDbkIsR0FBRyxJQUFJLENBQUMsSUFBSSx5QkFBeUIsRUFDckMsSUFBSSxDQUFDLGFBQWEsRUFDbEIsU0FBUyxFQUNULDRCQUE0QixFQUM1QixTQUFTLEVBQ1QsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsT0FBTyxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsZ0NBQWdDO1FBQzlCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQ3BDLEdBQUcsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsSUFBSSxzQkFBc0IsRUFDMUQsd0JBQWUsQ0FBQyxHQUFHLEVBQ25CLEdBQUcsSUFBSSxDQUFDLElBQUksc0JBQXNCLEVBQ2xDLElBQUksQ0FBQyxhQUFhLEVBQ2xCLFNBQVMsRUFDVCw0QkFBNEIsRUFDNUIsU0FBUyxFQUNULElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELDJCQUEyQjtRQUN6QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUNwQyxHQUFHLElBQUksQ0FBQyxlQUFlLHlCQUF5QixFQUNoRCx3QkFBZSxDQUFDLEdBQUcsRUFDbkIsd0JBQXdCLEVBQ3hCLElBQUksQ0FBQyxhQUFhLEVBQ2xCLFNBQVMsRUFDVCw0QkFBNEIsRUFDNUIsU0FBUyxFQUNULElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELHdCQUF3QjtRQUN0QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUNwQyxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLElBQUksa0JBQWtCLEVBQ3RELHdCQUFlLENBQUMsR0FBRyxFQUNuQixHQUFHLElBQUksQ0FBQyxJQUFJLGtCQUFrQixFQUM5QixJQUFJLENBQUMsYUFBYSxFQUNsQixTQUFTLEVBQ1QsNEJBQTRCLEVBQzVCLFNBQVMsRUFDVCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUN4Qyw0QkFBNEIsRUFDNUI7WUFDRSxZQUFZLEVBQUUsSUFBSSxDQUFDLDhCQUE4QixFQUFFO1lBQ25ELFdBQVcsRUFBRSxJQUFJLENBQUMsNkJBQTZCLEVBQUU7U0FDbEQsRUFDRCxtQkFBbUIsQ0FDcEIsQ0FBQztJQUNKLENBQUM7SUFFRCw4QkFBOEI7UUFDNUIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FDcEMsR0FBRyxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxJQUFJLCtCQUErQixFQUNuRSx3QkFBZSxDQUFDLEdBQUcsRUFDbkIsOEJBQThCLEVBQzlCLElBQUksQ0FBQyxhQUFhLEVBQ2xCLFNBQVMsRUFDVCw0QkFBNEIsRUFDNUIsU0FBUyxFQUNULElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELDZCQUE2QjtRQUMzQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUNwQyxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLElBQUksOEJBQThCLEVBQ2xFLHdCQUFlLENBQUMsR0FBRyxFQUNuQiw2QkFBNkIsRUFDN0IsSUFBSSxDQUFDLGFBQWEsRUFDbEIsU0FBUyxFQUNULDRCQUE0QixFQUM1QixTQUFTLEVBQ1QsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsT0FBTyxDQUNiLENBQUM7SUFDSixDQUFDOztBQWpJSCw0RkFrSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERpbWVuc2lvbnNNYXAgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2hcIjtcbmltcG9ydCB7XG4gIEJhc2VNZXRyaWNGYWN0b3J5UHJvcHMsXG4gIEJhc2VNZXRyaWNGYWN0b3J5LFxuICBNZXRyaWNGYWN0b3J5LFxuICBNZXRyaWNXaXRoQWxhcm1TdXBwb3J0LFxuICBNZXRyaWNTdGF0aXN0aWMsXG59IGZyb20gXCIuLi8uLi9jb21tb25cIjtcblxuY29uc3QgT3BlblNlYXJjaEluZ2VzdGlvbk5hbWVzcGFjZSA9IFwiQVdTL09TSVNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBPcGVuU2VhcmNoSW5nZXN0aW9uUGlwZWxpbmVNZXRyaWNGYWN0b3J5UHJvcHNcbiAgZXh0ZW5kcyBCYXNlTWV0cmljRmFjdG9yeVByb3BzIHtcbiAgcmVhZG9ubHkgc3ViUGlwZWxpbmVOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNvdXJjZTogc3RyaW5nO1xuICByZWFkb25seSBzaW5rOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBpcGVsaW5lTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEBleHBlcmltZW50YWwgVGhpcyBpcyBzdWJqZWN0IHRvIGNoYW5nZSBpZiBhbiBMMiBjb25zdHJ1Y3QgYmVjb21lcyBhdmFpbGFibGUuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vb3BlbnNlYXJjaC1zZXJ2aWNlL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9tb25pdG9yaW5nLXBpcGVsaW5lLW1ldHJpY3MuaHRtbFxuICovXG5leHBvcnQgY2xhc3MgT3BlblNlYXJjaEluZ2VzdGlvblBpcGVsaW5lTWV0cmljRmFjdG9yeSBleHRlbmRzIEJhc2VNZXRyaWNGYWN0b3J5IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHN1YlBpcGVsaW5lTmFtZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc291cmNlOiBzdHJpbmc7XG4gIHByb3RlY3RlZCByZWFkb25seSBzaW5rOiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRpbWVuc2lvbnNNYXA6IERpbWVuc2lvbnNNYXA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbWV0cmljRmFjdG9yeTogTWV0cmljRmFjdG9yeSxcbiAgICBwcm9wczogT3BlblNlYXJjaEluZ2VzdGlvblBpcGVsaW5lTWV0cmljRmFjdG9yeVByb3BzLFxuICApIHtcbiAgICBzdXBlcihtZXRyaWNGYWN0b3J5LCBwcm9wcyk7XG5cbiAgICB0aGlzLnN1YlBpcGVsaW5lTmFtZSA9IHByb3BzLnN1YlBpcGVsaW5lTmFtZTtcbiAgICB0aGlzLnNvdXJjZSA9IHByb3BzLnNvdXJjZTtcbiAgICB0aGlzLnNpbmsgPSBwcm9wcy5zaW5rO1xuXG4gICAgdGhpcy5kaW1lbnNpb25zTWFwID0ge1xuICAgICAgUGlwZWxpbmVOYW1lOiBwcm9wcy5waXBlbGluZU5hbWUsXG4gICAgfTtcbiAgfVxuXG4gIG1ldHJpY1NvdXJjZUJ5dGVzUmVjZWl2ZWRTdW0oKTogTWV0cmljV2l0aEFsYXJtU3VwcG9ydCB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWMoXG4gICAgICBgJHt0aGlzLnN1YlBpcGVsaW5lTmFtZX0uJHt0aGlzLnNvdXJjZX0uYnl0ZXNSZWNlaXZlZC5zdW1gLFxuICAgICAgTWV0cmljU3RhdGlzdGljLlNVTSxcbiAgICAgIGAke3RoaXMuc291cmNlfS5ieXRlc1JlY2VpdmVkLnN1bWAsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBPcGVuU2VhcmNoSW5nZXN0aW9uTmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY1NpbmtCdWxrUmVxdWVzdExhdGVuY3lNYXgoKTogTWV0cmljV2l0aEFsYXJtU3VwcG9ydCB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWMoXG4gICAgICBgJHt0aGlzLnN1YlBpcGVsaW5lTmFtZX0uJHt0aGlzLnNpbmt9LmJ1bGtSZXF1ZXN0TGF0ZW5jeS5tYXhgLFxuICAgICAgTWV0cmljU3RhdGlzdGljLk1BWCxcbiAgICAgIGAke3RoaXMuc2lua30uYnVsa1JlcXVlc3RMYXRlbmN5Lm1heGAsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBPcGVuU2VhcmNoSW5nZXN0aW9uTmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY1NpbmtCdWxrUGlwZWxpbmVMYXRlbmN5TWF4KCk6IE1ldHJpY1dpdGhBbGFybVN1cHBvcnQge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgYCR7dGhpcy5zdWJQaXBlbGluZU5hbWV9LiR7dGhpcy5zaW5rfS5QaXBlbGluZUxhdGVuY3kubWF4YCxcbiAgICAgIE1ldHJpY1N0YXRpc3RpYy5NQVgsXG4gICAgICBgJHt0aGlzLnNpbmt9LlBpcGVsaW5lTGF0ZW5jeS5tYXhgLFxuICAgICAgdGhpcy5kaW1lbnNpb25zTWFwLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgT3BlblNlYXJjaEluZ2VzdGlvbk5hbWVzcGFjZSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHRoaXMucmVnaW9uLFxuICAgICAgdGhpcy5hY2NvdW50LFxuICAgICk7XG4gIH1cblxuICBtZXRyaWNSZWNvcmRzUHJvY2Vzc2VkQ291bnQoKTogTWV0cmljV2l0aEFsYXJtU3VwcG9ydCB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWMoXG4gICAgICBgJHt0aGlzLnN1YlBpcGVsaW5lTmFtZX0ucmVjb3Jkc1Byb2Nlc3NlZC5jb3VudGAsXG4gICAgICBNZXRyaWNTdGF0aXN0aWMuU1VNLFxuICAgICAgXCJyZWNvcmRzUHJvY2Vzc2VkLmNvdW50XCIsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBPcGVuU2VhcmNoSW5nZXN0aW9uTmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY1NpbmtSZWNvcmRzSW5Db3VudCgpOiBNZXRyaWNXaXRoQWxhcm1TdXBwb3J0IHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmNyZWF0ZU1ldHJpYyhcbiAgICAgIGAke3RoaXMuc3ViUGlwZWxpbmVOYW1lfS4ke3RoaXMuc2lua30ucmVjb3Jkc0luLmNvdW50YCxcbiAgICAgIE1ldHJpY1N0YXRpc3RpYy5TVU0sXG4gICAgICBgJHt0aGlzLnNpbmt9LnJlY29yZHNJbi5jb3VudGAsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBPcGVuU2VhcmNoSW5nZXN0aW9uTmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY0RscVMzUmVjb3Jkc0NvdW50KCk6IE1ldHJpY1dpdGhBbGFybVN1cHBvcnQge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljTWF0aChcbiAgICAgIFwic3VjY2Vzc0NvdW50ICsgZmFpbGVkQ291bnRcIixcbiAgICAgIHtcbiAgICAgICAgc3VjY2Vzc0NvdW50OiB0aGlzLm1ldHJpY0RscVMzUmVjb3Jkc1N1Y2Nlc3NDb3VudCgpLFxuICAgICAgICBmYWlsZWRDb3VudDogdGhpcy5tZXRyaWNEbHFTM1JlY29yZHNGYWlsZWRDb3VudCgpLFxuICAgICAgfSxcbiAgICAgIFwiRExRIHJlY29yZHMgY291bnRcIixcbiAgICApO1xuICB9XG5cbiAgbWV0cmljRGxxUzNSZWNvcmRzU3VjY2Vzc0NvdW50KCk6IE1ldHJpY1dpdGhBbGFybVN1cHBvcnQge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgYCR7dGhpcy5zdWJQaXBlbGluZU5hbWV9LiR7dGhpcy5zaW5rfS5zMy5kbHFTM1JlY29yZHNTdWNjZXNzLmNvdW50YCxcbiAgICAgIE1ldHJpY1N0YXRpc3RpYy5TVU0sXG4gICAgICBcInMzLmRscVMzUmVjb3Jkc1N1Y2Nlc3MuY291bnRcIixcbiAgICAgIHRoaXMuZGltZW5zaW9uc01hcCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIE9wZW5TZWFyY2hJbmdlc3Rpb25OYW1lc3BhY2UsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0aGlzLnJlZ2lvbixcbiAgICAgIHRoaXMuYWNjb3VudCxcbiAgICApO1xuICB9XG5cbiAgbWV0cmljRGxxUzNSZWNvcmRzRmFpbGVkQ291bnQoKTogTWV0cmljV2l0aEFsYXJtU3VwcG9ydCB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWMoXG4gICAgICBgJHt0aGlzLnN1YlBpcGVsaW5lTmFtZX0uJHt0aGlzLnNpbmt9LnMzLmRscVMzUmVjb3Jkc0ZhaWxlZC5jb3VudGAsXG4gICAgICBNZXRyaWNTdGF0aXN0aWMuU1VNLFxuICAgICAgXCJzMy5kbHFTM1JlY29yZHNGYWlsZWQuY291bnRcIixcbiAgICAgIHRoaXMuZGltZW5zaW9uc01hcCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIE9wZW5TZWFyY2hJbmdlc3Rpb25OYW1lc3BhY2UsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0aGlzLnJlZ2lvbixcbiAgICAgIHRoaXMuYWNjb3VudCxcbiAgICApO1xuICB9XG59XG4iXX0=