UNPKG

cdk-monitoring-constructs

Version:

[![NPM version](https://badge.fury.io/js/cdk-monitoring-constructs.svg)](https://badge.fury.io/js/cdk-monitoring-constructs) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.github.cdklabs/cdkmonitoringconstructs/badge.svg)](https://m

93 lines 15.2 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.ApiGatewayV2HttpApiMetricFactory = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const common_1 = require("../../common"); const ApiGatewayNamespace = "AWS/ApiGateway"; class ApiGatewayV2HttpApiMetricFactory extends common_1.BaseMetricFactory { constructor(metricFactory, props) { super(metricFactory, props); this.fillTpsWithZeroes = props.fillTpsWithZeroes ?? true; this.rateComputationMethod = props.rateComputationMethod ?? common_1.RateComputationMethod.AVERAGE; this.dimensionsMap = { ApiId: props.api.apiId, Stage: props.apiStage ?? "$default", ...(props.apiMethod && { Method: props.apiMethod }), ...(props.apiResource && { Resource: props.apiResource }), }; } /** * @deprecated use metricInvocationRate */ metricTps() { return this.metricInvocationRate(common_1.RateComputationMethod.PER_SECOND); } metricInvocationRate(rateComputationMethod) { return this.metricFactory.toRate(this.metricInvocationCount(), rateComputationMethod ?? this.rateComputationMethod, false, "requests"); } metricInvocationCount() { return this.metricFactory.createMetric("Count", common_1.MetricStatistic.SUM, "Invocations", this.dimensionsMap, undefined, ApiGatewayNamespace); } metric4xxCount() { return this.metricFactory.createMetric("4xx", common_1.MetricStatistic.SUM, "4xx", this.dimensionsMap, undefined, ApiGatewayNamespace, undefined, this.region, this.account); } metric4xxRate() { return this.metricFactory.toRate(this.metric4xxCount(), this.rateComputationMethod, false, "errors"); } metric5xxCount() { return this.metricFactory.createMetric("5xx", common_1.MetricStatistic.SUM, "5xx", this.dimensionsMap, undefined, ApiGatewayNamespace, undefined, this.region, this.account); } metric5xxRate() { return this.metricFactory.toRate(this.metric5xxCount(), this.rateComputationMethod, false, "faults"); } /** * @deprecated Use {@link metricLatencyInMillis} instead. */ metricLatencyP50InMillis() { return this.metricLatencyInMillis(common_1.LatencyType.P50); } /** * @deprecated Use {@link metricLatencyInMillis} instead. */ metricLatencyP90InMillis() { return this.metricLatencyInMillis(common_1.LatencyType.P90); } /** * @deprecated Use {@link metricLatencyInMillis} instead. */ metricLatencyP99InMillis() { return this.metricLatencyInMillis(common_1.LatencyType.P99); } /** * @deprecated Use {@link metricIntegrationLatencyInMillis} instead. */ metricIntegrationLatencyP50InMillis() { return this.metricIntegrationLatencyInMillis(common_1.LatencyType.P50); } /** * @deprecated Use {@link metricIntegrationLatencyInMillis} instead. */ metricIntegrationLatencyP90InMillis() { return this.metricIntegrationLatencyInMillis(common_1.LatencyType.P90); } /** * @deprecated Use {@link metricIntegrationLatencyInMillis} instead. */ metricIntegrationLatencyP99InMillis() { return this.metricIntegrationLatencyInMillis(common_1.LatencyType.P99); } metricIntegrationLatencyInMillis(latencyType) { const label = (0, common_1.getLatencyTypeLabel)(latencyType); return this.metricFactory.createMetric("IntegrationLatency", (0, common_1.getLatencyTypeStatistic)(latencyType), label, this.dimensionsMap, undefined, ApiGatewayNamespace, undefined, this.region, this.account); } metricLatencyInMillis(latencyType) { const label = (0, common_1.getLatencyTypeLabel)(latencyType); return this.metricFactory.createMetric("Latency", (0, common_1.getLatencyTypeStatistic)(latencyType), label, this.dimensionsMap, undefined, ApiGatewayNamespace, undefined, this.region, this.account); } } exports.ApiGatewayV2HttpApiMetricFactory = ApiGatewayV2HttpApiMetricFactory; _a = JSII_RTTI_SYMBOL_1; ApiGatewayV2HttpApiMetricFactory[_a] = { fqn: "cdk-monitoring-constructs.ApiGatewayV2HttpApiMetricFactory", version: "10.2.0" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpR2F0ZXdheVYySHR0cEFwaU1ldHJpY0ZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJBcGlHYXRld2F5VjJIdHRwQXBpTWV0cmljRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLHlDQVNzQjtBQUV0QixNQUFNLG1CQUFtQixHQUFHLGdCQUFnQixDQUFDO0FBMkI3QyxNQUFhLGdDQUFpQyxTQUFRLDBCQUFpQjtJQUtyRSxZQUNFLGFBQTRCLEVBQzVCLEtBQTRDO1FBRTVDLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFNUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUM7UUFDekQsSUFBSSxDQUFDLHFCQUFxQjtZQUN4QixLQUFLLENBQUMscUJBQXFCLElBQUksOEJBQXFCLENBQUMsT0FBTyxDQUFDO1FBQy9ELElBQUksQ0FBQyxhQUFhLEdBQUc7WUFDbkIsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSztZQUN0QixLQUFLLEVBQUUsS0FBSyxDQUFDLFFBQVEsSUFBSSxVQUFVO1lBQ25DLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuRCxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDMUQsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyw4QkFBcUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsb0JBQW9CLENBQUMscUJBQTZDO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQzlCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUM1QixxQkFBcUIsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQ25ELEtBQUssRUFDTCxVQUFVLENBQ1gsQ0FBQztJQUNKLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FDcEMsT0FBTyxFQUNQLHdCQUFlLENBQUMsR0FBRyxFQUNuQixhQUFhLEVBQ2IsSUFBSSxDQUFDLGFBQWEsRUFDbEIsU0FBUyxFQUNULG1CQUFtQixDQUNwQixDQUFDO0lBQ0osQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUNwQyxLQUFLLEVBQ0wsd0JBQWUsQ0FBQyxHQUFHLEVBQ25CLEtBQUssRUFDTCxJQUFJLENBQUMsYUFBYSxFQUNsQixTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLFNBQVMsRUFDVCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FDOUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUNyQixJQUFJLENBQUMscUJBQXFCLEVBQzFCLEtBQUssRUFDTCxRQUFRLENBQ1QsQ0FBQztJQUNKLENBQUM7SUFFRCxjQUFjO1FBQ1osT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FDcEMsS0FBSyxFQUNMLHdCQUFlLENBQUMsR0FBRyxFQUNuQixLQUFLLEVBQ0wsSUFBSSxDQUFDLGFBQWEsRUFDbEIsU0FBUyxFQUNULG1CQUFtQixFQUNuQixTQUFTLEVBQ1QsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsT0FBTyxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQzlCLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFDckIsSUFBSSxDQUFDLHFCQUFxQixFQUMxQixLQUFLLEVBQ0wsUUFBUSxDQUNULENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsb0JBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsb0JBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsb0JBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQ0FBbUM7UUFDakMsT0FBTyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsb0JBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQ0FBbUM7UUFDakMsT0FBTyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsb0JBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQ0FBbUM7UUFDakMsT0FBTyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsb0JBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsZ0NBQWdDLENBQUMsV0FBd0I7UUFDdkQsTUFBTSxLQUFLLEdBQUcsSUFBQSw0QkFBbUIsRUFBQyxXQUFXLENBQUMsQ0FBQztRQUMvQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUNwQyxvQkFBb0IsRUFDcEIsSUFBQSxnQ0FBdUIsRUFBQyxXQUFXLENBQUMsRUFDcEMsS0FBSyxFQUNMLElBQUksQ0FBQyxhQUFhLEVBQ2xCLFNBQVMsRUFDVCxtQkFBbUIsRUFDbkIsU0FBUyxFQUNULElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELHFCQUFxQixDQUFDLFdBQXdCO1FBQzVDLE1BQU0sS0FBSyxHQUFHLElBQUEsNEJBQW1CLEVBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0MsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FDcEMsU0FBUyxFQUNULElBQUEsZ0NBQXVCLEVBQUMsV0FBVyxDQUFDLEVBQ3BDLEtBQUssRUFDTCxJQUFJLENBQUMsYUFBYSxFQUNsQixTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLFNBQVMsRUFDVCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNKLENBQUM7O0FBcktILDRFQXNLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElIdHRwQXBpIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5djJcIjtcbmltcG9ydCB7IERpbWVuc2lvbnNNYXAgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2hcIjtcblxuaW1wb3J0IHtcbiAgQmFzZU1ldHJpY0ZhY3RvcnksXG4gIEJhc2VNZXRyaWNGYWN0b3J5UHJvcHMsXG4gIGdldExhdGVuY3lUeXBlTGFiZWwsXG4gIGdldExhdGVuY3lUeXBlU3RhdGlzdGljLFxuICBMYXRlbmN5VHlwZSxcbiAgTWV0cmljRmFjdG9yeSxcbiAgTWV0cmljU3RhdGlzdGljLFxuICBSYXRlQ29tcHV0YXRpb25NZXRob2QsXG59IGZyb20gXCIuLi8uLi9jb21tb25cIjtcblxuY29uc3QgQXBpR2F0ZXdheU5hbWVzcGFjZSA9IFwiQVdTL0FwaUdhdGV3YXlcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBcGlHYXRld2F5VjJIdHRwQXBpTWV0cmljRmFjdG9yeVByb3BzXG4gIGV4dGVuZHMgQmFzZU1ldHJpY0ZhY3RvcnlQcm9wcyB7XG4gIHJlYWRvbmx5IGFwaTogSUh0dHBBcGk7XG4gIC8qKlxuICAgKiBAZGVmYXVsdCAtICRkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBhcGlTdGFnZT86IHN0cmluZztcbiAgLyoqXG4gICAqIE9uIHVuZGVmaW5lZCB2YWx1ZSBpcyBub3Qgc2V0IGluIGRpbWVuc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IGFwaU1ldGhvZD86IHN0cmluZztcbiAgLyoqXG4gICAqIE9uIHVuZGVmaW5lZCB2YWx1ZSBpcyBub3Qgc2V0IGluIGRpbWVuc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IGFwaVJlc291cmNlPzogc3RyaW5nO1xuICAvKipcbiAgICogQGRlZmF1bHQgLSB0cnVlXG4gICAqL1xuICByZWFkb25seSBmaWxsVHBzV2l0aFplcm9lcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBAZGVmYXVsdCAtIGF2ZXJhZ2VcbiAgICovXG4gIHJlYWRvbmx5IHJhdGVDb21wdXRhdGlvbk1ldGhvZD86IFJhdGVDb21wdXRhdGlvbk1ldGhvZDtcbn1cblxuZXhwb3J0IGNsYXNzIEFwaUdhdGV3YXlWMkh0dHBBcGlNZXRyaWNGYWN0b3J5IGV4dGVuZHMgQmFzZU1ldHJpY0ZhY3Rvcnkge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsbFRwc1dpdGhaZXJvZXM6IGJvb2xlYW47XG4gIHByb3RlY3RlZCByZWFkb25seSByYXRlQ29tcHV0YXRpb25NZXRob2Q6IFJhdGVDb21wdXRhdGlvbk1ldGhvZDtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRpbWVuc2lvbnNNYXA6IERpbWVuc2lvbnNNYXA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbWV0cmljRmFjdG9yeTogTWV0cmljRmFjdG9yeSxcbiAgICBwcm9wczogQXBpR2F0ZXdheVYySHR0cEFwaU1ldHJpY0ZhY3RvcnlQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIobWV0cmljRmFjdG9yeSwgcHJvcHMpO1xuXG4gICAgdGhpcy5maWxsVHBzV2l0aFplcm9lcyA9IHByb3BzLmZpbGxUcHNXaXRoWmVyb2VzID8/IHRydWU7XG4gICAgdGhpcy5yYXRlQ29tcHV0YXRpb25NZXRob2QgPVxuICAgICAgcHJvcHMucmF0ZUNvbXB1dGF0aW9uTWV0aG9kID8/IFJhdGVDb21wdXRhdGlvbk1ldGhvZC5BVkVSQUdFO1xuICAgIHRoaXMuZGltZW5zaW9uc01hcCA9IHtcbiAgICAgIEFwaUlkOiBwcm9wcy5hcGkuYXBpSWQsXG4gICAgICBTdGFnZTogcHJvcHMuYXBpU3RhZ2UgPz8gXCIkZGVmYXVsdFwiLFxuICAgICAgLi4uKHByb3BzLmFwaU1ldGhvZCAmJiB7IE1ldGhvZDogcHJvcHMuYXBpTWV0aG9kIH0pLFxuICAgICAgLi4uKHByb3BzLmFwaVJlc291cmNlICYmIHsgUmVzb3VyY2U6IHByb3BzLmFwaVJlc291cmNlIH0pLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIG1ldHJpY0ludm9jYXRpb25SYXRlXG4gICAqL1xuICBtZXRyaWNUcHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljSW52b2NhdGlvblJhdGUoUmF0ZUNvbXB1dGF0aW9uTWV0aG9kLlBFUl9TRUNPTkQpO1xuICB9XG5cbiAgbWV0cmljSW52b2NhdGlvblJhdGUocmF0ZUNvbXB1dGF0aW9uTWV0aG9kPzogUmF0ZUNvbXB1dGF0aW9uTWV0aG9kKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS50b1JhdGUoXG4gICAgICB0aGlzLm1ldHJpY0ludm9jYXRpb25Db3VudCgpLFxuICAgICAgcmF0ZUNvbXB1dGF0aW9uTWV0aG9kID8/IHRoaXMucmF0ZUNvbXB1dGF0aW9uTWV0aG9kLFxuICAgICAgZmFsc2UsXG4gICAgICBcInJlcXVlc3RzXCIsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY0ludm9jYXRpb25Db3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmNyZWF0ZU1ldHJpYyhcbiAgICAgIFwiQ291bnRcIixcbiAgICAgIE1ldHJpY1N0YXRpc3RpYy5TVU0sXG4gICAgICBcIkludm9jYXRpb25zXCIsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBBcGlHYXRld2F5TmFtZXNwYWNlLFxuICAgICk7XG4gIH1cblxuICBtZXRyaWM0eHhDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmNyZWF0ZU1ldHJpYyhcbiAgICAgIFwiNHh4XCIsXG4gICAgICBNZXRyaWNTdGF0aXN0aWMuU1VNLFxuICAgICAgXCI0eHhcIixcbiAgICAgIHRoaXMuZGltZW5zaW9uc01hcCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIEFwaUdhdGV3YXlOYW1lc3BhY2UsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0aGlzLnJlZ2lvbixcbiAgICAgIHRoaXMuYWNjb3VudCxcbiAgICApO1xuICB9XG5cbiAgbWV0cmljNHh4UmF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LnRvUmF0ZShcbiAgICAgIHRoaXMubWV0cmljNHh4Q291bnQoKSxcbiAgICAgIHRoaXMucmF0ZUNvbXB1dGF0aW9uTWV0aG9kLFxuICAgICAgZmFsc2UsXG4gICAgICBcImVycm9yc1wiLFxuICAgICk7XG4gIH1cblxuICBtZXRyaWM1eHhDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmNyZWF0ZU1ldHJpYyhcbiAgICAgIFwiNXh4XCIsXG4gICAgICBNZXRyaWNTdGF0aXN0aWMuU1VNLFxuICAgICAgXCI1eHhcIixcbiAgICAgIHRoaXMuZGltZW5zaW9uc01hcCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIEFwaUdhdGV3YXlOYW1lc3BhY2UsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0aGlzLnJlZ2lvbixcbiAgICAgIHRoaXMuYWNjb3VudCxcbiAgICApO1xuICB9XG5cbiAgbWV0cmljNXh4UmF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LnRvUmF0ZShcbiAgICAgIHRoaXMubWV0cmljNXh4Q291bnQoKSxcbiAgICAgIHRoaXMucmF0ZUNvbXB1dGF0aW9uTWV0aG9kLFxuICAgICAgZmFsc2UsXG4gICAgICBcImZhdWx0c1wiLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBtZXRyaWNMYXRlbmN5SW5NaWxsaXN9IGluc3RlYWQuXG4gICAqL1xuICBtZXRyaWNMYXRlbmN5UDUwSW5NaWxsaXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljTGF0ZW5jeUluTWlsbGlzKExhdGVuY3lUeXBlLlA1MCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBtZXRyaWNMYXRlbmN5SW5NaWxsaXN9IGluc3RlYWQuXG4gICAqL1xuICBtZXRyaWNMYXRlbmN5UDkwSW5NaWxsaXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljTGF0ZW5jeUluTWlsbGlzKExhdGVuY3lUeXBlLlA5MCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBtZXRyaWNMYXRlbmN5SW5NaWxsaXN9IGluc3RlYWQuXG4gICAqL1xuICBtZXRyaWNMYXRlbmN5UDk5SW5NaWxsaXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljTGF0ZW5jeUluTWlsbGlzKExhdGVuY3lUeXBlLlA5OSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBtZXRyaWNJbnRlZ3JhdGlvbkxhdGVuY3lJbk1pbGxpc30gaW5zdGVhZC5cbiAgICovXG4gIG1ldHJpY0ludGVncmF0aW9uTGF0ZW5jeVA1MEluTWlsbGlzKCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ludGVncmF0aW9uTGF0ZW5jeUluTWlsbGlzKExhdGVuY3lUeXBlLlA1MCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBtZXRyaWNJbnRlZ3JhdGlvbkxhdGVuY3lJbk1pbGxpc30gaW5zdGVhZC5cbiAgICovXG4gIG1ldHJpY0ludGVncmF0aW9uTGF0ZW5jeVA5MEluTWlsbGlzKCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ludGVncmF0aW9uTGF0ZW5jeUluTWlsbGlzKExhdGVuY3lUeXBlLlA5MCk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayBtZXRyaWNJbnRlZ3JhdGlvbkxhdGVuY3lJbk1pbGxpc30gaW5zdGVhZC5cbiAgICovXG4gIG1ldHJpY0ludGVncmF0aW9uTGF0ZW5jeVA5OUluTWlsbGlzKCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ludGVncmF0aW9uTGF0ZW5jeUluTWlsbGlzKExhdGVuY3lUeXBlLlA5OSk7XG4gIH1cblxuICBtZXRyaWNJbnRlZ3JhdGlvbkxhdGVuY3lJbk1pbGxpcyhsYXRlbmN5VHlwZTogTGF0ZW5jeVR5cGUpIHtcbiAgICBjb25zdCBsYWJlbCA9IGdldExhdGVuY3lUeXBlTGFiZWwobGF0ZW5jeVR5cGUpO1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgXCJJbnRlZ3JhdGlvbkxhdGVuY3lcIixcbiAgICAgIGdldExhdGVuY3lUeXBlU3RhdGlzdGljKGxhdGVuY3lUeXBlKSxcbiAgICAgIGxhYmVsLFxuICAgICAgdGhpcy5kaW1lbnNpb25zTWFwLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgQXBpR2F0ZXdheU5hbWVzcGFjZSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHRoaXMucmVnaW9uLFxuICAgICAgdGhpcy5hY2NvdW50LFxuICAgICk7XG4gIH1cblxuICBtZXRyaWNMYXRlbmN5SW5NaWxsaXMobGF0ZW5jeVR5cGU6IExhdGVuY3lUeXBlKSB7XG4gICAgY29uc3QgbGFiZWwgPSBnZXRMYXRlbmN5VHlwZUxhYmVsKGxhdGVuY3lUeXBlKTtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmNyZWF0ZU1ldHJpYyhcbiAgICAgIFwiTGF0ZW5jeVwiLFxuICAgICAgZ2V0TGF0ZW5jeVR5cGVTdGF0aXN0aWMobGF0ZW5jeVR5cGUpLFxuICAgICAgbGFiZWwsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBBcGlHYXRld2F5TmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxufVxuIl19