nuxeo-development-framework 5.4.9 → 5.5.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.
- package/bundles/nuxeo-development-framework.umd.js +491 -288
- package/bundles/nuxeo-development-framework.umd.js.map +1 -1
- package/esm2015/lib/components/reports/charts/plugins/data-labels.js +166 -102
- package/esm2015/lib/components/reports/charts/utility/colors.js +13 -1
- package/esm2015/lib/components/reports/ndf-reports/base/base-chart.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/base/base-custom-report.js +16 -3
- package/esm2015/lib/components/reports/ndf-reports/base/base-graph.report.js +10 -22
- package/esm2015/lib/components/reports/ndf-reports/base/base-report.js +5 -2
- package/esm2015/lib/components/reports/ndf-reports/charts-components/custom-chart/custom-chart.component.js +68 -0
- package/esm2015/lib/components/reports/ndf-reports/charts-components/index.js +2 -1
- package/esm2015/lib/components/reports/ndf-reports/components/_parts/custom-chart-dialog/custom-chart-dialog.component.js +41 -0
- package/esm2015/lib/components/reports/ndf-reports/components/_parts/index.js +2 -1
- package/esm2015/lib/components/reports/ndf-reports/components/custom-report/custom-report.component.js +23 -37
- package/esm2015/lib/components/reports/ndf-reports/components/dynamic-timeline-report/dynamic-timeline-report.component.js +2 -6
- package/esm2015/lib/components/reports/ndf-reports/containers/ndf-report/ndf-report.component.js +4 -3
- package/esm2015/lib/components/reports/ndf-reports/containers/ndf-reports/ndf-reports.component.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/models/custom-definition.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/dialog-data.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/models/report-config.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/ndf-reports.module.js +5 -3
- package/esm2015/lib/components/reports/ndf-reports/public-api.js +2 -1
- package/esm2015/lib/components/reports/ndf-reports/services/chart-manager.service.js +15 -9
- package/esm2015/lib/components/reports/ndf-reports/services/custom-reports-registry.service.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/services/report-config-mapper.service.js +1 -1
- package/esm2015/lib/components/reports/ndf-reports/services/report-transform.service.js +2 -2
- package/esm2015/lib/components/reports/ndf-reports/services/reports-dialog.service.js +32 -0
- package/fesm2015/nuxeo-development-framework.js +452 -267
- package/fesm2015/nuxeo-development-framework.js.map +1 -1
- package/lib/components/reports/charts/utility/colors.d.ts +5 -0
- package/lib/components/reports/ndf-reports/base/base-chart.d.ts +1 -1
- package/lib/components/reports/ndf-reports/base/base-custom-report.d.ts +18 -13
- package/lib/components/reports/ndf-reports/base/base-graph.report.d.ts +5 -13
- package/lib/components/reports/ndf-reports/base/base-report.d.ts +4 -1
- package/lib/components/reports/ndf-reports/charts-components/custom-chart/custom-chart.component.d.ts +15 -0
- package/lib/components/reports/ndf-reports/charts-components/index.d.ts +1 -0
- package/lib/components/reports/ndf-reports/components/_parts/custom-chart-dialog/custom-chart-dialog.component.d.ts +14 -0
- package/lib/components/reports/ndf-reports/components/_parts/index.d.ts +1 -0
- package/lib/components/reports/ndf-reports/components/custom-report/custom-report.component.d.ts +8 -10
- package/lib/components/reports/ndf-reports/models/custom-definition.d.ts +3 -3
- package/lib/components/reports/ndf-reports/models/dialog-data.d.ts +8 -0
- package/lib/components/reports/ndf-reports/models/report-config.d.ts +2 -2
- package/lib/components/reports/ndf-reports/ndf-reports.module.d.ts +22 -20
- package/lib/components/reports/ndf-reports/public-api.d.ts +1 -0
- package/lib/components/reports/ndf-reports/services/chart-manager.service.d.ts +2 -2
- package/lib/components/reports/ndf-reports/services/custom-reports-registry.service.d.ts +3 -2
- package/lib/components/reports/ndf-reports/services/report-config-mapper.service.d.ts +2 -2
- package/lib/components/reports/ndf-reports/services/reports-dialog.service.d.ts +21 -0
- package/package.json +2 -2
|
@@ -1,144 +1,208 @@
|
|
|
1
1
|
import { getColor, getTextColor } from '../utility';
|
|
2
|
+
// Configuration constants
|
|
3
|
+
const LABEL_CONFIG = {
|
|
4
|
+
minFontSize: 10,
|
|
5
|
+
maxFontSize: 16,
|
|
6
|
+
defaultFontSize: 12,
|
|
7
|
+
textPadding: 8,
|
|
8
|
+
minAngleForPieLabel: 0.3,
|
|
9
|
+
arcRadiusMultiplier: {
|
|
10
|
+
pie: 0.7,
|
|
11
|
+
doughnut: 0.8
|
|
12
|
+
},
|
|
13
|
+
fontSizeCalculation: {
|
|
14
|
+
percentageDivisor: 3,
|
|
15
|
+
maxPercentageForFontSize: 20
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
// Main plugin
|
|
2
19
|
export const chartDataLabels = {
|
|
3
20
|
id: 'chartDataLabels',
|
|
4
21
|
afterDatasetsDraw(chart, args, plugins) {
|
|
5
22
|
var _a;
|
|
6
23
|
const { ctx } = chart;
|
|
7
24
|
ctx.save();
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
case 'pie':
|
|
13
|
-
pieChartLabels(chart);
|
|
14
|
-
break;
|
|
15
|
-
case 'doughnut':
|
|
16
|
-
doughnutChartLabels(chart);
|
|
17
|
-
break;
|
|
25
|
+
const chartType = (_a = chart.config) === null || _a === void 0 ? void 0 : _a.type;
|
|
26
|
+
const renderer = getChartRenderer(chartType);
|
|
27
|
+
if (renderer) {
|
|
28
|
+
renderer(chart);
|
|
18
29
|
}
|
|
19
30
|
ctx.restore();
|
|
20
31
|
}
|
|
21
32
|
};
|
|
33
|
+
// Chart type router
|
|
34
|
+
function getChartRenderer(chartType) {
|
|
35
|
+
const renderers = {
|
|
36
|
+
bar: barChartLabels,
|
|
37
|
+
pie: pieChartLabels,
|
|
38
|
+
doughnut: doughnutChartLabels
|
|
39
|
+
};
|
|
40
|
+
return renderers[chartType];
|
|
41
|
+
}
|
|
42
|
+
// Core utility functions
|
|
43
|
+
function calculatePercentage(value, total) {
|
|
44
|
+
return total > 0 ? (value / total) * 100 : 0;
|
|
45
|
+
}
|
|
46
|
+
function calculateFontSize(percentage) {
|
|
47
|
+
const { percentageDivisor, maxPercentageForFontSize } = LABEL_CONFIG.fontSizeCalculation;
|
|
48
|
+
const calculatedSize = Math.min(percentage / percentageDivisor, maxPercentageForFontSize);
|
|
49
|
+
return Math.max(LABEL_CONFIG.minFontSize, Math.min(calculatedSize, LABEL_CONFIG.maxFontSize));
|
|
50
|
+
}
|
|
51
|
+
function getTextMetrics(ctx, text, fontSize) {
|
|
52
|
+
ctx.font = `normal ${fontSize}px sans-serif`;
|
|
53
|
+
const metrics = ctx.measureText(text);
|
|
54
|
+
const height = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent || LABEL_CONFIG.defaultFontSize;
|
|
55
|
+
return {
|
|
56
|
+
width: metrics.width,
|
|
57
|
+
height
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function prepareCanvasForText(ctx, fontSize, color) {
|
|
61
|
+
ctx.font = `bold ${fontSize}px sans-serif`;
|
|
62
|
+
ctx.textAlign = 'center';
|
|
63
|
+
ctx.textBaseline = 'middle';
|
|
64
|
+
ctx.fillStyle = color;
|
|
65
|
+
}
|
|
66
|
+
function extractLabelData(dataset, index, totalSum, chart) {
|
|
67
|
+
const value = dataset.data[index];
|
|
68
|
+
const percentage = calculatePercentage(value, totalSum);
|
|
69
|
+
const isVisible = chart.getDataVisibility(index);
|
|
70
|
+
if (!percentage || !isVisible) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
text: `${percentage.toFixed(1)}%`,
|
|
75
|
+
percentage,
|
|
76
|
+
backgroundColor: Array.isArray(dataset.backgroundColor) ? dataset.backgroundColor[index] : dataset.backgroundColor,
|
|
77
|
+
isVisible
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
// Bar chart implementation
|
|
22
81
|
function barChartLabels(chart) {
|
|
23
82
|
var _a;
|
|
24
|
-
const { ctx
|
|
83
|
+
const { ctx } = chart;
|
|
25
84
|
const isHorizontalChart = ((_a = chart.options) === null || _a === void 0 ? void 0 : _a.indexAxis) === 'y';
|
|
26
|
-
const { isHorizontalReversed } =
|
|
85
|
+
const { isHorizontalReversed } = getBarChartOrientation(chart);
|
|
27
86
|
chart.data.datasets.forEach((dataset, datasetIndex) => {
|
|
28
87
|
const meta = chart.getDatasetMeta(datasetIndex);
|
|
29
|
-
const totalSum = dataset.data.reduce((sum,
|
|
88
|
+
const totalSum = dataset.data.reduce((sum, value) => sum + value, 0);
|
|
30
89
|
meta.data.forEach((dataPoint, index) => {
|
|
31
90
|
if (!dataPoint)
|
|
32
91
|
return;
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
if (!percentage || !isVisible) {
|
|
92
|
+
const labelData = extractLabelData(dataset, index, totalSum, chart);
|
|
93
|
+
if (!labelData)
|
|
36
94
|
return;
|
|
37
|
-
|
|
38
|
-
const
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
ctx.font = `normal ${fontSize}px sans-serif`;
|
|
44
|
-
ctx.fillStyle = textColor;
|
|
45
|
-
const text = `${percentage.toFixed()}%`;
|
|
46
|
-
const { width, height } = getTextMetrics(ctx, text);
|
|
47
|
-
const textHeight = height || 12;
|
|
48
|
-
const textWidth = width || 30;
|
|
49
|
-
if (isHorizontalChart) {
|
|
50
|
-
if ((dataPoint === null || dataPoint === void 0 ? void 0 : dataPoint.width) > 0) {
|
|
51
|
-
const textPadding = 20;
|
|
52
|
-
const offset = textPadding + textWidth <= dataPoint.width ? textWidth : textWidth >= dataPoint.width ? 0 : 10;
|
|
53
|
-
const x = dataPoint.x + (isHorizontalReversed ? offset : -offset);
|
|
54
|
-
ctx.fillStyle = dataPoint.width <= textWidth ? getColor('--chart-value-default-color', '#000') : textColor;
|
|
55
|
-
if (percentage) {
|
|
56
|
-
ctx.fillText(text, x, dataPoint.y);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
if ((dataPoint === null || dataPoint === void 0 ? void 0 : dataPoint.height) > 0) {
|
|
62
|
-
const y = textHeight >= dataPoint.height ? dataPoint.y - 10 : dataPoint.y + 10;
|
|
63
|
-
ctx.fillStyle = textHeight >= dataPoint.height ? getColor('--chart-value-default-color', '#000') : textColor;
|
|
64
|
-
if (!percentage) {
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
ctx.fillText(text, dataPoint.x, y);
|
|
68
|
-
}
|
|
95
|
+
const fontSize = calculateFontSize(labelData.percentage);
|
|
96
|
+
const textMetrics = getTextMetrics(ctx, labelData.text, fontSize);
|
|
97
|
+
const position = calculateBarLabelPosition(dataPoint, textMetrics, isHorizontalChart, isHorizontalReversed, labelData.backgroundColor);
|
|
98
|
+
if (position) {
|
|
99
|
+
prepareCanvasForText(ctx, fontSize, position.color);
|
|
100
|
+
ctx.fillText(labelData.text, position.x, position.y);
|
|
69
101
|
}
|
|
70
102
|
});
|
|
71
103
|
});
|
|
72
104
|
}
|
|
73
|
-
function
|
|
74
|
-
const {
|
|
75
|
-
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
105
|
+
function calculateBarLabelPosition(dataPoint, textMetrics, isHorizontal, isReversed, backgroundColor) {
|
|
106
|
+
const { textPadding } = LABEL_CONFIG;
|
|
107
|
+
if (isHorizontal) {
|
|
108
|
+
const fitsInside = textMetrics.width + textPadding * 2 <= dataPoint.width;
|
|
109
|
+
if (fitsInside) {
|
|
110
|
+
return {
|
|
111
|
+
x: dataPoint.x + (isReversed ? textMetrics.width / 2 : -textMetrics.width / 2),
|
|
112
|
+
y: dataPoint.y,
|
|
113
|
+
color: getTextColor(backgroundColor)
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
return {
|
|
118
|
+
x: dataPoint.x + (isReversed ? -textMetrics.width / 2 - textPadding : textMetrics.width / 2 + textPadding),
|
|
119
|
+
y: dataPoint.y,
|
|
120
|
+
color: getColor('--chart-value-default-color', '#000')
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
const fitsInside = textMetrics.height + textPadding * 2 <= dataPoint.height;
|
|
126
|
+
if (fitsInside) {
|
|
127
|
+
return {
|
|
128
|
+
x: dataPoint.x,
|
|
129
|
+
y: dataPoint.y,
|
|
130
|
+
color: getTextColor(backgroundColor)
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
return {
|
|
135
|
+
x: dataPoint.x,
|
|
136
|
+
y: dataPoint.y - textMetrics.height / 2 - textPadding,
|
|
137
|
+
color: getColor('--chart-value-default-color', '#000')
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
}
|
|
95
141
|
}
|
|
142
|
+
// Pie chart implementation
|
|
96
143
|
function pieChartLabels(chart) {
|
|
97
|
-
|
|
144
|
+
renderArcLabels(chart, 'pie');
|
|
145
|
+
}
|
|
146
|
+
// Doughnut chart implementation
|
|
147
|
+
function doughnutChartLabels(chart) {
|
|
148
|
+
renderArcLabels(chart, 'doughnut');
|
|
149
|
+
}
|
|
150
|
+
function renderArcLabels(chart, chartType) {
|
|
151
|
+
const { ctx } = chart;
|
|
98
152
|
chart.data.datasets.forEach((dataset, datasetIndex) => {
|
|
99
153
|
const meta = chart.getDatasetMeta(datasetIndex);
|
|
100
|
-
const totalSum = dataset.data.reduce((sum,
|
|
154
|
+
const totalSum = dataset.data.reduce((sum, value) => sum + value, 0);
|
|
101
155
|
meta.data.forEach((arc, index) => {
|
|
102
156
|
if (!arc)
|
|
103
157
|
return;
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
if (!percentage || !isVisible) {
|
|
158
|
+
const labelData = extractLabelData(dataset, index, totalSum, chart);
|
|
159
|
+
if (!labelData)
|
|
107
160
|
return;
|
|
161
|
+
if (shouldShowArcLabel(arc, labelData.text, chartType)) {
|
|
162
|
+
const position = calculateArcLabelPosition(arc, chartType);
|
|
163
|
+
const fontSize = calculateFontSize(labelData.percentage);
|
|
164
|
+
const textColor = getTextColor(labelData.backgroundColor || '#000000');
|
|
165
|
+
prepareCanvasForText(ctx, fontSize, textColor);
|
|
166
|
+
ctx.fillText(labelData.text, position.x, position.y);
|
|
108
167
|
}
|
|
109
|
-
const midAngle = (arc.startAngle + arc.endAngle) / 2;
|
|
110
|
-
const x = arc.x + Math.cos(midAngle) * (arc.outerRadius / 1.5);
|
|
111
|
-
const y = arc.y + Math.sin(midAngle) * (arc.outerRadius / 1.5);
|
|
112
|
-
const fontSize = Math.max(12, Math.min(percentage / 2, 14));
|
|
113
|
-
const bgColor = dataset.backgroundColor[index] || '#00000';
|
|
114
|
-
prepareText(ctx, fontSize, bgColor);
|
|
115
|
-
ctx.fillText(`${percentage.toFixed()}%`, x, y);
|
|
116
168
|
});
|
|
117
169
|
});
|
|
118
170
|
}
|
|
119
|
-
function
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
171
|
+
function shouldShowArcLabel(arc, text, chartType) {
|
|
172
|
+
const arcAngle = Math.abs(arc.endAngle - arc.startAngle);
|
|
173
|
+
// Don't show labels for very small slices
|
|
174
|
+
if (arcAngle < LABEL_CONFIG.minAngleForPieLabel) {
|
|
175
|
+
return false;
|
|
176
|
+
}
|
|
177
|
+
// For doughnut charts, also check if there's enough radial space
|
|
178
|
+
if (chartType === 'doughnut') {
|
|
179
|
+
const radialSpace = arc.outerRadius - arc.innerRadius;
|
|
180
|
+
return radialSpace >= LABEL_CONFIG.defaultFontSize * 1.5;
|
|
181
|
+
}
|
|
182
|
+
return true;
|
|
183
|
+
}
|
|
184
|
+
function calculateArcLabelPosition(arc, chartType) {
|
|
185
|
+
const midAngle = (arc.startAngle + arc.endAngle) / 2;
|
|
186
|
+
const radiusMultiplier = LABEL_CONFIG.arcRadiusMultiplier[chartType];
|
|
187
|
+
let radius;
|
|
188
|
+
if (chartType === 'doughnut') {
|
|
189
|
+
radius = (arc.outerRadius + arc.innerRadius) / 2;
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
radius = arc.outerRadius * radiusMultiplier;
|
|
193
|
+
}
|
|
124
194
|
return {
|
|
125
|
-
|
|
126
|
-
|
|
195
|
+
x: arc.x + Math.cos(midAngle) * radius,
|
|
196
|
+
y: arc.y + Math.sin(midAngle) * radius
|
|
127
197
|
};
|
|
128
198
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
199
|
+
// Utility functions
|
|
200
|
+
function getBarChartOrientation(chart) {
|
|
201
|
+
var _a, _b;
|
|
202
|
+
const scales = chart.options.scales;
|
|
132
203
|
return {
|
|
133
|
-
|
|
134
|
-
|
|
204
|
+
isVerticalReversed: ((_a = scales === null || scales === void 0 ? void 0 : scales.y) === null || _a === void 0 ? void 0 : _a.reverse) === true,
|
|
205
|
+
isHorizontalReversed: ((_b = scales === null || scales === void 0 ? void 0 : scales.x) === null || _b === void 0 ? void 0 : _b.reverse) === true
|
|
135
206
|
};
|
|
136
207
|
}
|
|
137
|
-
function prepareText(ctx, fontSize, bgColor) {
|
|
138
|
-
const textColor = getTextColor(bgColor || getColor('--chart-value-default-color', '#000'));
|
|
139
|
-
ctx.font = `bold ${fontSize}px sans-serif`;
|
|
140
|
-
ctx.textAlign = 'center';
|
|
141
|
-
ctx.textBaseline = 'middle';
|
|
142
|
-
ctx.fillStyle = textColor;
|
|
143
|
-
}
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1sYWJlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydHMvY2hhcnRzL3BsdWdpbnMvZGF0YS1sYWJlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFcEQsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFzQjtJQUNqRCxFQUFFLEVBQUUsaUJBQWlCO0lBQ3JCLGlCQUFpQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTzs7UUFDckMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUN0QixHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFWCxRQUFRLE1BQUMsS0FBSyxDQUFDLE1BQTZCLDBDQUFFLElBQUksRUFBRTtZQUNuRCxLQUFLLEtBQUs7Z0JBQ1QsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0QixNQUFNO1lBQ1AsS0FBSyxLQUFLO2dCQUNULGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEIsTUFBTTtZQUNQLEtBQUssVUFBVTtnQkFDZCxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0IsTUFBTTtTQUNQO1FBRUQsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2YsQ0FBQztDQUNELENBQUM7QUFFRixTQUFTLGNBQWMsQ0FBQyxLQUF5Qzs7SUFDaEUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDNUIsTUFBTSxpQkFBaUIsR0FBRyxDQUFBLE1BQUEsS0FBSyxDQUFDLE9BQU8sMENBQUUsU0FBUyxNQUFLLEdBQUcsQ0FBQztJQUMzRCxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxrQkFBa0Is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O1FBQ04sTUFBTSxFQUFFLFVBQVU7UUFDbEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO0tBQ3BCLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsR0FBNkIsRUFBRSxRQUFnQixFQUFFLE9BQWU7SUFDcEYsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsNkJBQTZCLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRixHQUFHLENBQUMsSUFBSSxHQUFHLFFBQVEsUUFBUSxlQUFlLENBQUM7SUFDM0MsR0FBRyxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDekIsR0FBRyxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUM7SUFDNUIsR0FBRyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFyY0VsZW1lbnQsIENoYXJ0LCBQbHVnaW4gfSBmcm9tICdjaGFydC5qcyc7XHJcbmltcG9ydCB7IENoYXJ0Q29uZmlndXJhdGlvbiwgQ2hhcnRUeXBlIH0gZnJvbSAnY2hhcnQuanMvZGlzdC90eXBlcyc7XHJcblxyXG5pbXBvcnQgQmFyRWxlbWVudCBmcm9tICdjaGFydC5qcy9kaXN0L2VsZW1lbnRzL2VsZW1lbnQuYmFyJztcclxuaW1wb3J0IHsgZ2V0Q29sb3IsIGdldFRleHRDb2xvciB9IGZyb20gJy4uL3V0aWxpdHknO1xyXG5cclxuZXhwb3J0IGNvbnN0IGNoYXJ0RGF0YUxhYmVsczogUGx1Z2luPENoYXJ0VHlwZT4gPSB7XHJcblx0aWQ6ICdjaGFydERhdGFMYWJlbHMnLFxyXG5cdGFmdGVyRGF0YXNldHNEcmF3KGNoYXJ0LCBhcmdzLCBwbHVnaW5zKSB7XHJcblx0XHRjb25zdCB7IGN0eCB9ID0gY2hhcnQ7XHJcblx0XHRjdHguc2F2ZSgpO1xyXG5cclxuXHRcdHN3aXRjaCAoKGNoYXJ0LmNvbmZpZyBhcyBDaGFydENvbmZpZ3VyYXRpb24pPy50eXBlKSB7XHJcblx0XHRcdGNhc2UgJ2Jhcic6XHJcblx0XHRcdFx0YmFyQ2hhcnRMYWJlbHMoY2hhcnQpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlICdwaWUnOlxyXG5cdFx0XHRcdHBpZUNoYXJ0TGFiZWxzKGNoYXJ0KTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSAnZG91Z2hudXQnOlxyXG5cdFx0XHRcdGRvdWdobnV0Q2hhcnRMYWJlbHMoY2hhcnQpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0fVxyXG5cclxuXHRcdGN0eC5yZXN0b3JlKCk7XHJcblx0fVxyXG59O1xyXG5cclxuZnVuY3Rpb24gYmFyQ2hhcnRMYWJlbHMoY2hhcnQ6IENoYXJ0PENoYXJ0VHlwZSwgdW5rbm93biwgdW5rbm93bj4pIHtcclxuXHRjb25zdCB7IGN0eCwgZGF0YSB9ID0gY2hhcnQ7XHJcblx0Y29uc3QgaXNIb3Jpem9udGFsQ2hhcnQgPSBjaGFydC5vcHRpb25zPy5pbmRleEF4aXMgPT09ICd5JztcclxuXHRjb25zdCB7IGlzSG9yaXpvbnRhbFJldmVyc2VkIH0gPSBpc0JhckNoYXJ0UmV2ZXJzZWQoY2hhcnQpO1xyXG5cclxuXHRjaGFydC5kYXRhLmRhdGFzZXRzLmZvckVhY2goKGRhdGFzZXQsIGRhdGFzZXRJbmRleCkgPT4ge1xyXG5cdFx0Y29uc3QgbWV0YSA9IGNoYXJ0LmdldERhdGFzZXRNZXRhKGRhdGFzZXRJbmRleCk7XHJcblxyXG5cdFx0Y29uc3QgdG90YWxTdW0gPSAoZGF0YXNldC5kYXRhIGFzIFtdKS5yZWR1Y2UoKHN1bSwgY3VycmVudFZhbHVlKSA9PiBzdW0gKyBjdXJyZW50VmFsdWUsIDApO1xyXG5cclxuXHRcdG1ldGEuZGF0YS5mb3JFYWNoKChkYXRhUG9pbnQ6IEJhckVsZW1lbnQsIGluZGV4KSA9PiB7XHJcblx0XHRcdGlmICghZGF0YVBvaW50KSByZXR1cm47XHJcblx0XHRcdGNvbnN0IHBlcmNlbnRhZ2UgPSAoZGF0YXNldC5kYXRhW2luZGV4XSAvIHRvdGFsU3VtKSAqIDEwMDtcclxuXHRcdFx0Y29uc3QgaXNWaXNpYmxlID0gY2hhcnQuZ2V0RGF0YVZpc2liaWxpdHkoaW5kZXgpO1xyXG5cdFx0XHRpZiAoIXBlcmNlbnRhZ2UgfHwgIWlzVmlzaWJsZSkge1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Y29uc3QgYmdDb2xvciA9IGRhdGFzZXQuYmFja2dyb3VuZENvbG9yW2luZGV4XTtcclxuXHRcdFx0Y29uc3QgdGV4dENvbG9yID0gZ2V0VGV4dENvbG9yKGJnQ29sb3IpO1xyXG5cclxuXHRcdFx0Y29uc3QgZm9udFNpemUgPSBNYXRoLm1heCgxMiwgTWF0aC5taW4ocGVyY2VudGFnZSAvIDIsIDE0KSk7XHJcblxyXG5cdFx0XHRjdHgudGV4dEFsaWduID0gJ2NlbnRlcic7XHJcblx0XHRcdGN0eC50ZXh0QmFzZWxpbmUgPSAnbWlkZGxlJztcclxuXHRcdFx0Y3R4LmZvbnQgPSBgbm9ybWFsICR7Zm9udFNpemV9cHggc2Fucy1zZXJpZmA7XHJcblx0XHRcdGN0eC5maWxsU3R5bGUgPSB0ZXh0Q29sb3I7XHJcblxyXG5cdFx0XHRjb25zdCB0ZXh0ID0gYCR7cGVyY2VudGFnZS50b0ZpeGVkKCl9JWA7XHJcblxyXG5cdFx0XHRjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGdldFRleHRNZXRyaWNzKGN0eCwgdGV4dCk7XHJcblxyXG5cdFx0XHRjb25zdCB0ZXh0SGVpZ2h0ID0gaGVpZ2h0IHx8IDEyO1xyXG5cdFx0XHRjb25zdCB0ZXh0V2lkdGggPSB3aWR0aCB8fCAzMDtcclxuXHJcblx0XHRcdGlmIChpc0hvcml6b250YWxDaGFydCkge1xyXG5cdFx0XHRcdGlmIChkYXRhUG9pbnQ/LndpZHRoID4gMCkge1xyXG5cdFx0XHRcdFx0Y29uc3QgdGV4dFBhZGRpbmcgPSAyMDtcclxuXHRcdFx0XHRcdGNvbnN0IG9mZnNldCA9IHRleHRQYWRkaW5nICsgdGV4dFdpZHRoIDw9IGRhdGFQb2ludC53aWR0aCA/IHRleHRXaWR0aCA6IHRleHRXaWR0aCA+PSBkYXRhUG9pbnQud2lkdGggPyAwIDogMTA7XHJcblxyXG5cdFx0XHRcdFx0Y29uc3QgeCA9IGRhdGFQb2ludC54ICsgKGlzSG9yaXpvbnRhbFJldmVyc2VkID8gb2Zmc2V0IDogLW9mZnNldCk7XHJcblx0XHRcdFx0XHRjdHguZmlsbFN0eWxlID0gZGF0YVBvaW50LndpZHRoIDw9IHRleHRXaWR0aCA/IGdldENvbG9yKCctLWNoYXJ0LXZhbHVlLWRlZmF1bHQtY29sb3InLCAnIzAwMCcpIDogdGV4dENvbG9yO1xyXG5cclxuXHRcdFx0XHRcdGlmIChwZXJjZW50YWdlKSB7XHJcblx0XHRcdFx0XHRcdGN0eC5maWxsVGV4dCh0ZXh0LCB4LCBkYXRhUG9pbnQueSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdGlmIChkYXRhUG9pbnQ/LmhlaWdodCA+IDApIHtcclxuXHRcdFx0XHRcdGNvbnN0IHkgPSB0ZXh0SGVpZ2h0ID49IGRhdGFQb2ludC5oZWlnaHQgPyBkYXRhUG9pbnQueSAtIDEwIDogZGF0YVBvaW50LnkgKyAxMDtcclxuXHRcdFx0XHRcdGN0eC5maWxsU3R5bGUgPSB0ZXh0SGVpZ2h0ID49IGRhdGFQb2ludC5oZWlnaHQgPyBnZXRDb2xvcignLS1jaGFydC12YWx1ZS1kZWZhdWx0LWNvbG9yJywgJyMwMDAnKSA6IHRleHRDb2xvcjtcclxuXHRcdFx0XHRcdGlmICghcGVyY2VudGFnZSkge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRjdHguZmlsbFRleHQodGV4dCwgZGF0YVBvaW50LngsIHkpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRvdWdobnV0Q2hhcnRMYWJlbHMoY2hhcnQ6IENoYXJ0PENoYXJ0VHlwZSwgdW5rbm93biwgdW5rbm93bj4pIHtcclxuXHRjb25zdCB7IGN0eCwgZGF0YSB9ID0gY2hhcnQ7XHJcblxyXG5cdGNoYXJ0LmRhdGEuZGF0YXNldHMuZm9yRWFjaCgoZGF0YXNldCwgZGF0YXNldEluZGV4KSA9PiB7XHJcblx0XHRjb25zdCBtZXRhID0gY2hhcnQuZ2V0RGF0YXNldE1ldGEoZGF0YXNldEluZGV4KTtcclxuXHJcblx0XHRjb25zdCB0b3RhbFN1bSA9IChkYXRhc2V0LmRhdGEgYXMgW10pLnJlZHVjZSgoc3VtLCBjdXJyZW50VmFsdWUpID0+IHN1bSArIGN1cnJlbnRWYWx1ZSwgMCk7XHJcblxyXG5cdFx0bWV0YS5kYXRhLmZvckVhY2goKGFyYzogQXJjRWxlbWVudCwgaW5kZXgpID0+IHtcclxuXHRcdFx0aWYgKCFhcmMpIHJldHVybjtcclxuXHJcblx0XHRcdGNvbnN0IHBlcmNlbnRhZ2UgPSAoZGF0YXNldC5kYXRhW2luZGV4XSAvIHRvdGFsU3VtKSAqIDEwMDtcclxuXHRcdFx0Y29uc3QgaXNWaXNpYmxlID0gY2hhcnQuZ2V0RGF0YVZpc2liaWxpdHkoaW5kZXgpO1xyXG5cdFx0XHRpZiAoIXBlcmNlbnRhZ2UgfHwgIWlzVmlzaWJsZSkge1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Y29uc3QgbWlkQW5nbGUgPSAoYXJjLnN0YXJ0QW5nbGUgKyBhcmMuZW5kQW5nbGUpIC8gMjtcclxuXHRcdFx0Y29uc3QgeCA9IGFyYy54ICsgTWF0aC5jb3MobWlkQW5nbGUpICogKGFyYy5vdXRlclJhZGl1cyAvIDEuMik7XHJcblx0XHRcdGNvbnN0IHkgPSBhcmMueSArIE1hdGguc2luKG1pZEFuZ2xlKSAqIChhcmMub3V0ZXJSYWRpdXMgLyAxLjIpO1xyXG5cclxuXHRcdFx0Y29uc3QgZm9udFNpemUgPSBNYXRoLm1heCgxMiwgTWF0aC5taW4ocGVyY2VudGFnZSAvIDIsIDE0KSk7XHJcblx0XHRcdGNvbnN0IGJnQ29sb3IgPSBkYXRhc2V0LmJhY2tncm91bmRDb2xvcltpbmRleF0gfHwgJyMwMDAwMCc7XHJcblx0XHRcdHByZXBhcmVUZXh0KGN0eCwgZm9udFNpemUsIGJnQ29sb3IpO1xyXG5cdFx0XHRjdHguZmlsbFRleHQoYCR7cGVyY2VudGFnZS50b0ZpeGVkKCl9JWAsIHgsIHkpO1xyXG5cdFx0fSk7XHJcblx0fSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBpZUNoYXJ0TGFiZWxzKGNoYXJ0OiBDaGFydDxDaGFydFR5cGUsIHVua25vd24sIHVua25vd24+KSB7XHJcblx0Y29uc3QgeyBjdHgsIGRhdGEgfSA9IGNoYXJ0O1xyXG5cclxuXHRjaGFydC5kYXRhLmRhdGFzZXRzLmZvckVhY2goKGRhdGFzZXQsIGRhdGFzZXRJbmRleCkgPT4ge1xyXG5cdFx0Y29uc3QgbWV0YSA9IGNoYXJ0LmdldERhdGFzZXRNZXRhKGRhdGFzZXRJbmRleCk7XHJcblxyXG5cdFx0Y29uc3QgdG90YWxTdW0gPSAoZGF0YXNldC5kYXRhIGFzIFtdKS5yZWR1Y2UoKHN1bSwgY3VycmVudFZhbHVlKSA9PiBzdW0gKyBjdXJyZW50VmFsdWUsIDApO1xyXG5cclxuXHRcdG1ldGEuZGF0YS5mb3JFYWNoKChhcmM6IEFyY0VsZW1lbnQsIGluZGV4KSA9PiB7XHJcblx0XHRcdGlmICghYXJjKSByZXR1cm47XHJcblxyXG5cdFx0XHRjb25zdCBwZXJjZW50YWdlID0gKGRhdGFzZXQuZGF0YVtpbmRleF0gLyB0b3RhbFN1bSkgKiAxMDA7XHJcblx0XHRcdGNvbnN0IGlzVmlzaWJsZSA9IGNoYXJ0LmdldERhdGFWaXNpYmlsaXR5KGluZGV4KTtcclxuXHRcdFx0aWYgKCFwZXJjZW50YWdlIHx8ICFpc1Zpc2libGUpIHtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGNvbnN0IG1pZEFuZ2xlID0gKGFyYy5zdGFydEFuZ2xlICsgYXJjLmVuZEFuZ2xlKSAvIDI7XHJcblxyXG5cdFx0XHRjb25zdCB4ID0gYXJjLnggKyBNYXRoLmNvcyhtaWRBbmdsZSkgKiAoYXJjLm91dGVyUmFkaXVzIC8gMS41KTtcclxuXHJcblx0XHRcdGNvbnN0IHkgPSBhcmMueSArIE1hdGguc2luKG1pZEFuZ2xlKSAqIChhcmMub3V0ZXJSYWRpdXMgLyAxLjUpO1xyXG5cclxuXHRcdFx0Y29uc3QgZm9udFNpemUgPSBNYXRoLm1heCgxMiwgTWF0aC5taW4ocGVyY2VudGFnZSAvIDIsIDE0KSk7XHJcblx0XHRcdGNvbnN0IGJnQ29sb3IgPSBkYXRhc2V0LmJhY2tncm91bmRDb2xvcltpbmRleF0gfHwgJyMwMDAwMCc7XHJcblx0XHRcdHByZXBhcmVUZXh0KGN0eCwgZm9udFNpemUsIGJnQ29sb3IpO1xyXG5cclxuXHRcdFx0Y3R4LmZpbGxUZXh0KGAke3BlcmNlbnRhZ2UudG9GaXhlZCgpfSVgLCB4LCB5KTtcclxuXHRcdH0pO1xyXG5cdH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0JhckNoYXJ0UmV2ZXJzZWQoY2hhcnQ6IENoYXJ0PENoYXJ0VHlwZSwgdW5rbm93biwgdW5rbm93bj4pIHtcclxuXHRjb25zdCBzY2FsZXMgPSBjaGFydC5vcHRpb25zLnNjYWxlcztcclxuXHJcblx0Y29uc3QgaXNWZXJ0aWNhbFJldmVyc2VkID0gc2NhbGVzPy55Py5yZXZlcnNlID09PSB0cnVlO1xyXG5cclxuXHRjb25zdCBpc0hvcml6b250YWxSZXZlcnNlZCA9IHNjYWxlcz8ueD8ucmV2ZXJzZSA9PT0gdHJ1ZTtcclxuXHJcblx0cmV0dXJuIHtcclxuXHRcdGlzVmVydGljYWxSZXZlcnNlZCxcclxuXHRcdGlzSG9yaXpvbnRhbFJldmVyc2VkXHJcblx0fTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0VGV4dE1ldHJpY3MoY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIHRleHQ6IHN0cmluZykge1xyXG5cdGNvbnN0IG1ldHJpY3MgPSBjdHgubWVhc3VyZVRleHQodGV4dCk7XHJcblxyXG5cdGNvbnN0IHRleHRIZWlnaHQgPSBtZXRyaWNzLmFjdHVhbEJvdW5kaW5nQm94QXNjZW50ICsgbWV0cmljcy5hY3R1YWxCb3VuZGluZ0JveERlc2NlbnQ7XHJcblx0cmV0dXJuIHtcclxuXHRcdGhlaWdodDogdGV4dEhlaWdodCxcclxuXHRcdHdpZHRoOiBtZXRyaWNzLndpZHRoXHJcblx0fTtcclxufVxyXG5cclxuZnVuY3Rpb24gcHJlcGFyZVRleHQoY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIGZvbnRTaXplOiBudW1iZXIsIGJnQ29sb3I6IHN0cmluZykge1xyXG5cdGNvbnN0IHRleHRDb2xvciA9IGdldFRleHRDb2xvcihiZ0NvbG9yIHx8IGdldENvbG9yKCctLWNoYXJ0LXZhbHVlLWRlZmF1bHQtY29sb3InLCAnIzAwMCcpKTtcclxuXHRjdHguZm9udCA9IGBib2xkICR7Zm9udFNpemV9cHggc2Fucy1zZXJpZmA7XHJcblx0Y3R4LnRleHRBbGlnbiA9ICdjZW50ZXInO1xyXG5cdGN0eC50ZXh0QmFzZWxpbmUgPSAnbWlkZGxlJztcclxuXHRjdHguZmlsbFN0eWxlID0gdGV4dENvbG9yO1xyXG59XHJcbiJdfQ==
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1sYWJlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydHMvY2hhcnRzL3BsdWdpbnMvZGF0YS1sYWJlbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFcEQsMEJBQTBCO0FBQzFCLE1BQU0sWUFBWSxHQUFHO0lBQ3BCLFdBQVcsRUFBRSxFQUFFO0lBQ2YsV0FBVyxFQUFFLEVBQUU7SUFDZixlQUFlLEVBQUUsRUFBRTtJQUNuQixXQUFXLEVBQUUsQ0FBQztJQUNkLG1CQUFtQixFQUFFLEdBQUc7SUFDeEIsbUJBQW1CLEVBQUU7UUFDcEIsR0FBRyxFQUFFLEdBQUc7UUFDUixRQUFRLEVBQUUsR0FBRztLQUNiO0lBQ0QsbUJBQW1CLEVBQUU7UUFDcEIsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQix3QkFBd0IsRUFBRSxFQUFFO0tBQzVCO0NBQ1EsQ0FBQztBQXFCWCxjQUFjO0FBQ2QsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFzQjtJQUNqRCxFQUFFLEVBQUUsaUJBQWlCO0lBQ3JCLGlCQUFpQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTzs7UUFDckMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUN0QixHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFWCxNQUFNLFNBQVMsR0FBRyxNQUFDLEtBQUssQ0FBQyxNQUE2QiwwQ0FBRSxJQUFJLENBQUM7UUFDN0QsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFN0MsSUFBSSxRQUFRLEVBQUU7WUFDYixRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDaEI7UUFFRCxHQUFHLENBQUMsT0FB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QkFBa0IsRUFBRSxDQUFBLE1BQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLENBQUMsMENBQUUsT0FBTyxNQUFLLElBQUk7UUFDL0Msb0JBQW9CLEVBQUUsQ0FBQSxNQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxDQUFDLDBDQUFFLE9BQU8sTUFBSyxJQUFJO0tBQ2pELENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXJjRWxlbWVudCwgQ2hhcnQsIFBsdWdpbiB9IGZyb20gJ2NoYXJ0LmpzJztcclxuaW1wb3J0IHsgQ2hhcnRDb25maWd1cmF0aW9uLCBDaGFydFR5cGUgfSBmcm9tICdjaGFydC5qcy9kaXN0L3R5cGVzJztcclxuaW1wb3J0IEJhckVsZW1lbnQgZnJvbSAnY2hhcnQuanMvZGlzdC9lbGVtZW50cy9lbGVtZW50LmJhcic7XHJcbmltcG9ydCB7IGdldENvbG9yLCBnZXRUZXh0Q29sb3IgfSBmcm9tICcuLi91dGlsaXR5JztcclxuXHJcbi8vIENvbmZpZ3VyYXRpb24gY29uc3RhbnRzXHJcbmNvbnN0IExBQkVMX0NPTkZJRyA9IHtcclxuXHRtaW5Gb250U2l6ZTogMTAsXHJcblx0bWF4Rm9udFNpemU6IDE2LFxyXG5cdGRlZmF1bHRGb250U2l6ZTogMTIsXHJcblx0dGV4dFBhZGRpbmc6IDgsXHJcblx0bWluQW5nbGVGb3JQaWVMYWJlbDogMC4zLCAvLyB+MTcgZGVncmVlc1xyXG5cdGFyY1JhZGl1c011bHRpcGxpZXI6IHtcclxuXHRcdHBpZTogMC43LFxyXG5cdFx0ZG91Z2hudXQ6IDAuOFxyXG5cdH0sXHJcblx0Zm9udFNpemVDYWxjdWxhdGlvbjoge1xyXG5cdFx0cGVyY2VudGFnZURpdmlzb3I6IDMsXHJcblx0XHRtYXhQZXJjZW50YWdlRm9yRm9udFNpemU6IDIwXHJcblx0fVxyXG59IGFzIGNvbnN0O1xyXG5cclxuLy8gVHlwZXNcclxuaW50ZXJmYWNlIFRleHRNZXRyaWNzIHtcclxuXHR3aWR0aDogbnVtYmVyO1xyXG5cdGhlaWdodDogbnVtYmVyO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgTGFiZWxEYXRhIHtcclxuXHR0ZXh0OiBzdHJpbmc7XHJcblx0cGVyY2VudGFnZTogbnVtYmVyO1xyXG5cdGJhY2tncm91bmRDb2xvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cdGlzVmlzaWJsZTogYm9vbGVhbjtcclxufVxyXG5cclxuaW50ZXJmYWNlIExhYmVsUG9zaXRpb24ge1xyXG5cdHg6IG51bWJlcjtcclxuXHR5OiBudW1iZXI7XHJcblx0Y29sb3I6IHN0cmluZztcclxufVxyXG5cclxuLy8gTWFpbiBwbHVnaW5cclxuZXhwb3J0IGNvbnN0IGNoYXJ0RGF0YUxhYmVsczogUGx1Z2luPENoYXJ0VHlwZT4gPSB7XHJcblx0aWQ6ICdjaGFydERhdGFMYWJlbHMnLFxyXG5cdGFmdGVyRGF0YXNldHNEcmF3KGNoYXJ0LCBhcmdzLCBwbHVnaW5zKSB7XHJcblx0XHRjb25zdCB7IGN0eCB9ID0gY2hhcnQ7XHJcblx0XHRjdHguc2F2ZSgpO1xyXG5cclxuXHRcdGNvbnN0IGNoYXJ0VHlwZSA9IChjaGFydC5jb25maWcgYXMgQ2hhcnRDb25maWd1cmF0aW9uKT8udHlwZTtcclxuXHRcdGNvbnN0IHJlbmRlcmVyID0gZ2V0Q2hhcnRSZW5kZXJlcihjaGFydFR5cGUpO1xyXG5cclxuXHRcdGlmIChyZW5kZXJlcikge1xyXG5cdFx0XHRyZW5kZXJlcihjaGFydCk7XHJcblx0XHR9XHJcblxyXG5cdFx0Y3R4LnJlc3RvcmUoKTtcclxuXHR9XHJcbn07XHJcblxyXG4vLyBDaGFydCB0eXBlIHJvdXRlclxyXG5mdW5jdGlvbiBnZXRDaGFydFJlbmRlcmVyKGNoYXJ0VHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcblx0Y29uc3QgcmVuZGVyZXJzID0ge1xyXG5cdFx0YmFyOiBiYXJDaGFydExhYmVscyxcclxuXHRcdHBpZTogcGllQ2hhcnRMYWJlbHMsXHJcblx0XHRkb3VnaG51dDogZG91Z2hudXRDaGFydExhYmVsc1xyXG5cdH07XHJcblxyXG5cdHJldHVybiByZW5kZXJlcnNbY2hhcnRUeXBlIGFzIGtleW9mIHR5cGVvZiByZW5kZXJlcnNdO1xyXG59XHJcblxyXG4vLyBDb3JlIHV0aWxpdHkgZnVuY3Rpb25zXHJcbmZ1bmN0aW9uIGNhbGN1bGF0ZVBlcmNlbnRhZ2UodmFsdWU6IG51bWJlciwgdG90YWw6IG51bWJlcik6IG51bWJlciB7XHJcblx0cmV0dXJuIHRvdGFsID4gMCA/ICh2YWx1ZSAvIHRvdGFsKSAqIDEwMCA6IDA7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNhbGN1bGF0ZUZvbnRTaXplKHBlcmNlbnRhZ2U6IG51bWJlcik6IG51bWJlciB7XHJcblx0Y29uc3QgeyBwZXJjZW50YWdlRGl2aXNvciwgbWF4UGVyY2VudGFnZUZvckZvbnRTaXplIH0gPSBMQUJFTF9DT05GSUcuZm9udFNpemVDYWxjdWxhdGlvbjtcclxuXHRjb25zdCBjYWxjdWxhdGVkU2l6ZSA9IE1hdGgubWluKHBlcmNlbnRhZ2UgLyBwZXJjZW50YWdlRGl2aXNvciwgbWF4UGVyY2VudGFnZUZvckZvbnRTaXplKTtcclxuXHRyZXR1cm4gTWF0aC5tYXgoTEFCRUxfQ09ORklHLm1pbkZvbnRTaXplLCBNYXRoLm1pbihjYWxjdWxhdGVkU2l6ZSwgTEFCRUxfQ09ORklHLm1heEZvbnRTaXplKSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFRleHRNZXRyaWNzKGN0eDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELCB0ZXh0OiBzdHJpbmcsIGZvbnRTaXplOiBudW1iZXIpOiBUZXh0TWV0cmljcyB7XHJcblx0Y3R4LmZvbnQgPSBgbm9ybWFsICR7Zm9udFNpemV9cHggc2Fucy1zZXJpZmA7XHJcblx0Y29uc3QgbWV0cmljcyA9IGN0eC5tZWFzdXJlVGV4dCh0ZXh0KTtcclxuXHRjb25zdCBoZWlnaHQgPSBtZXRyaWNzLmFjdHVhbEJvdW5kaW5nQm94QXNjZW50ICsgbWV0cmljcy5hY3R1YWxCb3VuZGluZ0JveERlc2NlbnQgfHwgTEFCRUxfQ09ORklHLmRlZmF1bHRGb250U2l6ZTtcclxuXHJcblx0cmV0dXJuIHtcclxuXHRcdHdpZHRoOiBtZXRyaWNzLndpZHRoLFxyXG5cdFx0aGVpZ2h0XHJcblx0fTtcclxufVxyXG5cclxuZnVuY3Rpb24gcHJlcGFyZUNhbnZhc0ZvclRleHQoY3R4OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIGZvbnRTaXplOiBudW1iZXIsIGNvbG9yOiBzdHJpbmcpOiB2b2lkIHtcclxuXHRjdHguZm9udCA9IGBib2xkICR7Zm9udFNpemV9cHggc2Fucy1zZXJpZmA7XHJcblx0Y3R4LnRleHRBbGlnbiA9ICdjZW50ZXInO1xyXG5cdGN0eC50ZXh0QmFzZWxpbmUgPSAnbWlkZGxlJztcclxuXHRjdHguZmlsbFN0eWxlID0gY29sb3I7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGV4dHJhY3RMYWJlbERhdGEoXHJcblx0ZGF0YXNldDogYW55LFxyXG5cdGluZGV4OiBudW1iZXIsXHJcblx0dG90YWxTdW06IG51bWJlcixcclxuXHRjaGFydDogQ2hhcnQ8Q2hhcnRUeXBlLCB1bmtub3duLCB1bmtub3duPlxyXG4pOiBMYWJlbERhdGEgfCBudWxsIHtcclxuXHRjb25zdCB2YWx1ZSA9IGRhdGFzZXQuZGF0YVtpbmRleF0gYXMgbnVtYmVyO1xyXG5cdGNvbnN0IHBlcmNlbnRhZ2UgPSBjYWxjdWxhdGVQZXJjZW50YWdlKHZhbHVlLCB0b3RhbFN1bSk7XHJcblx0Y29uc3QgaXNWaXNpYmxlID0gY2hhcnQuZ2V0RGF0YVZpc2liaWxpdHkoaW5kZXgpO1xyXG5cclxuXHRpZiAoIXBlcmNlbnRhZ2UgfHwgIWlzVmlzaWJsZSkge1xyXG5cdFx0cmV0dXJuIG51bGw7XHJcblx0fVxyXG5cclxuXHRyZXR1cm4ge1xyXG5cdFx0dGV4dDogYCR7cGVyY2VudGFnZS50b0ZpeGVkKDEpfSVgLFxyXG5cdFx0cGVyY2VudGFnZSxcclxuXHRcdGJhY2tncm91bmRDb2xvcjogQXJyYXkuaXNBcnJheShkYXRhc2V0LmJhY2tncm91bmRDb2xvcikgPyBkYXRhc2V0LmJhY2tncm91bmRDb2xvcltpbmRleF0gOiBkYXRhc2V0LmJhY2tncm91bmRDb2xvcixcclxuXHRcdGlzVmlzaWJsZVxyXG5cdH07XHJcbn1cclxuXHJcbi8vIEJhciBjaGFydCBpbXBsZW1lbnRhdGlvblxyXG5mdW5jdGlvbiBiYXJDaGFydExhYmVscyhjaGFydDogQ2hhcnQpOiB2b2lkIHtcclxuXHRjb25zdCB7IGN0eCB9ID0gY2hhcnQ7XHJcblx0Y29uc3QgaXNIb3Jpem9udGFsQ2hhcnQgPSBjaGFydC5vcHRpb25zPy5pbmRleEF4aXMgPT09ICd5JztcclxuXHRjb25zdCB7IGlzSG9yaXpvbnRhbFJldmVyc2VkIH0gPSBnZXRCYXJDaGFydE9yaWVudGF0aW9uKGNoYXJ0KTtcclxuXHJcblx0Y2hhcnQuZGF0YS5kYXRhc2V0cy5mb3JFYWNoKChkYXRhc2V0LCBkYXRhc2V0SW5kZXgpID0+IHtcclxuXHRcdGNvbnN0IG1ldGEgPSBjaGFydC5nZXREYXRhc2V0TWV0YShkYXRhc2V0SW5kZXgpO1xyXG5cdFx0Y29uc3QgdG90YWxTdW0gPSAoZGF0YXNldC5kYXRhIGFzIG51bWJlcltdKS5yZWR1Y2UoKHN1bSwgdmFsdWUpID0+IHN1bSArIHZhbHVlLCAwKTtcclxuXHJcblx0XHRtZXRhLmRhdGEuZm9yRWFjaCgoZGF0YVBvaW50OiBCYXJFbGVtZW50LCBpbmRleCkgPT4ge1xyXG5cdFx0XHRpZiAoIWRhdGFQb2ludCkgcmV0dXJuO1xyXG5cclxuXHRcdFx0Y29uc3QgbGFiZWxEYXRhID0gZXh0cmFjdExhYmVsRGF0YShkYXRhc2V0LCBpbmRleCwgdG90YWxTdW0sIGNoYXJ0KTtcclxuXHRcdFx0aWYgKCFsYWJlbERhdGEpIHJldHVybjtcclxuXHJcblx0XHRcdGNvbnN0IGZvbnRTaXplID0gY2FsY3VsYXRlRm9udFNpemUobGFiZWxEYXRhLnBlcmNlbnRhZ2UpO1xyXG5cdFx0XHRjb25zdCB0ZXh0TWV0cmljcyA9IGdldFRleHRNZXRyaWNzKGN0eCwgbGFiZWxEYXRhLnRleHQsIGZvbnRTaXplKTtcclxuXHJcblx0XHRcdGNvbnN0IHBvc2l0aW9uID0gY2FsY3VsYXRlQmFyTGFiZWxQb3NpdGlvbihcclxuXHRcdFx0XHRkYXRhUG9pbnQsXHJcblx0XHRcdFx0dGV4dE1ldHJpY3MsXHJcblx0XHRcdFx0aXNIb3Jpem9udGFsQ2hhcnQsXHJcblx0XHRcdFx0aXNIb3Jpem9udGFsUmV2ZXJzZWQsXHJcblx0XHRcdFx0bGFiZWxEYXRhLmJhY2tncm91bmRDb2xvclxyXG5cdFx0XHQpO1xyXG5cclxuXHRcdFx0aWYgKHBvc2l0aW9uKSB7XHJcblx0XHRcdFx0cHJlcGFyZUNhbnZhc0ZvclRleHQoY3R4LCBmb250U2l6ZSwgcG9zaXRpb24uY29sb3IpO1xyXG5cdFx0XHRcdGN0eC5maWxsVGV4dChsYWJlbERhdGEudGV4dCwgcG9zaXRpb24ueCwgcG9zaXRpb24ueSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjYWxjdWxhdGVCYXJMYWJlbFBvc2l0aW9uKFxyXG5cdGRhdGFQb2ludDogQmFyRWxlbWVudCxcclxuXHR0ZXh0TWV0cmljczogVGV4dE1ldHJpY3MsXHJcblx0aXNIb3Jpem9udGFsOiBib29sZWFuLFxyXG5cdGlzUmV2ZXJzZWQ6IGJvb2xlYW4sXHJcblx0YmFja2dyb3VuZENvbG9yOiBzdHJpbmcgfCB1bmRlZmluZWRcclxuKTogTGFiZWxQb3NpdGlvbiB8IG51bGwge1xyXG5cdGNvbnN0IHsgdGV4dFBhZGRpbmcgfSA9IExBQkVMX0NPTkZJRztcclxuXHJcblx0aWYgKGlzSG9yaXpvbnRhbCkge1xyXG5cdFx0Y29uc3QgZml0c0luc2lkZSA9IHRleHRNZXRyaWNzLndpZHRoICsgdGV4dFBhZGRpbmcgKiAyIDw9IGRhdGFQb2ludC53aWR0aDtcclxuXHJcblx0XHRpZiAoZml0c0luc2lkZSkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdHg6IGRhdGFQb2ludC54ICsgKGlzUmV2ZXJzZWQgPyB0ZXh0TWV0cmljcy53aWR0aCAvIDIgOiAtdGV4dE1ldHJpY3Mud2lkdGggLyAyKSxcclxuXHRcdFx0XHR5OiBkYXRhUG9pbnQueSxcclxuXHRcdFx0XHRjb2xvcjogZ2V0VGV4dENvbG9yKGJhY2tncm91bmRDb2xvcilcclxuXHRcdFx0fTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0eDogZGF0YVBvaW50LnggKyAoaXNSZXZlcnNlZCA/IC10ZXh0TWV0cmljcy53aWR0aCAvIDIgLSB0ZXh0UGFkZGluZyA6IHRleHRNZXRyaWNzLndpZHRoIC8gMiArIHRleHRQYWRkaW5nKSxcclxuXHRcdFx0XHR5OiBkYXRhUG9pbnQueSxcclxuXHRcdFx0XHRjb2xvcjogZ2V0Q29sb3IoJy0tY2hhcnQtdmFsdWUtZGVmYXVsdC1jb2xvcicsICcjMDAwJylcclxuXHRcdFx0fTtcclxuXHRcdH1cclxuXHR9IGVsc2Uge1xyXG5cdFx0Y29uc3QgZml0c0luc2lkZSA9IHRleHRNZXRyaWNzLmhlaWdodCArIHRleHRQYWRkaW5nICogMiA8PSBkYXRhUG9pbnQuaGVpZ2h0O1xyXG5cclxuXHRcdGlmIChmaXRzSW5zaWRlKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0eDogZGF0YVBvaW50LngsXHJcblx0XHRcdFx0eTogZGF0YVBvaW50LnksXHJcblx0XHRcdFx0Y29sb3I6IGdldFRleHRDb2xvcihiYWNrZ3JvdW5kQ29sb3IpXHJcblx0XHRcdH07XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdHg6IGRhdGFQb2ludC54LFxyXG5cdFx0XHRcdHk6IGRhdGFQb2ludC55IC0gdGV4dE1ldHJpY3MuaGVpZ2h0IC8gMiAtIHRleHRQYWRkaW5nLFxyXG5cdFx0XHRcdGNvbG9yOiBnZXRDb2xvcignLS1jaGFydC12YWx1ZS1kZWZhdWx0LWNvbG9yJywgJyMwMDAnKVxyXG5cdFx0XHR9O1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLy8gUGllIGNoYXJ0IGltcGxlbWVudGF0aW9uXHJcbmZ1bmN0aW9uIHBpZUNoYXJ0TGFiZWxzKGNoYXJ0OiBDaGFydDxDaGFydFR5cGUsIHVua25vd24sIHVua25vd24+KTogdm9pZCB7XHJcblx0cmVuZGVyQXJjTGFiZWxzKGNoYXJ0LCAncGllJyk7XHJcbn1cclxuXHJcbi8vIERvdWdobnV0IGNoYXJ0IGltcGxlbWVudGF0aW9uXHJcbmZ1bmN0aW9uIGRvdWdobnV0Q2hhcnRMYWJlbHMoY2hhcnQ6IENoYXJ0PENoYXJ0VHlwZSwgdW5rbm93biwgdW5rbm93bj4pOiB2b2lkIHtcclxuXHRyZW5kZXJBcmNMYWJlbHMoY2hhcnQsICdkb3VnaG51dCcpO1xyXG59XHJcblxyXG5mdW5jdGlvbiByZW5kZXJBcmNMYWJlbHMoY2hhcnQ6IENoYXJ0PENoYXJ0VHlwZSwgdW5rbm93biwgdW5rbm93bj4sIGNoYXJ0VHlwZTogJ3BpZScgfCAnZG91Z2hudXQnKTogdm9pZCB7XHJcblx0Y29uc3QgeyBjdHggfSA9IGNoYXJ0O1xyXG5cclxuXHRjaGFydC5kYXRhLmRhdGFzZXRzLmZvckVhY2goKGRhdGFzZXQsIGRhdGFzZXRJbmRleCkgPT4ge1xyXG5cdFx0Y29uc3QgbWV0YSA9IGNoYXJ0LmdldERhdGFzZXRNZXRhKGRhdGFzZXRJbmRleCk7XHJcblx0XHRjb25zdCB0b3RhbFN1bSA9IChkYXRhc2V0LmRhdGEgYXMgbnVtYmVyW10pLnJlZHVjZSgoc3VtLCB2YWx1ZSkgPT4gc3VtICsgdmFsdWUsIDApO1xyXG5cclxuXHRcdG1ldGEuZGF0YS5mb3JFYWNoKChhcmM6IEFyY0VsZW1lbnQsIGluZGV4KSA9PiB7XHJcblx0XHRcdGlmICghYXJjKSByZXR1cm47XHJcblxyXG5cdFx0XHRjb25zdCBsYWJlbERhdGEgPSBleHRyYWN0TGFiZWxEYXRhKGRhdGFzZXQsIGluZGV4LCB0b3RhbFN1bSwgY2hhcnQpO1xyXG5cdFx0XHRpZiAoIWxhYmVsRGF0YSkgcmV0dXJuO1xyXG5cclxuXHRcdFx0aWYgKHNob3VsZFNob3dBcmNMYWJlbChhcmMsIGxhYmVsRGF0YS50ZXh0LCBjaGFydFR5cGUpKSB7XHJcblx0XHRcdFx0Y29uc3QgcG9zaXRpb24gPSBjYWxjdWxhdGVBcmNMYWJlbFBvc2l0aW9uKGFyYywgY2hhcnRUeXBlKTtcclxuXHRcdFx0XHRjb25zdCBmb250U2l6ZSA9IGNhbGN1bGF0ZUZvbnRTaXplKGxhYmVsRGF0YS5wZXJjZW50YWdlKTtcclxuXHRcdFx0XHRjb25zdCB0ZXh0Q29sb3IgPSBnZXRUZXh0Q29sb3IobGFiZWxEYXRhLmJhY2tncm91bmRDb2xvciB8fCAnIzAwMDAwMCcpO1xyXG5cclxuXHRcdFx0XHRwcmVwYXJlQ2FudmFzRm9yVGV4dChjdHgsIGZvbnRTaXplLCB0ZXh0Q29sb3IpO1xyXG5cdFx0XHRcdGN0eC5maWxsVGV4dChsYWJlbERhdGEudGV4dCwgcG9zaXRpb24ueCwgcG9zaXRpb24ueSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBzaG91bGRTaG93QXJjTGFiZWwoYXJjOiBBcmNFbGVtZW50LCB0ZXh0OiBzdHJpbmcsIGNoYXJ0VHlwZTogJ3BpZScgfCAnZG91Z2hudXQnKTogYm9vbGVhbiB7XHJcblx0Y29uc3QgYXJjQW5nbGUgPSBNYXRoLmFicyhhcmMuZW5kQW5nbGUgLSBhcmMuc3RhcnRBbmdsZSk7XHJcblxyXG5cdC8vIERvbid0IHNob3cgbGFiZWxzIGZvciB2ZXJ5IHNtYWxsIHNsaWNlc1xyXG5cdGlmIChhcmNBbmdsZSA8IExBQkVMX0NPTkZJRy5taW5BbmdsZUZvclBpZUxhYmVsKSB7XHJcblx0XHRyZXR1cm4gZmFsc2U7XHJcblx0fVxyXG5cclxuXHQvLyBGb3IgZG91Z2hudXQgY2hhcnRzLCBhbHNvIGNoZWNrIGlmIHRoZXJlJ3MgZW5vdWdoIHJhZGlhbCBzcGFjZVxyXG5cdGlmIChjaGFydFR5cGUgPT09ICdkb3VnaG51dCcpIHtcclxuXHRcdGNvbnN0IHJhZGlhbFNwYWNlID0gYXJjLm91dGVyUmFkaXVzIC0gYXJjLmlubmVyUmFkaXVzO1xyXG5cdFx0cmV0dXJuIHJhZGlhbFNwYWNlID49IExBQkVMX0NPTkZJRy5kZWZhdWx0Rm9udFNpemUgKiAxLjU7XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gdHJ1ZTtcclxufVxyXG5cclxuZnVuY3Rpb24gY2FsY3VsYXRlQXJjTGFiZWxQb3NpdGlvbihhcmM6IEFyY0VsZW1lbnQsIGNoYXJ0VHlwZTogJ3BpZScgfCAnZG91Z2hudXQnKTogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHtcclxuXHRjb25zdCBtaWRBbmdsZSA9IChhcmMuc3RhcnRBbmdsZSArIGFyYy5lbmRBbmdsZSkgLyAyO1xyXG5cdGNvbnN0IHJhZGl1c011bHRpcGxpZXIgPSBMQUJFTF9DT05GSUcuYXJjUmFkaXVzTXVsdGlwbGllcltjaGFydFR5cGVdO1xyXG5cclxuXHRsZXQgcmFkaXVzOiBudW1iZXI7XHJcblx0aWYgKGNoYXJ0VHlwZSA9PT0gJ2RvdWdobnV0Jykge1xyXG5cdFx0cmFkaXVzID0gKGFyYy5vdXRlclJhZGl1cyArIGFyYy5pbm5lclJhZGl1cykgLyAyO1xyXG5cdH0gZWxzZSB7XHJcblx0XHRyYWRpdXMgPSBhcmMub3V0ZXJSYWRpdXMgKiByYWRpdXNNdWx0aXBsaWVyO1xyXG5cdH1cclxuXHJcblx0cmV0dXJuIHtcclxuXHRcdHg6IGFyYy54ICsgTWF0aC5jb3MobWlkQW5nbGUpICogcmFkaXVzLFxyXG5cdFx0eTogYXJjLnkgKyBNYXRoLnNpbihtaWRBbmdsZSkgKiByYWRpdXNcclxuXHR9O1xyXG59XHJcblxyXG4vLyBVdGlsaXR5IGZ1bmN0aW9uc1xyXG5mdW5jdGlvbiBnZXRCYXJDaGFydE9yaWVudGF0aW9uKGNoYXJ0OiBDaGFydDxDaGFydFR5cGUsIHVua25vd24sIHVua25vd24+KSB7XHJcblx0Y29uc3Qgc2NhbGVzID0gY2hhcnQub3B0aW9ucy5zY2FsZXM7XHJcblx0cmV0dXJuIHtcclxuXHRcdGlzVmVydGljYWxSZXZlcnNlZDogc2NhbGVzPy55Py5yZXZlcnNlID09PSB0cnVlLFxyXG5cdFx0aXNIb3Jpem9udGFsUmV2ZXJzZWQ6IHNjYWxlcz8ueD8ucmV2ZXJzZSA9PT0gdHJ1ZVxyXG5cdH07XHJcbn1cclxuIl19
|
|
@@ -71,4 +71,16 @@ export function createColorVariants(color, length, type = 'tint', amount = 43) {
|
|
|
71
71
|
}
|
|
72
72
|
return variants;
|
|
73
73
|
}
|
|
74
|
-
|
|
74
|
+
export function createConicGradient(chart, colors) {
|
|
75
|
+
const { ctx, chartArea } = chart;
|
|
76
|
+
if (!chartArea || !('createConicGradient' in ctx)) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
const { left, width, top, height } = chartArea;
|
|
80
|
+
//@ts-ignore
|
|
81
|
+
const gradient = ctx.createConicGradient(0, left + width / 2, top + height / 2);
|
|
82
|
+
gradient.addColorStop(0, colors === null || colors === void 0 ? void 0 : colors.startColor);
|
|
83
|
+
gradient.addColorStop(1, colors === null || colors === void 0 ? void 0 : colors.endColor);
|
|
84
|
+
return gradient;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9yZXBvcnRzL2NoYXJ0cy91dGlsaXR5L2NvbG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxlQUFlLENBQUM7QUFHckMsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFhLEVBQUUsT0FBZTtJQUM1RCxJQUFJLEtBQUssR0FBRyxPQUFPLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUM7SUFDdEQsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ2pELENBQUM7QUFFRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQUs7SUFDL0IsdURBQXVEO0lBQ3ZELFNBQVMsY0FBYyxDQUFDLENBQUM7UUFDeEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzQixPQUFPLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDM0MsQ0FBQztJQUVELDBEQUEwRDtJQUMxRCxTQUFTLGNBQWMsQ0FBQyxLQUFLLEVBQUUsUUFBUTtRQUN0QyxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxD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QU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQ0FBc0M7U0FDckY7S0FDRDtJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ2pCLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsS0FBWSxFQUFFLE1BQWdEO0lBQ2pHLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLHFCQUFxQixJQUFJLEdBQUcsQ0FBQyxFQUFFO1FBQ2xELE9BQU8sSUFBSSxDQUFDO0tBQ1o7SUFFRCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsU0FBUyxDQUFDO0lBRS9DLFlBQVk7SUFDWixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEYsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLFVBQVUsQ0FBRSxDQUFDO0lBQzlDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxRQUFRLENBQUMsQ0FBQztJQUUzQyxPQUFPLFFBQVEsQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbG9yTGliIGZyb20gJ0BrdXJrbGUvY29sb3InO1xyXG5pbXBvcnQgeyBDaGFydCB9IGZyb20gJ2NoYXJ0LmpzJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB0cmFuc3BhcmVudGl6ZSh2YWx1ZTogc3RyaW5nLCBvcGFjaXR5OiBudW1iZXIpIHtcclxuXHR2YXIgYWxwaGEgPSBvcGFjaXR5ID09PSB1bmRlZmluZWQgPyAwLjUgOiAxIC0gb3BhY2l0eTtcclxuXHRyZXR1cm4gY29sb3JMaWIodmFsdWUpLmFscGhhKGFscGhhKS5yZ2JTdHJpbmcoKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNvbG9yVG9IZXgoY29sb3IpIHtcclxuXHQvLyBIZWxwZXIgZnVuY3Rpb24gdG8gY29udmVydCBhIHNpbmdsZSBjb21wb25lbnQgdG8gaGV4XHJcblx0ZnVuY3Rpb24gY29tcG9uZW50VG9IZXgoYykge1xyXG5cdFx0Y29uc3QgaGV4ID0gYy50b1N0cmluZygxNik7XHJcblx0XHRyZXR1cm4gaGV4Lmxlbmd0aCA9PT0gMSA/ICcwJyArIGhleCA6IGhleDtcclxuXHR9XHJcblxyXG5cdC8vIEhlbHBlciBmdW5jdGlvbiB0byB2YWxpZGF0ZSBhbmQgcGFyc2UgYSBjb2xvciBjb21wb25lbnRcclxuXHRmdW5jdGlvbiBwYXJzZUNvbXBvbmVudCh2YWx1ZSwgbWF4VmFsdWUpIHtcclxuXHRcdHZhbHVlID0gcGFyc2VGbG9hdCh2YWx1ZSk7XHJcblx0XHRyZXR1cm4gaXNOYU4odmFsdWUpID8gMCA6IE1hdGgubWluKG1heFZhbHVlLCBNYXRoLm1heCgwLCB2YWx1ZSkpO1xyXG5cdH1cclxuXHJcblx0aWYgKHR5cGVvZiBjb2xvciA9PT0gJ3N0cmluZycpIHtcclxuXHRcdC8vIElmIHRoZSBpbnB1dCBpcyBhIHN0cmluZywgYXR0ZW1wdCB0byBwYXJzZSBpdCBhcyBhIENTUyBjb2xvclxyXG5cdFx0Y29uc3QgdGVtcERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG5cdFx0dGVtcERpdi5zdHlsZS5jb2xvciA9IGNvbG9yO1xyXG5cdFx0ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZW1wRGl2KTtcclxuXHRcdGNvbnN0IGNvbXB1dGVkQ29sb3IgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZW1wRGl2KS5jb2xvcjtcclxuXHRcdGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGVtcERpdik7XHJcblx0XHRjb2xvciA9IGNvbXB1dGVkQ29sb3I7XHJcblx0fVxyXG5cclxuXHRpZiAoY29sb3Iuc3RhcnRzV2l0aCgnIycpKSB7XHJcblx0XHQvLyBIZXhhZGVjaW1hbCBjb2xvclxyXG5cdFx0cmV0dXJuIGNvbG9yLnRvVXBwZXJDYXNlKCk7XHJcblx0fSBlbHNlIGlmIChjb2xvci5zdGFydHNXaXRoKCdyZ2InKSB8fCBjb2xvci5zdGFydHNXaXRoKCdoc2wnKSkge1xyXG5cdFx0Ly8gUkdCLCBSR0JBLCBIU0wsIEhTTEEgY29sb3JcclxuXHRcdGNvbnN0IHJnYmEgPSBjb2xvci5tYXRjaCgvKDA/XFwuP1xcZHsxLDN9KSU/XFxiL2cpLm1hcCgoY29tcG9uZW50LCBpbmRleCkgPT4ge1xyXG5cdFx0XHRyZXR1cm4gaW5kZXggPCAzID8gTWF0aC5yb3VuZChwYXJzZUNvbXBvbmVudChjb21wb25lbnQsIDI1NSkpIDogcGFyc2VGbG9hdChjb21wb25lbnQpO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0cmV0dXJuIGAjJHtjb21wb25lbnRUb0hleChyZ2JhWzBdKX0ke2NvbXBvbmVudFRvSGV4KHJnYmFbMV0pfSR7Y29tcG9uZW50VG9IZXgocmdiYVsyXSl9YDtcclxuXHR9XHJcblxyXG5cdC8vIFVuc3VwcG9ydGVkIGNvbG9yIGZvcm1hdCwgcmV0dXJuIGlucHV0XHJcblx0cmV0dXJuIGNvbG9yO1xyXG59XHJcblxyXG4vLyBGdW5jdGlvbiB0byBjb252ZXJ0IGhleCB0byBSR0JcclxuZXhwb3J0IGZ1bmN0aW9uIGhleFRvUmdiKGhleDogc3RyaW5nKTogeyByOiBudW1iZXI7IGc6IG51bWJlcjsgYjogbnVtYmVyIH0ge1xyXG5cdGxldCByID0gcGFyc2VJbnQoaGV4LnNsaWNlKDEsIDMpLCAxNik7XHJcblx0bGV0IGcgPSBwYXJzZUludChoZXguc2xpY2UoMywgNSksIDE2KTtcclxuXHRsZXQgYiA9IHBhcnNlSW50KGhleC5zbGljZSg1LCA3KSwgMTYpO1xyXG5cdHJldHVybiB7IHIsIGcsIGIgfTtcclxufVxyXG5cclxuLy8gRnVuY3Rpb24gdG8gY29udmVydCBSR0IgdG8gaGV4XHJcbmV4cG9ydCBmdW5jdGlvbiByZ2JUb0hleChyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyKTogc3RyaW5nIHtcclxuXHRyZXR1cm4gYCMkeygoMSA8PCAyNCkgKyAociA8PCAxNikgKyAoZyA8PCA4KSArIGIpLnRvU3RyaW5nKDE2KS5zbGljZSgxKS50b1VwcGVyQ2FzZSgpfWA7XHJcbn1cclxuXHJcbi8vIEZ1bmN0aW9uIHRvIGNyZWF0ZSBhIHRpbnQgKGxpZ2h0ZW4gdGhlIGNvbG9yKVxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGludChjb2xvcjogc3RyaW5nLCBhbW91bnQ6IG51bWJlcik6IHN0cmluZyB7XHJcblx0Y29uc3QgeyByLCBnLCBiIH0gPSBoZXhUb1JnYihjb2xvcik7XHJcblx0cmV0dXJuIHJnYlRvSGV4KE1hdGgubWluKDI1NSwgciArIGFtb3VudCksIE1hdGgubWluKDI1NSwgZyArIGFtb3VudCksIE1hdGgubWluKDI1NSwgYiArIGFtb3VudCkpO1xyXG59XHJcblxyXG4vLyBGdW5jdGlvbiB0byBjcmVhdGUgYSBzaGFkZSAoZGFya2VuIHRoZSBjb2xvcilcclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNoYWRlKGNvbG9yOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyKTogc3RyaW5nIHtcclxuXHRjb25zdCB7IHIsIGcsIGIgfSA9IGhleFRvUmdiKGNvbG9yKTtcclxuXHRyZXR1cm4gcmdiVG9IZXgoTWF0aC5tYXgoMCwgciAtIGFtb3VudCksIE1hdGgubWF4KDAsIGcgLSBhbW91bnQpLCBNYXRoLm1heCgwLCBiIC0gYW1vdW50KSk7XHJcbn1cclxuXHJcbi8vIEZ1bmN0aW9uIHRvIGNyZWF0ZSBtdWx0aXBsZSB0aW50cyBvciBzaGFkZXNcclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbG9yVmFyaWFudHMoXHJcblx0Y29sb3I6IHN0cmluZyxcclxuXHRsZW5ndGg6IG51bWJlcixcclxuXHR0eXBlOiAndGludCcgfCAnc2hhZGUnID0gJ3RpbnQnLFxyXG5cdGFtb3VudCA9IDQzXHJcbik6IHN0cmluZ1tdIHtcclxuXHRsZXQgdmFyaWFudHM6IHN0cmluZ1tdID0gW107XHJcblx0Zm9yIChsZXQgaSA9IDE7IGkgPD0gbGVuZ3RoOyBpKyspIHtcclxuXHRcdGlmICh0eXBlID09PSAndGludCcpIHtcclxuXHRcdFx0dmFyaWFudHMucHVzaChjcmVhdGVUaW50KGNvbG9yLCBpICogYW1vdW50KSk7IC8vIEFkanVzdCB0aGUgc3RlcCBzaXplIChoZXJlIGl0J3MgNDApXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR2YXJpYW50cy5wdXNoKGNyZWF0ZVNoYWRlKGNvbG9yLCBpICogYW1vdW50KSk7IC8vIEFkanVzdCB0aGUgc3RlcCBzaXplIChoZXJlIGl0J3MgMjApXHJcblx0XHR9XHJcblx0fVxyXG5cdHJldHVybiB2YXJpYW50cztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvbmljR3JhZGllbnQoY2hhcnQ6IENoYXJ0LCBjb2xvcnM6IHsgc3RhcnRDb2xvcjogc3RyaW5nOyBlbmRDb2xvcjogc3RyaW5nIH0pIHtcclxuXHRjb25zdCB7IGN0eCwgY2hhcnRBcmVhIH0gPSBjaGFydDtcclxuXHRpZiAoIWNoYXJ0QXJlYSB8fCAhKCdjcmVhdGVDb25pY0dyYWRpZW50JyBpbiBjdHgpKSB7XHJcblx0XHRyZXR1cm4gbnVsbDtcclxuXHR9XHJcblxyXG5cdGNvbnN0IHsgbGVmdCwgd2lkdGgsIHRvcCwgaGVpZ2h0IH0gPSBjaGFydEFyZWE7XHJcblxyXG5cdC8vQHRzLWlnbm9yZVxyXG5cdGNvbnN0IGdyYWRpZW50ID0gY3R4LmNyZWF0ZUNvbmljR3JhZGllbnQoMCwgbGVmdCArIHdpZHRoIC8gMiwgdG9wICsgaGVpZ2h0IC8gMik7XHJcblx0Z3JhZGllbnQuYWRkQ29sb3JTdG9wKDAsIGNvbG9ycz8uc3RhcnRDb2xvciApO1xyXG5cdGdyYWRpZW50LmFkZENvbG9yU3RvcCgxLCBjb2xvcnM/LmVuZENvbG9yKTtcclxuXHJcblx0cmV0dXJuIGdyYWRpZW50O1xyXG59XHJcbiJdfQ==
|
|
@@ -11,9 +11,9 @@ export class BaseChart extends DestroySubject {
|
|
|
11
11
|
this.injector = injector;
|
|
12
12
|
this._translateService = this.injector.get(TranslateService);
|
|
13
13
|
this._rebuildTriggerSub = new BehaviorSubject(false);
|
|
14
|
-
this._dataSub = new ReplaySubject(null);
|
|
15
14
|
this._configSub = new ReplaySubject(null);
|
|
16
15
|
this._isInitialized = false;
|
|
16
|
+
this._dataSub = new ReplaySubject(null);
|
|
17
17
|
this.onReady = new EventEmitter();
|
|
18
18
|
this._subscribeToLanguage();
|
|
19
19
|
}
|
|
@@ -58,4 +58,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
58
58
|
}], onReady: [{
|
|
59
59
|
type: Output
|
|
60
60
|
}] } });
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL251eGVvLWRldmVsb3BtZW50LWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0cy9uZGYtcmVwb3J0cy9iYXNlL2Jhc2UtY2hhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQVksS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFL0QsT0FBTyxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7O0FBR3ZCLE1BQU0sT0FBZ0IsU0FBYSxTQUFRLGNBQWM7SUEwQ3hELFlBQW1CLFFBQWtCO1FBQ3BDLEtBQUssRUFBRSxDQUFDO1FBRFUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQXZDM0Isc0JBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMvQyx1QkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNsRSxlQUFVLEdBQUcsSUFBSSxhQUFhLENBQUksSUFBSSxDQUFDLENBQUM7UUFHeEMsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFFdkIsYUFBUSxHQUFHLElBQUksYUFBYSxDQUFzQixJQUFJLENBQUMsQ0FBQztRQThCeEQsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFTLENBQUM7UUFJN0MsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQWpDRCxJQUFhLElBQUksQ0FBQyxJQUF5QjtRQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ1AsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ25CLENBQUM7SUFHRCxJQUFhLE1BQU0sQ0FBQyxNQUFTO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksTUFBTTtRQUNULE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNyQixDQUFDO0lBR0QsSUFBYSxRQUFRLENBQUMsS0FBb0I7UUFDekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDdkIsQ0FBQztJQVNTLG9CQUFvQjtRQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWTthQUNqQyxJQUFJLENBQ0osb0JBQW9CLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsRUFDMUQsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFDakMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDeEI7YUFDQSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNoQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7dUdBekRvQixTQUFTOzJGQUFULFNBQVM7NEZBQVQsU0FBUztrQkFEOUIsU0FBUzsrRkFhSSxJQUFJO3NCQUFoQixLQUFLO2dCQVVPLE1BQU07c0JBQWxCLEtBQUs7Z0JBVU8sUUFBUTtzQkFBcEIsS0FBSztnQkFRSSxPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBEZXN0cm95U3ViamVjdCB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcclxuXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgQ2hhcnQgZnJvbSAnY2hhcnQuanMvYXV0byc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDcml0ZXJpYU1vZGVsLCBSZXBvcnRSZXNwb25zZU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUNoYXJ0PFQ+IGV4dGVuZHMgRGVzdHJveVN1YmplY3Qge1xyXG5cdHB1YmxpYyBhYnN0cmFjdCByZXBvcnQkOiBPYnNlcnZhYmxlPGFueT47XHJcblxyXG5cdHByb3RlY3RlZCBfdHJhbnNsYXRlU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFRyYW5zbGF0ZVNlcnZpY2UpO1xyXG5cdHByb3RlY3RlZCByZWFkb25seSBfcmVidWlsZFRyaWdnZXJTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRwcm90ZWN0ZWQgX2NvbmZpZ1N1YiA9IG5ldyBSZXBsYXlTdWJqZWN0PFQ+KG51bGwpO1xyXG5cclxuXHJcblx0cHJvdGVjdGVkIF9pc0luaXRpYWxpemVkID0gZmFsc2U7XHJcblxyXG5cdHByb3RlY3RlZCBfZGF0YVN1YiA9IG5ldyBSZXBsYXlTdWJqZWN0PFJlcG9ydFJlc3BvbnNlTW9kZWw+KG51bGwpO1xyXG5cdHByaXZhdGUgX2RhdGE6IFJlcG9ydFJlc3BvbnNlTW9kZWw7XHJcblx0QElucHV0KCkgc2V0IGRhdGEoZGF0YTogUmVwb3J0UmVzcG9uc2VNb2RlbCkge1xyXG5cdFx0dGhpcy5fZGF0YSA9IGRhdGE7XHJcblx0XHR0aGlzLl9kYXRhU3ViLm5leHQoZGF0YSk7XHJcblx0fVxyXG5cclxuXHRnZXQgZGF0YSgpIHtcclxuXHRcdHJldHVybiB0aGlzLl9kYXRhO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBfY29uZmlnOiBUO1xyXG5cdEBJbnB1dCgpIHNldCBjb25maWcoY29uZmlnOiBUKSB7XHJcblx0XHR0aGlzLl9jb25maWcgPSBfLmNsb25lRGVlcChjb25maWcpO1xyXG5cdFx0dGhpcy5fY29uZmlnU3ViLm5leHQodGhpcy5fY29uZmlnKTtcclxuXHR9XHJcblxyXG5cdGdldCBjb25maWcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fY29uZmlnO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBfY3JpdGVyaWE6IENyaXRlcmlhTW9kZWw7XHJcblx0QElucHV0KCkgc2V0IGNyaXRlcmlhKHZhbHVlOiBDcml0ZXJpYU1vZGVsKSB7XHJcblx0XHR0aGlzLl9jcml0ZXJpYSA9IF8uY2xvbmVEZWVwKHZhbHVlKTtcclxuXHR9XHJcblxyXG5cdGdldCBjcml0ZXJpYSgpIHtcclxuXHRcdHJldHVybiB0aGlzLl9jcml0ZXJpYTtcclxuXHR9XHJcblxyXG5cdEBPdXRwdXQoKSBvblJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcjxDaGFydD4oKTtcclxuXHJcblx0Y29uc3RydWN0b3IocHVibGljIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG5cdFx0c3VwZXIoKTtcclxuXHRcdHRoaXMuX3N1YnNjcmliZVRvTGFuZ3VhZ2UoKTtcclxuXHR9XHJcblxyXG5cdHByb3RlY3RlZCBfc3Vic2NyaWJlVG9MYW5ndWFnZSgpIHtcclxuXHRcdHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlXHJcblx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmUsIG5leHQpID0+IHByZS5sYW5nID09IG5leHQubGFuZyksXHJcblx0XHRcdFx0ZmlsdGVyKCgpID0+IHRoaXMuX2lzSW5pdGlhbGl6ZWQpLFxyXG5cdFx0XHRcdHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxyXG5cdFx0XHQpXHJcblx0XHRcdC5zdWJzY3JpYmUoKF8pID0+IHtcclxuXHRcdFx0XHR0aGlzLl9yZWJ1aWxkVHJpZ2dlclN1Yi5uZXh0KHRydWUpO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcbn1cclxuIl19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Directive, Input } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject, ReplaySubject } from 'rxjs';
|
|
3
2
|
import _ from 'lodash';
|
|
3
|
+
import { BehaviorSubject, ReplaySubject } from 'rxjs';
|
|
4
4
|
import { DestroySubject } from '../../../../shared/components';
|
|
5
5
|
import { ChartManagerService } from '../services';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
@@ -10,15 +10,26 @@ export class BaseCustomReport extends DestroySubject {
|
|
|
10
10
|
this.injector = injector;
|
|
11
11
|
this._chartHelperService = this.injector.get(ChartManagerService);
|
|
12
12
|
this.direction = 'rtl';
|
|
13
|
+
this._dataSub = new ReplaySubject(null);
|
|
13
14
|
this._criteriaSub = new ReplaySubject(null);
|
|
14
15
|
this.criteria$ = this._criteriaSub.asObservable();
|
|
15
16
|
this._configSub = new BehaviorSubject(null);
|
|
16
17
|
this.config$ = this._configSub.asObservable();
|
|
17
18
|
}
|
|
19
|
+
set data(data) {
|
|
20
|
+
this._data = data;
|
|
21
|
+
this._dataSub.next(data);
|
|
22
|
+
}
|
|
23
|
+
get data() {
|
|
24
|
+
return this._data;
|
|
25
|
+
}
|
|
18
26
|
set criteria(value) {
|
|
19
27
|
this._criteria = _.cloneDeep(value);
|
|
20
28
|
this._criteriaSub.next(this._criteria);
|
|
21
29
|
}
|
|
30
|
+
get criteria() {
|
|
31
|
+
return this._criteria;
|
|
32
|
+
}
|
|
22
33
|
set config(obj) {
|
|
23
34
|
if (obj) {
|
|
24
35
|
this._configSub.next(obj);
|
|
@@ -40,11 +51,13 @@ export class BaseCustomReport extends DestroySubject {
|
|
|
40
51
|
}
|
|
41
52
|
}
|
|
42
53
|
BaseCustomReport.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseCustomReport, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
|
|
43
|
-
BaseCustomReport.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: BaseCustomReport, inputs: { direction: "direction", data: "data", criteria: "criteria", config: "config" }, usesInheritance: true, ngImport: i0 });
|
|
54
|
+
BaseCustomReport.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.17", type: BaseCustomReport, inputs: { direction: "direction", definition: "definition", data: "data", criteria: "criteria", config: "config" }, usesInheritance: true, ngImport: i0 });
|
|
44
55
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: BaseCustomReport, decorators: [{
|
|
45
56
|
type: Directive
|
|
46
57
|
}], ctorParameters: function () { return [{ type: i0.Injector }]; }, propDecorators: { direction: [{
|
|
47
58
|
type: Input
|
|
59
|
+
}], definition: [{
|
|
60
|
+
type: Input
|
|
48
61
|
}], data: [{
|
|
49
62
|
type: Input
|
|
50
63
|
}], criteria: [{
|
|
@@ -52,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
52
65
|
}], config: [{
|
|
53
66
|
type: Input
|
|
54
67
|
}] } });
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jdXN0b20tcmVwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnV4ZW8tZGV2ZWxvcG1lbnQtZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9yZXBvcnRzL25kZi1yZXBvcnRzL2Jhc2UvYmFzZS1jdXN0b20tcmVwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVksS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNELE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUlsRCxNQUFNLE9BQWdCLGdCQUFpQixTQUFRLGNBQWM7SUE4QzVELFlBQTRCLFFBQWtCO1FBQzdDLEtBQUssRUFBRSxDQUFDO1FBRG1CLGFBQVEsR0FBUixRQUFRLENBQVU7UUF6Q3BDLHdCQUFtQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFOUQsY0FBUyxHQUFjLEtBQUssQ0FBQztRQUk1QixhQUFRLEdBQUcsSUFBSSxhQUFhLENBQXNCLElBQUksQ0FBQyxDQUFDO1FBV3hELGlCQUFZLEdBQUcsSUFBSSxhQUFhLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBQ2hFLGNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBV25DLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBYyxJQUFJLENBQUMsQ0FBQztRQUM5RCxZQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQWF6QyxDQUFDO0lBbkNELElBQWEsSUFBSSxDQUFDLElBQXlCO1FBQzFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDbkIsQ0FBQztJQUtELElBQWEsUUFBUSxDQUFDLEtBQW9CO1FBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELElBQUksUUFBUTtRQUNYLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN2QixDQUFDO0lBS0QsSUFBYSxNQUFNLENBQUMsR0FBZ0I7UUFDbkMsSUFBSSxHQUFHLEVBQUU7WUFDUixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMxQjtJQUNGLENBQUM7SUFDRCxJQUFJLE1BQU07UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQU1ELFVBQVUsQ0FBQyxLQUFZO1FBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDNUQsY0FBYyxDQUFDLEdBQUcsRUFBRTtZQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQzs7OEdBNURvQixnQkFBZ0I7a0dBQWhCLGdCQUFnQjs0RkFBaEIsZ0JBQWdCO2tCQURyQyxTQUFTOytGQVFBLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFJTyxJQUFJO3NCQUFoQixLQUFLO2dCQVlPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBWU8sTUFBTTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0b3IsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XHJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEZXN0cm95U3ViamVjdCB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9jb21wb25lbnRzJztcclxuXHJcbmltcG9ydCBDaGFydCBmcm9tICdjaGFydC5qcy9hdXRvJztcclxuaW1wb3J0IHsgQ3JpdGVyaWFNb2RlbCwgQ3VzdG9tQ2hhcnQsIEN1c3RvbUNoYXJ0RGVmaW5pdGlvbiwgUmVwb3J0UmVzcG9uc2VNb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IENoYXJ0TWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcblxyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ3VzdG9tUmVwb3J0IGV4dGVuZHMgRGVzdHJveVN1YmplY3Qge1xyXG5cdHByb3RlY3RlZCBjaGFydDogQ2hhcnQ7XHJcblx0cHJvdGVjdGVkIF9wcmludExpc3RlbmVyOiBFdmVudExpc3RlbmVyO1xyXG5cdGFic3RyYWN0IHByaW50KCk6IHZvaWQ7XHJcblxyXG5cdHByb3RlY3RlZCBfY2hhcnRIZWxwZXJTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQ2hhcnRNYW5hZ2VyU2VydmljZSk7XHJcblxyXG5cdEBJbnB1dCgpIGRpcmVjdGlvbjogRGlyZWN0aW9uID0gJ3J0bCc7XHJcblxyXG5cdEBJbnB1dCgpIGRlZmluaXRpb246IEN1c3RvbUNoYXJ0RGVmaW5pdGlvbjtcclxuXHJcblx0cHJvdGVjdGVkIF9kYXRhU3ViID0gbmV3IFJlcGxheVN1YmplY3Q8UmVwb3J0UmVzcG9uc2VNb2RlbD4obnVsbCk7XHJcblx0cHJpdmF0ZSBfZGF0YTogUmVwb3J0UmVzcG9uc2VNb2RlbDtcclxuXHRASW5wdXQoKSBzZXQgZGF0YShkYXRhOiBSZXBvcnRSZXNwb25zZU1vZGVsKSB7XHJcblx0XHR0aGlzLl9kYXRhID0gZGF0YTtcclxuXHRcdHRoaXMuX2RhdGFTdWIubmV4dChkYXRhKTtcclxuXHR9XHJcblxyXG5cdGdldCBkYXRhKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2RhdGE7XHJcblx0fVxyXG5cclxuXHRwcm90ZWN0ZWQgX2NyaXRlcmlhU3ViID0gbmV3IFJlcGxheVN1YmplY3Q8Q3JpdGVyaWFNb2RlbD4obnVsbCk7XHJcblx0Y3JpdGVyaWEkID0gdGhpcy5fY3JpdGVyaWFTdWIuYXNPYnNlcnZhYmxlKCk7XHJcblx0cHJpdmF0ZSBfY3JpdGVyaWE6IENyaXRlcmlhTW9kZWw7XHJcblx0QElucHV0KCkgc2V0IGNyaXRlcmlhKHZhbHVlOiBDcml0ZXJpYU1vZGVsKSB7XHJcblx0XHR0aGlzLl9jcml0ZXJpYSA9IF8uY2xvbmVEZWVwKHZhbHVlKTtcclxuXHRcdHRoaXMuX2NyaXRlcmlhU3ViLm5leHQodGhpcy5fY3JpdGVyaWEpO1xyXG5cdH1cclxuXHJcblx0Z2V0IGNyaXRlcmlhKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2NyaXRlcmlhO1xyXG5cdH1cclxuXHJcblx0cHJvdGVjdGVkIF9jb25maWdTdWIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEN1c3RvbUNoYXJ0PihudWxsKTtcclxuXHRjb25maWckID0gdGhpcy5fY29uZmlnU3ViLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuXHRASW5wdXQoKSBzZXQgY29uZmlnKG9iajogQ3VzdG9tQ2hhcnQpIHtcclxuXHRcdGlmIChvYmopIHtcclxuXHRcdFx0dGhpcy5fY29uZmlnU3ViLm5leHQob2JqKTtcclxuXHRcdH1cclxuXHR9XHJcblx0Z2V0IGNvbmZpZygpIHtcclxuXHRcdHJldHVybiB0aGlzLl9jb25maWdTdWIuZ2V0VmFsdWUoKTtcclxuXHR9XHJcblxyXG5cdGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuXHRcdHN1cGVyKCk7XHJcblx0fVxyXG5cclxuXHRjaGFydFJlYWR5KGNoYXJ0OiBDaGFydCkge1xyXG5cdFx0dGhpcy5jaGFydCA9IGNoYXJ0O1xyXG5cdFx0dGhpcy5fY2hhcnRIZWxwZXJTZXJ2aWNlLnNldENoYXJ0KGNoYXJ0KTtcclxuXHRcdHRoaXMuX3ByaW50TGlzdGVuZXIgPSAoZXZlbnQpID0+IHtcclxuXHRcdFx0dGhpcy5jaGFydC5yZXNpemUoKTtcclxuXHRcdH07XHJcblx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmVmb3JlcHJpbnQnLCB0aGlzLl9wcmludExpc3RlbmVyKTtcclxuXHRcdHF1ZXVlTWljcm90YXNrKCgpID0+IHtcclxuXHRcdFx0dGhpcy5jaGFydC5yZXNpemUoKTtcclxuXHRcdH0pO1xyXG5cdH1cclxufVxyXG4iXX0=
|