react-native-chart-kit
Version:
Beautiful React Native charts for dashboards, reports, and data-rich mobile apps.
136 lines • 22.5 kB
JavaScript
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
import Pie from "paths-js/pie";
import React from "react";
import { View } from "react-native";
import { G, Path, Rect, Svg, Text } from "react-native-svg";
import AbstractChart from "../../shared/AbstractChart";
import { getNumberProp } from "../../shared/utils";
var ProgressChart = /** @class */ (function (_super) {
__extends(ProgressChart, _super);
function ProgressChart() {
return _super !== null && _super.apply(this, arguments) || this;
}
ProgressChart.prototype.render = function () {
var _this = this;
var _a = this.props, width = _a.width, height = _a.height, style = _a.style, data = _a.data, hideLegend = _a.hideLegend, strokeWidth = _a.strokeWidth, radius = _a.radius;
var _b = style.borderRadius, borderRadius = _b === void 0 ? 0 : _b, _c = style.margin, margin = _c === void 0 ? 0 : _c, _d = style.marginRight, marginRight = _d === void 0 ? 0 : _d;
var backgroundRadius = getNumberProp(borderRadius);
if (Array.isArray(data)) {
data = {
data: data
};
}
var pies = data.data.map(function (pieData, i) {
var r = ((height / 2 - 32) /
(Array.isArray(data) ? data.length : data.data.length)) *
i +
radius;
return Pie({
r: r,
R: r,
center: [0, 0],
data: [pieData, 1 - pieData],
accessor: function (x) {
return x;
}
});
});
var pieBackgrounds = data.data.map(function (pieData, i) {
var r = ((height / 2 - 32) /
(Array.isArray(data) ? data.length : data.data.length)) *
i +
radius;
return Pie({
r: r,
R: r,
center: [0, 0],
data: [0.999, 0.001],
accessor: function (x) {
return x;
}
});
});
var withLabel = function (i) {
return data.labels && data.labels[i];
};
var withColor = function (i) {
return data.colors && data.colors[i];
};
var legend = !hideLegend && (<>
<G>
{pies.map(function (_, i) {
return (<Rect key={"legend-color-".concat(i)} width="16px" height="16px" fill={_this.props.withCustomBarColorFromData
? withColor(i)
: _this.props.chartConfig.color(0.2 * (i + 1), i)} rx={8} ry={8} x={_this.props.width / 2.5 - 24} y={-(_this.props.height / 2.5) +
((_this.props.height * 0.8) /
(Array.isArray(data) ? data.length : data.data.length)) *
i +
12}/>);
})}
</G>
<G>
{pies.map(function (_, i) {
return (<Text key={"legend-label-".concat(i)} x={_this.props.width / 2.5} y={-(_this.props.height / 2.5) +
((_this.props.height * 0.8) /
(Array.isArray(data) ? data.length : data.data.length)) *
i +
12 * 2} {..._this.getPropsForLabels()}>
{withLabel(i)
? "".concat(data.labels[i], " ").concat(Math.round(100 * data.data[i]), "%")
: "".concat(Math.round(100 * data.data[i]), "%")}
</Text>);
})}
</G>
</>);
return (<View style={__assign({ width: width, height: height, padding: 0 }, style)}>
<Svg width={width - margin * 2 - marginRight} height={height}>
{this.renderDefs(__assign({ width: this.props.height, height: this.props.height }, this.props.chartConfig))}
<Rect width="100%" height={this.props.height} rx={backgroundRadius} ry={backgroundRadius} fill={this.getGradientUrl("backgroundGradient")}/>
<G x={this.props.width / (hideLegend ? 2 : 2.5)} y={this.props.height / 2}>
<G>
{pieBackgrounds.map(function (pie, i) {
return (<Path key={"progress-background-".concat(i)} d={pie.curves[0].sector.path.print()} strokeWidth={strokeWidth} stroke={_this.props.chartConfig.color(0.2, i)}/>);
})}
</G>
<G>
{pies.map(function (pie, i) {
return (<Path key={"progress-path-".concat(i)} strokeLinecap="round" strokeLinejoin="round" d={pie.curves[0].sector.path.print()} strokeWidth={strokeWidth} stroke={_this.props.withCustomBarColorFromData
? withColor(i)
: _this.props.chartConfig.color((i / pies.length) * 0.5 + 0.5, i)}/>);
})}
</G>
{legend}
</G>
</Svg>
</View>);
};
ProgressChart.defaultProps = { style: {}, strokeWidth: 16, radius: 32 };
return ProgressChart;
}(AbstractChart));
export default ProgressChart;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvZ3Jlc3NDaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jaGFydHMvcHJvZ3Jlc3MvUHJvZ3Jlc3NDaGFydC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDL0IsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxJQUFJLEVBQWEsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU1RCxPQUFPLGFBR04sTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUF1Qm5EO0lBQTRCLGlDQUczQjtJQUhEOztJQXVMQSxDQUFDO0lBakxDLDhCQUFNLEdBQU47UUFBQSxpQkFnTEM7UUEvS0ssSUFBQSxLQUNGLElBQUksQ0FBQyxLQUFLLEVBRE4sS0FBSyxXQUFBLEVBQUUsTUFBTSxZQUFBLEVBQUUsS0FBSyxXQUFBLEVBQUUsSUFBSSxVQUFBLEVBQUUsVUFBVSxnQkFBQSxFQUFFLFdBQVcsaUJBQUEsRUFBRSxNQUFNLFlBQ3JELENBQUM7UUFFTCxJQUFBLEtBQWtELEtBQUssYUFBdkMsRUFBaEIsWUFBWSxtQkFBRyxDQUFDLEtBQUEsRUFBRSxLQUFnQyxLQUFLLE9BQTNCLEVBQVYsTUFBTSxtQkFBRyxDQUFDLEtBQUEsRUFBRSxLQUFvQixLQUFLLFlBQVYsRUFBZixXQUFXLG1CQUFHLENBQUMsS0FBQSxDQUFXO1FBQ2hFLElBQU0sZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXJELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3hCLElBQUks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LENBQUMsQ0FDckMsV0FBVyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQ3pCLE1BQU0sQ0FBQyxDQUNMLEtBQUksQ0FBQyxLQUFLLENBQUMsMEJBQTBCO3dCQUNuQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQzt3QkFDZCxDQUFDLENBQUMsS0FBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUMxQixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsRUFDN0IsQ0FBQyxDQUVULENBQUMsRUFDRCxDQUNILENBQUM7WUFDSixDQUFDLENBQUMsQ0FDSjtZQUFBLEVBQUUsQ0FBQyxDQUNIO1lBQUEsQ0FBQyxNQUFNLENBQ1Q7VUFBQSxFQUFFLENBQUMsQ0FDTDtRQUFBLEVBQUUsR0FBRyxDQUNQO01BQUEsRUFBRSxJQUFJLENBQUMsQ0FDUixDQUFDO0lBQ0osQ0FBQztJQWxMYSwwQkFBWSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztJQW1MMUUsb0JBQUM7Q0FBQSxBQXZMRCxDQUE0QixhQUFhLEdBdUx4QztBQUVELGVBQWUsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFBpZSBmcm9tIFwicGF0aHMtanMvcGllXCI7XG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBWaWV3LCBWaWV3U3R5bGUgfSBmcm9tIFwicmVhY3QtbmF0aXZlXCI7XG5pbXBvcnQgeyBHLCBQYXRoLCBSZWN0LCBTdmcsIFRleHQgfSBmcm9tIFwicmVhY3QtbmF0aXZlLXN2Z1wiO1xuXG5pbXBvcnQgQWJzdHJhY3RDaGFydCwge1xuICBBYnN0cmFjdENoYXJ0Q29uZmlnLFxuICBBYnN0cmFjdENoYXJ0UHJvcHNcbn0gZnJvbSBcIi4uLy4uL3NoYXJlZC9BYnN0cmFjdENoYXJ0XCI7XG5pbXBvcnQgeyBnZXROdW1iZXJQcm9wIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC91dGlsc1wiO1xuXG5leHBvcnQgdHlwZSBQcm9ncmVzc0NoYXJ0RGF0YSA9XG4gIHwgQXJyYXk8bnVtYmVyPlxuICB8IHsgbGFiZWxzPzogQXJyYXk8c3RyaW5nPjsgY29sb3JzPzogQXJyYXk8c3RyaW5nPjsgZGF0YTogQXJyYXk8bnVtYmVyPiB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb2dyZXNzQ2hhcnRQcm9wcyBleHRlbmRzIEFic3RyYWN0Q2hhcnRQcm9wcyB7XG4gIGRhdGE6IFByb2dyZXNzQ2hhcnREYXRhO1xuICB3aWR0aDogbnVtYmVyO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgY2VudGVyPzogQXJyYXk8bnVtYmVyPjtcbiAgYWJzb2x1dGU/OiBib29sZWFuO1xuICBoYXNMZWdlbmQ/OiBib29sZWFuO1xuICBzdHlsZT86IFBhcnRpYWw8Vmlld1N0eWxlPjtcbiAgY2hhcnRDb25maWc/OiBBYnN0cmFjdENoYXJ0Q29uZmlnO1xuICBoaWRlTGVnZW5kPzogYm9vbGVhbjtcbiAgc3Ryb2tlV2lkdGg/OiBudW1iZXI7XG4gIHJhZGl1cz86IG51bWJlcjtcbiAgd2l0aEN1c3RvbUJhckNvbG9yRnJvbURhdGE/OiBib29sZWFuO1xufVxuXG50eXBlIFByb2dyZXNzQ2hhcnRTdGF0ZSA9IHt9O1xuXG5jbGFzcyBQcm9ncmVzc0NoYXJ0IGV4dGVuZHMgQWJzdHJhY3RDaGFydDxcbiAgUHJvZ3Jlc3NDaGFydFByb3BzLFxuICBQcm9ncmVzc0NoYXJ0U3RhdGVcbj4ge1xuICBwdWJsaWMgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHsgc3R5bGU6IHt9LCBzdHJva2VXaWR0aDogMTYsIHJhZGl1czogMzIgfTtcblxuICByZW5kZXIoKSB7XG4gICAgbGV0IHsgd2lkdGgsIGhlaWdodCwgc3R5bGUsIGRhdGEsIGhpZGVMZWdlbmQsIHN0cm9rZVdpZHRoLCByYWRpdXMgfSA9XG4gICAgICB0aGlzLnByb3BzO1xuXG4gICAgY29uc3QgeyBib3JkZXJSYWRpdXMgPSAwLCBtYXJnaW4gPSAwLCBtYXJnaW5SaWdodCA9IDAgfSA9IHN0eWxlO1xuICAgIGNvbnN0IGJhY2tncm91bmRSYWRpdXMgPSBnZXROdW1iZXJQcm9wKGJvcmRlclJhZGl1cyk7XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgICAgZGF0YSA9IHtcbiAgICAgICAgZGF0YVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBwaWVzID0gZGF0YS5kYXRhLm1hcCgocGllRGF0YSwgaSkgPT4ge1xuICAgICAgY29uc3QgciA9XG4gICAgICAgICgoaGVpZ2h0IC8gMiAtIDMyKSAvXG4gICAgICAgICAgKEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhLmxlbmd0aCA6IGRhdGEuZGF0YS5sZW5ndGgpKSAqXG4gICAgICAgICAgaSArXG4gICAgICAgIHJhZGl1cztcblxuICAgICAgcmV0dXJuIFBpZSh7XG4gICAgICAgIHIsXG4gICAgICAgIFI6IHIsXG4gICAgICAgIGNlbnRlcjogWzAsIDBdLFxuICAgICAgICBkYXRhOiBbcGllRGF0YSwgMSAtIHBpZURhdGFdLFxuICAgICAgICBhY2Nlc3Nvcih4OiBzdHJpbmcpIHtcbiAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBwaWVCYWNrZ3JvdW5kcyA9IGRhdGEuZGF0YS5tYXAoKHBpZURhdGEsIGkpID0+IHtcbiAgICAgIGNvbnN0IHIgPVxuICAgICAgICAoKGhlaWdodCAvIDIgLSAzMikgL1xuICAgICAgICAgIChBcnJheS5pc0FycmF5KGRhdGEpID8gZGF0YS5sZW5ndGggOiBkYXRhLmRhdGEubGVuZ3RoKSkgKlxuICAgICAgICAgIGkgK1xuICAgICAgICByYWRpdXM7XG4gICAgICByZXR1cm4gUGllKHtcbiAgICAgICAgcixcbiAgICAgICAgUjogcixcbiAgICAgICAgY2VudGVyOiBbMCwgMF0sXG4gICAgICAgIGRhdGE6IFswLjk5OSwgMC4wMDFdLFxuICAgICAgICBhY2Nlc3Nvcih4OiBzdHJpbmcpIHtcbiAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCB3aXRoTGFiZWwgPSAoaTogbnVtYmVyKSA9PlxuICAgICAgKGRhdGEgYXMgYW55KS5sYWJlbHMgJiYgKGRhdGEgYXMgYW55KS5sYWJlbHNbaV07XG5cbiAgICBjb25zdCB3aXRoQ29sb3IgPSAoaTogbnVtYmVyKSA9PlxuICAgICAgKGRhdGEgYXMgYW55KS5jb2xvcnMgJiYgKGRhdGEgYXMgYW55KS5jb2xvcnNbaV07XG5cbiAgICBjb25zdCBsZWdlbmQgPSAhaGlkZUxlZ2VuZCAmJiAoXG4gICAgICA8PlxuICAgICAgICA8Rz5cbiAgICAgICAgICB7cGllcy5tYXAoKF8sIGkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxSZWN0XG4gICAgICAgICAgICAgICAga2V5PXtgbGVnZW5kLWNvbG9yLSR7aX1gfVxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZweFwiXG4gICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZweFwiXG4gICAgICAgICAgICAgICAgZmlsbD17XG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLndpdGhDdXN0b21CYXJDb2xvckZyb21EYXRhXG4gICAgICAgICAgICAgICAgICAgID8gd2l0aENvbG9yKGkpXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5wcm9wcy5jaGFydENvbmZpZy5jb2xvcigwLjIgKiAoaSArIDEpLCBpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByeD17OH1cbiAgICAgICAgICAgICAgICByeT17OH1cbiAgICAgICAgICAgICAgICB4PXt0aGlzLnByb3BzLndpZHRoIC8gMi41IC0gMjR9XG4gICAgICAgICAgICAgICAgeT17XG4gICAgICAgICAgICAgICAgICAtKHRoaXMucHJvcHMuaGVpZ2h0IC8gMi41KSArXG4gICAgICAgICAgICAgICAgICAoKHRoaXMucHJvcHMuaGVpZ2h0ICogMC44KSAvXG4gICAgICAgICAgICAgICAgICAgIChBcnJheS5pc0FycmF5KGRhdGEpID8gZGF0YS5sZW5ndGggOiBkYXRhLmRhdGEubGVuZ3RoKSkgKlxuICAgICAgICAgICAgICAgICAgICBpICtcbiAgICAgICAgICAgICAgICAgIDEyXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9HPlxuICAgICAgICA8Rz5cbiAgICAgICAgICB7cGllcy5tYXAoKF8sIGkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAga2V5PXtgbGVnZW5kLWxhYmVsLSR7aX1gfVxuICAgICAgICAgICAgICAgIHg9e3RoaXMucHJvcHMud2lkdGggLyAyLjV9XG4gICAgICAgICAgICAgICAgeT17XG4gICAgICAgICAgICAgICAgICAtKHRoaXMucHJvcHMuaGVpZ2h0IC8gMi41KSArXG4gICAgICAgICAgICAgICAgICAoKHRoaXMucHJvcHMuaGVpZ2h0ICogMC44KSAvXG4gICAgICAgICAgICAgICAgICAgIChBcnJheS5pc0FycmF5KGRhdGEpID8gZGF0YS5sZW5ndGggOiBkYXRhLmRhdGEubGVuZ3RoKSkgKlxuICAgICAgICAgICAgICAgICAgICBpICtcbiAgICAgICAgICAgICAgICAgIDEyICogMlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7Li4udGhpcy5nZXRQcm9wc0ZvckxhYmVscygpfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3dpdGhMYWJlbChpKVxuICAgICAgICAgICAgICAgICAgPyBgJHsoZGF0YSBhcyBhbnkpLmxhYmVsc1tpXX0gJHtNYXRoLnJvdW5kKFxuICAgICAgICAgICAgICAgICAgICAgIDEwMCAqIChkYXRhIGFzIGFueSkuZGF0YVtpXVxuICAgICAgICAgICAgICAgICAgICApfSVgXG4gICAgICAgICAgICAgICAgICA6IGAke01hdGgucm91bmQoMTAwICogKGRhdGEgYXMgYW55KS5kYXRhW2ldKX0lYH1cbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC9HPlxuICAgICAgPC8+XG4gICAgKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8Vmlld1xuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgIC4uLnN0eWxlXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxTdmdcbiAgICAgICAgICB3aWR0aD17d2lkdGggLSAobWFyZ2luIGFzIG51bWJlcikgKiAyIC0gKG1hcmdpblJpZ2h0IGFzIG51bWJlcil9XG4gICAgICAgICAgaGVpZ2h0PXtoZWlnaHR9XG4gICAgICAgID5cbiAgICAgICAgICB7dGhpcy5yZW5kZXJEZWZzKHtcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLnByb3BzLmhlaWdodCxcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy5wcm9wcy5oZWlnaHQsXG4gICAgICAgICAgICAuLi50aGlzLnByb3BzLmNoYXJ0Q29uZmlnXG4gICAgICAgICAgfSl9XG4gICAgICAgICAgPFJlY3RcbiAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiXG4gICAgICAgICAgICBoZWlnaHQ9e3RoaXMucHJvcHMuaGVpZ2h0fVxuICAgICAgICAgICAgcng9e2JhY2tncm91bmRSYWRpdXN9XG4gICAgICAgICAgICByeT17YmFja2dyb3VuZFJhZGl1c31cbiAgICAgICAgICAgIGZpbGw9e3RoaXMuZ2V0R3JhZGllbnRVcmwoXCJiYWNrZ3JvdW5kR3JhZGllbnRcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8R1xuICAgICAgICAgICAgeD17dGhpcy5wcm9wcy53aWR0aCAvIChoaWRlTGVnZW5kID8gMiA6IDIuNSl9XG4gICAgICAgICAgICB5PXt0aGlzLnByb3BzLmhlaWdodCAvIDJ9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEc+XG4gICAgICAgICAgICAgIHtwaWVCYWNrZ3JvdW5kcy5tYXAoKHBpZSwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8UGF0aFxuICAgICAgICAgICAgICAgICAgICBrZXk9e2Bwcm9ncmVzcy1iYWNrZ3JvdW5kLSR7aX1gfVxuICAgICAgICAgICAgICAgICAgICBkPXtwaWUuY3VydmVzWzBdLnNlY3Rvci5wYXRoLnByaW50KCl9XG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXtzdHJva2VXaWR0aH1cbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPXt0aGlzLnByb3BzLmNoYXJ0Q29uZmlnLmNvbG9yKDAuMiwgaSl9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPC9HPlxuICAgICAgICAgICAgPEc+XG4gICAgICAgICAgICAgIHtwaWVzLm1hcCgocGllLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxQYXRoXG4gICAgICAgICAgICAgICAgICAgIGtleT17YHByb2dyZXNzLXBhdGgtJHtpfWB9XG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICBkPXtwaWUuY3VydmVzWzBdLnNlY3Rvci5wYXRoLnByaW50KCl9XG4gICAgICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXtzdHJva2VXaWR0aH1cbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPXtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLndpdGhDdXN0b21CYXJDb2xvckZyb21EYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHdpdGhDb2xvcihpKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnByb3BzLmNoYXJ0Q29uZmlnLmNvbG9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpIC8gcGllcy5sZW5ndGgpICogMC41ICsgMC41LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPC9HPlxuICAgICAgICAgICAge2xlZ2VuZH1cbiAgICAgICAgICA8L0c+XG4gICAgICAgIDwvU3ZnPlxuICAgICAgPC9WaWV3PlxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUHJvZ3Jlc3NDaGFydDtcbiJdfQ==