axidio-styleguide-library1-v2 0.2.3 → 0.2.5

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.
@@ -16,8 +16,8 @@ export class GuageChartComponent extends ComponentUniqueId {
16
16
  this.chartConfiguration = {};
17
17
  this.dataType = '';
18
18
  this.datatype_status = false;
19
- this.uniqueId = this.getUniqueId();
20
19
  this.isHeaderVisible = true;
20
+ this.uniqueId = this.getUniqueId();
21
21
  this.defaultConfiguration = {
22
22
  margin: { top: 40, right: 20, bottom: 20, left: 20 },
23
23
  minAngle: -90,
@@ -49,320 +49,189 @@ export class GuageChartComponent extends ComponentUniqueId {
49
49
  };
50
50
  }
51
51
  get isAlertEnabled() {
52
- return this.chartConfiguration?.headerMenuOptions?.some(option => option.id === 'editAlert');
52
+ return this.chartConfiguration?.headerMenuOptions?.some((option) => option.id === 'editAlert');
53
53
  }
54
+ ngOnInit() { }
54
55
  ngOnChanges() {
55
- let self = this;
56
- d3.select('#' + self.uniqueId).remove();
57
- this.initializeLineChart();
56
+ this.redrawChart();
58
57
  }
59
- onResized(event) {
60
- let self = this;
61
- d3.select('#' + self.uniqueId).remove();
62
- this.initializeLineChart();
58
+ onResized(_) {
59
+ this.redrawChart();
63
60
  }
64
- ngOnInit() { }
65
- initializeLineChart() {
66
- var self = this;
67
- let data = [];
68
- let metaData = null;
69
- let colorMaps = [];
70
- let angleValue = [];
71
- let data_ready = [];
72
- let labelArray = [];
73
- let colorType = null;
74
- let isria = this.customChartConfiguration.isRia;
75
- for (var i in this.defaultConfiguration) {
76
- this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(i, this.defaultConfiguration, this.customChartConfiguration);
77
- }
78
- data = this.chartData.data;
79
- metaData = this.chartData.metaData;
80
- colorType = metaData.colorType;
81
- if (colorType == 'low') {
82
- colorMaps = this.chartConfiguration.low_colorMap;
61
+ redrawChart() {
62
+ d3.select(`#${this.uniqueId}`).remove();
63
+ this.initializeChartConfig();
64
+ this.drawGaugeChart();
65
+ }
66
+ initializeChartConfig() {
67
+ for (const key in this.defaultConfiguration) {
68
+ this.chartConfiguration[key] = ChartHelper.getValueByConfigurationType(key, this.defaultConfiguration, this.customChartConfiguration);
83
69
  }
84
- else {
85
- colorMaps = this.chartConfiguration.high_colorMap;
70
+ if (this.chartConfiguration.isHeaderVisible !== undefined) {
71
+ this.isHeaderVisible = this.chartConfiguration.isHeaderVisible;
86
72
  }
73
+ const metaData = this.chartData.metaData;
87
74
  if (metaData.dataType) {
88
- this.dataType = metaData.dataType;
89
- if (this.dataType == 'USD') {
90
- this.datatype_status = true;
91
- this.dataType = '$ ';
92
- }
75
+ this.dataType = metaData.dataType === 'USD' ? '$ ' : metaData.dataType;
76
+ this.datatype_status = metaData.dataType === 'USD';
93
77
  }
94
- data.map(function (dataUnit, i) {
95
- if (i < data.length - 1) {
96
- let diff = data[i + 1] - data[i];
97
- data_ready.push(diff);
98
- }
99
- });
100
- var chartContainer = d3.select(this.containerElt.nativeElement);
101
- var guagecontainer = d3.select(this.guagecontainerElt.nativeElement);
102
- var margin = this.chartConfiguration.margin;
103
- var width = parseInt(chartContainer.style('width')) - margin.left - margin.right;
104
- var height = parseInt(guagecontainer.style('height')) -
105
- margin.top -
106
- margin.bottom -
107
- 56; //chart header height
108
- if (this.chartConfiguration.isHeaderVisible != undefined)
109
- this.isHeaderVisible = this.chartConfiguration.isHeaderVisible;
110
- var svg = chartContainer
78
+ }
79
+ drawGaugeChart() {
80
+ const { data, metaData } = this.chartData;
81
+ const colorMaps = metaData.colorType === 'low'
82
+ ? this.chartConfiguration.low_colorMap
83
+ : this.chartConfiguration.high_colorMap;
84
+ const chartContainer = d3.select(this.containerElt.nativeElement);
85
+ const guagecontainer = d3.select(this.guagecontainerElt.nativeElement);
86
+ const margin = this.chartConfiguration.margin;
87
+ const width = parseInt(chartContainer.style('width')) - margin.left - margin.right;
88
+ const height = parseInt(guagecontainer.style('height')) - margin.top - margin.bottom - 56;
89
+ const svg = this.createSvg(chartContainer, width, height);
90
+ const radius = Math.min(width, height) / 2;
91
+ this.adjustForScreenAndDrilldown(radius);
92
+ const { data_ready, angleValue, labelArray, range } = this.prepareGaugeData(data);
93
+ this.drawArcs(svg, data_ready, angleValue, radius, colorMaps, metaData);
94
+ this.drawPointer(svg, radius, data, metaData);
95
+ this.drawLabels(svg, radius, labelArray, range, metaData);
96
+ this.drawCenterTexts(svg, radius, metaData);
97
+ this.alignSvg(svg, chartContainer, margin);
98
+ }
99
+ createSvg(chartContainer, width, height) {
100
+ return chartContainer
111
101
  .append('svg')
112
- .attr('id', self.uniqueId)
113
- .attr('width', width + margin.left + margin.right)
114
- .attr('height', height + margin.top + margin.bottom)
102
+ .attr('id', this.uniqueId)
103
+ .attr('width', width)
104
+ .attr('height', height)
115
105
  .call(ChartHelper.responsivefy)
116
106
  .append('g');
117
- var radius = Math.min(width, height) / 2;
107
+ }
108
+ adjustForScreenAndDrilldown(radius) {
118
109
  if (this.chartConfiguration.isDrilldownChart) {
119
110
  this.chartConfiguration.currentValueWidthScaleFactor += 40;
120
111
  this.chartConfiguration.currentValueHeightScaleFactor += 20;
121
112
  }
122
- else {
123
- if (window.innerWidth > 1400) {
124
- this.chartConfiguration.currentValueHeightScaleFactor += 15;
125
- this.chartConfiguration.currentValueWidthScaleFactor *= 2;
126
- }
127
- }
128
- let topTextPosition = radius / 2 - 10;
129
- let midTextPosition = topTextPosition + this.chartConfiguration.currentValueHeightScaleFactor;
130
- let bottomTextPosition = midTextPosition + this.chartConfiguration.currentValueHeightScaleFactor;
131
- var data_length = data.length;
132
- function deg2rad(deg) {
133
- return (deg * Math.PI) / 180;
113
+ else if (window.innerWidth > 1400) {
114
+ this.chartConfiguration.currentValueHeightScaleFactor += 15;
115
+ this.chartConfiguration.currentValueWidthScaleFactor *= 2;
134
116
  }
135
- let tempArray = [];
136
- let total = 0;
137
- data_ready.map(function (unit) {
138
- total += unit;
139
- });
140
- data_ready.map(function (unit, i) {
141
- var angle = (unit / total) * 180;
142
- if (i === 0) {
143
- tempArray.push(angle);
144
- }
145
- else {
146
- let currentAngle = tempArray[i - 1] + angle;
147
- tempArray.push(currentAngle);
148
- }
149
- });
150
- angleValue = tempArray;
151
- var arc = d3
117
+ }
118
+ prepareGaugeData(data) {
119
+ const data_ready = data.slice(1).map((d, i) => d - data[i]);
120
+ const total = data_ready.reduce((a, b) => a + b, 0);
121
+ const angleValue = data_ready.map(((sum) => (unit) => (sum += (unit / total) * 180))(0));
122
+ const labelArray = [{ name: data[0], value: 0 }];
123
+ data_ready.reduce((acc, val, i) => {
124
+ const next = acc + val;
125
+ labelArray.push({ name: data[i + 1], value: next });
126
+ return next;
127
+ }, 0);
128
+ const range = data[data.length - 1] - data[0];
129
+ return { data_ready, angleValue, labelArray, range };
130
+ }
131
+ drawArcs(svg, data_ready, angleValue, radius, colorMaps, metaData) {
132
+ const arc = d3
152
133
  .arc()
153
- .innerRadius(radius -
154
- self.chartConfiguration.ringWidth -
155
- self.chartConfiguration.ringInset)
134
+ .innerRadius(radius - this.chartConfiguration.ringWidth - this.chartConfiguration.ringInset)
156
135
  .outerRadius(radius)
157
- .startAngle(function (d, i) {
158
- var ratio;
159
- if (i === 0) {
160
- ratio = self.chartConfiguration.minAngle;
161
- }
162
- else {
163
- ratio = self.chartConfiguration.minAngle + angleValue[i - 1];
164
- }
165
- return deg2rad(ratio);
166
- })
167
- .endAngle(function (d, i) {
168
- var ratio;
169
- if (i === data_ready.length - 1) {
170
- ratio = self.chartConfiguration.maxAngle;
171
- }
172
- else {
173
- ratio = self.chartConfiguration.minAngle + angleValue[i];
174
- }
175
- return deg2rad(ratio);
176
- });
177
- function centerTranslation() {
178
- return 'translate(' + radius + ',' + radius + ')';
179
- }
180
- var centerTx = centerTranslation();
181
- var tickData = d3
182
- .range(self.chartConfiguration.majorTicks)
183
- .map(function (i) {
184
- return 1 / self.chartConfiguration.majorTicks;
185
- });
186
- var arcs = svg.append('g').attr('class', 'arc').attr('transform', centerTx);
136
+ .startAngle((_, i) => this.deg2rad(i === 0 ? this.chartConfiguration.minAngle : this.chartConfiguration.minAngle + angleValue[i - 1]))
137
+ .endAngle((_, i) => this.deg2rad(i === data_ready.length - 1
138
+ ? this.chartConfiguration.maxAngle
139
+ : this.chartConfiguration.minAngle + angleValue[i]));
140
+ const arcs = svg.append('g').attr('class', 'arc').attr('transform', `translate(${radius},${radius})`);
187
141
  arcs
188
142
  .selectAll('path')
189
143
  .data(data_ready)
190
144
  .enter()
191
145
  .append('path')
192
- .on('click', function (d) {
193
- if (!metaData.hasDrillDown || metaData.currentValue == 0) {
194
- return;
195
- }
196
- let range = getRange(d);
197
- self.handleClick(range);
198
- })
199
- .attr('fill', function (d, i) {
200
- return colorMaps[i];
201
- })
202
- .attr('id', function (d, i) {
203
- return colorMaps[i];
204
- })
146
+ .attr('fill', (_, i) => colorMaps[i])
205
147
  .attr('d', arc)
206
- // .style('cursor', 'pointer');
207
- .style('cursor', function (d) {
208
- if (metaData.currentValue > 0 && metaData.hasDrillDown && !isria)
209
- return 'pointer';
210
- else
211
- return 'default';
148
+ .style('cursor', () => metaData.currentValue > 0 && metaData.hasDrillDown ? 'pointer' : 'default')
149
+ .on('click', (event, d) => {
150
+ if (metaData.hasDrillDown && metaData.currentValue > 0) {
151
+ this.handleClick(this.getRange(d, data_ready, metaData));
152
+ }
212
153
  });
213
- let getRange = function (d) {
214
- let index = data_ready.indexOf(d);
215
- return data[0] + ' and ' + data[data.length - 1];
216
- };
217
- let pointerHeadLength = Math.round(radius * self.chartConfiguration.pointerHeadLengthPercent);
218
- var lineData = [
219
- [self.chartConfiguration.pointerWidth / 2, 0],
154
+ }
155
+ drawPointer(svg, radius, data, metaData) {
156
+ const pointerHeadLength = Math.round(radius * this.chartConfiguration.pointerHeadLengthPercent);
157
+ const lineData = [
158
+ [this.chartConfiguration.pointerWidth / 2, 0],
220
159
  [0, -pointerHeadLength],
221
- [-(self.chartConfiguration.pointerWidth / 2), 0],
222
- [0, self.chartConfiguration.pointerTailLength],
223
- [self.chartConfiguration.pointerWidth / 2, 0],
160
+ [-(this.chartConfiguration.pointerWidth / 2), 0],
161
+ [0, this.chartConfiguration.pointerTailLength],
162
+ [this.chartConfiguration.pointerWidth / 2, 0],
224
163
  ];
225
- var pointerLine = d3.line();
226
- var pg = svg
164
+ const pointerLine = d3.line();
165
+ const pointerValue = metaData.currentValue - data[0];
166
+ const range = data[data.length - 1] - data[0];
167
+ const pointerAngle = this.chartConfiguration.minAngle + (pointerValue / range) * 180;
168
+ svg
227
169
  .append('g')
228
170
  .data([lineData])
229
171
  .attr('class', 'pointer')
230
- .attr('transform', centerTx);
231
- var pointerValue = metaData.currentValue - data[0];
232
- var range = data[data_length - 1] - data[0];
233
- var pointerAngle = self.chartConfiguration.minAngle + (pointerValue / range) * 180;
234
- pg.append('path')
172
+ .attr('transform', `translate(${radius},${radius})`)
173
+ .append('path')
235
174
  .attr('d', pointerLine)
236
- .attr('fill', self.chartConfiguration.pointerColor)
237
- .attr('transform', 'rotate(' +
238
- pointerAngle +
239
- ') translate(0,' +
240
- (-radius + self.chartConfiguration.ringWidth + pointerHeadLength) +
241
- ')');
242
- var lg = svg.append('g').attr('class', 'label').attr('transform', centerTx);
243
- let labelArrayTemp = [{ name: data[0], value: 0 }];
244
- let count = 0;
245
- data_ready.map(function (dataUnit, i) {
246
- count += dataUnit;
247
- let temp = { name: data[i + 1], value: count };
248
- labelArrayTemp.push(temp);
249
- });
250
- labelArray = labelArrayTemp;
251
- lg.selectAll('.bubble')
175
+ .attr('fill', this.chartConfiguration.pointerColor)
176
+ .attr('transform', `rotate(${pointerAngle}) translate(0,${-radius + this.chartConfiguration.ringWidth + pointerHeadLength})`);
177
+ }
178
+ drawLabels(svg, radius, labelArray, range, metaData) {
179
+ const lg = svg.append('g').attr('class', 'label').attr('transform', `translate(${radius},${radius})`);
180
+ const labelGroups = lg
181
+ .selectAll('.bubble')
252
182
  .data(labelArray)
253
183
  .enter()
254
184
  .append('g')
255
- .attr('transform', function (d) {
256
- var newAngle = self.chartConfiguration.minAngle + (d.value / range) * 180;
257
- return ('rotate(' +
258
- newAngle +
259
- ') translate(0,' +
260
- (self.chartConfiguration.labelInset - radius - 20) +
261
- ')');
262
- })
263
- .append('g')
264
- .attr('transform', function (d, i) {
265
- var newAngle = self.chartConfiguration.minAngle + (d.value / range) * 180;
266
- if (i == 0 && self.chartConfiguration.isValueLableAdjust) {
267
- return 'rotate(' + (0 - newAngle) + ') translate(-27,0)';
268
- }
269
- if (i == labelArray.length - 1 &&
270
- self.chartConfiguration.isValueLableAdjust) {
271
- return 'rotate(' + (0 - newAngle) + ') translate(-15,0)';
272
- }
273
- return 'rotate(' + (0 - newAngle) + ') translate(-17,0)';
274
- })
185
+ .attr('transform', (d) => {
186
+ const angle = this.chartConfiguration.minAngle + (d.value / range) * 180;
187
+ return `rotate(${angle}) translate(0,${this.chartConfiguration.labelInset - radius - 20})`;
188
+ });
189
+ labelGroups
275
190
  .append('text')
276
- .attr('style', function (d) {
277
- if (window.innerWidth < 1400)
278
- return 'font-size: ' + '12px' + '; font-weight:' + '600;';
279
- else
280
- return 'font-size: ' + '14px' + '; font-weight:' + '600;';
281
- })
282
191
  .attr('fill', 'var(--chart-text-color)')
283
- .text(function (d) {
284
- if (metaData.dataType) {
285
- return d.name + metaData.dataType;
286
- }
287
- return d.name;
288
- });
192
+ .style('font-size', window.innerWidth < 1400 ? '12px' : '14px')
193
+ .style('font-weight', '600')
194
+ .text((d) => `${d.name}${metaData.dataType || ''}`);
195
+ }
196
+ drawCenterTexts(svg, radius, metaData) {
289
197
  svg
290
198
  .append('foreignObject')
291
- .attr('transform', 'translate(' +
292
- (radius - this.chartConfiguration.currentValueWidthScaleFactor / 2) +
293
- ',' +
294
- topTextPosition +
295
- ')')
296
- .attr('width', this.chartConfiguration.currentValueWidthScaleFactor + 8)
199
+ .attr('transform', `translate(${radius - this.chartConfiguration.currentValueWidthScaleFactor / 2},${radius / 2 - 10})`)
200
+ .attr('width', this.chartConfiguration.currentValueWidthScaleFactor)
297
201
  .attr('height', this.chartConfiguration.currentValueHeightScaleFactor)
298
202
  .append('xhtml:div')
299
203
  .attr('class', 'value-display')
300
- .style('height', this.chartConfiguration.currentValueHeightScaleFactor + 10 + 'px')
301
- .style('font-size', function () {
302
- if (window.innerWidth > 1500) {
303
- self.chartConfiguration.currentValueHeightScaleFactor - 25 + 'px';
304
- }
305
- else {
306
- self.chartConfiguration.currentValueHeightScaleFactor - 15 + 'px';
307
- }
308
- })
309
- .html(metaData.currentValue + metaData.dataType);
204
+ .html(`${metaData.currentValue}${metaData.dataType || ''}`);
310
205
  if (metaData.status) {
311
- let widthTemp = metaData.status.length > 4 ? 210 : 120;
312
206
  svg
313
207
  .append('foreignObject')
314
- .attr('transform', 'translate(' + (radius - widthTemp / 2) + ',' + midTextPosition + ')')
315
- .attr('width', widthTemp)
316
- .attr('height', this.chartConfiguration.currentValueHeightScaleFactor + 10)
208
+ .attr('transform', `translate(${radius - 60},${radius / 2 + 20})`)
209
+ .attr('width', 120)
317
210
  .append('xhtml:div')
318
211
  .attr('class', 'status-display')
319
- .style('font-size', this.chartConfiguration.currentValueHeightScaleFactor - 25 + 'px')
320
212
  .html(metaData.status);
321
213
  }
322
- svg
323
- .append('foreignObject')
324
- .attr('transform', 'translate(' + (radius - 105) + ',' + bottomTextPosition + ')')
325
- .attr('width', 210)
326
- .attr('height', this.chartConfiguration.currentValueHeightScaleFactor)
327
- .append('xhtml:div')
328
- .attr('class', 'daterange-display')
329
- .style('font-size', function () {
330
- if (self.chartConfiguration.isDrilldownChart) {
331
- {
332
- if (window.innerWidth < 1400)
333
- return '14px';
334
- else
335
- return '18px';
336
- }
337
- }
338
- else {
339
- if (window.innerWidth < 1400)
340
- return '14px';
341
- else
342
- return '18px';
343
- }
344
- })
345
- .html(function () {
346
- var desiredSize;
347
- if (window.innerWidth < 1400)
348
- desiredSize = '14px';
349
- else
350
- desiredSize = '18px';
351
- if (metaData.dateRange)
352
- return ('<span class="marginright-3"><i class="fa fa-calendar"></i></span><span> ' +
353
- metaData.dateRange +
354
- '</span>');
355
- else
356
- return '';
357
- });
358
- var containerMidWidth = parseInt(chartContainer.style('width')) / 2;
359
- var nodeHalfWidth = svg.node().getBoundingClientRect().width / 2;
360
- var updatedStartingPoint = containerMidWidth - nodeHalfWidth;
361
- svg.attr('transform', 'translate(' +
362
- (updatedStartingPoint + margin.left) +
363
- ',' +
364
- margin.top +
365
- ')');
214
+ if (metaData.dateRange) {
215
+ svg
216
+ .append('foreignObject')
217
+ .attr('transform', `translate(${radius - 105},${radius / 2 + 50})`)
218
+ .attr('width', 210)
219
+ .append('xhtml:div')
220
+ .attr('class', 'daterange-display')
221
+ .html(`<span class="marginright-3"><i class="fa fa-calendar"></i></span>${metaData.dateRange}`);
222
+ }
223
+ }
224
+ alignSvg(svg, chartContainer, margin) {
225
+ const containerMid = parseInt(chartContainer.style('width')) / 2;
226
+ const nodeHalf = svg.node().getBoundingClientRect().width / 2;
227
+ svg.attr('transform', `translate(${containerMid - nodeHalf + margin.left},${margin.top})`);
228
+ }
229
+ getRange(d, data_ready, metaData) {
230
+ const data = this.chartData.data;
231
+ return `${data[0]} and ${data[data.length - 1]}`;
232
+ }
233
+ deg2rad(deg) {
234
+ return (deg * Math.PI) / 180;
366
235
  }
367
236
  handleClick(d) {
368
237
  this.clickEvent.emit(d);
@@ -371,11 +240,11 @@ export class GuageChartComponent extends ComponentUniqueId {
371
240
  this.headerMenuclickEvent.emit(id);
372
241
  }
373
242
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GuageChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
374
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GuageChartComponent, selector: "lib-guage-chart", inputs: { chartData: "chartData", customChartConfiguration: "customChartConfiguration" }, outputs: { clickEvent: "clickEvent", headerMenuclickEvent: "headerMenuclickEvent" }, viewQueries: [{ propertyName: "containerElt", first: true, predicate: ["guagechartcontainer"], descendants: true, static: true }, { propertyName: "guagecontainerElt", first: true, predicate: ["guagecontainer"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #guagecontainer class=\"lib-chart-wrapper\" style=\"background-color: var(--card-bg);\"\r\n (resized)=\"onResized($event)\">\r\n <div class=\"header-alt\" *ngIf=\"!isHeaderVisible\">\r\n <lib-chart-header-v2 [chartData]=\"chartData\" [chartConfiguration]=\"chartConfiguration\"\r\n (clickEvent)=\"handleClick($event)\"></lib-chart-header-v2>\r\n <!-- <span\r\n [ngClass]=\"\r\n chartConfiguration.isToggleVisible &&\r\n !isHeaderVisible &&\r\n chartData.metaData.currentValue > 0\r\n ? ''\r\n : 'hidden'\r\n \"\r\n class=\"flex-inline\"\r\n >\r\n <span>Average</span>\r\n <span class=\"switch1\" (click)=\"handleClick({ toggleFrom: 'gauge' })\">\r\n <input type=\"checkbox\" />\r\n <span class=\"slider1 round1\"></span>\r\n </span>\r\n <span>Trending</span>\r\n </span> -->\r\n </div>\r\n <lib-chart-header-v1 [title]=\"chartData.metaData.title\" [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [isEditEnabled]=\"chartData.metaData.isEditEnabled\" [isria]=\"customChartConfiguration.isRia\" [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n [selectedKpiTooltop]=\"chartConfiguration.selectedKpiTooltop\" (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n [isAlertEnabled]=\"isAlertEnabled\" *ngIf=\"isHeaderVisible\"></lib-chart-header-v1>\r\n <!-- <lib-chart-alert-header\r\n [isAlertEnabled]=\"\r\n (chartConfiguration.headerMenuOptions &&\r\n chartConfiguration.headerMenuOptions.length == 2 &&\r\n chartConfiguration.headerMenuOptions[1].id == 'editAlert') ||\r\n (chartConfiguration.headerMenuOptions &&\r\n chartConfiguration.headerMenuOptions.length == 1 &&\r\n chartConfiguration.headerMenuOptions[0].id == 'editAlert')\r\n \"\r\n ></lib-chart-alert-header> -->\r\n <div [style.height]=\"chartConfiguration.svgHeight\" id=\"guagechartcontainer\" #guagechartcontainer\r\n class=\"lib-chart-svg guagecontainer\"></div>\r\n</div>", styles: [".lib-guage-label-wrapper{width:100%;display:inline-block;text-align:center}.lib-guage-label-style{width:63%;display:inline-block;text-align:left}.lib-donut-label-icon{display:inline-block;width:10px;height:10px;margin-right:20px;border-radius:3px}.bc-gauge-chart{background-color:#000!important}.guagecontainer{margin-top:3%;height:53%}.gauge-currentvalue-value{font-weight:700;color:#000;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:0px}.guage-label-item{font-size:.85em;display:flex;flex-direction:column}.gauge-daterange{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:12px;letter-spacing:0px;color:#374068;opacity:1}.gauge-daterange-value{font-weight:700}.gauge-currentvalue{margin-bottom:5px}.value-display{color:var(--font-color);font-weight:700;border-radius:3px;display:flex;align-items:center;justify-content:center}.status-display{display:flex;align-items:center;justify-content:center}.calendar-icon{border:1px solid #000000;border-top:3px solid;height:10px;margin-right:5px}.calendar-icon>:first-child{visibility:hidden}.daterange-display{display:flex;align-items:center;justify-content:center;height:100%}.marginright-3{margin-right:3px}.hidden-text,.hidden{visibility:hidden}@media screen and (min-width: 1024px) and (min-height: 400px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1024px) and (min-height: 1000px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1024px) and (min-height: 1500px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1366px) and (min-height: 400px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1366px) and (min-height: 1000px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1366px) and (min-height: 1500px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1920px) and (min-height: 400px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 1920px) and (min-height: 1000px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 1920px) and (min-height: 1500px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 2560px) and (min-height: 500px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}@media screen and (min-width: 2560px) and (min-height: 1000px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}@media screen and (min-width: 2560px) and (min-height: 1500px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}.switch1{position:relative;display:inline-block;width:46px;height:24px;margin-left:5px;margin-right:5px}.switch1 input{opacity:0;width:0;height:0}.slider1{position:absolute;cursor:pointer;inset:0;background-color:#015ba2cf;-webkit-transition:.4s;transition:.4s}.slider1:before{position:absolute;content:\"\";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider1.round1{border-radius:18px}.slider1.round1:before{border-radius:50%}.marginLeft-40{margin-left:40px}.flex-inline{display:flex;justify-content:center;align-items:center;font-size:14px}@media (min-height: 550px){.value-display{font-size:14px}}@media (min-height: 900px){.guagecontainer{margin-top:6%}.value-display{font-size:25px}}\n", ".lib-chart-wrapper{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;background:#fff 0% 0% no-repeat padding-box;position:relative}.lib-chart-wrapper-wo-shadow{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background){background-color:#2e3640}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background) .chart-title{color:#fff}.lib-chart-svg{width:100%}.lib-chart-header{text-align:center;background-color:#052340;color:#fff;width:100%;height:17%;word-spacing:.5px;line-height:1.8;font-weight:700;padding-top:2%;letter-spacing:0;font-size:1.2em}.lib-donut-chart-footer{width:100%;text-align:right}.lib-donut-label-text{font-size:.9em;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-weight:400;letter-spacing:0px;color:#000;opacity:1}.lib-donut-label-icon{display:inline-block;width:10px;height:10px;margin-right:20px;border-radius:3px}.lib-donut-label-item{font-weight:400;font-size:.85em;color:#2f2f2f}.lib-donut-justified-label-wrapper{width:100%;display:inline-block;text-align:center;list-style-type:none}.lib-donut-justified-label-item{font-weight:400;font-size:.85em;color:#2f2f2f;display:inline-block;text-align:left;padding:0 10px}.lib-donut-justified-label-icon{display:inline-block;width:10px;height:10px;margin-right:5px;border-radius:3px}.lib-no-background{background:none!important}.lib-display-hidden{display:none}.lib-ylabel-weeklyCharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:12px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.07px;text-transform:capitalize;color:#000}.lib-data-labels-weeklycharts{font-style:normal;font-variant:normal;font-weight:400;font-size:12px;line-height:14px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.06px;color:#000}.lib-data-labels-angled-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:9.5px;line-height:11px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:.4px;text-anchor:start}.lib-xaxis-labels-texts-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:11px;letter-spacing:-.05px;fill:#000}.lib-xaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:-1px;color:#000;opacity:1;text-transform:capitalize}.lib-white-space-nowrap{white-space:nowrap}.lib-xaxis-labels-texts-drilldown-alt{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:10px;letter-spacing:0px;color:#000;opacity:1;text-transform:capitalize}.lib-yaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:0px;color:#000!important;opacity:1}.lib-ylabel-drilldowncharts,.lib-xlabel-drilldowncharts{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:16px;letter-spacing:-.1px;color:#000!important;opacity:1}.lib-donut-justified-label-icon-drilldown{display:inline-block;width:14px;height:14px;margin-right:10px;border-radius:50%}.marginright-2{margin-right:2%}.margintop-5{margin-top:5%}.width-100{width:100%}.float-right{float:right}.marginBottom-10{margin-bottom:10px}.header-alt{align-items:center;margin-bottom:10px}input::placeholder{font-size:20px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:0px;color:#000;opacity:1}.padding-5{padding:5px}.hidden{visibility:hidden}.font-weight-bold{font-weight:900}.textalign-center{text-align:center}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.font-weight-600{font-weight:600}.marginRight-15{margin-right:15px}.marginRight-20{margin-right:20px}.switch{position:relative;display:inline-block;width:46px;height:24px;margin-left:5px;margin-right:5px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#2d5ca0;-webkit-transition:.4s;transition:.4s}.slider:before{position:absolute;content:\"\";height:18px;width:18px;right:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider.round{border-radius:18px}.slider.round:before{border-radius:50%}.slider1{position:absolute;cursor:pointer;inset:0;background-color:#015ba2cf;-webkit-transition:.4s;transition:.4s}.slider1:before{position:absolute;content:\"\";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider1.round1{border-radius:18px}.slider1.round1:before{border-radius:50%}.lib-display-flex{display:flex}.lib-align-items-center{align-items:center}.lib-flex-direction-column{flex-direction:column}.lib-justify-content-space-between{justify-content:space-between}.lib-justify-content-space-around{justify-content:space-around}.lib-justify-content-center{justify-content:center}.lib-justify-content-start{justify-content:start}.lib-justify-content-end{justify-content:end}.lib-ml-20{margin-left:20px}.lib-position-absolute{position:absolute}.lib-z-index-9{z-index:9}.marginright-3{margin-right:3px}@media (min-height: 900px){.lib-chart-wrapper{border-radius:8px}.header-font-size-1{font-size:18px!important}.font-size-1{font-size:14px!important}.font-size-2{font-size:16px!important}.font-size-3{font-size:14px!important}.font-size-4{font-size:22px!important}.font-size-5{font-size:24px!important}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ResizedDirective, selector: "[resized]", outputs: ["resized"] }, { kind: "component", type: i3.ChartHeaderV1Component, selector: "lib-chart-header-v1", inputs: ["isAlertEnabled", "title", "menuOptions", "isEditEnabled", "isria", "hasDrillDown", "selectedKpiTooltop"], outputs: ["menuOptionClickEvent"] }, { kind: "component", type: i4.ChartHeaderV2Component, selector: "lib-chart-header-v2", inputs: ["chartData", "chartConfiguration"], outputs: ["clickEvent", "zoomInZoomOutClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
243
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: GuageChartComponent, selector: "lib-guage-chart", inputs: { chartData: "chartData", customChartConfiguration: "customChartConfiguration" }, outputs: { clickEvent: "clickEvent", headerMenuclickEvent: "headerMenuclickEvent" }, viewQueries: [{ propertyName: "containerElt", first: true, predicate: ["guagechartcontainer"], descendants: true, static: true }, { propertyName: "guagecontainerElt", first: true, predicate: ["guagecontainer"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #guagecontainer class=\"lib-chart-wrapper\" style=\"background-color: var(--card-bg);\"\r\n (resized)=\"onResized($event)\">\r\n <div class=\"header-alt\" *ngIf=\"!isHeaderVisible\">\r\n <lib-chart-header-v2 [chartData]=\"chartData\" [chartConfiguration]=\"chartConfiguration\"\r\n (clickEvent)=\"handleClick($event)\"></lib-chart-header-v2>\r\n </div>\r\n <lib-chart-header-v1 [title]=\"chartData.metaData.title\" [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [isEditEnabled]=\"chartData.metaData.isEditEnabled\" [isria]=\"customChartConfiguration.isRia\" [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n [selectedKpiTooltop]=\"chartConfiguration.selectedKpiTooltop\" (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n [isAlertEnabled]=\"isAlertEnabled\" *ngIf=\"isHeaderVisible\"></lib-chart-header-v1>\r\n <div [style.height]=\"chartConfiguration.svgHeight\" id=\"guagechartcontainer\" #guagechartcontainer\r\n class=\"lib-chart-svg guagecontainer\"></div>\r\n</div>", styles: [".lib-guage-label-wrapper{width:100%;display:inline-block;text-align:center}.lib-guage-label-style{width:63%;display:inline-block;text-align:left}.lib-donut-label-icon{display:inline-block;width:10px;height:10px;margin-right:20px;border-radius:3px}.bc-gauge-chart{background-color:#000!important}.guagecontainer{margin-top:3%;height:53%}.gauge-currentvalue-value{font-weight:700;color:#000;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:0px}.guage-label-item{font-size:.85em;display:flex;flex-direction:column}.gauge-daterange{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:12px;letter-spacing:0px;color:#374068;opacity:1}.gauge-daterange-value{font-weight:700}.gauge-currentvalue{margin-bottom:5px}.value-display{color:var(--font-color);font-weight:700;border-radius:3px;display:flex;align-items:center;justify-content:center}.status-display{display:flex;align-items:center;justify-content:center}.calendar-icon{border:1px solid #000000;border-top:3px solid;height:10px;margin-right:5px}.calendar-icon>:first-child{visibility:hidden}.daterange-display{display:flex;align-items:center;justify-content:center;height:100%}.marginright-3{margin-right:3px}.hidden-text,.hidden{visibility:hidden}@media screen and (min-width: 1024px) and (min-height: 400px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1024px) and (min-height: 1000px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1024px) and (min-height: 1500px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1366px) and (min-height: 400px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1366px) and (min-height: 1000px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1366px) and (min-height: 1500px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1920px) and (min-height: 400px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 1920px) and (min-height: 1000px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 1920px) and (min-height: 1500px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 2560px) and (min-height: 500px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}@media screen and (min-width: 2560px) and (min-height: 1000px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}@media screen and (min-width: 2560px) and (min-height: 1500px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}.switch1{position:relative;display:inline-block;width:46px;height:24px;margin-left:5px;margin-right:5px}.switch1 input{opacity:0;width:0;height:0}.slider1{position:absolute;cursor:pointer;inset:0;background-color:#015ba2cf;-webkit-transition:.4s;transition:.4s}.slider1:before{position:absolute;content:\"\";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider1.round1{border-radius:18px}.slider1.round1:before{border-radius:50%}.marginLeft-40{margin-left:40px}.flex-inline{display:flex;justify-content:center;align-items:center;font-size:14px}@media (min-height: 550px){.value-display{font-size:14px}}@media (min-height: 900px){.guagecontainer{margin-top:6%}.value-display{font-size:25px}}\n", ".lib-chart-wrapper{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;background:#fff 0% 0% no-repeat padding-box;position:relative}.lib-chart-wrapper-wo-shadow{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background){background-color:#2e3640}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background) .chart-title{color:#fff}.lib-chart-svg{width:100%}.lib-chart-header{text-align:center;background-color:#052340;color:#fff;width:100%;height:17%;word-spacing:.5px;line-height:1.8;font-weight:700;padding-top:2%;letter-spacing:0;font-size:1.2em}.lib-donut-chart-footer{width:100%;text-align:right}.lib-donut-label-text{font-size:.9em;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-weight:400;letter-spacing:0px;color:#000;opacity:1}.lib-donut-label-icon{display:inline-block;width:10px;height:10px;margin-right:20px;border-radius:3px}.lib-donut-label-item{font-weight:400;font-size:.85em;color:#2f2f2f}.lib-donut-justified-label-wrapper{width:100%;display:inline-block;text-align:center;list-style-type:none}.lib-donut-justified-label-item{font-weight:400;font-size:.85em;color:#2f2f2f;display:inline-block;text-align:left;padding:0 10px}.lib-donut-justified-label-icon{display:inline-block;width:10px;height:10px;margin-right:5px;border-radius:3px}.lib-no-background{background:none!important}.lib-display-hidden{display:none}.lib-ylabel-weeklyCharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:12px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.07px;text-transform:capitalize;color:#000}.lib-data-labels-weeklycharts{font-style:normal;font-variant:normal;font-weight:400;font-size:12px;line-height:14px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.06px;color:#000}.lib-data-labels-angled-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:9.5px;line-height:11px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:.4px;text-anchor:start}.lib-xaxis-labels-texts-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:11px;letter-spacing:-.05px;fill:#000}.lib-xaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:-1px;color:#000;opacity:1;text-transform:capitalize}.lib-white-space-nowrap{white-space:nowrap}.lib-xaxis-labels-texts-drilldown-alt{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:10px;letter-spacing:0px;color:#000;opacity:1;text-transform:capitalize}.lib-yaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:0px;color:#000!important;opacity:1}.lib-ylabel-drilldowncharts,.lib-xlabel-drilldowncharts{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:16px;letter-spacing:-.1px;color:#000!important;opacity:1}.lib-donut-justified-label-icon-drilldown{display:inline-block;width:14px;height:14px;margin-right:10px;border-radius:50%}.marginright-2{margin-right:2%}.margintop-5{margin-top:5%}.width-100{width:100%}.float-right{float:right}.marginBottom-10{margin-bottom:10px}.header-alt{align-items:center;margin-bottom:10px}input::placeholder{font-size:20px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:0px;color:#000;opacity:1}.padding-5{padding:5px}.hidden{visibility:hidden}.font-weight-bold{font-weight:900}.textalign-center{text-align:center}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.font-weight-600{font-weight:600}.marginRight-15{margin-right:15px}.marginRight-20{margin-right:20px}.switch{position:relative;display:inline-block;width:46px;height:24px;margin-left:5px;margin-right:5px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#2d5ca0;-webkit-transition:.4s;transition:.4s}.slider:before{position:absolute;content:\"\";height:18px;width:18px;right:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider.round{border-radius:18px}.slider.round:before{border-radius:50%}.slider1{position:absolute;cursor:pointer;inset:0;background-color:#015ba2cf;-webkit-transition:.4s;transition:.4s}.slider1:before{position:absolute;content:\"\";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider1.round1{border-radius:18px}.slider1.round1:before{border-radius:50%}.lib-display-flex{display:flex}.lib-align-items-center{align-items:center}.lib-flex-direction-column{flex-direction:column}.lib-justify-content-space-between{justify-content:space-between}.lib-justify-content-space-around{justify-content:space-around}.lib-justify-content-center{justify-content:center}.lib-justify-content-start{justify-content:start}.lib-justify-content-end{justify-content:end}.lib-ml-20{margin-left:20px}.lib-position-absolute{position:absolute}.lib-z-index-9{z-index:9}.marginright-3{margin-right:3px}@media (min-height: 900px){.lib-chart-wrapper{border-radius:8px}.header-font-size-1{font-size:18px!important}.font-size-1{font-size:14px!important}.font-size-2{font-size:16px!important}.font-size-3{font-size:14px!important}.font-size-4{font-size:22px!important}.font-size-5{font-size:24px!important}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ResizedDirective, selector: "[resized]", outputs: ["resized"] }, { kind: "component", type: i3.ChartHeaderV1Component, selector: "lib-chart-header-v1", inputs: ["isAlertEnabled", "title", "menuOptions", "isEditEnabled", "isria", "hasDrillDown", "selectedKpiTooltop"], outputs: ["menuOptionClickEvent"] }, { kind: "component", type: i4.ChartHeaderV2Component, selector: "lib-chart-header-v2", inputs: ["chartData", "chartConfiguration"], outputs: ["clickEvent", "zoomInZoomOutClick"] }], encapsulation: i0.ViewEncapsulation.None }); }
375
244
  }
376
245
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: GuageChartComponent, decorators: [{
377
246
  type: Component,
378
- args: [{ selector: 'lib-guage-chart', encapsulation: ViewEncapsulation.None, template: "<div #guagecontainer class=\"lib-chart-wrapper\" style=\"background-color: var(--card-bg);\"\r\n (resized)=\"onResized($event)\">\r\n <div class=\"header-alt\" *ngIf=\"!isHeaderVisible\">\r\n <lib-chart-header-v2 [chartData]=\"chartData\" [chartConfiguration]=\"chartConfiguration\"\r\n (clickEvent)=\"handleClick($event)\"></lib-chart-header-v2>\r\n <!-- <span\r\n [ngClass]=\"\r\n chartConfiguration.isToggleVisible &&\r\n !isHeaderVisible &&\r\n chartData.metaData.currentValue > 0\r\n ? ''\r\n : 'hidden'\r\n \"\r\n class=\"flex-inline\"\r\n >\r\n <span>Average</span>\r\n <span class=\"switch1\" (click)=\"handleClick({ toggleFrom: 'gauge' })\">\r\n <input type=\"checkbox\" />\r\n <span class=\"slider1 round1\"></span>\r\n </span>\r\n <span>Trending</span>\r\n </span> -->\r\n </div>\r\n <lib-chart-header-v1 [title]=\"chartData.metaData.title\" [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [isEditEnabled]=\"chartData.metaData.isEditEnabled\" [isria]=\"customChartConfiguration.isRia\" [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n [selectedKpiTooltop]=\"chartConfiguration.selectedKpiTooltop\" (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n [isAlertEnabled]=\"isAlertEnabled\" *ngIf=\"isHeaderVisible\"></lib-chart-header-v1>\r\n <!-- <lib-chart-alert-header\r\n [isAlertEnabled]=\"\r\n (chartConfiguration.headerMenuOptions &&\r\n chartConfiguration.headerMenuOptions.length == 2 &&\r\n chartConfiguration.headerMenuOptions[1].id == 'editAlert') ||\r\n (chartConfiguration.headerMenuOptions &&\r\n chartConfiguration.headerMenuOptions.length == 1 &&\r\n chartConfiguration.headerMenuOptions[0].id == 'editAlert')\r\n \"\r\n ></lib-chart-alert-header> -->\r\n <div [style.height]=\"chartConfiguration.svgHeight\" id=\"guagechartcontainer\" #guagechartcontainer\r\n class=\"lib-chart-svg guagecontainer\"></div>\r\n</div>", styles: [".lib-guage-label-wrapper{width:100%;display:inline-block;text-align:center}.lib-guage-label-style{width:63%;display:inline-block;text-align:left}.lib-donut-label-icon{display:inline-block;width:10px;height:10px;margin-right:20px;border-radius:3px}.bc-gauge-chart{background-color:#000!important}.guagecontainer{margin-top:3%;height:53%}.gauge-currentvalue-value{font-weight:700;color:#000;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:0px}.guage-label-item{font-size:.85em;display:flex;flex-direction:column}.gauge-daterange{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:12px;letter-spacing:0px;color:#374068;opacity:1}.gauge-daterange-value{font-weight:700}.gauge-currentvalue{margin-bottom:5px}.value-display{color:var(--font-color);font-weight:700;border-radius:3px;display:flex;align-items:center;justify-content:center}.status-display{display:flex;align-items:center;justify-content:center}.calendar-icon{border:1px solid #000000;border-top:3px solid;height:10px;margin-right:5px}.calendar-icon>:first-child{visibility:hidden}.daterange-display{display:flex;align-items:center;justify-content:center;height:100%}.marginright-3{margin-right:3px}.hidden-text,.hidden{visibility:hidden}@media screen and (min-width: 1024px) and (min-height: 400px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1024px) and (min-height: 1000px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1024px) and (min-height: 1500px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1366px) and (min-height: 400px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1366px) and (min-height: 1000px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1366px) and (min-height: 1500px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1920px) and (min-height: 400px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 1920px) and (min-height: 1000px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 1920px) and (min-height: 1500px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 2560px) and (min-height: 500px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}@media screen and (min-width: 2560px) and (min-height: 1000px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}@media screen and (min-width: 2560px) and (min-height: 1500px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}.switch1{position:relative;display:inline-block;width:46px;height:24px;margin-left:5px;margin-right:5px}.switch1 input{opacity:0;width:0;height:0}.slider1{position:absolute;cursor:pointer;inset:0;background-color:#015ba2cf;-webkit-transition:.4s;transition:.4s}.slider1:before{position:absolute;content:\"\";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider1.round1{border-radius:18px}.slider1.round1:before{border-radius:50%}.marginLeft-40{margin-left:40px}.flex-inline{display:flex;justify-content:center;align-items:center;font-size:14px}@media (min-height: 550px){.value-display{font-size:14px}}@media (min-height: 900px){.guagecontainer{margin-top:6%}.value-display{font-size:25px}}\n", ".lib-chart-wrapper{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;background:#fff 0% 0% no-repeat padding-box;position:relative}.lib-chart-wrapper-wo-shadow{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background){background-color:#2e3640}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background) .chart-title{color:#fff}.lib-chart-svg{width:100%}.lib-chart-header{text-align:center;background-color:#052340;color:#fff;width:100%;height:17%;word-spacing:.5px;line-height:1.8;font-weight:700;padding-top:2%;letter-spacing:0;font-size:1.2em}.lib-donut-chart-footer{width:100%;text-align:right}.lib-donut-label-text{font-size:.9em;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-weight:400;letter-spacing:0px;color:#000;opacity:1}.lib-donut-label-icon{display:inline-block;width:10px;height:10px;margin-right:20px;border-radius:3px}.lib-donut-label-item{font-weight:400;font-size:.85em;color:#2f2f2f}.lib-donut-justified-label-wrapper{width:100%;display:inline-block;text-align:center;list-style-type:none}.lib-donut-justified-label-item{font-weight:400;font-size:.85em;color:#2f2f2f;display:inline-block;text-align:left;padding:0 10px}.lib-donut-justified-label-icon{display:inline-block;width:10px;height:10px;margin-right:5px;border-radius:3px}.lib-no-background{background:none!important}.lib-display-hidden{display:none}.lib-ylabel-weeklyCharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:12px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.07px;text-transform:capitalize;color:#000}.lib-data-labels-weeklycharts{font-style:normal;font-variant:normal;font-weight:400;font-size:12px;line-height:14px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.06px;color:#000}.lib-data-labels-angled-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:9.5px;line-height:11px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:.4px;text-anchor:start}.lib-xaxis-labels-texts-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:11px;letter-spacing:-.05px;fill:#000}.lib-xaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:-1px;color:#000;opacity:1;text-transform:capitalize}.lib-white-space-nowrap{white-space:nowrap}.lib-xaxis-labels-texts-drilldown-alt{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:10px;letter-spacing:0px;color:#000;opacity:1;text-transform:capitalize}.lib-yaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:0px;color:#000!important;opacity:1}.lib-ylabel-drilldowncharts,.lib-xlabel-drilldowncharts{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:16px;letter-spacing:-.1px;color:#000!important;opacity:1}.lib-donut-justified-label-icon-drilldown{display:inline-block;width:14px;height:14px;margin-right:10px;border-radius:50%}.marginright-2{margin-right:2%}.margintop-5{margin-top:5%}.width-100{width:100%}.float-right{float:right}.marginBottom-10{margin-bottom:10px}.header-alt{align-items:center;margin-bottom:10px}input::placeholder{font-size:20px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:0px;color:#000;opacity:1}.padding-5{padding:5px}.hidden{visibility:hidden}.font-weight-bold{font-weight:900}.textalign-center{text-align:center}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.font-weight-600{font-weight:600}.marginRight-15{margin-right:15px}.marginRight-20{margin-right:20px}.switch{position:relative;display:inline-block;width:46px;height:24px;margin-left:5px;margin-right:5px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#2d5ca0;-webkit-transition:.4s;transition:.4s}.slider:before{position:absolute;content:\"\";height:18px;width:18px;right:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider.round{border-radius:18px}.slider.round:before{border-radius:50%}.slider1{position:absolute;cursor:pointer;inset:0;background-color:#015ba2cf;-webkit-transition:.4s;transition:.4s}.slider1:before{position:absolute;content:\"\";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider1.round1{border-radius:18px}.slider1.round1:before{border-radius:50%}.lib-display-flex{display:flex}.lib-align-items-center{align-items:center}.lib-flex-direction-column{flex-direction:column}.lib-justify-content-space-between{justify-content:space-between}.lib-justify-content-space-around{justify-content:space-around}.lib-justify-content-center{justify-content:center}.lib-justify-content-start{justify-content:start}.lib-justify-content-end{justify-content:end}.lib-ml-20{margin-left:20px}.lib-position-absolute{position:absolute}.lib-z-index-9{z-index:9}.marginright-3{margin-right:3px}@media (min-height: 900px){.lib-chart-wrapper{border-radius:8px}.header-font-size-1{font-size:18px!important}.font-size-1{font-size:14px!important}.font-size-2{font-size:16px!important}.font-size-3{font-size:14px!important}.font-size-4{font-size:22px!important}.font-size-5{font-size:24px!important}}\n"] }]
247
+ args: [{ selector: 'lib-guage-chart', encapsulation: ViewEncapsulation.None, template: "<div #guagecontainer class=\"lib-chart-wrapper\" style=\"background-color: var(--card-bg);\"\r\n (resized)=\"onResized($event)\">\r\n <div class=\"header-alt\" *ngIf=\"!isHeaderVisible\">\r\n <lib-chart-header-v2 [chartData]=\"chartData\" [chartConfiguration]=\"chartConfiguration\"\r\n (clickEvent)=\"handleClick($event)\"></lib-chart-header-v2>\r\n </div>\r\n <lib-chart-header-v1 [title]=\"chartData.metaData.title\" [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [isEditEnabled]=\"chartData.metaData.isEditEnabled\" [isria]=\"customChartConfiguration.isRia\" [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n [selectedKpiTooltop]=\"chartConfiguration.selectedKpiTooltop\" (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n [isAlertEnabled]=\"isAlertEnabled\" *ngIf=\"isHeaderVisible\"></lib-chart-header-v1>\r\n <div [style.height]=\"chartConfiguration.svgHeight\" id=\"guagechartcontainer\" #guagechartcontainer\r\n class=\"lib-chart-svg guagecontainer\"></div>\r\n</div>", styles: [".lib-guage-label-wrapper{width:100%;display:inline-block;text-align:center}.lib-guage-label-style{width:63%;display:inline-block;text-align:left}.lib-donut-label-icon{display:inline-block;width:10px;height:10px;margin-right:20px;border-radius:3px}.bc-gauge-chart{background-color:#000!important}.guagecontainer{margin-top:3%;height:53%}.gauge-currentvalue-value{font-weight:700;color:#000;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:0px}.guage-label-item{font-size:.85em;display:flex;flex-direction:column}.gauge-daterange{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:12px;letter-spacing:0px;color:#374068;opacity:1}.gauge-daterange-value{font-weight:700}.gauge-currentvalue{margin-bottom:5px}.value-display{color:var(--font-color);font-weight:700;border-radius:3px;display:flex;align-items:center;justify-content:center}.status-display{display:flex;align-items:center;justify-content:center}.calendar-icon{border:1px solid #000000;border-top:3px solid;height:10px;margin-right:5px}.calendar-icon>:first-child{visibility:hidden}.daterange-display{display:flex;align-items:center;justify-content:center;height:100%}.marginright-3{margin-right:3px}.hidden-text,.hidden{visibility:hidden}@media screen and (min-width: 1024px) and (min-height: 400px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1024px) and (min-height: 1000px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1024px) and (min-height: 1500px){.guage-label-item{font-size:14px!important}.guage-item-text{font-size:16px!important}}@media screen and (min-width: 1366px) and (min-height: 400px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1366px) and (min-height: 1000px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1366px) and (min-height: 1500px){.guage-label-item{font-size:16px!important}.guage-item-text{font-size:18px!important}}@media screen and (min-width: 1920px) and (min-height: 400px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 1920px) and (min-height: 1000px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 1920px) and (min-height: 1500px){.guage-label-item{font-size:18px!important}.guage-item-text{font-size:20px!important}}@media screen and (min-width: 2560px) and (min-height: 500px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}@media screen and (min-width: 2560px) and (min-height: 1000px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}@media screen and (min-width: 2560px) and (min-height: 1500px){.guage-label-item{font-size:20px!important}.guage-item-text{font-size:22px!important}}.switch1{position:relative;display:inline-block;width:46px;height:24px;margin-left:5px;margin-right:5px}.switch1 input{opacity:0;width:0;height:0}.slider1{position:absolute;cursor:pointer;inset:0;background-color:#015ba2cf;-webkit-transition:.4s;transition:.4s}.slider1:before{position:absolute;content:\"\";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider1.round1{border-radius:18px}.slider1.round1:before{border-radius:50%}.marginLeft-40{margin-left:40px}.flex-inline{display:flex;justify-content:center;align-items:center;font-size:14px}@media (min-height: 550px){.value-display{font-size:14px}}@media (min-height: 900px){.guagecontainer{margin-top:6%}.value-display{font-size:25px}}\n", ".lib-chart-wrapper{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;background:#fff 0% 0% no-repeat padding-box;position:relative}.lib-chart-wrapper-wo-shadow{width:100%;height:100%;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background){background-color:#2e3640}.lib-chart-wrapper:hover .chart-header-v1:not(.header-no-background) .chart-title{color:#fff}.lib-chart-svg{width:100%}.lib-chart-header{text-align:center;background-color:#052340;color:#fff;width:100%;height:17%;word-spacing:.5px;line-height:1.8;font-weight:700;padding-top:2%;letter-spacing:0;font-size:1.2em}.lib-donut-chart-footer{width:100%;text-align:right}.lib-donut-label-text{font-size:.9em;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-weight:400;letter-spacing:0px;color:#000;opacity:1}.lib-donut-label-icon{display:inline-block;width:10px;height:10px;margin-right:20px;border-radius:3px}.lib-donut-label-item{font-weight:400;font-size:.85em;color:#2f2f2f}.lib-donut-justified-label-wrapper{width:100%;display:inline-block;text-align:center;list-style-type:none}.lib-donut-justified-label-item{font-weight:400;font-size:.85em;color:#2f2f2f;display:inline-block;text-align:left;padding:0 10px}.lib-donut-justified-label-icon{display:inline-block;width:10px;height:10px;margin-right:5px;border-radius:3px}.lib-no-background{background:none!important}.lib-display-hidden{display:none}.lib-ylabel-weeklyCharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:12px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.07px;text-transform:capitalize;color:#000}.lib-data-labels-weeklycharts{font-style:normal;font-variant:normal;font-weight:400;font-size:12px;line-height:14px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:-.06px;color:#000}.lib-data-labels-angled-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:9.5px;line-height:11px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:.4px;text-anchor:start}.lib-xaxis-labels-texts-weeklycharts{font-style:normal;font-variant:normal;font-weight:800;font-size:10px;line-height:11px;letter-spacing:-.05px;fill:#000}.lib-xaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:-1px;color:#000;opacity:1;text-transform:capitalize}.lib-white-space-nowrap{white-space:nowrap}.lib-xaxis-labels-texts-drilldown-alt{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:10px;letter-spacing:0px;color:#000;opacity:1;text-transform:capitalize}.lib-yaxis-labels-texts-drilldown{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:14px;letter-spacing:0px;color:#000!important;opacity:1}.lib-ylabel-drilldowncharts,.lib-xlabel-drilldowncharts{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;font-size:16px;letter-spacing:-.1px;color:#000!important;opacity:1}.lib-donut-justified-label-icon-drilldown{display:inline-block;width:14px;height:14px;margin-right:10px;border-radius:50%}.marginright-2{margin-right:2%}.margintop-5{margin-top:5%}.width-100{width:100%}.float-right{float:right}.marginBottom-10{margin-bottom:10px}.header-alt{align-items:center;margin-bottom:10px}input::placeholder{font-size:20px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto;letter-spacing:0px;color:#000;opacity:1}.padding-5{padding:5px}.hidden{visibility:hidden}.font-weight-bold{font-weight:900}.textalign-center{text-align:center}.cursor-pointer{cursor:pointer}.cursor-default{cursor:default}.font-weight-600{font-weight:600}.marginRight-15{margin-right:15px}.marginRight-20{margin-right:20px}.switch{position:relative;display:inline-block;width:46px;height:24px;margin-left:5px;margin-right:5px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;inset:0;background-color:#2d5ca0;-webkit-transition:.4s;transition:.4s}.slider:before{position:absolute;content:\"\";height:18px;width:18px;right:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider.round{border-radius:18px}.slider.round:before{border-radius:50%}.slider1{position:absolute;cursor:pointer;inset:0;background-color:#015ba2cf;-webkit-transition:.4s;transition:.4s}.slider1:before{position:absolute;content:\"\";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;-webkit-transition:.4s;transition:.4s}.slider1.round1{border-radius:18px}.slider1.round1:before{border-radius:50%}.lib-display-flex{display:flex}.lib-align-items-center{align-items:center}.lib-flex-direction-column{flex-direction:column}.lib-justify-content-space-between{justify-content:space-between}.lib-justify-content-space-around{justify-content:space-around}.lib-justify-content-center{justify-content:center}.lib-justify-content-start{justify-content:start}.lib-justify-content-end{justify-content:end}.lib-ml-20{margin-left:20px}.lib-position-absolute{position:absolute}.lib-z-index-9{z-index:9}.marginright-3{margin-right:3px}@media (min-height: 900px){.lib-chart-wrapper{border-radius:8px}.header-font-size-1{font-size:18px!important}.font-size-1{font-size:14px!important}.font-size-2{font-size:16px!important}.font-size-3{font-size:14px!important}.font-size-4{font-size:22px!important}.font-size-5{font-size:24px!important}}\n"] }]
379
248
  }], ctorParameters: () => [], propDecorators: { containerElt: [{
380
249
  type: ViewChild,
381
250
  args: ['guagechartcontainer', { static: true }]
@@ -391,4 +260,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
391
260
  }], headerMenuclickEvent: [{
392
261
  type: Output
393
262
  }] } });
394
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhZ2UtY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXhpZGlvLXN0eWxlZ3VpZGUtbGlicmFyeS9zcmMvbGliL2d1YWdlLWNoYXJ0L2d1YWdlLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F4aWRpby1zdHlsZWd1aWRlLWxpYnJhcnkvc3JjL2xpYi9ndWFnZS1jaGFydC9ndWFnZS1jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pELE9BQU8sV0FBVyxNQUFNLGlCQUFpQixDQUFDO0FBRTFDLE9BQU8sa0JBQWtCLE1BQU0sa0JBQWtCLENBQUM7Ozs7OztBQVFsRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsaUJBQWlCO0lBK0N4RDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBdkNBLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3JDLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDekQsdUJBQWtCLEdBQVEsRUFBRSxDQUFDO1FBQzdCLGFBQVEsR0FBUSxFQUFFLENBQUM7UUFDbkIsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDakMsYUFBUSxHQUFRLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQyxvQkFBZSxHQUFZLElBQUksQ0FBQztRQUVoQyx5QkFBb0IsR0FBUTtZQUMxQixNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVB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QURYLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlsRCxpQkFBaUI7c0JBRGhCLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdwQyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLG9CQUFvQjtzQkFBN0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uSW5pdCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgRWxlbWVudFJlZixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XHJcbmltcG9ydCB7IENvbXBvbmVudFVuaXF1ZUlkIH0gZnJvbSAnLi4vdW5pcXVlLWlkJztcclxuaW1wb3J0IENoYXJ0SGVscGVyIGZyb20gJy4uL2NoYXJ0LWhlbHBlcic7XHJcbmltcG9ydCB7IFJlc2l6ZWRFdmVudCB9IGZyb20gJ2FuZ3VsYXItcmVzaXplLWV2ZW50JztcclxuaW1wb3J0IEhlYWRlckNvbmZpZ0hlbHBlciBmcm9tICcuLi9oZWFkZXItY29uZmlnJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWd1YWdlLWNoYXJ0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3VhZ2UtY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2d1YWdlLWNoYXJ0LmNvbXBvbmVudC5sZXNzJywgJy4uL2NvbW1vbi1zdHlsZXMubGVzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHdWFnZUNoYXJ0Q29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50VW5pcXVlSWQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ2d1YWdlY2hhcnRjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGNvbnRhaW5lckVsdCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2d1YWdlY29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICBndWFnZWNvbnRhaW5lckVsdCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIEBJbnB1dCgpIGNoYXJ0RGF0YTogYW55O1xyXG4gIEBJbnB1dCgpIGN1c3RvbUNoYXJ0Q29uZmlndXJhdGlvbjogYW55O1xyXG4gIEBPdXRwdXQoKSBjbGlja0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIGhlYWRlck1lbnVjbGlja0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgY2hhcnRDb25maWd1cmF0aW9uOiBhbnkgPSB7fTtcclxuICBkYXRhVHlwZTogYW55ID0gJyc7XHJcbiAgZGF0YXR5cGVfc3RhdHVzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdW5pcXVlSWQ6IGFueSA9IHRoaXMuZ2V0VW5pcXVlSWQoKTtcclxuICBpc0hlYWRlclZpc2libGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBkZWZhdWx0Q29uZmlndXJhdGlvbjogYW55ID0ge1xyXG4gICAgbWFyZ2luOiB7IHRvcDogNDAsIHJpZ2h0OiAyMCwgYm90dG9tOiAyMCwgbGVmdDogMjAgfSxcclxuICAgIG1pbkFuZ2xlOiAtOTAsXHJcbiAgICBtYXhBbmdsZTogOTAsXHJcbiAgICByaW5nSW5zZXQ6IDIwLFxyXG4gICAgcmluZ1dpZHRoOiAyMCxcclxuICAgIG1ham9yVGlja3M6IDMsXHJcbiAgICBzdmdIZWlnaHQ6IDgwLFxyXG4gICAgbG93X2NvbG9yTWFwOiBbJyM0M0NDMDAnLCAnI0ZGRUYwQycsICcjRkY0RTBDJ10sXHJcbiAgICBoaWdoX2NvbG9yTWFwOiBbJyNGRjRFMEMnLCAnI0ZGRUYwQycsICcjNDNDQzAwJ10sXHJcbiAgICBpc0hlYWRlclZpc2libGU6IHVuZGVmaW5lZCxcclxuICAgIHBvaW50ZXJXaWR0aDogMTAsXHJcbiAgICBwb2ludGVyVGFpbExlbmd0aDogNSxcclxuICAgIHBvaW50ZXJIZWFkTGVuZ3RoUGVyY2VudDogMC43LFxyXG4gICAgbGFiZWxJbnNldDogMTAsXHJcbiAgICBsZWdlbmRKdXN0aWZpZWQ6IGZhbHNlLFxyXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI0ZGRkZGRicsXHJcbiAgICBpc0RyaWxsZG93bkNoYXJ0OiB1bmRlZmluZWQsXHJcbiAgICByaW5nU2NhbGVGYWN0b3I6IDAsXHJcbiAgICB0ZXh0c0F0Q2VudGVyU2NhbGVGYWN0b3I6IDAsXHJcbiAgICBjdXJyZW50VmFsdWVXaWR0aFNjYWxlRmFjdG9yOiA2MCxcclxuICAgIGN1cnJlbnRWYWx1ZUhlaWdodFNjYWxlRmFjdG9yOiAzMCxcclxuICAgIHBvaW50ZXJDb2xvcjogJyM2ODY4NjgnLFxyXG4gICAgaXNUb2dnbGVWaXNpYmxlOiB1bmRlZmluZWQsXHJcbiAgICBzZWxlY3RlZEtwaVRvb2x0b3A6IHVuZGVmaW5lZCxcclxuICAgIGlzVmFsdWVMYWJsZUFkanVzdDogdW5kZWZpbmVkLFxyXG4gICAgaXNUaXRsZUhpZGRlbjogdW5kZWZpbmVkLFxyXG4gICAgaGVhZGVyTWVudU9wdGlvbnM6IEhlYWRlckNvbmZpZ0hlbHBlci5oZWFkZXJDb25maWcuaGVhZGVyTWVudU9wdGlvbnMsXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzQWxlcnRFbmFibGVkKCk6IGJvb2xlYW4ge1xyXG4gIHJldHVybiB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbj8uaGVhZGVyTWVudU9wdGlvbnM/LnNvbWUob3B0aW9uID0+IG9wdGlvbi5pZCA9PT0gJ2VkaXRBbGVydCcpO1xyXG59XHJcblxyXG4gIG5nT25DaGFuZ2VzKCkge1xyXG4gICAgbGV0IHNlbGYgPSB0aGlzO1xyXG4gICAgZDMuc2VsZWN0KCcjJyArIHNlbGYudW5pcXVlSWQpLnJlbW92ZSgpO1xyXG4gICAgdGhpcy5pbml0aWFsaXplTGluZUNoYXJ0KCk7XHJcbiAgfVxyXG4gIG9uUmVzaXplZChldmVudDogUmVzaXplZEV2ZW50KSB7XHJcbiAgICBsZXQgc2VsZiA9IHRoaXM7XHJcbiAgICBkMy5zZWxlY3QoJyMnICsgc2VsZi51bmlxdWVJZCkucmVtb3ZlKCk7XHJcbiAgICB0aGlzLmluaXRpYWxpemVMaW5lQ2hhcnQoKTtcclxuICB9XHJcbiAgbmdPbkluaXQoKSB7fVxyXG5cclxuICBpbml0aWFsaXplTGluZUNoYXJ0KCkge1xyXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgbGV0IGRhdGEgPSBbXTtcclxuICAgIGxldCBtZXRhRGF0YTogYW55ID0gbnVsbDtcclxuICAgIGxldCBjb2xvck1hcHMgPSBbXTtcclxuICAgIGxldCBhbmdsZVZhbHVlID0gW107XHJcbiAgICBsZXQgZGF0YV9yZWFkeTogYW55ID0gW107XHJcbiAgICBsZXQgbGFiZWxBcnJheTogYW55ID0gW107XHJcbiAgICBsZXQgY29sb3JUeXBlID0gbnVsbDtcclxuXHJcbiAgIGxldCBpc3JpYSA9IHRoaXMuY3VzdG9tQ2hhcnRDb25maWd1cmF0aW9uLmlzUmlhXHJcblxyXG4gICAgZm9yICh2YXIgaSBpbiB0aGlzLmRlZmF1bHRDb25maWd1cmF0aW9uKSB7XHJcbiAgICAgIHRoaXMuY2hhcnRDb25maWd1cmF0aW9uW2ldID0gQ2hhcnRIZWxwZXIuZ2V0VmFsdWVCeUNvbmZpZ3VyYXRpb25UeXBlKFxyXG4gICAgICAgIGksXHJcbiAgICAgICAgdGhpcy5kZWZhdWx0Q29uZmlndXJhdGlvbixcclxuICAgICAgICB0aGlzLmN1c3RvbUNoYXJ0Q29uZmlndXJhdGlvblxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGRhdGEgPSB0aGlzLmNoYXJ0RGF0YS5kYXRhO1xyXG4gICAgbWV0YURhdGEgPSB0aGlzLmNoYXJ0RGF0YS5tZXRhRGF0YTtcclxuXHJcbiAgICBjb2xvclR5cGUgPSBtZXRhRGF0YS5jb2xvclR5cGU7XHJcbiAgICBpZiAoY29sb3JUeXBlID09ICdsb3cnKSB7XHJcbiAgICAgIGNvbG9yTWFwcyA9IHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLmxvd19jb2xvck1hcDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbG9yTWFwcyA9IHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLmhpZ2hfY29sb3JNYXA7XHJcbiAgICB9XHJcbiAgICBpZiAobWV0YURhdGEuZGF0YVR5cGUpIHtcclxuICAgICAgdGhpcy5kYXRhVHlwZSA9IG1ldGFEYXRhLmRhdGFUeXBlO1xyXG4gICAgICBpZiAodGhpcy5kYXRhVHlwZSA9PSAnVVNEJykge1xyXG4gICAgICAgIHRoaXMuZGF0YXR5cGVfc3RhdHVzID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmRhdGFUeXBlID0gJyQgJztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRhdGEubWFwKGZ1bmN0aW9uIChkYXRhVW5pdCwgaSkge1xyXG4gICAgICBpZiAoaSA8IGRhdGEubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIGxldCBkaWZmID0gZGF0YVtpICsgMV0gLSBkYXRhW2ldO1xyXG4gICAgICAgIGRhdGFfcmVhZHkucHVzaChkaWZmKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdmFyIGNoYXJ0Q29udGFpbmVyID0gZDMuc2VsZWN0KHRoaXMuY29udGFpbmVyRWx0Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgdmFyIGd1YWdlY29udGFpbmVyID0gZDMuc2VsZWN0KHRoaXMuZ3VhZ2Vjb250YWluZXJFbHQubmF0aXZlRWxlbWVudCk7XHJcbiAgICB2YXIgbWFyZ2luID0gdGhpcy5jaGFydENvbmZpZ3VyYXRpb24ubWFyZ2luO1xyXG4gICAgdmFyIHdpZHRoID1cclxuICAgICAgcGFyc2VJbnQoY2hhcnRDb250YWluZXIuc3R5bGUoJ3dpZHRoJykpIC0gbWFyZ2luLmxlZnQgLSBtYXJnaW4ucmlnaHQ7XHJcblxyXG4gICAgdmFyIGhlaWdodCA9XHJcbiAgICAgIHBhcnNlSW50KGd1YWdlY29udGFpbmVyLnN0eWxlKCdoZWlnaHQnKSkgLVxyXG4gICAgICBtYXJnaW4udG9wIC1cclxuICAgICAgbWFyZ2luLmJvdHRvbSAtXHJcbiAgICAgIDU2OyAvL2NoYXJ0IGhlYWRlciBoZWlnaHRcclxuXHJcbiAgICBpZiAodGhpcy5jaGFydENvbmZpZ3VyYXRpb24uaXNIZWFkZXJWaXNpYmxlICE9IHVuZGVmaW5lZClcclxuICAgICAgdGhpcy5pc0hlYWRlclZpc2libGUgPSB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5pc0hlYWRlclZpc2libGU7XHJcblxyXG4gICAgdmFyIHN2ZyA9IGNoYXJ0Q29udGFpbmVyXHJcbiAgICAgIC5hcHBlbmQoJ3N2ZycpXHJcbiAgICAgIC5hdHRyKCdpZCcsIHNlbGYudW5pcXVlSWQpXHJcbiAgICAgIC5hdHRyKCd3aWR0aCcsIHdpZHRoICsgbWFyZ2luLmxlZnQgKyBtYXJnaW4ucmlnaHQpXHJcbiAgICAgIC5hdHRyKCdoZWlnaHQnLCBoZWlnaHQgKyBtYXJnaW4udG9wICsgbWFyZ2luLmJvdHRvbSlcclxuICAgICAgLmNhbGwoQ2hhcnRIZWxwZXIucmVzcG9uc2l2ZWZ5KVxyXG4gICAgICAuYXBwZW5kKCdnJyk7XHJcblxyXG4gICAgdmFyIHJhZGl1cyA9IE1hdGgubWluKHdpZHRoLCBoZWlnaHQpIC8gMjtcclxuXHJcbiAgICBpZiAodGhpcy5jaGFydENvbmZpZ3VyYXRpb24uaXNEcmlsbGRvd25DaGFydCkge1xyXG4gICAgICB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVXaWR0aFNjYWxlRmFjdG9yICs9IDQwO1xyXG4gICAgICB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVIZWlnaHRTY2FsZUZhY3RvciArPSAyMDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA+IDE0MDApIHtcclxuICAgICAgICB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVIZWlnaHRTY2FsZUZhY3RvciArPSAxNTtcclxuICAgICAgICB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVXaWR0aFNjYWxlRmFjdG9yICo9IDI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCB0b3BUZXh0UG9zaXRpb24gPSByYWRpdXMgLyAyIC0gMTA7XHJcbiAgICBsZXQgbWlkVGV4dFBvc2l0aW9uID1cclxuICAgICAgdG9wVGV4dFBvc2l0aW9uICsgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24uY3VycmVudFZhbHVlSGVpZ2h0U2NhbGVGYWN0b3I7XHJcbiAgICBsZXQgYm90dG9tVGV4dFBvc2l0aW9uID1cclxuICAgICAgbWlkVGV4dFBvc2l0aW9uICsgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24uY3VycmVudFZhbHVlSGVpZ2h0U2NhbGVGYWN0b3I7XHJcbiAgICB2YXIgZGF0YV9sZW5ndGggPSBkYXRhLmxlbmd0aDtcclxuXHJcbiAgICBmdW5jdGlvbiBkZWcycmFkKGRlZykge1xyXG4gICAgICByZXR1cm4gKGRlZyAqIE1hdGguUEkpIC8gMTgwO1xyXG4gICAgfVxyXG4gICAgbGV0IHRlbXBBcnJheTogYW55ID0gW107XHJcbiAgICBsZXQgdG90YWwgPSAwO1xyXG4gICAgZGF0YV9yZWFkeS5tYXAoZnVuY3Rpb24gKHVuaXQpIHtcclxuICAgICAgdG90YWwgKz0gdW5pdDtcclxuICAgIH0pO1xyXG4gICAgZGF0YV9yZWFkeS5tYXAoZnVuY3Rpb24gKHVuaXQsIGkpIHtcclxuICAgICAgdmFyIGFuZ2xlID0gKHVuaXQgLyB0b3RhbCkgKiAxODA7XHJcbiAgICAgIGlmIChpID09PSAwKSB7XHJcbiAgICAgICAgdGVtcEFycmF5LnB1c2goYW5nbGUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCBjdXJyZW50QW5nbGUgPSB0ZW1wQXJyYXlbaSAtIDFdICsgYW5nbGU7XHJcbiAgICAgICAgdGVtcEFycmF5LnB1c2goY3VycmVudEFuZ2xlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBhbmdsZVZhbHVlID0gdGVtcEFycmF5O1xyXG5cclxuICAgIHZhciBhcmMgPSBkM1xyXG4gICAgICAuYXJjKClcclxuICAgICAgLmlubmVyUmFkaXVzKFxyXG4gICAgICAgIHJhZGl1cyAtXHJcbiAgICAgICAgICBzZWxmLmNoYXJ0Q29uZmlndXJhdGlvbi5yaW5nV2lkdGggLVxyXG4gICAgICAgICAgc2VsZi5jaGFydENvbmZpZ3VyYXRpb24ucmluZ0luc2V0XHJcbiAgICAgIClcclxuICAgICAgLm91dGVyUmFkaXVzKHJhZGl1cylcclxuICAgICAgLnN0YXJ0QW5nbGUoZnVuY3Rpb24gKGQsIGkpIHtcclxuICAgICAgICB2YXIgcmF0aW87XHJcbiAgICAgICAgaWYgKGkgPT09IDApIHtcclxuICAgICAgICAgIHJhdGlvID0gc2VsZi5jaGFydENvbmZpZ3VyYXRpb24ubWluQW5nbGU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJhdGlvID0gc2VsZi5jaGFydENvbmZpZ3VyYXRpb24ubWluQW5nbGUgKyBhbmdsZVZhbHVlW2kgLSAxXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRlZzJyYWQocmF0aW8pO1xyXG4gICAgICB9KVxyXG4gICAgICAuZW5kQW5nbGUoZnVuY3Rpb24gKGQsIGkpIHtcclxuICAgICAgICB2YXIgcmF0aW87XHJcbiAgICAgICAgaWYgKGkgPT09IGRhdGFfcmVhZHkubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgcmF0aW8gPSBzZWxmLmNoYXJ0Q29uZmlndXJhdGlvbi5tYXhBbmdsZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmF0aW8gPSBzZWxmLmNoYXJ0Q29uZmlndXJhdGlvbi5taW5BbmdsZSArIGFuZ2xlVmFsdWVbaV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkZWcycmFkKHJhdGlvKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgZnVuY3Rpb24gY2VudGVyVHJhbnNsYXRpb24oKSB7XHJcbiAgICAgIHJldHVybiAndHJhbnNsYXRlKCcgKyByYWRpdXMgKyAnLCcgKyByYWRpdXMgKyAnKSc7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGNlbnRlclR4ID0gY2VudGVyVHJhbnNsYXRpb24oKTtcclxuICAgIHZhciB0aWNrRGF0YSA9IGQzXHJcbiAgICAgIC5yYW5nZShzZWxmLmNoYXJ0Q29uZmlndXJhdGlvbi5tYWpvclRpY2tzKVxyXG4gICAgICAubWFwKGZ1bmN0aW9uIChpKSB7XHJcbiAgICAgICAgcmV0dXJuIDEgLyBzZWxmLmNoYXJ0Q29uZmlndXJhdGlvbi5tYWpvclRpY2tzO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB2YXIgYXJjcyA9IHN2Zy5hcHBlbmQoJ2cnKS5hdHRyKCdjbGFzcycsICdhcmMnKS5hdHRyKCd0cmFuc2Zvcm0nLCBjZW50ZXJUeCk7XHJcblxyXG4gICAgYXJjc1xyXG4gICAgICAuc2VsZWN0QWxsKCdwYXRoJylcclxuICAgICAgLmRhdGEoZGF0YV9yZWFkeSlcclxuICAgICAgLmVudGVyKClcclxuICAgICAgLmFwcGVuZCgncGF0aCcpXHJcbiAgICAgIC5vbignY2xpY2snLCBmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIGlmICghbWV0YURhdGEuaGFzRHJpbGxEb3duIHx8IG1ldGFEYXRhLmN1cnJlbnRWYWx1ZSA9PSAwKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCByYW5nZSA9IGdldFJhbmdlKGQpO1xyXG4gICAgICAgIHNlbGYuaGFuZGxlQ2xpY2socmFuZ2UpO1xyXG4gICAgICB9KVxyXG4gICAgICAuYXR0cignZmlsbCcsIGZ1bmN0aW9uIChkLCBpKSB7XHJcbiAgICAgICAgcmV0dXJuIGNvbG9yTWFwc1tpXTtcclxuICAgICAgfSlcclxuICAgICAgLmF0dHIoJ2lkJywgZnVuY3Rpb24gKGQsIGkpIHtcclxuICAgICAgICByZXR1cm4gY29sb3JNYXBzW2ldO1xyXG4gICAgICB9KVxyXG4gICAgICAuYXR0cignZCcsIGFyYylcclxuICAgICAgLy8gLnN0eWxlKCdjdXJzb3InLCAncG9pbnRlcicpO1xyXG4gICAgICAuc3R5bGUoJ2N1cnNvcicsIGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgICAgaWYgKG1ldGFEYXRhLmN1cnJlbnRWYWx1ZSA+IDAgJiYgbWV0YURhdGEuaGFzRHJpbGxEb3duICYmICFpc3JpYSlcclxuICAgICAgICAgIHJldHVybiAncG9pbnRlcic7XHJcbiAgICAgICAgZWxzZSByZXR1cm4gJ2RlZmF1bHQnO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICBsZXQgZ2V0UmFuZ2UgPSBmdW5jdGlvbiAoZCkge1xyXG4gICAgICBsZXQgaW5kZXggPSBkYXRhX3JlYWR5LmluZGV4T2YoZCk7XHJcbiAgICAgIHJldHVybiBkYXRhWzBdICsgJyBhbmQgJyArIGRhdGFbZGF0YS5sZW5ndGggLSAxXTtcclxuICAgIH07XHJcblxyXG4gICAgbGV0IHBvaW50ZXJIZWFkTGVuZ3RoID0gTWF0aC5yb3VuZChcclxuICAgICAgcmFkaXVzICogc2VsZi5jaGFydENvbmZpZ3VyYXRpb24ucG9pbnRlckhlYWRMZW5ndGhQZXJjZW50XHJcbiAgICApO1xyXG5cclxuICAgIHZhciBsaW5lRGF0YSA9IFtcclxuICAgICAgW3NlbGYuY2hhcnRDb25maWd1cmF0aW9uLnBvaW50ZXJXaWR0aCAvIDIsIDBdLFxyXG4gICAgICBbMCwgLXBvaW50ZXJIZWFkTGVuZ3RoXSxcclxuICAgICAgWy0oc2VsZi5jaGFydENvbmZpZ3VyYXRpb24ucG9pbnRlcldpZHRoIC8gMiksIDBdLFxyXG4gICAgICBbMCwgc2VsZi5jaGFydENvbmZpZ3VyYXRpb24ucG9pbnRlclRhaWxMZW5ndGhdLFxyXG4gICAgICBbc2VsZi5jaGFydENvbmZpZ3VyYXRpb24ucG9pbnRlcldpZHRoIC8gMiwgMF0sXHJcbiAgICBdO1xyXG5cclxuICAgIHZhciBwb2ludGVyTGluZSA9IGQzLmxpbmUoKTtcclxuICAgIHZhciBwZyA9IHN2Z1xyXG4gICAgICAuYXBwZW5kKCdnJylcclxuICAgICAgLmRhdGEoW2xpbmVEYXRhXSlcclxuICAgICAgLmF0dHIoJ2NsYXNzJywgJ3BvaW50ZXInKVxyXG4gICAgICAuYXR0cigndHJhbnNmb3JtJywgY2VudGVyVHgpO1xyXG5cclxuICAgIHZhciBwb2ludGVyVmFsdWUgPSBtZXRhRGF0YS5jdXJyZW50VmFsdWUgLSBkYXRhWzBdO1xyXG4gICAgdmFyIHJhbmdlID0gZGF0YVtkYXRhX2xlbmd0aCAtIDFdIC0gZGF0YVswXTtcclxuICAgIHZhciBwb2ludGVyQW5nbGUgPVxyXG4gICAgICBzZWxmLmNoYXJ0Q29uZmlndXJhdGlvbi5taW5BbmdsZSArIChwb2ludGVyVmFsdWUgLyByYW5nZSkgKiAxODA7XHJcbiAgICBwZy5hcHBlbmQoJ3BhdGgnKVxyXG4gICAgICAuYXR0cignZCcsIHBvaW50ZXJMaW5lKVxyXG4gICAgICAuYXR0cignZmlsbCcsIHNlbGYuY2hhcnRDb25maWd1cmF0aW9uLnBvaW50ZXJDb2xvcilcclxuICAgICAgLmF0dHIoXHJcbiAgICAgICAgJ3RyYW5zZm9ybScsXHJcbiAgICAgICAgJ3JvdGF0ZSgnICtcclxuICAgICAgICAgIHBvaW50ZXJBbmdsZSArXHJcbiAgICAgICAgICAnKSB0cmFuc2xhdGUoMCwnICtcclxuICAgICAgICAgICgtcmFkaXVzICsgc2VsZi5jaGFydENvbmZpZ3VyYXRpb24ucmluZ1dpZHRoICsgcG9pbnRlckhlYWRMZW5ndGgpICtcclxuICAgICAgICAgICcpJ1xyXG4gICAgICApO1xyXG5cclxuICAgIHZhciBsZyA9IHN2Zy5hcHBlbmQoJ2cnKS5hdHRyKCdjbGFzcycsICdsYWJlbCcpLmF0dHIoJ3RyYW5zZm9ybScsIGNlbnRlclR4KTtcclxuICAgIGxldCBsYWJlbEFycmF5VGVtcCA9IFt7IG5hbWU6IGRhdGFbMF0sIHZhbHVlOiAwIH1dO1xyXG4gICAgbGV0IGNvdW50ID0gMDtcclxuICAgIGRhdGFfcmVhZHkubWFwKGZ1bmN0aW9uIChkYXRhVW5pdCwgaSkge1xyXG4gICAgICBjb3VudCArPSBkYXRhVW5pdDtcclxuICAgICAgbGV0IHRlbXAgPSB7IG5hbWU6IGRhdGFbaSArIDFdLCB2YWx1ZTogY291bnQgfTtcclxuICAgICAgbGFiZWxBcnJheVRlbXAucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgbGFiZWxBcnJheSA9IGxhYmVsQXJyYXlUZW1wO1xyXG5cclxuICAgIGxnLnNlbGVjdEFsbCgnLmJ1YmJsZScpXHJcbiAgICAgIC5kYXRhKGxhYmVsQXJyYXkpXHJcbiAgICAgIC5lbnRlcigpXHJcbiAgICAgIC5hcHBlbmQoJ2cnKVxyXG4gICAgICAuYXR0cigndHJhbnNmb3JtJywgZnVuY3Rpb24gKGQpIHtcclxuICAgICAgICB2YXIgbmV3QW5nbGUgPVxyXG4gICAgICAgICAgc2VsZi5jaGFydENvbmZpZ3VyYXRpb24ubWluQW5nbGUgKyAoZC52YWx1ZSAvIHJhbmdlKSAqIDE4MDtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgJ3JvdGF0ZSgnICtcclxuICAgICAgICAgIG5ld0FuZ2xlICtcclxuICAgICAgICAgICcpIHRyYW5zbGF0ZSgwLCcgK1xyXG4gICAgICAgICAgKHNlbGYuY2hhcnRDb25maWd1cmF0aW9uLmxhYmVsSW5zZXQgLSByYWRpdXMgLSAyMCkgK1xyXG4gICAgICAgICAgJyknXHJcbiAgICAgICAgKTtcclxuICAgICAgfSlcclxuICAgICAgLmFwcGVuZCgnZycpXHJcbiAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBmdW5jdGlvbiAoZCwgaSkge1xyXG4gICAgICAgIHZhciBuZXdBbmdsZSA9XHJcbiAgICAgICAgICBzZWxmLmNoYXJ0Q29uZmlndXJhdGlvbi5taW5BbmdsZSArIChkLnZhbHVlIC8gcmFuZ2UpICogMTgwO1xyXG4gICAgICAgIGlmIChpID09IDAgJiYgc2VsZi5jaGFydENvbmZpZ3VyYXRpb24uaXNWYWx1ZUxhYmxlQWRqdXN0KSB7XHJcbiAgICAgICAgICByZXR1cm4gJ3JvdGF0ZSgnICsgKDAgLSBuZXdBbmdsZSkgKyAnKSB0cmFuc2xhdGUoLTI3LDApJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgaSA9PSBsYWJlbEFycmF5Lmxlbmd0aCAtIDEgJiZcclxuICAgICAgICAgIHNlbGYuY2hhcnRDb25maWd1cmF0aW9uLmlzVmFsdWVMYWJsZUFkanVzdFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgcmV0dXJuICdyb3RhdGUoJyArICgwIC0gbmV3QW5nbGUpICsgJykgdHJhbnNsYXRlKC0xNSwwKSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAncm90YXRlKCcgKyAoMCAtIG5ld0FuZ2xlKSArICcpIHRyYW5zbGF0ZSgtMTcsMCknO1xyXG4gICAgICB9KVxyXG4gICAgICAuYXBwZW5kKCd0ZXh0JylcclxuICAgICAgLmF0dHIoJ3N0eWxlJywgZnVuY3Rpb24gKGQpIHtcclxuICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCAxNDAwKVxyXG4gICAgICAgICAgcmV0dXJuICdmb250LXNpemU6ICcgKyAnMTJweCcgKyAnOyBmb250LXdlaWdodDonICsgJzYwMDsnO1xyXG4gICAgICAgIGVsc2UgcmV0dXJuICdmb250LXNpemU6ICcgKyAnMTRweCcgKyAnOyBmb250LXdlaWdodDonICsgJzYwMDsnO1xyXG4gICAgICB9KVxyXG4gICAgICAuYXR0cignZmlsbCcsICd2YXIoLS1jaGFydC10ZXh0LWNvbG9yKScpXHJcbiAgICAgIC50ZXh0KGZ1bmN0aW9uIChkKSB7XHJcbiAgICAgICAgaWYgKG1ldGFEYXRhLmRhdGFUeXBlKSB7XHJcbiAgICAgICAgICByZXR1cm4gZC5uYW1lICsgbWV0YURhdGEuZGF0YVR5cGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBkLm5hbWU7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIHN2Z1xyXG4gICAgICAuYXBwZW5kKCdmb3JlaWduT2JqZWN0JylcclxuICAgICAgLmF0dHIoXHJcbiAgICAgICAgJ3RyYW5zZm9ybScsXHJcbiAgICAgICAgJ3RyYW5zbGF0ZSgnICtcclxuICAgICAgICAgIChyYWRpdXMgLSB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVXaWR0aFNjYWxlRmFjdG9yIC8gMikgK1xyXG4gICAgICAgICAgJywnICtcclxuICAgICAgICAgIHRvcFRleHRQb3NpdGlvbiArXHJcbiAgICAgICAgICAnKSdcclxuICAgICAgKVxyXG4gICAgICAuYXR0cignd2lkdGgnLCB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVXaWR0aFNjYWxlRmFjdG9yICsgOClcclxuICAgICAgLmF0dHIoJ2hlaWdodCcsIHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLmN1cnJlbnRWYWx1ZUhlaWdodFNjYWxlRmFjdG9yKVxyXG4gICAgICAuYXBwZW5kKCd4aHRtbDpkaXYnKVxyXG4gICAgICAuYXR0cignY2xhc3MnLCAndmFsdWUtZGlzcGxheScpXHJcbiAgICAgIC5zdHlsZShcclxuICAgICAgICAnaGVpZ2h0JyxcclxuICAgICAgICB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVIZWlnaHRTY2FsZUZhY3RvciArIDEwICsgJ3B4J1xyXG4gICAgICApXHJcbiAgICAgIC5zdHlsZSgnZm9udC1zaXplJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA+IDE1MDApIHtcclxuICAgICAgICAgIHNlbGYuY2hhcnRDb25maWd1cmF0aW9uLmN1cnJlbnRWYWx1ZUhlaWdodFNjYWxlRmFjdG9yIC0gMjUgKyAncHgnO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzZWxmLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVIZWlnaHRTY2FsZUZhY3RvciAtIDE1ICsgJ3B4JztcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5odG1sKG1ldGFEYXRhLmN1cnJlbnRWYWx1ZSArIG1ldGFEYXRhLmRhdGFUeXBlKTtcclxuICAgIGlmIChtZXRhRGF0YS5zdGF0dXMpIHtcclxuICAgICAgbGV0IHdpZHRoVGVtcCA9IG1ldGFEYXRhLnN0YXR1cy5sZW5ndGggPiA0ID8gMjEwIDogMTIwO1xyXG4gICAgICBzdmdcclxuICAgICAgICAuYXBwZW5kKCdmb3JlaWduT2JqZWN0JylcclxuICAgICAgICAuYXR0cihcclxuICAgICAgICAgICd0cmFuc2Zvcm0nLFxyXG4gICAgICAgICAgJ3RyYW5zbGF0ZSgnICsgKHJhZGl1cyAtIHdpZHRoVGVtcCAvIDIpICsgJywnICsgbWlkVGV4dFBvc2l0aW9uICsgJyknXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5hdHRyKCd3aWR0aCcsIHdpZHRoVGVtcClcclxuICAgICAgICAuYXR0cihcclxuICAgICAgICAgICdoZWlnaHQnLFxyXG4gICAgICAgICAgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24uY3VycmVudFZhbHVlSGVpZ2h0U2NhbGVGYWN0b3IgKyAxMFxyXG4gICAgICAgIClcclxuICAgICAgICAuYXBwZW5kKCd4aHRtbDpkaXYnKVxyXG4gICAgICAgIC5hdHRyKCdjbGFzcycsICdzdGF0dXMtZGlzcGxheScpXHJcbiAgICAgICAgLnN0eWxlKFxyXG4gICAgICAgICAgJ2ZvbnQtc2l6ZScsXHJcbiAgICAgICAgICB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVIZWlnaHRTY2FsZUZhY3RvciAtIDI1ICsgJ3B4J1xyXG4gICAgICAgIClcclxuICAgICAgICAuaHRtbChtZXRhRGF0YS5zdGF0dXMpO1xyXG4gICAgfVxyXG4gICAgc3ZnXHJcbiAgICAgIC5hcHBlbmQoJ2ZvcmVpZ25PYmplY3QnKVxyXG4gICAgICAuYXR0cihcclxuICAgICAgICAndHJhbnNmb3JtJyxcclxuICAgICAgICAndHJhbnNsYXRlKCcgKyAocmFkaXVzIC0gMTA1KSArICcsJyArIGJvdHRvbVRleHRQb3NpdGlvbiArICcpJ1xyXG4gICAgICApXHJcbiAgICAgIC5hdHRyKCd3aWR0aCcsIDIxMClcclxuICAgICAgLmF0dHIoJ2hlaWdodCcsIHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLmN1cnJlbnRWYWx1ZUhlaWdodFNjYWxlRmFjdG9yKVxyXG4gICAgICAuYXBwZW5kKCd4aHRtbDpkaXYnKVxyXG4gICAgICAuYXR0cignY2xhc3MnLCAnZGF0ZXJhbmdlLWRpc3BsYXknKVxyXG4gICAgICAuc3R5bGUoJ2ZvbnQtc2l6ZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAoc2VsZi5jaGFydENvbmZpZ3VyYXRpb24uaXNEcmlsbGRvd25DaGFydCkge1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCAxNDAwKSByZXR1cm4gJzE0cHgnO1xyXG4gICAgICAgICAgICBlbHNlIHJldHVybiAnMThweCc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDE0MDApIHJldHVybiAnMTRweCc7XHJcbiAgICAgICAgICBlbHNlIHJldHVybiAnMThweCc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuaHRtbChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIGRlc2lyZWRTaXplO1xyXG4gICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDE0MDApIGRlc2lyZWRTaXplID0gJzE0cHgnO1xyXG4gICAgICAgIGVsc2UgZGVzaXJlZFNpemUgPSAnMThweCc7XHJcbiAgICAgICAgaWYgKG1ldGFEYXRhLmRhdGVSYW5nZSlcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICc8c3BhbiBjbGFzcz1cIm1hcmdpbnJpZ2h0LTNcIj48aSBjbGFzcz1cImZhIGZhLWNhbGVuZGFyXCI+PC9pPjwvc3Bhbj48c3Bhbj4gJyArXHJcbiAgICAgICAgICAgIG1ldGFEYXRhLmRhdGVSYW5nZSArXHJcbiAgICAgICAgICAgICc8L3NwYW4+J1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICBlbHNlIHJldHVybiAnJztcclxuICAgICAgfSk7XHJcblxyXG4gICAgdmFyIGNvbnRhaW5lck1pZFdpZHRoID0gcGFyc2VJbnQoY2hhcnRDb250YWluZXIuc3R5bGUoJ3dpZHRoJykpIC8gMjtcclxuICAgIHZhciBub2RlSGFsZldpZHRoID0gc3ZnLm5vZGUoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCAvIDI7XHJcbiAgICB2YXIgdXBkYXRlZFN0YXJ0aW5nUG9pbnQgPSBjb250YWluZXJNaWRXaWR0aCAtIG5vZGVIYWxmV2lkdGg7XHJcblxyXG4gICAgc3ZnLmF0dHIoXHJcbiAgICAgICd0cmFuc2Zvcm0nLFxyXG4gICAgICAndHJhbnNsYXRlKCcgK1xyXG4gICAgICAgICh1cGRhdGVkU3RhcnRpbmdQb2ludCArIG1hcmdpbi5sZWZ0KSArXHJcbiAgICAgICAgJywnICtcclxuICAgICAgICBtYXJnaW4udG9wICtcclxuICAgICAgICAnKSdcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDbGljayhkOiBhbnkpIHtcclxuICAgIHRoaXMuY2xpY2tFdmVudC5lbWl0KGQpO1xyXG4gIH1cclxuICBoYW5kbGVIZWFkZXJNZW51Q2xpY2soaWQpIHtcclxuICAgIHRoaXMuaGVhZGVyTWVudWNsaWNrRXZlbnQuZW1pdChpZCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgI2d1YWdlY29udGFpbmVyIGNsYXNzPVwibGliLWNoYXJ0LXdyYXBwZXJcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHZhcigtLWNhcmQtYmcpO1wiXHJcbiAgKHJlc2l6ZWQpPVwib25SZXNpemVkKCRldmVudClcIj5cclxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWFsdFwiICpuZ0lmPVwiIWlzSGVhZGVyVmlzaWJsZVwiPlxyXG4gICAgPGxpYi1jaGFydC1oZWFkZXItdjIgW2NoYXJ0RGF0YV09XCJjaGFydERhdGFcIiBbY2hhcnRDb25maWd1cmF0aW9uXT1cImNoYXJ0Q29uZmlndXJhdGlvblwiXHJcbiAgICAgIChjbGlja0V2ZW50KT1cImhhbmRsZUNsaWNrKCRldmVudClcIj48L2xpYi1jaGFydC1oZWFkZXItdjI+XHJcbiAgICA8IS0tIDxzcGFuXHJcbiAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgIGNoYXJ0Q29uZmlndXJhdGlvbi5pc1RvZ2dsZVZpc2libGUgJiZcclxuICAgICAgICAhaXNIZWFkZXJWaXNpYmxlICYmXHJcbiAgICAgICAgY2hhcnREYXRhLm1ldGFEYXRhLmN1cnJlbnRWYWx1ZSA+IDBcclxuICAgICAgICAgID8gJydcclxuICAgICAgICAgIDogJ2hpZGRlbidcclxuICAgICAgXCJcclxuICAgICAgY2xhc3M9XCJmbGV4LWlubGluZVwiXHJcbiAgICA+XHJcbiAgICAgIDxzcGFuPkF2ZXJhZ2U8L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3dpdGNoMVwiIChjbGljayk9XCJoYW5kbGVDbGljayh7IHRvZ2dsZUZyb206ICdnYXVnZScgfSlcIj5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgLz5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInNsaWRlcjEgcm91bmQxXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIDxzcGFuPlRyZW5kaW5nPC9zcGFuPlxyXG4gICAgPC9zcGFuPiAtLT5cclxuICA8L2Rpdj5cclxuICA8bGliLWNoYXJ0LWhlYWRlci12MSBbdGl0bGVdPVwiY2hhcnREYXRhLm1ldGFEYXRhLnRpdGxlXCIgW2hhc0RyaWxsRG93bl09XCJjaGFydERhdGEubWV0YURhdGEuaGFzRHJpbGxEb3duXCJcclxuICAgIFtpc0VkaXRFbmFibGVkXT1cImNoYXJ0RGF0YS5tZXRhRGF0YS5pc0VkaXRFbmFibGVkXCIgW2lzcmlhXT1cImN1c3RvbUNoYXJ0Q29uZmlndXJhdGlvbi5pc1JpYVwiIFttZW51T3B0aW9uc109XCJjaGFydENvbmZpZ3VyYXRpb24uaGVhZGVyTWVudU9wdGlvbnNcIlxyXG4gICAgW3NlbGVjdGVkS3BpVG9vbHRvcF09XCJjaGFydENvbmZpZ3VyYXRpb24uc2VsZWN0ZWRLcGlUb29sdG9wXCIgKG1lbnVPcHRpb25DbGlja0V2ZW50KT1cImhhbmRsZUhlYWRlck1lbnVDbGljaygkZXZlbnQpXCJcclxuICAgIFtpc0FsZXJ0RW5hYmxlZF09XCJpc0FsZXJ0RW5hYmxlZFwiICpuZ0lmPVwiaXNIZWFkZXJWaXNpYmxlXCI+PC9saWItY2hhcnQtaGVhZGVyLXYxPlxyXG4gIDwhLS0gPGxpYi1jaGFydC1hbGVydC1oZWFkZXJcclxuICAgIFtpc0FsZXJ0RW5hYmxlZF09XCJcclxuICAgICAgKGNoYXJ0Q29uZmlndXJhdGlvbi5oZWFkZXJNZW51T3B0aW9ucyAmJlxyXG4gICAgICAgIGNoYXJ0Q29uZmlndXJhdGlvbi5oZWFkZXJNZW51T3B0aW9ucy5sZW5ndGggPT0gMiAmJlxyXG4gICAgICAgIGNoYXJ0Q29uZmlndXJhdGlvbi5oZWFkZXJNZW51T3B0aW9uc1sxXS5pZCA9PSAnZWRpdEFsZXJ0JykgfHxcclxuICAgICAgKGNoYXJ0Q29uZmlndXJhdGlvbi5oZWFkZXJNZW51T3B0aW9ucyAmJlxyXG4gICAgICAgIGNoYXJ0Q29uZmlndXJhdGlvbi5oZWFkZXJNZW51T3B0aW9ucy5sZW5ndGggPT0gMSAmJlxyXG4gICAgICAgIGNoYXJ0Q29uZmlndXJhdGlvbi5oZWFkZXJNZW51T3B0aW9uc1swXS5pZCA9PSAnZWRpdEFsZXJ0JylcclxuICAgIFwiXHJcbiAgPjwvbGliLWNoYXJ0LWFsZXJ0LWhlYWRlcj4gLS0+XHJcbiAgPGRpdiBbc3R5bGUuaGVpZ2h0XT1cImNoYXJ0Q29uZmlndXJhdGlvbi5zdmdIZWlnaHRcIiBpZD1cImd1YWdlY2hhcnRjb250YWluZXJcIiAjZ3VhZ2VjaGFydGNvbnRhaW5lclxyXG4gICAgY2xhc3M9XCJsaWItY2hhcnQtc3ZnIGd1YWdlY29udGFpbmVyXCI+PC9kaXY+XHJcbjwvZGl2PiJdfQ==
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhZ2UtY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXhpZGlvLXN0eWxlZ3VpZGUtbGlicmFyeS9zcmMvbGliL2d1YWdlLWNoYXJ0L2d1YWdlLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F4aWRpby1zdHlsZWd1aWRlLWxpYnJhcnkvc3JjL2xpYi9ndWFnZS1jaGFydC9ndWFnZS1jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUdULFNBQVMsRUFFVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2pELE9BQU8sV0FBVyxNQUFNLGlCQUFpQixDQUFDO0FBRTFDLE9BQU8sa0JBQWtCLE1BQU0sa0JBQWtCLENBQUM7Ozs7OztBQVFsRCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsaUJBQWlCO0lBNkN4RDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBeENBLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3JDLHlCQUFvQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFekQsdUJBQWtCLEdBQVEsRUFBRSxDQUFDO1FBQzdCLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFDdEIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFDdkIsYUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVyQix5QkFBb0IsR0FBRztZQUM5QixNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVB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QyxDQUFNO1FBQ2hCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxFQUFPO1FBQzNCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckMsQ0FBQzsrR0F6U1UsbUJBQW1CO21HQUFuQixtQkFBbUIseWdCQ3ZCaEMsc2dDQVlNOzs0RkRXTyxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsaUJBQWlCLGlCQUdaLGlCQUFpQixDQUFDLElBQUk7d0RBR2UsWUFBWTtzQkFBL0QsU0FBUzt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0gsaUJBQWlCO3NCQUEvRCxTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFcEMsU0FBUztzQkFBakIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBPbkluaXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIFZpZXdDaGlsZCxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50VW5pcXVlSWQgfSBmcm9tICcuLi91bmlxdWUtaWQnO1xyXG5pbXBvcnQgQ2hhcnRIZWxwZXIgZnJvbSAnLi4vY2hhcnQtaGVscGVyJztcclxuaW1wb3J0IHsgUmVzaXplZEV2ZW50IH0gZnJvbSAnYW5ndWxhci1yZXNpemUtZXZlbnQnO1xyXG5pbXBvcnQgSGVhZGVyQ29uZmlnSGVscGVyIGZyb20gJy4uL2hlYWRlci1jb25maWcnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItZ3VhZ2UtY2hhcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9ndWFnZS1jaGFydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ3VhZ2UtY2hhcnQuY29tcG9uZW50Lmxlc3MnLCAnLi4vY29tbW9uLXN0eWxlcy5sZXNzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEd1YWdlQ2hhcnRDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRVbmlxdWVJZCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBAVmlld0NoaWxkKCdndWFnZWNoYXJ0Y29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSkgY29udGFpbmVyRWx0ITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdndWFnZWNvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pIGd1YWdlY29udGFpbmVyRWx0ITogRWxlbWVudFJlZjtcclxuXHJcbiAgQElucHV0KCkgY2hhcnREYXRhOiBhbnk7XHJcbiAgQElucHV0KCkgY3VzdG9tQ2hhcnRDb25maWd1cmF0aW9uOiBhbnk7XHJcbiAgQE91dHB1dCgpIGNsaWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgaGVhZGVyTWVudWNsaWNrRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgY2hhcnRDb25maWd1cmF0aW9uOiBhbnkgPSB7fTtcclxuICBkYXRhVHlwZTogc3RyaW5nID0gJyc7XHJcbiAgZGF0YXR5cGVfc3RhdHVzID0gZmFsc2U7XHJcbiAgaXNIZWFkZXJWaXNpYmxlID0gdHJ1ZTtcclxuICB1bmlxdWVJZCA9IHRoaXMuZ2V0VW5pcXVlSWQoKTtcclxuXHJcbiAgcmVhZG9ubHkgZGVmYXVsdENvbmZpZ3VyYXRpb24gPSB7XHJcbiAgICBtYXJnaW46IHsgdG9wOiA0MCwgcmlnaHQ6IDIwLCBib3R0b206IDIwLCBsZWZ0OiAyMCB9LFxyXG4gICAgbWluQW5nbGU6IC05MCxcclxuICAgIG1heEFuZ2xlOiA5MCxcclxuICAgIHJpbmdJbnNldDogMjAsXHJcbiAgICByaW5nV2lkdGg6IDIwLFxyXG4gICAgbWFqb3JUaWNrczogMyxcclxuICAgIHN2Z0hlaWdodDogODAsXHJcbiAgICBsb3dfY29sb3JNYXA6IFsnIzQzQ0MwMCcsICcjRkZFRjBDJywgJyNGRjRFMEMnXSxcclxuICAgIGhpZ2hfY29sb3JNYXA6IFsnI0ZGNEUwQycsICcjRkZFRjBDJywgJyM0M0NDMDAnXSxcclxuICAgIGlzSGVhZGVyVmlzaWJsZTogdW5kZWZpbmVkLFxyXG4gICAgcG9pbnRlcldpZHRoOiAxMCxcclxuICAgIHBvaW50ZXJUYWlsTGVuZ3RoOiA1LFxyXG4gICAgcG9pbnRlckhlYWRMZW5ndGhQZXJjZW50OiAwLjcsXHJcbiAgICBsYWJlbEluc2V0OiAxMCxcclxuICAgIGxlZ2VuZEp1c3RpZmllZDogZmFsc2UsXHJcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjRkZGRkZGJyxcclxuICAgIGlzRHJpbGxkb3duQ2hhcnQ6IHVuZGVmaW5lZCxcclxuICAgIHJpbmdTY2FsZUZhY3RvcjogMCxcclxuICAgIHRleHRzQXRDZW50ZXJTY2FsZUZhY3RvcjogMCxcclxuICAgIGN1cnJlbnRWYWx1ZVdpZHRoU2NhbGVGYWN0b3I6IDYwLFxyXG4gICAgY3VycmVudFZhbHVlSGVpZ2h0U2NhbGVGYWN0b3I6IDMwLFxyXG4gICAgcG9pbnRlckNvbG9yOiAnIzY4Njg2OCcsXHJcbiAgICBpc1RvZ2dsZVZpc2libGU6IHVuZGVmaW5lZCxcclxuICAgIHNlbGVjdGVkS3BpVG9vbHRvcDogdW5kZWZpbmVkLFxyXG4gICAgaXNWYWx1ZUxhYmxlQWRqdXN0OiB1bmRlZmluZWQsXHJcbiAgICBpc1RpdGxlSGlkZGVuOiB1bmRlZmluZWQsXHJcbiAgICBoZWFkZXJNZW51T3B0aW9uczogSGVhZGVyQ29uZmlnSGVscGVyLmhlYWRlckNvbmZpZy5oZWFkZXJNZW51T3B0aW9ucyxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNBbGVydEVuYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGFydENvbmZpZ3VyYXRpb24/LmhlYWRlck1lbnVPcHRpb25zPy5zb21lKChvcHRpb24pID0+IG9wdGlvbi5pZCA9PT0gJ2VkaXRBbGVydCcpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7fVxyXG5cclxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIHRoaXMucmVkcmF3Q2hhcnQoKTtcclxuICB9XHJcblxyXG4gIG9uUmVzaXplZChfOiBSZXNpemVkRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMucmVkcmF3Q2hhcnQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVkcmF3Q2hhcnQoKTogdm9pZCB7XHJcbiAgICBkMy5zZWxlY3QoYCMke3RoaXMudW5pcXVlSWR9YCkucmVtb3ZlKCk7XHJcbiAgICB0aGlzLmluaXRpYWxpemVDaGFydENvbmZpZygpO1xyXG4gICAgdGhpcy5kcmF3R2F1Z2VDaGFydCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplQ2hhcnRDb25maWcoKTogdm9pZCB7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmRlZmF1bHRDb25maWd1cmF0aW9uKSB7XHJcbiAgICAgIHRoaXMuY2hhcnRDb25maWd1cmF0aW9uW2tleV0gPSBDaGFydEhlbHBlci5nZXRWYWx1ZUJ5Q29uZmlndXJhdGlvblR5cGUoXHJcbiAgICAgICAga2V5LFxyXG4gICAgICAgIHRoaXMuZGVmYXVsdENvbmZpZ3VyYXRpb24sXHJcbiAgICAgICAgdGhpcy5jdXN0b21DaGFydENvbmZpZ3VyYXRpb25cclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5jaGFydENvbmZpZ3VyYXRpb24uaXNIZWFkZXJWaXNpYmxlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhpcy5pc0hlYWRlclZpc2libGUgPSB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5pc0hlYWRlclZpc2libGU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbWV0YURhdGEgPSB0aGlzLmNoYXJ0RGF0YS5tZXRhRGF0YTtcclxuICAgIGlmIChtZXRhRGF0YS5kYXRhVHlwZSkge1xyXG4gICAgICB0aGlzLmRhdGFUeXBlID0gbWV0YURhdGEuZGF0YVR5cGUgPT09ICdVU0QnID8gJyQgJyA6IG1ldGFEYXRhLmRhdGFUeXBlO1xyXG4gICAgICB0aGlzLmRhdGF0eXBlX3N0YXR1cyA9IG1ldGFEYXRhLmRhdGFUeXBlID09PSAnVVNEJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZHJhd0dhdWdlQ2hhcnQoKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGRhdGEsIG1ldGFEYXRhIH0gPSB0aGlzLmNoYXJ0RGF0YTtcclxuICAgIGNvbnN0IGNvbG9yTWFwcyA9XHJcbiAgICAgIG1ldGFEYXRhLmNvbG9yVHlwZSA9PT0gJ2xvdydcclxuICAgICAgICA/IHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLmxvd19jb2xvck1hcFxyXG4gICAgICAgIDogdGhpcy5jaGFydENvbmZpZ3VyYXRpb24uaGlnaF9jb2xvck1hcDtcclxuXHJcbiAgICBjb25zdCBjaGFydENvbnRhaW5lciA9IGQzLnNlbGVjdCh0aGlzLmNvbnRhaW5lckVsdC5uYXRpdmVFbGVtZW50KTtcclxuICAgIGNvbnN0IGd1YWdlY29udGFpbmVyID0gZDMuc2VsZWN0KHRoaXMuZ3VhZ2Vjb250YWluZXJFbHQubmF0aXZlRWxlbWVudCk7XHJcbiAgICBjb25zdCBtYXJnaW4gPSB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5tYXJnaW47XHJcblxyXG4gICAgY29uc3Qgd2lkdGggPSBwYXJzZUludChjaGFydENvbnRhaW5lci5zdHlsZSgnd2lkdGgnKSkgLSBtYXJnaW4ubGVmdCAtIG1hcmdpbi5yaWdodDtcclxuICAgIGNvbnN0IGhlaWdodCA9XHJcbiAgICAgIHBhcnNlSW50KGd1YWdlY29udGFpbmVyLnN0eWxlKCdoZWlnaHQnKSkgLSBtYXJnaW4udG9wIC0gbWFyZ2luLmJvdHRvbSAtIDU2O1xyXG5cclxuICAgIGNvbnN0IHN2ZyA9IHRoaXMuY3JlYXRlU3ZnKGNoYXJ0Q29udGFpbmVyLCB3aWR0aCwgaGVpZ2h0KTtcclxuICAgIGNvbnN0IHJhZGl1cyA9IE1hdGgubWluKHdpZHRoLCBoZWlnaHQpIC8gMjtcclxuXHJcbiAgICB0aGlzLmFkanVzdEZvclNjcmVlbkFuZERyaWxsZG93bihyYWRpdXMpO1xyXG5cclxuICAgIGNvbnN0IHsgZGF0YV9yZWFkeSwgYW5nbGVWYWx1ZSwgbGFiZWxBcnJheSwgcmFuZ2UgfSA9IHRoaXMucHJlcGFyZUdhdWdlRGF0YShkYXRhKTtcclxuXHJcbiAgICB0aGlzLmRyYXdBcmNzKHN2ZywgZGF0YV9yZWFkeSwgYW5nbGVWYWx1ZSwgcmFkaXVzLCBjb2xvck1hcHMsIG1ldGFEYXRhKTtcclxuICAgIHRoaXMuZHJhd1BvaW50ZXIoc3ZnLCByYWRpdXMsIGRhdGEsIG1ldGFEYXRhKTtcclxuICAgIHRoaXMuZHJhd0xhYmVscyhzdmcsIHJhZGl1cywgbGFiZWxBcnJheSwgcmFuZ2UsIG1ldGFEYXRhKTtcclxuICAgIHRoaXMuZHJhd0NlbnRlclRleHRzKHN2ZywgcmFkaXVzLCBtZXRhRGF0YSk7XHJcbiAgICB0aGlzLmFsaWduU3ZnKHN2ZywgY2hhcnRDb250YWluZXIsIG1hcmdpbik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVN2ZyhjaGFydENvbnRhaW5lcjogYW55LCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIGNoYXJ0Q29udGFpbmVyXHJcbiAgICAgIC5hcHBlbmQoJ3N2ZycpXHJcbiAgICAgIC5hdHRyKCdpZCcsIHRoaXMudW5pcXVlSWQpXHJcbiAgICAgIC5hdHRyKCd3aWR0aCcsIHdpZHRoKVxyXG4gICAgICAuYXR0cignaGVpZ2h0JywgaGVpZ2h0KVxyXG4gICAgICAuY2FsbChDaGFydEhlbHBlci5yZXNwb25zaXZlZnkpXHJcbiAgICAgIC5hcHBlbmQoJ2cnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRqdXN0Rm9yU2NyZWVuQW5kRHJpbGxkb3duKHJhZGl1czogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jaGFydENvbmZpZ3VyYXRpb24uaXNEcmlsbGRvd25DaGFydCkge1xyXG4gICAgICB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVXaWR0aFNjYWxlRmFjdG9yICs9IDQwO1xyXG4gICAgICB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVIZWlnaHRTY2FsZUZhY3RvciArPSAyMDtcclxuICAgIH0gZWxzZSBpZiAod2luZG93LmlubmVyV2lkdGggPiAxNDAwKSB7XHJcbiAgICAgIHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLmN1cnJlbnRWYWx1ZUhlaWdodFNjYWxlRmFjdG9yICs9IDE1O1xyXG4gICAgICB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVXaWR0aFNjYWxlRmFjdG9yICo9IDI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHByZXBhcmVHYXVnZURhdGEoZGF0YTogbnVtYmVyW10pIHtcclxuICAgIGNvbnN0IGRhdGFfcmVhZHkgPSBkYXRhLnNsaWNlKDEpLm1hcCgoZCwgaSkgPT4gZCAtIGRhdGFbaV0pO1xyXG4gICAgY29uc3QgdG90YWwgPSBkYXRhX3JlYWR5LnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApO1xyXG5cclxuICAgIGNvbnN0IGFuZ2xlVmFsdWUgPSBkYXRhX3JlYWR5Lm1hcChcclxuICAgICAgKChzdW0pID0+ICh1bml0OiBudW1iZXIpID0+IChzdW0gKz0gKHVuaXQgLyB0b3RhbCkgKiAxODApKSgwKVxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBsYWJlbEFycmF5ID0gW3sgbmFtZTogZGF0YVswXSwgdmFsdWU6IDAgfV07XHJcbiAgICBkYXRhX3JlYWR5LnJlZHVjZSgoYWNjLCB2YWwsIGkpID0+IHtcclxuICAgICAgY29uc3QgbmV4dCA9IGFjYyArIHZhbDtcclxuICAgICAgbGFiZWxBcnJheS5wdXNoKHsgbmFtZTogZGF0YVtpICsgMV0sIHZhbHVlOiBuZXh0IH0pO1xyXG4gICAgICByZXR1cm4gbmV4dDtcclxuICAgIH0sIDApO1xyXG5cclxuICAgIGNvbnN0IHJhbmdlID0gZGF0YVtkYXRhLmxlbmd0aCAtIDFdIC0gZGF0YVswXTtcclxuICAgIHJldHVybiB7IGRhdGFfcmVhZHksIGFuZ2xlVmFsdWUsIGxhYmVsQXJyYXksIHJhbmdlIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRyYXdBcmNzKHN2ZzogYW55LCBkYXRhX3JlYWR5OiBhbnlbXSwgYW5nbGVWYWx1ZTogbnVtYmVyW10sIHJhZGl1czogbnVtYmVyLCBjb2xvck1hcHM6IHN0cmluZ1tdLCBtZXRhRGF0YTogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBhcmMgPSBkM1xyXG4gICAgICAuYXJjKClcclxuICAgICAgLmlubmVyUmFkaXVzKHJhZGl1cyAtIHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLnJpbmdXaWR0aCAtIHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLnJpbmdJbnNldClcclxuICAgICAgLm91dGVyUmFkaXVzKHJhZGl1cylcclxuICAgICAgLnN0YXJ0QW5nbGUoKF86IGFueSwgaTogbnVtYmVyKSA9PlxyXG4gICAgICAgIHRoaXMuZGVnMnJhZChpID09PSAwID8gdGhpcy5jaGFydENvbmZpZ3VyYXRpb24ubWluQW5nbGUgOiB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5taW5BbmdsZSArIGFuZ2xlVmFsdWVbaSAtIDFdKVxyXG4gICAgICApXHJcbiAgICAgIC5lbmRBbmdsZSgoXzogYW55LCBpOiBudW1iZXIpID0+XHJcbiAgICAgICAgdGhpcy5kZWcycmFkKFxyXG4gICAgICAgICAgaSA9PT0gZGF0YV9yZWFkeS5sZW5ndGggLSAxXHJcbiAgICAgICAgICAgID8gdGhpcy5jaGFydENvbmZpZ3VyYXRpb24ubWF4QW5nbGVcclxuICAgICAgICAgICAgOiB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5taW5BbmdsZSArIGFuZ2xlVmFsdWVbaV1cclxuICAgICAgICApXHJcbiAgICAgICk7XHJcblxyXG4gICAgY29uc3QgYXJjcyA9IHN2Zy5hcHBlbmQoJ2cnKS5hdHRyKCdjbGFzcycsICdhcmMnKS5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKCR7cmFkaXVzfSwke3JhZGl1c30pYCk7XHJcblxyXG4gICAgYXJjc1xyXG4gICAgICAuc2VsZWN0QWxsKCdwYXRoJylcclxuICAgICAgLmRhdGEoZGF0YV9yZWFkeSlcclxuICAgICAgLmVudGVyKClcclxuICAgICAgLmFwcGVuZCgncGF0aCcpXHJcbiAgICAgIC5hdHRyKCdmaWxsJywgKF8sIGkpID0+IGNvbG9yTWFwc1tpXSlcclxuICAgICAgLmF0dHIoJ2QnLCBhcmMpXHJcbiAgICAgIC5zdHlsZSgnY3Vyc29yJywgKCkgPT5cclxuICAgICAgICBtZXRhRGF0YS5jdXJyZW50VmFsdWUgPiAwICYmIG1ldGFEYXRhLmhhc0RyaWxsRG93biA/ICdwb2ludGVyJyA6ICdkZWZhdWx0J1xyXG4gICAgICApXHJcbiAgICAgIC5vbignY2xpY2snLCAoZXZlbnQ6IGFueSwgZDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKG1ldGFEYXRhLmhhc0RyaWxsRG93biAmJiBtZXRhRGF0YS5jdXJyZW50VmFsdWUgPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUNsaWNrKHRoaXMuZ2V0UmFuZ2UoZCwgZGF0YV9yZWFkeSwgbWV0YURhdGEpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkcmF3UG9pbnRlcihzdmc6IGFueSwgcmFkaXVzOiBudW1iZXIsIGRhdGE6IG51bWJlcltdLCBtZXRhRGF0YTogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBwb2ludGVySGVhZExlbmd0aCA9IE1hdGgucm91bmQocmFkaXVzICogdGhpcy5jaGFydENvbmZpZ3VyYXRpb24ucG9pbnRlckhlYWRMZW5ndGhQZXJjZW50KTtcclxuICAgIGNvbnN0IGxpbmVEYXRhID0gW1xyXG4gICAgICBbdGhpcy5jaGFydENvbmZpZ3VyYXRpb24ucG9pbnRlcldpZHRoIC8gMiwgMF0sXHJcbiAgICAgIFswLCAtcG9pbnRlckhlYWRMZW5ndGhdLFxyXG4gICAgICBbLSh0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5wb2ludGVyV2lkdGggLyAyKSwgMF0sXHJcbiAgICAgIFswLCB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5wb2ludGVyVGFpbExlbmd0aF0sXHJcbiAgICAgIFt0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5wb2ludGVyV2lkdGggLyAyLCAwXSxcclxuICAgIF07XHJcbiAgICBjb25zdCBwb2ludGVyTGluZSA9IGQzLmxpbmUoKTtcclxuICAgIGNvbnN0IHBvaW50ZXJWYWx1ZSA9IG1ldGFEYXRhLmN1cnJlbnRWYWx1ZSAtIGRhdGFbMF07XHJcbiAgICBjb25zdCByYW5nZSA9IGRhdGFbZGF0YS5sZW5ndGggLSAxXSAtIGRhdGFbMF07XHJcbiAgICBjb25zdCBwb2ludGVyQW5nbGUgPSB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5taW5BbmdsZSArIChwb2ludGVyVmFsdWUgLyByYW5nZSkgKiAxODA7XHJcblxyXG4gICAgc3ZnXHJcbiAgICAgIC5hcHBlbmQoJ2cnKVxyXG4gICAgICAuZGF0YShbbGluZURhdGFdKVxyXG4gICAgICAuYXR0cignY2xhc3MnLCAncG9pbnRlcicpXHJcbiAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKCR7cmFkaXVzfSwke3JhZGl1c30pYClcclxuICAgICAgLmFwcGVuZCgncGF0aCcpXHJcbiAgICAgIC5hdHRyKCdkJywgcG9pbnRlckxpbmUpXHJcbiAgICAgIC5hdHRyKCdmaWxsJywgdGhpcy5jaGFydENvbmZpZ3VyYXRpb24ucG9pbnRlckNvbG9yKVxyXG4gICAgICAuYXR0cihcclxuICAgICAgICAndHJhbnNmb3JtJyxcclxuICAgICAgICBgcm90YXRlKCR7cG9pbnRlckFuZ2xlfSkgdHJhbnNsYXRlKDAsJHtcclxuICAgICAgICAgIC1yYWRpdXMgKyB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5yaW5nV2lkdGggKyBwb2ludGVySGVhZExlbmd0aFxyXG4gICAgICAgIH0pYFxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkcmF3TGFiZWxzKHN2ZzogYW55LCByYWRpdXM6IG51bWJlciwgbGFiZWxBcnJheTogYW55W10sIHJhbmdlOiBudW1iZXIsIG1ldGFEYXRhOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGxnID0gc3ZnLmFwcGVuZCgnZycpLmF0dHIoJ2NsYXNzJywgJ2xhYmVsJykuYXR0cigndHJhbnNmb3JtJywgYHRyYW5zbGF0ZSgke3JhZGl1c30sJHtyYWRpdXN9KWApO1xyXG5cclxuICAgIGNvbnN0IGxhYmVsR3JvdXBzID0gbGdcclxuICAgICAgLnNlbGVjdEFsbCgnLmJ1YmJsZScpXHJcbiAgICAgIC5kYXRhKGxhYmVsQXJyYXkpXHJcbiAgICAgIC5lbnRlcigpXHJcbiAgICAgIC5hcHBlbmQoJ2cnKVxyXG4gICAgICAuYXR0cigndHJhbnNmb3JtJywgKGQpID0+IHtcclxuICAgICAgICBjb25zdCBhbmdsZSA9IHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLm1pbkFuZ2xlICsgKGQudmFsdWUgLyByYW5nZSkgKiAxODA7XHJcbiAgICAgICAgcmV0dXJuIGByb3RhdGUoJHthbmdsZX0pIHRyYW5zbGF0ZSgwLCR7dGhpcy5jaGFydENvbmZpZ3VyYXRpb24ubGFiZWxJbnNldCAtIHJhZGl1cyAtIDIwfSlgO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICBsYWJlbEdyb3Vwc1xyXG4gICAgICAuYXBwZW5kKCd0ZXh0JylcclxuICAgICAgLmF0dHIoJ2ZpbGwnLCAndmFyKC0tY2hhcnQtdGV4dC1jb2xvciknKVxyXG4gICAgICAuc3R5bGUoJ2ZvbnQtc2l6ZScsIHdpbmRvdy5pbm5lcldpZHRoIDwgMTQwMCA/ICcxMnB4JyA6ICcxNHB4JylcclxuICAgICAgLnN0eWxlKCdmb250LXdlaWdodCcsICc2MDAnKVxyXG4gICAgICAudGV4dCgoZCkgPT4gYCR7ZC5uYW1lfSR7bWV0YURhdGEuZGF0YVR5cGUgfHwgJyd9YCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRyYXdDZW50ZXJUZXh0cyhzdmc6IGFueSwgcmFkaXVzOiBudW1iZXIsIG1ldGFEYXRhOiBhbnkpOiB2b2lkIHtcclxuICAgIHN2Z1xyXG4gICAgICAuYXBwZW5kKCdmb3JlaWduT2JqZWN0JylcclxuICAgICAgLmF0dHIoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoJHtyYWRpdXMgLSB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVXaWR0aFNjYWxlRmFjdG9yIC8gMn0sJHtyYWRpdXMgLyAyIC0gMTB9KWApXHJcbiAgICAgIC5hdHRyKCd3aWR0aCcsIHRoaXMuY2hhcnRDb25maWd1cmF0aW9uLmN1cnJlbnRWYWx1ZVdpZHRoU2NhbGVGYWN0b3IpXHJcbiAgICAgIC5hdHRyKCdoZWlnaHQnLCB0aGlzLmNoYXJ0Q29uZmlndXJhdGlvbi5jdXJyZW50VmFsdWVIZWlnaHRTY2FsZUZhY3RvcilcclxuICAgICAgLmFwcGVuZCgneGh0bWw6ZGl2JylcclxuICAgICAgLmF0dHIoJ2NsYXNzJywgJ3ZhbHVlLWRpc3BsYXknKVxyXG4gICAgICAuaHRtbChgJHttZXRhRGF0YS5jdXJyZW50VmFsdWV9JHttZXRhRGF0YS5kYXRhVHlwZSB8fCAnJ31gKTtcclxuXHJcbiAgICBpZiAobWV0YURhdGEuc3RhdHVzKSB7XHJcbiAgICAgIHN2Z1xyXG4gICAgICAgIC5hcHBlbmQoJ2ZvcmVpZ25PYmplY3QnKVxyXG4gICAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKCR7cmFkaXVzIC0gNjB9LCR7cmFkaXVzIC8gMiArIDIwfSlgKVxyXG4gICAgICAgIC5hdHRyKCd3aWR0aCcsIDEyMClcclxuICAgICAgICAuYXBwZW5kKCd4aHRtbDpkaXYnKVxyXG4gICAgICAgIC5hdHRyKCdjbGFzcycsICdzdGF0dXMtZGlzcGxheScpXHJcbiAgICAgICAgLmh0bWwobWV0YURhdGEuc3RhdHVzKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAobWV0YURhdGEuZGF0ZVJhbmdlKSB7XHJcbiAgICAgIHN2Z1xyXG4gICAgICAgIC5hcHBlbmQoJ2ZvcmVpZ25PYmplY3QnKVxyXG4gICAgICAgIC5hdHRyKCd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlKCR7cmFkaXVzIC0gMTA1fSwke3JhZGl1cyAvIDIgKyA1MH0pYClcclxuICAgICAgICAuYXR0cignd2lkdGgnLCAyMTApXHJcbiAgICAgICAgLmFwcGVuZCgneGh0bWw6ZGl2JylcclxuICAgICAgICAuYXR0cignY2xhc3MnLCAnZGF0ZXJhbmdlLWRpc3BsYXknKVxyXG4gICAgICAgIC5odG1sKFxyXG4gICAgICAgICAgYDxzcGFuIGNsYXNzPVwibWFyZ2lucmlnaHQtM1wiPjxpIGNsYXNzPVwiZmEgZmEtY2FsZW5kYXJcIj48L2k+PC9zcGFuPiR7bWV0YURhdGEuZGF0ZVJhbmdlfWBcclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhbGlnblN2Zyhzdmc6IGFueSwgY2hhcnRDb250YWluZXI6IGFueSwgbWFyZ2luOiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lck1pZCA9IHBhcnNlSW50KGNoYXJ0Q29udGFpbmVyLnN0eWxlKCd3aWR0aCcpKSAvIDI7XHJcbiAgICBjb25zdCBub2RlSGFsZiA9IHN2Zy5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggLyAyO1xyXG4gICAgc3ZnLmF0dHIoJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoJHtjb250YWluZXJNaWQgLSBub2RlSGFsZiArIG1hcmdpbi5sZWZ0fSwke21hcmdpbi50b3B9KWApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRSYW5nZShkOiBhbnksIGRhdGFfcmVhZHk6IGFueVtdLCBtZXRhRGF0YTogYW55KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGRhdGEgPSB0aGlzLmNoYXJ0RGF0YS5kYXRhO1xyXG4gICAgcmV0dXJuIGAke2RhdGFbMF19IGFuZCAke2RhdGFbZGF0YS5sZW5ndGggLSAxXX1gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkZWcycmFkKGRlZzogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiAoZGVnICogTWF0aC5QSSkgLyAxODA7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDbGljayhkOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xpY2tFdmVudC5lbWl0KGQpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlSGVhZGVyTWVudUNsaWNrKGlkOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuaGVhZGVyTWVudWNsaWNrRXZlbnQuZW1pdChpZCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgI2d1YWdlY29udGFpbmVyIGNsYXNzPVwibGliLWNoYXJ0LXdyYXBwZXJcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHZhcigtLWNhcmQtYmcpO1wiXHJcbiAgKHJlc2l6ZWQpPVwib25SZXNpemVkKCRldmVudClcIj5cclxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWFsdFwiICpuZ0lmPVwiIWlzSGVhZGVyVmlzaWJsZVwiPlxyXG4gICAgPGxpYi1jaGFydC1oZWFkZXItdjIgW2NoYXJ0RGF0YV09XCJjaGFydERhdGFcIiBbY2hhcnRDb25maWd1cmF0aW9uXT1cImNoYXJ0Q29uZmlndXJhdGlvblwiXHJcbiAgICAgIChjbGlja0V2ZW50KT1cImhhbmRsZUNsaWNrKCRldmVudClcIj48L2xpYi1jaGFydC1oZWFkZXItdjI+XHJcbiAgPC9kaXY+XHJcbiAgPGxpYi1jaGFydC1oZWFkZXItdjEgW3RpdGxlXT1cImNoYXJ0RGF0YS5tZXRhRGF0YS50aXRsZVwiIFtoYXNEcmlsbERvd25dPVwiY2hhcnREYXRhLm1ldGFEYXRhLmhhc0RyaWxsRG93blwiXHJcbiAgICBbaXNFZGl0RW5hYmxlZF09XCJjaGFydERhdGEubWV0YURhdGEuaXNFZGl0RW5hYmxlZFwiIFtpc3JpYV09XCJjdXN0b21DaGFydENvbmZpZ3VyYXRpb24uaXNSaWFcIiBbbWVudU9wdGlvbnNdPVwiY2hhcnRDb25maWd1cmF0aW9uLmhlYWRlck1lbnVPcHRpb25zXCJcclxuICAgIFtzZWxlY3RlZEtwaVRvb2x0b3BdPVwiY2hhcnRDb25maWd1cmF0aW9uLnNlbGVjdGVkS3BpVG9vbHRvcFwiIChtZW51T3B0aW9uQ2xpY2tFdmVudCk9XCJoYW5kbGVIZWFkZXJNZW51Q2xpY2soJGV2ZW50KVwiXHJcbiAgICBbaXNBbGVydEVuYWJsZWRdPVwiaXNBbGVydEVuYWJsZWRcIiAqbmdJZj1cImlzSGVhZGVyVmlzaWJsZVwiPjwvbGliLWNoYXJ0LWhlYWRlci12MT5cclxuICA8ZGl2IFtzdHlsZS5oZWlnaHRdPVwiY2hhcnRDb25maWd1cmF0aW9uLnN2Z0hlaWdodFwiIGlkPVwiZ3VhZ2VjaGFydGNvbnRhaW5lclwiICNndWFnZWNoYXJ0Y29udGFpbmVyXHJcbiAgICBjbGFzcz1cImxpYi1jaGFydC1zdmcgZ3VhZ2Vjb250YWluZXJcIj48L2Rpdj5cclxuPC9kaXY+Il19